Jump to content

diadoacbr

Impressao CCe


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

Recommended Posts

Ola Regis, boa tarde. eu que agradeço seu empenho, só mais um probleminha, a correção da busca do pdf da CCe ainda ficou errada, esta ficanco assim c:\Temp\Danfe\C:\Temp\Danfe....... esta repetindo o comando como destaquei abaixo...

 

    NomeArq := TACBrNFe(ACBrNFe).EventoNFe.Evento[0].InfEvento.TipoEvento;
    NomeArq := NomeArq + TACBrNFe(ACBrNFe).EventoNFe.Evento[0].InfEvento.chNFe;
    NomeArq := PathWithDelim(Self.PathPDF) + NomeArq + 'evento.pdf';

 

    dmDanfe.frxPDFExport.FileName := PathWithDelim(Self.PathPDF) + NomeArq + '.pdf';
    dmDanfe.frxReport.Export(dmDanfe.frxPDFExport);

 

Desde ja agradeço sua atenção e graças a Deus vamos curtir o fim de semana, kkkk

 

Abracos e bom fim de semana a todos...

 

Luciano...

Link to comment
Share on other sites

  • Replies 76
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Bom dia,

 

Pessoal não consigo imprimir a CCe completa veja  a imagem, falta alguns campos.

ACBr esta na Versão: 0.4.0a, uso o ACBrNFeDANFERaveCB, seleciono o Xml  da NFe  e o Xml do retorno do evento e sai desta mameira, so consigo se pedir a consulta da NFe, para poder seleciontar o Xml de retorno da situacao da nfe e por fim  Xml do retorno do evento. Tem outra forma de imprimir ou vou ter que fazer a consulta da NFe toda vez que for imprimir e enviar por e-mail, pois o aquivo em anexo PDF esta como a imagem.

 

Obrigado

post-1051-0-59947500-1355145508_thumb.jp

Link to comment
Share on other sites

Bom dia,

 

Pessoal não consigo imprimir a CCe completa veja  a imagem, falta alguns campos.

ACBr esta na Versão: 0.4.0a, uso o ACBrNFeDANFERaveCB, seleciono o Xml  da NFe  e o Xml do retorno do evento e sai desta mameira, so consigo se pedir a consulta da NFe, para poder seleciontar o Xml de retorno da situacao da nfe e por fim  Xml do retorno do evento. Tem outra forma de imprimir ou vou ter que fazer a consulta da NFe toda vez que for imprimir e enviar por e-mail, pois o aquivo em anexo PDF esta como a imagem.

 

Obrigado

Poste também o XML da CCe e da NFe para ajudar no "diagnóstico"

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

Link to comment
Share on other sites

  • Moderadores

Bom dia,

 

Pessoal não consigo imprimir a CCe completa veja  a imagem, falta alguns campos.

ACBr esta na Versão: 0.4.0a, uso o ACBrNFeDANFERaveCB, seleciono o Xml  da NFe  e o Xml do retorno do evento e sai desta mameira, so consigo se pedir a consulta da NFe, para poder seleciontar o Xml de retorno da situacao da nfe e por fim  Xml do retorno do evento. Tem outra forma de imprimir ou vou ter que fazer a consulta da NFe toda vez que for imprimir e enviar por e-mail, pois o aquivo em anexo PDF esta como a imagem.

 

Obrigado

Você está utilizando o XML da CC-e sem autorização, você deve usar o XML dela depois de autorizada.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link to comment
Share on other sites

  • Moderadores

Ola Regis, boa tarde. eu que agradeço seu empenho, só mais um probleminha, a correção da busca do pdf da CCe ainda ficou errada, esta ficanco assim c:\Temp\Danfe\C:\Temp\Danfe....... esta repetindo o comando como destaquei abaixo...

 

    NomeArq := TACBrNFe(ACBrNFe).EventoNFe.Evento[0].InfEvento.TipoEvento;

    NomeArq := NomeArq + TACBrNFe(ACBrNFe).EventoNFe.Evento[0].InfEvento.chNFe;

    NomeArq := PathWithDelim(Self.PathPDF) + NomeArq + 'evento.pdf';

 

    dmDanfe.frxPDFExport.FileName := PathWithDelim(Self.PathPDF) + NomeArq + '.pdf';

    dmDanfe.frxReport.Export(dmDanfe.frxPDFExport);

 

Desde ja agradeço sua atenção e graças a Deus vamos curtir o fim de semana, kkkk

 

Abracos e bom fim de semana a todos...

 

Luciano...

Opa, desculpe a falha, dormi feio nessa, hehe.

