Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,407 @@
|
||||
{
|
||||
=========================================================================
|
||||
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 pprograma CHAR(50),
|
||||
i int,
|
||||
pdescripcion,pdir VARCHAR(100)
|
||||
|
||||
DEFER INTERRUPT
|
||||
OPTIONS ACCEPT KEY RETURN
|
||||
OPTIONS INPUT WRAP
|
||||
|
||||
CONNECT to "smarmotech" AS "MSSQL" USER 'jsoto' USING 'lmmjvsd2014'
|
||||
|
||||
|
||||
OPEN FORM main FROM "mainmenuform_1"
|
||||
DISPLAY FORM main
|
||||
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
|
||||
SET CONNECTION "MSSQL"
|
||||
FOR i = 1 TO mbs.getLength()
|
||||
IF mbs[i].prog IS NOT NULL THEN
|
||||
LET pprograma=mbs[i].prog CLIPPED
|
||||
LET pdescripcion = mbs[i].mbs CLIPPED
|
||||
LET pdir = dirs[arr_curr()].ddir CLIPPED
|
||||
SELECT MAX(a.programa) FROM seg0004 a WHERE a.programa = pprograma
|
||||
IF STATUS <> NOTFOUND THEN
|
||||
DISPLAY "descripcion ",pprograma,"(",pdescripcion,")",pdir
|
||||
|
||||
UPDATE seg0004 SET descripcion = RTRIM(pdescripcion),sistema=RTRIM(pdir) WHERE programa=pprograma
|
||||
ELSE
|
||||
INSERT INTO seg0004 VALUES (RTRIM(pprograma),RTRIM(pdir),RTRIM(pdescripcion),' ')
|
||||
END IF
|
||||
END IF
|
||||
END FOR
|
||||
|
||||
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,file_path VARCHAR(100),
|
||||
strconect VARCHAR(20)
|
||||
|
||||
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
|
||||
DISPLAY BY NAME usuario,file_path,pperfil
|
||||
|
||||
IF accesso = "SI" THEN
|
||||
SELECT a.ruta,a.conexion INTO file_path,strconect FROM seg0005 a
|
||||
WHERE a.cod_perfil = pperfil AND
|
||||
a.programa = pprograma
|
||||
|
||||
DISPLAY BY NAME file_path,pperfil
|
||||
DISPLAY "conect ",strconect
|
||||
LET cmd = "fglrun ",file_path CLIPPED, "\\",mbs[rmbs].prog, ".42r " ,usuario CLIPPED," ",clave CLIPPED,
|
||||
" ",pprinter1 ," ",pprinter2, " ",ckprinter," ",file_path," ",strconect
|
||||
|
||||
RUN cmd WITHOUT WAITING
|
||||
UPDATE seg0001 SET ultimo_programa_ejecutado = pprograma WHERE seg0001.usuario = usuario
|
||||
|
||||
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 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 "smarmotech" 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
|
||||
UPDATE seg0001 SET seg0001.fecha_ultimo_login = getdate(),
|
||||
seg0001.clave = clave WHERE seg0001.usuario = usuario
|
||||
|
||||
LET cambia_c = UPSHIFT(cambia_c)
|
||||
IF cambia_c = "SI" THEN
|
||||
CALL fgl_winmessage("INFO","DEBE CAMBIAR LA CLAVE","INFO")
|
||||
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 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