Ir para conteúdo
  • Cadastre-se

dev botao

Bloco 90 Sintegra - PAF-ECF


  • Este tópico foi criado há 4454 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá amigos! :mrgreen:

Estou lendo o ATO COTEPE, para fazer os testes do PAF-ECF, e homologar logo de uma vez. Bem, na parte referente ao Vendas do Período, e, neste trecho:

“Vendas do Período” para gerar dois arquivos eletrônicos, com possibilidade de seleção por período de data, sendo:

a) um arquivo conforme leiaute estabelecido no Manual de Orientação do Convênio 57/95, devendo conter os registros relativos às operações de saída e prestações praticadas e os registros tipo 10, 11, 75 e 90;

É que está o meu problema.

Bom, recorri ao exemplo do ACBr (\ACBr\Exemplos\ACBrSintegra), para gerar tais registros, de acordo com o ATO COTEPE. Fiz isto:

  with ACBrSintegra1 do

  begin

    try

      {Registro 10}

      Registro10.CNPJ:= PoeZeros(SoNumeros(RegEmpresa.CGC),14);                                                                                                         {TAM}

      Registro10.Inscricao:= CortaString(SoNumeros(RegEmpresa.InscEstadual),14,true);

      Registro10.RazaoSocial:= CortaString(RegEmpresa.Nm_Empresa,35,true);

      Registro10.Cidade:= CortaString(RegEmpresa.Cidade,30,true);

      Registro10.Estado:= CortaString(RegEmpresa.Estado,2,true);

      Registro10.Telefone:= PoeZeros(SoNumeros(RegEmpresa.Telefone),10);

      Registro10.DataInicial:= DataHoraInicial(edtDe.Date);

      Registro10.DataFinal:= DataHoraInicial(edtAte.Date);


      Registro10.CodigoConvenio:= IntToStr(3);

      Registro10.NaturezaInformacoes := IntToStr(3);

      Registro10.FinalidadeArquivo := IntToStr(1);


    except

      Informa('Falha ao gerar o Registro 10.');

    end;


    try

      {Registro 11}

      ThreadQuery.ExecuteAndWait(Self);

      query.Active := false;

      query.SQL.Clear;

      query.SQL.Add('SELECT E.* FROM EMPRESAS E');

      if not query.Prepared then query.Prepare;

      query.Active := true;

      Registro11.Endereco:= CortaString(RegEmpresa.Endereco,34,true);

      Registro11.Numero:= PoeZeros(Query.FieldByName('ENDERECO_NUMERO').AsString,5);

      Registro11.Complemento:= CortaString(Query.FieldByName('COMPLEMENTO').AsString,22,true);

      Registro11.Bairro:= CortaString(RegEmpresa.Bairro,15,true);

      Registro11.Cep:= RegEmpresa.Cep;

      Registro11.Responsavel:= CortaString(Query.FieldByName('NM_RESPONSAVEL').AsString,28,true);

      Registro11.Telefone:= PoeZeros(SoNumeros(RegEmpresa.Telefone),12);

    except

    on e : Exception do

      Informa('Falha ao gerar o Registro 11 '+ e.Message);

    end;


    GerarRegistro50;

    GerarRegistro60M;

    GerarRegistro60A;

    GerarRegistro60D;


    try

      Data:= DataHoraInicial(edtDe.Date);

      while Data <= DataHoraFinal(edtAte.Date) do

      begin

        with Query do

        begin

          Active:= False;

          SQL.Clear;

          SQL.Add('SELECT PR.CD_PRODUTO, PI.QUANTIDADE, PI.SUBTOTAL');

          SQL.Add('from PEDIDO_ITEM PI');

          SQL.Add('join PEDIDO PD on PD.NUM_DOCUMENTO = PD.NUM_DOCUMENTO');

          SQL.Add('left outer join PRODUTOS PR on PI.CD_PRODUTO = PR.CD_PRODUTO ');

         // SQL.Add('where PD.DATA_HORA between :de and :ate');


          if rgpFaixadeDados.ItemIndex = 2 then

            SQL.Add('WHERE  (ECF_COO BETWEEN :DE AND :ATE)')

          else if rgpFaixadeDados.ItemIndex = 1 then

            SQL.Add('WHERE  (ECF_CRZ BETWEEN :DE AND :ATE)')

          else

            SQL.Add('where PD.DATA_HORA between :de and :ate');


          Active:= TRUE;

          if not Prepared then Prepare;

          if rgpFaixadeDados.ItemIndex = 2 then

          begin

            ParamByName('DE').AsString := edtCOOIni.Text;

            ParamByName('ATE').AsString := edtCOOFin.Text;

          end else if rgpFaixadeDados.ItemIndex = 1 then

          begin

            ParamByName('DE').AsString := edtCRZIni.Text;

            ParamByName('ATE').AsString := edtCRZFin.Text;

          end else

          begin

            ParamByName('DE').AsDateTime := DataHoraInicial(edtDe.Date);

            ParamByName('ATE').AsDateTime := DataHoraFinal(edtAte.Date);

          end;

          Active:= True;

          First;

          while not eof do

          begin

            try

              {********************************************************}

              {*        REGISTRO 75 - COD. PRODUTOS OU SERVIÇOS       *}

              {********************************************************}


              wRegistro75:= TRegistro75.Create;

              wRegistro75.DataInicial:= ACBrSintegra1.Registro10.DataInicial;

              wRegistro75.DataFinal:= ACBrSintegra1.Registro10.DataFinal;

              wRegistro75.Codigo:= wRegistro60D.Codigo;

              wRegistro75.Descricao:= FieldByName('NM_PRODUTO').AsString;

              wRegistro75.Unidade:= FieldByName('UNIDADE').AsString;

              if FieldByName('IPI').IsNull then

                wRegistro75.AliquotaIpi:= 0

              else

                wRegistro75.AliquotaIpi:= FieldByName('IPI').AsCurrency;

              wRegistro75.AliquotaICMS:= 0;


              ACBrSintegra1.Registros75.Add(wRegistro75);

            except

            on e : Exception do

              Informa('Falha ao gerar o registro 75. '+ e.Message);

            end;

            Next;

          end;


          Data:= IncDay(Data,1);

        end;

        Query.Active:= False;

      end;

    except

    on e : Exception do

      Informa('Falha ao gerar o arquivo 60D. '+e.Message);

    end;

    try

      GeraArquivo;

    except

    on e : Exception do

      Informa('Falha ao gerar Arquivo Sintegra.'+ e.Message);

    end;


    ACBrECF.Free;

    FechaTransacao;

  end;

Mas e o registro 90? Como posso gera-lo? Não encontrei um exemplo para ele nos exemplos do ACBr.

Um abraço.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Você chegou a ler a documentação de geração do arquivo sintegra e sped? o registro 90 e um totalizador, então o próprio componente vai gerar ele, você não tem que passar informação alguma.

Para um melhor entendimento das necessidades do Paf-ECF e geração de arquivos sugiro fortemente que leia as documentações pertinentes, assim facilitará em muito o teu trabalho e também a geração de arquivo que possam ser validados e não te causem problemas futuros.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Consultores

Veja também o DEMO do componente.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Você chegou a ler a documentação de geração do arquivo sintegra e sped? o registro 90 e um totalizador, então o próprio componente vai gerar ele, você não tem que passar informação alguma.

Para um melhor entendimento das necessidades do Paf-ECF e geração de arquivos sugiro fortemente que leia as documentações pertinentes, assim facilitará em muito o teu trabalho e também a geração de arquivo que possam ser validados e não te causem problemas futuros.

Opa, que ótimo! Isso estava me tirando o sono. De que documentações você está falando?

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4454 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.