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