Se agrega noprrp039 al proyecto usando nofmrp039.4fd, reutilizando
FUNCIONESREPORT y libgre.42x.
Se corrige "AND and" duplicado (typo) en las 3 consultas dinamicas
del bloque tipoEmpleados=9 (TODOS los empleados), que producia un
error de sintaxis SQL y bloqueaba completamente esa opcion.
Se corrige CONVERT(CHAR,fech_efec,103) hacia variable DATE en las 5
consultas del programa, mismo patron de error -1205 "Invalid month
in date" ya visto en otros programas.
Se crea PROYECTO/bin/IMAGENES/EMPLEADOS (con .gitkeep), carpeta
faltante donde el programa exporta las fotos de empleados
(foto_empleado.writeFile); sin ella el reporte fallaba con error
-8087 al procesar cualquier empleado con foto guardada.
Probado con empleado especifico y con "TODOS" (activos+inactivos con
foto), verificado contra BD sobre departamento 1000.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Se agrega noprrp003 al proyecto usando nofmrp003.4fd, reutilizando
FUNCIONESREPORT y libgre.42x ya configurados para noprrp002.
Se corrige bug donde el combo "Departamento=TODOS" (valor NULL)
generaba via CONSTRUCT la condicion "e.departamento is null" en vez
de no filtrar, excluyendo a todos los empleados con departamento
asignado (confirmado con debug logging: solo empleados sin
departamento pasaban el filtro). Se agrega neutraliza_depto_null()
para neutralizar esa condicion especifica tras el CONSTRUCT.
Se corrige fila vacia sobrante al final del reporte (el FOREACH deja
un elemento extra en el arreglo dinamico; se agrega
inv.deleteElement(idx), igual que en noprrp002).
Probado con empleado especifico, todos los empleados y filtro por
departamento, verificado contra BD (94 registros totales, 12 para
CONTABILIDAD).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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 <noreply@anthropic.com>
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 <noreply@anthropic.com>
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 <noreply@anthropic.com>
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 <noreply@anthropic.com>
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>
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>
La regeneracion via 'Update Meta-schema' del commit anterior perdio 239
tablas que si existian en el esquema anterior (algunas reales, como
departamentos y dgii_rnc, no solo staging temporal), probablemente por
la opcion 'Ignore errors' de la extraccion o por permisos/timeout contra
la base real. Riesgo de romper la compilacion de otros programas del
equipo sin necesidad, y de todas formas no resolvio el bloqueo de
ipprrp052 (columna iptb00002.categoria). Se revierte para no arriesgar
el trabajo de otros mientras se investiga la causa real con Johnny.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar ipfmrp050.4fd en el proyecto (form not found al abrir).
- Agregar dependencia faltante FUNCIONESREPORT a ipprrp050 (no linkeaba,
llamaba seleccionarSalida() sin tener el modulo).
- Rescatar ipprrp050.4rp de un backup viejo (PROYECTOS/bin), no existia
en el repo.
Verificado con producto 29-668-1403-6952, bodega ALMACEN PUNTA CANA:
existencia 308.00, coincide con la BD. Cierre limpio con Cancel (usa el
mismo patron DIALOG/ON ACTION que ipprrp052, sin el bug de cierre
colgado de ipprrp002/ipprrp002_1).
Nota aparte (sin corregir, igual que ipprrp052): cuentaitems() nunca se
llama (comentado), variable cuenta sin inicializar para la barra de
progreso - inofensivo pero es codigo muerto.
Ademas: actualizar DATABASE/smarmotech.4db, smarmotech.sch y
PROYECTO/smarmotech.sch desde la BD real (.40.250) via Update Meta-schema
de Genero Studio. Se hizo intentando resolver el bloqueo de ipprrp052
(columna iptb00002.categoria no reconocida por el compilador) - el
esquema ya trae la columna correcta pero el compilador sigue sin
reconocerla incluso tras Rebuild All completo; ipprrp052 sigue
bloqueado, pendiente que Johnny revise el paso de regeneracion del
diccionario que nos falta.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- ipprrp002_1.4gl: envolver el flujo de captura/reporte en un WHILE,
mismo bug que ipprrp002 (el programa quedaba colgado tras generar el
reporte y habia que forzar el cierre; ahora Cancelar cierra limpio y
se puede volver a buscar sin cerrar el programa).
- ipfmrp002_1.4fd: agregar texto al <Form> ("CATALOGO PRODUCTOS CON
COSTOS"), la ventana no tenia titulo y mostraba "screen" por defecto.
Verificado con producto 29-668-1403-6952 (1 pagina, existencia 360.00,
costo 3,512.42, precio 7,379.02, coincide con la BD) y con el catalogo
completo sin filtro (mismo volumen que ipprrp002, generacion correcta
aunque lenta por las consultas adicionales que hace por fila).
Nota aparte (sin corregir): los campos "Origen" y "Lista Precios" en
pantalla no estan en el INPUT BY NAME ni se usan en el query (que trae
siempre ventas='1' y cod_lista=1 hardcodeados) - no seleccionables,
funcionalidad a medio conectar igual que "Anio" en ipprcs042.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Se agrega noprmt019 al proyecto usando nofmmt019.per. Probado cambio
de departamento sobre empleado 110 (1000 -> 2100 -> 1000), verificado
que se propaga a adtb00003 y a los movimientos fijos en notb00003.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Rescatar de un backup viejo (PROYECTOS/bin) los .4rp que faltaban en el
repo: ipprrp002.4rp, ipprrp002_1.4rp, ipprrp002_2.4rp e ipprrp052.4rp.
Sin ellos el reporte nunca podia generarse (fgl_report_loadCurrentSettings
fallaba y el programa hacia EXIT PROGRAM).
- Registrar en mbsERP.4pw los formularios ipfmrp002.4fd, ipfmrp002_1.4fd
e ipfmrp052.4fd, y los .4rp anteriores: existian en el repo pero nunca
se habian agregado al proyecto.
- ipprrp002.4gl: cambiar `cuenta` de SMALLINT a INTEGER, causaba
"Value too large to fit in a SMALLINT" al generar el catalogo completo
(43,796 productos sin filtro).
- ipprrp002.4gl: envolver el flujo de captura/reporte en un WHILE para
permitir buscar de nuevo sin cerrar el programa, y para que Cancelar
termine limpio (antes, al terminar de generar el reporte el programa
quedaba colgado y habia que forzar el cierre).
Verificado con producto 29-668-1403-6952 (1 pagina, ciclo buscar-reporte-
cerrar limpio) y catalogo completo sin filtro (43,796 productos, 1093
paginas, generacion correcta).
Nota aparte (sin corregir): sin filtro de codigo el programa genera el
catalogo completo (43,796 productos) sin ninguna advertencia; evaluar si
deberia exigir un filtro minimo. Campo "Anio" en pantalla sin uso en el
codigo. ipprrp002_1 e ipprrp052 tienen sus assets registrados pero aun
no se han probado funcionalmente.
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>
ipfmrp002.4fd e ipfmrp002_1.4fd existian en el repo pero nunca se habian
agregado a mbsERP.4pw, mismo patron visto en ipprcs004_1/ipprcs042.
Pendiente aparte: los reportes ipprrp002.4rp e ipprrp002_2.4rp (usados
por fgl_report_loadCurrentSettings) no existen en el repo ni en su
historial, el programa no puede completar la generacion del reporte
hasta que se consigan o se rehagan en Report Studio. Consultado con
Johnny, sin respuesta aun.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Se agrega noprmt016 al proyecto usando nofmmt016.per. Probado
Activar/Desactivar sobre empleado 110, verificado status_t en
adtb00003 en ambos sentidos.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar ipfmcs042.4fd en el proyecto, no estaba agregado a mbsERP.4pw
y el runtime daba "Form file not found" al abrir el programa.
- Quitar CONVERT(CHAR(10),b.fech_oc,103) en la busqueda de ordenes de
compra a proveedores, causaba "Invalid month in date" (-1205) igual
que en mercancia_transito.4gl/funciones_ip.4gl.
Verificado con producto 1-119-2-56 (272 ordenes de compra 2008-2026):
grilla de proveedores, inventarios y precios cargan correctamente.
Nota aparte (sin corregir): los campos "Almacen" y "Rank" del formulario
existen mas nunca se usan en el codigo, no filtran nada.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- mercancia_transito.4gl y funciones_ip.4gl: quitar CONVERT(...,103) al
traer fechas de SQL Server, causaba "Invalid month in date" (-1205) en
ambiente de pruebas por ambiguedad de formato dd/mm/yyyy vs mm/dd/yyyy.
- ipprcs004_1: agregar dependencia faltante FUNCIONES_PR (no linkeaba,
llamaba mercancia_transito/fechas_llegadas sin tener el modulo).
- Registrar en el proyecto tres formularios que existian en el repo pero
nunca se agregaron a mbsERP.4pw (ipfmwd017.4fd, almacenes.4fd,
cofmfu009.4fd), causaban "Form file not found" en los botones
Ordenes/Almacenes/Fecha Llegada.
Verificado botón por botón contra produccion (Genero 3.20, .40.8) con el
mismo codigo de producto: Foto, Ordenes, Reservados, Ubicacion, Almacenes
y Reporte (PDF/pantalla/Excel) dan resultados consistentes.
Pendiente aparte: el patron CONVERT(...,103) aparece en ~132 archivos del
proyecto, riesgo sistemico a evaluar por separado.
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 ipfmcs004.4fd, coloca_ubicacion.4fd, ipfmcs004b.per e
ipfmcs004_1.4fd (faltaban)
- Crear libreria UBICACIONDH_IP para ubicacionDH.4gl (funcion
InsertaUbicacionDH), separada de FUNCIONES_IP porque su otra funcion
buscardata() choca con la ya existente en ipprmt020.4gl
- Agregar dependencia de FUNCIONESREPORT a ipprcs004 (para
seleccionarSalida, ya registrada ahi para ipprmt044)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Probado: filtros de busqueda (producto, bodega, rango de fechas) con
opcion "Actual" - resultados correctos comparados contra la BD.
Opcion "Historico" (consulta base separada historicomtech) confirmada
como bug preexistente: falla con "Invalid column name num_oc" tanto en
el ambiente de pruebas (se restauro un backup fresco de produccion del
40.8 para poder probar) como en produccion Genero 3.20 - la tabla
historicomtech.dbo.iptb00006 nunca tuvo la columna num_oc que si tiene
la tabla en vivo. No es un bug de la migracion, no se toca.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar formulario ipfmcs002.per (faltaba)
- Extraer la funcion pantalla() de ipmn00000.4gl (programa de menu con su
propio MAIN) a un archivo compartido nuevo (otrodir/pantalla_ip.4gl)
para poder reutilizarla sin conflicto de MAIN duplicado
- Bug corregido: el programa nunca tenia CONNECT TO, dependia de heredar
una conexion de otro programa que nunca lo invoca en este contexto de
prueba - se agrego ARG_VAL + CONNECT TO "smarmotech" como en el resto
de los programas
- Bug corregido: el arreglo global "prod" (usado solo por este programa)
era de tamaño fijo ARRAY[200], causaba error -1326 con mas de 200
resultados - convertido a DYNAMIC ARRAY, y se agrego prod.clear() antes
de repoblarlo
- Agregado titulo a la ventana (usaba "screen size" clasico sin TITLE)
Pendiente de decision de Johnny: la pantalla no exige ningun filtro de
busqueda y hace una consulta SQL adicional por cada producto encontrado
(calculo de existencia) - sin filtro intenta traer todo el catalogo y
tarda mas de una hora antes de fallar. Se probo exitosamente usando
siempre un codigo de producto completo (clase-grupo-tipo-secuencia).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Agregar titulo a columnas Unidad y Moneda, ocultar campo interno idrow
- Agregar a ToolBar1 los botones Busca Informacion, Limpia Screen,
Conversion Moneda y Cancela operacion (estaban definidos como
ActionDefault pero nunca agregados a la barra, por eso no se veian)
- Capturar el idrow generado al insertar un precio nuevo (antes quedaba
NULL en memoria, rompiendo el eliminar de esa misma fila en la misma
sesion)
- Corregir el checkbox "Elimina": el clic con mouse marcaba la casilla
visualmente pero no actualizaba el valor real hasta perder el foco con
Tab (bug de renderizado de GST). Se cambio el trigger de AFTER FIELD a
ON CHANGE, que si sincroniza el valor de inmediato con clic de mouse
Pendiente: falta la prueba final completa del flujo eliminar en
ipprmt017 (se hizo hasta confirmar que ON CHANGE captura el valor
correctamente, falta probar el guardado + verificacion en BD)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar ipfmmt017.4fd e ipfmwd008.per (faltaban)
- Corregir esquema viejo "marmotech" -> "smarmotech" en ipfmwd008.per
- Copiar vefmwd002.4fd a ipdir (renombrado vefmwd002_ip.4fd) para evitar
depender de la libreria FORMULARIOS_PR (de Compras), que tiene errores
propios sin relacion (prfmmt006.4fd con columna inexistente,
prfmwd014.per con problema estructural) que bloqueaban la compilacion
- Corregir 3 columnas de la lista de precios sin titulo (idrow, unidadmed,
moneda): idrow se oculta (es un campo interno), unidadmed y moneda
reciben titulo visible
Pendiente: falta recompilar y probar el flujo completo (alta, consulta,
eliminacion) de ipprmt017.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Registrar formulario ipfmmt014.per (faltaba)
- Corregir refresco de pantalla al eliminar (no mostraba estado 'E' hasta
volver a consultar), confirmado por Johnny que debe verse al instante
- Agregar validacion para no permitir eliminar un registro ya eliminado
(mostraba "REGISTRO ELIMINADO" de nuevo sin avisar)
Nota: el aviso de "ya eliminado" no sale centrado en pantalla - limitacion
del cliente grafico de Genero para dialogos lanzados desde pantallas tipo
MENU clasico (no aplica en pantallas DIALOG modernas). Aceptado por la
usuaria, no es bloqueante.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- El formulario ipfmmt010.per tenia los campos Usuario Creador/Modificador,
Fecha Creacion/Modificacion y el indicador de estado enlazados a
iptb00020 (tabla de Grupos, ajena a este programa) en vez de iptb00024
(Tipos de Productos) - copiado por error del formulario de otro programa
- La consulta en ipprmt010.4gl tampoco seleccionaba esas columnas
- Al eliminar, el registro en memoria y la pantalla no se actualizaban con
el nuevo estado, solo la base de datos
Confirmado por Johnny que el estado 'E' debe reflejarse en pantalla al
eliminar.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Probado completo: alta, consulta-modificacion y eliminacion (confirmado
en BD que status_t queda en 'E') - todo funciona correctamente.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Autorizado por Johnny Soto: crear DSN ODBC apuntando a la base EXTERIOR
para la segunda conexion legada de Informix usada en ipprmt064/ipprmt005.
Investigacion: la conexion aislada a EXTERIOR funciona correctamente,
pero abrir esta segunda conexion junto con la conexion activa a
smarmotech falla con error -6366 "Changed database context" del driver
dbmsnc de Genero. Se descarto: colision de nombre de DSN, pooling de
conexiones ODBC, y version del driver (probados ODBC Driver 18 y el
driver "SQL Server" legado) - mismo resultado en todos los casos.
Parece ser una limitacion del driver de Genero al manejar dos conexiones
simultaneas al mismo servidor SQL Server. Escalado a Johnny para abrir
caso con soporte de Four Js.
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 ipfmmt019.4fd (formulario real que usa ipprmt005.4gl)
- Migrar categorias.4gl desde PROYECTOS y registrarlo (usaba
formonly.cod_cat, coincide con ipprmt005; la copia existente en
PUNTO VENTAS VER2 usaba un nombre de campo distinto)
Pendiente: ipprmt005 (como ipprmt064) requiere una segunda conexion a una
base "marmotech" (alias IFMX) no mapeada en el ambiente, resto de la
epoca Informix. Consultado con Johnny como patron general.
- Registrar formulario ipfmmt013.4fd en el proyecto (faltaba)
- Corregir databaseName del formulario (marmotech -> smarmotech, esquema
viejo que impedia resolver la tabla iptb00004)
- Agregar titulo de ventana (formulario no tenia atributo text, mostraba
"screen" generico)
- Registrar 8 archivos faltantes en FUNCIONES_IP (ipautorizareq, codigoModificacion,
piking, conduces, ubicacionH, ipactualizareqtrx, loadDespiece, LlenarUbicaciones)
- Agregar dependencias FUNCIONESREPORT y FUNCIONESEMAIL a ipprmt044 (defecto,
configureOutput, enviaemail ya existian en el proyecto)
- Resolver colision de nombres: renombrar REPORT/FUNCTION duplicados en
ipautorizareq.4gl (requiere->requiereAutoriza, buscadoc->buscadocAutoriza,
impdocumento->impdocumentoAutoriza) que chocaban con imprequisiciones.4gl
y buscarequisicion.4gl
- Sincronizar registros locales desactualizados: x RECORD en ipautorizareq.4gl
(faltaba us_crea) y x/z RECORD del REPORT formu4 en ipprgb000.4gl (faltaban
bodega_destino, factura, area, descripcion_area, existencia, disponible,
codigo_bloque, id_kit) respecto a los registros globales reales
- Migrar ipprmt020_1.4rp desde PROYECTOS y corregir su RWFglReportName
Pendiente: funcion 'fotos' (12 parametros) no existe en ningun archivo del
proyecto, consultado con Johnny
- Registrar estadosprocesos.4gl y formulario ipfmmt021.4fd en el proyecto
- Corregir columna estado_proceso inexistente por idestado (error SQL -6372)
- Corregir desfase de columnas en SELECT/INTO de buscadoc() que dejaba
usuario, bodega origen y tipo de movimiento vacios en el reporte impreso,
y filtraba la descripcion del estado hacia el campo de observacion
- Registrar funciones compartidas faltantes (buscarequisicion, imprequisiciones, funciones_ip) y formularios ipfmmt003/ipfmmt020 en el proyecto
- Agregar usuarioSistema a seg000.4gl
- Ampliar combos Codigo Mov/Bodega/Bodega Destino en ipfmmt020.4fd (texto ilegible)
- Refrescar lista de requisiciones al anular (buscarData + clear del arreglo)
- Registra formulario ipfmmt003 en FORMULARIOS_IP con dependencia a
Database
- Corrige dos bugs reales en ipprmt003.4gl: campo
control_ubicacion_almacen duplicado en INPUT BY NAME (error -8090),
y columnas control_produccion/control_ubicacion_almacen duplicadas
en el INSERT INTO (error SQL -6372). Probado completo: alta,
consulta, eliminacion, validacion de duplicados
- Actualiza DATABASE/smarmotech.4db con el esquema actual de SQL
Server (agrega columnas nuevas de iptb00002 y otras tablas)
- ipprmt002 queda pendiente: 5 columnas de iptb00002 no son
reconocidas por el compilador pese a existir en la BD real,
requiere revision en vivo con Johnny
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>