Jump to content

dev botao

Como conseguir a chave de acesso? (CONTINGÊNCIA "teOffLine")


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

Recommended Posts

Não consigo gerar o xml, e por fim também não a chave de emissão (vi muitos tópicos, porém os mesmos sem resposta)

Obs.: Sem modo de contingência passa normalmente
 

         ACBRNFCe.NotasFiscais.GerarNFe;
         ACBRNFCe.NotasFiscais.Assinar;
          ACBRNFCe.NotasFiscais.Validar;
          cStatus := 0;
          ChaveNFCE := ACBRNFCe.NotasFiscais.Items[0].NFe.infNFe.Id;
          NumeroNFCe := strtoint(vAux);
 

     ACBRDANFENFCe.FastFile := 'C:\SISTEMA\PDV\Schemas\DANFeNFCe.fr3';
      if FileExists(frmPrincipal.LerINi(sConfiguracoes, 'PDV',
        'CAMINHO_LOGO', '')) then
        ACBRDANFENFCe.Logo := frmPrincipal.LerINi(sConfiguracoes, 'PDV',
          'CAMINHO_LOGO', '');
      ACBRDANFENFCe.Detalhado := true;
      ACBRDANFENFCe.vTroco := ed_troco.value;

      ACBRDANFENFCe.Impressora := edImpressora;
      ACBRDANFENFCe.DescricaoViaEstabelec := edDescEsta;
      ACBRDANFENFCe.EspessuraBorda := edMargem;
      ACBRDANFENFCe.MargemDireita := edMargDir;
      ACBRDANFENFCe.MargemEsquerda := edMargEsq;
      ACBRDANFENFCe.MargemSuperior := edMargSup;
      ACBRDANFENFCe.MargemInferior := edMarginf;
      ACBRDANFENFCe.MostrarPreview := edPreview;
      ACBRNFCe.NotasFiscais.Imprimir;
      ACBRNFCe.NotasFiscais.clear;
 

 

Link to comment
Share on other sites

3 horas atrás, Juliomar Marchetti disse:

Certo então não poste em todos e aguarde aqui em um único a resposta pra ti.

Usou o exemplo do svn ? se sim como reproduzir ? os passos as configurações, o SO

Não encontrei o exemplo de NFC-e em contingência...

Configurações passo assim, fui vendo em tópicos.

         if frmmodulo.qrconfigpdv.fieldbyname('CONTINGENCIA').asinteger = 1 then
          begin
               Ide.tpEmis := teOffLine;
             Ide.dhCont := date;
             Ide.xJust  := 'Problemas técnicos no envio da nota fiscal do consumidor eletrônico';

             frmmodulo.ACBRNFCe.Configuracoes.Geral.FormaEmissao :=teOffLine ;
             frmmodulo.ACBRDANFENFCe.ViaConsumidor := false;//imprime uma via pro estabelecimanto
             frmmodulo.ACBRDANFENFCe.NumCopias := 2; //imprime duas vias
           end
          else
          begin
               Ide.tpEmis := teNormal;
           end;

 

O resto de todas as configurações são iguais ao exemplo para poder emitir NFC-e normal, porém quando ele entra em modo "teOffLine" ele não gera um XML

Link to comment
Share on other sites

Zildo, no nosso sistema, fazemos assim. Veja se te ajuda:

