Compare commits

...
5 Commits
Author SHA1 Message Date
Abel López 66a57b4b3c Merge branch 'main' of https://git.fulldetord.com/jsoto/mbs 2026-09-25 16:46:21 -04:00
Abel LópezandClaude Sonnet 5 c141af53f2 Registra noprcs002 (Consulta Movimiento por Nomina)
Se agrega noprcs002 al proyecto usando nofmcs002.per. Es un programa
de solo consulta (sin INSERT/UPDATE/DELETE).

Probada busqueda inicial, Ver (detalle de movimientos de un periodo,
incluyendo scroll por teclado para ver mas de 4 filas) y navegacion
Siguiente sobre empleado 110, periodo 2320/Q. Monto Pagado verificado
contra SUM(valor) en BD.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-25 16:33:40 -04:00
Abel LópezandClaude Sonnet 5 750b9a6bcf 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 <noreply@anthropic.com>
2026-09-25 12:30:28 -04:00
Abel LópezandClaude Sonnet 5 303a722875 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 <noreply@anthropic.com>
2026-09-25 11:48:21 -04:00
Abel LópezandClaude Sonnet 5 58909014ab 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 <noreply@anthropic.com>
2026-09-25 10:11:49 -04:00
6 changed files with 43 additions and 14 deletions
+2 -2
View File
@@ -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) ---
+20 -3
View File
@@ -480,6 +480,10 @@
<File filePath="nodir/nofmmt016.per"/>
<File filePath="nodir/nofmmt018.per"/>
<File filePath="nodir/nofmmt019.per"/>
<File filePath="nodir/nofmmt023.4fd"/>
<File filePath="nodir/nofmmt024.per"/>
<File filePath="nodir/nofmmt025.4fd"/>
<File filePath="nodir/nofmcs002.per"/>
</Library>
<Library binaryName="FUNCIONES_NO" id="-306412216" label="FUNCIONES_NO">
<File filePath="nodir/noprgb000.4gl"/>
@@ -522,6 +526,22 @@
<Configuration commandLineArguments="alopez Lopez2023" id="-700000062" label="Configuration"/>
<File filePath="nodir/noprmt019.4gl"/>
</Application>
<Application binaryName="noprmt023" dependencies="-1026233879,-764824792,-306412216,-335228674" environment="file:FGLPROFILE=$(ProjectDir)/config/fglprofile" id="-700000063" label="noprmt023">
<Configuration commandLineArguments="alopez Lopez2023" id="-700000064" label="Configuration"/>
<File filePath="nodir/noprmt023.4gl"/>
</Application>
<Application binaryName="noprmt024" dependencies="-1026233879,-764824792,-306412216,-335228674" id="-700000065" label="noprmt024">
<Configuration commandLineArguments="alopez Lopez2023" id="-700000066" label="Configuration"/>
<File filePath="nodir/noprmt024.4gl"/>
</Application>
<Application binaryName="noprmt025" dependencies="-1026233879,-764824792,-306412216,-335228674" id="-700000067" label="noprmt025">
<Configuration commandLineArguments="alopez Lopez2023" id="-700000068" label="Configuration"/>
<File filePath="nodir/noprmt025.4gl"/>
</Application>
<Application binaryName="noprcs002" dependencies="-1026233879,-764824792,-306412216,-335228674" id="-700000069" label="noprcs002">
<Configuration commandLineArguments="alopez Lopez2023" id="-700000070" label="Configuration"/>
<File filePath="nodir/noprcs002.4gl"/>
</Application>
</Group>
<Group id="1667448785" label="PRODUCTOS TERMINADOS">
<Library binaryName="FORMULARIOS_IP" dependencies="-1026233879" id="-1826025351" label="FORMULARIOS_IP">
@@ -640,17 +660,14 @@
<Application binaryName="ipprrp002" dependencies="1763548104,-1026233879,-764824792" externalDependencies="libgre.42x" id="-960000017" label="ipprrp002">
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000017" label="Configuration"/>
<File compilerOptions="--build-rdd" filePath="ipdir/ipprrp002.4gl"/>
<File filePath="ipdir/ipfmrp002.4fd"/>
</Application>
<Application binaryName="ipprrp002_1" dependencies="1763548104,-1026233879,-764824792" externalDependencies="libgre.42x" id="-960000018" label="ipprrp002_1">
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000018" label="Configuration"/>
<File compilerOptions="--build-rdd" filePath="ipdir/ipprrp002_1.4gl"/>
<File filePath="ipdir/ipfmrp002_1.4fd"/>
</Application>
<Application binaryName="ipprrp052" dependencies="1763548104,-1026233879,-764824792" externalDependencies="libgre.42x" id="-960000019" label="ipprrp052">
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000019" label="Configuration"/>
<File compilerOptions="--build-rdd" filePath="ipdir/ipprrp052.4gl"/>
<File filePath="ipdir/ipfmrp052.4fd"/>
</Application>
<Application binaryName="ipprrp050" dependencies="1763548104,-1026233879,-764824792,-1423229125" externalDependencies="libgre.42x" id="-960000020" label="ipprrp050">
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000020" label="Configuration"/>
+1 -1
View File
@@ -33,7 +33,7 @@
<Label posX="40" posY="1" text="Monto Excento"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="monto_excento" columnCount="" fieldId="3" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="12" name="notb00023.monto_excento" posX="55" posY="1" precisionDecimal="12" required="true" rowCount="" scaleDecimal="2" sqlTabName="notb00023" sqlType="DECIMAL" stepX="" stepY="" tabIndex="3" table_alias_name="" widget="Edit"/>
<Label posX="12" posY="2" text="Fecha"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fecha" columnCount="" fieldId="2" gridHeight="1" gridWidth="10" name="fecha" posX="20" posY="2" rowCount="" sqlTabName="formonly" stepX="" stepY="" tabIndex="4" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fecha" columnCount="" fieldId="2" format="dd/mm/yyyy" gridHeight="1" gridWidth="10" name="fecha" posX="20" posY="2" rowCount="" sqlTabName="formonly" stepX="" stepY="" tabIndex="4" table_alias_name="" widget="Edit"/>
<Label posX="49" posY="2" text="15 %"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="porc_15" columnCount="" fieldId="4" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="12" name="notb00023.porc_15" posX="55" posY="2" precisionDecimal="12" required="true" rowCount="" scaleDecimal="2" sqlTabName="notb00023" sqlType="DECIMAL" stepX="" stepY="" tabIndex="5" table_alias_name="" widget="Edit"/>
<Label posX="49" posY="3" text="20 %"/>
+1 -1
View File
@@ -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
+12 -1
View File
@@ -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
+7 -6
View File
@@ -7,8 +7,9 @@
FECHA REALIZACION : Friday, 15 December, 2000
------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
GLOBALS "noprgb000.4gl"
DEFINE relacion RECORD LIKE notb00023.*
DEFINE existe_tipo INTEGER
MAIN
DEFER INTERRUPT
@@ -80,16 +81,16 @@ FUNCTION nopcad023()
NEXT FIELD tipo_emp
END IF
SELECT a.*
SELECT COUNT(*) INTO existe_tipo
FROM notb00010 a
WHERE a.tipo_emp = relacion.tipo_emp
AND a.status_t IS NULL
AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
IF existe_tipo = 0 THEN
LET numero_msg = 2
CALL msg(numero_msg)
NEXT FIELD tipo_emp
END IF
END IF
IF relacion.tipo_emp = "Q" AND
relacion.numero_nomina <= 24 THEN
@@ -192,7 +193,7 @@ FUNCTION nopcmf023()
RETURN
END IF
LET SELEC = "SELECT a.numero_nomina,a.tipo_emp,convert(varchar(10),a.fecha,101),a.monto_excento,",
LET SELEC = "SELECT a.numero_nomina,a.tipo_emp,a.fecha,a.monto_excento,",
"a.porc_15,a.porc_20,a.porc_25,a.monto_ars,a.monto_afp FROM notb00023 a where ",
" a.status_t is null and ",
criterio clipped