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), 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,'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',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',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 FUNCTION bodegas(cb2) DEFINE ketiquetas SMALLINT, detiquetas CHAR(30), cbodegas ui.ComboBox, cb2 CHAR(2) LET cbodegas = ui.combobox.forname("formonly.bodega") DECLARE bbodegas CURSOR FOR SELECT a.cod_bodega,a.descripcion FROM intb00009 a ORDER BY a.descripcion CALL cbodegas.clear() FOREACH bbodegas INTO ketiquetas,detiquetas CALL cbodegas.additem(ketiquetas,detiquetas) END FOREACH IF cb2 ='2' THEN LET cbodegas = ui.combobox.forname("formonly.bodega_destino") DECLARE bbodegas2 CURSOR FOR SELECT a.cod_bodega,a.descripcion FROM intb00009 a ORDER BY a.descripcion CALL cbodegas.clear() FOREACH bbodegas2 INTO ketiquetas,detiquetas CALL cbodegas.additem(ketiquetas,detiquetas) END FOREACH END IF END FUNCTION FUNCTION disponibles(pcodn,pcodgrupo,pcodtipo,pcodsec,pfecha) DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,dias SMALLINT, pfecha DATE, reservado,existencia,transito,cantidad_orden,pcantidadconduce,cantidad_ordenada,cantidad_recibida DEC(12,5) SELECT a.dias_vence_reservas INTO dias FROM companias a LET reservado = 0 SELECT SUM(a.cantidad_reservada) INTO reservado FROM vetb00051 a,vetb00050 b WHERE a.status_t IS NULL AND a.cotizacion_no = b.cotizacion_no AND a.cod_n = pcodn AND a.cod_grupo=pcodgrupo AND a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec AND a.cantidad_reservada IS NOT NULL AND a.fecha_vence_reserva -b.fech_crea <= dias IF reservado IS NULL THEN LET reservado =0 END IF LET existencia = 0 SELECT SUM(a.cantidad_2) INTO existencia FROM iptb00006 a WHERE a.status_t IS NULL AND (a.cod_n = pcodn AND a.cod_grupo=pcodgrupo AND a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec) LET cantidad_orden = 0 SELECT SUM(a.cantidad) INTO cantidad_orden FROM prtb00013 a,prtb00012 b WHERE a.num_oc = b.num_oc AND b.cerrada = 'N' AND b.status_t IS NULL AND (a.cod_n = pcodn AND a.cod_grupo=pcodgrupo AND a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec ) LET pcantidadConduce = 0 SELECT SUM(c.cantidad_2) INTO pcantidadConduce FROM prtb00013 a,prtb00012 b,iptb00006 c,iptb00005 d WHERE (a.num_oc = b.num_oc) AND b.cerrada = 'N' AND b.status_t IS NULL AND (a.cod_n = pcodn AND a.cod_grupo=pcodgrupo AND a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec) AND (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 = d.cod_mov AND (d.control_despacho = 'SI' OR d.control_devolucion = 'SI') AND a.num_oc = c.num_oc AND c.status_t IS NULL # TRANSITO LET cantidad_ordenada = 0 SELECT SUM(a.cantidad) INTO cantidad_ordenada FROM cotb00015 a,cotb00014 b WHERE (a.cod_n = pcodn AND a.cod_grupo=pcodgrupo AND a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec) AND (a.num_oc = b.num_oc) AND b.cierre ='N' AND a.status_t IS NULL LET cantidad_recibida =0 SELECT SUM(a.cantidad_2) INTO cantidad_recibida FROM iptb00006 a,cotb00015 b,cotb00014 c WHERE (a.cod_n = pcodn AND a.cod_grupo=pcodgrupo AND a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec AND a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo) AND (a.orden_compra = b.num_oc) AND b.num_oc = c.num_oc AND c.cierre = 'N' AND a.status_t IS NULL LET transito = cantidad_ordenada - cantidad_recibida IF cantidad_orden IS NULL THEN LET cantidad_orden=0 END IF IF transito IS NULL THEN LET transito=0 END IF IF pcantidadconduce IS NULL THEN LET pcantidadconduce =0 END IF RETURN cantidad_orden,pcantidadConduce,transito,existencia,reservado END FUNCTION FUNCTION busca_reservas(pcodn,pcodgrupo,pcodtipo,pcodsec) DEFINE idx,pcodn,pcodgrupo,pcodtipo,pcodsec,dias SMALLINT, arr_reserva DYNAMIC ARRAY OF RECORD cotizacion_no INT, vendedor VARCHAR(100), nombre VARCHAR(100), cantidad DEC(12,5), fecha CHAR(10) END RECORD SELECT a.dias_vence_reservas INTO dias FROM companias a DECLARE busca_reserva CURSOR FOR SELECT a.cotizacion_no,RTRIM(c.nom1_emp)||' '||RTRIM(c.apell1_emp),b.nombre_cliente,a.cantidad_reservada,CONVERT(CHAR(10),a.fecha_vence_reserva,103) FROM vetb00051 a,vetb00050 b,adtb00003 c WHERE a.status_t IS NULL AND b.sec_vend = c.num_emp AND a.cotizacion_no = b.cotizacion_no AND a.cod_n = pcodn AND a.cod_grupo=pcodgrupo AND a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec AND a.cantidad_reservada IS NOT NULL AND a.fecha_vence_reserva -b.fech_crea <= dias LET idx = 1 FOREACH busca_reserva INTO arr_reserva[idx].* LET idx = idx + 1 END FOREACH OPEN WINDOW ipfmwd012 WITH FORM "ipfmwd012" DISPLAY ARRAY arr_reserva TO s_reserva.* CLOSE WINDOW ipfmwd012 END FUNCTION FUNCTION almacenes(pcodn,pcodgrupo,pcodtipo,pcodsec) DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec SMALLINT, arr_existencia DYNAMIC ARRAY OF RECORD almacen VARCHAR(30), existencia DEC(12,2) END RECORD, idx SMALLINT OPEN WINDOW w1 AT 1,1 WITH FORM "almacenes" DECLARE busca_a CURSOR FOR SELECT b.descripcion,SUM(c.cantidad_2) FROM intb00009 b,iptb00006 c WHERE b.cod_bodega = c.bodega AND c.cod_n = pcodn AND c.cod_grupo = pcodgrupo AND c.cod_tipo = pcodtipo AND c.cod_sec = pcodsec AND c.status_t IS NULL GROUP BY b.descripcion LET idx = 1 FOREACH busca_a INTO arr_existencia[idx].* LET idx = idx + 1 END FOREACH DISPLAY ARRAY arr_existencia TO sexistencia.* CLOSE WINDOW w1 END FUNCTION