2016-07-25 5 views
0

In openerp 7 war stock_picking in zwei Artikel, stock_picking_in und stock_picking_out, getrennt, jetzt haben sie einen Artikel erstellt, der beides enthält und ein Feld mit dem Typ (in oder out). Ich möchte die normale Ansicht für "in" Elemente und eine völlig benutzerdefinierte Ansicht für "out" haben. Ist es möglich und wie? Vielen Dank.So trennen Sie den Materialeinzug von aus in odoo 8

Meine picking.py übernehmen stock.picking und fügen einige Felder hinzu. Ich möchte die picking_in_viewstock.picking Standardanzeige für die Formularansicht und der Baumansicht verwenden, und ich möchte die Anzeige für picking_out_view ändern. Das Problem ist, dass, wenn ich die Anzeige in picking_out_view ändern es auch in picking_in_view ändern, weil es das Modell ändert.

Und das größte Problem ist, dass ich die viele zu viel Feld mit stock.move für Einzelteile heraus ändern müssen, aber wenn ich so brauche ich das Modell ändern und es in der und aus tun.

Gibt es eine Möglichkeit, es zu tun?

move.py

# -*- coding: utf-8 -*- 

from openerp import models, fields, api, tools 
from openerp.exceptions import ValidationError 


class StockMove(models.Model): 
    """ 
    Ajout de champs dans la ligne de commande, et quelques fonctions 
    telles que unpack 
    """ 
    _inherit = "stock.move" 

    # Le code du produit à afficher 
    product_code = fields.Char(string="Product", store=True, related="product_id.default_code") 
    # Le lien vers la ligne d'achat sale.order.line 
    sale_line_id = fields.Many2one(string="SaleOrderLine", store=True, related="procurement_id.sale_line_id") 
    # Le colis associé à la commande 
    stock_quant_package = fields.Many2one('stock.quant.package', string='Pack') 

    # Sert à savoir si on affiche l'icône rouge pour déballer un colis 
    show_unpack = fields.Boolean(store=False, compute='compute_show_unpack') 
    # Sert à savoir si on affiche l'icône d'impression validée 
    is_printed = fields.Boolean(store=False, compute='compute_printed') 
    # Pour colorer les lignes, condition 
    statut_ok = fields.Boolean(default=False, store=False, compute="compute_statut_ok") 

    # Le statut de la commande 
    statut_id = fields.Many2one('sale.statut', string='Statut', default=lambda self: self._default_statut_id()) 
    date_emballage = fields.Datetime("Date d'emballage") 

    # Champs non enregistrés en BD, utilisés pour l'affichage 
    metal = fields.Many2one('product.finition',string="Metal", store=False, related="procurement_id.sale_line_id.metal") 
    bois1 = fields.Many2one('product.finition',string="Bois 1", store=False, related="procurement_id.sale_line_id.bois1") 
    bois2 = fields.Many2one('product.finition',string="Bois 2", store=False, related="procurement_id.sale_line_id.bois2") 
    verre = fields.Many2one('product.finition',string="Verre", store=False, related="procurement_id.sale_line_id.verre") 
    tissu = fields.Many2one('product.finition',string="Tissu", store=False, related="procurement_id.sale_line_id.tissu") 
    patte = fields.Many2one('product.finition',string="Patte", store=False, related="procurement_id.sale_line_id.patte") 
    config = fields.Char(string="Config", store=False, size=64, related="procurement_id.sale_line_id.config") 
    poignee = fields.Many2one('product.finition',string="Poignee", store=False, related="procurement_id.sale_line_id.poignee") 

    # Le prix d'une ligne de commande, calculé 
    move_price = fields.Float(string="Prix", store=False, compute="compute_move_price") 

    # Pour differencier les formulaires 
    is_picking_out = fields.Boolean(store=False, compute="compute_is_picking_out") 

    ... 

picking.py

# -*- coding: utf-8 -*- 

from openerp import models, fields, api, tools 


class StockPicking(models.Model): 
    _inherit = "stock.picking" 

    # Le statut 
    statut_id = fields.Many2one("sale.statut", string="Statut") 

    # Erreur inconnue sur l'inexistence de ce champ; à laisser 
    stock_journal_id = fields.Integer() 

    carrier_id = fields.Many2one("stock.carrier", compute="_carrier_info") 
    num_compte_transport = fields.Char(string="Numéro de compte UPS", compute="_carrier_info") 
    @api.multi 
    def _carrier_info(self): 
     for line in self: 
      line.carrier_id = self.sale_id.carrier_transport 
      line.num_compte_transport = self.sale_id.num_compte_facture 

