PROBLEMAS CON LA TDOSPRN

PROBLEMAS CON LA TDOSPRN

Postby LuisPonce » Fri Nov 20, 2009 11:21 pm

Hola

Tengo este codigo que siempre funciono en 16bits y ahora se cuelga :


lImprime:=.T.
lImpDos :=.T.
cLptDoc:="LPT1"
IMPF00=5
nLinDoc:=36

nTotFac:=nTotBse:=nTotIgv:=nTotDes:=nTotUnd:=0

Select("IFacturas")

* proceso

msginfo(lImprime,"lImprime")
msginfo(lImpDos,"lImpDos")
msginfo(IMPF00,"IMPF00")
msginfo(cLptDoc,"cLptDoc")
msginfo(nLinDoc,"nLinDoc")

IF lImprime

IF lImpdos
nVer:=11
nVerSon:=(nVer+nMaxDoc)+1
nRow:=4

? "Voy a Iniciar la Clase TDosPrn"

oPrnCmp:=TDosPrn():New(cLptDoc)
// oPrnCmp:=TDosPrn():New('LPT2')
oPrnCmp:Command( { 27, 64 } )
oPrnCmp:Command( { 27, 67, nLinDoc } )

oPrnCmp:Say( nRow, 70, cDoc+cNro, nCompress )
nRow ++
oPrnCmp:Say( nRow, 05, cCodClt+" "+cNombre, { nBold , nCompress } )
oPrnCmp:Say( nRow, 42, cCancela, nCompress )
nRow ++
oPrnCmp:Say( nRow, 05, cDirClt, nCompress )
// oPrnCmp:Say( nRow, 42, CFECHA(dFecAct,'E'), nCompress )
nRow ++
oPrnCmp:Say( nRow, 05, cNroRuc, nPica )
oPrnCmp:Say( nRow, 26, cPlaca, nPica )
// oPrnCmp:Say( nRow, 26, cCodClt, nPica )
oPrnCmp:Say( nRow, 42, cGrFero, nPica )
nRow ++
oPrnCmp:Say( nRow, 05, CFECHA(dFecAct,'E'), nCompress )
nRow ++
nRow ++

Select("IFacturas")
IF IFacturas->( DbSeek( cCodDoc+cNroSer+'-'+cNroTik ) )

? "Encontre "+cCodDoc+cNroSer+'-'+cNroTik

WHILE IFacturas->CARGO=cCodDoc.and.IFacturas->TIKET=cNroSer+'-'+cNroTik
cCodSer :=IFacturas->CODSER
cCodSur :=IFacturas->SURTIDOR
nCanSer :=IFacturas->CANTIDAD

Select("IItems")
If IItems->( DbSeek( UPPER( cCodSer) ) )
cItmDes:=IItems->DESITM
cItmUnd:=IItems->UNDITM
ELSE
cItmDes:=PADL('NO EXISTE....',50)
cItmUnd:='XXX'
ENDIF

nDctoItem:=IIF(nItmPre>nPrecio,(nItmPre-nPrecio)*nCanSer,0)

Select("IFacturas")

oPrnCmp:Say( nVer, 00, TRANS(IFacturas->CANTIDAD,MA53)+" "+cItmUnd, nCompress )
oPrnCmp:Say( nVer, 10, cCodSer, { nPica,nCompress } )

IF !EMPTY(cCodSur)
oPrnCmp:Say( nVer, 15, cCodSur, nPica )
oPrnCmp:Say( nVer, 18, cItmDes, nPica )
ELSE
oPrnCmp:Say( nVer, 15, cItmDes, nPica )
ENDIF

oPrnCmp:Say( nVer, 56, TRANS(nPrecio,MA52)+" "+IIF(!EMPTY(nDctoItem).AND.IMPIDC,TRANS(nDctoItem/nCanSer,MA34),SPACE(8))+TRANS(IFacturas->IMPORTE,MA72C), nPica )
nVer ++

nTotUnd+=IFacturas->CANTIDAD
nTotDes+=IIF(nDctoItem>0.00.AND.IMPIDC,nDctoItem,0)
nTotIgv+=IFacturas->IGV
nTotFac+=IFacturas->IMPORTE
nTotBse+=IFacturas->BSEIMP

* Continua con otro item

IFacturas->(DbSkip())
END

ENDIF

oPrnCmp:Say( nVerSon, 40, IIF (EMPTY(IMPMS2),' ',IMPMS2),,nCenter )
nVerSon ++
oPrnCmp:Say( nVerSon, 40, IIF (EMPTY(IMPMS3),' ',IMPMS3),,nCenter )

oPrnCmp:End()
ENDIF

ENDIF

Le puse mensajes para ver donde se cuelga y no llega a "Encontre".... le hice cambios

oPrnCmp:Command( "27, 64" )

igual, no pasa nada

O no funciona la TDOSPRN con FH 8.2, en este foro he visto que si, entonces no me explico en que puedo estar fallando

Gracias

Att
Last edited by LuisPonce on Sat Nov 21, 2009 3:10 am, edited 2 times in total.
Luis Ponce
User avatar
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: PROBLEMAS CON LA TDOSPRN

Postby Armando Picon » Sat Nov 21, 2009 1:20 am

Si lo que muestras es todo tu código, tus CASE anidados no tienen CIERRE. Si no es todo, te sugiero que muestres codigo suficiente para poder analizarlo.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: PROBLEMAS CON LA TDOSPRN

Postby LuisPonce » Sat Nov 21, 2009 3:13 am

Ok, Armando ahi va, se cualga al inicio, cuando doy origen al objeto, por que no pasa al siguiente mensaje:

"Encontre "+cCodDoc+cNroSer+'-'+cNroTik
Luis Ponce
User avatar
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: PROBLEMAS CON LA TDOSPRN

Postby Armando Picon » Sat Nov 21, 2009 4:50 pm

Tal parece que tu rutina va ha imprimir desde uno hasta más pàginas. Lo que noto es que no tiene un oPrnCmp:StartPage() y, por supuesto , tampoco oPrnCmp:EndPage(). Asi que tu rutina no crea NADA (como si te declarases a la imagen de la chica, pero no a la chica).

Este un ejemplito de una pequeña rutina que me funciona desde la versión 2.4 de FW :

FUNCTION PrintOT(cSay5, cSay6, cSay7, cSay8, ;
cVal1, cVal2, cVal3, cVal4, cRecep, mcServi )
local oPrn, Fil := 0
* cabecera
local cSERVICIO := mcServi
local cNUMTRANS := oApp:cNUMTRANS
local dFECRECEP := oApp:dFECRECEP
local cHR_RECEP := oApp:cHR_RECEP
local dFECENTRE := oApp:dFECENTRE
local cHR_ENTRE := oApp:cHR_ENTRE
local nVALFACTU := cVal1
local nVALDSCTO := cVal2
local nCOB_CNTA := cVal3
local nCOB_SALD := cVal4
* cliente
local cID_CLIEN := cSay5
local cNombre := cSay6
local cDIRCLIEN := cSay7
local cTELCLIEN := cSay8
* cuerpo
local nPZ_PRENDA := 0
*
LOCAL nItem := 0
LOCAL cTexto := ""
local cTexto2 := ""
local cTira := "R:Roto,D:Descosido,I:Raido,O:Oxidado,P:Picado,G:Gastado"
local cTira2 := "M:Manchado,C:Descolorido,H:con Hongo"
*
LOCAL lOk := .F.
Local lTwo := .T.
*
SELECT TEMPO1
*
oPrn := TDosPrn():New(pPuerto)
oPrn:Command("27,33,5")
*
oPrn:StartPage()
*
Fil++
oPrn:Say(Fil, 01, "Lavandería ORDEN No."+;
kTienda+"-"+cNUMTRANS+SPACE(12)+;
"Fecha: "+DTOC(dFECRECEP))
IF lTwo
oPrn:Say(Fil, 01+76, "Lavandería ORDEN No."+;
kTienda+"-"+cNUMTRANS+SPACE(12)+;
"Fecha: "+DTOC(dFECRECEP))
ENDIF
Fil++
oPrn:Say(Fil, 00, "GYN Cleaners =================== Hora : "+;
cHR_RECEP)
IF lTwo
oPrn:Say(Fil, 00+76, "GYN Cleaners =================== Hora : "+;
cHR_RECEP)
ENDIF
Fil++
oPrn:Say(Fil, 00, "RUC. 10062044654 -----------------")
IF lTwo
oPrn:Say(Fil, 00+76, "RUC. 10062044654 -----------------")
ENDIF
Fil++
oPrn:Say(Fil, 00, kAddress)
IF lTwo
oPrn:Say(Fil, 00+76, kAddress)
ENDIF
Fil++
oPrn:Say(Fil, 50, "Entre: "+DTOC(dFECENTRE))
IF lTwo
oPrn:Say(Fil, 50+76, "Entre: "+DTOC(dFECENTRE))
ENDIF
Fil++
oPrn:Say(Fil, 00, "Tienda: "+kTienda)
oPrn:Say(Fil, 50, "Hora : "+cHR_ENTRE)
IF lTwo
oPrn:Say(Fil, 00+76, "Tienda: "+kTienda)
oPrn:Say(Fil, 50+76, "Hora : "+cHR_ENTRE)
ENDIF
Fil++
oPrn:Say(Fil, 00, "Cliente : "+cID_CLIEN+SPACE(1)+cNOMBRE)
IF lTwo
oPrn:Say(Fil, 00+76, "Cliente : "+cID_CLIEN+SPACE(1)+cNOMBRE)
ENDIF
Fil++
oPrn:Say(Fil, 00, "Dirección: "+cDIRCLIEN)
IF lTwo
oPrn:Say(Fil, 00+76, "Dirección: "+cDIRCLIEN)
ENDIF
Fil++
oPrn:Say(Fil, 53, "Tel: "+cTELCLIEN)
IF lTwo
oPrn:Say(Fil, 53+76, "Tel: "+cTELCLIEN)
ENDIF
Fil++
oPrn:Say(Fil, 00, "Recepción: "+ cRecep)
IF lTwo
oPrn:Say(Fil, 00+76, "Recepción: "+ cRecep)
ENDIF
Fil++
oPrn:Say(Fil, 00, "SERVICIO : "+cSERVICIO)
IF lTwo
oPrn:Say(Fil, 00+76, "SERVICIO : "+cSERVICIO)
ENDIF
Fil++

