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

324 lines
10 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP016
OBJETIVO : LISTAR LOS DESCUENTOS DE FARMACIA Y PLAZA LAMA
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Septiembre 13, 1993
-------------------------------------------------------------------------------
}
GLOBALS "noprgb000.4gl"
FUNCTION noprrp016()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE coopera RECORD
num_nomi LIKE notb00008.num_nomi,
fecha_al LIKE notb00010.fecha_al,
tipo_emp LIKE notb00008.tipo_emp,
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,
descrip_mov LIKE notb00002.descrip_mov,
num_doc LIKE notb00011.num_doc,
fecha LIKE notb00011.fecha,
monto LIKE notb00011.monto,
valor LIKE notb00008.valor,
cod_mov LIKE notb00008.cod_mov
END RECORD
WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM nofmrp009 FROM "nofmrp009"
DISPLAY FORM nofmrp009
CALL pantalla()
DISPLAY "noprrp016" AT 4,3
DISPLAY "Descuentos de Farmacia y Plaza Lama" AT 6,25
## 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
CONSTRUCT criterio ON a.num_nomi,a.tipo_emp,a.cod_mov
FROM num_nomi,tipo_emp,cod_mov
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 UNIQUE a.num_nomi,d.fecha_al,a.tipo_emp,a.num_emp, ",
"b.departamento,b.nivel_emp,b.cod_puesto,b.nom1_emp, ",
"b.apell1_emp,c.descrip_mov,e.num_doc,e.fecha,e.monto, ",
"a.valor,a.cod_mov ",
" FROM adtb00003 b,notb00008 a,notb00010 d,notb00011 e, ",
"notb00002 c ",
" WHERE ",
"a.num_emp = b.num_emp AND ",
"a.tipo_emp = b.nomina AND ",
"a.num_nomi = d.num_nomi AND ",
"a.tipo_emp = d.tipo_emp AND ",
"a.clase_mov = 'D' AND ",
"a.cod_mov = c.cod_mov AND ",
"a.cod_mov = e.cod_mov AND ",
"e.num_emp = a.num_emp AND ",
"a.status_t is null AND ",
criterio clipped,
" ORDER BY 15,4,5,6,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 busca 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 busca
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT list_coopera TO "C:\\archivo"
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
FOREACH accion INTO coopera.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF status = NOTFOUND THEN
EXIT FOREACH
ELSE
OUTPUT TO REPORT list_coopera(coopera.*)
END IF
END FOREACH
FINISH REPORT list_coopera
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT list_coopera(x)
DEFINE x RECORD
num_nomi LIKE notb00008.num_nomi,
fecha_al LIKE notb00010.fecha_al,
tipo_emp LIKE notb00008.tipo_emp,
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,
descrip_mov LIKE notb00002.descrip_mov,
num_doc LIKE notb00011.num_doc,
fecha LIKE notb00011.fecha,
monto LIKE notb00011.monto,
valor LIKE notb00008.valor,
cod_mov LIKE notb00008.cod_mov
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,total2,balance DECIMAL(10,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, comp_off,normal,
COLUMN 2, "noprrp016",
COLUMN 14, negrillas_on,
COLUMN 15, doble_on,
COLUMN 16, comp_on,
COLUMN 17, p_companias.nombre CLIPPED,
COLUMN 65, negrillas_off,
COLUMN 66, doble_off,
COLUMN 67, comp_off,
COLUMN 77, "Pag. ",pageno using "###"
PRINT COLUMN 29, "Descuentos Cooperativa",
COLUMN 75, today using "dd/mm/yy"
PRINT COLUMN 78, hora
## SE IMPRIME EL NUMERO DE NOMINA Y LA FECHA
PRINT comp_on
PRINT COLUMN 1, negrillas_on,
COLUMN 1, "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
SELECT UNIQUE tipo_emp INTO x.tipo_emp FROM notb00008
WHERE num_nomi = x.num_nomi
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 COLUMN 2, "---------------------------------------------------",
"---------------------------------------------------",
"--------------------------"
PRINT COLUMN 103, "Monto ",
COLUMN 122, "Balance"
PRINT COLUMN 2, "Codigo No.",
COLUMN 19, "Nombre",
COLUMN 49, "Descuento",
COLUMN 82, "Factura",
COLUMN 90, "Fecha",
COLUMN 101, "Factura",
COLUMN 113, "Cuota",
COLUMN 120, "Pendiente"
PRINT COLUMN 2, "----------------------------------------------------",
"----------------------------------------------------" ,
"------------------------"
## SE INDICA EL SALTO DE PAGINA CUANDO SE IMPRIMEN LOS DOS MOVIMIENTOS
BEFORE GROUP OF x.cod_mov
SKIP TO TOP OF PAGE
LET total1 = 0
LET total = 0
LET total2 = 0
BEFORE GROUP OF x.num_emp
LET balance = 0
LET valor1 = 0
## CALCULO DEL BALANCE PENDIENTE
SELECT SUM(valor) INTO valor1 FROM notb00008
WHERE num_emp = x.num_emp and
cod_mov = x.cod_mov and
fecha <= x.fecha_al
IF valor1 IS NULL THEN
LET valor1 = 0
END IF
LET balance = valor1
## AQUI SE CALCULAN LOS TOTALES GENERALES
IF total1 IS NULL THEN
LET total1 = 0
END IF
LET total1 = total1 + x.monto
IF total IS NULL THEN
LET total = 0
END IF
LET total = total + x.valor
IF total2 IS NULL THEN
LET total2 = 0
END IF
LET total2 = total2 + balance
## AQUI COMIENZA LA IMPRESION DEL DETALLE
PRINT COLUMN 1, negrillas_on,
COLUMN 2, x.num_emp using "&&&&","-",
COLUMN 7, x.departamento using "&&&&","-",
COLUMN 11, x.nivel_emp using "&&","-",
COLUMN 15, x.cod_puesto using "&&",
COLUMN 18, negrillas_off,
COLUMN 23, x.nom1_emp clipped," ",x.apell1_emp clipped,
COLUMN 53, x.descrip_mov,
COLUMN 84, x.num_doc using "&&&&&&&&&",
COLUMN 94, x.fecha using "dd/mm/yy",
COLUMN 104, x.monto using "#,###.##",
COLUMN 114, x.valor using "#,###.##",
COLUMN 125, balance using "#,###.##"
## AQUI SE IMPRIMEN LOS TOTALES GENERALES
AFTER GROUP OF x.cod_mov
SKIP 2 LINES
PRINT COLUMN 1, negrillas_on,
COLUMN 2, "TOTAL GENERAL",
COLUMN 18, negrillas_off,
COLUMN 103, total1 using "##,###.##",
COLUMN 113, total using "##,###.##",
COLUMN 124, total2 using "##,###.##"
ON LAST ROW
PRINT ASCII 27, ASCII 80
END REPORT