diff --git a/l10n_br_account/security/ir.model.access.csv b/l10n_br_account/security/ir.model.access.csv index e0f835d8d22a..e577ec7f86d7 100644 --- a/l10n_br_account/security/ir.model.access.csv +++ b/l10n_br_account/security/ir.model.access.csv @@ -1,5 +1,4 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"l10n_br_account_certificate_user","Fiscal Certificate for Account User","l10n_br_fiscal.model_l10n_br_fiscal_certificate","account.group_account_invoice",1,0,0,0 "l10n_br_account_document_serie_user","Fiscal Document Serie for Account User","l10n_br_fiscal.model_l10n_br_fiscal_document_serie","account.group_account_invoice",1,0,0,0 "l10n_br_account_document_type_user","Fiscal Document Type for Account User","l10n_br_fiscal.model_l10n_br_fiscal_document_type","account.group_account_invoice",1,0,0,0 "l10n_br_account_document_user","Fiscal Document for Account User","l10n_br_fiscal.model_l10n_br_fiscal_document","account.group_account_invoice",1,1,0,0 diff --git a/l10n_br_fiscal/__manifest__.py b/l10n_br_fiscal/__manifest__.py index 1117d0f64191..4ba8021c43ac 100644 --- a/l10n_br_fiscal/__manifest__.py +++ b/l10n_br_fiscal/__manifest__.py @@ -10,7 +10,7 @@ "maintainers": ["renatonlima"], "website": "https://github.com/OCA/l10n-brazil", "development_status": "Production/Stable", - "version": "14.0.14.2.1", + "version": "14.0.15.0.0", "depends": [ "product", "l10n_br_base", @@ -62,7 +62,6 @@ "views/document_type_view.xml", "views/document_serie_view.xml", "views/document_email_view.xml", - "views/certificate_view.xml", "views/simplified_tax_view.xml", "views/simplified_tax_range_view.xml", "views/operation_view.xml", @@ -107,9 +106,4 @@ "installable": True, "application": True, "auto_install": False, - "external_dependencies": { - "python": [ - "erpbrasil.assinatura", - ] - }, } diff --git a/l10n_br_fiscal/hooks.py b/l10n_br_fiscal/hooks.py index 574d1e6ca109..0d145e63c957 100644 --- a/l10n_br_fiscal/hooks.py +++ b/l10n_br_fiscal/hooks.py @@ -1,14 +1,10 @@ # Copyright (C) 2019 - Renato Lima Akretion -# Copyright (C) 2021 - Luis Felipe Mileo - KMEE # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html import logging from odoo import SUPERUSER_ID, _, api, tools -from .constants.fiscal import CERTIFICATE_TYPE_ECNPJ -from .tools import misc - _logger = logging.getLogger(__name__) @@ -98,15 +94,6 @@ def post_init_hook(cr, registry): env.ref("l10n_br_base.empresa_simples_nacional", raise_if_not_found=False), ] - for company in companies: - l10n_br_fiscal_certificate_id = env["l10n_br_fiscal.certificate"] - company.certificate_nfe_id = l10n_br_fiscal_certificate_id.create( - misc.prepare_fake_certificate_vals() - ) - company.certificate_ecnpj_id = l10n_br_fiscal_certificate_id.create( - misc.prepare_fake_certificate_vals(cert_type=CERTIFICATE_TYPE_ECNPJ) - ) - if not is_demo: prodfiles = [] # Load full CSV files with few lines unless a flag diff --git a/l10n_br_fiscal/migrations/14.0.15.0.0/pre-migration.py b/l10n_br_fiscal/migrations/14.0.15.0.0/pre-migration.py new file mode 100644 index 000000000000..0c9230f8e00b --- /dev/null +++ b/l10n_br_fiscal/migrations/14.0.15.0.0/pre-migration.py @@ -0,0 +1,22 @@ +# Copyright 2023 - TODAY Akretion - Raphael Valyi +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade + +to_install = "'l10n_br_fiscal_certificate'" + + +def install_new_modules(cr): + sql = """ + UPDATE ir_module_module + SET state='to install' + WHERE name = {} AND state='uninstalled' + """.format( + to_install, + ) + openupgrade.logged_query(cr, sql) + + +@openupgrade.migrate() +def migrate(env, version): + install_new_modules(env.cr) diff --git a/l10n_br_fiscal/models/__init__.py b/l10n_br_fiscal/models/__init__.py index a7f2b0caa037..e01ff0966a19 100644 --- a/l10n_br_fiscal/models/__init__.py +++ b/l10n_br_fiscal/models/__init__.py @@ -45,7 +45,6 @@ from . import document_type from . import document_serie from . import product_genre -from . import certificate from . import product_mixin from . import product_template from . import product_product diff --git a/l10n_br_fiscal/models/res_company.py b/l10n_br_fiscal/models/res_company.py index 6db49e2c90d2..90898339312a 100644 --- a/l10n_br_fiscal/models/res_company.py +++ b/l10n_br_fiscal/models/res_company.py @@ -245,18 +245,6 @@ def _compute_simplified_tax(self): ibpt_update_days = fields.Integer(string="IBPT Token Updates", default=15) - certificate_ecnpj_id = fields.Many2one( - comodel_name="l10n_br_fiscal.certificate", - string="E-CNPJ", - domain="[('type', '=', 'e-cnpj')]", - ) - - certificate_nfe_id = fields.Many2one( - comodel_name="l10n_br_fiscal.certificate", - string="NFe", - domain="[('type', '=', 'nf-e')]", - ) - accountant_id = fields.Many2one(comodel_name="res.partner", string="Accountant") accounting_office = fields.Many2one( diff --git a/l10n_br_fiscal/models/res_config_settings.py b/l10n_br_fiscal/models/res_config_settings.py index 29f71942987c..7702e35dc994 100644 --- a/l10n_br_fiscal/models/res_config_settings.py +++ b/l10n_br_fiscal/models/res_config_settings.py @@ -26,13 +26,6 @@ class ResConfigSettings(models.TransientModel): readonly=False, ) - cert_expired_alert = fields.Integer( - string="Certificate Expired Alert", - config_parameter="l10n_br_fiscal_cert_expired_alert", - required=True, - default=30, - ) - document_type_id = fields.Many2one( comodel_name="l10n_br_fiscal.document.type", related="company_id.document_type_id", diff --git a/l10n_br_fiscal/security/ir.model.access.csv b/l10n_br_fiscal/security/ir.model.access.csv index e2757505185f..8d51bd2c35ac 100644 --- a/l10n_br_fiscal/security/ir.model.access.csv +++ b/l10n_br_fiscal/security/ir.model.access.csv @@ -43,8 +43,6 @@ "l10n_br_fiscal_document_email_manager","Fiscal Document Email for Manager","model_l10n_br_fiscal_document_email","l10n_br_fiscal.group_manager",1,1,1,1 "l10n_br_fiscal_document_serie_user","Fiscal Document Serie for User","model_l10n_br_fiscal_document_serie","l10n_br_fiscal.group_user",1,0,0,0 "l10n_br_fiscal_document_serie_manager","Fiscal Document Serie for Manager","model_l10n_br_fiscal_document_serie","l10n_br_fiscal.group_manager",1,1,1,1 -"l10n_br_fiscal_certificate_user","Fiscal Certificate for User","model_l10n_br_fiscal_certificate","l10n_br_fiscal.group_user",1,0,0,0 -"l10n_br_fiscal_certificate_manager","Fiscal Certificate for Manager","model_l10n_br_fiscal_certificate","l10n_br_fiscal.group_manager",1,1,1,1 "l10n_br_fiscal_simplified_tax_user","Fiscal Simplified Tax for User","model_l10n_br_fiscal_simplified_tax","l10n_br_fiscal.group_user",1,0,0,0 "l10n_br_fiscal_simplified_tax_manager","Fiscal Simplified Tax for Manager","model_l10n_br_fiscal_simplified_tax","l10n_br_fiscal.group_manager",1,0,0,0 "l10n_br_fiscal_simplified_tax_maintenance","Fiscal Simplified Tax for Maintenance","model_l10n_br_fiscal_simplified_tax","l10n_br_fiscal.group_data_maintenance",1,1,1,1 diff --git a/l10n_br_fiscal/tests/__init__.py b/l10n_br_fiscal/tests/__init__.py index ae9e51e00e7b..2777f918023e 100644 --- a/l10n_br_fiscal/tests/__init__.py +++ b/l10n_br_fiscal/tests/__init__.py @@ -1,7 +1,6 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import ( - test_certificate, test_cnae, test_fiscal_document_generic, test_fiscal_document_nfse, diff --git a/l10n_br_fiscal/tools/misc.py b/l10n_br_fiscal/tools/misc.py index 662c906d6ae9..4a251b208284 100644 --- a/l10n_br_fiscal/tools/misc.py +++ b/l10n_br_fiscal/tools/misc.py @@ -5,12 +5,11 @@ import logging import os -from erpbrasil.assinatura import misc from erpbrasil.base.misc import punctuation_rm from odoo.tools import config -from ..constants.fiscal import CERTIFICATE_TYPE_NFE, EVENT_ENV_HML, EVENT_ENV_PROD +from ..constants.fiscal import EVENT_ENV_HML, EVENT_ENV_PROD _logger = logging.getLogger(__name__) @@ -45,24 +44,6 @@ def domain_field_codes( return domain -def prepare_fake_certificate_vals( - valid=True, - passwd="123456", - issuer="EMISSOR A TESTE", - country="BR", - subject="CERTIFICADO VALIDO TESTE", - cert_type=CERTIFICATE_TYPE_NFE, -): - return { - "type": cert_type, - "subtype": "a1", - "password": passwd, - "file": misc.create_fake_certificate_file( - valid, passwd, issuer, country, subject - ), - } - - def path_edoc_company(company_id): db_name = company_id._cr.dbname filestore = config.filestore(db_name) diff --git a/l10n_br_fiscal/views/dfe/dfe_views.xml b/l10n_br_fiscal/views/dfe/dfe_views.xml index 827377644a4c..12534326cbc4 100644 --- a/l10n_br_fiscal/views/dfe/dfe_views.xml +++ b/l10n_br_fiscal/views/dfe/dfe_views.xml @@ -14,11 +14,7 @@ - + diff --git a/l10n_br_fiscal/views/l10n_br_fiscal_action.xml b/l10n_br_fiscal/views/l10n_br_fiscal_action.xml index a22f0c48bc08..fb45ee42d652 100644 --- a/l10n_br_fiscal/views/l10n_br_fiscal_action.xml +++ b/l10n_br_fiscal/views/l10n_br_fiscal_action.xml @@ -372,23 +372,6 @@ - - - Certificate - ir.actions.act_window - l10n_br_fiscal.certificate - tree,form - - -