oPrn:Say(Fil, 00, "----------------------------------------------------------------------")
IF lTwo
oPrn:Say(Fil, 00+76, "----------------------------------------------------------------------")
ENDIF
Fil++
oPrn:Say(Fil, 00, "Itm Cod. Descripcion Pzas/Kilos IMPORTE ")
*oPrn:Say(Fil, 00, " Color Marca Estado ")
IF lTwo
oPrn:Say(Fil, 00+76, "Itm Cod. Descripcion Pzas/Kilos IMPORTE ")
ENDIF
Fil++
*******
oPrn:Say(Fil, 00, " Color Marca Estado ")
IF lTwo
oPrn:Say(Fil, 00+76, " Color Marca Estado ")
ENDIF
Fil++
*******
oPrn:Say(Fil, 00, "----------------------------------------------------------------------")
IF lTwo
oPrn:Say(Fil, 00+76, "----------------------------------------------------------------------")
ENDIF
Fil++
SELECT TEMPO2
DBGOTOP()
DO WHILE !EOF()
*
nPZ_PRENDA += TEMPO2->PZ_PRENDA
*
cTexto := ""
cTexto += TEMPO2->ID_PRENDA
SELECT PRENDA
DBGOTOP()
IF DBSEEK(cTexto)
cTexto +=SPACE(1)+PADR(PRENDA->DS_PRENDA,30)+SPACE(6)
ELSE
cTexto +=SPACE(1)+PADR("NO REGISTRADO",30)+SPACE(6)
ENDIF
SELECT TEMPO2
cTexto +=TRANSFORM(TEMPO2->CN_PRENDA,"999,999.99")+SPACE(1)
cTexto +=TRANSFORM(((TEMPO2->PU_PRENDA * TEMPO2->CN_PRENDA) +TEMPO2->PC_PRENDA),"999,999.99")
*
* Primera linea
nItem++
oPrn:Say(Fil, 00, STR(nItem,1,0))
oPrn:Say(Fil, 03, cTexto)
IF lTwo
oPrn:Say(Fil, 00+76, STR(nItem,1,0))
oPrn:Say(Fil, 03+76, cTexto)
ENDIF
Fil++
IF SUBS(cSERVICIO,1,2)=="02"
* Segunda linea
cEstado := ""
cEstado += IIF(UPPER(TEMPO2->RT_PRENDA)=="SI","R_","")
cEstado += IIF(UPPER(TEMPO2->DC_PRENDA)=="SI","D_","")
cEstado += IIF(UPPER(TEMPO2->RD_PRENDA)=="SI","I_","")
cEstado += IIF(UPPER(TEMPO2->OX_PRENDA)=="SI","O_","")
cEstado += IIF(UPPER(TEMPO2->PD_PRENDA)=="SI","P_","")
cEstado += IIF(UPPER(TEMPO2->GT_PRENDA)=="SI","G_","")
cEstado += IIF(UPPER(TEMPO2->MH_PRENDA)=="SI","M_","")
cEstado += IIF(UPPER(TEMPO2->DL_PRENDA)=="SI","C_","")
cEstado += IIF(UPPER(TEMPO2->CH_PRENDA)=="SI","H_","")
cESTADO := ALLTRIM(cEstado)
cTexto2:= ""
cTexto2+=IIF(ALLTRIM(TEMPO2->CL_PRENDA)=="NO DEFINE","",PADR(TEMPO2->CL_PRENDA,20)+SPACE(1))
cTexto2+=IIF(ALLTRIM(TEMPO2->MT_PRENDA)=="NO DEFINE","",PADR(TEMPO2->MT_PRENDA,20)+SPACE(1))
*cTexto2+=cESTADO
oPrn:Say(Fil, 07, cTexto2)
oPrn:Say(Fil, 50, IIF(!EMPTY(cESTADO),cESTADO,""))
IF lTwo
oPrn:Say(Fil, 07+76, cTexto2)
oPrn:Say(Fil, 50+76, IIF(!EMPTY(cESTADO),cESTADO,""))
ENDIF
Fil++
ENDIF
SKIP
ENDDO

