{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP035 OBJETIVO : PLANILLA VACACIONES DGT3 y DGT4 PROGRAMADOR : Ing. JUAN F. SOTO FECHA REALIZACION : ENERO 18, 1999 MODIFICADO POR : Ing. Juan Soto DETALLE MODIFICACION : Genera la planilla de la TSS DGT3 Y DGT4 a excel FECHA MODIFIA ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" DEFINE selec,rcol,arch_pc,fila_excel,prog,res, cmd2,dcmd2,d_tipos,mensaje,f_tipos,dir_file,nombreFile2 STRING, p_res INT,cuenta,xi,progreso SMALLINT, noregistro INT, ciarnc CHAR(11), idioma_office VARCHAR, tipo_Reporte,tiposalida VARCHAR(10) DEFINE fecha_formulario DATE, registro_no,formulario_no INTEGER, tmpfecha CHAR(10), cnt SMALLINT DEFINE fecha1,fecha2 DATE DEFINE m_cedula CHAR(12), fecha_c,fecha_entrada DATE MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CALL startlog("NORP35,txt") CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL noprrp035() END MAIN FUNCTION noprrp035() DEFINE registro RECORD nomina LIKE adtb00003.nomina, num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp CHAR(20), nom2_emp CHAR(20), apell1_emp CHAR(20), apell2_emp CHAR(20), cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, fech_nac DATE, fech_efec DATE, sexo LIKE adtb00021.sexo, nacionalidad CHAR(10), nom_puesto LIKE adtb00004.otra_descripcion, sueldo_ac LIKE adtb00003.sueldo_ac, numero_tss LIKE adtb00003.cod_seg1, turno LIKE adtb00003.licencia, sucid LIKE adtb00003.sucid, puesto_real LIKE adtb00004.nom_puesto, novedad VARCHAR(20), fecha_sal DATE, desc_puesto VARCHAR(150), educacion VARCHAR(100), fecha_cambio DATE, tipo_documento VARCHAR(50), cod_puesto_sirla INT, cod_educa_sirla INT, fechainiciov date, fechafinvac date END RECORD DEFINE l_fech_ini,l_fech_fin DATE, l_f_ini,l_f_fin CHAR(10), periodo CHAR(6) ## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE DEFINE extras RECORD num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp CHAR(20), nom2_emp CHAR(20), apell1_emp CHAR(20), apell2_emp CHAR(20), cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, cod_mov LIKE notb00008.cod_mov, cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN #LET formulario = formulario CLIPPED,"nofmrp035" OPEN FORM nofmrp035 FROM "nofmrp035" DISPLAY FORM nofmrp035 #CALL pantalla() DISPLAY "noprnorp035" AT 4,3 ATTRIBUTE(RED) DISPLAY "Horas Extras Empleados" AT 6,32 ATTRIBUTE(BLACK) CONSTRUCT BY NAME criterio ON b.num_emp,b.departamento ## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE INPUT BY NAME registro_no,formulario_no,tipo_Reporte,tiposalida, fecha_formulario,fecha2,idioma_office AFTER FIELD tipo_reporte IF tipo_reporte = 'DGT3' THEN NEXT FIELD tiposalida ELSE NEXT FIELD fecha_formulario END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF tipo_reporte = 'DGT4' THEN IF fecha_formulario IS NULL THEN CALL msg(16) NEXT FIELD fecha_formulario END IF IF fecha2 IS NULL THEN CALL msg(16) NEXT FIELD fecha2 END IF IF fecha2 < fecha_formulario THEN CALL msg(86) NEXT FIELD fecha2 END IF END IF EXIT INPUT END INPUT ## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE LET prog = "EXCEL" IF idioma_office = "E" THEN LET fila_excel = "F" ELSE LET fila_excel = "R" END IF IF tiposalida = 'EXCEL' THEN CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [res] ); CALL ui.Interface.frontCall("standard","getenv", ["USDGT3Y4"], [file] ) # LET arch_pc='"',FILE CLIPPED,'"' -- le agrega las comillas por si hay blancos (solo se necesita para shellexec) LET arch_pc = FILE CLIPPED CALL ui.Interface.frontCall("standard","shellexec", [arch_pc], [p_res] ) CALL chqDdeError(p_res,"shellexec "||arch_pc) CALL ui.Interface.frontCall("WINDDE","DDEConnect", [prog,arch_pc], [p_res] ) CALL chqDdeError(p_res,"DDEConnect "||arch_pc) START REPORT planilla TO "dummy" END IF #REPLACE(CONVERT (VARCHAR,b.fech_nac,101),'/',''),REPLACE(CONVERT(VARCHAR,b.fech_efec,101),'/',''), ", { ESTE ES EL QUERY ANTERIOR QUE ESTABA PARA EL DGT3 "SELECT distinct b.nomina,b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ", "b.nom1_emp, b.nom2_emp,", "b.apell1_emp,b.apell2_emp,b.cedula,b.serie, b.fech_nac,b.fech_efec, ", "c.sexo,f.nom_nac,d.otra_descripcion,b.sueldo_ac,b.cod_seg1,'001',b.sucid, ", " d.nom_puesto ", "FROM adtb00003 b inner join notb00008 h ON (h.num_emp = b.num_emp ) and h.departamento = b.departamento right outer join adtb00021 c on (b.num_emp = c.num_emp) right outer join adtb00004 d on b.cod_puesto = d.cod_puesto right outer join adtb00007 f ON f.cod_nac = b.cod_nac ", " left outer join adtb00055 k ON (k.num_emp = b.num_emp) ", "WHERE ", criterio CLIPPED, " and b.status_t is null and h.fecha between '",fecha_formulario USING 'mm/dd/yyyy', "' and '",fecha2 USING 'mm/dd/yyyy',"'", " ORDER BY b.departamento,b.cod_puesto " } IF tipo_reporte = 'DGT3' THEN LET selec = "SELECT b.nomina,b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ", "b.nom1_emp, b.nom2_emp,", "b.apell1_emp,b.apell2_emp,b.cedula,b.serie,CONVERT (CHAR(10),b.fech_nac,103),CONVERT(CHAR(10),b.fech_efec,103), ", "c.sexo,f.nom_nac,d.otra_descripcion,b.sueldo_ac,b.cod_seg1,ISNULL(MAX(k.id_horario),1),x.sucid_sirla, ", " d.nom_puesto,'Ingreso',b.fecha_salida,ISNULL(RTRIM(d.funciones),d.nom_puesto)+' '+ISNULL(d.funcion1,' '), ", " e.nom_educa,b.fecha_ultimo_aumento, b.tipo_Documento,d.cod_puesto_sirla,e.cod_educa_sirla ", "FROM adtb00003 b left outer join adtb00021 c on c.num_emp=b.num_emp left outer join adtb00004 d on b.cod_puesto = d.cod_puesto left outer join adtb00005 e on e.cod_educa = b.nivel_emp ", " left outer join adtb00007 f ON f.cod_nac = b.cod_nac ", " left outer join adtb00055 k ON k.num_emp = b.num_emp ", " left outer join sucursales x ON x.sucid = b.sucid ", "WHERE ", " b.status_t IS NULL and b.estado_legal = 'ACTIVO' and ",criterio CLIPPED,#" and b.num_emp = 338 ", #" and h.fecha between '",fecha_formulario USING "mm/dd/yyyy","' and '",fecha2 USING "mm/dd/yyyy" ,"' ", "group by b.nomina,b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, b.nom1_emp, b.nom2_emp, b.apell1_emp,b.apell2_emp,b.cedula,b.serie,b.fech_nac,b.fech_efec, c.sexo,f.nom_nac,d.otra_descripcion,b.sueldo_ac,b.cod_seg1,x.sucid_sirla, d.nom_puesto,b.fecha_salida,d.funciones,d.funcion1, e.nom_educa,b.fecha_ultimo_aumento,b.tipo_documento,d.cod_puesto_sirla,e.cod_educa_sirla " ELSE LET selec = "SELECT b.nomina,b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ", "b.nom1_emp, b.nom2_emp,", "b.apell1_emp,b.apell2_emp,b.cedula,b.serie,CONVERT (CHAR(10),b.fech_nac,103),CONVERT(CHAR(10),b.fech_efec,103), ", "c.sexo,f.nom_nac,d.otra_descripcion,b.sueldo_ac,b.cod_seg1,ISNULL(MAX(k.id_horario),1),x.sucid_sirla, ", " d.nom_puesto,'Ingreso',b.fecha_salida,RTRIM(d.funciones)+' '+ISNULL(d.funcion1,' '), ", " e.nom_educa,b.fecha_ultimo_aumento, b.tipo_Documento,d.cod_puesto_sirla,e.cod_educa_sirla ", "FROM adtb00003 b left outer join adtb00021 c on c.num_emp=b.num_emp left outer join adtb00004 d on b.cod_puesto = d.cod_puesto left outer join adtb00005 e on e.cod_educa = b.nivel_emp ", " left outer join adtb00007 f ON f.cod_nac = b.cod_nac ", " left outer join adtb00055 k ON k.num_emp = b.num_emp ", " left outer join sucursales x ON x.sucid = b.sucid ", "WHERE ", " b.status_t IS NULL and ",criterio CLIPPED, " and b.fech_efec between '",fecha_formulario USING "mm/dd/yyyy","' and '",fecha2 USING "mm/dd/yyyy" ,"' ", "group by b.nomina,b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, b.nom1_emp, b.nom2_emp, b.apell1_emp,b.apell2_emp,b.cedula,b.serie,b.fech_nac,b.fech_efec, c.sexo,f.nom_nac,d.otra_descripcion,b.sueldo_ac,b.cod_seg1,x.sucid_sirla, d.nom_puesto,b.fecha_salida,d.funciones,d.funcion1, e.nom_educa,b.fecha_ultimo_aumento,b.tipo_documento,d.cod_puesto_sirla,e.cod_educa_sirla ", " UNION ", "SELECT b.nomina,b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ", "b.nom1_emp, b.nom2_emp,", "b.apell1_emp,b.apell2_emp,b.cedula,b.serie,CONVERT (CHAR(10),b.fech_nac,103),CONVERT(CHAR(10),b.fech_efec,103), ", "c.sexo,f.nom_nac,d.otra_descripcion,b.sueldo_ac,b.cod_seg1,ISNULL(MAX(k.id_horario),1),x.sucid_sirla, ", " d.nom_puesto,'Salida',b.fecha_salida,RTRIM(d.funciones)+' '+ISNULL(d.funcion1,' '), ", " e.nom_educa,b.fecha_ultimo_aumento,b.tipo_Documento,d.cod_puesto_sirla,e.cod_educa_sirla ", "FROM adtb00003 b left outer join adtb00021 c on c.num_emp=b.num_emp left outer join adtb00004 d on b.cod_puesto = d.cod_puesto left outer join adtb00005 e on e.cod_educa = b.nivel_emp ", " left outer join adtb00007 f ON f.cod_nac = b.cod_nac ", " left outer join adtb00055 k ON k.num_emp = b.num_emp ", " left outer join sucursales x ON x.sucid = b.sucid ", "WHERE ", " b.status_t IS NOT NULL and ",criterio CLIPPED, " and b.fecha_salida between '",fecha_formulario USING "mm/dd/yyyy","' and '",fecha2 USING "mm/dd/yyyy" ,"' ", "group by b.nomina,b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, b.nom1_emp, b.nom2_emp, b.apell1_emp,b.apell2_emp,b.cedula,b.serie,b.fech_nac,b.fech_efec, c.sexo,f.nom_nac,d.otra_descripcion,b.sueldo_ac,b.cod_seg1,x.sucid_sirla, d.nom_puesto,b.fecha_salida,d.funciones,d.funcion1, e.nom_educa,b.fecha_ultimo_aumento,b.tipo_documento,d.cod_puesto_sirla,e.cod_educa_sirla ", " UNION ", "SELECT b.nomina,b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ", "b.nom1_emp, b.nom2_emp,", "b.apell1_emp,b.apell2_emp,b.cedula,b.serie,CONVERT (CHAR(10),b.fech_nac,103),CONVERT(CHAR(10),b.fech_efec,103), ", "c.sexo,f.nom_nac,d.otra_descripcion,b.sueldo_ac,b.cod_seg1,ISNULL(MAX(k.id_horario),'1'),x.sucid_sirla, ", " d.nom_puesto,'Cambio',b.fecha_salida,RTRIM(d.funciones)+' '+ISNULL(d.funcion1,' '), ", " e.nom_educa,b.fecha_ultimo_aumento,b.tipo_Documento,d.cod_puesto_sirla,e.cod_educa_sirla ", "FROM adtb00003 b left outer join adtb00021 c on c.num_emp=b.num_emp left outer join adtb00004 d on b.cod_puesto = d.cod_puesto left outer join adtb00005 e on e.cod_educa = b.nivel_emp ", " left outer join adtb00007 f ON f.cod_nac = b.cod_nac ", " left outer join adtb00055 k ON k.num_emp = b.num_emp ", " left outer join sucursales x ON x.sucid = b.sucid ", "WHERE ", " b.status_t IS NULL and ",criterio CLIPPED, " and b.fecha_ultimo_aumento between '",fecha_formulario USING "mm/dd/yyyy","' and '",fecha2 USING "mm/dd/yyyy" ,"' ", "group by b.nomina,b.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, b.nom1_emp, b.nom2_emp, b.apell1_emp,b.apell2_emp,b.cedula,b.serie,b.fech_nac,b.fech_efec, c.sexo,f.nom_nac,d.otra_descripcion,b.sueldo_ac,b.cod_seg1,x.sucid_sirla, d.nom_puesto,b.fecha_salida,d.funciones,d.funcion1, e.nom_educa,b.fecha_ultimo_aumento,b.tipo_documento,d.cod_puesto_sirla,e.cod_educa_sirla ", " ORDER BY b.departamento,b.cod_puesto " END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando FROM selec DECLARE buscar CURSOR FOR comando IF tiposalida = 'EXCEL' THEN LET rcol ="C4" LET xi = 7 CALL pru_new_dde(p_companias.rnc clipped,rcol,xi) ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE LET periodo = MONTH(fecha_formulario) USING "&&",YEAR(fecha_formulario) LET rcol ="C4" LET xi = 8 CALL pru_new_dde(periodo,rcol,xi) LET rcol = "C4" LET xi = 9 CALL pru_new_dde(tipo_reporte,rcol,xi) LET cnt = 14 FOREACH buscar INTO registro.* IF tipo_Reporte = 'DGT3' THEN LET registro.novedad = 'Ingreso' END IF LET fecha_entrada = registro.fech_efec # ES PARA TENER LA FECHA EN UNA VRIABLE UNICA, # ESTO VA A SERVIR PARA CALCULAR LOS ANOS DEL # EMPLEADO. LET tmpfecha = registro.fech_efec LET tmpfecha[7,10] = year (fecha_formulario) using "&&&&" LET fecha_c = tmpfecha # IF tipo_reporte = 'DGT3' THEN CALL fechaV() LET l_f_ini = tmpfecha LET l_f_fin = fecha_c # IF year(l_f_ini) = year(fecha2) THEN DISPLAY "DATA: ",registro.nom1_emp OUTPUT TO REPORT planilla(registro.*,l_f_ini,l_f_fin,m_cedula) # END IF # END IF END FOREACH FINISH REPORT planilla CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [res] ); ELSE DELETE FROM datosdgt FOREACH buscar INTO registro.* IF tipo_Reporte = 'DGT3' THEN LET registro.novedad = 'Ingreso' END IF LET fecha_entrada = registro.fech_efec # ES PARA TENER LA FECHA EN UNA VRIABLE UNICA, # ESTO VA A SERVIR PARA CALCULAR LOS ANOS DEL # EMPLEADO. IF registro.turno = '6' THEN LET registro.turno = '1' END IF IF registro.turno = '5' THEN LET registro.turno = '1' END IF IF registro.turno = '10' THEN LET registro.turno = '1' END IF IF registro.fecha_cambio IS NULL THEN LET registro.fecha_cambio = fecha_formulario END IF IF YEAR(registro.fech_efec) <> YEAR(fecha_formulario) THEN LET tmpfecha = registro.fech_efec USING "ddmmyyyy" LET tmpfecha[5,8] = year (fecha_formulario) using "&&&&" LET fecha_c = tmpfecha # IF tipo_reporte = 'DGT3' THEN CALL fechaV() LET registro.fechainiciov = tmpfecha LET registro.fechafinvac = fecha_c # IF year(l_f_ini) = year(fecha2) THEN ELSE LET registro.fechainiciov = registro.fech_efec + 365 LET registro.fechafinvac = registro.fechainiciov +14 END IF IF registro.fecha_sal IS NULL THEN LET registro.fecha_sal =registro.fechainiciov END IF INSERT INTO datosdgt VALUES (registro.*) # END IF # END IF END FOREACH LET cmd2 = FGL_GETENV("FGLSPOOL"),"\\DGT.TXT" SELECT COUNT(*) INTO noregistro FROM datosdgt IF noregistro > 0 THEN START REPORT atexto TO cmd2 DECLARE buscadgt CURSOR FOR SELECT * FROM datosdgt FOREACH buscadgt INTO registro.* OUTPUT TO REPORT atexto(registro.*,l_f_ini,l_f_fin,m_cedula) END FOREACH FINISH REPORT atexto LET d_tipos="TXT" LET f_tipos="*.txt" LET mensaje=%"Elige Directorio" CALL ui.Interface.frontCall("standard","opendir", [dir_file,mensaje], [dcmd2] ) LET nombreFile2 = tipo_Reporte CLIPPED, '.txt' LET dcmd2 = dcmd2 CLIPPED,"\\",nombreFile2 CLIPPED CALL fgl_putfile(cmd2,dcmd2) END IF END IF END FUNCTION ## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE # REPORT planilla(x,p_fech_ini,p_fech_fin,p_cedula) REPORT planilla(x,fecha_ini_v,fecha_fin_v,p_cedula) DEFINE x RECORD nomina LIKE adtb00003.nomina, num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp CHAR(20), nom2_emp CHAR(20), apell1_emp CHAR(20), apell2_emp CHAR(20), cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, fech_nac LIKE adtb00003.fech_nac, fech_efec LIKE adtb00003.fech_efec, sexo LIKE adtb00021.sexo, nacionalidad CHAR(10), nom_puesto LIKE adtb00004.otra_descripcion, sueldo_ac LIKE adtb00003.sueldo_ac, numero_tss LIKE adtb00003.cod_seg1, turno LIKE adtb00003.licencia, sucid LIKE adtb00003.sucid, puesto_real LIKE adtb00004.nom_puesto, novedad VARCHAR(20), fecha_salida DATE, desc_puesto VARCHAR(150), educacion VARCHAR(100), fecha_cambio DATE, tipo_documento VARCHAR(50), cod_puesto_sirla INT, cod_educa_sirla INT, fechainiciov DATE, fechafinvac DATE END RECORD, fecha_1 CHAR(8), fecha_ini_vac,fecha_fin_vac,fecha_sal,fecha_c CHAR(8) DEFINE p_fech_ini,p_fech_fin CHAR(8), p_f_ini,p_f_fin CHAR(8), p_cedula CHAR(12), xnumero_tss CHAR(25), fecha_ini_v,fecha_fin_v DATE, xsucid VARCHAR(3) ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE nombre_mes CHAR(15) DEFINE l smallint DEFINE normal CHAR(2), nombres CHAR(60) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 FORMAT ON EVERY ROW LET fecha_ini_vac = fecha_ini_v USING "DDMMYYYY" LET fecha_fin_vac = fecha_fin_v USING "DDMMYYYY" LET fecha_1 = x.fech_efec USING "ddmmyyyy" LET p_f_ini = x.fech_nac USING "ddmmyyyy" LET fecha_sal = x.fecha_salida USING "ddmmyyyy" LET fecha_c = x.fecha_cambio USING "ddmmyyyy" LET xsucid = x.sucid USING "&&&" LET rcol = "C2" LET xi = cnt CALL pru_new_dde(x.novedad,rcol,xi) LET rcol = "C4" LET xi = cnt CALL pru_new_dde("C",rcol,xi) LET rcol = "C5" LET xi = cnt CALL pru_new_dde(x.cedula,rcol,xi) LET nombres = x.nom1_emp CLIPPED," ",x.nom2_emp CLIPPED LET rcol = "C6" LET xi = cnt CALL pru_new_dde(nombres,rcol,xi) LET rcol = "C7" LET xi = cnt CALL pru_new_dde(x.apell1_emp,rcol,xi) LET rcol = "C8" LET xi = cnt CALL pru_new_dde(x.apell2_emp,rcol,xi) LET rcol = "C9" LET xi = cnt CALL pru_new_dde(x.sexo,rcol,xi) LET rcol = "C10" LET xi = cnt CALL pru_new_dde(x.nacionalidad,rcol,xi) LET rcol = "C11" LET xi = cnt CALL pru_new_dde(p_f_ini,rcol,xi) LET rcol = "C12" LET xi = cnt CALL pru_new_dde(x.sueldo_ac,rcol,xi) IF x.novedad <> 'Salida' THEN LET rcol = "C13" LET xi = cnt CALL pru_new_dde(fecha_1,rcol,xi) END IF IF x.novedad = 'Salida' THEN LET rcol = "C14" LET xi = cnt CALL pru_new_dde(fecha_sal,rcol,xi) END IF LET rcol = "C15" LET xi = cnt CALL pru_new_dde(x.nom_puesto,rcol,xi) LET rcol = "C16" LET xi = cnt CALL pru_new_dde(x.puesto_real,rcol,xi) LET rcol = "C17" LET xi = cnt CALL pru_new_dde(fecha_ini_vac,rcol,xi) LET rcol = "C18" LET xi = cnt CALL pru_new_dde(fecha_fin_vac,rcol,xi) # AQUI SOLO SE ACTUALIZA SI EL FORMULARIO ES DGT-4 LET rcol = "C19" LET xi = cnt CALL pru_new_dde(x.turno,rcol,xi) LET rcol = "C20" LET xi = cnt CALL pru_new_dde(xsucid,rcol,xi) IF tipo_reporte = 'DGT4' THEN LET rcol = "C21" LET xi = cnt CALL pru_new_dde(fecha_c,rcol,xi) END IF LET rcol = "C32" LET xi = cnt CALL pru_new_dde(x.educacion,rcol,xi) LET rcol = "C33" LET xi = cnt CALL pru_new_dde('Ninguna-4714',rcol,xi) LET cnt = cnt + 1 END REPORT REPORT atexto(x,fecha_ini_v,fecha_fin_v,p_cedula) DEFINE x RECORD nomina LIKE adtb00003.nomina, num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp CHAR(20), nom2_emp CHAR(20), apell1_emp CHAR(20), apell2_emp CHAR(20), cedula LIKE adtb00003.cedula, serie LIKE adtb00003.serie, fech_nac LIKE adtb00003.fech_nac, fech_efec LIKE adtb00003.fech_efec, sexo LIKE adtb00021.sexo, nacionalidad CHAR(10), nom_puesto LIKE adtb00004.otra_descripcion, sueldo_ac LIKE adtb00003.sueldo_ac, numero_tss LIKE adtb00003.cod_seg1, turno LIKE adtb00003.licencia, sucid LIKE adtb00003.sucid, puesto_real LIKE adtb00004.nom_puesto, novedad VARCHAR(20), fecha_salida DATE, desc_puesto VARCHAR(150), educacion VARCHAR(100), fecha_cambio DATE, tipodocumento VARCHAR(50), cod_puesto_sirla INT, cod_educa_sirla INT, fechainiciov DATE, fechafinvac DATE END RECORD, fecha_1 CHAR(8), fecha_ini_vac,fecha_fin_vac,fecha_sal,fecha_c CHAR(8) DEFINE p_fech_ini,p_fech_fin CHAR(8), p_f_ini,p_f_fin CHAR(8), p_cedula CHAR(12), xnumero_tss CHAR(25), fecha_ini_v,fecha_fin_v DATE, xsucid VARCHAR(3) DEFINE detalle RECORD tiponovedad CHAR(3), tipodocumento CHAR(1), numerodocumento CHAR(25), nombres CHAR(50), primerapellido , segundoapellido CHAR(40), fechanacimiento CHAR(8), sexo CHAR(1), salario CHAR(16), fechaIngreso CHAR(8), fechasalida CHAR(8), ocupacion CHAR(6), ocupaciondescripcion CHAR(150), iniciovacaciones CHAR(8), finvacaciones CHAR(8), turno CHAR(6), localidad CHAR(6), nacionalidad CHAR(3), fechacambio CHAR(8), niveleducacion CHAR(5), discapacidad CHAR(50) END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION OUTPUT PAGE LENGTH noregistro ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 0 PAGE LENGTH 650 FORMAT FIRST PAGE HEADER IF tipo_reporte = 'DGT3' THEN PRINT "E","T3"," 101521262",fecha2 USING "MMYYYY" LET noregistro = noregistro +1 ELSE PRINT "E","T4"," 101521262",fecha2 USING "MMYYYY" LET noregistro = noregistro +1 END IF ON EVERY ROW LET fecha_1 = x.fech_efec USING "ddmmyyyy" LET p_f_ini = x.fech_nac USING "ddmmyyyy" LET fecha_sal = x.fecha_salida USING "ddmmyyyy" LET fecha_c = x.fecha_cambio USING "ddmmyyyy" LET xsucid = x.sucid USING "&&&" IF x.novedad = 'Ingreso' THEN LET detalle.tiponovedad = "NI" END IF IF x.novedad = 'Salida' THEN LET detalle.tiponovedad = "NS" END IF IF x.novedad = 'Cambio' THEN LET detalle.tiponovedad = "NC" END IF IF x.tipodocumento = "CEDULA" THEN LET detalle.tipodocumento = "C" END IF LET detalle.numerodocumento = x.cedula CLIPPED LET detalle.nombres = x.nom1_emp CLIPPED," ",X.nom2_emp CLIPPED LET detalle.primerapellido = x.apell1_emp CLIPPED LET detalle.segundoapellido = x.apell2_emp CLIPPED LET detalle.fechanacimiento = x.fech_nac USING "DDMMYYYY" LET detalle.sexo = x.sexo LET detalle.salario =x.sueldo_ac USING "&&&&&&&&&&&&&.##" LET detalle.fechaIngreso =x.fech_efec USING "ddmmyyyy" IF X.fecha_salida IS NOT NULL THEN LET detalle.fechasalida = X.fecha_salida USING "ddmmyyyy" ELSE LET detalle.fechasalida = " " END IF LET detalle.ocupacion = x.cod_puesto_sirla USING "&&&&&&" LET detalle.ocupaciondescripcion = x.desc_puesto CLIPPED LET detalle.iniciovacaciones = x.fechainiciov USING "DDMMYYYY" LET detalle.finvacaciones = x.fechafinvac USING "DDMMYYYY" LET detalle.turno = x.turno CLIPPED LET detalle.localidad = xsucid IF tipo_Reporte = "DGT4" THEN IF x.fecha_cambio IS NOT NULL THEN LET detalle.fechacambio = x.fecha_cambio USING "ddmmyyyy" ELSE LET detalle.fechacambio = " " END IF END IF IF tipo_reporte = 'DGT4' THEN LET detalle.nacionalidad = '001' ELSE LET detalle.nacionalidad = ' ' LET detalle.fechacambio = ' ' END IF DISPLAY "data: ",x.cod_educa_sirla LET detalle.niveleducacion = x.cod_educa_sirla USING "&&&&&" LET detalle.discapacidad = '4714' IF tipo_Reporte = 'DGT4' THEN PRINT "D",detalle.* ELSE PRINT "D", detalle.tiponovedad , detalle.tipodocumento , detalle.numerodocumento , detalle.nombres , detalle.primerapellido , detalle.segundoapellido , detalle.fechanacimiento , detalle.sexo , detalle.salario , detalle.fechaIngreso , detalle.ocupacion , detalle.ocupaciondescripcion , detalle.iniciovacaciones , detalle.finvacaciones , detalle.turno , detalle.localidad , ' ', detalle.niveleducacion , detalle.discapacidad { PRINT "D","|", detalle.tiponovedad ,"|", detalle.tipodocumento ,"|", detalle.numerodocumento ,"|", detalle.nombres ,"|", detalle.primerapellido ,"|", detalle.segundoapellido ,"|", detalle.fechanacimiento ,"|", detalle.sexo ,"|", detalle.salario ,"|", detalle.fechaIngreso ,"|", detalle.ocupacion ,"|", detalle.ocupaciondescripcion ,"|", detalle.iniciovacaciones ,"|", detalle.finvacaciones ,"|", detalle.turno ,"|", detalle.localidad ,"|", detalle.niveleducacion ,"|", detalle.discapacidad } END IF ON LAST ROW PRINT "S",noregistro USING "&&&&&&" END REPORT FUNCTION fechaV() DEFINE dias_lab SMALLINT LET dias_lab = 0 WHILE dias_lab < 15 SELECT a.dias FROM notb00012 a WHERE a.dias = day(fecha_c) AND a.cod_mes = MONTH(fecha_c) IF STATUS = NOTFOUND THEN IF WEEKDAY(fecha_c) <> 0 THEN LET dias_lab = dias_lab + 1 END IF END IF LET fecha_c = fecha_c + 1 IF dias_lab > 13 THEN EXIT WHILE END IF END WHILE END FUNCTION FUNCTION pru_new_dde(xval,xcol,i) DEFINE celda,rval,xval,xcol STRING DEFINE i INTEGER LET celda = fila_excel,i USING "<<<<&",xcol CLIPPED LET rval = xval #CALL fgl_winmessage("PROGRAMA",prog,"stop") #CALL fgl_winmessage("FILE",arch_pc,"stop") # CALL fgl_winmessage("CELDA",celda,"stop") # CALL fgl_winmessage("rVAL",rval,"stop") CALL ui.Interface.frontCall("WINDDE","DDEPoke", [prog,arch_pc,celda,rval], [p_res] ) #CALL fgl_winmessage("P_RES",p_res,"stop") CALL chqDdeError(p_res,"DDEPoke "||celda) { MESSAGE "Salvando la planilla ",file CLIPPED," !" CALL ui.Interface.refresh() LET p_cmd="[save()]" CALL ui.Interface.frontCall("WINDDE","DDEExecute", [prog,file,p_cmd], [p_res] ) IF p_res THEN CALL fgl_winmessage("Planilla salvada", "Nombre = "||file, "information") ELSE CALL chqDdeError(p_res,"DDEExecute save") END IF CAL ui.Interface.frontCall("WINDDE","DDEFinish", [prog,file], [p_res] ) CALL chqDdeError(p_res,"DDEFinish") CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [p_res] ) CALL chqDdeError(p_res,"DDEFinishAll") } END FUNCTION FUNCTION chqDdeError(p_res,p_msg) DEFINE p_res INTEGER, p_msg STRING, m_err STRING, m_log STRING IF p_res THEN RETURN END IF CALL ui.Interface.frontCall("WINDDE","DDEError",[],[m_err]) CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [p_res] ) LET m_log="DDE Error: ",m_err CLIPPED," (",p_msg,")" #CALL errorlog(m_log) LET m_log="Se ha producido un Error en '",p_msg CLIPPED,"'. Para mas detalle revise el LOG de errores." CALL fgl_winmessage("DDE Error", m_log, "stop") EXIT PROGRAM END FUNCTION