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

Responder a