Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao Encerrar


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

Recommended Posts

  • Consultores

Bom bia Gabriel,

Abra a unit pmdfeConversaoMDFe que esta na pasta: ...\Fontes\ACBrDFe\ACBrMDFe, altere a string 'LayMDFeEvento' por 'RecepcaoEvento' nas functions LayIOutToServico e ServicoToLayOut.

Compile a sua aplicação com a opção Build e tente novamente.

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

Bom bia Gabriel,

Abra a unit pmdfeConversaoMDFe que esta na pasta: ...\Fontes\ACBrDFe\ACBrMDFe, altere a string 'LayMDFeEvento' por 'RecepcaoEvento' nas functions LayIOutToServico e ServicoToLayOut.

Compile a sua aplicação com a opção Build e tente novamente.

 

Olá Italo

fiz o que vc sugeriu, porem ao tentar encerrar o mdfe recebo a seguinte mensagem:

ERRO: 
Erro Interno: 0
Erro HTTP: 4Erro: Requisição não enviada.
0 - A operação foi concluída com êxito

att

Fiz o mesmo, mas o problema persiste. 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia a todos,

A alteração que eu sugeri em ambas as funções foi essa:

    ['MDFeRecepcao', 'MDFeRetRecepcao', 'MDFeConsultaProtocolo',
     'MDFeStatusServico', 'RecepcaoEvento', 'MDFeConsNaoEnc',
     'MDFeDistribuicaoDFe'],
    [ LayMDFeRecepcao, LayMDFeRetRecepcao, LayMDFeConsulta,
      LayMDFeStatusServico, LayMDFeEvento, LayMDFeConsNaoEnc,
      LayMDFeDistDFeInt ] );

 

Foi o que vocês fizeram?

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

  • Consultores

Pessoal,

Se tratando de evento, notei que tem mais algumas correções a serem feitas, por favor atualizem essa unit:

 

ACBrMDFeWebServices.pas

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

  • Consultores

Boa tarde Emerson,

Por favor atualize novamente os arquivos abaixo e tente novamente.

 

ACBrMDFeWebServices.pas

ACBrMDFe.pas

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

  • Consultores

Bom dia Emerson,

Por favor atualize os fontes e teste novamente.

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

Bom dia Italo

Alterei os arquivos ACBrMDFe.pas e o ACBrMDFeWebServices.pas, mas não consegui anexar aqui no post, deu erro de upload.

enviei no seu email.

Teste o envio, cancelamento e encerramento, funcionou perfeitamente

Abraços

ACBrMDFe.pas

no arquivo ACBrMDFeWebservice.pas

alterei a função:

procedure TMDFeEnvEvento.DefinirDadosMsg;
var
  EventoMDFe: TEventoMDFe;
  I, F: integer;
  Lote, Evento, Eventos, EventosAssinados, AXMLEvento: String;
  EventoEhValido: Boolean;
  SchemaEventoMDFe: TSchemaMDFe;
begin
  EventoMDFe := TEventoMDFe.Create;
  try
    EventoMDFe.idLote := FidLote;

    for I := 0 to TMDFeEnvEvento(Self).FEvento.Evento.Count - 1 do
    begin
      with EventoMDFe.Evento.Add do
      begin
        infEvento.tpAmb      := FPConfiguracoes.WebServices.Ambiente;
        infEvento.CNPJ       := FEvento.Evento[i].InfEvento.CNPJ;
        infEvento.chMDFe     := FEvento.Evento[i].InfEvento.chMDFe;
        infEvento.dhEvento   := FEvento.Evento[i].InfEvento.dhEvento;
        infEvento.tpEvento   := FEvento.Evento[i].InfEvento.tpEvento;
        infEvento.nSeqEvento := FEvento.Evento[i].InfEvento.nSeqEvento;

        case InfEvento.tpEvento of
          teCancelamento:
          begin
            SchemaEventoMDFe := schevCancMDFe;
            infEvento.detEvento.nProt := FEvento.Evento[i].InfEvento.detEvento.nProt;
            infEvento.detEvento.xJust := FEvento.Evento[i].InfEvento.detEvento.xJust;
          end;
          teEncerramento:
          begin
            SchemaEventoMDFe := schevEncMDFe;
            infEvento.detEvento.nProt := FEvento.Evento[i].InfEvento.detEvento.nProt;
            infEvento.detEvento.dtEnc := FEvento.Evento[i].InfEvento.detEvento.dtEnc;
            infEvento.detEvento.cUF   := FEvento.Evento[i].InfEvento.detEvento.cUF;
            infEvento.detEvento.cMun  := FEvento.Evento[i].InfEvento.detEvento.cMun;
          end;
          teInclusaoCondutor:
          begin
            SchemaEventoMDFe := schevIncCondutorMDFe;
            infEvento.detEvento.xNome := FEvento.Evento[i].InfEvento.detEvento.xNome;
            infEvento.detEvento.CPF   := FEvento.Evento[i].InfEvento.detEvento.CPF;
          end;
        end;
      end;
    end;

    EventoMDFe.Versao := FPVersaoServico;
    EventoMDFe.GerarXML;

    // Separa os grupos <evento> e coloca na variável Eventos
