Do not evaluate formula if its None | #068683

This commit is contained in:
Jared Esparza 2022-10-27 14:13:38 +02:00
parent bbee5a337d
commit f33e2b9514
2 changed files with 37 additions and 0 deletions

35
advance_payment_term.diff Normal file
View file

@ -0,0 +1,35 @@
diff --git a/trytond/trytond/modules/sale_advance_payment/sale.py b/trytond/trytond/modules/sale_advance_payment/sale.py
index fec4ad8..629c94d 100644
--- a/trytond/trytond/modules/sale_advance_payment/sale.py
+++ b/trytond/trytond/modules/sale_advance_payment/sale.py
@@ -83,19 +83,20 @@ class AdvancePaymentTermLine(ModelView, ModelSQL, CompanyMultiValueMixin):
"- total_amount: The total amount of the sale.\n"
"- untaxed_amount: The total untaxed amount of the sale.")
- @fields.depends('formula')
+ @fields.depends('formula', 'rec_name')
def pre_validate(self, **names):
super(AdvancePaymentTermLine, self).pre_validate()
names['total_amount'] = names['untaxed_amount'] = 0
- try:
- if not isinstance(self.compute_amount(**names), Decimal):
- raise Exception('The formula does not return a Decimal')
- except Exception as exception:
- raise FormulaError(
- gettext('sale_advance_payment.msg_term_line_invalid_formula',
- formula=self.formula,
- term_line=self.rec_name,
- exception=exception)) from exception
+ if self.formula:
+ try:
+ if not isinstance(self.compute_amount(**names), Decimal):
+ raise Exception('The formula does not return a Decimal')
+ except Exception as exception:
+ raise FormulaError(
+ gettext('sale_advance_payment.msg_term_line_invalid_formula',
+ formula=self.formula,
+ term_line=self.rec_name,
+ exception=exception)) from exception
def get_compute_amount_context(self, **names):
return {

2
series
View file

@ -127,3 +127,5 @@ issue11499.diff # [sao] Set FractionDigits options to format CSV to locale
# issue11198.diff # [bank] Fill or create bank from IBAN and enforce uniqueness
issue11684.diff # [carrier_percentage] Do not compute price if no currency is set
advance_payment_term.diff # [sale_advance_payment] Do not evaluate formua if its None