Cristian Lucero 5 rokov pred
rodič
commit
931f3a8dfc
2 zmenil súbory, kde vykonal 66 pridanie a 2 odobranie
  1. 14 1
      alter_table.sql
  2. 52 1
      sp_create_replace.sql

+ 14 - 1
alter_table.sql

@@ -4,4 +4,17 @@ ALTER TABLE PLAN_ACCION_DET ADD PARENT_ID number(*) NULL;
 
 ALTER TABLE PLAN_ACCION_DET ADD RESPONSABLE_ID number(*) NULL;
 
-ALTER TABLE PROVEEDORES ADD TARGET number(*) NULL;
+ALTER TABLE PROVEEDORES ADD TARGET number(*) NULL;
+
+
+ALTER TABLE SCORECARD_PROVIDER ADD CREATED_BY VARCHAR2(25) NULL;
+ALTER TABLE SCORECARD_PROVIDER ADD UPDATED_BY VARCHAR2(25) NULL;
+
+ALTER TABLE SCORECARD_PROVIDER_COMMENTS ADD UPDATED_BY VARCHAR2(50) NULL;
+
+
+cREATE SEQUENCE score_provider_comments_seq
+  MINVALUE 1
+  MAXVALUE 9999999999
+  START WITH 4
+  INCREMENT BY 1;

+ 52 - 1
sp_create_replace.sql

@@ -803,4 +803,55 @@ CREATE OR REPLACE PROCEDURE P_AVG_PROGRESS_ACTION_PLAN(
 
 ;
 
- 
+
+CREATE OR REPLACE PROCEDURE P_AVG_SCORECARD_PROVIDER(
+    p_scorecard_provider_id in integer,
+    p_username in varchar2)
+   as
+
+     cursor cur_avg_area (p_scorecard_provider_id in integer)
+          is
+        select avg(SCORE_CATEGORY), ID_AREA
+          from SCORECARD_PROVIDER_MONTH m
+        where m.SCORECARD_PROVIDER_ID = p_scorecard_provider_id
+        group by ID_AREA;
+
+    cursor cur_tot_avg (p_scorecard_provider_id in integer)
+          is
+        select avg(SCORE_CATEGORY)
+          from SCORECARD_PROVIDER_MONTH m
+        where m.SCORECARD_PROVIDER_ID = p_scorecard_provider_id
+        ;
+
+    L_TOTAL_AVG  NUMBER(5, 2);
+    L_TOTAL_AREA_AVG NUMBER(5,2);
+    L_AREA_ID number(5,2);
+
+    BEGIN
+      OPEN cur_tot_avg(p_scorecard_provider_id);
+       FETCH cur_tot_avg INTO L_TOTAL_AVG;
+      CLOSE cur_tot_avg;
+
+      UPDATE SCORECARD_PROVIDER SET TOTAL_AVG = L_TOTAL_AVG,LAST_SCORE=L_TOTAL_AVG,
+                                    UPDATED_DATE=current_date,UPDATED_BY=p_username
+        where ID = p_scorecard_provider_id;
+
+
+      OPEN cur_avg_area (p_scorecard_provider_id);
+      LOOP
+      FETCH cur_avg_area INTO L_TOTAL_AREA_AVG,L_AREA_ID;
+
+        EXIT WHEN cur_avg_area%NOTFOUND OR cur_avg_area%NOTFOUND IS NULL;
+
+         update SOCRECARDNEW.SCORECARD_PROVIDER_MONTH
+           set score = L_TOTAL_AREA_AVG,UPDATED_DATE=CURRENT_DATE
+          where SCORECARD_PROVIDER_ID = p_scorecard_provider_id
+            and ID_AREA = L_AREA_ID;
+
+      END LOOP ;
+      CLOSE cur_avg_area;
+
+
+
+   end;
+;