//    I := Pos('<eventoMDFe ', EventoMDFe.Gerador.ArquivoFormatoXML);
//    Lote := Copy(EventoMDFe.Gerador.ArquivoFormatoXML, 1, I - 1);
//    Eventos := SeparaDados(EventoMDFe.Gerador.ArquivoFormatoXML, 'envEvento');
//    I := Pos('<eventoMDFe ', Eventos);
//    Eventos := Copy(Eventos, I, length(Eventos));

    Eventos := EventoMDFe.Gerador.ArquivoFormatoXML;
    EventosAssinados := '';

    // Realiza a assinatura para cada evento
    while Eventos <> '' do
    begin
      F := Pos('</eventoMDFe>', Eventos);

      if F > 0 then
      begin
        Evento := Copy(Eventos, 1, F + 12);
        Eventos := Copy(Eventos, F + 13, length(Eventos));

        AssinarXML(Evento, 'eventoMDFe', 'infEvento', 'Falha ao assinar o Envio de Evento ');

        EventosAssinados := EventosAssinados + StringReplace(
          FPDadosMsg, '<?xml version="1.0"?>', '', []);
      end
      else
        Break;
    end;

//    F := Pos('?>', EventosAssinados);
//    if F <> 0 then
//      FPDadosMsg := copy(EventosAssinados, 1, F + 1) + Lote +
//        copy(EventosAssinados, F + 2, Length(EventosAssinados)) + '</envEvento>'
//    else
//      FPDadosMsg := Lote + EventosAssinados + '</envEvento>';

    // Separa o XML especifico do Evento para ser Validado.
    AXMLEvento := '<?xml version="1.0" encoding="UTF-8" ?>' +
                  SeparaDados(FPDadosMsg, 'detEvento');

    with TACBrMDFe(FPDFeOwner) do
    begin
      EventoEhValido := SSL.Validar(FPDadosMsg,
                                    GerarNomeArqSchema(FPLayout,
                                                       StringToFloatDef(FPVersaoServico, 0)),
                                    FPMsg) and
                        SSL.Validar(AXMLEvento,
                                    GerarNomeArqSchemaEvento(SchemaEventoMDFe,
                                                             StringToFloatDef(FPVersaoServico, 0)),
                                    FPMsg);
    end;

    for I := 0 to FEvento.Evento.Count - 1 do
      FEvento.Evento[I].InfEvento.id := EventoMDFe.Evento[I].InfEvento.id;
  finally
    EventoMDFe.Free;
  end;
end;

 

Editado por Emerson Teixeira
Link para o comentário
Compartilhar em outros sites

Olá Italo.

Altererei tbm o arquivo ACBrMDFeDAMDFeClass.pas, não estava criando o path do pdf

function TACBrMDFeDAMDFeClass.GetPathPDF(Data: TDateTime = 0; CNPJ : String = ''): String;
begin
  Result := TACBrMDFe(FACBrMDFe).Configuracoes.Arquivos.GetPath(FPathPDF, 'MDFe', CNPJ, Data);

//  if EstaVazio(FPathPDF) then
//     if Assigned(FACBrMDFe) then
//        FPathPDF := TACBrMDFe(FACBrMDFe).Configuracoes.Arquivos.PathSalvar;

  if NaoEstaVazio(Result) then
     if not DirectoryExists(Result) then
        ForceDirectories(Result);

//  Result := PathWithDelim(FPathPDF);
end;

Attl, abraços

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Emerson,

Isso é estranho, pois na function GetPath que encontra-se em ACBrDFeConfiguracoes no final ela cria a pasta.

function TArquivosConf.GetPath(APath: String; ALiteral: String; CNPJ: String;
  Data: TDateTime): String;

(...)


  if not DirectoryExists(Dir) then
    ForceDirectories(Dir);

  Result := Dir;
end;

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