orochasamuel / fiscalbr-net

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

[BUG] #97

Closed DomDiego closed 12 months ago

DomDiego commented 1 year ago

Boa tarde Ao importar arquivos Sped Fiscal que tenham no C100 documentos modelo "1B" ocorre o erro : Requested value '1B' was not found. Captura de tela 2023-07-17 155048

SPED Fiscal .NET 6.0 Lib [v17.0.1]

Informações adicionais codigo utilizado para teste public void Teste_Leitura_Isolada_C100_indmod_1B() { var expectedResult = @"|C100|0|1|F000408|1B|00|001|1862||11012020|11012020|1370|1|0|0|1370|9|0|0|0|1090|196,2|0|0|0|17,99|82,84|0|0|";

        File.WriteAllText("SpedTestC100.1Bv17.txt", expectedResult);

        var efdFiscalFile = new FiscalBr.EFDFiscal.ArquivoEFDFiscal();

        efdFiscalFile.Ler("SpedTestC100.1Bv17.txt");
        Assert.Equal("1862", efdFiscalFile.BlocoC?.RegC001?.RegC100s?.FirstOrDefault()?.NumDoc);
    }
orochasamuel commented 1 year ago

@DomDiego tudo na paz?

Identifiquei que esse erro ocorre em todos os enums que possuem letras (1B, 2D, 2E, 8B, etc).

Fiz a correção e irei publicar no Nuget em breve (há outras alterações que irão entrar na nova versão).

O que ocorre é que no Enum.Parse(...) o método espera converter um int, long ou short e como no seu caso o modelo do documento era o 2D ocorria o disparo da exception. Nessa nova implementação é verificado se o valor da linha é o mesmo valor no atributo DefaultValue do enumerador, se for, faz a conversão (agora sem erros).


                    else if (propType.IsEnum)
                    {
                        foreach (var currentEnumItem in propType.GetEnumValues())
                        {
                            MemberInfo memberInfo = propType.GetMember(currentEnumItem.ToString()).FirstOrDefault();

                            if (memberInfo != null)
                            {
                                DefaultValueAttribute attribute = (DefaultValueAttribute)
                                             memberInfo.GetCustomAttributes(typeof(DefaultValueAttribute), false)
                                                       .FirstOrDefault();

                                if (attribute != null)
                                {
                                    if (attribute.Value.ToString() == value.ToString())
                                    {
                                        var convertedEnum = Enum.Parse(propType, currentEnumItem.ToString());

                                        prop.SetValue(instantiatedObject, convertedEnum);
                                        break;
                                    }
                                }
                            }
                        }
                    }
DomDiego commented 1 year ago

@orochasamuel ,tudo na paz otimo , alterar aqui por enquanto amigo e parabens pela iniciativa e a todos os envolvidos

orochasamuel commented 1 year ago

Fala @DomDiego tudo na paz?

A alteração na leitura está no commit https://github.com/orochasamuel/fiscalbr-net/commit/422b0f6882a8c4c06f4c5ccb5ff6c14ed27a95a6.

Qualquer dúvida é só avisar.

Vida longa e próspera 🖖

orochasamuel commented 12 months ago

@DomDiego esse bug já foi corrigido e os novos pacotes Nuget foram publicados.

Qualquer dúvida é só avisar.

Vida longa e próspera 🖖