Files
MBS/PROYECTO/PRDIR/orden_produccion.4gl
T

128 lines
4.8 KiB
Plaintext

DEFINE arr_operaciones DYNAMIC ARRAY OF RECORD
orden_etapa SMALLINT,
id_etapa INT,
nombre_etapa VARCHAR(50),
id_maquina INT,
nombre_maquina VARCHAR(50),
operario INT,
nombre_operario VARCHAR(50),
fecha_inicio DATE,
fecha_fin DATE,
estado VARCHAR(50)
END RECORD
FUNCTION crear_orden_produccion(p_orden_pedido , p_cod_n, p_cod_grupo, p_cod_tipo , p_cod_sec )
DEFINE p_orden_pedido, p_cod_n, p_cod_grupo, p_cod_tipo, p_cod_sec INT
DEFINE v_id_produccion INT,
mensajes STRING
-- Verifica si esta orden de pedidos ya tiene una orden de produccion
SELECT DISTINCT a.num_oc FROM prtb00007 a
WHERE a.num_oc = p_orden_pedido AND
a.cod_n = v_cod_n AND
a.cod_grupo = v_cod_grupo AND
a.cod_tipo = v_cod_tipo AND
a.cod_Sec = v_cod_sec
IF STATUS <> NOTFOUND THEN
LET mensajes = 'ORDEN YA TIENE ORDEN DE PRODUCCION'
RETURN FALSE, mensajes
END IF
SELECT NEXT VALUE for seq_prtb00007 INTO v_id_produccion
INSERT INTO prtb00007 (
id_produccion, fecha, tipo_cliente, sec_cliente,
sec_vend, orden_pedido, cod_n, cod_grupo,
cod_tipo, cod_sec, cantidad, us_crea, fech_crea
) VALUES (
v_id_produccion, CURRENT,
1, 1, NULL, p_orden_pedido, p_cod_n, p_cod_grupo,
p_cod_tipo, p_cod_sec, 0, USER, CURRENT
)
CALL cargar_etapas_para_planificar(v_id_produccion, p_cod_n, p_cod_grupo, p_cod_tipo, p_cod_sec)
OPEN FORM f_planificar FROM "planificar_operaciones.per"
INPUT ARRAY arr_operaciones WITHOUT DEFAULTS ATTRIBUTES(UNBUFFERED)
ON CHANGE operario
CALL cargar_nombre_operario(CURRENT operario, CURRENT nombre_operario)
ON CHANGE id_maquina
CALL cargar_nombre_maquina(CURRENT id_maquina, CURRENT nombre_maquina)
ON CHANGE id_etapa
CALL cargar_nombre_etapa(CURRENT id_etapa, CURRENT nombre_etapa)
END INPUT
CALL guardar_operaciones(v_id_produccion, p_cod_n, p_cod_grupo, p_cod_tipo, p_cod_sec)
END FUNCTION
FUNCTION cargar_etapas_para_planificar(p_id_produccion INT, p_cod_n INT, p_cod_grupo INT, p_cod_tipo INT, p_cod_sec INT)
DEFINE p_id_produccion, p_cod_n, p_cod_grupo, p_cod_tipo, p_cod_sec INT
DEFINE i INT
DECLARE c_hist CURSOR FOR
SELECT etapa, codigo, num_emp, estado, orden_etapa
FROM prtb00008
WHERE cod_n = p_cod_n AND cod_grupo = p_cod_grupo
AND cod_tipo = p_cod_tipo AND cod_sec = p_cod_sec
ORDER BY orden_etapa
LET i = 1
CALL arr_operaciones.clear()
FOREACH c_hist INTO arr_operaciones[i].id_etapa,
arr_operaciones[i].id_maquina,
arr_operaciones[i].operario,
arr_operaciones[i].estado,
arr_operaciones[i].orden_etapa
CALL cargar_nombre_etapa(arr_operaciones[i].id_etapa, arr_operaciones[i].nombre_etapa)
CALL cargar_nombre_maquina(arr_operaciones[i].id_maquina, arr_operaciones[i].nombre_maquina)
CALL cargar_nombre_operario(arr_operaciones[i].operario, arr_operaciones[i].nombre_operario)
LET i = i + 1
END FOREACH
END FUNCTION
FUNCTION guardar_operaciones(p_id_produccion INT, p_cod_n INT, p_cod_grupo INT, p_cod_tipo INT, p_cod_sec INT)
DEFINE p_id_produccion, p_cod_n, p_cod_grupo, p_cod_tipo, p_cod_sec INT
DEFINE i INT
FOR i = 1 TO arr_operaciones.getLength()
INSERT INTO prtb00008 (
id_produccion, etapa, codigo, num_emp, estado,
fecha_inicio, fecha_fin, orden_etapa,
us_crea, fech_crea, cod_n, cod_grupo, cod_tipo, cod_sec
) VALUES (
p_id_produccion, arr_operaciones[i].id_etapa,
arr_operaciones[i].id_maquina,
arr_operaciones[i].operario,
arr_operaciones[i].estado,
arr_operaciones[i].fecha_inicio,
arr_operaciones[i].fecha_fin,
arr_operaciones[i].orden_etapa,
USER, CURRENT,
p_cod_n, p_cod_grupo, p_cod_tipo, p_cod_sec
)
END FOR
END FUNCTION
FUNCTION cargar_nombre_etapa(p_id INT, p_nombre OUT VARCHAR(50))
DEFINE p_id INT
DEFINE p_nombre VARCHAR(50)
SELECT titulo INTO p_nombre FROM prtb00036 WHERE id_etapa = p_id
END FUNCTION
FUNCTION cargar_nombre_maquina(p_id INT, p_nombre OUT VARCHAR(50))
DEFINE p_id INT
DEFINE p_nombre VARCHAR(50)
SELECT nombre INTO p_nombre FROM irtb00009 WHERE id_codigo = p_id
END FUNCTION
FUNCTION cargar_nombre_operario(p_id INT, p_nombre OUT VARCHAR(50))
DEFINE p_id INT
DEFINE p_nombre VARCHAR(50)
SELECT nom1_emp || ' ' || apell1_emp INTO p_nombre FROM adtb00003 WHERE num_emp = p_id
END FUNCTION