assim que tenho funcionando, olha, no clipper eu uso como o bemafi.exe, no harbour nao daria pra usar assim? vi que deu alguns erros, e por ser 32 bits, eu optei de cara em usar a dll, pq achei que iria ser mais simples, mas ja vi que ta complicado, acho que vou tentar de outra forma, quanto ao que vc postou anteriormente, vou testar entao, so que fiquei preocupado que de depois q mudei a versao, piorou as coisas, sem a rotina da bematech, até compila, mas quando eu vou executar, o exe se instala no gerenciar de tarefas, mas nao abre o programa, dae eu compilei com modo debugador, ae ele abre, nao sei mais o que fazer, to ficando bem doido
Código: Selecionar todos
/ --------------------------------------------------------------------------.
// Arquivo..: Bematech.PRG --------------------------------------------------.
// Funcao...: Depositario das funcoes de acesso a DLL Bemafi32 --------------.
// Uso......: Controle da impressora fiscal BEMATECH ------------------------.
// Data.....: 19/01/2005 ----------------------------------------------------.
// --------------------------------------------------------------------------.
//#INCLUDE "WFCAIXA.CH"
#INCLUDE "INKEY.CH"
#INCLUDE "MINIGUI.CH"
//#INCLUDE "WINPRINT.CH"
FUNCTION bemafiserie(bemafiserie)
// Funcao...: Ler o n£mero de s‚rie do ECF BEMATECH -------------------------.
NumeroSerie := SPACE(15)
//retornacomando := Bematech_FI_NumeroSerie(NumeroSerie)
retornacomando := Bematech_FI_NumeroSerie()
retornacomando := pegaestatus(retornacomando)
variaretorno := SPACE(50)
Bematech_FI_LeArquivoRetorno(variaretorno)
&bemafiserie. := ALLTRIM(variaretorno)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de ler o n£mero de s‚rie do ECF BEMATECH -------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafidatahora(bemafidata,bemafihora)
// Funcao....: Ler a Data e a Hora do ECF BEMATECH --------------------------.
retornacomando := Bematech_FI_DataHoraImpressora()
retornacomando := pegaestatus(retornacomando)
variaretorno := SPACE(50)
Bematech_FI_LeArquivoRetorno(variaretorno)
&bemafidata. := SUBSTR(variaretorno,1,6)
&bemafihora. := SUBSTR(variaretorno,8,6)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de ler a data e a hora do ECF BEMATECH ---------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafitestapapel
// Funcao....: Veirificar o numero de linhas ap¢s pouco papel ---------------.
retornacomando := Bematech_FI_MonitoramentoPapel()
retornacomando := pegaestatus(retornacomando)
variaretorno := SPACE(50)
Bematech_FI_LeArquivoRetorno(variaretorno)
faltalinha := 366-VAL(ALLTRIM(variaretorno))
erro('O ECF BEMATECH est com Pouco Papel. aconselh vel encerrar o movimento e emitir uma Leitura X e trocar a bobina. Faltam apenas ' + ALLTRIM(STR(faltalinha)) + ' linhas na bobina. Talvez nÆo seja o suficiente.')
RETURN(retornacomando)
// Fim da fun‡Æo de testar o estado do papel --------------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafinumerocf(bemafinumerocf)
// Funcao...: Ler o n£mero do £ltimo CF para ECF BEMATECH -------------------.
retornacomando := Bematech_FI_NumeroCupom(bemafinumerocf)
//retornacomando := pegaestatus(retornacomando)
//variaretorno := SPACE(50)
//Bematech_FI_LeArquivoRetorno(variaretorno)
//&bemafinumerocf. := ALLTRIM(variaretorno)
//IF ecfpoucopapel
// ecfpoucopapel := .F.
// bemafitestapapel()
//ENDIF
RETURN(retornacomando)
FUNCTION bemafinumecaixa(bemafinumerocaixa)
// Funcao...: Ler o n£mero do £ltimo CF para ECF BEMATECH -------------------.
retornacomando := Bematech_FI_NumeroCaixa(bemafinumerocaixa)
//retornacomando := pegaestatus(retornacomando)
//variaretorno := SPACE(50)
//Bematech_FI_LeArquivoRetorno(variaretorno)
//&bemafinumerocaixa. := ALLTRIM(variaretorno)
//IF ecfpoucopapel
// ecfpoucopapel := .F.
// bemafitestapapel()
//ENDIF
RETURN(retornacomando)
// Fim da funcao de ler o n£mero do £ltimo CF para ECF BEMATECH -------------.
// --------------------------------------------------------------------------.
FUNCTION bemafileiturax()
// Funcao...: Imprimir a Leitura X do ECF BEMATECH --------------------------.
retornacomando := Bematech_FI_LeituraX()
retornacomando := pegaestatus(retornacomando)
RETURN(retornacomando)
// Fim da funcao de imprimir a leitura X do ECF BEMATECH --------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiiniciadia(viniciadia)
// Funcao...: Iniciar o dia no ECF BEMATECH ---------------------------------.
IF viniciadia == NIL .OR. EMPTY(viniciadia)
viniciadia := '0'
ENDIF
bemasuprimento := viniciadia
bemaformasupri := 'Dinheiro'
retornacomando := Bematech_FI_AberturaDoDia(bemasuprimento,'Dinheiro')
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de inicio do dia no ECF BEMATECH ---------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiadicionaal(bemaaliquota,bemaimposto)
// Funcao...: Programar aliquota de impostos em ECF BEMATECH ----------------.
retornacomando := Bematech_FI_ProgramaAliquota(bemaaliquota,bemaimposto)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de programar aliquota de impostos no ECF BEMATECH ----------.
// --------------------------------------------------------------------------.
FUNCTION bemafiultimocf
// Funcao...: Cancelar o ultimo CF do ECF BEMATECH --------------------------.
retornacomando := Bematech_FI_CancelaCupom()
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de cancelar o ultimo CF do ECF BEMATECH --------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafireducaoz
// Funcao...: Efetuar a reducao Z no ECF BEMATECH ---------------------------.
bemadata := DTOC(DATE())
bemahora := TIME()
retornacomando := Bematech_FI_ReducaoZ(bemadata,bemahora)
RETURN(retornacomando)
// Fim da funcao de emitir reducao Z do ECF BEMATECH ------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemacabecalho(bemadocumento)
// Funcao...: Imprimir o cabecalho do ECF BEMATECH --------------------------.
IF bemadocumento == NIL .OR. EMPTY(bemadocumento)
bemadocumento := SPACE(0)
ENDIF
retornacomando := Bematech_FI_AbreCupom(bemadocumento)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de imprimir o cabecalho do ECF BEMATECH --------------------.
// --------------------------------------------------------------------------.
FUNCTION bemaitemvendido(bemacodigo,bemadescricao,bemaaliquota,bematipoquan,bemaquantidade,bemacasas,bemaunitario,bematipodesc,bemadesconto)
priv ack:=0,st1:=0,st2:=0
// Funcao...: Imprimir um item no ECF BEMATECH ------------------------------.
RETORNACOMANDO := 0
retornacomando := Bematech_FI_VendeItem(bemacodigo,bemadescricao,bemaaliquota,bematipoquan,bemaquantidade,bemacasas,bemaunitario,bematipodesc,bemadesconto)
//retornacomando := pegaestatus(retornacomando)
ACK:=0
ST1:=0
ST2:=0
//Chk_Retorno()
//ecfpoucopapel := .F.
//bemafitestapapel()
RETURN(retornacomando)
// Fim da funcao de imprimir um item no ECF BEMATECH ------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemaficancelaitem(bemaitemcancela)
// Funcao...: Cancelar um item gen‚rico no ECF BEMATECH ---------------------.
retornacomando := Bematech_FI_CancelaItemGenerico(bemaitemcancela)
RETURN(retornacomando)
// Fim da funcao de cancelar um item gen‚rico no ECF BEMATECH ---------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiiniciafecha(bemadescoacres,bematipodescoacres,bemavaldescoacres)
// Funcao...: Iniciar o fechamento do cupom no ECF BEMATECH -----------------.
retornacomando := Bematech_FI_IniciaFechamentoCupom(bemadescoacres,bematipodescoacres,bemavaldescoacres)
retornacomando := pegaestatus(retornacomando)
RETURN(retornacomando)
// Fim da funcao de iniciar o fechamento do cupom no ECF BEMATECH -----------.
// --------------------------------------------------------------------------.
FUNCTION bemafisubtotal(bemafisubtotal)
// Funcao...: Executa o subtotal do ECF BEMATECH ----------------------------.
bemasubtotal := SPACE(14)
retornacomando := Bematech_FI_SubTotal(bemasubtotal)
retornacomando := pegaestatus(retornacomando)
&bemafisubtotal. := bemasubtotal
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de executar o subtotal no ECF BEMATECH ---------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiefetuaforma(bemaformapaga,bemaformavalor)
// Funcao...: Executa a efetua‡Æo da forma para ECF BEMATECH ----------------.
bemasubtotal := SPACE(14)
retornacomando := Bematech_FI_EfetuaFormaPagamento(bemaformapaga,bemaformavalor)
RETURN(retornacomando)
// Fim da funcao de executar a forma de pagamento para ECF BEMATECH ---------.
// --------------------------------------------------------------------------.
FUNCTION bemafiterminacupom(termina1,termina2,termina3,termina4,termina5,termina6,termina7,termina8)
// Funcao...: Terminar o fechamento do CF no ECF BEMATECH -------------------.
// Igualando as mensagens a 48 colunas --------------------------------------.
termina1 := termina1 + SPACE(48)
termina2 := termina2 + SPACE(48)
termina3 := termina3 + SPACE(48)
termina4 := termina4 + SPACE(48)
termina5 := termina5 + SPACE(48)
termina6 := termina6 + SPACE(48)
termina7 := termina7 + SPACE(48)
termina8 := termina8 + SPACE(48)
termina1 := SUBSTR(termina1,1,48)
termina2 := SUBSTR(termina2,1,48)
termina3 := SUBSTR(termina3,1,48)
termina4 := SUBSTR(termina4,1,48)
termina5 := SUBSTR(termina5,1,48)
termina6 := SUBSTR(termina6,1,48)
termina7 := SUBSTR(termina7,1,48)
termina8 := SUBSTR(termina8,1,48)
// Mensagens igualadas a 48 colunas -----------------------------------------.
bemamensagem := termina1 + termina2 + termina3 + termina4 + termina5 + termina6 + termina7 + termina8
IF EMPTY(bemamensagem)
bemamensagem := 'VENDA AO CONSUMIDOR. '
bemamensagem := bemamensagem + 'VOLTE SEMPRE. '
IF MONTH(DATE()) == 12
bemamensagem := bemamensagem + 'FELIZ NATAL E PRàSPERO ANO NOVO. '
ENDIF
ENDIF
retornacomando := Bematech_FI_TerminaFechamentoCupom(bemamensagem)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de terminar o fechamento do CF no ECF BEMATECH -------------.
// --------------------------------------------------------------------------.
FUNCTION bemafimemoriadata(bemadataini,bemadatafim,bemasaida)
// Funcao...: Emite a leitura da Mem¢ria Fiscal por datas no ECF BEMATECH ---.
retornacomando := Bematech_FI_LeituraMemoriaFiscalData(bemadataini,bemadatafim,bemasaida)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de leitura de memoria fiscal por datas no ECF BEMATECH -----.
// --------------------------------------------------------------------------.
FUNCTION bemafimemoriareducao(bemareducaoini,bemareducaofim,bemasaida)
// Funcao...: Emite a leitura da Mem¢ria Fiscal por redu‡äes no ECF BEMATECH .
retornacomando := Bematech_FI_LeituraMemoriaFiscalReducao(bemareducaoini,bemareducaofim,bemasaida)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de leitura de memoria fiscal por redu‡äes no ECF BEMATECH --.
// --------------------------------------------------------------------------.
FUNCTION bemafialiquota(bemaaliquota,bemaimposto)
// Funcao...: Programa al¡quota de imposto no ECF BEMATECH ------------------.
retornacomando := Bematech_FI_ProgramaAliquota(bemaaliquota,bemaimposto)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de programar aliquota de imposto no ECF BEMATECH -----------.
// --------------------------------------------------------------------------.
FUNCTION bemafihoraverao
// Funcao...: Programa horario de verÆo no ECF BEMATECH ---------------------.
retornacomando := Bematech_FI_ProgramaHorarioVerao()
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de programar horario de verÆo no ECF BEMATECH --------------.
// --------------------------------------------------------------------------.
FUNCTION bemafisuprimento(bemasuprimento,bemaformasupri)
// Funcao...: Enviar suprimento de caixa para o ECF BEMATECH ----------------.
retornacomando := Bematech_FI_Suprimento(bemasuprimento,bemaformasupri)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de enviar suprimento de caixa para o ECF BEMATECH ----------.
// --------------------------------------------------------------------------.
FUNCTION bemafisangria(bemasangria)
// Funcao...: Enviar sangria de caixa para o ECF BEMATECH -------------------.
retornacomando := Bematech_FI_Sangria(bemasangria)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de enviar sangria de caixa para o ECF BEMATECH -------------.
// --------------------------------------------------------------------------.
FUNCTION abrenaofiscal(fPagamento,fValor,fNumero)
// Funcao...: Abre cupom nao fiscal -------------------.
retornacomando := Bematech_FI_AbreComprovanteNaoFiscalVinculado(fPagamento,fValor,fNumero)
RETURN(retornacomando)
FUNCTION imprimenaofiscal(fLinha)
// Funcao...: Imprime linha nao fiscal -------------------.
retornacomando := Bematech_FI_UsaComprovanteNaoFiscalVinculado(fLinha)
RETURN(retornacomando)
FUNCTION fechanaofiscal()
// Funcao...: Abre cupom nao fiscal -------------------.
retornacomando := Bematech_FI_FechaComprovanteNaoFiscalVinculado()
RETURN(retornacomando)
FUNCTION pegaestatus(pegastatus)
// Funcao....: Verificar o arquivo STATUS.TXT gravado em C:\ ----------------.
IF pegastatus == NIL
RETURN({.F.,'Sem retorno',''})
ELSE
IF VALTYPE(pegastatus) == 'N'
IF pegastatus == 0
RETURN({.F.,'Erro de comunica‡Æo.','A Impressora Fiscal deve estar Desligada ou Desconectada do cabo Serial.'})
ELSEIF pegastatus == -2
RETURN({.F.,'Parƒmetro inv lido na fun‡Æo.','Verifique os tipos STRING e INTEIRO.'})
ELSEIF pegastatus == -3
RETURN({.F.,'Al¡quota de imposto nÆo programada.','Ap¢s o Fechamento do CF programe a nova Al¡quota.'})
ELSEIF pegastatus == -4
RETURN({.F.,'Bemafi32.INI nÆo encontrado.','O Arquivo Bemafi32.DLL deve estar na pasta ' + GETSYSTEMFOLDER()})
ELSEIF pegastatus == -5
RETURN({.F.,'NÆo foi poss¡vel abrir a Porta de Comunica‡Æo.','A Impressora Fiscal deve estar Desligada ou Desconectada do cabo Serial.'})
ELSEIF pegastatus == -6
RETURN({.F.,'A Impressora Fiscal est desligada ou o Cabo de Comunica‡Æo Serial est Desconectado',''})
ELSEIF pegastatus == -8
RETURN({.F.,'Erro em arquivos de Retorno.','A Impressora Fiscal deve estar Desligada ou Desconectada do cabo Serial.'})
ELSEIF pegastatus == -9
RETURN({.F.,'Erro ao Fechar a Porta Serial.',''})
ELSEIF pegastatus == -24
RETURN({.F.,'Forma de Pagamento nÆo programada.',''})
ELSEIF pegastatus == -25
RETURN({.F.,'Totalizador nÆo Fiscal nÆo programado.',''})
ELSEIF pegastatus == -30
RETURN({.F.,'Fun‡Æo nÆo compat¡vel com impressora YANCO.',''})
ENDIF
ELSE
RETURN({.F.,'Retorno desconhecido',''})
ENDIF
ENDIF
arqstatus := 'C:\STATUS.TXT'
IF .NOT. FILE((arqstatus))
RETURN({.F.,'O arquivo STATUS.TXT nÆo foi localizado em C:\.','A Impressora fiscal deve estar desligada ou desconectada.'})
ELSE
conteudostatus := MEMOREAD((arqstatus))
linhastatus1 := ALLTRIM(MEMOLINE(conteudostatus,,1))
largura1 := LEN(linhastatus1)
virgula1 := 0
virgula2 := 0
FOR contavar := 1 TO largura1
varconta := SUBSTR(linhastatus1,contavar,1)
IF varconta == ',' .AND. virgula1 == 0
virgula1 := contavar
ELSEIF varconta == ',' .AND. virgula1 > 0
virgula2 := contavar
ENDIF
NEXT contavar
ENDIF
aack := VAL(SUBSTR(linhastatus1,1,(virgula1-1)))
ast1 := VAL(SUBSTR(linhastatus1,(virgula1+1),(virgula2-1)))
ast2 := VAL(SUBSTR(linhastatus1,(virgula2+1),(largura1-(virgula2-1))))
// Inicio o calculo de ST1
msgst1 := SPACE(0)
ecfpoucopapel := .F.
IF ast1 >= 128
ast1 := ast1 - 128
msgst1 := 'Fim de Papel'
ENDIF
IF ast1 >= 64
ecfpoucopapel := .T.
ast1 := ast1 - 64
msgst1 := 'Pouco Papel'
ENDIF
IF ast1 >= 32
ast1 := ast1 - 32
msgst1 := 'Erro no rel¢gio'
ENDIF
IF ast1 >= 16
ast1 := ast1 - 16
msgst1 := 'Impressora em erro'
ENDIF
IF ast1 >= 8
ast1 := ast1 - 8
msgst1 := 'Comando nÆo iniciado com ESC (CHR927))'
ENDIF
IF ast1 >= 4
ast1 := ast1 - 4
msgst1 := 'Comando inixistente'
ENDIF
IF ast1 >= 2
ast1 := ast1 - 2
msgst1 := 'Cupom aberto'
ENDIF
IF ast1 >= 1
ast1 := ast1 - 1
msgst1 := 'N£mero de parƒmetros inv lidos'
ENDIF
// Inicio o calculo de ST2
msgst2 := SPACE(0)
IF ast2 >= 128
ast2 := ast2 - 128
msgst2 := 'Tipo de parƒmetro de comando inv lido'
ENDIF
IF ast2 >= 64
ast2 := ast2 - 64
msgst2 := 'Mem¢ria fiscal cheia'
ENDIF
IF ast2 >= 32
ast2 := ast2 - 32
msgst2 := 'Erro na mem¢ria RAM'
ENDIF
IF ast2 >= 16
ast2 := ast2 - 16
msgst2 := 'Al¡quota nÆo propgramada'
ENDIF
IF ast2 >= 8
ast2 := ast2 - 8
msgst2 := 'Capacidade m xima de al¡quotas atingido'
ENDIF
IF ast2 >= 4
ast2 := ast2 - 4
msgst2 := 'Cancelamento nÆo permitido'
ENDIF
IF ast2 >= 2
ast2 := ast2 - 2
msgst2 := 'CNPJ/IE do propriet rio nÆo programado'
ENDIF
IF ast2 >= 1
ast2 := ast2 - 1
msgst2 := 'Comando nÆo executado'
ENDIF
FERASE((arqstatus))
ast12 := .T.
IF .NOT. EMPTY(msgst1)
IF ecfpoucopapel
ast12 := .T.
ELSE
ast12 := .F.
ENDIF
ENDIF
IF .NOT. EMPTY(msgst2)
ast12 := .F.
ENDIF
RETURN({ast12,msgst1,msgst2})
Function Chk_Retorno
Local liga,ack,st1,st2,msg1,msg2
ack:= i2bin(0)
st1:= i2bin(0)
st2:= i2bin(0)
//liga:= dllcall("BEMAFI32.DLL",32,"Bematech_FI_RetornoImpressora",ack,st1,st2)
msg1:= bin2i(St1)
msg2:= bin2i(St2)
MsgSTOP(" ST1 "+msg1+" ST2 "+msg2,"CODIGO")
// Fim da funcao de testar o arquivo STATUS.TXT -----------------------------.
// --------------------------------------------------------------------------.
// Chamadas para DLL --------------------------------------------------------.
// Manipula‡Æo do cupom fiscal
DECLARE DLL_TYPE_INT Bematech_FI_AbreCupom(DLL_TYPE_LPCSTR bemadocumento) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_VendeItem(DLL_TYPE_LPCSTR bemacodigo,DLL_TYPE_LPCSTR bemadescricao,DLL_TYPE_LPCSTR bemaaliquota,DLL_TYPE_LPCSTR bematipoquan,DLL_TYPE_LPCSTR bemaquantidade,DLL_TYPE_INT bemacasas,DLL_TYPE_LPCSTR bemaunitario,DLL_TYPE_LPCSTR bematipodesc,DLL_TYPE_LPCSTR bemadesconto) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_CancelaItemGenerico(DLL_TYPE_LPCSTR bemaitemcancela) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_IniciaFechamentoCupom(DLL_TYPE_LPCSTR bemadescoacres,DLL_TYPE_LPCSTR bematipodescoacres,DLL_TYPE_LPCSTR bemavaldescoacres) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_SubTotal(DLL_TYPE_LPCSTR bemasubtotal) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_EfetuaFormaPagamento(DLL_TYPE_LPCSTR bemaformapaga,DLL_TYPE_LPCSTR bemaformavalor) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_TerminaFechamentoCupom(DLL_TYPE_LPCSTR bemamensagem) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_CancelaCupom() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_ProgramaFormaPagamentoMFD(DLL_TYPE_LPCSTR bemaformapaga,DLL_TYPE_LPCSTR bemaformatef) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_AberturaDoDia(DLL_TYPE_LPCSTR bemasuprimento,DLL_TYPE_LPCSTR bemaformasupri) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_Suprimento(DLL_TYPE_LPCSTR bemasuprimento,DLL_TYPE_LPCSTR bemaformasupri) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_Sangria(DLL_TYPE_LPCSTR bemasangria) IN BEMAFI32.DLL
// Verifica o numero de s‚rie, data, hora e numero do ultimo cupom
//DECLARE DLL_TYPE_INT Bematech_FI_NumeroSerie(DLL_TYPE_LPCSTR NumeroSerie) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_NumeroSerie() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_DataHoraImpressora() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_NumeroCaixa(DLL_TYPE_LPCSTR bemafinumerocaixa) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_NumeroCupom(DLL_TYPE_LPCSTR bemafinumerocf) IN BEMAFI32.DLL
// Relat¢rios
DECLARE DLL_TYPE_INT Bematech_FI_ReducaoZ(DLL_TYPE_LPCSTR bemadata,DLL_TYPE_LPCSTR bemahora) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeituraX() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeituraMemoriaFiscalData(DLL_TYPE_LPCSTR bemadataini,DLL_TYPE_LPCSTR bemadatafim,DLL_TYPE_LPCSTR bemasaida) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeituraMemoriaFiscalReducao(DLL_TYPE_LPCSTR bemareducaoini,DLL_TYPE_LPCSTR bemareducaofim,DLL_TYPE_LPCSTR bemasaida) IN BEMAFI32.DLL
// Programa‡Æo de estado
DECLARE DLL_TYPE_INT Bematech_FI_ProgramaAliquota(DLL_TYPE_LPCSTR bemaaliquota,DLL_TYPE_LPCSTR bemaimposto) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_ProgramaHorarioVerao() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_RetornoImpressora(DLL_TYPE_INT Ack,DLL_TYPE_INT St1,DLL_TYPE_INT St2) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_MonitoramentoPapel() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_VerificaEstadoImpressoraStr() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeArquivoRetorno(DLL_TYPE_LPCSTR variaretorno) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_AbreComprovanteNaoFiscalVinculado(DLL_TYPE_LPCSTR fPagamento,DLL_TYPE_LPCSTR fValor,DLL_TYPE_LPCSTR fNumero) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_UsaComprovanteNaoFiscalVinculado(DLL_TYPE_LPCSTR fLinha) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_FechaComprovanteNaoFiscalVinculado() IN BEMAFI32.DLL
// --------------------------------------------------------------------------.
FUNCTION ERRO(PARI)
MsgSTOP(pari,"Cupom")
return nil