procedure TfrmPrincipal.cmdVendaCupomTEFClick(Sender: TObject); var
cCodigoProduto, cDescricaoProduto, cAliquota, cTipoQtde,
cQtde, cTipoDesconto, cValorItem, cValorDesconto,
cAcrescimoDesconto, cTipoAcrescimoDesconto,
cValorAcrescimoDesconto, cFormaPGTO,
cMSGPromocional, cValorPago, cNumeroCupom,
cSaltaLinha: string; iTEF: integer;
cIdentificacao: TDateTime; begin
// Abre Cupom Fiscal, Vende o Item e Fecha Cupom Fiscal
iRetorno := Bematech_FI_AbreCupom( pchar( "" ) );
if ( VerificaRetornoFuncaoImpressora( iRetorno ) ) then
begin cCodigoProduto := "1234567890123";
cDescricaoProduto :=
"Teste de Venda de Item...";
cAliquota := "II"; cTipoQtde := "I"; cQtde := "1";
cValorItem := "1,00"; cTipoDesconto :=
"%"; cValorDesconto :=
"00,00"; iRetorno :=
Bematech_FI_VendeItem( pchar( cCodigoProduto ),
pchar( cDescricaoProduto ), pchar(
cAliquota ),
pchar( cTipoQtde ), pchar( cQtde ), 2, pchar( cValorItem ),
pchar(
cTipoDesconto ), pchar( cValorDesconto ) );
if ( VerificaRetornoFuncaoImpressora( iRetorno ) )
then begin
cAcrescimoDesconto := "A";
cTipoAcrescimoDesconto :=
"%";
cValorAcrescimoDesconto := "00,00";
iRetorno :=
Bematech_FI_IniciaFechamentoCupom(
pchar( cAcrescimoDesconto ),
pchar( cTipoAcrescimoDesconto ),
pchar( cValorAcrescimoDesconto ) );
if ( VerificaRetornoFuncaoImpressora(
iRetorno ) ) then
begin
cFormaPGTO := "Cartao Credito";
cValorPago :=
"1,00";
SetLength( cNumeroCupom, 6 );
iRetorno := Bematech_FI_NumeroCupom(
cNumeroCupom );
VerificaRetornoFuncaoImpressora( iRetorno );
cIdentificacao := Time;
iTEF := RealizaTransacao(
cIdentificacao,
cNumeroCupom,
FormatFloat( cValorPago, 0 ) );
if ( iTEF = 1 )
then
begin iRetorno :=
Bematech_FI_EfetuaFormaPagamento(
pchar( cFormaPGTO ), pchar( cValorPago ) );
if ( VerificaRetornoFuncaoImpressora( iRetorno ) )
then
begin
cMSGPromocional := "Obrigado, volte sempre !!!";
iRetorno :=
Bematech_FI_TerminaFechamentoCupom(
pchar( cMSGPromocional ) );
VerificaRetornoFuncaoImpressora( iRetorno );
if not ( ImprimeTransacao( cFormaPGTO,
cValorPago, cNumeroCupom,
cIdentificacao ) ) then
NaoConfirmaTransacao
else
ConfirmaTransacao;
end;
end;
if ( iTEF = -1 ) then
Application.MessageBox(
"Gerencial Padrão não está
ativo !", "Atenção",
MB_IconError +
MB_OK );
// Se a transação não for aprovada,
deve-se permitir
// a escolha de outra forma
de pagamento. Neste caso,
// está sendo
utilizado "Dinheiro" como exemplo.
if ( iTEF = -2
) or ( iTEF = 0 ) then
begin
cFormaPGTO :=
"Dinheiro";
iRetorno :=
Bematech_FI_EfetuaFormaPagamento(
pchar( cFormaPGTO ), pchar( cValorPago ) );
if ( VerificaRetornoFuncaoImpressora(
iRetorno ) )
then
begin
cMSGPromocional :=
"Obrigado, volte sempre
!!!";
iRetorno :=
Bematech_FI_TerminaFechamentoCupom(
pchar( cMSGPromocional ) );
VerificaRetornoFuncaoImpressora(
iRetorno );
end;
end;
end; end;
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 //
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 ) );
VerificaRetornoFuncaoImpressora( iRetorno ) end;
AssignFile( cArquivo, "IMPRIME.TXT" );
begin
Reset( cArquivo ); cConteudo := "";
cLinha := "";
while not EOF( cArquivo ) do
begin
ReadLn( cArquivo, cLinha );
cConteudo
:= cConteudo + cLinha + #13 + #10;
iRetorno :=
Bematech_FI_UsaComprovanteNaoFiscalVinculado( pchar(
cLinha ) + #13
);
//
Aqui é feito o tratamento de erro de comunicação com a
// impressora (desligamento
da impressora durante a impressão do
// comprovante).
if not ( VerificaRetornoFuncaoImpressora(
iRetorno ) ) then
begin
iRetorno :=
Bematech_FI_FinalizaModoTEF();
if ( Application.MessageBox(
"A impressora não responde!" +
#13 + "Deseja
imprimir novamente?", "Atenção",
MB_IconInformation + MB_YESNO ) = IDYES ) then
begin
CloseFile( cArquivo );
iRetorno:=Bematech_FI_FechaComprovanteNaoFiscalVinculado;
if ( ImprimeGerencial = 1 ) then
begin
result := true; exit;
end
else
begin
result := false; exit;
end;
end
else
begin
CloseFile( cArquivo );
iRetorno :=
Bematech_FI_FechaComprovanteNaoFiscalVinculado;
result :=
false; exit;
end;
end
else
if EOF(
cArquivo ) then
begin
.
.
.
////////////////////////////////////////////////////////////////////////////////
// Função: ImprimeGerencial // Objetivo: Imprimir através do Relatório
Gerencial a transação efetuada. // Retorno: 1 para OK ou diferente de 1 para
não OK
////////////////////////////////////////////////////////////////////////////////
function ImprimeGerencial: integer; var cConteudo, cLinha, cSaltaLinha,
cLinhaArquivo: string; cArquivo : TextFile;
iTentativas, iVezes: integer;
cMensagem : TForm; bTransacao: boolean; begin
if FileExists( "IMPRIME.TXT") then
DeleteFile( "IMPRIME.TXT" );
result := 1; for iTentativas
:= 1 to 7 do begin
. .
. // Bloqueia
o teclado e o mouse para a impressão do TEF iRetorno :=
Bematech_FI_IniciaModoTEF(); if FileExists( "IMPRIME.TXT") then
begin
AssignFile( cArquivo,
"IMPRIME.TXT" ); Reset(
cArquivo ); cConteudo :=
""; cLinha := "";
while not EOF( cArquivo )
do begin
ReadLn( cArquivo, cLinha );
cConteudo := cConteudo + cLinha + #13 + #10;
iRetorno := Bematech_FI_RelatorioGerencial( pchar( cLinha )
+ #13 );
// Aqui é feito o tratamento de erro de comunicação com a impressora
//
(desligamento da impressora durante a impressão do comprovante).
if not ( VerificaRetornoFuncaoImpressora( iRetorno ) ) then
begin
iRetorno := Bematech_FI_FinalizaModoTEF();
if ( Application.MessageBox( "A impressora não responde!" +
#13 + "Deseja imprimir novamente?", "Atenção",
MB_IconInformation + MB_YESNO ) = IDYES ) then
begin
CloseFile( cArquivo );
iRetorno := Bematech_FI_FechaRelatorioGerencial;
ImprimeGerencial;
exit;
end
else
begin
CloseFile( cArquivo );
iRetorno := Bematech_FI_FechaRelatorioGerencial;
result := 0;
exit;
end;
end; .
.
.
|