在openerp 7中stock_picking分为两个项目stock_picking_in和stock_picking_out,现在他们创建了一个包含两个项目的项目,并且存在一个包含类型(输入或输出)的字段。我希望对“in”项目具有普通视图,对“out”具有完全自定义视图。这是可能的和如何?谢谢。如何区分odoo中的选股8
我picking.py继承stock.picking并添加一些字段。我想 picking_in_view使用stock.picking默认显示为表格视图和树视图和我想改变显示为picking_out_view。问题是,当我更改picking_out_view中的显示时,它也会在picking_in_view中更改,因为它会更改模型。
而最大的问题是,我需要改变多个领域与stock.move out item,但如果我这样做,我需要修改模型,它为进出。
有没有办法做到这一点?
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>
我试着创建两个不同的菜单项和两个不同的动作,但是当我修改一个表单视图时,它修改了父模型,因此另一个采用相同的外观,是否有办法修改表单视图? – Zada1100
与我给你的解决方案,你可以创建两个不同的形式和两个不同的树,并在两个不同的行动中使用它们,没有任何问题,如果你有一些具体的问题,我必须看到一个代码 –
我添加了更多关于我的问题的信息如果你想看看,我添加了我的代码。 – Zada1100