GLOBALS "noprgb000.4gl" REPORT nomina_ing_4rp(x,no_nomina,tipo,fecha1,fecha2,nombre,nombre2,f) DEFINE x RECORD num_emp LIKE notb00008.num_emp, nom1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom2_emp, apell1_emp LIKE adtb00003.apell1_emp, apell2_emp LIKE adtb00003.apell2_emp, cod_mov LIKE notb00008.cod_mov, cantidad LIKE notb00008.cantidad, clase_mov CHAR(1), valor LIKE notb00008.valor, departamento LIKE adtb00003.departamento, cuenta_no LIKE cgtb00002.cuenta_no, no_columna SMALLINT, nombre_cia LIKE companias.nombre, descrip_mov LIKE notb00002.descrip_mov END RECORD # Variable de los encabezados DEFINE f DYNAMIC ARRAY OF RECORD primer_enc LIKE notb00002.primer_enc, segundo_enc LIKE notb00002.segundo_enc, tercer_enc LIKE notb00002.tercer_enc, cod_mov LIKE notb00002.cod_mov, clase_mov LIKE notb00008.clase_mov, no_columna INTEGER, campo VARCHAR(25) END RECORD ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE nombre_depto,nombre_mov CHAR(80) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE hora CHAR(25) DEFINE fecha1,fecha2 DATE DEFINE segunda,tipo CHAR(1) DEFINE p_codigo,no_emp,k,h,n,ficha,no_nomina,l,cuenta_emp SMALLINT DEFINE nombre,nombre2,varia CHAR(11) DEFINE t_sal_hora,t_horas,sal_hora,horas DECIMAL(7,2) DEFINE t_salario1,salario,salario1 DECIMAL(8,2) DEFINE t_desc1,t_desc,neto,monto_desc,t_ganado,t_ganado_h,valor1, t_t_horas,t_t_valor_h,t_valor_h DECIMAL(10,2) DEFINE t_t_valor,t_t_neto,t_neto,t_t_Desc,t_t_ganado DECIMAL(12,2) ORDER BY x.departamento,x.num_emp,x.no_columna,x.cod_mov FORMAT PAGE HEADER LET hora = CURRENT ## ASIGNACION DEL TIPO DE NOMINA A IMPRIMIR IF tipo = "Q" THEN LET varia = "QUINCENALES" END IF IF tipo = "S" THEN LET varia = "SEMANALES" END IF IF tipo = "V" THEN LET varia = "VENDEDORES" END IF ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINTX no_nomina,X.nombre_cia, varia ,hora,fecha1,fecha2,hora FOR idx=1 TO f.getLength() PRINTX END FOR { ON EVERY ROW PRINTX x.nom2_emp COLUMN m, j[i].primer_enc; LET m = m + 11 END FOR PRINT " " LET m = 56 FOR i = 1 to idx PRINT COLUMN m, j[i].segundo_enc; LET m = m + 11 END FOR PRINT " " PRINT COLUMN 1, "Ficha", COLUMN 7, "Nombre"; LET m = 56 FOR i = 1 to idx PRINT COLUMN m, j[i].tercer_enc; LET m = m + 11 END FOR PRINT COLUMN m+3, "NETO" LET m = 56 FOR i = 1 TO idx PRINT COLUMN m, "(",j[i].cod_mov using "&&&",")"; LET m = m + 11 END FOR PRINT " " PRINT COLUMN 1, "-----------------------------------"; LET m = 36 FOR i = 1 to idx PRINT COLUMN m, "------------"; LET m = m + 12 END FOR PRINT COLUMN m, "--------------" SKIP 1 LINE ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.departamento LET t_sal_hora = 0 LET t_ganado = 0 LET t_desc = 0 LET t_neto = 0 LET t_horas = 0 LET t_valor_h = 0 LET cuenta_emp = 0 IF t_t_horas is null THEN LET t_t_horas = 0 END IF IF t_t_valor_h is null THEN LET t_t_valor_h = 0 END IF # Inicializacion del arreglo para los totales por departamentos FOR i = 1 TO idx LET totales[i] = 0 END FOR IF primera = "S" THEN FOR i = 1 TO idx LET tot_gral[i] = 0 END FOR LET primera = "N" END IF #-------------------------------------------------------------------------- IF t_t_ganado is null THEN LET t_t_ganado = 0 END IF IF t_t_desc is null THEN LET t_t_desc = 0 END IF IF t_t_neto is null THEN LET t_t_neto = 0 END IF BEFORE GROUP OF x.num_emp LET t_ganado_h = 0 LET neto = 0 LET valor1 = 0 LET sigue = "N" LET segunda = "S" LET p = 1 LET n = 38 LET t_desc1 = 0 LET sal_hora = 0 PRINT COLUMN 1, x.num_emp using "&&&&", COLUMN 7, x.nom1_emp clipped," ", x.apell1_emp clipped; ON EVERY ROW IF x.cod_mov = 1 THEN LET i = 1 IF x.cantidad is null THEN LET x.cantidad = 0 END IF IF x.cantidad > 0 THEN LET sal_hora = x.valor/x.cantidad END IF PRINT COLUMN n-3, sal_hora using "###.##", COLUMN n+7, x.cantidad USING "###.##"," ", COLUMN n+14, x.valor USING "###,###.##"; LET sigue = "S" LET t_sal_hora = t_sal_hora + sal_hora LET t_horas = t_horas + x.cantidad LET n = n + 25 LET totales[i] = totales[i] + x.valor LET tot_gral[i] = tot_gral[i] + x.valor # Acumulacion de los Ingresos IF x.clase_mov = "I" or x.clase_mov = "P" or x.clase_mov = "E" THEN LET t_ganado_h = t_ganado_h + x.valor END IF END IF IF sigue = "N" THEN LET sigue = "S" LET n = n + 13 END IF IF x.valor is null THEN LET x.valor = 0 END IF IF x.cod_mov > 1 THEN LET segunda = "N" IF j[i].cod_mov = x.cod_mov THEN # Este sum es porque el interes es un movimiento y hay que sumarlo con el # valor de la cuota IF x.cod_mov = 12 THEN SELECT valor INTO valor1 FROM notb00008 WHERE cod_mov = 110 and num_emp = x.num_emp and num_nomi = no_nomina and tipo_emp = tipo IF valor1 is null THEN LET valor1 = 0 END IF LET x.valor = x.valor + valor1 END IF LET totales[i] = totales[i] + x.valor LET tot_gral[i] = tot_gral[i] + x.valor # Acumulacion de los Ingresos IF x.clase_mov = "I" or x.clase_mov = "P" or x.clase_mov = "E" THEN LET t_ganado_h = t_ganado_h + x.valor END IF # Acumulacion de los descuentos IF x.clase_mov = "R" or x.clase_mov = "S" or x.clase_mov = "D" THEN LET t_desc1 = t_desc1 + x.valor END IF PRINT COLUMN n,x.valor USING "###,###.##"; ELSE FOR k = i TO idx IF j[k].cod_mov = x.cod_mov THEN IF x.cod_mov = 12 THEN SELECT valor INTO valor1 FROM notb00008 WHERE cod_mov = 110 and num_emp = x.num_emp and num_nomi = no_nomina and tipo_emp = tipo IF valor1 is null THEN LET valor1 = 0 END IF LET x.valor = x.valor + valor1 END IF PRINT COLUMN n,x.valor USING "###,###.##"; LET totales[k] = totales[k] + x.valor LET tot_gral[k] = tot_gral[k] + x.valor # Acumulacion de los Ingresos IF x.clase_mov = "I" or x.clase_mov = "P" or x.clase_mov = "E" THEN LET t_ganado_h = t_ganado_h + x.valor END IF # Acumulacion de los descuentos IF x.clase_mov = "R" or x.clase_mov = "S" or x.clase_mov = "D" THEN LET t_desc1 = t_desc1 + x.valor END IF LET i = k EXIT FOR ELSE IF j[k].cod_mov is not null THEN PRINT COLUMN n,0 USING "###,###.##"; LET totales[k] = totales[k] + 0 LET tot_gral[k] = tot_gral[k] + 0 END IF LET n = n + 11 LET p = p + 1 END IF END FOR END IF LET p = p + 1 LET n = n+11 END IF LET i = i + 1 AFTER GROUP OF x.no_columna IF segunda = "S" THEN LET n = n - 11 FOR k = 1 TO idx IF j[k].no_columna = x.no_columna THEN IF j[k].cod_mov != 1 THEN IF j[k].cod_mov is not null THEN PRINT COLUMN n,0 USING "###,###.##"; LET totales[k] = totales[k] + 0 LET tot_gral[k] = tot_gral[k] + 0 LET i = k + 1 END IF END IF LET n = n + 11 LET p = p + 1 END IF END FOR END IF IF x.no_columna = 1 THEN PRINT COLUMN n,"|", t_ganado_h USING "###,###.##","|"; LET totales[i] = totales[i] + t_ganado_h LET tot_gral[i] = tot_gral[i] + t_ganado_h END IF AFTER GROUP OF x.num_emp IF no_emp is null THEN LET no_emp = 0 END IF LET no_emp = no_emp + 1 LET cuenta_emp = cuenta_emp + 1 IF t_neto IS NULL THEN LET t_neto = 0 END IF IF t_ganado_h is null THEN LET t_ganado_h = 0 END IF IF t_desc1 is null THEN LET t_desc1 = 0 END IF LET neto = t_ganado_h + t_desc1 IF p = idx THEN PRINT COLUMN n+1,"|", t_desc1 using "###,###.##","|"; PRINT COLUMN n+11, neto USING "(((,((#.##)" END IF IF p != idx THEN LET p = idx - p LET p = (i + p) - 1 FOR k = i TO p IF j[k].cod_mov is not null THEN PRINT COLUMN n, 0 using "###,###.##"," "; LET totales[k] = totales[k] + 0 LET tot_gral[k] = tot_gral[k] + 0 LET n = n + 11 END IF END FOR PRINT COLUMN n,"|", t_desc1 using "###,###.##","|"; PRINT COLUMN n+11, neto USING "(((,((#.##)" END IF LET t_ganado = t_ganado + t_ganado_h LET t_desc = t_desc + t_desc1 LET t_neto = t_neto + neto AFTER GROUP OF x.departamento IF o is null THEN LET o = 1 END IF #------------------------------------------------------------------------------- SELECT nom_dpto INTO nombre_depto FROM adtb00001 WHERE departamento = x.departamento IF status = notfound THEN LET status = 0 END IF PRINT negrillas_on # Impresion de los totales de los departamentos PRINT COLUMN 4,x.departamento USING "#####"," ",nombre_depto; IF t_t_valor is null THEN LET t_t_valor = 0 END IF PRINT COLUMN 35, t_sal_hora using "###.##", COLUMN 43, t_horas using "#,###.##"; LET t_t_horas = t_t_horas + t_sal_hora LET t_t_valor_h = t_t_valor_h + t_horas LET m = 38 LET sigue = "N" IF j[1].cod_mov = 1 THEN LET m = m + 15 LET sigue = "S" END IF IF sigue = "N" THEN LET m = m + 15 END IF LET idx = idx - 1 LET m = m - 1 FOR i= 1 TO idx PRINT COLUMN m, totales[i] using "#,###,###.##"; LET m = m + 11 END FOR LET idx = idx + 1 PRINT COLUMN n+1, t_desc using "#,###,###.##"," ", t_neto using "#,###,###.##" PRINT negrillas_off # NUMERO DE EMPLEADOS PRINT COLUMN 4, "NO. EMPLEADOS DEPTO: ",cuenta_emp USING "####" PRINT " " # Acumulacion de Totales generales LET t_t_ganado = t_t_ganado + t_ganado LET t_t_desc = t_t_desc + t_desc LET t_t_neto = t_t_neto + t_neto ON LAST ROW PRINT negrillas_on PRINT COLUMN 4, "Total General ", COLUMN 33, t_t_horas USING "#,###.##", COLUMN 42, t_t_valor_h using "##,###.##"; LET t_t_horas = 0 LET t_t_valor_h = 0 LET m = 38 LET sigue = "N" IF j[1].cod_mov = 1 THEN LET m = m + 14 LET sigue = "S" END IF IF sigue = "N" THEN LET m = m + 14 END IF LET idx = idx - 1 FOR i= 1 TO idx PRINT COLUMN m, tot_gral[i] using "###,###.##"; LET m = m + 11 END FOR IF t_t_desc < 0 THEN LET t_t_desc = t_t_desc * -1 END IF LET t_t_neto = t_t_ganado - t_t_desc PRINT COLUMN m,t_t_desc using "###,###.##"," ", t_t_neto using "####,###.##", negrillas_off PRINT COLUMN 4, "Total Empleados ", no_emp using "<<<" LET t_t_ganado = 0 LET t_t_desc = 0 LET t_t_neto = 0 LET no_emp = 0 } END REPORT