Impresora Fiscal IBM
Impresora Fiscal IBM
Saludos...
Alguien ha trabajado con impresoras fiscales IBM.
Necesito aclarar alguna dudas, ojala en Chile, por la reglamentacion del servicio de impuestos internos.
Saludos y gracias de antemano
Alguien ha trabajado con impresoras fiscales IBM.
Necesito aclarar alguna dudas, ojala en Chile, por la reglamentacion del servicio de impuestos internos.
Saludos y gracias de antemano
Ji,ji,ji... buena la cosa... "all you need is code"
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
Re: Impresora Fiscal IBM
Hola Adolfo
estas trabajando con impresoras fiscales
tengo un cliente que me pidio evaluar el tema, pero no entiendo nada
podris explicar un poco si es posible
saludos
Patrici Avalos Aguirre
La Serena Chile
estas trabajando con impresoras fiscales
tengo un cliente que me pidio evaluar el tema, pero no entiendo nada
podris explicar un poco si es posible
saludos
Patrici Avalos Aguirre
La Serena Chile
Saludos
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Re: Impresora Fiscal IBM
Mándame un mail
Ji,ji,ji... buena la cosa... "all you need is code"
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
Re: Impresora Fiscal IBM
Hola adolfo si te sirve te adjunto un ejemplo en clipper , esto es para las ibm tf6.
te comento yo se muy poco de fivewin y trabajo con dbf es muy dificil pasar de dbf a mysql ?
gracias por tu respuesta
Pablo
//Inicializa puerta //
clear
pto:=0
Sn1:= Sn2:= sn3:= Sn4:= Sn5:= Sn6:= Sn7:= sn8:="N"
@ 01,01 Say "Puerto :" Get pto
@ 02,01 Say "Emitir informe X :" Get SN1 Pict "@!"
@ 03,01 Say "Emitir informe Z :" Get SN2 Pict "@!"
@ 04,01 Say "Inicio de Ventas :" Get SN3 Pict "@!"
@ 05,01 Say "Test de Impresora:" Get SN4 Pict "@!"
@ 06,01 Say "Acumuladores:" Get SN5 Pict "@!"
@ 07,01 Say "Repite linea 18:" Get SN6 Pict "@!"
@ 08,01 Say "Pld Forzado:" Get SN7 Pict "@!"
@ 09,01 Say "Cambiar horario:" Get SN8 Pict "@!"
Read
IniPortTF6(pto)
Set console off
Set Alternate to E_TF6.TXT ADDITIvE
Set Alternate On
Set century on
if Sn6="S"
error:=ImpTf6( pto, "18") && reimprimir linea
quit
endif
if Sn7="S"
error:=ImpTf6( pto, "90") && PLD FORZADO
quit
endif
if Sn5="S"
error:=ImpTf6( pto, "482") && acumuladores
@ 5,0 Say error
quit
endif
if Sn8="S"
horanew:=Space(4)
@ 10,01 Say "Ingrese hora (HHMM):" Get horanew pict "@R 99:99"
Read
datonew:=Subs(Dtoc(Date()),4,2)+Subs(Dtoc(Date()),1,2)+Subs(Dtoc(Date()),7,4)+horanew
error:=ImpTf6( pto,"44"+Datonew) && cambio de fecha hora
@ 5,0 Say error
quit
endif
if Sn1="S"
ImpTf6( pto, "01") && Reporte X
Return
endif
if Sn2="S"
ImpTf6( pto, "021") && Reporte Z
endif
if Sn3="S"
ImpTf6( pto, "32") && Inicio DE ventas
Quit
endif
if Sn4="S"
ImpTf6( pto, "38") && Test Impresora
*ImpTf6( pto, "41111") && seteo indicadores para cambio
quit
endif
/ imprime en TF6 //
func ImpTF6( nPurt, cString )
local nRest:=0 //len(cCadena )
local r
local lret:= .t.
local nEspera := 0
local nMaxEsp := 10
local cStrRet :=""
Local cLeePto :=""
cCadena:= chr( cton("87",16))+cString+ chr( cton("88", 16))
*Cadena:= chr("87")+cString+ chr("88")
nRest := len(cCadena)
while nRest > 0 .and. lRet
if com_dsr(nPurt)
cCadena := right(cCadena, nRest)
nRest := com_send(nPurt, cCadena)
cLeePto:=""
cStrRet:=""
while asc(cLeePto) != 13
cLeePto=com_read(nPurt,1)
if asc(cLeePto)== 10 //
cStrRet="OK"
lRet:=.f.
exit
else
if asc(cLeePto)!=0
cStrRet+= cLeePto
endif
if nEspera >= nMaxEsp
cStrRet+=" TIEMPO DE ESPERA TERMINADO "+dtoc(Date())+" "+Time()
lRet:=.f.
exit
else
inkey(.1)
nEspera+=0.1
endif
endif
endd
elseif nEspera >= nMaxEsp
if alert("No hay respuesta de la Impresora ;" +;
"Revise el estado del dispositivo.",{"Si","No"}) == 2
lRet := .f.
cStrRet:="No hubo Respuesta de la Impresora "+dtoc(Date())+" "+Time()
else
nEspera := 0
end
else
inkey(0.1)
nEspera += 0.1
endif
endd
return cStrRet
// Inicializa la puerta serial para impresora TF6
func IniPortTF6(nPurt, nBaud, cParidad, nLarBit, nBitPar, cMsgError)
local lRet := .f.
*nPurt := 1
nBaud := 19200
cParidad := "N"
nLarBit := 8
nBitPar := 1
cMsgError := "COM" + str(nPurt, 1)
if com_open(nPurt, 1000, 1000)
if com_init(nPurt, nBaud, cParidad, nLarBit, nBitPar)
lRet := .t.
com_hard( nPurt, .t., .t. )
else
com_close(nPurt)
alert("Puerta serial " + cMsgError + " no pudo inicializarse")
end
else
alert("Puerta serial " + cMsgError + " no pudo abrirse")
end
return lRet
Function v_error(coderror)
Ret:=.F.
do case
Case Coderror="003"
Alert("Monto Total del Item No Coincide(003)..!")
Case Coderror="005"
Alert("Memoria Flash fiscal Casi Llena(005)..!")
Case Coderror="006"
Alert("Monto Total de la Transaccion en Cero o Negativo(006)..!")
Case Coderror="007"
Alert("Total de la transaccion No coincide al Total Fiscal(007)..!")
Case Coderror="008"
Alert("Se ha enviado Caracteres no Imprimible(008)..!")
Case Coderror="012"
Alert("Linea de Comentarios Excedidas(012)..!")
Case Coderror="013"
Alert("Impresora No Responde revisar conexiones y encendido(013)..!")
Case Coderror="014"
Alert("Error ocurrido al Leer Memoria flash fiscal(014)..!")
Case Coderror="015"
Alert("Error al Escribir en la Memoria Flash Fiscal(015)..!")
Case Coderror="019"
Alert("Secuencia de comandos no Valida(019)..!")
Case Coderror="025"
Alert("descuento mayor al 50% (025)..!")
Case Coderror="040"
Alert("Impresora No termina de Imprimir(040)..!")
inkey(5)
Ret:=.t.
Case Coderror="043"
Alert("Falta Papel o la Tapa de Impresora est Abierta(043)..!")
Ret:=.T.
Case Coderror="045"
Alert("No Hay Energia Suficiente para Procesar el comando(045)..!")
Ret:=.T.
Case Coderror="059"
Alert("comando no puede hacerse en periodo de Ventas(059)..!")
Case Coderror="060"
Alert("comando no puede hacerse en periodo de Cierre(059)..!")
Case Coderror="067".or. Coderror="068"
Alert("Debe Ejecutar el Informe Z (067-068)..!")
Case Coderror="076".or.coderror="077"
Alert("Error Grave (076-077)..!")
Case Coderror="080".or. coderror="082"
Alert("Error de impresion Esta la tapa Abierta o se termino el Papel(080)..!")
inkey(5)
Ret:=.T.
Endcase
Return(Ret)
te comento yo se muy poco de fivewin y trabajo con dbf es muy dificil pasar de dbf a mysql ?
gracias por tu respuesta
Pablo
//Inicializa puerta //
clear
pto:=0
Sn1:= Sn2:= sn3:= Sn4:= Sn5:= Sn6:= Sn7:= sn8:="N"
@ 01,01 Say "Puerto :" Get pto
@ 02,01 Say "Emitir informe X :" Get SN1 Pict "@!"
@ 03,01 Say "Emitir informe Z :" Get SN2 Pict "@!"
@ 04,01 Say "Inicio de Ventas :" Get SN3 Pict "@!"
@ 05,01 Say "Test de Impresora:" Get SN4 Pict "@!"
@ 06,01 Say "Acumuladores:" Get SN5 Pict "@!"
@ 07,01 Say "Repite linea 18:" Get SN6 Pict "@!"
@ 08,01 Say "Pld Forzado:" Get SN7 Pict "@!"
@ 09,01 Say "Cambiar horario:" Get SN8 Pict "@!"
Read
IniPortTF6(pto)
Set console off
Set Alternate to E_TF6.TXT ADDITIvE
Set Alternate On
Set century on
if Sn6="S"
error:=ImpTf6( pto, "18") && reimprimir linea
quit
endif
if Sn7="S"
error:=ImpTf6( pto, "90") && PLD FORZADO
quit
endif
if Sn5="S"
error:=ImpTf6( pto, "482") && acumuladores
@ 5,0 Say error
quit
endif
if Sn8="S"
horanew:=Space(4)
@ 10,01 Say "Ingrese hora (HHMM):" Get horanew pict "@R 99:99"
Read
datonew:=Subs(Dtoc(Date()),4,2)+Subs(Dtoc(Date()),1,2)+Subs(Dtoc(Date()),7,4)+horanew
error:=ImpTf6( pto,"44"+Datonew) && cambio de fecha hora
@ 5,0 Say error
quit
endif
if Sn1="S"
ImpTf6( pto, "01") && Reporte X
Return
endif
if Sn2="S"
ImpTf6( pto, "021") && Reporte Z
endif
if Sn3="S"
ImpTf6( pto, "32") && Inicio DE ventas
Quit
endif
if Sn4="S"
ImpTf6( pto, "38") && Test Impresora
*ImpTf6( pto, "41111") && seteo indicadores para cambio
quit
endif
/ imprime en TF6 //
func ImpTF6( nPurt, cString )
local nRest:=0 //len(cCadena )
local r
local lret:= .t.
local nEspera := 0
local nMaxEsp := 10
local cStrRet :=""
Local cLeePto :=""
cCadena:= chr( cton("87",16))+cString+ chr( cton("88", 16))
*Cadena:= chr("87")+cString+ chr("88")
nRest := len(cCadena)
while nRest > 0 .and. lRet
if com_dsr(nPurt)
cCadena := right(cCadena, nRest)
nRest := com_send(nPurt, cCadena)
cLeePto:=""
cStrRet:=""
while asc(cLeePto) != 13
cLeePto=com_read(nPurt,1)
if asc(cLeePto)== 10 //
cStrRet="OK"
lRet:=.f.
exit
else
if asc(cLeePto)!=0
cStrRet+= cLeePto
endif
if nEspera >= nMaxEsp
cStrRet+=" TIEMPO DE ESPERA TERMINADO "+dtoc(Date())+" "+Time()
lRet:=.f.
exit
else
inkey(.1)
nEspera+=0.1
endif
endif
endd
elseif nEspera >= nMaxEsp
if alert("No hay respuesta de la Impresora ;" +;
"Revise el estado del dispositivo.",{"Si","No"}) == 2
lRet := .f.
cStrRet:="No hubo Respuesta de la Impresora "+dtoc(Date())+" "+Time()
else
nEspera := 0
end
else
inkey(0.1)
nEspera += 0.1
endif
endd
return cStrRet
// Inicializa la puerta serial para impresora TF6
func IniPortTF6(nPurt, nBaud, cParidad, nLarBit, nBitPar, cMsgError)
local lRet := .f.
*nPurt := 1
nBaud := 19200
cParidad := "N"
nLarBit := 8
nBitPar := 1
cMsgError := "COM" + str(nPurt, 1)
if com_open(nPurt, 1000, 1000)
if com_init(nPurt, nBaud, cParidad, nLarBit, nBitPar)
lRet := .t.
com_hard( nPurt, .t., .t. )
else
com_close(nPurt)
alert("Puerta serial " + cMsgError + " no pudo inicializarse")
end
else
alert("Puerta serial " + cMsgError + " no pudo abrirse")
end
return lRet
Function v_error(coderror)
Ret:=.F.
do case
Case Coderror="003"
Alert("Monto Total del Item No Coincide(003)..!")
Case Coderror="005"
Alert("Memoria Flash fiscal Casi Llena(005)..!")
Case Coderror="006"
Alert("Monto Total de la Transaccion en Cero o Negativo(006)..!")
Case Coderror="007"
Alert("Total de la transaccion No coincide al Total Fiscal(007)..!")
Case Coderror="008"
Alert("Se ha enviado Caracteres no Imprimible(008)..!")
Case Coderror="012"
Alert("Linea de Comentarios Excedidas(012)..!")
Case Coderror="013"
Alert("Impresora No Responde revisar conexiones y encendido(013)..!")
Case Coderror="014"
Alert("Error ocurrido al Leer Memoria flash fiscal(014)..!")
Case Coderror="015"
Alert("Error al Escribir en la Memoria Flash Fiscal(015)..!")
Case Coderror="019"
Alert("Secuencia de comandos no Valida(019)..!")
Case Coderror="025"
Alert("descuento mayor al 50% (025)..!")
Case Coderror="040"
Alert("Impresora No termina de Imprimir(040)..!")
inkey(5)
Ret:=.t.
Case Coderror="043"
Alert("Falta Papel o la Tapa de Impresora est Abierta(043)..!")
Ret:=.T.
Case Coderror="045"
Alert("No Hay Energia Suficiente para Procesar el comando(045)..!")
Ret:=.T.
Case Coderror="059"
Alert("comando no puede hacerse en periodo de Ventas(059)..!")
Case Coderror="060"
Alert("comando no puede hacerse en periodo de Cierre(059)..!")
Case Coderror="067".or. Coderror="068"
Alert("Debe Ejecutar el Informe Z (067-068)..!")
Case Coderror="076".or.coderror="077"
Alert("Error Grave (076-077)..!")
Case Coderror="080".or. coderror="082"
Alert("Error de impresion Esta la tapa Abierta o se termino el Papel(080)..!")
inkey(5)
Ret:=.T.
Endcase
Return(Ret)
Re: Impresora Fiscal IBM
Adolfo, si no te molesta, cuales son las dudas que tienes para poder ayudarte, ya he homologado impresoras fiscales, si bien es cierto, son epson, pero todas trabajan más o menos de la misma forma. Además conozco bastante bien la jurisprudencia que regula el funcionamiento de las impresoras fiscales.
Atentamente, Leo.
Atentamente, Leo.
Fivewin 12.04 + xHarbour 1.2.1 + BCC582
Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
Nada como Fivewin, odio visual basic, visual studio y todas las porquerías visual.
Re: Impresora Fiscal IBM
Leo.
Gracias por el ofrecimiento, ya lo hize, el post original es del 2011 y ya tengo homologadas ambas Epson e IBM.
Patricio, por un problema de tiempo no he podido enviarte los manuales de IBM. Lo comprimo y te lo envio a la tarde, con un ej chico.
Saludos
Gracias por el ofrecimiento, ya lo hize, el post original es del 2011 y ya tengo homologadas ambas Epson e IBM.
Patricio, por un problema de tiempo no he podido enviarte los manuales de IBM. Lo comprimo y te lo envio a la tarde, con un ej chico.
Saludos
Ji,ji,ji... buena la cosa... "all you need is code"
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
-
- Posts: 257
- Joined: Wed May 16, 2007 9:40 pm
- Location: Iquique Chile
Re: Impresora Fiscal IBM
Hola
Adolfo... podrias colocar un ejemplo ... agradeceria tu ayuda
saludos
Adolfo... podrias colocar un ejemplo ... agradeceria tu ayuda
saludos
Fivewin 11.07
-
- Posts: 257
- Joined: Wed May 16, 2007 9:40 pm
- Location: Iquique Chile
Re: Impresora Fiscal IBM
Hola
Alguien tiene alguna rutina o ejemplo para poder imprimir en laimpresora.... agradeceria su ayuda
Alguien tiene alguna rutina o ejemplo para poder imprimir en laimpresora.... agradeceria su ayuda
Fivewin 11.07
Re: Impresora Fiscal IBM
Te envie manual
Saludos
Saludos
Ji,ji,ji... buena la cosa... "all you need is code"
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
-
- Posts: 257
- Joined: Wed May 16, 2007 9:40 pm
- Location: Iquique Chile
Re: Impresora Fiscal IBM
Gracias por el manual,,,, esta completisimo, he hecho algunas prueba ,,puedo sacar el informe pero no he podido extraer datos de la impresora, ya que necesito extraer el ultimo numero de boleta, no se si podrias ayudarme...esto es lo que tengo en el programaAdolfo wrote:Te envie manual
Saludos
Comando:='481'
cString:= Chr(135) + Comando + Chr(136)
WRITECOMM( nCom, @cString )
//debiera delvolver una cadena de informacion y yo buscar el numero dentro de esa cadena
?str2hex(cstring) //devuelve 8734383188
?hex2str(cstring) // nada
Fivewin 11.07
-
- Posts: 257
- Joined: Wed May 16, 2007 9:40 pm
- Location: Iquique Chile
Re: Impresora Fiscal IBM
elmoiquique wrote:Gracias por el manual,,,, esta completisimo, he hecho algunas prueba ,,puedo sacar el informe pero no he podido extraer datos de la impresora, ya que necesito extraer el ultimo numero de boleta, no se si podrias ayudarme...esto es lo que tengo en el programaAdolfo wrote:Te envie manual
Saludos
Comando:='481'
cString:= Chr(135) + Comando + Chr(136)
WRITECOMM( nCom, @cString )
//debiera delvolver una cadena de informacion y yo buscar el numero dentro de esa cadena
?str2hex(cstring) //devuelve 8734383188
?hex2str(cstring) // nada
lo solucione asi
Comando:='482'
cString:= Chr(135) + Comando + Chr(136)
WRITECOMM( nCom, @cString )
//?str2hex(cString)
msginfo('hhh','vv')
//hex2str(cString)
cBytes:=space(100)
ReadComm( nCom,@cBytes)
?cBytes
Fivewin 11.07
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
Re: Impresora Fiscal IBM
Saludos
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
-
- Posts: 257
- Joined: Wed May 16, 2007 9:40 pm
- Location: Iquique Chile
Re: Impresora Fiscal IBM
Patricio Avalos Aguirre wrote:Hola
podrian enviarme el manual
desde ya gracias
patricio_avalos_aguirre@hotmail.com
Yo ya estoy trabajando en un programa, pero estoy en los problemas previos, cualquier ayuda es bienvenida
ENVIADO
Fivewin 11.07