Files
MBS/PROYECTO/codir/coprmt016.4gl
T
Abel LópezandClaude Sonnet 5 b05e858ac6 Añadir coprmt010, coprmt015, coprmt016, coprmt025 y coprcs005 (modulo COMPRAS)
- 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>
2026-08-27 16:18:51 -04:00

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