Added cases_digits in config.

This commit refs #14371
This commit is contained in:
Sergio Morillo 2022-06-03 18:12:11 +02:00
parent 13ce0b4c0b
commit a7565820e0
3 changed files with 12 additions and 60 deletions

30
cost.py
View File

@ -3,6 +3,7 @@
from trytond.pool import PoolMeta
from trytond.model import fields
from trytond.pyson import Eval
from trytond.modules.stock_unit_load import cases_digits
from decimal import Decimal
@ -40,13 +41,8 @@ class CostSale(CostMixin, metaclass=PoolMeta):
fields.Float('ULs', digits=(16, 0)),
'get_document_ul_quantity')
document_cases_quantity = fields.Function(
fields.Float('Cases',
digits=(16, Eval('document_cases_digits', 2)),
depends=['document_cases_digits']),
fields.Float('Cases', digits=cases_digits),
'get_document_cases_quantity')
document_cases_digits = fields.Function(
fields.Integer('Cases digits'),
'on_change_with_document_cases_digits')
@classmethod
def get_document_ul_quantity(cls, records, name=None):
@ -70,15 +66,6 @@ class CostSale(CostMixin, metaclass=PoolMeta):
values[record.id] = sum(l.cases_quantity or 0 for l in lines)
return values
@fields.depends('document')
def on_change_with_document_cases_digits(self, name=None):
if self.document:
lines = [l for l in self.sale.lines
if not l.cost and l.type == 'line']
if lines:
return lines[0].cases_digits
return 2
@fields.depends(methods=['get_document_cases_quantity',
'get_document_ul_quantity'])
def _compute_document_values(self):
@ -95,13 +82,8 @@ class CostLineSale(metaclass=PoolMeta):
document_ul_quantity = fields.Function(
fields.Float('ULs', digits=(16, 0)),
'get_document_ul_quantity')
document_cases_digits = fields.Function(
fields.Integer('Cases digits'),
'on_change_with_document_cases_digits')
document_cases_quantity = fields.Function(
fields.Float('Cases',
digits=(16, Eval('document_cases_digits', 2)),
depends=['document_cases_digits']),
fields.Float('Cases', digits=cases_digits),
'get_document_cases_quantity')
def _compute_document_values(self):
@ -118,9 +100,3 @@ class CostLineSale(metaclass=PoolMeta):
@classmethod
def get_document_cases_quantity(cls, records, name=None):
return {r.id: r.document_line.cases_quantity for r in records}
@fields.depends('document_line')
def on_change_with_document_cases_digits(self, name=None):
if self.document_line:
return self.document_line.cases_digits
return 2

27
sale.py
View File

@ -8,6 +8,7 @@ from trytond.pyson import Eval, Bool, Not, If
from trytond.modules.product import price_digits
from trytond.transaction import Transaction
from trytond.tools import reduce_ids
from trytond.modules.stock_unit_load import cases_digits
from sql import Null
from sql.conditionals import Coalesce
from sql.aggregate import Sum
@ -20,11 +21,8 @@ class Sale(metaclass=PoolMeta):
fields.Float('ULs', digits=(16, 0)),
'get_ul_quantity')
cases_quantity = fields.Function(
fields.Float('Cases', digits=(16, Eval('cases_digits', 2)),
depends=['cases_digits']),
fields.Float('Cases', digits=cases_digits),
'get_ul_quantity')
cases_digits = fields.Function(fields.Integer('Cases digits'),
'get_cases_digits')
@classmethod
def get_ul_quantity(cls, records, names):
@ -50,9 +48,6 @@ class Sale(metaclass=PoolMeta):
res['cases_quantity'][record_id] = cases
return res
def get_cases_digits(self, name=None):
return Pool().get('sale.line').default_cases_digits()
class SaleLine(metaclass=PoolMeta):
__name__ = 'sale.line'
@ -68,16 +63,14 @@ class SaleLine(metaclass=PoolMeta):
fields.One2Many('stock.unit_load', None, 'Unit loads'),
'get_unit_loads')
ul_cases_quantity = fields.Function(
fields.Float('Cases per UL', digits=(16, Eval('cases_digits', 2)),
fields.Float('Cases per UL', digits=cases_digits,
states={'readonly': Eval('sale_state') != 'draft'},
depends=['cases_digits', 'sale_state']),
depends=['sale_state']),
'get_ul_cases_quantity', setter='set_ul_cases_quantity')
cases_digits = fields.Function(fields.Integer('Cases digits'),
'on_change_with_cases_digits')
cases_quantity = fields.Float('Cases',
digits=(16, Eval('cases_digits', 2)),
digits=cases_digits,
states={'readonly': Eval('sale_state') != 'draft'},
depends=['cases_digits', 'sale_state'])
depends=['sale_state'])
case_price = fields.Function(
fields.Numeric('Case price', digits=price_digits),
'get_case_price')
@ -150,10 +143,6 @@ class SaleLine(metaclass=PoolMeta):
return []
return list(set(m.unit_load.id for m in self.moves if m.unit_load))
@fields.depends('ul_cases_quantity')
def on_change_with_cases_digits(self, name=None):
return self.default_cases_digits()
@staticmethod
def _get_case_uom():
pool = Pool()
@ -161,10 +150,6 @@ class SaleLine(metaclass=PoolMeta):
Uom = pool.get('product.uom')
return Uom(Modeldata.get_id('product', 'uom_unit'))
@classmethod
def default_cases_digits(cls):
return cls._get_case_uom().digits
@fields.depends(methods=['get_cases_quantity'])
def on_change_ul_cases_quantity(self):
self.cases_quantity = self.get_cases_quantity()

View File

@ -1,8 +1,8 @@
# The COPYRIGHT file at the top level of this repository contains the full
# copyright notices and license terms.
from trytond.pool import PoolMeta, Pool
from trytond.pool import PoolMeta
from trytond.model import fields
from trytond.pyson import Eval
from trytond.modules.stock_unit_load import cases_digits
from sql.aggregate import Sum
from sql.conditionals import Coalesce
@ -11,17 +11,8 @@ class Product(metaclass=PoolMeta):
__name__ = 'sale.reporting.product'
cases_quantity = fields.Float('Cases',
digits=(16, Eval('cases_digits', 2)),
depends=['cases_digits'])
digits=cases_digits)
ul_quantity = fields.Float('ULs', digits=(16, 0))
cases_digits = fields.Function(fields.Integer('Cases Digits'),
'get_cases_digits')
def get_cases_digits(self, name):
pool = Pool()
Modeldata = pool.get('ir.model.data')
Uom = pool.get('product.uom')
return Uom(Modeldata.get_id('product', 'uom_unit')).digits
@classmethod
def _columns(cls, tables, withs):