***********************************
** Emision de tarjeta personal
// base es la tabla de personal que viene como parametro
STATIC FUNCTION Tarjeta(base)
LOCAL oPrn, oFont1, oFont2, nCol, nRow, i, mfoto,;
mbarra, mtama1, mtama2, mtama5
// Busco los tamños de letra para cada font en una
// tabla que guardo los valores
USE fuentes ALIAS "datos" NEW
mtama1 := datos->tama1
mtama2 := datos->tama2
mtama5 := datos->tama5
close datos
// La foto del empleado la tengo guardada en una
// carpeta FOTOS con el codigo de empleado completado con ceros
mfoto := "FOTOS\" + STRTRAN(STR((base)->codigo ,8)," ","0") + ".BMP"
// El codigo de barras lo armo con la funcion CodigoBarra
// que arma el conjunto de pares que la tipografia puede
// mostrar (siempre tiene que ser par el nro de digitos)
// Los () de inicio y fin son necesarios para delimitar el codigo
mbarra := "("+CodigoBarra( STRTRAN(STR((base)->codigo ,6)," ","0") )+")"
// Defino los distintos tipos de letra
DEFINE FONT oFont1 NAME "TAHOMA" SIZE mtama1, mtama1*2
DEFINE FONT oFont2 NAME "Interleaved 2of5 Text" SIZE mtama4, mtama4*2
PRINT oPrn NAME "Tarjeta" PREVIEW
// Divido la hora en 72 lineas x 80 Columnas
nRow = oPrn:nVertRes() / 72
nCol = oPrn:nHorzRes() / 80
PAGE
// Imprimo un logo de la empresa para el carnet
oPrn:SayBitmap(7,nCol*20,"LOGOCARN.BMP",mtama5/5,mtama5/5)
oPrn:SayBitmap(nRow*2,nCol*24,mfoto,mtama5+mtama5/3,mtama5)
oPrn:Say(nRow*2,nCol*5,oApp:nomb_emp,oFont1)
oPrn:Say(nRow*4,nCol*5,"Legajo Nro.:"+STR((base)->codigo),oFont1)
oPrn:Say(nRow*5,nCol*5,(base)->nombre,oFont1)
oPrn:Say(nRow*6,nCol*5,"Categoria: "+;
IF(cate04->(DBSEEK((base)->categoria)),cate04->nombre,""),oFont1)
oPrn:Say(nRow*7,nCol*5,"Direccion: "+(base)->direccion,oFont1)
oPrn:Say(nRow*8,nCol*5,"D.N.I: "+STR((base)->dni),oFont1)
oPrn:Say(nRow*9,nCol*5,"Fecha Ingreso: "+DTOC((base)->fechaing),oFont1)
oPrn:Say(nRow*10,nCol*5,mbarra,oFont2)
ENDPAGE
ENDPRINT
RELEASE FONT oFont1
RELEASE FONT oFont2
RETURN nil
************************************
** Codigo de barra de un numero
STATIC FUNCTION CodigoBarra( x )
LOCAL i, bar := {}, j := 0, bar1 := {}, cBarr := ""
FOR i := 48 TO 97
AADD(bar ,CHR(i))
AADD(bar1,STRTRAN(STR(j,2)," ","0"))
j++
NEXT i
FOR i := 192 TO 241
AADD(bar,CHR(i))
AADD(bar1,STRTRAN(STR(j,2)," ","0"))
j++
NEXT i
FOR j := 1 TO LEN(x)-1 STEP 2
i := ASCAN(bar1,SUBSTR(x,j,2))
cBarr := cBarr + bar[i]
NEXT j
RETURN cBarr