picking_in_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 

     <!-- On cache un attribut de la liste des bons de livraison --> 
     <record id="stock_picking_tree_view_cr" model="ir.ui.view"> 
      <field name="name">stock.picking.tree.inherit.cr</field> 
      <field name="model">stock.picking</field> 
      <field name="priority" eval="2"/> 
      <field name="inherit_id" ref="stock.vpicktree"/> 
      <field name="arch" type="xml"> 

       <xpath expr="//tree/field[@name='location_dest_id']" position="attributes"> 
        <attribute name="invisible">1</attribute> 
       </xpath> 

      </field> 
     </record> 

     <!-- Les boutons de modification de la commande de base par Odoo dans le formulaire --> 
     <!-- Des bons de livraison --> 
     <record id="stock_picking_form_view_cr" model="ir.ui.view"> 
      <field name="name">stock.picking.form.inherit.cr</field> 
      <field name="model">stock.picking</field> 
      <field name="priority" eval="2"/> 
      <field name="inherit_id" ref="stock.view_picking_form"/> 
      <field name="arch" type="xml"> 

       <xpath expr="//form/header/button[@name='action_assign']" position="attributes"> 
        <attribute name="invisible">0</attribute> 
       </xpath> 
       <xpath expr="//form/header/button[@name='force_assign']" position="attributes"> 
        <attribute name="invisible">0</attribute> 
       </xpath> 
       <xpath expr="//form/header/button[@name='action_cancel']" position="attributes"> 
        <attribute name="invisible">0</attribute> 
       </xpath> 

      </field> 
     </record> 

     <!-- - - - - - - - - - - - - ACTIONS - - - - - - - - - - - - --> 

     <!-- L'action du bouton dans le menu lateral --> 
     <record id="picking_in_action_createch" model="ir.actions.act_window"> 
      <field name="name">Bons de réception</field> 
      <field name="res_model">stock.picking</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">tree,form</field> 
      <field name="domain"> 
       [('picking_type_id','=',1)] 
      </field> 
     </record> 

     <!-- - - - - - - - - - - - - MENUS - - - - - - - - - - - - --> 

     <!-- Le premier bouton dans la barre laterale --> 
     <menuitem id="picking_orders_menu" name="Bons de réception" 
        sequence="0" 
        parent="warehouse_mgt_cr" 
        action="picking_in_action_createch"/> 
    </data> 
</openerp> 

