{ ======================================================================= Programa : GEPRRP014 Sistema : Sistema de Informacion Gerencia Minoristas Proceso : Suplidores Con Compras Mayores a X Cantidad Comparativas Autor : Tadeo A. Ferreras Fecha : Junio 21,1993 ======================================================================= } GLOBALS "geprgb000.4gl" DEFINE ger_comp14 RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, nom_sp CHAR(30), status_t CHAR(1), cantidad2 DECIMAL(14,2), cantidad1 DECIMAL(14,2), posicion INTEGER, codigo CHAR(6) END RECORD, cod_sp1 SMALLINT DEFINE selec9 CHAR(1000) DEFINE salir,salir9,compa CHAR(1) DEFINE idx9,idx1,j,m,p,s,s1 INTEGER DEFINE ano19 CHAR(4) DEFINE ano1,mes1 SMALLINT DEFINE nom_mes CHAR(15) DEFINE fecha_in,fecha_fi,fecha_in9,fecha_fi9 DATE, cod_cli SMALLINT, total2,cantidad1,cantidad2,cantidad3,cantidad4,cantidad5,cantidad6, cantidad7,cantidad8,cantida9 DECIMAL(12,2) FUNCTION geprrp014() LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM gefmrp014 FROM "gefmrp014" DISPLAY FORM gefmrp014 CALL pantalla() DISPLAY "geprrp014" AT 4,3 ATTRIBUTE(RED) DISPLAY "Ranking de Compras Comparativas Ano Anterior" AT 6,18 ATTRIBUTE(BLACK) LET tipo_papel = 1 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime, letras.*, archivo INPUT BY NAME ano1,mes1,cantidad1,cod_sp1 ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo AFTER FIELD ano1 IF ano1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano1 END IF SELECT fecha_inicio INTO fecha_in FROM prdtable WHERE ano = ano1 AND mes = 1 SELECT fecha_inicio INTO fecha_in9 FROM prdtable WHERE ano = ano1 - 1 AND mes = 1 LET ano19 = ano1 - 1 USING "&&&&" BEFORE FIELD mes1 LET mes1 = MONTH(today) USING "&&" DISPLAY BY NAME mes1 AFTER FIELD mes1 IF mes1 IS NULL THEN LET mes1 = MONTH(today) USING "&&" END IF DISPLAY BY NAME mes1 SELECT fecha_corte INTO fecha_fi FROM prdtable WHERE ano = ano1 AND mes = mes1 SELECT fecha_corte INTO fecha_fi9 FROM prdtable WHERE ano = ano1 - 1 AND mes = mes1 SELECT descrip INTO nom_mes FROM mestable WHERE mes = mes1 AFTER FIELD cantidad1 IF cantidad1 IS NULL OR cantidad1 < 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad1 END IF AFTER FIELD cod_sp1 IF cod_sp1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sp1 END IF SELECT UNIQUE cod_sp FROM cotb00001 WHERE cod_sp = cod_sp1 IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_sp1 END IF END INPUT IF int_flag tHEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET selec = "SELECT a.cod_sp,a.cod_sp_sec,c.nom_sp,c.status_t,SUM(a.valor) ", "FROM cptb00001 a,cotb00001 c ", "WHERE (a.status_t IS NULL) AND (a.fecha_orig BETWEEN ? AND ?) AND ", " (a.cod_sp=?) AND (a.cod_sp = c.cod_sp) AND ", " (a.cod_sp_sec = c.cod_sp_sec) AND (a.tipo_doc = 'FT') AND ", " (a.status_t IS NULL) GROUP BY 1,2,3,4 HAVING SUM(a.valor) >= ? ", "ORDER BY 5 DESC,1,2 " DISPLAY "Buscando Informacion Ano Actual... Espere por Favor" AT 17,14 ATTRIBUTE(BOLD) PREPARE comando FROM selec DECLARE buscar CURSOR FOR comando OPEN buscar USING fecha_in,fecha_fi,cod_sp1,cantidad1 START REPORT gerencia14 TO archivo DISPLAY "Impresion en Proceso..... Espere por Favor " AT 17,14 LET idx1 = 0 LET idx = 0 LET salir = "N" WHILE salir != "S" FETCH buscar INTO ger_comp14.* IF STATUS = NOTFOUND THEN LET salir = "S" EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET idx = idx + 1 LET ger_comp14.posicion = idx LET ger_comp14.cantidad1 = 0 SELECT SUM(a.valor) INTO ger_comp14.cantidad1 FROM cptb00001 a WHERE (a.status_t IS NULL) AND (a.tipo_doc = "FT") AND (a.fecha_orig BETWEEN fecha_in9 AND fecha_fi9) AND (a.cod_sp = ger_comp14.cod_sp) AND (a.cod_sp_sec=ger_comp14.cod_sp_sec) IF ger_comp14.cantidad2 IS NULL THEN LET ger_comp14.cantidad2 = 0 END IF IF ger_comp14.cantidad1 IS NULL THEN LET ger_comp14.cantidad1 = 0 END IF LET ger_comp14.codigo = ger_comp14.cod_sp USING "&&", ger_comp14.cod_sp_sec USING "&&&&" OUTPUT TO REPORT gerencia14(ger_comp14.*) END WHILE FINISH REPORT gerencia14 RUN imprime END FUNCTION REPORT gerencia14(x) DEFINE x RECORD cod_sp SMALLINT, cod_sp_sec SMALLINT, nom_sp CHAR(30), status_t CHAR(1), cantidad2 DECIMAL(14,2), cantidad1 DECIMAL(14,2), posicion INTEGER, codigo CHAR(6) END RECORD DEFINE j ARRAY[5000] OF RECORD codigo CHAR(7), nom_sp CHAR(30), status_t CHAR(1), cantidad1 DECIMAL(14,2), cantidad2 DECIMAL(14,2), posicion1 INTEGER, posicion2 INTEGER END RECORD DEFINE mes11 SMALLINT DEFINE nom_mes1 CHAR(15) DEFINE descrip,descrip1 CHAR(30) DEFINE nom_sp_sal CHAR(20) DEFINE hora CHAR(5) OUTPUT LEFT MARGIN 2 TOP MARGIN 1 ORDER BY x.cantidad1 DESC,x.codigo FORMAT PAGE HEADER LET hora = time PRINT COLUMN 1, letras.comp_on,letras.negrillas_on PRINT COLUMN 1, "geprrp014", COLUMN 22, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 83, "Pag. ", pageno using "###" PRINT COLUMN 22, " Sistema de Informacion Gerencial", COLUMN 83, today using "dd/mm/yyyy" PRINT COLUMN 12, "Ranking de Compras Comparativas Ano Anterior Mayor A ", cantidad1 USING "#,###,###.##", COLUMN 86, hora SKIP 1 LINE PRINT COLUMN 1, "ACUMULADO AL MES DE ",nom_mes CLIPPED PRINT COLUMN 1, "----------------------------------------------------", "--------------------------------------" PRINT COLUMN 2, "Posicion", COLUMN 68, "Cantidad" PRINT COLUMN 1, ano1 USING "&&&&", COLUMN 6, ano1-1 USING "&&&&", COLUMN 12, "Cliente", COLUMN 63, ano1 USING "&&&&", COLUMN 78, ano1-1 USING "&&&&", COLUMN 85, "Status" PRINT COLUMN 1, "----------------------------------------------------", "--------------------------------------" PRINT COLUMN 1, letras.negrillas_off ON EVERY ROW LET idx1 = idx1 + 1 LET idx = x.posicion LET j[idx].codigo = x.codigo LET j[idx].nom_sp = x.nom_sp LET j[idx].status_t = x.status_t LET j[idx].cantidad1 = x.cantidad1 LET j[idx].cantidad2 = x.cantidad2 IF x.cantidad1 = 0 THEN LET j[idx].posicion1 = 0 ELSE LET j[idx].posicion1 = idx1 END IF LET j[idx].posicion2 = x.posicion ON LAST ROW FOR idx = 1 TO idx1 IF j[idx].posicion2 IS NOT NULL AND j[idx].posicion2 > 0 THEN PRINT COLUMN 1, j[idx].posicion2 USING "##&", COLUMN 6, j[idx].posicion1 USING "##&", COLUMN 15, j[idx].codigo," ",j[idx].nom_sp CLIPPED, COLUMN 55, j[idx].cantidad2 USING "###,###,###.##", COLUMN 70, j[idx].cantidad1 USING "###,###,###.##", COLUMN 87, j[idx].status_t END IF END FOR PRINT COLUMN 55, "--------------", COLUMN 70, "--------------" PRINT COLUMN 30, "TOTAL COMPRAS..."," ", COLUMN 55, SUM(x.cantidad2) USING "###,###,###.##", COLUMN 70, SUM(x.cantidad1) USING "###,###,###.##" PRINT COLUMN 1, letras.comp_off,letras.negrillas_off END REPORT