Acertado e enviado novamente.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link to comment
Share on other sites

Galera, estou disponibilizando a impressão de eventos para o Fortes, realizei alguns testes e foi bem tranquilo, desenvolvi ele baseado no RAVE.

 

Segue junto alterações que possibilitam saber o nome do arquivo xml gerado pelo evento, bem como uma propriedade XML contendo a string do xml.  Espero que seja útil para vocês assim como é para mim.

 

----

OBs: não estou conseguindo anexar arquivos, só aparece "Erro O envio falhou"

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

Link to comment
Share on other sites

Regys


como eu consigo o XML da CC-e com autorização, sendo depois que envio busco o protocolo e a data da autorização para ser gravado no BD.

 

estou fazendo desta maneita

*****

NFEletronica.EventoNFe.Evento.Clear;
with NFEletronica.EventoNFe.Evento.Add do
begin
    infEvento.chNFe := FCartaCorrecao.ChaveNFe;
    infEvento.CNPJ   := FCartaCorrecao.CPF_CNPJ;
    infEvento.dhEvento := IncMinute(now,5);
    infEvento.tpEvento := teCCe;
    infEvento.nSeqEvento := CD_CCe.FieldByName('CODIGO').AsInteger;
    infEvento.detEvento.xCorrecao := Trim(CD_CCe.FieldByName('CORRECAO').AsString);
end;
{ Envia carta de correção }
iLote := StrToInt(frmNfe.cdsNFE.FieldByName('NUMNF').AsString+FormatFloat('00',CD_CCe.FieldByName('CODIGO').AsFloat));
NFEletronica.EnviarEventoNFe(iLote);

com esse processo ja não teria o XML da CCe autorizado.

Link to comment
Share on other sites

  • Moderadores

Segue exemplo retirado do artigo: http://www.regys.com.br/como-enviar-uma-carta-de-correcao-utilizando-o-acbrnfe/
 

// Adicione a unit pcnConversao ao uses.
 
// numero do lote de envio
NumeroLote := StrToInt(FormatDateTime('yymmddhhmm', NOW));
 
// preenchimento dos dados da carta de correção
ACBrNFe.EventoNFe.Evento.Clear;
ACBrNFe.EventoNFe.idLote := NumeroLote;
 
with ACBrNFe.EventoNFe.Evento.Add do
begin
  infEvento.chNFe      := ChaveNFe;
  infEvento.CNPJ       := CnpjEmitente;
  infEvento.dhEvento   := Now;
  infEvento.tpEvento   := teCCe;
  infEvento.nSeqEvento := <Numero Sequencial>; 
  infEvento.detEvento.xCorrecao := <Texto da Carta de Correção>;
end;
 
// envio da carta de correção
if ACBrNFe.EnviarEventoNFe(NumeroLote) then
begin
  with ACBrNFe.WebServices.EnvEvento do
  begin
    if not(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat in [135, 136]) then
    begin
      raise EDatabaseError.CreateFmt(
        'Ocorreu o seguinte erro ao enviar a carta de correção:'  + sLineBreak +
        'Código:%d' + sLineBreak +
        'Motivo: %s', [
          EventoRetorno.retEvento.Items[0].RetInfEvento.cStat,
          EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo
      ]);
    end;
 
    // retornos 
    DataHoraEvento  := EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;
    NumeroProtocolo := EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;
    XMLCCe          := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
    CodigoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;
    MotivoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo;
  end;
end
else
begin
  with ACBrNFe.WebServices.EnvEvento do
  begin
    raise Exception.Create(
      'Ocorreram erros ao enviar a Carta de Correção:' + sLineBreak +
      'Lote: '     + IntToStr(EventoRetorno.idLote) + sLineBreak +
      'Ambiente: ' + TpAmbToStr(EventoRetorno.tpAmb) + sLineBreak +
      'Orgao: '    + IntToStr(EventoRetorno.cOrgao) + sLineBreak +
      sLineBreak +
      'Status: '   + IntToStr(EventoRetorno.cStat) + sLineBreak +
      'Motivo: '   + EventoRetorno.xMotivo
    );
  end;
end;

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link to comment
Share on other sites

Regys

 

