Files
MBS/PROYECTO/nodir/noprrp029.4gl
T

784 lines
24 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP029
OBJETIVO : REPORTE DE NOMINAS DE PAGO (BUSCA DEL HISTORICO)
PROGRAMADOR : Ing. Juan F. Soto
FECHA REALIZACION : Febrero 19, 1996
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
DEFINE idx_k,idx_z,p,m SMALLINT
DEFINE totales ARRAY[50] OF DECIMAL(12,2)
DEFINE tot_gral ARRAY[50] OF DECIMAL(12,2)
DEFINE primera,sigue CHAR(1)
DEFINE nombre_mes2 CHAR(12)
{DEFINE tot_gral ARRAY[50] OF RECORD
cod_mov SMALLINT,
valor DECIMAL(12,2)
END RECORD}
DEFINE o,kq SMALLINT
# Variable de los encabezados
DEFINE f ARRAY[100] 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
END RECORD
# Variable de los encabezados
DEFINE j ARRAY[100] 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
END RECORD
FUNCTION noprrp029()
## DEFINICION DE LOS REGISTROS DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE e ARRAY[100] 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,
no_columna INTEGER
END RECORD
DEFINE imprime 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
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp001 FROM "nofmrp001"
DISPLAY FORM nofmrp001
CALL pantalla()
DISPLAY "noprrp029" AT 4,3
DISPLAY "Nomina de Pago (Historico)" AT 6,28
## INDICA EL TIPO DE PAPEL NECESARIO PARA EL REPORTE. 1 - PAPEL 9 1/2 X 11
## 2 - PAPEL 14 7/8 X 11
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
LET primera = "S"
## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE
INPUT BY NAME per_nomi.num_nomi,per_nomi.tipo_emp
AFTER FIELD num_nomi
IF per_nomi.num_nomi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_nomi
END IF
AFTER FIELD tipo_emp
IF per_nomi.num_nomi IS NOT NULL THEN
IF per_nomi.tipo_emp IS NOT NULL THEN
SELECT num_nomi,tipo_emp,fecha_del,fecha_al
INTO per_nomi.num_nomi,per_nomi.tipo_emp,
per_nomi.fecha_del,per_nomi.fecha_al
FROM notb00010
WHERE num_nomi = per_nomi.num_nomi and
tipo_emp = per_nomi.tipo_emp
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
ELSE
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_emp
END IF
END IF
DISPLAY BY NAME per_nomi.fecha_del,per_nomi.fecha_al
SELECT UNIQUE a.descrip INTO nombre_mes FROM mestable a
WHERE a.mes = MONTH(per_nomi.fecha_del)
SELECT UNIQUE a.descrip INTO nombre_mes2 FROM mestable a
WHERE a.mes = MONTH(per_nomi.fecha_al)
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
# Busqueda de los encabezados
DECLARE accion CURSOR FOR
SELECT UNIQUE a.primer_enc,a.segundo_enc,a.tercer_enc,c.cod_mov,b.clase_mov
FROM notb00002 a,notb00016 b,notb00013 c
WHERE c.cod_mov_a = b.cod_mov and
b.num_nomi = per_nomi.num_nomi AND b.tipo_emp = per_nomi.tipo_emp AND
a.status_t is null and
a.cod_mov = c.cod_mov
ORDER BY 4
LET idx = 1
FOREACH accion INTO j[idx].*
IF j[idx].clase_mov = "I" or
j[idx].clase_mov = "E" or
j[idx].clase_mov = "P" THEN
LET j[idx].no_columna = 1
END IF
IF j[idx].clase_mov = "D" or
j[idx].clase_mov = "S" or
j[idx].clase_mov = "R" THEN
LET j[idx].no_columna = 2
END IF
LET f[idx].primer_enc = j[idx].primer_enc
LET f[idx].segundo_enc = j[idx].segundo_enc
LET f[idx].tercer_enc = j[idx].tercer_enc
LET f[idx].cod_mov = j[idx].cod_mov
LET f[idx].clase_mov = j[idx].clase_mov
LET f[idx].no_columna = j[idx].no_columna
LET idx = idx + 1
END FOREACH
LET idx = idx - 1
# Validacion de colunnas de ingresos
LET m = 1
FOR p = 1 TO idx
IF f[p].no_columna = 1 THEN
LET j[m].primer_enc = f[p].primer_enc
LET j[m].segundo_enc = f[p].segundo_enc
LET j[m].tercer_enc = f[p].tercer_enc
LET j[m].cod_mov = f[p].cod_mov
LET j[m].clase_mov = f[p].clase_mov
LET j[m].no_columna = f[p].no_columna
LET m = m + 1
END IF
END FOR
LET j[m].primer_enc = "________"
LET j[m].segundo_enc = "|TOTAL |"
LET j[m].tercer_enc = "|GANADO|"
LET j[m].cod_mov = null
LET j[m].no_columna = null
LET m = m + 1
# Validacion de colunnas descuentos
FOR p = 1 TO idx
IF f[p].no_columna = 2 THEN
LET j[m].primer_enc = f[p].primer_enc
LET j[m].segundo_enc = f[p].segundo_enc
LET j[m].tercer_enc = f[p].tercer_enc
LET j[m].cod_mov = f[p].cod_mov
LET j[m].clase_mov = f[p].clase_mov
LET j[m].no_columna = f[p].no_columna
LET m = m + 1
END IF
END FOR
LET j[m].primer_enc = "________"
LET j[m].segundo_enc = "|TOTAL |"
LET j[m].tercer_enc = "|DESC. |"
LET j[m].cod_mov = null
LET idx = m
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE Y
## SE DECLARA EL CURSOR PARA BUSCAR LA INFORMACION SELECCIONADA
DECLARE accion1 CURSOR FOR
SELECT UNIQUE a.num_emp,b.nom1_emp,b.nom2_emp,b.apell1_emp,b.apell2_emp,
d.cod_mov,sum(a.cantidad),a.clase_mov,sum(a.valor),
b.departamento,
c.cuenta_no
FROM notb00016 a,adtb00003 b,notb00013 d,outer cgtb00002 c
WHERE a.num_nomi = per_nomi.num_nomi AND a.tipo_emp = per_nomi.tipo_emp AND
a.num_emp = b.num_emp AND
a.departamento = c.departamento AND
a.fecha between per_nomi.fecha_del and per_nomi.fecha_al AND
a.status_t is null and
a.cod_mov not in (100,101,102,110) and
a.cod_mov = d.cod_mov_a
GROUP BY 1,2,3,4,5,6,8,10,11
ORDER BY 1,6
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)
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT reporte29 TO "C:\\archivo"
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
FOREACH accion1 INTO imprime.*
# Acumula el total de descuentos por empleado
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
RETURN
END IF
IF imprime.clase_mov = "I" or
imprime.clase_mov = "E" or
imprime.clase_mov = "P" THEN
LET imprime.no_columna = 1
END IF
IF imprime.clase_mov = "D" or
imprime.clase_mov = "S" THEN
LET imprime.no_columna = 2
END IF
OUTPUT TO REPORT reporte29(imprime.*,per_nomi.num_nomi,per_nomi.tipo_emp,
per_nomi.fecha_del,per_nomi.fecha_al,nombre_mes, nombre_mes2)
END FOREACH
FINISH REPORT reporte29
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT reporte29(x,no_nomina,tipo,fecha1,fecha2,nombre,nombre2)
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
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE nombre_depto CHAR(20)
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(5)
DEFINE fecha1,fecha2 DATE
DEFINE segunda,tipo CHAR(1)
DEFINE p_codigo,no_emp,k,h,n,ficha,no_nomina,l 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)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
ORDER BY x.departamento,x.num_emp,x.no_columna,x.cod_mov
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 27, ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
## 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
## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA-
LET l = (171 - LENGTH(varia))/2
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, doce,comp_on,
COLUMN 2, "Nomina No.:",
COLUMN 15, no_nomina,
COLUMN 30, negrillas_on,
COLUMN 31, doble_on,
COLUMN 23, p_companias.nombre CLIPPED,
negrillas_off,
doble_off clipped,
COLUMN 104," Pag. ",pageno using "###"
PRINT COLUMN 2, "noprrp029",
COLUMN 63, "Nomina Empleados ",
COLUMN L, varia ,
COLUMN 145, today using "dd/mm/yy"
PRINT COLUMN 42, "Nomina Regular del",
COLUMN 62, DAY(fecha1) using "&&",
COLUMN 66, "de",
COLUMN 70, nombre clipped,
COLUMN 83, "Al",
COLUMN 87, DAY(fecha2) using "&&",
COLUMN 91, nombre2 clipped,
COLUMN 103, "de",
COLUMN 107, YEAR(fecha2) using "####",
COLUMN 145, time
SKIP 1 LINE
PRINT COLUMN 1, "-----------------------------------";
LET m = 36
FOR i = 1 to idx
PRINT COLUMN m, "------------";
LET m = m + 12
END FOR
PRINT COLUMN m, "--------"
# PRINT COLUMN 77, "Total";
LET m = 56
FOR i = 1 to idx
PRINT 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, "--------"
## 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
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
skip 1 line
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 i = 1
LET n = 38
LET t_desc1 = 0
LET idx_k = 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.no_columna = 1 THEN
LET idx_k = idx_k + 1
END IF
IF x.cod_mov = 1 THEN
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 notb00016
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 notb00016
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
{
# Para indagar cuantos ingresos hay en el arreglo para posterior
# investigacion de cuantos ingresos imprimio
LET idx_z = 0
FOR k = 1 TO idx
IF j[k].no_columna = 1 THEN
LET idx_z = idx_z + 1
END IF
END FOR
# Rellenar con ceros los ingresos que el empleado no tiene
IF idx_z != idx_k THEN
LET idx_z = idx_z - idx_k
# LET n = n - 11
FOR k = 1 TO idx_z
PRINT COLUMN n,idx_z USING "##,###.##";
LET totales[k] = totales[k] + 0
LET tot_gral[k] = tot_gral[k] + 0
LET i = k + 1
LET n = n + 11
LET p = p + 1
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
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
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
END IF
PRINT COLUMN n,"|", t_desc1 using "##,###.##","|";
PRINT COLUMN n+11, neto USING "(((,((#.##)"
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,t_desc using "###,###.##"," ",
t_neto using "###,###.##",
negrillas_off
# 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 ";
PRINT 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
PRINT COLUMN 1,normal,comp_off
END REPORT