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

134 lines
5.8 KiB
Plaintext

{
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