parent
13ce0b4c0b
commit
a7565820e0
30
cost.py
30
cost.py
|
@ -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
27
sale.py
|
@ -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()
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue