Ir para conteúdo
  • Cadastre-se

dev botao

Impressao CCe


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

Recommended Posts

  • Moderadores

Bom pelo erro posso dizer que ali onde ele está tentando usar o indice 0 simplismente não existe

esse código acima postado é o que tem em sua aplicação? senão for poste o seu código com todos os detalhes assim é possível indicar um erro

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

  • Respostas 76
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Posted Images

  • Moderadores

sim o que quis dizer é verificar lá no seu código

if ACBrNFe.EnviarEventoNFe(NumeroLote) then
begin
  with ACBrNFe.WebServices.EnvEvento do
  begin
    if not(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat in [135, 136]) then

 

ACBrNFe.WebServices.EnvEvento.EventoRetorno.retEvento.Items

possui alguma informação, pois acredito que o erro dispare ali por não ter o indice, quer dizer não ter preenchido o componente com o retorno

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

sim mas isto é a resposta que o sefaz deve fazer ao evento certo?

 

meu codigo esta igual a este que te repassei.

 

Segue meu codigo:

 

 

var codufemp, NumeroLote, CodigoStatus: integer;
    XMLCCe, MotivoStatus, correcao, arq_nfe, NumeroProtocolo: string;
    DataHoraEvento: TDateTime;
begin
    if MessageDlg('Deseja enviar Carta de Correção para essa Nota Fiscal?',mtconfirmation,[mbYes,mbNo],0) = mryes then
    begin
        // numero do lote de envio
        NumeroLote := StrToInt(FormatDateTime('yymmddhhmm', NOW));
 
        NFe.EventoNFe.Evento.Clear;
        NFe.EventoNFe.idLote := NumeroLote;
 
        // preenchimento dos dados da carta de correção
        with NFe.EventoNFe.Evento.Add do
        begin
            infEvento.chNFe      := qryNfTransNROCHAVENFE.AsString;
            infEvento.CNPJ       := funcoes.TiraCaracter(DM.qryEmpresaCNPJ.AsString);
            infEvento.dhEvento   := Now;
            infEvento.tpEvento   := teCCe;
 
            With DM.qryAux1 do
            Begin
                Close;
                Sql.Clear;
                Sql.Add('SELECT (CASE WHEN PROTOCOLO_CCE IS NOT NULL THEN 2 ELSE 1 END) AS SEQ FROM NOTA_FISCAL '
                       +'WHERE NRONF = '+qryNfTransNRONF.AsString+' '
                       +'  AND NROCHAVENFE = '''+qryNfTransNROCHAVENFE.AsString+''' '
                       +'  AND CODEMPRESA = '+UPrincipal.CodEmpresa+' ');
                Open;
 
                infEvento.nSeqEvento := DM.qryAux1.FieldByName('SEQ').AsInteger;
            End;
 
            infEvento.detEvento.descEvento := 'Carta de Correção';
 
            if not(InputQuery('Informe o motivo da carta de correção', 'Motivo', correcao)) then
                 exit;
 
            infEvento.detEvento.xCorrecao := correcao;
 
            infEvento.detEvento.xCondUso := 'A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. '
                                          +'7o do Convenio S/N, de 15 de dezembro de 1970 e pode ser utilizada '
                                          +'para regularizacao de erro ocorrido na emissao de documento fiscal, '
                                          +'desde que o erro nao esteja relacionado com: I - as variaveis que '
                                          +'determinam o valor do imposto tais como: base de calculo, aliquota, '
                                          +'diferenca de preco, quantidade, valor da operacao ou da prestacao; '
                                          +'II - a correcao de dados cadastrais que implique mudanca do remetente '
                                          +'ou do destinatario; III - a data de emissao ou de saida. ';
        end;
 
        // envio da carta de correção
        if NFe.EnviarEventoNFe(NumeroLote) then
        begin
            with NFe.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;
 
                NFe.Configuracoes.Geral.PathSalvar := DM.qryEmpresaPATHARQNFE.AsString;
                NFe.NotasFiscais.Items[0].SaveToFile;
 
                mResp.Lines.Add('Data e hora do evento: '+FormatDateTime('dd/MM/yyyy', DataHoraEvento));
                mResp.Lines.Add('Protocolo de envio CC-e: '+NumeroProtocolo);
                mResp.Lines.Add('Arquivo XML: '+XMLCCe);
                mResp.Lines.Add('Status: '+IntToStr(CodigoStatus)+' - '+MotivoStatus);
 
                ACBrNFeDANFERaveCB1.MostrarPreview := True;
 
                NFe.NotasFiscais.Clear;
                NFe.NotasFiscais.LoadFromString(qryNfTransPATHNFE.AsString);
 
                NFe.EventoNFe.Evento.Clear;
                NFe.EventoNFe.LerXMLFromString(XMLCCe);
 
                NFe.ImprimirEvento;
 
                //Geração do arquivo PDF
 
                NFe.DANFE.PathPDF := DM.qryEmpresaPATHARQPDF.AsString;
                ACBrNFeDANFERaveCB1.MostrarPreview := True;
 
                NFe.NotasFiscais.Clear;
                NFe.NotasFiscais.LoadFromString(qryNfTransPATHNFE.AsString);
 
                NFe.EventoNFe.Evento.Clear;
                NFe.EventoNFe.LerXMLFromString(XMLCCe);
 
                NFe.ImprimirEventoPDF;
 
                With qryAux1 do
                Begin
                    Close;
                    Sql.Clear;
                    Sql.Add('UPDATE NOTA_FISCAL '
                           +'   SET PROTOCOLO_CCE = '''+NumeroProtocolo+''', '
                           +'       ARQCCE = '''+arq_nfe+''' '
                           +'WHERE NRONF = '+qryNfTransNRONF.AsString+' '
                           +'  AND NROCHAVENFE = '''+qryNfTransNROCHAVENFE.AsString+''' '
                           +'  AND CODEMPRESA = '+UPrincipal.CodEmpresa+' ');
                    ExecSql;
 
                    DM.transLoteamento.CommitRetaining;
                End;
            end;
        end
        else
        begin
            with NFe.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;
    end;
end;
Link para o comentário
Compartilhar em outros sites

  • Moderadores

confere comigo por isso lhe pedi o código de sua aplicação

NFe.NotasFiscais.Items[0].SaveToFile;

você tem uma nf-e carregada no componente? pois não consegui achar em seu código o local onde carrega o XML

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

Então cara esse é outro problema eu tenho uma espécie de robo que le uns arquivos .dbf e na maquina do cliente como é win xp roda tranquilo e na minha máquina que preciso debugar meu windows é o 7 64 bits ai ele não lê os .dbf da erro que não pode abrir os dados e tal.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...

Estou tentando imprir a CC-e mas está apresentando o seguinte erro no ACBrNFeMonitor:

 

"ERRO: Imprimir"

 

Comando enviado:

" nfe.ImprimirEvento(C:\NE\201302\43130215540455000177550000000205441388907262-ProcEventoNFe.xml,C:\NE\201302\43130215540455000177550000000205441388907262-nfe.xml) "

Cristiano.

Link para o comentário
Compartilhar em outros sites

Pessoal boa tarde, tenho lido um monte de respostas iguais em relação a impressão de eventos, o qual até hoje pode ser impresso no modo RAVECB para quem usa o NfeMonitor, então, como eu não tenho como alterar em tempo de execução, ou ao menos não achei como fazer a alteração de RAVE para RAVECB em tempo de execução para a impressão do evento, pergunto:

Seria possivel habilitar, implementar no comando NFE.ImprimirEvento(ArquivoEvento, Arquivo xml Nfe, flag tipo de impressão rave/ravecb) uma opção de vc poder escolher qual modo vc quer imprimir, ou seja ao vc escolher, o NfeMonitor gerar o relatório conforme o tipo da escolha. Não sei quanto a dificuldade dos colaboradores em desenvolver, caso não seja, poderia ser extendido inclusive para o Danfe, assim teríamos uma padrão no NfeMonitor em execução e outro em tempo que poderíamos chamar/habilitar somente para uma operação sem que altere o padrão.

 

[]S,

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

Link para o comentário
Compartilhar em outros sites

Juliomar

 

Boa tarde

 

Agradeço a informação e sei do empenho que todos tem em disponibilizar soluções mais abragente e confiável, porém,  sinceramente o processo é luso, ainda mais,  diante dos problemas que o nosso amigo Kiko tem encontrado com o LOGO, melhor continuar com o processo manual, ou seja, gerar a carta no servidor e efetuar  a sua impressão no modo local na estação do usuário,  mesmo que o processo seja somente por alguns segundo, ao alterar esta configuração no servidor em tempo de execução, posso prejudicar os demais processos concorrentes.

Vou estudar a situação e ver se consigo achar alguma maneira de manobrar a situação.

 

[]s,

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

Link para o comentário
Compartilhar em outros sites

Pessoal boa tarde, tenho lido um monte de respostas iguais em relação a impressão de eventos, o qual até hoje pode ser impresso no modo RAVECB para quem usa o NfeMonitor, então, como eu não tenho como alterar em tempo de execução, ou ao menos não achei como fazer a alteração de RAVE para RAVECB em tempo de execução para a impressão do evento, pergunto:

Seria possivel habilitar, implementar no comando NFE.ImprimirEvento(ArquivoEvento, Arquivo xml Nfe, flag tipo de impressão rave/ravecb) uma opção de vc poder escolher qual modo vc quer imprimir, ou seja ao vc escolher, o NfeMonitor gerar o relatório conforme o tipo da escolha. Não sei quanto a dificuldade dos colaboradores em desenvolver, caso não seja, poderia ser extendido inclusive para o Danfe, assim teríamos uma padrão no NfeMonitor em execução e outro em tempo que poderíamos chamar/habilitar somente para uma operação sem que altere o padrão.

 

[]S,

 

Bem lembrado Jorge. Mesmo fazendo o que está no post (do Kiko) citado pelo Juliomar, fica mais complicado e também tem o caso da impressão do cancelamento que fica mais complicado ainda. Seria interessante ter essa versatilidade ou simplesmente imprimir os eventos modo Rave.

Cristiano.

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...

Li todo o tópico pra ver se alguém tinha passado pelo mesmo problema que eu e me parece que sim, porém devem ter contornado o problema de alguma forma e não postaram a solução.

Mais de um usuário postou o fato de não estar mostrando o status, protocolo e data/hora de registro, parece que não ficou claro pro pessoal aqui.

Caso eu carregue o XML da NFe autorizada e o XML da CCe autorizada a impressão sai perfeita.

 

O problema só ocorre se tentar imprimir logo que recebe a autorização da CCe, ou seja, fazendo essa sequencia:

1 - Carrega o XML da NFe autorizada;

2 - Monta e envia o evento da CCe;

3 - recebe o retorno de Evento registrado OK;

4 - Manda imprimir o evento;

 

Por hora contornei o problema carregando tudo novamente (os 2 XML).

 

Nessa brincadeira descobri que não tem um "Clear" para os eventos, tive que modificar a TEventoNFe.LerXMLFromString dando um "FEvento.Clear";

Link para o comentário
Compartilhar em outros sites

Li todo o tópico pra ver se alguém tinha passado pelo mesmo problema que eu e me parece que sim, porém devem ter contornado o problema de alguma forma e não postaram a solução.

Mais de um usuário postou o fato de não estar mostrando o status, protocolo e data/hora de registro, parece que não ficou claro pro pessoal aqui.

Caso eu carregue o XML da NFe autorizada e o XML da CCe autorizada a impressão sai perfeita.

 

O problema só ocorre se tentar imprimir logo que recebe a autorização da CCe, ou seja, fazendo essa sequencia:

1 - Carrega o XML da NFe autorizada;

2 - Monta e envia o evento da CCe;

3 - recebe o retorno de Evento registrado OK;

4 - Manda imprimir o evento;

 

Por hora contornei o problema carregando tudo novamente (os 2 XML).

 

Nessa brincadeira descobri que não tem um "Clear" para os eventos, tive que modificar a TEventoNFe.LerXMLFromString dando um "FEvento.Clear";

 

Sério que é só comigo que acontece isso ?

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • 1 ano depois...

Ola a todos, boa tarde!

 

Pessoal e o texto abaixo resolveu? 

 

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'.
 
Estou com o mesmo problema, e não li no post a solução deste problema.
 
Obrigado
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Oduvaldo,

 

Você esta usando o componente ACBrNFe?

 

Se sim, é estranho esse erro, uma vez que ele monta o atributo ID conforme consta no manual e notas técnicas.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

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