{ ------------------------------------------------------------------------------- PROGRAMA : IPPRRP016 OBJETIVO : REPORTE EXISTENCIA SHOWROOM Con Entradas y Salidas. PROGRAMADOR : Ing. Juan F. Soto FECHA REALIZACION : Agosto 27, 1997. ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" DEFINE usuario CHAR(9) MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL ipprrp016() END MAIN FUNCTION ipprrp016() DEFINE mes CHAR(2) DEFINE idx_ant,idx_cos,idx_act SMALLINT DEFINE ano_act CHAR(4) DEFINE salir,primera CHAR(1) DEFINE balance_in DECIMAL(12,2) DEFINE existe RECORD cod_mov SMALLINT, 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 LIKE iptb00002.descrip_esp, unidad_med LIKE iptb00002.unidad_med, fecha DATE, existe_act DECIMAL(12,5), cantidad DECIMAL(12,5), codigo CHAR(7) END RECORD DEFINE costos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, fecha CHAR(2), costo_st DECIMAL(12,5) END RECORD DEFINE actual RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, 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 ipfmrp018 FROM "ipfmrp018" DISPLAY FORM ipfmrp018 CALL pantalla() DISPLAY "ipprrp016" AT 4,3 DISPLAY "Existencia En Show-Room" AT 6,28 LET tipo_papel = 1 CALL msgrp000(tipo_papel) LABEL vuelve: INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi AFTER FIELD fech_in IF datos_cons.fech_in IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) GOTO vuelve END IF AFTER FIELD fech_fi IF datos_cons.fech_fi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) GOTO vuelve END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec FROM cod_n,cod_grupo, cod_tipo,cod_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF SELECT UNIQUE a.usuario INTO usuario FROM seg0001 a WHERE a.usuario = USER LET select_cost = "SELECT c.cod_mov,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.unidad_med,c.fecha,c.cantidad_2 ", "FROM iptb00002 a,OUTER iptb00006 c ", "WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ", " a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec and c.cod_mov ", " in (7,3) and ", criterio CLIPPED,") AND a.status_t is null and (c.fecha <= ?) and ", " c.status_t IS NULL ", " ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,c.fecha " DISPLAY "<< Buscando Informacion... Espere Por Favor" AT 19,14 PREPARE comando FROM select_cost DECLARE busca CURSOR FOR comando OPEN busca USING datos_cons.fech_fi LET select_cost = "SELECT COUNT(*) FROM iptb00002 a,OUTER iptb00006 c ", "WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ", " a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec and c.cod_mov ", " in (7, 3) and ",criterio CLIPPED,") AND a.status_t is null and ", " (c.fecha <= ?) and c.status_t IS NULL " PREPARE comando2 FROM select_cost DECLARE busca1 CURSOR FOR comando2 OPEN busca1 USING datos_cons.fech_fi DISPLAY "<< Contando Informacion... Espere Por Favor" AT 19,14 FETCH busca1 INTO regi START REPORT prt_showr TO "C:\\archivo" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET p_param = "S" WHILE status != notfound FETCH busca 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 CALL termometro(regi,p_param) LET p_param = "N" IF existe.existe_act IS NULL THEN LET existe.existe_act = 0 END IF LET existe.codigo = existe.cod_n using "&",existe.cod_grupo using "&",existe.cod_tipo using "&&",existe.cod_sec using "&&&" IF existe.cod_mov = 3 THEN LET existe.existe_act = existe.existe_act * -1 END IF IF existe.cod_mov = 7 THEN LET existe.existe_act = existe.existe_act * -1 END IF OUTPUT TO REPORT prt_showr(existe.*) END WHILE FINISH REPORT prt_showr CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT prt_showr(x) DEFINE x RECORD cod_mov SMALLINT, 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 LIKE iptb00002.descrip_esp, unidad_med LIKE iptb00002.unidad_med, fecha DATE, existe_act DECIMAL(12,5), cantidad DECIMAL(12,5), codigo CHAR(7) END RECORD DEFINE l,tt INTEGER DEFINE descrip_esp CHAR(70) DEFINE unidad_med LIKE iptb00002.unidad_med, referencia CHAR(15) DEFINE t_valor,costo,cantidad,entradas,salidas,total_c, total_p DECIMAL (12,2) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(3) DEFINE normal CHAR(3) DEFINE doce CHAR(3) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 #ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.fecha FORMAT PAGE HEADER 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 27, ASCII 77 LET normal= ASCII 27,ASCII 80 LET l = (127 - LENGTH(p_companias.nombre CLIPPED))/2 LET hora = time PRINT COLUMN 1, comp_on PRINT COLUMN 1, "ipprrp016", COLUMN l, p_companias.nombre CLIPPED, COLUMN 120, "Pag. ",pageno using "###" PRINT COLUMN 42, " Sistema de Inventario de Productos", COLUMN 120, today using "dd/mm/yyyy" PRINT COLUMN 42, " Existencia En El ShowRoom", COLUMN 120, hora SKIP 1 LINE PRINT COLUMN 1,"Movimientos Del: ", datos_cons.fech_in using "dd/mm/yyyy", " AL ", datos_cons.fech_fi using "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "-------------------------------------------------" , "-----------------------------------" PRINT COLUMN 63, "EXISTENCIA", COLUMN 98, "COSTO", COLUMN 105, "EXISTENCIA" PRINT COLUMN 1, "CODIGO", COLUMN 12, "DESCRIPCION", COLUMN 60, "AL ",datos_cons.fech_in - 1 using "dd/mm/yyyy", COLUMN 74, "ENTRADAS", COLUMN 87, "SALIDAS", COLUMN 103, "STD", COLUMN 107, "AL ", datos_cons.fech_fi using "dd/mm/yyyy", COLUMN 127, "VALOR" PRINT COLUMN 1, "--------------------------------------------------", "-------------------------------------------------", "-----------------------------------" SKIP 1 LINE BEFORE GROUP OF x.codigo LET entradas = 0 LET salidas = 0 AFTER GROUP OF x.codigo LET descrip_esp = NULL LET unidad_med = NULL LET cantidad = 1 LET x.existe_act = 0 LET costo = 0 SELECT MAX(a.material+a.labor+a.gastos) INTO costo FROM iptb00004 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.ventas = "1" AND mes_fin = 12 AND a.ano = YEAR(datos_cons.fech_fi) SELECT a.descrip_esp,a.descrip_ing,a.unidad_med INTO descrip_esp,referencia,unidad_med FROM iptb00002 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 IF STATUS = NOTFOUND THEN LET STATUS = 0 LET descrip_esp = "NO TIENE DESCRIPCION" LET unidad_med = " " END IF LET descrip_esp = descrip_esp CLIPPED LET entradas= (GROUP SUM(x.existe_act) WHERE x.fecha >= datos_cons.fech_in AND x.existe_act > 0) LET salidas =(GROUP SUM(x.existe_act) WHERE x.fecha >= datos_cons.fech_in AND x.existe_act < 0) IF salidas IS NULL THEN LET salidas = 0 END IF IF t_valor IS NULL THEN LET t_valor = 0 END IF IF entradas IS NULL THEN LET entradas = 0 END IF PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", " ",descrip_esp[1,45] CLIPPED, COLUMN 60, GROUP SUM(x.existe_act) WHERE x.fecha <= datos_cons.fech_in - 1 USING "---,---.###", COLUMN 72, entradas using "###,###.###", COLUMN 84, salidas using "###,###.###", COLUMN 96, costo USING "###,###.###", COLUMN 108, GROUP SUM(x.existe_act) USING "---,---.###", COLUMN 120, costo*GROUP SUM(x.existe_act) USING "--,---,---.##" LET t_valor = t_valor + (costo * GROUP SUM(x.existe_act)) IF tt IS NULL THEN LET tt = 0 END IF LET tt = tt + 1 ON LAST ROW SKIP 1 LINES PRINT COLUMN 1, "==================================================", "==================================================", "===================================" PRINT COLUMN 4, "Total Registros Impresos = ", tt USING "<<<<", COLUMN 120, t_valor USING "--,---,---.##" PRINT COLUMN 4, comp_off END REPORT