FUNCTION disponibles(pcodn,pcodgrupo,pcodtipo,pcodsec,pfecha) DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,dias SMALLINT, pfecha,fecha_dia DATE, reservado3,reservado1,reservado,existencia,transito,cantidad_orden, cantidad_orden1, cantidad_orden2,pcantidadconduce,pcantidadconduce1,pcantidadConduce2, cantidad_ordenada,cantidad_recibida DEC(12,5), selec STRING SELECT a.dias_vence_reservas INTO dias FROM companias a LET reservado = 0 LET fecha_Dia = TODAY LET selec= " SELECT SUM(a.cantidad_reservada) FROM vetb00051 a,vetb00050 b WHERE a.status_t IS NULL AND a.cotizacion_no = b.cotizacion_no AND a.cod_n = ? AND a.cod_grupo=? AND a.cod_tipo=? AND a.cod_sec=? AND a.cantidad_reservada IS NOT NULL AND ", # "DATEDIFF(day,a.fecha_vence_reserva,a.fecha_inicio_reserva) <= ? " " a.fecha_vence_reserva >= ? AND a.autorizada = 'SI'" PREPARE comando1 FROM selec EXECUTE comando1 INTO reservado USING pcodn,pcodgrupo,pcodtipo,pcodsec,fecha_dia IF reservado IS NULL THEN LET reservado =0 END IF LET reservado1 =0 LET selec= " SELECT SUM(a.cantidad_reservada) FROM vetb00051 a,vetb00050 b,intb00003 c WHERE a.status_t IS NULL AND a.cotizacion_no = b.cotizacion_no AND c.cod_n = ? AND c.cod_grupo=? AND c.cod_tipo=? AND c.cod_sec=? AND a.cod_n = c.cod_n_s AND a.cod_grupo = c.cod_grupo_s AND a.cod_tipo = c.cod_tipo_s AND a.cod_sec = c.cod_sec_s AND a.cantidad_reservada IS NOT NULL AND ", # "DATEDIFF(day,a.fecha_vence_reserva,a.fecha_inicio_reserva) <= ? " " a.fecha_vence_reserva >= ? AND a.autorizada = 'SI'" PREPARE comando2 FROM selec EXECUTE comando2 INTO reservado1 USING pcodn,pcodgrupo,pcodtipo,pcodsec,fecha_dia IF reservado1 IS NULL THEN LET reservado1 =0 END IF LET reservado3=0 LET selec= " SELECT SUM(a.cantidad_reservada) FROM vetb00051 a,vetb00050 b,intb00003 c WHERE a.status_t IS NULL AND a.cotizacion_no = b.cotizacion_no AND c.cod_n_s = ? AND c.cod_grupo_s=? AND c.cod_tipo_s=? AND c.cod_sec_s=? 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 a.cantidad_reservada IS NOT NULL AND ", # "DATEDIFF(day,a.fecha_vence_reserva,a.fecha_inicio_reserva) <= ? " " a.fecha_vence_reserva >= ? AND a.autorizada = 'SI'" PREPARE comando3 FROM selec EXECUTE comando3 INTO reservado3 USING pcodn,pcodgrupo,pcodtipo,pcodsec,fecha_dia IF reservado3 IS NULL THEN LET reservado3 =0 END IF LET reservado=reservado + reservado1 + reservado3 LET existencia = 0 IF pcodn =20 THEN SELECT ISNULL(SUM(a.cantidad_2),0) INTO existencia FROM iptb00006 a WHERE a.status_t IS NULL AND (a.cod_n = 6 AND a.cod_grupo=pcodgrupo AND a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec) ELSE SELECT ISNULL(SUM(a.cantidad_2),0) 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) END IF LET cantidad_orden = 0 SELECT ISNULL(SUM(a.cantidad),0) 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 cantidad_orden1 = 0 SELECT ISNULL(SUM(a.cantidad),0) INTO cantidad_orden1 FROM prtb00013 a,prtb00012 b,intb00003 e WHERE a.num_oc = b.num_oc AND b.cerrada = 'N' AND b.status_t IS NULL AND (e.cod_n = pcodn AND e.cod_grupo=pcodgrupo AND e.cod_tipo=pcodtipo AND e.cod_sec=pcodsec ) AND (a.cod_n = e.cod_n_s AND a.cod_grupo = e.cod_grupo_s AND a.cod_tipo = e.cod_tipo_s AND a.cod_sec = e.cod_sec_s) LET cantidad_orden2 = 0 SELECT ISNULL(SUM(a.cantidad),0) INTO cantidad_orden2 FROM prtb00013 a,prtb00012 b,intb00003 e WHERE a.num_oc = b.num_oc AND b.cerrada = 'N' AND b.status_t IS NULL AND (e.cod_n_s = pcodn AND e.cod_grupo_s=pcodgrupo AND e.cod_tipo_s=pcodtipo AND e.cod_sec_s=pcodsec ) AND (a.cod_n = e.cod_n AND a.cod_grupo = e.cod_grupo AND a.cod_tipo = e.cod_tipo AND a.cod_sec = e.cod_sec) LET cantidad_orden=cantidad_orden + cantidad_orden2 LET pcantidadConduce = 0 SELECT ISNULL(SUM(c.cantidad_2*-1),0) 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 # QUERY PARA LOS SUSTITUTOS LET pcantidadconduce1=0 SELECT ISNULL(SUM(c.cantidad_2*-1),0) INTO pcantidadConduce1 FROM prtb00013 a,prtb00012 b,iptb00006 c,iptb00005 d,intb00003 e WHERE (a.num_oc = b.num_oc) AND b.cerrada = 'N' AND b.status_t IS NULL AND (e.cod_n = pcodn AND e.cod_grupo=pcodgrupo AND e.cod_tipo=pcodtipo AND e.cod_sec=pcodsec) AND (a.cod_n = e.cod_n_s AND a.cod_grupo = e.cod_grupo_s AND a.cod_tipo = e.cod_tipo_s AND a.cod_sec = e.cod_sec_s) 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 SELECT ISNULL(SUM(c.cantidad_2*-1),0) INTO pcantidadConduce2 FROM prtb00013 a,prtb00012 b,iptb00006 c,iptb00005 d,intb00003 e WHERE (a.num_oc = b.num_oc) AND b.cerrada = 'N' AND b.status_t IS NULL AND (e.cod_n_s = pcodn AND e.cod_grupo_s=pcodgrupo AND e.cod_tipo_s=pcodtipo AND e.cod_sec_s=pcodsec) AND (a.cod_n = e.cod_n AND a.cod_grupo = e.cod_grupo AND a.cod_tipo = e.cod_tipo AND a.cod_sec = e.cod_sec) 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 LET pcantidadconduce = pcantidadconduce+pcantidadconduce1+pcantidadConduce2 # TRANSITO LET cantidad_ordenada = 0 SELECT ISNULL(SUM(a.cantidad),0) 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 ISNULL(SUM(a.cantidad_2),0) 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 # LET pcantidadconduce = pcantidadconduce + pcantidadconduce1 LET cantidad_orden = cantidad_orden + cantidad_orden1 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