{ -------------------------------------------------------------------------- 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 administrador,cod_comp,control2factura,controlordenpedidos,direccion, facturacontrolconduce,fax,fech_crea,fech_mod,nombre,rnc,rutalogocia, status_t,telefono,tipo_db,url,us_crea,us_mod,usuario INTO p_companias.administrador,p_companias.cod_comp, p_companias.control2factura,p_companias.controlordenpedidos,p_companias.direccion, p_companias.facturacontrolconduce,p_companias.fax,p_companias.fech_crea, p_companias.fech_mod,p_companias.nombre,p_companias.rnc,p_companias.rutalogocia, p_companias.status_t,p_companias.telefono,p_companias.tipo_db, p_companias.url,p_companias.us_crea,p_companias.us_mod,p_companias.usuario FROM companias CALL ipprmt064() END MAIN FUNCTION ipprmt064() DEFINE fecha CHAR(8) DEFINE hora CHAR(5), pnum_oc,prequisi INT, err_mensaje STRING 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 IF bandera = 1 THEN LET bandera = 0 EXIT INPUT END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLOSE WINDOW anular EXIT INPUT 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 IF p_iptb06.cantidad_2 < 0 THEN LET err_mensaje="EL ITEM ",movi2[idx].cod_n USING "&&&&","-",movi2[idx].cod_grupo USING "&&&&","-", movi2[idx].cod_tipo USING "&&&&",'-',movi2[idx].cod_Sec USING "&&&&", " ESTA EN NEGATIVO" CALL fgl_winmessage("INFO",err_mensaje,"INFO") END IF LET p_iptb06.cantidad_2 = p_iptb06.cantidad_2 - movi2[idx].cantidad_2 IF p_iptb06.cantidad_2 < 0 THEN LET err_mensaje = NULL LET err_mensaje="EL ITEM ",movi2[idx].cod_n USING "&&&&","-",movi2[idx].cod_grupo USING "&&&&","-", movi2[idx].cod_tipo USING "&&&&",'-',movi2[idx].cod_Sec USING "&&&&", " VA A EXCEDER EXISTENCIA SI ANULAS ESTE DOCUMENTO" CALL fgl_winmessage("INFO",err_mensaje,"INFO") 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 = 56 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") NEXT FIELD cod_mov END IF END INPUT CLOSE WINDOW anular END FUNCTION