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>
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
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 –
Ich fügte weitere Informationen zu meinem Problem hinzu und ich habe meinen Code hinzugefügt, wenn Sie einen Blick darauf werfen wollen. – Zada1100