Ir para conteúdo
  • Cadastre-se

Datacaixa

Membros Pro
  • Total de ítens

    212
  • Registro em

  • Última visita

Posts postados por Datacaixa

  1. Como podemos melhorar as mensagens de erro da NF-e que são retornadas no código abaixo:

          TVENDASMOTIVO_REJEICAO.AsString := Copy(IntToStr(dmACBr.ACBrNFe1.WebServices.Consulta.cStat) + ' - '
                                                + dmACBr.ACBrNFe1.WebServices.Consulta.xMotivo,1,1500);
     

    Pegamos por exemplo um caso de um cliente que o erro estava no CNPJ da TRANSPORTADORA, porém a mensagem dizia somente CNPJ, e nosso suporte ficou mais de 1 hora tentando encontrar o problema, sendo que caso a mensagem tivesse mais clara, talvez o próprio cliente teria resolvido sem dar nenhum suporte.

  2. Não consigo debugar, mas segue o trecho completo abaixo:

     

    var
     iID_Inutilizacao : Integer;
     sXML, sArq : string;
    begin
      if length(Memo1.Text) <= 15 then
      begin
       iMessageBox(handle,'Favor preencher no mínimo 15 caracteres!','Inutilizar',MB_OK);
       Exit;
      end;


     if iMessageBox(Handle,'Deseja realmente inutilizar a numeração?','Inutilizar Numeração',MB_YESNO) <> IDYES then
      Exit;

     dmAcbr.ACBrNFe1.WebServices.Inutiliza(  sApenasNumeros(dmConexao.TFILIALCNPJ.AsString),
                                             Memo1.Text,
                                             edtAno.Value,
                                             55,
                                             edtSerie.Value,
                                             edtNumInicial.Value,
                                             edtNumFinal.Value);

     if dmAcbr.ACBrNFe1.WebServices.Inutilizacao.cStat = 102 then
     begin
      fInutilizacao.TInutilizacaoID_INUTILIZACAO.Required := False;
      fInutilizacao.TInutilizacao.Insert;
      fInutilizacao.TInutilizacaoID_INUTILIZACAO.IsNull;
      fInutilizacao.TInutilizacaoID_FILIAL.AsInteger      := iID_FILIAL;
      fInutilizacao.TInutilizacaoANO.AsInteger            := edtAno.Value;
      fInutilizacao.TInutilizacaoMODELO.AsInteger         := 55;
      fInutilizacao.TInutilizacaoSERIE.AsInteger          := edtSerie.Value;
      fInutilizacao.TInutilizacaoNUMERO_INICIAL.AsInteger := edtNumInicial.Value;
      fInutilizacao.TInutilizacaoNUMERO_FINAL.AsInteger   := edtNumFinal.Value;
      fInutilizacao.TInutilizacaoJUSTIFICATIVA.AsString   := Memo1.Text;
      fInutilizacao.TInutilizacaoPROTOCOLO.AsString       := dmAcbr.ACBrNFe1.WebServices.Inutilizacao.Protocolo;
      fInutilizacao.TInutilizacaoDATA_HORA.AsDateTime     := dmAcbr.ACBrNFe1.WebServices.Inutilizacao.dhRecbto;

      if dmAcbr.ACBrNFe1.WebServices.Inutilizacao.tpAmb = taProducao then
       fInutilizacao.TInutilizacaoAMBIENTE.AsString := 'Produção'
      else
       fInutilizacao.TInutilizacaoAMBIENTE.AsString := 'Homologação';

      //retorna proximo id do generator
      iID_Inutilizacao := iRetornarID('GEN_INUTILIZACAO_ID');

      fInutilizacao.TInutilizacao.Post;
      dmConexao.IBTCONEXAO.CommitRetaining;

      sArq := dmConexao.TFILIALCODIGO_ESTADO.AsString +
             Copy(IntToStrZero(fInutilizacao.TInutilizacaoANO.AsInteger, 4), 3, 2) +
             sApenasNumeros(dmConexao.TFILIALCNPJ.AsString) +
             IntToStrZero(fInutilizacao.TInutilizacaoMODELO.AsInteger, 2) +
             IntToStrZero(fInutilizacao.TInutilizacaoSERIE.AsInteger, 3) +
             IntToStrZero(fInutilizacao.TInutilizacaoNUMERO_INICIAL.AsInteger, 9) +
             IntToStrZero(fInutilizacao.TInutilizacaoNUMERO_FINAL.AsInteger, 9);

      bInserirXMLDB('INUTILIZACAO',
                    'INUTILIZACAO',
                    IntToStr(iID_Inutilizacao),
                    fInutilizacao.TInutilizacaoPROTOCOLO.AsString,
                    'Inutilizada',
                    dmACBr.ACBrNFe1.WebServices.Inutilizacao.XML_ProcInutNFe,
                    sArq+'-procInutNFe.xml',
                    fInutilizacao.TInutilizacaoDATA_HORA.AsDateTime,
                    0);
     // dmAcbr.ACBrNFe1.NotasFiscais.Clear;
      sXML := sVerificaArquivo('Inutilizada', 'INUTILIZACAO',
                               ExtractFileDir(Application.ExeName)+'\XML_NFE\Inu\'+FormatDateTime('YYYYMM',
                               fInutilizacao.TInutilizacaoDATA_HORA.AsDateTime)+'\'+sArq+'-procInutNFe.xml', iID_Inutilizacao ,
                               0);

      if not FileExists(sXML) then
      begin
       iMessageBox(handle,pchar('Não foi possível imprimir!'+#13+#13+'XML não encontrato em: '+sXML),'Imprimir',MB_OK+MB_ICONWARNING);
       Exit;
      end;

      dmAcbr.ACBrNFe1.DANFE:=dmAcbr.ACBrNFeDANFEFR1;
      dmAcbr.ACBrNFe1.InutNFe.XML:='';
      dmAcbr.ACBrNFe1.InutNFe.LerXML( sXML );
      dmAcbr.ACBrNFe1.ImprimirInutilizacao;

      fInutilizacao.TInutilizacao.Close;
      fInutilizacao.TInutilizacao.ParamByName('ID_FILIAL').AsInteger := iID_FILIAL;
      fInutilizacao.TInutilizacao.Open;

      iMessageBox(handle,'Numeração inutilizada com sucesso! Favor excluir as notas fiscais que foram inutilizadas (caso houver)!','Inutilizar Numeração',MB_OK);
      Close;
     end
     else
     begin
      iMessageBox(handle,pchar('Não foi possível inutilizar a numeração!'+#13+IntToStr(dmAcbr.ACBrNFe1.WebServices.Inutilizacao.cStat)+' - '+dmAcbr.ACBrNFe1.WebServices.Inutilizacao.xMotivo),'Inutilizar Numeração',MB_OK);
     end;


     

  3. Resumo da NFC-e em SC pelo que entendi.

    O cliente solicita autorização para emitir NFC-e para SEFAZ que pode autorizar ou recursar de acordo com vários critérios que usam para avaliar a condição do cliente. Postos de combustíveis por exemplo não podem usar NFC-e.

    A parte mais enroscada é a emissão em contingência, o que deve ser feito se não tiver internet para emitir a NFC-e?

    A sefaz oferece duas alternativas sendo a primeira o uso do PAF-ECF e a segunda o PAF-NFC-e. Para quem não quer mexer com ECF, pode optar pelo PAF-NFC-e. Tirei essas informações nesse link: http://legislacao.sef.sc.gov.br/html/atos_diat/2020/atodiat_20_038.htm que

     diz o seguinte:

    “§ 1º Ao realizar seu credenciamento, o contribuinte interessado deverá optar pela emissão em contingência no:
    I – ECF, nos termos do art. 94 do Anexo 11 do RICMS/SC-01 e do Ato DIAT nº 22, de 27 de junho de 2020, disciplinada no Capítulo II deste Ato, oportunidade em que...
    II – Programa Aplicativo Fiscal - Nota Fiscal de Consumidor Eletrônica (PAF-NFC-e), nos termos do art. 94-A do Anexo 11 do RICMS/SC-01, disciplinada no Capítulo III deste Ato, oportunidade em que...”

    Agora se você quer saber os requisitos do PAF-NFC-e acesse esse PDF:
    http://legislacao.sef.sc.gov.br/legtrib_internet/html/atos_diat/2020/atodiat_20_038_anexo_iii.pdf

  4. Tenho uma função no ACBrNFe1StatusChange que verifica o seguinte:

    Teria como nesse caso adicionar o número da NF-e? Qual propriedade usar?

    Citar

     

     case ACBrNFe1.Status of

     stNFeRecepcao :

     if ( fJanelaStatus = nil ) then
            fJanelaStatus := tfJanelaStatus.Create(Application);
          fJanelaStatus.lblStatus.Caption := 'Transmitindo NF-e...';
          fJanelaStatus.Show;
          fJanelaStatus.BringToFront;
          Application.ProcessMessages;

     


    Teria como nesse caso adicionar o endereço de e-mail do destinatário? Qual propriedade usar?

    Citar

     

    stNFeEmail :
        begin
          if ( fJanelaStatus = nil ) then
            fJanelaStatus := tfJanelaStatus.Create(Application);
          fJanelaStatus.lblStatus.Caption := 'Enviando E-mail...';
          fJanelaStatus.Show;
          fJanelaStatus.BringToFront;
          Application.ProcessMessages;
        end;


     

     

  5. Estou tendo erro de access violation ao executar o seguinte comando:

      dmAcbr.ACBrNFe1.ImprimirInutilizacao;

    Estranho que só dá o erro na segunda vez que executa.
     

    Segue abaixo a procedure completa:

     

    procedure TfInutilizacaoAdd.bbSalvarClick(Sender: TObject);
    var
     iID_Inutilizacao : Integer;
     sXML, sArq : string;
    begin
      if length(Memo1.Text) <= 15 then
      begin
       iMessageBox(handle,'Favor preencher no mínimo 15 caracteres!','Inutilizar',MB_OK);
       Exit;
      end;


     if iMessageBox(Handle,'Deseja realmente inutilizar a numeração?','Inutilizar Numeração',MB_YESNO) <> IDYES then
      Exit;

     dmAcbr.ACBrNFe1.WebServices.Inutiliza(  sApenasNumeros(dmConexao.TFILIALCNPJ.AsString),
                                             Memo1.Text,
                                             edtAno.Value,
                                             55,
                                             edtSerie.Value,
                                             edtNumInicial.Value,
                                             edtNumFinal.Value);

     if dmAcbr.ACBrNFe1.WebServices.Inutilizacao.cStat = 102 then
     begin
      fInutilizacao.TInutilizacaoID_INUTILIZACAO.Required := False;
      fInutilizacao.TInutilizacao.Insert;
      fInutilizacao.TInutilizacaoID_INUTILIZACAO.IsNull;
      fInutilizacao.TInutilizacaoID_FILIAL.AsInteger      := iID_FILIAL;
      fInutilizacao.TInutilizacaoANO.AsInteger            := edtAno.Value;
      fInutilizacao.TInutilizacaoMODELO.AsInteger         := 55;
      fInutilizacao.TInutilizacaoSERIE.AsInteger          := edtSerie.Value;
      fInutilizacao.TInutilizacaoNUMERO_INICIAL.AsInteger := edtNumInicial.Value;
      fInutilizacao.TInutilizacaoNUMERO_FINAL.AsInteger   := edtNumFinal.Value;
      fInutilizacao.TInutilizacaoJUSTIFICATIVA.AsString   := Memo1.Text;
      fInutilizacao.TInutilizacaoPROTOCOLO.AsString       := dmAcbr.ACBrNFe1.WebServices.Inutilizacao.Protocolo;
      fInutilizacao.TInutilizacaoDATA_HORA.AsDateTime     := dmAcbr.ACBrNFe1.WebServices.Inutilizacao.dhRecbto;

      if dmAcbr.ACBrNFe1.WebServices.Inutilizacao.tpAmb = taProducao then
       fInutilizacao.TInutilizacaoAMBIENTE.AsString := 'Produção'
      else
       fInutilizacao.TInutilizacaoAMBIENTE.AsString := 'Homologação';

      //retorna proximo id do generator
      iID_Inutilizacao := iRetornarID('GEN_INUTILIZACAO_ID');

      fInutilizacao.TInutilizacao.Post;
      dmConexao.IBTCONEXAO.CommitRetaining;

      sArq := dmConexao.TFILIALCODIGO_ESTADO.AsString +
             Copy(IntToStrZero(fInutilizacao.TInutilizacaoANO.AsInteger, 4), 3, 2) +
             sApenasNumeros(dmConexao.TFILIALCNPJ.AsString) +
             IntToStrZero(fInutilizacao.TInutilizacaoMODELO.AsInteger, 2) +
             IntToStrZero(fInutilizacao.TInutilizacaoSERIE.AsInteger, 3) +
             IntToStrZero(fInutilizacao.TInutilizacaoNUMERO_INICIAL.AsInteger, 9) +
             IntToStrZero(fInutilizacao.TInutilizacaoNUMERO_FINAL.AsInteger, 9);

      bInserirXMLDB('INUTILIZACAO',
                    'INUTILIZACAO',
                    IntToStr(iID_Inutilizacao),
                    fInutilizacao.TInutilizacaoPROTOCOLO.AsString,
                    'Inutilizada',
                    dmACBr.ACBrNFe1.WebServices.Inutilizacao.XML_ProcInutNFe,
                    sArq+'-procInutNFe.xml',
                    fInutilizacao.TInutilizacaoDATA_HORA.AsDateTime,
                    0);


     // dmAcbr.ACBrNFe1.NotasFiscais.Clear;

      sXML := sVerificaArquivo('Inutilizada', 'INUTILIZACAO',
                               ExtractFileDir(Application.ExeName)+'\XML_NFE\Inu\'+FormatDateTime('YYYYMM',
                               fInutilizacao.TInutilizacaoDATA_HORA.AsDateTime)+'\'+sArq+'-procInutNFe.xml', iID_Inutilizacao ,
                               0);

      dmAcbr.ACBrNFe1.DANFE:=dmAcbr.ACBrNFeDANFEFR1;

      dmAcbr.ACBrNFe1.InutNFe.XML:='';
      dmAcbr.ACBrNFe1.InutNFe.LerXML( sXML );

      dmAcbr.ACBrNFe1.ImprimirInutilizacao;


      fInutilizacao.TInutilizacao.Close;
      fInutilizacao.TInutilizacao.ParamByName('ID_FILIAL').AsInteger := iID_FILIAL;
      fInutilizacao.TInutilizacao.Open;

      iMessageBox(handle,'Numeração inutilizada com sucesso! Favor excluir as notas fiscais que foram inutilizadas (caso houver)!','Inutilizar Numeração',MB_OK);
      Close;
     end
     else
     begin
      iMessageBox(handle,pchar('Não foi possível inutilizar a numeração!'+#13+IntToStr(dmAcbr.ACBrNFe1.WebServices.Inutilizacao.cStat)+' - '+dmAcbr.ACBrNFe1.WebServices.Inutilizacao.xMotivo),'Inutilizar Numeração',MB_OK);
     end;

    end;
     

     

     

×
×
  • 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.