changeset bcc920901b30 in modules/project_invoice:default
details: 
https://hg.tryton.org/modules/project_invoice?cmd=changeset&node=bcc920901b30
description:
        Use on_change_invoice and on_change_product to create invoice line

        issue10571
        review358391002
diffstat:

 project.py |  46 +++++++++++-----------------------------------
 1 files changed, 11 insertions(+), 35 deletions(-)

diffs (69 lines):

diff -r a242844f10e1 -r bcc920901b30 project.py
--- a/project.py        Sun Jul 04 17:54:47 2021 +0200
+++ b/project.py        Fri Aug 06 09:43:58 2021 +0200
@@ -535,54 +535,30 @@
         "Return a invoice line for the lines"
         pool = Pool()
         InvoiceLine = pool.get('account.invoice.line')
-        AccountConfiguration = pool.get('account.configuration')
-        account_config = AccountConfiguration(1)
 
         quantity = sum(l['quantity'] for l in lines)
         product = key['product']
 
-        invoice_line = InvoiceLine()
+        invoice_line = InvoiceLine(invoice=invoice)
+        invoice_line.on_change_invoice()
         invoice_line.type = 'line'
         invoice_line.description = key['description']
-        if product:
-            invoice_line.account = product.account_revenue_used
-            if not invoice_line.account:
+        invoice_line.unit_price = key['unit_price']
+        invoice_line.quantity = quantity
+        invoice_line.unit = key['unit']
+        invoice_line.product = product
+        invoice_line.on_change_product()
+        if not invoice_line.account:
+            if invoice_line.product:
                 raise InvoicingError(
                     gettext(
                         'project_invoice.msg_product_missing_account_revenue',
                         work=self.rec_name,
-                        product=product.rec_name))
-        else:
-            invoice_line.account = account_config.get_multivalue(
-                'default_category_account_revenue', company=invoice.company.id)
-            if not invoice_line.account:
+                        product=invoice_line.product.rec_name))
+            else:
                 raise InvoicingError(
                     gettext('project_invoice.msg_missing_account_revenue',
                         work=self.rec_name))
-        invoice_line.product = product
-        invoice_line.unit_price = key['unit_price']
-        invoice_line.quantity = quantity
-        invoice_line.unit = key['unit']
-        invoice_line.currency = invoice.currency
-        invoice_line.company = invoice.company
-
-        taxes = []
-        pattern = invoice_line._get_tax_rule_pattern()
-        party = invoice.party
-        original_taxes = (
-            product.customer_taxes_used if product else invoice.account.taxes)
-        for tax in original_taxes:
-            if party.customer_tax_rule:
-                tax_ids = party.customer_tax_rule.apply(tax, pattern)
-                if tax_ids:
-                    taxes.extend(tax_ids)
-                continue
-            taxes.append(tax.id)
-        if party.customer_tax_rule:
-            tax_ids = party.customer_tax_rule.apply(None, pattern)
-            if tax_ids:
-                taxes.extend(tax_ids)
-        invoice_line.taxes = taxes
         return invoice_line
 
     def _test_group_invoice(self):

Reply via email to