Files
MBS/PROYECTO/seguridad2.0/ctprmt001.4gl
T

195 lines
5.0 KiB
Plaintext

SCHEMA smarmotech
DEFINE usuario, clave, answer STRING
DEFINE Datos RECORD LIKE cttb00001.* --Datos individuales
DEFINE Ddatos DYNAMIC ARRAY OF RECORD --Conjunto de datos
cod_prod INT,
descripcion CHAR(50),
unidad_med CHAR(4),
nomenclatura CHAR(30),
desglose CHAR(10),
us_crea CHAR(50),
fech_crea DATE,
us_mod CHAR(50),
fech_mod DATE,
cod_cia SMALLINT,
factor DECIMAL (18,5)
END RECORD
MAIN --login y programa
CALL ARG_VAL(1) RETURNING usuario
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuario USING clave
CALL ctprmt001()
END MAIN
FUNCTION ctprmt001()
OPEN WINDOW w1 WITH FORM 'ctfmmt001'
CALL fgl_settitle("Maestra Semi-elaborados")
CALL buscarDatos() RETURNING Ddatos
DIALOG ATTRIBUTE(UNBUFFERED)
DISPLAY ARRAY Ddatos TO Drecord.*
ON ACTION agregar
ATTRIBUTES(TEXT = "Agregar", IMAGE = "fa-address-book-o")
INPUT BY NAME Datos.*
AFTER INPUT
CALL Save()
CALL msg(1)
ON ACTION CANCEL ATTRIBUTES(TEXT = "Salir", IMAGE = "quit")
CALL msg(2)
EXIT INPUT
END INPUT
ON ACTION salir ATTRIBUTES(TEXT = "Salir", IMAGE = "quit")
EXIT PROGRAM
BEFORE ROW
CALL getdata(arr_curr())
CALL buscarDatos() RETURNING Ddatos
END DISPLAY
INPUT BY NAME datos.* ATTRIBUTES(WITHOUT DEFAULTS)
ON ACTION actualizar
ATTRIBUTES(TEXT = "Actualizar", IMAGE = "fa-refresh")
UPDATE cttb00001
SET cttb00001.cod_cia = datos.cod_cia,
cttb00001.descripcion = datos.descripcion,
cttb00001.desglose = datos.desglose,
cttb00001.fech_mod = GETDATE(),
cttb00001.nomenclatura = DATOS.nomenclatura,
cttb00001.unidad_med = datos.unidad_med,
cttb00001.us_mod = usuario,
cttb00001.factor = datos.factor
WHERE cttb00001.cod_prod = Datos.cod_prod
CALL msg(13)
ON ACTION salir ATTRIBUTES(TEXT = "Salir", IMAGE = "exit")
EXIT PROGRAM
ON ACTION Eliminar ATTRIBUTES(TEXT = "Eliminar", IMAGE = "delete")
LET answer =
fgl_winquestion(
"Eliminar registro",
"ESTA SEGURO QUE DESEA DESACTIVAR ESTE REGISTRO?",
"YES",
"YES|NO",
"QUESTION",
0)
IF answer = 'YES' THEN
UPDATE cttb00001
SET cttb00001.fech_mod = GETDATE(),
cttb00001.status_t = 'E',
cttb00001.us_mod = usuario
WHERE cttb00001.cod_prod = Datos.cod_prod
CALL msg(39)
ELSE
CALL msg(2)
END IF
END INPUT
END DIALOG
END FUNCTION
FUNCTION buscarDatos()
DEFINE idx INT
DECLARE buscar CURSOR FOR
SELECT cod_prod,
descripcion,
unidad_med,
nomenclatura,
desglose,
us_crea,
fech_crea,
us_mod,
fech_mod,
cod_cia,
factor
FROM cttb00001
WHERE status_t IS NULL
LET idx = 1
FOREACH buscar INTO Ddatos[idx].*
LET idx = idx + 1
END FOREACH
RETURN Ddatos
END FUNCTION
FUNCTION getdata(i INT) --Obtener los datos y las propiedades del empleado
--Seleccionado en el Duser
IF i = 0 THEN
INITIALIZE datos.* TO NULL
RETURN
END IF
SELECT cod_prod,
descripcion,
unidad_med,
nomenclatura,
desglose,
status_t,
us_crea,
fech_crea,
us_mod,
fech_mod,
cod_cia,
factor
INTO datos.* FROM cttb00001
WHERE cttb00001.cod_prod = Ddatos[i].cod_prod
END FUNCTION
FUNCTION Save()
DEFINE idx INT
SELECT MAX(cod_prod) INTO idx FROM cttb00001
LET datos.cod_prod = idx + 1
INSERT INTO cttb00001(
cod_cia,
cod_prod,
descripcion,
desglose,
fech_crea,
nomenclatura,
unidad_med,
us_crea,
factor)
VALUES(datos.cod_cia,
datos.cod_prod,
datos.descripcion,
datos.desglose,
GETDATE(),
datos.nomenclatura,
datos.unidad_med,
usuario,
datos.factor)
END FUNCTION