- Add a new Certificate -

- All Certificate by - Brazilian Fiscal modulo for Odoo. -

-
-
- Fiscal Document Email diff --git a/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml b/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml index ea3403a25225..aaf90d6845f8 100644 --- a/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml +++ b/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml @@ -579,15 +579,6 @@ sequence="30" /> - - -
- - - - - - - - - - diff --git a/l10n_br_fiscal/views/res_config_settings_view.xml b/l10n_br_fiscal/views/res_config_settings_view.xml index 4870934f8d90..0d90207274eb 100644 --- a/l10n_br_fiscal/views/res_config_settings_view.xml +++ b/l10n_br_fiscal/views/res_config_settings_view.xml @@ -85,25 +85,6 @@ - -
-
-
-
-
-

Fiscal Documents

diff --git a/l10n_br_fiscal_certificate/README.rst b/l10n_br_fiscal_certificate/README.rst new file mode 100644 index 000000000000..32b203a96924 --- /dev/null +++ b/l10n_br_fiscal_certificate/README.rst @@ -0,0 +1,107 @@ +=========================================== +A1 fiscal certificate management for Brazil +=========================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d5a0459e7e288accb9bb38c1bc7a82ddbaf8202afdff5940c3c114422597f4e5 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n_br_fiscal-lightgray.png?logo=github + :target: https://github.com/OCA/l10n_br_fiscal/tree/14.0/l10n_br_fiscal_certificate + :alt: OCA/l10n_br_fiscal +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/l10n_br_fiscal-14-0/l10n_br_fiscal-14-0-l10n_br_fiscal_certificate + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n_br_fiscal&target_branch=14.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Permite gerenciar seus certificados A1 para a assinar e transmitir seus documentos eletrônicos. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Abra o menu Configurações>Empresas. Dentro da aba fiscal tem uma nova página "certificados" +onde você pode fazer o upload dos certificados A1. + +Changelog +========= + +14.0.1.0.0 (2023) +~~~~~~~~~~~~~~~~~ + +Primeira versão do módulo: o código vinha sendo desenvolvido desde a versão 8 mas +estava integrado dentro módulo l10n_br_fiscal. O código foi extraído para deixar +o módulo l10n_br_fiscal mais leve. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* `Akretion `_: + + * Renato Lima + * Raphaël Valyi + +* `KMEE `_: + + * Luis Felipe Mileo + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-renatonlima| image:: https://github.com/renatonlima.png?size=40px + :target: https://github.com/renatonlima + :alt: renatonlima + +Current `maintainer `__: + +|maintainer-renatonlima| + +This module is part of the `OCA/l10n_br_fiscal `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_br_fiscal_certificate/__init__.py b/l10n_br_fiscal_certificate/__init__.py new file mode 100644 index 000000000000..c9d72e4aca03 --- /dev/null +++ b/l10n_br_fiscal_certificate/__init__.py @@ -0,0 +1,5 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from .hooks import post_init_hook + +from . import models diff --git a/l10n_br_fiscal_certificate/__manifest__.py b/l10n_br_fiscal_certificate/__manifest__.py new file mode 100644 index 000000000000..c0efd60494ee --- /dev/null +++ b/l10n_br_fiscal_certificate/__manifest__.py @@ -0,0 +1,31 @@ +# Copyright (C) 2023 Raphaël Valyi - Akretion +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "A1 fiscal certificate management for Brazil", + "category": "Localisation", + "license": "AGPL-3", + "author": "Akretion, Odoo Community Association (OCA)", + "maintainers": ["renatonlima"], + "website": "https://github.com/OCA/l10n-brazil", + "development_status": "Production/Stable", + "version": "14.0.1.0.0", + "depends": [ + "l10n_br_fiscal", + ], + "data": [ + "security/ir.model.access.csv", + "views/certificate_view.xml", + "views/res_company_view.xml", + "views/res_config_settings_view.xml", + ], + "post_init_hook": "post_init_hook", + "installable": True, + "application": False, + "auto_install": False, + "external_dependencies": { + "python": [ + "erpbrasil.assinatura>=1.7.0", + ] + }, +} diff --git a/l10n_br_fiscal_certificate/constants.py b/l10n_br_fiscal_certificate/constants.py new file mode 100644 index 000000000000..870f8d8f562a --- /dev/null +++ b/l10n_br_fiscal_certificate/constants.py @@ -0,0 +1,17 @@ +# Copyright (C) 2021 Luis Felipe Mileo - KMEE +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +CERTIFICATE_TYPE_NFE = "nf-e" +CERTIFICATE_TYPE_ECPF = "e-cpf" +CERTIFICATE_TYPE_ECNPJ = "e-cnpj" + +CERTIFICATE_TYPE = [ + (CERTIFICATE_TYPE_ECPF, "E-CPF"), + (CERTIFICATE_TYPE_ECNPJ, "E-CNPJ"), + (CERTIFICATE_TYPE_NFE, "NF-e"), +] + +CERTIFICATE_TYPE_DEFAULT = CERTIFICATE_TYPE_NFE + +CERTIFICATE_SUBTYPE = [("a1", "A1"), ("a3", "A3")] +CERTIFICATE_SUBTYPE_DEFAULT = "a1" diff --git a/l10n_br_fiscal_certificate/hooks.py b/l10n_br_fiscal_certificate/hooks.py new file mode 100644 index 000000000000..3445f19cec5d --- /dev/null +++ b/l10n_br_fiscal_certificate/hooks.py @@ -0,0 +1,66 @@ +# Copyright (C) 2021 - Luis Felipe Mileo - KMEE +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +import logging + +from odoo import SUPERUSER_ID, _, api, tools + +from .constants import CERTIFICATE_TYPE_ECNPJ, CERTIFICATE_TYPE_NFE + +_logger = logging.getLogger(__name__) + +try: + from erpbrasil.assinatura import misc +except ImportError: + _logger.error( + _( + "Python Library erpbrasil.assinatura not installed!" + "It doesn't matter much until you want to send NFe or NFSe documents." + "You can install it later with: pip install erpbrasil.assinatura." + ) + ) + + +def post_init_hook(cr, registry): + env = api.Environment(cr, SUPERUSER_ID, {}) + + def prepare_fake_certificate_vals( + valid=True, + passwd="123456", + issuer="EMISSOR A TESTE", + country="BR", + subject="CERTIFICADO VALIDO TESTE", + cert_type=CERTIFICATE_TYPE_NFE, + ): + return { + "type": cert_type, + "subtype": "a1", + "password": passwd, + "file": misc.create_fake_certificate_file( + valid, passwd, issuer, country, subject + ), + } + + if not tools.config["without_demo"]: + companies = [ + env.ref("base.main_company", raise_if_not_found=False), + env.ref("l10n_br_base.empresa_lucro_presumido", raise_if_not_found=False), + env.ref("l10n_br_base.empresa_simples_nacional", raise_if_not_found=False), + ] + try: + for company in companies: + l10n_br_fiscal_certificate_id = env["l10n_br_fiscal.certificate"] + company.certificate_nfe_id = l10n_br_fiscal_certificate_id.create( + prepare_fake_certificate_vals() + ) + company.certificate_ecnpj_id = l10n_br_fiscal_certificate_id.create( + prepare_fake_certificate_vals(cert_type=CERTIFICATE_TYPE_ECNPJ) + ) + except NameError: # (means from erpbrasil.assinatura import misc failed) + _logger.error( + _( + "Python Library erpbrasil.assinatura not installed!" + "You can install it later with: pip install erpbrasil.assinatura." + "Demo companies fake A1 certificates were not created." + ) + ) diff --git a/l10n_br_fiscal_certificate/models/__init__.py b/l10n_br_fiscal_certificate/models/__init__.py new file mode 100644 index 000000000000..3896181abf7b --- /dev/null +++ b/l10n_br_fiscal_certificate/models/__init__.py @@ -0,0 +1,3 @@ +from . import certificate +from . import res_company +from . import res_config_settings diff --git a/l10n_br_fiscal/models/certificate.py b/l10n_br_fiscal_certificate/models/certificate.py similarity index 95% rename from l10n_br_fiscal/models/certificate.py rename to l10n_br_fiscal_certificate/models/certificate.py index e64fdd6cbec6..637d6e2e5041 100644 --- a/l10n_br_fiscal/models/certificate.py +++ b/l10n_br_fiscal_certificate/models/certificate.py @@ -8,7 +8,7 @@ from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT from odoo.tools.misc import format_date -from ..constants.fiscal import ( +from ..constants import ( CERTIFICATE_SUBTYPE, CERTIFICATE_SUBTYPE_DEFAULT, CERTIFICATE_TYPE, @@ -22,8 +22,9 @@ except ImportError: _logger.error( _( - "Python Library erpbrasil.assinatura not installed, " - "please install ex: pip install erpbrasil.assinatura." + "Python Library erpbrasil.assinatura not installed!" + "It doesn't matter much until you want to send NFe or NFSe documents." + "You can install it later with: pip install erpbrasil.assinatura." ) ) diff --git a/l10n_br_fiscal_certificate/models/res_company.py b/l10n_br_fiscal_certificate/models/res_company.py new file mode 100644 index 000000000000..ef99ff63e796 --- /dev/null +++ b/l10n_br_fiscal_certificate/models/res_company.py @@ -0,0 +1,22 @@ +# Copyright (C) 2013 Renato Lima - Akretion +# Copyright (C) 2020 Luis Felipe Mileo - KMEE +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + + +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + certificate_ecnpj_id = fields.Many2one( + comodel_name="l10n_br_fiscal.certificate", + string="E-CNPJ", + domain="[('type', '=', 'e-cnpj')]", + ) + + certificate_nfe_id = fields.Many2one( + comodel_name="l10n_br_fiscal.certificate", + string="NFe", + domain="[('type', '=', 'nf-e')]", + ) diff --git a/l10n_br_fiscal_certificate/models/res_config_settings.py b/l10n_br_fiscal_certificate/models/res_config_settings.py new file mode 100644 index 000000000000..cbc37a994b48 --- /dev/null +++ b/l10n_br_fiscal_certificate/models/res_config_settings.py @@ -0,0 +1,16 @@ +# Copyright (C) 2015 Luis Felipe Miléo - KMEE +# Copyright (C) 2019 Renato Lima - Akretion +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + cert_expired_alert = fields.Integer( + string="Certificate Expired Alert", + config_parameter="l10n_br_fiscal_cert_expired_alert", + required=True, + default=30, + ) diff --git a/l10n_br_fiscal_certificate/readme/CONTRIBUTORS.rst b/l10n_br_fiscal_certificate/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..6de8551b7916 --- /dev/null +++ b/l10n_br_fiscal_certificate/readme/CONTRIBUTORS.rst @@ -0,0 +1,8 @@ +* `Akretion `_: + + * Renato Lima + * Raphaël Valyi + +* `KMEE `_: + + * Luis Felipe Mileo diff --git a/l10n_br_fiscal_certificate/readme/DESCRIPTION.rst b/l10n_br_fiscal_certificate/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..336547031b53 --- /dev/null +++ b/l10n_br_fiscal_certificate/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Permite gerenciar seus certificados A1 para a assinar e transmitir seus documentos eletrônicos. diff --git a/l10n_br_fiscal_certificate/readme/HISTORY.rst b/l10n_br_fiscal_certificate/readme/HISTORY.rst new file mode 100644 index 000000000000..0346ebfdb641 --- /dev/null +++ b/l10n_br_fiscal_certificate/readme/HISTORY.rst @@ -0,0 +1,6 @@ +14.0.1.0.0 (2023) +~~~~~~~~~~~~~~~~~ + +Primeira versão do módulo: o código vinha sendo desenvolvido desde a versão 8 mas +estava integrado dentro módulo l10n_br_fiscal. O código foi extraído para deixar +o módulo l10n_br_fiscal mais leve. diff --git a/l10n_br_fiscal_certificate/readme/USAGE.rst b/l10n_br_fiscal_certificate/readme/USAGE.rst new file mode 100644 index 000000000000..360205793906 --- /dev/null +++ b/l10n_br_fiscal_certificate/readme/USAGE.rst @@ -0,0 +1,2 @@ +Abra o menu Configurações>Empresas. Dentro da aba fiscal tem uma nova página "certificados" +onde você pode fazer o upload dos certificados A1. diff --git a/l10n_br_fiscal_certificate/security/ir.model.access.csv b/l10n_br_fiscal_certificate/security/ir.model.access.csv new file mode 100644 index 000000000000..68ea2681d6dc --- /dev/null +++ b/l10n_br_fiscal_certificate/security/ir.model.access.csv @@ -0,0 +1,3 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"l10n_br_fiscal_certificate_user","Fiscal Certificate for User","model_l10n_br_fiscal_certificate","l10n_br_fiscal.group_user",1,0,0,0 +"l10n_br_fiscal_certificate_manager","Fiscal Certificate for Manager","model_l10n_br_fiscal_certificate","l10n_br_fiscal.group_manager",1,1,1,1 diff --git a/l10n_br_fiscal_certificate/static/description/icon.png b/l10n_br_fiscal_certificate/static/description/icon.png new file mode 100644 index 000000000000..3a0328b516c4 Binary files /dev/null and b/l10n_br_fiscal_certificate/static/description/icon.png differ diff --git a/l10n_br_fiscal_certificate/static/description/index.html b/l10n_br_fiscal_certificate/static/description/index.html new file mode 100644 index 000000000000..b6ea859952de --- /dev/null +++ b/l10n_br_fiscal_certificate/static/description/index.html @@ -0,0 +1,450 @@ + + + + + + +A1 fiscal certificate management for Brazil + + + +
+

