{ ------------------------------------------------------------------------------- PROGRAMA : IPPRRP009 OBJETIVO : REPORTE EXISTENCIAS PROGRAMADOR : Juan Fco. Soto. FECHA REALIZACION : Febrero 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" DEFINE p_costo LIKE iptb00004.labor, noimprime,imp1 CHAR(1),total_p dec(13,4),pcantidad DEC(12,4) FUNCTION ipprrp09() DEFINE mes CHAR(2) DEFINE idx_ant,idx_cos,idx_act SMALLINT DEFINE salir2,salir,salir1,primera CHAR(1) DEFINE balance_in DECIMAL(12,2) DEFINE p_ano CHAR(4) DEFINE existe RECORD cod_cia LIKE iptb00002.cod_cia, descripcion LIKE iptb00022.descripcion, cod_n LIKE iptb00002.cod_n, cod_grupo LIKE iptb00002.cod_grupo, cod_tipo LIKE iptb00002.cod_tipo, cod_sec LIKE iptb00002.cod_sec, descrip_esp CHAR(30), descrip_ing CHAR(15), unidad_med CHAR(3), existe_act DECIMAL(12,5), fecha DATE, codigo CHAR(7), total_c DECIMAL(12,2), costo DECIMAL(10,4) END RECORD DEFINE actual RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp LIKE iptb00002.descrip_esp, unidad_med LIKE iptb00002.unidad_med, balance LIKE iptb00006.cantidad_2 END RECORD DEFINE anterior RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, balance LIKE iptb00006.cantidad_2 END RECORD DEFINE select_cost,select_act,select_ant CHAR(1000) # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ipfmrp009 FROM "ipfmrp009" DISPLAY FORM ipfmrp009 CALL pantalla() DISPLAY "ipprrp009" AT 4,3 DISPLAY "Existencia a Diferente Fechas" AT 6,28 LET tipo_papel = 1 CALL msgrp000(tipo_papel) LET pflag = "N" LET noimprime = "N" INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi ON KEY (F3) LET noimprime = "S" ON KEY (F2) LET pflag = "S" AFTER FIELD fech_in IF datos_cons.fech_in IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_in END IF AFTER FIELD fech_fi IF datos_cons.fech_fi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_fi END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET p_ano = year(datos_cons.fech_fi) CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec FROM cod_n,cod_grupo,cod_tipo,cod_sec ON KEY (F2) LET pflag = "S" ON KEY (F3) LET noimprime = "S" AFTER CONSTRUCT EXIT CONSTRUCT END CONSTRUCT LET select_act = "SELECT a.cod_cia,e.descripcion,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.descrip_ing, a.unidad_med, SUM(d.cantidad_2) ", "FROM iptb00002 a, iptb00006 d,iptb00022 e ", "WHERE (a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ", " a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec) AND ", " a.cod_cia = e.cod_cia AND ", " d.status_t IS NULL and (d.fecha <= ?) AND ",criterio CLIPPED, " GROUP BY 1,2,3,4,5,6,7,8,9 ", " ORDER BY 1,3,4,5,6 " DISPLAY "<< Estoy Buscando Los Balances Actuales >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca_act FROM select_act DECLARE busca_balan_act CURSOR FOR busca_act OPEN busca_balan_act USING datos_cons.fech_fi DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT paul TO "C:\\archivo" WHILE status != notfound FETCH busca_balan_act INTO existe.* IF status = notfound THEN EXIT WHILE END IF IF int_flag THEN LET int_flag = FALSE LET numero_msg = 2 CALL msg(numero_msg) RETURN END IF LET existe.costo = 0 IF noimprime = "S" AND existe.existe_act <= 0 THEN CONTINUE WHILE END IF SELECT MAX(d.material+d.labor+d.gastos) INTO existe.costo FROM iptb00004 d WHERE d.mes_fin=12 AND d.status_t is null AND d.ano = year(datos_cons.fech_fi) and d.cod_n=existe.cod_n AND d.cod_grupo=existe.cod_grupo AND d.cod_tipo = existe.cod_tipo AND d.cod_sec = existe.cod_sec LET existe.total_c = 0 LET existe.total_c = existe.existe_act * existe.costo LET existe.codigo = existe.cod_n using "&",existe.cod_grupo using "&", existe.cod_tipo using "&&",existe.cod_sec using "&&&" OUTPUT TO REPORT paul(existe.*) END WHILE FINISH REPORT paul CLEAR SCREEN IF pflag = "S" THEN DISPLAY BY NAME total_p PROMPT "Desea Imprimir el reporte? " FOR imp1 LET imp1 = UPSHIFT(imp1) IF imp1 = "S" THEN RUN "WINWORD C:\\ARCHIVO" END IF ELSE # DISPLAY BY NAME total_p PROMPT "Desea Imprimir el reporte? " FOR imp1 LET imp1 = UPSHIFT(imp1) IF imp1 = "S" THEN RUN "type C:\\archivo > %USPRINT%" END IF END IF LET total_p = 0 END FUNCTION REPORT paul(x) DEFINE x RECORD cod_cia LIKE iptb00002.cod_cia, descripcion LIKE iptb00022.descripcion, cod_n LIKE iptb00002.cod_n, cod_grupo LIKE iptb00002.cod_grupo, cod_tipo LIKE iptb00002.cod_tipo, cod_sec LIKE iptb00002.cod_sec, descrip_esp CHAR(30), descrip_ing CHAR(15), unidad_med CHAR(3), existe_act DECIMAL(12,5), fecha DATE , codigo CHAR(7), total_c DECIMAL(12,2), costo DECIMAL(10,4) END RECORD, pfecha DATE,pcosto DEC(12,4) DEFINE tt INTEGER DEFINE costo1,labor1,gasto1,total_c DECIMAL (12,4) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(3) DEFINE hora CHAR(5) DEFINE l INTEGER OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 # ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec FORMAT PAGE HEADER IF pflag != "S" THEN LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 030 END IF LET hora = time LET l = (130 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on PRINT COLUMN 1, "ipprrp009", COLUMN l, p_companias.nombre CLIPPED, COLUMN 123, "Pag. ",pageno using "###" PRINT COLUMN 49, "Sistema de Inventario Productos ", COLUMN 123, today using "dd/mm/yyyy" PRINT COLUMN 49, " Existencia a Diferente Fechas", COLUMN 126, hora SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "-----------------------------------------------" PRINT COLUMN 78, "Existencia", COLUMN 94, "Existencia", COLUMN 114, "Costo", COLUMN 135, "Total" PRINT COLUMN 1, "Codigo", COLUMN 12, "Descripcion", COLUMN 78, "Al ",datos_cons.fech_in using "dd/mm/yyyy", COLUMN 95, "Al ", datos_cons.fech_fi using "dd/mm/yyyy", COLUMN 114, "Standard", COLUMN 129, "Al ",datos_cons.fech_fi using "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------------------------------------------" BEFORE GROUP OF x.cod_cia SKIP 1 LINE PRINT COLUMN 2," ORIGEN: ",x.descripcion SKIP 1 LINE ON EVERY ROW IF tt IS NULL THEN LET tt = 0 END IF LET tt = tt + 1 IF total_p is null THEN LET total_p = 0 END IF LET total_p = x.total_c + total_p LET descripcion = x.descrip_esp CLIPPED PRINT COLUMN 1, x.cod_n USING "&&","-",x.cod_grupo USING "&&","-", COLUMN 5, x.cod_tipo USING "&&&","-",x.cod_sec USING "&&&"," ", COLUMN 12, descripcion CLIPPED," ",x.unidad_med CLIPPED, COLUMN 77, x.existe_act USING "--,---,---.###", COLUMN 91, x.existe_act USING "---,---,---.###", COLUMN 111, x.costo USING "#,##,###.####", COLUMN 127, x.total_c USING "###,###,###.##" {SELECT max(a.fecha_lq) INTO pfecha FROM cttb00013 a WHERE a.cod_n = x.cod_n and a.cod_grupo = x.cod_grupo and a.cod_tipo = x.cod_tipo and a.cod_sec = x.cod_sec and a.status_t is null SELECT AVG(a.costo_lq) INTO pcosto FROM cttb00013 a WHERE a.cod_n = x.cod_n and a.cod_grupo = x.cod_grupo and a.cod_tipo = x.cod_tipo and a.cod_sec = x.cod_sec and a.status_t is null and a.fecha_lq = pfecha update tmpcostos set costolq = pcosto, existencia=x.existe_Act WHERE cod_n = x.cod_n and cod_grupo = x.cod_grupo and cod_tipo = x.cod_tipo and cod_sec = x.cod_sec } AFTER GROUP OF x.cod_cia PRINT COLUMN 77, "-------------", COLUMN 91, "--------------", COLUMN 127, "-------------" PRINT COLUMN 77, GROUP SUM(x.existe_act) WHERE x.fecha <= datos_cons.fech_in USING "--,---,---.###", COLUMN 91, GROUP SUM(x.existe_act) USING "---,---,---.###", COLUMN 127, GROUP SUM(x.total_c) USING "###,###,###.##" ON LAST ROW PRINT COLUMN 77, "-------------", COLUMN 91, "--------------", COLUMN 127, "-------------" PRINT COLUMN 77, SUM(x.existe_act) WHERE x.fecha <= datos_cons.fech_in USING "--,---,---.###", COLUMN 91, SUM(x.existe_act) USING "---,---,---.###", COLUMN 127, SUM(x.total_c) USING "###,###,###.##" LET total_p = SUM(x.total_c) SKIP 1 LINES PRINT COLUMN 1, "==================================================", "==================================================", "===============================================" PRINT COLUMN 4, "Total Registros Impresos =", tt USING "<<<<" PRINT comp_off END REPORT