diff --git a/modules/sale_advance_payment/CHANGELOG b/modules/sale_advance_payment/CHANGELOG
index c333e7c9a5..4a3590db57 100644
--- a/modules/sale_advance_payment/CHANGELOG
+++ b/modules/sale_advance_payment/CHANGELOG
@@ -1,3 +1,4 @@
+* Rename advance payment conditions into lines
Version 7.6.0 - 2025-04-28
--------------------------
diff --git a/modules/sale_advance_payment/account.py b/modules/sale_advance_payment/account.py
index 5a9d3c4459..341abb9b88 100644
--- a/modules/sale_advance_payment/account.py
+++ b/modules/sale_advance_payment/account.py
@@ -49,11 +49,11 @@ class Invoice(metaclass=PoolMeta):
def get_sales(self, name):
pool = Pool()
- AdvancePaymentCondition = pool.get('sale.advance_payment.condition')
+ Line = pool.get('sale.advance_payment.line')
sales = set(super().get_sales(name))
for line in self.lines:
- if isinstance(line.origin, AdvancePaymentCondition):
+ if isinstance(line.origin, Line):
sales.add(line.origin.sale.id)
return list(sales)
@@ -63,7 +63,7 @@ class Invoice(metaclass=PoolMeta):
return ['OR',
domain,
('lines.origin.sale' + clause[0][len(name):],
- *clause[1:3], 'sale.advance_payment.condition', *clause[3:]),
+ *clause[1:3], 'sale.advance_payment.line', *clause[3:]),
]
@@ -84,16 +84,16 @@ class InvoiceLine(metaclass=PoolMeta):
@property
def origin_name(self):
pool = Pool()
- Condition = pool.get('sale.advance_payment.condition')
+ Line = pool.get('sale.advance_payment.line')
name = super().origin_name
- if isinstance(self.origin, Condition) and self.origin.id >= 0:
+ if isinstance(self.origin, Line) and self.origin.id >= 0:
name = self.origin.sale.rec_name
return name
@classmethod
def _get_origin(cls):
return (super()._get_origin()
- + ['sale.advance_payment.condition'])
+ + ['sale.advance_payment.line'])
@classmethod
def copy(cls, lines, default=None):
diff --git a/modules/sale_advance_payment/sale.py b/modules/sale_advance_payment/sale.py
index f26ca35f4a..ec91d3e05d 100644
--- a/modules/sale_advance_payment/sale.py
+++ b/modules/sale_advance_payment/sale.py
@@ -5,6 +5,7 @@ from itertools import chain
from simpleeval import simple_eval
+from trytond import backend, config
from trytond.i18n import gettext
from trytond.model import (
DeactivableMixin, ModelSQL, ModelView, Workflow, fields)
@@ -33,14 +34,14 @@ class AdvancePaymentTerm(
'untaxed_amount': sale.untaxed_amount,
}
- def get_conditions(self, sale):
- conditions = []
+ def get_lines(self, sale):
+ lines = []
term_context = self.get_advance_payment_context(sale)
- for line in self.lines:
- condition = line.get_condition(sale.currency, **term_context)
- if condition.amount > 0:
- conditions.append(condition)
- return conditions
+ for sale_line in self.lines:
+ line = sale_line.get_line(sale.currency, **term_context)
+ if line.amount > 0:
+ lines.append(line)
+ return lines
class AdvancePaymentTermLine(ModelView, ModelSQL, CompanyMultiValueMixin):
@@ -109,11 +110,11 @@ class AdvancePaymentTermLine(ModelView, ModelSQL, CompanyMultiValueMixin):
context = self.get_compute_amount_context(**names)
return simple_eval(decistmt(self.formula), **context)
- def get_condition(self, currency, **context):
+ def get_line(self, currency, **context):
pool = Pool()
- AdvancePaymentCondition = pool.get('sale.advance_payment.condition')
+ Line = pool.get('sale.advance_payment.line')
- return AdvancePaymentCondition(
+ return Line(
block_supply=self.block_supply,
block_shipping=self.block_shipping,
amount=currency.round(self.compute_amount(**context)),
@@ -139,8 +140,8 @@ class AdvancePaymentTermLineAccount(ModelSQL, CompanyValueMixin):
])
-class AdvancePaymentCondition(ModelSQL, ModelView):
- __name__ = 'sale.advance_payment.condition'
+class AdvancePaymentLine(ModelSQL, ModelView):
+ __name__ = 'sale.advance_payment.line'
_rec_name = 'description'
_states = {
@@ -187,6 +188,16 @@ class AdvancePaymentCondition(ModelSQL, ModelView):
cls._order.insert(0, ('amount', 'ASC'))
cls.__access__.add('sale')
+ @classmethod
+ def __register__(cls, module):
+ # Migration from 7.0: rename condition into line
+ backend.TableHandler.table_rename(
+ config.get(
+ 'table', 'sale.advance_payment.condition',
+ default='sale_advance_payment_condition'),
+ cls._table)
+ super().__register__(module)
+
@classmethod
def get_sale_states(cls):
pool = Pool()
@@ -207,13 +218,13 @@ class AdvancePaymentCondition(ModelSQL, ModelView):
return self.sale.currency if self.sale else None
@classmethod
- def copy(cls, conditions, default=None):
+ def copy(cls, lines, default=None):
if default is None:
default = {}
else:
default = default.copy()
default.setdefault('invoice_lines', [])
- return super().copy(conditions, default)
+ return super().copy(lines, default)
def create_invoice(self):
invoice = self.sale._get_invoice()
@@ -277,9 +288,8 @@ class Sale(metaclass=PoolMeta):
ondelete='RESTRICT', states={
'readonly': Eval('state') != 'draft',
})
- advance_payment_conditions = fields.One2Many(
- 'sale.advance_payment.condition', 'sale',
- 'Advance Payment Conditions',
+ advance_payment_lines = fields.One2Many(
+ 'sale.advance_payment.line', 'sale', "Advance Payment Lines",
states={
'readonly': Eval('state') != 'draft',
})
@@ -303,12 +313,12 @@ class Sale(metaclass=PoolMeta):
@Workflow.transition('quotation')
def quote(cls, sales):
pool = Pool()
- AdvancePaymentCondition = pool.get('sale.advance_payment.condition')
+ AdvancePaymentLine = pool.get('sale.advance_payment.line')
super().quote(sales)
- AdvancePaymentCondition.delete(
- list(chain(*(s.advance_payment_conditions for s in sales))))
+ AdvancePaymentLine.delete(
+ list(chain(*(s.advance_payment_lines for s in sales))))
for sale in sales:
sale.set_advance_payment_term()
@@ -320,7 +330,7 @@ class Sale(metaclass=PoolMeta):
default = {}
else:
default = default.copy()
- default.setdefault('advance_payment_conditions', None)
+ default.setdefault('advance_payment_lines', None)
return super().copy(sales, default=default)
def set_advance_payment_term(self):
@@ -333,20 +343,19 @@ class Sale(metaclass=PoolMeta):
self.advance_payment_term.id)
else:
advance_payment_term = self.advance_payment_term
- self.advance_payment_conditions = \
- advance_payment_term.get_conditions(self)
+ self.advance_payment_lines = advance_payment_term.get_lines(self)
def get_advance_payment_invoices(self, name):
invoices = set()
- for condition in self.advance_payment_conditions:
- for invoice_line in condition.invoice_lines:
+ for line in self.advance_payment_lines:
+ for invoice_line in line.invoice_lines:
if invoice_line.invoice:
invoices.add(invoice_line.invoice.id)
return list(invoices)
@classmethod
def search_advance_payment_invoices(cls, name, clause):
- return [('advance_payment_conditions.invoice_lines.invoice'
+ return [('advance_payment_lines.invoice_lines.invoice'
+ clause[0][len(name):], *clause[1:])]
@property
@@ -360,7 +369,7 @@ class Sale(metaclass=PoolMeta):
recall_lines = []
advance_lines = [
l
- for c in self.advance_payment_conditions
+ for c in self.advance_payment_lines
for l in c.invoice_lines
if l.type == 'line' and l.invoice.state == 'paid']
for advance_line in advance_lines:
@@ -391,8 +400,8 @@ class Sale(metaclass=PoolMeta):
for sale in sales:
if (sale.advance_payment_eligible()
and not sale.advance_payment_completed):
- for condition in sale.advance_payment_conditions:
- invoice = condition.create_invoice()
+ for line in sale.advance_payment_lines:
+ invoice = line.create_invoice()
if invoice:
invoices.append(invoice)
Invoice.save(invoices)
@@ -416,31 +425,31 @@ class Sale(metaclass=PoolMeta):
of the sale's advance payment.
"""
return bool((shipment_type == 'out' or shipment_type is None)
- and self.advance_payment_conditions)
+ and self.advance_payment_lines)
@property
def advance_payment_completed(self):
"""
Returns True when the advance payment process is completed
"""
- return (bool(self.advance_payment_conditions)
- and all(c.completed for c in self.advance_payment_conditions))
+ return (bool(self.advance_payment_lines)
+ and all(c.completed for c in self.advance_payment_lines))
@property
def supply_blocked(self):
- for condition in self.advance_payment_conditions:
- if not condition.block_supply:
+ for line in self.advance_payment_lines:
+ if not line.block_supply:
continue
- if not condition.completed:
+ if not line.completed:
return True
return False
@property
def shipping_blocked(self):
- for condition in self.advance_payment_conditions:
- if not condition.block_shipping:
+ for line in self.advance_payment_lines:
+ if not line.block_shipping:
continue
- if not condition.completed:
+ if not line.completed:
return True
return False
diff --git a/modules/sale_advance_payment/sale.xml b/modules/sale_advance_payment/sale.xml
index 0e7e8e7ee1..3dc18dbb31 100644
--- a/modules/sale_advance_payment/sale.xml
+++ b/modules/sale_advance_payment/sale.xml
@@ -9,15 +9,15 @@ this repository contains the full copyright notices and license terms. -->
sale_form
-
- sale.advance_payment.condition
+
+ sale.advance_payment.line
form
- advance_payment_condition_form
+ advance_payment_line_form
-
- sale.advance_payment.condition
+
+ sale.advance_payment.line
tree
- advance_payment_condition_list
+ advance_payment_line_list
diff --git a/modules/sale_advance_payment/tests/scenario_advance_payment.rst b/modules/sale_advance_payment/tests/scenario_advance_payment.rst
index e93089f134..6487947261 100644
--- a/modules/sale_advance_payment/tests/scenario_advance_payment.rst
+++ b/modules/sale_advance_payment/tests/scenario_advance_payment.rst
@@ -147,8 +147,8 @@ Create a sale with advance payment::
>>> line.quantity = 5
>>> sale.advance_payment_term = advance_payment_term
>>> sale.click('quote')
- >>> condition, = sale.advance_payment_conditions
- >>> condition.amount
+ >>> line, = sale.advance_payment_lines
+ >>> line.amount
Decimal('10.00')
>>> sale.click('confirm')
>>> sale.click('process')
@@ -221,8 +221,8 @@ Create a sale with advance payment::
>>> line.quantity = 6
>>> sale.advance_payment_term = advance_payment_term_no_pack
>>> sale.click('quote')
- >>> condition, = sale.advance_payment_conditions
- >>> condition.amount
+ >>> line, = sale.advance_payment_lines
+ >>> line.amount
Decimal('12.00')
>>> sale.click('confirm')
>>> sale.click('process')
@@ -321,7 +321,7 @@ There is now a purchase request of the desired quantity::
>>> purchase_request.quantity
10.0
-Testing advance payment conditions exception handling
+Testing advance payment lines exception handling
-----------------------------------------------------
Create a sale with this term::
@@ -334,8 +334,8 @@ Create a sale with this term::
>>> line.quantity = 5
>>> sale.advance_payment_term = advance_payment_term
>>> sale.click('quote')
- >>> condition1, = sale.advance_payment_conditions
- >>> condition1.amount
+ >>> line1, = sale.advance_payment_lines
+ >>> line1.amount
Decimal('10.00')
>>> sale.click('confirm')
>>> sale.click('process')
diff --git a/modules/sale_advance_payment/tryton.cfg b/modules/sale_advance_payment/tryton.cfg
index cba5153871..84dfb68930 100644
--- a/modules/sale_advance_payment/tryton.cfg
+++ b/modules/sale_advance_payment/tryton.cfg
@@ -28,7 +28,7 @@ model:
sale.AdvancePaymentTerm
sale.AdvancePaymentTermLine
sale.AdvancePaymentTermLineAccount
- sale.AdvancePaymentCondition
+ sale.AdvancePaymentLine
sale.Sale
sale.SaleLine
wizard:
diff --git a/modules/sale_advance_payment/view/advance_payment_condition_form.xml b/modules/sale_advance_payment/view/advance_payment_line_form.xml
similarity index 100%
rename from modules/sale_advance_payment/view/advance_payment_condition_form.xml
rename to modules/sale_advance_payment/view/advance_payment_line_form.xml
diff --git a/modules/sale_advance_payment/view/advance_payment_condition_list.xml b/modules/sale_advance_payment/view/advance_payment_line_list.xml
similarity index 100%
rename from modules/sale_advance_payment/view/advance_payment_condition_list.xml
rename to modules/sale_advance_payment/view/advance_payment_line_list.xml
diff --git a/modules/sale_advance_payment/view/sale_form.xml b/modules/sale_advance_payment/view/sale_form.xml
index 19a6562532..1ee444341e 100644
--- a/modules/sale_advance_payment/view/sale_form.xml
+++ b/modules/sale_advance_payment/view/sale_form.xml
@@ -3,10 +3,10 @@
this repository contains the full copyright notices and license terms. -->
-
+
-
+