HOLA
En vfp yo lo hacia utilizando el comando
??? chr(10)
??? "Total "+TRANSFORM(TOTAL,"@B$ 99,999.99") AT 00
Este funcionaba perfecto, La impresora que utilizaba estaba instalada como "generica solo texto"
Pero en WINDEV se me complico, puesto que las columnas de impresion quedaba desalimeadas, etc etc..
Para solucionar el problema instale los drivers de EPSON TMU 220 PD
y googleando por todos lados (buscando en algunos foros de windev),logre armar el siguiente codigo, que me satisface la impresion del ticket, esto lo programe a mano sin ningun report designer.
// esto es parte del codigo que tengo para imprimer el ticket de venta
iDestination(iPrinter,"Imprimiendo Documento de venta")
iCreateFont(1, 9, iNormal, "Times New Roman", iBlack, 0)
// imprime la cabecera del documento
iPrint(iFont(1)+iXPos(0,False)+stMycabecera.numerodocumento+" Vendedor: "+stMycabecera.vendedor)
iPrint(iFont(1)+iXPos(0,False)+"Fecha: "+DateToString(stMycabecera.fecha,maskSystemDate)+" Hora: "+TimeSys())
iPrint(iFont(1)+iXPos(0,False)+"Cliente: "+stMycabecera.cliente)
iPrint(iFont(1)+iXPos(0,False)+"R.U.C/C.I: "+stMycabecera.ruc)
iPrint(iFont(1)+iXPos(0,False)+"Direccion: "+stMycabecera.direccion)
iPrint()
iCreateFont(2,8,iNormal,"Times New Roman",iBlack,0)
rMargentotal,rLongitudtotal,rMargencan,rLongitudcan,rMargenprecio,rLongitudprecio are 4-byte real
rMargentotal = 62 //margen derecho
rMargencan = 10 //margen izquierdo
rMargenprecio = 50 // margen para el precio
rPosicion,rPosicioncan,rPosicionpre,rTotalpagar,rValorgravado,rValorexcento,rValoriva,descuentoitem,rValoritem are 4-byte real
sTieneiva is string
FOR ALL stMiembros OF arrMycuerpo
// calcula la longitud del valor total
rLongitudtotal = iTextWidth(iFont(2)+NumToString((stMiembros.cantidad*stMiembros.venta),"4.2f"))
rPosicion = rMargentotal-rLongitudtotal
// calcula la longitud del preocio
rLongitudprecio = iTextWidth(iFont(2)+NumToString(stMiembros.venta,"4.2f"))
rPosicionpre = rMargenprecio-rLongitudprecio
IF stMiembros.iva = 1 THEN
sTieneiva = "*"
rValoritem = (stMiembros.venta/rMyalicuota) // DESGLOSA EL IVA
descuentoitem = rValoritem*(stMiembros.descuento/100) //valor del descuento
rValorgravado+=Round(((rValoritem-descuentoitem)*stMiembros.cantidad),2)
rValoriva = (rValorgravado*stMycabecera.porceniva)
ELSE
sTieneiva =""
descuentoitem = (stMiembros.venta*(stMiembros.descuento/100)) //valor del descuento
rValorexcento+=((stMiembros.venta-descuentoitem)*stMiembros.cantidad)
END
// imprime la cantidad con decimales o enteros
nEntero = IntegerPart(stMiembros.cantidad)
IF nEntero > 0 THEN
rEsiduo = IntegerPart(stMiembros.cantidad) / nEntero
resultado = (nEntero*rEsiduo)-stMiembros.cantidad
ELSE
resultado = -0.01
END
IF resultado = 0 THEN
rLongitudcan = iTextWidth(iFont(2)+NumToString(stMiembros.cantidad,"4d")+" "+stMiembros.medida)
rPosicioncan = rMargencan-rLongitudcan // posicion donde se imprime la cantidad
iPrint(iFont(2)+iXPos(rPosicioncan,False)+NumToString(stMiembros.cantidad,"4d")+ ...
" "+stMiembros.medida+iXPos(11,False)+Middle(stMiembros.item,1,22)+iXPos(40,False)+sTieneiva+iXPos(rPosicionpre,False)+NumToString((stMiembros.venta-descuentoitem),"4,2f")+iXPos(rPosicion,False)+NumToString((stMiembros.cantidad*(stMiembros.venta-descuentoitem)),"4,2f"))
ELSE
rLongitudcan = iTextWidth(iFont(2)+NumToString(stMiembros.cantidad,"4.2f")+" "+stMiembros.medida)
rPosicioncan = rMargencan-rLongitudcan // posicion donde se imprime la cantidad
iPrint(iFont(2)+iXPos(rPosicioncan,False)+NumToString(stMiembros.cantidad,"4,2f")+ ...
" "+stMiembros.medida+iXPos(11,False)+Middle(stMiembros.item,1,22)+iXPos(40,False)+sTieneiva+iXPos(rPosicionpre,False)+NumToString((stMiembros.venta-descuentoitem),"4,2f")+iXPos(rPosicion,False)+NumToString((stMiembros.cantidad*(stMiembros.venta-descuentoitem)),"4,2f"))
END
// suma el valor total a pagar
rTotalpagar+=Round((stMiembros.cantidad*(stMiembros.venta-descuentoitem)),2)
END
iCreateFont(3,10,iBold,"Times New Roman",iBlack,0)
iPrint(iFont(3)+iXPos(0,False)+"A PAGAR: "+NumToString(rTotalpagar,"6,2fS"))
iPrint(iFont(1)+iXPos(0,False)+"Tarifa 0%: "+NumToString(rValorexcento,"6.2fS"))
iPrint(iFont(1)+iXPos(0,False)+"Tarifa "+NumToString((stMycabecera.porceniva*100),"2d")+"%: "+NumToString(rValorgravado,"6.2fS"))
iPrint(iFont(1)+iXPos(0,False)+"I.V.A "+NumToString((stMycabecera.porceniva*100),"2d")+"%: "+NumToString(rValoriva,"6,2fs"))
iPrint(iFont(1)+iXPos(0,False)+"* = Producto con I.V.A")
iEndPrinting()
Como vera es totalmente distinto al amado y añorado vfp.
Si alguien tiene una solucion mas aceptable ruego compartirla.
SALUDOS DESDE ECUADOR.