Files
tradon/modules/incoterm/account.py
2025-12-26 13:11:43 +00:00

51 lines
1.6 KiB
Python
Executable File

# 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.model import fields
from trytond.pool import Pool, PoolMeta
from .common import IncotermMixin
class Invoice(metaclass=PoolMeta):
__name__ = 'account.invoice'
incoterms = fields.Function(fields.Char("Incoterms"), 'get_incoterms')
def get_incoterms(self, name):
return '; '.join(set(filter(None,
(l.incoterm_name for l in self.lines))))
class InvoiceLine(metaclass=PoolMeta):
__name__ = 'account.invoice.line'
@property
def incoterm_name(self):
pool = Pool()
try:
SaleLine = pool.get('sale.line')
except KeyError:
SaleLine = None
try:
PurchaseLine = pool.get('purchase.line')
except KeyError:
PurchaseLine = None
name = ''
if self.stock_moves:
name = ','.join({
move.shipment.incoterm_name
for move in self.stock_moves
if (move.state != 'cancelled'
and isinstance(move.shipment, IncotermMixin))})
elif (SaleLine
and isinstance(self.origin, SaleLine)
and isinstance(self.origin.sale, IncotermMixin)):
name = self.origin.sale.incoterm_name
elif (PurchaseLine
and isinstance(self.origin, PurchaseLine)
and isinstance(self.origin.purchase, IncotermMixin)):
name = self.origin.purchase.incoterm_name
return name