Ir para conteúdo
  • Cadastre-se

dev botao

Distribuição DFe (Manifestar) como Serviço


Recommended Posts

Bom dia a todos.
Tenho um serviço de Windows que executa determinadas funções em horários específicos. Um desses serviços e a Distribuição DFe por último NSU que funciona perfeitamente dentro de uma TThread (rotina retirada de curso do ACBr).
O problema é que eu implementei a Manifestação (Ciência, Confirmação...) no serviço também, respondendo a um Método externo onde é passado um JSon via verbo POST contendo (Lote, Chaves, CNPJ e o tipo de evento de cada chave), mas o sistema trava no momento em que o evento é enviado (ACBrNFe1.EnviarEvento(FLote)), ate dar tempo limite esgotado no Metodo. E se eu chamo o evento via Postman fica o dia todo esperando a resposta.
JSon do Método:

      [
        {
          "lote": 1,
          "chaves": [
            {
              "id": 1,
              "chNfe": "32240433009911001704550260013106541768710493",
              "cnpj": "33009911001701",
              "tpEvento": "ciencia",
              "dtEvento": ""
            },
            {
              "id": 2,
              "chNfe": "32240433009911001704550260013106541768710494",
              "cnpj": "27151620000182",
              "tpEvento": "confirma",
              "dtEvento": ""
            }
          ]
        }
      ]
 

Código delphi:

        if Assigned(FChave_JSon) then
        begin
          ACBrNFe1.EventoNFe.Evento.Clear;
          for J := 0 to (FChave_JSon.Size - 1) do
          begin
            FChNFe := FChave_JSon[J].GetValue<String>('chnfe','');
            FCnpj := FChave_JSon[J].GetValue<String>('cnpj','');
            FTpEvento := FChave_JSon[J].GetValue<String>('tpevento','');
            fDtEvento := FChave_JSon[J].GetValue<String>('dtevento','');

            SalvarLog(FChNFe + ' - ' + FCnpj + ' - ' + FTpEvento + ' - ' + fDtEvento,1,FEnderLog);

            {$Region 'Adicionando as chaves ao lote'}
              with ACBrNFe1.EventoNFe.Evento.New do
              begin
                InfEvento.cOrgao := 91;
                InfEvento.chNFe := FChNFe;
                InfEvento.CNPJ := FCnpj;
                InfEvento.dhEvento := Now;
                if FTpEvento = 'ciencia' then
                  InfEvento.tpEvento := teManifDestCiencia
                else if FTpEvento = 'confirma' then
                  InfEvento.tpEvento := teManifDestConfirmacao
                else if FTpEvento = 'desconhece' then
                  InfEvento.tpEvento := teManifDestDesconhecimento
                else if FTpEvento = 'nrealizada' then
                begin
                  InfEvento.tpEvento := teManifDestOperNaoRealizada;
                  InfEvento.detEvento.xJust := fDtEvento;
                end;

              end;
            {$EndRegion 'Adicionando as chaves ao lote'}
          end;

          ACBrNFe1.EnviarEvento(FLote);

          with ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento do
          begin
            SalvarLog('cStat ' + cStat.ToString,1,FEnderLog);

            if cStat = 135 then
              Codigo := 200
            else
              Codigo := 500;

            Mensagem := Mensagem + '[';
            Mensagem := Mensagem + '{';
            Mensagem := Mensagem + '"cStat":'+cStat.ToString+',';
            Mensagem := Mensagem + '"retorno": [';
            Mensagem := Mensagem + '{';
            Mensagem := Mensagem + '"id":"'+Id+'",';
            Mensagem := Mensagem + '"tpAmb":"'+TpAmbToStr(tpAmb)+'",';
            Mensagem := Mensagem + '"verAplic":"'+verAplic+'",';
            Mensagem := Mensagem + '"cOrgao":"'+IntToStr(cOrgao)+'",';
            Mensagem := Mensagem + '"cStat":"'+IntToStr(cStat)+'",';
            Mensagem := Mensagem + '"xMotivo":"'+xMotivo+'",';
            Mensagem := Mensagem + '"chNFe":"'+chNFe+'",';
            Mensagem := Mensagem + '"tpEvento":"'+TpEventoToStr(tpEvento) +'",';
            Mensagem := Mensagem + '"xEvento":"'+xEvento+'",';
            Mensagem := Mensagem + '"nSeqEvento":"'+IntToStr(nSeqEvento)+'",';
            Mensagem := Mensagem + '"CNPJDest":"'+CNPJDest+'",';
            Mensagem := Mensagem + '"emailDest":"'+emailDest+'",';
            Mensagem := Mensagem + '"dhRegEvento":"'+DateTimeToStr(dhRegEvento)+'",';
            Mensagem := Mensagem + '"nProt":"'+nProt+'"';
            Mensagem := Mensagem + '}';
            Mensagem := Mensagem + ']';
            Mensagem := Mensagem + '}';
            Mensagem := Mensagem + ']';

            SalvarLog(Mensagem,1,FEnderLog);
          end;
        end
        else
        begin
          raise Exception.Create('JSon com as chaves não informadas');
        end;
 

Link para o comentário
Compartilhar em outros sites

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.