Add additional products in packaging. Task 039466

This commit is contained in:
MarinaNico 2020-02-23 11:32:25 +01:00
parent eb0b4c5898
commit ac1d202b81
5 changed files with 60 additions and 4 deletions

View File

@ -9,6 +9,7 @@ module = 'product_bulk'
def register():
Pool.register(
product.ExtraProductPackaging,
product.Product,
product.TemplateProductPackaging,
product.Template,

View File

@ -9,7 +9,8 @@ from trytond.wizard import (Wizard, StateAction, StateView, StateTransition,
Button)
from trytond.exceptions import UserWarning
__all__ = ['Template', 'Product', 'TemplateProductPackaging']
__all__ = ['Template', 'Product', 'TemplateProductPackaging',
'ExtraProductPackaging']
from trytond.modules.product.product import STATES, DEPENDS
@ -34,6 +35,28 @@ class TemplateProductPackaging(ModelSQL, ModelView):
},
)
class ExtraProductPackaging(ModelSQL, ModelView):
"Template - Product Packaging"
__name__ = 'product.template-extra.product'
_rec_name = 'packaging_product'
extra_product = fields.Many2One('product.template', 'Extra Product',
required=True, ondelete='CASCADE',
states = {
'readonly': Bool(Eval('packaged_product')),
})
product = fields.Many2One('product.template', 'Product', required=True)
unit_digits = fields.Function(fields.Integer('Unit Digits'),
'on_change_with_unit_digits')
quantity = fields.Float('Quantity',
digits=(16, Eval('unit_digits', 2)),
depends=['unit_digits'])
@fields.depends('product')
def on_change_with_unit_digits(self, name=None):
if self.extra_product.default_uom:
return self.extra_product.default_uom.digits
return 2
class Template(metaclass=PoolMeta):
__name__ = 'product.template'
@ -86,6 +109,11 @@ class Template(metaclass=PoolMeta):
depends=['type', 'netweight'])
netweight_digits = fields.Function(fields.Integer('Net Weight Digits'),
'on_change_with_netweight_digits')
extra_products = fields.One2Many('product.template-extra.product',
'product', 'Extra Products',
states = {
'readonly': (~Eval('active', True) | Eval('bulk_type') != True),
})
def sum_product(self, name):
if name in ('bulk_quantity'):
@ -155,6 +183,7 @@ class Template(metaclass=PoolMeta):
product_to_save = []
bom_to_save = []
output_to_save = []
inputs = []
for bulk_product in products:
for package_product in bulk_product.packaging_products:
@ -214,17 +243,30 @@ class Template(metaclass=PoolMeta):
product=bulk_product.products[0].id,
uom=bulk_product.default_uom,
quantity=netweight)
inputs.append(bulk_input)
package_input = BOMInput(
bom=bom,
product=package_product.packaging_product.id,
uom=package_product.packaging_product.default_uom,
quantity=1.0)
inputs.append(package_input)
if bulk_product.extra_products:
for extra in bulk_product.extra_products:
extra_input = BOMInput(
bom=bom,
product=extra.extra_product.products[0].id,
uom=extra.extra_product.default_uom,
quantity=extra.quantity)
inputs.append(extra_input)
output = BOMOutput(
bom=bom,
product=output_product.id,
uom=uom_unit,
quantity=1.0)
bom.inputs = [bulk_input, package_input]
bom.inputs = inputs
bom.outputs = [output]
bom_to_save.append(bom)

View File

@ -73,8 +73,12 @@
<record model="ir.ui.view" id="product_packaging_view_list">
<field name="model">product.template-product.packaging</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="name">product_packaging_list</field>
</record>
<record model="ir.ui.view" id="product_extra_packaging_view_list">
<field name="model">product.template-extra.product</field>
<field name="type">tree</field>
<field name="name">product_extra_packaging_list</field>
</record>
</data>
</tryton>

View File

@ -0,0 +1,7 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree editable="bottom">
<field name="extra_product"/>
<field name="quantity"/>
</tree>

View File

@ -29,7 +29,9 @@
</xpath>
<xpath expr="/form/notebook" position="inside">
<page id="packaging_products" string="Packaging Products">
<field name="packaging_products" colspan="4"/>
<field name="packaging_products" colspan="4"/>
<newline/>
<field name="extra_products" colspan="4"/>
<newline/>
<button name="create_packaging_products"
string="Create packaging products" colspan="2"/>