diff --git a/l10n_br_mdfe/models/document.py b/l10n_br_mdfe/models/document.py
index 8b2e0bf598a7..128a74cdedeb 100644
--- a/l10n_br_mdfe/models/document.py
+++ b/l10n_br_mdfe/models/document.py
@@ -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 = [
(
@@ -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)
diff --git a/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602011208018449.xml b/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602011208018449.xml
index b99281766b94..0d50a14f994a 100644
--- a/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602011208018449.xml
+++ b/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602011208018449.xml
@@ -90,8 +90,4 @@
Documento emitido por: Marc Demo
-
- https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode?chMDFe=35230905472475000102580200000602011208018449&tpAmb=2
-
diff --git a/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602071611554500.xml b/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602071611554500.xml
index 40b8b8792ff0..37ab932ce89b 100644
--- a/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602071611554500.xml
+++ b/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602071611554500.xml
@@ -124,8 +124,4 @@
Documento emitido por: Marc Demo
-
- https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode?chMDFe=35230905472475000102580200000602071611554500&tpAmb=2
-
diff --git a/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602081550195716.xml b/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602081550195716.xml
index f83aece78ffc..2f8deff23023 100644
--- a/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602081550195716.xml
+++ b/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35230905472475000102580200000602081550195716.xml
@@ -70,8 +70,4 @@
Documento emitido por: Marc Demo
-
- https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode?chMDFe=35230905472475000102580200000602081550195716&tpAmb=2
-
diff --git a/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35231005472475000102580200000602161434590525.xml b/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35231005472475000102580200000602161434590525.xml
index 7329c3f0f615..153e0b91e266 100644
--- a/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35231005472475000102580200000602161434590525.xml
+++ b/l10n_br_mdfe/tests/mdfe/v3_00/leiauteMDFe/MDFe35231005472475000102580200000602161434590525.xml
@@ -87,8 +87,4 @@
Documento emitido por: Marc Demo
-
- https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode?chMDFe=35231005472475000102580200000602161434590525&tpAmb=2
-
diff --git a/l10n_br_mdfe/tests/test_mdfe_document.py b/l10n_br_mdfe/tests/test_mdfe_document.py
new file mode 100644
index 000000000000..417bb73052f7
--- /dev/null
+++ b/l10n_br_mdfe/tests/test_mdfe_document.py
@@ -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)