File: common.py

package info (click to toggle)
tryton-modules-carrier-weight 5.0.4-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 344 kB
  • sloc: python: 396; xml: 48; makefile: 6; sh: 3
file content (27 lines) | stat: -rw-r--r-- 993 bytes parent folder | download | duplicates (2)
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='uom'):
    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