Compute CMR packages.

This commit is contained in:
Sergio Morillo 2017-10-06 09:48:01 +02:00
parent 5bce830b3b
commit 3f5112d03e
1 changed files with 33 additions and 47 deletions

80
load.py
View File

@ -711,60 +711,46 @@ class LoadSheet:
return value
class CMR:
class TransportReportMixin(object):
@classmethod
def _get_products(cls, order):
return list(set([ul.product for ul in order.unit_loads]))
@classmethod
def product_weight(cls, order, product, language):
pool = Pool()
Uom = pool.get('product.uom')
Modeldata = pool.get('ir.model.data')
cat_weight = Modeldata.get_id('product', 'uom_cat_weight')
kg_uom = Uom(Modeldata.get_id('product', 'uom_kilogram'))
if product.default_uom.category.id != cat_weight:
return None
res = sum(Uom.compute_qty(
ul.uom, ul.quantity, kg_uom) or 0 for ul in order.unit_loads
if ul.product.id == product.id) or None
if not res:
return super(TransportReportMixin, cls).product_weight(order,
product, language)
return res
@classmethod
def product_packages(cls, order, product, language):
return sum(ul.cases_quantity for ul in order.unit_loads
if ul.product.id == product.id) or None
class CMR(TransportReportMixin):
__name__ = 'carrier.load.order.cmr'
__metaclass__ = PoolMeta
@classmethod
def _get_products(cls, order):
return list(set([ul.product for ul in order.unit_loads]))
@classmethod
def product_weight(cls, order, product, language):
pool = Pool()
Uom = pool.get('product.uom')
Modeldata = pool.get('ir.model.data')
cat_weight = Modeldata.get_id('product', 'uom_cat_weight')
kg_uom = Uom(Modeldata.get_id('product', 'uom_kilogram'))
if product.default_uom.category.id != cat_weight:
return None
res = sum(Uom.compute_qty(
ul.uom, ul.quantity, kg_uom) or 0 for ul in order.unit_loads
if ul.product.id == product.id) or None
if not res:
return super(CMR, cls).product_weight(order, product, language)
return res
class RoadTransportNote:
class RoadTransportNote(TransportReportMixin):
__name__ = 'carrier.load.order.road_note'
__metaclass__ = PoolMeta
@classmethod
def _get_products(cls, order):
return list(set([ul.product for ul in order.unit_loads]))
@classmethod
def product_weight(cls, order, product, language):
pool = Pool()
Uom = pool.get('product.uom')
Modeldata = pool.get('ir.model.data')
cat_weight = Modeldata.get_id('product', 'uom_cat_weight')
kg_uom = Uom(Modeldata.get_id('product', 'uom_kilogram'))
if product.default_uom.category.id != cat_weight:
return None
res = sum(Uom.compute_qty(
ul.uom, ul.quantity, kg_uom) or 0 for ul in order.unit_loads
if ul.product.id == product.id) or None
if not res:
return super(RoadTransportNote, cls).product_weight(order,
product, language)
return res
class EditLoadOrderLineData(ModelView):
"""Edit load order line data"""