orochasamuel / fiscalbr-net

Para facilitar seu dia a dia como desenvolvedor \o/
MIT License
91 stars 48 forks source link

Erro ao ler arquivo #62

Closed candinho1987 closed 1 year ago

candinho1987 commented 1 year ago

Ola, estou com erro ao ler um arquivo, System.ArgumentNullException: 'Value cannot be null. Arg_ParamName_Name' segundo o erro o valor nao pode ser null, na definicao do metodo ler public override void Ler(string path, Encoding encoding = null) tem 2 argumentos, um a string com o arquivo, e o encoding, ja tentei das seguintes formar sem sucesso.

ArquivoEFDContribuicoes efd = new ArquivoEFDContribuicoes();
efd.Ler(arquivo,null);
efd.Ler(arquivo,Encoding.UTF8);
 Encoding encoding = Encoding.UTF8;
                ArquivoEFDContribuicoes efd = new ArquivoEFDContribuicoes();
                efd.Ler(arquivo,encoding);
orochasamuel commented 1 year ago

Fala @candinho1987 tudo na paz?

Vou tentar reproduzir e te retorno nesta issue.

Vida longa e próspera. 🖖

orochasamuel commented 1 year ago

@candinho1987 já tem um tempo que essa issue está parada.

Você conseguiu resolver?

candinho1987 commented 1 year ago

opa, ainda nao, gera o erro ainda, ate atualizei a lib para testar ontem, segundo o chatgpt o erro ocorre aqui: Activator.CreateInstance is a method that creates an instance of a specified type. In the context of your error, it seems that the objectType parameter is null, which is causing the System.ArgumentNullException with the message "Value cannot be null. Arg_ParamName_Name". inicialmente eu achei que era pelo encoding mas passei os logs de erro para o chatgpt e le me retornou isso

orochasamuel commented 1 year ago

@marcosgerene está usando a leitura em produção aí?

Testei aqui e realmente está dando erro. Erro idiota por falta de um .TrimStart() antes de splitar as propriedades.

Mas estou curioso, você adaptou ou está usando a mesma versão da lib?

OU

Não está usando esse recurso da leitura mais?

PS: Usei o arquivo de exemplo da EFD Contribuições no site do SPED. http://sped.rfb.gov.br/pagina/show/1609

Vida longa e próspera 🖖

orochasamuel commented 1 year ago

@candinho1987 acabei de fazer um commit com a correção.

Baixa o projeto atualizado, builda e testa com a DLL atualizada.

Faz o teste e me retorna, por favor.

Vida longa e próspera. 🖖

marcosgerene commented 1 year ago

@marcosgerene está usando a leitura em produção aí?

Testei aqui e realmente está dando erro. Erro idiota por falta de um .TrimStart() antes de splitar as propriedades.

Mas estou curioso, você adaptou ou está usando a mesma versão da lib?

OU

Não está usando esse recurso da leitura mais?

PS: Usei o arquivo de exemplo da EFD Contribuições no site do SPED. http://sped.rfb.gov.br/pagina/show/1609

Vida longa e próspera 🖖

Não, usei muito pouco depois que fizemos, eu basicamente precisei adicionar bloco H em SPEDs prontos à epoca.

Vi que você já fez as correções, valeu =))

ze-resolveisso commented 1 year ago

Olá @orochasamuel

Gostaria de usar a leitura do arquivo SPED, mas, estou com mesmo problema relatado, porém, no ArquivoEFDFiscal

orochasamuel commented 1 year ago

@ze-resolveisso tudo na paz?

Baixa o projeto atualizado, builda e testa com a DLL atualizada.

Faz o teste e me retorna, por favor.

Vida longa e próspera. 🖖

ze-resolveisso commented 1 year ago

@orochasamuel tudo certo e você? Primeiramente, parabéns pelo projeto

Então, já estava atualizado pois baixei a pouquíssimo tempo, mas realizei alguns testes e acredito que descobri o problema.

Os arquivos SPED que estava testando foram baixados da Receita e os mesmos vem ASSINADOS ao final do arquivo e exatamente quando o arquivo está com assinatura que acontece esse erro pois acredito que não tem uma previsão dessa situação na leitura.

Removi a assinatura do final do arquivo e assim foram lidos corretamente.

Então acredito que futuramente possam incluir essa verificação para ignorar a assinatura dos arquivos.

orochasamuel commented 1 year ago

Fala @ze-resolveisso obrigado pelo retorno.

Boa sugestão, irei incluir essa feature no roadmap de leitura.

