- 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 noprmt007 en mbsERP.4pw usando nofmmt007.4fd (el .per
carece de departamento_afecta, num_trx, sueldo_act y los campos
titulo_dep_act/titulo_dep_afecta que usa el programa). El .4gl
compilo limpio sin cambios de codigo.
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>
- Registrar coprrp007 en mbsERP.4pw, usando cofmrp007.4fd (el .per
no define el combo de departamento que requiere busca_departamento())
- Enlazar la libreria FUNCIONES_IN (ya contiene departamento.4gl) en
vez de duplicar el archivo, evitando conflicto de salida .42m
- Agregar guarda NULL en departamento.4gl: ui.combobox.forname()
puede no encontrar el combo durante el CONSTRUCT y causaba
"Null pointer exception" al llamar .clear()
- Sustituir seleccionarsalida()/configureoutput() (no definidas,
API fgl_report_* no disponible) por om.XmlWriter.createFileWriter()
hacia FGLSPOOL
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar coprrp019 en mbsERP.4pw
- Agregar CONNECT TO/ARG_VAL faltante en MAIN (el programa hacia
consultas SQL sin haberse conectado nunca a la base de datos)
- Sustituir seleccionarsalida()/configureoutput() (no definidas,
API fgl_report_* no disponible) por om.XmlWriter.createFileWriter()
hacia FGLSPOOL
- Corregir typo "database marmotech" -> "database smarmotech" en
cofmrp019.per
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
El Application node de coprmt009 no tenia la variable de entorno
FGLSPOOL configurada (a diferencia de coprrp001/coprrp004/coprmt025).
FGL_GETENV("FGLSPOOL") devolvia NULL, el handler de XmlWriter en
orden() (coprorden.4gl) nunca se creaba, y "Imprime" fallaba
silenciosamente sin generar el reporte ni mostrar error.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar coprrp004 (usando cofmrp004.4fd, el .per carece del
campo estado) en mbsERP.4pw
- Sustituir seleccionarsalida()/configureoutput() (no definidas en
este programa, misma API fgl_report_* no disponible) por
om.XmlWriter.createFileWriter() hacia FGLSPOOL
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
El CONSTRUCT del criterio de busqueda y un DISPLAY BY NAME en escoge()
referenciaban cotb00014.bodega/ordenes.bodega, que no existe como campo
visible en cofmmt009 (combo oculto, ya excluido en el INPUT BY NAME de
copcad009). Causaba "FORMS statement error -1102: Field (bodega) not
found in form" al usar Buscar Ordenes de Compras.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar coprrp001/cofmrp001 en mbsERP.4pw
- Sustituir API fgl_report_* no disponible por XmlWriter en coprrp001.4gl
- Ampliar cs_ordena.codigo a CHAR(20) en coprgb000.4gl
- Corregir mascaras PICTURE de codigo en coprcs009.4gl
- Ampliar campo c1 en cofmcs009.per para igualar el ancho de codigo
- Corregir typo de base de datos en cofmwd016.per
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- 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>
- coprmt001 (Suplidores): agregar campos faltantes (tipo_doc,rnc,cuenta_no)
al RECORD interno de ApiMaintainC() en api_test.4gl, y unificar la
aridad de RETURNING en las 3 llamadas (POST/PATCH/DELETE) - el
enlazador exige el mismo numero de valores de retorno en todo el modulo.
- coprmt009 (Ordenes de Compra): reemplazar fgl_report_loadCurrentSettings/
selectDevice/selectPreview/commitCurrentSettings (no disponibles en este
FGL) por om.XmlWriter.createFileWriter en coprorden.4gl; agregar
verificacion defensiva en lugarentrega.4gl (ui.combobox.forname puede
devolver NULL si el formulario actual no tiene el combo "bodega"); quitar
"ordenes.bodega" de los INPUT BY NAME (campo oculto, no se puede enlazar).
Pendiente: probar el flujo completo de creacion de orden (se corto por
una caida de conexion transitoria durante la prueba).
- coprmt016 (Terminos de Pago): CRUD simple, sin cambios de codigo.
- mbsERP.4pw: crear modulo COMPRAS (estaba vacio) con librerias
FUNCIONES_CO y FORMULARIOS_CO, y registrar los 3 programas.
- otrodir/smarmotech.sch: diccionario de esquema completo (antes faltaba
en este directorio, causaba fallos de link en api_test.4gl).
- .gitignore: excluir logs de STARTLOG() (bin/*.TXT) y archivos .err de
compilacion.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- cpprrp011: agregar INTO explicito a SELECT de validacion de referencia
duplicada, y lineas de diagnostico temporales (pendiente: el campo ref
sigue llegando NULL al INSERT en cgtb00004, falta investigar mas).
- cpprrp017: agregar bloque MAIN faltante, quitar CALL PANTALLA() redundante,
cambiar rutas hardcodeadas C:\archivo y %USPRINT% (sin permisos/no
definida) por FGLSPOOL, y reemplazar a.rowid (pseudo-columna de Informix
inexistente en SQL Server) por ROW_NUMBER() OVER(...).
- cpfmrp017.per: corregir typo "database marmotech" -> "database smarmotech"
que rompia la resolucion del esquema.
- mbsERP.4pw: registrar cpprrp011 y cpprrp017 con sus dependencias y
configuracion de prueba.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- cpprgb000/msgrp000: restaurar getPreviewDevice con case correcto
(ui.Interface.frontCall) y dejar configureOutput como stub, ya que la
API fgl_report_* no existe en este FGL 6.00.01.
- cpprrp002/003/004: sustituir configureoutput()/handler roto por
om.XmlWriter.createFileWriter escribiendo a FGLSPOOL, usando STRING
para la ruta (CHAR(80) truncaba la ruta larga del proyecto).
- cpfmrp002.per: agregar campo faltante "Salida" (r_output) que el
programa ya esperaba.
- mbsERP.4pw: registrar cpprrp002/003/004 con sus dependencias,
entorno FGLSPOOL y configuracion de prueba.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Los archivos en PROYECTO/spool/ son salida temporal generada al
ejecutar reportes (cpprrp001), no codigo fuente.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>