{ NOMBRE FUNCION: prprmt011c.4gl OBJETIVO : Administratar el flujo comentarios FECHA : 28/1/2016 DESARROLLADO : ING. JUAN SOTO } FUNCTION prprmt011c(xnum_oc,pcodn,pcodgrupo,pcodtipo,pcodsec,xusuario,xactualiza,xdepartamento) DEFINE xnum_oc,xdepartamento INT, idx,pcodn,pcodgrupo,pcodtipo,pcodsec SMALLINT, opt,xactualiza VARCHAR(3), arr_flujo DYNAMIC ARRAY OF RECORD actualiza CHAR(2), fecha_trx DATETIME YEAR TO MINUTE, departamento SMALLINT, nombre VARCHAR(60), comentario VARCHAR(100), fecha_compromiso DATE, id INT END RECORD, xusuario VARCHAR(50) DECLARE busca_flujo CURSOR FOR SELECT a.actualiza,a.fecha_trx,a.departamento,b.nom_dpto,a.comentario,CONVERT(CHAR(10),a.fecha_compromiso,103),a.id FROM prtb00033 a,adtb00001 b WHERE a.num_oc = xnum_oc AND a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND a.cod_sec = pcodsec AND a.departamento = b.departamento ORDER BY a.id LET idx = 1 FOREACH busca_flujo INTO arr_flujo[idx].* LET idx = idx + 1 END FOREACH OPEN WINDOW w1 WITH FORM "prfmmt011c" INPUT ARRAY arr_flujo FROM sflujo.* ATTRIBUTE(WITHOUT DEFAULTS) BEFORE INPUT FOR idx = 1 TO arr_flujo.getLength() IF arr_flujo[idx].actualiza = 'N' THEN DISPLAY arr_flujo[idx].* TO sflujo[scr_line()].* ATTRIBUTE(reverse) END IF END FOR AFTER FIELD departamento IF arr_flujo[arr_curr()].departamento IS NOT NULL THEN SELECT a.nom_dpto INTO arr_flujo[arr_curr()].nombre FROM adtb00001 a WHERE a.departamento = arr_flujo[arr_curr()].departamento IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD departamento END IF IF arr_flujo[arr_curr()].fecha_compromiso IS NULL THEN LET arr_flujo[arr_curr()].fecha_compromiso =TODAY DISPLAY arr_flujo[arr_curr()].fecha_compromiso TO sflujo[scr_line()].fecha_compromiso END IF DISPLAY arr_flujo[arr_curr()].nombre TO sflujo[scr_line()].nombre END IF AFTER INPUT IF INT_FLAG THEN EXIT INPUT END IF IF xactualiza = "SI" THEN LET opt = fgl_winquestion("Atencion","Desea Actualizar estos registros?","NO","NO|YES","QUESTION",0) IF opt = "YES" THEN BEGIN WORK FOR idx = 1 TO arr_flujo.getLength() IF arr_flujo[idx].departamento IS NOT NULL THEN IF arr_flujo[idx].actualiza IS NULL THEN INSERT INTO prtb00033 (fecha_trx,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec,comentario,departamento,actualiza, id,fecha_compromiso,usuario) VALUES (GETDATE(),xnum_oc,pcodn,pcodgrupo,pcodtipo,pcodsec, arr_flujo[idx].comentario,arr_flujo[idx].departamento,'N',idx,arr_flujo[idx].fecha_compromiso, xusuario) IF STATUS < 0 THEN ROLLBACK WORK CALL fgl_winmessage("ERROR","OCURRIO UN ERROR AL ACTUALIZAR EL LOG","INFO") EXIT FOR END IF IF arr_flujo[idx].fecha_compromiso IS NOT NULL THEN UPDATE prtb00012 SET fecha_entrega = arr_flujo[idx].fecha_compromiso, us_mod = xusuario, fech_mod = getdate() WHERE num_oc = xnum_oc IF STATUS < 0 THEN ROLLBACK WORK CALL fgl_winmessage("ERROR","OCURRIO UN ERROR AL ACTUALIZAR MAESTRA ORDENES","INFO") EXIT FOR END IF UPDATE prtb00013 SET departamento = arr_flujo[idx].departamento, us_mod = xusuario, fech_mod = getdate() WHERE num_oc = xnum_oc AND cod_n = pcodn AND cod_grupo = pcodgrupo AND cod_tipo = pcodtipo AND cod_sec = pcodsec IF STATUS < 0 THEN ROLLBACK WORK CALL fgl_winmessage("ERROR","OCURRIO UN ERROR AL ACTUALIZAR DETALLE ORDENES","INFO") EXIT FOR END IF END IF INSERT INTO prordenstatus(fecha_trx,num_oc,observacion,fecha_compromiso,usuario) VALUES (GETDATE(),xnum_oc,arr_flujo[idx].comentario,arr_flujo[idx].fecha_compromiso,xusuario) END IF END IF END FOR COMMIT WORK CALL fgl_winmessage("Atencion","Registro(s) Actualizado(s)","info") ELSE CALL fgl_winmessage("Atencion","Registro(s) NO Actualizado(s)","info") END IF END IF END INPUT IF INT_FLAG THEN LET INT_FLAG = FALSE CLOSE WINDOW w1 RETURN END IF CLOSE WINDOW w1 END FUNCTION