Cristian Lucero il y a 5 ans
Parent
commit
586db979fe
2 fichiers modifiés avec 18 ajouts et 57 suppressions
  1. 1 52
      alter_table.sql
  2. 17 5
      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;

+ 17 - 5
sp_create_replace.sql

@@ -915,13 +915,25 @@ AS
 
    BEGIN
 
-    select DISTINCT(PARENT_ID),avg(nvl(avance,0)) into L_PARENT_ID, L_TOTAL_AVG
+     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 id = p_action_id and PARENT_ID is NOT null
+     where PARENT_ID = L_PARENT_ID
      group by PARENT_ID ;
 
-     UPDATE plan_accion set AVANCE_PROVEEDOR = L_TOTAL_AVG, UPDATED_BY=p_username
-     where id = L_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;
-;
+
+