Files
DECOMARMOL/PROYECTO/otrodir/disponibles.4gl
T
2026-09-22 20:38:51 -04:00

124 lines
4.1 KiB
Plaintext

FUNCTION disponibles(pcodn,pcodgrupo,pcodtipo,pcodsec,pfecha)
DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,dias,vence SMALLINT,
pfecha DATE,
reservado,existencia,transito,cantidad_orden,pcantidadconduce,cantidad_ordenada,cantidad_recibida DEC(12,5)
DEFINE selec CHAR(100)
SELECT a.dias_vence_reservas INTO dias FROM companias a
LET vence =0
LET reservado = 0
{LET selec=
" SELECT datediff(day,a.fecha_vence_reserva,b.fech_crea) ",
" FROM vetb00051 a,vetb00050 b ",
" WHERE",
" 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.status_t IS NULL"
PREPARE query1 FROM selec
EXECUTE query1 INTO vence
IF vence IS NULL THEN
LET vence =0
END IF
IF vence <= dias THEN
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
IF reservado IS NULL THEN
LET reservado =0
END IF
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
{ COMENTE ESTE QUERY PORQUE NO VOY A USAR ESTA INFORMACION AL 06/07/2016
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