picking_out_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 

     <!-- Liste des colis --> 
     <record id="stock_quant_package_tree_view" model="ir.ui.view"> 
      <field name="name">stock.quant.package.tree.cr</field> 
      <field name="model">stock.quant.package</field> 
      <field name="priority" eval="2"/> 
      <field name="arch" type="xml"> 

       <tree string="Paquets"> 
        <field name="name"/> 
        <field name="order_name"/> 
        <field name="item"/> 
        <field name="owner_name"/> 
        <field name="create_date"/> 
        <field name="prix" sum="Total Amount"/> 
       </tree> 

      </field> 
     </record> 

     <!-- On cache un attribut de la liste des bons de livraison --> 
     <record id="stock_picking_tree_view_cr" model="ir.ui.view"> 
      <field name="name">stock.picking.tree.inherit.cr</field> 
      <field name="model">stock.picking</field> 
      <field name="priority" eval="2"/> 
      <field name="inherit_id" ref="stock.vpicktree"/> 
      <field name="arch" type="xml"> 

       <xpath expr="//tree/field[@name='location_dest_id']" position="attributes"> 
        <attribute name="invisible">1</attribute> 
       </xpath> 

      </field> 
     </record> 

     <!-- Les boutons de modification de la commande de base par Odoo dans le formulaire --> 
     <!-- Des bons de livraison --> 
     <record id="stock_picking_form_view_cr" model="ir.ui.view"> 
      <field name="name">stock.picking.form.inherit.cr</field> 
      <field name="model">stock.picking</field> 
      <field name="priority" eval="2"/> 
      <field name="inherit_id" ref="stock.view_picking_form"/> 
      <field name="arch" type="xml"> 

       <xpath expr="//form/header/button[@name='action_assign']" position="attributes"> 
        <attribute name="invisible">1</attribute> 
       </xpath> 
       <xpath expr="//form/header/button[@name='force_assign']" position="attributes"> 
        <attribute name="invisible">1</attribute> 
       </xpath> 
       <xpath expr="//form/header/button[@name='action_cancel']" position="attributes"> 
        <attribute name="invisible">1</attribute> 
       </xpath> 

      </field> 
     </record> 

     <!-- - - - - - - - - - - - - ACTIONS - - - - - - - - - - - - --> 

     <!-- L'action du bouton dans le menu lateral --> 
     <record id="picking_action_createch" model="ir.actions.act_window"> 
      <field name="name">Bons de livraison</field> 
      <field name="res_model">stock.picking</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">tree,form</field> 
      <field name="domain"> 
       [('picking_type_id','=',2)] 
      </field> 
      <field name="context">{"search_default_filter_a_emballer":1}</field> 
     </record> 

     <!-- Un autre bouton dans la barre laterale. Sert de test actuellement --> 
     <record id="stock_quant_package_action_createch" model="ir.actions.act_window"> 
      <field name="name">Colis</field> 
      <field name="res_model">stock.quant.package</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">tree,form</field> 
     </record> 


     <!-- - - - - - - - - - - - - MENUS - - - - - - - - - - - - --> 

     <!-- Le titre dans la barre laterale --> 
     <menuitem id="warehouse_mgt_cr" name="Warehouse Management" 
        sequence="0" 
        parent="stock.menu_stock_root"/> 

     <!-- Le premier bouton dans la barre laterale --> 
     <menuitem id="delivery_orders_menu" name="Bons de livraison" 
        sequence="1" 
        parent="warehouse_mgt_cr" 
        action="picking_action_createch"/> 
     <menuitem id="quant_package_colis_menu" name="Colis" 
        sequence="3" 
        parent="warehouse_mgt_cr" 
        action="stock_quant_package_action_createch"/> 

    </data> 
</openerp> 

Antwort

1

Eine Möglichkeit ist, zu erreichen, verwenden attrs und basierend Typ ausblenden oder anzeigen Felder auf Kommissionierung, wenn Sie kleine Änderungen vornehmen möchten, für ganze Dokument sein nicht eine beste Lösung.

zweiter Weg ist, verschiedene Ansichten für sie zu schaffen, sondern nur, wenn Sie zum Öffnen dieser Objekte unterschiedliche menuitems verwenden, auf der Einwirkung auf der menuitem angebracht Sie Form und Baumansichten von ID angeben können, wie in diesem Beispiel:

<record id="action_id" model="ir.actions.act_window"> 
     <field name="name">Action</field> 
     <field name="res_model">model.name</field> 
     <field name="type">ir.actions.act_window</field> 
     <field name="view_type">form</field> 
     <field name="view_mode">tree,form</field> 
    </record> 

    <record model="ir.actions.act_window.view" id="action_id_tree"> 
     <field name="sequence" eval="5"/> 
     <field name="view_mode">tree_sent_grievances</field> 
     <field name="view_id" ref="tree_view_id"/> 
     <field name="act_window_id" ref="action_id"/> 
    </record> 

    <record model="ir.actions.act_window.view" id="action_id_form"> 
     <field name="sequence" eval="5"/> 
     <field name="view_mode">form</field> 
     <field name="view_id" ref="form_view_id"/> 
     <field name="act_window_id" ref="action_id"/> 
    </record> 
+0

Ich habe versucht, zwei verschiedene Menüpunkte und zwei verschiedene Aktionen zu erstellen, aber wenn ich eine Formularansicht ändern, ändern Sie das übergeordnete Modell, so dass die anderen das gleiche Aussehen haben, gibt es eine Möglichkeit, die Formularansicht nur für einen zu ändern? – Zada1100

+0

mit der Lösung, was ich Ihnen gab, können Sie zwei verschiedene Form und zwei verschiedene Struktur erstellen und sie in den zwei verschiedenen Aktionen ohne Problem verwenden, wenn Sie ein bestimmtes Problem haben, muss ich einen Code sehen –

+0

Ich fügte weitere Informationen zu meinem Problem hinzu und ich habe meinen Code hinzugefügt, wenn Sie einen Blick darauf werfen wollen. – Zada1100