From 548dc62d4aecaf186218324d10aa9e81c268a809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Mon, 19 Oct 2026 17:22:34 -0400 Subject: [PATCH] Registra adprmt017 (Accion de Personal) y corrige bugs de Genero 6 - Registra adprmt017 y sus formularios (adfmmt017, adfmwd007/008/017/018/019) en ADMINISTRACION PERSONAL. adfmwd009.per no se registra: solo lo abre busca_movi(), que nadie llama. - adfunciones.4gl pasa a la libreria FUNCIONES_ADF (el mismo archivo no puede estar en dos aplicaciones); noprcs004 y adprmt017 dependen de ella. - adfmwd008.per: DATABASE rayovac -> smarmotech (-6601). - adprmt017.4gl: CONVERT(CHAR(10),fecha,103/101) hacia variables DATE -> se lee la columna fecha directa (-1205); sexo del titular con ISNULL(cod_par,0)=0 (adtb00021 tiene cod_par/sec_par NULL); un tipo_mov vacio (AUMENTO SALARIAL, CONTRATACION) ya no se atora en cod_sol. Verificado contra la BD .250: Nuevo de AUMENTO SALARIAL (accion 5387, empleado 110) graba adtb00020 sin cambiar adtb00003. Capacitacion/Desvinculacion no probadas: las tablas adtb00059-62 no existen en la .250. Co-Authored-By: Claude Sonnet 5.5 --- PROYECTO/addir/adfmwd008.per | 2 +- PROYECTO/addir/adprmt017.4gl | 36 ++++++++++++++++++------------------ PROYECTO/mbsERP.4pw | 17 +++++++++++++++-- 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/PROYECTO/addir/adfmwd008.per b/PROYECTO/addir/adfmwd008.per index a91fe7e..6363567 100644 --- a/PROYECTO/addir/adfmwd008.per +++ b/PROYECTO/addir/adfmwd008.per @@ -7,7 +7,7 @@ FECHA REALIZACION : Junio 24, 1993 ------------------------------------------------------------------------ } -DATABASE rayovac +DATABASE smarmotech SCREEN SIZE 24 by 80 { Busqueda de los Niveles de Empleados diff --git a/PROYECTO/addir/adprmt017.4gl b/PROYECTO/addir/adprmt017.4gl index 30dab79..cb65839 100644 --- a/PROYECTO/addir/adprmt017.4gl +++ b/PROYECTO/addir/adprmt017.4gl @@ -289,7 +289,7 @@ FUNCTION adpcad017() ## SELECCIONA LA FECHA DE INGRESO Y EL SUELDO DE LA TABLA DE CONTRATACION ## Y SELECCION DE EMPLEADOS - SELECT UNIQUE convert(char(10),a.fech_efec,101),a.sueldo,b.cod_sol + SELECT UNIQUE a.fech_efec,a.sueldo,b.cod_sol INTO contra.fech_efec,contra.sueldo,parece.cod_sol FROM adtb00019 a,adtb00018 b WHERE a.cod_sol = b.cod_sol and b.cod_sol = acc_per.cod_sol and @@ -301,7 +301,7 @@ FUNCTION adpcad017() END IF - IF xtipo <> 'INGRESO' THEN + IF xtipo IS NULL OR xtipo <> 'INGRESO' THEN LET acc_per.cod_sol = NULL NEXT FIELD fecha END IF @@ -309,9 +309,9 @@ FUNCTION adpcad017() ## VERIFICA QUE EL SOLICITANTE EXISTE EN LA TABLA DE SOLICITANTES. SI EXISTE ## LO PRESENTA EN PANTALLA. - SELECT cod_sol,convert(char(10),fecha,101),nom1_sol,nom2_sol,apell1_sol, + SELECT cod_sol,fecha,nom1_sol,nom2_sol,apell1_sol, apell2_sol,calle,casa_num,barrio,urbanizacion,telefono, - cod_provincia,convert(char(10),fech_nac,101),cod_nac,estado_civil,estatura, + cod_provincia,fech_nac,cod_nac,estado_civil,estatura, peso,cedula,licencia,tipo_sangre,cod_puesto, cod_prof,sexo,status_t,us_crea,fech_crea,us_mod,fech_mod, serie @@ -372,12 +372,12 @@ FUNCTION adpcad017() ## CHEQUEA QUE EL EMPLEADO EXISTA EN LA TABLA DE EMPLEADOS. SI EXISTE ## DESPLEGA TODA LA INFORMACION REFERENTE AL EMPLEADO. - IF xtipo <> 'INGRESO' THEN + IF xtipo IS NULL OR xtipo <> 'INGRESO' THEN SELECT b.departamento,b.nivel_emp,b.cod_puesto,b.nom1_emp, b.nom2_emp,b.apell1_emp,b.apell2_emp,b.sueldo_ac, b.nomina,b.estado_civil,b.tipo_sangre, - b.cedula,b.cuenta_no,CONVERT(char(10),b.fech_efec,103),b.tipo_sueldo + b.cedula,b.cuenta_no,b.fech_efec,b.tipo_sueldo INTO acc_per.departamento,acc_per.nivel_emp,acc_per.cod_puesto, nombre9,nombre10,apellido9,apellido10,acc_per.sueldo_ac, acc_per.nomina,acc_per.estado_civil,acc_per.tipo_sangre, @@ -402,8 +402,8 @@ FUNCTION adpcad017() WHERE k.cod_puesto = acc_per.cod_puesto and k.status_t is null SELECT UNIQUE a.sexo INTO acc_per.sexo FROM adtb00021 a - WHERE a.num_emp = acc_per.num_emp AND a.cod_par = 0 AND - a.sec_par = 0 + WHERE a.num_emp = acc_per.num_emp AND ISNULL(a.cod_par,0) = 0 AND + ISNULL(a.sec_par,0) = 0 SELECT a.nis INTO pnis FROM adtb00030 a WHERE a.num_emp = acc_per.num_emp @@ -905,7 +905,7 @@ FUNCTION adpcad017() personal.serie USING "<<<" SELECT UNIQUE num_emp FROM adtb00021 - WHERE num_emp = acc_per.num_emp AND cod_par = 0 AND sec_par = 0 + WHERE num_emp = acc_per.num_emp AND ISNULL(cod_par,0) = 0 AND ISNULL(sec_par,0) = 0 IF STATUS = NOTFOUND THEN @@ -1001,14 +1001,14 @@ FUNCTION adpcmf017() END IF LET selec = - "SELECT UNIQUE a.num_trx,a.cod_mto,a.cod_sol,convert(char(10),a.fecha,103), ", - " CONVERT(CHAR(10),a.fech_efec,103),a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", + "SELECT UNIQUE a.num_trx,a.cod_mto,a.cod_sol,a.fecha, ", + " a.fech_efec,a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", " a.sueldo_ac,a.nomina,a.estado_civil,b.sexo,a.tipo_sangre, ", " a.sueldo_lq,a.observacion,a.num1_emp,a.departamento1, ", " a.nivel1_emp,a.cod1_puesto,a.num2_emp,a.departamento2, ", " a.nivel2_emp,a.cod2_puesto,a.num3_emp,a.departamento3, ", " a.nivel3_emp,a.cod3_puesto,c.cedula,a.us_crea,a.fech_crea,a.us_mod, ", - " a.fech_mod,CASE a.status_t WHEN 'E' THEN 'ANULADO' ELSE 'ACTIVO' END, CONVERT(CHAR(10),c.fech_nac,103) ", + " a.fech_mod,CASE a.status_t WHEN 'E' THEN 'ANULADO' ELSE 'ACTIVO' END, c.fech_nac ", "FROM adtb00020 a,adtb00003 c LEFT OUTER JOIN adtb00021 b ON b.num_emp = c.num_emp ", "WHERE a.num_emp = c.num_emp AND ",criterio clipped, " ORDER BY a.num_emp" @@ -1580,7 +1580,7 @@ FUNCTION adpcmf017() END IF UPDATE adtb00021 SET sexo = acc_per.sexo WHERE num_emp = acc_per.num_emp - AND cod_par = 0 AND sec_par=0 + AND ISNULL(cod_par,0) = 0 AND ISNULL(sec_par,0) = 0 UPDATE adtb00017 SET departamento = acc_per.departamento, nivel_emp = acc_per.nivel_emp, cod_puesto = acc_per.cod_puesto, @@ -1668,7 +1668,7 @@ FUNCTION desplegar() SELECT b.departamento,b.nivel_emp,b.cod_puesto,b.nom1_emp, b.nom2_emp,b.apell1_emp,b.apell2_emp,b.sueldo_ac, b.nomina,b.estado_civil,b.tipo_sangre, - b.cedula,b.cuenta_no,CONVERT(char(10),b.fech_efec,103), + b.cedula,b.cuenta_no,b.fech_efec, b.sueldo_ac INTO acc_per.departamento,acc_per.nivel_emp,acc_per.cod_puesto, nombre9,nombre10,apellido9,apellido10,acc_per.sueldo_ac, @@ -1764,7 +1764,7 @@ nombre5 clipped," ",nombre6 clipped," ",apellido5 clipped," ",apellido6 clipped ## DATOS VACACIONES IF xtipo = 'VACACIONES' THEN INITIALIZE vacacion.* TO NULL - SELECT a.cod_mov,a.cod_mov2,a.num_dias_disfrute,CONVERT(CHAR(10),a.fecha_sal,103),CONVERT(CHAR(10),a.fecha_ent,103), + SELECT a.cod_mov,a.cod_mov2,a.num_dias_disfrute,a.fecha_sal,a.fecha_ent, a.num_nomi, a.num_dias_disfrute,a.periodo,a.valor_vacaciones,a.num_dias_pagados,a.proporcion_vacaciones INTO vacacion.cod_mov1,vacacion.cod_mov2,vacacion.dias_vac,vacacion.fecha_sal,vacacion.fecha_ent, @@ -1930,7 +1930,7 @@ FUNCTION vacaciones(operacion) LET salario_acumulado = 0 IF vacacion.cod_mov1 = 36 THEN LET salario = 0 - SELECT CONVERT(CHAR(10),a.fech_efec,103),a.sueldo_ac INTO fecha_entrada_emp,salario + SELECT a.fech_efec,a.sueldo_ac INTO fecha_entrada_emp,salario FROM adtb00003 a WHERE a.num_emp = acc_per.num_emp @@ -2011,7 +2011,7 @@ FUNCTION vacaciones(operacion) END INPUT ELSE LET salario = 0 - SELECT CONVERT(CHAR(10),a.fech_efec,103),a.sueldo_ac INTO fecha_entrada_emp,salario + SELECT a.fech_efec,a.sueldo_ac INTO fecha_entrada_emp,salario FROM adtb00003 a WHERE a.num_emp = acc_per.num_emp LET salario_quincenal = salario /2 @@ -2733,7 +2733,7 @@ ON EVERY ROW SELECT COUNT(*) INTO depende FROM adtb00013 WHERE cod_sol = codigo_s AND cod_par = 4 - SELECT a.cod_provincia,CONVERT(CHAR(10),a.fech_nac,103),a.cod_nac + SELECT a.cod_provincia,a.fech_nac,a.cod_nac INTO cod_provincia,fecha_nac,codigo_n FROM adtb00012 a WHERE a.cod_sol = codigo_s diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index 3e7f0ac..8f6168c 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -755,6 +755,15 @@ + + + + + + + + + @@ -763,6 +772,11 @@ + + + + + @@ -853,10 +867,9 @@ - + -