first commit
This commit is contained in:
27
modules/carrier_weight/common.py
Normal file
27
modules/carrier_weight/common.py
Normal file
@@ -0,0 +1,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
|
||||
Reference in New Issue
Block a user