From 479e0d4d5ab105b69807b572683137b1920c497a Mon Sep 17 00:00:00 2001 From: laurentbarontini Date: Sun, 15 Feb 2026 14:23:33 +0100 Subject: [PATCH] 15.02.26 --- modules/account_invoice/payment_term.py | 8 ++-- modules/purchase_trade/fee.py | 44 ++++++++++--------- modules/purchase_trade/sale.py | 10 +++-- .../purchase_trade/view/sale_line_form.xml | 6 +-- 4 files changed, 35 insertions(+), 33 deletions(-) diff --git a/modules/account_invoice/payment_term.py b/modules/account_invoice/payment_term.py index a376774..e4bac01 100755 --- a/modules/account_invoice/payment_term.py +++ b/modules/account_invoice/payment_term.py @@ -155,12 +155,10 @@ class PaymentTermLine(sequence_ordered(), ModelSQL, ModelView): self.ratio = self.round(1 / self.divisor, self.__class__.ratio.digits[1]) - def get_date(self, date, purchase_line = None): + def get_date(self, date, line = None): #find date based on trigger: - if purchase_line and self.trigger_event: - PurchaseLine = Pool().get('purchase.line') - purchase_line = PurchaseLine(purchase_line) - trigger_date = purchase_line.get_date(self.trigger_event) + if line and self.trigger_event: + trigger_date = line.get_date(self.trigger_event) if trigger_date: date = trigger_date diff --git a/modules/purchase_trade/fee.py b/modules/purchase_trade/fee.py index e56219c..8ca056d 100755 --- a/modules/purchase_trade/fee.py +++ b/modules/purchase_trade/fee.py @@ -57,7 +57,7 @@ class Fee(ModelSQL,ModelView): ('lumpsum', 'Lump sum'), ('perqt', 'Per qt'), ('pprice', '% price'), - ('rate', '% Mth'), + ('rate', '% rate'), ('pcost', '% cost price'), ('ppack', 'Per packing'), ], 'Mode', required=True) @@ -318,32 +318,34 @@ class Fee(ModelSQL,ModelView): #take period with estimated trigger date if self.line: if self.line.purchase.payment_term: - est_date = self.line.purchase.payment_term.get_date() beg_date = self.fee_date if self.fee_date else Date.today() - factor = InterestCalculator.calculate( - start_date=beg_date, - end_date=est_date, - rate=self.price, - rate_type='annual', - convention='ACT/360', - compounding='simple' - ) + est_date = self.line.purchase.payment_term[0].get_date(beg_date) + if est_date and beg_date: + factor = InterestCalculator.calculate( + start_date=beg_date, + end_date=est_date, + rate=self.price, + rate_type='annual', + convention='ACT/360', + compounding='simple' + ) - return round(factor * self.line.unit_price * (self.quantity if self.quantity else 0) * sign,2) + return round(factor * self.line.unit_price * (self.quantity if self.quantity else 0) * sign,2) if self.sale_line: if self.sale_line.sale.payment_term: - est_date = self.sale_line.sale.payment_term.get_date() beg_date = self.fee_date if self.fee_date else Date.today() - factor = InterestCalculator.calculate( - start_date=beg_date, - end_date=est_date, - rate=self.price, - rate_type='annual', - convention='ACT/360', - compounding='simple' - ) + est_date = self.sale_line.sale.payment_term.get_date(beg_date) + if est_date and beg_date: + factor = InterestCalculator.calculate( + start_date=beg_date, + end_date=est_date, + rate=self.price, + rate_type='annual', + convention='ACT/360', + compounding='simple' + ) - return round(factor * self.sale_line.unit_price * (self.quantity if self.quantity else 0) * sign,2) + return round(factor * self.sale_line.unit_price * (self.quantity if self.quantity else 0) * sign,2) elif self.mode == 'perqt': if self.shipment_in: diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py index 08999db..374c298 100755 --- a/modules/purchase_trade/sale.py +++ b/modules/purchase_trade/sale.py @@ -460,10 +460,12 @@ class SaleLine(metaclass=PoolMeta): LotQt = Pool().get('lot.qt') return LotQt.search([('lot_s','=',self.lots[0].id),('lot_p','>',0)]) - # @fields.depends('quantity') - # def on_change_with_quantity_theorical(self): - # if not self.quantity_theorical: - # return self.quantity + def get_date(self,trigger_event): + date = None + if self.estimated_date: + trigger_date = [d.estimated_date for d in self.estimated_date if d.trigger == trigger_event] + trigger_date = trigger_date[0] if trigger_date else None + return date def get_tol_min(self,name): if self.inherit_tol: diff --git a/modules/purchase_trade/view/sale_line_form.xml b/modules/purchase_trade/view/sale_line_form.xml index 4016a39..922dc9a 100755 --- a/modules/purchase_trade/view/sale_line_form.xml +++ b/modules/purchase_trade/view/sale_line_form.xml @@ -76,10 +76,10 @@ this repository contains the full copyright notices and license terms. --> - - - + + + \ No newline at end of file