Skip to content

Commit

Permalink
REF encode_for_export function moved to l10n_it_account
Browse files Browse the repository at this point in the history
  • Loading branch information
eLBati committed Nov 18, 2019
1 parent 3f8b099 commit f27ec0a
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 56 deletions.
1 change: 1 addition & 0 deletions l10n_it_account/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import models
from . import tools
from odoo import api, SUPERUSER_ID


Expand Down
1 change: 1 addition & 0 deletions l10n_it_account/tools/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import account_tools
9 changes: 9 additions & 0 deletions l10n_it_account/tools/account_tools.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import re

# compiled reg expression for whitespace characters substitution
reg_whitespace = re.compile(r'\s+')


def encode_for_export(string_to_encode, max_chars, encoding='latin'):
return reg_whitespace.sub(' ', string_to_encode).encode(
encoding, errors='replace').decode(encoding)[:max_chars]
2 changes: 1 addition & 1 deletion l10n_it_invoices_data_communication/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
'depends': [
'account', 'l10n_it_fiscal_document_type', 'l10n_it_codici_carica',
'l10n_it_fiscalcode', 'l10n_it_esigibilita_iva',
'l10n_it_account_tax_kind',
'l10n_it_account_tax_kind', 'l10n_it_account',
'intrastat_base'
],
'data': [
Expand Down
105 changes: 50 additions & 55 deletions l10n_it_invoices_data_communication/models/communication.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
from odoo.addons.l10n_it_account.tools.account_tools import encode_for_export
from lxml import etree
import re

Expand Down Expand Up @@ -41,21 +42,12 @@ def check_normalized_string(value):
return normalized


# compiled reg expression for whitespace characters substitution
reg_whitespace = re.compile(r'\s+')


class ComunicazioneDatiIva(models.Model):
_name = 'comunicazione.dati.iva'
_description = 'Invoices data communication'
_rec_name = 'identificativo'
_inherit = ['mail.thread']

@staticmethod
def encode(string_to_encode, max_chars, encoding='latin'):
return reg_whitespace.sub(' ', string_to_encode).encode(
encoding, errors='replace').decode(encoding)[:max_chars]

@api.model
def _default_company(self):
company_id = self._context.get(
Expand Down Expand Up @@ -248,13 +240,14 @@ def _prepare_cedente_partner_id(self, partner, vals=None):
# ----- Get fiscalcode
vals['cedente_CodiceFiscale'] = \
partner.commercial_partner_id.fiscalcode or ''
vals['cedente_Denominazione'] = self.encode(partner.name, 80)
vals['cedente_Denominazione'] = encode_for_export(partner.name, 80)
# Sede
vals['cedente_sede_Indirizzo'] = '{} {}'.format(
self.encode(partner.street or '', 60),
self.encode(partner.street2 or '', 60)).strip()
vals['cedente_sede_Cap'] = self.encode(partner.zip or '', 5, encoding='ascii')
vals['cedente_sede_Comune'] = self.encode(partner.city or '', 60)
encode_for_export(partner.street or '', 60),
encode_for_export(partner.street2 or '', 60)).strip()
vals['cedente_sede_Cap'] = encode_for_export(
partner.zip or '', 5, encoding='ascii')
vals['cedente_sede_Comune'] = encode_for_export(partner.city or '', 60)
vals['cedente_sede_Provincia'] = partner.state_id and \
partner.state_id.code or ''
if partner.country_id:
Expand Down Expand Up @@ -322,14 +315,14 @@ def _prepare_cessionario_partner_id(self, partner, vals=None):
# ----- Get fiscalcode
vals['cessionario_CodiceFiscale'] = \
partner.commercial_partner_id.fiscalcode or ''
vals['cessionario_Denominazione'] = self.encode(partner.name or '', 80)
vals['cessionario_Denominazione'] = encode_for_export(partner.name or '', 80)
# Sede
vals['cessionario_sede_Indirizzo'] = '{} {}'.format(
self.encode(partner.street or '', 60),
self.encode(partner.street2 or '', 60)).strip()
encode_for_export(partner.street or '', 60),
encode_for_export(partner.street2 or '', 60)).strip()
vals['cessionario_sede_Cap'] = \
self.encode(partner.zip or '', 5, encoding='ascii')
vals['cessionario_sede_Comune'] = self.encode(partner.city or '', 60)
encode_for_export(partner.zip or '', 5, encoding='ascii')
vals['cessionario_sede_Comune'] = encode_for_export(partner.city or '', 60)
vals['cessionario_sede_Provincia'] = partner.state_id and \
partner.state_id.code or ''
if partner.country_id:
Expand Down Expand Up @@ -1387,19 +1380,19 @@ def _export_xml_get_dte(self):
x_2_2_2_altri_identificativi,
etree.QName("Denominazione"))
x_2_2_2_1_altri_identificativi_denominazione.text = \
self.encode(partner_invoice.cessionario_Denominazione or '', 80)
encode_for_export(partner_invoice.cessionario_Denominazione or '', 80)
# ----- 2.2.2.2 - Nome
x_2_2_2_2_nome = etree.SubElement(
x_2_2_2_altri_identificativi,
etree.QName("Nome"))
x_2_2_2_2_nome.text = \
self.encode(partner_invoice.cessionario_Nome or '', 60)
encode_for_export(partner_invoice.cessionario_Nome or '', 60)
# ----- 2.2.2.3 - Cognome
x_2_2_2_3_cognome = etree.SubElement(
x_2_2_2_altri_identificativi,
etree.QName("Cognome"))
x_2_2_2_3_cognome.text = \
self.encode(partner_invoice.cessionario_Cognome or '', 60)
encode_for_export(partner_invoice.cessionario_Cognome or '', 60)
# ----- 2.2.2.4 - Sede
x_2_2_2_4_sede = etree.SubElement(
x_2_2_2_altri_identificativi,
Expand All @@ -1409,27 +1402,28 @@ def _export_xml_get_dte(self):
x_2_2_2_4_sede,
etree.QName("Indirizzo"))
x_2_2_2_4_1_indirizzo.text = \
self.encode(partner_invoice.cessionario_sede_Indirizzo or '', 60)
encode_for_export(partner_invoice.cessionario_sede_Indirizzo or '', 60)
# ----- 2.2.2.4.2 - Numero Civico
x_2_2_2_4_2_numero_civico = etree.SubElement(
x_2_2_2_4_sede,
etree.QName("NumeroCivico"))
x_2_2_2_4_2_numero_civico.text = \
self.encode(partner_invoice.cessionario_sede_NumeroCivico or '', 8,
encoding='ascii')
encode_for_export(
partner_invoice.cessionario_sede_NumeroCivico or '', 8,
encoding='ascii')
# ----- 2.2.2.4.3 - CAP
x_2_2_2_4_3_cap = etree.SubElement(
x_2_2_2_4_sede,
etree.QName("CAP"))
x_2_2_2_4_3_cap.text = \
self.encode(partner_invoice.cessionario_sede_Cap or '', 5,
encoding='ascii')
encode_for_export(partner_invoice.cessionario_sede_Cap or '', 5,
encoding='ascii')
# ----- 2.2.2.4.4 - Comune
x_2_2_2_4_4_comune = etree.SubElement(
x_2_2_2_4_sede,
etree.QName("Comune"))
x_2_2_2_4_4_comune.text = \
self.encode(partner_invoice.cessionario_sede_Comune or '', 60)
encode_for_export(partner_invoice.cessionario_sede_Comune or '', 60)
# ----- 2.2.2.4.5 - Provincia
x_2_2_2_4_5_provincia = etree.SubElement(
x_2_2_2_4_sede,
Expand All @@ -1451,27 +1445,27 @@ def _export_xml_get_dte(self):
x_2_2_2_5_stabile_organizzazione,
etree.QName("Indirizzo"))
x_2_2_2_5_1_indirizzo.text = \
self.encode(partner_invoice.cessionario_so_Indirizzo or '', 60)
encode_for_export(partner_invoice.cessionario_so_Indirizzo or '', 60)
# ----- 2.2.2.5.2 - Numero Civico
x_2_2_2_5_2_numero_civico = etree.SubElement(
x_2_2_2_5_stabile_organizzazione,
etree.QName("NumeroCivico"))
x_2_2_2_5_2_numero_civico.text = \
self.encode(partner_invoice.cessionario_so_NumeroCivico or '', 8,
encoding='ascii')
encode_for_export(partner_invoice.cessionario_so_NumeroCivico or '', 8,
encoding='ascii')
# ----- 2.2.2.5.3 - CAP
x_2_2_2_5_3_cap = etree.SubElement(
x_2_2_2_5_stabile_organizzazione,
etree.QName("CAP"))
x_2_2_2_5_3_cap.text = \
self.encode(partner_invoice.cessionario_so_Cap or '', 5,
encoding='ascii')
encode_for_export(partner_invoice.cessionario_so_Cap or '', 5,
encoding='ascii')
# ----- 2.2.2.5.4 - Comune
x_2_2_2_5_4_comune = etree.SubElement(
x_2_2_2_5_stabile_organizzazione,
etree.QName("Comune"))
x_2_2_2_5_4_comune.text = \
self.encode(partner_invoice.cessionario_so_Comune or '', 60)
encode_for_export(partner_invoice.cessionario_so_Comune or '', 60)
# ----- 2.2.2.5.5 - Provincia
x_2_2_2_5_5_provincia = etree.SubElement(
x_2_2_2_5_stabile_organizzazione,
Expand Down Expand Up @@ -1511,19 +1505,20 @@ def _export_xml_get_dte(self):
x_2_2_2_6_rappresentante_fiscale,
etree.QName("Denominazione"))
x_2_2_2_6_2_denominazione.text = \
self.encode(partner_invoice.cessionario_rf_Denominazione or '', 80)
encode_for_export(
partner_invoice.cessionario_rf_Denominazione or '', 80)
# ----- 2.2.2.6.3 - Nome
x_2_2_2_6_3_nome = etree.SubElement(
x_2_2_2_6_rappresentante_fiscale,
etree.QName("Nome"))
x_2_2_2_6_3_nome.text = \
self.encode(partner_invoice.cessionario_rf_Nome or '', 60)
encode_for_export(partner_invoice.cessionario_rf_Nome or '', 60)
# ----- 2.2.2.6.4 - Cognome
x_2_2_2_6_4_cognome = etree.SubElement(
x_2_2_2_6_rappresentante_fiscale,
etree.QName("Cognome"))
x_2_2_2_6_4_cognome.text = \
self.encode(partner_invoice.cessionario_rf_Cognome or '', 60)
encode_for_export(partner_invoice.cessionario_rf_Cognome or '', 60)

