Files
MBS/PROYECTO/gedir/geprrp002.4gl
T

217 lines
6.0 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : GEPRRP002
OBJETIVO : Clientes con mayores compras
PROGRAMADOR : Tadeo A. Ferreras F.
FECHA REALIZACION : Junio 7, 1993
-------------------------------------------------------------------------------
}
GLOBALS "geprgb000.4gl"
DEFINE client RECORD
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
descrip LIKE iptb00002.nomenclatura,
cantidad DECIMAL(12,2)
END RECORD
DEFINE fecha1,fecha2 DATE,
cant1 DECIMAL(12,2)
FUNCTION geprrp002()
#WHENEVER ERROR CONTINUE
LET int_flag = FALSE
CLEAR SCREEN
OPTIONS
FORM LINE 8
OPEN FORM gefmrp002 FROM "gefmrp002"
DISPLAY FORM gefmrp002
CALL pantalla()
DISPLAY "geprrp002" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Clientes Con Compras Mayores Por Tipo de Pila" AT 6,17
ATTRIBUTE(BLACK)
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
CALL defecto(impresor) RETURNING imprime, letras.*, archivo
INPUT BY NAME fecha1,fecha2,cant1
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime,letras.*, archivo
BEFORE FIELD fecha1
LET fecha1 = today
DISPLAY BY NAME fecha1
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
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 fecha2 = today
END IF
IF fecha2 < fecha1 THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
DISPLAY BY NAME fecha2
AFTER FIELD cant1
IF cant1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cant1
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 b.cod_n,b.cod_grupo FROM cod_n,cod_grupo
ON KEY(CONTROL-P)
CALL busca_printer() RETURNING imprime,letras.*, archivo
AFTER CONSTRUCT
EXIT CONSTRUCT
END CONSTRUCT
LET selec =
"SELECT a.tipo_cliente,a.sec_cliente,c.nomenclatura, ",
" SUM(b.cantidad * b.precio) ",
"FROM vetb00002 a,vetb00003 b,iptb00002 c ",
"WHERE b.status_t is null and b.cod_n = c.cod_n and ",
" b.cod_grupo = c.cod_grupo and b.cod_tipo = c.cod_tipo and ",
" b.cod_sec = c.cod_sec and a.factura = b.factura AND ",
" a.fecha_factura BETWEEN ? AND ? AND a.sec_cliente is not null AND ",
criterio clipped,
" GROUP BY 1,2,3 HAVING SUM(b.cantidad*b.precio) >= ? ORDER BY 3,4 DESC"
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
DISPLAY "buscando Informacion... Espere por Favor" AT 17,14
ATTRIBUTE(BOLD)
PREPARE comando FROM selec
DECLARE busco CURSOR FOR comando
OPEN busco USING fecha1,fecha2,cant1
START REPORT clientes2 TO archivo
DISPLAY "Impresion en Proceso... Espere por Favor" AT 17,14
ATTRIBUTE(BLINK)
WHILE STATUS != NOTFOUND
FETCH busco INTO client.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
FINISH REPORT clientes2
RUN imprime
RETURN
END IF
OUTPUT TO REPORT clientes2(client.*)
END WHILE
FINISH REPORT clientes2
RUN imprime
END FUNCTION
REPORT clientes2(x)
DEFINE x RECORD
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
descrip LIKE iptb00002.nomenclatura,
cantidad DECIMAL(12,2)
END RECORD
DEFINE descrip1 CHAR(30),
hora CHAR(5)
OUTPUT
LEFT MARGIN 2
TOP MARGIN 1
FORMAT
PAGE HEADER
LET hora = time
PRINT COLUMN 1, letras.comp_on,letras.negrillas_on
PRINT COLUMN 1, "geprrp002",
COLUMN 20, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 80, "Pag. ", pageno using "<<<"
PRINT COLUMN 20, " Sistema De Informacion Gerencial",
COLUMN 80, today using "dd/mm/yyyy"
PRINT COLUMN 13, "Cliente con Mayor Compra Superior a ",
cant1 USING "###,###,##&.&&",
COLUMN 83, hora
SKIP 1 LINES
PRINT COLUMN 1, "Fecha: Del ",fecha1 USING "dd/mm/yyyy",
" Al ", fecha2 USING "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------",
"-------------------------------------------"
PRINT COLUMN 3, "Cliente",
COLUMN 61, "Monto Venta"
PRINT COLUMN 1, "--------------------------------------------",
"-------------------------------------------"
PRINT COLUMN 1, letras.negrillas_off
BEFORE GROUP OF x.descrip
LET idx = 1
PRINT COLUMN 1,letras.negrillas_on,
COLUMN 2,"Tipo de Pila:",x.descrip clipped,letras.negrillas_off
SKIP 1 LINE
ON EVERY ROW
LET descrip1 = " "
SELECT nombre INTO descrip1 FROM vetb00004
WHERE tipo_cliente=x.tipo_cliente and sec_cliente = x.sec_cliente
IF descrip1 = " " OR descrip1 IS NULL THEN
LET descrip1 = "CLIENTE NO EXISTE"
END IF
IF idx > 1 THEN
LET x.cantidad = 0
END IF
IF x.cantidad > 0 THEN
PRINT COLUMN 3, x.tipo_cliente USING "&&","-",
x.sec_cliente USING "&&&&"," ",
descrip1 clipped,
COLUMN 59, x.cantidad USING "###,###,##&.&&"
END IF
LET idx = idx + 1
END REPORT