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>

Reply via email to