A1 fiscal certificate management for Brazil

+ + +

Production/Stable License: AGPL-3 OCA/l10n_br_fiscal Translate me on Weblate Try me on Runboat

+

Permite gerenciar seus certificados A1 para a assinar e transmitir seus documentos eletrônicos.

+

Table of contents

+ +
+

Usage

+

Abra o menu Configurações>Empresas. Dentro da aba fiscal tem uma nova página “certificados” +onde você pode fazer o upload dos certificados A1.

+
+
+

Changelog

+
+

14.0.1.0.0 (2023)

+

Primeira versão do módulo: o código vinha sendo desenvolvido desde a versão 8 mas +estava integrado dentro módulo l10n_br_fiscal. O código foi extraído para deixar +o módulo l10n_br_fiscal mais leve.

+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

renatonlima

+

This module is part of the OCA/l10n_br_fiscal project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/l10n_br_fiscal/tests/test_certificate.py b/l10n_br_fiscal_certificate/tests/test_certificate.py similarity index 100% rename from l10n_br_fiscal/tests/test_certificate.py rename to l10n_br_fiscal_certificate/tests/test_certificate.py diff --git a/l10n_br_fiscal/views/certificate_view.xml b/l10n_br_fiscal_certificate/views/certificate_view.xml similarity index 80% rename from l10n_br_fiscal/views/certificate_view.xml rename to l10n_br_fiscal_certificate/views/certificate_view.xml index 53e9fd7e310c..21f90801aa2a 100644 --- a/l10n_br_fiscal/views/certificate_view.xml +++ b/l10n_br_fiscal_certificate/views/certificate_view.xml @@ -86,4 +86,28 @@ + + Certificate + ir.actions.act_window + l10n_br_fiscal.certificate + tree,form + + +

