Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md

This commit is contained in:
2026-08-18 20:59:52 -04:00
commit 454973e269
5978 changed files with 2664094 additions and 0 deletions
+854
View File
@@ -0,0 +1,854 @@
{
------------------------------------------------------------------
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)
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