diff --git a/l10n_br_cnpj_search/tests/test_receitaws.py b/l10n_br_cnpj_search/tests/test_receitaws.py index 2757a82bc3b5..e98584bdd5a3 100644 --- a/l10n_br_cnpj_search/tests/test_receitaws.py +++ b/l10n_br_cnpj_search/tests/test_receitaws.py @@ -53,5 +53,5 @@ def test_receita_ws_multiple_phones(self): isla.search_cnpj() self.assertEqual(isla.name, "Isla Sementes Ltda.") - self.assertEqual(isla.phone, "(51) 9852-9561") - self.assertEqual(isla.mobile, "(51) 2136-6600") + self.assertEqual(isla.phone.strip(), "(51) 9852-9561") + self.assertEqual(isla.mobile.strip(), "(51) 2136-6600") diff --git a/l10n_br_fiscal/constants/fiscal.py b/l10n_br_fiscal/constants/fiscal.py index e936a7371c12..d7d5fe4082f0 100644 --- a/l10n_br_fiscal/constants/fiscal.py +++ b/l10n_br_fiscal/constants/fiscal.py @@ -328,6 +328,7 @@ MODELO_FISCAL_NFE = "55" MODELO_FISCAL_NFCE = "65" MODELO_FISCAL_NFSE = "SE" +MODELO_FISCAL_MDFE = "58" MODELO_FISCAL_CFE = "59" MODELO_FISCAL_CUPOM_FISCAL_ECF = "2D" MODELO_FISCAL_CTE = "57" @@ -354,6 +355,7 @@ LOTE_PROCESSADO = ["104"] LOTE_EM_PROCESSAMENTO = ["105"] CONTINGENCIA = ("108", "109") +ENCERRADO = ["132", "135"] CANCELAMENTO_HOMOLOGADO = ["101", "151"] @@ -377,6 +379,7 @@ SITUACAO_EDOC_CANCELADA = "cancelada" SITUACAO_EDOC_DENEGADA = "denegada" SITUACAO_EDOC_INUTILIZADA = "inutilizada" +SITUACAO_EDOC_ENCERRADA = "encerrada" SITUACAO_EDOC = [ @@ -388,6 +391,7 @@ (SITUACAO_EDOC_CANCELADA, "Cancelada"), (SITUACAO_EDOC_DENEGADA, "Denegada"), (SITUACAO_EDOC_INUTILIZADA, "Inutilizada"), + (SITUACAO_EDOC_ENCERRADA, "Encerrada"), ] SITUACAO_EDOC_DICT = dict(SITUACAO_EDOC) diff --git a/l10n_br_fiscal/data/l10n_br_fiscal.document.type.csv b/l10n_br_fiscal/data/l10n_br_fiscal.document.type.csv index 97630d38ce40..8a49f10d0f29 100644 --- a/l10n_br_fiscal/data/l10n_br_fiscal.document.type.csv +++ b/l10n_br_fiscal/data/l10n_br_fiscal.document.type.csv @@ -23,7 +23,6 @@ "document_22","22","Nota Fiscal de Serviço de Telecomunicação","False",,,"icms" "document_23","23","GNRE","False",,,"icms" "document_24","24","Autorização de Carregamento e Transporte","False",,,"icms" -"document_25","25","Manifesto de Carga","False","MDFe","mdf-e","icms" "document_26","26","Conhecimento de Transporte Multimodal de Cargas","False",,,"icms" "document_27","27","Nota Fiscal de Transporte Ferroviário de Cargas","False",,,"icms" "document_28","28","Nota Fiscal/Conta de Fornecimento de Gás Canalizado","False",,,"icms" @@ -31,6 +30,7 @@ "document_30","30","Bilhete/Recibo do Passageiro","False",,,"icms" "document_55","55","Nota Fiscal Eletrônica","True","NFe","nf-e","icms" "document_57","57","Conhecimento de Transporte Eletrônico – CT-e","True","CTe","ct-e","icms" +"document_58","58","Manifesto Eletrônico de Documentos Fiscais","True","MDFe","mdf-e","icms" "document_59","59","Cupom Fiscal Eletrônico - CF-e","True","CFe","cf-e","icms" "document_60","60","Cupom Fiscal Eletrônico CF-e-ECF","True",,,"icms" "document_65","65","Nota Fiscal Eletrônica ao Consumidor Final – NFC-e","True","NFe","nfc-e","icms" diff --git a/l10n_br_fiscal/demo/company_demo.xml b/l10n_br_fiscal/demo/company_demo.xml index 407e1cdc7053..a38d1a4494b9 100644 --- a/l10n_br_fiscal/demo/company_demo.xml +++ b/l10n_br_fiscal/demo/company_demo.xml @@ -162,6 +162,22 @@ True + + 1 + Série 1 + + + True + + + + 1 + Série 1 + + + True + + 1 Série 1 @@ -194,6 +210,14 @@ True + + 1 + Série 1 + + + True + + ) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class DocumentSupplement(models.Model): + _name = "l10n_br_fiscal.document.supplement" + _description = "Document Supplement Data" + + qrcode = fields.Char(string="QR Code") + + url_key = fields.Char(string="QR Code URL Key") diff --git a/l10n_br_fiscal/models/document_workflow.py b/l10n_br_fiscal/models/document_workflow.py index b06a1e7bdcb1..3e6787ef7cf3 100644 --- a/l10n_br_fiscal/models/document_workflow.py +++ b/l10n_br_fiscal/models/document_workflow.py @@ -9,6 +9,7 @@ from ..constants.fiscal import ( DOCUMENT_ISSUER_COMPANY, MODELO_FISCAL_CTE, + MODELO_FISCAL_MDFE, MODELO_FISCAL_NFCE, MODELO_FISCAL_NFE, MODELO_FISCAL_NFSE, @@ -92,6 +93,7 @@ def _exec_before_SITUACAO_EDOC_A_ENVIAR(self, old_state, new_state): self._document_number() self._document_comment() self._document_check() + self._document_qrcode() self._document_export() return True @@ -251,6 +253,7 @@ def _generate_key(self): MODELO_FISCAL_NFE, MODELO_FISCAL_NFCE, MODELO_FISCAL_CTE, + MODELO_FISCAL_MDFE, ): date = fields.Datetime.context_timestamp(record, record.document_date) chave_edoc = ChaveEdoc( @@ -267,6 +270,9 @@ def _generate_key(self): numero_serie=record.document_serie or "", validar=False, ) + record.key_random_code = chave_edoc.codigo_aleatorio + record.key_check_digit = chave_edoc.digito_verificador + # TODO: Implementar campos no Odoo # record.key_number = chave_edoc.campos # record.key_formated = ' '.joint(chave_edoc.partes()) @@ -397,3 +403,12 @@ def action_document_correction(self): "this fical document you are not the document issuer" ) ) + + def _document_qrcode(self): + pass + + def _processador(self): + pass + + def _valida_xml(self, xml_file): + pass diff --git a/l10n_br_fiscal/views/document_related_view.xml b/l10n_br_fiscal/views/document_related_view.xml index 7227702aae00..29e8bc14bfdd 100644 --- a/l10n_br_fiscal/views/document_related_view.xml +++ b/l10n_br_fiscal/views/document_related_view.xml @@ -68,6 +68,16 @@ attrs="{'invisible': [('document_type_code', '!=', '04')]}" /> + + + + diff --git a/l10n_br_fiscal/views/document_view.xml b/l10n_br_fiscal/views/document_view.xml index fceaacfe3f07..d12d266c80fd 100644 --- a/l10n_br_fiscal/views/document_view.xml +++ b/l10n_br_fiscal/views/document_view.xml @@ -148,7 +148,7 @@ type="object" string="Invalidar Numeração" groups="l10n_br_fiscal.group_user" - attrs="{'invisible': [('state_edoc', 'in', ('em_digitacao', 'autorizada', 'cancelada', 'denegada'))]}" + attrs="{'invisible': [('state_edoc', 'in', ('em_digitacao', 'autorizada', 'cancelada', 'denegada', 'encerrada'))]}" />