Files

315 lines
9.2 KiB
Plaintext

SCHEMA smarmotech
DEFINE usuario, clave, answer STRING
DEFINE tasas RECORD
idTasa INT,
fecha DATE,
tasa DEC(12, 2),
ventas SMALLINT,
us_crea VARCHAR(50),
fech_crea DATE
END RECORD
DEFINE Dtasas DYNAMIC ARRAY OF RECORD --Display Tasas
idTasa INT,
fecha DATE,
tasa DEC(12, 2),
ventas STRING,
us_crea VARCHAR(50),
fech_crea DATE
END RECORD
DEFINE ventasCont DYNAMIC ARRAY OF RECORD
idTasa INT,
ventas SMALLINT
END RECORD
MAIN --login y programa
CALL ARG_VAL(1) RETURNING usuario
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "marmotech" AS "EXTERIOR" USER usuario USING clave
CONNECT TO "smarmotech" AS "MARMOTECH" USER usuario USING clave
CALL veprmt112()
END MAIN
FUNCTION veprmt112()
OPEN WINDOW w1 WITH FORM 'vefmwd112'
CALL fgl_settitle("Gestion tasa diaria")
CALL buscarDatos() RETURNING Dtasas
DIALOG ATTRIBUTE(UNBUFFERED)
DISPLAY ARRAY Dtasas TO Drecord.*
ON ACTION agregar
ATTRIBUTES(TEXT = "Agregar", IMAGE = "fa-address-book-o")
INITIALIZE tasas.tasa, tasas.ventas TO NULL
LET tasas.fecha = CURRENT YEAR TO DAY
INPUT BY NAME tasas.* ATTRIBUTES(WITHOUT DEFAULTS)
BEFORE FIELD fecha
NEXT FIELD tasa --Para que al agregar la tasa del día
--No se pueda modificar la fecha actual
AFTER INPUT
CALL Save()
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 Dtasas
IF tasas.fecha
< CURRENT YEAR TO DAY THEN --si la fecha del registro
--seleccionado es previa a
DISPLAY BY NAME tasas.* --la fecha actual entonces
--No se puede modificar
ELSE
INPUT BY NAME tasas.* ATTRIBUTES(WITHOUT DEFAULTS)
AFTER INPUT
BEGIN WORK
UPDATE vetb00112
SET tasa = tasas.tasa,
ventas = tasas.ventas,
us_mod = usuario,
fech_mod = GETDATE()
WHERE vetb00112.idTasa = tasas.idTasa
INSERT INTO vetb00112_log(
idTasa,
fecha,
tasa,
ventas,
us_crea,
fech_crea,
us_mod,
fech_mod,
Mov)
VALUES(tasas.idTasa,
tasas.fecha,
tasas.tasa,
tasas.ventas,
tasas.us_crea,
tasas.fech_crea,
usuario,
GETDATE(),
'Updated')
SET CONNECTION "EXTERIOR"
UPDATE vetb00060
SET tasa = Tasas.tasa
WHERE ventas = tasas.ventas
SET CONNECTION "MARMOTECH"
UPDATE vetb00061
SET tasa = Tasas.tasa
WHERE ventas = tasas.ventas
COMMIT WORK
CALL msg(13)
CALL buscarDatos() RETURNING Dtasas
ON ACTION CANCEL
ATTRIBUTES(TEXT = "Salir", IMAGE = "exit")
CALL msg(2)
EXIT INPUT
ON ACTION Eliminar
ATTRIBUTES(TEXT = "Eliminar", IMAGE = "delete")
LET answer =
fgl_winquestion(
"Eliminar registro",
"ESTA SEGURO QUE DESEA ELIMINAR ESTE REGISTRO?",
"YES",
"YES|NO",
"QUESTION",
0)
IF answer = 'YES' THEN
BEGIN WORK
INSERT INTO vetb00112_log(
idTasa,
fecha,
tasa,
ventas,
us_crea,
fech_crea,
us_mod,
fech_mod,
Mov)
VALUES(tasas.idTasa,
tasas.fecha,
tasas.tasa,
tasas.ventas,
tasas.us_crea,
tasas.fech_crea,
usuario,
GETDATE(),
'Deleted')
DELETE FROM vetb00112
WHERE idTasa = tasas.idTasa
COMMIT WORK
CALL msg(39)
INITIALIZE Dtasas TO NULL
CALL buscarDatos() RETURNING Dtasas
EXIT INPUT
ELSE
CALL msg(2)
END IF
END INPUT
END IF
END DISPLAY
END DIALOG
END FUNCTION
FUNCTION buscarDatos() --Obteniendo datos para el array de Tasas
DEFINE idx INT
DECLARE buscar CURSOR FOR
SELECT a.idTasa,
a.fecha,
a.tasa,
'(' + CAST(a.ventas AS CHAR(1)) + ')' + ' ' + rtrim(b.descripcion),
a.us_crea,
a.fech_crea
FROM vetb00112 a LEFT JOIN vetb00061 b ON a.ventas = b.ventas
LET idx = 1
FOREACH buscar INTO Dtasas[idx].*
LET idx = idx + 1
END FOREACH
DECLARE buscar2 CURSOR FOR SELECT idTasa, ventas FROM vetb00112
LET idx = 1
FOREACH buscar2 INTO ventasCont[idx].*
LET idx = idx + 1
END FOREACH
RETURN Dtasas
END FUNCTION
FUNCTION getdata(i INT) --Obteniendo los datos de la tasa seleccionada
IF i = 0 THEN
INITIALIZE tasas.* TO NULL
RETURN
END IF
SELECT idTasa, fecha, tasa, ventas, us_crea, fech_crea
INTO tasas.*
FROM vetb00112
WHERE vetb00112.idTasa = Dtasas[i].idTasa
END FUNCTION
FUNCTION load_cb (cb)
DEFINE
cb ui.ComboBox,
cb_ventas SMALLINT,
cb_desc VARCHAR(40)
CALL cb.clear()
DECLARE buscar3 CURSOR FOR
SELECT ventas, '(' + CAST(ventas AS CHAR(1)) + ')' + ' ' + rtrim(descripcion) FROM vetb00061
WHENEVER ERROR CONTINUE
FOREACH buscar3 INTO cb_ventas, cb_desc
WHENEVER ERROR STOP
IF SQLCA.SQLCODE = 0 THEN
CALL cb.addItem(cb_ventas, cb_desc)
END IF
END FOREACH
END FUNCTION
FUNCTION Save()
DEFINE i INT
DEFINE flag BOOLEAN
LET flag = TRUE
FOR i = 1 TO Dtasas.getLength()
IF tasas.fecha = Dtasas[i].fecha THEN
IF tasas.ventas = ventasCont[i].ventas THEN
LET flag = FALSE
END IF
END IF
END FOR
IF flag THEN
BEGIN WORK
INSERT INTO vetb00112(
fecha, tasa, ventas, us_crea, fech_crea)
VALUES(tasas.fecha, tasas.tasa, tasas.ventas, usuario, GETDATE())
INSERT INTO vetb00112_log(
fecha, tasa, ventas, us_crea, fech_crea, Mov)
VALUES(tasas.fecha,
tasas.tasa,
tasas.ventas,
usuario,
GETDATE(),
'Inserted')
SET CONNECTION "EXTERIOR"
UPDATE vetb00060 SET tasa = tasas.tasa WHERE ventas = tasas.ventas
SET CONNECTION "MARMOTECH"
UPDATE vetb00061 SET tasa = tasas.tasa WHERE ventas = tasas.ventas
COMMIT WORK
CALL msg(1)
CALL buscarDatos() RETURNING Dtasas
ELSE
CALL msg(12)
END IF
END FUNCTION