Agregar noprmt003 (Maestra de Empleados) al modulo NOMINA

- 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>
This commit is contained in:
Abel López
2026-09-03 16:51:11 -04:00
co-authored by Claude Sonnet 5
parent b27b20d42d
commit ee27da0669
11 changed files with 36937 additions and 2847 deletions
+3
View File
@@ -199,6 +199,9 @@ adtb00003^sexo^0^10^67^
adtb00003^email_corporativo^201^100^68^
adtb00003^enviar_encuesta^0^10^69^
adtb00003^enviar_volante^0^10^70^
adtb00003^telefonoCorporativo^0^15^71^
adtb00003^numeroOficina^0^15^72^
adtb00003^extension^0^5^73^
adtb00004^cod_puesto^1^2^1^
adtb00004^nom_puesto^0^180^2^
adtb00004^otra_descripcion^0^180^3^
+3
View File
@@ -199,6 +199,9 @@ adtb00003^sexo^0^10^67^
adtb00003^email_corporativo^201^100^68^
adtb00003^enviar_encuesta^0^10^69^
adtb00003^enviar_volante^0^10^70^
adtb00003^telefonoCorporativo^0^15^71^
adtb00003^numeroOficina^0^15^72^
adtb00003^extension^0^5^73^
adtb00004^cod_puesto^1^2^1^
adtb00004^nom_puesto^0^180^2^
adtb00004^otra_descripcion^0^180^3^
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+7
View File
@@ -469,14 +469,21 @@
<Library binaryName="FORMULARIOS_NO" id="-335228674" label="FORMULARIOS_NO">
<File filePath="nodir/nofmmt002.per"/>
<File filePath="nodir/nofmwd001.per"/>
<File filePath="nodir/nofmmt003.4fd"/>
</Library>
<Library binaryName="FUNCIONES_NO" id="-306412216" label="FUNCIONES_NO">
<File filePath="nodir/noprgb000.4gl"/>
<File filePath="nodir/noprfu000.4gl"/>
<File filePath="nodir/nocarnet.4gl"/>
</Library>
<Application binaryName="noprmt002" dependencies="-1026233879,-764824792,-306412216,-335228674,1612573873" id="-700000043" label="noprmt002">
<Configuration commandLineArguments="alopez Lopez2023" id="-700000044" label="Configuration"/>
<File filePath="nodir/noprmt002.4gl"/>
</Application>
<Application binaryName="noprmt003" dependencies="-1026233879,-764824792,-306412216,-335228674" environment="dir:FGLSPOOL=$(ProjectDir)/spool" id="-700000045" label="noprmt003">
<Configuration commandLineArguments="alopez Lopez2023" id="-700000046" label="Configuration"/>
<File filePath="nodir/noprmt003.4gl"/>
</Application>
</Group>
<Group id="1667448785" label="PRODUCTOS TERMINADOS">
<Library binaryName="FORMULARIOS_IP" id="-1826025351" label="FORMULARIOS_IP"/>
+8 -11
View File
@@ -43,18 +43,15 @@ FUNCTION cardnet(xnumemp)
xpais ,provincia
LET r_filename = 'noprrp044.4rp'
LET tmpfile = '.\\TMP\\tmpfoto.jpg'
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
LET preview=1
LET r_output = 'SVG'
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
CALL fgl_report_setPrinterSides("two-sided-short-edge")
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
-- La API de configuracion de reportes (fgl_report_*) no esta
-- disponible en este FGL; se escribe el XML directo a un
-- archivo en FGLSPOOL en lugar de usar la plantilla .4rp
-- (noprrp044.4rp) con vista previa del carnet.
LET r_filename = FGL_GETENV("FGLSPOOL"), "/nocarnet_reporte.xml"
LET handler = om.XmlWriter.createFileWriter(r_filename)
IF handler IS NOT NULL THEN -- report engine was configured ok
START REPORT reporte TO XML HANDLER handler
END IF
+29 -13
View File
@@ -35,7 +35,9 @@ MAIN
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "marmotech" AS "IFMX" USER usuarios USING clave
-- La conexion a Informix (marmotech/IFMX) ya no existe; el sistema
-- fue migrado completo a SQL Server (smarmotech/MSSQL). Dejarla
-- activa colgaba el programa al inicio intentando conectar.
CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL noprmt003()
@@ -89,7 +91,10 @@ FUNCTION adpcmf022()
IF operacion = "M" THEN
CONSTRUCT criterio ON a.num_emp,a.departamento,a.nom1_emp,a.apell1_emp,a.nom2_emp,a.apell2_emp,a.cedula,a.alias
FROM num_emp,departamento,nom1_emp,apell1_emp,nom2_emp,apell2_emp,cedula,alias
IF int_flag THEN
BEFORE CONSTRUCT
CALL departamentos()
END CONSTRUCT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
@@ -100,18 +105,18 @@ FUNCTION adpcmf022()
"SELECT a.num_emp,a.departamento,a.nivel_emp,
a.cod_puesto,a.nom1_emp,a.nom2_emp,
a.apell1_emp,a.apell2_emp,a.tipo_empleado,
convert(char(10),a.fecha_termino_c,103),a.calle,a.casa_num,a.barrio,
a.fecha_termino_c,a.calle,a.casa_num,a.barrio,
a.urbanizacion,a.credito,a.telefono,a.telefonoCorporativo,a.numeroOficina,a.extension,
convert(char(10),a.fech_nac,103),a.cod_nac,
a.fech_nac,a.cod_nac,
a.estado_civil,a.tipo_sangre,a.cedula,a.serie,
a.licencia,a.sueldo_ac,a.nomina, CONVERT(char(10),a.fech_efec,103),
CONVERT(CHAR(10),a.fecha_salida,103),a.paga_seg,a.cod_seg1,a.cod_seg2,",
a.licencia,a.sueldo_ac,a.nomina, a.fech_efec,
a.fecha_salida,a.paga_seg,a.cod_seg1,a.cod_seg2,",
"a.cod_seg3,a.tipocuenta,a.cuenta_no,a.status_t,a.us_crea,
a.fech_crea,a.us_mod,a.fech_mod,a.foto_empleado,a.sucid,",
"a.monto_seg_med,a.monto_seg_int,a.monto_care,",
"CONVERT(CHAR(10),a.fecha_ultimo_aumento,103),a.moneda,a.codbancodestino,",
"a.digiverbancodestino,a.tipo_sueldo,a.email,a.email_corporativo, a.instalador,a.cuenta_aux,a.cuenta_out,
CONVERT(CHAR(10),ISNULL(a.fecha_suspension,'01/01/2007'),103),
"a.fecha_ultimo_aumento,a.moneda,a.codbancodestino,",
"a.digiverbancodestino,a.tipo_sueldo,a.email,a.email_corporativo, a.instalador,a.cuenta_aux,a.cuenta_out,
a.fecha_suspension,
a.codigo_retiro_bco,a.retiro_comercial,a.estado_legal,a.genera_file_bco,a.observacion,
a.tipo_documento,a.gerentemarcas,a.enviar_encuesta,a.enviar_volante
FROM adtb00003 a ",
@@ -535,8 +540,14 @@ FUNCTION selecta1()
emplea.gerentemarcas,emplea.enviar_encuesta,emplea.enviar_volante
IF emplea.foto_empleado IS NOT NULL THEN
LET filepath = ".\\IMAGENES\\tmpfile.jpg"
CALL emplea.foto_empleado.writeFile(filepath)
CALL emplea.foto_empleado.writeFile(filepath)
DISPLAY filepath TO fotos
ELSE
-- Limpia la foto del empleado anterior cuando el actual no
-- tiene una; sin esto, Siguiente/Anterior dejaban la imagen
-- vieja en pantalla.
LET filepath = NULL
DISPLAY filepath TO fotos
END IF
@@ -1065,6 +1076,10 @@ FUNCTION acepta()
usuarios,
emplea.licencia, emplea.cod_seg3
}
-- Informix (IFMX) ya no existe; el sistema fue migrado completo
-- a SQL Server. Este INSERT duplicado hacia la vieja base queda
-- deshabilitado (ver nota en MAIN).
{
SET CONNECTION "IFMX"
INSERT INTO adtb00003
(num_emp,departamento,cod_puesto,nivel_emp,nom1_emp,
@@ -1084,8 +1099,9 @@ FUNCTION acepta()
emplea.tipo_sangre,emplea.sueldo_ac,
emplea.nomina,emplea.paga_seg,emplea.cuenta_no,usuarios,GETDATE(),
emplea.licencia,emplea.cod_seg3)
}
LET numero_msg = 1
LET numero_msg = 1
CALL msg(numero_msg)
END IF
@@ -1167,7 +1183,7 @@ FUNCTION carga_herramientas()
LET i = i + 1
END FOREACH
IF i > 1 THEN
CALL herramientas.deleteElement(i) -- quita el slot vacío final
CALL herramientas.deleteElement(i) -- quita el slot vaco final
END IF
CALL muestra_herramientas()
+3
View File
@@ -199,6 +199,9 @@ adtb00003^sexo^0^10^67^
adtb00003^email_corporativo^201^100^68^
adtb00003^enviar_encuesta^0^10^69^
adtb00003^enviar_volante^0^10^70^
adtb00003^telefonoCorporativo^0^15^71^
adtb00003^numeroOficina^0^15^72^
adtb00003^extension^0^5^73^
adtb00004^cod_puesto^1^2^1^
adtb00004^nom_puesto^0^180^2^
adtb00004^otra_descripcion^0^180^3^
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff