orochasamuel / fiscalbr-net

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

Informação #55

Closed candinho1987 closed 1 year ago

candinho1987 commented 2 years ago

Bom dia! Seria possivel inserir os campos c170 em um arquivo sped sem eles com base em outro arquivo sped onde tem o c170, inserindo conforme o nomero da nota/cupom. Ambiente

orochasamuel commented 2 years ago

Fala @candinho1987 tudo na paz?

Você quer gerar os registros C170 em um arquivo com base na leitura de outro arquivo TXT?

Se eu entendi corretamente você pode fazer a leitura do primeiro arquivo (origem), após a leitura e as classes "populadas" com as informações você pode criar uma nova instância da classe do arquivo e fazer um foreach, e ir escrevendo no novo arquivo (destino).

Vida longa e próspera 🖖

candinho1987 commented 2 years ago

Isso meu querido, exatamente isso, sou novo em programacao e mais ainda em sped, mas estou focado em aprender, se tiver tempo e me mostrar um exemplo para eu seguir, fico muito grato. estou fazendo um leitor de xml para posteriormente salvar em csv, e gostaria de adicionar a funcao de sped no mesmo ja que posso importar as notas, deve ter uma forma de gerar o sped com base nos xml, a unica coisa que nao consegui ler ainda foi o cst icms dos xml, de resto consegui tudo.

orochasamuel commented 2 years ago

Entendi, a ideia é boa.

Vou preparar um exemplo e te envio ainda hoje.

Vida longa e próspera 🖖

candinho1987 commented 2 years ago

Entendi, a ideia é boa.

Vou preparar um exemplo e te envio ainda hoje.

Vida longa e próspera 🖖

Muito obrigado fico realmente muito feliz!

candinho1987 commented 2 years ago

no caso consigo gerar um novo sped completo ne, tipo no arquivo original nao tem o c170 e no segundo tem o c170 mas nao esta corrigido, no caso quero pegar os dados do bloco c170 do segundo e inserir no primeiro

orochasamuel commented 2 years ago

Sim, é possível fazer.

candinho1987 commented 2 years ago

Boa noite! da uma olhada se estou no caminho certo.

var arquivo = fd2.FileName;
                var sped = new ArquivoEFDFiscal();
                sped.Ler(arquivo);
                var blococ = sped.BlocoC.ToString();
                gridSped.DataSource = blococ;

neste caso queria abrir o arquivo e visualizar as informação em um datagridview para saber se de fato leu o arquivo. Mas me apresentou um erro 'Object of type 'System.String' cannot be converted to type 'System.Nullable1[FiscalBr.Common.IndPeriodoApuracaoIpi]'.'`

candinho1987 commented 2 years ago

Meu arquivo esta na versao 15, nao testei na versao 16

orochasamuel commented 2 years ago

Dá uma olhada nesse exemplo @candinho1987 e veja se te ajuda.


    public class LerArquivoCandinho1987
    {
        [Fact]
        public void LerArquivoSpedFiscal()
        {
            List<string> lines = new List<string>();
            var filePath = @"C:\source.txt";

            // Origem
            var spedFile1 = new ArquivoEFDFiscal();

            spedFile1.Ler(filePath);

            var spedFile2OnlyC170s = new List<EFDFiscal.BlocoC.RegistroC170>();

            for (int i = 0; i < spedFile1.BlocoC.RegC001.RegC100s.Count; i++)
            {
                for (int j = 0; j < spedFile1.BlocoC.RegC001.RegC100s[i].RegC170s.Count; j++)
                {
                    var currentItem = spedFile1.BlocoC.RegC001.RegC100s[i].RegC170s[j];

                    var newC170 = new EFDFiscal.BlocoC.RegistroC170();

                    /*
                     * Preenche os campos desejados
                     */

                    newC170.Cfop = currentItem.Cfop;

                    /*
                     * Insere na lista de registros
                     */

                    spedFile2OnlyC170s.Add(newC170);
                }
            }

            /*
             * Gera a linha
             */

            foreach (var item in spedFile2OnlyC170s)
            {
               lines.Add(Common.Sped.EscreverCamposSped.EscreverCampos(item));
            }

            /*
             * Inclui as linhas no novo arquivo
             */

            //[...]
        }
    }

Dá uma olhada nas issues https://github.com/orochasamuel/fiscalbr-net/issues/37 e https://github.com/orochasamuel/fiscalbr-net/issues/41.

A issue 37 trata da correção do erro relatado acima. E a issue 41 trata de exemplos de como gerar o arquivo.

EDIT: PS: Eu não testei o código escrito.

Vida longa e próspera. 🖖