Ir para conteúdo
  • Cadastre-se

dev botao

Automatizar Consulta do CódigoNacionaldoECF


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

Recommended Posts

Alguem já implementou a consulta automática do ECF num DB com todos os ECFs ?

Por exemplo: no momento da inserção do ECF na tabela de "EcfsAutorizados", consultar seu código nacional automaticamente.

Inclusive porque no PAF esse dados é necessário para gerar o arquivo "MovimentoPorECf" após Redução Z.

Alguém ?

Vlw

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não há como... não existe um método preciso de pegar o modelo... e a "string" com o modelo não seria uma boa chave estrangeira com a tabela proposta pelo fisco, pois nem sempre a descrição bate...

Tem que ser no "olhometro" mesmo ;)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

Não há como... não existe um método preciso de pegar o modelo... e a "string" com o modelo não seria uma boa chave estrangeira com a tabela proposta pelo fisco, pois nem sempre a descrição bate...

Tem que ser no "olhometro" mesmo ;)

Talvez eu faça a compatibilização de um cadastro, com a string retornada pelo ACBR, vai depender do meu tempo aqui.. caso faça, eu disponibilizo pra todos. Ou entao um algorítimo para encontrar o ECF por probabilidade, ou seja, as strings não são exatas, mas são parecidas. Jogo um LIKE e no resultado final faço mais um filtro. Sacou?

Abraço.

Link para o comentário
Compartilhar em outros sites

Vc já viu quantos modelos e sub-modelos existem na Tabela Nacional de ECF ? ;)

sim, a idéia é consultar por marca e por versão do SB, no resultado final um LOOP tenta chegar no ECF em questão comparando a string retornada pelo ACBr com a string do cadastro nacional de ECF's.

Não acha viável companheiro ?

Link para o comentário
Compartilhar em outros sites

Não sei se ajuda.

Mas vou passar exatamente o que eu fiz no meu PDV.


procedure Tfrm_ConfigPDV.proListarECFBanco(pMarca, pModelo: string);

var

  Query             : TIBQuery;

