From bfb11f7fe173e18db0fa7b32882c18ab2a2cdff5 Mon Sep 17 00:00:00 2001 From: Tiago Amaral Date: Fri, 18 Oct 2024 07:49:54 -0300 Subject: [PATCH] [IMP] add tests. --- l10n_br_crm_cnpj_search/README.rst | 31 ++++--- .../models/l10n_br_base_party_mixin.py | 2 +- l10n_br_crm_cnpj_search/pyproject.toml | 3 + l10n_br_crm_cnpj_search/readme/CONFIGURE.md | 5 ++ l10n_br_crm_cnpj_search/readme/CONFIGURE.rst | 1 - .../readme/CONTRIBUTORS.md | 2 + .../readme/CONTRIBUTORS.rst | 3 - .../{DESCRIPTION.rst => DESCRIPTION.md} | 3 +- .../readme/{INSTALL.rst => INSTALL.md} | 0 l10n_br_crm_cnpj_search/readme/USAGE.md | 6 ++ l10n_br_crm_cnpj_search/readme/USAGE.rst | 6 -- .../static/description/index.html | 16 ++-- l10n_br_crm_cnpj_search/tests/__init__.py | 1 + .../tests/test_receitaws.py | 88 +++++++++++++++++++ .../wizard/partner_cnpj_search_wizard.py | 36 +++----- 15 files changed, 150 insertions(+), 53 deletions(-) create mode 100644 l10n_br_crm_cnpj_search/pyproject.toml create mode 100644 l10n_br_crm_cnpj_search/readme/CONFIGURE.md delete mode 100644 l10n_br_crm_cnpj_search/readme/CONFIGURE.rst create mode 100644 l10n_br_crm_cnpj_search/readme/CONTRIBUTORS.md delete mode 100644 l10n_br_crm_cnpj_search/readme/CONTRIBUTORS.rst rename l10n_br_crm_cnpj_search/readme/{DESCRIPTION.rst => DESCRIPTION.md} (60%) rename l10n_br_crm_cnpj_search/readme/{INSTALL.rst => INSTALL.md} (100%) create mode 100644 l10n_br_crm_cnpj_search/readme/USAGE.md delete mode 100644 l10n_br_crm_cnpj_search/readme/USAGE.rst create mode 100644 l10n_br_crm_cnpj_search/tests/__init__.py create mode 100644 l10n_br_crm_cnpj_search/tests/test_receitaws.py diff --git a/l10n_br_crm_cnpj_search/README.rst b/l10n_br_crm_cnpj_search/README.rst index 6c4bb557a82c..bc04c5ca651a 100644 --- a/l10n_br_crm_cnpj_search/README.rst +++ b/l10n_br_crm_cnpj_search/README.rst @@ -28,7 +28,8 @@ Brazilian Localization CRM CNPJ Search |badge1| |badge2| |badge3| |badge4| |badge5| -Módulo que adiciona um botão para preencher automaticamente os campos de um lead a partir do seu CNPJ. +Módulo que adiciona um botão para preencher automaticamente os campos de +um lead a partir do seu CNPJ. **Table of contents** @@ -43,17 +44,21 @@ Este módulo depende do módulo l10n_br_cnpj_search e l10n_br_crm. Configuration ============= -Esta busca de informações a partir do cnpj é realizada com base no provedor configurado na aba de configurações, vale ressaltar que o provedor receitaws permite a realização de três consultas por minuto, enquanto que o SERPRO é pago e permite consultas ilimitadas em seus planos. +Esta busca de informações a partir do cnpj é realizada com base no +provedor configurado na aba de configurações, vale ressaltar que o +provedor receitaws permite a realização de três consultas por minuto, +enquanto que o SERPRO é pago e permite consultas ilimitadas em seus +planos. Usage ===== -#. Acesse Configurações -#. Escolha um provedor para a busca -#. Habilite o Lead nas configurações do CRM -#. Acesse CRM > Lead > Criar -#. Preencha o nome do Lead, insira no campo de CNPJ o CNPJ que deseja buscar e clique na lupa ao lado do campo para buscar - +1. Acesse Configurações +2. Escolha um provedor para a busca +3. Habilite o Lead nas configurações do CRM +4. Acesse CRM > Lead > Criar +5. Preencha o nome do Lead, insira no campo de CNPJ o CNPJ que deseja + buscar e clique na lupa ao lado do campo para buscar Bug Tracker =========== @@ -69,19 +74,19 @@ Credits ======= Authors -~~~~~~~ +------- * KMEE Contributors -~~~~~~~~~~~~ +------------ -* `KMEE `_: +- `KMEE `__: - * Bruno Corredato Botti + - Bruno Corredato Botti Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. diff --git a/l10n_br_crm_cnpj_search/models/l10n_br_base_party_mixin.py b/l10n_br_crm_cnpj_search/models/l10n_br_base_party_mixin.py index 141c0f071ab9..e3ecb358ff48 100644 --- a/l10n_br_crm_cnpj_search/models/l10n_br_base_party_mixin.py +++ b/l10n_br_crm_cnpj_search/models/l10n_br_base_party_mixin.py @@ -5,7 +5,7 @@ class PartyMixin(models.AbstractModel): _inherit = "l10n_br_base.party.mixin" def action_open_cnpj_search_wizard(self): - res = super(PartyMixin, self).action_open_cnpj_search_wizard() + res = super().action_open_cnpj_search_wizard() if self._name == "crm.lead": default_lead_id = self.id else: diff --git a/l10n_br_crm_cnpj_search/pyproject.toml b/l10n_br_crm_cnpj_search/pyproject.toml new file mode 100644 index 000000000000..4231d0cccb3d --- /dev/null +++ b/l10n_br_crm_cnpj_search/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/l10n_br_crm_cnpj_search/readme/CONFIGURE.md b/l10n_br_crm_cnpj_search/readme/CONFIGURE.md new file mode 100644 index 000000000000..a601896bc219 --- /dev/null +++ b/l10n_br_crm_cnpj_search/readme/CONFIGURE.md @@ -0,0 +1,5 @@ +Esta busca de informações a partir do cnpj é realizada com base no +provedor configurado na aba de configurações, vale ressaltar que o +provedor receitaws permite a realização de três consultas por minuto, +enquanto que o SERPRO é pago e permite consultas ilimitadas em seus +planos. diff --git a/l10n_br_crm_cnpj_search/readme/CONFIGURE.rst b/l10n_br_crm_cnpj_search/readme/CONFIGURE.rst deleted file mode 100644 index 8d3da62d9c00..000000000000 --- a/l10n_br_crm_cnpj_search/readme/CONFIGURE.rst +++ /dev/null @@ -1 +0,0 @@ -Esta busca de informações a partir do cnpj é realizada com base no provedor configurado na aba de configurações, vale ressaltar que o provedor receitaws permite a realização de três consultas por minuto, enquanto que o SERPRO é pago e permite consultas ilimitadas em seus planos. diff --git a/l10n_br_crm_cnpj_search/readme/CONTRIBUTORS.md b/l10n_br_crm_cnpj_search/readme/CONTRIBUTORS.md new file mode 100644 index 000000000000..e0b008c7bd57 --- /dev/null +++ b/l10n_br_crm_cnpj_search/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- [KMEE](https://www.kmee.com.br): + - Bruno Corredato Botti \<\> diff --git a/l10n_br_crm_cnpj_search/readme/CONTRIBUTORS.rst b/l10n_br_crm_cnpj_search/readme/CONTRIBUTORS.rst deleted file mode 100644 index 8358e5ed64d3..000000000000 --- a/l10n_br_crm_cnpj_search/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,3 +0,0 @@ -* `KMEE `_: - - * Bruno Corredato Botti diff --git a/l10n_br_crm_cnpj_search/readme/DESCRIPTION.rst b/l10n_br_crm_cnpj_search/readme/DESCRIPTION.md similarity index 60% rename from l10n_br_crm_cnpj_search/readme/DESCRIPTION.rst rename to l10n_br_crm_cnpj_search/readme/DESCRIPTION.md index 1984dd6cb6dc..13ad800fe5ba 100644 --- a/l10n_br_crm_cnpj_search/readme/DESCRIPTION.rst +++ b/l10n_br_crm_cnpj_search/readme/DESCRIPTION.md @@ -1 +1,2 @@ -Módulo que adiciona um botão para preencher automaticamente os campos de um lead a partir do seu CNPJ. +Módulo que adiciona um botão para preencher automaticamente os campos de +um lead a partir do seu CNPJ. diff --git a/l10n_br_crm_cnpj_search/readme/INSTALL.rst b/l10n_br_crm_cnpj_search/readme/INSTALL.md similarity index 100% rename from l10n_br_crm_cnpj_search/readme/INSTALL.rst rename to l10n_br_crm_cnpj_search/readme/INSTALL.md diff --git a/l10n_br_crm_cnpj_search/readme/USAGE.md b/l10n_br_crm_cnpj_search/readme/USAGE.md new file mode 100644 index 000000000000..5f47d82fe2be --- /dev/null +++ b/l10n_br_crm_cnpj_search/readme/USAGE.md @@ -0,0 +1,6 @@ +1. Acesse Configurações +2. Escolha um provedor para a busca +3. Habilite o Lead nas configurações do CRM +4. Acesse CRM \> Lead \> Criar +5. Preencha o nome do Lead, insira no campo de CNPJ o CNPJ que deseja + buscar e clique na lupa ao lado do campo para buscar diff --git a/l10n_br_crm_cnpj_search/readme/USAGE.rst b/l10n_br_crm_cnpj_search/readme/USAGE.rst deleted file mode 100644 index 11fc79501477..000000000000 --- a/l10n_br_crm_cnpj_search/readme/USAGE.rst +++ /dev/null @@ -1,6 +0,0 @@ -#. Acesse Configurações -#. Escolha um provedor para a busca -#. Habilite o Lead nas configurações do CRM -#. Acesse CRM > Lead > Criar -#. Preencha o nome do Lead, insira no campo de CNPJ o CNPJ que deseja buscar e clique na lupa ao lado do campo para buscar - diff --git a/l10n_br_crm_cnpj_search/static/description/index.html b/l10n_br_crm_cnpj_search/static/description/index.html index 9b6cb8ee0601..faffbf75fc9b 100644 --- a/l10n_br_crm_cnpj_search/static/description/index.html +++ b/l10n_br_crm_cnpj_search/static/description/index.html @@ -370,7 +370,8 @@

