details: https://code.tryton.org/tryton/commit/3a620de69516
branch: default
user: Cédric Krier <[email protected]>
date: Sat Nov 22 15:37:31 2025 +0100
description:
Rename advance payment conditions into lines
Closes #12854
diffstat:
modules/sale_advance_payment/CHANGELOG | 1 +
modules/sale_advance_payment/account.py | 12 +-
modules/sale_advance_payment/sale.py | 85
+++++----
modules/sale_advance_payment/sale.xml | 12 +-
modules/sale_advance_payment/tests/scenario_advance_payment.rst | 14 +-
modules/sale_advance_payment/tryton.cfg | 2 +-
modules/sale_advance_payment/view/advance_payment_condition_form.xml | 21 --
modules/sale_advance_payment/view/advance_payment_condition_list.xml | 12 -
modules/sale_advance_payment/view/advance_payment_line_form.xml | 21 ++
modules/sale_advance_payment/view/advance_payment_line_list.xml | 12 +
modules/sale_advance_payment/view/sale_form.xml | 4 +-
11 files changed, 103 insertions(+), 93 deletions(-)
diffs (449 lines):
diff -r f23483b81f8b -r 3a620de69516 modules/sale_advance_payment/CHANGELOG
--- a/modules/sale_advance_payment/CHANGELOG Wed Dec 20 10:35:23 2023 +0100
+++ b/modules/sale_advance_payment/CHANGELOG Sat Nov 22 15:37:31 2025 +0100
@@ -1,3 +1,4 @@
+* Rename advance payment conditions into lines
Version 7.6.0 - 2025-04-28
--------------------------
diff -r f23483b81f8b -r 3a620de69516 modules/sale_advance_payment/account.py
--- a/modules/sale_advance_payment/account.py Wed Dec 20 10:35:23 2023 +0100
+++ b/modules/sale_advance_payment/account.py Sat Nov 22 15:37:31 2025 +0100
@@ -49,11 +49,11 @@
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 @@
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 @@
@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 -r f23483b81f8b -r 3a620de69516 modules/sale_advance_payment/sale.py
--- a/modules/sale_advance_payment/sale.py Wed Dec 20 10:35:23 2023 +0100
+++ b/modules/sale_advance_payment/sale.py Sat Nov 22 15:37:31 2025 +0100
@@ -5,6 +5,7 @@
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 @@
'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 @@
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 AdvancePaymentCondition(ModelSQL, ModelView):
- __name__ = 'sale.advance_payment.condition'
+class AdvancePaymentLine(ModelSQL, ModelView):
+ __name__ = 'sale.advance_payment.line'
_rec_name = 'description'
_states = {
@@ -188,6 +189,16 @@
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()
Sale = pool.get('sale.sale')
@@ -207,13 +218,13 @@
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 @@
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 @@
@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 @@
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 @@
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 @@
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 @@
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 @@
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 -r f23483b81f8b -r 3a620de69516 modules/sale_advance_payment/sale.xml
--- a/modules/sale_advance_payment/sale.xml Wed Dec 20 10:35:23 2023 +0100
+++ b/modules/sale_advance_payment/sale.xml Sat Nov 22 15:37:31 2025 +0100
@@ -9,15 +9,15 @@
<field name="name">sale_form</field>
</record>
- <record model="ir.ui.view" id="advance_payment_condition_form">
- <field name="model">sale.advance_payment.condition</field>
+ <record model="ir.ui.view" id="advance_payment_line_form">
+ <field name="model">sale.advance_payment.line</field>
<field name="type">form</field>
- <field name="name">advance_payment_condition_form</field>
+ <field name="name">advance_payment_line_form</field>
</record>
- <record model="ir.ui.view" id="advance_payment_condition_list">
- <field name="model">sale.advance_payment.condition</field>
+ <record model="ir.ui.view" id="advance_payment_line_list">
+ <field name="model">sale.advance_payment.line</field>
<field name="type">tree</field>
- <field name="name">advance_payment_condition_list</field>
+ <field name="name">advance_payment_line_list</field>
</record>
<record model="ir.ui.view" id="advance_payment_term_form">
diff -r f23483b81f8b -r 3a620de69516
modules/sale_advance_payment/tests/scenario_advance_payment.rst
--- a/modules/sale_advance_payment/tests/scenario_advance_payment.rst Wed Dec
20 10:35:23 2023 +0100
+++ b/modules/sale_advance_payment/tests/scenario_advance_payment.rst Sat Nov
22 15:37:31 2025 +0100
@@ -147,8 +147,8 @@
>>> 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 @@
>>> 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 @@
>>> 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 @@
>>> 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 -r f23483b81f8b -r 3a620de69516 modules/sale_advance_payment/tryton.cfg
--- a/modules/sale_advance_payment/tryton.cfg Wed Dec 20 10:35:23 2023 +0100
+++ b/modules/sale_advance_payment/tryton.cfg Sat Nov 22 15:37:31 2025 +0100
@@ -28,7 +28,7 @@
sale.AdvancePaymentTerm
sale.AdvancePaymentTermLine
sale.AdvancePaymentTermLineAccount
- sale.AdvancePaymentCondition
+ sale.AdvancePaymentLine
sale.Sale
sale.SaleLine
wizard:
diff -r f23483b81f8b -r 3a620de69516
modules/sale_advance_payment/view/advance_payment_condition_form.xml
--- a/modules/sale_advance_payment/view/advance_payment_condition_form.xml
Wed Dec 20 10:35:23 2023 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
-this repository contains the full copyright notices and license terms. -->
-<form>
- <label name="sale"/>
- <field name="sale" colspan="3"/>
- <label name="description"/>
- <field name="description" colspan="3"/>
- <label name="account"/>
- <field name="account"/>
- <label name="amount"/>
- <field name="amount"/>
- <label name="invoice_delay"/>
- <field name="invoice_delay"/>
- <group id="block" colspan="2" col="-1">
- <label name="block_supply"/>
- <field name="block_supply" xexpand="0"/>
- <label name="block_shipping"/>
- <field name="block_shipping" xexpand="0"/>
- </group>
-</form>
diff -r f23483b81f8b -r 3a620de69516
modules/sale_advance_payment/view/advance_payment_condition_list.xml
--- a/modules/sale_advance_payment/view/advance_payment_condition_list.xml
Wed Dec 20 10:35:23 2023 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
-this repository contains the full copyright notices and license terms. -->
-<tree>
- <field name="sale" expand="1"/>
- <field name="description" expand="1"/>
- <field name="account" expand="1"/>
- <field name="invoice_delay"/>
- <field name="block_supply"/>
- <field name="block_shipping"/>
- <field name="amount"/>
-</tree>
diff -r f23483b81f8b -r 3a620de69516
modules/sale_advance_payment/view/advance_payment_line_form.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/sale_advance_payment/view/advance_payment_line_form.xml Sat Nov
22 15:37:31 2025 +0100
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form>
+ <label name="sale"/>
+ <field name="sale" colspan="3"/>
+ <label name="description"/>
+ <field name="description" colspan="3"/>
+ <label name="account"/>
+ <field name="account"/>
+ <label name="amount"/>
+ <field name="amount"/>
+ <label name="invoice_delay"/>
+ <field name="invoice_delay"/>
+ <group id="block" colspan="2" col="-1">
+ <label name="block_supply"/>
+ <field name="block_supply" xexpand="0"/>
+ <label name="block_shipping"/>
+ <field name="block_shipping" xexpand="0"/>
+ </group>
+</form>
diff -r f23483b81f8b -r 3a620de69516
modules/sale_advance_payment/view/advance_payment_line_list.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/sale_advance_payment/view/advance_payment_line_list.xml Sat Nov
22 15:37:31 2025 +0100
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tree>
+ <field name="sale" expand="1"/>
+ <field name="description" expand="1"/>
+ <field name="account" expand="1"/>
+ <field name="invoice_delay"/>
+ <field name="block_supply"/>
+ <field name="block_shipping"/>
+ <field name="amount"/>
+</tree>
diff -r f23483b81f8b -r 3a620de69516
modules/sale_advance_payment/view/sale_form.xml
--- a/modules/sale_advance_payment/view/sale_form.xml Wed Dec 20 10:35:23
2023 +0100
+++ b/modules/sale_advance_payment/view/sale_form.xml Sat Nov 22 15:37:31
2025 +0100
@@ -3,10 +3,10 @@
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//page[@id='sale']" position="after">
- <page name="advance_payment_term">
+ <page string="Advance Payment" id="advance_payment">
<label name="advance_payment_term"/>
<field name="advance_payment_term"/>
- <field name="advance_payment_conditions" colspan="4"/>
+ <field name="advance_payment_lines" colspan="4"/>
</page>
</xpath>
</data>