//-- Tenta realizar o envio normal
     ... 
     TControllerNota_Fiscal_Cabecalho.SalvarChaveAcesso(vIDRecibo, ChaveNF, '65');
      try
        //-- Salva a chave de acesso on-line e o recibo dentro do EnviarNFe
        EnviarNFe(vIDRecibo, false, true);
        EnvioOK := true;
        TControllerNota_Fiscal_Cabecalho.SalvarXML(vIDRecibo, '65', ACBrNFe.NotasFiscais.Items[0].XML);
        TControllerNota_Fiscal_Cabecalho.SalvarStatus(vIDRecibo, 100, '65');
        Result := vIDRecibo;

        //-- Imprime o comprovante da venda ---------------------//
        if (configIni.OpcaoImprimirCupom) and (MensagemDlg('Imprimir Cupom ' + its(vIDRecibo) + '?') = mrNo) then
          MessageDLG('Venda registrada com sucesso. Cupom: ' + its(vIDRecibo), mtInformation, [mbOK], 0)
        else begin
          try
            ACBrNFe.NotasFiscais[0].Imprimir;
          except
            MessageDLG('Caso a impressão esteja ilegível ou faltando informação,'+#13#10+ 'solicite a reimpressão', mtInformation, [mbOK], 0);
          end;
        end;
      except
        On E:Exception do begin
         if (pos('12007', E.Message.ToUpper) > 0)  then CodigoErro := 12007 // erro de conexão
         else if (pos('12002', E.Message.ToUpper) > 0)  then CodigoErro := 12002 // timeout
         else if (pos('12029', E.Message.ToUpper) > 0)  then CodigoErro := 12029 // limite de tempo de conexão
         else if (pos('ERRO NAO CATALOGADO', E.Message.ToUpper) > 0) then CodigoErro:= 00000;// erros de tratamento do webservice 12029 seria o Buraco Negro."
         EnvioOK := false;
        end;
      end;

      //-- Quando for envio offline, está imprimindo? Conferir...
      //-- Não conseguiu enviar a NFCe OnLine. Emite a NFCe em modo OffLine. -//
      //------------------------------------------------------------------------
      if not EnvioOK then begin
        EnviarNFCeOffLine(vIDRecibo, CodigoErro);
        Result := vIDRecibo;
      end;

 

//-- Caso não consiga enviar normal, tenta em contingencia

procedure TFCaixa.EnviarNFCeOffLine(const IDNFCe, CodigoErro: integer);
var
  vChaveNF, DtContingencia, NumeroNotaNova: String;
  aux, IDNotaNova: integer;
begin
  ACBrNFe.NotasFiscais.Items[0].NFe.Ide.tpEmis := teOffLine;
  ACBrNFe.NotasFiscais.Items[0].NFe.Ide.xJust  := 'Problema na conexão com a internet no estabelecimento.';
  ACBrNFe.NotasFiscais.Items[0].NFe.Ide.dhCont := ACBrNFe.NotasFiscais.Items[0].NFe.Ide.dEmi;
  ACBrNFe.Configuracoes.Geral.FormaEmissao     := TpcnTipoEmissao(teOffLine);

  case CodigoErro of
    12002, //-- timeout
    12007: //-- sem internet
    begin
      IDNotaNova := IDNFCe;
    end;

    //12007,
    0,     //-- outros erros. Buraco negro
    12029: //-- limite de tempo de conexão
    begin
      //-- Seta o Status da nota antiga para 5-Aguardando Cancelar Junto a Sefaz
      TControllerNota_Fiscal_Cabecalho.SalvarStatus(IDNFCe, 5, '65');

      //-- UpdateCopyNotaFiscalVenda
      //-- Salva a Nota Novamente com novo número
      //-- Da nota antiga está ficando apenas o cabeçalho e os itens
      //-- Os outros dados foram passados para a nota nova. Por isso, não precisa de extornar a nota antiga completamente
      IDNotaNova := TControllerNota_Fiscal_Cabecalho.CopiarNotaFiscal(IDNFCe, '65');
      if IDNotaNova <= 0 then begin
        ShowMessage('Não foi possível realizar a venda em modo offline. Se o problema persistir, contate o suporte técnico.');
        exit;
      end;

      NumeroNotaNova := TControllerNota_Fiscal_Cabecalho.ObterCampoNota(IDNotaNova, '65', 'Numero');
      NumeroNotaNova := StringReplace(NumeroNotaNova, '"','',[rfReplaceAll]);
      ACBrNFe.NotasFiscais.Items[0].NFe.Ide.nNF := sti(NumeroNotaNova);
    end;
  end;

  //-- Emite off-line, pois já temos certeza que não foi enviada ---------//
  ACBrNFe.NotasFiscais.GerarNFe;  //-- gera o xml corretamente
  ACBrNFe.NotasFiscais.Assinar;   //-- assina utilizando o certificado
  ACBrNFe.NotasFiscais.Validar;   //-- valida o xml perante os schemas

  //-- Salva a chave da nota na base de dados ----------------------------//
  vChaveNF := copy(ACBrNFe.NotasFiscais.Items[0].NFe.infNFe.ID,4,44);
  TControllerNota_Fiscal_Cabecalho.SalvarChaveAcesso(IDNotaNova, vChaveNF, '65');
  TControllerNota_Fiscal_Cabecalho.SalvarXML(IDNotaNova, '65', ACBrNFe.NotasFiscais.Items[0].XML);

 

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...