DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMW_FIN_COSO_VIEWS_PVT

Source


1 PACKAGE BODY amw_fin_coso_views_pvt as
2 /* $Header: amwcfcvb.pls 120.0.12000000.2 2007/04/02 16:45:02 dliao ship $ */
3 
4 
5  PROCEDURE create_fin_ctrl_components
6 (P_CERTIFICATION_ID number ,
7                   P_FINANCIAL_STATEMENT_ID number,
8                   P_STATEMENT_GROUP_ID number,
9                   P_FINANCIAL_ITEM_ID number,
10                   P_ACCOUNT_GROUP_ID  number ,
11                   P_ACCOUNT_ID        number ,
12                   P_OBJECT_TYPE varchar2 ) is
13 
14 /* ************************************** Example of Paraemters received *************************************
15 
16 For Financial Items the Parameter Passed will be
17     (P_CERTIFICATION_ID => l_certification_id,
18                   P_FINANCIAL_STATEMENT_ID => Get_all_items_Rec.FINANCIAL_STATEMENT_ID ,
19                   P_STATEMENT_GROUP_ID => Get_all_items_Rec.STATEMENT_GROUP_ID ,
20                   P_FINANCIAL_ITEM_ID => Get_all_items_Rec.FINANCIAL_ITEM_ID,
21                   P_ACCOUNT_GROUP_ID   => NULL,
22                   P_ACCOUNT_ID         => NULL,
23                   P_OBJECT_TYPE => 'FINANCIAL ITEM')
24 
25 For Key Accounts the Parameter Passed will be
26 
27                   (P_CERTIFICATION_ID => l_certification_id,
28                   P_STATEMENT_GROUP_ID => Get_all_accts_Rec.STATEMENT_GROUP_ID ,
29                   P_FINANCIAL_STATEMENT_ID => Get_all_accts_Rec.FINANCIAL_STATEMENT_ID,
30                   P_FINANCIAL_ITEM_ID => Get_all_accts_Rec.financial_item_id,
31                   P_ACCOUNT_ID         => Get_all_accts_Rec.natural_account_id,
32                   P_ACCOUNT_GROUP_ID   => Get_all_accts_Rec.account_group_id,
33                   P_OBJECT_TYPE => 'ACCOUNT');
34 
35 
36 *******************************************************************************************************************
37 */
38 
39 begin
40 declare
41 
42 -- type component_code_array is table of varchar2(30) index by pls_integer;
43 
44 -- type total_control_array is table of number index by pls_integer;
45 
46 -- type ineff_control_array is table of number index by pls_integer;
47 
48  ctr integer :=0;
49  max_num_of_codes integer :=0;
50  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_COMPONENT';
51 
52  m_component_code component_code_array;
53  m_total_control  total_control_array ;
54  m_ineff_control  ineff_control_array ;
55  m_acc_assert_flag component_code_array;
56  m_evaluated_ctrls  total_control_array ;
57 
58 
59  v_COMPONENT_CODE varchar2(30);
60 
61  g_user_id              NUMBER        := fnd_global.user_id;
62  g_login_id             NUMBER        := fnd_global.conc_login_id;
63  g_errbuf               VARCHAR2(2000) := null;
64  g_retcode              VARCHAR2(2)    :=  '0';
65  m_object_version_number NUMBER;
66 
67  m_display_flag varchar2(1) := 'N';
68 
69 -- *************** Currsor to get all Control for the Fianancial Item being Passed ********** --
70 
71 cursor ineff_ctrl_of_item
72 is
73 select
74  count(1) numIneffCtrls,
75   COMPONENT_CODE
76 from
77  (select
78     distinct
79     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.COMPONENT_CODE
80 from
81   amw_fin_item_acc_ctrl ctrl,
82   amw_opinions_log_v opinion,
83   amw_assessment_components comp,
84   amw_control_associations ctrlAsso
85 where
86  ctrl.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID and
87  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
88  ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
89  -- ctrl.ACCOUNT_GROUP_ID is null and
90  -- ctrl.NATURAL_ACCOUNT_ID is null and
91  --opinion.OPINION_LOG_ID =   ctrl.OPINION_LOG_ID and
92  opinion.pk1_value = ctrl.control_id and
93  opinion.pk3_value = ctrl.ORGANIZATION_ID and
94  opinion.audit_result_CODE <> 'EFFECTIVE' and
95  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
96  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'  and
97  ctrl.CONTROL_REV_ID =comp.OBJECT_ID and
98  comp.OBJECT_TYPE ='CONTROL' and
99  ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
100  opinion.OPINION_LOG_ID =   ctrlAsso.PK5 and
101  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
102  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
103  ctrlAsso.CONTROL_ID = ctrl.control_id)
104 group by COMPONENT_CODE;
105 
106 --------------------------------------------------------------------------------
107 cursor tot_ctrl_of_item
108 is
109 select
110  count(1) numOfCtrls,
111  comp.COMPONENT_CODE
112 from
113   amw.amw_fin_item_acc_ctrl ctrl,
114   amw_assessment_components comp
115 where
116  ctrl.FIN_CERTIFICATION_ID=P_CERTIFICATION_ID and
117  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
118  ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
119  --ctrl.ACCOUNT_GROUP_ID is null and
120  --ctrl.NATURAL_ACCOUNT_ID is null and
121  ctrl.CONTROL_REV_ID =comp.OBJECT_ID and
122  comp.OBJECT_TYPE ='CONTROL'
123 group by COMPONENT_CODE;
124 
125 --------------------------------------------------------------------------------------
126 cursor evaluated_ctrls_of_item
127 is
128 select
129  count(1) numOfEvaluatedCtrls,
130   COMPONENT_CODE
131 from
132  (select
133     distinct
134     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.COMPONENT_CODE
135 from
136   amw_fin_item_acc_ctrl ctrl,
137   amw_opinions_v opinion,
138   amw_assessment_components comp,
139   amw_control_associations ctrlAsso
140 where
141  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID
142  and
143  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
144  ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID
145  and
146  opinion.pk1_value = ctrl.control_id and
147  opinion.pk3_value = ctrl.ORGANIZATION_ID and
148  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
149  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'  and
150  ctrl.CONTROL_REV_ID =comp.OBJECT_ID and
151  comp.OBJECT_TYPE ='CONTROL' and
152  ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
153  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
154  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
155  ctrlAsso.CONTROL_ID = ctrl.control_id)
156 group by COMPONENT_CODE;
157 
158 
159 
160 -- *************** Currsor to get all Control for the Fianancial Item being Passed ********** --
161 
162 cursor in_eff_ctrl_of_accounts
163 is
164 --fix bug 5768982 on 2-12-07
165 /*******
166 select
167  count(1) numIneffCtrls,
168   COMPONENT_CODE from
169 ( select
170     distinct
171     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.COMPONENT_CODE
172 from
173    amw_fin_item_acc_ctrl ctrl,
174   amw_opinions_log_v opinion,
175   amw_assessment_components comp,
176   amw_control_associations ctrlAsso
177 where
178  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID and
179  ctrl.OBJECT_TYPE = 'ACCOUNT' and
180  --ctrl.FINANCIAL_ITEM_ID=  P_FINANCIAL_ITEM_ID and
181  ctrl.ACCOUNT_GROUP_ID =  P_ACCOUNT_GROUP_ID
182  and NATURAL_ACCOUNT_ID = P_ACCOUNT_ID and
183  --opinion.OPINION_LOG_ID =   ctrl.OPINION_LOG_ID and
184  opinion.pk1_value = ctrl.control_id and
185  opinion.pk3_value = ctrl.ORGANIZATION_ID and
186  opinion.audit_result_CODE <> 'EFFECTIVE' and
187  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
188  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'  and
189  ctrl.CONTROL_REV_ID =comp.OBJECT_ID and
190  comp.OBJECT_TYPE ='CONTROL' and
191  ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
192  opinion.OPINION_LOG_ID =   ctrlAsso.PK5 and
193  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
194  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
195  ctrlAsso.CONTROL_ID = ctrl.control_id)
196 group by COMPONENT_CODE;
197 *********/
198 SELECT COUNT(1) NUMINEFFCTRLS, COMPONENT_CODE
199 FROM
200 (SELECT DISTINCT CTRL.ORGANIZATION_ID, CTRL.CONTROL_ID, COMP.COMPONENT_CODE
201   FROM AMW_FIN_ITEM_ACC_CTRL CTRL,
202   AMW_ASSESSMENT_COMPONENTS COMP
203   WHERE
204   CTRL.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID
205   AND CTRL.OBJECT_TYPE = 'ACCOUNT'
206   AND CTRL.ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID
207   AND NATURAL_ACCOUNT_ID = P_ACCOUNT_ID
208   AND CTRL.CONTROL_REV_ID =COMP.OBJECT_ID
209   AND COMP.OBJECT_TYPE ='CONTROL'
210   AND EXISTS
211   (SELECT 1 FROM AMW_OPINIONS_LOG_V OPINION
212   WHERE OPINION.PK1_VALUE = CTRL.CONTROL_ID
213   AND OPINION.PK3_VALUE = CTRL.ORGANIZATION_ID
214   AND OPINION.AUDIT_RESULT_CODE <> 'EFFECTIVE'
215   AND OPINION.OPINION_TYPE_CODE = 'EVALUATION'
216   AND OPINION.OBJECT_NAME = 'AMW_ORG_CONTROL'
217   AND EXISTS
218   (SELECT 1 FROM AMW_CONTROL_ASSOCIATIONS CTRLASSO
219   WHERE
220   CTRLASSO.OBJECT_TYPE='RISK_FINCERT'
221   AND OPINION.OPINION_LOG_ID = CTRLASSO.PK5
222   AND CTRLASSO.PK1 = P_CERTIFICATION_ID
223   AND CTRLASSO.PK2 = OPINION.PK3_VALUE
224   AND CTRLASSO.CONTROL_ID = OPINION.PK1_VALUE
225   ))) GROUP BY COMPONENT_CODE;
226 
227 -------------------------------------------------------------
228 cursor total_ctrl_of_accounts
229 is
230 select
231  count(1) numOfCtrls,
232  comp.COMPONENT_CODE
233 from
234   amw.amw_fin_item_acc_ctrl ctrl,
235   amw_assessment_components comp
236 where
237  ctrl.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID and
238  ctrl.OBJECT_TYPE = 'ACCOUNT' and
239  -- ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
240  ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID and
241  NATURAL_ACCOUNT_ID =P_ACCOUNT_ID   and
242  ctrl.CONTROL_REV_ID =comp.OBJECT_ID and
243  comp.OBJECT_TYPE ='CONTROL'
244 group by COMPONENT_CODE;
245 -----------------------------------------------------------------
246 cursor evaluated_ctrls_of_acc
247 is
248 select
249  count(1) numOfEvaluatedCtrls,
250   COMPONENT_CODE from
251 ( select
252     distinct
253     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.COMPONENT_CODE
254 from
255    amw_fin_item_acc_ctrl ctrl,
256   amw_opinions_log_v opinion,
257   amw_assessment_components comp,
258   amw_control_associations ctrlAsso
259 where
260  ctrl.FIN_CERTIFICATION_ID=   P_CERTIFICATION_ID
261  and
262  ctrl.OBJECT_TYPE = 'ACCOUNT' and
263  ctrl.ACCOUNT_GROUP_ID =   P_ACCOUNT_GROUP_ID and
264  NATURAL_ACCOUNT_ID = P_ACCOUNT_ID and
265  opinion.pk1_value = ctrl.control_id and
266  opinion.pk3_value = ctrl.ORGANIZATION_ID and
267  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
268  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'  and
269  ctrl.CONTROL_REV_ID =comp.OBJECT_ID and
270  comp.OBJECT_TYPE ='CONTROL' and
271  ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
272  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
273  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
274  ctrlAsso.CONTROL_ID = ctrl.control_id)
275 group by COMPONENT_CODE;
276 
277 
278 -- *************** Currsor to get all Control for the Fianancial Item being Passed ********** --
279 
280 cursor COSO_COMPONENTS
281  is
282  select
283   LOOKUP_CODE
284  from
285    amw_lookups
286  where lookup_type = 'AMW_ASSESSMENT_COMPONENTS';
287 
288 --********************* Get Inefftive Control *************************************************--
289 
290 
291 
292 
293 
294 BEGIN
295 
296  --m_component_code := null;
297  --ctr := 0;
298 
299 
300  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
301  ctr :=  1;
302 
303  loop
304    EXIT  WHEN ctr > 30;
305 
306     m_component_code(ctr) := null;
307     m_acc_assert_flag(ctr) := 'I';
308     m_total_control(ctr) := 0;
309     m_ineff_control(ctr) := 0;
310     m_evaluated_ctrls(ctr) := 0;
311 
312 
313     ctr := ctr + 1;
314  end loop; --end of initialization
315 
316  -- ************ get All Control Components Codes and Load it in an Array for later use **************--
317 
318  ctr := 0;
319  for coso_rec in COSO_COMPONENTS
320  loop
321     exit when COSO_COMPONENTS%notfound;
322     ctr := ctr + 1;
323     m_component_code(ctr) := coso_rec.LOOKUP_CODE;
324 
325  end loop; --end of COSO_COMPONENTS loop
326 
327  max_num_of_codes := ctr;
328 
329  --dbms_output.put_line(' max_num_of_codes: ');
330  --dbms_output.put_line(max_num_of_codes);
331 
332 
333  if  max_num_of_codes > 0 then
334 
335      -- ************ get Total Controls and Ineff Ctrl for each Components Codes For a Financial Item**************--
336 
337     if P_OBJECT_TYPE = 'FINANCIAL ITEM' then
338 
339 
340        -- ************ get Total Controls for each Components Codes and Load it in an Array for later use **************--
341 
342        for tot_ctrls in tot_ctrl_of_item
343        loop
344           exit when tot_ctrl_of_item%notfound;
345           v_COMPONENT_CODE := tot_ctrls.COMPONENT_CODE;
346 
347           ctr := 1;
348 
349           --  check the code is in which bucket and the appropriately add the counts
350 
351           while ctr <=  max_num_of_codes
352           loop
353              if  m_component_code(ctr) =  v_COMPONENT_CODE  then
354                m_total_control(ctr) := tot_ctrls.numOfCtrls;
355 
356                --dbms_output.put_line( v_COMPONENT_CODE  );
357                --dbms_output.put_line(' is the code and the total is ');
358 
359                --dbms_output.put_line(m_total_control(ctr) );
360 
361                 exit;
362              end if;
363                  ctr := ctr + 1;
364 
365           end loop;
366       end loop; --end of tot_ctrl_of_item for the Financial Item loop
367 
368        -- ************ get Total Controls Evaluted for each Components Codes and Load it in an Array for later use **************--
369 
370        for tot_eval_ctrls in evaluated_ctrls_of_item
371        loop
372           exit when evaluated_ctrls_of_item%notfound;
373           v_COMPONENT_CODE := tot_eval_ctrls.COMPONENT_CODE;
374 
375           ctr := 1;
376 
377           --  check the code is in which bucket and the appropriately add the counts
378 
379           while ctr <=  max_num_of_codes
380           loop
381              if  m_component_code(ctr) =  v_COMPONENT_CODE  then
382                m_evaluated_ctrls(ctr) := tot_eval_ctrls.numOfEvaluatedCtrls;
383 
384 
385                 exit;
386              end if;
387              ctr := ctr + 1;
388 
389           end loop;
390       end loop; --end of evaluated_ctrls_of_item for the Financial Item loop
391 
392       -- ************ get Total Ineffective Controls for each Components Codes and Load it in an Array for later use **************--
393 
394        for tot_ineff_ctrls in ineff_ctrl_of_item
395        loop
396           exit when ineff_ctrl_of_item%notfound;
397           v_COMPONENT_CODE := tot_ineff_ctrls.COMPONENT_CODE;
398 
399           ctr := 1;
400 
401           --  check the code is in which bucket and the appropriately add the counts
402 
403           while ctr <=  max_num_of_codes
404           loop
405              if  m_component_code(ctr) =  v_COMPONENT_CODE  then
406 
407                  m_ineff_control(ctr) :=  tot_ineff_ctrls.numIneffCtrls ;
408 
409 
410                --dbms_output.put_line( v_COMPONENT_CODE  );
411                --dbms_output.put_line(' is the code and the ineff ctrl is ');
412 
413                --dbms_output.put_line(m_ineff_control(ctr) );
414 
415                 exit;
416              end if;
417                ctr := ctr + 1;
418 
419           end loop;
420       end loop; --end of tot_ineff_ctrls  for the Financial Item loop
421 
422 
423 
424     end if; -- ****************** end if for P_OBJECT_TYPE = 'FINANCIAL ITEM'
425      -- ******************************************************************************************** ----
426      -- ************ get Total Controls and Ineff Ctrl for each Components Codes For a Account **************--
427      -- ********************************************************************************************----
428 
429     if P_OBJECT_TYPE = 'ACCOUNT' then
430        -- ************ get Total Controls for each Components Codes and Load it in an Array for later use **************--
431 
432        for tot_ctrls_acc in total_ctrl_of_accounts
433        loop
434           exit when total_ctrl_of_accounts%notfound;
435           v_COMPONENT_CODE := tot_ctrls_acc.COMPONENT_CODE;
436 
437           ctr := 1;
438 
439           --  check the code is in which bucket and the appropriately add the counts
440 
441           while ctr <=  max_num_of_codes
442           loop
443              if  m_component_code(ctr) =  v_COMPONENT_CODE  then
444 
445                  m_total_control(ctr) := tot_ctrls_acc.numOfCtrls;
446                 exit;
447              end if;
448            ctr := ctr + 1;
449           end loop;
450       end loop; --end of total_ctrl_of_accounts   for the Account loop
451 
452     -- ************ get Total Controls Evaluted for each Components Codes and Load it in an Array for later use **************--
453 
454        for tot_eval_ctrls in evaluated_ctrls_of_acc
455        loop
456           exit when evaluated_ctrls_of_acc%notfound;
457           v_COMPONENT_CODE := tot_eval_ctrls.COMPONENT_CODE;
458 
459           ctr := 1;
460 
461           --  check the code is in which bucket and the appropriately add the counts
462 
463           while ctr <=  max_num_of_codes
464           loop
465              if  m_component_code(ctr) =  v_COMPONENT_CODE  then
466                m_evaluated_ctrls(ctr) := tot_eval_ctrls.numOfEvaluatedCtrls;
467 
468 
469                 exit;
470              end if;
471              ctr := ctr + 1;
472 
473           end loop;
474       end loop; --end of evaluated_ctrls_of_acc for the Account loop
475 
476 
477 
478 
479       -- ************ get Total Ineffective Controls for each Components Codes and Load it in an Array for later use **************--
480 
481        for tot_ineff_ctrls_acc in in_eff_ctrl_of_accounts
482        loop
483           exit when in_eff_ctrl_of_accounts%notfound;
484           v_COMPONENT_CODE := tot_ineff_ctrls_acc.COMPONENT_CODE;
485 
486           ctr := 1;
487 
488           --  check the code is in which bucket and the appropriately add the counts
489 
490           while ctr <=  max_num_of_codes
491           loop
492              if  m_component_code(ctr) =  v_COMPONENT_CODE  then
493 
494                  m_ineff_control(ctr) :=  tot_ineff_ctrls_acc.numIneffCtrls;
495 
496 
497                 exit;
498              end if;
499             ctr := ctr + 1;
500           end loop;
501       end loop; --end of in_eff_ctrl_of_accounts  for the Account loop
502 
503 
504 
505     end if; -- end if for P_OBJECT_TYPE = 'ACCOUNT'
506 
507    --  *********************   set column flag to "ignore" if the total controls are 0 for the column
508 
509     ctr := 1;
510     while ctr <=  max_num_of_codes
511     loop
512 
513       if  nvl(m_total_control(ctr),0) > 0 then
514           m_acc_assert_flag(ctr) := 'N';
515       end if;
516       ctr := ctr +1;
517     end loop;
518 
519 
520    -- ************* Check at lease one control exists for the row *******************************
521 
522      if set_display_flag(control_exists_array => m_total_control) then
523         m_display_flag := 'Y';
524      else
525         m_display_flag := 'N';
526      end if;
527 
528     -- ************************** CALL Proc to Insert Data into the Table **************************************** --
529 
530    m_object_version_number := 1;
531 
532     amw_fin_coso_views_pvt.INSERT_ROW(
533      x_fin_certification_id       	=> 	P_CERTIFICATION_ID	,
534      x_financial_statement_id    	=> 	P_FINANCIAL_STATEMENT_ID 	,
535      x_financial_item_id         	=> 	P_FINANCIAL_ITEM_ID 	,
536      x_account_group_id          	=> 	P_ACCOUNT_GROUP_ID  	,
537      x_natural_account_id        	=> 	P_ACCOUNT_ID        	,
538      x_object_type               	=> 	P_OBJECT_TYPE 	,
539      x_ctrl_attribute_type       	=> 	 m_ctrl_attribute_type       	,
540      x_ctrl_attr_code_1          	=> 	m_component_code(1)	,
541      x_ineff_ctrl_attr_1         	=> 	m_ineff_control(1)	,
542      x_total_ctrl_attr_1         	=> 	m_total_control(1)	,
543      x_ctrl_attr_code_2          	=> 	m_component_code(2)	,
544      x_ineff_ctrl_attr_2         	=> 	m_ineff_control(2)	,
545      x_total_ctrl_attr_2         	=> 	m_total_control(2)	,
546      x_ctrl_attr_code_3          	=> 	m_component_code(3)	,
547      x_ineff_ctrl_attr_3         	=> 	m_ineff_control(3)	,
548      x_total_ctrl_attr_3         	=> 	m_total_control(3)	,
549      x_ctrl_attr_code_4          	=> 	m_component_code(4)	,
550      x_ineff_ctrl_attr_4         	=> 	m_ineff_control(4)	,
551      x_total_ctrl_attr_4         	=> 	m_total_control(4)	,
552      x_ctrl_attr_code_5          	=> 	m_component_code(5)	,
553      x_ineff_ctrl_attr_5         	=> 	m_ineff_control(5)	,
554      x_total_ctrl_attr_5         	=> 	m_total_control(5)	,
555      x_ctrl_attr_code_6          	=> 	m_component_code(6)	,
556      x_ineff_ctrl_attr_6         	=> 	m_ineff_control(6)	,
557      x_total_ctrl_attr_6         	=> 	m_total_control(6)	,
558      x_ctrl_attr_code_7          	=> 	m_component_code(7)	,
559      x_ineff_ctrl_attr_7         	=> 	m_ineff_control(7)	,
560      x_total_ctrl_attr_7         	=> 	m_total_control(7)	,
561      x_ctrl_attr_code_8          	=> 	m_component_code(8)	,
562      x_ineff_ctrl_attr_8         	=> 	m_ineff_control(8)	,
563      x_total_ctrl_attr_8         	=> 	m_total_control(8)	,
564      x_ctrl_attr_code_9         	=> 	m_component_code(9)	,
565      x_ineff_ctrl_attr_9         	=> 	m_ineff_control(9)	,
566      x_total_ctrl_attr_9         	=> 	m_total_control(9)	,
567      x_ctrl_attr_code_10         	=> 	m_component_code(10)	,
568      x_ineff_ctrl_attr_10        	=> 	m_ineff_control(10)	,
569      x_total_ctrl_attr_10        	=> 	m_total_control(10)	,
570      x_ctrl_attr_code_11         	=> 	m_component_code(11)	,
571      x_ineff_ctrl_attr_11        	=> 	m_ineff_control(11)	,
572      x_total_ctrl_attr_11        	=> 	m_total_control(11)	,
573      x_ctrl_attr_code_12         	=> 	m_component_code(12)	,
574      x_ineff_ctrl_attr_12        	=> 	m_ineff_control(12)	,
575      x_total_ctrl_attr_12        	=> 	m_total_control(12)	,
576      x_ctrl_attr_code_13         	=> 	m_component_code(13)	,
577      x_ineff_ctrl_attr_13        	=> 	m_ineff_control(13)	,
578      x_total_ctrl_attr_13        	=> 	m_total_control(13)	,
579      x_ctrl_attr_code_14         	=> 	m_component_code(14)	,
580      x_ineff_ctrl_attr_14        	=> 	m_ineff_control(14)	,
581      x_total_ctrl_attr_14        	=> 	m_total_control(14)	,
582      x_ctrl_attr_code_15         	=> 	m_component_code(15)	,
583      x_ineff_ctrl_attr_15        	=> 	m_ineff_control(15)	,
584      x_total_ctrl_attr_15        	=> 	m_total_control(15)	,
585      x_ctrl_attr_code_16         	=> 	m_component_code(16)	,
586      x_ineff_ctrl_attr_16        	=> 	m_ineff_control(16)	,
587      x_total_ctrl_attr_16        	=> 	m_total_control(16)	,
588      x_ctrl_attr_code_17         	=> 	m_component_code(17)	,
589      x_ineff_ctrl_attr_17        	=> 	m_ineff_control(17)	,
590      x_total_ctrl_attr_17        	=> 	m_total_control(17)	,
591      x_ctrl_attr_code_18         	=> 	m_component_code(18)	,
592      x_ineff_ctrl_attr_18        	=> 	m_ineff_control(18)	,
593      x_total_ctrl_attr_18        	=> 	m_total_control(18)	,
594      x_ctrl_attr_code_19         	=> 	m_component_code(19)	,
595      x_ineff_ctrl_attr_19        	=> 	m_ineff_control(19)	,
596      x_total_ctrl_attr_19        	=> 	m_total_control(19)	,
597      x_ctrl_attr_code_20         	=> 	m_component_code(20)	,
598      x_ineff_ctrl_attr_20        	=> 	m_ineff_control(20)	,
599      x_total_ctrl_attr_20        	=> 	m_total_control(20)	,
600      x_ctrl_attr_code_21         	=> 	m_component_code(21)	,
601      x_ineff_ctrl_attr_21        	=> 	m_ineff_control(21)	,
602      x_total_ctrl_attr_21        	=> 	m_total_control(21)	,
603      x_ctrl_attr_code_22         	=> 	m_component_code(22)	,
604      x_ineff_ctrl_attr_22        	=> 	m_ineff_control(22)	,
605      x_total_ctrl_attr_22        	=> 	m_total_control(22)	,
606      x_ctrl_attr_code_23         	=> 	m_component_code(23)	,
607      x_ineff_ctrl_attr_23        	=> 	m_ineff_control(23)	,
608      x_total_ctrl_attr_23        	=> 	m_total_control(23)	,
609      x_ctrl_attr_code_24         	=> 	m_component_code(24)	,
610      x_ineff_ctrl_attr_24         	=> 	m_ineff_control(24)	,
611      x_total_ctrl_attr_24        	=> 	m_total_control(24)	,
612      x_ctrl_attr_code_25         	=> 	m_component_code(25)	,
613      x_ineff_ctrl_attr_25        	=> 	m_ineff_control(25)	,
614      x_total_ctrl_attr_25        	=> 	m_total_control(25)	,
615      x_ctrl_attr_code_26         	=> 	m_component_code(26)	,
616      x_ineff_ctrl_attr_26        	=> 	m_ineff_control(26)	,
617      x_total_ctrl_attr_26        	=> 	m_total_control(26)	,
618      x_ctrl_attr_code_27         	=> 	m_component_code(27)	,
619      x_ineff_ctrl_attr_27        	=> 	m_ineff_control(27)	,
620      x_total_ctrl_attr_27        	=> 	m_total_control(27)	,
621      x_ctrl_attr_code_28         	=> 	m_component_code(28)	,
622      x_ineff_ctrl_attr_28        	=> 	m_ineff_control(28)	,
623      x_total_ctrl_attr_28        	=> 	m_total_control(28)	,
624      x_ctrl_attr_code_29         	=> 	m_component_code(29)	,
625      x_ineff_ctrl_attr_29        	=> 	m_ineff_control(29)	,
626      x_total_ctrl_attr_29        	=> 	m_total_control(29)	,
627      x_ctrl_attr_code_30         	=> 	m_component_code(30)	,
628      x_ineff_ctrl_attr_30        	=> 	m_ineff_control(30)	,
629      x_total_ctrl_attr_30        	=> 	m_total_control(30)	,
630      x_created_by                	=> 	g_user_id	,
631      x_creation_date             	=> 	SYSDATE	,
632      x_last_updated_by           	=> 	g_user_id	,
633      x_last_update_date          	=> 	SYSDATE	,
634      x_last_update_login         	=> 	g_login_id	,
635      --x_security_group_id         	=> 	null	,
636      x_object_version_number     	=> 	m_object_version_number	,
637      x_acc_assert_flag1         	=> 	m_acc_assert_flag(1),
638      x_acc_assert_flag2         	=> 	m_acc_assert_flag(2),
639      x_acc_assert_flag3         	=> 	m_acc_assert_flag(3),
640      x_acc_assert_flag4         	=> 	m_acc_assert_flag(4),
641      x_acc_assert_flag5         	=> 	m_acc_assert_flag(5),
642      x_acc_assert_flag6         	=> 	m_acc_assert_flag(6),
643      x_acc_assert_flag7         	=> 	m_acc_assert_flag(7),
644      x_acc_assert_flag8         	=> 	m_acc_assert_flag(8),
645      x_acc_assert_flag9         	=> 	m_acc_assert_flag(9),
646      x_acc_assert_flag10        	=> 	m_acc_assert_flag(10),
647      x_acc_assert_flag11         	=> 	m_acc_assert_flag(11),
648      x_acc_assert_flag12         	=> 	m_acc_assert_flag(12),
649      x_acc_assert_flag13         	=> 	m_acc_assert_flag(13),
650      x_acc_assert_flag14         	=> 	m_acc_assert_flag(14),
651      x_acc_assert_flag15         	=> 	m_acc_assert_flag(15),
652      x_acc_assert_flag16         	=> 	m_acc_assert_flag(16),
653      x_acc_assert_flag17         	=> 	m_acc_assert_flag(17),
654      x_acc_assert_flag18         	=> 	m_acc_assert_flag(18),
655      x_acc_assert_flag19         	=> 	m_acc_assert_flag(19),
656      x_acc_assert_flag20        	=> 	m_acc_assert_flag(20),
657      x_acc_assert_flag21         	=> 	m_acc_assert_flag(21),
658      x_acc_assert_flag22         	=> 	m_acc_assert_flag(22),
659      x_acc_assert_flag23         	=> 	m_acc_assert_flag(23),
660      x_acc_assert_flag24         	=> 	m_acc_assert_flag(24),
661      x_acc_assert_flag25         	=> 	m_acc_assert_flag(25),
662      x_acc_assert_flag26         	=> 	m_acc_assert_flag(26),
663      x_acc_assert_flag27         	=> 	m_acc_assert_flag(27),
664      x_acc_assert_flag28         	=> 	m_acc_assert_flag(28),
665      x_acc_assert_flag29         	=> 	m_acc_assert_flag(29),
666      x_acc_assert_flag30        	=> 	m_acc_assert_flag(30),
667      x_eval_ctrl_attr_1         	=> 	m_evaluated_ctrls(1),
668      x_eval_ctrl_attr_2         	=> 	m_evaluated_ctrls(2),
669      x_eval_ctrl_attr_3         	=> 	m_evaluated_ctrls(3),
670      x_eval_ctrl_attr_4         	=> 	m_evaluated_ctrls(4),
671      x_eval_ctrl_attr_5         	=> 	m_evaluated_ctrls(5),
672      x_eval_ctrl_attr_6         	=> 	m_evaluated_ctrls(6),
673      x_eval_ctrl_attr_7         	=> 	m_evaluated_ctrls(7),
674      x_eval_ctrl_attr_8         	=> 	m_evaluated_ctrls(8),
675      x_eval_ctrl_attr_9         	=> 	m_evaluated_ctrls(9),
676      x_eval_ctrl_attr_10        	=> 	m_evaluated_ctrls(10),
677      x_eval_ctrl_attr_11         	=> 	m_evaluated_ctrls(11),
678      x_eval_ctrl_attr_12         	=> 	m_evaluated_ctrls(12),
679      x_eval_ctrl_attr_13         	=> 	m_evaluated_ctrls(13),
680      x_eval_ctrl_attr_14         	=> 	m_evaluated_ctrls(14),
681      x_eval_ctrl_attr_15         	=> 	m_evaluated_ctrls(15),
682      x_eval_ctrl_attr_16         	=> 	m_evaluated_ctrls(16),
683      x_eval_ctrl_attr_17         	=> 	m_evaluated_ctrls(17),
684      x_eval_ctrl_attr_18         	=> 	m_evaluated_ctrls(18),
685      x_eval_ctrl_attr_19         	=> 	m_evaluated_ctrls(19),
686      x_eval_ctrl_attr_20        	=> 	m_evaluated_ctrls(20),
687      x_eval_ctrl_attr_21         	=> 	m_evaluated_ctrls(21),
688      x_eval_ctrl_attr_22         	=> 	m_evaluated_ctrls(22),
689      x_eval_ctrl_attr_23         	=> 	m_evaluated_ctrls(23),
690      x_eval_ctrl_attr_24         	=> 	m_evaluated_ctrls(24),
691      x_eval_ctrl_attr_25         	=> 	m_evaluated_ctrls(25),
692      x_eval_ctrl_attr_26         	=> 	m_evaluated_ctrls(26),
693      x_eval_ctrl_attr_27         	=> 	m_evaluated_ctrls(27),
694      x_eval_ctrl_attr_28         	=> 	m_evaluated_ctrls(28),
695      x_eval_ctrl_attr_29         	=> 	m_evaluated_ctrls(29),
696      x_eval_ctrl_attr_30        	=> 	m_evaluated_ctrls(30),
697      x_display_flag        	        => 	 m_display_flag );
698 
699 
700  end if; -- end if for max_num_of_codes
701 
702 
703  -- ************  EXCEPTION definitions for the Procedure **************--
704 
705 EXCEPTION
706      WHEN NO_DATA_FOUND
707 	     THEN
708             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_Next_Level_Proc_Info'
709                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
710 
711      WHEN OTHERS
712          THEN
713             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_Next_Level_Proc_Info'
714                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
715 
716 ---COMMIT;
717 end;
718 end ; --create_fin_ctrl_components
719 
720 /* ******************************** Logic to build Control Objective-wise Summary Data *************************************** */
721 
722 
723  PROCEDURE create_fin_ctrl_objectives
724 (P_CERTIFICATION_ID number ,
725                   P_FINANCIAL_STATEMENT_ID number,
726                   P_STATEMENT_GROUP_ID number,
727                   P_FINANCIAL_ITEM_ID number,
728                   P_ACCOUNT_GROUP_ID  number ,
729                   P_ACCOUNT_ID        number ,
730                   P_OBJECT_TYPE varchar2 ) is
731 
732 /* ************************************** Example of Paraemters received *************************************
733 
734 For Financial Items the Parameter Passed will be
735     (P_CERTIFICATION_ID => l_certification_id,
736                   P_FINANCIAL_STATEMENT_ID => Get_all_items_Rec.FINANCIAL_STATEMENT_ID ,
737                   P_STATEMENT_GROUP_ID => Get_all_items_Rec.STATEMENT_GROUP_ID ,
738                   P_FINANCIAL_ITEM_ID => Get_all_items_Rec.FINANCIAL_ITEM_ID,
739                   P_ACCOUNT_GROUP_ID   => NULL,
740                   P_ACCOUNT_ID         => NULL,
741                   P_OBJECT_TYPE => 'FINANCIAL ITEM')
742 
743 For Key Accounts the Parameter Passed will be
744 
745                   (P_CERTIFICATION_ID => l_certification_id,
746                   P_STATEMENT_GROUP_ID => Get_all_accts_Rec.STATEMENT_GROUP_ID ,
747                   P_FINANCIAL_STATEMENT_ID => Get_all_accts_Rec.FINANCIAL_STATEMENT_ID,
748                   P_FINANCIAL_ITEM_ID => Get_all_accts_Rec.financial_item_id,
749                   P_ACCOUNT_ID         => Get_all_accts_Rec.natural_account_id,
750                   P_ACCOUNT_GROUP_ID   => Get_all_accts_Rec.account_group_id,
751                   P_OBJECT_TYPE => 'ACCOUNT');
752 
753 
754 *******************************************************************************************************************
755 */
756 
757 begin
758 declare
759 
760 
761  ctr integer :=0;
762  max_num_of_codes integer :=0;
763  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_OBJECTIVES';
764 
765  m_objectives_code component_code_array;
766  m_total_control  total_control_array ;
767  m_ineff_control  ineff_control_array ;
768  m_acc_assert_flag component_code_array;
769  m_evaluated_ctrls  total_control_array ;
770 
771 
772 
773  m_display_flag varchar2(1) := 'N';
774 
775  v_OBJECTIVE_CODE varchar2(30);
776 
777  g_user_id              NUMBER        := fnd_global.user_id;
778  g_login_id             NUMBER        := fnd_global.conc_login_id;
779  g_errbuf               VARCHAR2(2000) := null;
780  g_retcode              VARCHAR2(2)    :=  '0';
781 
782 -- *************** Currsor to get all Control for the Fianancial Item being Passed ********** --
783 
784 cursor ineff_ctrl_of_item
785 is
786 select
787  count(1) numIneffCtrls,
788  OBJECTIVE_CODE
789 from
790   (select
791     distinct
792     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.OBJECTIVE_CODE
793 from
794   amw.amw_fin_item_acc_ctrl ctrl,
795   amw_opinions_log_v opinion,
796   amw_control_objectives comp,
797   amw_control_associations ctrlAsso
798 where
799  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID and
800  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
801  ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
802  -- ctrl.ACCOUNT_GROUP_ID is null and
803  -- ctrl.NATURAL_ACCOUNT_ID is null and
804 -- opinion.OPINION_LOG_ID =   ctrl.OPINION_LOG_ID and
805  opinion.pk1_value = ctrl.control_id and
806  opinion.pk3_value = ctrl.ORGANIZATION_ID and
807  opinion.audit_result_CODE <> 'EFFECTIVE' and
808  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
809  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'  and
810  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
811   ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
812  opinion.OPINION_LOG_ID =   ctrlAsso.PK5 and
813  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
814  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
815  ctrlAsso.CONTROL_ID = ctrl.control_id)
816 group by OBJECTIVE_CODE;
817 
818 ---------------------------------------------------------------------------
819 cursor tot_ctrl_of_item
820 is
821 select
822  count(1) numOfCtrls,
823  comp.OBJECTIVE_CODE
824 from
825   amw.amw_fin_item_acc_ctrl ctrl,
826   amw_control_objectives comp
827 where
828  ctrl.FIN_CERTIFICATION_ID=P_CERTIFICATION_ID and
829  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
830  ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
831  --ctrl.ACCOUNT_GROUP_ID is null and
832  --ctrl.NATURAL_ACCOUNT_ID is null and
833  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID
834 group by OBJECTIVE_CODE;
835 
836 -----------------------------------------------------------------------------
837 cursor evaluated_ctrls_of_item
838 is
839 select
840  count(1) numOfEvaluatedCtrls,
841  OBJECTIVE_CODE
842 from
843   (select
844     distinct
845     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.OBJECTIVE_CODE
846 from
847   amw.amw_fin_item_acc_ctrl ctrl,
848   amw_opinions_log_v opinion,
849   amw_control_objectives comp,
850   amw_control_associations ctrlAsso
851 where
852  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID
853  and
854  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
855  ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID
856  and
857   opinion.pk1_value = ctrl.control_id and
858  opinion.pk3_value = ctrl.ORGANIZATION_ID and
859   opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
860  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'  and
861  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
862   ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
863   ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
864  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
865  ctrlAsso.CONTROL_ID = ctrl.control_id)
866 group by OBJECTIVE_CODE;
867 
868 
869 -- *************** Currsor to get all Control for the Fianancial Item being Passed ********** --
870 
871 cursor in_eff_ctrl_of_accounts
872 is
873 --fix bug 5768982 on 2-12-2007
874 /*****
875 select
876  count(1) numIneffCtrls,
877  OBJECTIVE_CODE from
878   (select
879     distinct
880     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.OBJECTIVE_CODE
881 from
882   amw.amw_fin_item_acc_ctrl ctrl,
883   amw_opinions_log_v opinion,
884   amw_control_objectives comp,
885   amw_control_associations ctrlAsso
886 where
887  ctrl.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID and
888  ctrl.OBJECT_TYPE = 'ACCOUNT' and
889  --ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
890  ctrl.ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID and
891  NATURAL_ACCOUNT_ID = P_ACCOUNT_ID and
892  --opinion.OPINION_LOG_ID =   ctrl.OPINION_LOG_ID and
893  opinion.pk1_value = ctrl.control_id and
894  opinion.pk3_value = ctrl.ORGANIZATION_ID and
895  opinion.audit_result_CODE <> 'EFFECTIVE' and
896  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
897  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'      and
898  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
899   ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
900  opinion.OPINION_LOG_ID =   ctrlAsso.PK5 and
901  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
902  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
903  ctrlAsso.CONTROL_ID = ctrl.control_id)
904 group by OBJECTIVE_CODE;
905 ****/
906 SELECT COUNT(1) NUMINEFFCTRLS, OBJECTIVE_CODE
907 FROM
908   (SELECT DISTINCT CTRL.ORGANIZATION_ID, CTRL.CONTROL_ID, COMP.OBJECTIVE_CODE
909   FROM AMW.AMW_FIN_ITEM_ACC_CTRL CTRL,
910   AMW_CONTROL_OBJECTIVES COMP
911   WHERE
912   CTRL.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID
913   AND CTRL.OBJECT_TYPE = 'ACCOUNT'
914   AND CTRL.ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID
915   AND NATURAL_ACCOUNT_ID = P_ACCOUNT_ID
916   AND CTRL.CONTROL_REV_ID =COMP.CONTROL_REV_ID
917   AND EXISTS
918   (SELECT 1 FROM
919   AMW_CONTROL_ASSOCIATIONS CTRLASSO
920   WHERE
921   CTRLASSO.OBJECT_TYPE='RISK_FINCERT'
922   AND CTRLASSO.PK1 = P_CERTIFICATION_ID
923   AND CTRLASSO.PK2 = CTRL.ORGANIZATION_ID
924   AND CTRLASSO.CONTROL_ID = CTRL.CONTROL_ID
925   AND EXISTS
926   (SELECT 1 FROM AMW_OPINIONS_LOG_V OPINION
927    WHERE
928    OPINION.OPINION_LOG_ID = CTRLASSO.PK5
929    AND OPINION.PK1_VALUE = CTRLASSO.CONTROL_ID
930    AND OPINION.PK3_VALUE = CTRLASSO.PK2
931    AND OPINION.AUDIT_RESULT_CODE <> 'EFFECTIVE'
932    AND OPINION.OPINION_TYPE_CODE = 'EVALUATION'
933    AND OPINION.OBJECT_NAME = 'AMW_ORG_CONTROL'
934    ))) GROUP BY OBJECTIVE_CODE ;
935 
936 ---------------------------------------------------------------------------------------------------
937 cursor evaluated_ctrls_of_acc
938 is
939 select
940  count(1) numOfEvaluatedCtrls,
941  OBJECTIVE_CODE from
942   (select
943     distinct
944     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.OBJECTIVE_CODE
945 from
946   amw.amw_fin_item_acc_ctrl ctrl,
947   amw_opinions_log_v opinion,
948   amw_control_objectives comp,
949   amw_control_associations ctrlAsso
950 where
951  ctrl.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID
952  and
953  ctrl.OBJECT_TYPE = 'ACCOUNT' and
954  ctrl.ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID
955  and
956  NATURAL_ACCOUNT_ID = P_ACCOUNT_ID
957  and
958  opinion.pk1_value = ctrl.control_id and
959  opinion.pk3_value = ctrl.ORGANIZATION_ID and
960  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
961  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'      and
962  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
963   ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
964  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
965  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
966  ctrlAsso.CONTROL_ID = ctrl.control_id)
967 group by OBJECTIVE_CODE;
968 
969 ------------------------------------------------------------------------------------------------
970 cursor total_ctrl_of_accounts
971 is
972 select
973  count(1) numOfCtrls,
974  comp.OBJECTIVE_CODE
975 from
976   amw.amw_fin_item_acc_ctrl ctrl,
977   amw_control_objectives comp
978 where
979  ctrl.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID and
980  ctrl.OBJECT_TYPE = 'ACCOUNT' and
981 -- ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
982  ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID and
983  NATURAL_ACCOUNT_ID =P_ACCOUNT_ID   and
984  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID
985 group by  OBJECTIVE_CODE;
986 
987 
988 
989  -- *************** Currsor to get all Control AMW_CONTROL_OBJECTIVES ********** --
990 
991 cursor CTRL_OBJECTIVES
992  is
993  select
994   LOOKUP_CODE
995  from
996    amw_lookups
997  where lookup_type = 'AMW_CONTROL_OBJECTIVES';
998 
999 --********************* Get Inefftive Control *************************************************--
1000 
1001 
1002 
1003 BEGIN
1004 
1005  --m_objectives_code := null;
1006  --ctr := 0;
1007 
1008 
1009  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
1010  ctr :=  1;
1011 
1012  loop
1013    EXIT  WHEN ctr > 30;
1014 
1015     m_objectives_code(ctr) := null;
1016     m_acc_assert_flag(ctr) := 'I';
1017     m_total_control(ctr) := 0;
1018     m_ineff_control(ctr) := 0;
1019     m_evaluated_ctrls  (ctr) := 0;
1020 
1021 
1022     ctr := ctr + 1;
1023 
1024  end loop; --end of initialization
1025 
1026  -- ************ get All Control Components Codes and Load it in an Array for later use **************--
1027 
1028  ctr := 0;
1029  for coso_rec in CTRL_OBJECTIVES
1030  loop
1031     exit when CTRL_OBJECTIVES%notfound;
1032     ctr := ctr + 1;
1033     m_objectives_code(ctr) := coso_rec.LOOKUP_CODE;
1034 
1035  end loop; --end of CTRL_OBJECTIVES loop
1036 
1037  max_num_of_codes := ctr;
1038 
1039  --dbms_output.put_line(' max_num_of_codes: ');
1040  --dbms_output.put_line(max_num_of_codes);
1041 
1042 
1043  if  max_num_of_codes > 0 then
1044 
1045      -- ************ get Total Controls and Ineff Ctrl for each Control Objective Codes For a Financial Item**************--
1046 
1047     if P_OBJECT_TYPE = 'FINANCIAL ITEM' then
1048        -- ************ get Total Controls for each objective / category Codes and Load it in an Array for later use **************--
1049 
1050        for tot_ctrls in tot_ctrl_of_item
1051        loop
1052           exit when tot_ctrl_of_item%notfound;
1053           v_OBJECTIVE_CODE := tot_ctrls.OBJECTIVE_CODE;
1054 
1055           ctr := 1;
1056 
1057           --  check the code is in which bucket and the appropriately add the counts
1058 
1059           while ctr <=  max_num_of_codes
1060           loop
1061              if  m_objectives_code(ctr) =  v_OBJECTIVE_CODE  then
1062                m_total_control(ctr) := tot_ctrls.numOfCtrls;
1063 
1064                --dbms_output.put_line( v_OBJECTIVE_CODE  );
1065                --dbms_output.put_line(' is the code and the total is ');
1066 
1067                --dbms_output.put_line(m_total_control(ctr) );
1068 
1069                 exit;
1070              end if;
1071                  ctr := ctr + 1;
1072 
1073           end loop;
1074       end loop; --end of tot_ctrl_of_item for the Financial Item loop
1075 
1076     -- ************ get Total Controls Evaluted for each objective/category Codes and Load it in an Array for later use **************--
1077 
1078        for tot_eval_ctrls in evaluated_ctrls_of_item
1079        loop
1080           exit when evaluated_ctrls_of_item%notfound;
1081           v_OBJECTIVE_CODE := tot_eval_ctrls.OBJECTIVE_CODE;
1082 
1083           ctr := 1;
1084 
1085           --  check the code is in which bucket and the appropriately add the counts
1086 
1087           while ctr <=  max_num_of_codes
1088           loop
1089                 if  m_objectives_code(ctr) =  v_OBJECTIVE_CODE  then
1090                 m_evaluated_ctrls(ctr) := tot_eval_ctrls.numOfEvaluatedCtrls;
1091 
1092 
1093                 exit;
1094              end if;
1095              ctr := ctr + 1;
1096 
1097           end loop;
1098       end loop; --end of evaluated_ctrls_of_item for the Fin Item loop
1099 
1100 
1101 
1102       -- ************ get Total Ineffective Controls for each objectives/ category Codes and Load it in an Array for later use **************--
1103 
1104        for tot_ineff_ctrls in ineff_ctrl_of_item
1105        loop
1106           exit when ineff_ctrl_of_item%notfound;
1107           v_OBJECTIVE_CODE := tot_ineff_ctrls.OBJECTIVE_CODE;
1108 
1109           ctr := 1;
1110 
1111           --  check the code is in which bucket and the appropriately add the counts
1112 
1113           while ctr <=  max_num_of_codes
1114           loop
1115              if  m_objectives_code(ctr) =  v_OBJECTIVE_CODE  then
1116 
1117                  m_ineff_control(ctr) :=  tot_ineff_ctrls.numIneffCtrls ;
1118 
1119 
1120 
1121                --dbms_output.put_line( v_OBJECTIVE_CODE  );
1122                --dbms_output.put_line(' is the code and the ineff ctrl is ');
1123 
1124                --dbms_output.put_line(m_ineff_control(ctr) );
1125 
1126                 exit;
1127              end if;
1128                ctr := ctr + 1;
1129 
1130           end loop;
1131       end loop; --end of tot_ineff_ctrls  for the Financial Item loop
1132 
1133 
1134 
1135     end if; -- ****************** end if for P_OBJECT_TYPE = 'FINANCIAL ITEM'
1136      -- ******************************************************************************************** ----
1137      -- ************ get Total Controls and Ineff Ctrl for each Components Codes For a Account **************--
1138      -- ********************************************************************************************----
1139 
1140     if P_OBJECT_TYPE = 'ACCOUNT' then
1141        -- ************ get Total Controls for each control objective/category Codes and Load it in an Array for later use **************--
1142 
1143        for tot_ctrls_acc in total_ctrl_of_accounts
1144        loop
1145           exit when total_ctrl_of_accounts%notfound;
1146           v_OBJECTIVE_CODE := tot_ctrls_acc.OBJECTIVE_CODE;
1147 
1148           ctr := 1;
1149 
1150           --  check the code is in which bucket and the appropriately add the counts
1151 
1152           while ctr <=  max_num_of_codes
1153           loop
1154 
1155              if  m_objectives_code(ctr) =  v_OBJECTIVE_CODE  then
1156                  m_total_control(ctr) := tot_ctrls_acc.numOfCtrls;
1157                 exit;
1158              end if;
1159              ctr := ctr + 1;
1160           end loop;
1161       end loop; --end of total_ctrl_of_accounts   for the Account loop
1162 
1163     -- ************ get Total Controls Evaluted for each objective/category Codes and Load it in an Array for later use **************--
1164 
1165        for tot_eval_ctrls in evaluated_ctrls_of_acc
1166        loop
1167           exit when evaluated_ctrls_of_acc%notfound;
1168           v_OBJECTIVE_CODE := tot_eval_ctrls.OBJECTIVE_CODE;
1169 
1170           ctr := 1;
1171 
1172           --  check the code is in which bucket and the appropriately add the counts
1173 
1174           while ctr <=  max_num_of_codes
1175           loop
1176              if  m_objectives_code(ctr) =  v_OBJECTIVE_CODE  then
1177                 m_evaluated_ctrls(ctr) := tot_eval_ctrls.numOfEvaluatedCtrls;
1178                 exit;
1179              end if;
1180              ctr := ctr + 1;
1181 
1182           end loop;
1183       end loop; --end of evaluated_ctrls_of_acc for the Account loop
1184 
1185 
1186       -- ************ get Total Ineffective Controls for each Components Codes and Load it in an Array for later use **************--
1187 
1188        for tot_ineff_ctrls_acc in in_eff_ctrl_of_accounts
1189        loop
1190           exit when in_eff_ctrl_of_accounts%notfound;
1191           v_OBJECTIVE_CODE := tot_ineff_ctrls_acc.OBJECTIVE_CODE;
1192 
1193           ctr := 1;
1194 
1195           --  check the code is in which bucket and the appropriately add the counts
1196 
1197           while ctr <=  max_num_of_codes
1198           loop
1199              if  m_objectives_code(ctr) =  v_OBJECTIVE_CODE  then
1200 
1201                  m_ineff_control(ctr) :=  tot_ineff_ctrls_acc.numIneffCtrls;
1202 
1203 
1204                 exit;
1205              end if;
1206              ctr := ctr + 1;
1207           end loop;
1208       end loop; --end of in_eff_ctrl_of_accounts  for the Account loop
1209 
1210 
1211 
1212     end if; -- end if for P_OBJECT_TYPE = 'ACCOUNT'
1213 
1214    --  *********************   set column flag to "N" if there is at least on control for the objective or cotinue to be
1215    --  "ignore" if the total controls are 0 for the column
1216 
1217     ctr := 1;
1218     while ctr <=  max_num_of_codes
1219     loop
1220 
1221       if  nvl(m_total_control(ctr),0) > 0 then
1222           m_acc_assert_flag(ctr) := 'N';
1223       end if;
1224       ctr := ctr +1;
1225     end loop;
1226 
1227    -- ************* Check at lease one control exists for the row *******************************
1228 
1229     if set_display_flag(control_exists_array => m_total_control) then
1230         m_display_flag := 'Y';
1231      else
1232         m_display_flag := 'N';
1233      end if;
1234 
1235 
1236 
1237     -- ************************** CALL Proc to Insert Data into the Table **************************************** --
1238 
1239      --dbms_output.put_line('Objective - before inserting data');
1240 
1241     amw_fin_coso_views_pvt.INSERT_ROW(
1242      x_fin_certification_id       	=> 	P_CERTIFICATION_ID	,
1243      x_financial_statement_id    	=> 	P_FINANCIAL_STATEMENT_ID 	,
1244      x_financial_item_id         	=> 	P_FINANCIAL_ITEM_ID 	,
1245      x_account_group_id          	=> 	P_ACCOUNT_GROUP_ID  	,
1246      x_natural_account_id        	=> 	P_ACCOUNT_ID        	,
1247      x_object_type               	=> 	P_OBJECT_TYPE 	,
1248      x_ctrl_attribute_type       	=> 	 m_ctrl_attribute_type       	,
1249      x_ctrl_attr_code_1          	=> 	m_objectives_code(1)	,
1250      x_ineff_ctrl_attr_1         	=> 	m_ineff_control(1)	,
1251      x_total_ctrl_attr_1         	=> 	m_total_control(1)	,
1252      x_ctrl_attr_code_2          	=> 	m_objectives_code(2)	,
1253      x_ineff_ctrl_attr_2         	=> 	m_ineff_control(2)	,
1254      x_total_ctrl_attr_2         	=> 	m_total_control(2)	,
1255      x_ctrl_attr_code_3          	=> 	m_objectives_code(3)	,
1256      x_ineff_ctrl_attr_3         	=> 	m_ineff_control(3)	,
1257      x_total_ctrl_attr_3         	=> 	m_total_control(3)	,
1258      x_ctrl_attr_code_4          	=> 	m_objectives_code(4)	,
1259      x_ineff_ctrl_attr_4         	=> 	m_ineff_control(4)	,
1260      x_total_ctrl_attr_4         	=> 	m_total_control(4)	,
1261      x_ctrl_attr_code_5          	=> 	m_objectives_code(5)	,
1262      x_ineff_ctrl_attr_5         	=> 	m_ineff_control(5)	,
1263      x_total_ctrl_attr_5         	=> 	m_total_control(5)	,
1264      x_ctrl_attr_code_6          	=> 	m_objectives_code(6)	,
1265      x_ineff_ctrl_attr_6         	=> 	m_ineff_control(6)	,
1266      x_total_ctrl_attr_6         	=> 	m_total_control(6)	,
1267      x_ctrl_attr_code_7          	=> 	m_objectives_code(7)	,
1268      x_ineff_ctrl_attr_7         	=> 	m_ineff_control(7)	,
1269      x_total_ctrl_attr_7         	=> 	m_total_control(7)	,
1270      x_ctrl_attr_code_8          	=> 	m_objectives_code(8)	,
1271      x_ineff_ctrl_attr_8         	=> 	m_ineff_control(8)	,
1272      x_total_ctrl_attr_8         	=> 	m_total_control(8)	,
1273      x_ctrl_attr_code_9         	=> 	m_objectives_code(9)	,
1274      x_ineff_ctrl_attr_9         	=> 	m_ineff_control(9)	,
1275      x_total_ctrl_attr_9         	=> 	m_total_control(9)	,
1276      x_ctrl_attr_code_10         	=> 	m_objectives_code(10)	,
1277      x_ineff_ctrl_attr_10        	=> 	m_ineff_control(10)	,
1278      x_total_ctrl_attr_10        	=> 	m_total_control(10)	,
1279      x_ctrl_attr_code_11         	=> 	m_objectives_code(11)	,
1280      x_ineff_ctrl_attr_11        	=> 	m_ineff_control(11)	,
1281      x_total_ctrl_attr_11        	=> 	m_total_control(11)	,
1282      x_ctrl_attr_code_12         	=> 	m_objectives_code(12)	,
1283      x_ineff_ctrl_attr_12        	=> 	m_ineff_control(12)	,
1284      x_total_ctrl_attr_12        	=> 	m_total_control(12)	,
1285      x_ctrl_attr_code_13         	=> 	m_objectives_code(13)	,
1286      x_ineff_ctrl_attr_13        	=> 	m_ineff_control(13)	,
1287      x_total_ctrl_attr_13        	=> 	m_total_control(13)	,
1288      x_ctrl_attr_code_14         	=> 	m_objectives_code(14)	,
1289      x_ineff_ctrl_attr_14        	=> 	m_ineff_control(14)	,
1290      x_total_ctrl_attr_14        	=> 	m_total_control(14)	,
1291      x_ctrl_attr_code_15         	=> 	m_objectives_code(15)	,
1292      x_ineff_ctrl_attr_15        	=> 	m_ineff_control(15)	,
1293      x_total_ctrl_attr_15        	=> 	m_total_control(15)	,
1294      x_ctrl_attr_code_16         	=> 	m_objectives_code(16)	,
1295      x_ineff_ctrl_attr_16        	=> 	m_ineff_control(16)	,
1296      x_total_ctrl_attr_16        	=> 	m_total_control(16)	,
1297      x_ctrl_attr_code_17         	=> 	m_objectives_code(17)	,
1298      x_ineff_ctrl_attr_17        	=> 	m_ineff_control(17)	,
1299      x_total_ctrl_attr_17        	=> 	m_total_control(17)	,
1300      x_ctrl_attr_code_18         	=> 	m_objectives_code(18)	,
1301      x_ineff_ctrl_attr_18        	=> 	m_ineff_control(18)	,
1302      x_total_ctrl_attr_18        	=> 	m_total_control(18)	,
1303      x_ctrl_attr_code_19         	=> 	m_objectives_code(19)	,
1304      x_ineff_ctrl_attr_19        	=> 	m_ineff_control(19)	,
1305      x_total_ctrl_attr_19        	=> 	m_total_control(19)	,
1306      x_ctrl_attr_code_20         	=> 	m_objectives_code(20)	,
1307      x_ineff_ctrl_attr_20        	=> 	m_ineff_control(20)	,
1308      x_total_ctrl_attr_20        	=> 	m_total_control(20)	,
1309      x_ctrl_attr_code_21         	=> 	m_objectives_code(21)	,
1310      x_ineff_ctrl_attr_21        	=> 	m_ineff_control(21)	,
1311      x_total_ctrl_attr_21        	=> 	m_total_control(21)	,
1312      x_ctrl_attr_code_22         	=> 	m_objectives_code(22)	,
1313      x_ineff_ctrl_attr_22        	=> 	m_ineff_control(22)	,
1314      x_total_ctrl_attr_22        	=> 	m_total_control(22)	,
1315      x_ctrl_attr_code_23         	=> 	m_objectives_code(23)	,
1316      x_ineff_ctrl_attr_23        	=> 	m_ineff_control(23)	,
1317      x_total_ctrl_attr_23        	=> 	m_total_control(23)	,
1318      x_ctrl_attr_code_24         	=> 	m_objectives_code(24)	,
1319      x_ineff_ctrl_attr_24         	=> 	m_ineff_control(24)	,
1320      x_total_ctrl_attr_24        	=> 	m_total_control(24)	,
1321      x_ctrl_attr_code_25         	=> 	m_objectives_code(25)	,
1322      x_ineff_ctrl_attr_25        	=> 	m_ineff_control(25)	,
1323      x_total_ctrl_attr_25        	=> 	m_total_control(25)	,
1324      x_ctrl_attr_code_26         	=> 	m_objectives_code(26)	,
1325      x_ineff_ctrl_attr_26        	=> 	m_ineff_control(26)	,
1326      x_total_ctrl_attr_26        	=> 	m_total_control(26)	,
1327      x_ctrl_attr_code_27         	=> 	m_objectives_code(27)	,
1328      x_ineff_ctrl_attr_27        	=> 	m_ineff_control(27)	,
1329      x_total_ctrl_attr_27        	=> 	m_total_control(27)	,
1330      x_ctrl_attr_code_28         	=> 	m_objectives_code(28)	,
1331      x_ineff_ctrl_attr_28        	=> 	m_ineff_control(28)	,
1332      x_total_ctrl_attr_28        	=> 	m_total_control(28)	,
1333      x_ctrl_attr_code_29         	=> 	m_objectives_code(29)	,
1334      x_ineff_ctrl_attr_29        	=> 	m_ineff_control(29)	,
1335      x_total_ctrl_attr_29        	=> 	m_total_control(29)	,
1336      x_ctrl_attr_code_30         	=> 	m_objectives_code(30)	,
1337      x_ineff_ctrl_attr_30        	=> 	m_ineff_control(30)	,
1338      x_total_ctrl_attr_30        	=> 	m_total_control(30)	,
1339      x_created_by                	=> 	g_user_id	,
1340      x_creation_date             	=> 	SYSDATE	,
1341      x_last_updated_by           	=> 	g_user_id	,
1342      x_last_update_date          	=> 	SYSDATE	,
1343      x_last_update_login         	=> 	g_login_id	,
1344      --x_security_group_id         	=> 	null	,
1345      x_object_version_number     	=> 	null	,
1346      x_acc_assert_flag1         	=> 	m_acc_assert_flag(1),
1347      x_acc_assert_flag2         	=> 	m_acc_assert_flag(2),
1348      x_acc_assert_flag3         	=> 	m_acc_assert_flag(3),
1349      x_acc_assert_flag4         	=> 	m_acc_assert_flag(4),
1350      x_acc_assert_flag5         	=> 	m_acc_assert_flag(5),
1351      x_acc_assert_flag6         	=> 	m_acc_assert_flag(6),
1352      x_acc_assert_flag7         	=> 	m_acc_assert_flag(7),
1353      x_acc_assert_flag8         	=> 	m_acc_assert_flag(8),
1354      x_acc_assert_flag9         	=> 	m_acc_assert_flag(9),
1355      x_acc_assert_flag10        	=> 	m_acc_assert_flag(10),
1356      x_acc_assert_flag11         	=> 	m_acc_assert_flag(11),
1357      x_acc_assert_flag12         	=> 	m_acc_assert_flag(12),
1358      x_acc_assert_flag13         	=> 	m_acc_assert_flag(13),
1359      x_acc_assert_flag14         	=> 	m_acc_assert_flag(14),
1360      x_acc_assert_flag15         	=> 	m_acc_assert_flag(15),
1361      x_acc_assert_flag16         	=> 	m_acc_assert_flag(16),
1362      x_acc_assert_flag17         	=> 	m_acc_assert_flag(17),
1363      x_acc_assert_flag18         	=> 	m_acc_assert_flag(18),
1364      x_acc_assert_flag19         	=> 	m_acc_assert_flag(19),
1365      x_acc_assert_flag20        	=> 	m_acc_assert_flag(20),
1366      x_acc_assert_flag21         	=> 	m_acc_assert_flag(21),
1367      x_acc_assert_flag22         	=> 	m_acc_assert_flag(22),
1368      x_acc_assert_flag23         	=> 	m_acc_assert_flag(23),
1369      x_acc_assert_flag24         	=> 	m_acc_assert_flag(24),
1370      x_acc_assert_flag25         	=> 	m_acc_assert_flag(25),
1371      x_acc_assert_flag26         	=> 	m_acc_assert_flag(26),
1372      x_acc_assert_flag27         	=> 	m_acc_assert_flag(27),
1373      x_acc_assert_flag28         	=> 	m_acc_assert_flag(28),
1374      x_acc_assert_flag29         	=> 	m_acc_assert_flag(29),
1375      x_acc_assert_flag30        	=> 	m_acc_assert_flag(30),
1376      x_eval_ctrl_attr_1         	=> 	m_evaluated_ctrls(1),
1377      x_eval_ctrl_attr_2         	=> 	m_evaluated_ctrls(2),
1378      x_eval_ctrl_attr_3         	=> 	m_evaluated_ctrls(3),
1379      x_eval_ctrl_attr_4         	=> 	m_evaluated_ctrls(4),
1380      x_eval_ctrl_attr_5         	=> 	m_evaluated_ctrls(5),
1381      x_eval_ctrl_attr_6         	=> 	m_evaluated_ctrls(6),
1382      x_eval_ctrl_attr_7         	=> 	m_evaluated_ctrls(7),
1383      x_eval_ctrl_attr_8         	=> 	m_evaluated_ctrls(8),
1384      x_eval_ctrl_attr_9         	=> 	m_evaluated_ctrls(9),
1385      x_eval_ctrl_attr_10        	=> 	m_evaluated_ctrls(10),
1386      x_eval_ctrl_attr_11         	=> 	m_evaluated_ctrls(11),
1387      x_eval_ctrl_attr_12         	=> 	m_evaluated_ctrls(12),
1388      x_eval_ctrl_attr_13         	=> 	m_evaluated_ctrls(13),
1389      x_eval_ctrl_attr_14         	=> 	m_evaluated_ctrls(14),
1390      x_eval_ctrl_attr_15         	=> 	m_evaluated_ctrls(15),
1391      x_eval_ctrl_attr_16         	=> 	m_evaluated_ctrls(16),
1392      x_eval_ctrl_attr_17         	=> 	m_evaluated_ctrls(17),
1393      x_eval_ctrl_attr_18         	=> 	m_evaluated_ctrls(18),
1394      x_eval_ctrl_attr_19         	=> 	m_evaluated_ctrls(19),
1395      x_eval_ctrl_attr_20        	=> 	m_evaluated_ctrls(20),
1396      x_eval_ctrl_attr_21         	=> 	m_evaluated_ctrls(21),
1397      x_eval_ctrl_attr_22         	=> 	m_evaluated_ctrls(22),
1398      x_eval_ctrl_attr_23         	=> 	m_evaluated_ctrls(23),
1399      x_eval_ctrl_attr_24         	=> 	m_evaluated_ctrls(24),
1400      x_eval_ctrl_attr_25         	=> 	m_evaluated_ctrls(25),
1401      x_eval_ctrl_attr_26         	=> 	m_evaluated_ctrls(26),
1402      x_eval_ctrl_attr_27         	=> 	m_evaluated_ctrls(27),
1403      x_eval_ctrl_attr_28         	=> 	m_evaluated_ctrls(28),
1404      x_eval_ctrl_attr_29         	=> 	m_evaluated_ctrls(29),
1405      x_eval_ctrl_attr_30        	=> 	m_evaluated_ctrls(30),
1406      x_display_flag        	        => 	 m_display_flag );
1407 
1408 
1409  end if; -- end if for max_num_of_codes
1410 
1411 
1412  -- ************  EXCEPTION definitions for the Procedure **************--
1413 
1414 EXCEPTION
1415      WHEN NO_DATA_FOUND
1416 	     THEN
1417                  --dbms_output.put_line('Objective - NO_DATA_FOUND');
1418 
1419             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_Next_Level_Proc_Info'
1420                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
1421 
1422      WHEN OTHERS
1423          THEN
1424                  --dbms_output.put_line('Objective -WHEN OTHERS');
1425 
1426             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_Next_Level_Proc_Info'
1427                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
1428 
1429 ---COMMIT;
1430 end;
1431 end ; --create_fin_ctrl_components
1432 
1433 /* ******************************************************************************************************** */
1434 
1435 /* ******************************** Logic to build Control ASSERTION_CODE-wise Summary Data *************************************** */
1436 
1437 
1438  PROCEDURE create_fin_ctrl_Assertions
1439 (P_CERTIFICATION_ID number ,
1440                   P_FINANCIAL_STATEMENT_ID number,
1441                   P_STATEMENT_GROUP_ID number,
1442                   P_FINANCIAL_ITEM_ID number,
1443                   P_ACCOUNT_GROUP_ID  number ,
1444                   P_ACCOUNT_ID        number ,
1445                   P_OBJECT_TYPE varchar2 ) is
1446 
1447 /* ************************************** Example of Paraemters received *************************************
1448 
1449 For Financial Items the Parameter Passed will be
1450     (P_CERTIFICATION_ID => l_certification_id,
1451                   P_FINANCIAL_STATEMENT_ID => Get_all_items_Rec.FINANCIAL_STATEMENT_ID ,
1452                   P_STATEMENT_GROUP_ID => Get_all_items_Rec.STATEMENT_GROUP_ID ,
1453                   P_FINANCIAL_ITEM_ID => Get_all_items_Rec.FINANCIAL_ITEM_ID,
1454                   P_ACCOUNT_GROUP_ID   => NULL,
1455                   P_ACCOUNT_ID         => NULL,
1456                   P_OBJECT_TYPE => 'FINANCIAL ITEM')
1457 
1458 For Key Accounts the Parameter Passed will be
1459 
1460                   (P_CERTIFICATION_ID => l_certification_id,
1461                   P_STATEMENT_GROUP_ID => Get_all_accts_Rec.STATEMENT_GROUP_ID ,
1462                   P_FINANCIAL_STATEMENT_ID => Get_all_accts_Rec.FINANCIAL_STATEMENT_ID,
1463                   P_FINANCIAL_ITEM_ID => Get_all_accts_Rec.financial_item_id,
1464                   P_ACCOUNT_ID         => Get_all_accts_Rec.natural_account_id,
1465                   P_ACCOUNT_GROUP_ID   => Get_all_accts_Rec.account_group_id,
1466                   P_OBJECT_TYPE => 'ACCOUNT');
1467 
1468 
1469 *******************************************************************************************************************
1470 */
1471 
1472 begin
1473 declare
1474 
1475 
1476  ctr integer :=0;
1477  max_num_of_codes integer :=0;
1478  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_ASSERTIONS';
1479 
1480  m_assertions_code component_code_array;
1481  m_total_control  total_control_array ;
1482  m_ineff_control  ineff_control_array ;
1483  m_acc_assert_flag component_code_array;
1484  m_evaluated_ctrls  total_control_array ;
1485 
1486 -- **m_assert_maped_2_acc component_code_array;
1487 
1488 
1489  m_display_flag varchar2(1) := 'N';
1490 
1491 
1492 
1493 
1494  v_ASSERTION_CODE varchar2(30);
1495 
1496  g_user_id              NUMBER        := fnd_global.user_id;
1497  g_login_id             NUMBER        := fnd_global.conc_login_id;
1498  g_errbuf               VARCHAR2(2000) := null;
1499  g_retcode              VARCHAR2(2)    :=  '0';
1500 
1501 -- *************** Currsor to get all Control for the Fianancial Item being Passed ********** --
1502 
1503 cursor ineff_ctrl_of_item
1504 is
1505 select
1506  count(1) numIneffCtrls,
1507  ASSERTION_CODE
1508 from
1509   (select
1510     distinct
1511     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.ASSERTION_CODE
1512 from
1513   amw.amw_fin_item_acc_ctrl ctrl,
1514   amw_opinions_log_v opinion,
1515   amw_control_assertions comp,
1516   amw_control_associations ctrlAsso
1517 where
1518  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID and
1519  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
1520  ctrl.FINANCIAL_ITEM_ID=  P_FINANCIAL_ITEM_ID and
1521  -- ctrl.ACCOUNT_GROUP_ID is null and
1522  -- ctrl.NATURAL_ACCOUNT_ID is null and
1523  --opinion.OPINION_LOG_ID =   ctrl.OPINION_LOG_ID and
1524  opinion.pk1_value = ctrl.control_id and
1525  opinion.pk3_value = ctrl.ORGANIZATION_ID and
1526  opinion.audit_result_CODE <> 'EFFECTIVE' and
1527  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
1528  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'  and
1529  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID  and
1530   ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
1531  opinion.OPINION_LOG_ID =   ctrlAsso.PK5 and
1532  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
1533  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
1534  ctrlAsso.CONTROL_ID = ctrl.control_id)
1535 group by ASSERTION_CODE;
1536 -------------------------------------------------------------------------------------------
1537 
1538 cursor evaluated_ctrls_of_item
1539 is
1540 select
1541  count(1) numOfEvaluatedCtrls,
1542  ASSERTION_CODE
1543 from
1544   (select
1545     distinct
1546     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.ASSERTION_CODE
1547 from
1548   amw.amw_fin_item_acc_ctrl ctrl,
1549   amw_opinions_v opinion,
1550   amw_control_assertions comp,
1551   amw_control_associations ctrlAsso
1552 where
1553  ctrl.FIN_CERTIFICATION_ID=   P_CERTIFICATION_ID
1554  and
1555  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
1556  ctrl.FINANCIAL_ITEM_ID=  P_FINANCIAL_ITEM_ID
1557  and
1558  opinion.pk1_value = ctrl.control_id and
1559  opinion.pk3_value = ctrl.ORGANIZATION_ID and
1560  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
1561  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'  and
1562  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID  and
1563   ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
1564  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
1565  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
1566  ctrlAsso.CONTROL_ID = ctrl.control_id)
1567 group by ASSERTION_CODE;
1568 
1569 -------------------------------------------------------------------------------------------
1570 
1571 
1572 cursor tot_ctrl_of_item
1573 is
1574 select
1575  count(1) numOfCtrls,
1576  comp.ASSERTION_CODE
1577 from
1578   amw.amw_fin_item_acc_ctrl ctrl,
1579   amw_control_assertions comp
1580 where
1581  ctrl.FIN_CERTIFICATION_ID=P_CERTIFICATION_ID and
1582  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
1583  ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
1584  --ctrl.ACCOUNT_GROUP_ID is null and
1585  --ctrl.NATURAL_ACCOUNT_ID is null and
1586  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID
1587 group by ASSERTION_CODE;
1588 
1589 
1590 
1591 -- *************** Currsor to get all Control for the Fianancial Item being Passed ********** --
1592 
1593 cursor in_eff_ctrl_of_accounts
1594 is
1595 --fix bug 5768982 by dliao on 2-12-2007
1596 /****
1597 select
1598  count(1) numIneffCtrls,
1599  ASSERTION_CODE
1600 from
1601   (select
1602     distinct
1603     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.ASSERTION_CODE
1604  from
1605   amw.amw_fin_item_acc_ctrl ctrl,
1606   amw_opinions_log_v opinion,
1607   amw_control_assertions comp,
1608   amw_control_associations ctrlAsso
1609 where
1610  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID and
1611  ctrl.OBJECT_TYPE = 'ACCOUNT' and
1612  --ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
1613  ctrl.ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID and
1614  NATURAL_ACCOUNT_ID = P_ACCOUNT_ID and
1615  --opinion.OPINION_LOG_ID =   ctrl.OPINION_LOG_ID and
1616  opinion.pk1_value = ctrl.control_id and
1617  opinion.pk3_value = ctrl.ORGANIZATION_ID and
1618  opinion.audit_result_CODE <> 'EFFECTIVE' and
1619  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
1620  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'      and
1621  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
1622   ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
1623  opinion.OPINION_LOG_ID =   ctrlAsso.PK5 and
1624  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
1625  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
1626  ctrlAsso.CONTROL_ID = ctrl.control_id)
1627 group by ASSERTION_CODE;
1628 ***/
1629 SELECT COUNT(1) NUMINEFFCTRLS, ASSERTION_CODE
1630 FROM
1631    (SELECT DISTINCT CTRL.ORGANIZATION_ID, CTRL.CONTROL_ID, COMP.ASSERTION_CODE
1632   FROM AMW.AMW_FIN_ITEM_ACC_CTRL CTRL, AMW_CONTROL_ASSERTIONS COMP
1633   WHERE
1634   CTRL.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID
1635   AND CTRL.OBJECT_TYPE = 'ACCOUNT'
1636   AND CTRL.ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID
1637   AND NATURAL_ACCOUNT_ID = P_ACCOUNT_ID
1638   AND CTRL.CONTROL_REV_ID = COMP.CONTROL_REV_ID
1639   AND EXISTS
1640   (SELECT 1 FROM AMW_OPINIONS_LOG_V OPINION
1641    WHERE OPINION.PK1_VALUE = CTRL.CONTROL_ID
1642    AND OPINION.PK3_VALUE = CTRL.ORGANIZATION_ID
1643    AND OPINION.AUDIT_RESULT_CODE <> 'EFFECTIVE'
1644    AND OPINION.OPINION_TYPE_CODE = 'EVALUATION'
1645    AND OPINION.OBJECT_NAME = 'AMW_ORG_CONTROL'
1646   AND EXISTS
1647   (SELECT 1 FROM AMW_CONTROL_ASSOCIATIONS CTRLASSO
1648   WHERE CTRLASSO.OBJECT_TYPE='RISK_FINCERT'
1649   AND OPINION.OPINION_LOG_ID = CTRLASSO.PK5
1650   AND CTRLASSO.PK1 = P_CERTIFICATION_ID
1651   AND CTRLASSO.PK2 = OPINION.PK3_VALUE
1652   AND CTRLASSO.CONTROL_ID = OPINION.PK1_VALUE
1653   ))) GROUP BY ASSERTION_CODE;
1654 
1655 
1656 -----------------------------------------------------------------------------------------------
1657 cursor total_ctrl_of_accounts
1658 is
1659 select
1660  count(1) numOfCtrls,
1661  comp.ASSERTION_CODE
1662 from
1663   amw.amw_fin_item_acc_ctrl ctrl,
1664   amw_control_assertions comp
1665 where
1666  ctrl.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID and
1667  ctrl.OBJECT_TYPE = 'ACCOUNT' and
1668 -- ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID and
1669  ctrl.ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID and
1670  NATURAL_ACCOUNT_ID =P_ACCOUNT_ID   and
1671  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID
1672 group by  ASSERTION_CODE;
1673 -----------------------------------------------------------------------------------------------
1674 
1675 cursor evaluated_ctrls_of_acc
1676 is
1677 select
1678  count(1) numOfEvaluatedCtrls,
1679  ASSERTION_CODE
1680 from
1681   (select
1682     distinct
1683     ctrl.ORGANIZATION_ID,  ctrl.control_id, comp.ASSERTION_CODE
1684  from
1685   amw.amw_fin_item_acc_ctrl ctrl,
1686   amw_opinions_log_v opinion,
1687   amw_control_assertions comp,
1688   amw_control_associations ctrlAsso
1689 where
1690  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID and
1691  ctrl.OBJECT_TYPE = 'ACCOUNT' and
1692  ctrl.ACCOUNT_GROUP_ID = P_ACCOUNT_GROUP_ID and
1693  NATURAL_ACCOUNT_ID =  P_ACCOUNT_ID and
1694  opinion.pk1_value = ctrl.control_id and
1695  opinion.pk3_value = ctrl.ORGANIZATION_ID and
1696  opinion.OPINION_TYPE_CODE = 'EVALUATION' AND
1697  opinion.OBJECT_NAME = 'AMW_ORG_CONTROL'      and
1698  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
1699   ctrlAsso.OBJECT_TYPE='RISK_FINCERT' and
1700  ctrlAsso.PK1 = ctrl.FIN_CERTIFICATION_ID and
1701  ctrlAsso.PK2 = ctrl.ORGANIZATION_ID  and
1702  ctrlAsso.CONTROL_ID = ctrl.control_id)
1703 group by ASSERTION_CODE;
1704 
1705 
1706 
1707  -- *************** Currsor to get all Control AMW_CONTROL_OBJECTIVES ********** --
1708 
1709 cursor CTRL_ASSERTIONS
1710  is
1711  select
1712   LOOKUP_CODE
1713  from
1714    amw_lookups
1715  where lookup_type = 'AMW_CONTROL_ASSERTIONS';
1716 
1717 --********************* Get Account Assertion COdes FOR AN ACCOUNT *************************************************--
1718 /*
1719 cursor ACC_ASSERT_CODES
1720  is
1721 select
1722 ASSERTION_CODE
1723 from
1724 amw_account_assertions
1725 where
1726 NATURAL_ACCOUNT_ID =P_ACCOUNT_ID  ;
1727 */
1728 
1729 cursor ACC_ASSERT_CODES
1730  is
1731 select
1732 distinct
1733 ASSERTION_CODE
1734 from
1735 amw_account_assertions
1736 where
1737 ((NATURAL_ACCOUNT_ID =P_ACCOUNT_ID) or (NATURAL_ACCOUNT_ID in (select CHILD_NATURAL_ACCOUNT_ID from amw_fin_key_acct_flat
1738 where  PARENT_NATURAL_ACCOUNT_ID  =P_ACCOUNT_ID and ACCOUNT_GROUP_ID=P_ACCOUNT_GROUP_ID)));
1739 
1740 
1741 -- =================================  Get Account Assertion COdes FOR A FINANCIAL ITEM ===============================
1742 cursor ACC_ASSERT_FOR_FIN_ITEM
1743  is
1744 select DISTINCT
1745 ASSERTION_CODE
1746 from
1747 amw_account_assertions
1748 where
1749 NATURAL_ACCOUNT_ID IN
1750 (select DISTINCT NATURAL_ACCOUNT_ID from amw_fin_cert_scope where fin_certification_id = P_CERTIFICATION_ID and
1751 financial_item_id = P_FINANCIAL_ITEM_ID );
1752 
1753 
1754 
1755 -- *****************************************************************************************************
1756 
1757 
1758 
1759 BEGIN
1760 
1761  --m_assertions_code := null;
1762  --ctr := 0;
1763 
1764 
1765  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
1766  ctr :=  1;
1767 
1768  loop
1769    EXIT  WHEN ctr > 30;
1770 
1771     m_assertions_code(ctr) := null;
1772     m_total_control(ctr) := 0;
1773     m_ineff_control(ctr) := 0;
1774     m_evaluated_ctrls(ctr) := 0;
1775 
1776   -- **m_assert_maped_2_acc(ctr) := 'N';
1777 
1778    --**************************************************************************************************************** --
1779    -- DEFAULT ASSUMPTION for m_acc_assert_flag(ctr) : The assertion is Not important for any of the accounts ot accounts
1780    -- of fin. Item then set the flag to 'I', (means ignore this column in the UI) based on which the data will be hidden
1781    -- in the UI
1782    --**************************************************************************************************************** --
1783 
1784     m_acc_assert_flag(ctr) := 'I';
1785 
1786     ctr := ctr + 1;
1787 
1788  end loop; --end of initialization
1789 
1790  -- ************ get All Control Components Codes and Load it in an Array for later use **************--
1791 
1792  ctr := 0;
1793  for coso_rec in CTRL_ASSERTIONS
1794  loop
1795     exit when CTRL_ASSERTIONS%notfound;
1796     ctr := ctr + 1;
1797     m_assertions_code(ctr) := coso_rec.LOOKUP_CODE;
1798 
1799  end loop; --end of CTRL_ASSERTIONS loop
1800 
1801  max_num_of_codes := ctr;
1802 
1803 
1804  --dbms_output.put_line(' max_num_of_codes: ');
1805  --dbms_output.put_line(max_num_of_codes);
1806 
1807 
1808  if  max_num_of_codes > 0 then
1809 
1810      -- ************ get Total Controls and Ineff Ctrl for each Components Codes For a Financial Item**************--
1811 
1812     if P_OBJECT_TYPE = 'FINANCIAL ITEM' then
1813        -- ************ get Total Controls for each Components Codes and Load it in an Array for later use **************--
1814 
1815        for tot_ctrls in tot_ctrl_of_item
1816        loop
1817           exit when tot_ctrl_of_item%notfound;
1818           v_ASSERTION_CODE := tot_ctrls.ASSERTION_CODE;
1819 
1820           ctr := 1;
1821 
1822           --  check the code is in which bucket and the appropriately add the counts
1823 
1824           while ctr <=  max_num_of_codes
1825           loop
1826              if  m_assertions_code(ctr) =  v_ASSERTION_CODE  then
1827 
1828                    m_total_control(ctr) := tot_ctrls.numOfCtrls;
1829 
1830                --dbms_output.put_line( v_ASSERTION_CODE  );
1831                --dbms_output.put_line(' is the code and the total is ');
1832 
1833                --dbms_output.put_line(m_total_control(ctr) );
1834 
1835                 exit;
1836              end if;
1837                  ctr := ctr + 1;
1838 
1839           end loop;
1840       end loop; --end of tot_ctrl_of_item for the Financial Item loop
1841 
1842 
1843     -- ************ get Total Controls Evaluted for each Assertions Codes and Load it in an Array for later use **************--
1844 
1845        for tot_eval_ctrls in evaluated_ctrls_of_item
1846        loop
1847           exit when evaluated_ctrls_of_item%notfound;
1848           v_ASSERTION_CODE := tot_eval_ctrls.ASSERTION_CODE;
1849 
1850           ctr := 1;
1851 
1852           --  check the code is in which bucket and the appropriately add the counts
1853 
1854           while ctr <=  max_num_of_codes
1855           loop
1856             if  m_assertions_code(ctr) =  v_ASSERTION_CODE  then
1857 
1858                     m_evaluated_ctrls(ctr) := tot_eval_ctrls.numOfEvaluatedCtrls;
1859                  exit;
1860              end if;
1861              ctr := ctr + 1;
1862 
1863           end loop;
1864       end loop; --end of evaluated_ctrls_of_item for the Financial Item loop
1865 
1866       -- ************ get Total Ineffective Controls for each Components Codes and Load it in an Array for later use **************--
1867 
1868        for tot_ineff_ctrls in ineff_ctrl_of_item
1869        loop
1870           exit when ineff_ctrl_of_item%notfound;
1871           v_ASSERTION_CODE := tot_ineff_ctrls.ASSERTION_CODE;
1872 
1873           ctr := 1;
1874 
1875           --  check the code is in which bucket and the appropriately add the counts
1876 
1877           while ctr <=  max_num_of_codes
1878           loop
1879              if  m_assertions_code(ctr) =  v_ASSERTION_CODE  then
1880 
1881                     m_ineff_control(ctr) :=  tot_ineff_ctrls.numIneffCtrls ;
1882 
1883 
1884                --dbms_output.put_line( v_ASSERTION_CODE  );
1885                --dbms_output.put_line(' is the code and the ineff ctrl is ');
1886 
1887                --dbms_output.put_line(m_ineff_control(ctr) );
1888 
1889                 exit;
1890              end if;
1891                ctr := ctr + 1;
1892 
1893           end loop;
1894       end loop; --end of tot_ineff_ctrls  for the Financial Item loop
1895 
1896   -- ======================== The Image Display Flag setting should be done last as it need ineffective control array ====== --
1897 
1898        for acc_assertions in ACC_ASSERT_FOR_FIN_ITEM
1899        loop
1900           exit when ACC_ASSERT_FOR_FIN_ITEM%notfound;
1901 
1902           ctr := 1;
1903           while ctr <=  max_num_of_codes
1904           loop
1905 
1906             --************************************************************************************************** --
1907             -- NOT ONLY CHECK WHETHER ONE OF THE ACCOUNT FOR THE FINANCIAL ITEM IS MAPPED TO THE ASSERTION CODE BUT ALSO
1908             -- THERE IS AT LEAST ONE CONROL (WHICH MAPPED TO THE SAME ASSERTION) AND ACCOUNT (THORUGH)
1909             -- IT RELATION TO PROCESS IS INEFFECTIVE
1910             --************************************************************************************************** --
1911 
1912              if  m_assertions_code(ctr) =  acc_assertions.ASSERTION_CODE then
1913 
1914                 -- if the assertion is important for one of the accounts of fin. Item and one of
1915                 -- the control is invlaid then set the flag to 'Y', based on which an image will appear in UI
1916 
1917                 if nvl(m_ineff_control(ctr),0) > 0  then
1918 
1919                    m_acc_assert_flag(ctr) := 'Y';
1920 
1921                 --************************************************************************************************** --
1922                 -- else if the assertion is important for one of the accounts of fin. Item and No controls exist for the
1923                 --  processes associated with the accounts then set the flag to 'Y', based on which an image will
1924                 --- appear in UI
1925                 --************************************************************************************************** --
1926 
1927                  elsif (nvl(m_total_control(ctr),0) = 0) then
1928 
1929                    m_acc_assert_flag(ctr) := 'Y';
1930 
1931 
1932                  --- ********** ie assertion is Not important for any of the accounts of fin. Item  and(nvl(m_total_control(ctr),0) > 0)
1933                  else
1934                     m_acc_assert_flag(ctr) := 'N';
1935 
1936                  end if;
1937 
1938                 exit;
1939              end if;
1940 
1941              ctr := ctr +1;
1942           end loop;
1943        end loop; --end of acc_assertions in ACC_ASSERT_FOR_FIN_ITEM
1944 
1945 --------------------------**********************************************------------------------
1946 
1947 
1948     end if; -- ****************** end if for P_OBJECT_TYPE = 'FINANCIAL ITEM'
1949 
1950 
1951      -- ******************************************************************************************** ----
1952      -- ************ get Total Controls and Ineff Ctrl for each Components Codes For a Account **************--
1953      -- ********************************************************************************************----
1954 
1955     if P_OBJECT_TYPE = 'ACCOUNT' then
1956 
1957        -- ************ get Total Controls for each Components Codes and Load it in an Array for later use **************--
1958 
1959        for tot_ctrls_acc in total_ctrl_of_accounts
1960        loop
1961           exit when total_ctrl_of_accounts%notfound;
1962           v_ASSERTION_CODE := tot_ctrls_acc.ASSERTION_CODE;
1963 
1964           ctr := 1;
1965 
1966           --  check the code is in which bucket and the appropriately add the counts
1967 
1968           while ctr <=  max_num_of_codes
1969           loop
1970              if  m_assertions_code(ctr) =  v_ASSERTION_CODE  then
1971 
1972                     m_total_control(ctr) := tot_ctrls_acc.numOfCtrls;
1973 
1974                 exit;
1975              end if;
1976             ctr := ctr + 1;
1977           end loop;
1978       end loop; --end of total_ctrl_of_accounts   for the Account loop
1979 
1980    -- ************ get Total Controls Evaluted for each Components Codes and Load it in an Array for later use **************--
1981 
1982        for tot_eval_ctrls in evaluated_ctrls_of_acc
1983        loop
1984           exit when evaluated_ctrls_of_acc%notfound;
1985             v_ASSERTION_CODE := tot_eval_ctrls.ASSERTION_CODE;
1986 
1987           ctr := 1;
1988 
1989           --  check the code is in which bucket and the appropriately add the counts
1990 
1991           while ctr <=  max_num_of_codes
1992           loop
1993                if  m_assertions_code(ctr) =  v_ASSERTION_CODE  then
1994 
1995                      m_evaluated_ctrls(ctr) := tot_eval_ctrls.numOfEvaluatedCtrls;
1996 
1997                 exit;
1998              end if;
1999              ctr := ctr + 1;
2000 
2001           end loop;
2002       end loop; --end of evaluated_ctrls_of_acc for the Account loop
2003 
2004 
2005       -- ************ get Total Ineffective Controls for each Components Codes and Load it in an Array for later use **************--
2006 
2007        for tot_ineff_ctrls_acc in in_eff_ctrl_of_accounts
2008        loop
2009           exit when in_eff_ctrl_of_accounts%notfound;
2010           v_ASSERTION_CODE := tot_ineff_ctrls_acc.ASSERTION_CODE;
2011 
2012           ctr := 1;
2013 
2014           --  check the code is in which bucket and the appropriately add the counts
2015 
2016           while ctr <=  max_num_of_codes
2017           loop
2018              if  m_assertions_code(ctr) =  v_ASSERTION_CODE  then
2019 
2020 
2021                     m_ineff_control(ctr) :=  tot_ineff_ctrls_acc.numIneffCtrls;
2022 
2023 
2024                 exit;
2025              end if;
2026              ctr := ctr + 1;
2027           end loop;
2028       end loop; --end of in_eff_ctrl_of_accounts  for the Account loop
2029 
2030 
2031   --************ The Image Display Flag setting should be done last as it need ineffective control array *********--
2032 
2033        for acc_assertions in ACC_ASSERT_CODES
2034        loop
2035           exit when ACC_ASSERT_CODES%notfound;
2036 
2037           ctr := 1;
2038           while ctr <=  max_num_of_codes
2039           loop
2040 
2041             -- NOT ONLY CHECK WHETHER THE ACCOUNT IS MAPPED TO THE ASSERTION CODE BUT ALSO
2042             -- THERE IS AT LEASE ONE CONROL (WHICH MAPPED TO THE SAME ASSERTION) AND ACCOUNT (THORUGH)
2043             -- IT RELATION TO PROCESS IS INEFFECTIVE
2044 
2045              if  (m_assertions_code(ctr) =  acc_assertions.ASSERTION_CODE) then
2046 
2047                 -- if the assertion is important for the accounts and one of
2048                 -- the control is invlaid then set the flag to 'Y', based on which an image will appear in UI
2049 
2050 
2051                 if nvl(m_ineff_control(ctr),0) > 0  then
2052 
2053                    m_acc_assert_flag(ctr) := 'Y';
2054 
2055                 --************************************************************************************************** --
2056                 -- else if the assertion is important for the account and No controls exist for the
2057                 --  processes associated with the accounts then set the flag to 'Y', based on which an image will
2058                 --- appear in UI
2059                 --************************************************************************************************** --
2060 
2061                  elsif (nvl(m_total_control(ctr),0) = 0) then
2062 
2063                    m_acc_assert_flag(ctr) := 'Y';
2064 
2065 
2066                  --- ********** ie assertion is Not important for the account and(nvl(m_total_control(ctr),0) > 0)
2067                  else
2068                     m_acc_assert_flag(ctr) := 'N';
2069 
2070                  end if;
2071 
2072                 exit;
2073              end if;
2074              ctr := ctr +1;
2075           end loop;
2076        end loop; --end of acc_assertions in ACC_ASSERT_CODES
2077   --------------------------**********************************************------------------------
2078 
2079     end if; -- end if for P_OBJECT_TYPE = 'ACCOUNT'
2080 
2081 
2082    -- ************* Check at lease one control exists for the row *******************************
2083 
2084 
2085     if set_flag_for_assertions( assert_acc_reln_exist=>  m_acc_assert_flag) then
2086 
2087         m_display_flag := 'Y';
2088      else
2089         m_display_flag := 'N';
2090      end if;
2091 
2092 
2093 
2094     -- ************************** CALL Proc to Insert Data into the Table **************************************** --
2095 
2096      --dbms_output.put_line('Objective - before inserting data');
2097 
2098     amw_fin_coso_views_pvt.INSERT_ROW(
2099      x_fin_certification_id       	=> 	P_CERTIFICATION_ID	,
2100      x_financial_statement_id    	=> 	P_FINANCIAL_STATEMENT_ID 	,
2101      x_financial_item_id         	=> 	P_FINANCIAL_ITEM_ID 	,
2102      x_account_group_id          	=> 	P_ACCOUNT_GROUP_ID  	,
2103      x_natural_account_id        	=> 	P_ACCOUNT_ID        	,
2104      x_object_type               	=> 	P_OBJECT_TYPE 	,
2105      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type       	,
2106      x_ctrl_attr_code_1          	=> 	m_assertions_code(1)	,
2107      x_ineff_ctrl_attr_1         	=> 	m_ineff_control(1)	,
2108      x_total_ctrl_attr_1         	=> 	m_total_control(1)	,
2109      x_ctrl_attr_code_2          	=> 	m_assertions_code(2)	,
2110      x_ineff_ctrl_attr_2         	=> 	m_ineff_control(2)	,
2111      x_total_ctrl_attr_2         	=> 	m_total_control(2)	,
2112      x_ctrl_attr_code_3          	=> 	m_assertions_code(3)	,
2113      x_ineff_ctrl_attr_3         	=> 	m_ineff_control(3)	,
2114      x_total_ctrl_attr_3         	=> 	m_total_control(3)	,
2115      x_ctrl_attr_code_4          	=> 	m_assertions_code(4)	,
2116      x_ineff_ctrl_attr_4         	=> 	m_ineff_control(4)	,
2117      x_total_ctrl_attr_4         	=> 	m_total_control(4)	,
2118      x_ctrl_attr_code_5          	=> 	m_assertions_code(5)	,
2119      x_ineff_ctrl_attr_5         	=> 	m_ineff_control(5)	,
2120      x_total_ctrl_attr_5         	=> 	m_total_control(5)	,
2121      x_ctrl_attr_code_6          	=> 	m_assertions_code(6)	,
2122      x_ineff_ctrl_attr_6         	=> 	m_ineff_control(6)	,
2123      x_total_ctrl_attr_6         	=> 	m_total_control(6)	,
2124      x_ctrl_attr_code_7          	=> 	m_assertions_code(7)	,
2125      x_ineff_ctrl_attr_7         	=> 	m_ineff_control(7)	,
2126      x_total_ctrl_attr_7         	=> 	m_total_control(7)	,
2127      x_ctrl_attr_code_8          	=> 	m_assertions_code(8)	,
2128      x_ineff_ctrl_attr_8         	=> 	m_ineff_control(8)	,
2129      x_total_ctrl_attr_8         	=> 	m_total_control(8)	,
2130      x_ctrl_attr_code_9         	=> 	m_assertions_code(9)	,
2131      x_ineff_ctrl_attr_9         	=> 	m_ineff_control(9)	,
2132      x_total_ctrl_attr_9         	=> 	m_total_control(9)	,
2133      x_ctrl_attr_code_10         	=> 	m_assertions_code(10)	,
2134      x_ineff_ctrl_attr_10        	=> 	m_ineff_control(10)	,
2135      x_total_ctrl_attr_10        	=> 	m_total_control(10)	,
2136      x_ctrl_attr_code_11         	=> 	m_assertions_code(11)	,
2137      x_ineff_ctrl_attr_11        	=> 	m_ineff_control(11)	,
2138      x_total_ctrl_attr_11        	=> 	m_total_control(11)	,
2139      x_ctrl_attr_code_12         	=> 	m_assertions_code(12)	,
2140      x_ineff_ctrl_attr_12        	=> 	m_ineff_control(12)	,
2141      x_total_ctrl_attr_12        	=> 	m_total_control(12)	,
2142      x_ctrl_attr_code_13         	=> 	m_assertions_code(13)	,
2143      x_ineff_ctrl_attr_13        	=> 	m_ineff_control(13)	,
2144      x_total_ctrl_attr_13        	=> 	m_total_control(13)	,
2145      x_ctrl_attr_code_14         	=> 	m_assertions_code(14)	,
2146      x_ineff_ctrl_attr_14        	=> 	m_ineff_control(14)	,
2147      x_total_ctrl_attr_14        	=> 	m_total_control(14)	,
2148      x_ctrl_attr_code_15         	=> 	m_assertions_code(15)	,
2149      x_ineff_ctrl_attr_15        	=> 	m_ineff_control(15)	,
2150      x_total_ctrl_attr_15        	=> 	m_total_control(15)	,
2151      x_ctrl_attr_code_16         	=> 	m_assertions_code(16)	,
2152      x_ineff_ctrl_attr_16        	=> 	m_ineff_control(16)	,
2153      x_total_ctrl_attr_16        	=> 	m_total_control(16)	,
2154      x_ctrl_attr_code_17         	=> 	m_assertions_code(17)	,
2155      x_ineff_ctrl_attr_17        	=> 	m_ineff_control(17)	,
2156      x_total_ctrl_attr_17        	=> 	m_total_control(17)	,
2157      x_ctrl_attr_code_18         	=> 	m_assertions_code(18)	,
2158      x_ineff_ctrl_attr_18        	=> 	m_ineff_control(18)	,
2159      x_total_ctrl_attr_18        	=> 	m_total_control(18)	,
2160      x_ctrl_attr_code_19         	=> 	m_assertions_code(19)	,
2161      x_ineff_ctrl_attr_19        	=> 	m_ineff_control(19)	,
2162      x_total_ctrl_attr_19        	=> 	m_total_control(19)	,
2163      x_ctrl_attr_code_20         	=> 	m_assertions_code(20)	,
2164      x_ineff_ctrl_attr_20        	=> 	m_ineff_control(20)	,
2165      x_total_ctrl_attr_20        	=> 	m_total_control(20)	,
2166      x_ctrl_attr_code_21         	=> 	m_assertions_code(21)	,
2167      x_ineff_ctrl_attr_21        	=> 	m_ineff_control(21)	,
2168      x_total_ctrl_attr_21        	=> 	m_total_control(21)	,
2169      x_ctrl_attr_code_22         	=> 	m_assertions_code(22)	,
2170      x_ineff_ctrl_attr_22        	=> 	m_ineff_control(22)	,
2171      x_total_ctrl_attr_22        	=> 	m_total_control(22)	,
2172      x_ctrl_attr_code_23         	=> 	m_assertions_code(23)	,
2173      x_ineff_ctrl_attr_23        	=> 	m_ineff_control(23)	,
2174      x_total_ctrl_attr_23        	=> 	m_total_control(23)	,
2175      x_ctrl_attr_code_24         	=> 	m_assertions_code(24)	,
2176      x_ineff_ctrl_attr_24         	=> 	m_ineff_control(24)	,
2177      x_total_ctrl_attr_24        	=> 	m_total_control(24)	,
2178      x_ctrl_attr_code_25         	=> 	m_assertions_code(25)	,
2179      x_ineff_ctrl_attr_25        	=> 	m_ineff_control(25)	,
2180      x_total_ctrl_attr_25        	=> 	m_total_control(25)	,
2181      x_ctrl_attr_code_26         	=> 	m_assertions_code(26)	,
2182      x_ineff_ctrl_attr_26        	=> 	m_ineff_control(26)	,
2183      x_total_ctrl_attr_26        	=> 	m_total_control(26)	,
2184      x_ctrl_attr_code_27         	=> 	m_assertions_code(27)	,
2185      x_ineff_ctrl_attr_27        	=> 	m_ineff_control(27)	,
2186      x_total_ctrl_attr_27        	=> 	m_total_control(27)	,
2187      x_ctrl_attr_code_28         	=> 	m_assertions_code(28)	,
2188      x_ineff_ctrl_attr_28        	=> 	m_ineff_control(28)	,
2189      x_total_ctrl_attr_28        	=> 	m_total_control(28)	,
2190      x_ctrl_attr_code_29         	=> 	m_assertions_code(29)	,
2191      x_ineff_ctrl_attr_29        	=> 	m_ineff_control(29)	,
2192      x_total_ctrl_attr_29        	=> 	m_total_control(29)	,
2193      x_ctrl_attr_code_30         	=> 	m_assertions_code(30)	,
2194      x_ineff_ctrl_attr_30        	=> 	m_ineff_control(30)	,
2195      x_total_ctrl_attr_30        	=> 	m_total_control(30)	,
2196      x_created_by                	=> 	g_user_id	,
2197      x_creation_date             	=> 	SYSDATE	,
2198      x_last_updated_by           	=> 	g_user_id	,
2199      x_last_update_date          	=> 	SYSDATE	,
2200      x_last_update_login         	=> 	g_login_id	,
2201      --x_security_group_id         	=> 	null	,
2202      x_object_version_number     	=> 	null	,
2203      x_acc_assert_flag1         	=> 	m_acc_assert_flag(1),
2204      x_acc_assert_flag2         	=> 	m_acc_assert_flag(2),
2205      x_acc_assert_flag3         	=> 	m_acc_assert_flag(3),
2206      x_acc_assert_flag4         	=> 	m_acc_assert_flag(4),
2207      x_acc_assert_flag5         	=> 	m_acc_assert_flag(5),
2208      x_acc_assert_flag6         	=> 	m_acc_assert_flag(6),
2209      x_acc_assert_flag7         	=> 	m_acc_assert_flag(7),
2210      x_acc_assert_flag8         	=> 	m_acc_assert_flag(8),
2211      x_acc_assert_flag9         	=> 	m_acc_assert_flag(9),
2212      x_acc_assert_flag10        	=> 	m_acc_assert_flag(10),
2213      x_acc_assert_flag11         	=> 	m_acc_assert_flag(11),
2214      x_acc_assert_flag12         	=> 	m_acc_assert_flag(12),
2215      x_acc_assert_flag13         	=> 	m_acc_assert_flag(13),
2216      x_acc_assert_flag14         	=> 	m_acc_assert_flag(14),
2217      x_acc_assert_flag15         	=> 	m_acc_assert_flag(15),
2218      x_acc_assert_flag16         	=> 	m_acc_assert_flag(16),
2219      x_acc_assert_flag17         	=> 	m_acc_assert_flag(17),
2220      x_acc_assert_flag18         	=> 	m_acc_assert_flag(18),
2221      x_acc_assert_flag19         	=> 	m_acc_assert_flag(19),
2222      x_acc_assert_flag20        	=> 	m_acc_assert_flag(20),
2223      x_acc_assert_flag21         	=> 	m_acc_assert_flag(21),
2224      x_acc_assert_flag22         	=> 	m_acc_assert_flag(22),
2225      x_acc_assert_flag23         	=> 	m_acc_assert_flag(23),
2226      x_acc_assert_flag24         	=> 	m_acc_assert_flag(24),
2227      x_acc_assert_flag25         	=> 	m_acc_assert_flag(25),
2228      x_acc_assert_flag26         	=> 	m_acc_assert_flag(26),
2229      x_acc_assert_flag27         	=> 	m_acc_assert_flag(27),
2230      x_acc_assert_flag28         	=> 	m_acc_assert_flag(28),
2231      x_acc_assert_flag29         	=> 	m_acc_assert_flag(29),
2232      x_acc_assert_flag30        	=> 	m_acc_assert_flag(30),
2233      x_eval_ctrl_attr_1         	=> 	m_evaluated_ctrls(1),
2234      x_eval_ctrl_attr_2         	=> 	m_evaluated_ctrls(2),
2235      x_eval_ctrl_attr_3         	=> 	m_evaluated_ctrls(3),
2236      x_eval_ctrl_attr_4         	=> 	m_evaluated_ctrls(4),
2237      x_eval_ctrl_attr_5         	=> 	m_evaluated_ctrls(5),
2238      x_eval_ctrl_attr_6         	=> 	m_evaluated_ctrls(6),
2239      x_eval_ctrl_attr_7         	=> 	m_evaluated_ctrls(7),
2240      x_eval_ctrl_attr_8         	=> 	m_evaluated_ctrls(8),
2241      x_eval_ctrl_attr_9         	=> 	m_evaluated_ctrls(9),
2242      x_eval_ctrl_attr_10        	=> 	m_evaluated_ctrls(10),
2243      x_eval_ctrl_attr_11         	=> 	m_evaluated_ctrls(11),
2244      x_eval_ctrl_attr_12         	=> 	m_evaluated_ctrls(12),
2245      x_eval_ctrl_attr_13         	=> 	m_evaluated_ctrls(13),
2246      x_eval_ctrl_attr_14         	=> 	m_evaluated_ctrls(14),
2247      x_eval_ctrl_attr_15         	=> 	m_evaluated_ctrls(15),
2248      x_eval_ctrl_attr_16         	=> 	m_evaluated_ctrls(16),
2249      x_eval_ctrl_attr_17         	=> 	m_evaluated_ctrls(17),
2250      x_eval_ctrl_attr_18         	=> 	m_evaluated_ctrls(18),
2251      x_eval_ctrl_attr_19         	=> 	m_evaluated_ctrls(19),
2252      x_eval_ctrl_attr_20        	=> 	m_evaluated_ctrls(20),
2253      x_eval_ctrl_attr_21         	=> 	m_evaluated_ctrls(21),
2254      x_eval_ctrl_attr_22         	=> 	m_evaluated_ctrls(22),
2255      x_eval_ctrl_attr_23         	=> 	m_evaluated_ctrls(23),
2256      x_eval_ctrl_attr_24         	=> 	m_evaluated_ctrls(24),
2257      x_eval_ctrl_attr_25         	=> 	m_evaluated_ctrls(25),
2258      x_eval_ctrl_attr_26         	=> 	m_evaluated_ctrls(26),
2259      x_eval_ctrl_attr_27         	=> 	m_evaluated_ctrls(27),
2260      x_eval_ctrl_attr_28         	=> 	m_evaluated_ctrls(28),
2261      x_eval_ctrl_attr_29         	=> 	m_evaluated_ctrls(29),
2262      x_eval_ctrl_attr_30        	=> 	m_evaluated_ctrls(30),
2263      x_display_flag        	        => 	 m_display_flag );
2264 
2265  end if; -- end if for max_num_of_codes
2266 
2267 
2268  -- ************  EXCEPTION definitions for the Procedure **************--
2269 
2270 EXCEPTION
2271      WHEN NO_DATA_FOUND
2272 	     THEN
2273                  --dbms_output.put_line('Objective - NO_DATA_FOUND');
2274 
2275             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_Next_Level_Proc_Info'
2276                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
2277 
2278      WHEN OTHERS
2279          THEN
2280                  --dbms_output.put_line('Objective -WHEN OTHERS');
2281 
2282             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_Next_Level_Proc_Info'
2283                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
2284 
2285 ---COMMIT;
2286 end;
2287 end ; --create_fin_ctrl_components
2288 
2289 /* ******************************************************************************************************** */
2290 
2291 
2292 
2293 
2294 
2295 /* **************************** DELETE_ROWS in case of refresh data for a particular certification ******************* */
2296 
2297 procedure DELETE_ROWS ( x_fin_certification_id    NUMBER  ) IS
2298 
2299 begin
2300 
2301 DELETE
2302 from
2303  amw_fin_cert_ctrl_sum
2304 where
2305  fin_certification_id     = x_fin_certification_id  ;
2306 
2307 
2308 EXCEPTION
2309 WHEN OTHERS THEN
2310  fnd_file.put_line(fnd_file.LOG, SUBSTR (SQLERRM, 1, 2000));
2311 -- dbms_output.put_line(SQLERRM);
2312   fnd_file.put_line(fnd_file.LOG,  'fin_certification_id  ' || x_fin_certification_id  );
2313 
2314 -- g_errbuf := SUBSTR (SQLERRM, 1, 2000)  ;
2315 -- g_retcode := '2';
2316 
2317  RAISE ;
2318  RETURN;
2319 
2320 end DELETE_ROWS ;
2321 
2322 -------------------------------------------------------------------------------------
2323 /* ************** Check at least one control exists and set display flag to Yes **********************************/
2324 
2325 function set_display_flag(control_exists_array total_control_array)
2326 return boolean is
2327 begin
2328  declare
2329   ctr number := 1;
2330 
2331   begin
2332 
2333    --  Check at least one control exists and set display flag to Yes
2334 
2335 
2336    while ctr <=  30
2337    loop
2338 
2339 
2340  -- ========= nvl was introduced --
2341 
2342    if  nvl(control_exists_array(ctr),0) > 0 then
2343        return True;
2344        exit;
2345    end if;
2346    ctr := ctr + 1;
2347 
2348    end loop;
2349    return False;
2350  END;
2351 end set_display_flag;
2352 -------------------------------------------------------------------------------------
2353 /* ************** Check at least one assertion is important to the Item or Accounts before setting display flag to Yes **********************************/
2354 
2355 function set_flag_for_assertions( assert_acc_reln_exist component_code_array)
2356 return boolean is
2357 begin
2358  declare
2359   ctr number := 1;
2360 
2361   begin
2362 
2363    --******************************************************************************************************************
2364    --  Check at least one assertion is mapped to the account or the accounts of the fin. item and then set display flag
2365    -- to Yes in the UI Page this FALG is used to control whether to show a line will all column values 0 (zero) or not..
2366    --******************************************************************************************************************
2367    while ctr <=  30
2368    loop
2369 
2370    -- "Y" means a relation between account/fin item and the an Assertion exists and it also has an ineffective or zero control
2371    -- "N" means a relation between account/fin item and the an Assertion exists and it has controls but no ineffective ones.
2372    -- The other value do the assert_acc_reln_exist could be "I" , means ignore this column and not intersted in the UI. If all
2373    -- column are to be ignored (I), the whole record need not be displayed,hence the DISPLAY_FLAG will be set to "N"
2374 
2375 
2376    if  (assert_acc_reln_exist(ctr) = 'Y' or assert_acc_reln_exist(ctr) = 'N') then
2377        return True;
2378        exit;
2379    end if;
2380    ctr := ctr + 1;
2381 
2382    end loop;
2383    return False;
2384  END;
2385 end set_flag_for_assertions;
2386 
2387 
2388 /* ******************************************* INSERT_ROW  ************************************************************* */
2389 
2390 procedure INSERT_ROW (
2391  x_fin_certification_id       	NUMBER  ,
2392  x_financial_statement_id    	 NUMBER ,
2393  x_financial_item_id         	 NUMBER ,
2394  x_account_group_id          	 NUMBER,
2395  x_natural_account_id        	 NUMBER,
2396  x_object_type               	 VARCHAR2,
2397  x_ctrl_attribute_type       	 VARCHAR2,
2398  x_ctrl_attr_code_1          	 VARCHAR2,
2399  x_ineff_ctrl_attr_1         	 NUMBER,
2400  x_total_ctrl_attr_1         	 NUMBER,
2401  x_ctrl_attr_code_2          	 VARCHAR2,
2402  x_ineff_ctrl_attr_2         	 NUMBER,
2403  x_total_ctrl_attr_2         	 NUMBER,
2404  x_ctrl_attr_code_3          	 VARCHAR2,
2405  x_ineff_ctrl_attr_3         	 NUMBER,
2406  x_total_ctrl_attr_3         	 NUMBER,
2407  x_ctrl_attr_code_4          	 VARCHAR2,
2408  x_ineff_ctrl_attr_4         	 NUMBER,
2409  x_total_ctrl_attr_4         	 NUMBER,
2410  x_ctrl_attr_code_5          	 VARCHAR2,
2411  x_ineff_ctrl_attr_5         	 NUMBER,
2412  x_total_ctrl_attr_5         	 NUMBER,
2413  x_ctrl_attr_code_6          	 VARCHAR2,
2414  x_ineff_ctrl_attr_6         	 NUMBER,
2415  x_total_ctrl_attr_6         	 NUMBER,
2416  x_ctrl_attr_code_7          	 VARCHAR2,
2417  x_ineff_ctrl_attr_7         	 NUMBER,
2418  x_total_ctrl_attr_7         	 NUMBER,
2419  x_ctrl_attr_code_8          	 VARCHAR2,
2420  x_ineff_ctrl_attr_8         	 NUMBER,
2421  x_total_ctrl_attr_8         	 NUMBER,
2422  x_ctrl_attr_code_9         	  VARCHAR2,
2423  x_ineff_ctrl_attr_9         	 NUMBER,
2424  x_total_ctrl_attr_9         	 NUMBER,
2425  x_ctrl_attr_code_10         	  VARCHAR2,
2426  x_ineff_ctrl_attr_10        	  NUMBER,
2427  x_total_ctrl_attr_10        	  NUMBER,
2428  x_ctrl_attr_code_11         	  VARCHAR2,
2429  x_ineff_ctrl_attr_11        	  NUMBER,
2430  x_total_ctrl_attr_11        	  NUMBER,
2431  x_ctrl_attr_code_12         	  VARCHAR2,
2432  x_ineff_ctrl_attr_12        	  NUMBER,
2433  x_total_ctrl_attr_12        	  NUMBER,
2434  x_ctrl_attr_code_13         	  VARCHAR2,
2435  x_ineff_ctrl_attr_13        	  NUMBER,
2436  x_total_ctrl_attr_13        	  NUMBER,
2437  x_ctrl_attr_code_14         	  VARCHAR2,
2438  x_ineff_ctrl_attr_14        	  NUMBER,
2439  x_total_ctrl_attr_14        	  NUMBER,
2440  x_ctrl_attr_code_15         	  VARCHAR2,
2441  x_ineff_ctrl_attr_15        	  NUMBER,
2442  x_total_ctrl_attr_15        	  NUMBER,
2443  x_ctrl_attr_code_16         	  VARCHAR2,
2444  x_ineff_ctrl_attr_16        	  NUMBER,
2445  x_total_ctrl_attr_16        	  NUMBER,
2446  x_ctrl_attr_code_17         	  VARCHAR2,
2447  x_ineff_ctrl_attr_17        	  NUMBER,
2448  x_total_ctrl_attr_17        	  NUMBER,
2449  x_ctrl_attr_code_18         	  VARCHAR2,
2450  x_ineff_ctrl_attr_18        	  NUMBER,
2451  x_total_ctrl_attr_18        	  NUMBER,
2452  x_ctrl_attr_code_19         	  VARCHAR2,
2453  x_ineff_ctrl_attr_19        	  NUMBER,
2454  x_total_ctrl_attr_19        	  NUMBER,
2455  x_ctrl_attr_code_20         	  VARCHAR2,
2456  x_ineff_ctrl_attr_20        	  NUMBER,
2457  x_total_ctrl_attr_20        	  NUMBER,
2458  x_ctrl_attr_code_21         	  VARCHAR2,
2459  x_ineff_ctrl_attr_21        	  NUMBER,
2460  x_total_ctrl_attr_21        	  NUMBER,
2461  x_ctrl_attr_code_22         	  VARCHAR2,
2462  x_ineff_ctrl_attr_22        	  NUMBER,
2463  x_total_ctrl_attr_22        	  NUMBER,
2464  x_ctrl_attr_code_23         	  VARCHAR2,
2465  x_ineff_ctrl_attr_23        	  NUMBER,
2466  x_total_ctrl_attr_23        	  NUMBER,
2467  x_ctrl_attr_code_24         	  VARCHAR2,
2468  x_ineff_ctrl_attr_24         	 NUMBER,
2469  x_total_ctrl_attr_24        	  NUMBER,
2470  x_ctrl_attr_code_25         	  VARCHAR2,
2471  x_ineff_ctrl_attr_25        	  NUMBER,
2472  x_total_ctrl_attr_25        	  NUMBER,
2473  x_ctrl_attr_code_26         	  VARCHAR2,
2474  x_ineff_ctrl_attr_26        	  NUMBER,
2475  x_total_ctrl_attr_26        	  NUMBER,
2476  x_ctrl_attr_code_27         	  VARCHAR2,
2477  x_ineff_ctrl_attr_27        	  NUMBER,
2478  x_total_ctrl_attr_27        	  NUMBER,
2479  x_ctrl_attr_code_28         	  VARCHAR2,
2480  x_ineff_ctrl_attr_28        	  NUMBER,
2481  x_total_ctrl_attr_28        	  NUMBER,
2482  x_ctrl_attr_code_29         	  VARCHAR2,
2483  x_ineff_ctrl_attr_29        	  NUMBER,
2484  x_total_ctrl_attr_29        	  NUMBER,
2485  x_ctrl_attr_code_30         	  VARCHAR2,
2486  x_ineff_ctrl_attr_30        	  NUMBER,
2487  x_total_ctrl_attr_30        	  NUMBER,
2488  x_created_by                	 NUMBER ,
2489  x_creation_date             	 DATE ,
2490  x_last_updated_by           	 NUMBER,
2491  x_last_update_date          	 DATE ,
2492  x_last_update_login         	 NUMBER,
2493 -- x_security_group_id         	 NUMBER,
2494  x_object_version_number     	 NUMBER,
2495 x_acc_assert_flag1         	  VARCHAR2,
2496 x_acc_assert_flag2         	  VARCHAR2,
2497 x_acc_assert_flag3         	  VARCHAR2,
2498 x_acc_assert_flag4         	  VARCHAR2,
2499 x_acc_assert_flag5         	  VARCHAR2,
2500 x_acc_assert_flag6         	  VARCHAR2,
2501 x_acc_assert_flag7         	  VARCHAR2,
2502 x_acc_assert_flag8         	  VARCHAR2,
2503 x_acc_assert_flag9         	  VARCHAR2,
2504 x_acc_assert_flag10        	  VARCHAR2,
2505 x_acc_assert_flag11         	  VARCHAR2,
2506 x_acc_assert_flag12         	  VARCHAR2,
2507 x_acc_assert_flag13         	  VARCHAR2,
2508 x_acc_assert_flag14         	  VARCHAR2,
2509 x_acc_assert_flag15         	  VARCHAR2,
2510 x_acc_assert_flag16         	  VARCHAR2,
2511 x_acc_assert_flag17         	  VARCHAR2,
2512 x_acc_assert_flag18         	  VARCHAR2,
2513 x_acc_assert_flag19         	  VARCHAR2,
2514 x_acc_assert_flag20        	  VARCHAR2,
2515 x_acc_assert_flag21         	  VARCHAR2,
2516 x_acc_assert_flag22         	  VARCHAR2,
2517 x_acc_assert_flag23         	  VARCHAR2,
2518 x_acc_assert_flag24         	  VARCHAR2,
2519 x_acc_assert_flag25         	  VARCHAR2,
2520 x_acc_assert_flag26         	  VARCHAR2,
2521 x_acc_assert_flag27         	  VARCHAR2,
2522 x_acc_assert_flag28         	  VARCHAR2,
2523 x_acc_assert_flag29         	  VARCHAR2,
2524 x_acc_assert_flag30        	  VARCHAR2,
2525 x_eval_ctrl_attr_1         	  NUMBER,
2526 x_eval_ctrl_attr_2         	  NUMBER,
2527 x_eval_ctrl_attr_3         	  NUMBER,
2528 x_eval_ctrl_attr_4         	  NUMBER,
2529 x_eval_ctrl_attr_5         	  NUMBER,
2530 x_eval_ctrl_attr_6         	  NUMBER,
2531 x_eval_ctrl_attr_7         	  NUMBER,
2532 x_eval_ctrl_attr_8         	  NUMBER,
2533 x_eval_ctrl_attr_9         	  NUMBER,
2534 x_eval_ctrl_attr_10        	  NUMBER,
2535 x_eval_ctrl_attr_11         	  NUMBER,
2536 x_eval_ctrl_attr_12         	  NUMBER,
2537 x_eval_ctrl_attr_13         	  NUMBER,
2538 x_eval_ctrl_attr_14         	  NUMBER,
2539 x_eval_ctrl_attr_15         	  NUMBER,
2540 x_eval_ctrl_attr_16         	  NUMBER,
2541 x_eval_ctrl_attr_17         	  NUMBER,
2542 x_eval_ctrl_attr_18         	  NUMBER,
2543 x_eval_ctrl_attr_19         	  NUMBER,
2544 x_eval_ctrl_attr_20        	  NUMBER,
2545 x_eval_ctrl_attr_21         	  NUMBER,
2546 x_eval_ctrl_attr_22         	  NUMBER,
2547 x_eval_ctrl_attr_23         	  NUMBER,
2548 x_eval_ctrl_attr_24         	  NUMBER,
2549 x_eval_ctrl_attr_25         	  NUMBER,
2550 x_eval_ctrl_attr_26         	  NUMBER,
2551 x_eval_ctrl_attr_27         	  NUMBER,
2552 x_eval_ctrl_attr_28         	  NUMBER,
2553 x_eval_ctrl_attr_29         	  NUMBER,
2554 x_eval_ctrl_attr_30        	  NUMBER,
2555 x_display_flag              	  VARCHAR2
2556 ) is
2557 
2558 begin
2559 declare
2560  var_fin_certification_id  number;
2561 
2562 m_object_version_number NUMBER := 1;
2563 
2564 
2565 
2566  begin
2567 
2568 /*  select
2569       fin_certification_id       into var_fin_certification_id
2570 from
2571  amw_fin_cert_ctrl_sum
2572 where
2573  fin_certification_id     = x_fin_certification_id      and
2574  financial_statement_id   = x_financial_statement_id    and
2575  NVL(financial_item_id, -1)        = NVL(x_financial_item_id, -1) and
2576  NVL(account_group_id, -1) =  NVL(x_account_group_id, -1) and
2577  nvl(natural_account_id, -1) = nvl(x_natural_account_id, -1)   and
2578  CTRL_ATTRIBUTE_TYPE =  x_ctrl_attribute_type       and
2579  object_type	= x_object_type       ;
2580  EXCEPTION
2581 WHEN NO_DATA_FOUND THEN
2582 */
2583  --dbms_output.put_line('inserting data');
2584 
2585  insert into amw_fin_cert_ctrl_sum (
2586  fin_certification_id      ,
2587  financial_statement_id    ,
2588  financial_item_id         ,
2589  account_group_id          ,
2590  natural_account_id        ,
2591  object_type               ,
2592  ctrl_attribute_type       ,
2593  ctrl_attr_code_1          ,
2594  ineff_ctrl_attr_1         ,
2595  total_ctrl_attr_1         ,
2596  ctrl_attr_code_2          ,
2597  ineff_ctrl_attr_2         ,
2598  total_ctrl_attr_2         ,
2599  ctrl_attr_code_3          ,
2600  ineff_ctrl_attr_3         ,
2601  total_ctrl_attr_3         ,
2602  ctrl_attr_code_4          ,
2603  ineff_ctrl_attr_4         ,
2604  total_ctrl_attr_4         ,
2605  ctrl_attr_code_5          ,
2606  ineff_ctrl_attr_5         ,
2607  total_ctrl_attr_5         ,
2608  ctrl_attr_code_6          ,
2609  ineff_ctrl_attr_6         ,
2610  total_ctrl_attr_6         ,
2611  ctrl_attr_code_7          ,
2612  ineff_ctrl_attr_7         ,
2613  total_ctrl_attr_7         ,
2614  ctrl_attr_code_8          ,
2615  ineff_ctrl_attr_8         ,
2616  total_ctrl_attr_8         ,
2617   ctrl_attr_code_9         ,
2618  ineff_ctrl_attr_9         ,
2619  total_ctrl_attr_9         ,
2620  ctrl_attr_code_10         ,
2621  ineff_ctrl_attr_10        ,
2622  total_ctrl_attr_10        ,
2623  ctrl_attr_code_11         ,
2624  ineff_ctrl_attr_11        ,
2625  total_ctrl_attr_11        ,
2626  ctrl_attr_code_12         ,
2627  ineff_ctrl_attr_12        ,
2628  total_ctrl_attr_12        ,
2629  ctrl_attr_code_13         ,
2630  ineff_ctrl_attr_13        ,
2631  total_ctrl_attr_13        ,
2632  ctrl_attr_code_14         ,
2633  ineff_ctrl_attr_14        ,
2634  total_ctrl_attr_14        ,
2635  ctrl_attr_code_15         ,
2636  ineff_ctrl_attr_15        ,
2637  total_ctrl_attr_15        ,
2638  ctrl_attr_code_16         ,
2639  ineff_ctrl_attr_16        ,
2640  total_ctrl_attr_16        ,
2641  ctrl_attr_code_17         ,
2642  ineff_ctrl_attr_17        ,
2643  total_ctrl_attr_17        ,
2644  ctrl_attr_code_18         ,
2645  ineff_ctrl_attr_18        ,
2646  total_ctrl_attr_18        ,
2647  ctrl_attr_code_19         ,
2648  ineff_ctrl_attr_19        ,
2649  total_ctrl_attr_19        ,
2650  ctrl_attr_code_20         ,
2651  ineff_ctrl_attr_20        ,
2652  total_ctrl_attr_20        ,
2653  ctrl_attr_code_21         ,
2654  ineff_ctrl_attr_21        ,
2655  total_ctrl_attr_21        ,
2656  ctrl_attr_code_22         ,
2657  ineff_ctrl_attr_22        ,
2658  total_ctrl_attr_22        ,
2659  ctrl_attr_code_23         ,
2660  ineff_ctrl_attr_23        ,
2661  total_ctrl_attr_23        ,
2662  ctrl_attr_code_24         ,
2663 ineff_ctrl_attr_24         ,
2664  total_ctrl_attr_24        ,
2665  ctrl_attr_code_25         ,
2666  ineff_ctrl_attr_25        ,
2667  total_ctrl_attr_25        ,
2668  ctrl_attr_code_26         ,
2669  ineff_ctrl_attr_26        ,
2670  total_ctrl_attr_26        ,
2671  ctrl_attr_code_27         ,
2672  ineff_ctrl_attr_27        ,
2673  total_ctrl_attr_27        ,
2674  ctrl_attr_code_28         ,
2675  ineff_ctrl_attr_28        ,
2676  total_ctrl_attr_28        ,
2677  ctrl_attr_code_29         ,
2678  ineff_ctrl_attr_29        ,
2679  total_ctrl_attr_29        ,
2680  ctrl_attr_code_30         ,
2681  ineff_ctrl_attr_30        ,
2682  total_ctrl_attr_30        ,
2683  created_by                ,
2684  creation_date             ,
2685  last_updated_by           ,
2686  last_update_date          ,
2687  last_update_login         ,
2688  -- Removed security_group_id         ,
2689  object_version_number,
2690  acc_assert_flag_1 ,
2691  acc_assert_flag_2 ,
2692  acc_assert_flag_3 ,
2693  acc_assert_flag_4 ,
2694  acc_assert_flag_5 ,
2695  acc_assert_flag_6 ,
2696  acc_assert_flag_7 ,
2697  acc_assert_flag_8 ,
2698  acc_assert_flag_9 ,
2699  acc_assert_flag_10,
2700  acc_assert_flag_11 ,
2701  acc_assert_flag_12 ,
2702  acc_assert_flag_13 ,
2703  acc_assert_flag_14 ,
2704  acc_assert_flag_15 ,
2705  acc_assert_flag_16 ,
2706  acc_assert_flag_17 ,
2707  acc_assert_flag_18 ,
2708  acc_assert_flag_19 ,
2709  acc_assert_flag_20,
2710  acc_assert_flag_21 ,
2711  acc_assert_flag_22 ,
2712  acc_assert_flag_23 ,
2713  acc_assert_flag_24 ,
2714  acc_assert_flag_25 ,
2715  acc_assert_flag_26 ,
2716  acc_assert_flag_27 ,
2717  acc_assert_flag_28 ,
2718  acc_assert_flag_29 ,
2719  acc_assert_flag_30 ,
2720  eval_ctrl_attr_1    ,
2721  eval_ctrl_attr_2    ,
2722  eval_ctrl_attr_3    ,
2723  eval_ctrl_attr_4    ,
2724  eval_ctrl_attr_5    ,
2725  eval_ctrl_attr_6    ,
2726  eval_ctrl_attr_7    ,
2727  eval_ctrl_attr_8    ,
2728  eval_ctrl_attr_9    ,
2729  eval_ctrl_attr_10   ,
2730  eval_ctrl_attr_11    ,
2731  eval_ctrl_attr_12    ,
2732  eval_ctrl_attr_13    ,
2733  eval_ctrl_attr_14    ,
2734  eval_ctrl_attr_15    ,
2735  eval_ctrl_attr_16    ,
2736  eval_ctrl_attr_17    ,
2737  eval_ctrl_attr_18    ,
2738  eval_ctrl_attr_19    ,
2739  eval_ctrl_attr_20   ,
2740  eval_ctrl_attr_21    ,
2741  eval_ctrl_attr_22    ,
2742  eval_ctrl_attr_23    ,
2743  eval_ctrl_attr_24    ,
2744  eval_ctrl_attr_25    ,
2745  eval_ctrl_attr_26    ,
2746  eval_ctrl_attr_27    ,
2747  eval_ctrl_attr_28    ,
2748  eval_ctrl_attr_29    ,
2749  eval_ctrl_attr_30    ,
2750  CONTROLS_EXIST_FLAG,
2751  ineff_ctrl_prcnt_1        ,
2752  ineff_ctrl_prcnt_2        ,
2753  ineff_ctrl_prcnt_3        ,
2754  ineff_ctrl_prcnt_4        ,
2755  ineff_ctrl_prcnt_5        ,
2756  ineff_ctrl_prcnt_6        ,
2757  ineff_ctrl_prcnt_7        ,
2758  ineff_ctrl_prcnt_8        ,
2759  ineff_ctrl_prcnt_9        ,
2760  ineff_ctrl_prcnt_10        ,
2761  ineff_ctrl_prcnt_11        ,
2762  ineff_ctrl_prcnt_12        ,
2763  ineff_ctrl_prcnt_13        ,
2764  ineff_ctrl_prcnt_14        ,
2765  ineff_ctrl_prcnt_15        ,
2766  ineff_ctrl_prcnt_16        ,
2767  ineff_ctrl_prcnt_17        ,
2768  ineff_ctrl_prcnt_18        ,
2769  ineff_ctrl_prcnt_19        ,
2770  ineff_ctrl_prcnt_20        ,
2771  ineff_ctrl_prcnt_21        ,
2772  ineff_ctrl_prcnt_22        ,
2773  ineff_ctrl_prcnt_23        ,
2774  ineff_ctrl_prcnt_24        ,
2775  ineff_ctrl_prcnt_25        ,
2776  ineff_ctrl_prcnt_26        ,
2777  ineff_ctrl_prcnt_27        ,
2778  ineff_ctrl_prcnt_28        ,
2779  ineff_ctrl_prcnt_29        ,
2780  ineff_ctrl_prcnt_30
2781 )
2782 values (
2783  x_fin_certification_id       ,
2784  x_financial_statement_id    ,
2785  x_financial_item_id         ,
2786  x_account_group_id          ,
2787  x_natural_account_id        ,
2788  x_object_type               ,
2789  x_ctrl_attribute_type       ,
2790  x_ctrl_attr_code_1          ,
2791  x_ineff_ctrl_attr_1         ,
2792  x_total_ctrl_attr_1         ,
2793  x_ctrl_attr_code_2          ,
2794  x_ineff_ctrl_attr_2         ,
2795  x_total_ctrl_attr_2         ,
2796  x_ctrl_attr_code_3          ,
2797  x_ineff_ctrl_attr_3         ,
2798  x_total_ctrl_attr_3         ,
2799  x_ctrl_attr_code_4          ,
2800  x_ineff_ctrl_attr_4         ,
2801  x_total_ctrl_attr_4         ,
2802  x_ctrl_attr_code_5          ,
2803  x_ineff_ctrl_attr_5         ,
2804  x_total_ctrl_attr_5         ,
2805  x_ctrl_attr_code_6          ,
2806  x_ineff_ctrl_attr_6         ,
2807  x_total_ctrl_attr_6         ,
2808  x_ctrl_attr_code_7          ,
2809  x_ineff_ctrl_attr_7         ,
2810  x_total_ctrl_attr_7         ,
2811  x_ctrl_attr_code_8          ,
2812  x_ineff_ctrl_attr_8         ,
2813  x_total_ctrl_attr_8         ,
2814  x_ctrl_attr_code_9         ,
2815  x_ineff_ctrl_attr_9         ,
2816  x_total_ctrl_attr_9         ,
2817  x_ctrl_attr_code_10         ,
2818  x_ineff_ctrl_attr_10        ,
2819  x_total_ctrl_attr_10        ,
2820  x_ctrl_attr_code_11         ,
2821  x_ineff_ctrl_attr_11        ,
2822  x_total_ctrl_attr_11        ,
2823  x_ctrl_attr_code_12         ,
2824  x_ineff_ctrl_attr_12        ,
2825  x_total_ctrl_attr_12        ,
2826  x_ctrl_attr_code_13         ,
2827  x_ineff_ctrl_attr_13        ,
2828  x_total_ctrl_attr_13        ,
2829  x_ctrl_attr_code_14         ,
2830  x_ineff_ctrl_attr_14        ,
2831  x_total_ctrl_attr_14        ,
2832  x_ctrl_attr_code_15         ,
2833  x_ineff_ctrl_attr_15        ,
2834  x_total_ctrl_attr_15        ,
2835  x_ctrl_attr_code_16         ,
2836  x_ineff_ctrl_attr_16        ,
2837  x_total_ctrl_attr_16        ,
2838  x_ctrl_attr_code_17         ,
2839  x_ineff_ctrl_attr_17        ,
2840  x_total_ctrl_attr_17        ,
2841  x_ctrl_attr_code_18         ,
2842  x_ineff_ctrl_attr_18        ,
2843  x_total_ctrl_attr_18        ,
2844  x_ctrl_attr_code_19         ,
2845  x_ineff_ctrl_attr_19        ,
2846  x_total_ctrl_attr_19        ,
2847  x_ctrl_attr_code_20         ,
2848  x_ineff_ctrl_attr_20        ,
2849  x_total_ctrl_attr_20        ,
2850  x_ctrl_attr_code_21         ,
2851  x_ineff_ctrl_attr_21        ,
2852  x_total_ctrl_attr_21        ,
2853  x_ctrl_attr_code_22         ,
2854  x_ineff_ctrl_attr_22        ,
2855  x_total_ctrl_attr_22        ,
2856  x_ctrl_attr_code_23         ,
2857  x_ineff_ctrl_attr_23        ,
2858  x_total_ctrl_attr_23        ,
2859  x_ctrl_attr_code_24         ,
2860  x_ineff_ctrl_attr_24         ,
2861  x_total_ctrl_attr_24        ,
2862  x_ctrl_attr_code_25         ,
2863  x_ineff_ctrl_attr_25        ,
2864  x_total_ctrl_attr_25        ,
2865  x_ctrl_attr_code_26         ,
2866  x_ineff_ctrl_attr_26        ,
2867  x_total_ctrl_attr_26        ,
2868  x_ctrl_attr_code_27         ,
2869  x_ineff_ctrl_attr_27        ,
2870  x_total_ctrl_attr_27        ,
2871  x_ctrl_attr_code_28         ,
2872  x_ineff_ctrl_attr_28        ,
2873  x_total_ctrl_attr_28        ,
2874  x_ctrl_attr_code_29         ,
2875  x_ineff_ctrl_attr_29        ,
2876  x_total_ctrl_attr_29        ,
2877  x_ctrl_attr_code_30         ,
2878  x_ineff_ctrl_attr_30        ,
2879  x_total_ctrl_attr_30        ,
2880  x_created_by                ,
2881  x_creation_date             ,
2882  x_last_updated_by           ,
2883  x_last_update_date          ,
2884  x_last_update_login         ,
2885 -- Removed  x_security_group_id         ,
2886 -- x_object_version_number,
2887 m_object_version_number ,
2888 x_acc_assert_flag1 ,
2889 x_acc_assert_flag2 ,
2890 x_acc_assert_flag3 ,
2891 x_acc_assert_flag4 ,
2892 x_acc_assert_flag5 ,
2893 x_acc_assert_flag6 ,
2894 x_acc_assert_flag7 ,
2895 x_acc_assert_flag8 ,
2896 x_acc_assert_flag9 ,
2897 x_acc_assert_flag10,
2898 x_acc_assert_flag11 ,
2899 x_acc_assert_flag12 ,
2900 x_acc_assert_flag13 ,
2901 x_acc_assert_flag14 ,
2902 x_acc_assert_flag15 ,
2903 x_acc_assert_flag16 ,
2904 x_acc_assert_flag17 ,
2905 x_acc_assert_flag18 ,
2906 x_acc_assert_flag19 ,
2907 x_acc_assert_flag20,
2908 x_acc_assert_flag21 ,
2909 x_acc_assert_flag22 ,
2910 x_acc_assert_flag23 ,
2911 x_acc_assert_flag24 ,
2912 x_acc_assert_flag25 ,
2913 x_acc_assert_flag26 ,
2914 x_acc_assert_flag27 ,
2915 x_acc_assert_flag28 ,
2916 x_acc_assert_flag29 ,
2917 x_acc_assert_flag30,
2918 x_eval_ctrl_attr_1    ,
2919 x_eval_ctrl_attr_2    ,
2920 x_eval_ctrl_attr_3    ,
2921 x_eval_ctrl_attr_4    ,
2922 x_eval_ctrl_attr_5    ,
2923 x_eval_ctrl_attr_6    ,
2924 x_eval_ctrl_attr_7    ,
2925 x_eval_ctrl_attr_8    ,
2926 x_eval_ctrl_attr_9    ,
2927 x_eval_ctrl_attr_10   ,
2928 x_eval_ctrl_attr_11    ,
2929 x_eval_ctrl_attr_12    ,
2930 x_eval_ctrl_attr_13    ,
2931 x_eval_ctrl_attr_14    ,
2932 x_eval_ctrl_attr_15    ,
2933 x_eval_ctrl_attr_16    ,
2934 x_eval_ctrl_attr_17    ,
2935 x_eval_ctrl_attr_18    ,
2936 x_eval_ctrl_attr_19    ,
2937 x_eval_ctrl_attr_20   ,
2938 x_eval_ctrl_attr_21    ,
2939 x_eval_ctrl_attr_22    ,
2940 x_eval_ctrl_attr_23    ,
2941 x_eval_ctrl_attr_24    ,
2942 x_eval_ctrl_attr_25    ,
2943 x_eval_ctrl_attr_26    ,
2944 x_eval_ctrl_attr_27    ,
2945 x_eval_ctrl_attr_28    ,
2946 x_eval_ctrl_attr_29    ,
2947 x_eval_ctrl_attr_30   ,
2948 x_display_flag ,
2949    round((x_ineff_ctrl_attr_1	 /  decode(x_total_ctrl_attr_1,null,1,0,1,x_total_ctrl_attr_1) ) * 100,0),
2950    round((x_ineff_ctrl_attr_2	 /  decode(x_total_ctrl_attr_2,null,1,0,1,x_total_ctrl_attr_2) ) * 100,0),
2951    round((x_ineff_ctrl_attr_3	 /  decode(x_total_ctrl_attr_3,null,1,0,1,x_total_ctrl_attr_3) ) * 100,0),
2952    round((x_ineff_ctrl_attr_4	 /  decode(x_total_ctrl_attr_4,null,1,0,1,x_total_ctrl_attr_4) ) * 100,0),
2953    round((x_ineff_ctrl_attr_5	 /  decode(x_total_ctrl_attr_5,null,1,0,1,x_total_ctrl_attr_5) ) * 100,0),
2954    round((x_ineff_ctrl_attr_6	 /  decode(x_total_ctrl_attr_6,null,1,0,1,x_total_ctrl_attr_6) ) * 100,0),
2955    round((x_ineff_ctrl_attr_7	 /  decode(x_total_ctrl_attr_7,null,1,0,1,x_total_ctrl_attr_7) ) * 100,0),
2956    round((x_ineff_ctrl_attr_8	 /  decode(x_total_ctrl_attr_8,null,1,0,1,x_total_ctrl_attr_8) ) * 100,0),
2957    round((x_ineff_ctrl_attr_9	 /  decode(x_total_ctrl_attr_9,null,1,0,1,x_total_ctrl_attr_9) ) * 100,0),
2958    round((x_ineff_ctrl_attr_10 /  decode(x_total_ctrl_attr_10,null,1,0,1,x_total_ctrl_attr_10) ) * 100,0),
2959    round((x_ineff_ctrl_attr_11 /  decode(x_total_ctrl_attr_11,null,1,0,1,x_total_ctrl_attr_11) ) * 100,0),
2960    round((x_ineff_ctrl_attr_12 /  decode(x_total_ctrl_attr_12,null,1,0,1,x_total_ctrl_attr_12) ) * 100,0),
2961    round((x_ineff_ctrl_attr_13 /  decode(x_total_ctrl_attr_13,null,1,0,1,x_total_ctrl_attr_13) ) * 100,0),
2962    round((x_ineff_ctrl_attr_14 /  decode(x_total_ctrl_attr_14,null,1,0,1,x_total_ctrl_attr_14) ) * 100,0),
2963    round((x_ineff_ctrl_attr_15 /  decode(x_total_ctrl_attr_15,null,1,0,1,x_total_ctrl_attr_15) ) * 100,0),
2964    round((x_ineff_ctrl_attr_16 /  decode(x_total_ctrl_attr_16,null,1,0,1,x_total_ctrl_attr_16) ) * 100,0),
2965    round((x_ineff_ctrl_attr_17 /  decode(x_total_ctrl_attr_17,null,1,0,1,x_total_ctrl_attr_17) ) * 100,0),
2966    round((x_ineff_ctrl_attr_18 /  decode(x_total_ctrl_attr_18,null,1,0,1,x_total_ctrl_attr_18) ) * 100,0),
2967    round((x_ineff_ctrl_attr_19 /  decode(x_total_ctrl_attr_19,null,1,0,1,x_total_ctrl_attr_19) ) * 100,0),
2968    round((x_ineff_ctrl_attr_20 /  decode(x_total_ctrl_attr_20,null,1,0,1,x_total_ctrl_attr_20) ) * 100,0),
2969    round((x_ineff_ctrl_attr_21 /  decode(x_total_ctrl_attr_21,null,1,0,1,x_total_ctrl_attr_21) ) * 100,0),
2970    round((x_ineff_ctrl_attr_22 /  decode(x_total_ctrl_attr_22,null,1,0,1,x_total_ctrl_attr_22) ) * 100,0),
2971    round((x_ineff_ctrl_attr_23 /  decode(x_total_ctrl_attr_23,null,1,0,1,x_total_ctrl_attr_23) ) * 100,0),
2972    round((x_ineff_ctrl_attr_24 /  decode(x_total_ctrl_attr_24,null,1,0,1,x_total_ctrl_attr_24) ) * 100,0),
2973    round((x_ineff_ctrl_attr_25 /  decode(x_total_ctrl_attr_25,null,1,0,1,x_total_ctrl_attr_25) ) * 100,0),
2974    round((x_ineff_ctrl_attr_26 /  decode(x_total_ctrl_attr_26,null,1,0,1,x_total_ctrl_attr_26) ) * 100,0),
2975    round((x_ineff_ctrl_attr_27 /  decode(x_total_ctrl_attr_27,null,1,0,1,x_total_ctrl_attr_27) ) * 100,0),
2976    round((x_ineff_ctrl_attr_28 /  decode(x_total_ctrl_attr_28,null,1,0,1,x_total_ctrl_attr_28) ) * 100,0),
2977    round((x_ineff_ctrl_attr_29 /  decode(x_total_ctrl_attr_29,null,1,0,1,x_total_ctrl_attr_29) ) * 100,0),
2978    round((x_ineff_ctrl_attr_30 /  decode(x_total_ctrl_attr_30,null,1,0,1,x_total_ctrl_attr_30) ) * 100,0)
2979 );
2980 
2981 EXCEPTION
2982 WHEN DUP_VAL_ON_INDEX THEN
2983  fnd_file.put_line(fnd_file.LOG, 'Duplicate row insert');
2984  fnd_file.put_line(fnd_file.LOG, SUBSTR (SQLERRM, 1, 2000));
2985 -- dbms_output.put_line(SQLERRM);
2986  fnd_file.put_line(fnd_file.LOG, 'natural_account_id' || x_natural_account_id );
2987  fnd_file.put_line(fnd_file.LOG,  'financial_item_id' || x_financial_item_id);
2988  fnd_file.put_line(fnd_file.LOG,  'fin_certification_id  ' || x_fin_certification_id  );
2989 
2990 WHEN OTHERS THEN
2991  fnd_file.put_line(fnd_file.LOG, SUBSTR (SQLERRM, 1, 2000));
2992 -- dbms_output.put_line(SQLERRM);
2993  fnd_file.put_line(fnd_file.LOG, 'natural_account_id' || x_natural_account_id );
2994  fnd_file.put_line(fnd_file.LOG,  'financial_item_id' || x_financial_item_id);
2995  fnd_file.put_line(fnd_file.LOG,  'fin_certification_id  ' || x_fin_certification_id  );
2996 
2997  --g_errbuf := SUBSTR (SQLERRM, 1, 2000)  ;
2998  --g_retcode := '2';
2999 
3000 RAISE ;
3001  RETURN;
3002 end;
3003 
3004 end INSERT_ROW;
3005 --******************************************************************************************************
3006 /* ************************* Code to be executed for updating COSO COMPONENT LEVEL DATA
3007 -- when business evevnt is rised on opinion changes **** */
3008 --******************************************************************************************************
3009  PROCEDURE Update_item_ctrl_components
3010 (P_CERTIFICATION_ID number ,
3011                   P_FINANCIAL_STATEMENT_ID number,
3012                   P_STATEMENT_GROUP_ID number,
3013                   P_FINANCIAL_ITEM_ID number,
3014                   P_CONTROL_ID        number ,
3015                   P_ORG_ID        number ,
3016                   P_CHANGE_FLAG VARCHAR2,
3017                   P_NEW_FLAG VARCHAR2) is
3018 
3019 begin
3020 
3021  declare
3022 
3023 cursor existing_code(par_type varchar2)
3024 is
3025  select
3026    ctrl_attr_code_1,
3027    ctrl_attr_code_2,
3028    ctrl_attr_code_3,
3029    ctrl_attr_code_4,
3030    ctrl_attr_code_5,
3031    ctrl_attr_code_6,
3032    ctrl_attr_code_7,
3033    ctrl_attr_code_8,
3034    ctrl_attr_code_9,
3035    ctrl_attr_code_10,
3036    ctrl_attr_code_11,
3037    ctrl_attr_code_12,
3038    ctrl_attr_code_13,
3039    ctrl_attr_code_14,
3040    ctrl_attr_code_15,
3041    ctrl_attr_code_16,
3042    ctrl_attr_code_17,
3043    ctrl_attr_code_18,
3044    ctrl_attr_code_19,
3045    ctrl_attr_code_20,
3046    ctrl_attr_code_21,
3047    ctrl_attr_code_22,
3048    ctrl_attr_code_23,
3049    ctrl_attr_code_24,
3050    ctrl_attr_code_25,
3051    ctrl_attr_code_26,
3052    ctrl_attr_code_27,
3053    ctrl_attr_code_28,
3054    ctrl_attr_code_29,
3055    ctrl_attr_code_30
3056 from
3057  amw_fin_cert_ctrl_sum
3058 where
3059  fin_certification_id = P_CERTIFICATION_ID and
3060  ctrl_attribute_type = par_type and
3061  ROWNUM <2;
3062 
3063 cursor comp_of_the_ctrl
3064 is
3065 select
3066  distinct
3067  comp.COMPONENT_CODE
3068 from
3069   amw.amw_fin_item_acc_ctrl ctrl,
3070   amw_assessment_components comp
3071 where
3072  ctrl.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID and
3073  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
3074  ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID  and
3075  ctrl.CONTROL_REV_ID =comp.OBJECT_ID and
3076  comp.OBJECT_TYPE ='CONTROL' and
3077  ctrl.ORGANIZATION_ID = P_ORG_ID and
3078  ctrl.CONTROL_ID =  P_CONTROL_ID ;
3079 
3080 
3081 
3082  g_user_id              NUMBER        := fnd_global.user_id;
3083  g_login_id             NUMBER        := fnd_global.conc_login_id;
3084  m_object_version_number NUMBER;
3085  ctr integer :=0;
3086  max_num_of_codes integer :=0;
3087  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_COMPONENT';
3088  m_OBJECT_TYPE VARCHAR2(50) := 'FINANCIAL ITEM';
3089 
3090 
3091  m_component_code component_code_array;
3092  m_ineff_control  ineff_control_array ;
3093 -- m_acc_assert_flag component_code_array;
3094  m_add_to_eval_ctrls  total_control_array ;
3095 
3096  add_or_deduct_value number :=0;
3097 
3098  begin
3099 
3100  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
3101   /******** comment out by dong because index-by table doesn't need intialization. *************
3102  ctr :=  1;
3103 
3104  loop
3105    EXIT  WHEN ctr > 30;
3106 
3107     m_component_code(ctr) := null;
3108   --  m_acc_assert_flag(ctr) := 'N';
3109     m_ineff_control(ctr) := 0;
3110     m_add_to_eval_ctrls(ctr) := 0;
3111 
3112     ctr := ctr + 1;
3113 
3114  end loop; --end of initialization
3115  ***********************************************************************************/
3116 
3117  -- ************ get All Control Components Codes and Load it in an Array for later use **************--
3118  m_ctrl_attribute_type := 'CTRL_COMPONENT';
3119 
3120  --- P_CHANGE_FLAG = 'F' means the Opinion is changed from Ineffective to Efective
3121  --- P_CHANGE_FLAG = 'B' means the Opinion is changed from Efective to Ineffective
3122 
3123  if P_CHANGE_FLAG = 'B' then
3124     add_or_deduct_value := 1;
3125 
3126   -- note on next elseif: -- do this deduction only if the effectivity is changed from ineffective othereise if it is a new opinion for the
3127   --- control no need to take action
3128 
3129  elsif (P_CHANGE_FLAG = 'F' and P_NEW_FLAG <> 'Y') then
3130     add_or_deduct_value := -1;
3131  elsif P_CHANGE_FLAG = 'N' then
3132   return;
3133  end if;
3134 
3135  ctr := 0;
3136  for coso_rec in existing_code(m_ctrl_attribute_type)
3137  loop
3138     exit when existing_code%notfound;
3139 
3140    m_component_code(1) :=  coso_rec.ctrl_attr_code_1;
3141    m_component_code(2) :=  coso_rec.ctrl_attr_code_2;
3142    m_component_code(3) :=  coso_rec.ctrl_attr_code_3;
3143    m_component_code(4) :=   coso_rec.ctrl_attr_code_4;
3144    m_component_code(5) :=coso_rec.ctrl_attr_code_5;
3145    m_component_code(6) :=coso_rec.ctrl_attr_code_6;
3146    m_component_code(7) :=coso_rec.ctrl_attr_code_7;
3147    m_component_code(8) :=coso_rec.ctrl_attr_code_8;
3148    m_component_code(9) :=coso_rec.ctrl_attr_code_9;
3149    m_component_code(10) :=coso_rec.ctrl_attr_code_10;
3150    m_component_code(11) :=coso_rec.ctrl_attr_code_11;
3151    m_component_code(12) :=coso_rec.ctrl_attr_code_12;
3152    m_component_code(13) :=coso_rec.ctrl_attr_code_13;
3153    m_component_code(14) :=coso_rec.ctrl_attr_code_14;
3154    m_component_code(15) :=coso_rec.ctrl_attr_code_15;
3155    m_component_code(16) :=coso_rec.ctrl_attr_code_16;
3156    m_component_code(17) :=coso_rec.ctrl_attr_code_17;
3157    m_component_code(18) :=coso_rec.ctrl_attr_code_18;
3158    m_component_code(19) :=coso_rec.ctrl_attr_code_19;
3159    m_component_code(20) :=coso_rec.ctrl_attr_code_20;
3160    m_component_code(21) :=coso_rec.ctrl_attr_code_21;
3161    m_component_code(22) :=coso_rec.ctrl_attr_code_22;
3162    m_component_code(23) :=coso_rec.ctrl_attr_code_23;
3163    m_component_code(24) :=coso_rec.ctrl_attr_code_24;
3164    m_component_code(25) :=coso_rec.ctrl_attr_code_25;
3165    m_component_code(26) :=coso_rec.ctrl_attr_code_26;
3166    m_component_code(27) :=coso_rec.ctrl_attr_code_27;
3167    m_component_code(28) :=coso_rec.ctrl_attr_code_28;
3168    m_component_code(29) :=coso_rec.ctrl_attr_code_29;
3169    m_component_code(30) :=coso_rec.ctrl_attr_code_30;
3170 
3171  end loop; --end of COSO_COMPONENTS loop
3172 
3173 
3174 -- **************** Check the REVISION of the Control came with the event has what COSO Codes *******************
3175 -- and in which filed (out of 1 to 30) it is falling and the init varaible with the -1 or +1 corrsponding to that
3176 --****************************************************************************************************************
3177  ctr := 0;
3178  for ctrl_coso_codes in comp_of_the_ctrl
3179  loop
3180     exit when comp_of_the_ctrl%notfound;
3181     ctr := 1;
3182     while ctr <=  30
3183     loop
3184       if m_component_code(ctr) = ctrl_coso_codes.COMPONENT_CODE then
3185          m_ineff_control(ctr) :=  add_or_deduct_value;
3186 
3187          if  P_NEW_FLAG = 'Y' then
3188              m_add_to_eval_ctrls(ctr) := 1;
3189          end if;
3190 
3191       end if;
3192        ctr := ctr + 1;
3193 
3194     end loop;
3195 
3196 
3197  end loop; --end of ctrl_coso_codes in comp_of_the_ctrl loop
3198 
3199 
3200 
3201 
3202     amw_fin_coso_views_pvt.UPDATE_FIN_ITEM_ROW(
3203      x_fin_certification_id       	=> 	P_CERTIFICATION_ID	,
3204      x_financial_statement_id    	=> 	P_FINANCIAL_STATEMENT_ID 	,
3205      x_financial_item_id         	=> 	P_FINANCIAL_ITEM_ID 	,
3206      x_account_group_id          	=> 	null	,
3207      x_natural_account_id        	=> 	null,
3208      x_object_type               	=> 	m_OBJECT_TYPE 	,
3209      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type       	,
3210      x_ineff_ctrl_attr_1         	=> 	m_ineff_control(1)	,
3211      x_ineff_ctrl_attr_2         	=> 	m_ineff_control(2)	,
3212      x_ineff_ctrl_attr_3         	=> 	m_ineff_control(3)	,
3213      x_ineff_ctrl_attr_4         	=> 	m_ineff_control(4)	,
3214      x_ineff_ctrl_attr_5         	=> 	m_ineff_control(5)	,
3215      x_ineff_ctrl_attr_6         	=> 	m_ineff_control(6)	,
3216      x_ineff_ctrl_attr_7         	=> 	m_ineff_control(7)	,
3217      x_ineff_ctrl_attr_8         	=> 	m_ineff_control(8)	,
3218      x_ineff_ctrl_attr_9         	=> 	m_ineff_control(9)	,
3219      x_ineff_ctrl_attr_10        	=> 	m_ineff_control(10)	,
3220      x_ineff_ctrl_attr_11        	=> 	m_ineff_control(11)	,
3221      x_ineff_ctrl_attr_12        	=> 	m_ineff_control(12)	,
3222      x_ineff_ctrl_attr_13        	=> 	m_ineff_control(13)	,
3223      x_ineff_ctrl_attr_14        	=> 	m_ineff_control(14)	,
3224      x_ineff_ctrl_attr_15        	=> 	m_ineff_control(15)	,
3225      x_ineff_ctrl_attr_16        	=> 	m_ineff_control(16)	,
3226      x_ineff_ctrl_attr_17        	=> 	m_ineff_control(17)	,
3227      x_ineff_ctrl_attr_18        	=> 	m_ineff_control(18)	,
3228      x_ineff_ctrl_attr_19        	=> 	m_ineff_control(19)	,
3229      x_ineff_ctrl_attr_20        	=> 	m_ineff_control(20)	,
3230      x_ineff_ctrl_attr_21        	=> 	m_ineff_control(21)	,
3231      x_ineff_ctrl_attr_22        	=> 	m_ineff_control(22)	,
3232      x_ineff_ctrl_attr_23        	=> 	m_ineff_control(23)	,
3233      x_ineff_ctrl_attr_24         	=> 	m_ineff_control(24)	,
3234      x_ineff_ctrl_attr_25        	=> 	m_ineff_control(25)	,
3235      x_ineff_ctrl_attr_26        	=> 	m_ineff_control(26)	,
3236      x_ineff_ctrl_attr_27        	=> 	m_ineff_control(27)	,
3237      x_ineff_ctrl_attr_28        	=> 	m_ineff_control(28)	,
3238      x_ineff_ctrl_attr_29        	=> 	m_ineff_control(29)	,
3239      x_ineff_ctrl_attr_30        	=> 	m_ineff_control(30)	,
3240      x_last_updated_by           	=> 	g_user_id	,
3241      x_last_update_date          	=> 	SYSDATE	,
3242      x_last_update_login         	=> 	g_login_id,
3243      x_eval_ctrl_attr_1         	=> 	m_add_to_eval_ctrls(1),
3244      x_eval_ctrl_attr_2         	=> 	m_add_to_eval_ctrls(2),
3245      x_eval_ctrl_attr_3         	=> 	m_add_to_eval_ctrls(3),
3246      x_eval_ctrl_attr_4         	=> 	m_add_to_eval_ctrls(4),
3247      x_eval_ctrl_attr_5         	=> 	m_add_to_eval_ctrls(5),
3248      x_eval_ctrl_attr_6         	=> 	m_add_to_eval_ctrls(6),
3249      x_eval_ctrl_attr_7         	=> 	m_add_to_eval_ctrls(7),
3250      x_eval_ctrl_attr_8         	=> 	m_add_to_eval_ctrls(8),
3251      x_eval_ctrl_attr_9         	=> 	m_add_to_eval_ctrls(9),
3252      x_eval_ctrl_attr_10        	=> 	m_add_to_eval_ctrls(10),
3253      x_eval_ctrl_attr_11         	=> 	m_add_to_eval_ctrls(11),
3254      x_eval_ctrl_attr_12         	=> 	m_add_to_eval_ctrls(12),
3255      x_eval_ctrl_attr_13         	=> 	m_add_to_eval_ctrls(13),
3256      x_eval_ctrl_attr_14         	=> 	m_add_to_eval_ctrls(14),
3257      x_eval_ctrl_attr_15         	=> 	m_add_to_eval_ctrls(15),
3258      x_eval_ctrl_attr_16         	=> 	m_add_to_eval_ctrls(16),
3259      x_eval_ctrl_attr_17         	=> 	m_add_to_eval_ctrls(17),
3260      x_eval_ctrl_attr_18         	=> 	m_add_to_eval_ctrls(18),
3261      x_eval_ctrl_attr_19         	=> 	m_add_to_eval_ctrls(19),
3262      x_eval_ctrl_attr_20        	=> 	m_add_to_eval_ctrls(20),
3263      x_eval_ctrl_attr_21         	=> 	m_add_to_eval_ctrls(21),
3264      x_eval_ctrl_attr_22         	=> 	m_add_to_eval_ctrls(22),
3265      x_eval_ctrl_attr_23         	=> 	m_add_to_eval_ctrls(23),
3266      x_eval_ctrl_attr_24         	=> 	m_add_to_eval_ctrls(24),
3267      x_eval_ctrl_attr_25         	=> 	m_add_to_eval_ctrls(25),
3268      x_eval_ctrl_attr_26         	=> 	m_add_to_eval_ctrls(26),
3269      x_eval_ctrl_attr_27         	=> 	m_add_to_eval_ctrls(27),
3270      x_eval_ctrl_attr_28         	=> 	m_add_to_eval_ctrls(28),
3271      x_eval_ctrl_attr_29         	=> 	m_add_to_eval_ctrls(29),
3272      x_eval_ctrl_attr_30        	=> 	m_add_to_eval_ctrls(30));
3273 
3274   EXCEPTION
3275      WHEN NO_DATA_FOUND
3276 	     THEN
3277             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_item_ctrl_components'
3278                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
3279 
3280      WHEN OTHERS
3281          THEN
3282             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_item_ctrl_components'
3283                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
3284 
3285 
3286   end;
3287 end ; --Update_item_ctrl_components
3288 
3289 ------------------------------ fOR THE ACCOUNTS ------------------------------------------------------------------------------
3290 
3291 PROCEDURE Update_acc_ctrl_components
3292 (P_CERTIFICATION_ID number ,
3293                   P_ACCOUNT_GROUP_ID  number ,
3294                   P_ACCOUNT_ID        number ,
3295                   P_CONTROL_ID        number ,
3296                   P_ORG_ID        number ,
3297                   P_CHANGE_FLAG VARCHAR2,
3298                   P_NEW_FLAG VARCHAR2) is
3299 
3300 
3301 
3302 begin
3303 declare
3304 cursor existing_code(par_type varchar2)
3305 is
3306  select
3307    ctrl_attr_code_1,
3308    ctrl_attr_code_2,
3309    ctrl_attr_code_3,
3310    ctrl_attr_code_4,
3311    ctrl_attr_code_5,
3312    ctrl_attr_code_6,
3313    ctrl_attr_code_7,
3314    ctrl_attr_code_8,
3315    ctrl_attr_code_9,
3316    ctrl_attr_code_10,
3317    ctrl_attr_code_11,
3318    ctrl_attr_code_12,
3319    ctrl_attr_code_13,
3320    ctrl_attr_code_14,
3321    ctrl_attr_code_15,
3322    ctrl_attr_code_16,
3323    ctrl_attr_code_17,
3324    ctrl_attr_code_18,
3325    ctrl_attr_code_19,
3326    ctrl_attr_code_20,
3327    ctrl_attr_code_21,
3328    ctrl_attr_code_22,
3329    ctrl_attr_code_23,
3330    ctrl_attr_code_24,
3331    ctrl_attr_code_25,
3332    ctrl_attr_code_26,
3333    ctrl_attr_code_27,
3334    ctrl_attr_code_28,
3335    ctrl_attr_code_29,
3336    ctrl_attr_code_30,
3337    ineff_ctrl_attr_1,
3338    ineff_ctrl_attr_2,
3339    ineff_ctrl_attr_3,
3340    ineff_ctrl_attr_4,
3341    ineff_ctrl_attr_5,
3342    ineff_ctrl_attr_6,
3343    ineff_ctrl_attr_7,
3344    ineff_ctrl_attr_8,
3345    ineff_ctrl_attr_9,
3346    ineff_ctrl_attr_10,
3347    ineff_ctrl_attr_11,
3348    ineff_ctrl_attr_12,
3349    ineff_ctrl_attr_13,
3350    ineff_ctrl_attr_14,
3351    ineff_ctrl_attr_15,
3352    ineff_ctrl_attr_16,
3353    ineff_ctrl_attr_17,
3354    ineff_ctrl_attr_18,
3355    ineff_ctrl_attr_19,
3356    ineff_ctrl_attr_20,
3357    ineff_ctrl_attr_21,
3358    ineff_ctrl_attr_22,
3359    ineff_ctrl_attr_23,
3360    ineff_ctrl_attr_24,
3361    ineff_ctrl_attr_25,
3362    ineff_ctrl_attr_26,
3363    ineff_ctrl_attr_27,
3364    ineff_ctrl_attr_28,
3365    ineff_ctrl_attr_29,
3366    ineff_ctrl_attr_30
3367 from
3368  amw_fin_cert_ctrl_sum
3369 where
3370  fin_certification_id = P_CERTIFICATION_ID and
3371  ctrl_attribute_type = par_type and
3372  ROWNUM <2
3373  AND  account_group_id =  P_ACCOUNT_GROUP_ID and
3374  natural_account_id  =  P_ACCOUNT_ID        and
3375  object_type	= 'ACCOUNT' ;
3376 
3377 
3378 ----------------------------------------------
3379 cursor comp_of_the_ctrl
3380 is select
3381  distinct
3382  comp.COMPONENT_CODE
3383 from
3384   amw.amw_fin_item_acc_ctrl ctrl,
3385   amw_assessment_components comp
3386 where
3387  ctrl.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID
3388  and
3389  ctrl.OBJECT_TYPE = 'ACCOUNT' and
3390  ctrl.ACCOUNT_GROUP_ID= P_ACCOUNT_GROUP_ID AND
3391  ctrl.NATURAL_ACCOUNT_ID= P_ACCOUNT_ID and
3392  ctrl.CONTROL_REV_ID =comp.OBJECT_ID and
3393  comp.OBJECT_TYPE ='CONTROL' and
3394  ctrl.ORGANIZATION_ID = P_ORG_ID and
3395  ctrl.CONTROL_ID =  P_CONTROL_ID ;
3396 ----------------------------------------------------
3397  g_user_id              NUMBER        := fnd_global.user_id;
3398  g_login_id             NUMBER        := fnd_global.conc_login_id;
3399  m_object_version_number NUMBER;
3400  ctr integer :=0;
3401  max_num_of_codes integer :=0;
3402  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_COMPONENT';
3403  m_OBJECT_TYPE VARCHAR2(50) := 'ACCOUNT';
3404 
3405 
3406  m_component_code component_code_array;
3407  m_ineff_control  ineff_control_array ;
3408  --m_acc_assert_flag component_code_array;
3409  m_add_to_eval_ctrls  total_control_array ;
3410 
3411 
3412  add_or_deduct_value number :=0;
3413 
3414 begin
3415 
3416  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
3417  ctr :=  1;
3418 
3419  loop
3420    EXIT  WHEN ctr > 30;
3421 
3422     m_component_code(ctr) := null;
3423     --m_acc_assert_flag(ctr) := 'N';
3424     m_ineff_control(ctr) := 0;
3425     m_add_to_eval_ctrls(ctr) := 0;
3426 
3427     ctr := ctr + 1;
3428 
3429  end loop; --end of initialization
3430 
3431  -- ************ get All Control Components Codes and Load it in an Array for later use **************--
3432  m_ctrl_attribute_type := 'CTRL_COMPONENT';
3433 
3434  --- P_CHANGE_FLAG = 'F' means the Opinion is changed from Ineffective to Efective
3435  --- P_CHANGE_FLAG = 'B' means the Opinion is changed from Efective to Ineffective
3436 
3437   if P_CHANGE_FLAG = 'B' then
3438     add_or_deduct_value := 1;
3439 elsif (P_CHANGE_FLAG = 'F' and P_NEW_FLAG <> 'Y') then
3440     add_or_deduct_value := -1;
3441  elsif P_CHANGE_FLAG = 'N' then
3442   return;
3443  end if;
3444 
3445  ctr := 0;
3446  for coso_rec in existing_code(m_ctrl_attribute_type)
3447  loop
3448     exit when existing_code%notfound;
3449 
3450    m_component_code(1) :=  coso_rec.ctrl_attr_code_1;
3451    m_component_code(2) :=  coso_rec.ctrl_attr_code_2;
3452    m_component_code(3) :=  coso_rec.ctrl_attr_code_3;
3453    m_component_code(4) :=   coso_rec.ctrl_attr_code_4;
3454    m_component_code(5) :=coso_rec.ctrl_attr_code_5;
3455    m_component_code(6) :=coso_rec.ctrl_attr_code_6;
3456    m_component_code(7) :=coso_rec.ctrl_attr_code_7;
3457    m_component_code(8) :=coso_rec.ctrl_attr_code_8;
3458    m_component_code(9) :=coso_rec.ctrl_attr_code_9;
3459    m_component_code(10) :=coso_rec.ctrl_attr_code_10;
3460    m_component_code(11) :=coso_rec.ctrl_attr_code_11;
3461    m_component_code(12) :=coso_rec.ctrl_attr_code_12;
3462    m_component_code(13) :=coso_rec.ctrl_attr_code_13;
3463    m_component_code(14) :=coso_rec.ctrl_attr_code_14;
3464    m_component_code(15) :=coso_rec.ctrl_attr_code_15;
3465    m_component_code(16) :=coso_rec.ctrl_attr_code_16;
3466    m_component_code(17) :=coso_rec.ctrl_attr_code_17;
3467    m_component_code(18) :=coso_rec.ctrl_attr_code_18;
3468    m_component_code(19) :=coso_rec.ctrl_attr_code_19;
3469    m_component_code(20) :=coso_rec.ctrl_attr_code_20;
3470    m_component_code(21) :=coso_rec.ctrl_attr_code_21;
3471    m_component_code(22) :=coso_rec.ctrl_attr_code_22;
3472    m_component_code(23) :=coso_rec.ctrl_attr_code_23;
3473    m_component_code(24) :=coso_rec.ctrl_attr_code_24;
3474    m_component_code(25) :=coso_rec.ctrl_attr_code_25;
3475    m_component_code(26) :=coso_rec.ctrl_attr_code_26;
3476    m_component_code(27) :=coso_rec.ctrl_attr_code_27;
3477    m_component_code(28) :=coso_rec.ctrl_attr_code_28;
3478    m_component_code(29) :=coso_rec.ctrl_attr_code_29;
3479    m_component_code(30) :=coso_rec.ctrl_attr_code_30;
3480 
3481 
3482     m_ineff_control(1) :=  coso_rec.ineff_ctrl_attr_1;
3483    m_ineff_control(2) :=  coso_rec.ineff_ctrl_attr_2;
3484    m_ineff_control(3) :=  coso_rec.ineff_ctrl_attr_3;
3485    m_ineff_control(4) :=   coso_rec.ineff_ctrl_attr_4;
3486    m_ineff_control(5) :=coso_rec.ineff_ctrl_attr_5;
3487    m_ineff_control(6) :=coso_rec.ineff_ctrl_attr_6;
3488    m_ineff_control(7) :=coso_rec.ineff_ctrl_attr_7;
3489    m_ineff_control(8) :=coso_rec.ineff_ctrl_attr_8;
3490    m_ineff_control(9) :=coso_rec.ineff_ctrl_attr_9;
3491    m_ineff_control(10) :=coso_rec.ineff_ctrl_attr_10;
3492    m_ineff_control(11) :=coso_rec.ineff_ctrl_attr_11;
3493    m_ineff_control(12) :=coso_rec.ineff_ctrl_attr_12;
3494    m_ineff_control(13) :=coso_rec.ineff_ctrl_attr_13;
3495    m_ineff_control(14) :=coso_rec.ineff_ctrl_attr_14;
3496    m_ineff_control(15) :=coso_rec.ineff_ctrl_attr_15;
3497    m_ineff_control(16) :=coso_rec.ineff_ctrl_attr_16;
3498    m_ineff_control(17) :=coso_rec.ineff_ctrl_attr_17;
3499    m_ineff_control(18) :=coso_rec.ineff_ctrl_attr_18;
3500    m_ineff_control(19) :=coso_rec.ineff_ctrl_attr_19;
3501    m_ineff_control(20) :=coso_rec.ineff_ctrl_attr_20;
3502    m_ineff_control(21) :=coso_rec.ineff_ctrl_attr_21;
3503    m_ineff_control(22) :=coso_rec.ineff_ctrl_attr_22;
3504    m_ineff_control(23) :=coso_rec.ineff_ctrl_attr_23;
3505    m_ineff_control(24) :=coso_rec.ineff_ctrl_attr_24;
3506    m_ineff_control(25) :=coso_rec.ineff_ctrl_attr_25;
3507    m_ineff_control(26) :=coso_rec.ineff_ctrl_attr_26;
3508    m_ineff_control(27) :=coso_rec.ineff_ctrl_attr_27;
3509    m_ineff_control(28) :=coso_rec.ineff_ctrl_attr_28;
3510    m_ineff_control(29) :=coso_rec.ineff_ctrl_attr_29;
3511    m_ineff_control(30) :=coso_rec.ineff_ctrl_attr_30;
3512 
3513  end loop; --end of COSO_COMPONENTS loop
3514 
3515 
3516 -- **************** Check the REVISION of the Control came with the event has what COSO Codes *******************
3517 -- and in which filed (out of 1 to 30) it is falling and the init varaible with the -1 or +1 corrsponding to that
3518 --****************************************************************************************************************
3519  ctr := 0;
3520  for ctrl_coso_codes in comp_of_the_ctrl
3521  loop
3522     exit when comp_of_the_ctrl%notfound;
3523     ctr := 1;
3524     while ctr <=  30
3525     loop
3526       if m_component_code(ctr) = ctrl_coso_codes.COMPONENT_CODE then
3527 
3528        /********** insanity check for the numbers ******
3529   	********* If the display format is a/b/c, then a >= 0 and b>= a and c>= b  ****/
3530         IF( (NVL(m_ineff_control(ctr),0) + add_or_deduct_value) < 0 or   (NVL(m_ineff_control(ctr),0) + add_or_deduct_value) > m_add_to_eval_ctrls(ctr))
3531   	THEN
3532   	AMW_FINSTMT_CERT_BES_PKG.G_REFRESH_FLAG := 'Y';
3533   	IF AMW_FINSTMT_CERT_BES_PKG.m_certification_list.exists(P_CERTIFICATION_ID) THEN
3534   	  EXIT;
3535   	ELSE
3536   	AMW_FINSTMT_CERT_BES_PKG.m_certification_list(AMW_FINSTMT_CERT_BES_PKG.m_certification_list.COUNT+1) := P_CERTIFICATION_ID;
3537   	EXIT;
3538   	END IF;
3539         END IF;
3540 
3541          m_ineff_control(ctr) :=  NVL(m_ineff_control(ctr),0) + add_or_deduct_value;
3542 
3543 
3544 
3545          if  P_NEW_FLAG = 'Y' then
3546              m_add_to_eval_ctrls(ctr) := 1;
3547 
3548          end if;
3549 
3550       end if;
3551        ctr := ctr + 1;
3552 
3553     end loop;
3554 
3555 
3556  end loop; --end of ctrl_coso_codes in comp_of_the_ctrl loop
3557 
3558 
3559 
3560     amw_fin_coso_views_pvt.UPDATE_FIN_ACC_ROW(
3561      x_fin_certification_id       	=> 	P_CERTIFICATION_ID	,
3562      x_financial_statement_id    	=> 	NULL 	,
3563      x_financial_item_id         	=> 	NULL	,
3564      x_account_group_id          	=> 	P_ACCOUNT_GROUP_ID,
3565      x_natural_account_id        	=> 	P_ACCOUNT_ID,
3566      x_object_type               	=> 	m_OBJECT_TYPE 	,
3567      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type       	,
3568      x_ineff_ctrl_attr_1         	=> 	m_ineff_control(1)	,
3569      x_ineff_ctrl_attr_2         	=> 	m_ineff_control(2)	,
3570      x_ineff_ctrl_attr_3         	=> 	m_ineff_control(3)	,
3571      x_ineff_ctrl_attr_4         	=> 	m_ineff_control(4)	,
3572      x_ineff_ctrl_attr_5         	=> 	m_ineff_control(5)	,
3573      x_ineff_ctrl_attr_6         	=> 	m_ineff_control(6)	,
3574      x_ineff_ctrl_attr_7         	=> 	m_ineff_control(7)	,
3575      x_ineff_ctrl_attr_8         	=> 	m_ineff_control(8)	,
3576      x_ineff_ctrl_attr_9         	=> 	m_ineff_control(9)	,
3577      x_ineff_ctrl_attr_10        	=> 	m_ineff_control(10)	,
3578      x_ineff_ctrl_attr_11        	=> 	m_ineff_control(11)	,
3579      x_ineff_ctrl_attr_12        	=> 	m_ineff_control(12)	,
3580      x_ineff_ctrl_attr_13        	=> 	m_ineff_control(13)	,
3581      x_ineff_ctrl_attr_14        	=> 	m_ineff_control(14)	,
3582      x_ineff_ctrl_attr_15        	=> 	m_ineff_control(15)	,
3583      x_ineff_ctrl_attr_16        	=> 	m_ineff_control(16)	,
3584      x_ineff_ctrl_attr_17        	=> 	m_ineff_control(17)	,
3585      x_ineff_ctrl_attr_18        	=> 	m_ineff_control(18)	,
3586      x_ineff_ctrl_attr_19        	=> 	m_ineff_control(19)	,
3587      x_ineff_ctrl_attr_20        	=> 	m_ineff_control(20)	,
3588      x_ineff_ctrl_attr_21        	=> 	m_ineff_control(21)	,
3589      x_ineff_ctrl_attr_22        	=> 	m_ineff_control(22)	,
3590      x_ineff_ctrl_attr_23        	=> 	m_ineff_control(23)	,
3591      x_ineff_ctrl_attr_24         	=> 	m_ineff_control(24)	,
3592      x_ineff_ctrl_attr_25        	=> 	m_ineff_control(25)	,
3593      x_ineff_ctrl_attr_26        	=> 	m_ineff_control(26)	,
3594      x_ineff_ctrl_attr_27        	=> 	m_ineff_control(27)	,
3595      x_ineff_ctrl_attr_28        	=> 	m_ineff_control(28)	,
3596      x_ineff_ctrl_attr_29        	=> 	m_ineff_control(29)	,
3597      x_ineff_ctrl_attr_30        	=> 	m_ineff_control(30)	,
3598      x_last_updated_by           	=> 	g_user_id	,
3599      x_last_update_date          	=> 	SYSDATE	,
3600      x_last_update_login         	=> 	g_login_id,
3601      x_eval_ctrl_attr_1         	=> 	m_add_to_eval_ctrls(1),
3602      x_eval_ctrl_attr_2         	=> 	m_add_to_eval_ctrls(2),
3603      x_eval_ctrl_attr_3         	=> 	m_add_to_eval_ctrls(3),
3604      x_eval_ctrl_attr_4         	=> 	m_add_to_eval_ctrls(4),
3605      x_eval_ctrl_attr_5         	=> 	m_add_to_eval_ctrls(5),
3606      x_eval_ctrl_attr_6         	=> 	m_add_to_eval_ctrls(6),
3607      x_eval_ctrl_attr_7         	=> 	m_add_to_eval_ctrls(7),
3608      x_eval_ctrl_attr_8         	=> 	m_add_to_eval_ctrls(8),
3609      x_eval_ctrl_attr_9         	=> 	m_add_to_eval_ctrls(9),
3610      x_eval_ctrl_attr_10        	=> 	m_add_to_eval_ctrls(10),
3611      x_eval_ctrl_attr_11         	=> 	m_add_to_eval_ctrls(11),
3612      x_eval_ctrl_attr_12         	=> 	m_add_to_eval_ctrls(12),
3613      x_eval_ctrl_attr_13         	=> 	m_add_to_eval_ctrls(13),
3614      x_eval_ctrl_attr_14         	=> 	m_add_to_eval_ctrls(14),
3615      x_eval_ctrl_attr_15         	=> 	m_add_to_eval_ctrls(15),
3616      x_eval_ctrl_attr_16         	=> 	m_add_to_eval_ctrls(16),
3617      x_eval_ctrl_attr_17         	=> 	m_add_to_eval_ctrls(17),
3618      x_eval_ctrl_attr_18         	=> 	m_add_to_eval_ctrls(18),
3619      x_eval_ctrl_attr_19         	=> 	m_add_to_eval_ctrls(19),
3620      x_eval_ctrl_attr_20        	=> 	m_add_to_eval_ctrls(20),
3621      x_eval_ctrl_attr_21         	=> 	m_add_to_eval_ctrls(21),
3622      x_eval_ctrl_attr_22         	=> 	m_add_to_eval_ctrls(22),
3623      x_eval_ctrl_attr_23         	=> 	m_add_to_eval_ctrls(23),
3624      x_eval_ctrl_attr_24         	=> 	m_add_to_eval_ctrls(24),
3625      x_eval_ctrl_attr_25         	=> 	m_add_to_eval_ctrls(25),
3626      x_eval_ctrl_attr_26         	=> 	m_add_to_eval_ctrls(26),
3627      x_eval_ctrl_attr_27         	=> 	m_add_to_eval_ctrls(27),
3628      x_eval_ctrl_attr_28         	=> 	m_add_to_eval_ctrls(28),
3629      x_eval_ctrl_attr_29         	=> 	m_add_to_eval_ctrls(29),
3630      x_eval_ctrl_attr_30        	=> 	m_add_to_eval_ctrls(30)
3631 );
3632 
3633 
3634 EXCEPTION
3635      WHEN NO_DATA_FOUND
3636 	     THEN
3637             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_acc_ctrl_components'
3638                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
3639 
3640      WHEN OTHERS
3641          THEN
3642             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_acc_ctrl_components'
3643                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
3644 
3645 
3646 end;
3647 end ; --Update_acc_ctrl_components
3648 
3649 --******************************************************************************************************
3650 /* ************************* Code to be executed for updating Control Objective LEVEL DATA
3651 -- when business evevnt is rised on opinion changes **** */
3652 --******************************************************************************************************
3653 
3654 PROCEDURE Update_item_ctrl_objectives
3655 (P_CERTIFICATION_ID number ,
3656                   P_FINANCIAL_STATEMENT_ID number,
3657                   P_STATEMENT_GROUP_ID number,
3658                   P_FINANCIAL_ITEM_ID number,
3659                   P_CONTROL_ID        number ,
3660                   P_ORG_ID        number ,
3661                   P_CHANGE_FLAG VARCHAR2,
3662                   P_NEW_FLAG VARCHAR2) is
3663 
3664 begin
3665 
3666  declare
3667 
3668 cursor existing_code(par_type varchar2)
3669 is
3670  select
3671    ctrl_attr_code_1,
3672    ctrl_attr_code_2,
3673    ctrl_attr_code_3,
3674    ctrl_attr_code_4,
3675    ctrl_attr_code_5,
3676    ctrl_attr_code_6,
3677    ctrl_attr_code_7,
3678    ctrl_attr_code_8,
3679    ctrl_attr_code_9,
3680    ctrl_attr_code_10,
3681    ctrl_attr_code_11,
3682    ctrl_attr_code_12,
3683    ctrl_attr_code_13,
3684    ctrl_attr_code_14,
3685    ctrl_attr_code_15,
3686    ctrl_attr_code_16,
3687    ctrl_attr_code_17,
3688    ctrl_attr_code_18,
3689    ctrl_attr_code_19,
3690    ctrl_attr_code_20,
3691    ctrl_attr_code_21,
3692    ctrl_attr_code_22,
3693    ctrl_attr_code_23,
3694    ctrl_attr_code_24,
3695    ctrl_attr_code_25,
3696    ctrl_attr_code_26,
3697    ctrl_attr_code_27,
3698    ctrl_attr_code_28,
3699    ctrl_attr_code_29,
3700    ctrl_attr_code_30,
3701     ineff_ctrl_attr_1,
3702    ineff_ctrl_attr_2,
3703    ineff_ctrl_attr_3,
3704    ineff_ctrl_attr_4,
3705    ineff_ctrl_attr_5,
3706    ineff_ctrl_attr_6,
3707    ineff_ctrl_attr_7,
3708    ineff_ctrl_attr_8,
3709    ineff_ctrl_attr_9,
3710    ineff_ctrl_attr_10,
3711    ineff_ctrl_attr_11,
3712    ineff_ctrl_attr_12,
3713    ineff_ctrl_attr_13,
3714    ineff_ctrl_attr_14,
3715    ineff_ctrl_attr_15,
3716    ineff_ctrl_attr_16,
3717    ineff_ctrl_attr_17,
3718    ineff_ctrl_attr_18,
3719    ineff_ctrl_attr_19,
3720    ineff_ctrl_attr_20,
3721    ineff_ctrl_attr_21,
3722    ineff_ctrl_attr_22,
3723    ineff_ctrl_attr_23,
3724    ineff_ctrl_attr_24,
3725    ineff_ctrl_attr_25,
3726    ineff_ctrl_attr_26,
3727    ineff_ctrl_attr_27,
3728    ineff_ctrl_attr_28,
3729    ineff_ctrl_attr_29,
3730    ineff_ctrl_attr_30
3731 from
3732  amw_fin_cert_ctrl_sum
3733 where
3734  fin_certification_id = P_CERTIFICATION_ID and
3735  ctrl_attribute_type = par_type and
3736  ROWNUM <2;
3737 
3738 cursor obj_of_the_ctrl
3739 is
3740 select
3741  distinct
3742  comp.OBJECTIVE_CODE
3743 from
3744   amw.amw_fin_item_acc_ctrl ctrl,
3745   amw_control_objectives  comp
3746 where
3747  ctrl.FIN_CERTIFICATION_ID= P_CERTIFICATION_ID
3748  and
3749  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
3750  ctrl.FINANCIAL_ITEM_ID= P_FINANCIAL_ITEM_ID
3751  and
3752  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
3753  ctrl.ORGANIZATION_ID = P_ORG_ID
3754  and
3755  ctrl.CONTROL_ID =  P_CONTROL_ID ;
3756 
3757 
3758 
3759  g_user_id              NUMBER        := fnd_global.user_id;
3760  g_login_id             NUMBER        := fnd_global.conc_login_id;
3761  m_object_version_number NUMBER;
3762  ctr integer :=0;
3763  max_num_of_codes integer :=0;
3764  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_OBJECTIVES';
3765  m_OBJECT_TYPE VARCHAR2(50) := 'FINANCIAL ITEM';
3766 
3767 
3768  m_component_code component_code_array;
3769  m_ineff_control  ineff_control_array ;
3770  --m_acc_assert_flag component_code_array;
3771  m_add_to_eval_ctrls  total_control_array ;
3772 
3773 
3774  add_or_deduct_value number :=0;
3775 
3776  begin
3777 
3778  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
3779  ctr :=  1;
3780 
3781  loop
3782    EXIT  WHEN ctr > 30;
3783 
3784     m_component_code(ctr) := null;
3785   --  m_acc_assert_flag(ctr) := 'N';
3786     m_ineff_control(ctr) := 0;
3787     m_add_to_eval_ctrls(ctr) := 0;
3788 
3789     ctr := ctr + 1;
3790 
3791  end loop; --end of initialization
3792 
3793  -- ************ get All Control Components Codes and Load it in an Array for later use **************--
3794  m_ctrl_attribute_type :='CTRL_OBJECTIVES';
3795 
3796  --- P_CHANGE_FLAG = 'F' means the Opinion is changed from Ineffective to Efective
3797  --- P_CHANGE_FLAG = 'B' means the Opinion is changed from Efective to Ineffective
3798 
3799   if P_CHANGE_FLAG = 'B' then
3800     add_or_deduct_value := 1;
3801  elsif (P_CHANGE_FLAG = 'F' and P_NEW_FLAG <> 'Y') then
3802     add_or_deduct_value := -1;
3803  elsif P_CHANGE_FLAG = 'N' then
3804   return;
3805  end if;
3806 
3807  ctr := 0;
3808  for objective_rec  in existing_code(m_ctrl_attribute_type)
3809  loop
3810     exit when existing_code%notfound;
3811 
3812    m_component_code(1) :=  objective_rec .ctrl_attr_code_1;
3813    m_component_code(2) :=  objective_rec .ctrl_attr_code_2;
3814    m_component_code(3) :=  objective_rec .ctrl_attr_code_3;
3815    m_component_code(4) :=   objective_rec .ctrl_attr_code_4;
3816    m_component_code(5) :=objective_rec .ctrl_attr_code_5;
3817    m_component_code(6) :=objective_rec .ctrl_attr_code_6;
3818    m_component_code(7) :=objective_rec .ctrl_attr_code_7;
3819    m_component_code(8) :=objective_rec .ctrl_attr_code_8;
3820    m_component_code(9) :=objective_rec .ctrl_attr_code_9;
3821    m_component_code(10) :=objective_rec .ctrl_attr_code_10;
3822    m_component_code(11) :=objective_rec .ctrl_attr_code_11;
3823    m_component_code(12) :=objective_rec .ctrl_attr_code_12;
3824    m_component_code(13) :=objective_rec .ctrl_attr_code_13;
3825    m_component_code(14) :=objective_rec .ctrl_attr_code_14;
3826    m_component_code(15) :=objective_rec .ctrl_attr_code_15;
3827    m_component_code(16) :=objective_rec .ctrl_attr_code_16;
3828    m_component_code(17) :=objective_rec .ctrl_attr_code_17;
3829    m_component_code(18) :=objective_rec .ctrl_attr_code_18;
3830    m_component_code(19) :=objective_rec .ctrl_attr_code_19;
3831    m_component_code(20) :=objective_rec .ctrl_attr_code_20;
3832    m_component_code(21) :=objective_rec .ctrl_attr_code_21;
3833    m_component_code(22) :=objective_rec .ctrl_attr_code_22;
3834    m_component_code(23) :=objective_rec .ctrl_attr_code_23;
3835    m_component_code(24) :=objective_rec .ctrl_attr_code_24;
3836    m_component_code(25) :=objective_rec .ctrl_attr_code_25;
3837    m_component_code(26) :=objective_rec .ctrl_attr_code_26;
3838    m_component_code(27) :=objective_rec .ctrl_attr_code_27;
3839    m_component_code(28) :=objective_rec .ctrl_attr_code_28;
3840    m_component_code(29) :=objective_rec .ctrl_attr_code_29;
3841    m_component_code(30) :=objective_rec .ctrl_attr_code_30;
3842 
3843    m_ineff_control(1) :=  objective_rec.ineff_ctrl_attr_1;
3844    m_ineff_control(2) :=  objective_rec.ineff_ctrl_attr_2;
3845    m_ineff_control(3) :=  objective_rec.ineff_ctrl_attr_3;
3846    m_ineff_control(4) :=   objective_rec.ineff_ctrl_attr_4;
3847    m_ineff_control(5) :=objective_rec.ineff_ctrl_attr_5;
3848    m_ineff_control(6) :=objective_rec.ineff_ctrl_attr_6;
3849    m_ineff_control(7) :=objective_rec.ineff_ctrl_attr_7;
3850    m_ineff_control(8) :=objective_rec.ineff_ctrl_attr_8;
3851    m_ineff_control(9) :=objective_rec.ineff_ctrl_attr_9;
3852    m_ineff_control(10) :=objective_rec.ineff_ctrl_attr_10;
3853    m_ineff_control(11) :=objective_rec.ineff_ctrl_attr_11;
3854    m_ineff_control(12) :=objective_rec.ineff_ctrl_attr_12;
3855    m_ineff_control(13) :=objective_rec.ineff_ctrl_attr_13;
3856    m_ineff_control(14) :=objective_rec.ineff_ctrl_attr_14;
3857    m_ineff_control(15) :=objective_rec.ineff_ctrl_attr_15;
3858    m_ineff_control(16) :=objective_rec.ineff_ctrl_attr_16;
3859    m_ineff_control(17) :=objective_rec.ineff_ctrl_attr_17;
3860    m_ineff_control(18) :=objective_rec.ineff_ctrl_attr_18;
3861    m_ineff_control(19) :=objective_rec.ineff_ctrl_attr_19;
3862    m_ineff_control(20) :=objective_rec.ineff_ctrl_attr_20;
3863    m_ineff_control(21) :=objective_rec.ineff_ctrl_attr_21;
3864    m_ineff_control(22) :=objective_rec.ineff_ctrl_attr_22;
3865    m_ineff_control(23) :=objective_rec.ineff_ctrl_attr_23;
3866    m_ineff_control(24) :=objective_rec.ineff_ctrl_attr_24;
3867    m_ineff_control(25) :=objective_rec.ineff_ctrl_attr_25;
3868    m_ineff_control(26) :=objective_rec.ineff_ctrl_attr_26;
3869    m_ineff_control(27) :=objective_rec.ineff_ctrl_attr_27;
3870    m_ineff_control(28) :=objective_rec.ineff_ctrl_attr_28;
3871    m_ineff_control(29) :=objective_rec.ineff_ctrl_attr_29;
3872    m_ineff_control(30) :=objective_rec.ineff_ctrl_attr_30;
3873 
3874 
3875  end loop; --end of control objectives loop
3876 
3877 
3878 -- **************** Check the REVISION of the Control came with the event has what COSO Codes *******************
3879 -- and in which filed (out of 1 to 30) it is falling and the init varaible with the -1 or +1 corrsponding to that
3880 --****************************************************************************************************************
3881  ctr := 0;
3882  for ctrl_objective_codes in obj_of_the_ctrl
3883  loop
3884     exit when obj_of_the_ctrl%notfound;
3885     ctr := 1;
3886     while ctr <=  30
3887     loop
3888 
3889 
3890       -- Only  '+1' or '-1' is stored and the actual addition or deduction (Addition of negative value)
3891       -- is done with the original value during the actual Table update
3892 
3893          if m_component_code(ctr) = ctrl_objective_codes.OBJECTIVE_CODE then
3894 
3895        /********** insanity check for the numbers ******
3896   	********* If the display format is a/b/c, then a >= 0 and b>= a and c>= b  ****/
3897         IF( (NVL(m_ineff_control(ctr),0) + add_or_deduct_value) < 0 or   (NVL(m_ineff_control(ctr),0) + add_or_deduct_value) > m_add_to_eval_ctrls(ctr))
3898   	THEN
3899   	AMW_FINSTMT_CERT_BES_PKG.G_REFRESH_FLAG := 'Y';
3900   	IF AMW_FINSTMT_CERT_BES_PKG.m_certification_list.exists(P_CERTIFICATION_ID) THEN
3901   	  EXIT;
3902   	ELSE
3903   	AMW_FINSTMT_CERT_BES_PKG.m_certification_list(AMW_FINSTMT_CERT_BES_PKG.m_certification_list.COUNT+1) := P_CERTIFICATION_ID;
3904   	EXIT;
3905   	END IF;
3906         END IF;
3907 
3908          m_ineff_control(ctr) :=  NVL(m_ineff_control(ctr),0) + add_or_deduct_value;
3909 
3910 
3911          if  P_NEW_FLAG = 'Y' then
3912       m_add_to_eval_ctrls(ctr) := 1;
3913 
3914          end if;
3915 
3916       end if;
3917        ctr := ctr + 1;
3918 
3919     end loop;
3920 
3921 
3922  end loop; --end of ctrl_objective_codes in obj_of_the_ctrl loop
3923 
3924 
3925 
3926 
3927     amw_fin_coso_views_pvt.UPDATE_FIN_ITEM_ROW(
3928      x_fin_certification_id       	=> 	P_CERTIFICATION_ID	,
3929      x_financial_statement_id    	=> 	P_FINANCIAL_STATEMENT_ID 	,
3930      x_financial_item_id         	=> 	P_FINANCIAL_ITEM_ID 	,
3931      x_account_group_id          	=> 	null	,
3932      x_natural_account_id        	=> 	null,
3933      x_object_type               	=> 	m_OBJECT_TYPE 	,
3934      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type       	,
3935      x_ineff_ctrl_attr_1         	=> 	m_ineff_control(1)	,
3936      x_ineff_ctrl_attr_2         	=> 	m_ineff_control(2)	,
3937      x_ineff_ctrl_attr_3         	=> 	m_ineff_control(3)	,
3938      x_ineff_ctrl_attr_4         	=> 	m_ineff_control(4)	,
3939      x_ineff_ctrl_attr_5         	=> 	m_ineff_control(5)	,
3940      x_ineff_ctrl_attr_6         	=> 	m_ineff_control(6)	,
3941      x_ineff_ctrl_attr_7         	=> 	m_ineff_control(7)	,
3942      x_ineff_ctrl_attr_8         	=> 	m_ineff_control(8)	,
3943      x_ineff_ctrl_attr_9         	=> 	m_ineff_control(9)	,
3944      x_ineff_ctrl_attr_10        	=> 	m_ineff_control(10)	,
3945      x_ineff_ctrl_attr_11        	=> 	m_ineff_control(11)	,
3946      x_ineff_ctrl_attr_12        	=> 	m_ineff_control(12)	,
3947      x_ineff_ctrl_attr_13        	=> 	m_ineff_control(13)	,
3948      x_ineff_ctrl_attr_14        	=> 	m_ineff_control(14)	,
3949      x_ineff_ctrl_attr_15        	=> 	m_ineff_control(15)	,
3950      x_ineff_ctrl_attr_16        	=> 	m_ineff_control(16)	,
3951      x_ineff_ctrl_attr_17        	=> 	m_ineff_control(17)	,
3952      x_ineff_ctrl_attr_18        	=> 	m_ineff_control(18)	,
3953      x_ineff_ctrl_attr_19        	=> 	m_ineff_control(19)	,
3954      x_ineff_ctrl_attr_20        	=> 	m_ineff_control(20)	,
3955      x_ineff_ctrl_attr_21        	=> 	m_ineff_control(21)	,
3956      x_ineff_ctrl_attr_22        	=> 	m_ineff_control(22)	,
3957      x_ineff_ctrl_attr_23        	=> 	m_ineff_control(23)	,
3958      x_ineff_ctrl_attr_24         	=> 	m_ineff_control(24)	,
3959      x_ineff_ctrl_attr_25        	=> 	m_ineff_control(25)	,
3960      x_ineff_ctrl_attr_26        	=> 	m_ineff_control(26)	,
3961      x_ineff_ctrl_attr_27        	=> 	m_ineff_control(27)	,
3962      x_ineff_ctrl_attr_28        	=> 	m_ineff_control(28)	,
3963      x_ineff_ctrl_attr_29        	=> 	m_ineff_control(29)	,
3964      x_ineff_ctrl_attr_30        	=> 	m_ineff_control(30)	,
3965      x_last_updated_by           	=> 	g_user_id	,
3966      x_last_update_date          	=> 	SYSDATE	,
3967      x_last_update_login         	=> 	g_login_id,
3968      x_eval_ctrl_attr_1         	=> 	m_add_to_eval_ctrls(1),
3969      x_eval_ctrl_attr_2         	=> 	m_add_to_eval_ctrls(2),
3970      x_eval_ctrl_attr_3         	=> 	m_add_to_eval_ctrls(3),
3971      x_eval_ctrl_attr_4         	=> 	m_add_to_eval_ctrls(4),
3972      x_eval_ctrl_attr_5         	=> 	m_add_to_eval_ctrls(5),
3973      x_eval_ctrl_attr_6         	=> 	m_add_to_eval_ctrls(6),
3974      x_eval_ctrl_attr_7         	=> 	m_add_to_eval_ctrls(7),
3975      x_eval_ctrl_attr_8         	=> 	m_add_to_eval_ctrls(8),
3976      x_eval_ctrl_attr_9         	=> 	m_add_to_eval_ctrls(9),
3977      x_eval_ctrl_attr_10        	=> 	m_add_to_eval_ctrls(10),
3978      x_eval_ctrl_attr_11         	=> 	m_add_to_eval_ctrls(11),
3979      x_eval_ctrl_attr_12         	=> 	m_add_to_eval_ctrls(12),
3980      x_eval_ctrl_attr_13         	=> 	m_add_to_eval_ctrls(13),
3981      x_eval_ctrl_attr_14         	=> 	m_add_to_eval_ctrls(14),
3982      x_eval_ctrl_attr_15         	=> 	m_add_to_eval_ctrls(15),
3983      x_eval_ctrl_attr_16         	=> 	m_add_to_eval_ctrls(16),
3984      x_eval_ctrl_attr_17         	=> 	m_add_to_eval_ctrls(17),
3985      x_eval_ctrl_attr_18         	=> 	m_add_to_eval_ctrls(18),
3986      x_eval_ctrl_attr_19         	=> 	m_add_to_eval_ctrls(19),
3987      x_eval_ctrl_attr_20        	=> 	m_add_to_eval_ctrls(20),
3988      x_eval_ctrl_attr_21         	=> 	m_add_to_eval_ctrls(21),
3989      x_eval_ctrl_attr_22         	=> 	m_add_to_eval_ctrls(22),
3990      x_eval_ctrl_attr_23         	=> 	m_add_to_eval_ctrls(23),
3991      x_eval_ctrl_attr_24         	=> 	m_add_to_eval_ctrls(24),
3992      x_eval_ctrl_attr_25         	=> 	m_add_to_eval_ctrls(25),
3993      x_eval_ctrl_attr_26         	=> 	m_add_to_eval_ctrls(26),
3994      x_eval_ctrl_attr_27         	=> 	m_add_to_eval_ctrls(27),
3995      x_eval_ctrl_attr_28         	=> 	m_add_to_eval_ctrls(28),
3996      x_eval_ctrl_attr_29         	=> 	m_add_to_eval_ctrls(29),
3997      x_eval_ctrl_attr_30        	=> 	m_add_to_eval_ctrls(30));
3998 
3999   EXCEPTION
4000      WHEN NO_DATA_FOUND
4001 	     THEN
4002             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_item_ctrl_components'
4003                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
4004 
4005      WHEN OTHERS
4006          THEN
4007             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_item_ctrl_components'
4008                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
4009 
4010 
4011   end;
4012 end ; --Update_item_ctrl_objectives
4013 
4014 ------------------------------ fOR THE ACCOUNTS ------------------------------------------------------------------------------
4015 
4016 
4017 PROCEDURE Update_acc_ctrl_objectives
4018 (P_CERTIFICATION_ID number ,
4019                   P_ACCOUNT_GROUP_ID  number ,
4020                   P_ACCOUNT_ID        number ,
4021                   P_CONTROL_ID        number ,
4022                   P_ORG_ID        number ,
4023                   P_CHANGE_FLAG VARCHAR2,
4024                   P_NEW_FLAG VARCHAR2) is
4025 
4026 
4027 
4028 begin
4029 declare
4030 cursor existing_code(par_type varchar2)
4031 is
4032  select
4033    ctrl_attr_code_1,
4034    ctrl_attr_code_2,
4035    ctrl_attr_code_3,
4036    ctrl_attr_code_4,
4037    ctrl_attr_code_5,
4038    ctrl_attr_code_6,
4039    ctrl_attr_code_7,
4040    ctrl_attr_code_8,
4041    ctrl_attr_code_9,
4042    ctrl_attr_code_10,
4043    ctrl_attr_code_11,
4044    ctrl_attr_code_12,
4045    ctrl_attr_code_13,
4046    ctrl_attr_code_14,
4047    ctrl_attr_code_15,
4048    ctrl_attr_code_16,
4049    ctrl_attr_code_17,
4050    ctrl_attr_code_18,
4051    ctrl_attr_code_19,
4052    ctrl_attr_code_20,
4053    ctrl_attr_code_21,
4054    ctrl_attr_code_22,
4055    ctrl_attr_code_23,
4056    ctrl_attr_code_24,
4057    ctrl_attr_code_25,
4058    ctrl_attr_code_26,
4059    ctrl_attr_code_27,
4060    ctrl_attr_code_28,
4061    ctrl_attr_code_29,
4062    ctrl_attr_code_30,
4063  ineff_ctrl_attr_1,
4064    ineff_ctrl_attr_2,
4065    ineff_ctrl_attr_3,
4066    ineff_ctrl_attr_4,
4067    ineff_ctrl_attr_5,
4068    ineff_ctrl_attr_6,
4069    ineff_ctrl_attr_7,
4070    ineff_ctrl_attr_8,
4071    ineff_ctrl_attr_9,
4072    ineff_ctrl_attr_10,
4073    ineff_ctrl_attr_11,
4074    ineff_ctrl_attr_12,
4075    ineff_ctrl_attr_13,
4076    ineff_ctrl_attr_14,
4077    ineff_ctrl_attr_15,
4078    ineff_ctrl_attr_16,
4079    ineff_ctrl_attr_17,
4080    ineff_ctrl_attr_18,
4081    ineff_ctrl_attr_19,
4082    ineff_ctrl_attr_20,
4083    ineff_ctrl_attr_21,
4084    ineff_ctrl_attr_22,
4085    ineff_ctrl_attr_23,
4086    ineff_ctrl_attr_24,
4087    ineff_ctrl_attr_25,
4088    ineff_ctrl_attr_26,
4089    ineff_ctrl_attr_27,
4090    ineff_ctrl_attr_28,
4091    ineff_ctrl_attr_29,
4092    ineff_ctrl_attr_30
4093 from
4094  amw_fin_cert_ctrl_sum
4095 where
4096  fin_certification_id = P_CERTIFICATION_ID and
4097  ctrl_attribute_type = par_type and
4098  ROWNUM <2
4099 AND  account_group_id =  P_ACCOUNT_GROUP_ID and
4100  natural_account_id  =  P_ACCOUNT_ID        and
4101  object_type	= 'ACCOUNT' ;
4102 
4103 
4104 ----------------------------------------------
4105 cursor obj_of_the_ctrl
4106 is
4107  select
4108  distinct
4109   comp.OBJECTIVE_CODE
4110 from
4111   amw.amw_fin_item_acc_ctrl ctrl,
4112   amw_control_objectives  comp
4113 where
4114  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID
4115  and
4116  ctrl.OBJECT_TYPE = 'ACCOUNT' and
4117  ctrl.ACCOUNT_GROUP_ID=   P_ACCOUNT_GROUP_ID
4118  AND
4119  ctrl.NATURAL_ACCOUNT_ID = P_ACCOUNT_ID
4120  and
4121  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
4122  ctrl.ORGANIZATION_ID = P_ORG_ID
4123  and
4124  ctrl.CONTROL_ID =  P_CONTROL_ID ;
4125 
4126 ----------------------------------------------------
4127  g_user_id              NUMBER        := fnd_global.user_id;
4128  g_login_id             NUMBER        := fnd_global.conc_login_id;
4129  m_object_version_number NUMBER;
4130  ctr integer :=0;
4131  max_num_of_codes integer :=0;
4132  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_OBJECTIVES';
4133  m_OBJECT_TYPE VARCHAR2(50) := 'ACCOUNT';
4134 
4135 
4136  m_component_code component_code_array;
4137  m_ineff_control  ineff_control_array ;
4138 -- m_acc_assert_flag component_code_array;
4139  m_add_to_eval_ctrls  total_control_array ;
4140 
4141  add_or_deduct_value number :=0;
4142 
4143 begin
4144 
4145  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
4146  ctr :=  1;
4147 
4148  loop
4149    EXIT  WHEN ctr > 30;
4150 
4151     m_component_code(ctr) := null;
4152   --  m_acc_assert_flag(ctr) := 'N';
4153     m_ineff_control(ctr) := 0;
4154     m_add_to_eval_ctrls(ctr) := 0;
4155 
4156     ctr := ctr + 1;
4157 
4158  end loop; --end of initialization
4159 
4160  -- ************ get All Control Components Codes and Load it in an Array for later use **************--
4161  m_ctrl_attribute_type  :='CTRL_OBJECTIVES';
4162 
4163  --- P_CHANGE_FLAG = 'F' means the Opinion is changed from Ineffective to Efective
4164  --- P_CHANGE_FLAG = 'B' means the Opinion is changed from Efective to Ineffective
4165 
4166   if P_CHANGE_FLAG = 'B' then
4167     add_or_deduct_value := 1;
4168  elsif (P_CHANGE_FLAG = 'F' and P_NEW_FLAG <> 'Y') then
4169     add_or_deduct_value := -1;
4170  elsif P_CHANGE_FLAG = 'N' then
4171   return;
4172  end if;
4173 
4174  ctr := 0;
4175  for objective_rec  in existing_code(m_ctrl_attribute_type)
4176  loop
4177     exit when existing_code%notfound;
4178 
4179        m_component_code(1) :=  objective_rec .ctrl_attr_code_1;
4180    m_component_code(2) :=  objective_rec .ctrl_attr_code_2;
4181    m_component_code(3) :=  objective_rec .ctrl_attr_code_3;
4182    m_component_code(4) :=   objective_rec .ctrl_attr_code_4;
4183    m_component_code(5) :=objective_rec .ctrl_attr_code_5;
4184    m_component_code(6) :=objective_rec .ctrl_attr_code_6;
4185    m_component_code(7) :=objective_rec .ctrl_attr_code_7;
4186    m_component_code(8) :=objective_rec .ctrl_attr_code_8;
4187    m_component_code(9) :=objective_rec .ctrl_attr_code_9;
4188    m_component_code(10) :=objective_rec .ctrl_attr_code_10;
4189    m_component_code(11) :=objective_rec .ctrl_attr_code_11;
4190    m_component_code(12) :=objective_rec .ctrl_attr_code_12;
4191    m_component_code(13) :=objective_rec .ctrl_attr_code_13;
4192    m_component_code(14) :=objective_rec .ctrl_attr_code_14;
4193    m_component_code(15) :=objective_rec .ctrl_attr_code_15;
4194    m_component_code(16) :=objective_rec .ctrl_attr_code_16;
4195    m_component_code(17) :=objective_rec .ctrl_attr_code_17;
4196    m_component_code(18) :=objective_rec .ctrl_attr_code_18;
4197    m_component_code(19) :=objective_rec .ctrl_attr_code_19;
4198    m_component_code(20) :=objective_rec .ctrl_attr_code_20;
4199    m_component_code(21) :=objective_rec .ctrl_attr_code_21;
4200    m_component_code(22) :=objective_rec .ctrl_attr_code_22;
4201    m_component_code(23) :=objective_rec .ctrl_attr_code_23;
4202    m_component_code(24) :=objective_rec .ctrl_attr_code_24;
4203    m_component_code(25) :=objective_rec .ctrl_attr_code_25;
4204    m_component_code(26) :=objective_rec .ctrl_attr_code_26;
4205    m_component_code(27) :=objective_rec .ctrl_attr_code_27;
4206    m_component_code(28) :=objective_rec .ctrl_attr_code_28;
4207    m_component_code(29) :=objective_rec .ctrl_attr_code_29;
4208    m_component_code(30) :=objective_rec .ctrl_attr_code_30;
4209 
4210   m_ineff_control(1) :=  objective_rec.ineff_ctrl_attr_1;
4211    m_ineff_control(2) :=  objective_rec.ineff_ctrl_attr_2;
4212    m_ineff_control(3) :=  objective_rec.ineff_ctrl_attr_3;
4213    m_ineff_control(4) :=   objective_rec.ineff_ctrl_attr_4;
4214    m_ineff_control(5) :=objective_rec.ineff_ctrl_attr_5;
4215    m_ineff_control(6) :=objective_rec.ineff_ctrl_attr_6;
4216    m_ineff_control(7) :=objective_rec.ineff_ctrl_attr_7;
4217    m_ineff_control(8) :=objective_rec.ineff_ctrl_attr_8;
4218    m_ineff_control(9) :=objective_rec.ineff_ctrl_attr_9;
4219    m_ineff_control(10) :=objective_rec.ineff_ctrl_attr_10;
4220    m_ineff_control(11) :=objective_rec.ineff_ctrl_attr_11;
4221    m_ineff_control(12) :=objective_rec.ineff_ctrl_attr_12;
4222    m_ineff_control(13) :=objective_rec.ineff_ctrl_attr_13;
4223    m_ineff_control(14) :=objective_rec.ineff_ctrl_attr_14;
4224    m_ineff_control(15) :=objective_rec.ineff_ctrl_attr_15;
4225    m_ineff_control(16) :=objective_rec.ineff_ctrl_attr_16;
4226    m_ineff_control(17) :=objective_rec.ineff_ctrl_attr_17;
4227    m_ineff_control(18) :=objective_rec.ineff_ctrl_attr_18;
4228    m_ineff_control(19) :=objective_rec.ineff_ctrl_attr_19;
4229    m_ineff_control(20) :=objective_rec.ineff_ctrl_attr_20;
4230    m_ineff_control(21) :=objective_rec.ineff_ctrl_attr_21;
4231    m_ineff_control(22) :=objective_rec.ineff_ctrl_attr_22;
4232    m_ineff_control(23) :=objective_rec.ineff_ctrl_attr_23;
4233    m_ineff_control(24) :=objective_rec.ineff_ctrl_attr_24;
4234    m_ineff_control(25) :=objective_rec.ineff_ctrl_attr_25;
4235    m_ineff_control(26) :=objective_rec.ineff_ctrl_attr_26;
4236    m_ineff_control(27) :=objective_rec.ineff_ctrl_attr_27;
4237    m_ineff_control(28) :=objective_rec.ineff_ctrl_attr_28;
4238    m_ineff_control(29) :=objective_rec.ineff_ctrl_attr_29;
4239    m_ineff_control(30) :=objective_rec.ineff_ctrl_attr_30;
4240 
4241  end loop; --end of COSO_COMPONENTS loop
4242 
4243 
4244 -- **************** Check the REVISION of the Control came with the event has what COSO Codes *******************
4245 -- and in which filed (out of 1 to 30) it is falling and the init varaible with the -1 or +1 corrsponding to that
4246 --****************************************************************************************************************
4247  ctr := 0;
4248  for ctrl_objective_codes in obj_of_the_ctrl
4249  loop
4250     exit when obj_of_the_ctrl%notfound;
4251     ctr := 1;
4252     while ctr <=  30
4253     loop
4254       if m_component_code(ctr) = ctrl_objective_codes.OBJECTIVE_CODE then
4255 
4256          m_ineff_control(ctr) :=  NVL(m_ineff_control(ctr),0) + add_or_deduct_value;
4257 
4258          -- m_ineff_control(ctr) :=  add_or_deduct_value;
4259 
4260          if  P_NEW_FLAG = 'Y' then
4261           m_add_to_eval_ctrls(ctr) := 1;
4262 
4263          end if;
4264 
4265       end if;
4266        ctr := ctr + 1;
4267 
4268     end loop;
4269 
4270 
4271  end loop; --end of ctrl_objective_codes in obj_of_the_ctrl loop
4272 
4273 
4274 
4275 
4276     amw_fin_coso_views_pvt.UPDATE_FIN_ACC_ROW(
4277      x_fin_certification_id       	=> 	P_CERTIFICATION_ID	,
4278      x_financial_statement_id    	=> 	NULL 	,
4279      x_financial_item_id         	=> 	NULL	,
4280      x_account_group_id          	=> 	P_ACCOUNT_GROUP_ID,
4281      x_natural_account_id        	=> 	P_ACCOUNT_ID,
4282      x_object_type               	=> 	m_OBJECT_TYPE 	,
4283      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type       	,
4284      x_ineff_ctrl_attr_1         	=> 	m_ineff_control(1)	,
4285      x_ineff_ctrl_attr_2         	=> 	m_ineff_control(2)	,
4286      x_ineff_ctrl_attr_3         	=> 	m_ineff_control(3)	,
4287      x_ineff_ctrl_attr_4         	=> 	m_ineff_control(4)	,
4288      x_ineff_ctrl_attr_5         	=> 	m_ineff_control(5)	,
4289      x_ineff_ctrl_attr_6         	=> 	m_ineff_control(6)	,
4290      x_ineff_ctrl_attr_7         	=> 	m_ineff_control(7)	,
4291      x_ineff_ctrl_attr_8         	=> 	m_ineff_control(8)	,
4292      x_ineff_ctrl_attr_9         	=> 	m_ineff_control(9)	,
4293      x_ineff_ctrl_attr_10        	=> 	m_ineff_control(10)	,
4294      x_ineff_ctrl_attr_11        	=> 	m_ineff_control(11)	,
4295      x_ineff_ctrl_attr_12        	=> 	m_ineff_control(12)	,
4296      x_ineff_ctrl_attr_13        	=> 	m_ineff_control(13)	,
4297      x_ineff_ctrl_attr_14        	=> 	m_ineff_control(14)	,
4298      x_ineff_ctrl_attr_15        	=> 	m_ineff_control(15)	,
4299      x_ineff_ctrl_attr_16        	=> 	m_ineff_control(16)	,
4300      x_ineff_ctrl_attr_17        	=> 	m_ineff_control(17)	,
4301      x_ineff_ctrl_attr_18        	=> 	m_ineff_control(18)	,
4302      x_ineff_ctrl_attr_19        	=> 	m_ineff_control(19)	,
4303      x_ineff_ctrl_attr_20        	=> 	m_ineff_control(20)	,
4304      x_ineff_ctrl_attr_21        	=> 	m_ineff_control(21)	,
4305      x_ineff_ctrl_attr_22        	=> 	m_ineff_control(22)	,
4306      x_ineff_ctrl_attr_23        	=> 	m_ineff_control(23)	,
4307      x_ineff_ctrl_attr_24         	=> 	m_ineff_control(24)	,
4308      x_ineff_ctrl_attr_25        	=> 	m_ineff_control(25)	,
4309      x_ineff_ctrl_attr_26        	=> 	m_ineff_control(26)	,
4310      x_ineff_ctrl_attr_27        	=> 	m_ineff_control(27)	,
4311      x_ineff_ctrl_attr_28        	=> 	m_ineff_control(28)	,
4312      x_ineff_ctrl_attr_29        	=> 	m_ineff_control(29)	,
4313      x_ineff_ctrl_attr_30        	=> 	m_ineff_control(30)	,
4314      x_last_updated_by           	=> 	g_user_id	,
4315      x_last_update_date          	=> 	SYSDATE	,
4316      x_last_update_login         	=> 	g_login_id,
4317      x_eval_ctrl_attr_1         	=> 	m_add_to_eval_ctrls(1),
4318      x_eval_ctrl_attr_2         	=> 	m_add_to_eval_ctrls(2),
4319      x_eval_ctrl_attr_3         	=> 	m_add_to_eval_ctrls(3),
4320      x_eval_ctrl_attr_4         	=> 	m_add_to_eval_ctrls(4),
4321      x_eval_ctrl_attr_5         	=> 	m_add_to_eval_ctrls(5),
4322      x_eval_ctrl_attr_6         	=> 	m_add_to_eval_ctrls(6),
4323      x_eval_ctrl_attr_7         	=> 	m_add_to_eval_ctrls(7),
4324      x_eval_ctrl_attr_8         	=> 	m_add_to_eval_ctrls(8),
4325      x_eval_ctrl_attr_9         	=> 	m_add_to_eval_ctrls(9),
4326      x_eval_ctrl_attr_10        	=> 	m_add_to_eval_ctrls(10),
4327      x_eval_ctrl_attr_11         	=> 	m_add_to_eval_ctrls(11),
4328      x_eval_ctrl_attr_12         	=> 	m_add_to_eval_ctrls(12),
4329      x_eval_ctrl_attr_13         	=> 	m_add_to_eval_ctrls(13),
4330      x_eval_ctrl_attr_14         	=> 	m_add_to_eval_ctrls(14),
4331      x_eval_ctrl_attr_15         	=> 	m_add_to_eval_ctrls(15),
4332      x_eval_ctrl_attr_16         	=> 	m_add_to_eval_ctrls(16),
4333      x_eval_ctrl_attr_17         	=> 	m_add_to_eval_ctrls(17),
4334      x_eval_ctrl_attr_18         	=> 	m_add_to_eval_ctrls(18),
4335      x_eval_ctrl_attr_19         	=> 	m_add_to_eval_ctrls(19),
4336      x_eval_ctrl_attr_20        	=> 	m_add_to_eval_ctrls(20),
4337      x_eval_ctrl_attr_21         	=> 	m_add_to_eval_ctrls(21),
4338      x_eval_ctrl_attr_22         	=> 	m_add_to_eval_ctrls(22),
4339      x_eval_ctrl_attr_23         	=> 	m_add_to_eval_ctrls(23),
4340      x_eval_ctrl_attr_24         	=> 	m_add_to_eval_ctrls(24),
4341      x_eval_ctrl_attr_25         	=> 	m_add_to_eval_ctrls(25),
4342      x_eval_ctrl_attr_26         	=> 	m_add_to_eval_ctrls(26),
4343      x_eval_ctrl_attr_27         	=> 	m_add_to_eval_ctrls(27),
4344      x_eval_ctrl_attr_28         	=> 	m_add_to_eval_ctrls(28),
4345      x_eval_ctrl_attr_29         	=> 	m_add_to_eval_ctrls(29),
4346      x_eval_ctrl_attr_30        	=> 	m_add_to_eval_ctrls(30)
4347 
4348 );
4349 
4350 
4351 EXCEPTION
4352      WHEN NO_DATA_FOUND
4353 	     THEN
4354             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_acc_ctrl_components'
4355                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
4356 
4357      WHEN OTHERS
4358          THEN
4359             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_acc_ctrl_components'
4360                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
4361 
4362 
4363 end;
4364 end ; --Update_acc_ctrl_objectives
4365 ------------------------------------------------------------------------------------------------------------
4366 --******************************************************************************************************
4367 /* ************************* End of Code to be executed for updating Control Objective LEVEL DATA
4368 -- when business evevnt is rised on opinion changes **** */
4369 --******************************************************************************************************
4370 
4371 
4372 ------------------------------------------------------------------------------------------------------------
4373 
4374 --******************************************************************************************************
4375 /* ************************* Code to be executed for updating Control Assertions LEVEL DATA
4376 -- when business evevnt is rised on opinion changes **** */
4377 --******************************************************************************************************
4378 
4379 PROCEDURE Update_item_ctrl_Assertions
4380 (P_CERTIFICATION_ID number ,
4381                   P_FINANCIAL_STATEMENT_ID number,
4382                   P_STATEMENT_GROUP_ID number,
4383                   P_FINANCIAL_ITEM_ID number,
4384                   P_CONTROL_ID        number ,
4385                   P_ORG_ID        number ,
4386                   P_CHANGE_FLAG VARCHAR2,
4387                   P_NEW_FLAG VARCHAR2) is
4388 
4389 begin
4390 
4391  declare
4392 
4393 cursor existing_code(par_type varchar2)
4394 is
4395  select
4396    ctrl_attr_code_1,
4397    ctrl_attr_code_2,
4398    ctrl_attr_code_3,
4399    ctrl_attr_code_4,
4400    ctrl_attr_code_5,
4401    ctrl_attr_code_6,
4402    ctrl_attr_code_7,
4403    ctrl_attr_code_8,
4404    ctrl_attr_code_9,
4405    ctrl_attr_code_10,
4406    ctrl_attr_code_11,
4407    ctrl_attr_code_12,
4408    ctrl_attr_code_13,
4409    ctrl_attr_code_14,
4410    ctrl_attr_code_15,
4411    ctrl_attr_code_16,
4412    ctrl_attr_code_17,
4413    ctrl_attr_code_18,
4414    ctrl_attr_code_19,
4415    ctrl_attr_code_20,
4416    ctrl_attr_code_21,
4417    ctrl_attr_code_22,
4418    ctrl_attr_code_23,
4419    ctrl_attr_code_24,
4420    ctrl_attr_code_25,
4421    ctrl_attr_code_26,
4422    ctrl_attr_code_27,
4423    ctrl_attr_code_28,
4424    ctrl_attr_code_29,
4425    ctrl_attr_code_30,
4426 ineff_ctrl_attr_1,
4427    ineff_ctrl_attr_2,
4428    ineff_ctrl_attr_3,
4429    ineff_ctrl_attr_4,
4430    ineff_ctrl_attr_5,
4431    ineff_ctrl_attr_6,
4432    ineff_ctrl_attr_7,
4433    ineff_ctrl_attr_8,
4434    ineff_ctrl_attr_9,
4435    ineff_ctrl_attr_10,
4436    ineff_ctrl_attr_11,
4437    ineff_ctrl_attr_12,
4438    ineff_ctrl_attr_13,
4439    ineff_ctrl_attr_14,
4440    ineff_ctrl_attr_15,
4441    ineff_ctrl_attr_16,
4442    ineff_ctrl_attr_17,
4443    ineff_ctrl_attr_18,
4444    ineff_ctrl_attr_19,
4445    ineff_ctrl_attr_20,
4446    ineff_ctrl_attr_21,
4447    ineff_ctrl_attr_22,
4448    ineff_ctrl_attr_23,
4449    ineff_ctrl_attr_24,
4450    ineff_ctrl_attr_25,
4451    ineff_ctrl_attr_26,
4452    ineff_ctrl_attr_27,
4453    ineff_ctrl_attr_28,
4454    ineff_ctrl_attr_29,
4455    ineff_ctrl_attr_30,
4456 acc_assert_flag_1 ,
4457 acc_assert_flag_2 ,
4458 acc_assert_flag_3 ,
4459 acc_assert_flag_4 ,
4460 acc_assert_flag_5 ,
4461 acc_assert_flag_6 ,
4462 acc_assert_flag_7 ,
4463 acc_assert_flag_8 ,
4464 acc_assert_flag_9 ,
4465 acc_assert_flag_10,
4466 acc_assert_flag_11 ,
4467 acc_assert_flag_12 ,
4468 acc_assert_flag_13 ,
4469 acc_assert_flag_14 ,
4470 acc_assert_flag_15 ,
4471 acc_assert_flag_16 ,
4472 acc_assert_flag_17 ,
4473 acc_assert_flag_18 ,
4474 acc_assert_flag_19 ,
4475 acc_assert_flag_20,
4476 acc_assert_flag_21 ,
4477 acc_assert_flag_22 ,
4478 acc_assert_flag_23 ,
4479 acc_assert_flag_24 ,
4480 acc_assert_flag_25 ,
4481 acc_assert_flag_26 ,
4482 acc_assert_flag_27 ,
4483 acc_assert_flag_28 ,
4484 acc_assert_flag_29 ,
4485 acc_assert_flag_30
4486 
4487 from
4488  amw_fin_cert_ctrl_sum
4489 where
4490  fin_certification_id = P_CERTIFICATION_ID and
4491  ctrl_attribute_type = par_type and
4492  ROWNUM <2;
4493 
4494 cursor assertion_of_the_ctrl
4495 is
4496 select
4497  distinct
4498  comp.ASSERTION_CODE
4499 from
4500   amw.amw_fin_item_acc_ctrl ctrl,
4501     amw_control_assertions comp
4502 where
4503  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID
4504  and
4505  ctrl.OBJECT_TYPE = 'FINANCIAL ITEM' and
4506  ctrl.FINANCIAL_ITEM_ID=  P_FINANCIAL_ITEM_ID
4507  and
4508  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
4509  ctrl.ORGANIZATION_ID = P_ORG_ID
4510  and
4511  ctrl.CONTROL_ID =  P_CONTROL_ID ;
4512 
4513 -- =================================  Get Account Assertion COdes FOR A FINANCIAL ITEM ===============================
4514 cursor ACC_ASSERT_FOR_FIN_ITEM
4515  is
4516 select DISTINCT
4517 ASSERTION_CODE
4518 from
4519 amw_account_assertions
4520 where
4521 NATURAL_ACCOUNT_ID IN
4522 (select DISTINCT NATURAL_ACCOUNT_ID from amw_fin_cert_scope where fin_certification_id = P_CERTIFICATION_ID and
4523 financial_item_id = P_FINANCIAL_ITEM_ID );
4524 
4525 
4526 
4527 -- *****************************************************************************************************
4528 
4529 
4530 
4531  g_user_id              NUMBER        := fnd_global.user_id;
4532  g_login_id             NUMBER        := fnd_global.conc_login_id;
4533  m_object_version_number NUMBER;
4534  ctr integer :=0;
4535  max_num_of_codes integer :=0;
4536   m_ctrl_attribute_type VARCHAR2(30) :='CTRL_ASSERTIONS';
4537  m_OBJECT_TYPE VARCHAR2(50) := 'FINANCIAL ITEM';
4538 
4539 
4540  m_component_code component_code_array;
4541  m_ineff_control  ineff_control_array ;
4542  m_acc_assert_flag component_code_array;
4543  m_add_to_eval_ctrls  total_control_array ;
4544 
4545  add_or_deduct_value number :=0;
4546 
4547  begin
4548 
4549  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
4550  ctr :=  1;
4551 
4552  loop
4553    EXIT  WHEN ctr > 30;
4554 
4555     m_component_code(ctr) := null;
4556     m_acc_assert_flag(ctr) := 'N';
4557     m_ineff_control(ctr) := 0;
4558     m_add_to_eval_ctrls(ctr) := 0;
4559 
4560     ctr := ctr + 1;
4561 
4562  end loop; --end of initialization
4563 
4564  -- ************ get All Control Components Codes and Load it in an Array for later use **************--
4565   m_ctrl_attribute_type :='CTRL_ASSERTIONS';
4566 
4567  --- P_CHANGE_FLAG = 'F' means the Opinion is changed from Ineffective to Efective
4568  --- P_CHANGE_FLAG = 'B' means the Opinion is changed from Efective to Ineffective
4569 
4570   if P_CHANGE_FLAG = 'B' then
4571     add_or_deduct_value := 1;
4572  elsif (P_CHANGE_FLAG = 'F' and P_NEW_FLAG <> 'Y') then
4573     add_or_deduct_value := -1;
4574  elsif P_CHANGE_FLAG = 'N' then
4575   return;
4576  end if;
4577 
4578  ctr := 0;
4579  for assertion_rec  in existing_code(m_ctrl_attribute_type)
4580  loop
4581     exit when existing_code%notfound;
4582 
4583        m_component_code(1) :=  assertion_rec .ctrl_attr_code_1;
4584    m_component_code(2) :=  assertion_rec .ctrl_attr_code_2;
4585    m_component_code(3) :=  assertion_rec .ctrl_attr_code_3;
4586    m_component_code(4) :=   assertion_rec .ctrl_attr_code_4;
4587    m_component_code(5) :=assertion_rec .ctrl_attr_code_5;
4588    m_component_code(6) :=assertion_rec .ctrl_attr_code_6;
4589    m_component_code(7) :=assertion_rec .ctrl_attr_code_7;
4590    m_component_code(8) :=assertion_rec .ctrl_attr_code_8;
4591    m_component_code(9) :=assertion_rec .ctrl_attr_code_9;
4592    m_component_code(10) :=assertion_rec .ctrl_attr_code_10;
4593    m_component_code(11) :=assertion_rec .ctrl_attr_code_11;
4594    m_component_code(12) :=assertion_rec .ctrl_attr_code_12;
4595    m_component_code(13) :=assertion_rec .ctrl_attr_code_13;
4596    m_component_code(14) :=assertion_rec .ctrl_attr_code_14;
4597    m_component_code(15) :=assertion_rec .ctrl_attr_code_15;
4598    m_component_code(16) :=assertion_rec .ctrl_attr_code_16;
4599    m_component_code(17) :=assertion_rec .ctrl_attr_code_17;
4600    m_component_code(18) :=assertion_rec .ctrl_attr_code_18;
4601    m_component_code(19) :=assertion_rec .ctrl_attr_code_19;
4602    m_component_code(20) :=assertion_rec .ctrl_attr_code_20;
4603    m_component_code(21) :=assertion_rec .ctrl_attr_code_21;
4604    m_component_code(22) :=assertion_rec .ctrl_attr_code_22;
4605    m_component_code(23) :=assertion_rec .ctrl_attr_code_23;
4606    m_component_code(24) :=assertion_rec .ctrl_attr_code_24;
4607    m_component_code(25) :=assertion_rec .ctrl_attr_code_25;
4608    m_component_code(26) :=assertion_rec .ctrl_attr_code_26;
4609    m_component_code(27) :=assertion_rec .ctrl_attr_code_27;
4610    m_component_code(28) :=assertion_rec .ctrl_attr_code_28;
4611    m_component_code(29) :=assertion_rec .ctrl_attr_code_29;
4612    m_component_code(30) :=assertion_rec .ctrl_attr_code_30;
4613 
4614 
4615    m_acc_assert_flag(1) :=  assertion_rec .acc_assert_flag_1;
4616    m_acc_assert_flag(2) :=  assertion_rec .acc_assert_flag_2;
4617    m_acc_assert_flag(3) :=  assertion_rec .acc_assert_flag_3;
4618    m_acc_assert_flag(4) :=   assertion_rec .acc_assert_flag_4;
4619    m_acc_assert_flag(5) :=assertion_rec .acc_assert_flag_5;
4620    m_acc_assert_flag(6) :=assertion_rec .acc_assert_flag_6;
4621    m_acc_assert_flag(7) :=assertion_rec .acc_assert_flag_7;
4622    m_acc_assert_flag(8) :=assertion_rec .acc_assert_flag_8;
4623    m_acc_assert_flag(9) :=assertion_rec .acc_assert_flag_9;
4624    m_acc_assert_flag(10) :=assertion_rec .acc_assert_flag_10;
4625    m_acc_assert_flag(11) :=assertion_rec .acc_assert_flag_11;
4626    m_acc_assert_flag(12) :=assertion_rec .acc_assert_flag_12;
4627    m_acc_assert_flag(13) :=assertion_rec .acc_assert_flag_13;
4628    m_acc_assert_flag(14) :=assertion_rec .acc_assert_flag_14;
4629    m_acc_assert_flag(15) :=assertion_rec .acc_assert_flag_15;
4630    m_acc_assert_flag(16) :=assertion_rec .acc_assert_flag_16;
4631    m_acc_assert_flag(17) :=assertion_rec .acc_assert_flag_17;
4632    m_acc_assert_flag(18) :=assertion_rec .acc_assert_flag_18;
4633    m_acc_assert_flag(19) :=assertion_rec .acc_assert_flag_19;
4634    m_acc_assert_flag(20) :=assertion_rec .acc_assert_flag_20;
4635    m_acc_assert_flag(21) :=assertion_rec .acc_assert_flag_21;
4636    m_acc_assert_flag(22) :=assertion_rec .acc_assert_flag_22;
4637    m_acc_assert_flag(23) :=assertion_rec .acc_assert_flag_23;
4638    m_acc_assert_flag(24) :=assertion_rec .acc_assert_flag_24;
4639    m_acc_assert_flag(25) :=assertion_rec .acc_assert_flag_25;
4640    m_acc_assert_flag(26) :=assertion_rec .acc_assert_flag_26;
4641    m_acc_assert_flag(27) :=assertion_rec .acc_assert_flag_27;
4642    m_acc_assert_flag(28) :=assertion_rec .acc_assert_flag_28;
4643    m_acc_assert_flag(29) :=assertion_rec .acc_assert_flag_29;
4644    m_acc_assert_flag(30) :=assertion_rec .acc_assert_flag_30;
4645 
4646    m_ineff_control(1) :=  assertion_rec.ineff_ctrl_attr_1;
4647    m_ineff_control(2) :=  assertion_rec.ineff_ctrl_attr_2;
4648    m_ineff_control(3) :=  assertion_rec.ineff_ctrl_attr_3;
4649    m_ineff_control(4) :=   assertion_rec.ineff_ctrl_attr_4;
4650    m_ineff_control(5) :=assertion_rec.ineff_ctrl_attr_5;
4651    m_ineff_control(6) :=assertion_rec.ineff_ctrl_attr_6;
4652    m_ineff_control(7) :=assertion_rec.ineff_ctrl_attr_7;
4653    m_ineff_control(8) :=assertion_rec.ineff_ctrl_attr_8;
4654    m_ineff_control(9) :=assertion_rec.ineff_ctrl_attr_9;
4655    m_ineff_control(10) :=assertion_rec.ineff_ctrl_attr_10;
4656    m_ineff_control(11) :=assertion_rec.ineff_ctrl_attr_11;
4657    m_ineff_control(12) :=assertion_rec.ineff_ctrl_attr_12;
4658    m_ineff_control(13) :=assertion_rec.ineff_ctrl_attr_13;
4659    m_ineff_control(14) :=assertion_rec.ineff_ctrl_attr_14;
4660    m_ineff_control(15) :=assertion_rec.ineff_ctrl_attr_15;
4661    m_ineff_control(16) :=assertion_rec.ineff_ctrl_attr_16;
4662    m_ineff_control(17) :=assertion_rec.ineff_ctrl_attr_17;
4663    m_ineff_control(18) :=assertion_rec.ineff_ctrl_attr_18;
4664    m_ineff_control(19) :=assertion_rec.ineff_ctrl_attr_19;
4665    m_ineff_control(20) :=assertion_rec.ineff_ctrl_attr_20;
4666    m_ineff_control(21) :=assertion_rec.ineff_ctrl_attr_21;
4667    m_ineff_control(22) :=assertion_rec.ineff_ctrl_attr_22;
4668    m_ineff_control(23) :=assertion_rec.ineff_ctrl_attr_23;
4669    m_ineff_control(24) :=assertion_rec.ineff_ctrl_attr_24;
4670    m_ineff_control(25) :=assertion_rec.ineff_ctrl_attr_25;
4671    m_ineff_control(26) :=assertion_rec.ineff_ctrl_attr_26;
4672    m_ineff_control(27) :=assertion_rec.ineff_ctrl_attr_27;
4673    m_ineff_control(28) :=assertion_rec.ineff_ctrl_attr_28;
4674    m_ineff_control(29) :=assertion_rec.ineff_ctrl_attr_29;
4675    m_ineff_control(30) :=assertion_rec.ineff_ctrl_attr_30;
4676 
4677  end loop; --end of Control Assertion Rec loop
4678 
4679 
4680 -- **************** Check the REVISION of the Control came with the event has what COSO Codes *******************
4681 -- and in which filed (out of 1 to 30) it is falling and the init varaible with the -1 or +1 corrsponding to that
4682 --****************************************************************************************************************
4683  ctr := 0;
4684  for ctrl_assertion_codes in assertion_of_the_ctrl
4685  loop
4686     exit when assertion_of_the_ctrl%notfound;
4687     ctr := 1;
4688     while ctr <=  30
4689     loop
4690       if m_component_code(ctr) = ctrl_assertion_codes.ASSERTION_CODE then
4691 
4692        /********** insanity check for the numbers ******
4693   	********* If the display format is a/b/c, then a >= 0 and b>= a and c>= b  ****/
4694         IF( (NVL(m_ineff_control(ctr),0) + add_or_deduct_value) < 0 or   (NVL(m_ineff_control(ctr),0) + add_or_deduct_value) > m_add_to_eval_ctrls(ctr))
4695   	THEN
4696   	AMW_FINSTMT_CERT_BES_PKG.G_REFRESH_FLAG := 'Y';
4697   	IF AMW_FINSTMT_CERT_BES_PKG.m_certification_list.exists(P_CERTIFICATION_ID) THEN
4698   	  EXIT;
4699   	ELSE
4700   	AMW_FINSTMT_CERT_BES_PKG.m_certification_list(AMW_FINSTMT_CERT_BES_PKG.m_certification_list.COUNT+1) := P_CERTIFICATION_ID;
4701   	EXIT;
4702   	END IF;
4703         END IF;
4704 
4705        m_ineff_control(ctr) :=  NVL(m_ineff_control(ctr),0) + add_or_deduct_value;
4706 
4707 
4708          if  P_NEW_FLAG = 'Y' then
4709             m_add_to_eval_ctrls(ctr) := 1;
4710 
4711          end if;
4712 
4713       end if;
4714        ctr := ctr + 1;
4715 
4716     end loop;
4717 
4718 
4719  end loop; --end of ctrl_assertion_codes in assertion_of_the_ctrl loop
4720 
4721 
4722    --************ The Image Display Flag setting should be done last as it need ineffective control array *********--
4723        for acc_assertions in ACC_ASSERT_FOR_FIN_ITEM
4724        loop
4725           exit when ACC_ASSERT_FOR_FIN_ITEM%notfound;
4726 
4727           ctr := 1;
4728           while ctr <=  30
4729           loop
4730 
4731             -- NOT ONLY CHECK WHETHER THE ACCOUNT IS MAPPED TO THE ASSERTION CODE BUT ALSO
4732             -- THERE IS AT LEASE ONE CONROL (WHICH MAPPED TO THE SAME ASSERTION) AND ACCOUNT (THORUGH)
4733             -- IT RELATION TO PROCESS IS INEFFECTIVE
4734 
4735              if  (m_component_code(ctr) =  acc_assertions.ASSERTION_CODE
4736                  and m_ineff_control(ctr) > 0 ) then
4737                  m_acc_assert_flag(ctr) := 'Y';
4738                 exit;
4739              end if;
4740              ctr := ctr +1;
4741           end loop;
4742        end loop; --end of acc_assertions in ACC_ASSERT_CODES
4743 
4744 
4745 
4746 
4747     amw_fin_coso_views_pvt.UPDATE_FINITEM_ASSERT_ROW(
4748      x_fin_certification_id       	=> 	P_CERTIFICATION_ID	,
4749      x_financial_statement_id    	=> 	P_FINANCIAL_STATEMENT_ID 	,
4750      x_financial_item_id         	=> 	P_FINANCIAL_ITEM_ID 	,
4751      x_account_group_id          	=> 	null	,
4752      x_natural_account_id        	=> 	null,
4753      x_object_type               	=> 	m_OBJECT_TYPE 	,
4754      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type       	,
4755      x_ineff_ctrl_attr_1         	=> 	m_ineff_control(1)	,
4756      x_ineff_ctrl_attr_2         	=> 	m_ineff_control(2)	,
4757      x_ineff_ctrl_attr_3         	=> 	m_ineff_control(3)	,
4758      x_ineff_ctrl_attr_4         	=> 	m_ineff_control(4)	,
4759      x_ineff_ctrl_attr_5         	=> 	m_ineff_control(5)	,
4760      x_ineff_ctrl_attr_6         	=> 	m_ineff_control(6)	,
4761      x_ineff_ctrl_attr_7         	=> 	m_ineff_control(7)	,
4762      x_ineff_ctrl_attr_8         	=> 	m_ineff_control(8)	,
4763      x_ineff_ctrl_attr_9         	=> 	m_ineff_control(9)	,
4764      x_ineff_ctrl_attr_10        	=> 	m_ineff_control(10)	,
4765      x_ineff_ctrl_attr_11        	=> 	m_ineff_control(11)	,
4766      x_ineff_ctrl_attr_12        	=> 	m_ineff_control(12)	,
4767      x_ineff_ctrl_attr_13        	=> 	m_ineff_control(13)	,
4768      x_ineff_ctrl_attr_14        	=> 	m_ineff_control(14)	,
4769      x_ineff_ctrl_attr_15        	=> 	m_ineff_control(15)	,
4770      x_ineff_ctrl_attr_16        	=> 	m_ineff_control(16)	,
4771      x_ineff_ctrl_attr_17        	=> 	m_ineff_control(17)	,
4772      x_ineff_ctrl_attr_18        	=> 	m_ineff_control(18)	,
4773      x_ineff_ctrl_attr_19        	=> 	m_ineff_control(19)	,
4774      x_ineff_ctrl_attr_20        	=> 	m_ineff_control(20)	,
4775      x_ineff_ctrl_attr_21        	=> 	m_ineff_control(21)	,
4776      x_ineff_ctrl_attr_22        	=> 	m_ineff_control(22)	,
4777      x_ineff_ctrl_attr_23        	=> 	m_ineff_control(23)	,
4778      x_ineff_ctrl_attr_24         	=> 	m_ineff_control(24)	,
4779      x_ineff_ctrl_attr_25        	=> 	m_ineff_control(25)	,
4780      x_ineff_ctrl_attr_26        	=> 	m_ineff_control(26)	,
4781      x_ineff_ctrl_attr_27        	=> 	m_ineff_control(27)	,
4782      x_ineff_ctrl_attr_28        	=> 	m_ineff_control(28)	,
4783      x_ineff_ctrl_attr_29        	=> 	m_ineff_control(29)	,
4784      x_ineff_ctrl_attr_30        	=> 	m_ineff_control(30)	,
4785      x_last_updated_by           	=> 	g_user_id	,
4786      x_last_update_date          	=> 	SYSDATE	,
4787      x_last_update_login         	=> 	g_login_id,
4788      x_eval_ctrl_attr_1         	=> 	m_add_to_eval_ctrls(1),
4789      x_eval_ctrl_attr_2         	=> 	m_add_to_eval_ctrls(2),
4790      x_eval_ctrl_attr_3         	=> 	m_add_to_eval_ctrls(3),
4791      x_eval_ctrl_attr_4         	=> 	m_add_to_eval_ctrls(4),
4792      x_eval_ctrl_attr_5         	=> 	m_add_to_eval_ctrls(5),
4793      x_eval_ctrl_attr_6         	=> 	m_add_to_eval_ctrls(6),
4794      x_eval_ctrl_attr_7         	=> 	m_add_to_eval_ctrls(7),
4795      x_eval_ctrl_attr_8         	=> 	m_add_to_eval_ctrls(8),
4796      x_eval_ctrl_attr_9         	=> 	m_add_to_eval_ctrls(9),
4797      x_eval_ctrl_attr_10        	=> 	m_add_to_eval_ctrls(10),
4798      x_eval_ctrl_attr_11         	=> 	m_add_to_eval_ctrls(11),
4799      x_eval_ctrl_attr_12         	=> 	m_add_to_eval_ctrls(12),
4800      x_eval_ctrl_attr_13         	=> 	m_add_to_eval_ctrls(13),
4801      x_eval_ctrl_attr_14         	=> 	m_add_to_eval_ctrls(14),
4802      x_eval_ctrl_attr_15         	=> 	m_add_to_eval_ctrls(15),
4803      x_eval_ctrl_attr_16         	=> 	m_add_to_eval_ctrls(16),
4804      x_eval_ctrl_attr_17         	=> 	m_add_to_eval_ctrls(17),
4805      x_eval_ctrl_attr_18         	=> 	m_add_to_eval_ctrls(18),
4806      x_eval_ctrl_attr_19         	=> 	m_add_to_eval_ctrls(19),
4807      x_eval_ctrl_attr_20        	=> 	m_add_to_eval_ctrls(20),
4808      x_eval_ctrl_attr_21         	=> 	m_add_to_eval_ctrls(21),
4809      x_eval_ctrl_attr_22         	=> 	m_add_to_eval_ctrls(22),
4810      x_eval_ctrl_attr_23         	=> 	m_add_to_eval_ctrls(23),
4811      x_eval_ctrl_attr_24         	=> 	m_add_to_eval_ctrls(24),
4812      x_eval_ctrl_attr_25         	=> 	m_add_to_eval_ctrls(25),
4813      x_eval_ctrl_attr_26         	=> 	m_add_to_eval_ctrls(26),
4814      x_eval_ctrl_attr_27         	=> 	m_add_to_eval_ctrls(27),
4815      x_eval_ctrl_attr_28         	=> 	m_add_to_eval_ctrls(28),
4816      x_eval_ctrl_attr_29         	=> 	m_add_to_eval_ctrls(29),
4817      x_eval_ctrl_attr_30        	=> 	m_add_to_eval_ctrls(30),
4818      x_acc_assert_flag1         	=> 	m_acc_assert_flag(1),
4819      x_acc_assert_flag2         	=> 	m_acc_assert_flag(2),
4820      x_acc_assert_flag3         	=> 	m_acc_assert_flag(3),
4821      x_acc_assert_flag4         	=> 	m_acc_assert_flag(4),
4822      x_acc_assert_flag5         	=> 	m_acc_assert_flag(5),
4823      x_acc_assert_flag6         	=> 	m_acc_assert_flag(6),
4824      x_acc_assert_flag7         	=> 	m_acc_assert_flag(7),
4825      x_acc_assert_flag8         	=> 	m_acc_assert_flag(8),
4826      x_acc_assert_flag9         	=> 	m_acc_assert_flag(9),
4827      x_acc_assert_flag10        	=> 	m_acc_assert_flag(10),
4828      x_acc_assert_flag11         	=> 	m_acc_assert_flag(11),
4829      x_acc_assert_flag12         	=> 	m_acc_assert_flag(12),
4830      x_acc_assert_flag13         	=> 	m_acc_assert_flag(13),
4831      x_acc_assert_flag14         	=> 	m_acc_assert_flag(14),
4832      x_acc_assert_flag15         	=> 	m_acc_assert_flag(15),
4833      x_acc_assert_flag16         	=> 	m_acc_assert_flag(16),
4834      x_acc_assert_flag17         	=> 	m_acc_assert_flag(17),
4835      x_acc_assert_flag18         	=> 	m_acc_assert_flag(18),
4836      x_acc_assert_flag19         	=> 	m_acc_assert_flag(19),
4837      x_acc_assert_flag20        	=> 	m_acc_assert_flag(20),
4838      x_acc_assert_flag21         	=> 	m_acc_assert_flag(21),
4839      x_acc_assert_flag22         	=> 	m_acc_assert_flag(22),
4840      x_acc_assert_flag23         	=> 	m_acc_assert_flag(23),
4841      x_acc_assert_flag24         	=> 	m_acc_assert_flag(24),
4842      x_acc_assert_flag25         	=> 	m_acc_assert_flag(25),
4843      x_acc_assert_flag26         	=> 	m_acc_assert_flag(26),
4844      x_acc_assert_flag27         	=> 	m_acc_assert_flag(27),
4845      x_acc_assert_flag28         	=> 	m_acc_assert_flag(28),
4846      x_acc_assert_flag29         	=> 	m_acc_assert_flag(29),
4847      x_acc_assert_flag30        	=> 	m_acc_assert_flag(30)
4848  );
4849 
4850   EXCEPTION
4851      WHEN NO_DATA_FOUND
4852 	     THEN
4853             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_item_ctrl_components'
4854                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
4855 
4856      WHEN OTHERS
4857          THEN
4858             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_item_ctrl_components'
4859                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
4860 
4861 
4862   end;
4863 end ; --Update_item_ctrl_Assertions
4864 
4865 ------------------------------ fOR THE ACCOUNTS ------------------------------------------------------------------------------
4866 
4867 
4868 PROCEDURE Update_acc_ctrl_Assertions
4869 (P_CERTIFICATION_ID number ,
4870                   P_ACCOUNT_GROUP_ID  number ,
4871                   P_ACCOUNT_ID        number ,
4872                   P_CONTROL_ID        number ,
4873                   P_ORG_ID        number ,
4874                   P_CHANGE_FLAG VARCHAR2,
4875                   P_NEW_FLAG VARCHAR2) is
4876 
4877 
4878 
4879 begin
4880 declare
4881 cursor existing_code(par_type varchar2)
4882 is
4883  select
4884    ctrl_attr_code_1,
4885    ctrl_attr_code_2,
4886    ctrl_attr_code_3,
4887    ctrl_attr_code_4,
4888    ctrl_attr_code_5,
4889    ctrl_attr_code_6,
4890    ctrl_attr_code_7,
4891    ctrl_attr_code_8,
4892    ctrl_attr_code_9,
4893    ctrl_attr_code_10,
4894    ctrl_attr_code_11,
4895    ctrl_attr_code_12,
4896    ctrl_attr_code_13,
4897    ctrl_attr_code_14,
4898    ctrl_attr_code_15,
4899    ctrl_attr_code_16,
4900    ctrl_attr_code_17,
4901    ctrl_attr_code_18,
4902    ctrl_attr_code_19,
4903    ctrl_attr_code_20,
4904    ctrl_attr_code_21,
4905    ctrl_attr_code_22,
4906    ctrl_attr_code_23,
4907    ctrl_attr_code_24,
4908    ctrl_attr_code_25,
4909    ctrl_attr_code_26,
4910    ctrl_attr_code_27,
4911    ctrl_attr_code_28,
4912    ctrl_attr_code_29,
4913    ctrl_attr_code_30,
4914    ineff_ctrl_attr_1,
4915    ineff_ctrl_attr_2,
4916    ineff_ctrl_attr_3,
4917    ineff_ctrl_attr_4,
4918    ineff_ctrl_attr_5,
4919    ineff_ctrl_attr_6,
4920    ineff_ctrl_attr_7,
4921    ineff_ctrl_attr_8,
4922    ineff_ctrl_attr_9,
4923    ineff_ctrl_attr_10,
4924    ineff_ctrl_attr_11,
4925    ineff_ctrl_attr_12,
4926    ineff_ctrl_attr_13,
4927    ineff_ctrl_attr_14,
4928    ineff_ctrl_attr_15,
4929    ineff_ctrl_attr_16,
4930    ineff_ctrl_attr_17,
4931    ineff_ctrl_attr_18,
4932    ineff_ctrl_attr_19,
4933    ineff_ctrl_attr_20,
4934    ineff_ctrl_attr_21,
4935    ineff_ctrl_attr_22,
4936    ineff_ctrl_attr_23,
4937    ineff_ctrl_attr_24,
4938    ineff_ctrl_attr_25,
4939    ineff_ctrl_attr_26,
4940    ineff_ctrl_attr_27,
4941    ineff_ctrl_attr_28,
4942    ineff_ctrl_attr_29,
4943    ineff_ctrl_attr_30,
4944 acc_assert_flag_1 ,
4945 acc_assert_flag_2 ,
4946 acc_assert_flag_3 ,
4947 acc_assert_flag_4 ,
4948 acc_assert_flag_5 ,
4949 acc_assert_flag_6 ,
4950 acc_assert_flag_7 ,
4951 acc_assert_flag_8 ,
4952 acc_assert_flag_9 ,
4953 acc_assert_flag_10,
4954 acc_assert_flag_11 ,
4955 acc_assert_flag_12 ,
4956 acc_assert_flag_13 ,
4957 acc_assert_flag_14 ,
4958 acc_assert_flag_15 ,
4959 acc_assert_flag_16 ,
4960 acc_assert_flag_17 ,
4961 acc_assert_flag_18 ,
4962 acc_assert_flag_19 ,
4963 acc_assert_flag_20,
4964 acc_assert_flag_21 ,
4965 acc_assert_flag_22 ,
4966 acc_assert_flag_23 ,
4967 acc_assert_flag_24 ,
4968 acc_assert_flag_25 ,
4969 acc_assert_flag_26 ,
4970 acc_assert_flag_27 ,
4971 acc_assert_flag_28 ,
4972 acc_assert_flag_29 ,
4973 acc_assert_flag_30
4974 from
4975  amw_fin_cert_ctrl_sum
4976 where
4977  fin_certification_id = P_CERTIFICATION_ID and
4978  ctrl_attribute_type = par_type and
4979  ROWNUM <2
4980 AND  account_group_id =  P_ACCOUNT_GROUP_ID and
4981  natural_account_id  =  P_ACCOUNT_ID        and
4982  object_type	= 'ACCOUNT' ;
4983 
4984 
4985 ----------------------------------------------
4986 cursor assertion_of_the_ctrl
4987 is
4988   select
4989  distinct
4990   comp.ASSERTION_CODE
4991 from
4992   amw.amw_fin_item_acc_ctrl ctrl,
4993  amw_control_assertions comp
4994 where
4995  ctrl.FIN_CERTIFICATION_ID=  P_CERTIFICATION_ID
4996  and
4997  ctrl.OBJECT_TYPE = 'ACCOUNT' and
4998  ctrl.ACCOUNT_GROUP_ID=   P_ACCOUNT_GROUP_ID
4999  AND
5000  ctrl.NATURAL_ACCOUNT_ID = P_ACCOUNT_ID
5001  and
5002  ctrl.CONTROL_REV_ID =comp.CONTROL_REV_ID and
5003  ctrl.ORGANIZATION_ID = P_ORG_ID
5004  and
5005  ctrl.CONTROL_ID =  P_CONTROL_ID ;
5006 
5007 --********************* Get Account Assertion COdes *************************************************--
5008 /*
5009 cursor ACC_ASSERT_CODES
5010  is
5011 select
5012 ASSERTION_CODE
5013 from
5014 amw_account_assertions
5015 where
5016 NATURAL_ACCOUNT_ID =P_ACCOUNT_ID  ;
5017 */
5018 
5019 cursor ACC_ASSERT_CODES
5020  is
5021 select
5022 distinct
5023 ASSERTION_CODE
5024 from
5025 amw_account_assertions
5026 where
5027 ((NATURAL_ACCOUNT_ID =P_ACCOUNT_ID) or (NATURAL_ACCOUNT_ID in (select CHILD_NATURAL_ACCOUNT_ID from amw_fin_key_acct_flat
5028 where  PARENT_NATURAL_ACCOUNT_ID  =P_ACCOUNT_ID and ACCOUNT_GROUP_ID=P_ACCOUNT_GROUP_ID)));
5029 
5030 ----------------------------------------------------
5031  g_user_id              NUMBER        := fnd_global.user_id;
5032  g_login_id             NUMBER        := fnd_global.conc_login_id;
5033  m_object_version_number NUMBER;
5034  ctr integer :=0;
5035  max_num_of_codes integer :=0;  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_ASSERTIONS';
5036  m_OBJECT_TYPE VARCHAR2(50) := 'ACCOUNT';
5037 
5038 m_assertions_code component_code_array;
5039  m_component_code component_code_array;
5040  m_ineff_control  ineff_control_array ;
5041  m_acc_assert_flag component_code_array;
5042  m_add_to_eval_ctrls  total_control_array ;
5043 
5044  add_or_deduct_value number :=0;
5045 
5046 begin
5047 
5048  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
5049  ctr :=  1;
5050 
5051  loop
5052    EXIT  WHEN ctr > 30;
5053 
5054     m_component_code(ctr) := null;
5055     m_acc_assert_flag(ctr) := 'N';
5056     m_ineff_control(ctr) := 0;
5057     m_add_to_eval_ctrls(ctr) := 0;
5058 
5059     ctr := ctr + 1;
5060 
5061  end loop; --end of initialization
5062 
5063  -- ************ get All Control Components Codes and Load it in an Array for later use **************--
5064   m_ctrl_attribute_type :='CTRL_ASSERTIONS';
5065 
5066  --- P_CHANGE_FLAG = 'F' means the Opinion is changed from Ineffective to Efective
5067  --- P_CHANGE_FLAG = 'B' means the Opinion is changed from Efective to Ineffective
5068 
5069   if P_CHANGE_FLAG = 'B' then
5070     add_or_deduct_value := 1;
5071  elsif (P_CHANGE_FLAG = 'F' and P_NEW_FLAG <> 'Y') then
5072     add_or_deduct_value := -1;
5073  elsif P_CHANGE_FLAG = 'N' then
5074   return;
5075  end if;
5076 
5077  ctr := 0;
5078  for assertion_rec  in existing_code(m_ctrl_attribute_type)
5079  loop
5080     exit when existing_code%notfound;
5081 
5082    m_component_code(1) :=  assertion_rec .ctrl_attr_code_1;
5083    m_component_code(2) :=  assertion_rec .ctrl_attr_code_2;
5084    m_component_code(3) :=  assertion_rec .ctrl_attr_code_3;
5085    m_component_code(4) :=   assertion_rec .ctrl_attr_code_4;
5086    m_component_code(5) :=assertion_rec .ctrl_attr_code_5;
5087    m_component_code(6) :=assertion_rec .ctrl_attr_code_6;
5088    m_component_code(7) :=assertion_rec .ctrl_attr_code_7;
5089    m_component_code(8) :=assertion_rec .ctrl_attr_code_8;
5090    m_component_code(9) :=assertion_rec .ctrl_attr_code_9;
5091    m_component_code(10) :=assertion_rec .ctrl_attr_code_10;
5092    m_component_code(11) :=assertion_rec .ctrl_attr_code_11;
5093    m_component_code(12) :=assertion_rec .ctrl_attr_code_12;
5094    m_component_code(13) :=assertion_rec .ctrl_attr_code_13;
5095    m_component_code(14) :=assertion_rec .ctrl_attr_code_14;
5096    m_component_code(15) :=assertion_rec .ctrl_attr_code_15;
5097    m_component_code(16) :=assertion_rec .ctrl_attr_code_16;
5098    m_component_code(17) :=assertion_rec .ctrl_attr_code_17;
5099    m_component_code(18) :=assertion_rec .ctrl_attr_code_18;
5100    m_component_code(19) :=assertion_rec .ctrl_attr_code_19;
5101    m_component_code(20) :=assertion_rec .ctrl_attr_code_20;
5102    m_component_code(21) :=assertion_rec .ctrl_attr_code_21;
5103    m_component_code(22) :=assertion_rec .ctrl_attr_code_22;
5104    m_component_code(23) :=assertion_rec .ctrl_attr_code_23;
5105    m_component_code(24) :=assertion_rec .ctrl_attr_code_24;
5106    m_component_code(25) :=assertion_rec .ctrl_attr_code_25;
5107    m_component_code(26) :=assertion_rec .ctrl_attr_code_26;
5108    m_component_code(27) :=assertion_rec .ctrl_attr_code_27;
5109    m_component_code(28) :=assertion_rec .ctrl_attr_code_28;
5110    m_component_code(29) :=assertion_rec .ctrl_attr_code_29;
5111    m_component_code(30) :=assertion_rec .ctrl_attr_code_30;
5112 
5113 
5114    m_ineff_control(1) :=  assertion_rec.ineff_ctrl_attr_1;
5115    m_ineff_control(2) :=  assertion_rec.ineff_ctrl_attr_2;
5116    m_ineff_control(3) :=  assertion_rec.ineff_ctrl_attr_3;
5117    m_ineff_control(4) :=   assertion_rec.ineff_ctrl_attr_4;
5118    m_ineff_control(5) :=assertion_rec.ineff_ctrl_attr_5;
5119    m_ineff_control(6) :=assertion_rec.ineff_ctrl_attr_6;
5120    m_ineff_control(7) :=assertion_rec.ineff_ctrl_attr_7;
5121    m_ineff_control(8) :=assertion_rec.ineff_ctrl_attr_8;
5122    m_ineff_control(9) :=assertion_rec.ineff_ctrl_attr_9;
5123    m_ineff_control(10) :=assertion_rec.ineff_ctrl_attr_10;
5124    m_ineff_control(11) :=assertion_rec.ineff_ctrl_attr_11;
5125    m_ineff_control(12) :=assertion_rec.ineff_ctrl_attr_12;
5126    m_ineff_control(13) :=assertion_rec.ineff_ctrl_attr_13;
5127    m_ineff_control(14) :=assertion_rec.ineff_ctrl_attr_14;
5128    m_ineff_control(15) :=assertion_rec.ineff_ctrl_attr_15;
5129    m_ineff_control(16) :=assertion_rec.ineff_ctrl_attr_16;
5130    m_ineff_control(17) :=assertion_rec.ineff_ctrl_attr_17;
5131    m_ineff_control(18) :=assertion_rec.ineff_ctrl_attr_18;
5132    m_ineff_control(19) :=assertion_rec.ineff_ctrl_attr_19;
5133    m_ineff_control(20) :=assertion_rec.ineff_ctrl_attr_20;
5134    m_ineff_control(21) :=assertion_rec.ineff_ctrl_attr_21;
5135    m_ineff_control(22) :=assertion_rec.ineff_ctrl_attr_22;
5136    m_ineff_control(23) :=assertion_rec.ineff_ctrl_attr_23;
5137    m_ineff_control(24) :=assertion_rec.ineff_ctrl_attr_24;
5138    m_ineff_control(25) :=assertion_rec.ineff_ctrl_attr_25;
5139    m_ineff_control(26) :=assertion_rec.ineff_ctrl_attr_26;
5140    m_ineff_control(27) :=assertion_rec.ineff_ctrl_attr_27;
5141    m_ineff_control(28) :=assertion_rec.ineff_ctrl_attr_28;
5142    m_ineff_control(29) :=assertion_rec.ineff_ctrl_attr_29;
5143    m_ineff_control(30) :=assertion_rec.ineff_ctrl_attr_30;
5144 
5145    m_acc_assert_flag(1) :=  assertion_rec .acc_assert_flag_1;
5146    m_acc_assert_flag(2) :=  assertion_rec .acc_assert_flag_2;
5147    m_acc_assert_flag(3) :=  assertion_rec .acc_assert_flag_3;
5148    m_acc_assert_flag(4) :=   assertion_rec .acc_assert_flag_4;
5149    m_acc_assert_flag(5) :=assertion_rec .acc_assert_flag_5;
5150    m_acc_assert_flag(6) :=assertion_rec .acc_assert_flag_6;
5151    m_acc_assert_flag(7) :=assertion_rec .acc_assert_flag_7;
5152    m_acc_assert_flag(8) :=assertion_rec .acc_assert_flag_8;
5153    m_acc_assert_flag(9) :=assertion_rec .acc_assert_flag_9;
5154    m_acc_assert_flag(10) :=assertion_rec .acc_assert_flag_10;
5155    m_acc_assert_flag(11) :=assertion_rec .acc_assert_flag_11;
5156    m_acc_assert_flag(12) :=assertion_rec .acc_assert_flag_12;
5157    m_acc_assert_flag(13) :=assertion_rec .acc_assert_flag_13;
5158    m_acc_assert_flag(14) :=assertion_rec .acc_assert_flag_14;
5159    m_acc_assert_flag(15) :=assertion_rec .acc_assert_flag_15;
5160    m_acc_assert_flag(16) :=assertion_rec .acc_assert_flag_16;
5161    m_acc_assert_flag(17) :=assertion_rec .acc_assert_flag_17;
5162    m_acc_assert_flag(18) :=assertion_rec .acc_assert_flag_18;
5163    m_acc_assert_flag(19) :=assertion_rec .acc_assert_flag_19;
5164    m_acc_assert_flag(20) :=assertion_rec .acc_assert_flag_20;
5165    m_acc_assert_flag(21) :=assertion_rec .acc_assert_flag_21;
5166    m_acc_assert_flag(22) :=assertion_rec .acc_assert_flag_22;
5167    m_acc_assert_flag(23) :=assertion_rec .acc_assert_flag_23;
5168    m_acc_assert_flag(24) :=assertion_rec .acc_assert_flag_24;
5169    m_acc_assert_flag(25) :=assertion_rec .acc_assert_flag_25;
5170    m_acc_assert_flag(26) :=assertion_rec .acc_assert_flag_26;
5171    m_acc_assert_flag(27) :=assertion_rec .acc_assert_flag_27;
5172    m_acc_assert_flag(28) :=assertion_rec .acc_assert_flag_28;
5173    m_acc_assert_flag(29) :=assertion_rec .acc_assert_flag_29;
5174    m_acc_assert_flag(30) :=assertion_rec .acc_assert_flag_30;
5175 
5176 
5177 
5178  end loop; --end of Control Assertion Rec loop
5179 
5180  -- **************** Check the REVISION of the Control came with the event has what COSO Codes *******************
5181 -- and in which filed (out of 1 to 30) it is falling and the init varaible with the -1 or +1 corrsponding to that
5182 --****************************************************************************************************************
5183  ctr := 0;
5184  for ctrl_assertion_codes in assertion_of_the_ctrl
5185  loop
5186     exit when assertion_of_the_ctrl%notfound;
5187     ctr := 1;
5188     while ctr <=  30
5189     loop
5190       if m_component_code(ctr) = ctrl_assertion_codes.ASSERTION_CODE then
5191 
5192           /********** insanity check for the numbers ******
5193   	********* If the display format is a/b/c, then a >= 0 and b>= a and c>= b  ****/
5194         IF( (NVL(m_ineff_control(ctr),0) + add_or_deduct_value) < 0 or   (NVL(m_ineff_control(ctr),0) + add_or_deduct_value) > m_add_to_eval_ctrls(ctr))
5195   	THEN
5196   	AMW_FINSTMT_CERT_BES_PKG.G_REFRESH_FLAG := 'Y';
5197   	IF AMW_FINSTMT_CERT_BES_PKG.m_certification_list.exists(P_CERTIFICATION_ID) THEN
5198   	  EXIT;
5199   	ELSE
5200   	AMW_FINSTMT_CERT_BES_PKG.m_certification_list(AMW_FINSTMT_CERT_BES_PKG.m_certification_list.COUNT+1) := P_CERTIFICATION_ID;
5201   	EXIT;
5202   	END IF;
5203         END IF;
5204 
5205          m_ineff_control(ctr) :=  NVL(m_ineff_control(ctr),0) + add_or_deduct_value;
5206 
5207          if  P_NEW_FLAG = 'Y' then
5208             m_add_to_eval_ctrls(ctr) := 1;
5209 
5210          end if;
5211 
5212       end if;
5213        ctr := ctr + 1;
5214 
5215     end loop;
5216 
5217 
5218  end loop; --end of ctrl_assertion_codes in assertion_of_the_ctrl loop
5219 
5220 --************ The Image Display Flag setting should be done last as it need ineffective control array *********--
5221 
5222        for acc_assertions in ACC_ASSERT_CODES
5223        loop
5224           exit when ACC_ASSERT_CODES%notfound;
5225 
5226           ctr := 1;
5227           while ctr <=  30
5228           loop
5229 
5230             -- NOT ONLY CHECK WHETHER THE ACCOUNT IS MAPPED TO THE ASSERTION CODE BUT ALSO
5231             -- THERE IS AT LEASE ONE CONROL (WHICH MAPPED TO THE SAME ASSERTION) AND ACCOUNT (THORUGH)
5232             -- IT RELATION TO PROCESS IS INEFFECTIVE
5233 
5234              if  (m_component_code(ctr) =  acc_assertions.ASSERTION_CODE
5235                  and m_ineff_control(ctr) > 0 ) then
5236                  m_acc_assert_flag(ctr) := 'Y';
5237                 exit;
5238              end if;
5239              ctr := ctr +1;
5240           end loop;
5241        end loop; --end of acc_assertions in ACC_ASSERT_CODES
5242 
5243 
5244     amw_fin_coso_views_pvt.UPDATE_FIN_ACC_ASSERT_ROW(
5245      x_fin_certification_id       	=> 	P_CERTIFICATION_ID	,
5246      x_financial_statement_id    	=> 	NULL 	,
5247      x_financial_item_id         	=> 	NULL	,
5248      x_account_group_id          	=> 	P_ACCOUNT_GROUP_ID,
5249      x_natural_account_id        	=> 	P_ACCOUNT_ID,
5250      x_object_type               	=> 	m_OBJECT_TYPE 	,
5251      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type       	,
5252      x_ineff_ctrl_attr_1         	=> 	m_ineff_control(1)	,
5253      x_ineff_ctrl_attr_2         	=> 	m_ineff_control(2)	,
5254      x_ineff_ctrl_attr_3         	=> 	m_ineff_control(3)	,
5255      x_ineff_ctrl_attr_4         	=> 	m_ineff_control(4)	,
5256      x_ineff_ctrl_attr_5         	=> 	m_ineff_control(5)	,
5257      x_ineff_ctrl_attr_6         	=> 	m_ineff_control(6)	,
5258      x_ineff_ctrl_attr_7         	=> 	m_ineff_control(7)	,
5259      x_ineff_ctrl_attr_8         	=> 	m_ineff_control(8)	,
5260      x_ineff_ctrl_attr_9         	=> 	m_ineff_control(9)	,
5261      x_ineff_ctrl_attr_10        	=> 	m_ineff_control(10)	,
5262      x_ineff_ctrl_attr_11        	=> 	m_ineff_control(11)	,
5263      x_ineff_ctrl_attr_12        	=> 	m_ineff_control(12)	,
5264      x_ineff_ctrl_attr_13        	=> 	m_ineff_control(13)	,
5265      x_ineff_ctrl_attr_14        	=> 	m_ineff_control(14)	,
5266      x_ineff_ctrl_attr_15        	=> 	m_ineff_control(15)	,
5267      x_ineff_ctrl_attr_16        	=> 	m_ineff_control(16)	,
5268      x_ineff_ctrl_attr_17        	=> 	m_ineff_control(17)	,
5269      x_ineff_ctrl_attr_18        	=> 	m_ineff_control(18)	,
5270      x_ineff_ctrl_attr_19        	=> 	m_ineff_control(19)	,
5271      x_ineff_ctrl_attr_20        	=> 	m_ineff_control(20)	,
5272      x_ineff_ctrl_attr_21        	=> 	m_ineff_control(21)	,
5273      x_ineff_ctrl_attr_22        	=> 	m_ineff_control(22)	,
5274      x_ineff_ctrl_attr_23        	=> 	m_ineff_control(23)	,
5275      x_ineff_ctrl_attr_24         	=> 	m_ineff_control(24)	,
5276      x_ineff_ctrl_attr_25        	=> 	m_ineff_control(25)	,
5277      x_ineff_ctrl_attr_26        	=> 	m_ineff_control(26)	,
5278      x_ineff_ctrl_attr_27        	=> 	m_ineff_control(27)	,
5279      x_ineff_ctrl_attr_28        	=> 	m_ineff_control(28)	,
5280      x_ineff_ctrl_attr_29        	=> 	m_ineff_control(29)	,
5281      x_ineff_ctrl_attr_30        	=> 	m_ineff_control(30)	,
5282      x_last_updated_by           	=> 	g_user_id	,
5283      x_last_update_date          	=> 	SYSDATE	,
5284      x_last_update_login         	=> 	g_login_id,
5285      x_eval_ctrl_attr_1         	=> 	m_add_to_eval_ctrls(1),
5286      x_eval_ctrl_attr_2         	=> 	m_add_to_eval_ctrls(2),
5287      x_eval_ctrl_attr_3         	=> 	m_add_to_eval_ctrls(3),
5288      x_eval_ctrl_attr_4         	=> 	m_add_to_eval_ctrls(4),
5289      x_eval_ctrl_attr_5         	=> 	m_add_to_eval_ctrls(5),
5290      x_eval_ctrl_attr_6         	=> 	m_add_to_eval_ctrls(6),
5291      x_eval_ctrl_attr_7         	=> 	m_add_to_eval_ctrls(7),
5292      x_eval_ctrl_attr_8         	=> 	m_add_to_eval_ctrls(8),
5293      x_eval_ctrl_attr_9         	=> 	m_add_to_eval_ctrls(9),
5294      x_eval_ctrl_attr_10        	=> 	m_add_to_eval_ctrls(10),
5295      x_eval_ctrl_attr_11         	=> 	m_add_to_eval_ctrls(11),
5296      x_eval_ctrl_attr_12         	=> 	m_add_to_eval_ctrls(12),
5297      x_eval_ctrl_attr_13         	=> 	m_add_to_eval_ctrls(13),
5298      x_eval_ctrl_attr_14         	=> 	m_add_to_eval_ctrls(14),
5299      x_eval_ctrl_attr_15         	=> 	m_add_to_eval_ctrls(15),
5300      x_eval_ctrl_attr_16         	=> 	m_add_to_eval_ctrls(16),
5301      x_eval_ctrl_attr_17         	=> 	m_add_to_eval_ctrls(17),
5302      x_eval_ctrl_attr_18         	=> 	m_add_to_eval_ctrls(18),
5303      x_eval_ctrl_attr_19         	=> 	m_add_to_eval_ctrls(19),
5304      x_eval_ctrl_attr_20        	=> 	m_add_to_eval_ctrls(20),
5305      x_eval_ctrl_attr_21         	=> 	m_add_to_eval_ctrls(21),
5306      x_eval_ctrl_attr_22         	=> 	m_add_to_eval_ctrls(22),
5307      x_eval_ctrl_attr_23         	=> 	m_add_to_eval_ctrls(23),
5308      x_eval_ctrl_attr_24         	=> 	m_add_to_eval_ctrls(24),
5309      x_eval_ctrl_attr_25         	=> 	m_add_to_eval_ctrls(25),
5310      x_eval_ctrl_attr_26         	=> 	m_add_to_eval_ctrls(26),
5311      x_eval_ctrl_attr_27         	=> 	m_add_to_eval_ctrls(27),
5312      x_eval_ctrl_attr_28         	=> 	m_add_to_eval_ctrls(28),
5313      x_eval_ctrl_attr_29         	=> 	m_add_to_eval_ctrls(29),
5314      x_eval_ctrl_attr_30        	=> 	m_add_to_eval_ctrls(30),
5315      x_acc_assert_flag1         	=> 	m_acc_assert_flag(1),
5316      x_acc_assert_flag2         	=> 	m_acc_assert_flag(2),
5317      x_acc_assert_flag3         	=> 	m_acc_assert_flag(3),
5318      x_acc_assert_flag4         	=> 	m_acc_assert_flag(4),
5319      x_acc_assert_flag5         	=> 	m_acc_assert_flag(5),
5320      x_acc_assert_flag6         	=> 	m_acc_assert_flag(6),
5321      x_acc_assert_flag7         	=> 	m_acc_assert_flag(7),
5322      x_acc_assert_flag8         	=> 	m_acc_assert_flag(8),
5323      x_acc_assert_flag9         	=> 	m_acc_assert_flag(9),
5324      x_acc_assert_flag10        	=> 	m_acc_assert_flag(10),
5325      x_acc_assert_flag11         	=> 	m_acc_assert_flag(11),
5326      x_acc_assert_flag12         	=> 	m_acc_assert_flag(12),
5327      x_acc_assert_flag13         	=> 	m_acc_assert_flag(13),
5328      x_acc_assert_flag14         	=> 	m_acc_assert_flag(14),
5329      x_acc_assert_flag15         	=> 	m_acc_assert_flag(15),
5330      x_acc_assert_flag16         	=> 	m_acc_assert_flag(16),
5331      x_acc_assert_flag17         	=> 	m_acc_assert_flag(17),
5332      x_acc_assert_flag18         	=> 	m_acc_assert_flag(18),
5333      x_acc_assert_flag19         	=> 	m_acc_assert_flag(19),
5334      x_acc_assert_flag20        	=> 	m_acc_assert_flag(20),
5335      x_acc_assert_flag21         	=> 	m_acc_assert_flag(21),
5336      x_acc_assert_flag22         	=> 	m_acc_assert_flag(22),
5337      x_acc_assert_flag23         	=> 	m_acc_assert_flag(23),
5338      x_acc_assert_flag24         	=> 	m_acc_assert_flag(24),
5339      x_acc_assert_flag25         	=> 	m_acc_assert_flag(25),
5340      x_acc_assert_flag26         	=> 	m_acc_assert_flag(26),
5341      x_acc_assert_flag27         	=> 	m_acc_assert_flag(27),
5342      x_acc_assert_flag28         	=> 	m_acc_assert_flag(28),
5343      x_acc_assert_flag29         	=> 	m_acc_assert_flag(29),
5344      x_acc_assert_flag30        	=> 	m_acc_assert_flag(30)
5345  );
5346 
5347 
5348 EXCEPTION
5349      WHEN NO_DATA_FOUND
5350 	     THEN
5351             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_acc_ctrl_components'
5352                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
5353 
5354      WHEN OTHERS
5355          THEN
5356             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_acc_ctrl_components'
5357                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
5358 
5359 
5360 end;
5361 end ; --Update_acc_ctrl_Assertions
5362 ------------------------------------------------------------------------------------------------------------
5363 --******************************************************************************************************
5364 /* ************************* End of Code to be executed for updating  Control Assertions LEVEL DATA
5365 -- when business evevnt is rised on opinion changes **** */
5366 --******************************************************************************************************
5367 
5368 
5369 
5370 ------------------------------------------------------------------------------------------------------------
5371 
5372 procedure UPDATE_FINITEM_ASSERT_ROW (
5373  x_fin_certification_id       	NUMBER  ,
5374  x_financial_statement_id    	 NUMBER ,
5375  x_financial_item_id         	 NUMBER ,
5376  x_account_group_id          	 NUMBER,
5377  x_natural_account_id        	 NUMBER,
5378  x_object_type               	 VARCHAR2,
5379  x_ctrl_attribute_type       	 VARCHAR2,
5380  x_ineff_ctrl_attr_1         	 NUMBER,
5381  x_ineff_ctrl_attr_2         	 NUMBER,
5382  x_ineff_ctrl_attr_3         	 NUMBER,
5383  x_ineff_ctrl_attr_4         	 NUMBER,
5384  x_ineff_ctrl_attr_5         	 NUMBER,
5385  x_ineff_ctrl_attr_6         	 NUMBER,
5386  x_ineff_ctrl_attr_7         	 NUMBER,
5387  x_ineff_ctrl_attr_8         	 NUMBER,
5388  x_ineff_ctrl_attr_9         	 NUMBER,
5389  x_ineff_ctrl_attr_10        	  NUMBER,
5390  x_ineff_ctrl_attr_11        	  NUMBER,
5391  x_ineff_ctrl_attr_12        	  NUMBER,
5392  x_ineff_ctrl_attr_13        	  NUMBER,
5393  x_ineff_ctrl_attr_14        	  NUMBER,
5394  x_ineff_ctrl_attr_15        	  NUMBER,
5395  x_ineff_ctrl_attr_16        	  NUMBER,
5396  x_ineff_ctrl_attr_17        	  NUMBER,
5397  x_ineff_ctrl_attr_18        	  NUMBER,
5398  x_ineff_ctrl_attr_19        	  NUMBER,
5399  x_ineff_ctrl_attr_20        	  NUMBER,
5400  x_ineff_ctrl_attr_21        	  NUMBER,
5401  x_ineff_ctrl_attr_22        	  NUMBER,
5402  x_ineff_ctrl_attr_23        	  NUMBER,
5403  x_ineff_ctrl_attr_24         	 NUMBER,
5404  x_ineff_ctrl_attr_25        	  NUMBER,
5405  x_ineff_ctrl_attr_26        	  NUMBER,
5406  x_ineff_ctrl_attr_27        	  NUMBER,
5407  x_ineff_ctrl_attr_28        	  NUMBER,
5408  x_ineff_ctrl_attr_29        	  NUMBER,
5409  x_ineff_ctrl_attr_30        	  NUMBER,
5410  x_last_updated_by           	 NUMBER,
5411  x_last_update_date          	 DATE ,
5412  x_last_update_login         	 NUMBER,
5413 x_eval_ctrl_attr_1         	  NUMBER,
5414 x_eval_ctrl_attr_2         	  NUMBER,
5415 x_eval_ctrl_attr_3         	  NUMBER,
5416 x_eval_ctrl_attr_4         	  NUMBER,
5417 x_eval_ctrl_attr_5         	  NUMBER,
5418 x_eval_ctrl_attr_6         	  NUMBER,
5419 x_eval_ctrl_attr_7         	  NUMBER,
5420 x_eval_ctrl_attr_8         	  NUMBER,
5421 x_eval_ctrl_attr_9         	  NUMBER,
5422 x_eval_ctrl_attr_10        	  NUMBER,
5423 x_eval_ctrl_attr_11         	  NUMBER,
5424 x_eval_ctrl_attr_12         	  NUMBER,
5425 x_eval_ctrl_attr_13         	  NUMBER,
5426 x_eval_ctrl_attr_14         	  NUMBER,
5427 x_eval_ctrl_attr_15         	  NUMBER,
5428 x_eval_ctrl_attr_16         	  NUMBER,
5429 x_eval_ctrl_attr_17         	  NUMBER,
5430 x_eval_ctrl_attr_18         	  NUMBER,
5431 x_eval_ctrl_attr_19         	  NUMBER,
5432 x_eval_ctrl_attr_20        	  NUMBER,
5433 x_eval_ctrl_attr_21         	  NUMBER,
5434 x_eval_ctrl_attr_22         	  NUMBER,
5435 x_eval_ctrl_attr_23         	  NUMBER,
5436 x_eval_ctrl_attr_24         	  NUMBER,
5437 x_eval_ctrl_attr_25         	  NUMBER,
5438 x_eval_ctrl_attr_26         	  NUMBER,
5439 x_eval_ctrl_attr_27         	  NUMBER,
5440 x_eval_ctrl_attr_28         	  NUMBER,
5441 x_eval_ctrl_attr_29         	  NUMBER,
5442 x_eval_ctrl_attr_30        	  NUMBER,
5443 x_acc_assert_flag1         	  VARCHAR2,
5444 x_acc_assert_flag2         	  VARCHAR2,
5445 x_acc_assert_flag3         	  VARCHAR2,
5446 x_acc_assert_flag4         	  VARCHAR2,
5447 x_acc_assert_flag5         	  VARCHAR2,
5448 x_acc_assert_flag6         	  VARCHAR2,
5449 x_acc_assert_flag7         	  VARCHAR2,
5450 x_acc_assert_flag8         	  VARCHAR2,
5451 x_acc_assert_flag9         	  VARCHAR2,
5452 x_acc_assert_flag10        	  VARCHAR2,
5453 x_acc_assert_flag11         	  VARCHAR2,
5454 x_acc_assert_flag12         	  VARCHAR2,
5455 x_acc_assert_flag13         	  VARCHAR2,
5456 x_acc_assert_flag14         	  VARCHAR2,
5457 x_acc_assert_flag15         	  VARCHAR2,
5458 x_acc_assert_flag16         	  VARCHAR2,
5459 x_acc_assert_flag17         	  VARCHAR2,
5460 x_acc_assert_flag18         	  VARCHAR2,
5461 x_acc_assert_flag19         	  VARCHAR2,
5462 x_acc_assert_flag20        	  VARCHAR2,
5463 x_acc_assert_flag21         	  VARCHAR2,
5464 x_acc_assert_flag22         	  VARCHAR2,
5465 x_acc_assert_flag23         	  VARCHAR2,
5466 x_acc_assert_flag24         	  VARCHAR2,
5467 x_acc_assert_flag25         	  VARCHAR2,
5468 x_acc_assert_flag26         	  VARCHAR2,
5469 x_acc_assert_flag27         	  VARCHAR2,
5470 x_acc_assert_flag28         	  VARCHAR2,
5471 x_acc_assert_flag29         	  VARCHAR2,
5472 x_acc_assert_flag30        	  VARCHAR2
5473 ) is
5474 
5475 begin
5476 declare
5477  var_fin_certification_id  number;
5478 
5479  begin
5480 
5481  --******************************************************************************************************
5482  -- NOTE: The values in x_ineff_ctrl_attr_(1 .. 30) may be +1 or -1 depending on the change_flag b or f respectively
5483  --******************************************************************************************************
5484   UPDATE
5485     amw_fin_cert_ctrl_sum
5486   SET
5487       ineff_ctrl_attr_1= x_ineff_ctrl_attr_1
5488      ,ineff_ctrl_attr_2= x_ineff_ctrl_attr_2
5489      ,ineff_ctrl_attr_3= x_ineff_ctrl_attr_3
5490      ,ineff_ctrl_attr_4= x_ineff_ctrl_attr_4
5491      ,ineff_ctrl_attr_5= x_ineff_ctrl_attr_5
5492      ,ineff_ctrl_attr_6= x_ineff_ctrl_attr_6
5493      ,ineff_ctrl_attr_7= x_ineff_ctrl_attr_7
5494      ,ineff_ctrl_attr_8= x_ineff_ctrl_attr_8
5495      ,ineff_ctrl_attr_9= x_ineff_ctrl_attr_9
5496      ,ineff_ctrl_attr_10= x_ineff_ctrl_attr_10
5497      ,ineff_ctrl_attr_11= x_ineff_ctrl_attr_11
5498      ,ineff_ctrl_attr_12= x_ineff_ctrl_attr_12
5499      ,ineff_ctrl_attr_13= x_ineff_ctrl_attr_13
5500      ,ineff_ctrl_attr_14= x_ineff_ctrl_attr_14
5501      ,ineff_ctrl_attr_15= x_ineff_ctrl_attr_15
5502      ,ineff_ctrl_attr_16= x_ineff_ctrl_attr_16
5503      ,ineff_ctrl_attr_17= x_ineff_ctrl_attr_17
5504      ,ineff_ctrl_attr_18= x_ineff_ctrl_attr_18
5505      ,ineff_ctrl_attr_19= x_ineff_ctrl_attr_19
5506      ,ineff_ctrl_attr_20= x_ineff_ctrl_attr_20
5507      ,ineff_ctrl_attr_21= x_ineff_ctrl_attr_21
5508      ,ineff_ctrl_attr_22= x_ineff_ctrl_attr_22
5509      ,ineff_ctrl_attr_23= x_ineff_ctrl_attr_23
5510      ,ineff_ctrl_attr_24= x_ineff_ctrl_attr_24
5511      ,ineff_ctrl_attr_25= x_ineff_ctrl_attr_25
5512      ,ineff_ctrl_attr_26= x_ineff_ctrl_attr_26
5513      ,ineff_ctrl_attr_27= x_ineff_ctrl_attr_27
5514      ,ineff_ctrl_attr_28= x_ineff_ctrl_attr_28
5515      ,ineff_ctrl_attr_29= x_ineff_ctrl_attr_29
5516      ,ineff_ctrl_attr_30= x_ineff_ctrl_attr_30,
5517      eval_ctrl_attr_1    =	nvl(eval_ctrl_attr_1,0) + x_eval_ctrl_attr_1  ,
5518      eval_ctrl_attr_2    =	nvl(eval_ctrl_attr_2,0) + x_eval_ctrl_attr_2  ,
5519      eval_ctrl_attr_3    =	nvl(eval_ctrl_attr_3,0) + x_eval_ctrl_attr_3  ,
5520      eval_ctrl_attr_4    =	nvl(eval_ctrl_attr_4,0) + x_eval_ctrl_attr_4  ,
5521      eval_ctrl_attr_5    =	nvl(eval_ctrl_attr_5,0) + x_eval_ctrl_attr_5  ,
5522      eval_ctrl_attr_6    =	nvl(eval_ctrl_attr_6,0) + x_eval_ctrl_attr_6  ,
5523      eval_ctrl_attr_7    =	nvl(eval_ctrl_attr_7,0) + x_eval_ctrl_attr_7  ,
5524      eval_ctrl_attr_8    =	nvl(eval_ctrl_attr_8,0) + x_eval_ctrl_attr_8  ,
5525      eval_ctrl_attr_9    =	nvl(eval_ctrl_attr_9,0) + x_eval_ctrl_attr_9  ,
5526      eval_ctrl_attr_10   =	nvl(eval_ctrl_attr_10,0) +  x_eval_ctrl_attr_10  ,
5527      eval_ctrl_attr_11    =	nvl(eval_ctrl_attr_11,0) + x_eval_ctrl_attr_11  ,
5528      eval_ctrl_attr_12    =	nvl(eval_ctrl_attr_12,0) + x_eval_ctrl_attr_12  ,
5529      eval_ctrl_attr_13    =	nvl(eval_ctrl_attr_13,0) + x_eval_ctrl_attr_13  ,
5530      eval_ctrl_attr_14    =	nvl(eval_ctrl_attr_14,0) + x_eval_ctrl_attr_14  ,
5531      eval_ctrl_attr_15    =	nvl(eval_ctrl_attr_15,0) + x_eval_ctrl_attr_15  ,
5532      eval_ctrl_attr_16    =	nvl(eval_ctrl_attr_16,0) + x_eval_ctrl_attr_16  ,
5533      eval_ctrl_attr_17    =	nvl(eval_ctrl_attr_17,0) + x_eval_ctrl_attr_17  ,
5534      eval_ctrl_attr_18    =	nvl(eval_ctrl_attr_18,0) + x_eval_ctrl_attr_18  ,
5535      eval_ctrl_attr_19    =	nvl(eval_ctrl_attr_19,0) + x_eval_ctrl_attr_19  ,
5536      eval_ctrl_attr_20   =	nvl(eval_ctrl_attr_20,0) +  x_eval_ctrl_attr_20  ,
5537      eval_ctrl_attr_21  =	nvl(eval_ctrl_attr_21,0) + x_eval_ctrl_attr_21  ,
5538      eval_ctrl_attr_22    =	nvl(eval_ctrl_attr_22,0) + x_eval_ctrl_attr_22  ,
5539      eval_ctrl_attr_23    =	nvl(eval_ctrl_attr_23,0) + x_eval_ctrl_attr_23  ,
5540      eval_ctrl_attr_24    =	nvl(eval_ctrl_attr_24,0) + x_eval_ctrl_attr_24  ,
5541      eval_ctrl_attr_25    =	nvl(eval_ctrl_attr_25,0) + x_eval_ctrl_attr_25  ,
5542      eval_ctrl_attr_26    =	nvl(eval_ctrl_attr_26,0) + x_eval_ctrl_attr_26  ,
5543      eval_ctrl_attr_27    =	nvl(eval_ctrl_attr_27,0) + x_eval_ctrl_attr_27  ,
5544      eval_ctrl_attr_28    =	nvl(eval_ctrl_attr_28,0) + x_eval_ctrl_attr_28  ,
5545      eval_ctrl_attr_29    =	nvl(eval_ctrl_attr_29,0) + x_eval_ctrl_attr_29  ,
5546      eval_ctrl_attr_30   =	nvl(eval_ctrl_attr_30,0) + x_eval_ctrl_attr_30
5547      ,ineff_ctrl_prcnt_1=  round((x_ineff_ctrl_attr_1	 /  decode(total_ctrl_attr_1,null,1,0,1,total_ctrl_attr_1) ) * 100,0)
5548      ,ineff_ctrl_prcnt_2 = round((x_ineff_ctrl_attr_2	 /  decode(total_ctrl_attr_2,null,1,0,1,total_ctrl_attr_2) ) * 100,0)
5549      ,ineff_ctrl_prcnt_3=  round((x_ineff_ctrl_attr_3	 /  decode(total_ctrl_attr_3,null,1,0,1,total_ctrl_attr_3) ) * 100,0)
5550      ,ineff_ctrl_prcnt_4=  round((x_ineff_ctrl_attr_4	 /  decode(total_ctrl_attr_4,null,1,0,1,total_ctrl_attr_4) ) * 100,0)
5551      ,ineff_ctrl_prcnt_5=  round((x_ineff_ctrl_attr_5	 /  decode(total_ctrl_attr_5,null,1,0,1,total_ctrl_attr_5) ) * 100,0)
5552      ,ineff_ctrl_prcnt_6=  round((x_ineff_ctrl_attr_6	 /  decode(total_ctrl_attr_6,null,1,0,1,total_ctrl_attr_6) ) * 100,0)
5553      ,ineff_ctrl_prcnt_7=  round((x_ineff_ctrl_attr_7	 /  decode(total_ctrl_attr_7,null,1,0,1,total_ctrl_attr_7) ) * 100,0)
5554      ,ineff_ctrl_prcnt_8=  round((x_ineff_ctrl_attr_8	 /  decode(total_ctrl_attr_8,null,1,0,1,total_ctrl_attr_8) ) * 100,0)
5555      ,ineff_ctrl_prcnt_9=  round((x_ineff_ctrl_attr_9	 /  decode(total_ctrl_attr_9,null,1,0,1,total_ctrl_attr_9) ) * 100,0)
5556      ,ineff_ctrl_prcnt_10= round((x_ineff_ctrl_attr_10 /  decode(total_ctrl_attr_10,null,1,0,1,total_ctrl_attr_10) ) * 100,0)
5557      ,ineff_ctrl_prcnt_11= round((x_ineff_ctrl_attr_11 /  decode(total_ctrl_attr_11,null,1,0,1,total_ctrl_attr_11) ) * 100,0)
5558      ,ineff_ctrl_prcnt_12= round((x_ineff_ctrl_attr_12 /  decode(total_ctrl_attr_12,null,1,0,1,total_ctrl_attr_12) ) * 100,0)
5559      ,ineff_ctrl_prcnt_13= round((x_ineff_ctrl_attr_13 /  decode(total_ctrl_attr_13,null,1,0,1,total_ctrl_attr_13) ) * 100,0)
5560      ,ineff_ctrl_prcnt_14= round((x_ineff_ctrl_attr_14 /  decode(total_ctrl_attr_14,null,1,0,1,total_ctrl_attr_14) ) * 100,0)
5561      ,ineff_ctrl_prcnt_15= round((x_ineff_ctrl_attr_15 /  decode(total_ctrl_attr_15,null,1,0,1,total_ctrl_attr_15) ) * 100,0)
5562      ,ineff_ctrl_prcnt_16= round((x_ineff_ctrl_attr_16 /  decode(total_ctrl_attr_16,null,1,0,1,total_ctrl_attr_16) ) * 100,0)
5563      ,ineff_ctrl_prcnt_17= round((x_ineff_ctrl_attr_17 /  decode(total_ctrl_attr_17,null,1,0,1,total_ctrl_attr_17) ) * 100,0)
5564      ,ineff_ctrl_prcnt_18= round((x_ineff_ctrl_attr_18 /  decode(total_ctrl_attr_18,null,1,0,1,total_ctrl_attr_18) ) * 100,0)
5565      ,ineff_ctrl_prcnt_19= round((x_ineff_ctrl_attr_19 /  decode(total_ctrl_attr_19,null,1,0,1,total_ctrl_attr_19) ) * 100,0)
5566      ,ineff_ctrl_prcnt_20= round((x_ineff_ctrl_attr_20 /  decode(total_ctrl_attr_20,null,1,0,1,total_ctrl_attr_20) ) * 100,0)
5567      ,ineff_ctrl_prcnt_21= round((x_ineff_ctrl_attr_21 /  decode(total_ctrl_attr_21,null,1,0,1,total_ctrl_attr_21) ) * 100,0)
5568      ,ineff_ctrl_prcnt_22= round((x_ineff_ctrl_attr_22 /  decode(total_ctrl_attr_22,null,1,0,1,total_ctrl_attr_22) ) * 100,0)
5569      ,ineff_ctrl_prcnt_23= round((x_ineff_ctrl_attr_23 /  decode(total_ctrl_attr_23,null,1,0,1,total_ctrl_attr_23) ) * 100,0)
5570      ,ineff_ctrl_prcnt_24= round((x_ineff_ctrl_attr_24 /  decode(total_ctrl_attr_24,null,1,0,1,total_ctrl_attr_24) ) * 100,0)
5571      ,ineff_ctrl_prcnt_25= round((x_ineff_ctrl_attr_25 /  decode(total_ctrl_attr_25,null,1,0,1,total_ctrl_attr_25) ) * 100,0)
5572      ,ineff_ctrl_prcnt_26= round((x_ineff_ctrl_attr_26 /  decode(total_ctrl_attr_26,null,1,0,1,total_ctrl_attr_26) ) * 100,0)
5573      ,ineff_ctrl_prcnt_27= round((x_ineff_ctrl_attr_27 /  decode(total_ctrl_attr_27,null,1,0,1,total_ctrl_attr_27) ) * 100,0)
5574      ,ineff_ctrl_prcnt_28= round((x_ineff_ctrl_attr_28 /  decode(total_ctrl_attr_28,null,1,0,1,total_ctrl_attr_28) ) * 100,0)
5575      ,ineff_ctrl_prcnt_29= round((x_ineff_ctrl_attr_29 /  decode(total_ctrl_attr_29,null,1,0,1,total_ctrl_attr_29) ) * 100,0)
5576      ,ineff_ctrl_prcnt_30= round((x_ineff_ctrl_attr_30 /  decode(total_ctrl_attr_30,null,1,0,1,total_ctrl_attr_30) ) * 100,0)
5577      ,acc_assert_flag_1  = 	x_acc_assert_flag1
5578      ,acc_assert_flag_2  = 	x_acc_assert_flag2
5579      ,acc_assert_flag_3  = 	x_acc_assert_flag3
5580      ,acc_assert_flag_4  = 	x_acc_assert_flag4
5581      ,acc_assert_flag_5  = 	x_acc_assert_flag5
5582      ,acc_assert_flag_6  = 	x_acc_assert_flag6
5583      ,acc_assert_flag_7  = 	x_acc_assert_flag7
5584      ,acc_assert_flag_8  = 	x_acc_assert_flag8
5585      ,acc_assert_flag_9  = 	x_acc_assert_flag9
5586      ,acc_assert_flag_10 = 	x_acc_assert_flag10
5587      ,acc_assert_flag_11  = 	x_acc_assert_flag11
5588      ,acc_assert_flag_12  = 	x_acc_assert_flag12
5589      ,acc_assert_flag_13  = 	x_acc_assert_flag13
5590      ,acc_assert_flag_14  = 	x_acc_assert_flag14
5591      ,acc_assert_flag_15  = 	x_acc_assert_flag15
5592      ,acc_assert_flag_16  = 	x_acc_assert_flag16
5593      ,acc_assert_flag_17  = 	x_acc_assert_flag17
5594      ,acc_assert_flag_18  = 	x_acc_assert_flag18
5595      ,acc_assert_flag_19  = 	x_acc_assert_flag19
5596      ,acc_assert_flag_20 = 	x_acc_assert_flag20
5597      ,acc_assert_flag_21  = 	x_acc_assert_flag21
5598      ,acc_assert_flag_22  = 	x_acc_assert_flag22
5599      ,acc_assert_flag_23  = 	x_acc_assert_flag23
5600      ,acc_assert_flag_24  = 	x_acc_assert_flag24
5601      ,acc_assert_flag_25  = 	x_acc_assert_flag25
5602      ,acc_assert_flag_26  = 	x_acc_assert_flag26
5603      ,acc_assert_flag_27  = 	x_acc_assert_flag27
5604      ,acc_assert_flag_28  = 	x_acc_assert_flag28
5605      ,acc_assert_flag_29  = 	x_acc_assert_flag29
5606      ,acc_assert_flag_30  = 	x_acc_assert_flag30
5607      ,last_updated_by           =  x_last_updated_by
5608      ,last_update_date          =  x_last_update_date
5609      ,last_update_login         = x_last_update_login
5610      ,object_version_number = object_version_number +1
5611 where
5612  fin_certification_id     = x_fin_certification_id      and
5613  financial_statement_id   = x_financial_statement_id    and
5614  NVL(financial_item_id, -1)        = NVL(x_financial_item_id, -1) and
5615  NVL(account_group_id, -1) =  NVL(x_account_group_id, -1) and
5616  nvl(natural_account_id, -1) = nvl(x_natural_account_id, -1)   and
5617  CTRL_ATTRIBUTE_TYPE =  x_ctrl_attribute_type       and
5618  object_type	= x_object_type       ;
5619 
5620 /* EXCEPTION
5621   WHEN OTHERS THEN
5622  fnd_file.put_line(fnd_file.LOG, SUBSTR (SQLERRM, 1, 2000));
5623   fnd_file.put_line(fnd_file.LOG, 'natural_account_id' || x_natural_account_id );
5624  fnd_file.put_line(fnd_file.LOG,  'financial_item_id' || x_financial_item_id);
5625  fnd_file.put_line(fnd_file.LOG,  'fin_certification_id  ' || x_fin_certification_id  );
5626 
5627 
5628  RAISE ;
5629  RETURN; */
5630 
5631 end;
5632 end UPDATE_FINITEM_ASSERT_ROW;
5633 
5634 --***********************************************************************************************************
5635 procedure UPDATE_FIN_ITEM_ROW(
5636  x_fin_certification_id       	NUMBER  ,
5637  x_financial_statement_id    	 NUMBER ,
5638  x_financial_item_id         	 NUMBER ,
5639  x_account_group_id          	 NUMBER,
5640  x_natural_account_id        	 NUMBER,
5641  x_object_type               	 VARCHAR2,
5642  x_ctrl_attribute_type       	 VARCHAR2,
5643  x_ineff_ctrl_attr_1         	 NUMBER,
5644  x_ineff_ctrl_attr_2         	 NUMBER,
5645  x_ineff_ctrl_attr_3         	 NUMBER,
5646  x_ineff_ctrl_attr_4         	 NUMBER,
5647  x_ineff_ctrl_attr_5         	 NUMBER,
5648  x_ineff_ctrl_attr_6         	 NUMBER,
5649  x_ineff_ctrl_attr_7         	 NUMBER,
5650  x_ineff_ctrl_attr_8         	 NUMBER,
5651  x_ineff_ctrl_attr_9         	 NUMBER,
5652  x_ineff_ctrl_attr_10        	  NUMBER,
5653  x_ineff_ctrl_attr_11        	  NUMBER,
5654  x_ineff_ctrl_attr_12        	  NUMBER,
5655  x_ineff_ctrl_attr_13        	  NUMBER,
5656  x_ineff_ctrl_attr_14        	  NUMBER,
5657  x_ineff_ctrl_attr_15        	  NUMBER,
5658  x_ineff_ctrl_attr_16        	  NUMBER,
5659  x_ineff_ctrl_attr_17        	  NUMBER,
5660  x_ineff_ctrl_attr_18        	  NUMBER,
5661  x_ineff_ctrl_attr_19        	  NUMBER,
5662  x_ineff_ctrl_attr_20        	  NUMBER,
5663  x_ineff_ctrl_attr_21        	  NUMBER,
5664  x_ineff_ctrl_attr_22        	  NUMBER,
5665  x_ineff_ctrl_attr_23        	  NUMBER,
5666  x_ineff_ctrl_attr_24         	 NUMBER,
5667  x_ineff_ctrl_attr_25        	  NUMBER,
5668  x_ineff_ctrl_attr_26        	  NUMBER,
5669  x_ineff_ctrl_attr_27        	  NUMBER,
5670  x_ineff_ctrl_attr_28        	  NUMBER,
5671  x_ineff_ctrl_attr_29        	  NUMBER,
5672  x_ineff_ctrl_attr_30        	  NUMBER,
5673  x_last_updated_by           	 NUMBER,
5674  x_last_update_date          	 DATE ,
5675  x_last_update_login         	 NUMBER,
5676 x_eval_ctrl_attr_1         	  NUMBER,
5677 x_eval_ctrl_attr_2         	  NUMBER,
5678 x_eval_ctrl_attr_3         	  NUMBER,
5679 x_eval_ctrl_attr_4         	  NUMBER,
5680 x_eval_ctrl_attr_5         	  NUMBER,
5681 x_eval_ctrl_attr_6         	  NUMBER,
5682 x_eval_ctrl_attr_7         	  NUMBER,
5683 x_eval_ctrl_attr_8         	  NUMBER,
5684 x_eval_ctrl_attr_9         	  NUMBER,
5685 x_eval_ctrl_attr_10        	  NUMBER,
5686 x_eval_ctrl_attr_11         	  NUMBER,
5687 x_eval_ctrl_attr_12         	  NUMBER,
5688 x_eval_ctrl_attr_13         	  NUMBER,
5689 x_eval_ctrl_attr_14         	  NUMBER,
5690 x_eval_ctrl_attr_15         	  NUMBER,
5691 x_eval_ctrl_attr_16         	  NUMBER,
5692 x_eval_ctrl_attr_17         	  NUMBER,
5693 x_eval_ctrl_attr_18         	  NUMBER,
5694 x_eval_ctrl_attr_19         	  NUMBER,
5695 x_eval_ctrl_attr_20        	  NUMBER,
5696 x_eval_ctrl_attr_21         	  NUMBER,
5697 x_eval_ctrl_attr_22         	  NUMBER,
5698 x_eval_ctrl_attr_23         	  NUMBER,
5699 x_eval_ctrl_attr_24         	  NUMBER,
5700 x_eval_ctrl_attr_25         	  NUMBER,
5701 x_eval_ctrl_attr_26         	  NUMBER,
5702 x_eval_ctrl_attr_27         	  NUMBER,
5703 x_eval_ctrl_attr_28         	  NUMBER,
5704 x_eval_ctrl_attr_29         	  NUMBER,
5705 x_eval_ctrl_attr_30        	  NUMBER
5706 ) is
5707 
5708 begin
5709 declare
5710  var_fin_certification_id  number;
5711 
5712  begin
5713 
5714  --******************************************************************************************************
5715  -- NOTE: The values in x_ineff_ctrl_attr_(1 .. 30) may be +1 or -1 depending on the change_flag b or f respectively
5716  --******************************************************************************************************
5717   UPDATE
5718     amw_fin_cert_ctrl_sum
5719   SET
5720       ineff_ctrl_attr_1=  x_ineff_ctrl_attr_1
5721      ,ineff_ctrl_attr_2 = x_ineff_ctrl_attr_2
5722      ,ineff_ctrl_attr_3= x_ineff_ctrl_attr_3
5723      ,ineff_ctrl_attr_4= x_ineff_ctrl_attr_4
5724      ,ineff_ctrl_attr_5= x_ineff_ctrl_attr_5
5725      ,ineff_ctrl_attr_6= x_ineff_ctrl_attr_6
5726      ,ineff_ctrl_attr_7= x_ineff_ctrl_attr_7
5727      ,ineff_ctrl_attr_8= x_ineff_ctrl_attr_8
5728      ,ineff_ctrl_attr_9= x_ineff_ctrl_attr_9
5729      ,ineff_ctrl_attr_10= x_ineff_ctrl_attr_10
5730      ,ineff_ctrl_attr_11= x_ineff_ctrl_attr_11
5731      ,ineff_ctrl_attr_12= x_ineff_ctrl_attr_12
5732      ,ineff_ctrl_attr_13= x_ineff_ctrl_attr_13
5733      ,ineff_ctrl_attr_14= x_ineff_ctrl_attr_14
5734      ,ineff_ctrl_attr_15= x_ineff_ctrl_attr_15
5735      ,ineff_ctrl_attr_16= x_ineff_ctrl_attr_16
5736      ,ineff_ctrl_attr_17= x_ineff_ctrl_attr_17
5737      ,ineff_ctrl_attr_18= x_ineff_ctrl_attr_18
5738      ,ineff_ctrl_attr_19= x_ineff_ctrl_attr_19
5739      ,ineff_ctrl_attr_20= x_ineff_ctrl_attr_20
5740      ,ineff_ctrl_attr_21= x_ineff_ctrl_attr_21
5741      ,ineff_ctrl_attr_22= x_ineff_ctrl_attr_22
5742      ,ineff_ctrl_attr_23= x_ineff_ctrl_attr_23
5743      ,ineff_ctrl_attr_24= x_ineff_ctrl_attr_24
5744      ,ineff_ctrl_attr_25= x_ineff_ctrl_attr_25
5745      ,ineff_ctrl_attr_26= x_ineff_ctrl_attr_26
5746      ,ineff_ctrl_attr_27= x_ineff_ctrl_attr_27
5747      ,ineff_ctrl_attr_28= x_ineff_ctrl_attr_28
5748      ,ineff_ctrl_attr_29= x_ineff_ctrl_attr_29
5749      ,ineff_ctrl_attr_30= x_ineff_ctrl_attr_30,
5750 eval_ctrl_attr_1    =	nvl(eval_ctrl_attr_1,0) + x_eval_ctrl_attr_1  ,
5751 eval_ctrl_attr_2    =	nvl(eval_ctrl_attr_2,0) + x_eval_ctrl_attr_2  ,
5752 eval_ctrl_attr_3    =	nvl(eval_ctrl_attr_3,0) + x_eval_ctrl_attr_3  ,
5753 eval_ctrl_attr_4    =	nvl(eval_ctrl_attr_4,0) + x_eval_ctrl_attr_4  ,
5754 eval_ctrl_attr_5    =	nvl(eval_ctrl_attr_5,0) + x_eval_ctrl_attr_5  ,
5755 eval_ctrl_attr_6    =	nvl(eval_ctrl_attr_6,0) + x_eval_ctrl_attr_6  ,
5756 eval_ctrl_attr_7    =	nvl(eval_ctrl_attr_7,0) + x_eval_ctrl_attr_7  ,
5757 eval_ctrl_attr_8    =	nvl(eval_ctrl_attr_8,0) + x_eval_ctrl_attr_8  ,
5758 eval_ctrl_attr_9    =	nvl(eval_ctrl_attr_9,0) + x_eval_ctrl_attr_9  ,
5759 eval_ctrl_attr_10   =	nvl(eval_ctrl_attr_10,0) +  x_eval_ctrl_attr_10  ,
5760 eval_ctrl_attr_11    =	nvl(eval_ctrl_attr_11,0) + x_eval_ctrl_attr_11  ,
5761 eval_ctrl_attr_12    =	nvl(eval_ctrl_attr_12,0) + x_eval_ctrl_attr_12  ,
5762 eval_ctrl_attr_13    =	nvl(eval_ctrl_attr_13,0) + x_eval_ctrl_attr_13  ,
5763 eval_ctrl_attr_14    =	nvl(eval_ctrl_attr_14,0) + x_eval_ctrl_attr_14  ,
5764 eval_ctrl_attr_15    =	nvl(eval_ctrl_attr_15,0) + x_eval_ctrl_attr_15  ,
5765 eval_ctrl_attr_16    =	nvl(eval_ctrl_attr_16,0) + x_eval_ctrl_attr_16  ,
5766 eval_ctrl_attr_17    =	nvl(eval_ctrl_attr_17,0) + x_eval_ctrl_attr_17  ,
5767 eval_ctrl_attr_18    =	nvl(eval_ctrl_attr_18,0) + x_eval_ctrl_attr_18  ,
5768 eval_ctrl_attr_19    =	nvl(eval_ctrl_attr_19,0) + x_eval_ctrl_attr_19  ,
5769 eval_ctrl_attr_20   =	nvl(eval_ctrl_attr_20,0) +  x_eval_ctrl_attr_20  ,
5770 eval_ctrl_attr_21  =	nvl(eval_ctrl_attr_21,0) + x_eval_ctrl_attr_21  ,
5771 eval_ctrl_attr_22    =	nvl(eval_ctrl_attr_22,0) + x_eval_ctrl_attr_22  ,
5772 eval_ctrl_attr_23    =	nvl(eval_ctrl_attr_23,0) + x_eval_ctrl_attr_23  ,
5773 eval_ctrl_attr_24    =	nvl(eval_ctrl_attr_24,0) + x_eval_ctrl_attr_24  ,
5774 eval_ctrl_attr_25    =	nvl(eval_ctrl_attr_25,0) + x_eval_ctrl_attr_25  ,
5775 eval_ctrl_attr_26    =	nvl(eval_ctrl_attr_26,0) + x_eval_ctrl_attr_26  ,
5776 eval_ctrl_attr_27    =	nvl(eval_ctrl_attr_27,0) + x_eval_ctrl_attr_27  ,
5777 eval_ctrl_attr_28    =	nvl(eval_ctrl_attr_28,0) + x_eval_ctrl_attr_28  ,
5778 eval_ctrl_attr_29    =	nvl(eval_ctrl_attr_29,0) + x_eval_ctrl_attr_29,
5779 eval_ctrl_attr_30   =	nvl(eval_ctrl_attr_30,0) + x_eval_ctrl_attr_30
5780 ,ineff_ctrl_prcnt_1=  round((x_ineff_ctrl_attr_1	 /  decode(total_ctrl_attr_1,null,1,0,1,total_ctrl_attr_1) ) * 100,0)
5781      ,ineff_ctrl_prcnt_2 = round((x_ineff_ctrl_attr_2	 /  decode(total_ctrl_attr_2,null,1,0,1,total_ctrl_attr_2) ) * 100,0)
5782      ,ineff_ctrl_prcnt_3=  round((x_ineff_ctrl_attr_3	 /  decode(total_ctrl_attr_3,null,1,0,1,total_ctrl_attr_3) ) * 100,0)
5783      ,ineff_ctrl_prcnt_4=  round((x_ineff_ctrl_attr_4	 /  decode(total_ctrl_attr_4,null,1,0,1,total_ctrl_attr_4) ) * 100,0)
5784      ,ineff_ctrl_prcnt_5=  round((x_ineff_ctrl_attr_5	 /  decode(total_ctrl_attr_5,null,1,0,1,total_ctrl_attr_5) ) * 100,0)
5785      ,ineff_ctrl_prcnt_6=  round((x_ineff_ctrl_attr_6	 /  decode(total_ctrl_attr_6,null,1,0,1,total_ctrl_attr_6) ) * 100,0)
5786      ,ineff_ctrl_prcnt_7=  round((x_ineff_ctrl_attr_7	 /  decode(total_ctrl_attr_7,null,1,0,1,total_ctrl_attr_7) ) * 100,0)
5787      ,ineff_ctrl_prcnt_8=  round((x_ineff_ctrl_attr_8	 /  decode(total_ctrl_attr_8,null,1,0,1,total_ctrl_attr_8) ) * 100,0)
5788      ,ineff_ctrl_prcnt_9=  round((x_ineff_ctrl_attr_9	 /  decode(total_ctrl_attr_9,null,1,0,1,total_ctrl_attr_9) ) * 100,0)
5789      ,ineff_ctrl_prcnt_10= round((x_ineff_ctrl_attr_10 /  decode(total_ctrl_attr_10,null,1,0,1,total_ctrl_attr_10) ) * 100,0)
5790      ,ineff_ctrl_prcnt_11= round((x_ineff_ctrl_attr_11 /  decode(total_ctrl_attr_11,null,1,0,1,total_ctrl_attr_11) ) * 100,0)
5791      ,ineff_ctrl_prcnt_12= round((x_ineff_ctrl_attr_12 /  decode(total_ctrl_attr_12,null,1,0,1,total_ctrl_attr_12) ) * 100,0)
5792      ,ineff_ctrl_prcnt_13= round((x_ineff_ctrl_attr_13 /  decode(total_ctrl_attr_13,null,1,0,1,total_ctrl_attr_13) ) * 100,0)
5793      ,ineff_ctrl_prcnt_14= round((x_ineff_ctrl_attr_14 /  decode(total_ctrl_attr_14,null,1,0,1,total_ctrl_attr_14) ) * 100,0)
5794      ,ineff_ctrl_prcnt_15= round((x_ineff_ctrl_attr_15 /  decode(total_ctrl_attr_15,null,1,0,1,total_ctrl_attr_15) ) * 100,0)
5795      ,ineff_ctrl_prcnt_16= round((x_ineff_ctrl_attr_16 /  decode(total_ctrl_attr_16,null,1,0,1,total_ctrl_attr_16) ) * 100,0)
5796      ,ineff_ctrl_prcnt_17= round((x_ineff_ctrl_attr_17 /  decode(total_ctrl_attr_17,null,1,0,1,total_ctrl_attr_17) ) * 100,0)
5797      ,ineff_ctrl_prcnt_18= round((x_ineff_ctrl_attr_18 /  decode(total_ctrl_attr_18,null,1,0,1,total_ctrl_attr_18) ) * 100,0)
5798      ,ineff_ctrl_prcnt_19= round((x_ineff_ctrl_attr_19 /  decode(total_ctrl_attr_19,null,1,0,1,total_ctrl_attr_19) ) * 100,0)
5799      ,ineff_ctrl_prcnt_20= round((x_ineff_ctrl_attr_20 /  decode(total_ctrl_attr_20,null,1,0,1,total_ctrl_attr_20) ) * 100,0)
5800      ,ineff_ctrl_prcnt_21= round((x_ineff_ctrl_attr_21 /  decode(total_ctrl_attr_21,null,1,0,1,total_ctrl_attr_21) ) * 100,0)
5801      ,ineff_ctrl_prcnt_22= round((x_ineff_ctrl_attr_22 /  decode(total_ctrl_attr_22,null,1,0,1,total_ctrl_attr_22) ) * 100,0)
5802      ,ineff_ctrl_prcnt_23= round((x_ineff_ctrl_attr_23 /  decode(total_ctrl_attr_23,null,1,0,1,total_ctrl_attr_23) ) * 100,0)
5803      ,ineff_ctrl_prcnt_24= round((x_ineff_ctrl_attr_24 /  decode(total_ctrl_attr_24,null,1,0,1,total_ctrl_attr_24) ) * 100,0)
5804      ,ineff_ctrl_prcnt_25= round((x_ineff_ctrl_attr_25 /  decode(total_ctrl_attr_25,null,1,0,1,total_ctrl_attr_25) ) * 100,0)
5805      ,ineff_ctrl_prcnt_26= round((x_ineff_ctrl_attr_26 /  decode(total_ctrl_attr_26,null,1,0,1,total_ctrl_attr_26) ) * 100,0)
5806      ,ineff_ctrl_prcnt_27= round((x_ineff_ctrl_attr_27 /  decode(total_ctrl_attr_27,null,1,0,1,total_ctrl_attr_27) ) * 100,0)
5807      ,ineff_ctrl_prcnt_28= round((x_ineff_ctrl_attr_28 /  decode(total_ctrl_attr_28,null,1,0,1,total_ctrl_attr_28) ) * 100,0)
5808      ,ineff_ctrl_prcnt_29= round((x_ineff_ctrl_attr_29 /  decode(total_ctrl_attr_29,null,1,0,1,total_ctrl_attr_29) ) * 100,0)
5809      ,ineff_ctrl_prcnt_30= round((x_ineff_ctrl_attr_30 /  decode(total_ctrl_attr_30,null,1,0,1,total_ctrl_attr_30) ) * 100,0)
5810      ,last_updated_by           =  x_last_updated_by
5811      ,last_update_date          =  x_last_update_date
5812      ,last_update_login         = x_last_update_login
5813      ,object_version_number = object_version_number +1
5814 where
5815  fin_certification_id     = x_fin_certification_id      and
5816  financial_statement_id   = x_financial_statement_id    and
5817  NVL(financial_item_id, -1)        = NVL(x_financial_item_id, -1) and
5818  NVL(account_group_id, -1) =  NVL(x_account_group_id, -1) and
5819  nvl(natural_account_id, -1) = nvl(x_natural_account_id, -1)   and
5820  CTRL_ATTRIBUTE_TYPE =  x_ctrl_attribute_type       and
5821  object_type	= x_object_type       ;
5822 
5823 /* EXCEPTION
5824   WHEN OTHERS THEN
5825  fnd_file.put_line(fnd_file.LOG, SUBSTR (SQLERRM, 1, 2000));
5826   fnd_file.put_line(fnd_file.LOG, 'natural_account_id' || x_natural_account_id );
5827  fnd_file.put_line(fnd_file.LOG,  'financial_item_id' || x_financial_item_id);
5828  fnd_file.put_line(fnd_file.LOG,  'fin_certification_id  ' || x_fin_certification_id  );
5829 
5830 
5831  RAISE ;
5832  RETURN; */
5833 
5834 end;
5835 end UPDATE_FIN_ITEM_ROW;
5836 --*************************************************************************************************************
5837 procedure UPDATE_FIN_ACC_ASSERT_ROW (
5838  x_fin_certification_id       	NUMBER  ,
5839  x_financial_statement_id    	 NUMBER ,
5840  x_financial_item_id         	 NUMBER ,
5841  x_account_group_id          	 NUMBER,
5842  x_natural_account_id        	 NUMBER,
5843  x_object_type               	 VARCHAR2,
5844  x_ctrl_attribute_type       	 VARCHAR2,
5845  x_ineff_ctrl_attr_1         	 NUMBER,
5846  x_ineff_ctrl_attr_2         	 NUMBER,
5847  x_ineff_ctrl_attr_3         	 NUMBER,
5848  x_ineff_ctrl_attr_4         	 NUMBER,
5849  x_ineff_ctrl_attr_5         	 NUMBER,
5850  x_ineff_ctrl_attr_6         	 NUMBER,
5851  x_ineff_ctrl_attr_7         	 NUMBER,
5852  x_ineff_ctrl_attr_8         	 NUMBER,
5853  x_ineff_ctrl_attr_9         	 NUMBER,
5854  x_ineff_ctrl_attr_10        	  NUMBER,
5855  x_ineff_ctrl_attr_11        	  NUMBER,
5856  x_ineff_ctrl_attr_12        	  NUMBER,
5857  x_ineff_ctrl_attr_13        	  NUMBER,
5858  x_ineff_ctrl_attr_14        	  NUMBER,
5859  x_ineff_ctrl_attr_15        	  NUMBER,
5860  x_ineff_ctrl_attr_16        	  NUMBER,
5861  x_ineff_ctrl_attr_17        	  NUMBER,
5862  x_ineff_ctrl_attr_18        	  NUMBER,
5863  x_ineff_ctrl_attr_19        	  NUMBER,
5864  x_ineff_ctrl_attr_20        	  NUMBER,
5865  x_ineff_ctrl_attr_21        	  NUMBER,
5866  x_ineff_ctrl_attr_22        	  NUMBER,
5867  x_ineff_ctrl_attr_23        	  NUMBER,
5868  x_ineff_ctrl_attr_24         	 NUMBER,
5869  x_ineff_ctrl_attr_25        	  NUMBER,
5870  x_ineff_ctrl_attr_26        	  NUMBER,
5871  x_ineff_ctrl_attr_27        	  NUMBER,
5872  x_ineff_ctrl_attr_28        	  NUMBER,
5873  x_ineff_ctrl_attr_29        	  NUMBER,
5874  x_ineff_ctrl_attr_30        	  NUMBER,
5875  x_last_updated_by           	 NUMBER,
5876  x_last_update_date          	 DATE ,
5877  x_last_update_login         	 NUMBER,
5878 x_eval_ctrl_attr_1         	  NUMBER,
5879 x_eval_ctrl_attr_2         	  NUMBER,
5880 x_eval_ctrl_attr_3         	  NUMBER,
5881 x_eval_ctrl_attr_4         	  NUMBER,
5882 x_eval_ctrl_attr_5         	  NUMBER,
5883 x_eval_ctrl_attr_6         	  NUMBER,
5884 x_eval_ctrl_attr_7         	  NUMBER,
5885 x_eval_ctrl_attr_8         	  NUMBER,
5886 x_eval_ctrl_attr_9         	  NUMBER,
5887 x_eval_ctrl_attr_10        	  NUMBER,
5888 x_eval_ctrl_attr_11         	  NUMBER,
5889 x_eval_ctrl_attr_12         	  NUMBER,
5890 x_eval_ctrl_attr_13         	  NUMBER,
5891 x_eval_ctrl_attr_14         	  NUMBER,
5892 x_eval_ctrl_attr_15         	  NUMBER,
5893 x_eval_ctrl_attr_16         	  NUMBER,
5894 x_eval_ctrl_attr_17         	  NUMBER,
5895 x_eval_ctrl_attr_18         	  NUMBER,
5896 x_eval_ctrl_attr_19         	  NUMBER,
5897 x_eval_ctrl_attr_20        	  NUMBER,
5898 x_eval_ctrl_attr_21         	  NUMBER,
5899 x_eval_ctrl_attr_22         	  NUMBER,
5900 x_eval_ctrl_attr_23         	  NUMBER,
5901 x_eval_ctrl_attr_24         	  NUMBER,
5902 x_eval_ctrl_attr_25         	  NUMBER,
5903 x_eval_ctrl_attr_26         	  NUMBER,
5904 x_eval_ctrl_attr_27         	  NUMBER,
5905 x_eval_ctrl_attr_28         	  NUMBER,
5906 x_eval_ctrl_attr_29         	  NUMBER,
5907 x_eval_ctrl_attr_30        	  NUMBER,
5908 x_acc_assert_flag1         	  VARCHAR2,
5909 x_acc_assert_flag2         	  VARCHAR2,
5910 x_acc_assert_flag3         	  VARCHAR2,
5911 x_acc_assert_flag4         	  VARCHAR2,
5912 x_acc_assert_flag5         	  VARCHAR2,
5913 x_acc_assert_flag6         	  VARCHAR2,
5914 x_acc_assert_flag7         	  VARCHAR2,
5915 x_acc_assert_flag8         	  VARCHAR2,
5916 x_acc_assert_flag9         	  VARCHAR2,
5917 x_acc_assert_flag10        	  VARCHAR2,
5918 x_acc_assert_flag11         	  VARCHAR2,
5919 x_acc_assert_flag12         	  VARCHAR2,
5920 x_acc_assert_flag13         	  VARCHAR2,
5921 x_acc_assert_flag14         	  VARCHAR2,
5922 x_acc_assert_flag15         	  VARCHAR2,
5923 x_acc_assert_flag16         	  VARCHAR2,
5924 x_acc_assert_flag17         	  VARCHAR2,
5925 x_acc_assert_flag18         	  VARCHAR2,
5926 x_acc_assert_flag19         	  VARCHAR2,
5927 x_acc_assert_flag20        	  VARCHAR2,
5928 x_acc_assert_flag21         	  VARCHAR2,
5929 x_acc_assert_flag22         	  VARCHAR2,
5930 x_acc_assert_flag23         	  VARCHAR2,
5931 x_acc_assert_flag24         	  VARCHAR2,
5932 x_acc_assert_flag25         	  VARCHAR2,
5933 x_acc_assert_flag26         	  VARCHAR2,
5934 x_acc_assert_flag27         	  VARCHAR2,
5935 x_acc_assert_flag28         	  VARCHAR2,
5936 x_acc_assert_flag29         	  VARCHAR2,
5937 x_acc_assert_flag30        	  VARCHAR2
5938 ) is
5939 
5940 begin
5941 declare
5942  var_fin_certification_id  number;
5943 
5944  begin
5945 
5946  --******************************************************************************************************
5947  -- NOTE: The values in x_ineff_ctrl_attr_(1 .. 30) may be +1 or -1 depending on the change_flag b or f respectively
5948  --******************************************************************************************************
5949 
5950 
5951   UPDATE
5952     amw_fin_cert_ctrl_sum
5953   SET
5954       ineff_ctrl_attr_1=  x_ineff_ctrl_attr_1
5955      ,ineff_ctrl_attr_2 = x_ineff_ctrl_attr_2
5956      ,ineff_ctrl_attr_3=  x_ineff_ctrl_attr_3
5957      ,ineff_ctrl_attr_4=  x_ineff_ctrl_attr_4
5958      ,ineff_ctrl_attr_5=  x_ineff_ctrl_attr_5
5959      ,ineff_ctrl_attr_6=  x_ineff_ctrl_attr_6
5960      ,ineff_ctrl_attr_7=  x_ineff_ctrl_attr_7
5961      ,ineff_ctrl_attr_8=  x_ineff_ctrl_attr_8
5962      ,ineff_ctrl_attr_9=  x_ineff_ctrl_attr_9
5963      ,ineff_ctrl_attr_10= x_ineff_ctrl_attr_10
5964      ,ineff_ctrl_attr_11= x_ineff_ctrl_attr_11
5965      ,ineff_ctrl_attr_12= x_ineff_ctrl_attr_12
5966      ,ineff_ctrl_attr_13= x_ineff_ctrl_attr_13
5967      ,ineff_ctrl_attr_14= x_ineff_ctrl_attr_14
5968      ,ineff_ctrl_attr_15= x_ineff_ctrl_attr_15
5969      ,ineff_ctrl_attr_16= x_ineff_ctrl_attr_16
5970      ,ineff_ctrl_attr_17= x_ineff_ctrl_attr_17
5971      ,ineff_ctrl_attr_18= x_ineff_ctrl_attr_18
5972      ,ineff_ctrl_attr_19= x_ineff_ctrl_attr_19
5973      ,ineff_ctrl_attr_20= x_ineff_ctrl_attr_20
5974      ,ineff_ctrl_attr_21= x_ineff_ctrl_attr_21
5975      ,ineff_ctrl_attr_22= x_ineff_ctrl_attr_22
5976      ,ineff_ctrl_attr_23= x_ineff_ctrl_attr_23
5977      ,ineff_ctrl_attr_24= x_ineff_ctrl_attr_24
5978      ,ineff_ctrl_attr_25= x_ineff_ctrl_attr_25
5979      ,ineff_ctrl_attr_26= x_ineff_ctrl_attr_26
5980      ,ineff_ctrl_attr_27= x_ineff_ctrl_attr_27
5981      ,ineff_ctrl_attr_28= x_ineff_ctrl_attr_28
5982      ,ineff_ctrl_attr_29= x_ineff_ctrl_attr_29
5983      ,ineff_ctrl_attr_30= x_ineff_ctrl_attr_30
5984      ,acc_assert_flag_1  = 	x_acc_assert_flag1
5985      ,acc_assert_flag_2  = 	x_acc_assert_flag2
5986      ,acc_assert_flag_3  = 	x_acc_assert_flag3
5987      ,acc_assert_flag_4  = 	x_acc_assert_flag4
5988      ,acc_assert_flag_5  = 	x_acc_assert_flag5
5989      ,acc_assert_flag_6  = 	x_acc_assert_flag6
5990      ,acc_assert_flag_7  = 	x_acc_assert_flag7
5991      ,acc_assert_flag_8  = 	x_acc_assert_flag8
5992      ,acc_assert_flag_9  = 	x_acc_assert_flag9
5993      ,acc_assert_flag_10 = 	x_acc_assert_flag10
5994      ,acc_assert_flag_11  = 	x_acc_assert_flag11
5995      ,acc_assert_flag_12  = 	x_acc_assert_flag12
5996      ,acc_assert_flag_13  = 	x_acc_assert_flag13
5997      ,acc_assert_flag_14  = 	x_acc_assert_flag14
5998      ,acc_assert_flag_15  = 	x_acc_assert_flag15
5999      ,acc_assert_flag_16  = 	x_acc_assert_flag16
6000      ,acc_assert_flag_17  = 	x_acc_assert_flag17
6001      ,acc_assert_flag_18  = 	x_acc_assert_flag18
6002      ,acc_assert_flag_19  = 	x_acc_assert_flag19
6003      ,acc_assert_flag_20 = 	x_acc_assert_flag20
6004      ,acc_assert_flag_21  = 	x_acc_assert_flag21
6005      ,acc_assert_flag_22  = 	x_acc_assert_flag22
6006      ,acc_assert_flag_23  = 	x_acc_assert_flag23
6007      ,acc_assert_flag_24  = 	x_acc_assert_flag24
6008      ,acc_assert_flag_25  = 	x_acc_assert_flag25
6009      ,acc_assert_flag_26  = 	x_acc_assert_flag26
6010      ,acc_assert_flag_27  = 	x_acc_assert_flag27
6011      ,acc_assert_flag_28  = 	x_acc_assert_flag28
6012      ,acc_assert_flag_29  = 	x_acc_assert_flag29
6013      ,acc_assert_flag_30  = 	x_acc_assert_flag30,
6014      eval_ctrl_attr_1    =	nvl(eval_ctrl_attr_1,0) + x_eval_ctrl_attr_1  ,
6015      eval_ctrl_attr_2    =	nvl(eval_ctrl_attr_2,0) + x_eval_ctrl_attr_2  ,
6016      eval_ctrl_attr_3    =	nvl(eval_ctrl_attr_3,0) + x_eval_ctrl_attr_3  ,
6017      eval_ctrl_attr_4    =	nvl(eval_ctrl_attr_4,0) + x_eval_ctrl_attr_4  ,
6018      eval_ctrl_attr_5    =	nvl(eval_ctrl_attr_5,0) + x_eval_ctrl_attr_5  ,
6019      eval_ctrl_attr_6    =	nvl(eval_ctrl_attr_6,0) + x_eval_ctrl_attr_6  ,
6020      eval_ctrl_attr_7    =	nvl(eval_ctrl_attr_7,0) + x_eval_ctrl_attr_7  ,
6021      eval_ctrl_attr_8    =	nvl(eval_ctrl_attr_8,0) + x_eval_ctrl_attr_8  ,
6022      eval_ctrl_attr_9    =	nvl(eval_ctrl_attr_9,0) + x_eval_ctrl_attr_9  ,
6023      eval_ctrl_attr_10   =	nvl(eval_ctrl_attr_10,0) +  x_eval_ctrl_attr_10  ,
6024      eval_ctrl_attr_11    =	nvl(eval_ctrl_attr_11,0) + x_eval_ctrl_attr_11  ,
6025      eval_ctrl_attr_12    =	nvl(eval_ctrl_attr_12,0) + x_eval_ctrl_attr_12  ,
6026      eval_ctrl_attr_13    =	nvl(eval_ctrl_attr_13,0) + x_eval_ctrl_attr_13  ,
6027      eval_ctrl_attr_14    =	nvl(eval_ctrl_attr_14,0) + x_eval_ctrl_attr_14  ,
6028      eval_ctrl_attr_15    =	nvl(eval_ctrl_attr_15,0) + x_eval_ctrl_attr_15  ,
6029      eval_ctrl_attr_16    =	nvl(eval_ctrl_attr_16,0) + x_eval_ctrl_attr_16  ,
6030      eval_ctrl_attr_17    =	nvl(eval_ctrl_attr_17,0) + x_eval_ctrl_attr_17  ,
6031      eval_ctrl_attr_18    =	nvl(eval_ctrl_attr_18,0) + x_eval_ctrl_attr_18  ,
6032      eval_ctrl_attr_19    =	nvl(eval_ctrl_attr_19,0) + x_eval_ctrl_attr_19  ,
6033      eval_ctrl_attr_20   =	nvl(eval_ctrl_attr_20,0) +  x_eval_ctrl_attr_20  ,
6034      eval_ctrl_attr_21  =	nvl(eval_ctrl_attr_21,0) + x_eval_ctrl_attr_21  ,
6035      eval_ctrl_attr_22    =	nvl(eval_ctrl_attr_22,0) + x_eval_ctrl_attr_22  ,
6036      eval_ctrl_attr_23    =	nvl(eval_ctrl_attr_23,0) + x_eval_ctrl_attr_23  ,
6037      eval_ctrl_attr_24    =	nvl(eval_ctrl_attr_24,0) + x_eval_ctrl_attr_24  ,
6038      eval_ctrl_attr_25    =	nvl(eval_ctrl_attr_25,0) + x_eval_ctrl_attr_25  ,
6039      eval_ctrl_attr_26    =	nvl(eval_ctrl_attr_26,0) + x_eval_ctrl_attr_26  ,
6040      eval_ctrl_attr_27    =	nvl(eval_ctrl_attr_27,0) + x_eval_ctrl_attr_27  ,
6041      eval_ctrl_attr_28    =	nvl(eval_ctrl_attr_28,0) + x_eval_ctrl_attr_28  ,
6042      eval_ctrl_attr_29    =	nvl(eval_ctrl_attr_29,0) + x_eval_ctrl_attr_29  ,
6043      eval_ctrl_attr_30   =	nvl(eval_ctrl_attr_30,0) + x_eval_ctrl_attr_30
6044      ,ineff_ctrl_prcnt_1=  round((x_ineff_ctrl_attr_1	 /  decode(total_ctrl_attr_1,null,1,0,1,total_ctrl_attr_1) ) * 100,0)
6045      ,ineff_ctrl_prcnt_2 = round((x_ineff_ctrl_attr_2	 /  decode(total_ctrl_attr_2,null,1,0,1,total_ctrl_attr_2) ) * 100,0)
6046      ,ineff_ctrl_prcnt_3=  round((x_ineff_ctrl_attr_3	 /  decode(total_ctrl_attr_3,null,1,0,1,total_ctrl_attr_3) ) * 100,0)
6047      ,ineff_ctrl_prcnt_4=  round((x_ineff_ctrl_attr_4	 /  decode(total_ctrl_attr_4,null,1,0,1,total_ctrl_attr_4) ) * 100,0)
6048      ,ineff_ctrl_prcnt_5=  round((x_ineff_ctrl_attr_5	 /  decode(total_ctrl_attr_5,null,1,0,1,total_ctrl_attr_5) ) * 100,0)
6049      ,ineff_ctrl_prcnt_6=  round((x_ineff_ctrl_attr_6	 /  decode(total_ctrl_attr_6,null,1,0,1,total_ctrl_attr_6) ) * 100,0)
6050      ,ineff_ctrl_prcnt_7=  round((x_ineff_ctrl_attr_7	 /  decode(total_ctrl_attr_7,null,1,0,1,total_ctrl_attr_7) ) * 100,0)
6051      ,ineff_ctrl_prcnt_8=  round((x_ineff_ctrl_attr_8	 /  decode(total_ctrl_attr_8,null,1,0,1,total_ctrl_attr_8) ) * 100,0)
6052      ,ineff_ctrl_prcnt_9=  round((x_ineff_ctrl_attr_9	 /  decode(total_ctrl_attr_9,null,1,0,1,total_ctrl_attr_9) ) * 100,0)
6053      ,ineff_ctrl_prcnt_10= round((x_ineff_ctrl_attr_10 /  decode(total_ctrl_attr_10,null,1,0,1,total_ctrl_attr_10) ) * 100,0)
6054      ,ineff_ctrl_prcnt_11= round((x_ineff_ctrl_attr_11 /  decode(total_ctrl_attr_11,null,1,0,1,total_ctrl_attr_11) ) * 100,0)
6055      ,ineff_ctrl_prcnt_12= round((x_ineff_ctrl_attr_12 /  decode(total_ctrl_attr_12,null,1,0,1,total_ctrl_attr_12) ) * 100,0)
6056      ,ineff_ctrl_prcnt_13= round((x_ineff_ctrl_attr_13 /  decode(total_ctrl_attr_13,null,1,0,1,total_ctrl_attr_13) ) * 100,0)
6057      ,ineff_ctrl_prcnt_14= round((x_ineff_ctrl_attr_14 /  decode(total_ctrl_attr_14,null,1,0,1,total_ctrl_attr_14) ) * 100,0)
6058      ,ineff_ctrl_prcnt_15= round((x_ineff_ctrl_attr_15 /  decode(total_ctrl_attr_15,null,1,0,1,total_ctrl_attr_15) ) * 100,0)
6059      ,ineff_ctrl_prcnt_16= round((x_ineff_ctrl_attr_16 /  decode(total_ctrl_attr_16,null,1,0,1,total_ctrl_attr_16) ) * 100,0)
6060      ,ineff_ctrl_prcnt_17= round((x_ineff_ctrl_attr_17 /  decode(total_ctrl_attr_17,null,1,0,1,total_ctrl_attr_17) ) * 100,0)
6061      ,ineff_ctrl_prcnt_18= round((x_ineff_ctrl_attr_18 /  decode(total_ctrl_attr_18,null,1,0,1,total_ctrl_attr_18) ) * 100,0)
6062      ,ineff_ctrl_prcnt_19= round((x_ineff_ctrl_attr_19 /  decode(total_ctrl_attr_19,null,1,0,1,total_ctrl_attr_19) ) * 100,0)
6063      ,ineff_ctrl_prcnt_20= round((x_ineff_ctrl_attr_20 /  decode(total_ctrl_attr_20,null,1,0,1,total_ctrl_attr_20) ) * 100,0)
6064      ,ineff_ctrl_prcnt_21= round((x_ineff_ctrl_attr_21 /  decode(total_ctrl_attr_21,null,1,0,1,total_ctrl_attr_21) ) * 100,0)
6065      ,ineff_ctrl_prcnt_22= round((x_ineff_ctrl_attr_22 /  decode(total_ctrl_attr_22,null,1,0,1,total_ctrl_attr_22) ) * 100,0)
6066      ,ineff_ctrl_prcnt_23= round((x_ineff_ctrl_attr_23 /  decode(total_ctrl_attr_23,null,1,0,1,total_ctrl_attr_23) ) * 100,0)
6067      ,ineff_ctrl_prcnt_24= round((x_ineff_ctrl_attr_24 /  decode(total_ctrl_attr_24,null,1,0,1,total_ctrl_attr_24) ) * 100,0)
6068      ,ineff_ctrl_prcnt_25= round((x_ineff_ctrl_attr_25 /  decode(total_ctrl_attr_25,null,1,0,1,total_ctrl_attr_25) ) * 100,0)
6069      ,ineff_ctrl_prcnt_26= round((x_ineff_ctrl_attr_26 /  decode(total_ctrl_attr_26,null,1,0,1,total_ctrl_attr_26) ) * 100,0)
6070      ,ineff_ctrl_prcnt_27= round((x_ineff_ctrl_attr_27 /  decode(total_ctrl_attr_27,null,1,0,1,total_ctrl_attr_27) ) * 100,0)
6071      ,ineff_ctrl_prcnt_28= round((x_ineff_ctrl_attr_28 /  decode(total_ctrl_attr_28,null,1,0,1,total_ctrl_attr_28) ) * 100,0)
6072      ,ineff_ctrl_prcnt_29= round((x_ineff_ctrl_attr_29 /  decode(total_ctrl_attr_29,null,1,0,1,total_ctrl_attr_29) ) * 100,0)
6073      ,ineff_ctrl_prcnt_30= round((x_ineff_ctrl_attr_30 /  decode(total_ctrl_attr_30,null,1,0,1,total_ctrl_attr_30) ) * 100,0)
6074      ,last_updated_by           =  x_last_updated_by           ,
6075      last_update_date          =  x_last_update_date          ,
6076      last_update_login         = x_last_update_login
6077      ,object_version_number = object_version_number +1
6078 where
6079  fin_certification_id = x_fin_certification_id and
6080  account_group_id =  x_account_group_id        and
6081  natural_account_id  =  x_natural_account_id   and
6082  CTRL_ATTRIBUTE_TYPE =  x_ctrl_attribute_type  and
6083  object_type	= x_object_type       ;
6084 
6085 /* EXCEPTION
6086   WHEN OTHERS THEN
6087  fnd_file.put_line(fnd_file.LOG, SUBSTR (SQLERRM, 1, 2000));
6088   fnd_file.put_line(fnd_file.LOG, 'natural_account_id' || x_natural_account_id );
6089  fnd_file.put_line(fnd_file.LOG,  'financial_item_id' || x_financial_item_id);
6090  fnd_file.put_line(fnd_file.LOG,  'fin_certification_id  ' || x_fin_certification_id  );
6091 
6092 
6093  RAISE ;
6094  RETURN; */
6095 
6096 end;
6097 end UPDATE_FIN_ACC_ASSERT_ROW ;
6098 -- ****************************************** Business Event Subscription for Account Assertion ---------------
6099 
6100 
6101 --*************************************************************************************************************
6102 procedure UPDATE_FIN_ACC_ROW (
6103  x_fin_certification_id       	NUMBER  ,
6104  x_financial_statement_id    	 NUMBER ,
6105  x_financial_item_id         	 NUMBER ,
6106  x_account_group_id          	 NUMBER,
6107  x_natural_account_id        	 NUMBER,
6108  x_object_type               	 VARCHAR2,
6109  x_ctrl_attribute_type       	 VARCHAR2,
6110  x_ineff_ctrl_attr_1         	 NUMBER,
6111  x_ineff_ctrl_attr_2         	 NUMBER,
6112  x_ineff_ctrl_attr_3         	 NUMBER,
6113  x_ineff_ctrl_attr_4         	 NUMBER,
6114  x_ineff_ctrl_attr_5         	 NUMBER,
6115  x_ineff_ctrl_attr_6         	 NUMBER,
6116  x_ineff_ctrl_attr_7         	 NUMBER,
6117  x_ineff_ctrl_attr_8         	 NUMBER,
6118  x_ineff_ctrl_attr_9         	 NUMBER,
6119  x_ineff_ctrl_attr_10        	  NUMBER,
6120  x_ineff_ctrl_attr_11        	  NUMBER,
6121  x_ineff_ctrl_attr_12        	  NUMBER,
6122  x_ineff_ctrl_attr_13        	  NUMBER,
6123  x_ineff_ctrl_attr_14        	  NUMBER,
6124  x_ineff_ctrl_attr_15        	  NUMBER,
6125  x_ineff_ctrl_attr_16        	  NUMBER,
6126  x_ineff_ctrl_attr_17        	  NUMBER,
6127  x_ineff_ctrl_attr_18        	  NUMBER,
6128  x_ineff_ctrl_attr_19        	  NUMBER,
6129  x_ineff_ctrl_attr_20        	  NUMBER,
6130  x_ineff_ctrl_attr_21        	  NUMBER,
6131  x_ineff_ctrl_attr_22        	  NUMBER,
6132  x_ineff_ctrl_attr_23        	  NUMBER,
6133  x_ineff_ctrl_attr_24         	 NUMBER,
6134  x_ineff_ctrl_attr_25        	  NUMBER,
6135  x_ineff_ctrl_attr_26        	  NUMBER,
6136  x_ineff_ctrl_attr_27        	  NUMBER,
6137  x_ineff_ctrl_attr_28        	  NUMBER,
6138  x_ineff_ctrl_attr_29        	  NUMBER,
6139  x_ineff_ctrl_attr_30        	  NUMBER,
6140  x_last_updated_by           	 NUMBER,
6141  x_last_update_date          	 DATE ,
6142  x_last_update_login         	 NUMBER,
6143 x_eval_ctrl_attr_1         	  NUMBER,
6144 x_eval_ctrl_attr_2         	  NUMBER,
6145 x_eval_ctrl_attr_3         	  NUMBER,
6146 x_eval_ctrl_attr_4         	  NUMBER,
6147 x_eval_ctrl_attr_5         	  NUMBER,
6148 x_eval_ctrl_attr_6         	  NUMBER,
6149 x_eval_ctrl_attr_7         	  NUMBER,
6150 x_eval_ctrl_attr_8         	  NUMBER,
6151 x_eval_ctrl_attr_9         	  NUMBER,
6152 x_eval_ctrl_attr_10        	  NUMBER,
6153 x_eval_ctrl_attr_11         	  NUMBER,
6154 x_eval_ctrl_attr_12         	  NUMBER,
6155 x_eval_ctrl_attr_13         	  NUMBER,
6156 x_eval_ctrl_attr_14         	  NUMBER,
6157 x_eval_ctrl_attr_15         	  NUMBER,
6158 x_eval_ctrl_attr_16         	  NUMBER,
6159 x_eval_ctrl_attr_17         	  NUMBER,
6160 x_eval_ctrl_attr_18         	  NUMBER,
6161 x_eval_ctrl_attr_19         	  NUMBER,
6162 x_eval_ctrl_attr_20        	  NUMBER,
6163 x_eval_ctrl_attr_21         	  NUMBER,
6164 x_eval_ctrl_attr_22         	  NUMBER,
6165 x_eval_ctrl_attr_23         	  NUMBER,
6166 x_eval_ctrl_attr_24         	  NUMBER,
6167 x_eval_ctrl_attr_25         	  NUMBER,
6168 x_eval_ctrl_attr_26         	  NUMBER,
6169 x_eval_ctrl_attr_27         	  NUMBER,
6170 x_eval_ctrl_attr_28         	  NUMBER,
6171 x_eval_ctrl_attr_29         	  NUMBER,
6172 x_eval_ctrl_attr_30        	  NUMBER
6173 ) is
6174 
6175 begin
6176 declare
6177  var_fin_certification_id  number;
6178 
6179  begin
6180 
6181  --******************************************************************************************************
6182  -- NOTE: The values in x_ineff_ctrl_attr_(1 .. 30) may be +1 or -1 depending on the change_flag b or f respectively
6183  --******************************************************************************************************
6184 
6185 
6186 
6187 
6188   UPDATE
6189     amw_fin_cert_ctrl_sum
6190   SET
6191       ineff_ctrl_attr_1=  x_ineff_ctrl_attr_1
6192      ,ineff_ctrl_attr_2 = x_ineff_ctrl_attr_2
6193      ,ineff_ctrl_attr_3=  x_ineff_ctrl_attr_3
6194      ,ineff_ctrl_attr_4=  x_ineff_ctrl_attr_4
6195      ,ineff_ctrl_attr_5=  x_ineff_ctrl_attr_5
6196      ,ineff_ctrl_attr_6=  x_ineff_ctrl_attr_6
6197      ,ineff_ctrl_attr_7=  x_ineff_ctrl_attr_7
6198      ,ineff_ctrl_attr_8=  x_ineff_ctrl_attr_8
6199      ,ineff_ctrl_attr_9=  x_ineff_ctrl_attr_9
6200      ,ineff_ctrl_attr_10= x_ineff_ctrl_attr_10
6201      ,ineff_ctrl_attr_11= x_ineff_ctrl_attr_11
6202      ,ineff_ctrl_attr_12= x_ineff_ctrl_attr_12
6203      ,ineff_ctrl_attr_13= x_ineff_ctrl_attr_13
6204      ,ineff_ctrl_attr_14= x_ineff_ctrl_attr_14
6205      ,ineff_ctrl_attr_15= x_ineff_ctrl_attr_15
6206      ,ineff_ctrl_attr_16= x_ineff_ctrl_attr_16
6207      ,ineff_ctrl_attr_17= x_ineff_ctrl_attr_17
6208      ,ineff_ctrl_attr_18= x_ineff_ctrl_attr_18
6209      ,ineff_ctrl_attr_19= x_ineff_ctrl_attr_19
6210      ,ineff_ctrl_attr_20= x_ineff_ctrl_attr_20
6211      ,ineff_ctrl_attr_21= x_ineff_ctrl_attr_21
6212      ,ineff_ctrl_attr_22= x_ineff_ctrl_attr_22
6213      ,ineff_ctrl_attr_23= x_ineff_ctrl_attr_23
6214      ,ineff_ctrl_attr_24= x_ineff_ctrl_attr_24
6215      ,ineff_ctrl_attr_25= x_ineff_ctrl_attr_25
6216      ,ineff_ctrl_attr_26= x_ineff_ctrl_attr_26
6217      ,ineff_ctrl_attr_27= x_ineff_ctrl_attr_27
6218      ,ineff_ctrl_attr_28= x_ineff_ctrl_attr_28
6219      ,ineff_ctrl_attr_29= x_ineff_ctrl_attr_29
6220      ,ineff_ctrl_attr_30= x_ineff_ctrl_attr_30,
6221      eval_ctrl_attr_1    =	nvl(eval_ctrl_attr_1,0) + x_eval_ctrl_attr_1  ,
6222      eval_ctrl_attr_2    =	nvl(eval_ctrl_attr_2,0) + x_eval_ctrl_attr_2  ,
6223      eval_ctrl_attr_3    =	nvl(eval_ctrl_attr_3,0) + x_eval_ctrl_attr_3  ,
6224      eval_ctrl_attr_4    =	nvl(eval_ctrl_attr_4,0) + x_eval_ctrl_attr_4  ,
6225      eval_ctrl_attr_5    =	nvl(eval_ctrl_attr_5,0) + x_eval_ctrl_attr_5  ,
6226      eval_ctrl_attr_6    =	nvl(eval_ctrl_attr_6,0) + x_eval_ctrl_attr_6  ,
6227      eval_ctrl_attr_7    =	nvl(eval_ctrl_attr_7,0) + x_eval_ctrl_attr_7  ,
6228      eval_ctrl_attr_8    =	nvl(eval_ctrl_attr_8,0) + x_eval_ctrl_attr_8  ,
6229      eval_ctrl_attr_9    =	nvl(eval_ctrl_attr_9,0) + x_eval_ctrl_attr_9  ,
6230      eval_ctrl_attr_10   =	nvl(eval_ctrl_attr_10,0) +  x_eval_ctrl_attr_10  ,
6231      eval_ctrl_attr_11    =	nvl(eval_ctrl_attr_11,0) + x_eval_ctrl_attr_11  ,
6232      eval_ctrl_attr_12    =	nvl(eval_ctrl_attr_12,0) + x_eval_ctrl_attr_12  ,
6233      eval_ctrl_attr_13    =	nvl(eval_ctrl_attr_13,0) + x_eval_ctrl_attr_13  ,
6234      eval_ctrl_attr_14    =	nvl(eval_ctrl_attr_14,0) + x_eval_ctrl_attr_14  ,
6235      eval_ctrl_attr_15    =	nvl(eval_ctrl_attr_15,0) + x_eval_ctrl_attr_15  ,
6236      eval_ctrl_attr_16    =	nvl(eval_ctrl_attr_16,0) + x_eval_ctrl_attr_16  ,
6237      eval_ctrl_attr_17    =	nvl(eval_ctrl_attr_17,0) + x_eval_ctrl_attr_17  ,
6238      eval_ctrl_attr_18    =	nvl(eval_ctrl_attr_18,0) + x_eval_ctrl_attr_18  ,
6239      eval_ctrl_attr_19    =	nvl(eval_ctrl_attr_19,0) + x_eval_ctrl_attr_19  ,
6240      eval_ctrl_attr_20   =	nvl(eval_ctrl_attr_20,0) +  x_eval_ctrl_attr_20  ,
6241      eval_ctrl_attr_21  =	nvl(eval_ctrl_attr_21,0) + x_eval_ctrl_attr_21  ,
6242      eval_ctrl_attr_22    =	nvl(eval_ctrl_attr_22,0) + x_eval_ctrl_attr_22  ,
6243      eval_ctrl_attr_23    =	nvl(eval_ctrl_attr_23,0) + x_eval_ctrl_attr_23  ,
6244      eval_ctrl_attr_24    =	nvl(eval_ctrl_attr_24,0) + x_eval_ctrl_attr_24  ,
6245      eval_ctrl_attr_25    =	nvl(eval_ctrl_attr_25,0) + x_eval_ctrl_attr_25  ,
6246      eval_ctrl_attr_26    =	nvl(eval_ctrl_attr_26,0) + x_eval_ctrl_attr_26  ,
6247      eval_ctrl_attr_27    =	nvl(eval_ctrl_attr_27,0) + x_eval_ctrl_attr_27  ,
6248      eval_ctrl_attr_28    =	nvl(eval_ctrl_attr_28,0) + x_eval_ctrl_attr_28  ,
6249      eval_ctrl_attr_29    =	nvl(eval_ctrl_attr_29,0) + x_eval_ctrl_attr_29  ,
6250      eval_ctrl_attr_30   =	nvl(eval_ctrl_attr_30,0) + x_eval_ctrl_attr_30
6251      ,ineff_ctrl_prcnt_1=  round((x_ineff_ctrl_attr_1	 /  decode(total_ctrl_attr_1,null,1,0,1,total_ctrl_attr_1) ) * 100,0)
6252      ,ineff_ctrl_prcnt_2 = round((x_ineff_ctrl_attr_2	 /  decode(total_ctrl_attr_2,null,1,0,1,total_ctrl_attr_2) ) * 100,0)
6253      ,ineff_ctrl_prcnt_3=  round((x_ineff_ctrl_attr_3	 /  decode(total_ctrl_attr_3,null,1,0,1,total_ctrl_attr_3) ) * 100,0)
6254      ,ineff_ctrl_prcnt_4=  round((x_ineff_ctrl_attr_4	 /  decode(total_ctrl_attr_4,null,1,0,1,total_ctrl_attr_4) ) * 100,0)
6255      ,ineff_ctrl_prcnt_5=  round((x_ineff_ctrl_attr_5	 /  decode(total_ctrl_attr_5,null,1,0,1,total_ctrl_attr_5) ) * 100,0)
6256      ,ineff_ctrl_prcnt_6=  round((x_ineff_ctrl_attr_6	 /  decode(total_ctrl_attr_6,null,1,0,1,total_ctrl_attr_6) ) * 100,0)
6257      ,ineff_ctrl_prcnt_7=  round((x_ineff_ctrl_attr_7	 /  decode(total_ctrl_attr_7,null,1,0,1,total_ctrl_attr_7) ) * 100,0)
6258      ,ineff_ctrl_prcnt_8=  round((x_ineff_ctrl_attr_8	 /  decode(total_ctrl_attr_8,null,1,0,1,total_ctrl_attr_8) ) * 100,0)
6259      ,ineff_ctrl_prcnt_9=  round((x_ineff_ctrl_attr_9	 /  decode(total_ctrl_attr_9,null,1,0,1,total_ctrl_attr_9) ) * 100,0)
6260      ,ineff_ctrl_prcnt_10= round((x_ineff_ctrl_attr_10 /  decode(total_ctrl_attr_10,null,1,0,1,total_ctrl_attr_10) ) * 100,0)
6261      ,ineff_ctrl_prcnt_11= round((x_ineff_ctrl_attr_11 /  decode(total_ctrl_attr_11,null,1,0,1,total_ctrl_attr_11) ) * 100,0)
6262      ,ineff_ctrl_prcnt_12= round((x_ineff_ctrl_attr_12 /  decode(total_ctrl_attr_12,null,1,0,1,total_ctrl_attr_12) ) * 100,0)
6263      ,ineff_ctrl_prcnt_13= round((x_ineff_ctrl_attr_13 /  decode(total_ctrl_attr_13,null,1,0,1,total_ctrl_attr_13) ) * 100,0)
6264      ,ineff_ctrl_prcnt_14= round((x_ineff_ctrl_attr_14 /  decode(total_ctrl_attr_14,null,1,0,1,total_ctrl_attr_14) ) * 100,0)
6265      ,ineff_ctrl_prcnt_15= round((x_ineff_ctrl_attr_15 /  decode(total_ctrl_attr_15,null,1,0,1,total_ctrl_attr_15) ) * 100,0)
6266      ,ineff_ctrl_prcnt_16= round((x_ineff_ctrl_attr_16 /  decode(total_ctrl_attr_16,null,1,0,1,total_ctrl_attr_16) ) * 100,0)
6267      ,ineff_ctrl_prcnt_17= round((x_ineff_ctrl_attr_17 /  decode(total_ctrl_attr_17,null,1,0,1,total_ctrl_attr_17) ) * 100,0)
6268      ,ineff_ctrl_prcnt_18= round((x_ineff_ctrl_attr_18 /  decode(total_ctrl_attr_18,null,1,0,1,total_ctrl_attr_18) ) * 100,0)
6269      ,ineff_ctrl_prcnt_19= round((x_ineff_ctrl_attr_19 /  decode(total_ctrl_attr_19,null,1,0,1,total_ctrl_attr_19) ) * 100,0)
6270      ,ineff_ctrl_prcnt_20= round((x_ineff_ctrl_attr_20 /  decode(total_ctrl_attr_20,null,1,0,1,total_ctrl_attr_20) ) * 100,0)
6271      ,ineff_ctrl_prcnt_21= round((x_ineff_ctrl_attr_21 /  decode(total_ctrl_attr_21,null,1,0,1,total_ctrl_attr_21) ) * 100,0)
6272      ,ineff_ctrl_prcnt_22= round((x_ineff_ctrl_attr_22 /  decode(total_ctrl_attr_22,null,1,0,1,total_ctrl_attr_22) ) * 100,0)
6273      ,ineff_ctrl_prcnt_23= round((x_ineff_ctrl_attr_23 /  decode(total_ctrl_attr_23,null,1,0,1,total_ctrl_attr_23) ) * 100,0)
6274      ,ineff_ctrl_prcnt_24= round((x_ineff_ctrl_attr_24 /  decode(total_ctrl_attr_24,null,1,0,1,total_ctrl_attr_24) ) * 100,0)
6275      ,ineff_ctrl_prcnt_25= round((x_ineff_ctrl_attr_25 /  decode(total_ctrl_attr_25,null,1,0,1,total_ctrl_attr_25) ) * 100,0)
6276      ,ineff_ctrl_prcnt_26= round((x_ineff_ctrl_attr_26 /  decode(total_ctrl_attr_26,null,1,0,1,total_ctrl_attr_26) ) * 100,0)
6277      ,ineff_ctrl_prcnt_27= round((x_ineff_ctrl_attr_27 /  decode(total_ctrl_attr_27,null,1,0,1,total_ctrl_attr_27) ) * 100,0)
6278      ,ineff_ctrl_prcnt_28= round((x_ineff_ctrl_attr_28 /  decode(total_ctrl_attr_28,null,1,0,1,total_ctrl_attr_28) ) * 100,0)
6279      ,ineff_ctrl_prcnt_29= round((x_ineff_ctrl_attr_29 /  decode(total_ctrl_attr_29,null,1,0,1,total_ctrl_attr_29) ) * 100,0)
6280      ,ineff_ctrl_prcnt_30= round((x_ineff_ctrl_attr_30 /  decode(total_ctrl_attr_30,null,1,0,1,total_ctrl_attr_30) ) * 100,0)
6281      ,last_updated_by           =  x_last_updated_by           ,
6282      last_update_date          =  x_last_update_date          ,
6283      last_update_login         = x_last_update_login
6284      ,object_version_number = object_version_number +1
6285 where
6286  fin_certification_id = x_fin_certification_id and
6287  account_group_id =  x_account_group_id        and
6288  natural_account_id  =  x_natural_account_id   and
6289  CTRL_ATTRIBUTE_TYPE =  x_ctrl_attribute_type  and
6290  object_type	= x_object_type       ;
6291 
6292 /* EXCEPTION
6293   WHEN OTHERS THEN
6294  fnd_file.put_line(fnd_file.LOG, SUBSTR (SQLERRM, 1, 2000));
6295   fnd_file.put_line(fnd_file.LOG, 'natural_account_id' || x_natural_account_id );
6296  fnd_file.put_line(fnd_file.LOG,  'financial_item_id' || x_financial_item_id);
6297  fnd_file.put_line(fnd_file.LOG,  'fin_certification_id  ' || x_fin_certification_id  );
6298 
6299 
6300  RAISE ;
6301  RETURN; */
6302 
6303 end;
6304 end UPDATE_FIN_ACC_ROW;
6305 
6306 -- ****************************************** Business Event Subscription for Account Assertion ---------------
6307  PROCEDURE update_acc_assert_flags
6308 ( P_ACCOUNT_ID        number ) is
6309 
6310 
6311 begin
6312 declare
6313 
6314 
6315  ctr integer :=0;
6316  max_num_of_codes integer :=0;
6317  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_ASSERTIONS';
6318 
6319  m_assertions_code component_code_array;
6320  m_acc_assert_flag component_code_array;
6321  m_total_control  total_control_array ;
6322 
6323  m_cert_id number ;
6324 
6325  m_ineff_control  ineff_control_array ;
6326 
6327  v_ASSERTION_CODE varchar2(30);
6328  m_display_flag varchar2(1) := 'N';
6329 
6330  g_user_id              NUMBER        := fnd_global.user_id;
6331  g_login_id             NUMBER        := fnd_global.conc_login_id;
6332  g_errbuf               VARCHAR2(2000) := null;
6333  g_retcode              VARCHAR2(2)    :=  '0';
6334 
6335 -- *************** Currsor to get all Control for the account being Passed ********** --
6336 /*
6337 cursor ACC_ASSERT_CODES
6338  is
6339 select
6340 ASSERTION_CODE
6341 from
6342 amw_account_assertions
6343 where
6344 NATURAL_ACCOUNT_ID =P_ACCOUNT_ID  ;
6345 */
6346 
6347 
6348 M_ACCOUNT_GROUP_ID number :=0;
6349 
6350 cursor ACC_ASSERT_CODES
6351  is
6352 select
6353 distinct
6354 ASSERTION_CODE
6355 from
6356 amw_account_assertions
6357 where
6358 ((NATURAL_ACCOUNT_ID =P_ACCOUNT_ID) or (NATURAL_ACCOUNT_ID in (select CHILD_NATURAL_ACCOUNT_ID from amw_fin_key_acct_flat
6359 where  PARENT_NATURAL_ACCOUNT_ID  =P_ACCOUNT_ID and ACCOUNT_GROUP_ID=M_ACCOUNT_GROUP_ID)));
6360 
6361 -----------------------------------------------------------------------------------------
6362 
6363 M_STATEMENT_GROUP_ID NUMBER :=0;
6364 M_STATEMENT_ID NUMBER :=0;
6365 
6366 cursor getAccGroupID IS
6367 select  distinct ACCOUNT_GROUP_ID from   AMW_FIN_ITEMS_KEY_ACC where   STATEMENT_GROUP_ID = M_STATEMENT_GROUP_ID
6368 and FINANCIAL_STATEMENT_ID = M_STATEMENT_ID;
6369 
6370 --------------------------------------------------------------------------------------------
6371 cursor existing_codes
6372 is
6373  select
6374  distinct
6375    cert.certification_id ,
6376    cert.STATEMENT_GROUP_ID,
6377    cert.FINANCIAL_STATEMENT_ID,
6378    ctrl_attr_code_1,
6379    ctrl_attr_code_2,
6380    ctrl_attr_code_3,
6381    ctrl_attr_code_4,
6382    ctrl_attr_code_5,
6383    ctrl_attr_code_6,
6384    ctrl_attr_code_7,
6385    ctrl_attr_code_8,
6386    ctrl_attr_code_9,
6387    ctrl_attr_code_10,
6388    ctrl_attr_code_11,
6389    ctrl_attr_code_12,
6390    ctrl_attr_code_13,
6391    ctrl_attr_code_14,
6392    ctrl_attr_code_15,
6393    ctrl_attr_code_16,
6394    ctrl_attr_code_17,
6395    ctrl_attr_code_18,
6396    ctrl_attr_code_19,
6397    ctrl_attr_code_20,
6398    ctrl_attr_code_21,
6399    ctrl_attr_code_22,
6400    ctrl_attr_code_23,
6401    ctrl_attr_code_24,
6402    ctrl_attr_code_25,
6403    ctrl_attr_code_26,
6404    ctrl_attr_code_27,
6405    ctrl_attr_code_28,
6406    ctrl_attr_code_29,
6407    ctrl_attr_code_30,
6408    ineff_ctrl_attr_1,
6409    ineff_ctrl_attr_2,
6410    ineff_ctrl_attr_3,
6411    ineff_ctrl_attr_4,
6412    ineff_ctrl_attr_5,
6413    ineff_ctrl_attr_6,
6414    ineff_ctrl_attr_7,
6415    ineff_ctrl_attr_8,
6416    ineff_ctrl_attr_9,
6417    ineff_ctrl_attr_10,
6418    ineff_ctrl_attr_11,
6419    ineff_ctrl_attr_12,
6420    ineff_ctrl_attr_13,
6421    ineff_ctrl_attr_14,
6422    ineff_ctrl_attr_15,
6423    ineff_ctrl_attr_16,
6424    ineff_ctrl_attr_17,
6425    ineff_ctrl_attr_18,
6426    ineff_ctrl_attr_19,
6427    ineff_ctrl_attr_20,
6428    ineff_ctrl_attr_21,
6429    ineff_ctrl_attr_22,
6430    ineff_ctrl_attr_23,
6431    ineff_ctrl_attr_24,
6432    ineff_ctrl_attr_25,
6433    ineff_ctrl_attr_26,
6434    ineff_ctrl_attr_27,
6435    ineff_ctrl_attr_28,
6436    ineff_ctrl_attr_29,
6437    ineff_ctrl_attr_30,
6438  total_ctrl_attr_1,
6439  total_ctrl_attr_2,
6440  total_ctrl_attr_3,
6441  total_ctrl_attr_4,
6442  total_ctrl_attr_5,
6443  total_ctrl_attr_6,
6444  total_ctrl_attr_7,
6445  total_ctrl_attr_8,
6446  total_ctrl_attr_9,
6447  total_ctrl_attr_10,
6448  total_ctrl_attr_11,
6449  total_ctrl_attr_12,
6450  total_ctrl_attr_13,
6451  total_ctrl_attr_14,
6452  total_ctrl_attr_15,
6453  total_ctrl_attr_16,
6454  total_ctrl_attr_17,
6455  total_ctrl_attr_18,
6456  total_ctrl_attr_19,
6457  total_ctrl_attr_20,
6458  total_ctrl_attr_21,
6459  total_ctrl_attr_22,
6460  total_ctrl_attr_23,
6461  total_ctrl_attr_24,
6462  total_ctrl_attr_25,
6463  total_ctrl_attr_26,
6464  total_ctrl_attr_27,
6465  total_ctrl_attr_28,
6466  total_ctrl_attr_29,
6467  total_ctrl_attr_30
6468 from
6469   amw_certification_vl cert,
6470  amw_fin_cert_ctrl_sum ctrlsum
6471 where
6472  cert.certification_id = ctrlsum.fin_certification_id and
6473  ctrl_attribute_type = 'CTRL_ASSERTIONS'
6474 and
6475 (CERTIFICATION_STATUS= 'ACTIVE' or CERTIFICATION_STATUS= 'DRAFT')
6476 and cert.OBJECT_TYPE ='FIN_STMT' AND
6477 ctrlsum.OBJECT_TYPE='ACCOUNT' AND
6478 ctrlsum.NATURAL_ACCOUNT_ID=P_ACCOUNT_ID ;
6479 
6480 
6481 
6482 
6483 BEGIN
6484 
6485  --m_assertions_code := null;
6486  --ctr := 0;
6487 
6488 
6489  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
6490 
6491  for load_current_codes in existing_codes
6492  loop
6493     exit when existing_codes%notfound;
6494 
6495     ctr :=  1;
6496 
6497     loop -- for each certification initialize the array
6498      EXIT WHEN ctr > 30;
6499 
6500       m_assertions_code(ctr) := null;
6501       m_acc_assert_flag(ctr) := 'I'; -- make ignore as the default and make it Y or N based on the interest of the Account on Assertion
6502       m_ineff_control(ctr) :=0;
6503       ctr := ctr + 1;
6504 
6505     end loop; --end of initialization
6506 
6507 
6508    m_assertions_code(1) :=  load_current_codes.ctrl_attr_code_1;
6509    m_assertions_code(2) :=  load_current_codes.ctrl_attr_code_2;
6510    m_assertions_code(3) :=  load_current_codes.ctrl_attr_code_3;
6511    m_assertions_code(4) :=   load_current_codes.ctrl_attr_code_4;
6512    m_assertions_code(5) :=load_current_codes.ctrl_attr_code_5;
6513    m_assertions_code(6) :=load_current_codes.ctrl_attr_code_6;
6514    m_assertions_code(7) :=load_current_codes.ctrl_attr_code_7;
6515    m_assertions_code(8) :=load_current_codes.ctrl_attr_code_8;
6516    m_assertions_code(9) :=load_current_codes.ctrl_attr_code_9;
6517    m_assertions_code(10) :=load_current_codes.ctrl_attr_code_10;
6518    m_assertions_code(11) :=load_current_codes.ctrl_attr_code_11;
6519    m_assertions_code(12) :=load_current_codes.ctrl_attr_code_12;
6520    m_assertions_code(13) :=load_current_codes.ctrl_attr_code_13;
6521    m_assertions_code(14) :=load_current_codes.ctrl_attr_code_14;
6522    m_assertions_code(15) :=load_current_codes.ctrl_attr_code_15;
6523    m_assertions_code(16) :=load_current_codes.ctrl_attr_code_16;
6524    m_assertions_code(17) :=load_current_codes.ctrl_attr_code_17;
6525    m_assertions_code(18) :=load_current_codes.ctrl_attr_code_18;
6526    m_assertions_code(19) :=load_current_codes.ctrl_attr_code_19;
6527    m_assertions_code(20) :=load_current_codes.ctrl_attr_code_20;
6528    m_assertions_code(21) :=load_current_codes.ctrl_attr_code_21;
6529    m_assertions_code(22) :=load_current_codes.ctrl_attr_code_22;
6530    m_assertions_code(23) :=load_current_codes.ctrl_attr_code_23;
6531    m_assertions_code(24) :=load_current_codes.ctrl_attr_code_24;
6532    m_assertions_code(25) :=load_current_codes.ctrl_attr_code_25;
6533    m_assertions_code(26) :=load_current_codes.ctrl_attr_code_26;
6534    m_assertions_code(27) :=load_current_codes.ctrl_attr_code_27;
6535    m_assertions_code(28) :=load_current_codes.ctrl_attr_code_28;
6536    m_assertions_code(29) :=load_current_codes.ctrl_attr_code_29;
6537    m_assertions_code(30) :=load_current_codes.ctrl_attr_code_30;
6538 
6539    m_ineff_control(1) :=  load_current_codes.ineff_ctrl_attr_1;
6540    m_ineff_control(2) :=  load_current_codes.ineff_ctrl_attr_2;
6541    m_ineff_control(3) :=  load_current_codes.ineff_ctrl_attr_3;
6542    m_ineff_control(4) :=   load_current_codes.ineff_ctrl_attr_4;
6543    m_ineff_control(5) :=load_current_codes.ineff_ctrl_attr_5;
6544    m_ineff_control(6) :=load_current_codes.ineff_ctrl_attr_6;
6545    m_ineff_control(7) :=load_current_codes.ineff_ctrl_attr_7;
6546    m_ineff_control(8) :=load_current_codes.ineff_ctrl_attr_8;
6547    m_ineff_control(9) :=load_current_codes.ineff_ctrl_attr_9;
6548    m_ineff_control(10) :=load_current_codes.ineff_ctrl_attr_10;
6549    m_ineff_control(11) :=load_current_codes.ineff_ctrl_attr_11;
6550    m_ineff_control(12) :=load_current_codes.ineff_ctrl_attr_12;
6551    m_ineff_control(13) :=load_current_codes.ineff_ctrl_attr_13;
6552    m_ineff_control(14) :=load_current_codes.ineff_ctrl_attr_14;
6553    m_ineff_control(15) :=load_current_codes.ineff_ctrl_attr_15;
6554    m_ineff_control(16) :=load_current_codes.ineff_ctrl_attr_16;
6555    m_ineff_control(17) :=load_current_codes.ineff_ctrl_attr_17;
6556    m_ineff_control(18) :=load_current_codes.ineff_ctrl_attr_18;
6557    m_ineff_control(19) :=load_current_codes.ineff_ctrl_attr_19;
6558    m_ineff_control(20) :=load_current_codes.ineff_ctrl_attr_20;
6559    m_ineff_control(21) :=load_current_codes.ineff_ctrl_attr_21;
6560    m_ineff_control(22) :=load_current_codes.ineff_ctrl_attr_22;
6561    m_ineff_control(23) :=load_current_codes.ineff_ctrl_attr_23;
6562    m_ineff_control(24) :=load_current_codes.ineff_ctrl_attr_24;
6563    m_ineff_control(25) :=load_current_codes.ineff_ctrl_attr_25;
6564    m_ineff_control(26) :=load_current_codes.ineff_ctrl_attr_26;
6565    m_ineff_control(27) :=load_current_codes.ineff_ctrl_attr_27;
6566    m_ineff_control(28) :=load_current_codes.ineff_ctrl_attr_28;
6567    m_ineff_control(29) :=load_current_codes.ineff_ctrl_attr_29;
6568    m_ineff_control(30) :=load_current_codes.ineff_ctrl_attr_30;
6569 
6570  m_total_control(1) := load_current_codes.total_ctrl_attr_1;
6571  m_total_control(2) :=  load_current_codes.total_ctrl_attr_2;
6572  m_total_control(3) := load_current_codes.total_ctrl_attr_3;
6573  m_total_control(4) := load_current_codes.total_ctrl_attr_4;
6574  m_total_control(5) := load_current_codes.total_ctrl_attr_5;
6575  m_total_control(6) := load_current_codes.total_ctrl_attr_6;
6576  m_total_control(7) := load_current_codes.total_ctrl_attr_7;
6577  m_total_control(8) := load_current_codes.total_ctrl_attr_8;
6578  m_total_control(9) := load_current_codes.total_ctrl_attr_9;
6579  m_total_control(10) := load_current_codes.total_ctrl_attr_10;
6580  m_total_control(11) := load_current_codes.total_ctrl_attr_11;
6581  m_total_control(12) := load_current_codes.total_ctrl_attr_12;
6582  m_total_control(13) := load_current_codes.total_ctrl_attr_13;
6583  m_total_control(14) := load_current_codes.total_ctrl_attr_14;
6584  m_total_control(15) := load_current_codes.total_ctrl_attr_15;
6585  m_total_control(16) := load_current_codes.total_ctrl_attr_16;
6586  m_total_control(17) := load_current_codes.total_ctrl_attr_17;
6587  m_total_control(18) := load_current_codes.total_ctrl_attr_18;
6588  m_total_control(19) := load_current_codes.total_ctrl_attr_19;
6589  m_total_control(20) := load_current_codes.total_ctrl_attr_20;
6590  m_total_control(21) := load_current_codes.total_ctrl_attr_21;
6591  m_total_control(22) := load_current_codes.total_ctrl_attr_22;
6592  m_total_control(23) := load_current_codes.total_ctrl_attr_23;
6593  m_total_control(24) := load_current_codes.total_ctrl_attr_24;
6594  m_total_control(25) := load_current_codes.total_ctrl_attr_25;
6595  m_total_control(26) := load_current_codes.total_ctrl_attr_26;
6596  m_total_control(27) := load_current_codes.total_ctrl_attr_27;
6597  m_total_control(28) := load_current_codes.total_ctrl_attr_28;
6598  m_total_control(29) := load_current_codes.total_ctrl_attr_29;
6599  m_total_control(30) := load_current_codes.total_ctrl_attr_30;
6600 
6601  m_cert_id :=load_current_codes.certification_id ;
6602  M_STATEMENT_GROUP_ID := load_current_codes.STATEMENT_GROUP_ID;
6603  M_STATEMENT_ID := load_current_codes.FINANCIAL_STATEMENT_ID;
6604  -------------------------------------------------------------------------------------
6605  --  JUST GET THE ACCOUNT GROUP FOR THE CERTIFICATION --
6606 
6607   for acc_group in getAccGroupID
6608   loop
6609       exit when getAccGroupID%notfound;
6610       M_ACCOUNT_GROUP_ID := acc_group.ACCOUNT_GROUP_ID ;
6611 
6612    end loop; --end of acc_group in getAccGroupID
6613 
6614   -------------------------------------------------------------
6615 
6616   for acc_assertions in ACC_ASSERT_CODES
6617   loop
6618       exit when ACC_ASSERT_CODES%notfound;
6619 
6620       ctr := 1;
6621       while ctr <=  30
6622       loop
6623           if (m_assertions_code(ctr) =  acc_assertions.ASSERTION_CODE  ) then
6624 
6625              if nvl(m_ineff_control(ctr),0) > 0  then
6626 
6627                    m_acc_assert_flag(ctr) := 'Y';
6628 
6629                 --************************************************************************************************** --
6630                 -- else if the assertion is important for one of the accounts of fin. Item and No controls exist for the
6631                 --  processes associated with the accounts then set the flag to 'Y', based on which an image will
6632                 --- appear in UI
6633                 --************************************************************************************************** --
6634 
6635                  elsif (nvl(m_total_control(ctr),0) = 0) then
6636 
6637                    m_acc_assert_flag(ctr) := 'Y';
6638 
6639 
6640                  --- ********** ie assertion is Not important for any of the accounts of fin. Item  and(nvl(m_total_control(ctr),0) > 0)
6641                  else
6642                     m_acc_assert_flag(ctr) := 'N';
6643 
6644                  end if;
6645 
6646 
6647              --m_acc_assert_flag(ctr) := 'Y';
6648              exit;
6649 
6650            end if;
6651            ctr := ctr +1;
6652       end loop;
6653    end loop; --end of acc_assertions in ACC_ASSERT_CODES
6654  ---------------------------------------------------------------------------------------------
6655 
6656     if set_flag_for_assertions( assert_acc_reln_exist=>  m_acc_assert_flag) then
6657 
6658         m_display_flag := 'Y';
6659      else
6660         m_display_flag := 'N';
6661      end if;
6662 
6663 
6664  ---------------------------------------------------------------------------------------------
6665 
6666     amw_fin_coso_views_pvt.UPDATE_CTRLSUM_FLAG(
6667      x_fin_certification_id       	=> 	m_cert_id   	,
6668      x_natural_account_id        	=> 	P_ACCOUNT_ID        	,
6669      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type       	,
6670      x_created_by                	=> 	g_user_id	,
6671      x_creation_date             	=> 	SYSDATE	,
6672      x_last_updated_by           	=> 	g_user_id	,
6673      x_last_update_date          	=> 	SYSDATE	,
6674      x_last_update_login         	=> 	g_login_id	,
6675     -- x_object_version_number     	=> 	null,
6676      x_acc_assert_flag1         	=> 	m_acc_assert_flag(1),
6677      x_acc_assert_flag2         	=> 	m_acc_assert_flag(2),
6678      x_acc_assert_flag3         	=> 	m_acc_assert_flag(3),
6679      x_acc_assert_flag4         	=> 	m_acc_assert_flag(4),
6680      x_acc_assert_flag5         	=> 	m_acc_assert_flag(5),
6681      x_acc_assert_flag6         	=> 	m_acc_assert_flag(6),
6682      x_acc_assert_flag7         	=> 	m_acc_assert_flag(7),
6683      x_acc_assert_flag8         	=> 	m_acc_assert_flag(8),
6684      x_acc_assert_flag9         	=> 	m_acc_assert_flag(9),
6685      x_acc_assert_flag10        	=> 	m_acc_assert_flag(10),
6686      x_acc_assert_flag11         	=> 	m_acc_assert_flag(11),
6687      x_acc_assert_flag12         	=> 	m_acc_assert_flag(12),
6688      x_acc_assert_flag13         	=> 	m_acc_assert_flag(13),
6689      x_acc_assert_flag14         	=> 	m_acc_assert_flag(14),
6690      x_acc_assert_flag15         	=> 	m_acc_assert_flag(15),
6691      x_acc_assert_flag16         	=> 	m_acc_assert_flag(16),
6692      x_acc_assert_flag17         	=> 	m_acc_assert_flag(17),
6693      x_acc_assert_flag18         	=> 	m_acc_assert_flag(18),
6694      x_acc_assert_flag19         	=> 	m_acc_assert_flag(19),
6695      x_acc_assert_flag20        	=> 	m_acc_assert_flag(20),
6696      x_acc_assert_flag21         	=> 	m_acc_assert_flag(21),
6697      x_acc_assert_flag22         	=> 	m_acc_assert_flag(22),
6698      x_acc_assert_flag23         	=> 	m_acc_assert_flag(23),
6699      x_acc_assert_flag24         	=> 	m_acc_assert_flag(24),
6700      x_acc_assert_flag25         	=> 	m_acc_assert_flag(25),
6701      x_acc_assert_flag26         	=> 	m_acc_assert_flag(26),
6702      x_acc_assert_flag27         	=> 	m_acc_assert_flag(27),
6703      x_acc_assert_flag28         	=> 	m_acc_assert_flag(28),
6704      x_acc_assert_flag29         	=> 	m_acc_assert_flag(29),
6705      x_acc_assert_flag30        	=> 	m_acc_assert_flag(30),
6706      x_display_flag                     =>      m_display_flag  );
6707 
6708  -------------------------------------------------------------------------------------
6709 
6710   amw_fin_coso_views_pvt.update_parentacc_assert_flags
6711   (P_ACCOUNT_ID        =>P_ACCOUNT_ID  ,
6712   P_CERTFICATION_ID => 	m_cert_id   	,
6713   P_ACCOUNT_GROUP_ID => M_ACCOUNT_GROUP_ID);
6714 
6715  -------------------------------------------------------------------------------------
6716 
6717   amw_fin_coso_views_pvt.update_item_assert_flags
6718   ( P_NATRL_ACCOUNT_ID => P_ACCOUNT_ID  );
6719 
6720  ---------------------------------------------------------------------------------------
6721  end loop; -- end of load_current_codes loop
6722 
6723  EXCEPTION
6724      WHEN NO_DATA_FOUND
6725 	     THEN
6726             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_Next_Level_Proc_Info'
6727                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
6728 
6729      WHEN OTHERS
6730          THEN
6731             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_Next_Level_Proc_Info'
6732                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
6733 
6734 ---COMMIT;
6735 end;
6736 end ; -- update_acc_assert_flags
6737 
6738 -- ************************************************************************************************************* --
6739 
6740 
6741 PROCEDURE update_item_assert_flags
6742 ( P_NATRL_ACCOUNT_ID        number ) is
6743 
6744 
6745 begin
6746 declare
6747 
6748 
6749  ctr integer :=0;
6750  max_num_of_codes integer :=0;
6751  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_ASSERTIONS';
6752 
6753  m_assertions_code component_code_array;
6754  m_acc_assert_flag component_code_array;
6755  m_total_control  total_control_array ;
6756 
6757  m_cert_id number ;
6758 m_fin_item_id number ;
6759  m_ineff_control  ineff_control_array ;
6760 m_display_flag varchar2(1) := 'N';
6761 
6762  v_ASSERTION_CODE varchar2(30);
6763 
6764  g_user_id              NUMBER        := fnd_global.user_id;
6765  g_login_id             NUMBER        := fnd_global.conc_login_id;
6766  g_errbuf               VARCHAR2(2000) := null;
6767  g_retcode              VARCHAR2(2)    :=  '0';
6768 
6769 
6770 ----------------------------------------------------------------------------------------------------------
6771 -- First find out all the Financial Certifications (Not Closed) and the Financial Items in that which are
6772 -- assoicated with the account (then in another cursor select all the accounts for the financial items and
6773 -- then get the Assertion Codes. (e.g an Assertion might have been removed from the Account but its parent
6774 -- financial item might still have anothe account which has mapped to that assertion, in which case the Image
6775 -- flags has to be maintened. If no Accounts mapped to the Item have association to the assertion then that
6776 -- column can be updated with ignore flag. For a Financial Item, this cannot be derived only by looking at
6777 -- the account - assertion being changed.
6778 ----------------------------------------------------------------------------------------------------------
6779 cursor existing_codes
6780 is
6781  select
6782  distinct
6783    cert.certification_id ,
6784    ctrlsum.financial_item_id,
6785    ctrl_attr_code_1,
6786    ctrl_attr_code_2,
6787    ctrl_attr_code_3,
6788    ctrl_attr_code_4,
6789    ctrl_attr_code_5,
6790    ctrl_attr_code_6,
6791    ctrl_attr_code_7,
6792    ctrl_attr_code_8,
6793    ctrl_attr_code_9,
6794    ctrl_attr_code_10,
6795    ctrl_attr_code_11,
6796    ctrl_attr_code_12,
6797    ctrl_attr_code_13,
6798    ctrl_attr_code_14,
6799    ctrl_attr_code_15,
6800    ctrl_attr_code_16,
6801    ctrl_attr_code_17,
6802    ctrl_attr_code_18,
6803    ctrl_attr_code_19,
6804    ctrl_attr_code_20,
6805    ctrl_attr_code_21,
6806    ctrl_attr_code_22,
6807    ctrl_attr_code_23,
6808    ctrl_attr_code_24,
6809    ctrl_attr_code_25,
6810    ctrl_attr_code_26,
6811    ctrl_attr_code_27,
6812    ctrl_attr_code_28,
6813    ctrl_attr_code_29,
6814    ctrl_attr_code_30,
6815    ineff_ctrl_attr_1,
6816    ineff_ctrl_attr_2,
6817    ineff_ctrl_attr_3,
6818    ineff_ctrl_attr_4,
6819    ineff_ctrl_attr_5,
6820    ineff_ctrl_attr_6,
6821    ineff_ctrl_attr_7,
6822    ineff_ctrl_attr_8,
6823    ineff_ctrl_attr_9,
6824    ineff_ctrl_attr_10,
6825    ineff_ctrl_attr_11,
6826    ineff_ctrl_attr_12,
6827    ineff_ctrl_attr_13,
6828    ineff_ctrl_attr_14,
6829    ineff_ctrl_attr_15,
6830    ineff_ctrl_attr_16,
6831    ineff_ctrl_attr_17,
6832    ineff_ctrl_attr_18,
6833    ineff_ctrl_attr_19,
6834    ineff_ctrl_attr_20,
6835    ineff_ctrl_attr_21,
6836    ineff_ctrl_attr_22,
6837    ineff_ctrl_attr_23,
6838    ineff_ctrl_attr_24,
6839    ineff_ctrl_attr_25,
6840    ineff_ctrl_attr_26,
6841    ineff_ctrl_attr_27,
6842    ineff_ctrl_attr_28,
6843    ineff_ctrl_attr_29,
6844    ineff_ctrl_attr_30,
6845  total_ctrl_attr_1,
6846  total_ctrl_attr_2,
6847  total_ctrl_attr_3,
6848  total_ctrl_attr_4,
6849  total_ctrl_attr_5,
6850  total_ctrl_attr_6,
6851  total_ctrl_attr_7,
6852  total_ctrl_attr_8,
6853  total_ctrl_attr_9,
6854  total_ctrl_attr_10,
6855  total_ctrl_attr_11,
6856  total_ctrl_attr_12,
6857  total_ctrl_attr_13,
6858  total_ctrl_attr_14,
6859  total_ctrl_attr_15,
6860  total_ctrl_attr_16,
6861  total_ctrl_attr_17,
6862  total_ctrl_attr_18,
6863  total_ctrl_attr_19,
6864  total_ctrl_attr_20,
6865  total_ctrl_attr_21,
6866  total_ctrl_attr_22,
6867  total_ctrl_attr_23,
6868  total_ctrl_attr_24,
6869  total_ctrl_attr_25,
6870  total_ctrl_attr_26,
6871  total_ctrl_attr_27,
6872  total_ctrl_attr_28,
6873  total_ctrl_attr_29,
6874  total_ctrl_attr_30
6875 from
6876   amw_certification_vl cert,
6877  amw_fin_cert_ctrl_sum ctrlsum,
6878   amw_fin_cert_scope scope
6879 where
6880  cert.certification_id = ctrlsum.fin_certification_id and
6881  ctrl_attribute_type = 'CTRL_ASSERTIONS'
6882 and
6883 (CERTIFICATION_STATUS= 'ACTIVE' or CERTIFICATION_STATUS= 'DRAFT')
6884 and cert.OBJECT_TYPE ='FIN_STMT'
6885 and ctrlsum.object_type='FINANCIAL ITEM'
6886 and scope.fin_certification_id = ctrlsum.fin_certification_id
6887 and scope.NATURAL_ACCOUNT_ID = P_NATRL_ACCOUNT_ID
6888 AND SCOPE.financial_item_id = ctrlsum.financial_item_id ;
6889 
6890 -- *************** Currsor to get all Control for the Fianancial Item being Passed ********** --
6891 
6892 
6893 cursor ACC_ASSERT_FOR_FIN_ITEM(P_CERTIFICATION_ID  NUMBER, P_FINANCIAL_ITEM_ID NUMBER)
6894  is
6895 select DISTINCT
6896 ASSERTION_CODE
6897 from
6898 amw_account_assertions
6899 where
6900 NATURAL_ACCOUNT_ID IN
6901 (select DISTINCT NATURAL_ACCOUNT_ID from amw_fin_cert_scope where fin_certification_id = P_CERTIFICATION_ID and
6902 financial_item_id = P_FINANCIAL_ITEM_ID  );
6903 ----------------------------------------------------------------------------------------------
6904 BEGIN
6905 
6906  --m_assertions_code := null;
6907  --ctr := 0;
6908 
6909 
6910  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
6911 
6912  for load_current_codes in existing_codes
6913  loop
6914     exit when existing_codes%notfound;
6915 
6916     ctr :=  1;
6917 
6918     loop -- for each certification initialize the array
6919      EXIT WHEN ctr > 30;
6920 
6921       m_assertions_code(ctr) := null;
6922       m_acc_assert_flag(ctr) := 'I'; -- make ignore as the default and make it Y or N based on the interest of the Account on Assertion
6923       m_ineff_control(ctr) :=0;
6924       ctr := ctr + 1;
6925 
6926     end loop; --end of initialization
6927 
6928 
6929    m_assertions_code(1) :=  load_current_codes.ctrl_attr_code_1;
6930    m_assertions_code(2) :=  load_current_codes.ctrl_attr_code_2;
6931    m_assertions_code(3) :=  load_current_codes.ctrl_attr_code_3;
6932    m_assertions_code(4) :=   load_current_codes.ctrl_attr_code_4;
6933    m_assertions_code(5) :=load_current_codes.ctrl_attr_code_5;
6934    m_assertions_code(6) :=load_current_codes.ctrl_attr_code_6;
6935    m_assertions_code(7) :=load_current_codes.ctrl_attr_code_7;
6936    m_assertions_code(8) :=load_current_codes.ctrl_attr_code_8;
6937    m_assertions_code(9) :=load_current_codes.ctrl_attr_code_9;
6938    m_assertions_code(10) :=load_current_codes.ctrl_attr_code_10;
6939    m_assertions_code(11) :=load_current_codes.ctrl_attr_code_11;
6940    m_assertions_code(12) :=load_current_codes.ctrl_attr_code_12;
6941    m_assertions_code(13) :=load_current_codes.ctrl_attr_code_13;
6942    m_assertions_code(14) :=load_current_codes.ctrl_attr_code_14;
6943    m_assertions_code(15) :=load_current_codes.ctrl_attr_code_15;
6944    m_assertions_code(16) :=load_current_codes.ctrl_attr_code_16;
6945    m_assertions_code(17) :=load_current_codes.ctrl_attr_code_17;
6946    m_assertions_code(18) :=load_current_codes.ctrl_attr_code_18;
6947    m_assertions_code(19) :=load_current_codes.ctrl_attr_code_19;
6948    m_assertions_code(20) :=load_current_codes.ctrl_attr_code_20;
6949    m_assertions_code(21) :=load_current_codes.ctrl_attr_code_21;
6950    m_assertions_code(22) :=load_current_codes.ctrl_attr_code_22;
6951    m_assertions_code(23) :=load_current_codes.ctrl_attr_code_23;
6952    m_assertions_code(24) :=load_current_codes.ctrl_attr_code_24;
6953    m_assertions_code(25) :=load_current_codes.ctrl_attr_code_25;
6954    m_assertions_code(26) :=load_current_codes.ctrl_attr_code_26;
6955    m_assertions_code(27) :=load_current_codes.ctrl_attr_code_27;
6956    m_assertions_code(28) :=load_current_codes.ctrl_attr_code_28;
6957    m_assertions_code(29) :=load_current_codes.ctrl_attr_code_29;
6958    m_assertions_code(30) :=load_current_codes.ctrl_attr_code_30;
6959 
6960    m_ineff_control(1) :=  load_current_codes.ineff_ctrl_attr_1;
6961    m_ineff_control(2) :=  load_current_codes.ineff_ctrl_attr_2;
6962    m_ineff_control(3) :=  load_current_codes.ineff_ctrl_attr_3;
6963    m_ineff_control(4) :=   load_current_codes.ineff_ctrl_attr_4;
6964    m_ineff_control(5) :=load_current_codes.ineff_ctrl_attr_5;
6965    m_ineff_control(6) :=load_current_codes.ineff_ctrl_attr_6;
6966    m_ineff_control(7) :=load_current_codes.ineff_ctrl_attr_7;
6967    m_ineff_control(8) :=load_current_codes.ineff_ctrl_attr_8;
6968    m_ineff_control(9) :=load_current_codes.ineff_ctrl_attr_9;
6969    m_ineff_control(10) :=load_current_codes.ineff_ctrl_attr_10;
6970    m_ineff_control(11) :=load_current_codes.ineff_ctrl_attr_11;
6971    m_ineff_control(12) :=load_current_codes.ineff_ctrl_attr_12;
6972    m_ineff_control(13) :=load_current_codes.ineff_ctrl_attr_13;
6973    m_ineff_control(14) :=load_current_codes.ineff_ctrl_attr_14;
6974    m_ineff_control(15) :=load_current_codes.ineff_ctrl_attr_15;
6975    m_ineff_control(16) :=load_current_codes.ineff_ctrl_attr_16;
6976    m_ineff_control(17) :=load_current_codes.ineff_ctrl_attr_17;
6977    m_ineff_control(18) :=load_current_codes.ineff_ctrl_attr_18;
6978    m_ineff_control(19) :=load_current_codes.ineff_ctrl_attr_19;
6979    m_ineff_control(20) :=load_current_codes.ineff_ctrl_attr_20;
6980    m_ineff_control(21) :=load_current_codes.ineff_ctrl_attr_21;
6981    m_ineff_control(22) :=load_current_codes.ineff_ctrl_attr_22;
6982    m_ineff_control(23) :=load_current_codes.ineff_ctrl_attr_23;
6983    m_ineff_control(24) :=load_current_codes.ineff_ctrl_attr_24;
6984    m_ineff_control(25) :=load_current_codes.ineff_ctrl_attr_25;
6985    m_ineff_control(26) :=load_current_codes.ineff_ctrl_attr_26;
6986    m_ineff_control(27) :=load_current_codes.ineff_ctrl_attr_27;
6987    m_ineff_control(28) :=load_current_codes.ineff_ctrl_attr_28;
6988    m_ineff_control(29) :=load_current_codes.ineff_ctrl_attr_29;
6989    m_ineff_control(30) :=load_current_codes.ineff_ctrl_attr_30;
6990 
6991  m_total_control(1) := load_current_codes.total_ctrl_attr_1;
6992  m_total_control(2) :=  load_current_codes.total_ctrl_attr_2;
6993  m_total_control(3) := load_current_codes.total_ctrl_attr_3;
6994  m_total_control(4) := load_current_codes.total_ctrl_attr_4;
6995  m_total_control(5) := load_current_codes.total_ctrl_attr_5;
6996  m_total_control(6) := load_current_codes.total_ctrl_attr_6;
6997  m_total_control(7) := load_current_codes.total_ctrl_attr_7;
6998  m_total_control(8) := load_current_codes.total_ctrl_attr_8;
6999  m_total_control(9) := load_current_codes.total_ctrl_attr_9;
7000  m_total_control(10) := load_current_codes.total_ctrl_attr_10;
7001  m_total_control(11) := load_current_codes.total_ctrl_attr_11;
7002  m_total_control(12) := load_current_codes.total_ctrl_attr_12;
7003  m_total_control(13) := load_current_codes.total_ctrl_attr_13;
7004  m_total_control(14) := load_current_codes.total_ctrl_attr_14;
7005  m_total_control(15) := load_current_codes.total_ctrl_attr_15;
7006  m_total_control(16) := load_current_codes.total_ctrl_attr_16;
7007  m_total_control(17) := load_current_codes.total_ctrl_attr_17;
7008  m_total_control(18) := load_current_codes.total_ctrl_attr_18;
7009  m_total_control(19) := load_current_codes.total_ctrl_attr_19;
7010  m_total_control(20) := load_current_codes.total_ctrl_attr_20;
7011  m_total_control(21) := load_current_codes.total_ctrl_attr_21;
7012  m_total_control(22) := load_current_codes.total_ctrl_attr_22;
7013  m_total_control(23) := load_current_codes.total_ctrl_attr_23;
7014  m_total_control(24) := load_current_codes.total_ctrl_attr_24;
7015  m_total_control(25) := load_current_codes.total_ctrl_attr_25;
7016  m_total_control(26) := load_current_codes.total_ctrl_attr_26;
7017  m_total_control(27) := load_current_codes.total_ctrl_attr_27;
7018  m_total_control(28) := load_current_codes.total_ctrl_attr_28;
7019  m_total_control(29) := load_current_codes.total_ctrl_attr_29;
7020  m_total_control(30) := load_current_codes.total_ctrl_attr_30;
7021 
7022 
7023    m_cert_id :=load_current_codes.certification_id ;
7024    m_fin_item_id := load_current_codes.financial_item_id;
7025 
7026 
7027  -------------------------------------------------------------------------------------
7028 
7029  end loop; -- end of load_current_codes loop
7030 
7031 
7032    for acc_assertions  in ACC_ASSERT_FOR_FIN_ITEM(m_cert_id , m_fin_item_id )
7033    loop
7034        exit when ACC_ASSERT_FOR_FIN_ITEM%notfound;
7035       ctr := 1;
7036       while ctr <=  30
7037       loop
7038           if (m_assertions_code(ctr) =  acc_assertions.ASSERTION_CODE  ) then
7039 
7040              if nvl(m_ineff_control(ctr),0) > 0  then
7041 
7042                    m_acc_assert_flag(ctr) := 'Y';
7043 
7044                 --************************************************************************************************** --
7045                 -- else if the assertion is important for one of the accounts of fin. Item and No controls exist for the
7046                 --  processes associated with the accounts then set the flag to 'Y', based on which an image will
7047                 --- appear in UI
7048                 --************************************************************************************************** --
7049 
7050                  elsif (nvl(m_total_control(ctr),0) = 0) then
7051 
7052                    m_acc_assert_flag(ctr) := 'Y';
7053 
7054 
7055                  --- ********** ie assertion is Not important for any of the accounts of fin. Item  and(nvl(m_total_control(ctr),0) > 0)
7056                  else
7057                     m_acc_assert_flag(ctr) := 'N';
7058 
7059                  end if;
7060 
7061 
7062              --m_acc_assert_flag(ctr) := 'Y';
7063              exit;
7064 
7065            end if;
7066            ctr := ctr +1;
7067       end loop;
7068    end loop; --end of acc_assertions in ACC_ASSERT_FOR_FIN_ITEM
7069  ---------------------------------------------------------------------------------------------
7070 
7071     if set_flag_for_assertions( assert_acc_reln_exist=>  m_acc_assert_flag) then
7072 
7073         m_display_flag := 'Y';
7074      else
7075         m_display_flag := 'N';
7076      end if;
7077 
7078 
7079  ---------------------------------------------------------------------------------------------
7080     amw_fin_coso_views_pvt.UPDATE_CTRLSUM_ITEM_FLAG(
7081      x_fin_certification_id       	=> 	m_cert_id   	,
7082      x_financial_item_id         	=> 	m_fin_item_id   		,
7083      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type ,
7084      x_created_by                	=> 	g_user_id	,
7085      x_creation_date             	=> 	SYSDATE	,
7086      x_last_updated_by           	=> 	g_user_id	,
7087      x_last_update_date          	=> 	SYSDATE	,
7088      x_last_update_login         	=> 	g_login_id	,
7089     -- x_object_version_number     	=> 	null,
7090      x_acc_assert_flag1         	=> 	m_acc_assert_flag(1),
7091      x_acc_assert_flag2         	=> 	m_acc_assert_flag(2),
7092      x_acc_assert_flag3         	=> 	m_acc_assert_flag(3),
7093      x_acc_assert_flag4         	=> 	m_acc_assert_flag(4),
7094      x_acc_assert_flag5         	=> 	m_acc_assert_flag(5),
7095      x_acc_assert_flag6         	=> 	m_acc_assert_flag(6),
7096      x_acc_assert_flag7         	=> 	m_acc_assert_flag(7),
7097      x_acc_assert_flag8         	=> 	m_acc_assert_flag(8),
7098      x_acc_assert_flag9         	=> 	m_acc_assert_flag(9),
7099      x_acc_assert_flag10        	=> 	m_acc_assert_flag(10),
7100      x_acc_assert_flag11         	=> 	m_acc_assert_flag(11),
7101      x_acc_assert_flag12         	=> 	m_acc_assert_flag(12),
7102      x_acc_assert_flag13         	=> 	m_acc_assert_flag(13),
7103      x_acc_assert_flag14         	=> 	m_acc_assert_flag(14),
7104      x_acc_assert_flag15         	=> 	m_acc_assert_flag(15),
7105      x_acc_assert_flag16         	=> 	m_acc_assert_flag(16),
7106      x_acc_assert_flag17         	=> 	m_acc_assert_flag(17),
7107      x_acc_assert_flag18         	=> 	m_acc_assert_flag(18),
7108      x_acc_assert_flag19         	=> 	m_acc_assert_flag(19),
7109      x_acc_assert_flag20        	=> 	m_acc_assert_flag(20),
7110      x_acc_assert_flag21         	=> 	m_acc_assert_flag(21),
7111      x_acc_assert_flag22         	=> 	m_acc_assert_flag(22),
7112      x_acc_assert_flag23         	=> 	m_acc_assert_flag(23),
7113      x_acc_assert_flag24         	=> 	m_acc_assert_flag(24),
7114      x_acc_assert_flag25         	=> 	m_acc_assert_flag(25),
7115      x_acc_assert_flag26         	=> 	m_acc_assert_flag(26),
7116      x_acc_assert_flag27         	=> 	m_acc_assert_flag(27),
7117      x_acc_assert_flag28         	=> 	m_acc_assert_flag(28),
7118      x_acc_assert_flag29         	=> 	m_acc_assert_flag(29),
7119      x_acc_assert_flag30        	=> 	m_acc_assert_flag(30),
7120      x_display_flag                     =>      m_display_flag  );
7121 
7122 
7123  EXCEPTION
7124      WHEN NO_DATA_FOUND
7125 	     THEN
7126             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_Next_Level_Proc_Info'
7127                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
7128 
7129      WHEN OTHERS
7130          THEN
7131             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_Next_Level_Proc_Info'
7132                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
7133 
7134 ---COMMIT;
7135 end;
7136 end ; -- update_item_assert_flags
7137 /* ******************************************* UPDATE_ACC_ASSERT_FLAG ************************************************************* */
7138 
7139 procedure UPDATE_CTRLSUM_ITEM_FLAG(
7140 
7141  x_fin_certification_id       	NUMBER  ,
7142  x_financial_item_id         	 NUMBER ,
7143  x_ctrl_attribute_type       	varchar2,
7144  x_created_by             number ,
7145  x_creation_date          date   	,
7146  x_last_updated_by        number   	,
7147  x_last_update_date       date,
7148  x_last_update_login      number   	,
7149  x_acc_assert_flag1         	  VARCHAR2,
7150  x_acc_assert_flag2         	  VARCHAR2,
7151  x_acc_assert_flag3         	  VARCHAR2,
7152  x_acc_assert_flag4         	  VARCHAR2,
7153  x_acc_assert_flag5         	  VARCHAR2,
7154  x_acc_assert_flag6         	  VARCHAR2,
7155  x_acc_assert_flag7         	  VARCHAR2,
7156  x_acc_assert_flag8         	  VARCHAR2,
7157  x_acc_assert_flag9         	  VARCHAR2,
7158  x_acc_assert_flag10        	  VARCHAR2,
7159  x_acc_assert_flag11         	  VARCHAR2,
7160  x_acc_assert_flag12         	  VARCHAR2,
7161  x_acc_assert_flag13         	  VARCHAR2,
7162  x_acc_assert_flag14         	  VARCHAR2,
7163  x_acc_assert_flag15         	  VARCHAR2,
7164  x_acc_assert_flag16         	  VARCHAR2,
7165  x_acc_assert_flag17         	  VARCHAR2,
7166  x_acc_assert_flag18         	  VARCHAR2,
7167  x_acc_assert_flag19         	  VARCHAR2,
7168  x_acc_assert_flag20        	  VARCHAR2,
7169  x_acc_assert_flag21         	  VARCHAR2,
7170  x_acc_assert_flag22         	  VARCHAR2,
7171  x_acc_assert_flag23         	  VARCHAR2,
7172  x_acc_assert_flag24         	  VARCHAR2,
7173  x_acc_assert_flag25         	  VARCHAR2,
7174  x_acc_assert_flag26         	  VARCHAR2,
7175  x_acc_assert_flag27         	  VARCHAR2,
7176  x_acc_assert_flag28         	  VARCHAR2,
7177  x_acc_assert_flag29         	  VARCHAR2,
7178  x_acc_assert_flag30        	  VARCHAR2,
7179  x_display_flag                   VARCHAR2
7180 ) is
7181 
7182 begin
7183 UPDATE
7184     amw_fin_cert_ctrl_sum
7185   SET
7186       acc_assert_flag_1=   x_acc_assert_flag1
7187      ,acc_assert_flag_2 =  x_acc_assert_flag2
7188      ,acc_assert_flag_3=   x_acc_assert_flag3
7189      ,acc_assert_flag_4=   x_acc_assert_flag4
7190      ,acc_assert_flag_5=   x_acc_assert_flag5
7191      ,acc_assert_flag_6=   x_acc_assert_flag6
7192      ,acc_assert_flag_7=   x_acc_assert_flag7
7193      ,acc_assert_flag_8=   x_acc_assert_flag8
7194      ,acc_assert_flag_9=   x_acc_assert_flag9
7195      ,acc_assert_flag_10=  x_acc_assert_flag10
7196      ,acc_assert_flag_11=  x_acc_assert_flag11
7197      ,acc_assert_flag_12=  x_acc_assert_flag12
7198      ,acc_assert_flag_13=  x_acc_assert_flag13
7199      ,acc_assert_flag_14=  x_acc_assert_flag14
7200      ,acc_assert_flag_15=  x_acc_assert_flag15
7201      ,acc_assert_flag_16=  x_acc_assert_flag16
7202      ,acc_assert_flag_17=  x_acc_assert_flag17
7203      ,acc_assert_flag_18=  x_acc_assert_flag18
7204      ,acc_assert_flag_19=  x_acc_assert_flag19
7205      ,acc_assert_flag_20=  x_acc_assert_flag20
7206      ,acc_assert_flag_21=  x_acc_assert_flag21
7207      ,acc_assert_flag_22=  x_acc_assert_flag22
7208      ,acc_assert_flag_23=  x_acc_assert_flag23
7209      ,acc_assert_flag_24=  x_acc_assert_flag24
7210      ,acc_assert_flag_25=  x_acc_assert_flag25
7211      ,acc_assert_flag_26=  x_acc_assert_flag26
7212      ,acc_assert_flag_27=  x_acc_assert_flag27
7213      ,acc_assert_flag_28=  x_acc_assert_flag28
7214      ,acc_assert_flag_29=  x_acc_assert_flag29
7215      ,acc_assert_flag_30=  x_acc_assert_flag30
7216      ,CONTROLS_EXIST_FLAG =x_display_flag
7217      ,last_updated_by           =  x_last_updated_by
7218      ,last_update_date          =  x_last_update_date
7219      ,last_update_login         = x_last_update_login
7220      ,object_version_number = object_version_number +1
7221 where
7222  fin_certification_id = x_fin_certification_id and
7223  financial_item_id         = x_financial_item_id and
7224  NVL(account_group_id, -1) = '-1' and
7225  nvl(natural_account_id, -1) = '-1'   and
7226  CTRL_ATTRIBUTE_TYPE =  x_ctrl_attribute_type       and
7227  object_type	= 'FINANCIAL ITEM' ;
7228 
7229 
7230 
7231 end UPDATE_CTRLSUM_ITEM_FLAG;
7232 
7233 
7234 
7235 /* ******************************************* UPDATE_ACC_ASSERT_FLAG ***************************************** */
7236 
7237 procedure UPDATE_CTRLSUM_FLAG(
7238  x_fin_certification_id       	NUMBER  ,
7239  x_natural_account_id        	 NUMBER,
7240  x_ctrl_attribute_type       	varchar2,
7241  x_created_by             number ,
7242  x_creation_date          date   	,
7243  x_last_updated_by        number   	,
7244  x_last_update_date       date,
7245  x_last_update_login      number   	,
7246  x_acc_assert_flag1         	  VARCHAR2,
7247  x_acc_assert_flag2         	  VARCHAR2,
7248  x_acc_assert_flag3         	  VARCHAR2,
7249  x_acc_assert_flag4         	  VARCHAR2,
7250  x_acc_assert_flag5         	  VARCHAR2,
7251  x_acc_assert_flag6         	  VARCHAR2,
7252  x_acc_assert_flag7         	  VARCHAR2,
7253  x_acc_assert_flag8         	  VARCHAR2,
7254  x_acc_assert_flag9         	  VARCHAR2,
7255  x_acc_assert_flag10        	  VARCHAR2,
7256  x_acc_assert_flag11         	  VARCHAR2,
7257  x_acc_assert_flag12         	  VARCHAR2,
7258  x_acc_assert_flag13         	  VARCHAR2,
7259  x_acc_assert_flag14         	  VARCHAR2,
7260  x_acc_assert_flag15         	  VARCHAR2,
7261  x_acc_assert_flag16         	  VARCHAR2,
7262  x_acc_assert_flag17         	  VARCHAR2,
7263  x_acc_assert_flag18         	  VARCHAR2,
7264  x_acc_assert_flag19         	  VARCHAR2,
7265  x_acc_assert_flag20        	  VARCHAR2,
7266  x_acc_assert_flag21         	  VARCHAR2,
7267  x_acc_assert_flag22         	  VARCHAR2,
7268  x_acc_assert_flag23         	  VARCHAR2,
7269  x_acc_assert_flag24         	  VARCHAR2,
7270  x_acc_assert_flag25         	  VARCHAR2,
7271  x_acc_assert_flag26         	  VARCHAR2,
7272  x_acc_assert_flag27         	  VARCHAR2,
7273  x_acc_assert_flag28         	  VARCHAR2,
7274  x_acc_assert_flag29         	  VARCHAR2,
7275  x_acc_assert_flag30        	  VARCHAR2,
7276  x_display_flag                   VARCHAR2
7277 
7278 ) is
7279 
7280 begin
7281 UPDATE
7282     amw_fin_cert_ctrl_sum
7283   SET
7284       acc_assert_flag_1=   x_acc_assert_flag1
7285      ,acc_assert_flag_2 =  x_acc_assert_flag2
7286      ,acc_assert_flag_3=   x_acc_assert_flag3
7287      ,acc_assert_flag_4=   x_acc_assert_flag4
7288      ,acc_assert_flag_5=   x_acc_assert_flag5
7289      ,acc_assert_flag_6=   x_acc_assert_flag6
7290      ,acc_assert_flag_7=   x_acc_assert_flag7
7291      ,acc_assert_flag_8=   x_acc_assert_flag8
7292      ,acc_assert_flag_9=   x_acc_assert_flag9
7293      ,acc_assert_flag_10=  x_acc_assert_flag10
7294      ,acc_assert_flag_11=  x_acc_assert_flag11
7295      ,acc_assert_flag_12=  x_acc_assert_flag12
7296      ,acc_assert_flag_13=  x_acc_assert_flag13
7297      ,acc_assert_flag_14=  x_acc_assert_flag14
7298      ,acc_assert_flag_15=  x_acc_assert_flag15
7299      ,acc_assert_flag_16=  x_acc_assert_flag16
7300      ,acc_assert_flag_17=  x_acc_assert_flag17
7301      ,acc_assert_flag_18=  x_acc_assert_flag18
7302      ,acc_assert_flag_19=  x_acc_assert_flag19
7303      ,acc_assert_flag_20=  x_acc_assert_flag20
7304      ,acc_assert_flag_21=  x_acc_assert_flag21
7305      ,acc_assert_flag_22=  x_acc_assert_flag22
7306      ,acc_assert_flag_23=  x_acc_assert_flag23
7307      ,acc_assert_flag_24=  x_acc_assert_flag24
7308      ,acc_assert_flag_25=  x_acc_assert_flag25
7309      ,acc_assert_flag_26=  x_acc_assert_flag26
7310      ,acc_assert_flag_27=  x_acc_assert_flag27
7311      ,acc_assert_flag_28=  x_acc_assert_flag28
7312      ,acc_assert_flag_29=  x_acc_assert_flag29
7313      ,acc_assert_flag_30=  x_acc_assert_flag30
7314      ,CONTROLS_EXIST_FLAG =x_display_flag
7315      ,last_updated_by           =  x_last_updated_by
7316      ,last_update_date          =  x_last_update_date
7317      ,last_update_login         = x_last_update_login
7318      ,object_version_number = object_version_number +1
7319 where
7320  fin_certification_id = x_fin_certification_id and
7321   natural_account_id  =  x_natural_account_id   and
7322   object_type	= 'ACCOUNT' and
7323   CTRL_ATTRIBUTE_TYPE = 'CTRL_ASSERTIONS';
7324 
7325 end UPDATE_CTRLSUM_FLAG;
7326 
7327 
7328 --*************************************************************************************************************
7329 FUNCTION take_new_acc_assertions
7330 ( p_subscription_guid   in     raw,
7331   p_event               in out NOCOPY wf_event_t)
7332 return varchar2
7333 IS
7334 
7335  l_key                    varchar2(240) := p_event.GetEventKey();
7336  l_acccount_id            NUMBER;
7337  l_user_id 	          NUMBER;
7338  l_resp_id 	          NUMBER;
7339  l_resp_appl_id           NUMBER;
7340  l_security_group_id      NUMBER;
7341 
7342 
7343 BEGIN
7344 
7345 
7346   l_acccount_id  := p_event.GetValueForParameter('ACCOUNT_ID');
7347   l_user_id := p_event.GetValueForParameter('USER_ID');
7348   l_resp_id := p_event.GetValueForParameter('RESP_ID');
7349   l_resp_appl_id := p_event.GetValueForParameter('RESP_APPL_ID');
7350   l_security_group_id := null;
7351 
7352  --p_event.GetValueForParameter('SECURITY_GROUP_ID');
7353 
7354  -- fnd_global.apps_initialize (l_user_id, l_resp_id, l_resp_appl_id, l_security_group_id);
7355 
7356  amw_fin_coso_views_pvt.update_acc_assert_flags(l_acccount_id);
7357 
7358 
7359 RETURN 'SUCCESS';
7360 EXCEPTION
7361  WHEN OTHERS THEN
7362      WF_CORE.CONTEXT('amw_fin_coso_views_pvt', 'update_acc_assert_flags', p_event.getEventName(), p_subscription_guid);
7363      WF_EVENT.setErrorInfo(p_event, 'ERROR');
7364      RETURN 'ERROR';
7365 
7366 end take_new_acc_assertions;
7367 --*************************************************************************************************************
7368 
7369 ------------------------------------------
7370 PROCEDURE update_parentacc_assert_flags
7371 ( P_ACCOUNT_ID        number,
7372   P_CERTFICATION_ID number,
7373   P_ACCOUNT_GROUP_ID number) is
7374 
7375 
7376 begin
7377 declare
7378 
7379 
7380  ctr integer :=0;
7381  max_num_of_codes integer :=0;
7382  m_ctrl_attribute_type VARCHAR2(30) :='CTRL_ASSERTIONS';
7383 
7384  m_assertions_code component_code_array;
7385  m_acc_assert_flag component_code_array;
7386  m_total_control  total_control_array ;
7387 
7388  m_cert_id number ;
7389 
7390  m_ineff_control  ineff_control_array ;
7391 
7392  v_ASSERTION_CODE varchar2(30);
7393  m_display_flag varchar2(1) := 'N';
7394 
7395  g_user_id              NUMBER        := fnd_global.user_id;
7396  g_login_id             NUMBER        := fnd_global.conc_login_id;
7397  g_errbuf               VARCHAR2(2000) := null;
7398  g_retcode              VARCHAR2(2)    :=  '0';
7399 
7400 -- *************** Currsor to get all Control for the account being Passed ********** --
7401 
7402 
7403 --M_ACCOUNT_GROUP_ID number :=0;
7404 -----------------------------------------------------------------------------------------
7405 
7406 M_PARENT_ACCOUNT_ID number :=0;
7407 
7408 cursor ACC_ASSERT_CODES
7409  is
7410 select
7411 distinct
7412 ASSERTION_CODE
7413 from
7414 amw_account_assertions
7415 where
7416 ((NATURAL_ACCOUNT_ID =M_PARENT_ACCOUNT_ID) or (NATURAL_ACCOUNT_ID in (select CHILD_NATURAL_ACCOUNT_ID from amw_fin_key_acct_flat
7417 where  PARENT_NATURAL_ACCOUNT_ID  =M_PARENT_ACCOUNT_ID and ACCOUNT_GROUP_ID=P_ACCOUNT_GROUP_ID)));
7418 
7419 -----------------------------------------------------------------------------------------
7420 
7421 M_STATEMENT_GROUP_ID NUMBER :=0;
7422 M_STATEMENT_ID NUMBER :=0;
7423 
7424 cursor getParentAcc IS
7425     select PARENT_NATURAL_ACCOUNT_ID from amw_fin_key_acct_flat
7426 where  CHILD_NATURAL_ACCOUNT_ID  =P_ACCOUNT_ID and ACCOUNT_GROUP_ID=p_ACCOUNT_GROUP_ID;
7427 
7428 --------------------------------------------------------------------------------------------
7429 cursor existing_codes
7430 is
7431  select
7432  distinct
7433    FIN_CERTIFICATION_ID,
7434    FINANCIAL_STATEMENT_ID,
7435    ctrl_attr_code_1,
7436    ctrl_attr_code_2,
7437    ctrl_attr_code_3,
7438    ctrl_attr_code_4,
7439    ctrl_attr_code_5,
7440    ctrl_attr_code_6,
7441    ctrl_attr_code_7,
7442    ctrl_attr_code_8,
7443    ctrl_attr_code_9,
7444    ctrl_attr_code_10,
7445    ctrl_attr_code_11,
7446    ctrl_attr_code_12,
7447    ctrl_attr_code_13,
7448    ctrl_attr_code_14,
7449    ctrl_attr_code_15,
7450    ctrl_attr_code_16,
7451    ctrl_attr_code_17,
7452    ctrl_attr_code_18,
7453    ctrl_attr_code_19,
7454    ctrl_attr_code_20,
7455    ctrl_attr_code_21,
7456    ctrl_attr_code_22,
7457    ctrl_attr_code_23,
7458    ctrl_attr_code_24,
7459    ctrl_attr_code_25,
7460    ctrl_attr_code_26,
7461    ctrl_attr_code_27,
7462    ctrl_attr_code_28,
7463    ctrl_attr_code_29,
7464    ctrl_attr_code_30,
7465    ineff_ctrl_attr_1,
7466    ineff_ctrl_attr_2,
7467    ineff_ctrl_attr_3,
7468    ineff_ctrl_attr_4,
7469    ineff_ctrl_attr_5,
7470    ineff_ctrl_attr_6,
7471    ineff_ctrl_attr_7,
7472    ineff_ctrl_attr_8,
7473    ineff_ctrl_attr_9,
7474    ineff_ctrl_attr_10,
7475    ineff_ctrl_attr_11,
7476    ineff_ctrl_attr_12,
7477    ineff_ctrl_attr_13,
7478    ineff_ctrl_attr_14,
7479    ineff_ctrl_attr_15,
7480    ineff_ctrl_attr_16,
7481    ineff_ctrl_attr_17,
7482    ineff_ctrl_attr_18,
7483    ineff_ctrl_attr_19,
7484    ineff_ctrl_attr_20,
7485    ineff_ctrl_attr_21,
7486    ineff_ctrl_attr_22,
7487    ineff_ctrl_attr_23,
7488    ineff_ctrl_attr_24,
7489    ineff_ctrl_attr_25,
7490    ineff_ctrl_attr_26,
7491    ineff_ctrl_attr_27,
7492    ineff_ctrl_attr_28,
7493    ineff_ctrl_attr_29,
7494    ineff_ctrl_attr_30,
7495  total_ctrl_attr_1,
7496  total_ctrl_attr_2,
7497  total_ctrl_attr_3,
7498  total_ctrl_attr_4,
7499  total_ctrl_attr_5,
7500  total_ctrl_attr_6,
7501  total_ctrl_attr_7,
7502  total_ctrl_attr_8,
7503  total_ctrl_attr_9,
7504  total_ctrl_attr_10,
7505  total_ctrl_attr_11,
7506  total_ctrl_attr_12,
7507  total_ctrl_attr_13,
7508  total_ctrl_attr_14,
7509  total_ctrl_attr_15,
7510  total_ctrl_attr_16,
7511  total_ctrl_attr_17,
7512  total_ctrl_attr_18,
7513  total_ctrl_attr_19,
7514  total_ctrl_attr_20,
7515  total_ctrl_attr_21,
7516  total_ctrl_attr_22,
7517  total_ctrl_attr_23,
7518  total_ctrl_attr_24,
7519  total_ctrl_attr_25,
7520  total_ctrl_attr_26,
7521  total_ctrl_attr_27,
7522  total_ctrl_attr_28,
7523  total_ctrl_attr_29,
7524  total_ctrl_attr_30
7525 from
7526  amw_fin_cert_ctrl_sum ctrlsum
7527 where
7528 FIN_CERTIFICATION_ID= P_CERTFICATION_ID
7529 and ctrl_attribute_type = 'CTRL_ASSERTIONS'
7530 AND OBJECT_TYPE='ACCOUNT' AND
7531 NATURAL_ACCOUNT_ID=M_PARENT_ACCOUNT_ID AND
7532 ACCOUNT_GROUP_ID =P_ACCOUNT_GROUP_ID ;
7533 
7534 
7535 
7536 
7537 BEGIN
7538 
7539  --m_assertions_code := null;
7540  --ctr := 0;
7541 
7542 
7543 for parentAccounts in getParentAcc
7544  loop
7545     exit when getParentAcc %notfound;
7546     M_PARENT_ACCOUNT_ID := parentAccounts.PARENT_NATURAL_ACCOUNT_ID ;
7547 
7548 
7549  -- ************ Since the Table has 30 Fileds only initialize 30 Positios in the Array**************--
7550 
7551  for load_current_codes in existing_codes
7552  loop
7553     exit when existing_codes%notfound;
7554 
7555     ctr :=  1;
7556 
7557     loop -- for each certification initialize the array
7558      EXIT WHEN ctr > 30;
7559 
7560       m_assertions_code(ctr) := null;
7561       m_acc_assert_flag(ctr) := 'I'; -- make ignore as the default and make it Y or N based on the interest of the Account on Assertion
7562       m_ineff_control(ctr) :=0;
7563       ctr := ctr + 1;
7564 
7565     end loop; --end of initialization
7566 
7567 
7568    m_assertions_code(1) :=  load_current_codes.ctrl_attr_code_1;
7569    m_assertions_code(2) :=  load_current_codes.ctrl_attr_code_2;
7570    m_assertions_code(3) :=  load_current_codes.ctrl_attr_code_3;
7571    m_assertions_code(4) :=   load_current_codes.ctrl_attr_code_4;
7572    m_assertions_code(5) :=load_current_codes.ctrl_attr_code_5;
7573    m_assertions_code(6) :=load_current_codes.ctrl_attr_code_6;
7574    m_assertions_code(7) :=load_current_codes.ctrl_attr_code_7;
7575    m_assertions_code(8) :=load_current_codes.ctrl_attr_code_8;
7576    m_assertions_code(9) :=load_current_codes.ctrl_attr_code_9;
7577    m_assertions_code(10) :=load_current_codes.ctrl_attr_code_10;
7578    m_assertions_code(11) :=load_current_codes.ctrl_attr_code_11;
7579    m_assertions_code(12) :=load_current_codes.ctrl_attr_code_12;
7580    m_assertions_code(13) :=load_current_codes.ctrl_attr_code_13;
7581    m_assertions_code(14) :=load_current_codes.ctrl_attr_code_14;
7582    m_assertions_code(15) :=load_current_codes.ctrl_attr_code_15;
7583    m_assertions_code(16) :=load_current_codes.ctrl_attr_code_16;
7584    m_assertions_code(17) :=load_current_codes.ctrl_attr_code_17;
7585    m_assertions_code(18) :=load_current_codes.ctrl_attr_code_18;
7586    m_assertions_code(19) :=load_current_codes.ctrl_attr_code_19;
7587    m_assertions_code(20) :=load_current_codes.ctrl_attr_code_20;
7588    m_assertions_code(21) :=load_current_codes.ctrl_attr_code_21;
7589    m_assertions_code(22) :=load_current_codes.ctrl_attr_code_22;
7590    m_assertions_code(23) :=load_current_codes.ctrl_attr_code_23;
7591    m_assertions_code(24) :=load_current_codes.ctrl_attr_code_24;
7592    m_assertions_code(25) :=load_current_codes.ctrl_attr_code_25;
7593    m_assertions_code(26) :=load_current_codes.ctrl_attr_code_26;
7594    m_assertions_code(27) :=load_current_codes.ctrl_attr_code_27;
7595    m_assertions_code(28) :=load_current_codes.ctrl_attr_code_28;
7596    m_assertions_code(29) :=load_current_codes.ctrl_attr_code_29;
7597    m_assertions_code(30) :=load_current_codes.ctrl_attr_code_30;
7598 
7599    m_ineff_control(1) :=  load_current_codes.ineff_ctrl_attr_1;
7600    m_ineff_control(2) :=  load_current_codes.ineff_ctrl_attr_2;
7601    m_ineff_control(3) :=  load_current_codes.ineff_ctrl_attr_3;
7602    m_ineff_control(4) :=   load_current_codes.ineff_ctrl_attr_4;
7603    m_ineff_control(5) :=load_current_codes.ineff_ctrl_attr_5;
7604    m_ineff_control(6) :=load_current_codes.ineff_ctrl_attr_6;
7605    m_ineff_control(7) :=load_current_codes.ineff_ctrl_attr_7;
7606    m_ineff_control(8) :=load_current_codes.ineff_ctrl_attr_8;
7607    m_ineff_control(9) :=load_current_codes.ineff_ctrl_attr_9;
7608    m_ineff_control(10) :=load_current_codes.ineff_ctrl_attr_10;
7609    m_ineff_control(11) :=load_current_codes.ineff_ctrl_attr_11;
7610    m_ineff_control(12) :=load_current_codes.ineff_ctrl_attr_12;
7611    m_ineff_control(13) :=load_current_codes.ineff_ctrl_attr_13;
7612    m_ineff_control(14) :=load_current_codes.ineff_ctrl_attr_14;
7613    m_ineff_control(15) :=load_current_codes.ineff_ctrl_attr_15;
7614    m_ineff_control(16) :=load_current_codes.ineff_ctrl_attr_16;
7615    m_ineff_control(17) :=load_current_codes.ineff_ctrl_attr_17;
7616    m_ineff_control(18) :=load_current_codes.ineff_ctrl_attr_18;
7617    m_ineff_control(19) :=load_current_codes.ineff_ctrl_attr_19;
7618    m_ineff_control(20) :=load_current_codes.ineff_ctrl_attr_20;
7619    m_ineff_control(21) :=load_current_codes.ineff_ctrl_attr_21;
7620    m_ineff_control(22) :=load_current_codes.ineff_ctrl_attr_22;
7621    m_ineff_control(23) :=load_current_codes.ineff_ctrl_attr_23;
7622    m_ineff_control(24) :=load_current_codes.ineff_ctrl_attr_24;
7623    m_ineff_control(25) :=load_current_codes.ineff_ctrl_attr_25;
7624    m_ineff_control(26) :=load_current_codes.ineff_ctrl_attr_26;
7625    m_ineff_control(27) :=load_current_codes.ineff_ctrl_attr_27;
7626    m_ineff_control(28) :=load_current_codes.ineff_ctrl_attr_28;
7627    m_ineff_control(29) :=load_current_codes.ineff_ctrl_attr_29;
7628    m_ineff_control(30) :=load_current_codes.ineff_ctrl_attr_30;
7629 
7630  m_total_control(1) := load_current_codes.total_ctrl_attr_1;
7631  m_total_control(2) :=  load_current_codes.total_ctrl_attr_2;
7632  m_total_control(3) := load_current_codes.total_ctrl_attr_3;
7633  m_total_control(4) := load_current_codes.total_ctrl_attr_4;
7634  m_total_control(5) := load_current_codes.total_ctrl_attr_5;
7635  m_total_control(6) := load_current_codes.total_ctrl_attr_6;
7636  m_total_control(7) := load_current_codes.total_ctrl_attr_7;
7637  m_total_control(8) := load_current_codes.total_ctrl_attr_8;
7638  m_total_control(9) := load_current_codes.total_ctrl_attr_9;
7639  m_total_control(10) := load_current_codes.total_ctrl_attr_10;
7640  m_total_control(11) := load_current_codes.total_ctrl_attr_11;
7641  m_total_control(12) := load_current_codes.total_ctrl_attr_12;
7642  m_total_control(13) := load_current_codes.total_ctrl_attr_13;
7643  m_total_control(14) := load_current_codes.total_ctrl_attr_14;
7644  m_total_control(15) := load_current_codes.total_ctrl_attr_15;
7645  m_total_control(16) := load_current_codes.total_ctrl_attr_16;
7646  m_total_control(17) := load_current_codes.total_ctrl_attr_17;
7647  m_total_control(18) := load_current_codes.total_ctrl_attr_18;
7648  m_total_control(19) := load_current_codes.total_ctrl_attr_19;
7649  m_total_control(20) := load_current_codes.total_ctrl_attr_20;
7650  m_total_control(21) := load_current_codes.total_ctrl_attr_21;
7651  m_total_control(22) := load_current_codes.total_ctrl_attr_22;
7652  m_total_control(23) := load_current_codes.total_ctrl_attr_23;
7653  m_total_control(24) := load_current_codes.total_ctrl_attr_24;
7654  m_total_control(25) := load_current_codes.total_ctrl_attr_25;
7655  m_total_control(26) := load_current_codes.total_ctrl_attr_26;
7656  m_total_control(27) := load_current_codes.total_ctrl_attr_27;
7657  m_total_control(28) := load_current_codes.total_ctrl_attr_28;
7658  m_total_control(29) := load_current_codes.total_ctrl_attr_29;
7659  m_total_control(30) := load_current_codes.total_ctrl_attr_30;
7660 
7661  m_cert_id :=load_current_codes.FIN_CERTIFICATION_ID ;
7662 -- M_STATEMENT_GROUP_ID := load_current_codes.STATEMENT_GROUP_ID;
7663  M_STATEMENT_ID := load_current_codes.FINANCIAL_STATEMENT_ID;
7664 
7665   for acc_assertions in ACC_ASSERT_CODES
7666   loop
7667       exit when ACC_ASSERT_CODES%notfound;
7668 
7669       ctr := 1;
7670       while ctr <=  30
7671       loop
7672           if (m_assertions_code(ctr) =  acc_assertions.ASSERTION_CODE  ) then
7673 
7674              if nvl(m_ineff_control(ctr),0) > 0  then
7675 
7676                    m_acc_assert_flag(ctr) := 'Y';
7677 
7678                 --************************************************************************************************** --
7679                 -- else if the assertion is important for one of the accounts of fin. Item and No controls exist for the
7680                 --  processes associated with the accounts then set the flag to 'Y', based on which an image will
7681                 --- appear in UI
7682                 --************************************************************************************************** --
7683 
7684                  elsif (nvl(m_total_control(ctr),0) = 0) then
7685 
7686                    m_acc_assert_flag(ctr) := 'Y';
7687 
7688 
7689                  --- ********** ie assertion is Not important for any of the accounts of fin. Item  and(nvl(m_total_control(ctr),0) > 0)
7690                  else
7691                     m_acc_assert_flag(ctr) := 'N';
7692 
7693                  end if;
7694 
7695 
7696              --m_acc_assert_flag(ctr) := 'Y';
7697              exit;
7698 
7699            end if;
7700            ctr := ctr +1;
7701       end loop;
7702    end loop; --end of acc_assertions in ACC_ASSERT_CODES
7703  ---------------------------------------------------------------------------------------------
7704 
7705     if set_flag_for_assertions( assert_acc_reln_exist=>  m_acc_assert_flag) then
7706 
7707         m_display_flag := 'Y';
7708      else
7709         m_display_flag := 'N';
7710      end if;
7711 
7712 
7713  ---------------------------------------------------------------------------------------------
7714 
7715     amw_fin_coso_views_pvt.UPDATE_CTRLSUM_FLAG(
7716      x_fin_certification_id       	=> 	m_cert_id   	,
7717      x_natural_account_id        	=> 	M_PARENT_ACCOUNT_ID ,
7718      x_ctrl_attribute_type       	=> 	m_ctrl_attribute_type       	,
7719      x_created_by                	=> 	g_user_id	,
7720      x_creation_date             	=> 	SYSDATE	,
7721      x_last_updated_by           	=> 	g_user_id	,
7722      x_last_update_date          	=> 	SYSDATE	,
7723      x_last_update_login         	=> 	g_login_id	,
7724     -- x_object_version_number     	=> 	null,
7725      x_acc_assert_flag1         	=> 	m_acc_assert_flag(1),
7726      x_acc_assert_flag2         	=> 	m_acc_assert_flag(2),
7727      x_acc_assert_flag3         	=> 	m_acc_assert_flag(3),
7728      x_acc_assert_flag4         	=> 	m_acc_assert_flag(4),
7729      x_acc_assert_flag5         	=> 	m_acc_assert_flag(5),
7730      x_acc_assert_flag6         	=> 	m_acc_assert_flag(6),
7731      x_acc_assert_flag7         	=> 	m_acc_assert_flag(7),
7732      x_acc_assert_flag8         	=> 	m_acc_assert_flag(8),
7733      x_acc_assert_flag9         	=> 	m_acc_assert_flag(9),
7734      x_acc_assert_flag10        	=> 	m_acc_assert_flag(10),
7735      x_acc_assert_flag11         	=> 	m_acc_assert_flag(11),
7736      x_acc_assert_flag12         	=> 	m_acc_assert_flag(12),
7737      x_acc_assert_flag13         	=> 	m_acc_assert_flag(13),
7738      x_acc_assert_flag14         	=> 	m_acc_assert_flag(14),
7739      x_acc_assert_flag15         	=> 	m_acc_assert_flag(15),
7740      x_acc_assert_flag16         	=> 	m_acc_assert_flag(16),
7741      x_acc_assert_flag17         	=> 	m_acc_assert_flag(17),
7742      x_acc_assert_flag18         	=> 	m_acc_assert_flag(18),
7743      x_acc_assert_flag19         	=> 	m_acc_assert_flag(19),
7744      x_acc_assert_flag20        	=> 	m_acc_assert_flag(20),
7745      x_acc_assert_flag21         	=> 	m_acc_assert_flag(21),
7746      x_acc_assert_flag22         	=> 	m_acc_assert_flag(22),
7747      x_acc_assert_flag23         	=> 	m_acc_assert_flag(23),
7748      x_acc_assert_flag24         	=> 	m_acc_assert_flag(24),
7749      x_acc_assert_flag25         	=> 	m_acc_assert_flag(25),
7750      x_acc_assert_flag26         	=> 	m_acc_assert_flag(26),
7751      x_acc_assert_flag27         	=> 	m_acc_assert_flag(27),
7752      x_acc_assert_flag28         	=> 	m_acc_assert_flag(28),
7753      x_acc_assert_flag29         	=> 	m_acc_assert_flag(29),
7754      x_acc_assert_flag30        	=> 	m_acc_assert_flag(30),
7755      x_display_flag                     =>      m_display_flag  );
7756 
7757 
7758 
7759  end loop; -- end of load_current_codes loop
7760 
7761 end loop; -- parent account loop
7762 
7763  EXCEPTION
7764      WHEN NO_DATA_FOUND
7765 	     THEN
7766             fnd_file.put_line (fnd_file.LOG, SUBSTR ('No data found in Update_Next_Level_Proc_Info'
7767                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
7768 
7769      WHEN OTHERS
7770          THEN
7771             fnd_file.put_line (fnd_file.LOG, SUBSTR ('Unexpected Error in Update_Next_Level_Proc_Info'
7772                 || SUBSTR (SQLERRM, 1, 100), 1, 200));
7773 
7774 ---COMMIT;
7775 end;
7776 end ; -- update_parentacc_assert_flags
7777 
7778 -- ************************************************************************************************************* --
7779 
7780 
7781 
7782 END amw_fin_coso_views_pvt;