+ Add a new Certificate +

+ All Certificate by + Brazilian Fiscal modulo for Odoo. +

+
+
+ + + diff --git a/l10n_br_fiscal_certificate/views/res_company_view.xml b/l10n_br_fiscal_certificate/views/res_company_view.xml new file mode 100644 index 000000000000..1e304fcd30b0 --- /dev/null +++ b/l10n_br_fiscal_certificate/views/res_company_view.xml @@ -0,0 +1,24 @@ + + + + + l10n_br_fiscal_certificate.res.company.form + res.company + + + + + + + + + + + + + + + + + + diff --git a/l10n_br_fiscal_certificate/views/res_config_settings_view.xml b/l10n_br_fiscal_certificate/views/res_config_settings_view.xml new file mode 100644 index 000000000000..6910bc08ba56 --- /dev/null +++ b/l10n_br_fiscal_certificate/views/res_config_settings_view.xml @@ -0,0 +1,35 @@ + + + + + l10n_br_fiscal.res.config.settings.view.form + res.config.settings + + + + + +
+
+
+
+
+
+ +
+
+
+ +
diff --git a/l10n_br_nfe/__manifest__.py b/l10n_br_nfe/__manifest__.py index e1657a1964bf..3166f2858bc4 100644 --- a/l10n_br_nfe/__manifest__.py +++ b/l10n_br_nfe/__manifest__.py @@ -10,9 +10,10 @@ "maintainers": ["rvalyi", "renatonlima"], "website": "https://github.com/OCA/l10n-brazil", "development_status": "Beta", - "version": "14.0.9.0.1", + "version": "14.0.9.1.0", "depends": [ "l10n_br_fiscal", + "l10n_br_fiscal_certificate", "l10n_br_nfe_spec", "spec_driven_model", ], @@ -37,6 +38,7 @@ "external_dependencies": { "python": [ "nfelib>=2.0.0", + "erpbrasil.assinatura>=1.7.0", "erpbrasil.transmissao", "erpbrasil.edoc", "erpbrasil.edoc.pdf", diff --git a/l10n_br_nfe/models/document.py b/l10n_br_nfe/models/document.py index 1d126d69add8..5c0e6e81a5a8 100644 --- a/l10n_br_nfe/models/document.py +++ b/l10n_br_nfe/models/document.py @@ -727,12 +727,12 @@ def _serialize(self, edocs): return edocs def _processador(self): - if not self.company_id.certificate_nfe_id: + if not self.company_id.sudo().certificate_nfe_id: raise UserError(_("Certificado não encontrado")) certificado = cert.Certificado( - arquivo=self.company_id.certificate_nfe_id.file, - senha=self.company_id.certificate_nfe_id.password, + arquivo=self.company_id.sudo().certificate_nfe_id.file, + senha=self.company_id.sudo().certificate_nfe_id.password, ) session = Session() session.verify = False diff --git a/l10n_br_nfe/models/invalidate_number.py b/l10n_br_nfe/models/invalidate_number.py index 02114de5fbf8..0ac047dffad4 100644 --- a/l10n_br_nfe/models/invalidate_number.py +++ b/l10n_br_nfe/models/invalidate_number.py @@ -26,12 +26,12 @@ class InvalidateNumber(models.Model): _inherit = "l10n_br_fiscal.invalidate.number" def _processador(self): - if not self.company_id.certificate_nfe_id: + if not self.company_id.sudo().certificate_nfe_id: raise UserError(_("Certificado não encontrado")) certificado = cert.Certificado( - arquivo=self.company_id.certificate_nfe_id.file, - senha=self.company_id.certificate_nfe_id.password, + arquivo=self.company_id.sudo().certificate_nfe_id.file, + senha=self.company_id.sudo().certificate_nfe_id.password, ) session = Session() session.verify = False diff --git a/l10n_br_nfse/__manifest__.py b/l10n_br_nfse/__manifest__.py index 09a00aa001ad..ddfbd501762b 100644 --- a/l10n_br_nfse/__manifest__.py +++ b/l10n_br_nfse/__manifest__.py @@ -5,7 +5,7 @@ "name": "NFS-e", "summary": """ NFS-e""", - "version": "14.0.1.14.0", + "version": "14.0.1.15.0", "license": "AGPL-3", "author": "KMEE, Odoo Community Association (OCA)", "maintainers": ["gabrielcardoso21", "mileo", "luismalta", "marcelsavegnago"], @@ -13,13 +13,14 @@ "external_dependencies": { "python": [ "erpbrasil.edoc", - "erpbrasil.assinatura", + "erpbrasil.assinatura>=1.7.0", "erpbrasil.transmissao", "erpbrasil.base>=2.3.0", ], }, "depends": [ "l10n_br_fiscal", + "l10n_br_fiscal_certificate", ], "data": [ "security/ir.model.access.csv", diff --git a/l10n_br_nfse_paulistana/__manifest__.py b/l10n_br_nfse_paulistana/__manifest__.py index 4e6c3d8d1e42..123fbe14bb0a 100644 --- a/l10n_br_nfse_paulistana/__manifest__.py +++ b/l10n_br_nfse_paulistana/__manifest__.py @@ -5,7 +5,7 @@ "name": "NFS-e (Nota Paulistana)", "summary": """ NFS-e (Nota Paulistana)""", - "version": "14.0.1.0.1", + "version": "14.0.1.0.2", "license": "AGPL-3", "author": "KMEE, Odoo Community Association (OCA)", "maintainers": ["gabrielcardoso21", "mileo", "luismalta"], @@ -14,7 +14,7 @@ "external_dependencies": { "python": [ "erpbrasil.edoc", - "erpbrasil.assinatura", + "erpbrasil.assinatura>=1.7.0", "erpbrasil.transmissao", "erpbrasil.base>=2.3.0", "nfselib.paulistana", diff --git a/requirements.txt b/requirements.txt index 9bd791a09b91..c88928bd3ca6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ # generated from manifests external_dependencies email-validator -erpbrasil.assinatura +erpbrasil.assinatura>=1.7.0 erpbrasil.base>=2.3.0 erpbrasil.edoc erpbrasil.edoc.pdf diff --git a/setup/l10n_br_fiscal_certificate/odoo/addons/l10n_br_fiscal_certificate b/setup/l10n_br_fiscal_certificate/odoo/addons/l10n_br_fiscal_certificate new file mode 120000 index 000000000000..2e0af694decb --- /dev/null +++ b/setup/l10n_br_fiscal_certificate/odoo/addons/l10n_br_fiscal_certificate @@ -0,0 +1 @@ +../../../../l10n_br_fiscal_certificate \ No newline at end of file diff --git a/setup/l10n_br_fiscal_certificate/setup.py b/setup/l10n_br_fiscal_certificate/setup.py new file mode 100644 index 000000000000..28c57bb64031 --- /dev/null +++ b/setup/l10n_br_fiscal_certificate/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)