{ 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