{ ------------------------------------------------------------------------------- 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