2 次代码提交 1df2f0f84a ... 586db979fe

作者 SHA1 备注 提交日期
  Cristian Lucero 586db979fe var 5 年之前
  Cristian Lucero 416c10cdda var 5 年之前
共有 2 个文件被更改,包括 36 次插入53 次删除
  1. 1 52
      alter_table.sql
  2. 35 1
      sp_create_replace.sql

+ 1 - 52
alter_table.sql

@@ -56,56 +56,4 @@ ALTER TABLE EVALUACION_PROVEEDOR ADD SCORECARD_ID int NULL;
 
 
 
-
-CREATE OR REPLACE TRIGGER TRG_ACTION_PLAN_AVG
-AFTER INSERT OR UPDATE OR DELETE ON PLAN_ACCION_DET
-FOR EACH ROW
-DECLARE
-
-    L_PLAN_ACCION_ID NUMBER(15);
-    L_PLAN_PARENT_ID NUMBER(15);
-    L_PLAN_ID NUMBER(15);
-    L_PLAN_ACCION_DET_AVG NUMBER(15,2);
-    L_PLAN_ACCION_AVG NUMBER(15,2);
-    L_STATUS_PLAN varchar2(100);
-
-  cursor cur_avg_det is
-     select avg(AVANCE),PARENT_ID  from PLAN_ACCION_DET d where d.id=:NEW.id
-      and PARENT_ID is not null
-  group by PARENT_ID ;
-
-  cursor cur_avg_plan is
-     select avg(AVANCE),PLAN_ACCION_ID  from PLAN_ACCION_DET d where d.id=:NEW.id
-      and PARENT_ID is null
-    group by PLAN_ACCION_ID ;
-
-BEGIN
-
-
-      OPEN cur_avg_det;
-       FETCH cur_avg_det INTO L_PLAN_ACCION_DET_AVG,L_PLAN_PARENT_ID;
-      CLOSE cur_avg_det;
-
-
-
-      UPDATE PLAN_ACCION_DET SET AVANCE = L_PLAN_ACCION_DET_AVG
-       WHERE ID =L_PLAN_PARENT_ID;
-
-
-      OPEN cur_avg_plan;
-       FETCH cur_avg_plan INTO L_PLAN_ACCION_AVG,L_PLAN_ID;
-      CLOSE cur_avg_plan;
-
-      UPDATE PLAN_ACCION SET AVANCE_PROVEEDOR = L_PLAN_ACCION_AVG
-        where ID = L_PLAN_ID;
-
-      IF L_PLAN_ACCION_AVG = 100 THEN
-        UPDATE PLAN_ACCION SET ESTADO = 'FINALIZADO'
-        where ID = L_PLAN_ID;
-      ELSE
-        UPDATE PLAN_ACCION SET ESTADO = 'EN PROGRESO'
-        where ID = L_PLAN_ID;
-      end if;
-
-END;
+-- DROP TRIGGER TRG_ACTION_PLAN_AVG;

+ 35 - 1
sp_create_replace.sql

@@ -902,4 +902,38 @@ DECLARE
      where id = L_PARENT_ID;
 
 end;
-;
+;
+
+
+CREATE OR REPLACE PROCEDURE P_PROCESS_AVG_ACTION_PLAN(
+            p_action_id in integer,
+            p_username in varchar2)
+AS
+
+    L_TOTAL_AVG  NUMBER(5, 2);
+    L_PARENT_ID NUMBER;
+
+   BEGIN
+
+     select PARENT_ID into L_PARENT_ID
+     from PLAN_ACCION_DET where id = p_action_id;
+
+    select avg(nvl(avance,0)) into L_TOTAL_AVG
+        from PLAN_ACCION_DET
+     where PARENT_ID = L_PARENT_ID
+     group by PARENT_ID ;
+
+     UPDATE PLAN_ACCION_DET set AVANCE = L_TOTAL_AVG, UPDATED_BY=p_username
+     where PLAN_ACCION_ID = p_action_id and PARENT_ID is NOT null;
+
+     select PLAN_ACCION_ID,avg(nvl(avance,0)) into L_PARENT_ID, L_TOTAL_AVG
+        from PLAN_ACCION_DET
+     where id = p_action_id and PARENT_ID is not null
+     group by PLAN_ACCION_ID ;
+
+     UPDATE PLAN_ACCION SET AVANCE_PROVEEDOR= L_TOTAL_AVG,AVANCE_CM= L_TOTAL_AVG
+        where ID = L_PARENT_ID;
+
+end;
+
+