Files
Abel LópezandClaude Sonnet 5 ee27da0669 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>
2026-09-03 16:51:11 -04:00

89 lines
3.1 KiB
Plaintext

GLOBALS
"noprgb000.4gl"
DEFINE direccion_suc,telefono_suc VARCHAR(100),
provincia VARCHAR(60),
xpais CHAR(10)
FUNCTION cardnet(xnumemp)
DEFINE tmpfile STRING,
foto BYTE,
xnumemp INT
LET direccion_suc = NULL
LET telefono_suc = NULL
LOCATE foto IN MEMORY
LET selec = "SELECT
a.nom1_emp,
a.apell1_emp,
a.num_emp,
a.cedula,
b.nom_puesto,
a.foto_empleado,
c.direccion,
c.telefono,
e.abreviatura,
f.nombre_provincia
FROM adtb00003 a
LEFT JOIN adtb00004 b ON a.cod_puesto = b.cod_puesto
LEFT JOIN sucursales c ON c.sucid = a.sucid
LEFT JOIN vetb00017 e ON e.codigo = c.pais
LEFT JOIN vetb00020 f ON f.cod_provincia = c.cod_provincia
WHERE a.num_emp = ",xnumemp USING "<<<<<",
" AND a.status_t IS NULL"
PREPARE bcarnet FROM selec
EXECUTE bcarnet INTO datos_cheque.nom1_emp,
datos_cheque.apell1_emp ,
datos_cheque.num_emp,
datos_cheque.cedula,
puesto.nom_puesto ,
foto ,
direccion_suc ,
p_Companias.telefono ,
xpais ,provincia
LET tmpfile = '.\\TMP\\tmpfoto.jpg'
-- 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
IF foto IS NOT NULL THEN
CALL foto.writeFile(tmpfile)
ELSE
LET tmpfile='.\\TMP\\fotodefault.jpg'
END IF
OUTPUT TO REPORT reporte(tmpfile)
FINISH REPORT reporte
END FUNCTION
REPORT reporte(xtmpfile)
DEFINE xtmpfile STRING
FORMAT
ON EVERY ROW
#DISPLAY "ubicacion ",ubicacionhtml
IF direccion_suc IS NOT NULL THEN
LET p_companias.direccion = direccion_suc
ELSE
SELECT c.direccion,c.telefono
INTO direccion_suc,p_companias.telefono
FROM sucursales c WHERE sucid = 1
END IF
PRINTX datos_cheque.nom1_emp,datos_cheque.apell1_emp,datos_cheque.num_emp,
direccion_suc,p_Companias.telefono,datos_cheque.cedula,
puesto.nom_puesto,xtmpfile,
xpais,provincia
END REPORT