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

476 lines
16 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP021
OBJETIVO : LISTAR LOS MOVIMIENTOS DE COOPERATIVA
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Septiembre 03, 1993
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
FUNCTION noprrp021()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE salir CHAR(1)
DEFINE acumula RECORD
cod_mov LIKE notb00008.cod_mov,
num_emp LIKE notb00008.num_emp,
valor DECIMAL(12,2)
END RECORD
DEFINE cooper RECORD
num_emp LIKE notb00008.num_emp,
departamento LIKE adtb00003.departamento,
nivel_emp LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
cod_mov LIKE notb00008.cod_mov,
balance DECIMAL(10,2),
valor LIKE notb00008.valor,
num_nomi LIKE notb00008.num_nomi,
tipo_emp LIKE notb00008.tipo_emp,
fecha_al LIKE notb00010.fecha_al
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp021 FROM "nofmrp021"
DISPLAY FORM nofmrp021
CALL pantalla()
DISPLAY "noprrp021" AT 4,3
DISPLAY "Descuentos de Cooperativa" AT 6,27
## 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 = 1
CALL msgrp000(tipo_papel)
## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE
INPUT BY NAME cooper.num_nomi,cooper.tipo_emp
AFTER INPUT
IF cooper.num_nomi is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_nomi
END IF
IF cooper.tipo_emp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_emp
END IF
SELECT fecha_al INTO cooper.fecha_al FROM notb00010
WHERE num_nomi = cooper.num_nomi and
tipo_emp = cooper.tipo_emp
EXIT INPUT
END INPUT
{ CONSTRUCT criterio ON a.cod_mov
FROM cod_mov}
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET selec1 =
"SELECT a.cod_mov,a.num_emp,a.valor FROM notb00008 a,adtb00003 b ",
"WHERE a.cod_mov in (11,12,13,14,19,25,27) and a.num_nomi = ? AND ",
" a.tipo_emp = ? AND a.num_emp = b.num_emp AND ",
" (b.status_t IS NULL OR b.status_t NOT IN ('D','T','E')) ",
"ORDER BY 2,1"
DISPLAY "Buscando Acumulados ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
PREPARE comando1 FROM selec1
DECLARE busca SCROLL CURSOR FOR comando1
OPEN busca USING cooper.num_nomi,cooper.tipo_emp
DISPLAY "Buscando Informacion... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
LET SELEC =
"SELECT UNIQUE a.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ",
" b.nom1_emp,b.apell1_emp,a.cod_mov,sum(a.valor) ",
"FROM adtb00003 b,notb00008 a,notb00002 c ",
"WHERE a.num_emp = b.num_emp AND a.cod_mov = c.cod_mov AND ",
" b.nomina=? and a.fecha<=? and a.cod_mov in(11,12,19,13,14,25,27) ",
" and ( b.status_t is null or b.status_t NOT IN('T','D','E')) ",
"GROUP BY 1,2,3,4,5,6,7 ORDER BY 1,7 "
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)
## SE PREPARA LA INFORMACION SELECCIONADA
PREPARE comando FROM selec
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
## SE DECLARA EL CURSOR PARA BUSCAR LA INFORMACION SELECCIONADA
DECLARE accion CURSOR FOR comando
OPEN accion USING cooper.tipo_emp,cooper.fecha_al
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT imp_coop TO "C:\\archivo"
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
WHILE status != notfound
FETCH accion INTO cooper.*
IF status = notfound THEN
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET salir = "N"
LET idx = 1
WHILE salir != "S"
FETCH ABSOLUTE idx busca INTO acumula.*
IF status = notfound THEN
LET idx = 1
LET status = 0
EXIT WHILE
END IF
LET idx = idx + 1
LET cooper.valor = 0
IF acumula.num_emp = cooper.num_emp and
acumula.cod_mov = cooper.cod_mov THEN
LET cooper.valor = acumula.valor
LET idx = 1
EXIT WHILE
END IF
END WHILE
OUTPUT TO REPORT imp_coop(cooper.*)
END WHILE
FINISH REPORT imp_coop
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT imp_coop(x)
DEFINE x RECORD
num_emp LIKE notb00008.num_emp,
departamento LIKE adtb00003.departamento,
nivel_emp LIKE adtb00003.nivel_emp,
cod_puesto LIKE adtb00003.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
cod_mov LIKE notb00008.cod_mov,
balance DECIMAL(10,2),
valor LIKE notb00008.valor,
num_nomi LIKE notb00008.num_nomi,
tipo_emp LIKE notb00008.tipo_emp,
fecha_al LIKE notb00010.fecha_al
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
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 valor1,total,total1,balance DECIMAL(10,2)
DEFINE no_emp,l smallint
DEFINE varia CHAR(30)
DEFINE t_ahorro,t_prest,t_plaza,t_plan,t_farmacia,t_avance,t_diverso,
b_ahorro,b_prest,b_plaza,b_plan,b_farmacia,b_avance,b_diverso
DECIMAL(12,2)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
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 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, normal,
COLUMN 2, "noprrp021",
COLUMN 14, negrillas_on,
COLUMN 15, doble_on,
COLUMN 16, comp_on,
COLUMN 37, p_companias.nombre CLIPPED,
COLUMN 65, negrillas_off,
COLUMN 66, doble_off,
COLUMN 67, comp_off,
COLUMN 97, "Pag. ",pageno using "###"
PRINT COLUMN 97, today using "dd/mm/yy"
PRINT COLUMN 97, hora
SKIP 1 LINE
## SE IMPRIME EL NUMERO DE NOMINA Y LA FECHA
PRINT COLUMN 1, negrillas_on,
COLUMN 2, "Nomina No.:",
COLUMN 15, x.num_nomi using "<<<<",
COLUMN 21, "Al:",
COLUMN 25, x.fecha_al using "dd/mm/yy",
COLUMN 35, negrillas_off
## SE SELECCIONA EL TIPO DE NOMINA A IMPRIMIR
IF x.tipo_emp = "Q" THEN
LET descr = "QUINCENAL"
ELSE
IF x.tipo_emp = "V" THEN
LET descr = "VENDEDOR"
ELSE
LET descr = "SEMANAL"
END IF
END IF
PRINT COLUMN 1, negrillas_on,
COLUMN 2, descr,
COLUMN 15, negrillas_off
PRINT comp_on
PRINT COLUMN 55, "(11)",
COLUMN 75, "(12)",
COLUMN 95, "(13)",
COLUMN 115, "(14)",
COLUMN 135, "(19)",
COLUMN 159, "(25)",
COLUMN 180, "(27)"
PRINT COLUMN 2, "---------------------------------------------------",
"----------------------------------------------------" ,
"----------------------------------------------------",
"----------------------------------------------------"
PRINT COLUMN 51, "|AHORRO COOP. |",
COLUMN 72, "|PREST. COOP. |",
COLUMN 93, "|PLAZA LAMA |",
COLUMN 112, "|PLAN VACACIONAL |",
COLUMN 133, "|FARMACIA |",
COLUMN 154, "|AVANCE SALARIO |",
COLUMN 175, "|PREST. DIVER. |"
PRINT COLUMN 2, "---------------------------------------------------",
"----------------------------------------------------" ,
"----------------------------------------------------",
"----------------------------------------------------"
PRINT COLUMN 2, "Codigo No.",
COLUMN 19, "Nombre",
COLUMN 51, "|Cuota|",
COLUMN 61, "Balance|",
COLUMN 72, "|Cuota",
COLUMN 82, "Balance|",
COLUMN 93, "|Cuota",
COLUMN 102,"Balance|",
COLUMN 112,"|Cuota",
COLUMN 122,"Balance|",
COLUMN 133,"|Cuota",
COLUMN 143, "Balance|",
COLUMN 154, "|Cuota",
COLUMN 164, "Balance|",
COLUMN 175, "|Cuota",
COLUMN 187, "Balance|"
PRINT COLUMN 2, "----------------------------------------------------",
"----------------------------------------------------" ,
"----------------------------------------------------",
"----------------------------------------------------"
## SE INDICA EL SALTO DE PAGINA CUANDO SE IMPRIMEN TODOS LOS MOVIMIENTOS
BEFORE GROUP OF x.num_emp
IF t_ahorro is null THEN
LET t_ahorro = 0
END IF
IF t_prest is null THEN
LET t_prest = 0
END IF
IF t_plaza is null THEN
LET t_plaza = 0
END IF
IF t_plan is null THEN
LET t_plan = 0
END IF
IF t_farmacia is null THEN
LET t_farmacia = 0
END IF
IF t_avance is null THEN
LET t_avance = 0
END IF
IF t_diverso is null THEN
LET t_diverso = 0
END IF
IF b_ahorro is null THEN
LET b_ahorro = 0
END IF
IF b_prest is null THEN
LET b_prest = 0
END IF
IF b_plaza is null THEN
LET b_plaza = 0
END IF
IF b_plan is null THEN
LET b_plan = 0
END IF
IF b_farmacia is null THEN
LET b_farmacia = 0
END IF
IF b_avance is null THEN
LET b_avance = 0
END IF
IF b_diverso is null THEN
LET b_diverso = 0
END IF
## AQUI COMIENZA LA IMPRESION DEL DETALLE
PRINT COLUMN 2, x.num_emp using "&&&&",
COLUMN 15, x.nom1_emp clipped," ",x.apell1_emp clipped;
ON EVERY ROW
CASE
WHEN x.cod_mov = 11
PRINT COLUMN 49, x.valor using "#,###.##",
COLUMN 59, x.balance using "##,###.##";
LET t_ahorro = t_ahorro + x.valor
LET b_ahorro = b_ahorro + x.balance
EXIT CASE
WHEN x.cod_mov = 12
PRINT COLUMN 70, x.valor using "#,###.##",
COLUMN 81, x.balance using "(((,(((.##)";
LET t_prest = t_prest + x.valor
LET b_prest = b_prest + x.balance
EXIT CASE
WHEN x.cod_mov = 13
PRINT COLUMN 91, x.valor using "#,###.##",
COLUMN 100, x.balance using "(((,(((.##)";
LET t_plaza = t_plaza + x.valor
LET b_plaza = b_plaza + x.balance
EXIT CASE
WHEN x.cod_mov = 14
PRINT COLUMN 111, x.valor using "#,###.##",
COLUMN 120, x.balance using "##,###.##";
LET t_plan = t_plan + x.valor
LET b_plan = b_plan + x.balance
WHEN x.cod_mov = 19
PRINT COLUMN 131 ,x.valor using "#,###.##",
COLUMN 141, x.balance using "((((,(((.##)";
LET t_farmacia = t_farmacia + x.valor
LET b_farmacia = b_farmacia + x.balance
EXIT CASE
WHEN x.cod_mov = 25
PRINT COLUMN 152,x.valor using "#,###.##",
COLUMN 162,x.balance using "((((,(((.##)";
LET t_avance = t_avance + x.valor
LET b_avance = b_avance + x.balance
EXIT CASE
WHEN x.cod_mov = 27
PRINT COLUMN 173, x.valor using "#,###.##",
COLUMN 185, x.balance using "((((,(((.##)";
LET t_diverso = t_diverso + x.valor
LET b_diverso = b_diverso + x.balance
EXIT CASE
END CASE
AFTER GROUP OF x.num_emp
PRINT
PRINT COLUMN 2, "---------------------------------------------------",
"----------------------------------------------------" ,
"----------------------------------------------------",
"----------------------------------------------------"
IF no_emp is null THEN
LET no_emp = 0
END IF
LET no_emp = no_emp + 1
ON LAST ROW
PRINT COLUMN 2, "---------------------------------------------------",
"----------------------------------------------------" ,
"----------------------------------------------------",
"----------------------------------------------------"
PRINT COLUMN 1, "Total General",
COLUMN 48, t_ahorro using "##,###.##",
COLUMN 58, b_ahorro using "###,###.##",
COLUMN 69, t_prest using "##,###.##",
COLUMN 80, b_prest using "###,###.##",
COLUMN 90, t_plaza using "##,###.##",
COLUMN 99, b_plaza using "###,###.##",
COLUMN 110, t_plan using "##,###.##",
COLUMN 119, b_plan using "###,###.##",
COLUMN 130 ,t_farmacia using "##,###.##",
COLUMN 140 ,b_farmacia using "###,###.##",
COLUMN 151,t_avance using "##,###.##",
COLUMN 161,b_avance using "###,###.##",
COLUMN 172, t_diverso using "##,###.##",
COLUMN 184, b_diverso using "##,###,###.##"
LET t_ahorro = 0
LET b_ahorro = 0
LET t_prest = 0
LET b_prest = 0
LET t_plaza = 0
LET b_plaza = 0
LET t_plan = 0
LET b_plan = 0
LET t_farmacia = 0
LET b_farmacia = 0
LET t_avance = 0
LET b_avance = 0
LET t_diverso = 0
LET b_diverso = 0
PRINT COLUMN 1, "Total Empleados", no_emp using "###"
LET no_emp = 0
END REPORT