{ -------------------------------------------------------------------------- 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