Imprimir en base a una plantilla/doc. externo

Imprimir en base a una plantilla/doc. externo

Postby dobfivewin » Mon Dec 01, 2008 7:31 am

Hola a todos del foro

A ver si me explico para ver si se puede hacer

Quiero realizar impresiones en base a una plantilla/doc. externo (ejemplo TXT), osea que el programa lea una archivo externos al sistema donde yo haga la tabulación/ubicacion de lo quiera imprimir, de esa forma no tendria que estar modificando el programa por cambios del listado. :shock:

Tengo que imprimir Cheques y cada banco tiene un formulario distinto por lo que tendria que hacer un prg por cada banco, de la forma que estoy intentando hacer tendria un doc externo de tabulacion por cada formulario de cheque y un solo prg. :wink:

espero haberme explicado.

saludos para todos

david
argentina
dobfivewin
 
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Postby FranciscoA » Mon Dec 01, 2008 2:17 pm

Puedes utilizar una DBF con tantos campos como sean necesarios para identificar el codigo del banco correspondiente y las coordenadas de los datos del cheque. O, si lo deseas, puedes utilizar un fichero ini con una seccion para cada banco.

Desde tu prg solo tendrías que seleccionar el banco emisor y automaticamente se imprimiran los datos con las debidas coordenadas.

Saludos.
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Yo lo genero desde una plantilla txt sin necesidad de word

Postby tosko » Tue Dec 02, 2008 3:20 pm

yo lo genero desde la plantilla txt sin necesidad de word

#include 'TSButton.ch'
#include "FiveWin.ch"

#Define Enter CRLF

Static oDlg
Static oGet

Function Permiso()
local hFichero
local TxtGet, Txt2
local oCopias, nCopias:=1, lDisp:=.f.
local oChkBox, lChkBox:=.f.
local oIni

INI oIni File ".\Config.ini"
Get lChkBox Section "Configurar" Entry "Control Impresion" of oIni
EndIni

If .not. lChkBox
lDisp:=.t.
EndIf

Sele dgppea01

TxtGet:=MemoRead("ppeatxt.txt")
TxtGet:=StrTran(TxtGet,"{solicitante}",dgppea01->solicitant)
TxtGet:=StrTran(TxtGet,"{direccion}",alltrim(dgppea01->lugar_even))
TxtGet:=StrTran(TxtGet,"{permiso}",AllTrim(cwtperm->permiso)+" ")
TxtGet:=StrTran(TxtGet,"{comentarios}",AllTrim(dgppea01->comentario))
TxtGet:=StrTran(TxtGet,"{colonia}",AllTrim(colonias->nombre))
TxtGet:=StrTran(TxtGet,"{tiempo}",AllTrim(dgppea01->horario))
TxtGet:=StrTran(TxtGet,"{del}",dia2dig(dgppea01->fecha_del))
TxtGet:=StrTran(TxtGet,"{al}",dia2dig(dgppea01->fecha_al))
TxtGet:=StrTran(TxtGet,"{pesos}",Trans(dgppea01->cooperar,"999,999.99"))
TxtGet:=StrTran(TxtGet,"{mes_y_año}"," del "+Str(year(dgppea01->fecha_al),4,0)+".")
TxtGet:=StrTran(TxtGet,"{nivel}",AllTrim(cwtfirms->nivel))
TxtGet:=StrTran(TxtGet,"{firma}",AllTrim(cwtfirms->nombre))

MemoWrit("final.txt",TxtGet)

Txt2:=MemoRead("final.txt")

Define Dialog oDlg ResName 'permiso' Title 'Impresion de permiso para [' +AllTrim(dgppea01->solicitant)+']'

ReDefine Get oGet var Txt2 TEXT id 101 of oDlg UpDate


ReDefine CheckBox oChkBox var lChkBox id 104 of oDlg UpDate ;
On Click( if (lDisp,(lDisp:=.f.), (lDisp:=.t.)), oCopias:Refresh())
ReDefine Get oCopias var nCopias id 105 of oDlg Picture "99" When lDisp

ReDefine Button id 106 of oDlg ;
Action PrinterSetup( oDlg )

ReDefine Button id 103 of oDlg ;
Action aImpresora(Txt2, lChkBox, nCopias)

ReDefine Button id 102 of oDlg ;
Action oDlg:End()

Activate Dialog oDlg
Return Nil

******************************************************************
Static Function aImpresora(cTexto, lChkBox, nCopias)
local oFnt1, oFnt2, oFnt3, oFnt4, oFnt5
local nlinea:=75, nAncho:=2600
local nSeparacion:=19, nSaltoLinea:=60
local nColumna:=1000
local nCentro:=1400
local Imagen1:="logos\Aguila.bmp"
local Imagen2:="logos\MEscudo.bmp"
local Imagen3:="logos\Admo04.bmp"
local oPrn
local oLeyenda


If lChkBox
Print oPrn Name "Impresion de Permiso Provisional para Eventos 32Bits" From User
Else
Print oPrn Name "Impresion de Permiso Provisional para Eventos 32Bits"
EndIf

oPrn:SetPage(1)

If .not. Empty(nCopias)
oPrn:SetCopies(nCopias)
EndIf

If Empty(oPrn:hdc )
MsgStop('La impresora no se encuentra ó no esta lista para la impresion'+CRLF+;
'por favor verifique...','!Error en la Impresión¡')
Return Nil
EndIf

Define Font oFnt1 Name 'Courier New' Size 0,-12 of oPrn
Define Font oFnt2 Name 'Georgia' Size 0,-16 BOLD of oPrn
Define Font oFnt4 Name 'Impact' Size 0,-06 of oPrn
Define Font oFnt5 Name 'Impact' Size 0,-10 of oPrn
Define Font oLeyenda Name 'Courier New' Size 0,-08 of oPrn

Page

cuadro(oPrn,80,30,510,2800)

Imp_Center(oPrn,130,nCentro,"PERMISO PROVISIONAL",oFnt2)
Imp_imagen(oPrn,120,45,Imagen1,118,120)
imprime(oPrn, 93,15,"PRESIDENCIA MUNICIPAL",oFnt4)
imp_Center(oPrn, 280,nCentro,"Oficialia Mayor de Padrón y Licencias",oFnt1)
Imprime(oPrn, 45, 500,"FECHA TRAMITE",oFnt5)
Imprime(oPrn,58,480,Str(Day(_Field->fTramite),2,0)+"-"+cMonth(_Field->fTramite)+"-"+Str(Year(_Field->fTramite),4,0), oFnt1)
Imprime(oPrn,80,500,"Permiso No." + Str(_Field->Control,8,0), oFnt5)

Imp_JBloque(oPrn, 610, 80, nAncho, nSaltoLinea,cTexto,oFnt1)

Imp_imagen(oPrn,1300,80,Imagen2,57,142)
Imp_imagen(oPrn,1300,2380,Imagen3,168,143)

Sele ADMO
//Imprime(oPrn,360,518,Alltrim(admo->periodo),oFnt1)
imp_Center(oPrn, 1300,nCentro,"Atentamente",oFnt1)
imp_Center(oPrn, 1370,nCentro,Alltrim(admo->leyenda),oLeyenda)
Sele CWTFIRMS
imp_Center(oPrn, 1450,nCentro,Alltrim(cwtfirms->nivel),oFnt1)
imp_Center(oPrn, 1600,nCentro,'--------------------------------------------------------------------------',oFnt1)
imp_Center(oPrn, 1680,nCentro,Alltrim(cwtfirms->nombre),oFnt1)
//imp_Center(oPrn, 1790,nCentro,'Para atención y quejas comunicarse al servicio T.A.S. Telefonos: 2-22-44-66 y 2-22-44-58',oFnt5)
EndPage
EndPrint

Sele DGPPEA01
Do While !Rlock()
Inkey(.5)
Enddo
Replace dgppea01->Impreso with .t.
Commit
unlock

Return Nil

*****************************
Function dia2dig(campo)
local retval:=''
local dctos:=Str(Day(campo),2,0)

If Len(dctos) = 1
Retval:='0'+dctos +' de '+cMonth(campo)
Else
Retval:=dctos +' de '+cMonth(campo)
EndIf
Return Retval


*******************************************************
plantilla del archivo txt

Para: {solicitante}

Esta autoridad municipal, le concede permiso provisional personal para {permiso},{comentarios}, sin afectar a terceras personas en el domicilio {direccion}, en la colonia {colonia}, con un horario {tiempo} del dia {del} al dia {al} {mes_y_año}

El incumplimiento a lo estipulado sera  motivo de cancelación del mismo.
Donativo $ {pesos} al Fondo de

************************
Asi me lo deja en archivo

Para: ANDRES GONZALEZ ESTRELLA

Esta autoridad municipal, le concede permiso provisional personal para TRABAJAR EN LO QUE REUNE REQUISITOS ,EL GIRO DE VENTA DE ALIMENTOS. ( LICENCIA EN PROCESO DE TRAMITE ), sin afectar a terceras personas en el domicilio AV. MEXICO NUM. 10, en la colonia MOJONERAS, con un horario del dia 7 de Mayo al dia 6 de Junio del 2008.

El incumplimiento a lo estipulado sera  motivo de cancelación del mismo.
Donativo $ 100.00 al Fondo de



Saludos, cualquier dudad estoy a tus ordenes.
Tosko
User avatar
tosko
 
Posts: 28
Joined: Sat Oct 29, 2005 12:01 am
Location: Puerto Vallarta MX

imagenes...

Postby tosko » Tue Dec 02, 2008 3:40 pm

Image

la Salida:
Image


Gracias a imaXenes.com por el servicio de alojamiento de imágenes.

tosko
User avatar
tosko
 
Posts: 28
Joined: Sat Oct 29, 2005 12:01 am
Location: Puerto Vallarta MX


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], Maurizio and 28 guests