Ir para conteúdo
  • Cadastre-se

abarino

Membros
  • Total de ítens

    19
  • Registro em

  • Última visita

Posts postados por abarino

  1. Mas esse tipo de erro o cStat você não trata o cStat, trata o erro, por isso que não entra no "for".

    Esse erro é uma exceção lançada pelo componente.

    Régys,,

     

    Obrigado pelas respostas e ajudas, gostaria que me ensinasse como posso

    sanar este problema !

     

      ACBrNFe1.NotasFiscais.Clear ;
      for i := 0 to GridNotasFIscias do
        Begin
           ActGeraNfe.Execute ;  // Adicona as Notas
        End;
        ACBrNFe1.NotasFiscais.Assinar             ;
        ACBrNFe1.Enviar('1',false) ;  // Faço o envio.

     

        O que preciso fazer aqui depois do enviar, quando enviar 01 só uma nota já

        que quando envio mais de uma dá certo ?

     

        Desde já te agradeço !

  2.  

    Você deve ler sempre os dados de retorno das notas fiscais, seguindo seu exemplo ficaria mais ou menos assim:

    for i := 0 to ACBrNFe1.NotasFiscais.Count -1 do   
    begin
      cStat   := IntToStr(ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.cStat);
      xMotivo := ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.xMotivo;
      nProt   := ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.nProt;
      ChNFe   := ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.chNFe;
    end;

    Caro Regys,

     

    Obrigado pela ajuda, mas troquei para o código que me mostrou

    conforme post abaixo, mas volto a dizer que quando envio uma só nota no lote

    não passa pelo for abaixo !

     

      nRec    := '' ;
      nRec    := ACBrNFe1.WebServices.Retorno.Recibo ;
     
      For i := 0 to ACBrNFe1.NotasFiscais.Count -1 do
        Begin
           nProt := '' ; cStat := '0' ;  chNFe := '' ; xMotivo := '' ;
           cStat      := IntToStr(ACBrNFe1.NotasFiscais.Items.NFe.ProcNFe.cStat) ;
           xMotivo  := ACBrNFe1.NotasFiscais.Items.NFe.procNFe.xMotivo  ;
           nProt     := ACBrNFe1.NotasFiscais.Items.NFe.procNFe.nProt    ;
           ChNFe   := ACBrNFe1.NotasFiscais.Items.NFe.procNFe.chNFe    ;
       end;
     
    Segue tela do erro e meu código em anexo !
     
    Desde já lhe agradeço !

    Parte_Codigo_Envio.txt

    post-2910-0-31784000-1382581466.jpg

  3. Amigos do ACBr

     

    Estou com um problema e gostaria da ajuda de vcs, pois, já tive um caso muito

    sério com um cliente que teve sua mercadoria parada na barreira fiscal.

     

    Envio minhas notas em lote conforme código abaixo :

     

      ACBrNFe1.NotasFiscais.Clear ;
     
      for i := 0 to GridNotasFIscias do
        Begin
           ActGeraNfe.Execute ;  // Adicona as Notas
        End;
     
        ACBrNFe1.NotasFiscais.Assinar             ;
     

        ACBrNFe1.Enviar('1',false) ;  // Faço o envio.

     

      O problema esta aqui neste código abaixo , pois, se envio  2 ou mais Notas funciona OK,

      mas se envio somente 01(uma) Nota no Lote, não consigo pegar o cStat para gravar na

      minha tabela a rejeição. Assim sendo, gera o seguinte problema a nota fica como se estivesse

      pendente, como se ainda não fosse enviada. Permitindo que o usuário a exclua sem saber

      o que ocorreu no retorno.

     

      Resumindo o problema é se envio somente 01 nota no lote, e a mesma conter erro, não consigo pegar

      o cStat.! O Acbr me mostra um messagebox dizendo qual o erro mas não consigo pegar o cStat.

     

      Uso este código abaixo para pegar o retorno logo após Enviar .

     

      For i := 0 to ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Count -1 Do

        Begin
           nProt := '' ; cStat := '0' ;  chNFe := '' ; nRec := '' ; xMotivo := '' ;
           cStat   := IntToStr(ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items.cStat) ;
           xMotivo := ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items.xMotivo  ;
           nRec    := ACBrNFe1.WebServices.Retorno.Recibo ;
           nProt   := ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items.nProt    ;
           ChNFe   := ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items.chNFe    ;
        end;

     

     

     

    Onde estou errando ?

     

    Agradeço a todos.

     

        

      

     

     

     

     

     

  4. Caros Amigos,

     

    Atualizei o ACBR e notei que foi adicionado na unit pcnGerador

    a linha :

     VlrExt := StrToFloat(valor);

     

    Depois da atualização estou tendo problemas na hora de gerar o xml ?

     

    Alguém mais está tendo problemas ?

     

    Obrigado a todos.

     

     

     

  5. Caros Amigos,

     

    Vejo uma grande dificuldade em meus Clientes, de se manterem atualizados com

    as regras tributárias vigentes, ou seja, uma Empresa que tem muitos produtos e

    vende para todo País não sabe qual regra usar, ou seja, com st sem st icms enfim,

    precisa de um contador ou um usuário treinado para preencher as tabelas tributárias

    no sistema.

     

    Entrei em contato com a Cenofisco, na qual esta Empresa já possui as regras tributárias

    em seu site : O usuário digita : NCM - UF Origem - UF Destino e ele te retorna se tem ou

    não ST e os tributos

     

    Enfim, propus a esta Empresa uma forma de ser feito via WebService para integração

    direta com o Sistema. ficando assim sempre atualizada as tabelas tributarias da Empresa

    conveniada. Ex : NCM - UF Origem - UF Destino - Tipo Cliente e ser retornado os tributos.

     

    Alguem tem outra solução ou Empresa que possamos fazer esta integração com ERP.

     

    Agradeço a todos.

     

    Anderson Barino.

  6. Colega Keila,

    Ve se é isso que precisa, copie parte do código do meu sistema, implementa ai :

    ACBrNFe1.Configuracoes.WebServices.Visualizar := false ;

    v_nomenfe := '' ; v_nomepdf := '' ; v_idnota := '' ;

    // Pasta NFe

    DecodeDate(dmnfe.QryPadraoNF_DT_EMISSAO.value, Ano, Mes, Dia);

    v_pastames := formatfloat('00', mes) + inttostr(ano) ;

    v_pastanfe := frmsistema.qryEMPRESASNFE_PATH.Value + v_pastames ;

    if not DirectoryExists(v_pastanfe) then

    ForceDirectories(v_pastanfe);

    ActGerar_XMLNaoAssina.Execute ;

    v_nomenfe := 'NFE'+ formatfloat('000000',dmnfe.QryPadraoNF_NUMERO.value) + '-Proc.xml' ;

    v_nomepdf := 'NFE'+ formatfloat('000000',dmnfe.QryPadraoNF_NUMERO.value) + '.pdf' ;

    ACBrNFe1.NotasFiscais.Clear;

    ACBrNFe1.NotasFiscais.LoadFromString(fnfe) ;

    ACBrNFe1.NotasFiscais.Assinar ;

    ACBrNFe1.Consultar;

    MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Consulta.RetWS);

    memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Consulta.RetornoWS);

    LoadXML(MemoResp, WBResposta);

    ACBrNFe1.NotasFiscais.Items[0].SaveToFile(v_pastanfe + '\' + 'NFE' + formatfloat('000000',dmnfe.QryPadraoNF_NUMERO.Value) + '-Proc.xml') ;

    v_valnfe := ACBrNFe1.NotasFiscais.Items[0].XML ;

    v_idnota := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe ;

    If dmnfe.QryParamsNFeGERAPDF.Value = 'S' Then

    Begin

    ACBrNFe1.NotasFiscais.Clear ;

    ACBrNFeDanfeRaveCB1.PathPDF := v_pastanfe ;

    ACBrNFe1.NotasFiscais.LoadFromString(v_valnfe) ;

    ACBrNFe1.NotasFiscais.ImprimirPDF;

    If FileExists(v_pastanfe + '\' + v_idnota + '.PDF') then

    RenameFile(v_pastanfe + '\' + v_idnota + '.PDF', v_pastanfe + '\' + v_nomepdf);

    end;

    try

    QryGravaXML.Close ;

    QryGravaXML.ParamByName('NF_ID').AsInteger := DMNFe.QryPadraoNF_ID.Value ;

    QryGravaXML.ParamByName('NFEXML').AsString := v_valnfe ;

    QryGravaXML.ExecSQL ;

    except;

    showmessage('Erro ao gravar XML !') ;

    end;

  7. Caros Colegas,

    Devido a muitas dúvidas e contradições sobre a mudança que ocorrerá em 19/11/2012,

    gostaria de saber se para os usuários que não pertençam ao ramo de atividade de combustíveis,

    qual mudança na regra não funcionará mas como é hoje.

    Já li as normas técnicas e já executei os ajustes de qVol, vDup, Validação do Campo Total NFe.

    Minha dúvida é a seguinte :

    Cancelamento, Consulta Nfe : Será como é hoje ou será só através de evento ?

    Resumindo , o que tenho que me preocupar com o que não funcionará como é hoje.

    Grato a Todos,

    Anderson

  8. Caros amigos,

    Não entendi a diferença, ou o porque, das duas funções :

    ACBrNFe1.WebServices.CartaCorrecao.CCeRetorno.retEvento.Items[0].RetInfEvento.nProt

    e

    ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt

    As duas funcionam, e qual a diferença ?

    Outra dúvida, como faço para pegar o retorno tpEvento da função abaixo em string :

    ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.tpEvento

    mas que me retorne : '110110' ;

    Desde já agradeço aos amigos, e desculpe pela minha falta de conhecimento no componente

    Obrigado !

  9. Caros amigos,

    Tenho visto varias formas de pegar o retorno da CCe, não encontrei a forma correta estou fazendo assim, onde esta o erro ?

    Como tem que ficar ?

    ACBrNFe1.EnviarEventoNFe(1);

    MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.EnvEvento.RetWS);

    memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.EnvEvento.RetornoWS);

    LoadXML(MemoResp, WBResposta);

    // Retorno

    Try

    v_stat := ACBrNFe1.WebServices.CartaCorrecao.CCeRetorno.retEvento.Items[0].RetInfEvento.cStat ;

    If v_stat = 135 Then

    Begin

    QryUpdEvento.Close ;

    QryUpdEvento.ParamByName('CODSTATUS').AsInteger := v_stat ;

    QryUpdEvento.ParamByName('PROT').AsString :=

    ACBrNFe1.WebServices.CartaCorrecao.CCeRetorno.retEvento.Items[0].RetInfEvento.nProt ;

    QryUpdEvento.ParamByName('XML').AsString :=

    ACBrNFe1.WebServices.CartaCorrecao.CCeRetorno.retEvento.Items[0].RetInfEvento.XML ;

    QryUpdEvento.ExecSQL ;

    end;

    except

    end ;

    Desde já agradeço aos amigos !

  10. Acabei encontranto a solução :

    Notei que na unit ABCrConfiguracoes do ACBrComum, a linha de comando para selecionar

    o certificado estava setada assim :

    Certs2 := Certs.Select('Certificado(s) Digital(is) disponível(is)', 'Selecione o Certificado Digital para uso no aplicativo', False);

    - então mudei false para true ficando assim:

    Certs2 := Certs.Select('Certificado(s) Digital(is) disponível(is)', 'Selecione o Certificado Digital para uso no aplicativo', True);

    Desta forma o erro não ocorreu mas, e a tela de seleção do certificado abre de forma diferente,

    se alguém tiver alguma consideração a fazer fique a vontade.

    Att

    ABarino.

  11. Acabei encontranto a solução :

    Notei que na unit ABCrConfiguracoes do ACBrComum, a linha de comando para selecionar

    o certificado estava setada assim :

    Certs2 := Certs.Select('Certificado(s) Digital(is) disponível(is)', 'Selecione o Certificado Digital para uso no aplicativo', False);

    - então mudei false para true ficando assim:

    Certs2 := Certs.Select('Certificado(s) Digital(is) disponível(is)', 'Selecione o Certificado Digital para uso no aplicativo', True);

    Desta forma o erro não ocorreu mas, e a tela de seleção do certificado abre de forma diferente,

    se alguém tiver alguma consideração a fazer fique a vontade.

    Att

    ABarino.

  12. Caros amigos,

    Fiz uma nova aplicação no Delphi 7, adicionei o componente ACBRNFe1,

    quando executo o comando :

    edtNumSerie.Text := ACBrNFe1.Configuracoes.Certificados.SelecionarCertificado;

    Me retorna este erro : The requested operation has been cancelled by the user .

    O que tenho que adicionar em minha unit, para não ocorrer tal erro, pois,

    quero usar capicom.

    Obrigado a todos,

    Abs

  13. Caros amigos,

    Fiz uma nova aplicação no Delphi 7, adicionei o componente ACBRNFe1,

    quando executo o comando :

    edtNumSerie.Text := ACBrNFe1.Configuracoes.Certificados.SelecionarCertificado;

    Me retorna este erro : The requested operation has been cancelled by the user .

    O que tenho que adicionar em minha unit, para não ocorrer tal erro, pois,

    quero usar capicom.

    Obrigado a todos,

    Abs

  14. Caros Amigos,

    Na Função AcbrNFSe1.Enviar(), esta função já envia e consulta situação do lote, isso, não nos permite

    pegar o protocolo do lote com a função ConsultaSitLote. o que seria mas fácil na hora de gravar no banco estes dados de erro, pois, o mesmo mostra em messagebox.

    O correto seria enviar e não nesta função já consultar a situação do lote, pois, facilitaria na ora de pegar o protocolo e gravar no nosso banco estes registros de erros e logs .

    Não sei se estou certo, mas vai esta pergunta, ou se algum amigo ajudaria nesta questão.

    Obrigado a todos

  15. Não foi possível localizar o número ordinal 968 na biblioteca de vínculo dinâmico LIBEAY32.DLL

    C:\ACBr\trunk\DLLs\OpenSSL

    libeay32.DLL

    ssleay32.DLL

    copiar as dll's acima para a pasta C:\WINDOWS\SYSTEM32

    Pronto !

×
×
  • 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.