{ ------------------------------------------------------------------------------- PROGRAMA : NOPRRP030 OBJETIVO : Listar las Informaciones Generales de los Movimientos Considerados Deudas del Empleado PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Marzo 04, 1996 ------------------------------------------------------------------------------- } GLOBALS "noprgb000.4gl" DEFINE fecha1,fecha2 DATE, total1 DECIMAL(12,2) ## SE DEFINE EL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA EL REPORTE DEFINE datos_30 RECORD num_emp SMALLINT, cod_mov SMALLINT, fecha DATE, num_nomi INTEGER, monto DECIMAL(12,2) END RECORD FUNCTION noprrp030() #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM nofmrp030 FROM "nofmrp030" DISPLAY FORM nofmrp030 CALL pantalla() DISPLAY "noprrp030" AT 4,3 DISPLAY "Historial de Deudas Por Empleado" AT 6,24 ## INDICA EL PAPEL NECESARIO PARA IMPRIMIR EL REPORTE. 1 - PAPEL 9 1/2 X 11 ## 2 - PAPEL 14 7/8 X 11 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ## ENTRADA DE LOS VALORES PARA BUSQUEDA DE INFORMACION POR MES Y ANO INPUT BY NAME fecha1,fecha2 AFTER FIELD fecha1 IF fecha1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha1 END IF IF fecha1 > TODAY THEN LET numero_msg = 160 CALL msg(numero_msg) NEXT FIELD fecha1 END IF BEFORE FIELD fecha2 LET fecha2 = TODAY DISPLAY BY NAME fecha2 AFTER FIELD fecha2 IF fecha2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha2 END IF IF fecha1 > fecha2 THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD fecha2 END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT criterio ON a.num_emp,a.cod_mov FROM num_emp,cod_mov IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF START REPORT reporte_30 TO "C:\\archivo" ## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE LET selec = "SELECT a.num_emp,a.cod_mov,a.fecha,a.num_doc,a.monto ", "FROM notb00011 a, notb00014 b ", "WHERE (a.status_t IS NULL) AND (a.cod_mov = b.cod_mov) AND ", " (a.fecha BETWEEN ? AND ?) AND (a.cod_mov NOT IN (11,14)) AND ", " (a.monto > 0) AND (a.fecha > '010194') AND ",criterio CLIPPED DISPLAY "Buscando Informacion Ano Actual... Espere Por Favor" AT 19,14 PREPARE comando2 FROM selec DECLARE busca2 CURSOR FOR comando2 OPEN busca2 USING fecha1,fecha2 WHILE STATUS != NOTFOUND FETCH busca2 INTO datos_30.* 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 reporte_30(datos_30.*) END WHILE IF YEAR(fecha1) < YEAR(TODAY) THEN LET selec = "SELECT a.num_emp,a.cod_mov,a.fecha,a.num_nomi,a.valor ", "FROM notb00016 a, notb00014 b ", "WHERE (a.status_t IS NULL) AND (a.cod_mov = b.cod_mov) AND ", " (a.fecha BETWEEN ? AND ?) AND (a.cod_mov NOT IN (11,14)) AND ", " (a.valor <> 0) AND ",criterio CLIPPED DISPLAY "Buscando Informacion Ano Anterior. Espere Por Favor" AT 19,14 PREPARE comando FROM selec DECLARE busca CURSOR FOR comando OPEN busca USING fecha1,fecha2 WHILE STATUS != NOTFOUND FETCH busca INTO datos_30.* 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 IF datos_30.fecha > "010194" AND datos_30.monto > 0 THEN LET datos_30.monto = 0 END IF IF datos_30.monto <> 0 THEN OUTPUT TO REPORT reporte_30(datos_30.*) END IF END WHILE END IF IF YEAR(fecha2) >= YEAR(TODAY) THEN LET selec = "SELECT a.num_emp,a.cod_mov,a.fecha,a.num_nomi,a.valor ", "FROM notb00008 a, notb00014 b ", "WHERE (a.status_t IS NULL) AND (a.cod_mov = b.cod_mov) AND ", " (a.fecha BETWEEN ? AND ?) AND (a.cod_mov NOT IN (11,14)) AND ", " (a.valor < 0) AND ",criterio CLIPPED DISPLAY "Buscando Informacion Ano Actual... Espere Por Favor" AT 19,14 PREPARE comando1 FROM selec DECLARE busca1 CURSOR FOR comando1 OPEN busca1 USING fecha1,fecha2 WHILE STATUS != NOTFOUND FETCH busca1 INTO datos_30.* 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 reporte_30(datos_30.*) END WHILE END IF FINISH REPORT reporte_30 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION ## AQUI SE DEFINE EL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA ## EL REPORTE REPORT reporte_30(x) DEFINE x RECORD num_emp SMALLINT, cod_mov SMALLINT, fecha DATE, num_nomi INTEGER, monto DECIMAL(12,2) END RECORD DEFINE nom_mov CHAR(30), nombre,apell CHAR(15) ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE negrillas_on,negrillas_off,normal CHAR(2) DEFINE hora CHAR(5) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.num_emp,x.cod_mov,x.fecha FORMAT PAGE HEADER LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET normal = ASCII 27, ASCII 80 LET hora = time ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT negrillas_on PRINT COLUMN 1, "noprrp030", COLUMN 17, p_companias.nombre CLIPPED, COLUMN 73, "Pag. ",pageno using "###" PRINT COLUMN 17, " Sistema de Nomina", COLUMN 73, today using "dd/mm/yy" PRINT COLUMN 17, " Historial de Deudas Por Empleado", COLUMN 76, hora SKIP 1 LINE PRINT COLUMN 1, "Fecha: Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" PRINT COLUMN 1, "________________________________________", "________________________________________" PRINT COLUMN 1, "Movimiento", COLUMN 40, "Fecha", COLUMN 57, "Monto", COLUMN 70, "Balance" PRINT COLUMN 1, "________________________________________", "________________________________________" PRINT negrillas_off BEFORE GROUP OF x.num_emp SELECT a.nom1_emp,a.apell1_emp INTO nombre,apell FROM adtb00003 a WHERE a.num_emp = x.num_emp PRINT negrillas_on PRINT COLUMN 1, "Empleado: (",x.num_emp USING "<<<<",") ", nombre CLIPPED," ",apell,negrillas_off BEFORE GROUP OF x.cod_mov LET total1 = 0 SELECT a.descrip_mov INTO nom_mov FROM notb00002 a WHERE a.cod_mov = x.cod_mov SKIP 1 LINE PRINT COLUMN 1, "(",x.cod_mov USING "<<<",") ",nom_mov CLIPPED; ON EVERY ROW IF total1 IS NULL THEN LET total1 = 0 END IF LET total1 = total1 + x.monto PRINT COLUMN 40, x.fecha USING "dd/mm/yy", COLUMN 50, x.monto USING "-,---,---.##", COLUMN 65, total1 USING "-,---,---.##" AFTER GROUP OF x.num_emp SKIP TO TOP OF PAGE ON LAST ROW PRINT normal PAGE TRAILER PRINT " Positivo : Cargo Original, Negativo = Abono A Deuda" END REPORT