Página 1 de 1

Solucionado el imprimir tickets (Punto de venta)

Publicado: Dom Sep 28, 2008 12:27 am
por PEDRO DE LEON RODAS[1]
Apreciables amigos, despues de un buen tiempo invertido en este detalle de
imprimir tickets en un sistema de punto de venta, he encontrado la solución.
De antemano doy gracias a todos y cada uno de los que me brindaron su
experiencia.
Hasta ahorita lo he utilizado con la impresora Star SP212 Line Mode Printer
Pongo el codigo que uso
METHOD GRABARClick( oSender ) CLASS IMPRIMIR_VENTA
LOCAL ofrmPreview, oFont,Var_linea
oFont := TFont():New()
WITH OBJECT oFont
:cName := "Arial"
END WITH
Printer:nPrinterIndex := AScan( Printer:aPrinterNames, ::Impresora_tickets )
Printer:lPreview := .f. //// Si tuviera qui .T. seria visualizado en
pantalla
Printer:cJobTitle := "IMPRIMIR VENTA"
Printer:StartDoc()
Printer:oCanvas:nMapMode := mmSIMULCHAR
Printer:StartPage()
WITH OBJECT Printer:oCanvas
:oFont:= oFont
:lTransparent := .t.
:nMapMode := mmSIMULCHAR
:oFont:nSize := 8
:oFont:lBold := .f.
:nTextAlignment:=taRight
:TextOut( 0, 1, ALLTRIM(NOMBRE_DE_LA_EMPRESA))
:TextOut( 0, 2, "Venta No.: "+alltrim(Str(::Venta:Value)))
:TextOut( 0, 3, "FECHA: "+DTOC(::Fecha:Value)+" Hora: "+time())
:TextOut( 0, 4, "Socio No. "+Alltrim(Str(::Numero_Socio:Value)))
:TextOut( 0, 5, Substr(::Nombre_Socio:Value,1,42) )
:TextOut( 2, 6, "Cantidad")
:TextOut( 16, 6, "Precio")
:TextOut( 28, 6, "Importe")
:TextOut( 0, 7, REPLICATE("-",40))
Var_linea=8
::Tempo:Select()
::Tempo:Gotop()
Do while .Not. ::Tempo:Eof()
:TextOut( 0, Var_linea, Substr(::Tempo:Descrip,1,42))
Var_linea=Var_linea+1
:TextOut( 0,
Var_linea,Transform(::Tempo:Cantidad,"99,999.999"),0 )
:TextOut( 4,
Var_linea,Transform(::Tempo:Precio,"999,999.99"),18 )
:TextOut( 4,
Var_linea,Transform(::Tempo:Importe,"999,999.99"),31 )
Var_linea=Var_linea+1
::Tempo:Skip()
Enddo
:TextOut( 0, Var_linea,REPLICATE("-",40))
Var_linea=Var_linea+1
:TextOut( 2, Var_linea,"Subtotal==>")
:TextOut( 2,
Var_linea,Transform(::Subtotal:Value,"999,999.99"),31 )
Var_linea=Var_linea+1
:TextOut( 2, Var_linea,"Aportación==>")
:TextOut( 2,
Var_linea,Transform(::Aportacion:Value,"99,999.99"),31 )
Var_linea=Var_linea+1
:TextOut( 2, Var_linea,"Venta Total==>")
:TextOut( 2,
Var_linea,Transform(::Total:Value,"999,999.99"),31 )
Var_linea=Var_linea+1
:TextOut( 3, Var_linea,"**** GRACIAS POR TU COMPRA ****")
*:TextOut( 0, Var_linea, Chr(27)+chr(69)) /// Corte de papel ////
Esto es en caso de que no respete el corte de papel
END WITH
Printer:EndPage()
Printer:EndDoc()
* with object Printer:PreviewControl() ///// esto es para que lo
Visualice en pantalla mientras hacen las pruebas
* :nZoomIndex := 4 ///// esto es para que lo Visualice en pantalla
mientras hacen las pruebas
* :oParent:Show() ///// esto es para que lo Visualice en pantalla
mientras hacen las pruebas
* end with ///// esto es para que lo Visualice en pantalla mientras hacen
las pruebas
oFont:Destroy()
RETURN Nil