Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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

  • Respostas 76
  • Created
  • Última resposta

Top Posters In This Topic

Postado

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

Postado

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.

  • Moderadores
Postado

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
  • Moderadores
Postado

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
Postado

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.

Postado

Markapollo, o tamanho do arquivo excede 10MB? se sim o PHP não deixa enviar.

 

 

Não, o arquivo é um ZIP de 41k

- Sou desenvolvedor.

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

- Qualquer uma, sou desenvolvedor.

Postado

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.

  • Moderadores
Postado

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
Postado

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.

Postado

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

Postado

Uma informação: não é obrigatório a impressão do CC-e. na verdade não tem nada oficial que regulamente isto, é um evento eletrônico e ninguem pode exigir a sua impressão. Não existe layout nos manuais de orientação.

Cristiano.

  • Moderadores
Postado

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
 

Projeto ACBr

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

 

Postado

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.

Postado

na pasta da CCe tenho dois xml um (Ex: 8101-eve.xml) contendo os dados de retorno e o outro (8101-ped-evento.xml) com os dados da CCe e assinatura, na impressa tenho que informar o 2º arquivo, porque se informar o 1ª  ocorre um erro. o xml de retorno teria que conter o dois conteudos. segue os arquivos

8101-ped-evento.xml

8101-eve.xml

  • 2 meses depois ...
Postado

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.
Postado

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.

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