sp_create_replace.sql 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806
  1. CREATE OR REPLACE PROCEDURE dashboard_generateScoreYear(pid_evaluacion IN NUMBER,
  2. result_code OUT NUMBER)
  3. AS
  4. paa_id INT := 0;
  5. CURSOR c1 IS
  6. SELECT e.id AS id_evaluacion,
  7. e.meta AS meta_evaluacion,
  8. e.CALIFICACION,
  9. e.CALIFICACION_ANTERIOR,
  10. a.id AS id_area,
  11. a.nombre AS nombre_area,
  12. a.meta meta_area,
  13. a.kpi_id,
  14. k.NOMBRE AS nombre_kpi,
  15. c.id AS id_categoria,
  16. c.nombre AS nombre_categoria
  17. FROM EVALUACION e
  18. JOIN areas a ON e.AREAS_ID = a.ID
  19. JOIN kpi k ON a.KPI_ID = k.id
  20. LEFT JOIN categorias c ON a.id = c.AREAS_ID;
  21. BEGIN
  22. result_code := 0;
  23. FOR custom IN c1
  24. LOOP
  25. FOR i IN 1..11
  26. LOOP
  27. INSERT INTO EVALUACION_DET (ID,
  28. COMENTARIO,
  29. CM_USER_UPDATE,
  30. VISIBLE_PROVEEDOR,
  31. CALIFICACION_ANTERIOR,
  32. CALIFICACION_ACTUAL,
  33. CALIFICACION_GLOBAL,
  34. MES,
  35. CREATED_BY,
  36. UPDATED_BY,
  37. CREATED_DATE,
  38. UPDATED_DATE,
  39. EVALUACION_ID,
  40. CATEGORIAS_ID)
  41. VALUES (EV_DETAIL_SEQ.nextval,
  42. 'inicial',
  43. 'admin',
  44. 's',
  45. 4.00,
  46. 5.00,
  47. 6.00,
  48. TO_DATE('2019-' || i || '-25 19:00:00', 'YYYY-MM-DD HH24:MI:SS'),
  49. 'admin',
  50. 'admin',
  51. current_date,
  52. current_date,
  53. custom.id_evaluacion,
  54. custom.id_categoria);
  55. END LOOP;
  56. END LOOP;
  57. result_code := 0;
  58. -- COMMIT;
  59. EXCEPTION WHEN OTHERS
  60. THEN
  61. result_code := -1;
  62. ROLLBACK;
  63. RAISE;
  64. END;
  65. ;
  66. CREATE OR REPLACE PROCEDURE dash_global_by_kpi(pid_kpi IN NUMBER,
  67. result_code OUT NUMBER)
  68. AS
  69. paa_id INT := 0;
  70. BEGIN
  71. result_code := 0;
  72. MERGE INTO evaluacion_det orig
  73. USING (SELECT k.id AS kpi_id,
  74. k.nombre kpi_nombre,
  75. e.id eval_id,
  76. e.CALIFICACION,
  77. e.global,
  78. e.AREAS_ID,
  79. a.nombre area_nombre,
  80. a.meta,
  81. c.ID AS categorias_id,
  82. c.nombre cat_nombre,
  83. c.META_MENSUAL,
  84. (ed.CALIFICACION_ACTUAL / c.META_MENSUAL) global_categoria,
  85. ed.ID detail_id,
  86. to_number(EXTRACT(MONTH FROM ed.mes), 99) mes_number,
  87. ed.CALIFICACION_ANTERIOR,
  88. ed.CALIFICACION_ACTUAL,
  89. ed.CALIFICACION_GLOBAL,
  90. ed.mes fecha
  91. FROM EVALUACION_DET ed
  92. JOIN EVALUACION e ON ed.EVALUACION_ID = e.id
  93. JOIN areas a ON e.AREAS_ID = a.id
  94. JOIN categorias c ON ed.CATEGORIAS_ID = c.id
  95. JOIN kpi k ON a.KPI_ID = k.id
  96. AND k.id = pid_kpi) detail
  97. ON (orig.id = detail.detail_id)
  98. WHEN MATCHED THEN UPDATE SET orig.CALIFICACION_GLOBAL = detail.global_categoria;
  99. COMMIT;
  100. EXCEPTION WHEN OTHERS
  101. THEN
  102. result_code := -1;
  103. ROLLBACK;
  104. RAISE;
  105. END;
  106. ;
  107. CREATE OR REPLACE PROCEDURE dash_global_by_kpi_month(pid_kpi IN NUMBER,
  108. pmes IN NUMBER,
  109. result_code OUT NUMBER)
  110. AS
  111. BEGIN
  112. result_code := 0;
  113. MERGE INTO evaluacion_det orig
  114. USING (SELECT k.id AS kpi_id,
  115. k.nombre kpi_nombre,
  116. e.id eval_id,
  117. e.CALIFICACION,
  118. e.global,
  119. e.AREAS_ID,
  120. a.nombre area_nombre,
  121. a.meta,
  122. c.ID AS categorias_id,
  123. c.nombre cat_nombre,
  124. c.META_MENSUAL,
  125. (ed.CALIFICACION_ACTUAL / c.META_MENSUAL) global_categoria,
  126. ed.ID detail_id,
  127. to_number(EXTRACT(MONTH FROM ed.mes), 99) mes_number,
  128. ed.CALIFICACION_ANTERIOR,
  129. ed.CALIFICACION_ACTUAL,
  130. ed.CALIFICACION_GLOBAL,
  131. ed.mes fecha
  132. FROM EVALUACION_DET ed
  133. JOIN EVALUACION e ON ed.EVALUACION_ID = e.id
  134. JOIN areas a ON e.AREAS_ID = a.id
  135. JOIN categorias c ON ed.CATEGORIAS_ID = c.id
  136. JOIN kpi k ON a.KPI_ID = k.id AND k.id = pid_kpi
  137. WHERE to_number(EXTRACT(MONTH FROM ed.mes), 99) = pmes) detail
  138. ON (orig.id = detail.detail_id)
  139. WHEN MATCHED THEN UPDATE SET orig.CALIFICACION_GLOBAL = detail.global_categoria;
  140. COMMIT;
  141. EXCEPTION
  142. WHEN OTHERS
  143. THEN
  144. result_code := -1;
  145. ROLLBACK;
  146. RAISE;
  147. END;
  148. ;
  149. CREATE OR REPLACE PROCEDURE d_eval_global_month(pid_kpi IN NUMBER, pmes IN NUMBER,
  150. result_code OUT NUMBER)
  151. AS
  152. paa_id INT := 0;
  153. BEGIN
  154. result_code := 0;
  155. MERGE INTO evaluacion orig
  156. USING (SELECT k.id id_kpi, e.id id_eval, a.id, avg(ed.CALIFICACION_GLOBAL) AS average
  157. FROM EVALUACION_DET ed
  158. JOIN EVALUACION e ON ed.EVALUACION_ID = e.id
  159. JOIN areas a ON e.AREAS_ID = a.id
  160. JOIN categorias c ON ed.CATEGORIAS_ID = c.id
  161. JOIN kpi k ON a.KPI_ID = k.id
  162. AND k.id = pid_kpi
  163. WHERE to_number(EXTRACT(MONTH FROM ed.mes), 99) = pmes
  164. GROUP BY k.id, e.id, a.id, to_number(EXTRACT(MONTH FROM ed.mes), 99)) detail
  165. ON (orig.id = detail.id_eval)
  166. WHEN MATCHED THEN UPDATE SET orig.GLOBAL = detail.average;
  167. COMMIT;
  168. EXCEPTION WHEN OTHERS
  169. THEN
  170. result_code := -1;
  171. ROLLBACK;
  172. RAISE;
  173. END;
  174. ;
  175. CREATE OR REPLACE PROCEDURE get_detail_month(pkpi_id IN NUMBER, pmes IN NUMBER, p_cursor IN OUT SYS_REFCURSOR)
  176. AS
  177. BEGIN
  178. OPEN p_cursor FOR
  179. SELECT k.id AS kpi_id,
  180. k.nombre kpi_nombre,
  181. e.id eval_id,
  182. e.global global_actual,
  183. e.AREAS_ID,
  184. a.nombre area_nombre,
  185. c.ID AS categorias_id,
  186. c.nombre cat_nombre,
  187. c.META_MENSUAL,
  188. (ed.CALIFICACION_ACTUAL / c.META_MENSUAL) global_categoria,
  189. ed.ID detail_id,
  190. to_number(EXTRACT(MONTH FROM ed.mes), 99) mes_number,
  191. ed.CALIFICACION_ACTUAL,
  192. ed.CALIFICACION_GLOBAL
  193. FROM EVALUACION_DET ed
  194. JOIN EVALUACION e ON ed.EVALUACION_ID = e.id
  195. JOIN areas a ON e.AREAS_ID = a.id
  196. JOIN categorias c ON ed.CATEGORIAS_ID = c.id
  197. JOIN kpi k ON a.KPI_ID = k.id AND k.id = pkpi_id
  198. WHERE to_number(EXTRACT(MONTH FROM ed.mes), 99) = pmes
  199. ORDER BY k.id, e.id, a.id, c.id, to_number(EXTRACT(MONTH FROM ed.mes), 99);
  200. END;
  201. ;
  202. CREATE OR REPLACE PROCEDURE get_detail_global(pkpi_id IN NUMBER, p_cursor IN OUT SYS_REFCURSOR)
  203. AS
  204. BEGIN
  205. OPEN p_cursor FOR
  206. SELECT k.id AS kpi_id,
  207. k.nombre kpi_nombre,
  208. e.id eval_id,
  209. e.global global_actual,
  210. e.AREAS_ID,
  211. a.nombre area_nombre,
  212. c.ID AS categorias_id,
  213. c.nombre cat_nombre,
  214. c.META_MENSUAL,
  215. (ed.CALIFICACION_ACTUAL / c.META_MENSUAL) global_categoria,
  216. ed.ID detail_id,
  217. to_number(EXTRACT(MONTH FROM ed.mes), 99) mes_number,
  218. ed.CALIFICACION_ACTUAL,
  219. ed.CALIFICACION_GLOBAL
  220. FROM EVALUACION_DET ed
  221. JOIN EVALUACION e ON ed.EVALUACION_ID = e.id
  222. JOIN areas a ON e.AREAS_ID = a.id
  223. JOIN categorias c ON ed.CATEGORIAS_ID = c.id
  224. JOIN kpi k ON a.KPI_ID = k.id AND k.id = pkpi_id
  225. ORDER BY k.id, e.id, a.id, c.id, to_number(EXTRACT(MONTH FROM ed.mes), 99);
  226. END;
  227. ;
  228. CREATE OR REPLACE PROCEDURE get_detail_global_month(pkpi_id IN NUMBER, p_cursor IN OUT SYS_REFCURSOR)
  229. AS
  230. BEGIN
  231. OPEN p_cursor FOR
  232. SELECT kpi_id, mes, avg(promedio_area) AS promedio
  233. FROM (SELECT k.id AS kpi_id,
  234. e.id eval_id,
  235. a.id areas_id,
  236. to_number(EXTRACT(MONTH FROM ed.mes), 99) mes,
  237. avg(ed.CALIFICACION_GLOBAL) promedio_area
  238. FROM EVALUACION_DET ed
  239. JOIN EVALUACION e ON ed.EVALUACION_ID = e.id
  240. JOIN areas a ON e.AREAS_ID = a.id
  241. JOIN categorias c ON ed.CATEGORIAS_ID = c.id
  242. JOIN kpi k ON a.KPI_ID = k.id AND k.id = pkpi_id
  243. GROUP BY k.id, e.id, a.id, to_number(EXTRACT(MONTH FROM ed.mes), 99))
  244. GROUP BY kpi_id, mes
  245. ORDER BY kpi_id, mes;
  246. END;
  247. ;
  248. CREATE OR REPLACE PROCEDURE pc_create_up_scorecard(p_provider_id IN INTEGER,
  249. p_year IN INTEGER,
  250. p_month IN INTEGER)
  251. IS
  252. CURSOR cur_score_cate (p_provider_id IN scorecard_PROVIDER.PROVEEDORES_ID%TYPE,
  253. p_month IN SCORECARD_PROVIDER_MONTH.MONTH%TYPE,
  254. p_year IN scorecard_PROVIDER.YEAR%TYPE) is
  255. SELECT to_number(EXTRACT(MONTH FROM ed.mes), 99) mes,
  256. to_number(EXTRACT(YEAR FROM ed.mes), 9999) YEAR,
  257. p.NOMBRE,a.NOMBRE,c.NOMBRE,
  258. p.id,
  259. a.ID,c.id,
  260. avg(ed.CALIFICACION_ACTUAL) promedio_area
  261. FROM EVALUACION_DET ed
  262. JOIN EVALUACION e ON ed.EVALUACION_ID = e.id
  263. JOIN areas a ON e.AREAS_ID = a.id
  264. JOIN categorias c ON ed.CATEGORIAS_ID = c.id
  265. JOIN kpi k ON a.KPI_ID = k.id
  266. JOIN PROVEEDORES P on e.PROVEEDORES_ID = P.ID
  267. WHERE p.id = p_provider_id
  268. AND to_number(EXTRACT(MONTH FROM ed.mes), 99) = p_month
  269. AND to_number(EXTRACT(year FROM ed.mes), 9999) = p_year
  270. GROUP BY to_number(EXTRACT(MONTH FROM ed.mes), 99),
  271. to_number(EXTRACT(YEAR FROM ed.mes), 9999),
  272. p.NOMBRE,a.NOMBRE,c.NOMBRE,
  273. p.id,
  274. a.ID,c.id
  275. order by mes;
  276. CURSOR cur_score_area (
  277. p_provider_id scorecard_PROVIDER.PROVEEDORES_ID%TYPE,
  278. p_month SCORECARD_PROVIDER_MONTH.MONTH%TYPE,
  279. p_year scorecard_PROVIDER.YEAR%TYPE,
  280. p_area_id IN scorecard_PROVIDER.YEAR%TYPE) is
  281. SELECT avg(ed.CALIFICACION_ACTUAL)
  282. FROM EVALUACION_DET ed
  283. JOIN EVALUACION e ON ed.EVALUACION_ID = e.id
  284. JOIN areas a ON e.AREAS_ID = a.id
  285. JOIN categorias c ON ed.CATEGORIAS_ID = c.id
  286. JOIN PROVEEDORES P on e.PROVEEDORES_ID = P.ID
  287. WHERE p.id = p_provider_id
  288. AND to_number(EXTRACT(MONTH FROM ed.mes), 99) = p_month
  289. AND to_number(EXTRACT(year FROM ed.mes), 9999) = p_year
  290. and a.id = p_area_id;
  291. CURSOR cur_score_global (p_provider_id scorecard_PROVIDER.PROVEEDORES_ID%TYPE,
  292. p_month SCORECARD_PROVIDER_MONTH.MONTH%TYPE,
  293. p_year scorecard_PROVIDER.YEAR%TYPE) is
  294. select avg(promedio_categoria),NOMBRE
  295. from (SELECT e.id eval_id,
  296. c.id categoria_id,
  297. to_number(EXTRACT(MONTH FROM ed.mes), 99) mes,
  298. to_number(EXTRACT(YEAR FROM ed.mes), 9999) YEAR,
  299. p.NOMBRE,
  300. p.id provedorId,
  301. avg(ed.CALIFICACION_ACTUAL) promedio_categoria
  302. FROM EVALUACION_DET ed
  303. JOIN EVALUACION e ON ed.EVALUACION_ID = e.id
  304. JOIN categorias c ON ed.CATEGORIAS_ID = c.id
  305. JOIN PROVEEDORES P on e.PROVEEDORES_ID = P.ID
  306. where p.id = p_provider_id
  307. and to_number(EXTRACT(MONTH FROM ed.mes), 99) = p_month
  308. AND to_number(EXTRACT(year FROM ed.mes), 9999) = p_year
  309. GROUP BY e.id, c.id, p.nombre, p.id, to_number(EXTRACT(MONTH FROM ed.mes), 99),
  310. to_number(EXTRACT(YEAR FROM ed.mes), 9999))
  311. group by YEAR, NOMBRE, provedorId; --mes,
  312. CURSOR cur_score_year (
  313. p_provider_id scorecard_PROVIDER.PROVEEDORES_ID%TYPE,
  314. p_month IN SCORECARD_PROVIDER_MONTH.MONTH%TYPE,
  315. p_year scorecard_PROVIDER.YEAR%TYPE) is
  316. select p.id, p.LAST_SCORE
  317. from SCORECARD_PROVIDER p
  318. where p.PROVEEDORES_ID = p_provider_id
  319. and p.YEAR = p_year
  320. and p.MONTH = p_month;
  321. CURSOR cur_quiz_comments
  322. (p_provider_id scorecard_PROVIDER.PROVEEDORES_ID%TYPE,
  323. p_month SCORECARD_PROVIDER_MONTH.MONTH%TYPE,
  324. p_year scorecard_PROVIDER.YEAR%TYPE)
  325. is
  326. select d.id,d.comentario,d.CREATED_DATE,d.CREATED_BY
  327. from EVALUACION_DET_COMMENTARIOS d
  328. join evaluacion_det e on e.id =d.EVALUACION_DET_ID
  329. join evaluacion x on x.id = e.EVALUACION_ID
  330. and x.PROVEEDORES_ID = p_provider_id
  331. and to_number(EXTRACT(MONTH FROM e.mes), 99) = p_month
  332. AND to_number(EXTRACT(year FROM e.mes), 9999) = p_year;
  333. L_NAME scorecard_PROVIDER.NAME%TYPE;
  334. L_LAST_SCORE_AREA SCORECARD_PROVIDER_MONTH.SCORE%TYPE;
  335. L_LAST_SCORE scorecard_PROVIDER.LAST_SCORE%TYPE; -- CATGORIAS
  336. L_BEFORE_SCORE scorecard_PROVIDER.BEFORE_SCORE%TYPE;
  337. L_TOTAL_AVG scorecard_PROVIDER.TOTAL_AVG%TYPE;
  338. L_TARGET scorecard_PROVIDER.TARGET%TYPE:=5;
  339. L_YEAR scorecard_PROVIDER.YEAR%TYPE:=p_year;
  340. L_CREATED_DATE scorecard_PROVIDER.CREATED_DATE%TYPE;
  341. L_PROVEEDORES_ID scorecard_PROVIDER.PROVEEDORES_ID%TYPE:=p_provider_id;
  342. L_SCORECARD_PROVIDER SCORECARD_PROVIDER.PROVEEDORES_ID%TYPE;
  343. L_MONTH SCORECARD_PROVIDER_MONTH.MONTH%TYPE:=p_month;
  344. L_SCORECARD_PROVIDER_ID SCORECARD_PROVIDER.ID%TYPE;
  345. L_NOMBRE_AREA scorecard_PROVIDER_MONTH.NOMBRE_AREA%TYPE;
  346. L_NOMBRE_CATEGORIA scorecard_PROVIDER_MONTH.NOMBRE_CATEGORIA%TYPE;
  347. L_ID_AREA AREAS.ID%TYPE;
  348. L_ID_CATEGORIA CATEGORIAS.ID%TYPE;
  349. L_COMMENT EVALUACION_DET_COMMENTARIOS.COMENTARIO%TYPE;
  350. L_COMMENT_ID EVALUACION_DET_COMMENTARIOS.ID%TYPE;
  351. L_COMMENT_CREATED_DATE EVALUACION_DET_COMMENTARIOS.CREATED_DATE%TYPE;
  352. L_CREATED_BY EVALUACION_DET_COMMENTARIOS.CREATED_BY%TYPE;
  353. BEGIN
  354. OPEN cur_score_global(p_provider_id,p_month,p_year);
  355. FETCH cur_score_global INTO L_TOTAL_AVG,L_NAME;
  356. CLOSE cur_score_global;
  357. OPEN cur_score_year (p_provider_id,p_month,p_year);
  358. FETCH cur_score_year INTO L_SCORECARD_PROVIDER_ID, L_LAST_SCORE;
  359. CLOSE cur_score_year;
  360. if L_SCORECARD_PROVIDER_ID > 0
  361. then
  362. UPDATE SCORECARD_PROVIDER
  363. SET NAME = L_NAME,
  364. LAST_SCORE = L_TOTAL_AVG,
  365. BEFORE_SCORE = L_BEFORE_SCORE,
  366. TOTAL_AVG = L_TOTAL_AVG,
  367. TARGET = L_TARGET,
  368. YEAR = L_YEAR,
  369. UPDATED_DATE = CURRENT_DATE
  370. WHERE ID = L_SCORECARD_PROVIDER_ID;
  371. else
  372. L_SCORECARD_PROVIDER_ID := scorecard_provider_seq.nextval;
  373. INSERT INTO SCORECARD_PROVIDER (ID,
  374. NAME,
  375. LAST_SCORE,
  376. BEFORE_SCORE,
  377. TOTAL_AVG,
  378. TARGET,
  379. YEAR,
  380. CREATED_DATE,
  381. PROVEEDORES_ID,
  382. STATUS,
  383. MONTH)
  384. values( L_SCORECARD_PROVIDER_ID,
  385. L_NAME,
  386. L_TOTAL_AVG,
  387. 0,
  388. L_TOTAL_AVG,--L_LAST_SCORE,
  389. L_TARGET,--L_BEFORE_SCORE,
  390. p_year,
  391. CURRENT_DATE,
  392. p_provider_id,
  393. 'NO INICIADO',
  394. p_month)
  395. ;
  396. end if;
  397. delete SCORECARD_PROVIDER_MONTH where SCORECARD_PROVIDER_ID = L_SCORECARD_PROVIDER_ID;
  398. OPEN cur_score_cate(p_provider_id, p_month, p_year);
  399. LOOP
  400. FETCH cur_score_cate INTO L_MONTH,L_YEAR,
  401. L_NAME,L_NOMBRE_AREA,L_NOMBRE_CATEGORIA,L_PROVEEDORES_ID,L_ID_AREA,L_ID_CATEGORIA,
  402. L_LAST_SCORE;
  403. EXIT WHEN cur_score_cate%NOTFOUND OR cur_score_cate%NOTFOUND IS NULL;
  404. open cur_score_area(p_provider_id, p_month, p_year,L_ID_AREA);--nota agrupada de las categorias al area
  405. FETCH cur_score_area INTO L_LAST_SCORE_AREA;
  406. CLOSE cur_score_area;
  407. INSERT INTO SCORECARD_PROVIDER_MONTH (ID,
  408. MONTH,
  409. SCORE,
  410. BEFORE_SCORE,
  411. SCORE_CATEGORY,
  412. BEFORE_SCORE_CATEGORY,
  413. CREATED_DATE,
  414. SCORECARD_PROVIDER_ID,
  415. ESTADO,
  416. NOMBRE_AREA,
  417. NOMBRE_CATEGORIA,
  418. ID_AREA,ID_CATEGORIA)
  419. VALUES (scorecard_provider_month_seq.nextval,
  420. L_MONTH,
  421. L_LAST_SCORE_AREA,
  422. L_LAST_SCORE_AREA,
  423. L_LAST_SCORE,
  424. L_LAST_SCORE,
  425. CURRENT_DATE,
  426. L_SCORECARD_PROVIDER_ID,
  427. 'NO INICIADO',
  428. L_NOMBRE_AREA,
  429. L_NOMBRE_CATEGORIA,
  430. L_ID_AREA,L_ID_CATEGORIA);
  431. END LOOP;
  432. close cur_score_cate;
  433. delete SCORECARD_PROVIDER_COMMENTS where SCORECARD_PROVIDER_ID = L_SCORECARD_PROVIDER_ID;
  434. OPEN cur_quiz_comments (p_provider_id,p_month,p_year);
  435. LOOP
  436. FETCH cur_quiz_comments INTO L_COMMENT_ID,L_COMMENT,L_COMMENT_CREATED_DATE,L_CREATED_BY;
  437. EXIT WHEN cur_quiz_comments%NOTFOUND OR cur_quiz_comments%NOTFOUND IS NULL;
  438. INSERT INTO SCORECARD_PROVIDER_COMMENTS (ID,
  439. COMMENTS,
  440. CREATED_DATE,
  441. CREATED_USER,
  442. SCORECARD_PROVIDER_ID)
  443. VALUES (L_COMMENT_ID,
  444. L_COMMENT,
  445. L_COMMENT_CREATED_DATE,
  446. L_CREATED_BY,
  447. L_SCORECARD_PROVIDER_ID
  448. );
  449. END LOOP ;
  450. CLOSE cur_quiz_comments;
  451. END pc_create_up_scorecard;
  452. ;
  453. CREATE OR REPLACE PROCEDURE GET_RESUME_SCORE_AREA(
  454. p_scoreprovider_id IN SCORECARD_PROVIDER.ID%TYPE
  455. , p_cursor IN OUT SYS_REFCURSOR)
  456. IS
  457. BEGIN
  458. open p_cursor for
  459. select s.ID_AREA as idArea, s.nombre_area as name, s.score as score
  460. from scorecard_provider_month s
  461. where scorecard_provider_id = p_scoreprovider_id
  462. group by s.ID_AREA, s.nombre_area, s.score;
  463. --
  464. END GET_RESUME_SCORE_AREA;
  465. ;
  466. CREATE OR REPLACE PROCEDURE GET_RESUME_LASTEST_MONTHS(
  467. p_provider_id IN SCORECARD_PROVIDER.ID%TYPE,
  468. p_year in INTEGER,
  469. p_cursor IN OUT SYS_REFCURSOR)
  470. IS
  471. BEGIN
  472. open p_cursor for
  473. select p.MONTH as name, (p.TOTAL_AVG / 5 * 100) as score
  474. from scorecard_provider p
  475. where p.proveedores_id = p_provider_id
  476. and p.year = p_year
  477. and p.month > 0
  478. order by p.MONTH;
  479. END GET_RESUME_LASTEST_MONTHS;
  480. ;
  481. CREATE OR REPLACE PROCEDURE GET_SCOREPRO_CATEGORY_SCORES(
  482. p_scoreprovider_id IN SCORECARD_PROVIDER.ID%TYPE,
  483. p_area_id IN SCORECARD_PROVIDER_MONTH.ID_AREA%TYPE,
  484. p_cursor IN OUT SYS_REFCURSOR)
  485. IS
  486. BEGIN
  487. open p_cursor for
  488. select s.NOMBRE_CATEGORIA as nombre, s.NOMBRE_CATEGORIA as name, s.SCORE_CATEGORY as score
  489. from scorecard_provider_month s
  490. where s.scorecard_provider_id = p_scoreprovider_id
  491. and s.ID_AREA = p_area_id;
  492. --and p.status = 'APROBADO';
  493. END GET_SCOREPRO_CATEGORY_SCORES;
  494. ;
  495. CREATE OR REPLACE PROCEDURE P_GET_TREND_GLOBAL_MONTH(p_providerId IN NUMBER, p_cursor IN OUT SYS_REFCURSOR)
  496. AS
  497. BEGIN
  498. OPEN p_cursor FOR
  499. select p.id,
  500. p.name,
  501. p.LAST_SCORE *100/5 last_score,
  502. p.BEFORE_SCORE,
  503. p.TOTAL_AVG,
  504. p.TARGET,
  505. p.YEAR,
  506. p.created_date,
  507. p.updated_date,
  508. p.PROVEEDORES_ID,
  509. p.MONTH,
  510. p.status,
  511. p.REJECT_REASON
  512. from scorecard_provider p
  513. where p.PROVEEDORES_ID = p_providerId
  514. and status ='PUBLICADO'
  515. order BY TO_NUMBER(p.YEAR), TO_NUMBER(p.MONTH) ASC;
  516. END;
  517. create or replace PROCEDURE P_GET_DETAIL_BY_PROVIDER(
  518. p_provider_id IN NUMBER,
  519. p_year in number,
  520. p_cursor IN OUT SYS_REFCURSOR
  521. )
  522. AS
  523. BEGIN
  524. OPEN p_cursor FOR
  525. select 1 as kpi_id,
  526. m.nombre_area kpi_nombre,
  527. 1 as evalId,
  528. p.TOTAL_AVG global_actual,
  529. m.ID_AREA areas_id,
  530. m.NOMBRE_AREA area_nombre,
  531. m.ID_CATEGORIA categoria_id,
  532. m.NOMBRE_CATEGORIA cat_nombre,
  533. p.TARGET meta,
  534. (m.SCORE_CATEGORY / 5 ) global_categoria,
  535. 1 detail_id,
  536. m.MONTH mes_number,
  537. p.YEAR,
  538. m.SCORE calificacion_actual,
  539. p.LAST_SCORE calificacion_global
  540. from SCORECARD_PROVIDER p
  541. join SCORECARD_PROVIDER_MONTH m on m.SCORECARD_PROVIDER_ID = p.id
  542. where p.PROVEEDORES_ID = p_provider_id
  543. and p.TOTAL_AVG is not null
  544. and p.STATUS = 'PUBLICADO'
  545. order by TO_NUMBER(p.YEAR),TO_NUMBER(m.MONTH),m.ID_AREA,m.ID_CATEGORIA ;
  546. END
  547. ;
  548. ;
  549. CREATE OR REPLACE PROCEDURE P_GET_PROGRESS_ACTION_PLAN(
  550. p_providerId IN NUMBER,
  551. p_year IN NUMBER,
  552. p_cursor IN OUT SYS_REFCURSOR)
  553. AS
  554. BEGIN
  555. OPEN p_cursor FOR
  556. SELECT avg(avance_proveedor) progress from PLAN_ACCION
  557. where PROVEEDOR_ID = p_providerId
  558. AND ESTADO = 'EN PROGRESO';
  559. -- AND YEAR =
  560. --GROUP BY PROVEEDOR_ID;
  561. END;
  562. CREATE OR REPLACE PROCEDURE P_GET_ACTION_PLAN_STATUS(
  563. p_providerId IN NUMBER,
  564. p_year IN NUMBER,
  565. p_cursor IN OUT SYS_REFCURSOR)
  566. AS
  567. BEGIN
  568. OPEN p_cursor FOR
  569. select p.ESTADO,COUNT(*) qty from PLAN_ACCION p
  570. where PROVEEDOR_ID = p_providerId
  571. -- AND YEAR =
  572. group by p.ESTADO;
  573. END;
  574. create OR REPLACE PROCEDURE P_GET_GLOBAL_AVG(
  575. p_providerId IN NUMBER,
  576. p_year IN NUMBER,
  577. p_cursor IN OUT SYS_REFCURSOR)
  578. AS
  579. BEGIN
  580. OPEN p_cursor FOR
  581. select sum(last_score)/count(*) global_avg
  582. from SCORECARD_PROVIDER p
  583. where p.PROVEEDORES_ID =p_providerId
  584. and p.STATUS = 'PUBLICADO'
  585. AND p.year = p_year
  586. ;
  587. END;
  588. ;
  589. CREATE OR REPLACE PROCEDURE P_GET_PEN_QUIZ_USERS( p_cursor IN OUT SYS_REFCURSOR)
  590. as
  591. BEGIN
  592. OPEN p_cursor FOR
  593. select u.USER_NAME,u.USER_TYPE,p.nombre,p.id
  594. from proveedores p
  595. join USERS_PROVEEDORES up
  596. on up.PROVEEDORES_ID = p.id
  597. join users u
  598. on u.id = up.USERS_ID
  599. where UPPER(u.USER_TYPE) in
  600. ('CLIENTE INTERNO')
  601. and not exists(
  602. select 'x' from EVALUACION_PROVEEDOR ep
  603. where ep.CREATED_BY = u.USER_NAME
  604. and ep.year = to_char(add_months(sysdate, -1), 'YYYY')
  605. and ep.month = to_char(add_months(sysdate, -1), 'MM')
  606. )
  607. ;
  608. end;
  609. ;
  610. CREATE OR REPLACE PROCEDURE P_GET_PEN_ACTION_EXECUTE( p_cursor IN OUT SYS_REFCURSOR)
  611. as
  612. BEGIN
  613. OPEN p_cursor FOR
  614. select * from PLAN_ACCION_DET a
  615. where a.ESTADO != 'FINALIZADO'
  616. and a.FECHA_COMPROMISO<=CURRENT_DATE;
  617. end;
  618. ;
  619. CREATE OR REPLACE PROCEDURE P_GET_HISTORIC_SCORE(
  620. p_provider_id in integer,
  621. p_year in integer,
  622. p_cursor IN OUT SYS_REFCURSOR)
  623. as
  624. BEGIN
  625. OPEN p_cursor FOR
  626. select p.year,pm.nombre_area,pm.nombre_categoria,
  627. '5' META, p.last_score Actual, (p.total_avg*100/5)||'%' Global,
  628. nvl(pm.enero,0) ENERO,nvl(pm.FEBRERO,0) Febrero,nvl(pm.marzo,0) Marzo,
  629. nvl(pm.abril,0) Abril,nvl(pm.mayo,0) Mayo,
  630. nvl(pm.junio,0) Junio,nvl(pm.julio,0) Julio,
  631. nvl(pm.AGOSTO,0) Agosto,nvl(pm.SEPTIEMBRE,0) Septiembre,
  632. nvl(pm.OCTUBRE,0) Octubre,nvl(pm.NOVIEMBRE,0) Noviembre,nvl(pm.DICIEMBRE,0) DICIEMBRE
  633. from (
  634. select *
  635. from SCORECARD_PROVIDER_MONTH
  636. PIVOT(
  637. sum(nvl(score,0))
  638. FOR month
  639. IN (
  640. '1' Enero,'2' Febrero,'3' Marzo,'4' Abril,'5' Mayo,'6' Junio,'7' Julio,
  641. '8' Agosto,'9' Septiembre,'10' Octubre,'11' Noviembre,'12' Diciembre
  642. )
  643. )) pm join SCORECARD_PROVIDER p on p.id = pm.scorecard_provider_id
  644. where p.proveedores_id = p_provider_id
  645. and p.year = p_year
  646. order by pm.nombre_area;
  647. end;
  648. ;
  649. CREATE OR REPLACE PROCEDURE P_AVG_PROGRESS_ACTION_PLAN(
  650. p_plan_id in integer)
  651. as
  652. cursor cur_avg (p_plan_id in integer)
  653. is
  654. select avg(d.AVANCE) avg from plan_accion p
  655. join PLAN_ACCION_DET d on p.id = d.PLAN_ACCION_ID
  656. and d.PARENT_ID is not null
  657. where p.id = p_plan_id;
  658. L_TOTAL_AVG NUMBER(5, 2);
  659. BEGIN
  660. OPEN cur_avg(p_plan_id);
  661. FETCH cur_avg INTO L_TOTAL_AVG;
  662. CLOSE cur_avg;
  663. update PLAN_ACCION set AVANCE_PROVEEDOR = L_TOTAL_AVG,AVANCE_CM=L_TOTAL_AVG
  664. WHERE id =p_plan_id;
  665. end;
  666. ;