260 lines
7.3 KiB
Plaintext
260 lines
7.3 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : COPRMT016
|
|
OBJETIVO : Capturar, Modificar, Eliminar registros de la
|
|
Tabla de Terminos de Pago
|
|
PROGRAMADOR : Juan Soto (1997)
|
|
REESTRUCTURADO : Ing. Elvis Garcia (patron acprmt001)
|
|
FECHA REALIZACION : Agosto 1997
|
|
DIRECTOR PROYECTO : Jose Alfredo Paulino Alejo
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
|
|
IMPORT FGL fgldialog
|
|
|
|
GLOBALS "coprgb000.4gl"
|
|
|
|
-- Listado del tab 1
|
|
DEFINE DisArray DYNAMIC ARRAY OF RECORD
|
|
term_sp LIKE cotb00024.term_sp,
|
|
dias INT,
|
|
descrip_term STRING,
|
|
descrip_ting STRING
|
|
END RECORD
|
|
|
|
DEFINE answer STRING
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("COPRMT16.TXT")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
|
|
CONNECT TO "smarmotech" USER usuarios USING clave
|
|
|
|
CALL coprmt016()
|
|
END MAIN
|
|
|
|
FUNCTION coprmt016()
|
|
|
|
OPEN WINDOW w1 WITH FORM "cofmmt016"
|
|
CALL fgl_settitle("Terminos de Pago")
|
|
|
|
CALL copcad016()
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
DISPLAY ARRAY DisArray TO Tabla.*
|
|
|
|
ON ACTION refresh
|
|
INITIALIZE pagos.* TO NULL
|
|
CALL copcad016()
|
|
|
|
ON ACTION Adicionar
|
|
INITIALIZE pagos.* TO NULL
|
|
LET pagos.us_crea = usuarios
|
|
LET pagos.fech_crea = CURRENT YEAR TO DAY
|
|
|
|
INPUT BY NAME pagos.term_sp, pagos.descrip_term, pagos.descrip_ting
|
|
ATTRIBUTES(UNBUFFERED, WITHOUT DEFAULTS)
|
|
|
|
AFTER FIELD term_sp
|
|
IF pagos.term_sp IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD term_sp
|
|
END IF
|
|
IF existe_termino(pagos.term_sp) THEN
|
|
CALL msg(12) -- ya existe
|
|
NEXT FIELD term_sp
|
|
END IF
|
|
|
|
AFTER FIELD descrip_term
|
|
IF pagos.descrip_term IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD descrip_term
|
|
END IF
|
|
|
|
AFTER FIELD descrip_ting
|
|
IF pagos.descrip_ting IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD descrip_ting
|
|
END IF
|
|
|
|
ON ACTION ACCEPT
|
|
CALL insertData()
|
|
CALL copcad016()
|
|
EXIT INPUT
|
|
|
|
ON ACTION CANCEL
|
|
CALL msg(2)
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
ON ACTION Modificar
|
|
-- el registro ya viene cargado en pagos.* por BEFORE ROW
|
|
INPUT BY NAME pagos.descrip_term, pagos.descrip_ting
|
|
ATTRIBUTES(UNBUFFERED, WITHOUT DEFAULTS)
|
|
|
|
AFTER FIELD descrip_term
|
|
IF pagos.descrip_term IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD descrip_term
|
|
END IF
|
|
|
|
AFTER FIELD descrip_ting
|
|
IF pagos.descrip_ting IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD descrip_ting
|
|
END IF
|
|
|
|
ON ACTION ACCEPT
|
|
CALL updateData(1)
|
|
CALL copcad016()
|
|
EXIT INPUT
|
|
|
|
ON ACTION CANCEL
|
|
CALL msg(2)
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
ON ACTION Eliminar
|
|
IF fgl_winquestion(
|
|
"ELIMINAR REGISTRO",
|
|
"Esta seguro/a que desea eliminar este registro? ",
|
|
"yes", "yes|no", "question", 0) = "yes" THEN
|
|
CALL updateData(2)
|
|
CALL copcad016()
|
|
ELSE
|
|
CALL msg(2)
|
|
END IF
|
|
|
|
ON ACTION Salir
|
|
EXIT PROGRAM
|
|
|
|
BEFORE ROW
|
|
IF DisArray.getLength() > 0 THEN
|
|
CALL getdata(arr_curr())
|
|
DISPLAY BY NAME pagos.*
|
|
ELSE
|
|
INITIALIZE pagos.* TO NULL
|
|
DISPLAY BY NAME pagos.*
|
|
END IF
|
|
|
|
END DISPLAY
|
|
|
|
END DIALOG
|
|
|
|
CLOSE WINDOW w1
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION copcad016()
|
|
DEFINE i INT
|
|
CALL DisArray.clear()
|
|
LET i = 1
|
|
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT term_sp,dias, descrip_term, descrip_ting
|
|
FROM cotb00024
|
|
WHERE status_t IS NULL
|
|
ORDER BY term_sp
|
|
|
|
FOREACH buscar INTO DisArray[i].*
|
|
LET i = i + 1
|
|
END FOREACH
|
|
END FUNCTION
|
|
|
|
|
|
FUNCTION getdata(idx INT) -- Cargar detalle del registro seleccionado
|
|
|
|
INITIALIZE pagos.* TO NULL
|
|
SELECT * INTO pagos.* FROM cotb00024
|
|
WHERE term_sp = DisArray[idx].term_sp
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION existe_termino(p_term)
|
|
|
|
DEFINE p_term LIKE cotb00024.term_sp
|
|
DEFINE n INT
|
|
|
|
SELECT COUNT(*) INTO n FROM cotb00024
|
|
WHERE term_sp = p_term
|
|
|
|
RETURN (n > 0)
|
|
END FUNCTION
|
|
|
|
FUNCTION insertData()
|
|
|
|
LET pagos.fech_crea = CURRENT YEAR TO FRACTION
|
|
|
|
BEGIN WORK
|
|
|
|
INSERT INTO cotb00024
|
|
VALUES (pagos.term_sp,
|
|
pagos.descrip_term,
|
|
pagos.descrip_ting,
|
|
NULL, -- status_t
|
|
usuarios, -- us_crea
|
|
pagos.fech_crea, -- fech_crea
|
|
NULL, -- us_mod
|
|
NULL) -- fech_mod
|
|
|
|
|
|
CALL integridad()
|
|
|
|
IF SQLCA.SQLCODE < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1663)
|
|
ELSE
|
|
COMMIT WORK
|
|
CALL msg(1)
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION updateData(caso INT)
|
|
|
|
CASE caso
|
|
|
|
WHEN 1
|
|
BEGIN WORK
|
|
UPDATE cotb00024
|
|
SET descrip_term = pagos.descrip_term,
|
|
descrip_ting = pagos.descrip_ting,
|
|
us_mod = usuarios,
|
|
fech_mod = CURRENT YEAR TO FRACTION
|
|
WHERE term_sp = pagos.term_sp
|
|
|
|
IF SQLCA.SQLCODE < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1663)
|
|
ELSE
|
|
COMMIT WORK
|
|
CALL msg(13)
|
|
END IF
|
|
|
|
WHEN 2
|
|
BEGIN WORK
|
|
UPDATE cotb00024
|
|
SET status_t = 'E',
|
|
us_mod = usuarios,
|
|
fech_mod = CURRENT YEAR TO FRACTION
|
|
WHERE term_sp = pagos.term_sp
|
|
|
|
IF SQLCA.SQLCODE < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1663)
|
|
ELSE
|
|
COMMIT WORK
|
|
CALL msg(39)
|
|
END IF
|
|
|
|
OTHERWISE
|
|
DISPLAY "updateData: caso no contemplado"
|
|
|
|
END CASE
|
|
|
|
END FUNCTION
|