{ ------------------------------------------------------------------ PROGRAMA : IRPRMT056 OBJETIVO : Modificar, Eliminar registros de los Movimientos de Repuesto. PROGRAMADOR : Ing. Juan Soto(Johnny) FECHA REALIZACION : Septiembre 4, 1992. ------------------------------------------------------------------ } GLOBALS "irprgb000.4gl" DEFINE proceso_1,opc1 CHAR(1) FUNCTION irprmt056() #WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 5, ERROR LINE 23, COMMENT LINE 21, PROMPT LINE 24 OPEN FORM irfmmt056 FROM "irfmmt056" DISPLAY FORM irfmmt056 DISPLAY "irprmt056" AT 3,3 ATTRIBUTE (BOLD) DISPLAY "Actualizacion de Documentos " AT 3,25 ATTRIBUTE (BOLD) MENU "OPCIONES" COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET INT_FLAG = FALSE CALL inpcmf056() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION inpcmf056() DEFINE usu_crea CHAR(9) DEFINE fecha_crea DATETIME YEAR TO MINUTE DEFINE estado,tipos CHAR(1) DEFINE cantidad,cant_e DECIMAL(10,2) DEFINE codigo_ant ARRAY[100] OF CHAR(7) DEFINE actualiza CHAR(1) LET tipos = null # WHENEVER ERROR CONTINUE LET int_flag = false LET existe = null ## Aqui se prepara para la captura del criterio de seleccion CLEAR FORM CONSTRUCT criterio ON a.cod_mov,a.num_doc FROM cod_mov,num_doc IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF LET SELEC = " SELECT UNIQUE a.num_doc,a.cod_mov,a.fecha,a.tipo, ", " a.orden_compra,a.cod_sp,a.cod_sp_sec,a.fact_no, ", " a.conduce_no,a.sec_de,a.sec_a ", " FROM irtb00006 a,irtb00005 b ", " WHERE ",criterio clipped," and a.cod_mov = b.cod_mov AND ", " a.status_t is null AND b.status_t IS NULL AND ", " a.cod_mov != 99 Order by 1,2 " PREPARE busca FROM selec CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO movimientos.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF SELECT status_mov,descrip_mov INTO transacc.status_mov,datos_gen.descrip_mov FROM irtb00005 WHERE cod_mov = movimientos.cod_mov AND status_t IS NULL CALL buscame() DISPLAY BY NAME datos_gen.descrip_mov DISPLAY BY NAME datos_gen.nom_sp DISPLAY BY NAME movimientos.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO movimientos.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT status_mov INTO transacc.status_mov FROM irtb00005 WHERE cod_mov = movimientos.cod_mov AND status_t IS NULL CALL buscame() DISPLAY BY NAME datos_gen.nom_sp DISPLAY BY NAME movimientos.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO movimientos.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT status_mov INTO transacc.status_mov FROM irtb00005 WHERE cod_mov = movimientos.cod_mov AND status_t IS NULL CALL buscame() DISPLAY BY NAME datos_gen.nom_sp DISPLAY BY NAME movimientos.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO movimientos.* CALL buscame() DISPLAY BY NAME datos_gen.nom_sp DISPLAY BY NAME movimientos.* LET numero_msg = 5 CALL msg(numero_msg) SELECT status_mov INTO transacc.status_mov FROM irtb00005 WHERE cod_mov = movimientos.cod_mov AND status_t IS NULL COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO movimientos.* CALL buscame() DISPLAY BY NAME datos_gen.nom_sp DISPLAY BY NAME movimientos.* LET numero_msg = 4 CALL msg(numero_msg) SELECT status_mov INTO transacc.status_mov FROM irtb00005 WHERE cod_mov = movimientos.cod_mov AND status_t IS NULL COMMAND "Escoger" " Actualiza Registro Cancela Operacion" SELECT MIN(a.us_crea),MIN(a.fech_crea) INTO usu_crea,fecha_crea FROM irtb00006 a WHERE a.cod_mov = movimientos.cod_mov AND a.num_doc = movimientos.num_doc LET p_fechas = movimientos.fecha USING "ddmmyy" CALL prd() IF bandera = 1 THEN LET bandera = 0 RETURN END IF INPUT BY NAME movimientos.* WITHOUT DEFAULTS BEFORE FIELD num_doc SELECT a.usuario FROM irtb00018 a WHERE a.cod_mov = movimientos.cod_mov AND a.usuario = user IF STATUS = NOTFOUND THEN LET numero_msg = 139 CALL msg(numero_msg) RETURN END IF NEXT FIELD fecha AFTER FIELD fecha IF movimientos.fecha > TODAY THEN LET numero_msg = 189 CALL msg(numero_msg) NEXT FIELD fecha END IF LET p_fechas = movimientos.fecha USING "ddmmyy" CALL prd() IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha END IF IF movimientos.cod_mov > 2 THEN NEXT FIELD sec_de END IF BEFORE FIELD orden_compra IF movimientos.orden_compra > 3 THEN NEXT FIELD fact_no END IF AFTER FIELD cod_sp IF movimientos.cod_sp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sp END IF AFTER FIELD cod_sp_sec IF movimientos.cod_sp_sec is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sp_sec ELSE SELECT nom_sp INTO datos_gen.nom_sp FROM cotb00001 WHERE cod_sp = movimientos.cod_sp and cod_sp_sec = movimientos.cod_sp_sec AND status_t is null IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_sp END IF ELSE CALL integridad() IF bandera = 1 THEN CLEAR FORM RETURN END IF END IF END IF DISPLAY BY NAME datos_gen.nom_sp ATTRIBUTE (BOLD) AFTER FIELD sec_de IF movimientos.sec_de IS null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_de ELSE SELECT nombre INTO datos1.nom_seccion FROM irtb00004 WHERE codigo = movimientos.sec_de and status_t is null IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD sec_de END IF END IF DISPLAY BY NAME datos1.nom_seccion IF transacc.status_mov = "3" THEN NEXT FIELD sec_a ELSE EXIT INPUT END IF AFTER FIELD sec_a SELECT nombre INTO datos1.nombre FROM irtb00004 WHERE codigo = movimientos.sec_a and status_t is null IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD sec_a END IF DISPLAY BY NAME datos1.nombre AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF EXIT INPUT END INPUT IF transacc.status_mov = "3" THEN LET estado = "2" ELSE LET estado = transacc.status_mov END IF DECLARE buscate CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_1,a.cantidad_2, b.unidad_med,b.descrip_esp ,a.maquina FROM irtb00006 a,intb00001 b,irtb00002 c WHERE a.num_doc = movimientos.num_doc and a.cod_mov = movimientos.cod_mov and 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 a.status_t is null and b.status_t IS NULL 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.status_t is null and a.status_mov = estado LET idx = 1 FOREACH buscate INTO movi9[idx].* IF movi9[idx].cantidad_2 < 0 THEN LET movi9[idx].cantidad_2 = movi9[idx].cantidad_2 * -1 END IF LET movi8_ant[idx].cant_ant1 = movi9[idx].cantidad_2 LET movi8_ant[idx].cod_n = movi9[idx].cod_n LET movi8_ant[idx].cod_grupo = movi9[idx].cod_grupo LET movi8_ant[idx].cod_tipo = movi9[idx].cod_tipo LET movi8_ant[idx].cod_sec = movi9[idx].cod_sec LET idx = idx + 1 END FOREACH CALL set_count(idx -1) INPUT ARRAY movi9 WITHOUT DEFAULTS FROM s_movi1.* ON KEY(CONTROL-B) LET p_act = arr_curr() LET scr_l = scr_line() SELECT SUM(a.cantidad_2) INTO chequea.existe FROM irtb00006 a WHERE a.cod_n = movi9[p_act].cod_n and a.cod_grupo = movi9[p_act].cod_grupo AND a.cod_tipo = movi9[p_act].cod_tipo and a.cod_sec=movi9[p_act].cod_sec AND a.status_t IS NULL IF transacc.status_mov = "1" THEN IF movi9[p_act].cantidad_2 > chequea.existe THEN LET numero_msg = 6 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF UPDATE irtb00006 set us_mod = user,fech_mod = current,status_t = "E" WHERE cod_n=movi9[p_act].cod_n and cod_grupo=movi9[p_act].cod_grupo and cod_tipo=movi9[p_act].cod_tipo and cod_sec = movi9[p_act].cod_sec and num_doc = movimientos.num_doc and cod_mov = movimientos.cod_mov IF transacc.status_mov = "1" THEN LET movi9[p_act].cantidad_2 = movi9[p_act].cantidad_2 * -1 END IF { UPDATE irtb00002 set existencia = existencia + movi9[p_act].cantidad_2 WHERE cod_n = movi9[p_act].cod_n and cod_grupo = movi9[p_act].cod_grupo and cod_tipo = movi9[p_act].cod_tipo and cod_sec = movi9[p_act].cod_sec } LET numero_msg = 39 CALL msg(numero_msg) NEXT FIELD cod_n BEFORE ROW LET p_Act = arr_curr() LET codigo_ant[p_act] = movi9[p_act].cod_n using "&", movi9[p_act].cod_grupo using "&", movi9[p_act].cod_tipo using "&&", movi9[p_act].cod_sec using "&&&" AFTER FIELD cod_n LET scr_l = scr_line() LET p_Act = arr_curr() LET ya = "N" CALL repetir() IF existe = "S" THEN NEXT FIELD cod_grupo LET existe = "N" END IF AFTER FIELD cod_grupo IF movi9[p_act].cod_grupo is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF LET ya = "N" CALL repetir() IF existe = "S" THEN NEXT FIELD cod_tipo LET existe = "N" END IF AFTER FIELD cod_tipo IF movi9[p_act].cod_tipo is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF LET ya = "N" CALL repetir() IF existe = "S" THEN NEXT FIELD cod_sec LET existe = "N" END IF AFTER FIELD cod_sec IF movi9[p_act].cod_sec is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF movi9[p_act].cod_n is null AND movi9[p_act].cod_grupo is null AND movi9[p_act].cod_tipo is null AND movi9[p_act].cod_sec is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n ELSE LET ya = "N" CALL repetir() IF existe = "S" THEN LET existe = "N" NEXT FIELD cod_n END IF SELECT a.descrip_esp,a.unidad_med INTO articulos.descrip_esp,articulos.unidad_med FROM intb00001 a,irtb00002 b WHERE 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 a.status_t is null AND a.cod_n = movi9[p_act].cod_n AND a.cod_grupo = movi9[p_act].cod_grupo AND a.cod_tipo = movi9[p_act].cod_tipo AND a.cod_sec = movi9[p_act].cod_sec and b.status_t is null IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF ELSE CALL integridad() IF bandera = 1 THEN CLEAR FORM RETURN END IF END IF LET movi9[p_act].descrip_esp = articulos.descrip_esp LET movi9[p_act].unidad_med = articulos.unidad_med DISPLAY movi9[p_act].descrip_esp TO s_movi1[scr_l].descrip_esp ATTRIBUTE (BOLD) DISPLAY movi9[p_act].unidad_med TO s_movi1[scr_l].unidad_med ATTRIBUTE (BOLD) END IF # Si es una transferencia IF transacc.status_mov = "3" THEN SELECT * FROM irtb00002 WHERE cod_n = movi9[p_act].cod_n and cod_grupo = movimientos.sec_a and cod_tipo = movi9[p_act].cod_tipo and cod_sec = movi9[p_act].cod_sec and status_t is null IF status = notfound THEN LET numero_msg = 54 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF AFTER FIELD maquina IF movi9[p_act].cod_n is not null and movi9[p_act].cod_grupo is not null and movi9[p_act].cod_tipo is not null and movi9[p_act].cod_sec is not null THEN IF movi9[p_act].maquina is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD maquina END IF SELECT a.nombre INTO maquinaria.nombre FROM irtb00009 a WHERE a.codigo = movi9[p_act].maquina and a.status_t is null IF status = notfound THEN LET numero_msg = 115 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF DISPLAY BY NAME maquinaria.nombre AFTER FIELD cantidad_2 IF movi9[p_act].cantidad_2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad_2 END IF IF movi9[p_act].cantidad_2 < 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad_2 END IF IF transacc.status_mov = "2" THEN IF movi9[p_act].cantidad_2 > 0 THEN SELECT SUM(a.cantidad_2) INTO chequea.existe FROM irtb00006 a WHERE a.cod_n=movi9[p_act].cod_n AND a.cod_grupo=movi9[p_act].cod_grupo AND a.cod_tipo=movi9[p_act].cod_tipo AND a.cod_sec=movi9[p_act].cod_sec AND a.status_t IS NULL AND a.num_doc != movimientos.num_doc IF movi9[p_act].cantidad_2 > chequea.existe THEN LET numero_msg = 30 CALL msg(numero_msg) NEXT FIELD cantidad_2 END IF END If END If AFTER INPUT #### Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF # Chequea la maquinaria IF movi4[p_act].codigo = codigo_ant[p_act] THEN FOR idx = 1 to arr_count() LET movi8_ant[idx].cod_n = movi9[idx].cod_n LET movi8_ant[idx].cod_grupo = movi9[idx].cod_grupo LET movi8_ant[idx].cod_tipo = movi9[idx].cod_tipo LET movi8_ant[idx].cod_sec = movi9[idx].cod_sec END FOR END IF LET proceso_1 = "N" FOR idx = 1 to arr_count() IF movi9[idx].cod_n IS NOT NULL THEN LET proceso_1 = "S" END IF END FOR IF proceso_1 = "N" THEN NEXT FIELD cod_n END IF EXIT INPUT END INPUT PROMPT "Desea Imprimir este Documento (S/N)? " FOR CHAR opc1 LET opc1 = upshift(opc1) IF opc1 = "S" THEN START REPORT rep_ent TO "%USHOME%\\archivo" END IF LABEL vuelve: LET actualiza = "N" FOR idx = 1 TO arr_count() LET movi4[idx].codigo = movi9[idx].cod_n using "&", movi9[idx].cod_grupo using "&", movi9[idx].cod_tipo using "&&", movi9[idx].cod_sec using "&&&" CLIPPED IF movi9[idx].cod_n is not null and movi9[idx].cod_grupo is not null and movi9[idx].cod_tipo is not null and movi9[idx].cod_sec is not null THEN IF transacc.status_mov = "3" THEN LET tipos = "S" LET movi9[idx].cantidad_2 = movi9[idx].cantidad_2 * -1 END IF #Cuando el usuario cambia el codigo IF codigo_ant[idx] is not null and movi4[idx].codigo != codigo_ant[idx] THEN UPDATE irtb00006 SET fecha = movimientos.fecha, fact_no = movimientos.fact_no, conduce_no = movimientos.conduce_no, orden_compra = movimientos.orden_compra, cod_sp = movimientos.cod_sp, cod_sp_sec = movimientos.cod_sp_sec, sec_de = movimientos.sec_de, sec_a = movimientos.sec_a, cantidad_2 = movi9[idx].cantidad_2, maquina = movi9[idx].maquina, cod_n = movi9[idx].cod_n, cod_grupo = movi9[idx].cod_grupo, cod_tipo = movi9[idx].cod_tipo, cod_sec = movi9[idx].cod_sec, us_mod = USER, fech_mod = CURRENT WHERE cod_n = movi8_ant[idx].cod_n AND cod_grupo = movi8_ant[idx].cod_grupo AND cod_tipo = movi8_ant[idx].cod_tipo AND cod_sec = movi8_ant[idx].cod_sec and num_doc = movimientos.num_doc and cod_mov = movimientos.cod_mov IF status != 0 THEN IF tipos = "S" THEN IF movi9[idx].cantidad_2 > 0 THEN LET movi9[idx].cantidad_2 = movi9[idx].cantidad_2 * -1 END IF INSERT INTO irtb00006 (num_doc,cod_mov,fecha,fact_no,conduce_no, orden_compra,cod_sp,cod_sp_sec,sec_de ,sec_a, maquina,cod_n,cod_grupo,cod_tipo,cod_sec, cantidad_1,cantidad_2,us_mod,fech_mod,status_mov) VALUES (movimientos.num_doc,movimientos.cod_mov,movimientos.fecha, movimientos.fact_no, movimientos.conduce_no,movimientos.orden_compra, movimientos.cod_sp,movimientos.cod_sp_sec, movimientos.sec_de,movimientos.sec_a,movi9[idx].maquina, movi9[idx].cod_n,movimientos.sec_a, movi9[idx].cod_tipo,movi9[idx].cod_sec,movi9[idx].cantidad_1, movi9[idx].cantidad_2,user,current,2) END IF END IF END IF IF transacc.status_mov = "2" THEN LET movi9[idx].cantidad_2 = movi9[idx].cantidad_2 * -1 END IF # SI NO ENCUENTRA CODIGOS Y DOCUMENTOS EN LA TABLA DE MOVIMIENTOS # AQUI SE CREA EL RENGLON NUEVO SELECT * FROM irtb00006 WHERE cod_n = movi9[idx].cod_n and cod_grupo = movi9[idx].cod_grupo and cod_tipo = movi9[idx].cod_tipo and cod_sec = movi9[idx].cod_sec and num_doc = movimientos.num_doc and cod_mov = movimientos.cod_mov and status_t is null IF STATUS = NOTFOUND THEN IF tipos = "S" AND movi9[idx].cantidad_2 > 0 THEN LET movi9[idx].cantidad_2 = movi9[idx].cantidad_2 * -1 END IF INSERT INTO irtb00006 (num_doc,cod_mov,fecha,fact_no,conduce_no, orden_compra,cod_sp,cod_sp_sec,sec_de ,sec_a, maquina,cod_n,cod_grupo,cod_tipo,cod_sec, cantidad_1,cantidad_2,us_mod,fech_mod,status_mov) VALUES (movimientos.num_doc,movimientos.cod_mov,movimientos.fecha, movimientos.fact_no, movimientos.conduce_no,movimientos.orden_compra, movimientos.cod_sp,movimientos.cod_sp_sec, movimientos.sec_de,movimientos.sec_a,movi9[idx].maquina, movi9[idx].cod_n,movi9[idx].cod_grupo, movi9[idx].cod_tipo,movi9[idx].cod_sec,movi9[idx].cantidad_1, movi9[idx].cantidad_2,user,current, estado) IF tipos = "S" THEN IF movi9[idx].cantidad_2 < 0 THEN LET movi9[idx].cantidad_2 = movi9[idx].cantidad_2 * -1 END IF INSERT INTO irtb00006 (num_doc,cod_mov,fecha,fact_no,conduce_no, orden_compra,cod_sp,cod_sp_sec,sec_de ,sec_a, maquina,cod_n,cod_grupo,cod_tipo,cod_sec, cantidad_1,cantidad_2,us_mod,fech_mod,status_mov) VALUES (movimientos.num_doc,movimientos.cod_mov,movimientos.fecha, movimientos.fact_no, movimientos.conduce_no,movimientos.orden_compra, movimientos.cod_sp,movimientos.cod_sp_sec, movimientos.sec_de,movimientos.sec_a,movi9[idx].maquina, movi9[idx].cod_n,movimientos.sec_a, movi9[idx].cod_tipo,movi9[idx].cod_sec,movi9[idx].cantidad_1, movi9[idx].cantidad_2,user,current,1) END IF END IF IF movi4[idx].codigo = codigo_ant[idx] THEN UPDATE irtb00006 SET fecha = movimientos.fecha, fact_no = movimientos.fact_no, conduce_no = movimientos.conduce_no, orden_compra = movimientos.orden_compra, cod_sp = movimientos.cod_sp, cod_sp_sec = movimientos.cod_sp_sec, sec_de = movimientos.sec_de, sec_a = movimientos.sec_a, maquina = movi9[idx].maquina, cantidad_2 = movi9[idx].cantidad_2, us_mod = USER, fech_mod = CURRENT WHERE cod_n = movi9[idx].cod_n AND cod_grupo = movi9[idx].cod_grupo AND cod_tipo = movi9[idx].cod_tipo AND cod_sec = movi9[idx].cod_sec and num_doc = movimientos.num_doc and cod_mov = movimientos.cod_mov IF tipos = "S" THEN UPDATE irtb00006 SET fecha = movimientos.fecha, fact_no = movimientos.fact_no, conduce_no = movimientos.conduce_no, orden_compra = movimientos.orden_compra, cod_sp = movimientos.cod_sp, cod_sp_sec = movimientos.cod_sp_sec, sec_de = movimientos.sec_de, sec_a = movimientos.sec_a, maquina = movi9[idx].maquina, cantidad_2 = movi9[idx].cantidad_2 * -1, us_mod = USER, fech_mod = CURRENT WHERE cod_n = movi9[idx].cod_n AND cod_grupo = movimientos.sec_a AND cod_tipo = movi9[idx].cod_tipo AND cod_sec = movi9[idx].cod_sec and num_doc = movimientos.num_doc and cod_mov = movimientos.cod_mov END IF END IF IF movi9[idx].cantidad_2 < 0 THEN LET movi9[idx].cantidad_2 = movi9[idx].cantidad_2 * -1 END IF IF movi4[idx].codigo = codigo_ant[idx] THEN IF transacc.status_mov = "1" THEN UPDATE irtb00002 SET existencia = (existencia - movi8_ant[idx].cant_ant1) + movi9[idx].cantidad_2 WHERE cod_n = movi9[idx].cod_n AND cod_grupo = movi9[idx].cod_grupo AND cod_tipo = movi9[idx].cod_tipo AND cod_sec = movi9[idx].cod_sec ELSE IF transacc.status_mov != "3" THEN UPDATE irtb00002 SET existencia = (existencia + movi8_ant[idx].cant_ant1) - movi9[idx].cantidad_2 WHERE cod_n = movi9[idx].cod_n AND cod_grupo = movi9[idx].cod_grupo AND cod_tipo = movi9[idx].cod_tipo AND cod_sec = movi9[idx].cod_sec END IF IF transacc.status_mov = "3" THEN UPDATE irtb00002 SET existencia = (existencia + movi8_ant[idx].cant_ant1) - movi9[idx].cantidad_2 WHERE cod_n = movi9[idx].cod_n AND cod_grupo = movi9[idx].cod_grupo AND cod_tipo = movi9[idx].cod_tipo AND cod_sec = movi9[idx].cod_sec UPDATE irtb00002 SET existencia = (existencia - movi8_ant[idx].cant_ant1) + movi9[idx].cantidad_2 WHERE cod_n = movi9[idx].cod_n AND cod_grupo = movimientos.sec_a AND cod_tipo = movi9[idx].cod_tipo AND cod_sec = movi9[idx].cod_sec END IF END IF END IF IF movi4[idx].codigo != codigo_ant[idx] THEN IF tipos = "S" THEN UPDATE irtb00002 SET existencia = existencia + movi8_ant[idx].cant_ant1 - movi9[idx].cantidad_2 WHERE cod_n = movi8_ant[idx].cod_n AND cod_grupo = movi8_ant[idx].cod_grupo AND cod_tipo = movi8_ant[idx].cod_tipo AND cod_sec = movi8_ant[idx].cod_sec UPDATE irtb00002 SET existencia = existencia - movi8_ant[idx].cant_ant1 + movi9[idx].cantidad_2 WHERE cod_n = movi8_ant[idx].cod_n AND cod_grupo = movi8_ant[idx].cod_grupo AND cod_tipo = movi8_ant[idx].cod_tipo AND cod_sec = movi8_ant[idx].cod_sec END IF IF transacc.status_mov = "1" THEN UPDATE irtb00002 SET existencia = existencia - movi8_ant[idx].cant_ant1 + movi9[idx].cantidad_2 WHERE cod_n = movi8_ant[idx].cod_n AND cod_grupo = movi8_ant[idx].cod_grupo AND cod_tipo = movi8_ant[idx].cod_tipo AND cod_sec = movi8_ant[idx].cod_sec ELSE IF transacc.status_mov != "3" THEN UPDATE irtb00002 SET existencia = existencia + movi8_ant[idx].cant_ant1 + movi9[idx].cantidad_2 WHERE cod_n = movi8_ant[idx].cod_n AND cod_grupo = movi8_ant[idx].cod_grupo AND cod_tipo = movi8_ant[idx].cod_tipo AND cod_sec = movi8_ant[idx].cod_sec END IF END IF END IF IF opc1 = "S" THEN LET datos_gen.num_doc = movimientos.num_doc LET datos_gen.fecha = movimientos.fecha LET datos_gen.cod_mov = movimientos.cod_mov LET datos_gen.orden_compra = movimientos.orden_compra LET datos_gen.tipo = NULL #movimientos.tipo LET datos_gen.cod_sp = movimientos.cod_sp LET datos_gen.cod_sp_sec = movimientos.cod_sp_sec LET datos_gen.conduce_no = movimientos.conduce_no LET datos_gen.fact_no = movimientos.fact_no OUTPUT TO REPORT rep_ent(datos_gen.*,movi9[idx].cod_n, movi9[idx].cod_grupo, movi9[idx].cod_tipo, movi9[idx].cod_sec,movi9[idx].cantidad_1, movi9[idx].cantidad_2,movi[idx].maquina) END IF END IF END FOR UPDATE irtb00006 SET (us_crea,fech_crea) = (usu_crea,fecha_crea) | A grammatical error has been found at 'FOR UPDATE' expecting: error FOR. | See error number -6609. WHERE @num_doc = movimientos.num_doc AND @cod_mov = movimientos.cod_mov IF opc1 = "S" THEN FINISH REPORT rep_ent END IF LET numero_msg = 13 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" EXIT MENU END MENU END FUNCTION FUNCTION buscame() IF movimientos.cod_sp is not null THEN SELECT nom_sp INTO datos_gen.nom_sp FROM cotb00001 WHERE status_t IS NULL AND cod_sp = movimientos.cod_sp and cod_sp_sec = movimientos.cod_sp_sec END IF END FUNCTION FUNCTION repetir() LET ant_art.cod_n = movi9[p_act].cod_n LET ant_art.cod_grupo = movi9[p_act].cod_grupo LET ant_art.cod_tipo = movi9[p_act].cod_tipo LET ant_art.cod_sec = movi9[p_act].cod_sec FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi9[idx].cod_n = ant_art.cod_n AND movi9[idx].cod_grupo = ant_art.cod_grupo AND movi9[idx].cod_tipo = ant_art.cod_tipo AND movi9[idx].cod_sec = ant_art.cod_sec THEN LET numero_msg = 21 CALL msg(numero_msg) LET existe = "S" LET ya = "S" ELSE IF ya = "N" THEN LET existe = "N" END IF END IF END IF END FOR END FUNCTION