244 lines
9.3 KiB
Plaintext
244 lines
9.3 KiB
Plaintext
|
|
DEFINE prepDisp SMALLINT
|
|
|
|
FUNCTION disponibles(pcodn,pcodgrupo,pcodtipo,pcodsec,pfecha)
|
|
DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec 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
|
|
|
|
## Los 3 statements de reservas se preparan una sola vez por sesion,
|
|
## no en cada llamada (antes se hacia PREPARE dinamico en cada una).
|
|
IF prepDisp = 0 THEN
|
|
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 ",
|
|
" a.fecha_vence_reserva >= ? AND a.autorizada = 'SI'"
|
|
PREPARE comando1 FROM selec
|
|
|
|
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 ",
|
|
" a.fecha_vence_reserva >= ? AND a.autorizada = 'SI'"
|
|
PREPARE comando2 FROM selec
|
|
|
|
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 ",
|
|
" a.fecha_vence_reserva >= ? AND a.autorizada = 'SI'"
|
|
PREPARE comando3 FROM selec
|
|
|
|
LET prepDisp = 1
|
|
END IF
|
|
|
|
LET reservado = 0
|
|
LET fecha_Dia = TODAY
|
|
EXECUTE comando1 INTO reservado USING pcodn,pcodgrupo,pcodtipo,pcodsec,fecha_dia
|
|
|
|
|
|
IF reservado IS NULL THEN
|
|
LET reservado =0
|
|
END IF
|
|
LET reservado1 = 0
|
|
EXECUTE comando2 INTO reservado1 USING pcodn,pcodgrupo,pcodtipo,pcodsec,fecha_dia
|
|
|
|
|
|
IF reservado1 IS NULL THEN
|
|
LET reservado1 =0
|
|
END IF
|
|
|
|
LET reservado3 = 0
|
|
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
|
|
|