From 58909014aba3e31672db28d522170797ed6412ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Fri, 25 Sep 2026 10:11:49 -0400 Subject: [PATCH 01/22] Registra noprmt023 (Maestra de Departamentos) y corrige bug de MaintainX Se agrega noprmt023 al proyecto usando nofmmt023.4fd. Este programa conecta a dos bases (smarmotech y marmotech/EXTERIOR via Informix legado) para sincronizar departamentos en ambas. Se agrega environment FGLPROFILE al Application para que resuelva la conexion dual via PROYECTO/config/fglprofile. Se corrige ese archivo: dbi.database.smarmotech.source apuntaba a un DSN "marmotech250s" que nunca se creo; se cambia al DSN real existente "marmotech18". Se corrige eLiminar: llamaba a la API real de MaintainX (DELETE) con solo validar que id_maintainx no fuera null, ignorando el checkbox "Enviar a MaintainX" (apicheck). Ahora requiere ambas condiciones. Probado ciclo completo (Adicionar, Buscar, Escoger, eLiminar, Departamentos Relacionados) verificando sincronizacion entre smarmotech y EXTERIOR. Co-Authored-By: Claude Sonnet 5 --- PROYECTO/config/fglprofile | 4 ++-- PROYECTO/mbsERP.4pw | 8 +++++--- PROYECTO/nodir/noprmt023.4gl | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/PROYECTO/config/fglprofile b/PROYECTO/config/fglprofile index 56e9925..2fe14c0 100644 --- a/PROYECTO/config/fglprofile +++ b/PROYECTO/config/fglprofile @@ -1,10 +1,10 @@ dbi.default.driver = "dbmsqt" dbi.database.mydatabase.source = "mydatabase.db" -# --- MBS ERP: conexion smarmotech -> .250/marmotech (DSN ODBC18 marmotech250s) --- +# --- MBS ERP: conexion smarmotech -> .250/marmotech (DSN ODBC18 marmotech18) --- # La autenticacion la provee el login (CONNECT ... USER usuario USING clave). # OJO: el runtime debe tener el driver dbmsnc (esta en fgl602, NO en el 6.00.01 de GST603). -dbi.database.smarmotech.source = "marmotech250s" +dbi.database.smarmotech.source = "marmotech18" dbi.database.smarmotech.driver = "dbmsnc" # --- MBS ERP: conexion marmotech -> .250/EXTERIOR (DSN ODBC18 marmotech) --- diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index 06451de..06259f9 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -480,6 +480,7 @@ + @@ -522,6 +523,10 @@ + + + + @@ -640,17 +645,14 @@ - - - diff --git a/PROYECTO/nodir/noprmt023.4gl b/PROYECTO/nodir/noprmt023.4gl index c42da61..414ff39 100644 --- a/PROYECTO/nodir/noprmt023.4gl +++ b/PROYECTO/nodir/noprmt023.4gl @@ -542,7 +542,7 @@ FUNCTION nopcmf023() ## AQUI SE ELIMINAN LOS REGISTROS COMMAND KEY("L") "eLiminar" - IF depto.id_maintainx IS NOT NULL THEN + IF apicheck AND depto.id_maintainx IS NOT NULL THEN CALL ApiMaintainD( 'DELETE', depto.id_maintainx, depto.*, usuarios) RETURNING answer From 303a722875b9690d3eaefd0e293ff40fb7e7f96c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Fri, 25 Sep 2026 11:48:21 -0400 Subject: [PATCH 02/22] Registra noprmt024 (Maestra de Puestos) y corrige duplicado en Nuevo Se agrega noprmt024 al proyecto usando nofmmt024.per. Se corrige adpcad023(): tras un INSERT exitoso el codigo hacia NEXT FIELD nom_puesto para permitir capturar otro puesto, pero sin limpiar los campos del registro anterior. Combinado con el orden real de tabulacion del formulario (nivel_sal/salario_min/salario_max quedan antes que cod_puesto_sirla en el orden de atributos, aunque visualmente aparecen despues), esto permitia disparar un segundo INSERT accidental con datos incompletos/residuales del registro previo. Se agrega CLEAR FORM y reset de los campos tras cada insercion exitosa, igual que en los demas programas de Nuevo ya corregidos. Probado ciclo completo: Nuevo (confirmado que ya no duplica), Buscar, Escoger y eLiminar sobre puesto de prueba. Co-Authored-By: Claude Sonnet 5 --- PROYECTO/mbsERP.4pw | 5 +++++ PROYECTO/nodir/noprmt024.4gl | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index 06259f9..9bf96a6 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -481,6 +481,7 @@ + @@ -527,6 +528,10 @@ + + + + diff --git a/PROYECTO/nodir/noprmt024.4gl b/PROYECTO/nodir/noprmt024.4gl index a707bec..992c6af 100644 --- a/PROYECTO/nodir/noprmt024.4gl +++ b/PROYECTO/nodir/noprmt024.4gl @@ -160,7 +160,18 @@ FUNCTION adpcad023() LET numero_msg = 1 CALL msg(numero_msg) - NEXT FIELD nom_puesto + CLEAR FORM + LET puesto.nom_puesto = NULL + LET puesto.otra_descripcion = NULL + LET puesto.funciones = NULL + LET puesto.funcion1 = NULL + LET puesto.nivel_sal = NULL + LET puesto.salario_min = NULL + LET puesto.salario_max = NULL + LET puesto.tipo_puesto = NULL + LET puesto.supervisor = NULL + LET puesto.cod_puesto_sirla = NULL + NEXT FIELD nom_puesto From 750b9a6bcf02488628cf6a671016e11c9b977003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Fri, 25 Sep 2026 12:30:28 -0400 Subject: [PATCH 03/22] Registra noprmt025 (Parametros ISR) y corrige tres bugs bloqueantes Se agrega noprmt025 al proyecto usando nofmmt025.4fd (tiene los campos monto_ars/monto_afp que faltan en el .per). Se corrigen tres bugs que impedian usar el programa: 1. nopcmf023(): CONVERT(varchar,fecha,101) hacia variable DATE, mismo patron de error -1205 "Invalid month in date" ya visto en otros programas. 2. nopcad023(): la validacion de tipo_emp contra notb00010 usaba un SELECT sin INTO/cursor (singleton select), que exige exactamente una fila. notb00010 es la tabla de periodos de nomina (un registro por periodo), con cientos de filas por tipo_emp, asi que esta validacion fallaba siempre con error -284 "A subquery has returned not exactly one row", bloqueando por completo la opcion Nuevo. Se cambia a SELECT COUNT(*) INTO existe_tipo. 3. nofmmt025.4fd: el campo fecha (Edit widget, formonly) no tenia format="dd/mm/yyyy", causando que Genero interpretara la fecha tecleada con el formato de fecha por defecto del sistema en vez del formato dominicano, dando "Invalid month in date" al capturar un dia mayor a 12 como mes. Probado ciclo completo: Nuevo, Buscar, Escoger y eLiminar sobre parametro de prueba (numero_nomina=26). Co-Authored-By: Claude Sonnet 5 --- PROYECTO/mbsERP.4pw | 5 +++++ PROYECTO/nodir/nofmmt025.4fd | 2 +- PROYECTO/nodir/noprmt025.4gl | 13 +++++++------ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index 9bf96a6..e8c2dac 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -482,6 +482,7 @@ + @@ -532,6 +533,10 @@ + + + + diff --git a/PROYECTO/nodir/nofmmt025.4fd b/PROYECTO/nodir/nofmmt025.4fd index 70985bd..7c13598 100644 --- a/PROYECTO/nodir/nofmmt025.4fd +++ b/PROYECTO/nodir/nofmmt025.4fd @@ -33,7 +33,7 @@ @@ -537,6 +538,10 @@ + + + + From c296da0151b8c8973c315a31eb2327bb0b7cd0f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Sat, 26 Sep 2026 09:45:52 -0400 Subject: [PATCH 05/22] Registra noprcs004 (Consulta Acumulado por Empleado) Se agrega noprcs004 al proyecto usando nofmcs004.4fd. Se agrega addir/adfunciones.4gl al Application ya que el programa llama a calcula_salarios() definida ahi (no en noprrp037.4gl, que tiene una funcion del mismo nombre pero con firma incompatible/uso de variables de otro programa). Se corrige conversion CONVERT(CHAR,fech_efec,103) hacia variable DATE en la consulta principal, mismo patron de error -1205 "Invalid month in date" ya visto en otros programas. Probada consulta principal (datos del empleado, fecha de entrada, salario promedio diario) y Ver (acumulado por movimiento), verificado contra BD sobre empleado 110. Co-Authored-By: Claude Sonnet 5 --- PROYECTO/mbsERP.4pw | 6 ++++++ PROYECTO/nodir/noprcs004.4gl | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index 048b4e6..4bad17e 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -484,6 +484,7 @@ + @@ -542,6 +543,11 @@ + + + + + diff --git a/PROYECTO/nodir/noprcs004.4gl b/PROYECTO/nodir/noprcs004.4gl index 6b84976..b24bba4 100644 --- a/PROYECTO/nodir/noprcs004.4gl +++ b/PROYECTO/nodir/noprcs004.4gl @@ -97,7 +97,7 @@ FUNCTION consulta4() LET selec = "SELECT DISTINCT a.tipo_emp,a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", - " b.nom1_emp,b.apell1_emp,c.nom_dpto,CONVERT(CHAR(10),b.fech_efec,103) ", + " b.nom1_emp,b.apell1_emp,c.nom_dpto,b.fech_efec ", "FROM notb00008 a,adtb00003 b,adtb00001 c ", "WHERE a.num_emp = b.num_emp ", "AND a.departamento = c.departamento ", From c1719d4b6e37e1d9b6c30a7fded78fa94ee73a07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Sat, 26 Sep 2026 10:36:47 -0400 Subject: [PATCH 06/22] Registra noprcs006 (Consulta Balance Por Empleado) Se agrega noprcs006 al proyecto usando nofmcs006.4fd, mas FUNCIONESREPORT (seleccionarsalida.4gl) y externalDependencies libgre.42x, requeridos para las funciones del motor de reportes (fgl_report_loadCurrentSettings, etc) que usa la opcion Imprimir. Probada consulta inicial, Ver (balance acumulado por movimiento) e Imprimir (vista previa de reporte), verificado contra BD sobre empleado 110, cod_mov=12 (PRESTAMO COOPMAR). Co-Authored-By: Claude Sonnet 5 --- PROYECTO/mbsERP.4pw | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index 4bad17e..b5bedd3 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -485,6 +485,7 @@ + @@ -548,6 +549,11 @@ + + + + + From 7e2f99b50e887dabb77a695439b70e49d36925c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Mon, 28 Sep 2026 10:09:33 -0400 Subject: [PATCH 07/22] Registra noprrp002 (Nomina de Pago) y corrige bugs de reporte PDF Se agrega noprrp002 al proyecto usando nofmrp002.4fd, mas vesalidaimpresora.4gl (selectOutput2) en la libreria compartida FUNCIONESREPORT, y externalDependencies libgre.42x para el motor de reportes. Se corrige databaseName="marmotech" invalido en nofmrp002.4fd (schema no registrado en el proyecto) por "smarmotech". Se corrige bug de tipo de dato: r_output estaba declarado SMALLINT en noprrp002.4gl, pero selectOutput2() devuelve un STRING ("PDF","SVG", "XLSX"). Ese desajuste impedia que fgl_report_selectDevice recibiera el dispositivo correcto, asi que elegir PDF no generaba un PDF real. Se cambia r_output a STRING. Probado reporte agrupado de nomina (vista previa en pantalla y exportacion a PDF real), verificado contra BD sobre empleado 110, periodo 2320/Q. Co-Authored-By: Claude Sonnet 5 --- PROYECTO/mbsERP.4pw | 7 +++++++ PROYECTO/nodir/nofmrp002.4fd | 2 +- PROYECTO/nodir/noprrp002.4gl | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index b5bedd3..e2def6e 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -143,6 +143,7 @@ + @@ -486,6 +487,7 @@ + @@ -554,6 +556,11 @@ + + + + + diff --git a/PROYECTO/nodir/nofmrp002.4fd b/PROYECTO/nodir/nofmrp002.4fd index c96a8b4..4dc83a0 100644 --- a/PROYECTO/nodir/nofmrp002.4fd +++ b/PROYECTO/nodir/nofmrp002.4fd @@ -1,5 +1,5 @@ - + diff --git a/PROYECTO/nodir/noprrp002.4gl b/PROYECTO/nodir/noprrp002.4gl index 68bd338..3e1f833 100644 --- a/PROYECTO/nodir/noprrp002.4gl +++ b/PROYECTO/nodir/noprrp002.4gl @@ -29,7 +29,7 @@ DEFINE idx INT, selec1 STRING, r_filename STRING, - r_output SMALLINT, + r_output STRING, preview SMALLINT, handler om.SaxDocumentHandler, varia CHAR(12) From c7442a777b36275cb6886bd7a888bc1b1c11b2e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Mon, 28 Sep 2026 10:48:04 -0400 Subject: [PATCH 08/22] Corrige ancho insuficiente del campo Numero de Nomina en noprrp002 El campo num_nomi en nofmrp002.4fd solo permitia 6 caracteres, pero existen numeros de nomina de 8 digitos en notb00010 (periodos codificados como fecha, ej. 27032021). Se amplia a 9 caracteres. Probado reporte con nomina 2118/Q (14 empleados en notb00008, de los cuales 12 pertenecen realmente al periodo segun el rango de fechas; los otros 2 son registros historicos de 2008/2015 con el mismo numero de nomina por coincidencia de datos antiguos, correctamente excluidos por el filtro de fecha del reporte). Co-Authored-By: Claude Sonnet 5 --- PROYECTO/nodir/nofmrp002.4fd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROYECTO/nodir/nofmrp002.4fd b/PROYECTO/nodir/nofmrp002.4fd index 4dc83a0..538ae19 100644 --- a/PROYECTO/nodir/nofmrp002.4fd +++ b/PROYECTO/nodir/nofmrp002.4fd @@ -14,7 +14,7 @@