- coprmt010 (Paises): corregir condicion invertida en "Escoger" que
bloqueaba editar registros activos y solo permitia editar los ya
eliminados (status_t != "E" -> = "E").
- coprmt016 (Terminos de Pago): usar el formulario .4fd (el .per no tenia
el grid "Tabla" que el codigo espera); agregar columna "dias" faltante
al INSERT (la tabla real tiene 9 columnas, el INSERT solo daba 8 valores
sin lista de columnas explicita).
- coprmt025 (Requisicion Compras): agregar funciones faltantes
(busca_departamento2 en depto.4gl, enviaemail en FUNCIONESEMAIL);
sincronizar el RECORD "data" y la aridad de RETURNING de ApiMaintainC
con el fix de api_test.4gl; reemplazar fgl_report_* (no disponible) por
om.XmlWriter en las 3 rutas de impresion.
- coprmt015 y coprcs005: sin cambios de codigo, solo registro en el
proyecto.
- mbsERP.4pw: registrar los 5 programas; investigar/configurar Java para
coprmt025 (FGLJVMPATH/JAVA_HOME/CLASSPATH apuntando a un JRE Temurin
8u504 local). Pendiente: el puente Java de esta instalacion de Genero
sigue fallando ("Can not create java VM") incluso con el ejemplo oficial
de FGL: parece un problema de la instalacion misma, no de version de
Java. Se sugirio reparar via MsiExec /f {3B1E10F3-FBCC-4737-8BDF-284359029D70}
(Four Js Genero BDL with Web Services 6.00.02), pendiente de ejecutar.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
270 lines
7.6 KiB
Plaintext
270 lines
7.6 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 (
|
|
term_sp,
|
|
descrip_term,
|
|
descrip_ting,
|
|
status_t,
|
|
us_crea,
|
|
fech_crea,
|
|
us_mod,
|
|
fech_mod,
|
|
dias)
|
|
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
|
|
NULL) -- dias (no se captura en esta pantalla)
|
|
|
|
|
|
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
|