// Form Create procedure TfrmPrincipal.FormCreate(Sender: TObject);
var iRetorno: integer; begin // Verifica se existe o
arquivo TEF.TXT, indicando que há uma // transação pendente.
if FileExists( "TEF.TXT" ) then
begin
iRetorno :=
Bematech_FI_FechaComprovanteNaoFiscalVinculado;
NaoConfirmaTransacao;
if FileExists( "TEF.TXT" )
then
DeleteFile( "TEF.TXT" ); end; end;
////////////////////////////////////////////////////////////////////////////////
// Função: ImprimeTransacao // Objetivo: Realiza a impressão da
Transação TEF // Parâmetros: string para a Forma de Pagamento //
string
para a Valor da Forma de Pagamento //
string
para o Número do Cupom Fiscal (COO) //
TDateTime
para identificar o número da transação // Retorno: True para OK ou False
para não OK
////////////////////////////////////////////////////////////////////////////////
function ImprimeTransacao( cFormaPGTO: string; cValorPago: string;
cCOO: string; cIdentificacao: TDateTime ): boolean;
var cLinhaArquivo, cLinha, cSaltaLinha, cConteudo: string;
cMensagem: TForm; cArquivo :
TextFile; iVezes : integer; begin
// Neste ponto é criado o arquivo TEF.TXT,
indicando que há uma // operação de TEF sendo realizada.
Caso ocorra uma queda de energia, // no momento da
impressão do TEF, e a aplicação for inicializada, // ao
identificar a existência deste arquivo, a transação do TEF
// deverá ser concelada.
AssignFile( cArquivo, "TEF.TXT"); ReWrite( cArquivo );
CloseFile( cArquivo );
// Bloqueia o teclado e o mouse para a
impressão do TEF iRetorno := Bematech_FI_IniciaModoTEF();
result := true; if FileExists(
"IMPRIME.TXT") then begin
iRetorno :=
Bematech_FI_AbreComprovanteNaoFiscalVinculado( pchar(
cFormaPGTO ), pchar( cValorPago ), pchar( cCOO ) );
.
.
.
////////////////////////////////////////////////////////////////////////////////
// Função: ConfirmaTransacao // Objetivo: Confirmar a Transação TEF
// Parâmetros: não há // Retorno: True para OK ou False para não OK
////////////////////////////////////////////////////////////////////////////////
function ConfirmaTransacao: boolean; var cLinhaArquivo, cConteudo:
string; cArquivo: TextFile; lFlag
: longbool; begin cLinhaArquivo := "";
cConteudo := ""; AssignFile(
cArquivo, "C:\TEF_DIAL\RESP\INTPOS.001" ); Reset(
cArquivo ); while not EOF( cArquivo ) do
begin
ReadLn(
cArquivo, cLinhaArquivo );
if ( copy(
cLinhaArquivo, 1, 3 ) = "001" ) or
(
copy( cLinhaArquivo, 1, 3 ) = "002" ) or
(
copy( cLinhaArquivo, 1, 3 ) = "010" ) or
(
copy( cLinhaArquivo, 1, 3 ) = "012" ) or
(
copy( cLinhaArquivo, 1, 3 ) = "027" ) then
cConteudo := cConteudo + cLinhaArquivo + #13 + #10;
if ( copy(
cLinhaArquivo, 1, 3 ) = "999" ) then
cConteudo := cConteudo + cLinhaArquivo;
end; CloseFile( cArquivo );
cConteudo := "000-000 = CNF" + #13 + #10 + cConteudo;
AssignFile( cArquivo, "INTPOS.001" ); ReWrite( cArquivo
); WriteLn( cArquivo, cConteudo );
CloseFile( cArquivo ); CopyFile( pchar( "INTPOS.001" ),
pchar( "C:\TEF_DIAL\REQ\INTPOS.001" ),
lFlag );
DeleteFile( "INTPOS.001" ); if ( FileExists(
"C:\TEF_DIAL\RESP\INTPOS.STS" ) ) then
DeleteFile( "C:\TEF_DIAL\RESP\INTPOS.STS" ); if (
FileExists( "C:\TEF_DIAL\RESP\INTPOS.001" ) ) then
DeleteFile(
"C:\TEF_DIAL\RESP\INTPOS.001" );
// Se o
arquivo TEF.TXT, que identifica que houve uma transação impressa
// existir, o mesmo será exluído.
if ( FileExists( "TEF.TXT" ) ) then
DeleteFile( "TEF.TXT" ); end;
////////////////////////////////////////////////////////////////////////////////
// Função: NaoConfirmaTransacao // Objetivo: Não Confirmar a Transação
TEF // Parâmetros: não há // Retorno: True para OK ou False para não OK
////////////////////////////////////////////////////////////////////////////////
function NaoConfirmaTransacao: boolean; var cLinhaArquivo, cConteudo:
string; cArquivo: TextFile; lFlag
: longbool; cValor, cNomeRede, cNSU: string; begin
cLinhaArquivo := ""; cConteudo :=
""; AssignFile( cArquivo, "C:\TEF_DIAL\RESP\INTPOS.001"
); Reset( cArquivo ); while not
EOF( cArquivo ) do begin
ReadLn( cArquivo,
cLinhaArquivo ); if (
copy( cLinhaArquivo, 1, 3 ) = "001" ) then
cConteudo := cConteudo + cLinhaArquivo + #13 + #10;
if ( copy(
cLinhaArquivo, 1, 3 ) = "003" ) then
cValor := copy( cLinhaArquivo, 11, Length( cLinhaArquivo ) - 10 );
if ( copy(
cLinhaArquivo, 1, 3 ) = "010" ) then
begin
cConteudo := cConteudo + cLinhaArquivo + #13 + #10;
cNomeRede := copy( cLinhaArquivo, 11, Length( cLinhaArquivo )
- 10 );
end; if ( copy(
cLinhaArquivo, 1, 3 ) = "012" ) then
begin
cConteudo := cConteudo + cLinhaArquivo + #13 + #10;
cNSU := copy( cLinhaArquivo, 11, Length( cLinhaArquivo ) - 10 );
end; if ( copy(
cLinhaArquivo, 1, 3 ) = "027" ) then
cConteudo := cConteudo + cLinhaArquivo + #13 + #10;
if ( copy(
cLinhaArquivo, 1, 3 ) = "999" ) then
cConteudo := cConteudo + cLinhaArquivo;
end; CloseFile( cArquivo );
cConteudo := "000-000 = NCN" + #13 + #10 +
cConteudo; AssignFile( cArquivo, "INTPOS.001" );
ReWrite( cArquivo );
WriteLn( cArquivo, cConteudo ); CloseFile( cArquivo
); CopyFile( pchar( "INTPOS.001" ), pchar(
"C:\TEF_DIAL\REQ\INTPOS.001" ),
lFlag ); DeleteFile( "INTPOS.001" );
if ( FileExists( "C:\TEF_DIAL\RESP\INTPOS.STS" ) )
then DeleteFile(
"C:\TEF_DIAL\RESP\INTPOS.STS" ); if ( FileExists(
"C:\TEF_DIAL\RESP\INTPOS.001" ) ) then
DeleteFile(
"C:\TEF_DIAL\RESP\INTPOS.001" );
// Se o
arquivo TEF.TXT, que identifica que houve uma transação impressa
// existir, o mesmo será exluído.
if ( FileExists( "TEF.TXT" ) ) then
DeleteFile( "TEF.TXT" );
Application.MessageBox( pchar(
"Cancelada a Transação" + #13 + #13 +
"Rede: " + cNomeRede + #13 + "Doc Nº: " + cNSU + #13 + "Valor: " +
FormatFloat( "#,##0.00", StrToFloat(
cValor ) / 100 ) ), "Atenção",
MB_IconInformation + MB_OK ); end;
|