Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md

This commit is contained in:
2026-08-18 20:59:52 -04:00
commit 454973e269
5978 changed files with 2664094 additions and 0 deletions
+200
View File
@@ -0,0 +1,200 @@
# Property of Four Js*
# (c) Copyright Four Js 1995, 2019. All Rights Reserved.
# * Trademark of Four Js Development Tools Europe Ltd
# in the United States and elsewhere
#
# Four Js and its suppliers do not warrant or guarantee that these
# samples are accurate and suitable for your purposes. Their inclusion is
# purely for information purposes only.
IMPORT os
#IMPORT FGL demo_make_db
IMPORT FGL demo_load
SCHEMA smarmotech
DEFINE demos DYNAMIC ARRAY OF RECORD
NAME, PROGRAM,args,tipo,basedatos,descripcion,dirname,ruta VARCHAR(255)
END RECORD
DEFINE topics DYNAMIC ARRAY OF RECORD
NAME,parent,dirname VARCHAR(255)
END RECORD,
usuarios,clave VARCHAR(50),
pperfil,pprinter1,pprinter2,ckprinter,pcodcia INT,
cambia_c VARCHAR(10)
MAIN
DEFINE readme,nombre_cia,usuario,fecha_sistema,opcion STRING,
ptasa FLOAT
call ui.Interface.loadStyles("menup")
OPTIONS INPUT WRAP
OPEN FORM main FROM "demo"
DISPLAY FORM MAIN
CALL autentificacion() RETURNING usuarios,clave,pperfil,pprinter1,pprinter2,ckprinter,cambia_c,pcodcia
SELECT a.nombre INTO nombre_cia FROM companias a WHERE a.cod_comp = pcodcia
# 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"
LET ptasa = 60
LET usuario = 'JOHNNY SOTO'
LET fecha_sistema = TODAY
DISPLAY "Usuario" TO lusuario
DISPLAY "Fecha" TO lfecha
DISPLAY "Tasa" TO ltasa
DISPLAY ptasa TO tasa
DISPLAY BY NAME fecha_sistema
DISPLAY BY NAME nombre_cia
DISPLAY usuarios TO usuario
# CALL demo_load.load_demo()
CALL fetch_topics()
DIALOG ATTRIBUTES(FIELD ORDER FORM, UNBUFFERED)
DISPLAY ARRAY topics TO topics.*
BEFORE ROW
CALL fetch_demos(topics[arr_curr()].*)
LET readme = readfile(os.Path.join(topics[arr_curr()].dirname, "README"))
ON ACTION cambia ATTRIBUTE(TEXT="Cambia Clave",IMAGE='user')
LET opcion = fgl_winquestion("Cambiar","Al cambiar la clave el sistema va a salir, debe volver a entrar con la clave nueva","NO","YES|NO","question",0)
IF opcion = "YES" THEN
CALL cambia_clave()
EXIT PROGRAM
END IF
AFTER DISPLAY
END DISPLAY
DISPLAY ARRAY demos TO s_demos.*
ON ACTION show
IF arr_curr() > 0 THEN
CALL run_demo(demos[arr_curr()].*)
END IF
ON ACTION cambia ATTRIBUTE(TEXT="Cambia Clave",IMAGE='user')
LET opcion = fgl_winquestion("Cambiar","Al cambiar la clave el sistema va a salir, debe volver a entrar con la clave nueva","NO","YES|NO","question",0)
IF opcion = "YES" THEN
CALL cambia_clave()
EXIT PROGRAM
END IF
AFTER DISPLAY
END DISPLAY
INPUT BY NAME readme
END INPUT
ON ACTION CANCEL
EXIT DIALOG
#IF int_flag THEN EXIT INPUT END if
END DIALOG
END MAIN
FUNCTION fetch_topics()
DEFINE topic RECORD
NAME,parent,dirname VARCHAR(255)
END RECORD
DEFINE n INT
LET n = 0
DECLARE topic CURSOR FOR SELECT * INTO topic.* FROM topics WHERE estado = 'online'
ORDER BY orden,dirname
FOREACH topic
LET n = n + 1
LET topics[n].* = topic.*
END FOREACH
END FUNCTION
FUNCTION fetch_demos(topic)
DEFINE topic RECORD
NAME,parent,dirname VARCHAR(255)
END RECORD
DEFINE demo RECORD
NAME, PROGRAM,args,tipo,basedatos,descripcion,dirname,ruta VARCHAR(255)
END RECORD
DEFINE n INT
CALL demos.clear()
LET n = 0
DECLARE demo CURSOR FOR SELECT * INTO demo.* FROM demos
WHERE dirname = topic.dirname AND estado = 'online'
ORDER BY dirname
FOREACH demo
DISPLAY "demos ",demo.name," ", demo.dirname
CASE demo.tipo
WHEN "V"
LET demo.tipo = "services"
WHEN "B"
LET demo.tipo = "file"
END CASE
LET n = n + 1
LET demos[n].* = demo.*
END FOREACH
END FUNCTION
FUNCTION run_demo(demo)
DEFINE demo RECORD
NAME, PROGRAM,args,tipo,basedatos,descripcion,dirname,ruta VARCHAR(255)
END RECORD
DEFINE cmd STRING
DEFINE isUnix BOOLEAN
IF demo.program IS NULL THEN RETURN END IF
CASE demo.tipo
WHEN "services"
-- Run the command: Check if there is a script to run the demo
LET isUnix = fgl_getenv("WINDIR") IS NULL
IF NOT isUnix THEN
LET demo.dirname = unixToDosPath(demo.dirname)
END IF
LET cmd = os.Path.join(demo.dirname, demo.program), IIF(isUnix, ".sh", ".bat")
IF os.Path.exists(cmd) THEN -- Script
IF isUnix THEN
LET cmd = "sh ", cmd
END IF
LET cmd = cmd, " ", demo.args
ELSE -- 4gl program
LET cmd = "cd ", demo.ruta CLIPPED, " && fglrun ", demo.program CLIPPED, " ", usuarios," ",clave," ",pperfil," ",
pprinter1," "," ", pprinter2,
" ",ckprinter
END IF
DISPLAY " comando ",cmd
RUN cmd WITHOUT WAITING
WHEN "file"
CALL showfile(os.Path.join(demo.dirname, demo.program))
OTHERWISE
-- Can't happen?
END CASE
END FUNCTION
FUNCTION unixToDosPath(path)
DEFINE path STRING
DEFINE buf base.StringBuffer
LET buf = base.StringBuffer.create()
CALL buf.append(path)
CALL buf.replace("/", "\\", 0)
RETURN buf.toString()
END FUNCTION
FUNCTION showfile(fn)
DEFINE fn STRING
DEFINE txt STRING
OPEN WINDOW w WITH FORM "demodisp"
ATTRIBUTE(TEXT = "File: [" || fn || "]", STYLE = "dialog")
LET txt = readfile(fn)
INPUT BY NAME txt WITHOUT DEFAULTS;
LET int_flag = FALSE
CLOSE WINDOW w
END FUNCTION
FUNCTION readfile(fn)
DEFINE fn STRING
DEFINE t TEXT
DEFINE s STRING
LOCATE t IN FILE fn
LET s = t
RETURN s
END FUNCTION