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