Skip to content

Commit

Permalink
[ADD] l10n_br_mdfe: MDFe document tests
Browse files Browse the repository at this point in the history
  • Loading branch information
felipezago committed Oct 5, 2023
1 parent 48dbb58 commit 8920713
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 48 deletions.
50 changes: 18 additions & 32 deletions l10n_br_mdfe/models/document.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,33 +300,39 @@ def _compute_inf_carrega(self):
]

def _inverse_inf_carrega(self):
for record in self.filtered(filtered_processador_edoc_mdfe):
city_id = self.env["res.city"].search(
for record in self:
city_ids = self.env["res.city"].search(
[("ibge_code", "=", record.mdfe30_infMunCarrega.mdfe30_cMunCarrega)]
)
record.mdfe_loading_city_ids = [(4, 0, city_id)]
if city_ids:
record.mdfe_loading_city_ids = [(6, 0, city_ids.ids)]

def _inverse_initial_final_state(self):
for record in self.filtered(filtered_processador_edoc_mdfe):
for record in self:
initial_state_id = self.env["res.country.state"].search(
[("code", "=", record.mdfe30_UFIni)]
[("code", "=", record.mdfe30_UFIni)], limit=1
)
final_state_id = self.env["res.country.state"].search(
[("code", "=", record.mdfe30_UFFim)]
[("code", "=", record.mdfe30_UFFim)], limit=1
)
record.mdfe_initial_state_id = initial_state_id
record.mdfe_final_state_id = final_state_id

if initial_state_id:
record.mdfe_initial_state_id = initial_state_id

if final_state_id:
record.mdfe_final_state_id = final_state_id

def _inverse_uf(self):
for record in self.filtered(filtered_processador_edoc_mdfe):
for record in self:
state_id = self.env["res.country.state"].search(
[("code", "=", record.mdfe30_cUF)]
[("code", "=", record.mdfe30_cUF)], limit=1
)
record.company_id.partner_id.state_id = state_id
if state_id:
record.company_id.partner_id.state_id = state_id

@api.depends("mdfe_route_state_ids")
def _compute_inf_percurso(self):
for record in self.filtered(filtered_processador_edoc_mdfe):
for record in self:
record.mdfe30_infPercurso = [(5, 0, 0)]
record.mdfe30_infPercurso = [
(
Expand Down Expand Up @@ -909,23 +915,3 @@ def _valida_xml(self, xml_file):
erros = Mdfe.schema_validation(xml_file)
erros = "\n".join(erros)
self.write({"xml_error_message": erros or False})

def _document_qrcode(self):
super()._document_qrcode()

for record in self.filtered(filtered_processador_edoc_mdfe):
record.mdfe30_infMDFeSupl = self.env[
"l10n_br_fiscal.document.supplement"
].create({"qrcode": record.get_mdfe_qrcode()})

def get_mdfe_qrcode(self):
if self.document_type != MODELO_FISCAL_MDFE:
return

processador = self._processador()
if self.mdfe_transmission == "1":
return processador.monta_qrcode(self.document_key)

serialized_doc = self.serialize()[0]
xml = processador.assina_raiz(serialized_doc, serialized_doc.infMDFe.Id)
return processador.monta_qrcode_contingencia(serialized_doc, xml)
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,4 @@
<infAdFisco>Documento emitido por: Marc Demo</infAdFisco>
</infAdic>
</infMDFe>
<infMDFeSupl>
<qrCodMDFe
>https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode?chMDFe=35230905472475000102580200000602011208018449&amp;tpAmb=2</qrCodMDFe>
</infMDFeSupl>
</MDFe>
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,4 @@
<infAdFisco>Documento emitido por: Marc Demo</infAdFisco>
</infAdic>
</infMDFe>
<infMDFeSupl>
<qrCodMDFe
>https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode?chMDFe=35230905472475000102580200000602071611554500&amp;tpAmb=2</qrCodMDFe>
</infMDFeSupl>
</MDFe>
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,4 @@
<infAdFisco>Documento emitido por: Marc Demo</infAdFisco>
</infAdic>
</infMDFe>
<infMDFeSupl>
<qrCodMDFe
>https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode?chMDFe=35230905472475000102580200000602081550195716&amp;tpAmb=2</qrCodMDFe>
</infMDFeSupl>
</MDFe>
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,4 @@
<infAdFisco>Documento emitido por: Marc Demo</infAdFisco>
</infAdic>
</infMDFe>
<infMDFeSupl>
<qrCodMDFe
>https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode?chMDFe=35231005472475000102580200000602161434590525&amp;tpAmb=2</qrCodMDFe>
</infMDFeSupl>
</MDFe>
86 changes: 86 additions & 0 deletions l10n_br_mdfe/tests/test_mdfe_document.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# @ 2020 KMEE INFORMATICA LTDA - www.kmee.com.br -
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from datetime import datetime

from nfelib.nfe.ws.edoc_legacy import MDFeAdapter

from odoo.exceptions import UserError
from odoo.tests import SavepointCase


class MDFeDocumentTest(SavepointCase):
@classmethod
def setUpClass(cls):
super().setUpClass()

FiscalDocument = cls.env["l10n_br_fiscal.document"]

cls.acre_state = cls.env.ref("base.state_br_ac")
cls.mdfe_document_type_id = cls.env.ref("l10n_br_fiscal.document_58")
cls.sn_company_id = cls.env.ref("l10n_br_base.empresa_simples_nacional")
cls.sn_company_id.processador_edoc = "erpbrasil.edoc"
cls.mdfe_id = FiscalDocument.create(
{
"document_type_id": cls.mdfe_document_type_id.id,
"company_id": cls.sn_company_id.id,
"document_number": "70000",
"document_serie": "30",
"document_data": datetime.now(),
}
)

def test_mdfe_compute_fields(self):
self.mdfe_id.fiscal_additional_data = "TEST FISCAL ADDITIONAL DATA"
self.mdfe_id.customer_additional_data = "TEST CUSTOMER ADDITIONAL DATA"

self.assertTrue(self.mdfe_id.mdfe30_infAdFisco)
self.assertTrue(self.mdfe_id.mdfe30_infCpl)

def test_mdfe_inverse_fields(self):
self.mdfe_id.mdfe30_UFIni = self.acre_state.code
self.mdfe_id.mdfe30_UFFim = self.acre_state.code
self.assertEqual(self.mdfe_id.mdfe_initial_state_id, self.acre_state)
self.assertEqual(self.mdfe_id.mdfe_final_state_id, self.acre_state)

self.mdfe_id.mdfe30_UF = self.acre_state.ibge_code
self.assertEqual(self.mdfe_id.company_id.partner_id.state_id, self.acre_state)

self.mdfe_id.mdfe30_infMunCarrega = [
(
0,
0,
{
"mdfe30_cMunCarrega": "1200013",
"mdfe30_xMunCarrega": "Acrelândia",
},
)
]
self.assertIn(
self.env.ref("l10n_br_base.city_1200013"),
self.mdfe_id.mdfe_loading_city_ids,
)

def test_mdfe_processor(self):
processor = self.mdfe_id._processador()
self.assertTrue(isinstance(processor, MDFeAdapter))

self.mdfe_id.document_type_id = False
processor = self.mdfe_id._processador()
self.assertFalse(isinstance(processor, MDFeAdapter))

self.mdfe_id.document_type_id = self.mdfe_document_type_id

self.mdfe_id.company_id.certificate_nfe_id = False
processor = self.mdfe_id._processador()
self.assertTrue(isinstance(processor, MDFeAdapter))

self.mdfe_id.company_id.certificate_ecnpj_id = False
with self.assertRaises(UserError):
processor = self.mdfe_id._processador()

def test_generate_key(self):
self.mdfe_id._generate_key()
self.assertTrue(self.mdfe_id.document_key)
self.assertTrue(self.mdfe_id.key_random_code)
self.assertTrue(self.mdfe_id.key_check_digit)

0 comments on commit 8920713

Please sign in to comment.