Este el el procedimiento intacto para una impresora de punto de ventas
y una LX-300 ambas son matricial
espero entienda la logica
cualquier interrogante aqui tamos
Procedure Imprimir
PRIVATE WNFactura,ContL,ContP
STORE 0 TO ContL,ContP,Wlongitud
Store " " to WNFactura,Wcondicion
Wprn = GETPRINTER()
If Empty(Wprn)
MessageBox('Impresion Cancelada, pero la factura fue grabada!!!',16,'JJ-System')
Clear Read
Do Abortar
Return
EndIf
SET PRINTER To Name "&Wprn" FONT 'Courier New',7
SET DEVICE TO PRINTER
If M.Matricial ="S"
??? CHR(18)
EndIf
SET CONSOLE OFF
SELECT VENTA
GO TOP
WNFactura = Referencia
TotalDescuento = Descuento
TotalItbis = Itbis
TotalBruto = Valor
m.facturaNcf = NCF
WgFecha = fecha
WInicial = Inicial
WNombre = Nombre
WVendedor = Iif(Empty(Vendedor),Usuario,Vendedor)
GDireccion = Dir
WTelefono = Tel
WCedula = Ced
WCliente = Cliente
WCondicion = Con
if SQLEXEC(JJTrabajo,"SELECT * FROM Setup WHERE Empresa = ?WGEmpresa And Programa ='VENTA'") > 0
Locate For SubStr(WNFactura,1,At("-",WNFactura)) == SubStr(Secuencia,1,At("-",secuencia))
If !Found()
Go Top
EndIf
GenDeb = Debito
GenLin1 = Lin1
GenLin2 = Lin2
GenLin3 = Lin3
GenLin4 = Lin4
GenTipo = Detalle
M.DetalleNCF = DetalleNcf
Posicion1 = pos1
Posicion2 = pos2
Posicion3 = pos3
Posicion4 = pos4
PosTipo = pos5
PosFecha = Fecha
PosHora = Hora
PosNumero = Numero
GenNota1 = Nota1
GenNota2 = Nota2
SELECT VENTA
ContL = 13
Do Encabezado
SELECT VENDET
Wlongitud = 0
Go Bottom
Wlongitud = Recno()
Go Top
If TipoPrinter = "GRANDE"
Do While !Eof()
m.UdsDetalle = UdsDetalle
If M.Unidad = "S"
@Prow()+1,0 SAY Iif(!Empty(Itbis),"*","E")+SubStr(Articulo,1,15)
@Prow(),16 Say Transform(Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad),"9999999.99")
@Prow(),27 Say Transform(Uds,"9999999.99")
@Prow(),38 SAY SubStr(Detalle,1,39)
Else
@Prow()+1,0 SAY Iif(!Empty(Itbis),"*","E")+SubStr(Articulo,1,25)
@Prow(),26 Say Transform(Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad),"9999999.99")
@Prow(),37 SAY SubStr(Detalle,1,40)
EndIf
@Prow(),78 Say Transform(Venta,"999,999,999.99")
@Prow(),92 Say Transform(Descuento,"999,999,999.99")
@Prow(),107 Say Transform(Itbis,"999,999,999.99")
@Prow(),122 Say Transform(Iif(Empty(Uds),(Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad)*Venta)+(Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad)*Itbis),(Uds*Venta)+(Uds*Itbis))-Iif(Empty(Uds),Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad)*Descuento,Uds*Descuento),"999,999,999.99")
If (!Empty(Chassis) AND M.ImprimirReferenciaEnVta="S") Or !empty(Almacen)
@Prow()+1,60 SAY Iif(M.ImprimirReferenciaEnVta="S","Referencia :"+Alltrim(SubStr(Chassis,1,25))," ")+IIf(m.AlmOblig="N"," ",Almacen)
ContL = ContL + 1
EndIf
ContL = ContL + 1
M.Articulo= Alltrim(Articulo)
M.UdsDetalle=UdsDetalle
If M.VentaPorMayor = "S"
If JJWarticulos = "S"
SqlStr = "SELECT DetMayor,DetMenor FROM articulo Where Articulo = ?M.Articulo"
Else
SqlStr = "SELECT DetMayor,DetMenor FROM articulo Where Empresa = ?Wgempresa AND Articulo = ?M.Articulo"
EndIf
If SQLEXEC(JJArticulos,SqlStr,"ARTICULO") <=0
MessageBox('Error al Conectar a la Base de Datos',16,'JJ-System')
EndIf
@Prow()+1,32 Say SubStr(Iif(!Empty(M.UdsDetalle),DetMenor,DetMayor),1,15)
ContL = ContL + 1
EndIf
=inkey()
If LastKey() = 27
Que = MessageBox('Esta seguro que quieres detener el reporte',4+32,'JJ-System')
If Que = 6
@Prow()+1,1 Say "Reporte interumpido por el Usuario"
keyboard chr(13)
=inkey()
Exit
EndIf
EndIf
If ContL > Iif(Wlongitud>16,27,20) &&&&&&& 8 articulos &&&&&&&
@Prow()+1,00 Say Replicate("-",137)
@Prow()+1,02 Say "CONTINUA EN LA SIGUIENTE PAGINA"
ContL=ContL+2
Wlongitud = Wlongitud - Iif(Wlongitud>16,15,8)
@Prow()+(33-ContL),0
Do Encabezado
ContL = 13
EndIf
SELECT VENDET
Skip
EndDo
Else
Do While !Eof()
If M.ImpDetPtoVta = "S"
If m.SumarItbisImpresion="S"
@Prow()+1,0 SAY SubStr(detalle,1,40)
@Prow()+1,0 SAY Iif(!Empty(Itbis),"*","E")+SubStr(Articulo,1,14)
@Prow(),15 Say Transform(Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad),"99999.99")
@Prow(),24 Say Transform(Venta+Itbis,"9999.99")
@Prow(),32 Say Transform(Iif(Empty(Uds),Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad)*(Venta+Itbis),Uds*(Venta+Itbis)),"99999.99")
Else
@Prow()+1,0 SAY SubStr(detalle,1,40)
@Prow()+1,0 SAY Iif(!Empty(Itbis),"*","E")+SubStr(Articulo,1,14)
@Prow(),15 Say Transform(Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad),"99999.99")
@Prow(),24 Say Transform(Venta,"9999.99")
@Prow(),32 Say Transform(Iif(Empty(Uds),Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad)*Venta,Uds*Venta),"99999.99")
EndIf
Else
If m.SumarItbisImpresion="S"
@Prow()+1,0 SAY Iif(!Empty(Itbis),"*","E")+SubStr(detalle,1,14)
@Prow(),15 Say Transform(Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad),"99999.99")
@Prow(),24 Say Transform(Venta+Itbis,"9999.99")
@Prow(),32 Say Transform(Iif(Empty(Uds),Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad)*(Venta+Itbis),Uds*(Venta+Itbis)),"99999.99")
Else
@Prow()+1,0 SAY Iif(!Empty(Itbis),"*","E")+SubStr(detalle,1,14)
@Prow(),15 Say Transform(Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad),"99999.99")
@Prow(),24 Say Transform(Venta,"9999.99")
@Prow(),32 Say Transform(Iif(Empty(Uds),Iif(!Empty(UdsDetalle),Cantidad*UdsDetalle,Cantidad)*Venta,Uds*Venta),"99999.99")
EndIf
EndIf
M.Articulo= Alltrim(Articulo)
M.UdsDetalle=UdsDetalle
If M.VentaPorMayor = "S"
If JJWarticulos = "S"
SqlStr = "SELECT DetMayor,DetMenor FROM articulo Where Articulo = ?M.Articulo"
Else
SqlStr = "SELECT DetMayor,DetMenor FROM articulo Where Empresa = ?Wgempresa AND Articulo = ?M.Articulo"
EndIf
If SQLEXEC(JJArticulos,SqlStr,"ARTICULO") <=0
MessageBox('Error al Conectar a la Base de Datos',16,'JJ-System')
EndIf
@Prow()+1,19 Say SubStr(Iif(!Empty(UdsDetalle),DetMenor,DetMayor),1,15)
EndIf
SELECT VENDET
Skip
EndDo
EndIf
ContP = ContP + 1
Do Fact_Total
Else
MessageBox('Error al Conectar a la Base de Datos [SETUP]',16,'JJ-System')
EndIf
ContL = 13
SET PRINTER TO
Set Printer Off
SET DEVICE TO SCREEN
SET CONSOLE ON
Clear Read
Do Abortar
Return