#----------------------------------------------------------------------------- # irbuscaprod.4gl # busca_prod() tomada de PROYECTOS/otrodir/funciones.4gl (3.20), que es la que # enlazaba irprmt020. Va aparte porque funciones_ip.4gl redefine bodegas() # y disponibles(), ya presentes en la libreria FUNCIONES. #----------------------------------------------------------------------------- FUNCTION busca_prod(pinventario) DEFINE arr_prod DYNAMIC ARRAY OF RECORD cod_n INTEGER, cod_grupo INTEGER, cod_tipo INTEGER, cod_sec INTEGER, descrip_esp CHAR(50), unidad_med CHAR(4), existencia1 DEC(18, 4), cantidad_o DEC(18, 4), cantidad_c DEC(18, 4), existencia DEC(18, 4) END RECORD, selec_pt, criterio STRING, f, pinventario, idx SMALLINT, pcodn, pcodgrupo, pcodtipo, pcodsec INT, pdescripcion CHAR(100) OPEN WINDOW busca_2 AT 8, 4 WITH FORM "vefmwd100" ATTRIBUTE(BORDER, FORM LINE FIRST + 1, PROMPT LINE LAST) CONSTRUCT criterio ON a.cod_n, a.cod_grupo, a.cod_tipo, a.descrip_esp FROM cod_n, cod_grupo, cod_tipo, descrip_esp IF pinventario = '02' THEN LET selec_pt = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,SUM(b.cantidad_2),'0','0',SUM(b.cantidad_2) ", " FROM iptb00002 AS a INNER JOIN iptb00001 AS c ON 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 LEFT OUTER JOIN ", " iptb00006 AS b ON a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ", " a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND b.status_t IS NULL ", " WHERE a.status_t IS NULL AND ", CRITERIO CLIPPED, " GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ", " ORDER BY a.descrip_esp " END IF IF pinventario = '01' THEN LET selec_pt = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,'0','0','0',SUM(b.cantidad_2) ", " FROM intb00001 AS a ", " LEFT OUTER JOIN ", " intb00006 AS b ON a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ", " a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND b.status_t IS NULL ", " WHERE a.status_t IS NULL AND ", CRITERIO CLIPPED, " GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ", " ORDER BY a.descrip_esp " END IF IF pinventario = '03' THEN LET selec_pt = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,'0','0','0',SUM(b.cantidad_2) ", " FROM irtb00002 AS a ", " LEFT OUTER JOIN ", " irtb00006 AS b ON a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ", " a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND b.status_t IS NULL ", " WHERE a.status_t IS NULL AND ", CRITERIO CLIPPED, " GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ", " ORDER BY a.descrip_esp " END IF IF int_flag THEN LET Int_flag = FALSE CLOSE WINDOW busca_2 RETURN pcodn, pcodgrupo, pcodtipo, pcodsec, pdescripcion END IF PREPARE comando_p FROM selec_pt DECLARE busca_2 CURSOR FOR comando_p LET idx = 1 FOREACH busca_2 INTO arr_prod[idx].* LET idx = idx + 1 END FOREACH CALL SET_COUNT(idx - 1) DISPLAY ARRAY arr_prod TO s_prod.* AFTER ROW LET idx = arr_curr() LET pcodn = arr_prod[idx].cod_n LET pcodgrupo = arr_prod[idx].cod_grupo LET pcodtipo = arr_prod[idx].cod_tipo LET pcodsec = arr_prod[idx].cod_sec LET pdescripcion = arr_prod[idx].descrip_esp AFTER DISPLAY EXIT DISPLAY END DISPLAY CLOSE WINDOW busca_2 RETURN pcodn, pcodgrupo, pcodtipo, pcodsec, pdescripcion END FUNCTION