for invoice in partner_invoice.fatture_emesse_body_ids:
# ----- 2.2.3 - Dati Fattura Body DTE
Expand Down Expand Up @@ -1801,19 +1796,19 @@ def _export_xml_get_dtr(self):
x_3_2_2_altri_identificativi,
etree.QName("Denominazione"))
x_3_2_2_1_altri_identificativi_denominazione.text = \
self.encode(partner_invoice.cedente_Denominazione or '', 80)
encode_for_export(partner_invoice.cedente_Denominazione or '', 80)
# ----- 2.2.2.2 - Nome
x_3_2_2_2_nome = etree.SubElement(
x_3_2_2_altri_identificativi,
etree.QName("Nome"))
x_3_2_2_2_nome.text = \
self.encode(partner_invoice.cedente_Nome or '', 60)
encode_for_export(partner_invoice.cedente_Nome or '', 60)
# ----- 2.2.2.3 - Cognome
x_3_2_2_3_cognome = etree.SubElement(
x_3_2_2_altri_identificativi,
etree.QName("Cognome"))
x_3_2_2_3_cognome.text = \
self.encode(partner_invoice.cedente_Cognome or '', 60)
encode_for_export(partner_invoice.cedente_Cognome or '', 60)
# ----- 2.2.2.4 - Sede
x_3_2_2_4_sede = etree.SubElement(
x_3_2_2_altri_identificativi,
Expand All @@ -1823,27 +1818,27 @@ def _export_xml_get_dtr(self):
x_3_2_2_4_sede,
etree.QName("Indirizzo"))
x_3_2_2_4_1_indirizzo.text = \
self.encode(partner_invoice.cedente_sede_Indirizzo or '', 60)
encode_for_export(partner_invoice.cedente_sede_Indirizzo or '', 60)
# ----- 2.2.2.4.2 - Numero Civico
x_3_2_2_4_2_numero_civico = etree.SubElement(
x_3_2_2_4_sede,
etree.QName("NumeroCivico"))
x_3_2_2_4_2_numero_civico.text = \
self.encode(partner_invoice.cedente_sede_NumeroCivico or '', 8,
encoding='ascii')
encode_for_export(partner_invoice.cedente_sede_NumeroCivico or '', 8,
encoding='ascii')
# ----- 2.2.2.4.3 - CAP
x_3_2_2_4_3_cap = etree.SubElement(
x_3_2_2_4_sede,
etree.QName("CAP"))
x_3_2_2_4_3_cap.text = \
self.encode(partner_invoice.cedente_sede_Cap or '', 5,
encoding='ascii')
encode_for_export(partner_invoice.cedente_sede_Cap or '', 5,
encoding='ascii')
# ----- 2.2.2.4.4 - Comune
x_3_2_2_4_4_comune = etree.SubElement(
x_3_2_2_4_sede,
etree.QName("Comune"))
x_3_2_2_4_4_comune.text = \
self.encode(partner_invoice.cedente_sede_Comune or '', 60)
encode_for_export(partner_invoice.cedente_sede_Comune or '', 60)
# ----- 2.2.2.4.5 - Provincia
x_3_2_2_4_5_provincia = etree.SubElement(
x_3_2_2_4_sede,
Expand All @@ -1865,27 +1860,27 @@ def _export_xml_get_dtr(self):
x_3_2_2_5_stabile_organizzazione,
etree.QName("Indirizzo"))
x_3_2_2_5_1_indirizzo.text = \
self.encode(partner_invoice.cedente_so_Indirizzo or '', 60)
encode_for_export(partner_invoice.cedente_so_Indirizzo or '', 60)
# ----- 2.2.2.5.2 - Numero Civico
x_3_2_2_5_2_numero_civico = etree.SubElement(
x_3_2_2_5_stabile_organizzazione,
etree.QName("NumeroCivico"))
x_3_2_2_5_2_numero_civico.text = \
self.encode(partner_invoice.cedente_so_NumeroCivico or '', 8,
encoding='ascii')
encode_for_export(partner_invoice.cedente_so_NumeroCivico or '', 8,
encoding='ascii')
# ----- 2.2.2.5.3 - CAP
x_3_2_2_5_3_cap = etree.SubElement(
x_3_2_2_5_stabile_organizzazione,
etree.QName("CAP"))
x_3_2_2_5_3_cap.text = \
self.encode(partner_invoice.cedente_so_Cap or '', 5,
encoding='ascii')
encode_for_export(partner_invoice.cedente_so_Cap or '', 5,
encoding='ascii')
# ----- 2.2.2.5.4 - Comune
x_3_2_2_5_4_comune = etree.SubElement(
x_3_2_2_5_stabile_organizzazione,
etree.QName("Comune"))
x_3_2_2_5_4_comune.text = \
self.encode(partner_invoice.cedente_so_Comune or '', 60)
encode_for_export(partner_invoice.cedente_so_Comune or '', 60)
# ----- 2.2.2.5.5 - Provincia
x_3_2_2_5_5_provincia = etree.SubElement(
x_3_2_2_5_stabile_organizzazione,
Expand Down Expand Up @@ -1925,19 +1920,19 @@ def _export_xml_get_dtr(self):
x_3_2_2_6_rappresentante_fiscale,
etree.QName("Denominazione"))
x_3_2_2_6_2_denominazione.text = \
self.encode(partner_invoice.cedente_rf_Denominazione or '', 80)
encode_for_export(partner_invoice.cedente_rf_Denominazione or '', 80)
# ----- 2.2.2.6.3 - Nome
x_3_2_2_6_3_nome = etree.SubElement(
x_3_2_2_6_rappresentante_fiscale,
etree.QName("Nome"))
x_3_2_2_6_3_nome.text = \
self.encode(partner_invoice.cedente_rf_Nome or '', 60)
encode_for_export(partner_invoice.cedente_rf_Nome or '', 60)
# ----- 2.2.2.6.4 - Cognome
x_3_2_2_6_4_cognome = etree.SubElement(
x_3_2_2_6_rappresentante_fiscale,
etree.QName("Cognome"))
x_3_2_2_6_4_cognome.text = \
self.encode(partner_invoice.cedente_rf_Cognome or '', 60)
encode_for_export(partner_invoice.cedente_rf_Cognome or '', 60)

for invoice in partner_invoice.fatture_ricevute_body_ids:
# ----- 2.2.3 - Dati Fattura Body DTE
Expand Down

0 comments on commit f27ec0a

Please sign in to comment.