403 lines
14 KiB
Plaintext
403 lines
14 KiB
Plaintext
|
|
|
|
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 "ipfmwd100" 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',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,fecha_dia DATE,
|
|
reservado,existencia,transito,cantidad_orden,pcantidadconduce,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) <= ?
|
|
"
|
|
PREPARE comando1 FROM selec
|
|
EXECUTE comando1 INTO reservado USING pcodn,pcodgrupo,pcodtipo,pcodsec,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,
|
|
selec STRING
|
|
|
|
SELECT a.dias_vence_reservas INTO dias FROM companias a
|
|
|
|
LET selec = " 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 = ? 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) <=? "
|
|
PREPARE comando FROM selec
|
|
DECLARE busca_reserva CURSOR FOR comando
|
|
OPEN busca_reserva USING pcodn,pcodgrupo,pcodtipo,pcodsec,dias
|
|
|
|
DISPLAY selec
|
|
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
|
|
{ ESTA FUNCION PARA BUSCAR LAS ORDENES QUE TIENE DISPONIBLES TODAVIA ESTA EN PROCESO DE DESARRLLO
|
|
FECHA : 27/5/2016}
|
|
FUNCTION busca_ordenes_reservadas(pcodn,pcodgrupo,pcodtipo,codsec)
|
|
DEFINE pcodn,pcodgrupo,pcodtipo,codsec SMALLINT,
|
|
ordenes DYNAMIC ARRAY OF RECORD
|
|
num_oc INT,
|
|
fecha DATE,
|
|
vendedor VARCHAR(100),
|
|
cantidad DEC(12,5),
|
|
cantidad_Desp DEC(12,5)
|
|
END RECORD,
|
|
i SMALLINT
|
|
|
|
DECLARE busca_orden CURSOR FOR
|
|
SELECT a.num_oc,CONVERT(char(10),b.fecha_oc,103),c.nom1_emp||' '||c.apell1_emp,
|
|
a.cantidad,'0'
|
|
FROM prtb00013 a,prtb00012 b,adtb00003 c
|
|
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 i = 1
|
|
FOREACH busca_orden INTO ordenes[i].*
|
|
LET ordenes[i].cantidad_Desp=0
|
|
SELECT SUM(c.cantidad_2) INTO ordenes[i].cantidad_Desp
|
|
FROM prtb00013 a,prtb00012 b,iptb00006 c,iptb00005 d
|
|
WHERE (a.num_oc = b.num_oc) AND
|
|
(a.num_oc = ordenes[i].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
|
|
|
|
|
|
LET i = i + 1
|
|
END FOREACH
|
|
DISPLAY ARRAY ordenes TO sordenes.*
|
|
|
|
|
|
END FUNCTION
|
|
|
|
|
|
FUNCTION cambia_clave()
|
|
DEFINE
|
|
nclave,cclave,clave,usuario char(50),
|
|
altera CHAR(100)
|
|
OPEN WINDOW cambia AT 1,1 WITH FORM "cambia"
|
|
DISPLAY usuario TO usuario
|
|
DISPLAY clave TO clave
|
|
INPUT BY NAME nclave,cclave
|
|
AFTER INPUT
|
|
IF INT_FLAG THEN
|
|
CALL FGL_WINMESSAGE( "ATENCION", "OPERACION CANCELADA", "stop")
|
|
EXIT INPUT
|
|
END IF
|
|
|
|
IF nclave IS NULL OR nclave = " " THEN
|
|
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO PUEDE ESTAR EN BLANCO", "stop")
|
|
NEXT FIELD nclave
|
|
END IF
|
|
IF cclave IS NULL OR cclave = " " THEN
|
|
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO PUEDE ESTAR EN BLANCO", "stop")
|
|
NEXT FIELD cclave
|
|
END IF
|
|
IF nclave <> cclave THEN
|
|
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE NUEVA NO COINCIDE CON LA CONFIRMACION DE LA CLAVE", "stop")
|
|
NEXT FIELD nclave
|
|
ELSE
|
|
|
|
LET altera = "sp_password @old = '", clave CLIPPED,"', ",
|
|
"@new = '",nclave CLIPPED,"' ,",
|
|
"@loginame = '",usuario CLIPPED, "'"
|
|
|
|
PREPARE caltera FROM altera
|
|
EXECUTE caltera
|
|
IF STATUS = 0 THEN
|
|
UPDATE seg0001 SET cambia_clave = "NO" WHERE seg0001.usuario = usuario
|
|
CALL FGL_WINMESSAGE( "ATENCION", "CLAVE CAMBIADA SATISFACTORIAMENTE", "stop")
|
|
LET clave = nclave
|
|
ELSE
|
|
CALL FGL_WINMESSAGE( "ATENCION", "NO FUE POSIBLE EL CAMBIO DE LA CLAVE, TRATE NUEVA VEZ", "stop")
|
|
NEXT FIELD nclave
|
|
END IF
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
IF INT_FLAG THEN
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
CLOSE WINDOW cambia
|
|
END IF
|
|
END FUNCTION |