diff options
| author | fw-bot <otis@odoo.com> | 2021-03-07 20:41:49 +0000 |
|---|---|---|
| committer | Daniel Blanco <daniel@blancomartin.cl> | 2021-03-09 19:27:50 +0000 |
| commit | 8ca3ea063050f2ab2d19cce8a68116489872a734 (patch) | |
| tree | 9f2f432cf0a38487dfd75e1bf6981084c250c991 | |
| parent | 623d5f0143e1c368a06ca52c4f015f682dca643b (diff) | |
[FIX] l10n_cl: return a different domain in available document types
when the partner is Tesoreria de la República, and exclude the credit note.
closes odoo/odoo#67569
Signed-off-by: Josse Colpaert <jco@openerp.com>
| -rw-r--r-- | addons/l10n_cl/models/account_move.py | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/addons/l10n_cl/models/account_move.py b/addons/l10n_cl/models/account_move.py index 38c9df35bf6..1227af0116b 100644 --- a/addons/l10n_cl/models/account_move.py +++ b/addons/l10n_cl/models/account_move.py @@ -17,33 +17,33 @@ class AccountMove(models.Model): def _get_l10n_latam_documents_domain(self): self.ensure_one() - domain = super()._get_l10n_latam_documents_domain() - if self.journal_id.l10n_latam_use_documents and self.journal_id.company_id.country_id.code == "CL": - if self.journal_id.type == 'sale': - domain = [('country_id.code', '=', "CL"), ('internal_type', '!=', 'invoice_in')] - if self.company_id.partner_id.l10n_cl_sii_taxpayer_type == '1': - domain += [('code', '!=', '71')] # Companies with VAT Affected doesn't have "Boleta de honorarios Electrónica" - document_type_ids = self.env['l10n_latam.document.type'].search(domain).ids - else: - partner_domain = [ - ('country_id.code', '=', 'CL'), - ('internal_type', 'in', ['invoice', 'debit_note', 'credit_note', 'invoice_in'])] - if not self.partner_id: - pass - elif self.partner_id.l10n_cl_sii_taxpayer_type == '1' and self.partner_id_vat != SII_VAT: - partner_domain += [('code', 'not in', ['39', '70', '71', '914', '911'])] - elif self.partner_id.l10n_cl_sii_taxpayer_type == '1' and self.partner_id_vat == SII_VAT: - partner_domain += [('code', 'not in', ['39', '70', '71'])] - elif self.partner_id.l10n_cl_sii_taxpayer_type == '2': - partner_domain += [('code', 'in', ['70', '71', '56', '61'])] - elif self.partner_id.l10n_cl_sii_taxpayer_type == '3': - partner_domain += [('code', 'in', ['35', '38', '39', '41', '56', '61'])] - elif not self.partner_id.l10n_cl_sii_taxpayer_type or self.partner_id.country_id.code != "CL" or self.partner_id.l10n_cl_sii_taxpayer_type == '4': - partner_domain += [('code', 'in', [])] - document_type_ids = self.env['l10n_latam.document.type'].search(partner_domain).ids - domain = expression.AND([domain, [('id', 'in', document_type_ids)]]) + if self.journal_id.company_id.country_id != self.env.ref('base.cl') or not \ + self.journal_id.l10n_latam_use_documents: + return super()._get_l10n_latam_documents_domain() + if self.journal_id.type == 'sale': + domain = [('country_id.code', '=', "CL"), ('internal_type', '!=', 'invoice_in')] + if self.company_id.partner_id.l10n_cl_sii_taxpayer_type == '1': + domain += [('code', '!=', '71')] # Companies with VAT Affected doesn't have "Boleta de honorarios Electrónica" + return domain + domain = [ + ('country_id.code', '=', 'CL'), + ('internal_type', 'in', ['invoice', 'debit_note', 'credit_note', 'invoice_in'])] + if self.partner_id.l10n_cl_sii_taxpayer_type == '1' and self.partner_id_vat != '60805000-0': + domain += [('code', 'not in', ['39', '70', '71', '914', '911'])] + elif self.partner_id.l10n_cl_sii_taxpayer_type == '1' and self.partner_id_vat == '60805000-0': + domain += [('code', 'not in', ['39', '70', '71'])] + if self.move_type == 'in_invoice': + domain += [('internal_type', '!=', 'credit_note')] + elif self.partner_id.l10n_cl_sii_taxpayer_type == '2': + domain += [('code', 'in', ['70', '71', '56', '61'])] + elif self.partner_id.l10n_cl_sii_taxpayer_type == '3': + domain += [('code', 'in', ['35', '38', '39', '41', '56', '61'])] + elif not self.partner_id.l10n_cl_sii_taxpayer_type or self.partner_id.country_id != self.env.ref( + 'base.cl') or self.partner_id.l10n_cl_sii_taxpayer_type == '4': + domain += [('code', 'in', [])] return domain + def _check_document_types_post(self): for rec in self.filtered( lambda r: r.company_id.country_id.code == "CL" and |
