Código: Selecionar todos
#include "hmg.ch"
REQUEST HB_GT_WIN_DEFAULT
Function Main()
SetMode(25,80)
Moderador: Moderadores

Código: Selecionar todos
#include "hmg.ch"
REQUEST HB_GT_WIN_DEFAULT
Function Main()
SetMode(25,80)
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

kkkk isso acontece porque você está tentando executar uma aplicação que foi gerada em modo GUI (gráfico) e você está utilizando @ say... Tem que inserir as linhas que te passei na minha mensagem anterior. Aí você vai ver que funciona. Isso já não acontece, se você utiliza-se a IDE da versão 3.0.35 e setar a opção modo console. Nesta ultima versão, a IDE não tem isso, reparou ?mas quando eu vou executar, o exe se instala no gerenciar de tarefas, mas nao abre o programa


E você poderia dizer qual é o erro que está dando ?erro quando executa este comando
HINSTANCE handle = LoadLibrary("BEMAFI32.DLL")
DA O erro aquele de sempre e cai fora



Código: Selecionar todos
#INCLUDE "INKEY.CH"
#INCLUDE "MINIGUI.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
Código: Selecionar todos
#INCLUDE "INKEY.CH"
#INCLUDE "MINIGUI.CH"
*-----------------------------------------------------------------------------*
* Funcao...: Ler o numero de serie do ECF BEMATECH
*-----------------------------------------------------------------------------*
FUNCTION bemafiserie( bemafiserie )
LOCAL xAux := ''
LOCAL NumeroSerie := SPACE(15)
xAux := Bematech_FI_NumeroSerie( @NumeroSerie )
xAux := pegaestatus( xAux )
IF ecfpoucopapel()
ecfpoucopapel := .F.
bemafitestapapel()
ENDIF
RETURN(NumeroSerie)

