[REF] delivery, stock: make delivery product a new model
Currently, delivery packaging and product packaging share the same model product.packaging. In this commit, we make delivery packaging a new model stock.package.type. The code is also moved to stock instead of delivery for compatibility reasons. Task 2341820 PR #63516 ENT PR odoo/enterprise#15363 UPG PR odoo/upgrade#2040
This commit is contained in:
@@ -17,7 +17,6 @@ invoices from picking, the system is able to add and compute the shipping line.
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'security/delivery_carrier_security.xml',
|
||||
'views/product_packaging_view.xml',
|
||||
'views/product_template_view.xml',
|
||||
'views/delivery_view.xml',
|
||||
'views/partner_view.xml',
|
||||
@@ -29,6 +28,7 @@ invoices from picking, the system is able to add and compute the shipping line.
|
||||
'views/res_config_settings_views.xml',
|
||||
'wizard/choose_delivery_package_views.xml',
|
||||
'wizard/choose_delivery_carrier_views.xml',
|
||||
'views/stock_package_type_views.xml',
|
||||
],
|
||||
'demo': ['data/delivery_demo.xml'],
|
||||
'installable': True,
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
from . import delivery_carrier
|
||||
from . import delivery_grid
|
||||
from . import product_packaging
|
||||
from . import product_template
|
||||
from . import sale_order
|
||||
from . import partner
|
||||
from . import stock_picking
|
||||
from . import stock_move
|
||||
from . import stock_package_type
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class PackageType(models.Model):
|
||||
_inherit = 'stock.package.type'
|
||||
|
||||
shipper_package_code = fields.Char('Carrier Code')
|
||||
package_carrier_type = fields.Selection([('none', 'No carrier integration')], string='Carrier', default='none')
|
||||
|
||||
@api.onchange('package_carrier_type')
|
||||
def _onchange_carrier_type(self):
|
||||
carrier_id = self.env['delivery.carrier'].search([('delivery_type', '=', self.package_carrier_type)], limit=1)
|
||||
if carrier_id:
|
||||
self.shipper_package_code = carrier_id._get_default_custom_package_code()
|
||||
else:
|
||||
self.shipper_package_code = False
|
||||
@@ -133,13 +133,13 @@ class StockPicking(models.Model):
|
||||
res = super(StockPicking, self)._pre_put_in_pack_hook(move_line_ids)
|
||||
if not res:
|
||||
if self.carrier_id:
|
||||
return self._set_delivery_packaging()
|
||||
return self._set_delivery_package_type()
|
||||
else:
|
||||
return res
|
||||
|
||||
def _set_delivery_packaging(self):
|
||||
""" This method returns an action allowing to set the product packaging and the shipping weight
|
||||
on the stock.quant.package.
|
||||
def _set_delivery_package_type(self):
|
||||
""" This method returns an action allowing to set the package type and the shipping weight
|
||||
on the stock.quant.package.
|
||||
"""
|
||||
self.ensure_one()
|
||||
view_id = self.env.ref('delivery.choose_delivery_package_view_form').id
|
||||
|
||||
@@ -1,19 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- Delivery Carriers -->
|
||||
<menuitem id="menu_delivery" name="Delivery" parent="stock.menu_stock_config_settings" groups="stock.group_stock_manager" sequence="50"/>
|
||||
|
||||
<record id="action_delivery_packaging_view" model="ir.actions.act_window">
|
||||
<field name="name">Delivery Packages</field>
|
||||
<field name="res_model">product.packaging</field>
|
||||
<field name="domain">[('product_id', '=', False)]</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('delivery.product_packaging_delivery_tree')}),
|
||||
(0, 0, {'view_mode': 'form', 'view_id': ref('delivery.product_packaging_delivery_form')})]"/>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_delivery_packagings" name="Delivery Packages" parent="menu_delivery" action="action_delivery_packaging_view" groups="stock.group_tracking_lot"/>
|
||||
|
||||
<record id="view_delivery_carrier_tree" model="ir.ui.view">
|
||||
<field name="name">delivery.carrier.tree</field>
|
||||
<field name="model">delivery.carrier</field>
|
||||
@@ -175,7 +162,7 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_delivery_carrier_form" id="menu_action_delivery_carrier_form" parent="menu_delivery" sequence="1"/>
|
||||
<menuitem action="action_delivery_carrier_form" id="menu_action_delivery_carrier_form" parent="stock.menu_delivery" sequence="1"/>
|
||||
<menuitem action="action_delivery_carrier_form" id="sale_menu_action_delivery_carrier_form" parent="sale.menu_sales_config" sequence="4"/>
|
||||
|
||||
<record id="view_delivery_price_rule_form" model="ir.ui.view">
|
||||
@@ -278,7 +265,6 @@
|
||||
<field name="inherit_id" ref="stock.view_quant_package_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="before">
|
||||
<field name="packaging_id" domain="[('product_id', '=', False)]"/>
|
||||
<label for="shipping_weight"/>
|
||||
<div class="o_row" name="Shipping Weight">
|
||||
<field name="shipping_weight"/>
|
||||
@@ -289,17 +275,6 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_quant_package_packaging_tree" model="ir.ui.view">
|
||||
<field name="name">stock.quant.package.packaging.tree</field>
|
||||
<field name="model">stock.quant.package</field>
|
||||
<field name="inherit_id" ref="stock.view_quant_package_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="display_name" position="after">
|
||||
<field name="packaging_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_order_form_with_carrier" model="ir.ui.view">
|
||||
<field name="name">delivery.sale.order.form.view.with_carrier</field>
|
||||
<field name="model">sale.order</field>
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record model="ir.ui.view" id="product_packaging_delivery_form">
|
||||
<field name="name">product.packaging.form.delivery</field>
|
||||
<field name="model">product.packaging</field>
|
||||
<field name="inherit_id" eval="False"/>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Delivery Packaging">
|
||||
<sheet>
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
<group name="delivery">
|
||||
<group>
|
||||
<field name="package_carrier_type"/>
|
||||
<label for="height"/>
|
||||
<div class="o_row" name="height">
|
||||
<field name="height"/>
|
||||
<span><field name="length_uom_name"/></span>
|
||||
</div>
|
||||
<label for="width"/>
|
||||
<div class="o_row" name="width">
|
||||
<field name="width"/>
|
||||
<span><field name="length_uom_name"/></span>
|
||||
</div>
|
||||
<label for="packaging_length"/>
|
||||
<div class="o_row" name="packaging_length">
|
||||
<field name="packaging_length"/>
|
||||
<span><field name="length_uom_name"/></span>
|
||||
</div>
|
||||
</group>
|
||||
<group>
|
||||
<label for="max_weight"/>
|
||||
<div class="o_row" name="max_weight">
|
||||
<field name="max_weight"/>
|
||||
<span><field name="weight_uom_name"/></span>
|
||||
</div>
|
||||
<field name="barcode"/>
|
||||
<field name="shipper_package_code"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="product_packaging_delivery_tree">
|
||||
<field name="name">product.packaging.tree.delivery</field>
|
||||
<field name="model">product.packaging</field>
|
||||
<field name="inherit_id" eval="False"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Delivery Packages">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="package_carrier_type"/>
|
||||
<field name="name"/>
|
||||
<field name="height"/>
|
||||
<field name="width"/>
|
||||
<field name="packaging_length"/>
|
||||
<field name="max_weight"/>
|
||||
<field name="shipper_package_code"/>
|
||||
<field name="barcode" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record model="ir.ui.view" id="stock_package_type_form_delivery">
|
||||
<field name="name">stock.package.type.form.delivery</field>
|
||||
<field name="model">stock.package.type</field>
|
||||
<field name="inherit_id" ref="stock.stock_package_type_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group[@name='delivery']" position="inside">
|
||||
<group>
|
||||
<field name="package_carrier_type"/>
|
||||
<field name="shipper_package_code"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="stock_package_type_tree_delivery">
|
||||
<field name="name">stock.package.type.tree.delivery</field>
|
||||
<field name="model">stock.package.type</field>
|
||||
<field name="inherit_id" ref="stock.stock_package_type_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='sequence']" position="after">
|
||||
<field name="package_carrier_type"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='max_weight']" position="after">
|
||||
<field name="shipper_package_code"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -26,20 +26,20 @@ class ChooseDeliveryPackage(models.TransientModel):
|
||||
return defaults
|
||||
|
||||
picking_id = fields.Many2one('stock.picking', 'Picking')
|
||||
delivery_packaging_id = fields.Many2one('product.packaging', 'Delivery Packaging', check_company=True)
|
||||
delivery_package_type_id = fields.Many2one('stock.package.type', 'Delivery Package Type', check_company=True)
|
||||
shipping_weight = fields.Float('Shipping Weight')
|
||||
weight_uom_name = fields.Char(string='Weight unit of measure label', compute='_compute_weight_uom_name')
|
||||
company_id = fields.Many2one(related='picking_id.company_id')
|
||||
|
||||
@api.depends('delivery_packaging_id')
|
||||
@api.depends('delivery_package_type_id')
|
||||
def _compute_weight_uom_name(self):
|
||||
weight_uom_id = self.env['product.template']._get_weight_uom_id_from_ir_config_parameter()
|
||||
for package in self:
|
||||
package.weight_uom_name = weight_uom_id.name
|
||||
|
||||
@api.onchange('delivery_packaging_id', 'shipping_weight')
|
||||
def _onchange_packaging_weight(self):
|
||||
if self.delivery_packaging_id.max_weight and self.shipping_weight > self.delivery_packaging_id.max_weight:
|
||||
@api.onchange('delivery_package_type_id', 'shipping_weight')
|
||||
def _onchange_package_type_weight(self):
|
||||
if self.delivery_package_type_id.max_weight and self.shipping_weight > self.delivery_package_type_id.max_weight:
|
||||
warning_mess = {
|
||||
'title': _('Package too heavy!'),
|
||||
'message': _('The weight of your package is higher than the maximum weight authorized for this package type. Please choose another package type.')
|
||||
@@ -61,8 +61,8 @@ class ChooseDeliveryPackage(models.TransientModel):
|
||||
precision_rounding=ml.product_uom_id.rounding) == 0)
|
||||
|
||||
delivery_package = self.picking_id._put_in_pack(move_line_ids)
|
||||
# write shipping weight and product_packaging on 'stock_quant_package' if needed
|
||||
if self.delivery_packaging_id:
|
||||
delivery_package.packaging_id = self.delivery_packaging_id
|
||||
# write shipping weight and package type on 'stock_quant_package' if needed
|
||||
if self.delivery_package_type_id:
|
||||
delivery_package.package_type_id = self.delivery_package_type_id
|
||||
if self.shipping_weight:
|
||||
delivery_package.shipping_weight = self.shipping_weight
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
<form string="Package">
|
||||
<field name="picking_id" invisible="1"/>
|
||||
<group>
|
||||
<field name="delivery_packaging_id" domain="[('package_carrier_type', '=', context.get('current_package_carrier_type', 'none'))]"
|
||||
context="{'form_view_ref':'delivery.product_packaging_delivery_form'}"/>
|
||||
<label for="shipping_weight" attrs="{'invisible': [('delivery_packaging_id', '=', False)]}"/>
|
||||
<div class="o_row" attrs="{'invisible': [('delivery_packaging_id', '=', False)]}" name="package_weight">
|
||||
<field name="delivery_package_type_id" domain="[('package_carrier_type', '=', context.get('current_package_carrier_type', 'none'))]"
|
||||
context="{'form_view_ref':'stock.stock_package_type_form'}"/>
|
||||
<label for="shipping_weight" attrs="{'invisible': [('delivery_package_type_id', '=', False)]}"/>
|
||||
<div class="o_row" attrs="{'invisible': [('delivery_package_type_id', '=', False)]}" name="package_weight">
|
||||
<field name="shipping_weight"/>
|
||||
<field name="weight_uom_name"/>
|
||||
</div>
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
'views/stock_template.xml',
|
||||
'views/stock_rule_views.xml',
|
||||
'views/stock_package_level_views.xml',
|
||||
'views/stock_package_type_view.xml',
|
||||
],
|
||||
'qweb': [
|
||||
'static/src/xml/inventory_report.xml',
|
||||
|
||||
@@ -19,3 +19,4 @@ from . import stock_warehouse
|
||||
from . import stock_scrap
|
||||
from . import product
|
||||
from . import stock_package_level
|
||||
from . import stock_package_type
|
||||
|
||||
+13
-20
@@ -1,12 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, fields, api
|
||||
from odoo import models, fields, _
|
||||
|
||||
|
||||
class ProductPackaging(models.Model):
|
||||
_inherit = 'product.packaging'
|
||||
|
||||
class PackageType(models.Model):
|
||||
_name = 'stock.package.type'
|
||||
_description = "Stock package type"
|
||||
|
||||
def _get_default_length_uom(self):
|
||||
return self.env['product.template']._get_length_uom_name_from_ir_config_parameter()
|
||||
@@ -14,14 +14,16 @@ class ProductPackaging(models.Model):
|
||||
def _get_default_weight_uom(self):
|
||||
return self.env['product.template']._get_weight_uom_name_from_ir_config_parameter()
|
||||
|
||||
height = fields.Integer('Height')
|
||||
width = fields.Integer('Width')
|
||||
packaging_length = fields.Integer('Length')
|
||||
name = fields.Char('Package Type', required=True)
|
||||
sequence = fields.Integer('Sequence', default=1, help="The first in the sequence is the default one.")
|
||||
height = fields.Integer('Height', help="Packaging Height")
|
||||
width = fields.Integer('Width', help="Packaging Width")
|
||||
packaging_length = fields.Integer('Length', help="Packaging Length")
|
||||
max_weight = fields.Float('Max Weight', help='Maximum weight shippable in this packaging')
|
||||
shipper_package_code = fields.Char('Package Code')
|
||||
package_carrier_type = fields.Selection([('none', 'No carrier integration')], string='Carrier', default='none')
|
||||
barcode = fields.Char('Barcode', copy=False)
|
||||
weight_uom_name = fields.Char(string='Weight unit of measure label', compute='_compute_weight_uom_name', default=_get_default_weight_uom)
|
||||
length_uom_name = fields.Char(string='Length unit of measure label', compute='_compute_length_uom_name', default=_get_default_length_uom)
|
||||
company_id = fields.Many2one('res.company', 'Company', index=True)
|
||||
|
||||
_sql_constraints = [
|
||||
('positive_height', 'CHECK(height>=0)', 'Height must be positive'),
|
||||
@@ -30,18 +32,9 @@ class ProductPackaging(models.Model):
|
||||
('positive_max_weight', 'CHECK(max_weight>=0.0)', 'Max Weight must be positive'),
|
||||
]
|
||||
|
||||
@api.onchange('package_carrier_type')
|
||||
def _onchange_carrier_type(self):
|
||||
carrier_id = self.env['delivery.carrier'].search([('delivery_type', '=', self.package_carrier_type)], limit=1)
|
||||
if carrier_id:
|
||||
self.shipper_package_code = carrier_id._get_default_custom_package_code()
|
||||
else:
|
||||
self.shipper_package_code = False
|
||||
|
||||
|
||||
def _compute_length_uom_name(self):
|
||||
for packaging in self:
|
||||
packaging.length_uom_name = self.env['product.template']._get_length_uom_name_from_ir_config_parameter()
|
||||
for package_type in self:
|
||||
package_type.length_uom_name = self.env['product.template']._get_length_uom_name_from_ir_config_parameter()
|
||||
|
||||
def _compute_weight_uom_name(self):
|
||||
for packaging in self:
|
||||
@@ -726,8 +726,8 @@ class QuantPackage(models.Model):
|
||||
default=lambda self: self.env['ir.sequence'].next_by_code('stock.quant.package') or _('Unknown Pack'))
|
||||
quant_ids = fields.One2many('stock.quant', 'package_id', 'Bulk Content', readonly=True,
|
||||
domain=['|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0)])
|
||||
packaging_id = fields.Many2one(
|
||||
'product.packaging', 'Package Type', index=True, check_company=True)
|
||||
package_type_id = fields.Many2one(
|
||||
'stock.package.type', 'Package Type', index=True, check_company=True)
|
||||
location_id = fields.Many2one(
|
||||
'stock.location', 'Location', compute='_compute_package_info',
|
||||
index=True, readonly=True, store=True)
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
</tr>
|
||||
</table>
|
||||
<div class="row mt32 mb32">
|
||||
<div t-if="o.packaging_id" class="o_packaging_type col-auto">
|
||||
<div t-if="o.package_type_id" class="o_packaging_type col-auto">
|
||||
<strong>Package Type:</strong>
|
||||
<p t-field="o.packaging_id.name"/>
|
||||
<p t-field="o.package_type_id.name"/>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-sm" style="border-bottom: 0px solid white !important;">
|
||||
@@ -69,8 +69,8 @@
|
||||
<p t-field="o.name" style="font-size:20px;"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row o_packaging_type" t-if="o.packaging_id">
|
||||
<div class="col-12 text-center" style="font-size:24px; font-weight:bold;"><span>Package Type: </span><span t-field="o.packaging_id.name"/></div>
|
||||
<div class="row o_packaging_type" t-if="o.package_type_id">
|
||||
<div class="col-12 text-center" style="font-size:24px; font-weight:bold;"><span>Package Type: </span><span t-field="o.package_type_id.name"/></div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -81,3 +81,5 @@ access_stock_track_confirmation,access.stock.track.confirmation,model_stock_trac
|
||||
access_stock_track_line,access.stock.track.line,model_stock_track_line,stock.group_stock_user,1,1,1,0
|
||||
access_stock_package_destination,access.stock.package.destination,model_stock_package_destination,stock.group_stock_user,1,1,1,0
|
||||
access_stock_orderpoint_snooze,access_stock_orderpoint_snooze,model_stock_orderpoint_snooze,stock.group_stock_user,1,1,1,1
|
||||
access_stock_package_type_user,access_stock_package_type_user,model_stock_package_type,stock.group_stock_user,1,0,0,0
|
||||
access_stock_package_type_manager,access_stock_package_type_manager,model_stock_package_type,stock.group_stock_manager,1,1,1,1
|
||||
|
||||
|
@@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record model="ir.ui.view" id="stock_package_type_form">
|
||||
<field name="name">stock.package.type.form</field>
|
||||
<field name="model">stock.package.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Package Type">
|
||||
<sheet>
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
<group name="delivery">
|
||||
<group>
|
||||
<label for="length_uom_name" string="Size"/>
|
||||
<div class="o_row" name="size">
|
||||
<field name="packaging_length" placeholder="Length"/>
|
||||
<span>×</span>
|
||||
<field name="width" placeholder="Width"/>
|
||||
<span>×</span>
|
||||
<field name="height" placeholder="Height"/>
|
||||
<span><field name="length_uom_name" help="Size: Length × Width × Height"/></span>
|
||||
</div>
|
||||
<label for="max_weight"/>
|
||||
<div class="o_row" name="max_weight">
|
||||
<field name="max_weight"/>
|
||||
<span><field name="weight_uom_name"/></span>
|
||||
</div>
|
||||
<field name="barcode"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="stock_package_type_tree">
|
||||
<field name="name">stock.package.type.tree</field>
|
||||
<field name="model">stock.package.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Package Types">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="height"/>
|
||||
<field name="width"/>
|
||||
<field name="packaging_length"/>
|
||||
<field name="max_weight"/>
|
||||
<field name="barcode" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_package_type_view" model="ir.actions.act_window">
|
||||
<field name="name">Package Types</field>
|
||||
<field name="res_model">stock.package.type</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('stock.stock_package_type_tree')}),
|
||||
(0, 0, {'view_mode': 'form', 'view_id': ref('stock.stock_package_type_form')})]"/>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_delivery" name="Delivery" parent="stock.menu_stock_config_settings" groups="stock.group_stock_manager" sequence="50"/>
|
||||
<menuitem id="menu_packaging_types" name="Package Types" parent="menu_delivery" action="action_package_type_view" groups="stock.group_tracking_lot"/>
|
||||
|
||||
</odoo>
|
||||
@@ -227,10 +227,10 @@
|
||||
<search string="Package">
|
||||
<field name="name" string="Package Name"/>
|
||||
<field name="location_id"/>
|
||||
<field name="packaging_id"/>
|
||||
<field name="package_type_id"/>
|
||||
<group expand='0' string='Group by...'>
|
||||
<filter string='Location' name="location" domain="[]" context="{'group_by' : 'location_id'}"/>
|
||||
<filter string='Packaging' name="packaging" domain="[]" context="{'group_by' : 'packaging_id'}"/>
|
||||
<filter string='Package Type' name="package_type" domain="[]" context="{'group_by' : 'package_type_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -257,6 +257,7 @@
|
||||
</div>
|
||||
<group>
|
||||
<group id='stock.package_location_group'>
|
||||
<field name="package_type_id"/>
|
||||
<field name='company_id' groups="base.group_multi_company"/>
|
||||
<field name='owner_id' groups="stock.group_tracking_owner"/>
|
||||
<field name="location_id" options="{'no_create': True}"/>
|
||||
@@ -283,6 +284,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Package" sample="1">
|
||||
<field name="display_name"/>
|
||||
<field name="package_type_id"/>
|
||||
<field name="location_id" options="{'no_create': True}"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</tree>
|
||||
|
||||
Reference in New Issue
Block a user