{ ======================================================================= Programa : GEPRRP003 Sistema : Sistema de Informacion Gerencia Proceso : Suplidor con Compras Mayores a X Cantidad Autor : Tadeo A. Ferreras Fecha : Junio 21,1993 ======================================================================= } GLOBALS "geprgb000.4gl" DEFINE ger_comp RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, nombre CHAR(30), cantidad DECIMAL(10,2), secuencia SMALLINT END RECORD, cod1 SMALLINT DEFINE fecha_in,fecha_fi DATE, cod_sup SMALLINT, total2,cantidad1 DECIMAL(12,2) FUNCTION geprrp003() LET int_flag = FALSE OPTIONS FORM LINE 8 CALL pantalla() OPEN FORM gefmrp003 FROM "gefmrp003" DISPLAY FORM gefmrp003 DISPLAY "geprrp003" AT 4,3 ATTRIBUTE(RED) DISPLAY "Suplidores Con Compras Mayores a X Cantidad" AT 6,18 ATTRIBUTE(BLACK) LET tipo_papel = 1 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime, letras.*, archivo INPUT BY NAME fecha_in,fecha_fi,cod_sup,cantidad1 ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER FIELD fecha_in IF fecha_in IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_in END IF BEFORE FIELD fecha_fi LET fecha_fi = today AFTER FIELD fecha_fi IF fecha_fi IS NULL THEN LET fecha_fi = today END IF IF fecha_fi < fecha_in THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD fecha_fi END IF DISPLAY BY NAME fecha_fi AFTER FIELD cod_sup IF cod_sup IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sup END IF AFTER FIELD cantidad1 IF cantidad1 IS NULL OR cantidad1 < 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad1 END IF END INPUT IF int_flag tHEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF SELECT SUM(a.valor) INTO total2 FROM cptb00001 a WHERE a.status_t IS NULL AND a.fecha_orig between fecha_in AND fecha_fi AND a.cod_sp = cod_sup and a.tipo_doc = "FT" DECLARE buscar CURSOR FOR SELECT a.cod_sp,a.cod_sp_sec,b.nom_sp,SUM(a.valor) FROM cptb00001 a, cotb00001 b WHERE (a.cod_sp = b.cod_sp AND a.cod_sp_sec = b.cod_sp_sec) AND (a.status_t IS NULL) AND a.fecha_orig between fecha_in AND fecha_fi AND (a.cod_sp = cod_sup) and (a.tipo_doc = "FT") GROUP BY 1,2,3 HAVING SUM(a.valor) > cantidad1 ORDER BY 4 DESC DISPLAY "Buscando Informacion..... Espere por Favor" AT 17,14 START REPORT gerencia1 TO archivo DISPLAY "Impresion en Proceso..... Espere por Favor" AT 17,14 LET idx = 1 FOREACH buscar INTO ger_comp.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET ger_comp.secuencia = idx OUTPUT TO REPORT gerencia1(ger_comp.*,fecha_in,fecha_fi,cod_sup, cantidad1,total2) LET idx = idx + 1 END FOREACH FINISH REPORT gerencia1 RUN imprime END FUNCTION REPORT gerencia1(x,fecha1,fecha2,cod_sup1,cant,total1) DEFINE x RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, nombre CHAR(30), cantidad DECIMAL(10,2), secuencia SMALLINT END RECORD DEFINE cod_sup1 SMALLINT DEFINE supl CHAR(15) DEFINE fecha1,fecha2 DATE, total1,proporcion,cant DECIMAL(12,2) DEFINE descrip,descrip1 CHAR(30) DEFINE hora CHAR(5) OUTPUT LEFT MARGIN 2 TOP MARGIN 1 FORMAT PAGE HEADER LET hora = time PRINT COLUMN 1, "geprrp003", COLUMN 17, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 73, "Pag. ", pageno using "###" PRINT COLUMN 17, " Sistema de Informacion Gerencial", COLUMN 80, today using "dd/mm/yyyy" IF cod_sup1 = 21 THEN LET supl = " INTERCOMPANY" ELSE IF cod_sup1 = 22 THEN LET supl = "INTERNACIONALES" ELSE LET supl = " LOCALES" END IF END IF PRINT COLUMN 32,supl, COLUMN 73, hora PRINT COLUMN 24,"Compras Mayores a ", cant USING "###,###,##&.&&" SKIP 1 LINES PRINT COLUMN 1, "FECHA: DEL ", fecha1 USING "dd/mm/yyyy", " AL ", fecha2 USING "dd/mm/yyyy" PRINT COLUMN 1, "----------------------------------------", "----------------------------------------" PRINT COLUMN 1, "Secuencia", COLUMN 15, "Suplidor", COLUMN 62, "Cantidad", COLUMN 72, "Proporcion" PRINT COLUMN 1, "----------------------------------------", "----------------------------------------" SKIP 1 LINE ON EVERY ROW LET proporcion = ((x.cantidad/total1)*100) PRINT COLUMN 2, x.secuencia USING "##,###", COLUMN 15,x.cod_sp USING "&&","-",x.cod_sp_sec USING "&&&&"," ", x.nombre clipped, COLUMN 57,x.cantidad USING "###,###,###.##"; PRINT COLUMN 74,proporcion USING "##&.&&" ON LAST ROW SKIP 1 LINE PRINT COLUMN 30,"TOTAL...."," ", COLUMN 57,total1 USING "###,###,###.##" END REPORT