Brazilian Localization CRM CNPJ Search

!! source digest: sha256:5ced8ced231656b9a794810c90ec2cd72291b38b3b1ac493a810f0a24dde8221 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/l10n-brazil Translate me on Weblate Try me on Runboat

-

Módulo que adiciona um botão para preencher automaticamente os campos de um lead a partir do seu CNPJ.

+

Módulo que adiciona um botão para preencher automaticamente os campos de +um lead a partir do seu CNPJ.

Table of contents

Configuration

-

Esta busca de informações a partir do cnpj é realizada com base no provedor configurado na aba de configurações, vale ressaltar que o provedor receitaws permite a realização de três consultas por minuto, enquanto que o SERPRO é pago e permite consultas ilimitadas em seus planos.

+

Esta busca de informações a partir do cnpj é realizada com base no +provedor configurado na aba de configurações, vale ressaltar que o +provedor receitaws permite a realização de três consultas por minuto, +enquanto que o SERPRO é pago e permite consultas ilimitadas em seus +planos.

Usage

    -
  1. Acesse Configurações
  2. +
  3. Acesse Configurações
  4. Escolha um provedor para a busca
  5. Habilite o Lead nas configurações do CRM
  6. -
  7. Acesse CRM > Lead > Criar
  8. -
  9. Preencha o nome do Lead, insira no campo de CNPJ o CNPJ que deseja buscar e clique na lupa ao lado do campo para buscar
  10. +
  11. Acesse CRM > Lead > Criar
  12. +
  13. Preencha o nome do Lead, insira no campo de CNPJ o CNPJ que deseja +buscar e clique na lupa ao lado do campo para buscar
