Final de impresion!!!

Post Reply
User avatar
noe aburto
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Final de impresion!!!

Post by noe aburto »

Saludos

Tratando de resolver el porque la impresión del ticket se queda en cola de impresión, me encuentro con la función
PrintEnd() de tPrinter y el metodo End().

Cuando finalizo la impresión de cualquier datalle con tPrinter, mando el PrintEnd() y con ello la impresión.
¿Entonces el método End() ... cual es su finalidad?

Ambas al final ponen a oPrinter:=NIL

Gracias. (uso tPrinter porque al inicio debo imprimir logotipos o imagenes empresariales, que tDosPrn no me permite)
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 76 times
Contact:

Re: Final de impresion!!!

Post by Antonio Linares »

Noé,

Puedes poner un ejemplo de cómo lo estás haciendo para probarlo aqui ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
noe aburto
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: Final de impresion!!!

Post by noe aburto »

Saludos

Con gusto expongo la funcion que me imprime el ticket, pero con algunos argumentos ya que no uso los metodos de tprinter tal cual, sino que uso preprocesadores.
Una duda es respecto al puerto de impresion que uso, es: "EPSON TM-T20II Receipt", que es el nombre de la impresora de tickets, si es el correcto o deberia compartir la impresora para ponerle por ej.
"\\EPSONTMT20IIReceipt" o si debo usar directamente el nombre de puerto: sea COM1:, LPT1: o USB001:

Si mando previamente a pantalla la impresion todo esta correcto

la funcion: ImprDato(oPrn,nSup,1,aEmp[i],,.F.,.T.,4,nAncho,,.F.,.F.,.F.) = oPrn:CmSay(CML*nSup,CMC*nCol,aEmp[i],oFONT,NIL,NIL,NIL,nAlin)

Code: Select all | Expand


// --- Impresion del ticket
function ImprTicket(cNumFol,nTSub,nTDes,nTTot,nTIva,nTEfe,cTipo)
local oPrn,nTot:=0,nIva:=0,nPrecio,nCant,cNum,nIzq,nSup,i,aEmp,nAncho,nR,nC,lTit,aSerie

if Empty(gaParaRef[ 5]) // gaParaRef[ 5] = puesto de impresión: "EPSON TM-T20II Receipt"
 aviso("Puerto de impresora para tickets no definido en parámetros")
 return .F.
endif
oPrn := PrintBegin(Ota("Impresión"), lSelect, lPrevio, "EPSON TM-T20II Receipt", .T. )
if oPrn==NIL
 return .F.
endif
nAncho:=Int(gaParaRef[30]/0.1494)
nSup:=1 ; lTit:=.T.
if !empty(gaParaRef[ 1]) // gaParaRef[ 1] = Campo multiline que contiene encabezado de ticket, datos de la empresa
 aEmp:=ParteMemo(gaParaRef[ 1],nAncho)
 for i:=1 to len(aEmp)
  aEmp[i]:=strtran(aEmp[i],CHR(20),"")
  ***********************************************************************************
  ImprDato(oPrn,nSup,1,aEmp[i],,.F.,.T.,4,nAncho,,.F.,.F.,.F.) //  oPrn:CmSay(CML*nSup,CMC*nCol,aEmp[i],oFONT,NIL,NIL,NIL,nAlin)
  ***********************************************************************************
  nSup++
 next
endif
if File(gaParaRef[36]) //gaParaRef[36] = Nombre de archivo logotipo,BMP
 nR:=gaParaRef[37]
 nC:=gaParaRef[38]
 oPrn:Cmtr2Pix(@nR,@nC)
 oPrn:SayImage(nR,nC,gaParaRef[36],PosX(gaParaRef[39],oPrn),PosY(gaParaRef[40],oPrn))
endif
ImprDato(oPrn,nSup,1,"Ticket: "+cNumFol+", Fecha "+FormaFecha(gdFecTra)+", Hora: "+time(),,.F.,.T.,,,,.F.,.F.,.F.)
nSup+=2
ImprDato(oPrn,nSup,gaParaRef[31]-5,"Cant.",,.F.,.F.,,,,.F.,.F.,.F.) //  oPrn:CmSay(CML*nSup,CMC*nCol,"Cant.",oFONT,NIL,NIL,NIL,nAlin)
ImprDato(oPrn,nSup,gaParaRef[32]-0,Ota("Descripción"),,.F.,.F.,,,,.F.,.F.,.F.)
ImprDato(oPrn,nSup,gaParaRef[34]-8,"P.Unitario",,.F.,.F.,,,,.F.,.F.,.F.)
ImprDato(oPrn,nSup,gaParaRef[35]-5,"Total",,.F.,.F.,,,,.F.,.F.,.F.)
nSup++
dbSelectArea( "art" )
if lEsBarras
 OrdSetFocus(8)
else
 OrdSetFocus(3)
