Estou gerando a nf paulista, mas o programa da receita nem reconhece o arquivo 
uso delphi 7, a baixo a minha funcao para gerar o arquivo.
Sera que alguem pode me ajudar ? 

Obrigado

procedure TFRM_SIS8011.Processa;
var TipFre: String;
    Tot20, Tot30, Tot40, Tot50, Tot60: Integer;
    F: TextFile;
begin
  AssignFile(F,'C:\NF.TXT');
  Rewrite(F);
  Write(F, #239+#187+#191 );

  Tot20 := 0;
  Tot30 := 0;
  Tot40 := 0;
  Tot50 := 0;
  Tot60 := 0;

  FRM_DATMOD.Query.Close;
  FRM_DATMOD.Query.SQL.Clear;
  FRM_DATMOD.Query.SQL.Add( 'SELECT COUNT( * ) AS TOTAL FROM FATGER G, CADCLI C 
WHERE G.CLI_CODIGO = C.CLI_CODIGO' );
  FRM_DATMOD.Query.SQL.Add( 'AND G.FTG_DATVEN BETWEEN ' + FormataData( 
edDATINI.Text ) + ' AND ' + FormataData( edDATFIN.Text ) );
  FRM_DATMOD.Query.SQL.Add( 'AND G.FTG_ESPDOC = ' + QuotedStr( 'NF' ) );
  FRM_DATMOD.Query.SQL.Add( 'AND G.EXC_DATEXC IS NULL' );
  FRM_DATMOD.Query.SQL.Add( 'AND G.FTG_TIPONF = ' + QuotedStr( 'VE' ) );
  FRM_DATMOD.Query.SQL.Add( 'ORDER BY G.FTG_DATVEN' );
  FRM_DATMOD.Query.Open;

  Pro.Visible  := True;
  Pro.MaxValue := FRM_DATMOD.Query.FieldByName( 'TOTAL' ).AsInteger;
  Pro.Progress := 0;

  FRM_DATMOD.Query.Close;
  FRM_DATMOD.Query.SQL.Clear;
  FRM_DATMOD.Query.SQL.Add( 'SELECT * FROM FATGER G, CADCLI C, CADTRA TRA WHERE 
G.CLI_CODIGO = C.CLI_CODIGO' );
  FRM_DATMOD.Query.SQL.Add( 'AND G.FTG_DATVEN BETWEEN ' + FormataData( 
edDATINI.Text ) + ' AND ' + FormataData( edDATFIN.Text ) );
  FRM_DATMOD.Query.SQL.Add( 'AND G.FTG_ESPDOC = ' + QuotedStr( 'NF' ) );
  FRM_DATMOD.Query.SQL.Add( 'AND G.EXC_DATEXC IS NULL' );
  FRM_DATMOD.Query.SQL.Add( 'AND G.FTG_TIPONF = ' + QuotedStr( 'VE' ) );
  FRM_DATMOD.Query.SQL.Add( 'AND G.TRA_CODIGO = TRA.TRA_CODIGO' );
  FRM_DATMOD.Query.SQL.Add( 'ORDER BY G.FTG_DATVEN' );
  FRM_DATMOD.Query.Open;

  Writeln( F, UTF8Encode( '10'+'|'+
                          '1,00'+'|'+
                          StrZero( TiraCaracter( PegaFil( 'FIL_C_G_C_' ) ), 14 
)+'|'+
                          FormatDateTime( 'DD/MM/YYYY', StrToDate( 
edDATINI.Text ) )+'|'+
                          FormatDateTime( 'DD/MM/YYYY', StrToDate( 
edDATFIN.Text ) ) ) );

  While Not FRM_DATMOD.Query.Eof Do
  Begin
    Writeln( F, UTF8Encode( '20'+'|'+
                            'I'+ '|' +
                            ''+'|'+
                            NomeCfop( FRM_DATMOD.Query.FieldByName( 
'CFO_CODIG1' ).AsString )+'|'+
                            '1'+'|'+
                            FRM_DATMOD.Query.FieldByName( 'FTG_CODIGO' 
).AsString+'|'+
                            FormatDateTime( 'DD/MM/YYYY', 
FRM_DATMOD.Query.FieldByName( 'FTG_DATVEN' ).AsDateTime ) + ' ' + 
FormatDateTime( 'HH:MM:SS', FRM_DATMOD.Query.FieldByName( 'FTG_HORVEN' 
).AsDateTime )+'|'+
                            ''+'|'+
                            '1'+'|'+
                            FRM_DATMOD.Query.FieldByName( 'CFO_CODIG1' 
).AsString+'|'+
                            ''+'|'+
                            ''+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'CLI_C_G_C_' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'CLI_DESCRI' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'CLI_ENDERE' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'CLI_NUMERO' ).AsString )+'|'+
                            ''+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'CLI_BAIRRO' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'CLI_CIDADE' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'CLI_ESTADO' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'CLI_C_E_P_' ).AsString )+'|'+
                            'BRASIL'+'|'+
                            ''+'|'+
                            '' ) );
    Inc( Tot20 );

    FRM_DATMOD.Query1.Close;
    FRM_DATMOD.Query1.SQL.Clear;
    FRM_DATMOD.Query1.SQL.Add( 'SELECT * FROM FATDET F, CADPRO P' );
    FRM_DATMOD.Query1.SQL.Add( 'WHERE F.FTG_CODIGO = ' + QuotedStr( 
FRM_DATMOD.Query.FieldByName( 'FTG_CODIGO' ).AsString ) );
    FRM_DATMOD.Query1.SQL.Add( '  AND F.FTG_ESPDOC = ' + QuotedStr( 
FRM_DATMOD.Query.FieldByName( 'FTG_ESPDOC' ).AsString ) );
    FRM_DATMOD.Query1.SQL.Add( '  AND F.FIL_CODIGO = ' + QuotedStr( 
FRM_DATMOD.Query.FieldByName( 'FIL_CODIGO' ).AsString ) );
    FRM_DATMOD.Query1.SQL.Add( '  AND F.PRO_CODIGO = P.PRO_CODIGO' );
    FRM_DATMOD.Query1.Open;
    While Not FRM_DATMOD.Query1.Eof Do
    Begin
      Writeln( F, UTF8Encode( '30'+'|'+
                              TiraCaracter( FRM_DATMOD.Query1.FieldByName( 
'PRO_CODIGO' ).AsString )+'|'+
                              TiraCaracter( FRM_DATMOD.Query1.FieldByName( 
'FTD_ITEESP' ).AsString )+'|'+
                              ''+'|'+
                              TiraCaracter( FRM_DATMOD.Query1.FieldByName( 
'FTD_ITEESP' ).AsString )+'|'+
                              TiraCaracter( FRM_DATMOD.Query1.FieldByName( 
'UNI_CODIGO' ).AsString )+'|'+
                              FormatFloat( '0.0000', 
FRM_DATMOD.Query1.FieldByName( 'FTD_QTDITE' ).AsFloat )+'|'+
                              FormatFloat( '0.0000', 
FRM_DATMOD.Query1.FieldByName( 'FTD_VALRAT' ).AsFloat )+'|'+
                              FormatFloat( '0.00', 
FRM_DATMOD.Query1.FieldByName( 'FTD_QTDITE' ).AsFloat * 
FRM_DATMOD.Query1.FieldByName( 'FTD_VALRAT' ).AsFloat )+'|'+
                              TiraCaracter( FRM_DATMOD.Query1.FieldByName( 
'FTD_CODCFO' ).AsString )+'|'+
                              FormatFloat( '0.00', 
FRM_DATMOD.Query1.FieldByName( 'FTD_ALQICM' ).AsFloat )+'|'+
                              FormatFloat( '0.00', 
FRM_DATMOD.Query1.FieldByName( 'FTD_VALIPI' ).AsFloat )+'|'+
                              FormatFloat( '0.00', 0 ) ) );
      Inc( Tot30 );

      FRM_DATMOD.Query1.Next;
    end;

    FRM_DATMOD.Query1.Close;
    FRM_DATMOD.Query1.SQL.Clear;
    FRM_DATMOD.Query1.SQL.Add( 'SELECT SUM( F.FTD_BASICM ) AS BASICM,' );
    FRM_DATMOD.Query1.SQL.Add( '       SUM( F.FTD_VALICM ) AS TOTICM,' );
    FRM_DATMOD.Query1.SQL.Add( '       SUM( F.FTD_VALSUB ) AS TOTRET,' );
    FRM_DATMOD.Query1.SQL.Add( '       SUM( F.FTD_VALRAT * F.FTD_QTDITE ) AS 
TOTPRO,' );
    FRM_DATMOD.Query1.SQL.Add( '       SUM( F.FTD_VALIPI ) AS VALIPI,' );
    FRM_DATMOD.Query1.SQL.Add( '       SUM( ( F.FTD_VALRAT * F.FTD_QTDITE ) + 
F.FTD_VALIPI + + F.FTD_VALIPI ) AS TOTNF' );
    FRM_DATMOD.Query1.SQL.Add( 'FROM FATDET F' );
    FRM_DATMOD.Query1.SQL.Add( 'WHERE F.FTG_CODIGO = ' + QuotedStr( 
FRM_DATMOD.Query.FieldByName( 'FTG_CODIGO' ).AsString ) );
    FRM_DATMOD.Query1.SQL.Add( '  AND F.FTG_ESPDOC = ' + QuotedStr( 
FRM_DATMOD.Query.FieldByName( 'FTG_ESPDOC' ).AsString ) );
    FRM_DATMOD.Query1.SQL.Add( '  AND F.FIL_CODIGO = ' + QuotedStr( 
FRM_DATMOD.Query.FieldByName( 'FIL_CODIGO' ).AsString ) );
    FRM_DATMOD.Query1.Open;

    Writeln( F, UTF8Encode( '040'+'|'+
                            FormatFloat( '0.00', FRM_DATMOD.Query1.FieldByName( 
'BASICM' ).AsFloat )+'|'+
                            FormatFloat( '0.00', FRM_DATMOD.Query1.FieldByName( 
'TOTICM' ).AsFloat )+'|'+
                            FormatFloat( '0.00', FRM_DATMOD.Query1.FieldByName( 
'TOTRET' ).AsFloat )+'|'+
                            FormatFloat( '0.00', FRM_DATMOD.Query1.FieldByName( 
'TOTPRO' ).AsFloat )+'|'+
                            FormatFloat( '0.00', FRM_DATMOD.Query.FieldByName( 
'FTG_VALFRE' ).AsFloat )+'|'+
                            FormatFloat( '0.00', 0 )+'|'+
                            FormatFloat( '0.00', 0 )+'|'+
                            FormatFloat( '0.00', FRM_DATMOD.Query1.FieldByName( 
'VALIPI' ).AsFloat )+'|'+
                            FormatFloat( '0.00', 0 )+'|'+
                            FormatFloat( '0.00', FRM_DATMOD.Query1.FieldByName( 
'TOTNF' ).AsFloat + FRM_DATMOD.Query.FieldByName( 'FTG_VALFRE' ).AsFloat )+'|'+
                            FormatFloat( '0.00', 0 )+'|'+
                            FormatFloat( '0.00', 0 )+'|'+
                            FormatFloat( '0.00', 0 ) ) );
    Inc( Tot40 );

    TipFre := '0';
    If FRM_DATMOD.Query.FieldByName( 'FTG_FRECON' ).AsString = '2' then
    begin
      TipFre := '1';
    end;

    Writeln( F, UTF8Encode( '050'+'|'+
                            TipFre+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'TRA_C_G_C_' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'TRA_DESCRI' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'TRA_I_E_S_' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'TRA_ENDERE' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'TRA_CIDADE' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'TRA_ESTADO' ).AsString )+'|'+
                            ''+'|'+
                            ''+'|'+
                            ''+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'FTG_ESPECI' ).AsString )+'|'+
                            TiraCaracter( FRM_DATMOD.Query.FieldByName( 
'FTG_DESMAR' ).AsString )+'|'+
                            ''+'|'+
                            ''+'|'+
                            '' ) );
    Inc( Tot50 );

    Writeln( F, '060'+'|'+
                ''+'|'+
                ''+'|'+
                '' );
    Inc( Tot60 );

    FRM_DATMOD.Query.Next;
    Pro.Progress := Pro.Progress + 1;
    Pro.Refresh;
  end;

  Write( F, UTF8Encode( '90'+'|'+
                        StrZero( FloatToStr( Tot20 ), 05 )+'|'+
                        StrZero( FloatToStr( Tot30 ), 05 )+'|'+
                        StrZero( FloatToStr( Tot40 ), 05 )+'|'+
                        StrZero( FloatToStr( Tot50 ), 05 )+'|'+
                        StrZero( FloatToStr( Tot60 ), 05 ) ) );
  CloseFile( F );

  Pro.Visible := False;
  Pro.Progress := 0;
  Pro.Refresh;

  FRM_DATMOD.Query.Close;
  Aviso( 'Arquivo Gerado Com Sucesso !');
end;


Responder a