Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Moderadores
Postado

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_Transparent-02.png
 

 

  • Respostas 76
  • Created
  • Última resposta

Top Posters In This Topic

  • Moderadores
Postado

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_Transparent-02.png
 

 

Postado

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

Eu coloquei esta linha para tentar gravar no diretório da nota fiscal na maquina do cliente, porém se ele já grava automático tranquilo ... vc acha que é este o problema?

Postado

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.

Postado

O erro que da conforme eu disse no post anterior nos arquivos .dbf é:

 

[Microsoft][Driver ODBC para dBase] Erro inesperado causado pelo drivers de banco de dados externo (8458).

Postado

Bom realmente o problema da carta de correção foi o apontado na função SaveToFile, mas não estou conseguindo gravar o XML da carta de correção, ele esta imprimindo tudo certo, mas não esta gravando, o que pode ser feito?

 

Aguardo.

  • 4 semanas depois ...
Postado

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.

Postado

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

Postado

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

Postado

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.

  • 3 meses depois ...
Postado

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";

Postado

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 ?

  • 1 mês depois ...
Postado

Olá a todos!

 

Estou carregando o arquivo XML nos Eventos mas na hora de imprimir aparece a seguinte mensagem:

 

erro_cce.png

 

Alguma idéia?

 

Pensei como em outro caso onde era o arquivo fr3 do fast mas deste caso só temos um arquivo.

  • 1 ano depois...
Postado

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
Postado

Olá ! Verifiquei o comando NFE.ImprimirEventopdf().

 

Na versão 8.6.0 funciona perfeitamente.

Atualizei para a versão 8.10.3 e da erro ao executar o comando.

 

Paulo

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