28 lines
994 B
Python
28 lines
994 B
Python
# 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
|