Ir para conteúdo
  • Cadastre-se

pfmoretto

Membros
  • Total de ítens

    8
  • Registro em

  • Última visita

Posts postados por pfmoretto

  1. 2 horas atrás, EMBarbosa disse:

    Me parece que não... Quando eu li pela primeira vez, acho que não atentei a essa frase direito:

    Tecnicamente, os dois são um arquivo XML. Isso indica que há um problema nos dados e não na maneira que você usa para extrair os dados.

    Os dois documentos podem ser armazenados da mesma maneira. Mas será que estão sendo?

    É possível que os CFe não estejam sendo salvos da mesma maneira que os NFe. Verifique se os CF-e estão realmente no Banco de dados igual aos arquivos NFe.

    Então tecnicamente os dois são um XML, mas será que um ele grava em forma de texto e outro ele salva o arquivo mesmo (o binario)? Pois os campos são o mesmo domain, são identicos só consigo pensar que o insert está sendo feito de formas diferentes. Segue foto em anexo.

    Sem título.png

  2. Em 29/03/2023 at 16:06, EMBarbosa disse:

    O que isso quer dizer?

    Quando eu abro o XML dentro está escrito assim "(Memo)". Não faço ideia o porque. 

     

    10 horas atrás, Cleber Ferreira disse:

    Bom dia,

    eu utilizado dessa forma:

    (FDQuery1.FieldByName('XML') as TBlobField).SaveToFile(PCHar(pathXMLOrig));

     

    Infelizmente acontece a mesma coisa. O arquivo sai em branco.

     

    Eu acredito que exista alguma diferença na forma como os arquivos são salvos. Acho que no que eu consigo exportar o XML ele salva o texto e nos outros talvez o arquivo mesmo? Como que faria pa extrair?

  3. Em 25/03/2023 at 13:39, Dfox disse:

    boa tarde

    tenta usar essa função

    function IfExtraiXmlnf(sXML : string; sQuery :TDataSet): String;
    var
      sl : TStringList;
    begin
      if not DirectoryExists(ExtractFilePath(sXML)) then ForceDirectories(ExtractFilePath(sXML));
      if sQuery.fieldbyname('xml').AsString <> '' then
      begin
        {TBlobField(sQuery.FieldByName('xml')).SaveToFile(sXML);}
        try
          sl := TStringList.Create;
          sl.Add(sQuery.fieldbyname('xml').AsString);
          sl.SaveToFile(sXML, TEncoding.UTF8);
        finally
          sl.Free;
        end;
      end;
      Result := sXML;
    end;

    exemplo de uso

    var
      sXML: string;
    begin
      sXML := qrnota.fieldbyname('nfe_xml').AsString;
    
      try
        if FileExists(IfExtraiXmlnf(sXML,qrnota)) then
        begin
        end;

     

     

    Muito obrigado mas Infelizmente o resultado é o mesmo que eu estava tendo antes.

  4. Estou tentando extrair alguns "arquivos" XML que foram armazenados no BD em forma de texto em campos blob

    BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET WIN1252 COLLATE WIN1252

    O BD é Fire Bird 2.5. (Não fui eu quem criei o banco).

    Estou tentando extrair os arquivos XML de NFe e CFe. O código é o mesmo para ambos os documentos só troco o tipo na query.

    Quando o documento é NFe ele funciona normal.

    Quando o documento é CFe ele não funciona.

    Se eu utilizar 

    ArqXML.Text := qry2.Fields[0].AsString;

    O arquivo salva em branco.

    Se eu utilizar 

    ArqXML.Text := qry2.Fields[0].Text;

    O arquivo salva com um (Memo) dentro.

    Estou tentando resolver isso a alguns dias mas não consegui já tentei basicamente de tudo. Alguém tem alguma luz?

    try
          Conn1  :=  FConnectionManager.AcquireConn1('Conn1');
          Conn2  :=  FConnectionManager.AcquireConn2('Conn2');
          qry1   :=  TFDQuery.Create(nil);
          qry2   :=  TFDQuery.Create(nil);
          qry1.Connection  := Conn1;
          qry2.Connection  := Conn2;
          ArqXML  :=  TStringList.Create;
          { Encontra os XML que foram emitidos }
          try
            qry1.Close;
            qry1.SQL.Clear;
            qry1.SQL.Add('select'
                             + ' nf_numero,'
                             + ' nf_nfe_chave_identificacao'
                             + ' from nf'
                             + ' where NF_MODELO = ' + QuotedStr('SAT')
                             + ' and nf_cancelada = ' + QuotedStr('N')
                             + ' and nf_nfe_enviado = ' + QuotedStr('S')
                             + ' and NF_DTEMISSAO BETWEEN ' + QuotedStr(sDataInicial)  + ' AND ' + QuotedStr(sDataFinal));
            qry1.Open;
          except
            on E: Exception do begin
              ShowMessage('Erro: ' + E.Message );
              qry1.Close;
            end;
          end;
          { Caso encontre XML inicia exportação }
          if not qry1.IsEmpty then begin
            qry1.FetchAll;
            qry1.First;
            { Cria a pasta no desktop }
            if not DirectoryExists(uSysTools.DirDesktop + '\xml_sat') then begin
              ForceDirectories(uSysTools.DirDesktop + '\xml_sat');
            end;
            while not qry1.Eof do begin
              try
                qry2.Close;
                qry2.SQL.Clear;
                qry2.SQL.Add('select'
                                    + ' NF_NFE_XML'
                                    + ' from nf '
                                    + ' where nf_nfe_chave_identificacao = ' + QuotedStr(qry1.Fields[1].Text)
                                    + ' and nf_numero = ' + QuotedStr(qry1.Fields[0].Text)
                                    + ' and nf_modelo = ' + QuotedStr('SAT'));
                qry2.Open;
              except
                on E: Exception do begin
                  ShowMessage('Erro: ' + E.Message );
                  qry2.Close;
                end;
              end;
              if not qry2.IsEmpty then begin
                ArqXML.Clear;
                ArqXML.Text := qry2.Fields[0].AsString;
                ArqXML.SaveToFile(uSysTools.DirDesktop + '\xml_sat' + qry1.Fields[1].Text + '.xml');
              end;
              qry1.Next;
            end;
          end;
        finally
          FreeAndNil(qry1);
          FreeAndNil(qry2);
          FreeAndNil(ArqXML);
          FConnectionManager.ReleaseConn1(Conn1);
          FConnectionManager.ReleaseConn2(Conn2);
        end;

     

  5. Boa tarde, gero os blocos C800 e C850 do sped fiscal, mas estou enfrentando problemas de performance pois o numero de registros é muito grande. Estou tentando realizar a geração através do componente ACBrSPEDFiscal1 para melhorar. Tentei gerar apenas o bloco C800 porém ele salva apenas o arquivo sem as informações dentro. ( Arquivo em anexo ) Alguém poderia me dizer onde estou errando? Já olhei o exemplo mas não consegui descobrir onde estou errando.

    Outra duvida é a seguinte, quando vou passar o COD_SIT se eu utilizo COD_SIT.sdRegular; ou COD_SIT:= sdRegular; das duas formas ele da erro. Qual a forma correta de utilizar?

     

    with ACBrSPEDFiscal1 do begin
        DT_INI  :=  DtInicial.Date;
        DT_FIN  :=  DtFinal.Date;
        Arquivo:='C:\Users\Felipe\Desktop\teste.txt';
        LinhasBuffer := StrToIntDef('10', 0);
        IniciaGeracao;
        while not qryC800.EOF do begin
          with Bloco_C.RegistroC800New do begin
            COD_MOD:='59';
            //COD_SIT.sdRegular;
            NUM_CFE   :=  qryC800.Fields[2].Text;
            DT_DOC    :=  StrToDate(qryC800.Fields[3].Text);
            VL_CFE    :=  StrToFloat(qryC800.Fields[4].Text);
            VL_PIS    :=  StrToFloat(qryC800.Fields[5].Text);
            VL_COFINS :=  StrToFloat(qryC800.Fields[6].Text);
            CNPJ_CPF  :=  qryC800.Fields[7].Text;;
            NR_SAT    :=  qryC800.Fields[8].Text;
            CHV_CFE   :=  qryC800.Fields[9].Text;
            VL_DESC   :=  StrToFloat(qryC800.Fields[10].Text);
            VL_MERC   :=  StrToFloat(qryC800.Fields[11].Text);
            VL_ICMS   :=  StrToFloat(qryC800.Fields[12].Text);
          end;
          qryC800.Next;
          WriteBloco_C(False);
        end;
        WriteBloco_C(True);
       SaveFileTXT;
       ShowMessage('finalizado');
      end;

     

    teste.txt

  6. Boa noite, tenho vários arquivos XML mod 59 (CFe) e preciso importar as informações. Estou usando o componente ACBrSAT para me auxiliar mas estou tendo dificuldade para a leitura de algumas tags por ex: CST e CSOSN do ICMS

    CST	:= ACBrSAT.CFe.Det.Items[a].Imposto.ICMS.CST;
    CSOSN	:= ACBrSAT.CFe.Det.Items[a].Imposto.ICMS.CSOSN;

     

    Quando tento receber o valor na variável desta forma eu não consigo, alguém poderia me dar uma luz? Possuo o mesmo tipo de problema com o pis e cofins. Consultei os arquivos de exemplo mas não encontrei de importação.

     

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