128 lines
4.8 KiB
Plaintext
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
|