1883 lines
73 KiB
Plaintext
1883 lines
73 KiB
Plaintext
{
|
|
----------------------------------------------------------------------------
|
|
PROGRAMA : IRPRMT036
|
|
OBJETIVO : Programa Captura Documento Movimiento:
|
|
OTROS MOVIMIENTOS DE REPUESTOS
|
|
de Inventario de Repuesto.
|
|
PROGRAMADOR : Ing. Juan Fco. Soto (Copiado del IHPRMT036)
|
|
FECHA REALIZACION : Marzo 1, 1993.
|
|
----------------------------------------------------------------------------
|
|
}
|
|
IMPORT util
|
|
GLOBALS "irprgb000.4gl"
|
|
DEFINE cerrada CHAR(1)
|
|
DEFINE r_cantidad1,
|
|
r_cantidad,
|
|
total_cantidad,
|
|
recibida,
|
|
ordenada,
|
|
xdepartamento
|
|
INTEGER,
|
|
xusername, xsmtphost, xsmtpport, xpassword STRING
|
|
DEFINE porciento DECIMAL(8, 3)
|
|
DEFINE v_producto_id VARCHAR(100)
|
|
DEFINE
|
|
costo_estandar DECIMAL(12, 2),
|
|
codigo_mq LIKE irtb00008.cod_maq,
|
|
xnombre VARCHAR(100),
|
|
existminima DYNAMIC ARRAY OF FLOAT,
|
|
existenciaact DYNAMIC ARRAY OF FLOAT,
|
|
porcientoControl DYNAMIC ARRAY OF FLOAT,
|
|
enviaCorreo VARCHAR(2),
|
|
enviaEmailProd DYNAMIC ARRAY OF CHAR(2),
|
|
answer STRING, APIexistencia DECIMAL(12,2)
|
|
|
|
DEFINE CheckApi RECORD
|
|
checkDept BOOLEAN,
|
|
checkMaquina BOOLEAN,
|
|
checkRep BOOLEAN
|
|
END RECORD
|
|
|
|
# fakeData se pasa POR POSICION (fakeData.*) al parametro Data de
|
|
# ApiMaintainC en api_test.4gl, por lo que su estructura (orden y tipos)
|
|
# debe ser IDENTICA a ese record. No usar RECORD LIKE cotb00001.* porque
|
|
# el orden fisico de las columnas de cotb00001 no coincide con ese record
|
|
# y provoca el error -1260 al convertir los tipos.
|
|
DEFINE fakeData RECORD
|
|
area_sp VARCHAR(10),
|
|
ciu_sp VARCHAR(30),
|
|
cod_pais VARCHAR(3),
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
cont_sp VARCHAR(30),
|
|
contactID INTEGER,
|
|
dir_sp VARCHAR(60),
|
|
email VARCHAR(60),
|
|
fax_sp VARCHAR(25),
|
|
fech_crea DATETIME YEAR TO FRACTION,
|
|
fech_mod DATETIME YEAR TO FRACTION,
|
|
id_maintainx INTEGER,
|
|
nom_sp VARCHAR(41),
|
|
status_t VARCHAR(1),
|
|
tel_sp VARCHAR(25),
|
|
term_sp SMALLINT,
|
|
us_crea VARCHAR(50),
|
|
us_mod VARCHAR(50)
|
|
END RECORD
|
|
|
|
DEFINE data RECORD
|
|
rnumeroDoc,rcodMov,rtipo_cliente,num_oc,tipo_cliente,sec_cliente,bodega,bodega_destino INT,
|
|
nombre VARCHAR(100)
|
|
END RECORD
|
|
|
|
DEFINE answer_workorder INT
|
|
DEFINE req_check BOOLEAN
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("irprmt36.log")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
|
|
CONNECT TO "smarmotech" USER usuarios USING clave
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
|
|
CALL irprmt036()
|
|
END MAIN
|
|
|
|
FUNCTION irprmt036()
|
|
DEFINE fecha CHAR(8)
|
|
DEFINE hora CHAR(5)
|
|
|
|
CLEAR SCREEN
|
|
OPTIONS ERROR LINE 24, FORM LINE 4, COMMENT LINE 22, PROMPT LINE 23
|
|
LET fecha = TODAY USING "dd/mm/yyyy"
|
|
LET hora = TIME
|
|
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2
|
|
DISPLAY p_companias.nombre CLIPPED AT 2, lj ATTRIBUTE(REVERSE, BLUE)
|
|
|
|
OPEN FORM irfmmt036 FROM "irfmmt036"
|
|
DISPLAY FORM irfmmt036
|
|
|
|
MENU
|
|
ON ACTION nuevo
|
|
LET req_check = FALSE
|
|
INITIALIZE data.* TO NULL
|
|
CALL irautorizadas(usuarios) RETURNING data.*
|
|
DISPLAY data.*
|
|
|
|
IF data.rcodMov IS NOT NULL AND data.rcodMov != 0 THEN
|
|
LET req_check = TRUE
|
|
END IF
|
|
|
|
CALL irprad036()
|
|
|
|
ON ACTION buscar
|
|
LET pprograma = 'inprmt036'
|
|
CALL irprmfad036()
|
|
ON ACTION salir
|
|
EXIT MENU
|
|
|
|
END MENU
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION irprad036()
|
|
DEFINE tipos1 CHAR(1)
|
|
DEFINE i INT, query STRING
|
|
LET tipos1 = NULL
|
|
LET opc = NULL
|
|
LET int_flag = FALSE
|
|
INITIALIZE datos1.* TO NULL
|
|
LET checkapi.checkDept = FALSE
|
|
LET checkapi.checkMaquina = FALSE
|
|
LET checkapi.checkRep = FALSE
|
|
|
|
|
|
|
|
IF data.rcodMov IS NOT NULL AND data.rcodMov != 0 THEN
|
|
|
|
LET datos1.cod_mov = data.rcodMov
|
|
|
|
DISPLAY "entra a la condicion"
|
|
|
|
SELECT MAX(num_oc) INTO datos1.orden_compra
|
|
FROM irtb00057 WHERE numero_doc = data.rnumeroDoc
|
|
|
|
SELECT tipo INTO datos1.tipo
|
|
FROM cotb00014 WHERE num_oc = datos1.orden_compra
|
|
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT cod_n, cod_grupo, cod_tipo, cod_sec, cantidad_2, descripcion,
|
|
unidad_med FROM irtb00058
|
|
WHERE numero_doc = data.rnumeroDoc
|
|
|
|
LET i = 1
|
|
|
|
FOREACH buscar INTO movi8[i].cod_n, movi8[i].cod_grupo, movi8[i].cod_tipo,
|
|
movi8[i].cod_sec, movi8[i].cantidad_2, movi8[i].descrip_esp, movi8[i].unidad_med
|
|
|
|
LET i = i + 1
|
|
DISPLAY "se agregan los items"
|
|
|
|
END FOREACH
|
|
|
|
IF datos1.cod_mov = 35 THEN
|
|
CALL msg(40)
|
|
END IF
|
|
|
|
SELECT requisiciones INTO transacc.requisiciones FROM irtb00005
|
|
WHERE @cod_mov = datos1.cod_mov AND @status_t IS NULL
|
|
|
|
|
|
SELECT a.descrip_mov,
|
|
a.status_mov,
|
|
a.control_departamento,
|
|
a.control_maquina
|
|
INTO datos1.descrip_mov,
|
|
transacc.status_mov,
|
|
transacc.control_departamento,
|
|
transacc.control_maquina
|
|
FROM irtb00005 a
|
|
WHERE @cod_mov = datos1.cod_mov AND @status_t IS NULL
|
|
|
|
DISPLAY transacc.control_departamento
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
END IF
|
|
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
#ERROR "CTRL-W PARA ELIMINAR DOCUMENTOS"
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
INPUT BY NAME datos1.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
|
|
BEFORE INPUT
|
|
DISPLAY "entra al before input"
|
|
LET datos1.fecha = TODAY USING "dd/mm/yyyy"
|
|
DISPLAY BY NAME datos1.fecha
|
|
CALL busca_departamento()
|
|
DISPLAY "busco el departamento"
|
|
|
|
|
|
IF data.rcodMov IS NOT NULL AND data.rcodMov != 0 THEN
|
|
NEXT FIELD orden_compra
|
|
CALL dialog.setFieldActive('cod_mov', FALSE)
|
|
DISPLAY "codmov false"
|
|
|
|
ELSE
|
|
CALL dialog.setFieldActive('cod_mov', TRUE)
|
|
DISPLAY "cod_mov true"
|
|
|
|
END IF
|
|
|
|
DISPLAY "salio del codmov if"
|
|
|
|
AFTER FIELD fecha
|
|
IF datos1.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
IF datos1.fecha > TODAY THEN
|
|
LET numero_msg = 189
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
LET bandera = 0
|
|
LET p_fechas = datos1.fecha
|
|
CALL prd(p_fechas, usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
AFTER FIELD orden_compra
|
|
|
|
IF datos1.orden_compra IS NOT NULL THEN
|
|
IF datos1.tipo IS NULL THEN
|
|
LET query = "SELECT cod_sp, cod_sp_sec, cierre
|
|
FROM cotb00014
|
|
WHERE num_oc = ",datos1.orden_compra,"
|
|
AND status_t IS NULL"
|
|
ELSE
|
|
LET query = "SELECT cod_sp, cod_sp_sec, cierre
|
|
FROM cotb00014
|
|
WHERE num_oc = ",datos1.orden_compra,"
|
|
AND tipo = ",datos1.tipo,"
|
|
AND status_t IS NULL"
|
|
END IF
|
|
|
|
DISPLAY query
|
|
PREPARE busqueda FROM query
|
|
EXECUTE busqueda INTO datos1.cod_sp, datos1.cod_sp_sec, cerrada
|
|
|
|
IF status >= 0 THEN
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
DISPLAY "FILTRO 1"
|
|
NEXT FIELD orden_compra
|
|
END IF
|
|
|
|
IF cerrada = "S" THEN
|
|
LET numero_msg = 74
|
|
CALL msg(numero_msg)
|
|
DISPLAY "FILTRO 2"
|
|
NEXT FIELD orden_compra
|
|
END IF
|
|
|
|
|
|
END IF
|
|
|
|
SELECT UNIQUE a.nom_sp
|
|
INTO datos1.nom_sp
|
|
FROM cotb00001 a
|
|
WHERE a.cod_sp = datos1.cod_sp
|
|
AND a.cod_sp_sec = datos1.cod_sp_sec
|
|
AND a.status_t IS NULL
|
|
|
|
IF status >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
SELECT a.nombre
|
|
INTO datos1.nom_sp
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = datos1.cod_sp
|
|
AND a.sec_cliente = datos1.cod_sp_Sec
|
|
AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME datos1.nom_sp
|
|
END IF
|
|
AFTER FIELD cod_sp_Sec
|
|
|
|
IF datos1.cod_sp_Sec IS NOT NULL THEN
|
|
SELECT UNIQUE a.nom_sp
|
|
INTO datos1.nom_sp
|
|
FROM cotb00001 a
|
|
WHERE a.cod_sp = datos1.cod_sp
|
|
AND a.cod_sp_sec = datos1.cod_sp_sec
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
SELECT a.nombre
|
|
INTO datos1.nom_sp
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = datos1.cod_sp
|
|
AND a.sec_cliente = datos1.cod_sp_Sec
|
|
AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME datos1.nom_sp
|
|
END IF
|
|
AFTER FIELD cod_mov
|
|
IF datos1.cod_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
# Controla que el movimiento que se digite pertenezca a este formulario
|
|
|
|
SELECT UNIQUE a.usuario
|
|
FROM irtb00018 a
|
|
WHERE a.cod_mov = datos1.cod_mov AND a.usuario = usuarios
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 139
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
IF datos1.cod_mov = 35 THEN
|
|
CALL msg(40)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
SELECT requisiciones INTO transacc.requisiciones FROM irtb00005
|
|
WHERE @cod_mov = datos1.cod_mov AND @status_t IS NULL
|
|
|
|
IF transacc.requisiciones = 'SI' AND req_check = FALSE THEN
|
|
CALL msg(1672)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
SELECT a.descrip_mov,
|
|
a.status_mov,
|
|
a.control_departamento,
|
|
a.control_maquina
|
|
INTO datos1.descrip_mov,
|
|
transacc.status_mov,
|
|
transacc.control_departamento,
|
|
transacc.control_maquina
|
|
FROM irtb00005 a
|
|
WHERE @cod_mov = datos1.cod_mov AND @status_t IS NULL
|
|
|
|
DISPLAY transacc.control_departamento
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
|
|
IF data.rcodMov IS NULL THEN
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME datos1.descrip_mov
|
|
NEXT FIELD tipo
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
|
|
CALL movi8.clear()
|
|
SLEEP 3
|
|
RETURN
|
|
END IF
|
|
IF datos1.cod_mov = 35 THEN
|
|
CALL msg(40)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
IF datos1.departamento IS NULL
|
|
AND transacc.control_departamento = "SI" THEN
|
|
CALL msg(16)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
IF datos1.departamento IS NOT NULL
|
|
AND transacc.control_departamento = "NO" THEN
|
|
CALL msg(1665)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
# Busca los articulos de la orden si el usuario la digita
|
|
IF datos1.orden_compra IS NOT NULL THEN
|
|
IF datos1.tipo IS NOT NULL THEN
|
|
LET query = "SELECT a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
a.cantidad
|
|
FROM cotb00015 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.num_oc = ",datos1.orden_compra,"
|
|
AND a.tipo = ",datos1.tipo,"
|
|
AND a.status_t IS NULL
|
|
AND b.status_t IS NULL"
|
|
ELSE
|
|
LET query = "SELECT a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
a.cantidad
|
|
FROM cotb00015 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.num_oc = ",datos1.orden_compra,"
|
|
AND a.status_t IS NULL
|
|
AND b.status_t IS NULL"
|
|
END IF
|
|
|
|
DECLARE busca CURSOR FROM query
|
|
|
|
LET idx = 1
|
|
FOREACH busca INTO movi8[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
# CAPTURA ARREGLO DE LOS CODIGOS DE MATERIA PRIMA
|
|
|
|
CALL set_count(idx - 1)
|
|
END IF
|
|
INITIALIZE ant_art.* TO NULL
|
|
|
|
IF datos1.orden_compra IS NOT NULL AND datos1.departamento IS NULL THEN
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
INPUT ARRAY movi8 FROM s_movi1.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
CALL maquinas(-1)
|
|
CALL DIALOG.setFieldActive('orden_trabajo', FALSE)
|
|
|
|
ON ACTION buscaProd
|
|
CALL busca_prod1()
|
|
LET movi8[p_act].cod_n = arr_prod[idx].cod_n
|
|
LET movi8[p_act].cod_grupo = arr_prod[idx].cod_grupo
|
|
LET movi8[p_act].cod_tipo = arr_prod[idx].cod_tipo
|
|
LET movi8[p_act].cod_sec = arr_prod[idx].cod_sec
|
|
LET movi8[p_act].descrip_esp = arr_prod[idx].descrip_esp
|
|
|
|
DISPLAY movi8[p_act].cod_n TO s_movi1.cod_n
|
|
DISPLAY movi8[p_act].cod_grupo TO s_movi1.cod_grupo
|
|
DISPLAY movi8[p_act].cod_tipo TO s_movi1.cod_tipo
|
|
DISPLAY movi8[p_act].cod_sec TO s_movi1.cod_sec
|
|
DISPLAY movi8[p_act].descrip_esp TO s_movi1.descrip_esp
|
|
|
|
BEFORE ROW
|
|
LET p_act = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
AFTER ROW
|
|
IF movi8[p_act].cod_n IS NOT NULL
|
|
AND movi8[p_act].cod_grupo IS NOT NULL
|
|
AND movi8[p_act].cod_tipo IS NOT NULL
|
|
AND movi8[p_act].cod_sec IS NOT NULL THEN
|
|
|
|
LET p_act = arr_curr()
|
|
|
|
LET ant_art.cod_n = movi8[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi8[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi8[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi8[p_act].cod_sec
|
|
LET ant_art.maquina = movi8[p_act].codigo
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi8[idx].cod_n = ant_art.cod_n
|
|
AND movi8[idx].cod_grupo = ant_art.cod_grupo
|
|
AND movi8[idx].cod_tipo = ant_art.cod_tipo
|
|
AND movi8[idx].cod_sec = ant_art.cod_sec
|
|
AND movi8[idx].codigo = ant_art.maquina THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET p_act = p_act - 1
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
IF movi8[p_act].cantidad_2 IS NULL
|
|
AND movi8[p_act].cod_n IS NOT NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
LET ant_art.cod_n = movi8[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi8[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi8[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi8[p_act].cod_sec
|
|
LET ant_art.maquina = movi8[p_act].codigo
|
|
|
|
AFTER FIELD cod_n
|
|
LET p_act = arr_curr()
|
|
|
|
IF movi8[p_act].cod_n IS NOT NULL THEN
|
|
LET ant_art.cod_n = movi8[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi8[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi8[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi8[p_act].cod_sec
|
|
LET ant_art.maquina = movi8[p_act].codigo
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi8[idx].cod_n = ant_art.cod_n
|
|
AND movi8[idx].cod_grupo = ant_art.cod_grupo
|
|
AND movi8[idx].cod_tipo = ant_art.cod_tipo
|
|
AND movi8[idx].cod_sec = ant_art.cod_sec
|
|
AND movi8[idx].codigo = ant_art.maquina THEN
|
|
LET p_act = p_act - 1
|
|
NEXT FIELD cod_grupo
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
|
|
AFTER FIELD cod_grupo
|
|
IF movi8[p_act].cod_grupo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET p_act = arr_curr()
|
|
LET ant_art.cod_n = movi8[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi8[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi8[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi8[p_act].cod_sec
|
|
LET ant_art.maquina = movi8[p_act].codigo
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi8[idx].cod_n = ant_art.cod_n
|
|
AND movi8[idx].cod_grupo = ant_art.cod_grupo
|
|
AND movi8[idx].cod_tipo = ant_art.cod_tipo
|
|
AND movi8[idx].cod_sec = ant_art.cod_sec
|
|
AND movi8[idx].codigo = ant_art.maquina THEN
|
|
LET p_act = p_act - 1
|
|
NEXT FIELD cod_tipo
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
AFTER FIELD cod_tipo
|
|
|
|
IF movi8[p_act].cod_tipo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET p_act = arr_curr()
|
|
|
|
LET ant_art.cod_n = movi8[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi8[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi8[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi8[p_act].cod_sec
|
|
LET ant_art.maquina = movi8[p_act].codigo
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi8[idx].cod_n = ant_art.cod_n
|
|
AND movi8[idx].cod_grupo = ant_art.cod_grupo
|
|
AND movi8[idx].cod_tipo = ant_art.cod_tipo
|
|
AND movi8[idx].cod_sec = ant_art.cod_sec
|
|
AND movi8[idx].codigo = ant_art.maquina THEN
|
|
LET p_act = p_act - 1
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
# Verifica que el numero del documento de entrada no este en el archivo de
|
|
# movi8mientos.
|
|
AFTER FIELD cod_sec
|
|
LET p_act = arr_curr()
|
|
IF movi8[p_act].cod_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF movi8[p_act].cod_n IS NULL
|
|
AND movi8[p_act].cod_sec IS NOT NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF movi8[p_act].cod_n IS NOT NULL
|
|
AND movi8[p_act].cod_grupo IS NOT NULL
|
|
AND movi8[p_act].cod_tipo IS NOT NULL
|
|
AND movi8[p_act].cod_sec IS NOT NULL THEN
|
|
|
|
SELECT a.descrip_esp, a.unidad_med, a.exist_min
|
|
INTO descrip1, descrip2, existminima[p_act]
|
|
FROM irtb00002 a
|
|
WHERE a.cod_n = movi8[p_act].cod_n
|
|
AND a.cod_grupo = movi8[p_act].cod_grupo
|
|
AND a.cod_tipo = movi8[p_act].cod_tipo
|
|
AND a.cod_sec = movi8[p_act].cod_sec
|
|
AND a.status_t IS NULL
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
CALL existencia(
|
|
movi8[p_act].cod_n,
|
|
movi8[p_act].cod_grupo,
|
|
movi8[p_act].cod_tipo,
|
|
movi8[p_act].cod_sec)
|
|
RETURNING existen
|
|
|
|
IF existen IS NULL THEN
|
|
LET existen = 0
|
|
END IF
|
|
|
|
LET movi8[p_act].existencia = existen
|
|
DISPLAY movi8[p_act].existencia TO s_movi1[scr_l].existencia
|
|
# BUSCA LA MAQUINA PERTENECIENTE AL REPUESTO
|
|
# se quito este control porque entonces alguien debe de adicionar todos los repuestos a las maquinas
|
|
{ SELECT a.cod_maq INTO codigo_mq
|
|
FROM irtb00008 a
|
|
WHERE a.cod_n = movi8[p_act].cod_n AND
|
|
a.cod_grupo = movi8[p_act].cod_grupo AND
|
|
a.cod_tipo = movi8[p_act].cod_tipo AND
|
|
a.cod_sec = movi8[p_act].cod_sec AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 384
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD cod_sec
|
|
END IF
|
|
IF STATUS < 0 THEN
|
|
LET consulta = "N"
|
|
CALL busca_maquina()
|
|
LET movi8[p_act].codigo = busca_wd2[curr1].codigo
|
|
DISPLAY movi8[p_act].codigo TO s_movi1[scr_l].codigo
|
|
DISPLAY BY NAME maquinaria.nombre
|
|
END IF
|
|
}
|
|
#CONTROL COSTO
|
|
# LET bandera = 0
|
|
# CALL busca_costo()
|
|
# IF bandera = 1 THEN
|
|
# NEXT FIELD cod_sec
|
|
# END IF
|
|
END IF
|
|
LET movi8[p_act].descrip_esp = descrip1
|
|
LET movi8[p_act].unidad_med = descrip2 CLIPPED
|
|
|
|
DISPLAY movi8[p_act].descrip_esp TO s_movi1[scr_l].descrip_esp
|
|
DISPLAY movi8[p_act].unidad_med TO s_movi1[scr_l].unidad_med
|
|
|
|
LET ant_art.cod_n = movi8[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi8[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi8[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi8[p_act].cod_sec
|
|
LET ant_art.maquina = movi8[p_act].codigo
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi8[idx].cod_n = ant_art.cod_n
|
|
AND movi8[idx].cod_grupo = ant_art.cod_grupo
|
|
AND movi8[idx].cod_tipo = ant_art.cod_tipo
|
|
AND movi8[idx].cod_sec = ant_art.cod_sec
|
|
AND movi8[idx].codigo = ant_art.maquina THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
AFTER FIELD codigo
|
|
IF movi8[p_act].cod_n IS NOT NULL
|
|
AND movi8[p_act].cod_grupo IS NOT NULL
|
|
AND movi8[p_act].cod_tipo IS NOT NULL
|
|
AND movi8[p_act].cod_sec IS NOT NULL THEN
|
|
|
|
IF movi8[p_act].codigo IS NOT NULL THEN
|
|
LET xdepartamento = NULL
|
|
SELECT a.departamento
|
|
INTO xdepartamento
|
|
FROM irtb00009 a
|
|
WHERE a.codigo = movi8[p_act].codigo
|
|
|
|
IF xdepartamento IS NOT NULL THEN
|
|
LET datos1.departamento = xdepartamento
|
|
DISPLAY BY NAME datos1.departamento
|
|
END IF
|
|
END IF
|
|
|
|
IF movi8[p_act].codigo IS NOT NULL THEN
|
|
CALL DIALOG.setFieldActive('orden_trabajo',TRUE)
|
|
END IF
|
|
|
|
END IF
|
|
AFTER FIELD cantidad_2
|
|
IF movi8[p_act].cod_n IS NOT NULL
|
|
AND movi8[p_act].cod_grupo IS NOT NULL
|
|
AND movi8[p_act].cod_tipo IS NOT NULL
|
|
AND movi8[p_act].cod_sec IS NOT NULL THEN
|
|
|
|
IF movi8[p_act].cantidad_2 IS NULL
|
|
OR movi8[p_act].cantidad_2 <= 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF transacc.status_mov = "2" THEN
|
|
|
|
CALL existencia(
|
|
movi8[p_act].cod_n,
|
|
movi8[p_act].cod_grupo,
|
|
movi8[p_act].cod_tipo,
|
|
movi8[p_act].cod_sec)
|
|
RETURNING existen
|
|
|
|
IF existen IS NULL THEN
|
|
LET existen = 0
|
|
END IF
|
|
|
|
IF existen < 0 THEN
|
|
LET numero_msg = 30
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF movi8[p_act].cantidad_2 > existen THEN
|
|
LET numero_msg = 30
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET existenciaact[p_act] = existen
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD orden_trabajo
|
|
IF movi8[p_act].orden_trabajo IS NOT NULL THEN
|
|
INITIALIZE fakedata.* TO NULL
|
|
CALL ApiMaintainC('CHECK', movi8[p_act].orden_trabajo, fakeData.*, usuarios) RETURNING answer
|
|
|
|
|
|
IF answer IS NULL OR answer = 0 THEN
|
|
CALL fgl_winmessage(
|
|
"ORDEN DE TRABAJO EN MAINTAINX",
|
|
"El ID de la orden de trabajo colocada no se encuentra en MaintainX",
|
|
"stop")
|
|
NEXT FIELD orden_trabajo
|
|
|
|
ELSE
|
|
|
|
LET answer_workorder = answer
|
|
|
|
END IF
|
|
END IF
|
|
|
|
|
|
AFTER FIELD num_emp
|
|
IF movi8[p_act].num_emp IS NOT NULL THEN
|
|
SELECT num_emp FROM adtb00003
|
|
WHERE num_emp = movi8[p_act].num_emp AND status_t IS NULL
|
|
IF status = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
END IF
|
|
|
|
ON ACTION guardar ATTRIBUTE(TEXT = "Salvar", IMAGE = "save")
|
|
|
|
IF datos1.departamento IS NULL
|
|
AND transacc.control_departamento = "SI" THEN
|
|
DISPLAY BY NAME datos1.departamento
|
|
CALL msg(16)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
FOR idx = 1 TO movi8.getLength()
|
|
IF movi8[idx].cod_n IS NOT NULL
|
|
AND movi8[idx].cod_grupo IS NOT NULL
|
|
AND movi8[idx].cod_tipo IS NOT NULL
|
|
AND movi8[idx].cod_sec IS NOT NULL THEN
|
|
|
|
IF movi8[idx].codigo IS NOT NULL THEN
|
|
LET xdepartamento = NULL
|
|
SELECT a.departamento
|
|
INTO xdepartamento
|
|
FROM irtb00009 a
|
|
WHERE a.codigo = movi8[idx].codigo
|
|
|
|
IF xdepartamento IS NOT NULL THEN
|
|
LET datos1.departamento = xdepartamento
|
|
DISPLAY BY NAME datos1.departamento
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
IF movi8[p_act].cod_n IS NULL THEN
|
|
CALL limpia1()
|
|
END IF
|
|
IF movi8[p_act].cod_grupo IS NULL THEN
|
|
CALL limpia1()
|
|
END IF
|
|
IF movi8[p_act].cod_tipo IS NULL THEN
|
|
CALL limpia1()
|
|
END IF
|
|
IF movi8[p_act].cod_sec IS NULL THEN
|
|
CALL limpia1()
|
|
END IF
|
|
|
|
IF datos1.orden_compra IS NOT NULL THEN
|
|
# Busca la cantidad recibida de la orden especificada
|
|
SELECT SUM(cantidad_2)
|
|
INTO recibida
|
|
FROM irtb00006
|
|
WHERE orden_compra = datos1.orden_compra
|
|
AND tipo = datos1.tipo
|
|
|
|
# Busca la cantidad ordenada de la orden especificada
|
|
SELECT SUM(cantidad)
|
|
INTO ordenada
|
|
FROM cotb00015
|
|
WHERE num_oc = datos1.orden_compra
|
|
AND tipo = datos1.tipo
|
|
|
|
IF recibida IS NULL THEN
|
|
LET recibida = 0
|
|
END IF
|
|
|
|
IF ordenada IS NULL THEN
|
|
LET ordenada = 0
|
|
END IF
|
|
|
|
# Calculo de los porcentaje limites de las ordenes
|
|
LET porciento = ordenada * 0.10
|
|
LET recibida = recibida + total_cantidad
|
|
LET r_cantidad = ordenada - porciento
|
|
LET r_cantidad1 = ordenada + porciento
|
|
|
|
# Si la cantiad recibida producto de la sumatoria y subtracion del 10%
|
|
# es mayor o igual a la cantidad recibida y menor o igual a la cantidad de
|
|
# la orden cierra la orden
|
|
IF recibida >= r_cantidad AND recibida <= r_cantidad1 THEN
|
|
LET cerrada = "S"
|
|
END IF
|
|
END IF
|
|
|
|
LET nombre_d =
|
|
ui.ComboBox.forName('formonly.departamento')
|
|
.getTextOf(datos1.departamento)
|
|
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
START REPORT formu4 TO archivo
|
|
# CONFIGURACION ENVIO EMAIL
|
|
DECLARE buscaemail CURSOR FOR
|
|
SELECT a.correo
|
|
FROM seg0003 a
|
|
WHERE a.aviso_existencia_minima_repuesto = "SI"
|
|
|
|
LET pccemail = NULL
|
|
LET toEmail = NULL
|
|
FOREACH buscaemail INTO PCCEMAIL
|
|
IF toEmail IS NULL THEN
|
|
LET toEmail = pccemail CLIPPED
|
|
ELSE
|
|
LET toEmail = toEmail CLIPPED, ";", pccemail CLIPPED
|
|
END IF
|
|
END FOREACH
|
|
LET subject = 'AVISO EXISTENCIA MINIMA ALMACEN REPUESTOS'
|
|
|
|
LET cuerpo_correo =
|
|
"<style>",
|
|
" table, td, th {
|
|
border: 1px solid black;
|
|
}
|
|
</style>",
|
|
"<table align='right' >",
|
|
"<thead><tr><th colspan='3'>CON EL DOCUMENTO ",
|
|
datos1.num_doc USING "&&&&&&&&",
|
|
"PERTENECIENTE AL MOVIMIENTO (",
|
|
datos1.cod_mov USING "&&&",
|
|
")",
|
|
datos1.descrip_mov CLIPPED,
|
|
"</th></tr></thead>",
|
|
"<tr>",
|
|
"<th>PRODUCTOS</th>",
|
|
"<th>CANTIDAD TRANSACC</th>",
|
|
"<th>CANTIDAD MINIMA</th>",
|
|
"<th>EXISTENCIA</th></tr>",
|
|
"<tbody>"
|
|
|
|
LET enviaCorreo = "NO"
|
|
BEGIN WORK
|
|
|
|
# Selecciona el registro del ultimo numero de documento para chequear si
|
|
# existe para insertarlo en la tabla de secuencia
|
|
SELECT num_salida INTO datos1.num_doc FROM irtb00014 WHERE cod_mov = datos1.cod_mov
|
|
IF status = NOTFOUND THEN
|
|
LET datos1.num_doc = 0
|
|
|
|
INSERT INTO irtb00014
|
|
VALUES(datos1.num_doc,
|
|
datos1.cod_mov,
|
|
NULL,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
NULL,
|
|
NULL)
|
|
END IF
|
|
|
|
LET datos1.num_doc = datos1.num_doc + 1
|
|
DISPLAY BY NAME datos1.num_doc ATTRIBUTE(BOLD)
|
|
|
|
UPDATE irtb00014
|
|
SET num_salida = datos1.num_doc,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE cod_mov = datos1.cod_mov
|
|
#----------------------------------------------------------------------------
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
|
|
IF movi8[idx].cod_n IS NOT NULL
|
|
AND movi8[idx].cod_grupo IS NOT NULL
|
|
AND movi8[idx].cod_tipo IS NOT NULL
|
|
AND movi8[idx].cod_sec IS NOT NULL
|
|
AND (movi8[idx].cantidad_2 IS NOT NULL
|
|
AND movi8[idx].cantidad_2 > 0) THEN
|
|
|
|
IF transacc.status_mov = "2" THEN
|
|
LET movi8[idx].cantidad_2 =
|
|
movi8[idx].cantidad_2 * -1
|
|
END IF
|
|
|
|
IF movi8[idx].codigo IS NULL
|
|
AND transacc.control_maquina = "SI" THEN
|
|
DISPLAY "AQUI 1"
|
|
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD codigo
|
|
END IF
|
|
IF movi8[idx].codigo IS NOT NULL
|
|
AND transacc.control_maquina = "NO" THEN
|
|
DISPLAY "AQUI 2"
|
|
|
|
ROLLBACK WORK
|
|
CALL msg(1664)
|
|
NEXT FIELD codigo
|
|
END IF
|
|
|
|
LET checkapi.checkDept = FALSE
|
|
LET checkapi.checkMaquina = FALSE
|
|
LET checkapi.checkRep = FALSE
|
|
|
|
--Verificar si el departamento esta en maintainX
|
|
INITIALIZE answer TO NULL
|
|
SELECT id_maintainx INTO answer
|
|
FROM adtb00001 WHERE departamento = datos1.departamento
|
|
|
|
IF answer IS NULL THEN
|
|
#CALL msg(16)
|
|
DISPLAY "AQUI 3"
|
|
ELSE
|
|
LET checkApi.checkDept = TRUE
|
|
END IF
|
|
|
|
--Verificar si la maquina esta en maintainX
|
|
INITIALIZE answer TO NULL
|
|
SELECT b.id_maintainX INTO answer FROM irtb00009 a, actb00001 b
|
|
WHERE a.id_codigo = b.codigo
|
|
AND a.codigo = movi8[idx].codigo
|
|
|
|
IF answer IS NULL THEN
|
|
#CALL msg(16)
|
|
DISPLAY "AQUI 4"
|
|
ELSE
|
|
LET checkApi.checkMaquina = TRUE
|
|
END IF
|
|
|
|
--Verificar si el repuesto esta en maintainX
|
|
INITIALIZE answer TO NULL
|
|
select id_maintainX INTO answer from irtb00002 WHERE
|
|
cod_n = movi8[idx].cod_n AND cod_grupo = movi8[idx].cod_grupo
|
|
AND cod_tipo = movi8[idx].cod_tipo AND cod_sec = movi8[idx].cod_sec
|
|
|
|
IF answer IS NULL THEN
|
|
#CALL msg(16)
|
|
DISPLAY "AQUI 5"
|
|
ELSE
|
|
LET checkApi.checkRep = TRUE
|
|
END IF
|
|
|
|
INSERT INTO irtb00006(
|
|
num_doc,
|
|
fecha,
|
|
conduce_no,
|
|
tipo,
|
|
orden_compra,
|
|
cod_sp,
|
|
cod_sp_sec,
|
|
cod_mov,
|
|
maquina,
|
|
cod_n,
|
|
cod_grupo,
|
|
cod_tipo,
|
|
cod_sec,
|
|
cantidad_2,
|
|
sec_a,
|
|
status_mov,
|
|
us_crea,
|
|
fech_crea,
|
|
bodega,
|
|
orden_trabajo,
|
|
num_req)
|
|
VALUES(datos1.num_doc,
|
|
datos1.fecha,
|
|
datos1.conduce_no,
|
|
datos1.tipo,
|
|
datos1.orden_compra,
|
|
datos1.cod_sp,
|
|
datos1.cod_sp_sec,
|
|
datos1.cod_mov,
|
|
movi8[idx].codigo,
|
|
movi8[idx].cod_n,
|
|
movi8[idx].cod_grupo,
|
|
movi8[idx].cod_tipo,
|
|
movi8[idx].cod_sec,
|
|
movi8[idx].cantidad_2,
|
|
datos1.departamento,
|
|
transacc.status_mov,
|
|
usuarios,
|
|
GETDATE(),
|
|
'1',
|
|
movi8[idx].orden_trabajo,
|
|
data.rnumeroDoc)
|
|
|
|
IF data.rcodMov IS NOT NULL AND data.rcodMov != 0 THEN
|
|
|
|
UPDATE irtb00057 SET estado = 'CERRADA', us_mod = usuarios, fech_mod = getdate()
|
|
WHERE numero_doc = data.rnumeroDoc AND cod_mov = data.rcodMov AND bodega = data.bodega
|
|
|
|
END IF
|
|
|
|
IF movi8[idx].num_emp IS NOT NULL THEN
|
|
LET v_producto_id =
|
|
movi8[idx].cod_n CLIPPED, "-" CLIPPED,
|
|
movi8[idx].cod_grupo CLIPPED, "-" CLIPPED,
|
|
movi8[idx].cod_tipo CLIPPED, "-" CLIPPED,
|
|
movi8[idx].cod_sec CLIPPED
|
|
|
|
INSERT INTO adtb00057(num_emp, fecha, codigo, documento, cantidad)
|
|
VALUES(movi8[idx].num_emp,
|
|
datos1.fecha,
|
|
REPLACE(v_producto_id, ' ',''),
|
|
datos1.num_doc,
|
|
ABS(movi8[idx].cantidad_2))
|
|
END IF
|
|
|
|
|
|
SELECT SUM(cantidad_2) INTO APIexistencia from irtb00006
|
|
WHERE cod_n = movi8[idx].cod_n and cod_grupo = movi8[idx].cod_grupo
|
|
and cod_tipo = movi8[idx].cod_tipo and cod_sec = movi8[idx].cod_sec
|
|
AND status_t IS NULL
|
|
|
|
SELECT exist_min INTO m_articulos.exist_min FROM irtb00002
|
|
WHERE cod_n = movi8[idx].cod_n AND cod_grupo = movi8[idx].cod_grupo
|
|
AND cod_tipo = movi8[idx].cod_tipo AND cod_sec = movi8[idx].cod_sec
|
|
AND status_t IS NULL
|
|
|
|
select costo_st INTO m_articulos.descrip_ing from irtb00013 where mes_fin = 12 and ano = YEAR(datos1.fecha)
|
|
and cod_n = movi8[idx].cod_n AND cod_grupo = movi8[idx].cod_grupo
|
|
AND cod_tipo = movi8[idx].cod_tipo AND cod_sec = movi8[idx].cod_sec
|
|
AND status_t IS NULL
|
|
|
|
# ESTE CONTROL ESTABA AL MOMENTO DE NOSOTROS DESARROLLAR EL API,
|
|
# POR SUGERENCIA DE CESAR FRANCISCO EN FECHA 08/05/2026 SOLO SE ESTA CONTROLANDO
|
|
# SI EL REPUESTO ESTA EN MAINTAINX
|
|
# IF checkapi.checkDept AND checkapi.checkMaquina AND checkapi.checkRep THEN
|
|
|
|
IF checkapi.checkRep THEN
|
|
LET m_articulos.existencia = APIexistencia
|
|
|
|
CALL ApiMaintainR('PATCH',answer, m_articulos.*, usuarios) RETURNING answer
|
|
|
|
IF answer != 1 THEN
|
|
DISPLAY "AQUI 6"
|
|
ROLLBACK WORK
|
|
END IF
|
|
|
|
END IF
|
|
|
|
# ---------------------------------------------------------------
|
|
# MaintainX: adjunta el repuesto de la linea a SU orden de trabajo.
|
|
# Cada linea del detalle se adjunta a su propia orden de trabajo.
|
|
# ---------------------------------------------------------------
|
|
IF movi8[idx].orden_trabajo IS NOT NULL THEN
|
|
|
|
# El repuesto debe existir en MaintainX; de lo contrario se aborta.
|
|
IF NOT checkapi.checkRep THEN
|
|
CALL fgl_winmessage(
|
|
"REPUESTO NO ESTA EN MAINTAINX",
|
|
"El repuesto de una linea con orden de trabajo no se encuentra en MaintainX. No se puede guardar el documento.",
|
|
"stop")
|
|
ROLLBACK WORK
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
# Obtiene el ID real de la orden de trabajo en MaintainX para ESTA linea.
|
|
INITIALIZE fakeData.* TO NULL
|
|
CALL ApiMaintainC('CHECK', movi8[idx].orden_trabajo,
|
|
fakeData.*, usuarios) RETURNING answer
|
|
|
|
IF answer IS NULL OR answer = 0 THEN
|
|
CALL fgl_winmessage(
|
|
"ORDEN DE TRABAJO EN MAINTAINX",
|
|
"El ID de la orden de trabajo colocada no se encuentra en MaintainX.",
|
|
"stop")
|
|
ROLLBACK WORK
|
|
NEXT FIELD orden_trabajo
|
|
END IF
|
|
|
|
LET answer_workorder = answer
|
|
|
|
# Datos del repuesto que se adjuntara a la orden de trabajo.
|
|
SELECT UNIQUE id_maintainx INTO fakeData.id_maintainx
|
|
FROM irtb00002
|
|
WHERE cod_n = movi8[idx].cod_n
|
|
AND cod_grupo = movi8[idx].cod_grupo
|
|
AND cod_tipo = movi8[idx].cod_tipo
|
|
AND cod_sec = movi8[idx].cod_sec
|
|
AND status_t IS NULL
|
|
|
|
LET fakeData.contactID = movi8[idx].cantidad_2
|
|
LET fakeData.cod_sp_sec = datos1.departamento
|
|
LET fakeData.term_sp = datos1.cod_mov
|
|
|
|
CALL ApiMaintainC('PATCH_WORKORDER', answer_workorder,
|
|
fakeData.*, usuarios) RETURNING answer
|
|
|
|
IF answer != 1 THEN
|
|
CALL fgl_winmessage(
|
|
"ORDEN DE TRABAJO EN MAINTAINX",
|
|
"No se pudo adjuntar el repuesto a la orden de trabajo en MaintainX.",
|
|
"stop")
|
|
ROLLBACK WORK
|
|
NEXT FIELD orden_trabajo
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF transacc.status_mov = "2" THEN
|
|
|
|
CALL existencia(
|
|
movi8[idx].cod_n,
|
|
movi8[idx].cod_grupo,
|
|
movi8[idx].cod_tipo,
|
|
movi8[idx].cod_sec)
|
|
RETURNING existen
|
|
|
|
IF existen IS NULL THEN
|
|
LET existen = 0
|
|
END IF
|
|
|
|
IF existen < 0 THEN
|
|
DISPLAY "AQUI 7"
|
|
|
|
ROLLBACK WORK
|
|
LET numero_msg = 30
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
END IF
|
|
|
|
|
|
|
|
OUTPUT TO REPORT formu4(datos1.*, movi8[idx].*)
|
|
LET cuerpo_correo = cuerpo_correo CLIPPED, "<tr>"
|
|
# PROCEDIMIENTO ENVIO CORREO PARA LA EXISTENCIA MINIMA
|
|
LET existenciaact[idx] =
|
|
(existenciaact[idx] - (movi8[idx].cantidad_2 * -1))
|
|
IF existminima[idx] > 0 THEN
|
|
LET porcientocontrol[idx] =
|
|
(existminima[idx] / existenciaact[idx]) * 100
|
|
|
|
END IF
|
|
LET enviaEmailProd[idx] = "NO"
|
|
IF porcientocontrol[idx] >= 90
|
|
AND transacc.status_mov = 2
|
|
AND existminIma[idx] > 0 THEN
|
|
|
|
# INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES
|
|
|
|
LET enviaCorreo = "SI"
|
|
|
|
LET CCEmail = "jsoto@marmotech.com.do"
|
|
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED,
|
|
"<td>",
|
|
movi8[idx].descrip_esp CLIPPED,
|
|
"</td>",
|
|
"<td>",
|
|
movi8[idx].cantidad_2 USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existminima[idx] USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existenciaact[idx] USING "##,###.##",
|
|
"</td>",
|
|
"</tr>"
|
|
LET enviaEmailProd[idx] = "SI"
|
|
END IF
|
|
IF porcientocontrol[idx] <= 0
|
|
AND transacc.status_mov = 2
|
|
AND existminIma[idx] > 0 THEN
|
|
|
|
# INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES
|
|
|
|
LET enviaCorreo = "SI"
|
|
# LET TOEmail = "mantenimiento@marmotech.com.do"
|
|
|
|
LET CCEmail = "jsoto@marmotech.com.do"
|
|
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED,
|
|
"<td>",
|
|
movi8[idx].descrip_esp CLIPPED,
|
|
"</td>",
|
|
"<td>",
|
|
movi8[idx].cantidad_2 USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existminima[idx] USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existenciaact[idx] USING "##,###.##",
|
|
"</td>",
|
|
"</tr>"
|
|
LET enviaEmailProd[idx] = "SI"
|
|
|
|
END IF
|
|
IF transacc.status_mov = 2
|
|
AND existenciaact[idx] <= 0
|
|
AND enviaEmailProd[idx] = "NO" THEN
|
|
|
|
# INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES
|
|
|
|
LET enviaCorreo = "SI"
|
|
|
|
# LET TOEmail = "mantenimiento@marmotech.com.do"
|
|
|
|
LET CCEmail = "jsoto@marmotech.com.do"
|
|
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED,
|
|
"<tr><td>EXISTENCIA EN CERO</td></tr>",
|
|
"<td>",
|
|
movi8[idx].descrip_esp CLIPPED,
|
|
"</td>",
|
|
"<td>",
|
|
movi8[idx].cantidad_2 USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existminima[idx] USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
existenciaact[idx] USING "##,###.##",
|
|
"</td>",
|
|
"</tr>"
|
|
|
|
END IF
|
|
|
|
END IF
|
|
# SE DESACTIVO EL ENVIO POR CADA TRANSACCION QUE ESTE POR DEBAJO DEL MINIMO
|
|
LET enviaCorreo = "NO"
|
|
END FOR
|
|
IF enviaCorreo = "SI" THEN
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED, "</tbody></table></div>"
|
|
LET procedimiento =
|
|
"{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
|
|
IF LENGTH(Toemail) > 2 THEN
|
|
LET xusername = 'notificacion@marmotech.com.do'
|
|
LET xsmtphost = 'smtp.office365.com'
|
|
LET xsmtpport = '587'
|
|
LET xpassword = 'Lmmjvsd2020'
|
|
LET toemail = 'jsoto@marmotech.com.do'
|
|
CALL enviaemail(
|
|
Toemail,
|
|
subject,
|
|
cuerpo_correo,
|
|
NULL,
|
|
xusername,
|
|
xsmtphost,
|
|
xsmtpport,
|
|
xpassword)
|
|
END IF
|
|
# CALL envia_correo(
|
|
# TOemail, CCEmail, cuerpo_correo, subject, procedimiento)
|
|
END IF
|
|
|
|
COMMIT WORK
|
|
|
|
FINISH REPORT formu4
|
|
RUN imprime
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CALL movi8.clear()
|
|
INITIALIZE datos1.* TO NULL
|
|
INITIALIZE transacc.* TO NULL
|
|
CLEAR FORM
|
|
ON ACTION CANCEL ATTRIBUTE(TEXT = "Cancelar")
|
|
LET opt =
|
|
fgl_winquestion(
|
|
"Salir",
|
|
"Esta seguro de salir del programa?",
|
|
"no",
|
|
"YES|NO",
|
|
"question",
|
|
0)
|
|
IF opt = "YES" THEN
|
|
EXIT PROGRAM
|
|
ELSE
|
|
NEXT FIELD orden_compra
|
|
END IF
|
|
END INPUT
|
|
|
|
|
|
END DIALOG
|
|
END FUNCTION
|
|
|
|
FUNCTION limpia1()
|
|
|
|
LET movi8[p_act].cod_n = NULL
|
|
LET movi8[p_act].cod_grupo = NULL
|
|
LET movi8[p_act].cod_tipo = NULL
|
|
LET movi8[p_act].cod_sec = NULL
|
|
LET movi8[p_act].cantidad_2 = NULL
|
|
LET movi8[p_act].unidad_med = NULL
|
|
LET movi8[p_act].descrip_esp = NULL
|
|
DISPLAY movi8[p_act].cod_n TO s_movi1[scr_l].cod_n
|
|
DISPLAY movi8[p_act].cod_grupo TO s_movi1[scr_l].cod_grupo
|
|
DISPLAY movi8[p_act].cod_tipo TO s_movi1[scr_l].cod_tipo
|
|
DISPLAY movi8[p_act].cod_sec TO s_movi1[scr_l].cod_sec
|
|
DISPLAY movi8[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2
|
|
DISPLAY movi8[p_act].unidad_med TO s_movi1[scr_l].unidad_med
|
|
DISPLAY movi8[p_act].descrip_esp TO s_movi1[scr_l].descrip_esp
|
|
END FUNCTION
|
|
|
|
REPORT formu4(x, z)
|
|
|
|
DEFINE x RECORD
|
|
cod_mov LIKE irtb00006.cod_mov,
|
|
descrip_mov LIKE irtb00005.descrip_mov,
|
|
num_doc LIKE irtb00006.num_doc,
|
|
tipo LIKE irtb00006.tipo,
|
|
orden_compra LIKE irtb00006.orden_compra,
|
|
cod_sp LIKE irtb00006.cod_sp,
|
|
cod_sp_sec LIKE irtb00006.cod_sp_sec,
|
|
fecha LIKE irtb00006.fecha,
|
|
conduce_no VARCHAR(50),
|
|
secc_a LIKE irtb00006.sec_a,
|
|
nom_sp CHAR(30)
|
|
END RECORD
|
|
|
|
DEFINE z RECORD
|
|
cod_n LIKE intb00003.cod_n,
|
|
cod_grupo LIKE intb00003.cod_grupo,
|
|
cod_tipo LIKE intb00003.cod_tipo,
|
|
cod_sec LIKE intb00003.cod_sec,
|
|
cantidad_2 LIKE irtb00006.cantidad_2,
|
|
unidad_med LIKE irtb00002.unidad_med,
|
|
descrip_esp LIKE irtb00002.descrip_esp,
|
|
codigo LIKE irtb00008.cod_maq,
|
|
orden_trabajo INT,
|
|
existencia FLOAT,
|
|
num_emp SMALLINT
|
|
END RECORD
|
|
|
|
# DEFINE doce,normal,doble,doble_of,negras,negras_off CHAR(2)
|
|
DEFINE l, cuenta SMALLINT
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 1
|
|
PAGE LENGTH 33
|
|
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET doble = ASCII 14
|
|
LET doble_of = ASCII 20
|
|
LET negras = ASCII 27, ASCII 69
|
|
LET negras_off = ASCII 27, ASCII 70
|
|
|
|
PRINT doce
|
|
PRINT COLUMN 1, negras, doble, p_companias.nombre CLIPPED
|
|
PRINT COLUMN 65, "No. ", doble, x.num_doc USING "<<<<<<"
|
|
PRINT COLUMN 30,
|
|
"MOVIMIENTOS DE ALMACEN",
|
|
COLUMN 60,
|
|
x.fecha #using "dd/mm/yyyy"
|
|
|
|
SKIP 1 LINES
|
|
|
|
LET l = (80 - LENGTH(x.descrip_mov)) / 2
|
|
|
|
PRINT COLUMN l,
|
|
"(",
|
|
x.cod_mov USING "&&",
|
|
")",
|
|
x.descrip_mov,
|
|
negras_off
|
|
|
|
PRINT COLUMN 1,
|
|
"Suplidor : ",
|
|
x.cod_sp USING "&&",
|
|
"-",
|
|
x.cod_sp_sec USING "&&&&",
|
|
" ",
|
|
x.nom_sp
|
|
PRINT COLUMN 1, "Condude : ", x.conduce_no
|
|
PRINT COLUMN 1,
|
|
"Departamento: ",
|
|
x.secc_a USING "<<<<",
|
|
" ",
|
|
nombre_d
|
|
SKIP 1 LINES
|
|
PRINT COLUMN 1,
|
|
"---------------------------------------------------------------------"
|
|
PRINT COLUMN 58, "CANTIDAD"
|
|
# 2 SPACES, "EXITENCIA"
|
|
|
|
PRINT COLUMN 2,
|
|
doble,
|
|
"ARTICULOS",
|
|
doble_of CLIPPED,
|
|
COLUMN 51,
|
|
"REQUERIDA "
|
|
|
|
PRINT COLUMN 1,
|
|
"-----------------------------------------------------------------------"
|
|
SKIP 1 LINES
|
|
|
|
ON EVERY ROW
|
|
IF z.cod_n IS NOT NULL
|
|
AND z.cod_grupo IS NOT NULL
|
|
AND z.cod_tipo IS NOT NULL
|
|
AND z.cod_sec IS NOT NULL THEN
|
|
LET xnombre = NULL
|
|
SELECT a.nombre
|
|
INTO xnombre
|
|
FROM irtb00009 a
|
|
WHERE a.codigo = z.codigo AND a.status_t IS NULL
|
|
|
|
PRINT COLUMN 2,
|
|
z.cod_n USING "&",
|
|
"-",
|
|
COLUMN 4,
|
|
z.cod_grupo USING "&&&",
|
|
"-",
|
|
COLUMN 6,
|
|
z.cod_tipo USING "&&&",
|
|
"-",
|
|
COLUMN 9,
|
|
z.cod_sec USING "&&&",
|
|
COLUMN 17,
|
|
z.descrip_esp CLIPPED,
|
|
" ",
|
|
z.unidad_med,
|
|
COLUMN 58,
|
|
z.cantidad_2 USING "##,###.##",
|
|
COLUMN 68,
|
|
z.codigo USING "<<<",
|
|
" ",
|
|
xnombre
|
|
# 2 SPACES, z.existencia USING "<<,<<<.##"
|
|
END IF
|
|
|
|
PAGE TRAILER
|
|
PRINT COLUMN 1,
|
|
"------------------",
|
|
COLUMN 27,
|
|
"------------------",
|
|
COLUMN 50,
|
|
"------------------"
|
|
|
|
PRINT COLUMN 5,
|
|
"Entregado Por",
|
|
COLUMN 29,
|
|
"Recibido Por",
|
|
COLUMN 53,
|
|
"Aprobado Por"
|
|
|
|
SKIP 2 LINE
|
|
PRINT COLUMN 2, "Original: Contabilidad Copia: Almacen"
|
|
|
|
SKIP 1 LINE
|
|
|
|
#PRINT normal
|
|
END REPORT
|
|
|
|
FUNCTION anular()
|
|
DISPLAY "ELIMINACION REGISTROS " AT 3, 2 ATTRIBUTE(BLUE, REVERSE)
|
|
INPUT BY NAME datos1.cod_mov, datos1.num_doc
|
|
AFTER FIELD num_doc
|
|
IF datos1.num_doc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
SELECT UNIQUE fecha, tipo, orden_compra, sec_de, cod_sp, cod_sp_sec
|
|
INTO datos1.fecha,
|
|
datos1.tipo,
|
|
datos1.orden_compra,
|
|
datos1.departamento
|
|
FROM irtb00006
|
|
WHERE @num_doc = datos1.num_doc AND @cod_mov = datos1.cod_mov
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
DISPLAY BY NAME datos1.*
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT INPUT
|
|
END IF
|
|
END INPUT
|
|
IF int_flag THEN
|
|
GOTO salir
|
|
END IF
|
|
PROMPT "Esta Seguro de Eliminar Este Documento (S/N)? " FOR ya
|
|
LET ya = upshift(ya)
|
|
|
|
IF ya = "S" THEN
|
|
UPDATE irtb00006
|
|
SET status_t = "E", us_mod = SUSER_SNAME(), fech_mod = GETDATE()
|
|
WHERE num_doc = datos1.num_doc AND cod_mov = datos1.cod_mov
|
|
|
|
END IF
|
|
LABEL salir:
|
|
DISPLAY "<Esc> Adiciona Registro" AT 3, 2 ATTRIBUTE(BLUE, REVERSE)
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_prod1()
|
|
|
|
OPEN WINDOW busca_2
|
|
AT 8, 4
|
|
WITH FORM "irfmwd001"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, PROMPT LINE LAST)
|
|
|
|
CONSTRUCT BY NAME criterio
|
|
ON a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.descrip_esp
|
|
|
|
LET selec_pt =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
|
|
" a.unidad_med,isnull(sum(b.cantidad_2),0) FROM irtb00002 a,irtb00006 b ",
|
|
"WHERE a.status_t IS NULL 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 ",
|
|
" b.status_t is null AND ",
|
|
criterio CLIPPED,
|
|
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ",
|
|
" ORDER BY a.descrip_esp "
|
|
|
|
PREPARE comando_p FROM selec_pt
|
|
DECLARE busca_2 CURSOR FOR comando_p
|
|
|
|
LET idx = 1
|
|
FOREACH busca_2 INTO arr_prod[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx - 1)
|
|
|
|
DISPLAY ARRAY arr_prod TO s_prod.*
|
|
LET idx = ARR_CURR()
|
|
|
|
CLOSE WINDOW busca_2
|
|
END FUNCTION
|
|
FUNCTION busca_costo()
|
|
SELECT a.costo_st
|
|
FROM irtb00013 a
|
|
WHERE a.cod_n = movi8[p_act].cod_n
|
|
AND a.cod_grupo = movi8[p_act].cod_grupo
|
|
AND a.cod_tipo = movi8[p_act].cod_tipo
|
|
AND a.cod_sec = movi8[p_act].cod_sec
|
|
AND a.ano = YEAR(TODAY)
|
|
AND a.mes_fin = 12
|
|
AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 351
|
|
CALL msg(numero_msg)
|
|
LET bandera = 1
|
|
END IF
|
|
|
|
END FUNCTION
|
|
FUNCTION irprmfad036()
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
CONSTRUCT BY NAME criterio ON a.cod_mov, a.num_Doc
|
|
BEFORE CONSTRUCT
|
|
CALL busca_departamento()
|
|
ON ACTION busca_info
|
|
ATTRIBUTE(TEXT = "Busca Informacion", IMAGE = "find")
|
|
LET selec =
|
|
" select a.cod_mov,b.descrip_mov,a.num_doc,a.tipo,a.orden_compra,a.cod_sp,a.cod_sp_sec,a.fecha,",
|
|
" d.nombre,a.sec_a ,c.nom_sp FROM irtb00006 a LEFT OUTER JOIN cotb00001 c ON a.cod_sp=c.cod_sp and ",
|
|
" a.cod_sp_sec = c.cod_sp_sec LEFT OUTER JOIN irtb00009 d ON a.maquina = d.codigo, ",
|
|
"irtb00005 b ",
|
|
" WHERE ",
|
|
criterio CLIPPED,
|
|
" AND a.cod_mov = b.cod_mov AND a.status_t IS NULL "
|
|
|
|
PREPARE x1 FROM selec
|
|
DECLARE busca_ir SCROLL CURSOR FOR x1
|
|
OPEN busca_ir
|
|
FETCH FIRST busca_ir INTO datos1.*
|
|
CALL desplega_doc()
|
|
MENU "NAVEGACION"
|
|
COMMAND "Siguiente"
|
|
FETCH NEXT busca_ir INTO datos1.*
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(4)
|
|
CONTINUE MENU
|
|
END IF
|
|
CALL desplega_doc()
|
|
COMMAND "Anterior"
|
|
FETCH PREVIOUS busca_ir INTO datos1.*
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(5)
|
|
CONTINUE MENU
|
|
END IF
|
|
|
|
CALL desplega_doc()
|
|
COMMAND "Ultimo"
|
|
FETCH LAST busca_ir INTO datos1.*
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(4)
|
|
CONTINUE MENU
|
|
END IF
|
|
|
|
CALL desplega_doc()
|
|
COMMAND "Primero"
|
|
FETCH FIRST busca_ir INTO datos1.*
|
|
CALL desplega_doc()
|
|
COMMAND "Retornar"
|
|
EXIT MENU
|
|
END MENU
|
|
ON ACTION CANCEL
|
|
|
|
EXIT DIALOG
|
|
|
|
AFTER CONSTRUCT
|
|
|
|
END CONSTRUCT
|
|
END DIALOG
|
|
END FUNCTION
|
|
FUNCTION desplega_Doc()
|
|
|
|
DISPLAY BY NAME datos1.*
|
|
DECLARE busca_detalle CURSOR FOR
|
|
SELECT a.cod_n,
|
|
a.cod_grupo,
|
|
a.cod_tipo,
|
|
a.cod_sec,
|
|
a.cantidad_2,
|
|
b.unidad_med,
|
|
b.descrip_esp,
|
|
a.maquina,
|
|
a.orden_trabajo
|
|
FROM irtb00006 a, irtb00002 b
|
|
WHERE (a.cod_mov = datos1.cod_mov AND a.num_Doc = datos1.num_doc)
|
|
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
|
|
|
|
CALL maquinas(-1)
|
|
|
|
LET idx = 1
|
|
FOREACH busca_detalle INTO movi8[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
DISPLAY ARRAY movi8 TO s_movi1.*
|
|
ON ACTION imprime ATTRIBUTE(TEXT = "Re-imprimir", IMAGE = "fa-print")
|
|
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
START REPORT formu4 TO archivo
|
|
FOR idx = 1 TO movi8.getLength()
|
|
OUTPUT TO REPORT formu4(datos1.*, movi8[idx].*)
|
|
END FOR
|
|
FINISH REPORT formu4
|
|
RUN imprime
|
|
ON ACTION CANCEL
|
|
EXIT DISPLAY
|
|
AFTER DISPLAY
|
|
END DISPLAY
|
|
|
|
END FUNCTION
|
|
FUNCTION busca_maquina()
|
|
|
|
# LET formulario = fgl_getenv("FORMS") CLIPPED,"/codir/"
|
|
# LET formulario = formulario CLIPPED, "cofmwd002"
|
|
LET formulario = "irfmwd068"
|
|
OPEN WINDOW busqueda
|
|
AT 8, 8
|
|
WITH FORM "irfmwd068"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 2, COMMENT LINE LAST)
|
|
|
|
LET int_flag = FALSE
|
|
IF consulta = "S" THEN
|
|
CONSTRUCT criterio ON irtb00009.nombre FROM irtb00009.nombre
|
|
|
|
LET selec =
|
|
"SELECT codigo,nombre FROM irtb00009 ",
|
|
" WHERE ",
|
|
" status_t is null AND ",
|
|
criterio CLIPPED,
|
|
"ORDER BY 1 "
|
|
ELSE
|
|
{
|
|
LET selec = "SELECT a.codigo,a.nombre FROM irtb00009 a,irtb00008 b ",
|
|
" WHERE ",
|
|
" b.cod_n =7 AND ",
|
|
" b.cod_grupo = 0 AND ",
|
|
" b.cod_tipo = 0 AND ",
|
|
" b.cod_sec = 2 AND ",
|
|
" a.codigo = b.cod_maq ",
|
|
"ORDER BY 1 "
|
|
}
|
|
LET selec =
|
|
"SELECT a.codigo,a.nombre FROM irtb00009 a,irtb00008 b ",
|
|
" WHERE ",
|
|
" b.cod_n = '",
|
|
movi8[p_act].cod_n,
|
|
"' AND ",
|
|
" b.cod_grupo = '",
|
|
movi8[p_act].cod_grupo,
|
|
"' AND ",
|
|
" b.cod_tipo = '",
|
|
movi8[p_act].cod_tipo,
|
|
"' AND ",
|
|
" b.cod_sec = '",
|
|
movi8[p_act].cod_sec,
|
|
"' AND ",
|
|
" a.codigo = b.cod_maq ",
|
|
"ORDER BY 1 "
|
|
END IF
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO sale2
|
|
RETURN
|
|
END IF
|
|
|
|
PREPARE busca2 FROM selec
|
|
|
|
IF status >= 0 THEN
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE johnn2 CURSOR FOR busca2
|
|
LET idx = 1
|
|
|
|
FOREACH johnn2 INTO busca_wd2[idx].*
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO sale3
|
|
END IF
|
|
|
|
IF status = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
LET idx = idx + 1
|
|
LABEL sale3:
|
|
END FOREACH
|
|
|
|
CALL set_count(idx - 1)
|
|
DISPLAY ARRAY busca_wd2 TO s_desp1.*
|
|
LET curr1 = arr_curr()
|
|
LET dm_rep.maquina = busca_wd2[curr1].codigo
|
|
LET maquinaria.codigo = busca_wd2[curr1].codigo
|
|
LET maquinaria.nombre = busca_wd2[curr1].nombre
|
|
LABEL sale2:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
FUNCTION existencia(codn, codgrupo, codtipo, codsec)
|
|
DEFINE
|
|
codn, codgrupo, codtipo, codsec INT,
|
|
pexistencia DEC(12, 5)
|
|
# EXISTENCIA
|
|
LET pexistencia = 0
|
|
SELECT ISNULL(SUM(a.cantidad_2), 0)
|
|
INTO pexistencia
|
|
FROM irtb00006 a
|
|
WHERE a.cod_n = codn
|
|
AND a.cod_grupo = codgrupo
|
|
AND a.cod_tipo = codtipo
|
|
AND a.cod_sec = codsec
|
|
AND a.status_t IS NULL
|
|
RETURN pexistencia
|
|
END FUNCTION
|