Files
tradon/modules/sale_credit_limit/sale.py
2026-03-14 09:42:12 +00:00

53 lines
1.8 KiB
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.model import ModelView, Workflow
from trytond.pool import Pool, PoolMeta
class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
def must_check_credit_limit(self):
return self.shipment_method == 'order'
@property
def credit_limit_amount(self):
"Amount to check against credit limit"
pool = Pool()
Currency = pool.get('currency.currency')
return Currency.compute(
self.currency, self.untaxed_amount, self.company.currency)
@classmethod
@ModelView.button
@Workflow.transition('confirmed')
def confirm(cls, sales):
for sale in sales:
if sale.must_check_credit_limit():
party = sale.invoice_party or sale.party
party.check_credit_limit(
sale.credit_limit_amount, sale.company, origin=sale)
super().confirm(sales)
class Line(metaclass=PoolMeta):
__name__ = 'sale.line'
@property
def credit_limit_quantity(self):
pool = Pool()
UoM = pool.get('product.uom')
if (self.type != 'line') or (self.quantity <= 0):
return None
quantity = self.quantity
if self.sale.invoice_method == 'shipment':
for move in self.moves_ignored:
quantity -= UoM.compute_qty(
move.unit, move.quantity, self.unit, round=False)
for invoice_line in self.invoice_lines:
if invoice_line.invoice in self.sale.invoices_ignored:
quantity -= UoM.compute_qty(
invoice_line.unit, invoice_line.quantity, self.unit,
round=False)
return quantity