endif
if cTipo=="PUNTO.VENTA"
 dbSelectArea( "tmp" )
 dbGoTop()
 while !Eof()
  dbSelectArea( "art" )
  if lEsBarras
   DBSeek(tmp->cod_bar)
  else
   DBSeek(JuntaPza(tmp->(pre_inv+bas_inv+suf_inv)))
  endif
  dbSelectArea( "tmp" )
  nCant  :=tmp->can_fac
  nPrecio:=tmp->pre_nor
  ImprDato(oPrn,nSup,gaParaRef[31],nCant,"99999",.F.,.F.,,,,.F.,.F.,.F.)
  ImprDato(oPrn,nSup,gaParaRef[32],left(Ota(DescArti(art->(JuntaPza(alltrim(pre_inv)+alltrim(bas_inv)+alltrim(suf_inv))),lEsBarras)),gaParaRef[33]),,.F.,.F.,,,,.F.,.F.,.F.)
  ImprDato(oPrn,nSup,gaParaRef[34],nPrecio,"999,999.99",.F.,.F.,,,,.F.,.F.,.F.)
  ImprDato(oPrn,nSup,gaParaRef[35],nCant*nPrecio,"999,999.99",.F.,.F.,,,,.F.,.F.,.F.)
  nSup++
  dbSkip(1)
 end
endif
nSup++
if nTDes>0
 ImprDato(oPrn,nSup,gaParaRef[35]-20,"IMPORTE",,.F.,.F.,,,,.F.,.F.,.F.)
 ImprDato(oPrn,nSup,gaParaRef[35],nTSub,"999,999.99",.F.,.F.,,,,.F.,.F.,.F.)
 nSup++
 ImprDato(oPrn,nSup,gaParaRef[35]-20,"DESCUENTO",,.F.,.F.,,,,.F.,.F.,.F.)
 ImprDato(oPrn,nSup,gaParaRef[35],nTDes,"999,999.99",.F.,.F.,,,,.F.,.F.,.F.)
 nSup++
endif
ImprDato(oPrn,nSup,gaParaRef[35]-20,"SUBTOTAL",,.F.,.F.,,,,.F.,.F.,.F.)
ImprDato(oPrn,nSup,gaParaRef[35],nTTot,"999,999.99",.F.,.F.,,,,.F.,.F.,.F.)
nSup++
ImprDato(oPrn,nSup,gaParaRef[35]-20,"I.V.A. "+Str(_nTasaIva,2)+"%",,.F.,.F.,,,,.F.,.F.,.F.)
ImprDato(oPrn,nSup,gaParaRef[35],nTIva,"999,999.99",.F.,.F.,,,,.F.,.F.,.F.)
nSup++
ImprDato(oPrn,nSup,gaParaRef[35]-20,"TOTAL",,.F.,.F.,,,,.F.,.F.,.F.)
ImprDato(oPrn,nSup,gaParaRef[35],nTTot+nTIva,"999,999.99",.F.,.F.,,,,.F.,.F.,.F.)
nSup++
cNum:="("+upper(DescNum(nTTot+nTIva))+")"
ImprDato(oPrn,nSup,2,substr(cNum,1,nAncho-5),,.F.,.F.,,,,.F.,.F.,.F.)
nSup++
if !Empty(substr(cNum,nAncho-5+1))
 ImprDato(oPrn,nSup,2,substr(cNum,nAncho-5+1),,.F.,.F.,,,,.F.,.F.,.F.)
 nSup++
endif
nSup++
ImprDato(oPrn,nSup,gaParaRef[35]-20,"EFECTIVO",,.F.,.F.,,,,.F.,.F.,.F.)
ImprDato(oPrn,nSup,gaParaRef[35],nTEfe,"999,999.99",.F.,.F.,,,,.F.,.F.,.F.)
nSup++
ImprDato(oPrn,nSup,gaParaRef[35]-20,"CAMBIO",,.F.,.F.,,,,.F.,.F.,.F.)
ImprDato(oPrn,nSup,gaParaRef[35],nTEfe-(nTTot+nTIva),"999,999.99",.F.,.F.,,,,.F.,.F.,.F.)
nSup++
if !empty(gaParaRef[ 2]) //  gaParaRef[ 2] = Campo multiline que contiene pie de ticket
 aEmp:=ParteMemo(gaParaRef[ 2],nAncho)
 for i:=1 to len(aEmp)
  aEmp[i]:=strtran(aEmp[i],CHR(20),"")
  ImprDato(oPrn,nSup,1,aEmp[i],,.F.,.T.,0,nAncho,,.F.,.F.,.F.)
  nSup++
 next
endif
TermImpr(,.F.,.F.) // PrintEnd()
return .T.
 


Gracias.
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 76 times
Contact:

Re: Final de impresion!!!

Post by Antonio Linares »

Noé,

Puedes publicar también el código de TermImpr() ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply