1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool
def parcel_weight(parcel, carrier_uom, uom_field='unit'):
pool = Pool()
Uom = pool.get('product.uom')
weight = 0
for line in parcel:
product = getattr(line, 'product', None)
quantity = getattr(line, 'quantity', None)
uom = getattr(line, uom_field, None)
if not all([product, quantity, uom]):
continue
if product.weight is not None:
internal_quantity = Uom.compute_qty(
uom, quantity, product.default_uom, round=False)
weight += Uom.compute_qty(
product.weight_uom, internal_quantity * product.weight,
carrier_uom, round=False)
elif uom.category == carrier_uom.category:
weight += Uom.compute_qty(uom, quantity, carrier_uom, round=False)
return weight
|