Files

270 lines
8.9 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP022
OBJETIVO : LISTA LOS EMPLEADOS QUE SE HAN SIDO LIQUIDADOS
INDICANDO EL MONTO DE LIQUIDACION
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Julio 05, 1993
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
#let usuarios = "kpolanco"
#let clave = "RevolutionX3"
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL adprrp022()
END MAIN
FUNCTION adprrp022()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE liquida RECORD
num_emp LIKE adtb00017.num_emp,
departamento LIKE adtb00017.departamento,
nivel_emp LIKE adtb00017.nivel_emp,
cod_puesto LIKE adtb00017.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
nom_puesto LIKE adtb00004.nom_puesto,
fech_efec LIKE adtb00003.fech_efec,
salario LIKE adtb00017.salario,
liquidacion LIKE adtb00017.liquidacion
END RECORD
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM adfmrp012 FROM "adfmrp012"
DISPLAY FORM adfmrp012
CALL pantalla()
DISPLAY "adprrp022" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Liquidacion Empleados" AT 6,32 ATTRIBUTE(BLACK)
## 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)
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
## SE INDICA EL RANGO DE FECHA DESEADO PARA LISTAR LOS EMPLEADOS LIQUIDADOS
LET datos.fech_ini = NULL
LET datos.fech_fin = NULL
INPUT BY NAME datos.fech_ini,datos.fech_fin WITHOUT DEFAULTS
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime,letras.*, archivo
AFTER FIELD fech_ini
IF datos.fech_ini IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_ini
END IF
AFTER FIELD fech_fin
IF datos.fech_fin IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fin
END IF
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
## DEFINICION DEL CRITERIO DE BUSQUEDA PARA LA IMPRESION DEL REPORTE
CONSTRUCT criterio ON a.num_emp FROM num_emp
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime,letras.*, archivo
AFTER CONSTRUCT
EXIT CONSTRUCT
END CONSTRUCT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
LET SELEC =
"SELECT a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto,b.nom1_emp, ",
" b.apell1_emp,c.nom_puesto,a.fech_efec,a.salario,a.liquidacion ",
"FROM adtb00017 a,adtb00003 b,adtb00004 c ",
"WHERE a.num_emp = b.num_emp AND a.departamento = b.departamento AND ",
" a.nivel_emp = b.nivel_emp AND a.cod_puesto = b.cod_puesto AND ",
" a.cod_puesto = c.cod_puesto AND a.cod_mto = 4 AND ",
" a.status_t is null AND b.status_t IN ('T','D') AND ",
" a.fech_efec BETWEEN ? AND ? AND ",criterio clipped,
" ORDER BY 8,1"
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
## SE PREPARA LA INFORMACION SELECCIONADA
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion USING datos.fech_ini,datos.fech_fin
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT liq_ex TO archivo
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
WHILE STATUS != NOTFOUND
FETCH accion INTO liquida.*
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
OUTPUT TO REPORT liq_ex(liquida.*)
END WHILE
FINISH REPORT liq_ex
RUN imprime
CLEAR SCREEN
END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT liq_ex(x)
DEFINE x RECORD
num_emp LIKE adtb00017.num_emp,
departamento LIKE adtb00017.departamento,
nivel_emp LIKE adtb00017.nivel_emp,
cod_puesto LIKE adtb00017.cod_puesto,
nom1_emp LIKE adtb00003.nom1_emp,
apell1_emp LIKE adtb00003.apell1_emp,
nom_puesto LIKE adtb00004.nom_puesto,
fech_efec LIKE adtb00003.fech_efec,
salario LIKE adtb00017.salario,
liquidacion LIKE adtb00017.liquidacion
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
DEFINE salida DATE
DEFINE tot_liq DECIMAL(12,2)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESIOON
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
FORMAT
PAGE HEADER
LET hora = time
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, letras.comp_on,
COLUMN 2, "adprrp022",
COLUMN 14, letras.negrillas_on,
COLUMN 45, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 65, letras.negrillas_off,
COLUMN 139, "Pag. ",pageno using "###"
PRINT COLUMN 47, "Sistema de Administracion de Personal",
COLUMN 134, today using "dd/mm/yyyy"
PRINT COLUMN 55, "Liquidacion Empleados",
COLUMN 137, hora
SKIP 1 LINE
PRINT COLUMN 2, "Desde: ",datos.fech_ini using "dd/mm/yyyy",
COLUMN 20, "Hasta: ",datos.fech_fin using "dd/mm/yyyy"
PRINT COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"--------------------------------------"
PRINT COLUMN 84, "Fecha",
COLUMN 96, "Fecha",
COLUMN 111, "Ultimo",
COLUMN 125, "Monto"
PRINT COLUMN 2, "Ficha No.",
COLUMN 18, "Nombre Empleado",
COLUMN 53, "Puesto",
COLUMN 84, "Entrada",
COLUMN 96, "Salida",
COLUMN 110, "Salario",
COLUMN 119, "Liquidacion"
PRINT COLUMN 2, "----------------------------------------------------",
"---------------------------------------------------",
"-------------------------------------"
#SKIP 1 LINE
ON EVERY ROW
## SE SELECCIONA LA FECHA DE SALIDA DEL EMPLEADO LIQUIDADO
SELECT fech_efec INTO salida FROM adtb00003 WHERE num_emp = x.num_emp
## AQUI SE INDICA LA IMPRESION DEL DETALLE
IF tot_liq IS NULL THEN
LET tot_liq = 0
END IF
LET tot_liq = tot_liq + x.liquidacion
PRINT COLUMN 1, letras.negrillas_on,
COLUMN 3, x.num_emp using "&&&&","-",
COLUMN 8, x.departamento using "&&&&","-",
COLUMN 13, x.nivel_emp using "&&","-",
COLUMN 16, x.cod_puesto using "&&",
COLUMN 20, x.nom1_emp clipped," ",x.apell1_emp clipped,
COLUMN 51, letras.negrillas_off,
COLUMN 56, x.nom_puesto,
COLUMN 88, salida using "dd/mm/yyyy",
COLUMN 100, x.fech_efec using "dd/mm/yyyy",
COLUMN 109, x.salario using "#,###,###.##",
COLUMN 122, x.liquidacion using "#,###,###.##"
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 122, "------------"
PRINT COLUMN 2, "Total de Registros Impresos = ",count(*) using "###",
COLUMN 122, tot_liq USING "#,###,###.##"
LET tot_liq = 0
## AQUI SE APAGA EL CARACTER DE IMPRESION COMPRIMIDO
PRINT ASCII 18
PRINT ASCII 27, ASCII 80
END REPORT