{ ======================================================================= Programa : COPRRP032 Sistema : Sistema de Compras Proceso : RESUMEN COMPRAS CATEGORIZADAS POR NATURALEZA DEL PRODUCTO Autor : Juan F. Soto Fecha : Febrero 4, 1997 ======================================================================= } GLOBALS "coprgb000.4gl" DEFINE fecha_in,fecha_fi DATE, cod_sup SMALLINT, total2,cantidad1 DECIMAL(12,2) FUNCTION coprrp032() DEFINE c_datos RECORD cod_sp SMALLINT, cod_sp_Sec SMALLINT, categoria CHAR(1), moneda LIKE cotb00015.cod_mon, cantidad LIKE cotb00015.cantidad, precio LIKE cotb00015.precio, cod_n LIKE cotb00015.cod_n, cod_grupo LIKE cotb00015.cod_n, cod_tipo LIKE cotb00015.cod_n, cod_sec LIKE cotb00015.cod_n, base LIKE intb00002.base, bruto DECIMAL(14,2), gastos DECIMAL(14,2), porc DECIMAL(10,4), codigo CHAR(8), cod_cat CHAR(3), gasto1 DECIMAL(12,2) END RECORD LET int_flag = FALSE OPTIONS FORM LINE 8 CALL pantalla() OPEN FORM cofmrp032 FROM "cofmrp032" DISPLAY FORM cofmrp032 DISPLAY "coprrp032" AT 4,3 ATTRIBUTE(YELLOW) DISPLAY "Resumen Compras Categorizadas Por Naturaleza Del Producto" AT 6,10 ATTRIBUTE(YELLOW) LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_in,fecha_fi 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 END INPUT IF int_flag tHEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT BY NAME criterio ON a.cod_sp,a.cod_sp_sec 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.categoria,b.cod_mon,", "b.cantidad,b.precio,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_Sec ", " FROM cotb00014 a,cotb00015 b,cotb00021 c ", " WHERE a.num_oc = b.num_oc AND ", "a.tipo = b.tipo AND ", "a.fech_oc BETWEEN ? AND ? 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.status_t IS NULL AND ",criterio CLIPPED, #" GROUP BY 1,2,3,4", " ORDER BY 1,2,3,4" DISPLAY "Buscando Informacion..... Espere por Favor" AT 17,14 PREPARE comando FROM selec DECLARE busca CURSOR FOR comando OPEN busca USING fecha_in,fecha_fi #CREACION DE VIEW PARA CLASIFICAR LAS ORDENES PERTENECIENTES A UNA MONEDA #ESPECIFICA. CREATE VIEW ordenes (num_oc,tipo,cod_mon) AS SELECT UNIQUE a.num_oc,a.tipo,b.cod_mon FROM cotb00014 a,cotb00015 b WHERE a.num_oc = b.num_oc AND a.tipo = b.tipo AND #a.fecha_oc BETWEEN fecha_in AND fecha_fi AND a.status_t IS NULL START REPORT corp032 TO "jh" DISPLAY "Impresion en Proceso..... Espere por Favor" AT 17,14 LET idx = 1 WHILE STATUS != NOTFOUND FETCH busca INTO c_datos.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF LET c_datos.codigo = c_datos.cod_sp USING "##", c_datos.cod_sp_sec USING "####", c_datos.moneda USING "##" LET c_datos.cod_cat = c_datos.categoria CLIPPED, c_datos.moneda USING "##" LET c_datos.base = 1 IF c_Datos.cod_n = 1 THEN SELECT a.base INTO c_Datos.base FROM intb00002 a WHERE a.cod_n = c_Datos.cod_n AND a.cod_grupo = c_datos.cod_grupo AND a.cod_tipo = c_datos.cod_tipo AND a.cod_sec = c_datos.cod_sec END IF LET c_datos.bruto = c_datos.cantidad * c_datos.precio LET c_datos.bruto = c_datos.bruto / c_datos.base IF c_datos.codigo[1,2] != "**" THEN OUTPUT TO REPORT corp032(c_datos.*,fecha_in,fecha_fi) END IF LET idx = idx + 1 END WHILE FINISH REPORT corp032 DROP VIEW ordenes RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT corp032(x,fecha1,fecha2) DEFINE x RECORD cod_sp SMALLINT, cod_sp_Sec SMALLINT, categoria CHAR(1), moneda LIKE cotb00015.cod_mon, cantidad LIKE cotb00015.cantidad, precio LIKE cotb00015.precio, cod_n LIKE cotb00015.cod_n, cod_grupo LIKE cotb00015.cod_n, cod_tipo LIKE cotb00015.cod_n, cod_sec LIKE cotb00015.cod_n, base LIKE intb00002.base, bruto DECIMAL(14,2), gastos DECIMAL(14,2), porc DECIMAL(10,4), codigo CHAR(8), cod_cat CHAR(3), gasto1 DECIMAL(12,2) END RECORD, d_moneda LIKE cotb00031.descrip_mon, t_sup SMALLINT DEFINE p_descrip,nom_sup CHAR(30) DEFINE fecha1,fecha2 DATE DEFINE descrip,descrip1 CHAR(30) DEFINE hora CHAR(5), negrillas_on,negrillas_off CHAR(2), tt_valor,gasto_tot,t_bruto,t_bruto1 DECIMAL(12,2) OUTPUT LEFT MARGIN 2 TOP MARGIN 1 ORDER BY x.codigo,x.moneda,x.cod_cat FORMAT PAGE HEADER LET hora = time LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET l = (80 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1,negrillas_on PRINT COLUMN 1, "coprrp032", COLUMN l, p_companias.nombre CLIPPED, COLUMN 73, "Pag. ", pageno using "###" PRINT COLUMN 31, "Sistema de Compras", COLUMN 73, today using "dd/mm/yy" PRINT COLUMN 11,"RESUMEN COMPRAS CATEGORIZADAS POR NATURALEZA DE PRODUCTO" PRINT negrillas_off PRINT COLUMN 1, "FECHA: DEL ", fecha1 USING "dd/mm/yy", " AL ", fecha2 USING "dd/mm/yy" PRINT negrillas_on PRINT COLUMN 1, "----------------------------------------", "----------------------------------------" PRINT COLUMN 1, "Secuencia", COLUMN 15, "Suplidor", COLUMN 62, "Valor Compras" PRINT COLUMN 1, "----------------------------------------", "----------------------------------------" PRINT negrillas_off BEFORE GROUP OF x.codigo LET gasto_tot = 0 LET t_bruto = 0 LET tt_valor = 0 SELECT SUM(a.c_flete+a.otros_g) INTO gasto_tot FROM cotb00014 a,ordenes b WHERE a.cod_sp = x.cod_sp AND a.cod_sp_Sec = x.cod_sp_sec AND a.fech_oc BETWEEN fecha_in AND fecha_fi AND a.num_oc = b.num_oc AND a.tipo = b.tipo AND b.cod_mon = x.moneda AND a.status_t IS NULL SELECT a.nom_sp INTO nom_sup FROM cotb00001 a WHERE a.cod_sp = x.cod_sp AND a.cod_sp_sec = x.cod_sp_Sec PRINT COLUMN 1,negrillas_on,x.cod_sp USING "##","-", x.cod_sp_sec USING "####"," ", nom_sup,negrillas_off BEFORE GROUP OF x.moneda LET d_moneda = "MONEDA NO EXISTE" SELECT a.descrip_mon INTO d_moneda FROM cotb00031 a WHERE a.cod_mon = x.moneda PRINT COLUMN 3, negrillas_on,"MONEDA: ", d_moneda CLIPPED, negrillas_off BEFORE GROUP OF x.cod_cat LET t_bruto1 = 0 ON EVERY ROW LET t_bruto = t_bruto + x.bruto LET t_bruto1 = t_bruto1 + x.bruto AFTER GROUP OF x.cod_cat LET p_descrip = "CATEGORIA SIN DESCRIPCION" SELECT a.descripcion INTO p_descrip FROM cotb00023 a WHERE a.categoria = x.categoria LET x.porc = 1 IF t_bruto != 0 THEN LET x.porc = GROUP SUM(x.bruto) / t_bruto END IF LET x.gasto1 = x.porc * gasto_tot LET tt_valor = t_bruto1 + x.gasto1 + tt_valor PRINT COLUMN 10, x.categoria," ",p_descrip, #COLUMN 57, x.base ," ",t_bruto," ",x.gasto1 COLUMN 57, t_bruto1+x.gasto1 USING "###,###,###.##" AFTER GROUP OF x.codigo IF t_sup IS NULL THEN LET t_sup = 0 END IF LET t_sup = t_sup + 1 PRINT COLUMN 57, "--------------" PRINT COLUMN 10, "Total Suplidor---> ", COLUMN 57, tt_valor USING "##,###,###.##" SKIP 1 LINE ON LAST ROW PRINT COLUMN 1, "Total Registros==> ", t_sup USING "###" END REPORT