Skip to content
Snippets Groups Projects
Commit 8bfca583 authored by arsi's avatar arsi
Browse files

[FIX] account_taxcloud: change display_type filter


Traceback when computing taxes using TaxCloud.

Steps to reproduce:
-Activate TaxCloud in accounting settings, with valids "API ID" and
 "API KEY".
-Create an invoice for a USA customer with an invoice line and
 "Fiscal Position" set to "Automatic Tax Mapping (TaxCloud)" (in the
 "Other Info" tab).
-Confirm
-->Traceback

Traceback:
File
"/src/enterprise/16.0/account_taxcloud/models/taxcloud_request.py",
line 136, in get_all_taxes_values
for item in response.CartItemsResponse.CartItemResponse:
AttributeError: 'NoneType' object has no attribute 'CartItemResponse

Explanation:
-There's a traceback when CartItem is empty (like if there are no move
 lines).
-It is empty because of the filter in the function
 '_process_lines(self, lines)'.
 --> 'lines.filtered(lambda l: not l.display_type)'.
-The goal is to take only move lines that are not Notes or Sections.
-This worked in v15 because display_type was defined as:

    display_type = fields.Selection([
            ('line_section', 'Section'),
            ('line_note', 'Note'),
        ], default=False, help="Technical field for UX purpose.")

-But now in v16 it is defined as:

    display_type = fields.Selection(
            selection=[
                ('product', 'Product'),
                ('cogs', 'Cost of Goods Sold'),
                ('tax', 'Tax'),
                ('rounding', "Rounding"),
                ('payment_term', 'Payment Term'),
                ('line_section', 'Section'),
                ('line_note', 'Note'),
                ('epd', 'Early Payment Discount'),
            ],
            compute='_compute_display_type', store=True, readonly=False,
            precompute=True, required=True,
        )

-The display_type=False does not corresponds anymore to move lines
 that are not Sections or Notes, but it corresponds to no move lines at
 all.

The fix:
 Will filter move lines that are not of type 'line_section' or
 'line_note'.

Discussion:
 Do I fix the traceback that we get when there a no move lines?  This
 'issue' is present since at least v14 and it seems like nobody ever
 complained.

+:
 I've applied the similar change to some lines in the code that also
 check if 'display_type' is False for some 'account.move.line' records.

++:
 The fix revealed an other issue in the function
  '_inter_company_create_invoices' of the file
  enterprise/account_inter_company_rules/models/account_move.py:
  There's a call on a function that doesn't exist anymore
  'line._set_price_and_tax_after_fpos()'.  I've deleted the line.

opw-3064174

closes odoo/odoo#106353

Related: odoo/enterprise#34289
Signed-off-by: default avatarWilliam André (wan) <wan@odoo.com>
parent 490d4804
No related branches found
No related tags found
No related merge requests found
......@@ -178,7 +178,7 @@ class AccountMove(models.Model):
eTax['REFERENSI'] = number_ref
eTax['KODE_DOKUMEN_PENDUKUNG'] = '0'
lines = move.line_ids.filtered(lambda x: x.move_id._is_downpayment() and x.price_unit < 0 and not x.display_type)
lines = move.line_ids.filtered(lambda x: x.move_id._is_downpayment() and x.price_unit < 0 and x.display_type == 'product')
eTax['FG_UANG_MUKA'] = 0
eTax['UANG_MUKA_DPP'] = int(abs(sum(lines.mapped(lambda l: float_round(l.price_subtotal, 0)))))
eTax['UANG_MUKA_PPN'] = int(abs(sum(lines.mapped(lambda l: float_round(l.price_total - l.price_subtotal, 0)))))
......
......@@ -55,7 +55,7 @@ class Generate2307Wizard(models.TransientModel):
'last_name': partner.last_name or '',
'address': ', '.join([val for val in partner_address_info if val])
}
for invoice_line in move.invoice_line_ids.filtered(lambda l: not l.display_type):
for invoice_line in move.invoice_line_ids.filtered(lambda l: l.display_type not in ('line_note', 'line_section')):
for tax in invoice_line.tax_ids.filtered(lambda x: x.l10n_ph_atc):
values['product_name'] = re.sub(r'[\(\)]', '', invoice_line.product_id.name)
values['atc'] = tax.l10n_ph_atc
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment