{ ------------------------------------------------------------------------------- PROGRAMA : IPPRRP019 OBJETIVO : REPORTE EXISTENCIA PROGRAMADOR : Ing. Juan F. Soto FECHA REALIZACION : Junio 5, 1999. ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL ipprrp019() END MAIN FUNCTION ipprrp019() 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_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, 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 "ipprrp018" AT 4,3 DISPLAY "Existencia Con Entrada - Salida" AT 6,24 LET tipo_papel = 1 CALL msgrp000(tipo_papel) LABEL vuelve: INPUT BY NAME datos_cons.fech_fi ON KEY (F2) LET pflag = "S" 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 ON KEY (F2) LET pflag = "S" AFTER CONSTRUCT END CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET select_cost = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.unidad_med,SUM(c.cantidad_2) ", "FROM iptb00002 a,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 ", criterio CLIPPED,") AND a.status_t is null and (c.fecha <= ?) ", " and c.status_t IS NULL ", " GROUP BY 1,2,3,4,5,6 ", " ORDER BY 1,2,3,4 " 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 START REPORT iprp19 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 IF existe.existe_act IS NULL THEN LET existe.existe_act = 0 END IF IF existe.cantidad IS NULL THEN LET existe.cantidad = 1 END IF LET existe.codigo = existe.cod_n using "&",existe.cod_grupo using "&",existe.cod_tipo using "&&",existe.cod_sec using "&&&" IF existe.existe_act > 0 THEN OUTPUT TO REPORT iprp19(existe.*) END IF END WHILE FINISH REPORT iprp19 CLEAR SCREEN IF pflag = "S" THEN RUN "WINWORD C:\\ARCHIVO" ELSE RUN "type C:\\archivo > %USPRINT%" END IF END FUNCTION REPORT iprp19(x) DEFINE x RECORD 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, existe_act DECIMAL(12,5), cantidad DECIMAL(12,5), codigo CHAR(7) END RECORD, p_costo DECIMAL (8,4), tvalor DECIMAL(12,2) DEFINE tt INTEGER DEFINE descrip_esp LIKE iptb00002.descrip_esp DEFINE unidad_med LIKE iptb00002.unidad_med DEFINE cantidad,entradas,salidas,total_c,total_p DECIMAL (12,5) DEFINE l INTEGER 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 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 27, ASCII 77 LET normal= ASCII 27,ASCII 80 END IF LET l = (128 - LENGTH(p_companias.nombre CLIPPED))/2 LET hora = time PRINT COLUMN 1,comp_on PRINT COLUMN 1, "ipprrp019", COLUMN l, p_companias.nombre CLIPPED, COLUMN 121, "Pag. ",pageno using "###" PRINT COLUMN 47, "Sistema de Inventario de Productos", COLUMN 121, today using "dd/mm/yyyy" PRINT COLUMN 48, " Reporte Existencia", COLUMN 124, hora SKIP 1 LINE PRINT COLUMN 1, "------------------------------------------------", "-------------------------------------------------" , "--------------------------------------" PRINT COLUMN 70, "EXISTENCIA" PRINT COLUMN 1, "CODIGO", COLUMN 12, "DESCRIPCION", COLUMN 70, "AL ", datos_cons.fech_fi using "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "-------------------------------------------------", "------------------------------------" SKIP 1 LINE BEFORE GROUP OF x.codigo LET entradas = 0 LET salidas = 0 AFTER GROUP OF x.codigo PRINT COLUMN 1, x.cod_n USING "&&","-",x.cod_grupo USING "&&","-", x.cod_tipo USING "&&&","-",x.cod_sec USING "&&&", " ",x.descrip_esp CLIPPED, COLUMN 45, x.unidad_med, COLUMN 70, x.existe_act USING "---,---,---.###" ON LAST ROW PRINT COLUMN 4, comp_off END REPORT