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>
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>
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>
Se agrega noprmt018 al proyecto usando nofmmt018.per.
Se corrige conversion CONVERT(CHAR,fecha,103) hacia variable DATE en
nopcmf018(), mismo patron de error -1205 "Invalid month in date"
encontrado en otros programas de nomina.
Probado ciclo completo: Adicionar, Consultar-modificar/Buscar,
Escoger y eLiminar sobre empleado 4124 (cod_mov=12).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Se agrega noprmt011 (Control Prestamos y Facturas) al proyecto usando
nofmmt011.4fd (nofmmt011.per no tenia el campo valor_cuota requerido).
Se corrige conversion CONVERT(CHAR,fecha,103) hacia variable DATE en
nopcmf011(), que causaba error -1205 "Invalid month in date" al
navegar con Siguiente/Anterior cuando el dia del mes era mayor a 12.
Se corrige eLiminar: el DELETE FROM notb00003 era incondicional y
borraba la cuota compartida del empleado+movimiento aunque quedaran
otros documentos activos en notb00011 dependiendo de ella. Ahora solo
se borra si no quedan documentos activos para ese empleado+movimiento.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
valor por defecto
El checkbox "GENERO NOMINA ACTIVOS" (opt1) y los demas checkboxes de
la pantalla inicial no entregaban su defaultValue a la variable si el
usuario no los tocaba explicitamente, quedando en "N". Como el codigo
hace "IF opt1 != 'S' THEN RETURN" sin ningun mensaje, el programa
generaba 0 registros y se cerraba en silencio pareciendo exitoso.
Se inicializan opt1/opt2/opt3/regalia/vacaciones explicitamente antes
del INPUT BY NAME para que coincidan con los defaults del formulario,
sin depender de esa interaccion.
Se retiro tambien la funcion debuglog() (y su entrada FGLSPOOL) usada
solo para diagnosticar este problema.
Verificado generando la nomina 2701/Q completa: 4798 registros para
628 empleados, con calculo correcto de sueldo quincenal (50% primera
quincena) y descuentos de TSS/ARS.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar noprmt008 en mbsERP.4pw junto con sus 3 formularios
(nofmmt008.4fd, nofmmt108.per, nofmmt208.per)
- Corregir bug en nofmmt008.4fd: el checkbox opt3 tenia colName="opt2"
duplicado por error de copiar/pegar, causando "Field (opt3) not
found in form"
- Quitar CONVERT(CHAR(10),...,103) en 5 SELECTs que alimentaban
variables DATE (mismo patron de bug ya visto en noprmt003):
causaba "-1205 Invalid month in date" de forma intermitente
- Agregar funcion debuglog() (escribe a archivo en FGLSPOOL) para
diagnosticar por que la generacion terminaba sin insertar ningun
registro; diagnostico aun en curso
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar noprmt020 en mbsERP.4pw
- Agregar MAIN (faltaba, el archivo era solo funciones para ser
llamadas desde el menu nomnmt000.4gl) y una funcion pantalla()
local para el encabezado
- Corregir typo "database marmotech" -> "smarmotech" en nofmmt021.per
NOTA: el usuario identifico este programa como "Calcular Horas
Extras", pero tanto el contenido del .4gl como su propio menu
(nomnmt000.4gl: "19-Porc. Accidente Trabajo noprmt020") indican que
en realidad es la maestra de % de Accidente de Trabajo. Build y
compilacion verificados, prueba funcional pendiente hasta confirmar
el programa correcto para "Calcular Horas Extras" (candidatos:
noprmt030.4gl, noprmt038.4gl, o los reportes noprrp007/011/018/026/034/035).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar noprmt001 en mbsERP.4pw (usa cofmmt001... nofmmt001.4fd,
el .per carece del grid smovimientos y los campos modifica/vacaciones)
- Reemplazar smarmotech.sch/.42d de nodir por la copia canonica ya
generada en MBS/DATABASE (orden de columnas correcto, incluye
telefonoCorporativo/numeroOficina/extension) en vez de regenerar
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar noprmt003 en mbsERP.4pw (FUNCIONES_NO: noprfu000.4gl,
nocarnet.4gl; FORMULARIOS_NO: nofmmt003.4fd); reutiliza
otrodir/departamentos.4gl ya presente en FUNCIONES
- Actualizar el diccionario de esquema smarmotech.sch: faltaban las
columnas telefonoCorporativo/numeroOficina/extension de adtb00003
(existen en la BD real pero no estaban en el diccionario, .42d se
regenera solo al recompilar); propagado a todos los directorios
- Desactivar el CONNECT TO "marmotech" AS "IFMX" (Informix ya no
existe, todo migro a SQL Server) y el INSERT duplicado hacia esa
conexion en el alta de empleados; sin esto el programa se colgaba
al iniciar
- Quitar CONVERT(...,103) de fechas en el SELECT/FETCH de empleados:
se convertian a texto dd/mm/yyyy y luego se reasignaban a variables
DATE, causando "-1205 Invalid month in date" con dias > 12
- Agregar BEFORE CONSTRUCT/END CONSTRUCT para poblar el combo de
Departamento en la busqueda (faltaba, quedaba vacio)
- Corregir foto de empleado que no se limpiaba al navegar
Siguiente/Anterior hacia un empleado sin foto
- nocarnet.4gl: sustituir fgl_report_* (API no disponible) por
om.XmlWriter.createFileWriter() hacia FGLSPOOL
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar noprmt002 en mbsERP.4pw junto con noprgb000.4gl
(FUNCIONES_NO), nofmmt002.per/nofmwd001.per (FORMULARIOS_NO) y
adfmwd004.per (FORMULARIOS_AD, compartido con ADMINISTRACION)
- Copiar el diccionario de esquema smarmotech.sch a nodir/addir
(faltaba, igual que en otros directorios ya corregidos)
- Corregir typo "database marmotech" -> "smarmotech" en nofmwd001.per
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>