Files
2026-09-22 20:38:51 -04:00

215 lines
6.2 KiB
Plaintext

{
--------------------------------------------------------------------------
PROGRAMA : IPPRMT064
OBJETIVO : Programa Para Anular en Forma Logica Movimientos de
Inventario de Producto Terminado Tabla iptb00006
FECHA : Octubre 1997
PROGRAMADOR : JUAN SOTO
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
--------------------------------------------------------------------------
}
GLOBALS
"ipprgb000.4gl"
DEFINE anular RECORD
cod_mov SMALLINT,
bodega SMALLINT,
num_doc INTEGER,
fecha DATE,
cod_sp SMALLINT,
cod_sp_sec SMALLINT
END RECORD
define prtb09 RECORD LIKE prtb00009.*
DEFINE descrip_mov CHAR(30)
DEFINE opc1 CHAR(3),conducex CHAR(10),ordenx INTEGER
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "decomarmol" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL ipprmt064()
END MAIN
FUNCTION ipprmt064()
DEFINE fecha CHAR(8)
DEFINE hora CHAR(5),
pnum_oc,prequisi INT
CLEAR SCREEN
OPTIONS
ERROR LINE 24,
FORM LINE 4,
COMMENT LINE 22,
PROMPT LINE 23
OPEN WINDOW anular AT 8,4 WITH FORM "ipfmwd003" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
INPUT BY NAME anular.cod_mov,anular.bodega,anular.num_doc ATTRIBUTE (BOLD)
BEFORE INPUT
CALL bodegas(1)
AFTER FIELD cod_mov
IF anular.cod_mov is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
SELECT a.descrip_mov INTO descrip_mov FROM iptb00005 a
WHERE a.cod_mov = anular.cod_mov AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
DISPLAY BY NAME descrip_mov
AFTER FIELD num_doc
IF anular.num_doc is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_doc
END IF
SELECT UNIQUE a.num_doc FROM iptb00006 a
WHERE a.cod_mov = anular.cod_mov AND a.num_doc = anular.num_doc AND
a.bodega = anular.bodega AND
a.status_t IS NULL AND
a.fecha > '01/01/2009'
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
#-> aCTUALZI el monitoreo de las ordenes de corte vg Saturday, March 03, 2001
IF anular.cod_mov = 20 THEN
SELECT UNIQUE a.conduce_no INTO conducex FROM iptb00006 a
WHERE a.num_doc = anular.num_doc and a.cod_mov = 20 and
a.bodega = anular.bodega
and a.status_t IS NULL
LET ordenx = conducex
END IF
# VERIFICA SI EL CONDUCE ESTA FACTURADO
IF anular.cod_mov = 30 OR anular.cod_mov = 55 OR anular.cod_mov = 31 THEN
SELECT a.factura FROM vetb00002 a,vetb00060 b
WHERE a.conduce = anular.num_doc AND
a.ventas = b.ventas AND
b.cod_mov = anular.cod_mov AND
a.tipo_cliente = b.tipo_cliente AND
a.bodega = anular.bodega AND
a.status_t IS NULL
IF STATUS <> NOTFOUND THEN
LET numero_msg =501
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
END IF
SELECT UNIQUE a.fecha,a.cod_sp,a.cod_sp_sec
INTO anular.fecha,anular.cod_sp,anular.cod_sp_sec
FROM iptb00006 a
WHERE a.cod_mov = anular.cod_mov AND a.num_doc = anular.num_doc AND
a.fecha > '12/31/2008' AND
a.bodega = anular.bodega and
a.status_t IS NULL
DISPLAY BY NAME anular.fecha,anular.cod_sp,anular.cod_sp_sec
LET p_fechas = anular.fecha
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
EXIT INPUT
END IF
END INPUT
IF bandera = 1 THEN
LET bandera = 0
GOTO salir
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLOSE WINDOW anular
RETURN
END IF
LET opc1 = fgl_winquestion("WARING","PROCEDO ANULAR ESTE DOCUMENTO?","NO","yes|no","question",0)
LET opc1 = upshift(opc1)
IF opc1 = "YES" THEN
SELECT status_mov INTO status_m FROM iptb00005
WHERE @cod_mov = anular.cod_mov
DECLARE busca CURSOR FOR
SELECT cod_n,cod_grupo,cod_tipo,cod_sec,cantidad_2 FROM iptb00006
WHERE num_doc=anular.num_doc and @cod_mov=anular.cod_mov and fecha> '12/31/2008' AND
bodega = anular.bodega
LET decide = "N"
LET idx = 1
FOREACH busca INTO movi2[idx].cod_n,movi2[idx].cod_grupo,movi2[idx].cod_tipo,
movi2[idx].cod_sec,movi2[idx].cantidad_2
IF status_m = "1" THEN
SELECT SUM(cantidad_2) INTO p_iptb06.cantidad_2 FROM iptb00006
WHERE cod_n = movi2[idx].cod_n and cod_grupo = movi2[idx].cod_grupo and
cod_tipo = movi[idx].cod_tipo and cod_sec = movi2[idx].cod_sec AND
bodega = anular.bodega and
status_t is null
LET p_iptb06.cantidad_2 = p_iptb06.cantidad_2 - movi2[idx].cantidad_2
IF p_iptb06.cantidad_2 < 0 THEN
LET numero_msg = 225
CALL msg(numero_msg)
SLEEP 3
RETURN
END IF
END IF
LET idx = idx + 1
END FOREACH
UPDATE iptb00006 set status_t = "E",us_mod = SUSER_SNAME(),fech_mod = GETDATE()
WHERE iptb00006.cod_mov = anular.cod_mov AND iptb00006.num_doc = anular.num_doc AND
iptb00006.FECHA > "12/31/2008" AND bodega = anular.bodega
IF (anular.cod_mov = 33 OR anular.cod_mov = 34) THEN
UPDATE iptb00017 set status_t = "E",us_mod = SUSER_SNAME(),fech_mod = GETDATE()
WHERE @cod_mov = anular.cod_mov AND @num_doc = anular.num_doc AND
bodega = anular.bodega
END IF
IF anular.cod_mov = 30 OR anular.cod_mov = 31 OR anular.cod_mov = 55 OR anular.cod_mov = 12
OR anular.cod_mov = 13
THEN
LET prequisi = 0
LET pnum_oc = 0
SELECT UNIQUE a.num_oc,a.num_req INTO pnum_oc,prequisi
FROM iptb00006 a
WHERE a.cod_mov = anular.cod_mov AND a.num_doc = anular.num_doc AND
a.fecha > '12/31/2008' AND bodega = anular.bodega
UPDATE prtb00012 SET cerrada = "N",us_mod = SUSER_SNAME(),fech_mod = GETDATE()
WHERE num_oc = pnum_oc and fecha > '12/31/2008'
UPDATE cctb00025 set estado_despacho = 'NO DESPACHADA'
WHERE num_req = prequisi
END IF
CALL fgl_winmessage("INFO","REGISTRO ELIMINADO","INFO")
END IF
LABEL salir:
CLOSE WINDOW anular
END FUNCTION