Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

  • Moderadores

na verdade não existe pra entrada ou saída.

existe manifestar e baixar xml emitidos contra o cnpj seu.

e sim tem está no exemplo do svn do ACBrNFe

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Juliomar Marchetti disse:

na verdade não existe pra entrada ou saída.

existe manifestar e baixar xml emitidos contra o cnpj seu.

e sim tem está no exemplo do svn do ACBrNFe

isso andei lendo e vendo alguns exemplos, até então ficou claro como fazer e o que se precisa fazer, minha única duvida até agora foi em questão do NSU, como eu sei qual é o ultimo NSU quando se trata de um cliente que já fez uma consulta pra mim passar o NSU correto !

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não tu manda o nsu que ele te retorno e não soma nada

agora se tu mandar duas vezes ou mais o mesmo nsu ele vai te bloquear por uma hora

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Juliomar Marchetti disse:

Não tu manda o nsu que ele te retorno e não soma nada

agora se tu mandar duas vezes ou mais o mesmo nsu ele vai te bloquear por uma hora

entendi, continuo lendo alguma situações na internet pra entender melhor, minha duvida a respeito do ultima NSU e NSU Máxima é que a ultima é 50 a máxima é 500 então eu sempre tenho que esta fazendo um comparação é isso ? e a cada consulta vai ser realizada consulta de 50 em 50 exemplo: primeira consulta 0 a 50, segunda consulta 51 a 100, terceira 100 a 150... 

 

outra duvida é que eu salvo sempre a ultima NSU e não a máxima né isso ? 

 

existe algum manual do componentes ? tipo a onde me informa o que cada componente pode fazer, o que eles retorna e como retorna essa informação ? 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

ele vai te trazer de 50 em 50. mas não quer dizer que vai trazer em ordem

sim é o nsu enão a nota

acho que a dúvida já respondi em outro lugar, não não tem manual, mas existe todos os fontes dos componentes que podem e devem ser abertos e lidos e o exemplos de uso

agora se tu quer saber regra é ler as NT e manuais do sefaz

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

22 horas atrás, Juliomar Marchetti disse:

ele vai te trazer de 50 em 50. mas não quer dizer que vai trazer em ordem

sim é o nsu enão a nota

acho que a dúvida já respondi em outro lugar, não não tem manual, mas existe todos os fontes dos componentes que podem e devem ser abertos e lidos e o exemplos de uso

agora se tu quer saber regra é ler as NT e manuais do sefaz

um duvida tem 2 maneira de consulta DistribuicaoDFePorUltNSU e DistribuicaoDFePorNSU (quando usar uma ou outra)

 

a questão agora não é nem entender como o componente funciona a questão é regras:

pois temos a seguintes situações:

1º Empresa que vai fazer a primeira consulta

2º Empresa que já foi feito por outro Sistemas

3º Empresa que já fez no mesmo sistema

 

 

então pra cada caso desse existe uma regra, que acho que pode ser assim, 

para caso 1º -> Consulta faz as comparações do ultimo NSU e maxNSU, até que ultNSU >= maxNsu e salvar ultNSU (NSU começando com 0)

para caso 2º -> repete o caso 1º pra que se possa carregar as NF-e e salvar a ultima NSU (NSU começando com 0)

para caso 3º -> Consulta é feito a partir da ultNSU depois salva a ultNSU

 

se puder esclarecer melhor agradeço se precisar do código posso postar sem problema ! 

Link para o comentário
Compartilhar em outros sites

23 horas atrás, Juliomar Marchetti disse:

ele vai te trazer de 50 em 50. mas não quer dizer que vai trazer em ordem

sim é o nsu enão a nota

acho que a dúvida já respondi em outro lugar, não não tem manual, mas existe todos os fontes dos componentes que podem e devem ser abertos e lidos e o exemplos de uso

agora se tu quer saber regra é ler as NT e manuais do sefaz

Sei que não é caso do forum esta revisando código de ninguém mas a baixo está meu codigo como questão de Manifestação tem que se ter cuidado para não bloqueio e os teste dependem de muita consultas gostaria que verificar por cima se pelo menos minha logica esta correta:

 

procedure TfrmListaMDE.btnPesquisarNFeManiClick(Sender: TObject);
var
  cUFAutor, CNPJ, ultNSU, maxNSU1, ultNSU1: string;
  i: integer;
begin

  cUFAutor  := UFtoCUF(UFEmit);
  CNPJ      := CNPJEmit;
  ultNSU    := ultimoNSUBanco;

  ACBrMDe.DistribuicaoDFePorUltNSU(StrToInt(cUFAutor), CNPJ, ultNSU); //Primeira Consulta


  if ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137 then
  begin
    if ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU >= ACBRMDe.WebServices.DistribuicaoDFe.retDistDFeInt.maxNSU then
    begin
      //Salvar Ultima NSU ****************
       DMMySQL.queryConEmpresa.Close;
       DMMySQL.queryConEmpresa.SQL.Clear;
       DMMySQL.queryConEmpresa.SQL.Add('update empresa set nsu = :nsu');
       DMMySQL.queryConEmpresa.SQL.Add('where id = :id');
       DMMySQL.queryConEmpresa.ParamByName('id').Value := idEmpresa;
       DMMySQL.queryConEmpresa.ParamByName('nsu').Value := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU;

      end else
      begin
          if ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU < ACBRMDe.WebServices.DistribuicaoDFe.retDistDFeInt.maxNSU then
          ultNSU := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU;        
              ACBrMDe.DistribuicaoDFePorUltNSU(StrToInt(cUFAutor), CNPJ, ultNSU); //refaz a consulta 
      end;
  end else
      if ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 then
    begin
          for i := 0 to ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count -1 do
    begin
             if ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].schema = schresNFe then //NFe emitida e não manifestadas
                 begin 

        //Salva NF-e não manifestada
                DMMySQL.qManifesto.Close;
                DMMySQL.qManifesto.SQL.Clear;
                DMMySQL.qManifesto.SQL.Add('insert into manifestacao (id_empresa, chave, cnpj, nome, data, valor, status)');
                DMMySQL.qManifesto.SQL.Add('values (:id_empresa, :chave, :cnpj, :nome, :data, :valor, :status)');

                DMMySQL.qManifesto.ParamByName('id_empresa').Value    := idEmpresa;
                DMMySQL.qManifesto.ParamByName('chave').Value         := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.chDFe;
                DMMySQL.qManifesto.ParamByName('cnpj').Value          := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.CNPJCPF;;
                DMMySQL.qManifesto.ParamByName('nome').Value          := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.xNome;
                DMMySQL.qManifesto.ParamByName('data').Value          := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.dhEmi;
                DMMySQL.qManifesto.ParamByName('valor').Value         := FloatToStr(ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.vNF);
                DMMySQL.qManifesto.ParamByName('status').Value        := '0';
                DMMySQL.qManifesto.ExecSQL;

                 end else
                    if ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].schema = schprocNFe then
                 begin
            //Salva NF-e Manistada já com XML **irei alterar essa questão aqui para salvar ou editar para não tenha duplicidade em NF-e
                      DMMySQL.qManifesto.Close;
                      DMMySQL.qManifesto.SQL.Clear;
                      DMMySQL.qManifesto.SQL.Add('insert into manifestacao (id_empresa, chave, cnpj, nome, data, valor, status, xml)');
                      DMMySQL.qManifesto.SQL.Add('values (:id_empresa, :chave, :cnpj, :nome, :data, :valor, :status, :xml)');

                      DMMySQL.qManifesto.ParamByName('id_empresa').Value    := idEmpresa;
                      DMMySQL.qManifesto.ParamByName('chave').Value         := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.chDFe;
                      DMMySQL.qManifesto.ParamByName('cnpj').Value          := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.CNPJCPF;;
                      DMMySQL.qManifesto.ParamByName('nome').Value          := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.xNome;
                      DMMySQL.qManifesto.ParamByName('data').Value          := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.dhEmi;
                      DMMySQL.qManifesto.ParamByName('valor').Value         := FloatToStr(ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].resDFe.vNF);
                      DMMySQL.qManifesto.ParamByName('status').Value        := '4';
                      DMMySQL.qManifesto.ParamByName('xml').Value           := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].xml;

                      DMMySQL.qManifesto.ExecSQL;

             

                 end;
    end;

    begin

    end;
  end;
    //Caso retorno diferente de cStat = 138/137     
       DMMySQL.queryConEmpresa.Close;
       DMMySQL.queryConEmpresa.SQL.Clear;
       DMMySQL.queryConEmpresa.SQL.Add('update empresa set nsu = :nsu');
       DMMySQL.queryConEmpresa.SQL.Add('where id = :id');
       DMMySQL.queryConEmpresa.ParamByName('id').Value := idEmpresa;
       DMMySQL.queryConEmpresa.ParamByName('nsu').Value := ACBrMDe.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU;

end;

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

11/03/2021 - Publicada NT 2014.002 v.1.02d que divulga o web service de distribuição de documentos eletrônicos.

Publicada na aba "Documentos", opção "Notas Técnicas", a versão 1.02d da NT 2014.002, que divulga a especificação técnica do web service de distribuição de documentos eletrônicos.

Assinado por: Receita Federal do Brasil

http://www.nfe.fazenda.gov.br/portal/...tb7RW4%20Y=

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...