Files
MBS/PROYECTO/codir/coprmt010.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

232 lines
6.0 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : COPRMT010
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Paises
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : AGOSTO 1997
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
-------------------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
MAIN
DEFER INTERRUPT
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 coprmt010()
END MAIN
FUNCTION coprmt010()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 24
OPEN FORM cofmmt010 FROM "cofmmt010"
DISPLAY FORM cofmmt010
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Delete> Cancela Operacion"
CLEAR FORM
LET int_flag = false
CALL copcad010()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
LET int_flag = false
CALL copcmf010()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION copcad010()
WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME paises.*
## Verifica que el pais exista en el catalogo de paises. Si existe,
## entonces despliega los datos del registro existente.
BEFORE FIELD cod_pais
NEXT FIELD nom_pais
AFTER FIELD nom_pais
IF paises.nom_pais IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_pais
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF paises.nom_pais IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_pais
ELSE
SELECT MAX(a.cod_pais) INTO paises.cod_pais
FROM cotb00018 a
IF paises.cod_pais IS NULL THEN
LET paises.cod_pais = 0
END IF
LET paises.cod_pais= paises.cod_pais + 1
DISPLAY BY NAME paises.cod_pais
INSERT INTO cotb00018 VALUES (paises.cod_pais,
paises.nom_pais, null,SUSER_SNAME(), GETDATE(), null, null)
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
LET paises.cod_pais = NULL
LET paises.nom_pais = NULL
NEXT FIELD cod_pais
END IF
END INPUT
END FUNCTION
FUNCTION copcmf010()
WHENEVER ERROR CONTINUE
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON cotb00018.* FROM cotb00018.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = "SELECT UNIQUE * FROM cotb00018 where ",
" status_t is null and ",
criterio clipped,
" ORDER BY 1"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
FETCH FIRST datos INTO paises.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
DISPLAY BY NAME paises.*
MENU "OPCIONES"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO paises.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME paises.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO paises.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME paises.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO paises.*
DISPLAY BY NAME paises.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO paises.*
DISPLAY BY NAME paises.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
IF paises.status_t = "E" THEN
LET numero_msg = 36
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME paises.nom_pais,
paises.us_crea,
paises.fech_crea,
paises.us_mod,
paises.fech_mod WITHOUT DEFAULTS
AFTER FIELD nom_pais
IF paises.nom_pais IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nom_pais
END IF
AFTER INPUT
## Verifica si el usuario presiono la tecla <Delete>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
UPDATE cotb00018 SET nom_pais = paises.nom_pais,
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE cod_pais = paises.cod_pais
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE cotb00018 SET status_t = "E"
WHERE cod_pais = paises.cod_pais
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION