207 lines
4.1 KiB
Plaintext
207 lines
4.1 KiB
Plaintext
{
|
|
PROGRAMA : prprmt024
|
|
OBJETIVO : Flujo de Produccion
|
|
PROGRAMADOR : ING. ELVIS GARCÍA
|
|
FECHA : N/A
|
|
}
|
|
|
|
IMPORT util
|
|
IMPORT FGL fgldialog
|
|
|
|
SCHEMA smarmotech
|
|
|
|
DEFINE usuarios, clave STRING
|
|
DEFINE pcompanias RECORD LIKE companias.*
|
|
|
|
DEFINE info RECORD
|
|
numero_fp INT,
|
|
num_op INT,
|
|
fecha_compromiso DATE,
|
|
depto STRING
|
|
END RECORD
|
|
|
|
DEFINE detalle_produccion DYNAMIC ARRAY OF RECORD
|
|
cod_n INT,
|
|
cod_grupo INT,
|
|
cod_tipo INT,
|
|
cod_sec INT,
|
|
cantidad DECIMAL(12,2),
|
|
depto2 STRING
|
|
END RECORD
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT TO "smarmotech" USER usuarios USING clave
|
|
SELECT * INTO pcompanias.* FROM companias
|
|
|
|
CALL prprmt023()
|
|
END MAIN
|
|
|
|
FUNCTION prprmt023()
|
|
|
|
OPEN WINDOW w1 WITH FORM "prfmmt024"
|
|
CALL fgl_settitle("Flujo orden de produccion")
|
|
|
|
MENU "OPCIONES"
|
|
COMMAND "Adicionar"
|
|
CLEAR FORM
|
|
CALL add_flow()
|
|
COMMAND "Consultar"
|
|
CLEAR FORM
|
|
CALL consult_flow()
|
|
COMMAND "Salir"
|
|
EXIT MENU
|
|
END MENU
|
|
|
|
CLOSE WINDOW w1
|
|
|
|
END FUNCTION
|
|
|
|
|
|
---------Agregar flujo a la orden de produccion-----------
|
|
FUNCTION add_flow()
|
|
|
|
INPUT BY NAME info.num_op, info.depto, info.fecha_compromiso
|
|
ATTRIBUTES(UNBUFFERED, WITHOUT DEFAULTS)
|
|
|
|
BEFORE INPUT
|
|
CALL departamentos(1)
|
|
|
|
AFTER FIELD num_op
|
|
SELECT * FROM prtb00038 WHERE orden_produccion = info.num_op
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
NEXT FIELD num_op
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
|
|
IF info.depto IS NULL THEN
|
|
NEXT FIELD info_depto
|
|
END IF
|
|
|
|
IF info.fecha_compromiso IS NULL THEN
|
|
NEXT FIELD fecha_compromiso
|
|
END IF
|
|
|
|
CALL flow_detalle()
|
|
|
|
END INPUT
|
|
|
|
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION flow_detalle()
|
|
|
|
DEFINE detalle_mirror DYNAMIC ARRAY OF RECORD
|
|
cod_n INT,
|
|
cod_grupo INT,
|
|
cod_tipo INT,
|
|
cod_sec INT,
|
|
cantidad DECIMAL(12,2),
|
|
depto2 STRING
|
|
END RECORD
|
|
|
|
DEFINE idx INT
|
|
|
|
INPUT ARRAY detalle_produccion FROM record2.*
|
|
BEFORE INPUT
|
|
CALL search_data()
|
|
CALL departamentos(2)
|
|
|
|
AFTER INPUT
|
|
|
|
{EN ESTA PARTE HACER UN CONTROL SOBRE LA CANTIDAD DE LOS ITEMS}
|
|
|
|
CALL save_data()
|
|
|
|
|
|
|
|
|
|
|
|
END INPUT
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION search_data()
|
|
DEFINE idx INT
|
|
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT cod_n, cod_grupo, cod_tipo, cod_sec, cantidad,0
|
|
FROM prtb00039
|
|
WHERE orden_produccion = info.num_op
|
|
|
|
LET idx = 1
|
|
|
|
FOREACH buscar INTO detalle_produccion[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION save_data()
|
|
|
|
DEFINE idx INT
|
|
DEFINE flags RECORD
|
|
op INT,
|
|
fp INT
|
|
END RECORD
|
|
|
|
FOR idx = 1 TO detalle_produccion.getLength()
|
|
|
|
IF detalle_produccion[idx].cod_n IS NOT NULL THEN
|
|
|
|
SELECT num_op, secuencia_fp INTO flags.op, flags.fp
|
|
FROM prtb00042 WHERE num_op = info.num_op
|
|
|
|
|
|
|
|
|
|
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
|
|
END FUNCTION
|
|
|
|
|
|
---------Consultar flujo de la orden de produccion-------------
|
|
FUNCTION consult_flow()
|
|
|
|
END FUNCTION
|
|
|
|
|
|
|
|
|
|
FUNCTION departamentos(caso INT )
|
|
DEFINE pdepartamento SMALLINT,pdescripcion CHAR(30),
|
|
kdepto ui.ComboBox
|
|
|
|
IF caso = 1 THEN
|
|
LET kdepto = ui.ComboBox.forName("formonly.depto")
|
|
ELSE
|
|
LET kdepto = ui.ComboBox.forName("formonly.depto2")
|
|
END IF
|
|
|
|
CALL kdepto.clear()
|
|
|
|
DECLARE busca_dpto CURSOR FOR
|
|
SELECT a.departamento,a.nom_dpto FROM adtb00001 a
|
|
WHERE a.status_t IS NULL
|
|
ORDER BY a.nom_dpto
|
|
|
|
FOREACH busca_dpto INTO pdepartamento,pdescripcion
|
|
CALL kdepto.additem(pdepartamento,pdescripcion)
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|