Realmente, atualmente a lib só comporta a leitura dos registros conforme o layout, qualquer coisa fora disso vai provocar alguma exception.

Vida longa e próspera. 🖖

orochasamuel commented 1 year ago

@candinho1987 @marcosgerene @ze-resolveisso fiz algumas mudanças no método de leitura na classe ArquivoSped.


        public virtual void Ler(string path, Encoding encoding = null)
        {
            if (!File.Exists(path))
                throw new Exception("O arquivo não existe! Verifique e tente novamente.");

            Erros = new List<string>();

            // TODO: Alterar para remover os espaços em branco antes do primeiro pipe e após o último pipe.
            Linhas = File.ReadAllLines(path, encoding ?? Encoding.Default).ToList();

            if (ExisteAssinaturaNoArquivo())
                RemoverLinhasDeAssinatura();

            RemoverLinhasVazias();
        }

Agora é verificado se o arquivo existe, caso não exista irá retornar uma exception.

Se o arquivo já estiver assinado, no processo de leitura a assinatura será removida. Independente da situação, se o conteúdo do arquivo for alterado o responsável pelo envio do arquivo ao Fisco terá que assinar novamente.

E uma próxima alteração será para interceptar a leitura linha a linha e remover (caso exista) espaços em branco antes do primeiro pipe e após o último pipe, identifiquei que isso pode provocar erros na leitura do arquivo.

Vou preparar o commit e publicar as últimas correções no Nuget.

Vida longa e próspera. 🖖

ze-resolveisso commented 1 year ago

Obrigado @orochasamuel pelo rápido atendimento nessa questão, assim que tiver publicado já estarei baixando para testar

orochasamuel commented 1 year ago

@candinho1987 @marcosgerene @ze-resolveisso a nova versão foi publicada no Nuget.

Assim que possível, teste e me retorne @ze-resolveisso.

Vida longa e próspera 🖖

ze-resolveisso commented 1 year ago

@orochasamuel testei num arquivo assinado e fez a leitura correta sem apresentar nenhuma exception, obrigado

orochasamuel commented 1 year ago

@orochasamuel testei num arquivo assinado e fez a leitura correta sem apresentar nenhuma exception, obrigado

Obrigado pelo retorno. o/

Vou fechar essa issue. Se tiver outra demanda na feature de leitura outra issue deverá ser aberta.

Vida longa e próspera 🖖

candinho1987 commented 1 year ago

@candinho1987 @marcosgerene @ze-resolveisso fiz algumas mudanças no método de leitura na classe ArquivoSped.

        public virtual void Ler(string path, Encoding encoding = null)
        {
            if (!File.Exists(path))
                throw new Exception("O arquivo não existe! Verifique e tente novamente.");

            Erros = new List<string>();

            // TODO: Alterar para remover os espaços em branco antes do primeiro pipe e após o último pipe.
            Linhas = File.ReadAllLines(path, encoding ?? Encoding.Default).ToList();

            if (ExisteAssinaturaNoArquivo())
                RemoverLinhasDeAssinatura();

            RemoverLinhasVazias();
        }

Agora é verificado se o arquivo existe, caso não exista irá retornar uma exception.

Se o arquivo já estiver assinado, no processo de leitura a assinatura será removida. Independente da situação, se o conteúdo do arquivo for alterado o responsável pelo envio do arquivo ao Fisco terá que assinar novamente.

E uma próxima alteração será para interceptar a leitura linha a linha e remover (caso exista) espaços em branco antes do primeiro pipe e após o último pipe, identifiquei que isso pode provocar erros na leitura do arquivo.

Vou preparar o commit e publicar as últimas correções no Nuget.

Vida longa e próspera. 🖖

Para mim gerou um erro System.ArgumentException: 'Object of type 'System.String' cannot be converted to type 'System.Nullable1[FiscalBr.Common.IndPeriodoApuracaoIpi]'.'` mas pode ser no arquivo mesmo

orochasamuel commented 1 year ago

@candinho1987 esse erro ocorreu na leitura de um arquivo da EFD Contribuições, correto?

orochasamuel commented 1 year ago

@candinho1987 foi corrigido no commit https://github.com/orochasamuel/fiscalbr-net/commit/3a7d29f3fd53a02a78cafc76625b24353a1731f9.

candinho1987 commented 1 year ago

@candinho1987 esse erro ocorreu na leitura de um arquivo da EFD Contribuições, correto?

isso

orochasamuel commented 1 year ago

Encerrando... esse bug já foi corrigido.