diff --git a/l10n_br_crm_cnpj_search/tests/__init__.py b/l10n_br_crm_cnpj_search/tests/__init__.py new file mode 100644 index 000000000000..c4e58a2e334d --- /dev/null +++ b/l10n_br_crm_cnpj_search/tests/__init__.py @@ -0,0 +1 @@ +from . import test_receitaws diff --git a/l10n_br_crm_cnpj_search/tests/test_receitaws.py b/l10n_br_crm_cnpj_search/tests/test_receitaws.py new file mode 100644 index 000000000000..29edac3b5d85 --- /dev/null +++ b/l10n_br_crm_cnpj_search/tests/test_receitaws.py @@ -0,0 +1,88 @@ +# Copyright 2024 KMEE +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from unittest import mock + +from odoo.addons.l10n_br_cnpj_search.tests.common import ( + TestCnpjCommon, +) + + +class TestCRMReceitaws(TestCnpjCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.crm_lead_model = cls.env["crm.lead"] + cls.res_partner_model = cls.env["res.partner"] + cls.crm_lead_1 = cls.crm_lead_model.create({"name": "Jamanta"}) + + def test_convert_to_oportunity(self): + # self.crm_lead_1._onchange_cnpj_cpf() + mocked_response = self.mocked_response_ws_1 + mocked_response["atividades_secundarias"] = [ + { + "code": "62.01-5-01", + "text": "Desenvolvimento de programas de computador sob encomenda", + }, + { + "code": "62.03-1-00", + "text": """Desenvolvimento e licenciamento de programas + de computador não-customizáveis""", + }, + { + "code": "62.09-1-00", + "text": """Suporte técnico, manutenção e outros + serviços em tecnologia da informação""", + }, + { + "code": "63.11-9-00", + "text": """Tratamento de dados, provedores de serviços de + aplicação e serviços de hospedagem na internet""", + }, + { + "code": "85.99-6-04", + "text": "Treinamento em desenvolvimento profissional e gerencial", + }, + ] + with mock.patch( + "odoo.addons.l10n_br_cnpj_search.models.cnpj_webservice.CNPJWebservice.validate", + return_value=mocked_response, + ): + self.crm_lead_1.write({"cnpj_cpf": "31.954.065/0001-08"}) + action_wizard = self.crm_lead_1.action_open_cnpj_search_wizard() + wizard_context = action_wizard.get("context") + wizard = ( + self.env["partner.search.wizard"] + .with_context(**wizard_context) + .create({}) + ) + wizard.action_update_partner() + self.assertEqual( + self.crm_lead_1.legal_name, + "Kilian Macedo Melcher 08777131460", + ) + self.assertEqual(self.crm_lead_1.name, "Kilian Macedo Melcher 08777131460") + self.assertEqual(self.crm_lead_1.street, "Rua Luiza Bezerra Motta") + self.assertEqual(self.crm_lead_1.street2, "Bloco E;Apt 302") + self.assertEqual(self.crm_lead_1.street_number, "950") + self.assertEqual(self.crm_lead_1.zip, "58.410-410") + self.assertEqual(self.crm_lead_1.district, "Catole") + self.assertEqual(self.crm_lead_1.phone, "(83) 8665-0905") + self.assertEqual(self.crm_lead_1.state_id.code, "PB") + self.assertEqual(self.crm_lead_1.equity_capital, 3000.00) + self.assertEqual(self.crm_lead_1.cnae_main_id.code, "4751-2/01") + + cnaes = [ + "6201-5/01", + "6203-1/00", + "6209-1/00", + "6311-9/00", + "8599-6/04", + ] + cnaes = sorted(cnaes) + cnae_secondary_codes = [ + cnae.code for cnae in self.crm_lead_1.cnae_secondary_ids + ] + cnae_secondary_codes = sorted(cnae_secondary_codes) + for i in range(0, len(cnae_secondary_codes)): + self.assertEqual(cnaes[i], cnae_secondary_codes[i]) diff --git a/l10n_br_crm_cnpj_search/wizard/partner_cnpj_search_wizard.py b/l10n_br_crm_cnpj_search/wizard/partner_cnpj_search_wizard.py index 1d090928cd61..c03c5e5c5656 100644 --- a/l10n_br_crm_cnpj_search/wizard/partner_cnpj_search_wizard.py +++ b/l10n_br_crm_cnpj_search/wizard/partner_cnpj_search_wizard.py @@ -8,29 +8,16 @@ class PartnerCnpjSearchWizard(models.TransientModel): _inherit = "partner.search.wizard" def default_get(self, fields): - if self.env.context.get("default_partner_id"): - res = super().default_get(fields) - else: - res = super(models.TransientModel, self).default_get( - fields - ) # Parece que não mas esse else precisa existir. - partner_id = self.env.context.get("default_partner_id") + res = super().default_get(fields) lead_id = self.env.context.get("default_lead_id") - if partner_id: - partner_model = self.env["res.partner"] - partner = partner_model.browse(partner_id) - cnpj_cpf = punctuation_rm(partner.cnpj_cpf) - misc.punctuation_rm(self.zip) - values = self._get_partner_values(cnpj_cpf) - res.update(values) - else: - lead_id = self.env.context.get("default_lead_id") - lead_model = self.env["crm.lead"] - lead = lead_model.browse(lead_id) - cnpj_cpf = punctuation_rm(lead.cnpj_cpf) - misc.punctuation_rm(self.zip) - values = self._get_partner_values(cnpj_cpf) - res.update(values) + if lead_id: + if "currency_id" in res: + lead_model = self.env["crm.lead"] + lead = lead_model.browse(lead_id) + cnpj_cpf = punctuation_rm(lead.cnpj_cpf) + misc.punctuation_rm(self.zip) + values = self._get_partner_values(cnpj_cpf) + res.update(values) return res def action_update_partner(self): @@ -54,9 +41,12 @@ def action_update_partner(self): "legal_nature": self.legal_nature, "equity_capital": self.equity_capital, "cnae_main_id": self.cnae_main_id.id, - "cnae_secondary_ids": self.cnae_secondary_ids.id, "company_type": "company", } + if self.cnae_secondary_ids: + values_to_update["cnae_secondary_ids"] = [ + (6, 0, self.cnae_secondary_ids.ids) + ] if self.child_ids: values_to_update["child_ids"] = [(6, 0, self.child_ids.ids)] non_empty_values = {