Closed eduprog closed 7 years ago
Entendi @eduprog, obrigado pelo feedback. Irei analisar esses casos e corrigir para evitar esse tipo de situações.
Com relação às validações e demais recursos que seriam interessantes ter na lib para agilizar esse processo, irei incluir tudo em outra lib para consumir as funções tanto no SintegraBr como no SPEDBr. Essa lib já está criada e se chama FiscalBr, irei incluir nela as validações, lista de CFOPs, lista de CSTs e demais informações necessárias para que você não tenha que tratar todas essas informações no seu sistema.
Meus mais sinceros agradecimentos pelo aviso e irei corrigir com a maior brevidade possível.
Abraços.
@eduprog fiz as melhorias sugeridas, estão no commit d8f14415987c7e17d342be73965529ff6aa5a7bb.
A respeito dos testes, em breve estarei providenciando uma maneira simples de testar a lib.
Sobre as dicas que você deixou por último, vamos lá.
(1) - O SintegraBR não trata cnpj null, portanto em nosso sistema gerador sintegra foi adicionado um cnpj zerado (assim como foi dito para fazer no manual do sintegra) antes que fosse enviado para o a função de escrita do SintegraBR.
Neste caso de validações irei consumir os métodos de outra biblioteca (ainda está na fase embrionária), se chama , até agora só comecei a desenvolver um motor tributário que busca as informações de tributação média na API do IBPT (De Olho no Imposto).
(2) - O SintegraBR não refatora tamanho da inscrição estadual, portanto em nosso sistema gerador sintegra foi removido casas decimais que sobram a esquerda antes que fosse enviado para o a função de escrita do SintegraBR.
Para este caso terei que mexer em toda biblioteca alterando o tipo dos campos onde há a inscrição estadual para um tipo único e assim, verificar se existem somente números e eliminar os espaços. Por enquanto da forma que você fez irá resolver mas irei tratar isso direto na lib também.
Na biblioteca há o recurso de validação da I.E. também, não sei se você já o tinha visto. Em SintegraBr.Common.ValidarIe
, pode-se validar consumindo o método da DLL do Sintegra(DllInscE32.dll).
Abraços
@samuelroliveira , show de bola então.
Vamos unindo a galera ai e melhorando o projeto a cada dia.
Samuel, nosso Devops encontrou algumas inconsistência na biblioteca. Segue abaixo o que modificarão para que seja corrigido ok.
Depois podemos olhar uma forma de testes para que estes tipos de erros não aconteça, facilitando assim o devel mesmo, pois isto acaba atrasando todo o processo, pois sempre achamos que a culpa é da parte criadora e não da DLL pronta em si. O que acha da ideia?
Segue:
(1) - LINHAS 75,82 e 88 da classe
EscreveCamposSintegraByAttribute
do projeto SintegraBr.Common:sb.Append(...).Replace(...).PadRight(sintegraCampoAttr.Tamanho, '0'));
sb.Append(...).Replace(...).PadLeft(sintegraCampoAttr.Tamanho, '0'));
(2) - LINHA 97 da classe
EscreveCamposSintegraByAttribute
do projeto SintegraBr.Common:if(isCode)sb.Append(propertyValue.ToString().PadRight(sintegraCampoAttr.Tamanho, ' '));
else if(isCode) sb.Append(' ');
- Esta alteração permite que os quando o parâmetro é código (representa caractere) porém não tem valor, é inserido um espaço em branco. Esta alteração trata o campo 10 do registro 50: Emitente da Nota Fiscal (P-próprio/T-terceiros) -> (MANUAL DO SINTEGRA) 11.1.9.2 No caso de Nota Fiscal, modelo 1 e 1-A (código 01), preencher com brancos. - Antes quando enviava um espaço em branco (' ') o SintegraBR substituía por nenhum espaço (''), porém o tópico do manual afirma que deve ser substituído por ' '.
No registro54, o modelo não está na ordem correta. Ele está na ultima posição, enquanto deveria estar na terceira posição. Fizemos a seguinte alteração que resolveu o problema:
[SintegraCampos(3, "MODELO", "N", 2, 0, true)]
[SintegraCampos(2, "MODELO", "N", 2, 0, true)]
Outra alteração foi na da quantidade de casas decimais para o campo quantidade. Este campo precisa de 3 casas decimais, portanto o valor exibido no arquivo sintegra não tinha nenhuma casa decimal (embora o atributo casas decimais ser igual 3).
long
, passou a ser do tipodecimal
(igual aos tipos dos outros atributos, como valorProduto, valorDesconto).Algumas correções que fizemos em nosso sistema que na verdade creio que poderia ser tratado pela DLL, fica a dica:
(1) - O SintegraBR não trata cnpj null, portanto em nosso sistema gerador sintegra foi adicionado um cnpj zerado (assim como foi dito para fazer no manual do sintegra) antes que fosse enviado para o a função de escrita do SintegraBR.
(2) - O SintegraBR não refatora tamanho da inscrição estadual, portanto em nosso sistema gerador sintegra foi removido casas decimais que sobram a esquerda antes que fosse enviado para o a função de escrita do SintegraBR.
Em anexo envio ai .cs que foram alterados, facilitando ainda mais a atualização dos mesmos
SintegraBR(.Cs Modificados).zip