begin


  Query := TIBQuery.Create(nil);

  Query.Database := Dados.IBDatabase;


  Query.Close;

  Query.SQL.Text := 'select i.codigo_ecf, i.tipo_ecf, i.versao_sb, i.mfd, i.marca_ecf, i.modelo_ecf '+#13#10+

    'from identifica_ecf i '+#13#10+

    'where upper(i.marca_ecf) = upper(:marca) and upper(i.modelo_ecf) = upper(:modelo) ';

  Query.ParamByName('marca').Value := AnsiUpperCase(trim(fncRetornarPrimeiroEspaco(pMarca)));

  Query.ParamByName('modelo').Value := AnsiUpperCase(trim(pModelo));

  Query.Prepare;

  Query.Open;


  if not(Query.IsEmpty) then

    begin

      cdsListaECF.EmptyDataSet;

      while not(Query.Eof) do

        begin

          cdsListaECF.Append;

          cdsListaECFCodNacional.AsString := Query.fIELDByName('codigo_ecf').AsString;

          cdsListaECFTipoECF.AsString := Query.fIELDByName('tipo_ecf').AsString;

          cdsListaECFModelo.AsString := Query.fIELDByName('modelo_ecf').AsString;

          cdsListaECFMarca.AsString := Query.fIELDByName('marca_ecf').AsString;

          cdsListaECFMFD.AsString := ifthen((Query.fIELDByName('mfd').AsString='0'), 'NÃO', 'SIM');

          cdsListaECFVersaoSB.AsString := Query.fIELDByName('versao_sb').AsString;

          cdsListaECF.Post;

          Query.Next;

        end;

      pnlListaECF.BringToFront;

      pnlListaECF.Visible := true;

      cdsListaECF.First;

      gdLista.SetFocus;

    end

  else

    begin

      Mensagem('Não foi encontrado ECF com a MARCA e MODELO informado.'+#13#10+

        'Será aberto a listagem contendo as ECF pela MARCA apenas.', 'I');

      Query.Close;

      Query.SQL.Text := 'select i.codigo_ecf, i.tipo_ecf, i.versao_sb, i.mfd, i.marca_ecf, i.modelo_ecf '+#13#10+

        'from identifica_ecf i '+#13#10+

        'where upper(i.marca_ecf) containing  upper(:marca)';

      Query.ParamByName('marca').Value := AnsiUpperCase(trim(fncRetornarPrimeiroEspaco(pMarca)));

      Query.Prepare;

      Query.Open;

      if not(Query.IsEmpty) then

        begin

          cdsListaECF.EmptyDataSet;

          while not(Query.Eof) do

            begin

              cdsListaECF.Append;

              cdsListaECFCodNacional.AsString := Query.fIELDByName('codigo_ecf').AsString;

              cdsListaECFTipoECF.AsString := Query.fIELDByName('tipo_ecf').AsString;

              cdsListaECFModelo.AsString := Query.fIELDByName('modelo_ecf').AsString;

              cdsListaECFMarca.AsString := Query.fIELDByName('marca_ecf').AsString;

              cdsListaECFMFD.AsString := ifthen((Query.fIELDByName('mfd').AsString='0'), 'NÃO', 'SIM');

              cdsListaECFVersaoSB.AsString := Query.fIELDByName('versao_sb').AsString;

              cdsListaECF.Post;

              Query.Next;

            end;

          pnlListaECF.BringToFront;

          pnlListaECF.Visible := true;

          cdsListaECF.First;

          gdLista.SetFocus;

        end

      else

        begin

          Query.Close;

          Query.SQL.Text := 'select i.codigo_ecf, i.tipo_ecf, i.versao_sb, i.mfd, i.marca_ecf, i.modelo_ecf '+#13#10+

            'from identifica_ecf i '+#13#10+

            'order by i.marca_ecf, i.modelo_ecf';

          Query.Prepare;

          Query.Open;

          if not(Query.IsEmpty) then

            begin

              cdsListaECF.EmptyDataSet;

              while not(Query.Eof) do

                begin

                  cdsListaECF.Append;

                  cdsListaECFCodNacional.AsString := Query.fIELDByName('codigo_ecf').AsString;

                  cdsListaECFTipoECF.AsString := Query.fIELDByName('tipo_ecf').AsString;

                  cdsListaECFModelo.AsString := Query.fIELDByName('modelo_ecf').AsString;

                  cdsListaECFMarca.AsString := Query.fIELDByName('marca_ecf').AsString;

                  cdsListaECFMFD.AsString := ifthen((Query.fIELDByName('mfd').AsString='0'), 'NÃO', 'SIM');

                  cdsListaECFVersaoSB.AsString := Query.fIELDByName('versao_sb').AsString;

                  cdsListaECF.Post;

                  Query.Next;

                end;

              pnlListaECF.BringToFront;

              pnlListaECF.Visible := true;

              cdsListaECF.First;

              gdLista.SetFocus;

            end

          else

            begin

              Mensagem('Não foi encontrado ECF cadastrado.', 'W');

              pnlListaECF.Visible := false;

              pnlListaECF.SendToBack;

              exit;

            end;

        end;


    end;


  FreeAndNil(Query);


end;

arquivos em anexo

TabelaECF.rar

Att.:

W7 Soluções
Ricardo Mendes
Analista/Programador
Skype: ricardo_w7
[email protected]

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Adicionei um novo projeto em

ACBr\Projetos\ACBrCNIEE

Ele faz download da Tabela Nacional de ECFs direto do site do Fisco de MG, e converte-a para um DataSet...

Ainda falta terminar algumas rotinas, mas ele já é operacional...

PS: O projeto foi escrito em Lazarus

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

Adicionei um novo projeto em

ACBr\Projetos\ACBrCNIEE

Ele faz download da Tabela Nacional de ECFs direto do site do Fisco de MG, e converte-a para um DataSet...

Ainda falta terminar algumas rotinas, mas ele já é operacional...

PS: O projeto foi escrito em Lazarus

companheiro, isso é o que eu chamo de PRÓ-ATIVIDADE! surpreendeu...

vou testar e qualquer mudança, commit nela.

flw.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4922 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.