....EventoRetorno.retEvento.Items[0].RetInfEvento.XML esta linha esta retornando vazio, como faco para salvar o xml do evento ser salvo com os dados do retorno como o quadro abaixo.

 

  </evento>
  <retEvento versao="1.00">
   <infEvento>
    <tpAmb>2</tpAmb>
    <cOrgao>31</cOrgao>
    <cStat>135</cStat>
    <xMotivo>Evento registrado e vinculado a NF-e.</xMotivo>
    <chNFe>31121138709408000100550010000000731000000732</chNFe>
    <tpEvento>110110</tpEvento>
    <xEvento>CARTA DE CORRECAO</xEvento>
    <nSeqEvento>1</nSeqEvento>
    <CNPJDest>05132855000190</CNPJDest>
    <dhRegEvento>2012-11-12T15:12:50-02:00</dhRegEvento>
    <nProt>131120032456732</nProt>
   </infEvento>
  </retEvento>

 

quando eu envio a CCe o xml nao consta o dados de retorno por isto a impressao nao sai os dados.

Link to comment
Share on other sites

Segue o codigo e o anexo do xml da CCe não sei o que esta errado, acbr esta atualizado, os schemas estou usando o da pasta de exemplo do ACBr.

 

  try
    loQuery := TIBQuery.Create(nil);
    with dmNFE_TR do
    try
      //
      NFEletronica.EventoNFe.Evento.Clear;
      with NFEletronica.EventoNFe.Evento.Add do
      begin
        infEvento.chNFe := FCartaCorrecao.ChaveNFe;
        infEvento.CNPJ   := FCartaCorrecao.CPF_CNPJ;
        infEvento.dhEvento := IncMinute(now,5);
        infEvento.tpEvento := teCCe;
        infEvento.nSeqEvento := CD_CCe.FieldByName('CODIGO').AsInteger;
        infEvento.detEvento.xCorrecao := Trim(CD_CCe.FieldByName('CORRECAO').AsString);
      end;
      { Envia carta de correção }
      iLote := StrToInt(frmNfe.cdsNFE.FieldByName('NUMNF').AsString+FormatFloat('00',CD_CCe.FieldByName('CODIGO').AsFloat));
      NFEletronica.EnviarEventoNFe(iLote);
      //*** Autorizado
      if (NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat = 135) then
      begin
        sChave_CCe := Copy(NFEletronica.WebServices.EnvEvento.EventoRetorno.InfEvento.id,3,54);
        sProtocolo := NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;
        dData_Autorizacao := NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;
        iStatus := NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;
        sHistorico := NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo;
        sXMLCCe := NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
 

        ShowMessage(sXMLCCe);  retorna vazio


        { Salvo o Xml autorizado ca CCe }
//        if NFEletronica.EventoNFe.LerXMLFromString(sXML) then
//          NFEletronica.EventoNFe.GerarXML;
        {}
        with loQuery, loQuery.Sql do
        begin
          Close;
          Clear;
          Database := VI_CCe.Database;
          Transaction := VI_CCe.Transaction;
          Add('UPDATE TB_CARTA_CORRECAO               ');
          Add('SET                                    ');
          Add('  DATA      = :DATA_AUTORIZACAO,       ');
          Add('  CHAVE_CCE = :CHAVE_CCE,              ');
          Add('  PROTOCOLO = :PROTOCOLO,              ');
          Add('  STATUS    = :STATUS,                 ');
          Add('  HISTORICO = :HISTORICO               ');
          Add('WHERE                                  ');
          Add('  CODEMP = :CODEMP                     ');
          Add('  AND COD_ENTRADA_SAIDA = :CODENTSAI   ');
          Add('  AND TIPO = :TIPO                     ');
          ParamByName('CODEMP')   .AsInteger  := StrToInt(CODEMP_COR);
          ParamByName('CODENTSAI').AsInteger  := CD_CCe.FieldByName('COD_ENTRADA_SAIDA').AsInteger;
          ParamByName('TIPO').AsString        := CD_CCe.FieldByName('TIPO').AsString;
          ParamByName('CHAVE_CCE').AsString   := sChave_CCe;
          ParamByName('PROTOCOLO').AsString   := sProtocolo;
          ParamByName('DATA_AUTORIZACAO').AsDatetime := dData_Autorizacao;
          ParamByName('STATUS').AsInteger := iStatus;
          ParamByName('HISTORICO').AsString := sHistorico;
          //***
          try
            if loQuery.Transaction.InTransaction then
              loQuery.Transaction.Rollback
            else
              loQuery.Transaction.StartTransaction;
            ExecSQL;
            loQuery.Transaction.Commit;
          except
            loQuery.Transaction.Rollback;
          end;
        end;
      end
      else
      begin
        ExibirMsg('Código: '+IntToStr(NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat)+' - '+
                             NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo);
        Exit;
      end;
    finally
      FreeAndNil(loQuery);
      CD_CCe.Refresh;
    end
  except
    on E : Exception do
       Raise Exception.Create(E.Message);
  end;
  //***
  with dmNFE_TR do
  begin
    ExibirMsg('Envio realizado com sucesso...'+#10#13+#10#13+
              'Data Hora recebimento: '+DateToStr(NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento)+#10#13+
              'Status: '+               IntToStr (NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat)+#10#13+
              'Motivo: '+                         NFEletronica.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo,
              'Envio de Nota Fiscal Eletrônica');
  end;
 

 

 

