首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将odoo 8的选股与选股分开

如何将odoo 8的选股与选股分开
EN

Stack Overflow用户
提问于 2016-07-25 15:25:58
回答 1查看 789关注 0票数 0

在openerp 7中,stock_picking被分隔为两个项,stock_picking_in和stock_picking_out,现在他们创建了一个包含这两个项的项,并且有一个字段包含类型(in或out)。我想拥有"in“项的正常视图和"out”的完全自定义视图。有可能吗?怎么做?谢谢。

我的picking.py继承了stock.picking并添加了一些字段。我希望picking_in_view对窗体视图和树视图使用stock.picking默认显示,并且要更改picking_out_view.的显示。问题是,当我更改picking_out_view中的显示时,它也更改了picking_in_view,因为它改变了模型。

最大的问题是,我需要用stock.move为out条目将多个字段更改为多个字段,但如果这样做,我需要修改模型,而它则用于输入和输出。

有办法吗?

move.py

代码语言:javascript
复制
# -*- 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

代码语言:javascript
复制
# -*- 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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

发布于 2016-07-26 06:37:58

实现的一种方法是使用attrs并基于选择类型隐藏或显示字段,如果您想做一些小的更改,对于整个文档来说,这不是最好的解决方案。

第二种方法是为它们创建不同的视图,但只有当您使用不同的菜单项来打开这个对象时,在菜单项上附加的操作中,您可以通过id指定窗体和树视图,如下面的示例:

代码语言:javascript
复制
    <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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38571757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档