parent
f439b65972
commit
d37939b9b1
|
@ -11,6 +11,10 @@ from . import stock
|
|||
from . import shipment
|
||||
from .res import User
|
||||
from . import stock_lot
|
||||
from . import ir
|
||||
from .unit_load import cases_digits
|
||||
|
||||
__all__ = [cases_digits]
|
||||
|
||||
|
||||
def register():
|
||||
|
@ -37,6 +41,7 @@ def register():
|
|||
BatchDropUnitLoadData,
|
||||
BatchDropUnitLoadConfirm,
|
||||
User,
|
||||
ir.Configuration,
|
||||
module='stock_unit_load', type_='model')
|
||||
Pool.register(
|
||||
MoveUnitLoad,
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
# The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.config import config
|
||||
from trytond.model import fields
|
||||
from trytond.pool import PoolMeta
|
||||
|
||||
cases_decimal = config.getint('product', 'cases_digits', default=0)
|
||||
|
||||
|
||||
class Configuration(metaclass=PoolMeta):
|
||||
__name__ = 'ir.configuration'
|
||||
product_cases_decimal = fields.Integer("Product Cases Decimal")
|
||||
|
||||
@classmethod
|
||||
def default_product_cases_decimal(cls):
|
||||
return cases_decimal
|
||||
|
||||
def check(self):
|
||||
super().check()
|
||||
if self.product_cases_decimal != cases_decimal:
|
||||
raise ValueError(
|
||||
"The cases_digits %s in [product] configuration section "
|
||||
"is different from the value %s in 'ir.configuration'." % (
|
||||
cases_decimal, self.product_cases_decimal))
|
57
unit_load.py
57
unit_load.py
|
@ -23,6 +23,9 @@ from trytond.wizard import Wizard, StateTransition, StateView, Button
|
|||
from trytond.rpc import RPC
|
||||
from trytond.cache import Cache
|
||||
from trytond.i18n import gettext
|
||||
from .ir import cases_decimal
|
||||
|
||||
cases_digits = (16, cases_decimal)
|
||||
|
||||
__all__ = ['UnitLoad', 'UnitLoadMove', 'MoveUnitLoad',
|
||||
'MoveUnitLoadStart', 'UnitLoadLabel', 'DropUnitLoadData',
|
||||
|
@ -196,23 +199,20 @@ class UnitLoad(ModelSQL, ModelView):
|
|||
'get_location_type')
|
||||
dropped = fields.Boolean('Dropped', readonly=True, select=True)
|
||||
cases_quantity = fields.Float('Cases', required=True,
|
||||
digits=(16, Eval('cases_digits', 2)),
|
||||
digits=cases_digits,
|
||||
states={'readonly': (Eval('state') != 'draft') | (
|
||||
Eval('production_state') == 'done')},
|
||||
depends=['cases_digits', 'production_state', 'state'])
|
||||
depends=['production_state', 'state'])
|
||||
quantity_per_case = fields.Function(
|
||||
fields.Float('Quantity per Case', digits=(16, Eval('uom_digits', 0)),
|
||||
states={'readonly': (Eval('state') != 'draft') | (
|
||||
Eval('production_state') == 'done')},
|
||||
depends=['uom_digits', 'production_state', 'state']),
|
||||
'get_quantity_per_case', setter='set_quantity_per_case')
|
||||
cases_digits = fields.Function(fields.Integer('Cases Digits'),
|
||||
'on_change_with_cases_digits')
|
||||
available_cases_quantity = fields.Function(
|
||||
fields.Float('Available cases',
|
||||
digits=(16, Eval('cases_digits', 2)),
|
||||
domain=[('available_cases_quantity', '>=', 0)],
|
||||
depends=['cases_digits']),
|
||||
digits=cases_digits,
|
||||
domain=[('available_cases_quantity', '>=', 0)]),
|
||||
'get_available_cases_quantity',
|
||||
searcher='search_available_cases_quantity')
|
||||
currency_digits = fields.Function(fields.Integer('Currency Digits'),
|
||||
|
@ -1055,17 +1055,6 @@ class UnitLoad(ModelSQL, ModelView):
|
|||
'state': state
|
||||
})
|
||||
|
||||
@fields.depends('cases_quantity')
|
||||
def on_change_with_cases_digits(self, name=None):
|
||||
return self.default_cases_digits()
|
||||
|
||||
@classmethod
|
||||
def default_cases_digits(cls):
|
||||
pool = Pool()
|
||||
Modeldata = pool.get('ir.model.data')
|
||||
Uom = pool.get('product.uom')
|
||||
return Uom(Modeldata.get_id('product', 'uom_unit')).digits
|
||||
|
||||
@fields.depends('quantity_per_case', 'cases_quantity',
|
||||
methods=['on_change_quantity'])
|
||||
def on_change_quantity_per_case(self):
|
||||
|
@ -1093,7 +1082,7 @@ class UnitLoad(ModelSQL, ModelView):
|
|||
if dropped_qty:
|
||||
dropped_cases = round(
|
||||
(dropped_qty / record.internal_quantity
|
||||
) * record.cases_quantity, record.cases_digits)
|
||||
) * record.cases_quantity, cases_digits[1])
|
||||
res[record.id] -= dropped_cases
|
||||
else:
|
||||
res[record.id] = 0.0
|
||||
|
@ -1935,18 +1924,15 @@ class DropUnitLoadData(ModelView):
|
|||
('type', '=', 'lost_found')],
|
||||
depends=['warehouse_production'])
|
||||
cases_quantity = fields.Float('Cases', readonly=True,
|
||||
digits=(16, Eval('cases_digits', 2)),
|
||||
depends=['cases_digits'])
|
||||
digits=cases_digits)
|
||||
available_cases_quantity = fields.Float('Available cases', readonly=True,
|
||||
digits=(16, Eval('cases_digits', 2)),
|
||||
depends=['cases_digits'])
|
||||
digits=cases_digits)
|
||||
drop_cases_quantity = fields.Float('Cases to drop', required=True,
|
||||
digits=(16, Eval('cases_digits', 2)), domain=[
|
||||
digits=cases_digits, domain=[
|
||||
('drop_cases_quantity', '>', 0),
|
||||
('drop_cases_quantity', '<=', Eval('available_cases_quantity'))
|
||||
],
|
||||
depends=['cases_digits', 'available_cases_quantity'])
|
||||
cases_digits = fields.Integer('Cases Digits')
|
||||
depends=['available_cases_quantity'])
|
||||
parallel = fields.Boolean('Parallel',
|
||||
states={
|
||||
'invisible': Not(Equal(Eval('propose_drop_end_date'), 'last_drop'))
|
||||
|
@ -2019,25 +2005,21 @@ class DropUnitLoadEndDate(ModelView):
|
|||
|
||||
unit_load = fields.Many2One('stock.unit_load', 'Unit load', readonly=True)
|
||||
cases_quantity = fields.Float('Cases', readonly=True,
|
||||
digits=(16, Eval('cases_digits', 2)),
|
||||
depends=['cases_digits'])
|
||||
digits=cases_digits)
|
||||
available_cases_quantity = fields.Float('Available cases', readonly=True,
|
||||
digits=(16, Eval('cases_digits', 2)),
|
||||
depends=['cases_digits'])
|
||||
digits=cases_digits)
|
||||
drop_cases_quantity = fields.Float('Dropped cases', required=True,
|
||||
digits=(16, Eval('cases_digits', 2)), domain=[
|
||||
digits=cases_digits, domain=[
|
||||
('drop_cases_quantity', '>', 0),
|
||||
('drop_cases_quantity', '<=', Eval('available_cases_quantity'))
|
||||
],
|
||||
depends=['cases_digits', 'available_cases_quantity'])
|
||||
depends=['available_cases_quantity'])
|
||||
initial_drop_cases_quantity = fields.Float('Initial Cases to drop',
|
||||
digits=(16, Eval('cases_digits', 2)), domain=[
|
||||
digits=cases_digits, domain=[
|
||||
('drop_cases_quantity', '>', 0)
|
||||
], states={
|
||||
'invisible': Bool(True)
|
||||
},
|
||||
depends=['cases_digits'])
|
||||
cases_digits = fields.Integer('Cases Digits')
|
||||
})
|
||||
start_date = fields.DateTime('Start date')
|
||||
end_date = fields.DateTime('End date', domain=[
|
||||
If(Eval('end_date'),
|
||||
|
@ -2137,7 +2119,6 @@ class DropUnitLoad(Wizard):
|
|||
'cases_quantity': unit_load.cases_quantity,
|
||||
'available_cases_quantity': unit_load.available_cases_quantity,
|
||||
'drop_cases_quantity': unit_load.available_cases_quantity,
|
||||
'cases_digits': unit_load.cases_digits,
|
||||
'propose_drop_end_date': conf.propose_drop_end_date,
|
||||
}
|
||||
if (tran.context.get('active_model') == Unitload.__name__
|
||||
|
@ -2167,7 +2148,7 @@ class DropUnitLoad(Wizard):
|
|||
drop_cases = round((
|
||||
(move.internal_quantity or move.quantity) /
|
||||
unit_load.internal_quantity) * unit_load.cases_quantity,
|
||||
unit_load.cases_digits)
|
||||
cases_digits[1])
|
||||
available_cases = unit_load.available_cases_quantity + \
|
||||
drop_cases
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue