primer commit subida
This commit is contained in:
@@ -0,0 +1,392 @@
|
||||
{
|
||||
=========================================================================
|
||||
PROGRAMA : MAINMENU
|
||||
OBJETIVO : INICIAR EL MENU DEL SISTEMA
|
||||
PROGRAMADOR : ING. JUAN SOTO
|
||||
FECHA : 13 de Marzo 2009
|
||||
========================================================================
|
||||
}
|
||||
|
||||
|
||||
IMPORT os
|
||||
CONSTANT filename = "mainmenu.data"
|
||||
|
||||
|
||||
GLOBALS
|
||||
DEFINE dirs DYNAMIC ARRAY OF RECORD
|
||||
ddir STRING
|
||||
END RECORD,
|
||||
usuario,nclave,cclave,clave char(50),
|
||||
altera CHAR(100),
|
||||
cambia_c,accesso CHAR(2),
|
||||
pperfil SMALLINT,
|
||||
sesion INT,
|
||||
ptasa DEC(12,2)
|
||||
|
||||
DEFINE mbs DYNAMIC ARRAY OF RECORD
|
||||
mbs STRING,
|
||||
prog STRING,
|
||||
type STRING,
|
||||
desc STRING
|
||||
END RECORD
|
||||
DEFINE nmbs INTEGER
|
||||
DEFINE longDesc STRING,
|
||||
pprograma CHAR(50),
|
||||
ckprinter,pprinter1,pprinter2 SMALLINT
|
||||
|
||||
END GLOBALS
|
||||
|
||||
MAIN
|
||||
|
||||
DEFINE currForm ui.Form,
|
||||
nombre_cia,kusuario CHAR(50)
|
||||
|
||||
DEFER INTERRUPT
|
||||
OPTIONS ACCEPT KEY RETURN
|
||||
OPTIONS INPUT WRAP
|
||||
|
||||
|
||||
CALL autentificacion()
|
||||
OPEN FORM main FROM "mainmenuform"
|
||||
DISPLAY FORM main
|
||||
# BUSCA EL NOMBRE DE LA EMPRESA
|
||||
SELECT a.nombre INTO nombre_cia FROM companias a
|
||||
SELECT a.prima INTO Ptasa FROM vetb00019 a WHERE disponible = "S"
|
||||
DISPLAY "Usuario" TO lusuario
|
||||
DISPLAY "Fecha" TO lfecha
|
||||
DISPLAY "Prima" TO ltasa
|
||||
DISPLAY ptasa TO tasa
|
||||
DISPLAY BY NAME nombre_cia,usuario
|
||||
CALL ui.Interface.LoadStyles("mainmenu")
|
||||
|
||||
CALL init_mbs()
|
||||
|
||||
DIALOG ATTRIBUTES(FIELD ORDER FORM, UNBUFFERED)
|
||||
DISPLAY ARRAY dirs TO dirs.*
|
||||
BEFORE ROW
|
||||
CALL sync_mbs(DIALOG)
|
||||
CALL DIALOG.setCurrentRow("mbs",1)
|
||||
|
||||
END DISPLAY
|
||||
|
||||
DISPLAY ARRAY mbs TO mbs.*
|
||||
END DISPLAY
|
||||
|
||||
INPUT BY NAME longDesc
|
||||
END INPUT
|
||||
|
||||
ON ACTION show
|
||||
CALL show_mbs(DIALOG)
|
||||
|
||||
ON ACTION clave
|
||||
CALL cambia_clave()
|
||||
|
||||
ON ACTION close
|
||||
EXIT DIALOG
|
||||
END DIALOG
|
||||
|
||||
END MAIN
|
||||
|
||||
FUNCTION show_mbs(d)
|
||||
DEFINE d ui.Dialog
|
||||
DEFINE rdir, rmbs INTEGER
|
||||
DEFINE cmd STRING
|
||||
|
||||
LET rdir = d.getCurrentRow("dirs")
|
||||
LET rmbs = d.getCurrentRow("mbs")
|
||||
IF mbs[rmbs].prog IS NULL THEN RETURN END IF
|
||||
|
||||
IF mbs[rmbs].type = "services" THEN
|
||||
|
||||
#CONTROL ACCESO AL PROGRAMA
|
||||
LET pprograma = mbs[rmbs].prog
|
||||
CALL seg000(usuario,pperfil,pprograma) RETURNING accesso
|
||||
IF accesso = "SI" THEN
|
||||
UPDATE seg0001 SET ultimo_programa_ejecutado = pprograma,
|
||||
fecha_ultimo_login = getdate()
|
||||
WHERE seg0001.usuario = usuario
|
||||
|
||||
LET cmd = "fglrun ",fgl_getenv("FGLPROG1"), "\\",mbs[rmbs].prog , ".42r " ,usuario CLIPPED," ",clave CLIPPED,
|
||||
" ",pprinter1 ," ",pprinter2, " ",ckprinter
|
||||
RUN cmd WITHOUT WAITING
|
||||
ELSE
|
||||
CALL FGL_WINMESSAGE( "ATENCION", "USUARIO NO TIENE PERMISOS PARA UTILIZAR OPCION", "stop")
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF mbs[rmbs].type = "FILE" THEN
|
||||
|
||||
#IF accesso = "SI" THEN
|
||||
LET cmd = fgl_getenv("FGLFILE"), "\\",mbs[rmbs].prog CLIPPED,".XLS"
|
||||
|
||||
RUN cmd WITHOUT WAITING
|
||||
# ELSE
|
||||
# CALL FGL_WINMESSAGE( "ATENCION", "USUARIO NO TIENE PERMISOS PARA UTILIZAR OPCION", "stop")
|
||||
# END IF
|
||||
#CALL showfile(dirs[rdir].ddir || "/" || mbs[rmbs].prog)
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION init_mbs()
|
||||
DEFINE reader om.XmlReader,
|
||||
attributes om.SaxAttributes,
|
||||
saxevent STRING,
|
||||
s_sel,puser CHAR(50)
|
||||
|
||||
LET reader = om.XmlReader.createFileReader(filename)
|
||||
|
||||
LET attributes = reader.getAttributes()
|
||||
LET saxevent = reader.read()
|
||||
|
||||
DISPLAY today TO fecha_sistema
|
||||
|
||||
CALL dirs.clear()
|
||||
CALL mbs.clear()
|
||||
WHILE saxevent IS NOT NULL
|
||||
CASE saxevent
|
||||
WHEN 'StartDocument'
|
||||
LET nmbs=0
|
||||
WHEN 'StartElement'
|
||||
CASE reader.getTagName()
|
||||
WHEN 'mbs'
|
||||
-- Nothing
|
||||
WHEN 'DDir'
|
||||
CALL dirs.appendElement()
|
||||
LET dirs[dirs.getLength()].ddir = attributes.getValue('name')
|
||||
WHEN 'mbs'
|
||||
-- Nothing
|
||||
OTHERWISE
|
||||
DISPLAY "Error: wrong tagName:",reader.getTagName()
|
||||
END CASE
|
||||
WHEN 'EndElement'
|
||||
-- Nothing
|
||||
END CASE
|
||||
LET saxevent=reader.read()
|
||||
END WHILE
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION sync_mbs(d)
|
||||
DEFINE d ui.Dialog
|
||||
DEFINE reader om.XmlReader,
|
||||
attributes om.SaxAttributes,
|
||||
saxevent STRING
|
||||
DEFINE n INTEGER
|
||||
LET reader = om.XmlReader.createFileReader(filename)
|
||||
LET attributes = reader.getAttributes()
|
||||
LET saxevent = reader.read()
|
||||
INITIALIZE longDesc TO NULL
|
||||
CALL mbs.clear()
|
||||
WHILE saxevent IS NOT NULL
|
||||
CASE saxevent
|
||||
WHEN 'StartDocument'
|
||||
LET nmbs=0
|
||||
WHEN 'StartElement'
|
||||
CASE reader.getTagName()
|
||||
WHEN 'mbs'
|
||||
-- Nothing
|
||||
WHEN 'DDir'
|
||||
IF attributes.getValue('name') == dirs[d.getCurrentRow("dirs")].ddir THEN
|
||||
LET saxevent = reader.read()
|
||||
WHILE saxevent IS NOT NULL
|
||||
IF saxevent == 'StartElement' THEN
|
||||
CASE reader.getTagName()
|
||||
WHEN 'mbs'
|
||||
CASE attributes.getValue('type')
|
||||
WHEN "V"
|
||||
CALL mbs.appendElement()
|
||||
LET n = mbs.getLength()
|
||||
LET mbs[n].type="services"
|
||||
LET mbs[n].mbs=attributes.getValue('name')
|
||||
LET mbs[n].prog=attributes.getValue('program')
|
||||
LET mbs[n].desc=attributes.getValue('description')
|
||||
WHEN "F"
|
||||
CALL mbs.appendElement()
|
||||
LET n = mbs.getLength()
|
||||
LET mbs[n].type="FILE"
|
||||
LET mbs[n].mbs=attributes.getValue('name')
|
||||
LET mbs[n].prog=attributes.getValue('program')
|
||||
LET mbs[n].desc=attributes.getValue('description')
|
||||
WHEN "B"
|
||||
|
||||
IF attributes.getValue('program') == "README" THEN
|
||||
LET longDesc = readfile(dirs[d.getCurrentRow("dirs")].ddir || "/README")
|
||||
|
||||
ELSE
|
||||
CALL mbs.appendElement()
|
||||
LET n = mbs.getLength()
|
||||
LET mbs[n].type="file"
|
||||
LET mbs[n].mbs=attributes.getValue('name')
|
||||
LET mbs[n].prog=attributes.getValue('program')
|
||||
LET mbs[n].desc=attributes.getValue('description')
|
||||
END IF
|
||||
WHEN "C"
|
||||
CALL mbs.appendElement()
|
||||
LET n = mbs.getLength()
|
||||
LET mbs[n].type="file"
|
||||
LET mbs[n].mbs=attributes.getValue('name')
|
||||
LET mbs[n].prog=attributes.getValue('program')
|
||||
LET mbs[n].desc=attributes.getValue('description')
|
||||
|
||||
END CASE
|
||||
OTHERWISE
|
||||
RETURN
|
||||
END CASE
|
||||
END IF
|
||||
LET saxevent = reader.read()
|
||||
END WHILE
|
||||
END IF
|
||||
WHEN 'mbs'
|
||||
OTHERWISE
|
||||
DISPLAY "Error: wrong tagName:",reader.getTagName()
|
||||
END CASE
|
||||
WHEN 'EndElement'
|
||||
-- Nothing
|
||||
END CASE
|
||||
LET saxevent=reader.read()
|
||||
END WHILE
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION showfile(fn)
|
||||
DEFINE fn STRING
|
||||
DEFINE txt STRING
|
||||
OPEN WINDOW w WITH FORM "Maindisp"
|
||||
ATTRIBUTE(TEXT="File: ["||fn||"]",STYLE="dialog")
|
||||
LET txt = readfile(fn)
|
||||
INPUT BY NAME txt WITHOUT DEFAULTS
|
||||
AFTER INPUT
|
||||
IF INT_FLAG THEN
|
||||
EXIT INPUT
|
||||
END IF
|
||||
CONTINUE INPUT
|
||||
END INPUT
|
||||
CLOSE WINDOW w
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION readfile(fn)
|
||||
DEFINE fn STRING
|
||||
DEFINE txt STRING
|
||||
DEFINE ln STRING
|
||||
DEFINE ch base.Channel
|
||||
LET ch=base.Channel.create()
|
||||
call fgl_winmessage("prueba",fn,"stop")
|
||||
CALL ch.openfile(fn,"r")
|
||||
|
||||
CALL ch.setDelimiter("")
|
||||
WHILE ch.read(ln)
|
||||
IF txt IS NULL THEN
|
||||
IF ln IS NULL THEN
|
||||
LET txt = "\n"
|
||||
else
|
||||
LET txt = ln
|
||||
END IF
|
||||
ELSE
|
||||
IF ln IS NULL THEN
|
||||
LET txt = txt || "\n"
|
||||
ELSE
|
||||
LET txt = txt || "\n" || ln
|
||||
END IF
|
||||
END IF
|
||||
END WHILE
|
||||
CALL ch.close()
|
||||
RETURN txt
|
||||
END FUNCTION
|
||||
|
||||
{================================================
|
||||
FUNCION : AUTENTIFICACION
|
||||
OBJETIVO : VALIDAR FUNCION DEL USUARIO
|
||||
FECHA : 30/6/2009
|
||||
PROGRAMADOR: JUAN SOTO
|
||||
==================================================
|
||||
}
|
||||
|
||||
FUNCTION autentificacion()
|
||||
|
||||
WHENEVER ERROR CONTINUE
|
||||
CALL startlog("errores.log")
|
||||
|
||||
OPEN WINDOW inicio AT 1,1 WITH FORM "inicial"
|
||||
|
||||
INPUT BY NAME usuario,clave WITHOUT DEFAULTS
|
||||
AFTER INPUT
|
||||
IF INT_FLAG THEN
|
||||
ERROR "OPERACION CANCELADA"
|
||||
EXIT INPUT
|
||||
END IF
|
||||
|
||||
CONNECT TO "decomarmol" USER usuario USING clave
|
||||
IF STATUS < 0 THEN
|
||||
ERROR "USUARIO NO ES VALIDO"
|
||||
CONTINUE INPUT
|
||||
END IF
|
||||
SELECT a.cod_perfil,a.printerdefecto,a.otro_printer ,a.printer_cheque,a.cambia_clave
|
||||
INTO pperfil,pprinter1,pprinter2,ckprinter,cambia_c
|
||||
FROM seg0001 a
|
||||
WHERE a.usuario = usuario
|
||||
|
||||
IF STATUS != 0 THEN
|
||||
ERROR "APLICACION ESTA REPORTANDO UN ERROR, COMUNIQUESE CON SU ADMINISTRADOR"
|
||||
END IF
|
||||
|
||||
LET cambia_c = UPSHIFT(cambia_c)
|
||||
IF cambia_c = "SI" THEN
|
||||
CALL cambia_clave()
|
||||
END IF
|
||||
EXIT INPUT
|
||||
END INPUT
|
||||
|
||||
CLOSE WINDOW inicio
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION cambia_clave()
|
||||
|
||||
OPEN WINDOW cambia AT 1,1 WITH FORM "cambia"
|
||||
DISPLAY usuario TO usuario
|
||||
DISPLAY clave TO clave
|
||||
INPUT BY NAME nclave,cclave
|
||||
AFTER INPUT
|
||||
IF INT_FLAG THEN
|
||||
CALL FGL_WINMESSAGE( "ATENCION", "OPERACION CANCELADA", "stop")
|
||||
EXIT INPUT
|
||||
END IF
|
||||
IF nclave = cclave THEN
|
||||
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO PUEDE SER IGUAL A LA VIEJA", "stop")
|
||||
NEXT FIELD nclave
|
||||
END IF
|
||||
IF nclave IS NULL OR nclave = " " THEN
|
||||
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO PUEDE ESTAR EN BLANCO", "stop")
|
||||
NEXT FIELD nclave
|
||||
END IF
|
||||
IF cclave IS NULL OR cclave = " " THEN
|
||||
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO PUEDE ESTAR EN BLANCO", "stop")
|
||||
NEXT FIELD cclave
|
||||
END IF
|
||||
IF nclave <> cclave THEN
|
||||
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO COINCIDE CON LA CONFIRMACION DE LA CLAVE", "stop")
|
||||
NEXT FIELD nclave
|
||||
ELSE
|
||||
|
||||
LET altera = "sp_password @old = '", clave CLIPPED,"', ",
|
||||
"@new = '",nclave CLIPPED,"' ,",
|
||||
"@loginame = '",usuario CLIPPED, "'"
|
||||
|
||||
PREPARE caltera FROM altera
|
||||
EXECUTE caltera
|
||||
IF STATUS = 0 THEN
|
||||
UPDATE seg0001 SET cambia_clave = "NO" WHERE seg0001.usuario = usuario
|
||||
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE CAMBIADA SATISFACTORIAMENTE", "stop")
|
||||
LET clave = nclave
|
||||
ELSE
|
||||
CALL FGL_WINMESSAGE( "ATENCION", "NO FUE POSIBLE EL CAMBIO DE LA CLAVE, TRATE NUEVA VEZ", "stop")
|
||||
NEXT FIELD nclave
|
||||
END IF
|
||||
END IF
|
||||
EXIT INPUT
|
||||
END INPUT
|
||||
IF INT_FLAG THEN
|
||||
LET INT_FLAG = FALSE
|
||||
RETURN
|
||||
CLOSE WINDOW cambia
|
||||
END IF
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user