IF SUBS(cSERVICIO,1,2)=="02"
IF nItem < 4
nItem++
DO WHILE nItem <= 4
oPrn:Say(Fil, 00, STR(nItem,1,0))
IF lTwo
oPrn:Say(Fil, 00+76, STR(nItem,1,0))
ENDIF
Fil++
Fil++
nItem++
ENDDO
ENDIF
ELSE
IF nItem < 8
nItem++
DO WHILE nItem <= 8
oPrn:Say(Fil, 00, STR(nItem,1,0))
IF lTwo
oPrn:Say(Fil, 00+76, STR(nItem,1,0))
ENDIF
Fil++
nItem++
ENDDO

ENDIF
ENDIF
oPrn:Say(Fil, 00,"----------------------------------------------------------------------")
IF lTwo
oPrn:Say(Fil, 00+76,"----------------------------------------------------------------------")
ENDIF
Fil++
*oPrn:Say(Fil , 00,"Tot.OT: ")
*oPrn:Say(Fil , 08,TRANSFORM(nVALFACTU,"999,999.99"))
*oPrn:Say(Fil , 19,"Dcto:")
*oPrn:Say(Fil , 24,TRANSFORM(nVALDSCTO,"999,999.99"))
*oPrn:Say(Fil , 34,"A Cnta:")
*oPrn:Say(Fil , 41,TRANSFORM(nCOB_CNTA,"999,999.99"))
*oPrn:Say(Fil , 51,"Por Cob. ")
*oPrn:Say(Fil , 61,TRANSFORM(nCOB_SALD,"999,999.99"))

oPrn:Say(Fil , 00,"Tot.OT: "+ALLTRIM(STR(nVALFACTU,9,2)))
oPrn:Say(Fil , 19,"Dcto: "+ALLTRIM(STR(nVALDSCTO,9,2)))
oPrn:Say(Fil , 34,"A Cnta : "+ALLTRIM(STR(nCOB_CNTA,9,2)))
oPrn:Say(Fil , 51,"Por Cob.: "+ALLTRIM(STR(nCOB_SALD,9,2)))

IF lTwo
*oPrn:Say(Fil , 00+76,"Tot.OT: ")
*oPrn:Say(Fil , 08+76,TRANSFORM(nVALFACTU,"999,999.99"))
*oPrn:Say(Fil , 19+76,"Dcto:")
*oPrn:Say(Fil , 24+76,TRANSFORM(nVALDSCTO,"999,999.99"))
*oPrn:Say(Fil , 34+76,"A Cnta:")
*oPrn:Say(Fil , 41+76,TRANSFORM(nCOB_CNTA,"999,999.99"))
*oPrn:Say(Fil , 51+76,"Por Cob. ")
*oPrn:Say(Fil , 61+76,TRANSFORM(nCOB_SALD,"999,999.99"))
*
oPrn:Say(Fil , 00+76,"Tot.OT: "+ALLTRIM(STR(nVALFACTU,9,2)))
oPrn:Say(Fil , 19+76,"Dcto: "+ALLTRIM(STR(nVALDSCTO,9,2)))
oPrn:Say(Fil , 34+76,"A Cnta : "+ALLTRIM(STR(nCOB_CNTA,9,2)))
oPrn:Say(Fil , 51+76,"Por Cob.: "+ALLTRIM(STR(nCOB_SALD,9,2)))
*
ENDIF
Fil++
oPrn:Say(Fil, 00,"----------------------------------------------------------------------")
IF lTwo
oPrn:Say(Fil, 00+76,"----------------------------------------------------------------------")
ENDIF
Fil++
oPrn:Say(Fil , 00,"Piezas: ")
oPrn:Say(Fil , 09,TRANSFORM(nPZ_PRENDA,"999"))
IF lTwo
oPrn:Say(Fil , 00+76,"Piezas: ")
oPrn:Say(Fil , 09+76,TRANSFORM(nPZ_PRENDA,"999"))
ENDIF
Fil++
oPrn:Say(Fil, 00,"----------------------------------------------------------------------")
IF lTwo
oPrn:Say(Fil, 00+76,"----------------------------------------------------------------------")
ENDIF
Fil++
oPrn:Say(Fil, 00,cTira)
IF lTwo
oPrn:Say(Fil, 00+76,cTira)
ENDIF
Fil++
oPrn:Say(Fil, 00,cTira2)
IF lTwo
oPrn:Say(Fil, 00+76,cTira2)
ENDIF
SELECT TEMPO1
*
lOk := .T.
oPrn:EndPage()
oPrn:Command("27,80")
RETURN(lOk)
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: PROBLEMAS CON LA TDOSPRN

Postby LuisPonce » Mon Nov 23, 2009 5:01 am

Gracias Armando

Probe agregando StartPage() y EndPage() e igual se cuelga, probare el codigo que me pasaste, podrias pasarme la tabla involucrada ?

hice algunos cambios y ya no se cuelga, el problema estaba en :

oPrnCmp:Command( { 27, 64 } )
oPrnCmp:Command( { 27, 67, nLinDoc } )

quite los corchetes y listo

oPrnCmp:Command( 27, 64 )
oPrnCmp:Command( 27, 67, nLinDoc )

Pero, tampoco imprime, me sale un error en el primer say() linea 158

? "Voy a Iniciar la Clase TDosPrn"


oPrnCmp:=TDosPrn():New(cLptDoc)
oPrnCmp:Command( 27, 64 )
oPrnCmp:Command( 27, 67, nLinDoc )
oPrnCmp:StartPage()

oPrnCmp:Say( nRow, 70, cDoc+cNro, nCompress )
nRow ++
oPrnCmp:Say( nRow, 05, cCodClt+" "+cNombre, { nBold , nCompress } )
oPrnCmp:Say( nRow, 42, cCancela, nCompress )
nRow ++


Size: 2,613,760 bytes
Time from start: 0 hours 0 mins 42 secs
Error occurred at: 23/11/2009, 00:51:53
Error description: Error BASE/1066 Argument error: conditional
Args:
[ 1] = N 1

Stack Calls
===========
Called from: TDOSPRN.PRG => (b)TDOSPRN:TDOSPRN(0)
Called from: => TDOSPRN:WRITE(0)
Called from: TDOSPRN.PRG => TDOSPRN:SAY(0)
Called from: GRF0200.PRG => IMPRIMEV(158)
Luis Ponce
User avatar
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: PROBLEMAS CON LA TDOSPRN

Postby Armando Picon » Mon Nov 23, 2009 5:11 pm

Todavia tienes que arreglar todos los oprncmp:command(), la cadena de comandos van entre comillas (fijate el ejemplito). Si con eso no funciona y si tenes a bien, envíame tu codigo a mi correo personal: apic1002002@yahoo.es y a vuelta de correo te devuelvo tu codigo ya probado.
Saludos
Armando
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Re: PROBLEMAS CON LA TDOSPRN

Postby LuisPonce » Tue Nov 24, 2009 8:21 pm

Armando

Y amigos del foro, encontre el problema... la clase que venia utilizando con FW de 16bits, es una TDOSPRN modificada por Giancarlo Sabattino, en Julio del 2001, en la que hace varios magnificos aportes entre ellos :

METHOD Command( aCommands ) ; donde acepta como parametro un array, forma como lo venia usando

METHOD Say( nRow, nCol, xText, nStyle, nPad, lAToO ) CLASS TDosPrn ; donde tiene dos nuevas variables aStyle: Valor entre 1 y 5, o un arreglo con valores en el mismo rango.
Esto permite cambiar los estilos de letras durante la impresión.
1 -> Imprimir a 17 CPI ( Comprimido )
2 -> Imprimir a 12 CPI ( Pica )
3 -> Imprimir a 5 CPI ( Doble Ancho )
4 -> Imprimir en Negrillas
5 -> Imprimir en Italico
Es importante tener en cuenta que se utilizan características que
son nativas de las impresoras matriciales, y por lo tanto, depen-
diendo de la marca y modelo, habrán características que no pueden
ser combinadas (Ej: 17 CPI+Negrillas)

nPad : Valor entre 1 y 3: Alineación con respecto a la columna :nCol.
0 -> Izquierda ( por defecto )
1 -> Derecha
2 -> Centrada

Entonces mi codigo :

oPrnCmp:Say( nRow, 70, cDoc+cNro, nCompress )
nRow ++
oPrnCmp:Say( nRow, 05, cCodClt+" "+cNombre, { nBold , nCompress } )
oPrnCmp:Say( nRow, 42, cCancela, nCompress )
nRow ++

La clase que trae el FWH no contempla estas variaciones, jamas va a funcionar ya que el metodo say() solo tiene 4 parametros y el cuarto es un valor logico, mientras que la anterior contenia 6

METHOD Say( nRow, nCol, cText, lAToO ) CLASS TDosPrn

Ahora me pregunto como imprimo algunas lineas en comprimido, o italico con la actual clase, sera posible combinar ambas ? o ya existe alguna nueva TDOSPRN

Intentare recompilar la Clase con xHarbour
Last edited by LuisPonce on Tue Nov 24, 2009 9:03 pm, edited 1 time in total.
Luis Ponce
User avatar
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: PROBLEMAS CON LA TDOSPRN

Postby surGom » Tue Nov 24, 2009 8:59 pm

Creo que tenés que hacer esto

oPrn:Saycmp (34,1,"El total de la presente se ajustara al tipo de cambio del dólar libre")
oPrn:Saycmp (35,1,"vigente para el pago de importación de estas mercaderías, a la fecha")
oPrn:Saycmp (36,1,"de su efectiva cancelación")


Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: PROBLEMAS CON LA TDOSPRN

Postby surGom » Tue Nov 24, 2009 9:01 pm

Eso es para comprimido, no se para itálica

Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: PROBLEMAS CON LA TDOSPRN

Postby surGom » Tue Nov 24, 2009 9:06 pm

Me parece que que con command podés cambiar la letra a itálica, tenes que buscar en el manual de la impresora cual es la secuencia que tenés que poner

Ej


oPrn:command( "14")
oPrn:Say(0,0,oemtoansi("Química Mega S.A."))
oPrn:Command("27" + "18")

No me acuerdo que tipo de letra pido pero así funciona (Es una epson lx-300)

Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: PROBLEMAS CON LA TDOSPRN

Postby LuisPonce » Tue Nov 24, 2009 9:22 pm

Luis

Gracias por tus comentarios, es decir para hacer el cambio de letra hay que darle command, cada vez que sea necesario ?

oPrn:command( "14") // para activar comprimido

oPrn:Say(0,0,oemtoansi("Química Mega S.A."))

y para continuar con letra normal

oPrn:Command("27" + "18")
Luis Ponce
User avatar
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: PROBLEMAS CON LA TDOSPRN

Postby surGom » Tue Nov 24, 2009 9:33 pm

Sí así lo tengo implementado para facturas, listados y remitos que se hacen por impresoras matriciales...

Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: PROBLEMAS CON LA TDOSPRN

Postby jbrita » Tue Nov 24, 2009 11:34 pm

Amigo ahi va un ejempplo completo:

STATIC negra_on :=chr(27)+chr(69) //69
STATIC negra_off:=chr(27)+chr(70) //70
STATIC doble_on :=chr(27)+chr(87)+"1"
STATIC doble_off:=chr(27)+chr(87)+"0"


STATIC FUNCTION Emite_Vale_Venta(aDatos,nNumVale,RutCte,NomCte,DirCte,CiuCte,NomPto,FecPto,oBs1,oBs2,tvale,nCopia)
*--------------------
Local cPuerto:="LPT1"
Local oPrn,fila,copia,pagina,I,linea,nRow,oPen1,oFnt1,oFnt2,oFnt3,oFnt4,oFnt5
Local nTotVenta:=0
Local nLargo:=Len(aDatos)

oPrn:=TDosPrn():New(cPuerto)
oPrn:command( "27","67", "33" )
oPrn:Command( '18' )

oPrn:command( "27","64")


For copia=1 To nCopia
nTotVenta:=0
pagina :=1
linea :=1
fila :=10
oPrn:Say(01,01, "BARRACA Y FERRETERIA")
oPrn:Say(01,55, "Fecha Emision :"+dtoc(date()) )
oPrn:Say(03,20, doble_on+"ORDEN DE COMPRA Nº "+StrZero(nNumVale,8)+"/"+RIGHT(STR(nAnoPro,4),2)+doble_off)

oPrn:Say(05,01, "Cliente .:"+AllTrim(NomCte))
oPrn:Say(06,01, "Direccion:"+AllTrim(DirCte))
oPrn:Say(06,50, "Vendedor.:"+SubStr(NomPto,1,20))

oPrn:Say(07,01, replicate("-",79) )
oPrn:Say(08,02, "Item D e t a l l e Cantidad P.U. Total")
oPrn:Say(09,01, replicate("-",79))

For I:=1 To Len(aDatos)
If aDatos[I,1] # " "
oPrn:Say(fila,02, Coma_Pto(TRANSFORM(I,"99")) )
oPrn:Say(fila,07, SubStr(aDatos[I,2],1,30))
oPrn:Say(fila,50, Coma_Pto(TRANSFORM(aDatos[I,3],"99999.99")) )
oPrn:Say(fila,58, Coma_Pto(TRANSFORM(aDatos[I,4],"9,999,999.99")) )
oPrn:Say(fila,70, Coma_Pto(TRANSFORM(aDatos[I,6],"99,999,999")) )
nTotVenta:=nTotVenta + aDatos[i,6]
fila :=fila + 1
linea:=linea + 1
If linea > 15
oPrn:Say(fila,01, replicate("-",79))
fila++
oPrn:Say(fila,57, "SIGUIENTE HOJA --->" )
oPrn:Say(01,01, "BARRACA Y FERRETERIA")
oPrn:Say(01,55, "Fecha Emision :"+dtoc(date()) )
oPrn:Say(03,20, doble_on+"ORDEN DE COMPRA Nº "+StrZero(nNumVale,8)+"/"+RIGHT(STR(nAnoPro,4),2)+doble_off)

oPrn:Say(05,01, "Cliente .:"+AllTrim(NomCte))
oPrn:Say(06,01, "Direccion:"+AllTrim(DirCte))
oPrn:Say(06,50, "Vendedor.:"+SubStr(NomPto,1,20))


oPrn:Say(07,01, replicate("-",79) )
oPrn:Say(08,02, "Item D e t a l l e Cantidad P.U. Total")
oPrn:Say(09,01, replicate("-",79))

fila :=10
linea:=1
pagina:=pagina+1
Endif
Endif
Next

Next

oPrn:End()
*oPrn:End( .f., .f. )

RETURN NIL
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: PROBLEMAS CON LA TDOSPRN

Postby sysctrl2 » Wed Nov 25, 2009 6:57 pm

Tambien funciona,

oPrn:say( 0,0, chr(15) )
oPren:say(1,1, 'texto comprimido')

saludos...
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 959
Joined: Mon Feb 05, 2007 7:15 pm

Re: PROBLEMAS CON LA TDOSPRN

Postby LuisPonce » Fri Nov 27, 2009 10:04 pm

Gracias colegas por el interes puesto, finalmente tuve que modificar la clase agregando las variaciones de Giancarlo Sabattino, para poder imprimir sin variar mi codigo, felizmente con exito, los ejemplos que me pasaron los compile haciendo las adecuaciones del caso y tambien funcionaron

Att.
Luis Ponce
User avatar
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 26 guests