Closed orochasamuel closed 12 months ago
Feature exclusiva do ArquivoEFDFiscalV2.
Agora é feita a detecção da versão ao ler um arquivo/linha.
private int DetectarVersaoLeiauteParaLeitura(Type tipo, int versaoDesejada, int qtdCampos)
{
// TODO: Refatorar e melhorar
var versaoAtual = versaoDesejada;
var props = ObterListaComPropriedadesDoTipo(tipo, versaoAtual);
while (props.Count > qtdCampos)
{
if (versaoAtual == 2) break;
versaoAtual--;
props = ObterListaComPropriedadesDoTipo(tipo, versaoAtual);
}
return versaoAtual;
}
PS: A versão de retorno SEMPRE será a versão mais próxima com a quantidade de campos, exemplo, o Registro C500 da EFD Fiscal sofreu muitas alterações, há campos na versão 2, 3, 14 e 16, se a quantidade de campos do registro lido for menor do que a quantidade de campos na versão desejada do layout será usada a versão imediatamente anterior que corresponda a essa quantidade.
// Estou criando o arquivo da EFD Fiscal na versão 14 (essa versão será usada na escrita)
var c500daEfdFiscal = new FiscalBr.EFDFiscal.ArquivoEFDFiscalV2(VersaoLeiauteSped.V14);
// Todavia, estou lendo um arquivo com informações na versão 10 do layout
c500daEfdFiscal.LerArquivo("SpedTestC500v10.txt");
// A versão final usada será a 13, pois da versão 3 até a 13 os campos deste registro não foram alterados
Alterações feitas no commit https://github.com/orochasamuel/fiscalbr-net/commit/6ab7a0f29bef2d9701076b3b2b98e8f1c28a3726.
Usar C500 como exemplo