erpbrasil / erpbrasil.base

MIT License
14 stars 15 forks source link

[FIX] Inscrição Estadual de Minas Gerais pode ser menor que 13. #45

Open mbcosta opened 8 months ago

mbcosta commented 8 months ago

Inscrição Estadual de Minas Gerais pode ser menor que 13, mas diferente do PR https://github.com/erpbrasil/erpbrasil.base/pull/44 aqui não tenho certeza se a forma que alterei o código está correta ou é a melhor solução por isso um debate e avaliação é necessário, porque a recomendação nesses casos é preencher com Zeros a Esquerda, mas para o usuário isso não fica claro já que mensagem retornada é apenas "Inscrição Estadual Inválida" e se ele consultar em algum site da SEFAZ retorna que o IE é válido o que acaba gerando a impressão e a reclamação "Existe um erro no programa", exemplo:

https://dfe-portal.svrs.rs.gov.br/NFE/CCC image

Possíveis soluções:

Uma questão que surgiu vendo isso hoje na Localização o método que Formata o IE https://github.com/erpbrasil/erpbrasil.base/blob/master/src/erpbrasil/base/fiscal/ie.py#L534 não está sendo usado, deveria?

l10n-brazil-oca$ grep -rn 'formata(' --include=*.py . --color=always ./l10n_br_crm/models/crm_lead.py:94: self.cnpj = cnpj_cpf.formata(self.cnpj) ./l10n_br_crm/models/crm_lead.py:98: self.cpf = cnpj_cpf.formata(self.cpf) ./l10n_br_nfe/models/res_partner.py:251: rec.cnpj_cpf = cnpj_cpf.formata(str(rec.nfe40_CNPJ)) ./l10n_br_nfe/models/res_partner.py:265: rec.cnpj_cpf = cnpj_cpf.formata(str(rec.nfe40_CPF)) ./l10n_br_nfe/models/res_partner.py:298: ("cnpj_cpf", "=", cnpj_cpf.formata(rec_dict["cnpj_cpf"])), ./l10n_br_nfe/models/document.py:1138: if edoc_type == "in" and document.company_id.cnpj_cpf != cnpj_cpf.formata( ./l10n_br_pos/models/res_partner.py:16: partner["cnpj_cpf"] = cnpj_cpf.formata(partner["vat"]) ./l10n_br_pos/models/res_partner.py:19: partner["cnpj_cpf"] = cnpj_cpf.formata(partner["vat"]) ./l10n_br_hr/models/hr_employee.py:246: cpf = cnpj_cpf.formata(str(self.cpf)) ./l10n_br_hr/models/hr_employee_dependent.py:79: cpf = cnpj_cpf.formata(str(self.cnpj_cpf)) ./l10n_br_base/models/party_mixin.py:66: self.cnpj_cpf = cnpj_cpf.formata(str(self.cnpj_cpf)) ./l10n_br_fiscal/models/document_related.py:133: self.cnpj_cpf = cnpj_cpf.formata(str(self.cnpj_cpf))

cc @renatonlima @rvalyi @marcelsavegnago @mileo

antoniospneto commented 8 months ago

Uma duvida que não entendi bem, quando o usuário digita o número de inscrição com apenas 11 digitos, isso que dizer que ele está informando o número sem os digitos verificadores não? se for isso não é correto adicionar zeros a esquerda. Se for isso, minha sugestão é calcular os digitos verificadores e normalizar o número no sistema com os digitos.

mbcosta commented 8 months ago

Valeu @antoniospneto , obrigado pela revisão, sobre a sua pergunta "isso que dizer que ele está informando o número sem os digitos verificadores não?" Não, a IE está completa com o digito verificador com o tamanho 11, os zeros a esquerda seriam para deixar o tamanho 13, se reparar na imagem eu procurei deixar a IE parcialmente visível e é possível ver que tem somente 11 caracteres, atualizei a imagem para deixar mais claro