1 PACKAGE BODY MTL_DEFAULT_CATEGORY_SETS_PKG AS
2 /* $Header: INVDCSTB.pls 120.3 2010/08/30 03:17:50 kaizhao ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'EGO_DEF_FUNCTIONA_AREA_PKG';
5
6
7 FUNCTION val_inventory_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER;
8 FUNCTION val_purchasing_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER;
9 FUNCTION val_planning_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER;
10 FUNCTION val_costing_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER;
11 FUNCTION val_eng_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER;
12 FUNCTION val_order_entry_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER;
13 -- FUNCTION val_Product_Line_cat_set(P_Category_Set_Id NUMBER)RETURN NUMBER;
14 FUNCTION val_Product_reporting_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER;
15 FUNCTION val_Asset_Management_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER;
16 FUNCTION val_Service_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER;
17 FUNCTION val_Contracts_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER;
18 FUNCTION val_UCCNet_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER; -- added for bug : 3953009
19 FUNCTION val_UCCNet_GPC_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER;
20 FUNCTION val_process_cost_class_cat_set(P_Category_Set_Id NUMBER) return number;--bug: 9965888
21 -- FUNCTION Check_Mult_Assign_Flag RETURN VARCHAR2;
22
23 --**********************************************************************
24 -- Functional Validations before updating MTL_DEFAULT_CATEGORY_SETS
25 --**********************************************************************
26
27 PROCEDURE validate_all_cat_sets(P_Functional_area_id NUMBER,
28 P_Category_Set_Id NUMBER,
29 X_Msg_Name OUT NOCOPY VARCHAR2)
30 IS
31 rc Number;
32 BEGIN
33
34 IF ( P_functional_area_id = 1 ) Then
35 rc := val_inventory_cat_set(P_Category_Set_Id);
36 elsif ( P_functional_area_id = 2 ) Then
37 rc := val_purchasing_cat_set(P_Category_Set_Id);
38 elsif ( P_functional_area_id = 3 ) Then
39 rc := val_planning_cat_set(P_Category_Set_Id);
40 elsif ( P_functional_area_id = 5 ) Then
41 rc := val_costing_cat_set(P_Category_Set_Id);
42 elsif ( P_functional_area_id = 6 ) Then
43 rc := val_eng_cat_set(P_Category_Set_Id);
44 elsif ( P_functional_area_id = 7 ) Then
45 rc := val_order_entry_cat_set(P_Category_Set_Id);
46 -- elsif ( :deflt_cat_set.functional_area_id = 8 ) Then
47 -- rc := val_Product_Line_cat_set(P_Category_Set_Id);
48 ELSIF ( P_functional_area_id = 9 ) THEN
49 rc := val_Asset_Management_Cat_Set(P_Category_Set_Id);
50 ELSIF ( P_functional_area_id = 4 ) THEN
51 rc := val_Service_Cat_Set(P_Category_Set_Id);
52 ELSIF ( P_functional_area_id = 10 ) THEN
53 rc := val_Contracts_Cat_Set(P_Category_Set_Id);
54 ELSIF ( P_functional_area_id = 11 ) THEN
55 rc := val_Product_reporting_Cat_Set(P_Category_Set_Id);
56 ELSIF (P_functional_area_id = 12 ) THEN
57 rc :=val_UCCNet_Cat_Set(P_Category_Set_Id);--Bug:4082162
58 ELSIF (P_functional_area_id = 21 ) THEN
59 rc :=val_UCCNet_GPC_Cat_Set(P_Category_Set_Id);
60 ELSIF (P_functional_area_id = 19 ) THEN--Bug: 9965888
61 rc := val_process_cost_class_cat_set(P_Category_Set_Id);
62 END IF;
63
64 IF (rc = -2) THEN
65 if ( P_functional_area_id = 2) THEN
66 X_msg_Name := 'INV_CAT_PO_REFER';
67 elsif ( P_functional_area_id = 5) THEN
68 X_msg_Name := 'INV_CAT_CST_REFER';
69 elsif ( P_functional_area_id = 19) THEN
70 X_msg_Name := 'INV_CAT_OPM_REFER';
71 end if;
72 END IF;
73
74 IF ( rc = -1 ) THEN
75 /*
76 if ( P_functional_area_id = 8 ) THEN
77 FND_MESSAGE.SET_NAME('INV', 'INV_PL_DEF_CAT_SET_WARN');
78 if ( NOT FND_MESSAGE.Warn ) then
79 :deflt_cat_set.category_set_id := :parameter.PL_DEF_CAT_SET_ID;
80
81 select CATEGORY_SET_NAME, DESCRIPTION
82 into :deflt_cat_set.category_set_name, :deflt_cat_set.category_set_description
83 from MTL_CATEGORY_SETS_VL
84 where CATEGORY_SET_ID = :deflt_cat_set.category_set_id;
85
86 set_record_property(:system.cursor_record, 'DEFLT_CAT_SET', STATUS, QUERY_STATUS);
87 end if;
88 else */
89 if ( P_functional_area_id = 11 ) THEN
90 X_msg_Name := 'INV_PR_DEF_CAT_SET_WARN';
91 else
92 X_msg_Name := 'INV_ASSIGN_ITEM_TO_CS';
93 end if;
94 -- end if;
95
96 END IF;
97
98 EXCEPTION
99 WHEN OTHERS THEN
100 X_msg_Name := 'INV_UNHANDLED_EXCEPTION';
101
102 END validate_all_cat_sets;
103
104
105 /* Function validating category set name for Inventory Function */
106
107 FUNCTION val_inventory_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER
108 IS
109 buffer VARCHAR2(1);
110 Begin
111
112 Select 'X'
113 Into buffer
114 FROM dual
115 WHERE EXISTS (
116 SELECT 'X'
117 From MTL_SYSTEM_ITEMS_B Item
118 Where Item.INVENTORY_ITEM_FLAG = 'Y'
119 And NOT EXISTS
120 ( Select 'X'
121 From MTL_ITEM_CATEGORIES Cat
122 Where Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
123 And Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
124 And Cat.CATEGORY_SET_ID = P_Category_Set_Id
125 )
126 );
127
128 return -1;
129
130 EXCEPTION
131
132 WHEN NO_DATA_FOUND THEN
133 return 0;
134
135 END val_inventory_cat_set;
136
137 /* Function validating category set name for Purchasing Function */
138
139 FUNCTION val_purchasing_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER
140 IS
141 buffer VARCHAR2(1);
142 Old_Cat_value NUMBER;
143 Old_Structure_id NUMBER;
144 New_Structure_id NUMBER;
145 Po_Count NUMBER := 0;
146 Sql_Stmt Number := 0;
147 Begin
148
149 Sql_Stmt := 1;
150 Select STRUCTURE_ID
151 Into Old_Structure_id
152 From MTL_CATEGORY_SETS_B
153 WHERE CATEGORY_SET_ID = (select category_set_id
154 From MTL_DEFAULT_CATEGORY_SETS
155 Where FUNCTIONAL_AREA_ID = 2);
156
157 Sql_Stmt := 3;
158 Select STRUCTURE_ID
159 Into New_Structure_id
160 From MTL_CATEGORY_SETS_B
161 WHERE CATEGORY_SET_ID = P_Category_Set_Id;
162
163 If New_Structure_id <> Old_Structure_Id Then
164 Select count(*)
165 Into Po_Count
166 From Po_Line_Types_b
167 where category_id is NOT NULL
168 and rownum < 2;
169
170 If (Po_Count = 0) then
171 Select count(*)
172 Into Po_Count
173 From PO_REQEXPRESS_LINES_ALL
174 where category_id is NOT NULL
175 and rownum < 2;
176
177 If (Po_Count = 0) then
178 Select count(*)
179 Into Po_Count
180 From PO_AGENTS
181 where category_id is NOT NULL
182 and rownum < 2;
183
184 If (Po_Count = 0) then
185 Select count(*)
186 Into Po_Count
187 From PO_APPROVED_SUPPLIER_LIST
188 where category_id is NOT NULL
189 and rownum < 2;
190
191 If (Po_Count = 0) then
192 Select count(*)
193 Into Po_Count
194 From PO_ASL_ATTRIBUTES
195 where category_id is NOT NULL
196 and rownum < 2;
197
198 If (Po_Count = 0) then
199 Select count(*)
200 Into Po_Count
201 From PO_REQUISITION_LINES_ALL
202 where category_id is NOT NULL
203 and rownum < 2;
204
205 If (Po_Count = 0) then
206 Select count(*)
207 Into Po_Count
208 From PO_LINES_ALL
209 where category_id is NOT NULL
210 and rownum < 2;
211
212 If (Po_Count = 0) then
213 Select count(*)
214 Into Po_Count
215 From RCV_SHIPMENT_LINES
216 where category_id is NOT NULL
217 and rownum < 2;
218 END IF;
219 END IF;
220 END IF;
221 END IF;
222 END IF;
223 END IF;
224 END IF;
225 END IF;
226
227 If Po_count <> 0 then
228 return -2;
229 End if;
230
231 Sql_Stmt := 4;
232 Select DISTINCT 'X'
233 Into buffer
234 From MTL_SYSTEM_ITEMS_B Item
235 Where ( Item.PURCHASING_ITEM_FLAG = 'Y' OR
236 Item.INTERNAL_ORDER_FLAG = 'Y' )
237 And NOT EXISTS
238 ( Select 'X'
239 From MTL_ITEM_CATEGORIES Cat
240 Where Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
241 And Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
242 And Cat.CATEGORY_SET_ID = P_Category_Set_Id
243 );
244
245 return -1;
246
247 EXCEPTION
248
249 WHEN NO_DATA_FOUND THEN
250 If (Sql_Stmt = 4) then
251 return 0;
252 Else
253 return -1;
254 End if;
255 WHEN OTHERS THEN
256 return -1;
257 END val_purchasing_cat_set;
258
259
260 /* Function validating category set name for Planning Function */
261
262 FUNCTION val_planning_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER
263 IS
264 buffer VARCHAR2(1);
265 Begin
266
267 Select 'X'
268 Into buffer
269 FROM dual
270 WHERE EXISTS (
271 SELECT 'X'
272 From MTL_SYSTEM_ITEMS_B Item
273 Where Item.MRP_PLANNING_CODE <> 6
274 And NOT EXISTS
275 ( Select 'X'
276 From MTL_ITEM_CATEGORIES Cat
277 Where Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
278 And Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
279 And Cat.CATEGORY_SET_ID = P_Category_Set_Id
280 )
281 );
282
283 return -1;
284
285 EXCEPTION
286
287 WHEN NO_DATA_FOUND THEN
288 return 0;
289
290 END val_planning_cat_set;
291
292
293 /* Function validating category set name for Costing Function */
294 FUNCTION val_costing_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER
295 IS
296 buffer VARCHAR2(1);
297 Old_Cat_value NUMBER;
298 Old_Structure_id NUMBER;
299 New_Structure_id NUMBER;
300 co_Count NUMBER := 0;
301 Sql_Stmt NUMBER := 0;
302
303 l_dyn_sql VARCHAR2(500);
304 source_cursor INTEGER;
305 ignore INTEGER;
306
307 Begin
308
309 Sql_Stmt := 1;
310 Select STRUCTURE_ID
311 Into Old_Structure_id
312 From MTL_CATEGORY_SETS_B
313 WHERE CATEGORY_SET_ID = (select category_set_id
314 From MTL_DEFAULT_CATEGORY_SETS
315 Where FUNCTIONAL_AREA_ID = 5);
316
317 Sql_Stmt := 3;
318 Select STRUCTURE_ID
319 Into New_Structure_id
320 From MTL_CATEGORY_SETS_B
321 WHERE CATEGORY_SET_ID = P_Category_Set_Id;
322
323
324 If New_Structure_id <> Old_Structure_Id Then
325 /* Select count(*)
326 Into co_Count
327 From Po_Line_Types_b
328 where category_id is NOT NULL
329 and rownum < 2;
330
331 If (co_Count = 0) then *//* Commented out for bugfix:8679416 */
332 Select count(*)
333 Into co_Count
334 From CST_AP_VARIANCE_BATCHES
335 where category_id is NOT NULL
336 and rownum < 2;
337
338 If (co_Count = 0) then
339 Select count(*)
340 Into co_Count
341 From CST_COST_TYPE_HISTORY
342 where category_id is NOT NULL
343 and rownum < 2;
344
345 If (co_Count = 0) then
346 Select count(*)
347 Into co_Count
348 From CST_COST_UPDATES
349 where category_id is NOT NULL
350 and rownum < 2;
351
352 If (co_Count = 0) then
353 Select count(*)
354 Into co_Count
355 From CST_ITEM_OVERHEAD_DEFAULTS
356 where category_id is NOT NULL
357 and rownum < 2;
358
359 If (co_Count = 0) then
360 Select count(*)
361 Into co_Count
362 From CST_ITEM_OVERHEAD_DEFAULTS_EFC
363 where category_id is NOT NULL
364 and rownum < 2;
365
366 If (co_Count = 0) then
367
368 IF INV_ITEM_UTIL.Object_Exists(p_object_type => 'SYNONYM'
369 ,p_object_name => 'CST_MATERIAL_OVHD_RULES') ='Y'
370 THEN
371 source_cursor := dbms_sql.open_cursor;
372 l_dyn_sql := ' Select count(*) '||
373 ' From CST_MATERIAL_OVHD_RULES '||
374 ' where category_id is NOT NULL '||
375 ' and rownum < 2';
376 DBMS_SQL.PARSE(source_cursor,l_dyn_sql,1);
377 DBMS_SQL.DEFINE_COLUMN(source_cursor, 1, co_Count);
378 ignore := DBMS_SQL.EXECUTE(source_cursor);
379 IF DBMS_SQL.FETCH_ROWS(source_cursor)>0 THEN
380 DBMS_SQL.COLUMN_VALUE(source_cursor, 1, co_Count);
381 END IF;
382 DBMS_SQL.CLOSE_CURSOR(source_cursor);
383 END IF;
384 If (co_Count = 0) then
385 Select count(*)
386 Into co_Count
387 From CST_SC_ROLLUP_HISTORY
388 where category_id is NOT NULL
389 and rownum < 2;
390 END IF;
391 END IF;
392 END IF;
393 END IF;
394 END IF;
395 END IF;
396 -- END IF;/* commented out for bugfix:8679416 */
397 END IF;
398
399 If co_Count <> 0 then
400 return -2;
401 End if;
402
403 Sql_Stmt := 4;
404 Select DISTINCT 'X'
405 Into buffer
406 From MTL_SYSTEM_ITEMS_B Item
407 Where Item.COSTING_ENABLED_FLAG = 'Y'
408 And NOT EXISTS
409 ( Select 'X'
410 From MTL_ITEM_CATEGORIES Cat
411 Where Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
412 And Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
413 And Cat.CATEGORY_SET_ID = P_Category_Set_Id
414 );
415
416 return -1;
417
418 EXCEPTION
419
420 WHEN NO_DATA_FOUND THEN
421 If (Sql_Stmt = 4) then
422 return 0;
423 Else
424 return -1;
425 End if;
426 WHEN OTHERS THEN
427 return -1;
428
429 END val_costing_cat_set;
430
431 /* Function validating category set name for Engineering Function */
432
433 FUNCTION val_eng_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER
434 IS
435 buffer VARCHAR2(1);
436 Begin
437
438 Select 'X'
439 Into buffer
440 FROM dual
441 WHERE EXISTS (
442 SELECT 'X'
443 From MTL_SYSTEM_ITEMS_B Item
444 Where Item.ENG_ITEM_FLAG = 'Y'
445 And NOT EXISTS
446 ( Select 'X'
447 From MTL_ITEM_CATEGORIES Cat
448 Where Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
449 And Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
450 And Cat.CATEGORY_SET_ID = P_Category_Set_Id
451 )
452 );
453
454 return -1;
455
456 EXCEPTION
457
458 WHEN NO_DATA_FOUND THEN
459 return 0;
460
461 END val_eng_cat_set;
462
463
464 /* Function validating category set name for Order Entry Function */
465
466 FUNCTION val_order_entry_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER
467 IS
468 buffer VARCHAR2(1);
469 Begin
470
471 Select 'X'
472 Into buffer
473 FROM dual
474 WHERE EXISTS (
475 SELECT 'X'
476 From MTL_SYSTEM_ITEMS_B Item
477 Where Item.CUSTOMER_ORDER_FLAG = 'Y'
478 And NOT EXISTS
479 ( Select 'X'
480 From MTL_ITEM_CATEGORIES Cat
481 Where Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
482 And Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
483 And Cat.CATEGORY_SET_ID = P_Category_Set_Id
484 )
485 );
486
487 return -1;
488
489 EXCEPTION
490
491 WHEN NO_DATA_FOUND THEN
492 return 0;
493
494 END val_order_entry_cat_set;
495
496 /* function validating category set name for Product_Line function
497
498 FUNCTION val_Product_Line_cat_set(P_Category_Set_Id NUMBER) RETURN NUMBER
499 IS
500 BEGIN
501
502 if ( :parameter.PL_DEF_CAT_SET_ID != P_Category_Set_Id ) then
503 return -1;
504 else
505 return 0;
506 end if;
507
508 RETURN NULL;
509
510 END val_Product_Line_cat_set;*/
511
512
513 /* FUNCTION validating category set name for Asset Management function */
514
515 FUNCTION val_Asset_Management_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER
516 IS
517 l_count NUMBER;
518 BEGIN
519
520 SELECT DECODE( COUNT(*), 0, 0, -1 )
521 INTO l_count
522 FROM MTL_SYSTEM_ITEMS_B Item
523 WHERE
524 Item.EAM_ITEM_TYPE IS NOT NULL
525 AND NOT EXISTS
526 ( SELECT 'X'
527 FROM MTL_ITEM_CATEGORIES Cat
528 WHERE
529 Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
530 AND Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
531 AND Cat.CATEGORY_SET_ID = P_Category_Set_Id
532 );
533
534 RETURN (l_count);
535
536 END val_Asset_Management_Cat_Set;
537
538 /* Function validating category set name for Service Function */
539
540 FUNCTION val_Service_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER
541 IS
542 l_count NUMBER;
543 BEGIN
544
545 SELECT DECODE( COUNT(*), 0, 0, -1 )
546 INTO l_count
547 FROM MTL_SYSTEM_ITEMS_B Item
548 WHERE
549 Item.CONTRACT_ITEM_TYPE_CODE IN ('SERVICE', 'WARRANTY')
550 AND NOT EXISTS
551 ( SELECT 'X'
552 FROM MTL_ITEM_CATEGORIES Cat
553 WHERE
554 Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
555 AND Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
556 AND Cat.CATEGORY_SET_ID = P_Category_Set_Id
557 );
558
559 RETURN (l_count);
560
561 END val_Service_Cat_Set;
562
563 /* Function validating category set name for Contracts Function */
564 FUNCTION val_Contracts_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER
565 IS
566 l_count NUMBER;
567 BEGIN
568
569 SELECT DECODE( COUNT(*), 0, 0, -1 )
570 INTO l_count
571 FROM MTL_SYSTEM_ITEMS_B Item
572 WHERE
573 Item.CONTRACT_ITEM_TYPE_CODE IN ('SERVICE', 'WARRANTY', 'SUBSCRIPTION', 'USAGE')
574 AND NOT EXISTS
575 ( SELECT 'X'
576 FROM MTL_ITEM_CATEGORIES Cat
577 WHERE
578 Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
579 AND Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
580 AND Cat.CATEGORY_SET_ID = P_Category_Set_Id
581 );
582
583 RETURN (l_count);
584
585 END val_Contracts_Cat_Set;
586
587 /* Private Function validating category set name for Product Reporting/DBI Function */
588
589 FUNCTION val_Product_reporting_Cat_Set(P_Category_Set_Id NUMBER) RETURN NUMBER
590 IS
591 buffer VARCHAR2(1);
592 Begin
593
594 Select 'X'
595 Into buffer
596 FROM dual
597 WHERE EXISTS (
598 SELECT 'X'
599 From MTL_SYSTEM_ITEMS_B Item
600 Where ( Item.CUSTOMER_ORDER_FLAG = 'Y' OR
601 Item.INTERNAL_ORDER_FLAG = 'Y' )
602 And NOT EXISTS
603 ( Select 'X'
604 From MTL_ITEM_CATEGORIES Cat
605 Where Cat.INVENTORY_ITEM_ID = Item.INVENTORY_ITEM_ID
606 And Cat.ORGANIZATION_ID = Item.ORGANIZATION_ID
607 And Cat.CATEGORY_SET_ID = P_Category_Set_Id
608 )
609 );
610 return -1;
611 EXCEPTION
612
613 WHEN NO_DATA_FOUND THEN
614 return 0;
615
616 END val_Product_reporting_Cat_Set;
617
618
619 /* Private Function validating Category Set for UCCNet */
620 --Bug:4082162 User can change the default category set (catalog) to new default catalog
621 -- ONLY if all the items belongs to current category set are already assigned to
622 -- new category set(Catalog).
623 FUNCTION val_UCCNet_Cat_Set(P_Category_Set_Id NUMBER)
624 RETURN NUMBER
625 IS
626 buffer VARCHAR2(1);
627 Begin
628
629 Select 'X'
630 Into buffer
631 From MTL_ITEM_CATEGORIES Cat,
632 MTL_DEFAULT_CATEGORY_SETS DefCat
633 Where DefCat.FUNCTIONAL_AREA_ID = 12
634 And DefCat.CATEGORY_SET_ID = Cat.CATEGORY_SET_ID
635 And NOT EXISTS
636 ( Select 'X'
637 From MTL_ITEM_CATEGORIES Cat1
638 Where Cat1.INVENTORY_ITEM_ID = Cat.INVENTORY_ITEM_ID
639 And Cat1.ORGANIZATION_ID = Cat.ORGANIZATION_ID
640 And Cat1.CATEGORY_SET_ID = P_Category_Set_Id
641 )
642 And rownum=1;
643 return -1;
644 EXCEPTION
645
646 WHEN NO_DATA_FOUND THEN
647 return 0;
648 End val_UCCNet_Cat_Set;
649
650 /* Private Function validating Category Set for UCCNet GPC Catalog */
651 --User can change the default category set (catalog) to new default catalog
652 -- ONLY if all the items belongs to current category set are already assigned to
653 -- new category set(Catalog).
654 FUNCTION val_UCCNet_GPC_Cat_Set(P_Category_Set_Id NUMBER)
655 RETURN NUMBER
656 IS
657 buffer VARCHAR2(1);
658 Begin
659
660 Select 'X'
661 Into buffer
662 From MTL_ITEM_CATEGORIES Cat,
663 MTL_DEFAULT_CATEGORY_SETS DefCat
664 Where DefCat.FUNCTIONAL_AREA_ID = 21
665 And DefCat.CATEGORY_SET_ID = Cat.CATEGORY_SET_ID
666 And NOT EXISTS
667 ( Select 'X'
668 From MTL_ITEM_CATEGORIES Cat1
669 Where Cat1.INVENTORY_ITEM_ID = Cat.INVENTORY_ITEM_ID
670 And Cat1.ORGANIZATION_ID = Cat.ORGANIZATION_ID
671 And Cat1.CATEGORY_SET_ID = P_Category_Set_Id
672 )
673 And rownum=1;
674 return -1;
675 EXCEPTION
676
677 WHEN NO_DATA_FOUND THEN
678 return 0;
679 End val_UCCNet_GPC_Cat_Set;
680
681 FUNCTION val_process_cost_class_cat_set(P_Category_Set_Id NUMBER)
682 RETURN NUMBER
683 IS
684 buffer VARCHAR2 (1);
685 old_cat_value NUMBER;
686 old_structure_id NUMBER;
687 new_structure_id NUMBER;
688 opm_count NUMBER := 0;
689 sql_stmt NUMBER := 0;
690 BEGIN
691 sql_stmt := 1;
692
693 SELECT structure_id
694 INTO old_structure_id
695 FROM mtl_category_sets_b
696 WHERE category_set_id = (SELECT category_set_id
697 FROM mtl_default_category_sets
698 WHERE functional_area_id = 19);
699
700 sql_stmt := 3;
701
702 SELECT structure_id
703 INTO new_structure_id
704 FROM mtl_category_sets_b
705 WHERE category_set_id = P_Category_Set_Id;
706
707 IF new_structure_id <> old_structure_id
708 THEN
709 SELECT COUNT (*)
710 INTO opm_count
711 FROM cm_cmpt_mtl
712 WHERE cost_category_id IS NOT NULL AND ROWNUM < 2;
713
714 IF (opm_count = 0)
715 THEN
716 SELECT COUNT (*)
717 INTO opm_count
718 FROM cm_whse_eff
719 WHERE cost_category_id IS NOT NULL AND ROWNUM < 2;
720
721 IF (opm_count = 0)
722 THEN
723 SELECT COUNT (*)
724 INTO opm_count
725 FROM cm_whse_src
726 WHERE cost_category_id IS NOT NULL AND ROWNUM < 2;
727
728 IF (opm_count = 0)
729 THEN
730 SELECT COUNT (*)
731 INTO opm_count
732 FROM gmf_burden_percentages
733 WHERE cost_category_id IS NOT NULL AND ROWNUM < 2;
734
735 IF (opm_count = 0)
736 THEN
737 SELECT COUNT (*)
738 INTO opm_count
739 FROM gmf_lot_costed_items
740 WHERE cost_category_id IS NOT NULL AND ROWNUM < 2;
741 END IF;
742 END IF;
743 END IF;
744 END IF;
745 END IF;
746
747 IF opm_count <> 0
748 THEN
749 RETURN -2;
750 END IF;
751
752 SELECT 'X'
753 INTO buffer
754 FROM DUAL
755 WHERE EXISTS
756 (SELECT 'X'
757 FROM mtl_system_items_b item
758 WHERE item.process_costing_enabled_flag = 'Y'
759 AND item.organization_id IN (SELECT ood.organization_id
760 FROM org_organization_definitions ood
761 WHERE ood.inventory_enabled_flag = 'Y')
762 AND NOT EXISTS
763 (SELECT 'X'
764 FROM mtl_item_categories cat
765 WHERE cat.inventory_item_id = item.inventory_item_id
766 AND cat.organization_id = item.organization_id
767 AND cat.category_set_id = P_Category_Set_Id));
768
769 IF buffer = 'X'
770 THEN
771 RETURN -1;
772 END IF;
773
774 RETURN 0;
775 EXCEPTION
776 WHEN NO_DATA_FOUND
777 THEN
778 RETURN -1;
779 WHEN OTHERS
780 THEN
781 RETURN -1;
782 END val_process_cost_class_cat_set;
783
784 END MTL_DEFAULT_CATEGORY_SETS_PKG;