En el adjunto vas a encontrar dos métodos (impresión y FacA) que usé hace unos
cuantos años en un sistema de gestión hecho en VFP 6. El cliente tenía
impresoras LX 300, una para facturas A y otra para facturas B, que facturaban
en papel continuo.
El método IMPRESION determina (en Windows 98), las impresoras disponibles y en
qué puertos están conectadas. Entonces, según el tipo de factura (A ó B),
redirige la impresión a la impresora respectiva (en el ejemplo, al método FACA,
que manda caracteres de control para la LX300, cambiando tipos de letra,
tamaños, etc.
Hoy en dia uso otro tipo de notación para las variables, pero funciona
perfectamente. En realidad, el sistema anda sin cambios desde 1998.
Espero que te sirva
Rafael Copquin
----- Original Message -----
From: Carlos Pagura
To: GUFA List Member
Sent: Wednesday, November 19, 2008 10:28 PM
Subject: [spam] [GUFA] impresion en matriz de puntos
Hola colisteros
Me solicitaron un sistema para impresion de unas cartas de porte de un
organismo oficial ONCCA
el formulario preimpreso (entregado por esa entidad) es uno del tipo continuo
Queria saber si se alguien me puede ayudar en imprimir desde visual fox pro
en una impresora matriz de puntos
SIN UTILIZAR EL COMANDO strtofile(cadena) ya que es muy primitivo
Espero que alguien me pueda dar una mano con este tema asi no tengo que
desempolvar el viejo fox pro para DOS
Saludos
Ing. Carlos Pagura
La Pampa 1852 - Tostado
TE: 03491-471578
------------------------------------------------------------------------------
¡Pasalo de dedo en dedo! Messenger en tu celular
** metodo imprimir
*******************
local posicion,puerto
if messagebox('FACTURA GRABADA'+CHR(13)+CHR(13)+;
'PREPARE LA IMPRESORA'+CHR(13)+;
'O CANCELE LA IMPRESION',49,;
'ATENCION') = 1
=aprinters(impresoras) && genera el array con las impresoras
** impresoras(1,1) = 'FACB' posicion 1
** impresoras(1,2) = 'LPT2:' posicion 2
** impresoras(2,1) = 'FACA' posicion 3
** impresoras(2,2) = 'LPT1:' posicion 4
if thisform.kletra = 'A'
posicion = ascan(impresoras,'FACA')
puerto = impresoras(posicion + 1) && determina en qué puerto está la
factura A
set printer to &puerto
** alternativa
* laimpre = ascan(impresoras,'FACA')
* set printer to name (laimpre)
thisform.facta()
else
posicion = ascan(impresoras,'FACB')
puerto = impresoras(posicion + 1) && determina en qué puerto está la
factura B
set printer to &puerto
thisform.factb()
** alternativa
* laimpre = ascan(impresoras,'FACB')
* set printer to name (laimpre)
endif
endif
****************************************************************
** metodo FACTA
** factura "A"
local copias,vueltas,hallado,lapro,cpost,hpic,kpic,queiva,vacio
local chicaon,chicaoff,letranor,largo72,L10cpi,prn_inicio,elporze
local st1,dto,st2,liva,lnoi,ltot
** variables de inicializacion de impresora Epson LX300
prn_inicio = chr(27)+chr(64) && esc + @ inicializacion
chicaon = chr(27)+chr(15)
chicaoff = chr(27)+chr(18)
letranor = chr(27)+chr(80)
largo72 = chr(27)+chr(67)+chr(72)
L10cpi = chr(27)+'P'
store kopiasA to copias
store 1 to vueltas
hpic = '999,999.99'
kpic = '9999,999.99'
dimension quecopia(3)
quecopia(1)='Original'
quecopia(2)='Duplicado'
quecopia(3)='Triplicado'
set device to printer
WITH THISFORM
st1 = .PrimerSubTotal
dto = .ValorDescuento
st2 = .PrimerSubTotal + .ValorDescuento
liva = .KivaInsc
lnoi = .KivaNoInsc
ltot = .KfacTotal
select factura
go 1
do while vueltas <= copias
??? prn_inicio
??? largo72
??? chicaon
if .ktip = 'NC' && si es nota de credito
@ 4,81 say 'NOTA DE CREDITO'
else
@ 4,81 say 'FACTURA'
endif
@ 5,81 say quecopia(vueltas)
@ 8,78 say 'Fecha: ' + transform(date())
queiva = iif(seek(.cateiva,'iva',1),iva.categoria,'')
@ 14,0 say alltrim(r_empresa)
@ 15,0 say alltrim(r_direccion)
@ 16,0 say alltrim(r_ciudad)
@ 17,0 say iif(val(r_codigo)<>0,'('+r_codigo+')','')
@ 18,0 say queiva
@ 18,78 say 'C.U.I.T. ' + r_cuit
@ 20,0 say 'Condicion de venta: '+ .pagodesk
@ 21,78 say 'Remito: ' + .kremi
@ prow()+1,0 say 'Articulo Cant Descripcion
Origen N° despacho Aduana Precio un. Total'
@ prow()+1,0 say
'========================================================================================================================'
select factura
go top
.lineasfac()
do while prow() < 52
@ prow()+1,0 say space(1)
enddo
@ prow()+1,0 say
'========================================================================================================================'
do case
case .valordescuento = 0.00 && no hay descuento
@ prow()+1,0 say ' Subtotal Impuesto
Subtotal Iva.Insc. Iva No Insc.
Total'
case .valordescuento > 0.00 && hay recargo
elporze = transform(abs(.krecargo),'99.99')+' %'
@ prow()+1,0 say ' Subtotal Recargo fin.
&elporze Subtotal Iva.Insc. Iva No Insc.
Total'
case .valordescuento < 0.00 && hay descuento
elporze = transform(abs(.kdescto),'99.99')+' %'
@ prow()+1,0 say ' Subtotal Descuento
&elporze Subtotal Iva.Insc. Iva No Insc.
Total'
endcase
@ prow()+1,70 say
iif(seek('3','iva',1),transform(iva.porcentaje,'999.99'),'')
if .kivanoinsc <> 0.00
@ prow(),95 say
iif(seek('4','iva',1),transform(iva.porcentaje,'999.99'),'')
endif
@ prow()+1,0 say
'========================================================================================================================'
**local st1,dto,st2,liva,lnoi,ltot
@ prow()+1,0 say transform(st1,kpic)
@ prow(),22 say transform(dto ,hpic)
@ prow(),40 say transform(st2,kpic)
@ prow(),66 say transform(liva,hpic)
if lnoi > 0.00
@ prow(),90 say transform(lnoi,hpic)
endif
@ prow(),110 say transform(ltot,kpic)
enletras = numalet(ltot,70)
@ prow()+2,0 say 'Son pesos: ' +
upper(left(k_wrap(1),1))+substr(k_wrap(1),2)
if !empty(k_wrap(2))
@ prow()+1,11 say k_wrap(2)
endif
if !empty(k_wrap(3))
@ prow()+1,11 say k_wrap(3)
endif
@ prow()+2,12 say .texto1
@ prow()+1,12 say .texto2
@ prow()+1,12 say .texto3
vueltas = vueltas + 1
eject
enddo
ENDWITH
??? largo72
??? letranor
??? prn_inicio
??? L10cpi
??? chicaoff
set device to screen
clear
set printer to lpt1