7302-ped-evento.xml

Link to comment
Share on other sites

  • Consultores

Correto, só tem uma que foi implementada para que o pessoal que necessita ter um papel na mão possa imprimir, que no caso uma boa parte dos contadores

mas não tem mesmo nada regulamentado para imprimir a carta de correção

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

Realmente não da certo, baixei o ACBr do zero e instalei, e continua o mesmo não consigo imprimir a CCe com o status, protocolo e data de recebimento preenchidos. Este linha (EventoRetorno.retEvento.Items[0].RetInfEvento.XML) sempre retorna vazio.

Link to comment
Share on other sites

  • Moderadores

Fiz o teste aqui, não é bem um modelo de impressão, na verdade eles mostram os dados da carta de correção em uma página web e você pode imprimir essa página, pode ser tomado como base para quem não quiser usar o modelo proposto no ACBrNFe.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link to comment
Share on other sites

  • 2 months later...

Boa tarde a todos,

 

Estou fazendo a carta de correção eletronica e toda vez que vou enviar ele da essa mensagem de erro:

 

 

Falha na validação dos dados do Envio de Evento 
'ID110110351301639840660001835500100000362310000301' viola a restrição pattern de 'ID[0-9]{52}'.
Falha da análise do atributo 'Id' com valor 'ID110110351301639840660001835500100000362310000301'.
 
O que poderá ser?
 
Aguardo.
Link to comment
Share on other sites

Segue exemplo retirado do artigo: http://www.regys.com.br/como-enviar-uma-carta-de-correcao-utilizando-o-acbrnfe/

 

// Adicione a unit pcnConversao ao uses.
 
// numero do lote de envio
NumeroLote := StrToInt(FormatDateTime('yymmddhhmm', NOW));
 
// preenchimento dos dados da carta de correção
ACBrNFe.EventoNFe.Evento.Clear;
ACBrNFe.EventoNFe.idLote := NumeroLote;
 
with ACBrNFe.EventoNFe.Evento.Add do
begin
  infEvento.chNFe      := ChaveNFe;
  infEvento.CNPJ       := CnpjEmitente;
  infEvento.dhEvento   := Now;
  infEvento.tpEvento   := teCCe;
  infEvento.nSeqEvento := <Numero Sequencial>; 
  infEvento.detEvento.xCorrecao := <Texto da Carta de Correção>;
end;
 
// envio da carta de correção
if ACBrNFe.EnviarEventoNFe(NumeroLote) then
begin
  with ACBrNFe.WebServices.EnvEvento do
  begin
    if not(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat in [135, 136]) then
    begin
      raise EDatabaseError.CreateFmt(
        'Ocorreu o seguinte erro ao enviar a carta de correção:'  + sLineBreak +
        'Código:%d' + sLineBreak +
        'Motivo: %s', [
          EventoRetorno.retEvento.Items[0].RetInfEvento.cStat,
          EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo
      ]);
    end;
 
    // retornos 
    DataHoraEvento  := EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;
    NumeroProtocolo := EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;
    XMLCCe          := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
    CodigoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;
    MotivoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo;
  end;
end
else
begin
  with ACBrNFe.WebServices.EnvEvento do
  begin
    raise Exception.Create(
      'Ocorreram erros ao enviar a Carta de Correção:' + sLineBreak +
      'Lote: '     + IntToStr(EventoRetorno.idLote) + sLineBreak +
      'Ambiente: ' + TpAmbToStr(EventoRetorno.tpAmb) + sLineBreak +
      'Orgao: '    + IntToStr(EventoRetorno.cOrgao) + sLineBreak +
      sLineBreak +
      'Status: '   + IntToStr(EventoRetorno.cStat) + sLineBreak +
      'Motivo: '   + EventoRetorno.xMotivo
    );
  end;
end;

Boa tarde,

 

segui a orientação que foi dada acima pelo regys.silveira e quando tento emitir e imprimir da erro List index in bound (0) ou algo semelhante, não consigo gravar o xml da carta de correção e muito menos imprimi-la, seria possivel alguem me ajudar? Aguardo.

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.