{ ------------------------------------------------------------------------------- PROGRAMA : IPPRRP009 OBJETIVO : REPORTE EXISTENCIAS PROGRAMADOR : Juan Fco. Soto. FECHA REALIZACION : Febrero 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" DEFINE noimprime CHAR(1),total_p dec(13,4), p1codn,p1codgrupo,p1codtipo,p1codsec SMALLINT, existencia_v DEC(12,3) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL ipprrp09() END MAIN FUNCTION ipprrp09() DEFINE p_ano CHAR(4), actualiza CHAR(2) DEFINE existe RECORD cod_cia LIKE iptb00002.cod_cia, descripcion CHAR(50), 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(50), 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 select_act STRING # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ipfmrp009 FROM "ipfmrp009" DISPLAY FORM ipfmrp009 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,noimprime,historico,actualiza,servicios 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 AFTER INPUT IF actualiza = "SI" THEN IF historico = "SI" THEN DELETE FROM iptb00006 WHERE cod_mov = 99 END IF 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_cia,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,d.bodega FROM cod_cia,cod_n,cod_grupo,cod_tipo,cod_sec,bodega ON KEY (F2) LET pflag = "S" ON KEY (F3) LET noimprime = "S" BEFORE CONSTRUCT LET k1 = '1' CALL bodegas(k1) AFTER CONSTRUCT EXIT CONSTRUCT END CONSTRUCT IF historico = "N" THEN 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 a.status_t IS NULL AND ", " d.status_t IS NULL and (d.fecha <= ?) AND ",criterio CLIPPED, " GROUP BY 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 ", " ORDER BY a.cod_cia,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec " } "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 a.status_t IS NULL AND ", " d.status_t IS NULL and (d.fecha <= ?) AND ",criterio CLIPPED, " GROUP BY 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 ", " ORDER BY a.cod_cia,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec " ELSE 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 historicoMTECH.dbo.iptb00002 a, historicoMTECH.dbo.iptb00006 d,historicoMTECH.dbo.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 a.status_t IS NULL AND ", " d.status_t IS NULL and (d.fecha <= ?) AND ",criterio CLIPPED, " GROUP BY 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 ", " ORDER BY a.cod_cia,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec " } "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 historicoMTECH.dbo.iptb00002 a, historicoMTECH.dbo.iptb00006 d,historicoMTECH.dbo.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 a.status_t IS NULL AND ", " d.status_t IS NULL and (d.fecha <= ?) AND ",criterio CLIPPED, " GROUP BY 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 ", " ORDER BY a.cod_cia,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec " END IF DISPLAY "<< Estoy Buscando Los Balances Actuales >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia LET opt1 = fgl_winquestion("Atencion","Desea Reporte por Pantalla?", "no","yes|no","question",0) IF opt1 = "yes" THEN START REPORT existencia TO screen ELSE START REPORT existencia TO archivo END IF PREPARE busca_act FROM select_act DECLARE busca_balan_act CURSOR FOR busca_act OPEN busca_balan_act USING datos_cons.fech_fi DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) 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 IF historico = "N" THEN 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 ELSE LET selec = "SELECT MAX(d.material+d.labor+d.gastos) FROM historicoMTECH.dbo.iptb00004 d", " WHERE d.mes_fin=12 AND d.status_t is null AND ", " d.ano = ? and ", " d.cod_n=? AND d.cod_grupo=? AND ", " d.cod_tipo = ? AND d.cod_sec = ? " PREPARE cmdcosto FROM selec EXECUTE cmdcosto INTO existe.costo USING p_ano,existe.cod_n,existe.cod_grupo, existe.cod_tipo,existe.cod_sec #DISPLAY " c1 ",existe.cod_n," c2 ",existe.cod_grupo," c3 ",existe.cod_tipo," ",existe.cod_sec LET p1codn = NULL LET p1codGRUPO = NULL LET p1codTIPO = NULL LET p1codSEC = NULL SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec INTO p1codn,p1codgrupo,p1codtipo,p1codsec FROM tmpiptb00002 a WHERE a.pcodn = existe.cod_n AND a.pcodgrupo = existe.cod_grupo AND a.pcodtipo = existe.cod_tipo AND a.pcodsec = existe.cod_sec AND a.status_t IS NULL IF ACTUALIZA = "SI" THEN # IF STATUS <> NOTFOUND THEN # INSERT INTO iptb00006 (fecha,num_doc,cod_mov,detalle,cod_n,cod_grupo,cod_tipo,cod_Sec, # cantidad_2,us_crea,fech_crea,bodega) # VALUES ('01/31/2012','1','99','ACTUALIZADO POR CAMBIO CODIGO',p1codn,p1codgrupo, # p1codtipo,p1codsec,existe.existe_act,'PROC',getdate(),'1') # END IF END IF IF STATUS = NOTFOUND THEN LET STATUS = 0 END IF LET existencia_v = 0 LET selec = "SELECT SUM(d.cantidad_2) FROM marmotech.dbo.iptb00006 d", " WHERE d.status_t is null AND ", " d.cod_n=? AND d.cod_grupo=? AND ", " d.cod_tipo = ? AND d.cod_sec = ? and d.fecha <= ? " PREPARE cmdexiste FROM selec EXECUTE cmdexiste INTO existencia_v USING p1codn,p1codgrupo, p1codtipo, p1codsec, datos_cons.fech_in END IF 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 existencia(existe.*) END WHILE FINISH REPORT existencia DISPLAY BY NAME total_p LET cmd = null LET cmd ='copy ',archivo CLIPPED,' ', FGL_GETENV("FGLSPOOL")||"\\IPRP09.txt" RUN cmd CALL ui.Interface.frontCall("standard","getenv", ["FILEREPORTE"], [dcmd] ) LET cmd= FGL_GETENV("FGLSPOOL")||"\\IPRP09.txt" DISPLAY cmd,' ',dcmd CALL fgl_putfile(cmd,dcmd) IF opt1 <> "yes" then LET opt = fgl_winquestion("Atencion","Desea Imprimir Reporte?", "yes","yes|no","question",0) LET opt = UPSHIFT(opt) IF opt = "YES" THEN RUN imprime END IF END IF CLEAR SCREEN LET total_p = 0 END FUNCTION REPORT existencia(x) DEFINE x RECORD cod_cia LIKE iptb00002.cod_cia, descripcion CHAR(50), 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(50), 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 tt INTEGER 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 IF historico = 'N' THEN PRINT COLUMN 60, 'NO HISTORICO' ELSE PRINT COLUMN 64, 'HISTORICO' END IF 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 "---,---,-###.##", " ",p1codn USING "&&","-",p1codgrupo USING "&&&&","-",p1codtipo USING "&&&&","-", p1codsec USING "&&&&"," ", existencia_v 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 "####,###,###.##", COLUMN 143, SUM(existencia_v) 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