857 lines
33 KiB
Plaintext
857 lines
33 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
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"
|
|
"<Esc> Realiza Busqueda <Ctrl-C> 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"
|
|
"<Esc> Actualiza Registro <Ctrl-C> 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 <Ctrl-C>
|
|
|
|
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
|
|
|