Subversion Repositories DevTools

Rev

Rev 51 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
51 mhunt 1
CREATE TABLE SYSTEM_CONFIGURATION
2
(
3
  ITEM_NAME VARCHAR2(255 BYTE) NOT NULL,
4
  ITEM_VALUE VARCHAR2(4000 BYTE),
5
  ITEM_DESCRIPTION VARCHAR2(4000 BYTE)
6
, CONSTRAINT PKSYSTEM_CONFIGURATION1 PRIMARY KEY
7
  (
8
    ITEM_NAME
9
  )
10
  ENABLE
11
)
12
  TABLESPACE "USERS"
13
  LOGGING 
14
  PCTFREE 10
15
  PCTUSED 40
16
  INITRANS 1
17
  MAXTRANS 255
18
  STORAGE
19
  (
20
    INITIAL 128K
21
    MINEXTENTS 1
22
    MAXEXTENTS 2147483645
23
    FREELISTS 1
24
    FREELIST GROUPS 1
25
    BUFFER_POOL DEFAULT
26
  )
27
;
28
 
29
CREATE TABLE RELEASE_AUTHORISATION
30
(
31
  PV_ID NUMBER NOT NULL,
32
  BOM_ID NUMBER NOT NULL,
33
  TESTER_ID NUMBER NOT NULL,
34
  TESTER_COMMENTS VARCHAR2(4000 BYTE),
35
  TESTER_DATESTAMP DATE,
36
  MANAGER_ID NUMBER,
37
  MANAGER_COMMENTS VARCHAR2(4000 BYTE),
38
  MANAGER_DATESTAMP DATE,
39
  IS_OFFICIAL CHAR(1 CHAR)
40
)
41
  TABLESPACE "USERS"
42
  LOGGING 
43
  PCTFREE 10
44
  PCTUSED 40
45
  INITRANS 1
46
  MAXTRANS 255
47
  STORAGE
48
  (
49
    INITIAL 64K
50
    MINEXTENTS 1
51
    MAXEXTENTS 2147483645
52
    FREELISTS 1
53
    FREELIST GROUPS 1
54
    BUFFER_POOL DEFAULT
55
  )
56
;
57
 
58
CREATE TABLE BOMS
59
(
60
  BOM_ID NUMBER NOT NULL,
61
  BRANCH_ID NUMBER NOT NULL,
62
  BOM_NAME_ID NUMBER NOT NULL,
63
  BOM_VERSION VARCHAR2(4000 BYTE) NOT NULL,
64
  IS_REJECTED CHAR(1 BYTE),
65
  IS_READONLY CHAR(1 BYTE) NOT NULL,
66
  IS_HIDDEN CHAR(1 BYTE) NOT NULL,
67
  BOM_COMMENTS VARCHAR2(4000 BYTE),
68
  BOM_LIFECYCLE VARCHAR2(4000 BYTE) NOT NULL,
69
  OLD_BOM_ID NUMBER,
70
  PARENT_BOM_ID NUMBER NOT NULL,
71
  RTAG_ID_FK NUMBER,
72
  PDF_ATTACHMENT_PATH VARCHAR2(4000 BYTE)
73
, CONSTRAINT PK_BOMS PRIMARY KEY
74
  (
75
    BOM_ID
76
  )
77
  ENABLE
78
)
79
  TABLESPACE "USERS"
80
  LOGGING 
81
  PCTFREE 10
82
  PCTUSED 40
83
  INITRANS 1
84
  MAXTRANS 255
85
  STORAGE
86
  (
87
    INITIAL 128K
88
    MINEXTENTS 1
89
    MAXEXTENTS 2147483645
90
    FREELISTS 1
91
    FREELIST GROUPS 1
92
    BUFFER_POOL DEFAULT
93
  )
94
;
95
 
96
CREATE TABLE PROCESSES_CONFIG
97
(
98
  PROC_ID NUMBER,
99
  PROD_ID NUMBER NOT NULL,
100
  OS_ID NUMBER NOT NULL,
101
  PKG_HEALTH_TAG VARCHAR2(255 BYTE) NOT NULL,
102
  CMD_INTERFACE VARCHAR2(4000 BYTE),
103
  PKG_OWNER VARCHAR2(4000 BYTE),
104
  IS_INTERFACE CHAR(1 BYTE),
105
  PROC_DESCRIPTION VARCHAR2(4000 BYTE),
106
  PKG_ID NUMBER NOT NULL
107
)
108
  TABLESPACE "USERS"
109
  LOGGING 
110
  PCTFREE 10
111
  PCTUSED 40
112
  INITRANS 1
113
  MAXTRANS 255
114
  STORAGE
115
  (
116
    INITIAL 128K
117
    MINEXTENTS 1
118
    MAXEXTENTS 2147483645
119
    FREELISTS 1
120
    FREELIST GROUPS 1
121
    BUFFER_POOL DEFAULT
122
  )
123
;
124
 
125
CREATE TABLE BRANCHES
126
(
127
  BRANCH_ID NUMBER NOT NULL,
128
  PROJ_ID NUMBER NOT NULL,
129
  BRANCH_NAME VARCHAR2(255 BYTE) NOT NULL,
130
  RM_VTREE_FK NUMBER,
131
  IS_HIDDEN CHAR(1 BYTE),
132
  BRANCH_COMMENTS VARCHAR2(4000 BYTE)
133
, CONSTRAINT PK_BRANCHES PRIMARY KEY
134
  (
135
    BRANCH_ID
136
  )
137
  ENABLE
138
)
139
  TABLESPACE "USERS"
140
  LOGGING 
141
  PCTFREE 10
142
  PCTUSED 40
143
  INITRANS 1
144
  MAXTRANS 255
145
  STORAGE
146
  (
147
    INITIAL 128K
148
    MINEXTENTS 1
149
    MAXEXTENTS 2147483645
150
    FREELISTS 1
151
    FREELIST GROUPS 1
152
    BUFFER_POOL DEFAULT
153
  )
154
;
155
 
156
CREATE TABLE STATES
157
(
158
  STATE_ID NUMBER NOT NULL,
159
  PROJ_ID NUMBER NOT NULL,
160
  STATE_NAME VARCHAR2(255 BYTE) NOT NULL,
161
  STATE_SEQ NUMBER NOT NULL,
162
  STATE_TYPE_ENUM NUMBER NOT NULL,
163
  IS_DOWNLOAD CHAR(1 BYTE)
164
, CONSTRAINT PK_STATES PRIMARY KEY
165
  (
166
    STATE_ID
167
  )
168
  ENABLE
169
)
170
  TABLESPACE "USERS"
171
  LOGGING 
172
  PCTFREE 10
173
  PCTUSED 40
174
  INITRANS 1
175
  MAXTRANS 255
176
  STORAGE
177
  (
178
    INITIAL 128K
179
    MINEXTENTS 1
180
    MAXEXTENTS 2147483645
181
    FREELISTS 1
182
    FREELIST GROUPS 1
183
    BUFFER_POOL DEFAULT
184
  )
185
;
186
 
187
CREATE TABLE PRODUCTION_BOM
188
(
189
  PROJ_ID NUMBER NOT NULL,
190
  BOM_ID NUMBER NOT NULL,
191
  STATE_ID NUMBER
192
)
193
  TABLESPACE "USERS"
194
  LOGGING 
195
  PCTFREE 10
196
  PCTUSED 40
197
  INITRANS 1
198
  MAXTRANS 255
199
  STORAGE
200
  (
201
    INITIAL 64K
202
    MINEXTENTS 1
203
    MAXEXTENTS 2147483645
204
    FREELISTS 1
205
    FREELIST GROUPS 1
206
    BUFFER_POOL DEFAULT
207
  )
208
;
209
 
210
CREATE TABLE NETWORK_NODES
211
(
212
  NODE_ID NUMBER NOT NULL,
213
  NODE_TYPE_ID NUMBER NOT NULL,
214
  NODE_NAME VARCHAR2(255 BYTE) NOT NULL,
215
  NODE_COMMENTS VARCHAR2(4000 BYTE),
216
  OLD_NODE_ID NUMBER,
217
  NODE_VERSION VARCHAR2(4000 BYTE),
218
  NODE_LIFE_CYCLE NUMBER,
219
  NOT_XML VARCHAR2(2 BYTE)
220
, CONSTRAINT PK_NETWORK_NODES PRIMARY KEY
221
  (
222
    NODE_ID
223
  )
224
  ENABLE
225
)
226
  TABLESPACE "USERS"
227
  LOGGING 
228
  PCTFREE 10
229
  PCTUSED 40
230
  INITRANS 1
231
  MAXTRANS 255
232
  STORAGE
233
  (
234
    INITIAL 128K
235
    MINEXTENTS 1
236
    MAXEXTENTS 2147483645
237
    FREELISTS 1
238
    FREELIST GROUPS 1
239
    BUFFER_POOL DEFAULT
240
  )
241
;
242
 
243
CREATE TABLE UNIT_TESTS
244
(
245
  TEST_ID NUMBER NOT NULL,
246
  PV_ID NUMBER NOT NULL,
247
  TEST_TYPES_FK NUMBER NOT NULL,
248
  TEST_SUMMARY VARCHAR2(4000 BYTE),
249
  COMPLETION_DATE DATE,
250
  COMPLETED_BY NUMBER,
251
  RESULTS_URL VARCHAR2(2000 BYTE),
252
  RESULTS_ATTACHMENT_NAME VARCHAR2(2000 BYTE)
253
)
254
  TABLESPACE "USERS"
255
  LOGGING 
256
  PCTFREE 10
257
  PCTUSED 40
258
  INITRANS 1
259
  MAXTRANS 255
260
  STORAGE
261
  (
262
    INITIAL 64K
263
    MINEXTENTS 1
264
    MAXEXTENTS 2147483645
265
    FREELISTS 1
266
    FREELIST GROUPS 1
267
    BUFFER_POOL DEFAULT
268
  )
269
;
270
 
271
CREATE TABLE BOM_NOTES
272
(
273
  BOM_ID NUMBER NOT NULL,
274
  BOM_SCOPE NUMBER NOT NULL,
275
  SCOPE_ID NUMBER NOT NULL,
276
  ARTICLE_ID NUMBER NOT NULL
277
)
278
  TABLESPACE "USERS"
279
  LOGGING 
280
  PCTFREE 10
281
  PCTUSED 40
282
  INITRANS 1
283
  MAXTRANS 255
284
  STORAGE
285
  (
286
    INITIAL 128K
287
    MINEXTENTS 1
288
    MAXEXTENTS 2147483645
289
    FREELISTS 1
290
    FREELIST GROUPS 1
291
    BUFFER_POOL DEFAULT
292
  )
293
;
294
 
295
CREATE TABLE PRODUCT_NOTES
296
(
297
  PROD_ID NUMBER NOT NULL,
298
  NOTES VARCHAR2(4000 BYTE)
299
, CONSTRAINT PRODUCT_NOTES_PK PRIMARY KEY
300
  (
301
    PROD_ID
302
  )
303
  ENABLE
304
)
305
  TABLESPACE "USERS"
306
  LOGGING 
307
  PCTFREE 10
308
  PCTUSED 40
309
  INITRANS 1
310
  MAXTRANS 255
311
  STORAGE
312
  (
313
    INITIAL 64K
314
    MINEXTENTS 1
315
    MAXEXTENTS 2147483645
316
    FREELISTS 1
317
    FREELIST GROUPS 1
318
    BUFFER_POOL DEFAULT
319
  )
320
;
321
 
322
CREATE TABLE KNOWLEDGE_BASE
323
(
324
  ARTICLE_ID NUMBER NOT NULL,
325
  ARTICLE_TITLE VARCHAR2(4000 BYTE) NOT NULL,
326
  ARTICLE_DETAILS VARCHAR2(4000 BYTE) NOT NULL,
327
  VISIBILITY_LEVEL_FK NUMBER NOT NULL,
328
  IS_READONLY CHAR(1 BYTE),
329
  CREATED_STAMP DATE NOT NULL,
330
  CREATOR_ID NUMBER NOT NULL,
331
  MOD_STAMP DATE NOT NULL,
332
  MODIFIER_ID NUMBER NOT NULL
333
, CONSTRAINT PK_KNOWLEDGE_BASE PRIMARY KEY
334
  (
335
    ARTICLE_ID
336
  )
337
  ENABLE
338
)
339
  TABLESPACE "USERS"
340
  LOGGING 
341
  PCTFREE 10
342
  PCTUSED 40
343
  INITRANS 1
344
  MAXTRANS 255
345
  STORAGE
346
  (
347
    INITIAL 128K
348
    MINEXTENTS 1
349
    MAXEXTENTS 2147483645
350
    FREELISTS 1
351
    FREELIST GROUPS 1
352
    BUFFER_POOL DEFAULT
353
  )
354
;
355
 
356
CREATE TABLE REJECTION_TRAIL
357
(
358
  ENUM_ENTITY_TYPE NUMBER NOT NULL,
359
  ENTITY_ID NUMBER NOT NULL,
360
  REJECT_SEQ NUMBER NOT NULL,
361
  IS_REJECTED CHAR(1 BYTE),
362
  COMMENTS VARCHAR2(4000 BYTE),
363
  DATE_TIME_STAMP DATE NOT NULL,
364
  USER_ID NUMBER NOT NULL
365
)
366
  TABLESPACE "USERS"
367
  LOGGING 
368
  PCTFREE 10
369
  PCTUSED 40
370
  INITRANS 1
371
  MAXTRANS 255
372
  STORAGE
373
  (
374
    INITIAL 128K
375
    MINEXTENTS 1
376
    MAXEXTENTS 2147483645
377
    FREELISTS 1
378
    FREELIST GROUPS 1
379
    BUFFER_POOL DEFAULT
380
  )
381
;
382
 
383
CREATE TABLE HARDWARE_NODE
384
(
385
  HARDWARE_NAME_ID NUMBER NOT NULL,
386
  NODE_ID NUMBER NOT NULL
387
)
388
  TABLESPACE "USERS"
389
  LOGGING 
390
  PCTFREE 10
391
  PCTUSED 40
392
  INITRANS 1
393
  MAXTRANS 255
394
  STORAGE
395
  (
396
    INITIAL 128K
397
    MINEXTENTS 1
398
    MAXEXTENTS 2147483645
399
    FREELISTS 1
400
    FREELIST GROUPS 1
401
    BUFFER_POOL DEFAULT
402
  )
403
;
404
 
405
CREATE TABLE NOTIFY_USER
406
(
407
  PROJ_ID NUMBER NOT NULL,
408
  USER_ID NUMBER NOT NULL,
409
  EVENT_ENUM NUMBER NOT NULL
410
)
411
  TABLESPACE "USERS"
412
  LOGGING 
413
  PCTFREE 10
414
  PCTUSED 40
415
  INITRANS 1
416
  MAXTRANS 255
417
  STORAGE
418
  (
419
    INITIAL 128K
420
    MINEXTENTS 1
421
    MAXEXTENTS 2147483645
422
    FREELISTS 1
423
    FREELIST GROUPS 1
424
    BUFFER_POOL DEFAULT
425
  )
426
;
427
 
428
CREATE TABLE NODE_TYPES
429
(
430
  NODE_TYPE_ID NUMBER NOT NULL,
431
  NODE_TYPE VARCHAR2(50 BYTE) NOT NULL,
432
  NODE_ICON VARCHAR2(50 BYTE) NOT NULL,
433
  NODE_IMAGE VARCHAR2(50 BYTE) NOT NULL,
434
  NODE_ORDER NUMBER
435
, CONSTRAINT PK_NODE_TYPES PRIMARY KEY
436
  (
437
    NODE_TYPE_ID
438
  )
439
  ENABLE
440
)
441
  TABLESPACE "USERS"
442
  LOGGING 
443
  PCTFREE 10
444
  PCTUSED 40
445
  INITRANS 1
446
  MAXTRANS 255
447
  STORAGE
448
  (
449
    INITIAL 128K
450
    MINEXTENTS 1
451
    MAXEXTENTS 2147483645
452
    FREELISTS 1
453
    FREELIST GROUPS 1
454
    BUFFER_POOL DEFAULT
455
  )
456
;
457
 
458
CREATE TABLE TABLEOFCONTENTS
459
(
460
  GROUPER VARCHAR2(1000 BYTE),
461
  PAGE NUMBER(*, 0),
462
  DATETIME DATE
463
)
464
  TABLESPACE "USERS"
465
  LOGGING 
466
  PCTFREE 10
467
  PCTUSED 40
468
  INITRANS 1
469
  MAXTRANS 255
470
  STORAGE
471
  (
472
    INITIAL 64K
473
    MINEXTENTS 1
474
    MAXEXTENTS 2147483645
475
    FREELISTS 1
476
    FREELIST GROUPS 1
477
    BUFFER_POOL DEFAULT
478
  )
479
;
480
 
481
CREATE TABLE OS_TRAIL
482
(
483
  OS_ID NUMBER,
484
  TRAIL_ACTION VARCHAR2(4000 BYTE),
485
  USER_ID NUMBER NOT NULL,
486
  DATE_TIME_STAMP DATE NOT NULL
487
)
488
  TABLESPACE "USERS"
489
  LOGGING 
490
  PCTFREE 10
491
  PCTUSED 40
492
  INITRANS 1
493
  MAXTRANS 255
494
  STORAGE
495
  (
496
    INITIAL 64K
497
    MINEXTENTS 1
498
    MAXEXTENTS 2147483645
499
    FREELISTS 1
500
    FREELIST GROUPS 1
501
    BUFFER_POOL DEFAULT
502
  )
503
;
504
 
505
CREATE TABLE BOM_STATE
506
(
507
  BOM_ID NUMBER NOT NULL,
508
  STATE_ID NUMBER NOT NULL,
509
  DATE_STAMP DATE,
510
  USER_ID NUMBER NOT NULL,
511
  IS_DISPLAYED CHAR(1 BYTE) NOT NULL
512
)
513
  TABLESPACE "USERS"
514
  LOGGING 
515
  PCTFREE 10
516
  PCTUSED 40
517
  INITRANS 1
518
  MAXTRANS 255
519
  STORAGE
520
  (
521
    INITIAL 128K
522
    MINEXTENTS 1
523
    MAXEXTENTS 2147483645
524
    FREELISTS 1
525
    FREELIST GROUPS 1
526
    BUFFER_POOL DEFAULT
527
  )
528
;
529
 
530
CREATE TABLE OS_CONTENTS
531
(
532
  OS_ID NUMBER NOT NULL,
533
  SEQ_NUM NUMBER NOT NULL,
534
  PROD_ID NUMBER NOT NULL,
535
  PRODUCT_COMMENTS VARCHAR2(4000 BYTE),
536
  CHANGE_LOG_FLAG CHAR(1 BYTE),
537
  IS_NODE_SPEC VARCHAR2(2 BYTE),
538
  NOT_XML VARCHAR2(2 BYTE)
539
)
540
  TABLESPACE "USERS"
541
  LOGGING 
542
  PCTFREE 10
543
  PCTUSED 40
544
  INITRANS 1
545
  MAXTRANS 255
546
  STORAGE
547
  (
548
    INITIAL 128K
549
    MINEXTENTS 1
550
    MAXEXTENTS 2147483645
551
    FREELISTS 1
552
    FREELIST GROUPS 1
553
    BUFFER_POOL DEFAULT
554
  )
555
;
556
 
557
CREATE TABLE OPERATING_SYSTEMS
558
(
559
  OS_ID NUMBER NOT NULL,
560
  OS_NAME VARCHAR2(50 BYTE) NOT NULL,
561
  NODE_ID NUMBER NOT NULL,
562
  OS_COMMENTS VARCHAR2(4000 BYTE),
563
  OLD_OS_ID NUMBER,
564
  NODE_SPEC_FILE VARCHAR2(4000 BYTE),
565
  NOT_XML VARCHAR2(2 BYTE)
566
, CONSTRAINT PK_OPERATING_SYSTEMS PRIMARY KEY
567
  (
568
    OS_ID
569
  )
570
  ENABLE
571
)
572
  TABLESPACE "USERS"
573
  LOGGING 
574
  PCTFREE 10
575
  PCTUSED 40
576
  INITRANS 1
577
  MAXTRANS 255
578
  STORAGE
579
  (
580
    INITIAL 128K
581
    MINEXTENTS 1
582
    MAXEXTENTS 2147483645
583
    FREELISTS 1
584
    FREELIST GROUPS 1
585
    BUFFER_POOL DEFAULT
586
  )
587
;
588
 
589
CREATE TABLE RELATED_ARTICLES
590
(
591
  ARTICLE_ID NUMBER NOT NULL,
592
  RARTICLE_ID NUMBER NOT NULL
593
)
594
  TABLESPACE "USERS"
595
  LOGGING 
596
  PCTFREE 10
597
  PCTUSED 40
598
  INITRANS 1
599
  MAXTRANS 255
600
  STORAGE
601
  (
602
    INITIAL 128K
603
    MINEXTENTS 1
604
    MAXEXTENTS 2147483645
605
    FREELISTS 1
606
    FREELIST GROUPS 1
607
    BUFFER_POOL DEFAULT
608
  )
609
;
610
 
611
CREATE TABLE NODE_TRAIL
612
(
613
  NODE_ID NUMBER NOT NULL,
614
  TRAIL_ACTION VARCHAR2(4000 BYTE),
615
  USER_ID NUMBER NOT NULL,
616
  DATE_TIME_STAMP DATE NOT NULL
617
)
618
  TABLESPACE "USERS"
619
  LOGGING 
620
  PCTFREE 10
621
  PCTUSED 40
622
  INITRANS 1
623
  MAXTRANS 255
624
  STORAGE
625
  (
626
    INITIAL 64K
627
    MINEXTENTS 1
628
    MAXEXTENTS 2147483645
629
    FREELISTS 1
630
    FREELIST GROUPS 1
631
    BUFFER_POOL DEFAULT
632
  )
633
;
634
 
635
CREATE TABLE HARDWARE
636
(
637
  HARDWARE_NAME_ID NUMBER NOT NULL,
638
  BOM_ID NUMBER NOT NULL,
639
  HARDWARE_NAME VARCHAR2(255 BYTE) NOT NULL,
640
  TIER_NAME VARCHAR2(255 BYTE),
641
  OLD_HARDWARE_NAME_ID NUMBER
642
, CONSTRAINT PK_HARDWARE PRIMARY KEY
643
  (
644
    HARDWARE_NAME_ID
645
  )
646
  ENABLE
647
)
648
  TABLESPACE "USERS"
649
  LOGGING 
650
  PCTFREE 10
651
  PCTUSED 40
652
  INITRANS 1
653
  MAXTRANS 255
654
  STORAGE
655
  (
656
    INITIAL 128K
657
    MINEXTENTS 1
658
    MAXEXTENTS 2147483645
659
    FREELISTS 1
660
    FREELIST GROUPS 1
661
    BUFFER_POOL DEFAULT
662
  )
663
;
664
 
665
CREATE TABLE BOM_CONTENTS
666
(
667
  BOM_ID NUMBER NOT NULL,
668
  NODE_ID NUMBER NOT NULL,
669
  SEQ_NUM NUMBER
670
)
671
  TABLESPACE "USERS"
672
  LOGGING 
673
  PCTFREE 10
674
  PCTUSED 40
675
  INITRANS 1
676
  MAXTRANS 255
677
  STORAGE
678
  (
679
    INITIAL 128K
680
    MINEXTENTS 1
681
    MAXEXTENTS 2147483645
682
    FREELISTS 1
683
    FREELIST GROUPS 1
684
    BUFFER_POOL DEFAULT
685
  )
686
;
687
 
688
CREATE TABLE OS_BASE_ENV
689
(
690
  OS_ID NUMBER NOT NULL,
691
  BASE_ENV_ID NUMBER NOT NULL
692
)
693
  TABLESPACE "USERS"
694
  LOGGING 
695
  PCTFREE 10
696
  PCTUSED 40
697
  INITRANS 1
698
  MAXTRANS 255
699
  STORAGE
700
  (
701
    INITIAL 128K
702
    MINEXTENTS 1
703
    MAXEXTENTS 2147483645
704
    FREELISTS 1
705
    FREELIST GROUPS 1
706
    BUFFER_POOL DEFAULT
707
  )
708
;
709
 
710
CREATE TABLE PRODUCT_TRAIL
711
(
712
  PROD_ID NUMBER,
713
  TRAIL_ACTION VARCHAR2(4000 BYTE),
714
  USER_ID NUMBER NOT NULL,
715
  DATE_TIME_STAMP DATE NOT NULL
716
)
717
  TABLESPACE "USERS"
718
  LOGGING 
719
  PCTFREE 10
720
  PCTUSED 40
721
  INITRANS 1
722
  MAXTRANS 255
723
  STORAGE
724
  (
725
    INITIAL 64K
726
    MINEXTENTS 1
727
    MAXEXTENTS 2147483645
728
    FREELISTS 1
729
    FREELIST GROUPS 1
730
    BUFFER_POOL DEFAULT
731
  )
732
;
733
 
734
CREATE TABLE BOM_TRAIL
735
(
736
  BOM_ID NUMBER NOT NULL,
737
  TRAIL_ACTION VARCHAR2(4000 BYTE) NOT NULL,
738
  TRAIL_COMMENTS VARCHAR2(4000 BYTE),
739
  USER_ID NUMBER NOT NULL,
740
  DATE_TIME_STAMP DATE NOT NULL
741
)
742
  TABLESPACE "USERS"
743
  LOGGING 
744
  PCTFREE 10
745
  PCTUSED 40
746
  INITRANS 1
747
  MAXTRANS 255
748
  STORAGE
749
  (
750
    INITIAL 128K
751
    MINEXTENTS 1
752
    MAXEXTENTS 2147483645
753
    FREELISTS 1
754
    FREELIST GROUPS 1
755
    BUFFER_POOL DEFAULT
756
  )
757
;
758
 
759
CREATE TABLE TEST_TYPES
760
(
761
  TEST_TYPE_ID NUMBER NOT NULL,
762
  TEST_TYPE_NAME VARCHAR2(50 BYTE) NOT NULL,
763
  DISPLAY_ORDER NUMBER
764
, PRIMARY KEY
765
  (
766
    TEST_TYPE_ID
767
  )
768
  ENABLE
769
)
770
  TABLESPACE "USERS"
771
  LOGGING 
772
  PCTFREE 10
773
  PCTUSED 40
774
  INITRANS 1
775
  MAXTRANS 255
776
  STORAGE
777
  (
778
    INITIAL 64K
779
    MINEXTENTS 1
780
    MAXEXTENTS 2147483645
781
    FREELISTS 1
782
    FREELIST GROUPS 1
783
    BUFFER_POOL DEFAULT
784
  )
785
;
786
 
787
CREATE TABLE PACKAGE_TRAIL
788
(
789
  PKG_ID NUMBER NOT NULL,
790
  TRAIL_ACTION VARCHAR2(4000 BYTE) NOT NULL,
791
  USER_ID NUMBER NOT NULL,
792
  DATE_TIME_STAMP DATE NOT NULL
793
)
794
  TABLESPACE "USERS"
795
  LOGGING 
796
  PCTFREE 10
797
  PCTUSED 40
798
  INITRANS 1
799
  MAXTRANS 255
800
  STORAGE
801
  (
802
    INITIAL 64K
803
    MINEXTENTS 1
804
    MAXEXTENTS 2147483645
805
    FREELISTS 1
806
    FREELIST GROUPS 1
807
    BUFFER_POOL DEFAULT
808
  )
809
;
810
 
811
CREATE TABLE BOM_NAMES
812
(
813
  BOM_NAME_ID NUMBER NOT NULL,
814
  BOM_NAME VARCHAR2(255 BYTE) NOT NULL
815
, CONSTRAINT PK_BOM_NAMES PRIMARY KEY
816
  (
817
    BOM_NAME_ID
818
  )
819
  ENABLE
820
)
821
  TABLESPACE "USERS"
822
  LOGGING 
823
  PCTFREE 10
824
  PCTUSED 40
825
  INITRANS 1
826
  MAXTRANS 255
827
  STORAGE
828
  (
829
    INITIAL 128K
830
    MINEXTENTS 1
831
    MAXEXTENTS 2147483645
832
    FREELISTS 1
833
    FREELIST GROUPS 1
834
    BUFFER_POOL DEFAULT
835
  )
836
;
837
 
838
CREATE TABLE BASE_ENV
839
(
840
  BASE_ENV_ID NUMBER NOT NULL,
841
  BOS_ID NUMBER NOT NULL,
842
  BASE_ENV_NAME VARCHAR2(50 BYTE) NOT NULL,
843
  OLD_BASE_ENV_ID NUMBER,
844
  BOM_ID NUMBER NOT NULL
845
, CONSTRAINT PK_BASE_ENV PRIMARY KEY
846
  (
847
    BASE_ENV_ID
848
  )
849
  ENABLE
850
)
851
  TABLESPACE "USERS"
852
  LOGGING 
853
  PCTFREE 10
854
  PCTUSED 40
855
  INITRANS 1
856
  MAXTRANS 255
857
  STORAGE
858
  (
859
    INITIAL 128K
860
    MINEXTENTS 1
861
    MAXEXTENTS 2147483645
862
    FREELISTS 1
863
    FREELIST GROUPS 1
864
    BUFFER_POOL DEFAULT
865
  )
866
;
867
 
868
CREATE TABLE ACTION_TRAIL
869
(
870
  ACTION_STAMP DATE NOT NULL,
871
  USER_ID NUMBER NOT NULL,
872
  ACTION_EVENT NUMBER NOT NULL,
873
  METHOD_CALL VARCHAR2(4000 BYTE),
874
  ACTION_SCRIPT VARCHAR2(4000 BYTE),
875
  ACTION_DESCRIPTION VARCHAR2(4000 BYTE)
876
)
877
  TABLESPACE "USERS"
878
  LOGGING 
879
  PCTFREE 10
880
  PCTUSED 40
881
  INITRANS 1
882
  MAXTRANS 255
883
  STORAGE
884
  (
885
    INITIAL 128K
886
    MINEXTENTS 1
887
    MAXEXTENTS 2147483645
888
    FREELISTS 1
889
    FREELIST GROUPS 1
890
    BUFFER_POOL DEFAULT
891
  )
892
;
893
 
894
CREATE TABLE DM_PROJECTS
895
(
896
  PROJ_ID NUMBER NOT NULL,
897
  PROJ_NAME VARCHAR2(255 BYTE) NOT NULL,
898
  RM_PROJECTS_FK NUMBER,
899
  IS_HIDDEN CHAR(1 BYTE),
900
  IS_DOWNLOAD CHAR(1 BYTE)
901
, CONSTRAINT PK_DM_PROJECTS PRIMARY KEY
902
  (
903
    PROJ_ID
904
  )
905
  ENABLE
906
)
907
  TABLESPACE "USERS"
908
  LOGGING 
909
  PCTFREE 10
910
  PCTUSED 40
911
  INITRANS 1
912
  MAXTRANS 255
913
  STORAGE
914
  (
915
    INITIAL 128K
916
    MINEXTENTS 1
917
    MAXEXTENTS 2147483645
918
    FREELISTS 1
919
    FREELIST GROUPS 1
920
    BUFFER_POOL DEFAULT
921
  )
922
;
923
 
924
CREATE TABLE PRODUCTS_QUEUE
925
(
926
  PRODQ_ID NUMBER,
927
  PROJ_ID NUMBER NOT NULL,
928
  PROD_ID NUMBER NOT NULL,
929
  ARRIVAL_STAMP DATE NOT NULL
930
)
931
  TABLESPACE "USERS"
932
  LOGGING 
933
  PCTFREE 10
934
  PCTUSED 40
935
  INITRANS 1
936
  MAXTRANS 255
937
  STORAGE
938
  (
939
    INITIAL 128K
940
    MINEXTENTS 1
941
    MAXEXTENTS 2147483645
942
    FREELISTS 1
943
    FREELIST GROUPS 1
944
    BUFFER_POOL DEFAULT
945
  )
946
;
947
 
948
CREATE TABLE PRODUCT_DETAILS
949
(
950
  PROD_ID NUMBER NOT NULL,
951
  IS_REJECTED CHAR(1 BYTE)
952
, CONSTRAINT PKPRODUCT_DETAILS PRIMARY KEY
953
  (
954
    PROD_ID
955
  )
956
  ENABLE
957
)
958
  TABLESPACE "USERS"
959
  LOGGING 
960
  PCTFREE 10
961
  PCTUSED 40
962
  INITRANS 1
963
  MAXTRANS 255
964
  STORAGE
965
  (
966
    INITIAL 128K
967
    MINEXTENTS 1
968
    MAXEXTENTS 2147483645
969
    FREELISTS 1
970
    FREELIST GROUPS 1
971
    BUFFER_POOL DEFAULT
972
  )
973
;
974
 
975
CREATE TABLE DEF_MENU_ITEMS
976
(
977
  ITEM_ID NUMBER NOT NULL,
978
  ITEM_NAME VARCHAR2(1000 BYTE) NOT NULL,
979
  TEXT VARCHAR2(255 BYTE),
980
  ACTION_LINK VARCHAR2(255 BYTE),
981
  EVENT_HANDLER VARCHAR2(4000 BYTE),
982
  IMG_ENABLED VARCHAR2(4000 BYTE),
983
  IMG_DISABLED VARCHAR2(4000 BYTE),
984
  HINT VARCHAR2(50 BYTE),
985
  VISIBLE CHAR(1 BYTE) NOT NULL,
986
  ACTIVE CHAR(1 BYTE) NOT NULL
987
, CONSTRAINT PK_DEF_MENU_ITEMS PRIMARY KEY
988
  (
989
    ITEM_ID
990
  )
991
  ENABLE
992
)
993
  TABLESPACE "USERS"
994
  LOGGING 
995
  PCTFREE 10
996
  PCTUSED 40
997
  INITRANS 1
998
  MAXTRANS 255
999
  STORAGE
1000
  (
1001
    INITIAL 128K
1002
    MINEXTENTS 1
1003
    MAXEXTENTS 2147483645
1004
    FREELISTS 1
1005
    FREELIST GROUPS 1
1006
    BUFFER_POOL DEFAULT
1007
  )
1008
;
1009
 
1010
CREATE TABLE HIDE_PRODUCTS
1011
(
1012
  OS_ID NUMBER NOT NULL,
1013
  PROD_ID NUMBER NOT NULL
1014
)
1015
  TABLESPACE "USERS"
1016
  LOGGING 
1017
  PCTFREE 10
1018
  PCTUSED 40
1019
  INITRANS 1
1020
  MAXTRANS 255
1021
  STORAGE
1022
  (
1023
    INITIAL 64K
1024
    MINEXTENTS 1
1025
    MAXEXTENTS 2147483645
1026
    FREELISTS 1
1027
    FREELIST GROUPS 1
1028
    BUFFER_POOL DEFAULT
1029
  )
1030
;
1031
 
1032
CREATE TABLE MESSAGE_BOARD
1033
(
1034
  MSG_ID NUMBER NOT NULL,
1035
  MSG_DETAILS VARCHAR2(2000 BYTE) NOT NULL,
1036
  SUBMITION_DATE DATE NOT NULL,
1037
  EXPIRY_DATE DATE,
1038
  DUE_DATE DATE
1039
)
1040
  TABLESPACE "SYSTEM"
1041
  LOGGING 
1042
  PCTFREE 10
1043
  PCTUSED 40
1044
  INITRANS 1
1045
  MAXTRANS 255
1046
  STORAGE
1047
  (
1048
    INITIAL 64K
1049
    NEXT 64K
1050
    MINEXTENTS 1
1051
    MAXEXTENTS 2147483645
1052
    PCTINCREASE 0
1053
    FREELISTS 1
1054
    FREELIST GROUPS 1
1055
    BUFFER_POOL DEFAULT
1056
  )
1057
;
1058
 
1059
CREATE TABLE BASE_ENV_CONTENTS
1060
(
1061
  BASE_ENV_ID NUMBER NOT NULL,
1062
  PROD_ID NUMBER NOT NULL,
1063
  BASE_ENV_COMMENTS VARCHAR2(4000 BYTE),
1064
  SEQ_NUM NUMBER NOT NULL,
1065
  IS_NODE_SPEC VARCHAR2(2 BYTE),
1066
  NOT_XML VARCHAR2(2 BYTE)
1067
)
1068
  TABLESPACE "USERS"
1069
  LOGGING 
1070
  PCTFREE 10
1071
  PCTUSED 40
1072
  INITRANS 1
1073
  MAXTRANS 255
1074
  STORAGE
1075
  (
1076
    INITIAL 128K
1077
    MINEXTENTS 1
1078
    MAXEXTENTS 2147483645
1079
    FREELISTS 1
1080
    FREELIST GROUPS 1
1081
    BUFFER_POOL DEFAULT
1082
  )
1083
;
1084
 
1085
CREATE TABLE DEF_ACTION_BUTTONS
1086
(
1087
  ABTN_ID NUMBER NOT NULL,
1088
  ABTN_NAME VARCHAR2(1000 BYTE) NOT NULL,
1089
  TEXT VARCHAR2(50 BYTE),
1090
  ACTION_LINK VARCHAR2(4000 BYTE),
1091
  EVENT_HANDLER VARCHAR2(4000 BYTE),
1092
  IMG_ENABLED VARCHAR2(1000 BYTE),
1093
  IMG_DISABLED VARCHAR2(1000 BYTE),
1094
  HINT VARCHAR2(1000 BYTE),
1095
  VISIBLE CHAR(1 BYTE) NOT NULL,
1096
  ACTIVE CHAR(1 BYTE) NOT NULL,
1097
  IS_READONLY_ACTION CHAR(1 BYTE) NOT NULL
1098
, CONSTRAINT PK_DEF_ACTION_BUTTONS PRIMARY KEY
1099
  (
1100
    ABTN_ID
1101
  )
1102
  ENABLE
1103
)
1104
  TABLESPACE "USERS"
1105
  LOGGING 
1106
  PCTFREE 10
1107
  PCTUSED 40
1108
  INITRANS 1
1109
  MAXTRANS 255
1110
  STORAGE
1111
  (
1112
    INITIAL 128K
1113
    MINEXTENTS 1
1114
    MAXEXTENTS 2147483645
1115
    FREELISTS 1
1116
    FREELIST GROUPS 1
1117
    BUFFER_POOL DEFAULT
1118
  )
1119
;
1120
 
1121
CREATE TABLE BOS_TYPES
1122
(
1123
  BOS_ID NUMBER NOT NULL,
1124
  BOS_TYPE VARCHAR2(50 BYTE) NOT NULL,
1125
  BOS_ICON VARCHAR2(50 BYTE) NOT NULL,
1126
  BOS_ORDER NUMBER,
1127
  ELECTRONIC_NAME VARCHAR2(50 BYTE)
1128
, CONSTRAINT PK_BOS_TYPES PRIMARY KEY
1129
  (
1130
    BOS_ID
1131
  )
1132
  ENABLE
1133
)
1134
  TABLESPACE "USERS"
1135
  LOGGING 
1136
  PCTFREE 10
1137
  PCTUSED 40
1138
  INITRANS 1
1139
  MAXTRANS 255
1140
  STORAGE
1141
  (
1142
    INITIAL 128K
1143
    MINEXTENTS 1
1144
    MAXEXTENTS 2147483645
1145
    FREELISTS 1
1146
    FREELIST GROUPS 1
1147
    BUFFER_POOL DEFAULT
1148
  )
1149
;
1150
 
1151
CREATE TABLE VALIDATION_RULES
1152
(
1153
  FIELD_NAME VARCHAR2(1000 BYTE) NOT NULL,
1154
  IS_REQUIRED CHAR(1 BYTE) NOT NULL,
1155
  IS_NUMERIC CHAR(1 BYTE),
1156
  MIN_NUMERIC_VALUE NUMBER,
1157
  MAX_NUMERIC_VALUE NUMBER,
1158
  IS_DATE CHAR(1 BYTE),
1159
  START_DATE DATE,
1160
  END_DATE DATE,
1161
  MIN_STRING_LENGTH NUMBER,
1162
  MAX_STRING_LENGTH NUMBER,
1163
  REGEXP VARCHAR2(4000 BYTE),
1164
  REGEXP_DESCRIPTION VARCHAR2(50 BYTE)
1165
)
1166
  TABLESPACE "USERS"
1167
  LOGGING 
1168
  PCTFREE 10
1169
  PCTUSED 40
1170
  INITRANS 1
1171
  MAXTRANS 255
1172
  STORAGE
1173
  (
1174
    INITIAL 128K
1175
    MINEXTENTS 1
1176
    MAXEXTENTS 2147483645
1177
    FREELISTS 1
1178
    FREELIST GROUPS 1
1179
    BUFFER_POOL DEFAULT
1180
  )
1181
;
1182
 
1183
ALTER TABLE RELEASE_AUTHORISATION
1184
ADD CONSTRAINT RELEASE_AUTHORISATION_R01 FOREIGN KEY
1185
(
1186
  BOM_ID
1187
)
1188
REFERENCES BOMS
1189
(
1190
BOM_ID
1191
) ENABLE
1192
;
1193
 
1194
ALTER TABLE BOMS
1195
ADD CONSTRAINT FK_BOMS_REF_BOM_NAME FOREIGN KEY
1196
(
1197
  BOM_NAME_ID
1198
)
1199
REFERENCES BOM_NAMES
1200
(
1201
BOM_NAME_ID
1202
) ENABLE
1203
;
1204
 
1205
ALTER TABLE BOMS
1206
ADD CONSTRAINT FK_BOMS_REF_BRANCHES FOREIGN KEY
1207
(
1208
  BRANCH_ID
1209
)
1210
REFERENCES BRANCHES
1211
(
1212
BRANCH_ID
1213
) ENABLE
1214
;
1215
 
1216
ALTER TABLE PROCESSES_CONFIG
1217
ADD CONSTRAINT FK_PROC_CONFIG_REF_OS FOREIGN KEY
1218
(
1219
  OS_ID
1220
)
1221
REFERENCES OPERATING_SYSTEMS
1222
(
1223
OS_ID
1224
) DISABLE
1225
;
1226
 
1227
ALTER TABLE BRANCHES
1228
ADD CONSTRAINT FK_BRANCHES_RE_DM_PROJ FOREIGN KEY
1229
(
1230
  PROJ_ID
1231
)
1232
REFERENCES DM_PROJECTS
1233
(
1234
PROJ_ID
1235
) ENABLE
1236
;
1237
 
1238
ALTER TABLE STATES
1239
ADD CONSTRAINT FK_STATES_REF_DM_PROJ FOREIGN KEY
1240
(
1241
  PROJ_ID
1242
)
1243
REFERENCES DM_PROJECTS
1244
(
1245
PROJ_ID
1246
) ENABLE
1247
;
1248
 
1249
ALTER TABLE PRODUCTION_BOM
1250
ADD FOREIGN KEY
1251
(
1252
  STATE_ID
1253
)
1254
REFERENCES STATES
1255
(
1256
STATE_ID
1257
) ENABLE
1258
;
1259
 
1260
ALTER TABLE PRODUCTION_BOM
1261
ADD FOREIGN KEY
1262
(
1263
  BOM_ID
1264
)
1265
REFERENCES BOMS
1266
(
1267
BOM_ID
1268
) ENABLE
1269
;
1270
 
1271
ALTER TABLE PRODUCTION_BOM
1272
ADD FOREIGN KEY
1273
(
1274
  PROJ_ID
1275
)
1276
REFERENCES DM_PROJECTS
1277
(
1278
PROJ_ID
1279
) ENABLE
1280
;
1281
 
1282
ALTER TABLE NETWORK_NODES
1283
ADD CONSTRAINT FK_NETWORK__REF_NODE_TYP FOREIGN KEY
1284
(
1285
  NODE_TYPE_ID
1286
)
1287
REFERENCES NODE_TYPES
1288
(
1289
NODE_TYPE_ID
1290
) ENABLE
1291
;
1292
 
1293
ALTER TABLE BOM_NOTES
1294
ADD CONSTRAINT FK_BOM_NOTES_REF_BOMS FOREIGN KEY
1295
(
1296
  BOM_ID
1297
)
1298
REFERENCES BOMS
1299
(
1300
BOM_ID
1301
) ENABLE
1302
;
1303
 
1304
ALTER TABLE BOM_NOTES
1305
ADD CONSTRAINT FK_BOM_NOTE_REF_HELP_NOTE FOREIGN KEY
1306
(
1307
  ARTICLE_ID
1308
)
1309
REFERENCES KNOWLEDGE_BASE
1310
(
1311
ARTICLE_ID
1312
) ENABLE
1313
;
1314
 
1315
ALTER TABLE HARDWARE_NODE
1316
ADD CONSTRAINT FK_HARDWARE_NODE_REF_HARDWARE FOREIGN KEY
1317
(
1318
  HARDWARE_NAME_ID
1319
)
1320
REFERENCES HARDWARE
1321
(
1322
HARDWARE_NAME_ID
1323
) ENABLE
1324
;
1325
 
1326
ALTER TABLE HARDWARE_NODE
1327
ADD CONSTRAINT FK_HARDWARE_REF_NETWORK FOREIGN KEY
1328
(
1329
  NODE_ID
1330
)
1331
REFERENCES NETWORK_NODES
1332
(
1333
NODE_ID
1334
) ENABLE
1335
;
1336
 
1337
ALTER TABLE NOTIFY_USER
1338
ADD CONSTRAINT FK_NOTIFY_USR_REFE_DM_PROJ FOREIGN KEY
1339
(
1340
  PROJ_ID
1341
)
1342
REFERENCES DM_PROJECTS
1343
(
1344
PROJ_ID
1345
) ENABLE
1346
;
1347
 
1348
ALTER TABLE BOM_STATE
1349
ADD CONSTRAINT FK_BOM_STAT_REF_STATES FOREIGN KEY
1350
(
1351
  STATE_ID
1352
)
1353
REFERENCES STATES
1354
(
1355
STATE_ID
1356
) ENABLE
1357
;
1358
 
1359
ALTER TABLE BOM_STATE
1360
ADD CONSTRAINT FK_BOM_STAT_REF_BOMS FOREIGN KEY
1361
(
1362
  BOM_ID
1363
)
1364
REFERENCES BOMS
1365
(
1366
BOM_ID
1367
) ENABLE
1368
;
1369
 
1370
ALTER TABLE OS_CONTENTS
1371
ADD CONSTRAINT FK_OS_CONTE_REF_OPERATIN FOREIGN KEY
1372
(
1373
  OS_ID
1374
)
1375
REFERENCES OPERATING_SYSTEMS
1376
(
1377
OS_ID
1378
) ENABLE
1379
;
1380
 
1381
ALTER TABLE OPERATING_SYSTEMS
1382
ADD CONSTRAINT FK_OPERATIN_REF_NETWORK FOREIGN KEY
1383
(
1384
  NODE_ID
1385
)
1386
REFERENCES NETWORK_NODES
1387
(
1388
NODE_ID
1389
) ENABLE
1390
;
1391
 
1392
ALTER TABLE RELATED_ARTICLES
1393
ADD CONSTRAINT FK_RA_RARTID_REF_ARTID FOREIGN KEY
1394
(
1395
  RARTICLE_ID
1396
)
1397
REFERENCES KNOWLEDGE_BASE
1398
(
1399
ARTICLE_ID
1400
) ENABLE
1401
;
1402
 
1403
ALTER TABLE RELATED_ARTICLES
1404
ADD CONSTRAINT FK_RA_ARTID_REF_ARTID FOREIGN KEY
1405
(
1406
  ARTICLE_ID
1407
)
1408
REFERENCES KNOWLEDGE_BASE
1409
(
1410
ARTICLE_ID
1411
) ENABLE
1412
;
1413
 
1414
ALTER TABLE HARDWARE
1415
ADD CONSTRAINT FK_HARDWARE_REF_BOMS FOREIGN KEY
1416
(
1417
  BOM_ID
1418
)
1419
REFERENCES BOMS
1420
(
1421
BOM_ID
1422
) ENABLE
1423
;
1424
 
1425
ALTER TABLE BOM_CONTENTS
1426
ADD CONSTRAINT FK_BOM_CONT_REF_NETWORK FOREIGN KEY
1427
(
1428
  NODE_ID
1429
)
1430
REFERENCES NETWORK_NODES
1431
(
1432
NODE_ID
1433
) ENABLE
1434
;
1435
 
1436
ALTER TABLE BOM_CONTENTS
1437
ADD CONSTRAINT FK_BOM_CONT_REF_BOMS FOREIGN KEY
1438
(
1439
  BOM_ID
1440
)
1441
REFERENCES BOMS
1442
(
1443
BOM_ID
1444
) ENABLE
1445
;
1446
 
1447
ALTER TABLE OS_BASE_ENV
1448
ADD CONSTRAINT FK_OS_BASE_ENV_REF_BASE_ENV FOREIGN KEY
1449
(
1450
  BASE_ENV_ID
1451
)
1452
REFERENCES BASE_ENV
1453
(
1454
BASE_ENV_ID
1455
) ENABLE
1456
;
1457
 
1458
ALTER TABLE OS_BASE_ENV
1459
ADD CONSTRAINT FK_OS_BASE_ENV_REF_OS FOREIGN KEY
1460
(
1461
  OS_ID
1462
)
1463
REFERENCES OPERATING_SYSTEMS
1464
(
1465
OS_ID
1466
) ENABLE
1467
;
1468
 
1469
ALTER TABLE BOM_TRAIL
1470
ADD CONSTRAINT FK_BOM_TRAIL_REF_BOMS FOREIGN KEY
1471
(
1472
  BOM_ID
1473
)
1474
REFERENCES BOMS
1475
(
1476
BOM_ID
1477
) ENABLE
1478
;
1479
 
1480
ALTER TABLE BASE_ENV
1481
ADD CONSTRAINT FK_BASE_ENV_REF_BOS_TYPES FOREIGN KEY
1482
(
1483
  BOS_ID
1484
)
1485
REFERENCES BOS_TYPES
1486
(
1487
BOS_ID
1488
) ENABLE
1489
;
1490
 
1491
ALTER TABLE BASE_ENV
1492
ADD CONSTRAINT FK_BASE_ENV_REF_BOMS FOREIGN KEY
1493
(
1494
  BOM_ID
1495
)
1496
REFERENCES BOMS
1497
(
1498
BOM_ID
1499
) ENABLE
1500
;
1501
 
1502
ALTER TABLE PRODUCTS_QUEUE
1503
ADD CONSTRAINT FK_PRODUCTS_REFERENCE_DM_PROJE FOREIGN KEY
1504
(
1505
  PRODQ_ID
1506
)
1507
REFERENCES DM_PROJECTS
1508
(
1509
PROJ_ID
1510
) ENABLE
1511
;
1512
 
1513
ALTER TABLE HIDE_PRODUCTS
1514
ADD FOREIGN KEY
1515
(
1516
  OS_ID
1517
)
1518
REFERENCES OPERATING_SYSTEMS
1519
(
1520
OS_ID
1521
) DISABLE
1522
;
1523
 
1524
ALTER TABLE BASE_ENV_CONTENTS
1525
ADD CONSTRAINT FK_BASE_ENV_CONT_REF_BASE_ENV FOREIGN KEY
1526
(
1527
  BASE_ENV_ID
1528
)
1529
REFERENCES BASE_ENV
1530
(
1531
BASE_ENV_ID
1532
) ENABLE
1533
;
1534
 
1535
COMMENT ON TABLE STATES IS '1 Integration 2 Released To Testing 3 Released To Region 4 Released To Customer'
1536
;
1537
 
1538
COMMENT ON TABLE OS_CONTENTS IS 'CHANGE_LOG_FLAG:  N - new  U - updated version'
1539
;
1540
 
1541
COMMENT ON COLUMN OS_CONTENTS.CHANGE_LOG_FLAG IS 'cvn'
1542
;
1543
 
1544
CREATE INDEX INX_BO_BOM_LIFECYCLE ON BOMS (BOM_LIFECYCLE ASC)  TABLESPACE "USERS"
1545
  LOGGING 
1546
  PCTFREE 10
1547
  INITRANS 2
1548
  MAXTRANS 255
1549
  STORAGE
1550
  (
1551
    INITIAL 128K
1552
    MINEXTENTS 1
1553
    MAXEXTENTS 2147483645
1554
    FREELISTS 1
1555
    FREELIST GROUPS 1
1556
    BUFFER_POOL DEFAULT
1557
  )
1558
;
1559
 
1560
CREATE INDEX INX_BO_BOM_NAME_ID ON BOMS (BOM_NAME_ID ASC)  TABLESPACE "USERS"
1561
  LOGGING 
1562
  PCTFREE 10
1563
  INITRANS 2
1564
  MAXTRANS 255
1565
  STORAGE
1566
  (
1567
    INITIAL 128K
1568
    MINEXTENTS 1
1569
    MAXEXTENTS 2147483645
1570
    FREELISTS 1
1571
    FREELIST GROUPS 1
1572
    BUFFER_POOL DEFAULT
1573
  )
1574
;
1575
 
1576
CREATE INDEX INX_BO_BOM_VERSION ON BOMS (BOM_VERSION ASC)  TABLESPACE "USERS"
1577
  LOGGING 
1578
  PCTFREE 10
1579
  INITRANS 2
1580
  MAXTRANS 255
1581
  STORAGE
1582
  (
1583
    INITIAL 128K
1584
    MINEXTENTS 1
1585
    MAXEXTENTS 2147483645
1586
    FREELISTS 1
1587
    FREELIST GROUPS 1
1588
    BUFFER_POOL DEFAULT
1589
  )
1590
;
1591
 
1592
CREATE INDEX INX_BO_BRANCH_ID ON BOMS (BRANCH_ID ASC)  TABLESPACE "USERS"
1593
  LOGGING 
1594
  PCTFREE 10
1595
  INITRANS 2
1596
  MAXTRANS 255
1597
  STORAGE
1598
  (
1599
    INITIAL 128K
1600
    MINEXTENTS 1
1601
    MAXEXTENTS 2147483645
1602
    FREELISTS 1
1603
    FREELIST GROUPS 1
1604
    BUFFER_POOL DEFAULT
1605
  )
1606
;
1607
 
1608
CREATE INDEX INX_BO_OLD_BOM_ID ON BOMS (OLD_BOM_ID ASC)  TABLESPACE "USERS"
1609
  LOGGING 
1610
  PCTFREE 10
1611
  INITRANS 2
1612
  MAXTRANS 255
1613
  STORAGE
1614
  (
1615
    INITIAL 128K
1616
    MINEXTENTS 1
1617
    MAXEXTENTS 2147483645
1618
    FREELISTS 1
1619
    FREELIST GROUPS 1
1620
    BUFFER_POOL DEFAULT
1621
  )
1622
;
1623
 
1624
CREATE INDEX INX_BO_PARENT_BOM_ID ON BOMS (PARENT_BOM_ID ASC)  TABLESPACE "USERS"
1625
  LOGGING 
1626
  PCTFREE 10
1627
  INITRANS 2
1628
  MAXTRANS 255
1629
  STORAGE
1630
  (
1631
    INITIAL 128K
1632
    MINEXTENTS 1
1633
    MAXEXTENTS 2147483645
1634
    FREELISTS 1
1635
    FREELIST GROUPS 1
1636
    BUFFER_POOL DEFAULT
1637
  )
1638
;
1639
 
1640
CREATE INDEX INX_PC_OS_ID ON PROCESSES_CONFIG (OS_ID ASC)  TABLESPACE "USERS"
1641
  LOGGING 
1642
  PCTFREE 10
1643
  INITRANS 2
1644
  MAXTRANS 255
1645
  STORAGE
1646
  (
1647
    INITIAL 128K
1648
    MINEXTENTS 1
1649
    MAXEXTENTS 2147483645
1650
    FREELISTS 1
1651
    FREELIST GROUPS 1
1652
    BUFFER_POOL DEFAULT
1653
  )
1654
;
1655
 
1656
CREATE INDEX INX_PC_PROC_ID ON PROCESSES_CONFIG (PROC_ID ASC)  TABLESPACE "USERS"
1657
  LOGGING 
1658
  PCTFREE 10
1659
  INITRANS 2
1660
  MAXTRANS 255
1661
  STORAGE
1662
  (
1663
    INITIAL 128K
1664
    MINEXTENTS 1
1665
    MAXEXTENTS 2147483645
1666
    FREELISTS 1
1667
    FREELIST GROUPS 1
1668
    BUFFER_POOL DEFAULT
1669
  )
1670
;
1671
 
1672
CREATE INDEX INX_PC_PROD_ID ON PROCESSES_CONFIG (PROD_ID ASC)  TABLESPACE "USERS"
1673
  LOGGING 
1674
  PCTFREE 10
1675
  INITRANS 2
1676
  MAXTRANS 255
1677
  STORAGE
1678
  (
1679
    INITIAL 128K
1680
    MINEXTENTS 1
1681
    MAXEXTENTS 2147483645
1682
    FREELISTS 1
1683
    FREELIST GROUPS 1
1684
    BUFFER_POOL DEFAULT
1685
  )
1686
;
1687
 
1688
CREATE INDEX UNQ_PROC_CONFIG ON PROCESSES_CONFIG (PROD_ID ASC, OS_ID ASC, PKG_HEALTH_TAG ASC)  TABLESPACE "USERS"
1689
  LOGGING 
1690
  PCTFREE 10
1691
  INITRANS 2
1692
  MAXTRANS 255
1693
  STORAGE
1694
  (
1695
    INITIAL 64K
1696
    MINEXTENTS 1
1697
    MAXEXTENTS 2147483645
1698
    FREELISTS 1
1699
    FREELIST GROUPS 1
1700
    BUFFER_POOL DEFAULT
1701
  )
1702
;
1703
 
1704
CREATE INDEX INX_BR_PROJ_ID ON BRANCHES (PROJ_ID ASC)  TABLESPACE "USERS"
1705
  LOGGING 
1706
  PCTFREE 10
1707
  INITRANS 2
1708
  MAXTRANS 255
1709
  STORAGE
1710
  (
1711
    INITIAL 128K
1712
    MINEXTENTS 1
1713
    MAXEXTENTS 2147483645
1714
    FREELISTS 1
1715
    FREELIST GROUPS 1
1716
    BUFFER_POOL DEFAULT
1717
  )
1718
;
1719
 
1720
CREATE UNIQUE INDEX UNQ_BRANCHES ON BRANCHES (PROJ_ID ASC, BRANCH_NAME ASC)  TABLESPACE "USERS"
1721
  LOGGING 
1722
  PCTFREE 10
1723
  INITRANS 2
1724
  MAXTRANS 255
1725
  STORAGE
1726
  (
1727
    INITIAL 128K
1728
    MINEXTENTS 1
1729
    MAXEXTENTS 2147483645
1730
    FREELISTS 1
1731
    FREELIST GROUPS 1
1732
    BUFFER_POOL DEFAULT
1733
  )
1734
;
1735
 
1736
CREATE INDEX INX_ST_PROJ_ID ON STATES (PROJ_ID ASC)  TABLESPACE "USERS"
1737
  LOGGING 
1738
  PCTFREE 10
1739
  INITRANS 2
1740
  MAXTRANS 255
1741
  STORAGE
1742
  (
1743
    INITIAL 128K
1744
    MINEXTENTS 1
1745
    MAXEXTENTS 2147483645
1746
    FREELISTS 1
1747
    FREELIST GROUPS 1
1748
    BUFFER_POOL DEFAULT
1749
  )
1750
;
1751
 
1752
CREATE UNIQUE INDEX UNQ_STATES ON STATES (PROJ_ID ASC, STATE_NAME ASC)  TABLESPACE "USERS"
1753
  LOGGING 
1754
  PCTFREE 10
1755
  INITRANS 2
1756
  MAXTRANS 255
1757
  STORAGE
1758
  (
1759
    INITIAL 128K
1760
    MINEXTENTS 1
1761
    MAXEXTENTS 2147483645
1762
    FREELISTS 1
1763
    FREELIST GROUPS 1
1764
    BUFFER_POOL DEFAULT
1765
  )
1766
;
1767
 
1768
CREATE INDEX INX_OLD_NODE_ID ON NETWORK_NODES (OLD_NODE_ID ASC)  TABLESPACE "USERS"
1769
  LOGGING 
1770
  PCTFREE 10
1771
  INITRANS 2
1772
  MAXTRANS 255
1773
  STORAGE
1774
  (
1775
    INITIAL 128K
1776
    MINEXTENTS 1
1777
    MAXEXTENTS 2147483645
1778
    FREELISTS 1
1779
    FREELIST GROUPS 1
1780
    BUFFER_POOL DEFAULT
1781
  )
1782
;
1783
 
1784
CREATE INDEX INX_BOM_NOTES ON BOM_NOTES (BOM_ID ASC, BOM_SCOPE ASC, SCOPE_ID ASC)  TABLESPACE "USERS"
1785
  LOGGING 
1786
  PCTFREE 10
1787
  INITRANS 2
1788
  MAXTRANS 255
1789
  STORAGE
1790
  (
1791
    INITIAL 128K
1792
    MINEXTENTS 1
1793
    MAXEXTENTS 2147483645
1794
    FREELISTS 1
1795
    FREELIST GROUPS 1
1796
    BUFFER_POOL DEFAULT
1797
  )
1798
;
1799
 
1800
CREATE INDEX INX_BOM_NOTES_BOM_ID ON BOM_NOTES (BOM_ID ASC)  TABLESPACE "USERS"
1801
  LOGGING 
1802
  PCTFREE 10
1803
  INITRANS 2
1804
  MAXTRANS 255
1805
  STORAGE
1806
  (
1807
    INITIAL 128K
1808
    MINEXTENTS 1
1809
    MAXEXTENTS 2147483645
1810
    FREELISTS 1
1811
    FREELIST GROUPS 1
1812
    BUFFER_POOL DEFAULT
1813
  )
1814
;
1815
 
1816
CREATE INDEX INX_KB_ARTICLE_DETAILS ON KNOWLEDGE_BASE (ARTICLE_DETAILS ASC)  TABLESPACE "USERS"
1817
  LOGGING 
1818
  PCTFREE 10
1819
  INITRANS 2
1820
  MAXTRANS 255
1821
  STORAGE
1822
  (
1823
    INITIAL 128K
1824
    MINEXTENTS 1
1825
    MAXEXTENTS 2147483645
1826
    FREELISTS 1
1827
    FREELIST GROUPS 1
1828
    BUFFER_POOL DEFAULT
1829
  )
1830
;
1831
 
1832
CREATE INDEX INX_KB_ARTICLE_TITLE ON KNOWLEDGE_BASE (ARTICLE_TITLE ASC)  TABLESPACE "USERS"
1833
  LOGGING 
1834
  PCTFREE 10
1835
  INITRANS 2
1836
  MAXTRANS 255
1837
  STORAGE
1838
  (
1839
    INITIAL 128K
1840
    MINEXTENTS 1
1841
    MAXEXTENTS 2147483645
1842
    FREELISTS 1
1843
    FREELIST GROUPS 1
1844
    BUFFER_POOL DEFAULT
1845
  )
1846
;
1847
 
1848
CREATE INDEX INX_KB_MOD_STAMP ON KNOWLEDGE_BASE (MOD_STAMP ASC)  TABLESPACE "USERS"
1849
  LOGGING 
1850
  PCTFREE 10
1851
  INITRANS 2
1852
  MAXTRANS 255
1853
  STORAGE
1854
  (
1855
    INITIAL 128K
1856
    MINEXTENTS 1
1857
    MAXEXTENTS 2147483645
1858
    FREELISTS 1
1859
    FREELIST GROUPS 1
1860
    BUFFER_POOL DEFAULT
1861
  )
1862
;
1863
 
1864
CREATE UNIQUE INDEX UNQ_REJECTION_TRAIL ON REJECTION_TRAIL (ENUM_ENTITY_TYPE ASC, ENTITY_ID ASC, REJECT_SEQ ASC)  TABLESPACE "USERS"
1865
  LOGGING 
1866
  PCTFREE 10
1867
  INITRANS 2
1868
  MAXTRANS 255
1869
  STORAGE
1870
  (
1871
    INITIAL 128K
1872
    MINEXTENTS 1
1873
    MAXEXTENTS 2147483645
1874
    FREELISTS 1
1875
    FREELIST GROUPS 1
1876
    BUFFER_POOL DEFAULT
1877
  )
1878
;
1879
 
1880
CREATE INDEX INX_HN_HW_ID ON HARDWARE_NODE (HARDWARE_NAME_ID ASC)  TABLESPACE "USERS"
1881
  LOGGING 
1882
  PCTFREE 10
1883
  INITRANS 2
1884
  MAXTRANS 255
1885
  STORAGE
1886
  (
1887
    INITIAL 128K
1888
    MINEXTENTS 1
1889
    MAXEXTENTS 2147483645
1890
    FREELISTS 1
1891
    FREELIST GROUPS 1
1892
    BUFFER_POOL DEFAULT
1893
  )
1894
;
1895
 
1896
CREATE INDEX INX_HN_NODE_ID ON HARDWARE_NODE (NODE_ID ASC)  TABLESPACE "USERS"
1897
  LOGGING 
1898
  PCTFREE 10
1899
  INITRANS 2
1900
  MAXTRANS 255
1901
  STORAGE
1902
  (
1903
    INITIAL 128K
1904
    MINEXTENTS 1
1905
    MAXEXTENTS 2147483645
1906
    FREELISTS 1
1907
    FREELIST GROUPS 1
1908
    BUFFER_POOL DEFAULT
1909
  )
1910
;
1911
 
1912
CREATE UNIQUE INDEX UNQ_HARDWARE_NODE ON HARDWARE_NODE (HARDWARE_NAME_ID ASC, NODE_ID ASC)  TABLESPACE "USERS"
1913
  LOGGING 
1914
  PCTFREE 10
1915
  INITRANS 2
1916
  MAXTRANS 255
1917
  STORAGE
1918
  (
1919
    INITIAL 128K
1920
    MINEXTENTS 1
1921
    MAXEXTENTS 2147483645
1922
    FREELISTS 1
1923
    FREELIST GROUPS 1
1924
    BUFFER_POOL DEFAULT
1925
  )
1926
;
1927
 
1928
CREATE UNIQUE INDEX UNQ_NODE_TYPES ON NODE_TYPES (NODE_TYPE ASC)  TABLESPACE "USERS"
1929
  LOGGING 
1930
  PCTFREE 10
1931
  INITRANS 2
1932
  MAXTRANS 255
1933
  STORAGE
1934
  (
1935
    INITIAL 128K
1936
    MINEXTENTS 1
1937
    MAXEXTENTS 2147483645
1938
    FREELISTS 1
1939
    FREELIST GROUPS 1
1940
    BUFFER_POOL DEFAULT
1941
  )
1942
;
1943
 
1944
CREATE INDEX INX_BS_BOM_ID ON BOM_STATE (BOM_ID ASC)  TABLESPACE "USERS"
1945
  LOGGING 
1946
  PCTFREE 10
1947
  INITRANS 2
1948
  MAXTRANS 255
1949
  STORAGE
1950
  (
1951
    INITIAL 128K
1952
    MINEXTENTS 1
1953
    MAXEXTENTS 2147483645
1954
    FREELISTS 1
1955
    FREELIST GROUPS 1
1956
    BUFFER_POOL DEFAULT
1957
  )
1958
;
1959
 
1960
CREATE UNIQUE INDEX UNQ_BOM_STATE ON BOM_STATE (BOM_ID ASC, STATE_ID ASC)  TABLESPACE "USERS"
1961
  LOGGING 
1962
  PCTFREE 10
1963
  INITRANS 2
1964
  MAXTRANS 255
1965
  STORAGE
1966
  (
1967
    INITIAL 128K
1968
    MINEXTENTS 1
1969
    MAXEXTENTS 2147483645
1970
    FREELISTS 1
1971
    FREELIST GROUPS 1
1972
    BUFFER_POOL DEFAULT
1973
  )
1974
;
1975
 
1976
CREATE INDEX INX_OSC_OS_ID ON OS_CONTENTS (OS_ID ASC)  TABLESPACE "USERS"
1977
  LOGGING 
1978
  PCTFREE 10
1979
  INITRANS 2
1980
  MAXTRANS 255
1981
  STORAGE
1982
  (
1983
    INITIAL 128K
1984
    MINEXTENTS 1
1985
    MAXEXTENTS 2147483645
1986
    FREELISTS 1
1987
    FREELIST GROUPS 1
1988
    BUFFER_POOL DEFAULT
1989
  )
1990
;
1991
 
1992
CREATE INDEX INX_OSC_PROD_ID ON OS_CONTENTS (PROD_ID ASC)  TABLESPACE "USERS"
1993
  LOGGING 
1994
  PCTFREE 10
1995
  INITRANS 2
1996
  MAXTRANS 255
1997
  STORAGE
1998
  (
1999
    INITIAL 128K
2000
    MINEXTENTS 1
2001
    MAXEXTENTS 2147483645
2002
    FREELISTS 1
2003
    FREELIST GROUPS 1
2004
    BUFFER_POOL DEFAULT
2005
  )
2006
;
2007
 
2008
CREATE UNIQUE INDEX UNQ_OS_CONTENTS ON OS_CONTENTS (OS_ID ASC, PROD_ID ASC)  TABLESPACE "USERS"
2009
  LOGGING 
2010
  PCTFREE 10
2011
  INITRANS 2
2012
  MAXTRANS 255
2013
  STORAGE
2014
  (
2015
    INITIAL 128K
2016
    MINEXTENTS 1
2017
    MAXEXTENTS 2147483645
2018
    FREELISTS 1
2019
    FREELIST GROUPS 1
2020
    BUFFER_POOL DEFAULT
2021
  )
2022
;
2023
 
2024
CREATE INDEX INX_OLD_OS_ID ON OPERATING_SYSTEMS (OLD_OS_ID ASC)  TABLESPACE "USERS"
2025
  LOGGING 
2026
  PCTFREE 10
2027
  INITRANS 2
2028
  MAXTRANS 255
2029
  STORAGE
2030
  (
2031
    INITIAL 128K
2032
    MINEXTENTS 1
2033
    MAXEXTENTS 2147483645
2034
    FREELISTS 1
2035
    FREELIST GROUPS 1
2036
    BUFFER_POOL DEFAULT
2037
  )
2038
;
2039
 
2040
CREATE INDEX INX_OS_NODE_ID ON OPERATING_SYSTEMS (NODE_ID ASC)  TABLESPACE "USERS"
2041
  LOGGING 
2042
  PCTFREE 10
2043
  INITRANS 2
2044
  MAXTRANS 255
2045
  STORAGE
2046
  (
2047
    INITIAL 128K
2048
    MINEXTENTS 1
2049
    MAXEXTENTS 2147483645
2050
    FREELISTS 1
2051
    FREELIST GROUPS 1
2052
    BUFFER_POOL DEFAULT
2053
  )
2054
;
2055
 
2056
CREATE UNIQUE INDEX UNQ_OPERATING_SYSTEMS ON OPERATING_SYSTEMS (OS_NAME ASC, NODE_ID ASC)  TABLESPACE "USERS"
2057
  LOGGING 
2058
  PCTFREE 10
2059
  INITRANS 2
2060
  MAXTRANS 255
2061
  STORAGE
2062
  (
2063
    INITIAL 128K
2064
    MINEXTENTS 1
2065
    MAXEXTENTS 2147483645
2066
    FREELISTS 1
2067
    FREELIST GROUPS 1
2068
    BUFFER_POOL DEFAULT
2069
  )
2070
;
2071
 
2072
CREATE UNIQUE INDEX UNQ_RELATED_ARTICLES ON RELATED_ARTICLES (ARTICLE_ID ASC, RARTICLE_ID ASC)  TABLESPACE "USERS"
2073
  LOGGING 
2074
  PCTFREE 10
2075
  INITRANS 2
2076
  MAXTRANS 255
2077
  STORAGE
2078
  (
2079
    INITIAL 128K
2080
    MINEXTENTS 1
2081
    MAXEXTENTS 2147483645
2082
    FREELISTS 1
2083
    FREELIST GROUPS 1
2084
    BUFFER_POOL DEFAULT
2085
  )
2086
;
2087
 
2088
CREATE INDEX INX_HARDWARE_BOM_ID ON HARDWARE (BOM_ID ASC)  TABLESPACE "USERS"
2089
  LOGGING 
2090
  PCTFREE 10
2091
  INITRANS 2
2092
  MAXTRANS 255
2093
  STORAGE
2094
  (
2095
    INITIAL 128K
2096
    MINEXTENTS 1
2097
    MAXEXTENTS 2147483645
2098
    FREELISTS 1
2099
    FREELIST GROUPS 1
2100
    BUFFER_POOL DEFAULT
2101
  )
2102
;
2103
 
2104
CREATE INDEX INX_OLD_HARDWARE_NAME_ID ON HARDWARE (OLD_HARDWARE_NAME_ID ASC)  TABLESPACE "USERS"
2105
  LOGGING 
2106
  PCTFREE 10
2107
  INITRANS 2
2108
  MAXTRANS 255
2109
  STORAGE
2110
  (
2111
    INITIAL 128K
2112
    MINEXTENTS 1
2113
    MAXEXTENTS 2147483645
2114
    FREELISTS 1
2115
    FREELIST GROUPS 1
2116
    BUFFER_POOL DEFAULT
2117
  )
2118
;
2119
 
2120
CREATE UNIQUE INDEX UNQ_HARDWARE ON HARDWARE (BOM_ID ASC, HARDWARE_NAME ASC)  TABLESPACE "USERS"
2121
  LOGGING 
2122
  PCTFREE 10
2123
  INITRANS 2
2124
  MAXTRANS 255
2125
  STORAGE
2126
  (
2127
    INITIAL 128K
2128
    MINEXTENTS 1
2129
    MAXEXTENTS 2147483645
2130
    FREELISTS 1
2131
    FREELIST GROUPS 1
2132
    BUFFER_POOL DEFAULT
2133
  )
2134
;
2135
 
2136
CREATE UNIQUE INDEX UNQ_BOM_CONTENTS ON BOM_CONTENTS (BOM_ID ASC, NODE_ID ASC)  TABLESPACE "USERS"
2137
  LOGGING 
2138
  PCTFREE 10
2139
  INITRANS 2
2140
  MAXTRANS 255
2141
  STORAGE
2142
  (
2143
    INITIAL 128K
2144
    MINEXTENTS 1
2145
    MAXEXTENTS 2147483645
2146
    FREELISTS 1
2147
    FREELIST GROUPS 1
2148
    BUFFER_POOL DEFAULT
2149
  )
2150
;
2151
 
2152
CREATE INDEX INX_OBE_BASE_ENV_ID ON OS_BASE_ENV (BASE_ENV_ID ASC)  TABLESPACE "USERS"
2153
  LOGGING 
2154
  PCTFREE 10
2155
  INITRANS 2
2156
  MAXTRANS 255
2157
  STORAGE
2158
  (
2159
    INITIAL 128K
2160
    MINEXTENTS 1
2161
    MAXEXTENTS 2147483645
2162
    FREELISTS 1
2163
    FREELIST GROUPS 1
2164
    BUFFER_POOL DEFAULT
2165
  )
2166
;
2167
 
2168
CREATE INDEX INX_OBE_OS_ID ON OS_BASE_ENV (OS_ID ASC)  TABLESPACE "USERS"
2169
  LOGGING 
2170
  PCTFREE 10
2171
  INITRANS 2
2172
  MAXTRANS 255
2173
  STORAGE
2174
  (
2175
    INITIAL 128K
2176
    MINEXTENTS 1
2177
    MAXEXTENTS 2147483645
2178
    FREELISTS 1
2179
    FREELIST GROUPS 1
2180
    BUFFER_POOL DEFAULT
2181
  )
2182
;
2183
 
2184
CREATE UNIQUE INDEX UNQ_OS_BASE_ENV ON OS_BASE_ENV (OS_ID ASC, BASE_ENV_ID ASC)  TABLESPACE "USERS"
2185
  LOGGING 
2186
  PCTFREE 10
2187
  INITRANS 2
2188
  MAXTRANS 255
2189
  STORAGE
2190
  (
2191
    INITIAL 128K
2192
    MINEXTENTS 1
2193
    MAXEXTENTS 2147483645
2194
    FREELISTS 1
2195
    FREELIST GROUPS 1
2196
    BUFFER_POOL DEFAULT
2197
  )
2198
;
2199
 
2200
CREATE INDEX INX_BT_BOM_ID ON BOM_TRAIL (BOM_ID ASC)  TABLESPACE "USERS"
2201
  LOGGING 
2202
  PCTFREE 10
2203
  INITRANS 2
2204
  MAXTRANS 255
2205
  STORAGE
2206
  (
2207
    INITIAL 128K
2208
    MINEXTENTS 1
2209
    MAXEXTENTS 2147483645
2210
    FREELISTS 1
2211
    FREELIST GROUPS 1
2212
    BUFFER_POOL DEFAULT
2213
  )
2214
;
2215
 
2216
CREATE UNIQUE INDEX UNQ_BOM_NAMES ON BOM_NAMES (BOM_NAME ASC)  TABLESPACE "USERS"
2217
  LOGGING 
2218
  PCTFREE 10
2219
  INITRANS 2
2220
  MAXTRANS 255
2221
  STORAGE
2222
  (
2223
    INITIAL 128K
2224
    MINEXTENTS 1
2225
    MAXEXTENTS 2147483645
2226
    FREELISTS 1
2227
    FREELIST GROUPS 1
2228
    BUFFER_POOL DEFAULT
2229
  )
2230
;
2231
 
2232
CREATE INDEX INX_BASE_ENV_BOM_ID ON BASE_ENV (BOM_ID ASC)  TABLESPACE "USERS"
2233
  LOGGING 
2234
  PCTFREE 10
2235
  INITRANS 2
2236
  MAXTRANS 255
2237
  STORAGE
2238
  (
2239
    INITIAL 128K
2240
    MINEXTENTS 1
2241
    MAXEXTENTS 2147483645
2242
    FREELISTS 1
2243
    FREELIST GROUPS 1
2244
    BUFFER_POOL DEFAULT
2245
  )
2246
;
2247
 
2248
CREATE INDEX INX_OLD_BASE_ENV_ID ON BASE_ENV (OLD_BASE_ENV_ID ASC)  TABLESPACE "USERS"
2249
  LOGGING 
2250
  PCTFREE 10
2251
  INITRANS 2
2252
  MAXTRANS 255
2253
  STORAGE
2254
  (
2255
    INITIAL 128K
2256
    MINEXTENTS 1
2257
    MAXEXTENTS 2147483645
2258
    FREELISTS 1
2259
    FREELIST GROUPS 1
2260
    BUFFER_POOL DEFAULT
2261
  )
2262
;
2263
 
2264
CREATE UNIQUE INDEX UNQ_BASE_ENV ON BASE_ENV (BASE_ENV_NAME ASC, BOM_ID ASC)  TABLESPACE "USERS"
2265
  LOGGING 
2266
  PCTFREE 10
2267
  INITRANS 2
2268
  MAXTRANS 255
2269
  STORAGE
2270
  (
2271
    INITIAL 128K
2272
    MINEXTENTS 1
2273
    MAXEXTENTS 2147483645
2274
    FREELISTS 1
2275
    FREELIST GROUPS 1
2276
    BUFFER_POOL DEFAULT
2277
  )
2278
;
2279
 
2280
CREATE INDEX INX_ACTION_TRAIL ON ACTION_TRAIL (ACTION_STAMP ASC, USER_ID ASC, ACTION_EVENT ASC)  TABLESPACE "USERS"
2281
  LOGGING 
2282
  PCTFREE 10
2283
  INITRANS 2
2284
  MAXTRANS 255
2285
  STORAGE
2286
  (
2287
    INITIAL 128K
2288
    MINEXTENTS 1
2289
    MAXEXTENTS 2147483645
2290
    FREELISTS 1
2291
    FREELIST GROUPS 1
2292
    BUFFER_POOL DEFAULT
2293
  )
2294
;
2295
 
2296
CREATE UNIQUE INDEX UNQ_DM_PROJECTS ON DM_PROJECTS (PROJ_NAME ASC)  TABLESPACE "USERS"
2297
  LOGGING 
2298
  PCTFREE 10
2299
  INITRANS 2
2300
  MAXTRANS 255
2301
  STORAGE
2302
  (
2303
    INITIAL 128K
2304
    MINEXTENTS 1
2305
    MAXEXTENTS 2147483645
2306
    FREELISTS 1
2307
    FREELIST GROUPS 1
2308
    BUFFER_POOL DEFAULT
2309
  )
2310
;
2311
 
2312
CREATE UNIQUE INDEX UNQ_POPUP_MENU_DEF ON DEF_MENU_ITEMS (ITEM_NAME ASC)  TABLESPACE "USERS"
2313
  LOGGING 
2314
  PCTFREE 10
2315
  INITRANS 2
2316
  MAXTRANS 255
2317
  STORAGE
2318
  (
2319
    INITIAL 128K
2320
    MINEXTENTS 1
2321
    MAXEXTENTS 2147483645
2322
    FREELISTS 1
2323
    FREELIST GROUPS 1
2324
    BUFFER_POOL DEFAULT
2325
  )
2326
;
2327
 
2328
CREATE INDEX INX_MSGBOARD ON MESSAGE_BOARD (EXPIRY_DATE ASC, DUE_DATE ASC)  TABLESPACE "SYSTEM"
2329
  LOGGING 
2330
  PCTFREE 10
2331
  INITRANS 2
2332
  MAXTRANS 255
2333
  STORAGE
2334
  (
2335
    INITIAL 64K
2336
    NEXT 64K
2337
    MINEXTENTS 1
2338
    MAXEXTENTS 2147483645
2339
    PCTINCREASE 0
2340
    FREELISTS 1
2341
    FREELIST GROUPS 1
2342
    BUFFER_POOL DEFAULT
2343
  )
2344
;
2345
 
2346
CREATE UNIQUE INDEX PK_MESSAGE_BOARD ON MESSAGE_BOARD (MSG_ID ASC)  TABLESPACE "SYSTEM"
2347
  LOGGING 
2348
  PCTFREE 10
2349
  INITRANS 2
2350
  MAXTRANS 255
2351
  STORAGE
2352
  (
2353
    INITIAL 64K
2354
    NEXT 64K
2355
    MINEXTENTS 1
2356
    MAXEXTENTS 2147483645
2357
    PCTINCREASE 0
2358
    FREELISTS 1
2359
    FREELIST GROUPS 1
2360
    BUFFER_POOL DEFAULT
2361
  )
2362
;
2363
 
2364
CREATE INDEX INX_BEC_BASE_ENV_ID ON BASE_ENV_CONTENTS (BASE_ENV_ID ASC)  TABLESPACE "USERS"
2365
  LOGGING 
2366
  PCTFREE 10
2367
  INITRANS 2
2368
  MAXTRANS 255
2369
  STORAGE
2370
  (
2371
    INITIAL 128K
2372
    MINEXTENTS 1
2373
    MAXEXTENTS 2147483645
2374
    FREELISTS 1
2375
    FREELIST GROUPS 1
2376
    BUFFER_POOL DEFAULT
2377
  )
2378
;
2379
 
2380
CREATE UNIQUE INDEX UNQ_BASE_ENV_CONTS ON BASE_ENV_CONTENTS (BASE_ENV_ID ASC, PROD_ID ASC)  TABLESPACE "USERS"
2381
  LOGGING 
2382
  PCTFREE 10
2383
  INITRANS 2
2384
  MAXTRANS 255
2385
  STORAGE
2386
  (
2387
    INITIAL 128K
2388
    MINEXTENTS 1
2389
    MAXEXTENTS 2147483645
2390
    FREELISTS 1
2391
    FREELIST GROUPS 1
2392
    BUFFER_POOL DEFAULT
2393
  )
2394
;
2395
 
2396
CREATE UNIQUE INDEX UNQ_ABTN_DEF ON DEF_ACTION_BUTTONS (ABTN_NAME ASC)  TABLESPACE "USERS"
2397
  LOGGING 
2398
  PCTFREE 10
2399
  INITRANS 2
2400
  MAXTRANS 255
2401
  STORAGE
2402
  (
2403
    INITIAL 128K
2404
    MINEXTENTS 1
2405
    MAXEXTENTS 2147483645
2406
    FREELISTS 1
2407
    FREELIST GROUPS 1
2408
    BUFFER_POOL DEFAULT
2409
  )
2410
;
2411
 
2412
CREATE UNIQUE INDEX UNQ_BOS_TYPES ON BOS_TYPES (BOS_TYPE ASC)  TABLESPACE "USERS"
2413
  LOGGING 
2414
  PCTFREE 10
2415
  INITRANS 2
2416
  MAXTRANS 255
2417
  STORAGE
2418
  (
2419
    INITIAL 128K
2420
    MINEXTENTS 1
2421
    MAXEXTENTS 2147483645
2422
    FREELISTS 1
2423
    FREELIST GROUPS 1
2424
    BUFFER_POOL DEFAULT
2425
  )
2426
;
2427
 
2428
CREATE UNIQUE INDEX UNQ_VALIDATION_RULES ON VALIDATION_RULES (FIELD_NAME ASC)  TABLESPACE "USERS"
2429
  LOGGING 
2430
  PCTFREE 10
2431
  INITRANS 2
2432
  MAXTRANS 255
2433
  STORAGE
2434
  (
2435
    INITIAL 128K
2436
    MINEXTENTS 1
2437
    MAXEXTENTS 2147483645
2438
    FREELISTS 1
2439
    FREELIST GROUPS 1
2440
    BUFFER_POOL DEFAULT
2441
  )
2442
;
2443
 
2444
CREATE SEQUENCE SEQ_BRANCH_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2445
 
2446
CREATE SEQUENCE SEQ_UNIT_TESTS INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2447
 
2448
CREATE SEQUENCE SEQ_BOM_NAME_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2449
 
2450
CREATE SEQUENCE SEQ_BOM_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2451
 
2452
CREATE SEQUENCE SEQ_BASE_ENV_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2453
 
2454
CREATE SEQUENCE SEQ_ARTICLE_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2455
 
2456
CREATE SEQUENCE SEQ_STATE_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2457
 
2458
CREATE SEQUENCE SEQ_PROC_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2459
 
2460
CREATE SEQUENCE SEQ_OS_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2461
 
2462
CREATE SEQUENCE SEQ_HARDWARE_NAME_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2463
 
2464
CREATE SEQUENCE SEQ_MSG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2465
 
2466
CREATE SEQUENCE SEQ_PROJ_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2467
 
2468
CREATE SEQUENCE SEQ_NODE_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;
2469
 
2470
CREATE OR REPLACE SYNONYM ROLE_PRIVILEGES FOR ACCESS_MANAGER.ROLE_PRIVILEGES;
2471
 
2472
CREATE OR REPLACE SYNONYM RELEASE_CONTENT FOR RELEASE_MANAGER.RELEASE_CONTENT;
2473
 
2474
CREATE OR REPLACE SYNONYM ROLES FOR ACCESS_MANAGER.ROLES;
2475
 
2476
CREATE OR REPLACE SYNONYM PROCESSES FOR RELEASE_MANAGER.PROCESSES;
2477
 
2478
CREATE OR REPLACE SYNONYM RELEASE_TAGS FOR RELEASE_MANAGER.RELEASE_TAGS;
2479
 
2480
CREATE OR REPLACE SYNONYM PACKAGE_PATCHES FOR RELEASE_MANAGER.PACKAGE_PATCHES;
2481
 
2482
CREATE OR REPLACE SYNONYM RM_USERS FOR RELEASE_MANAGER.USERS;
2483
 
2484
CREATE OR REPLACE SYNONYM PLATFORMS FOR RELEASE_MANAGER.PLATFORMS;
2485
 
2486
CREATE OR REPLACE SYNONYM PERMISSION_TYPES FOR ACCESS_MANAGER.PERMISSION_TYPES;
2487
 
2488
CREATE OR REPLACE SYNONYM APPLICATIONS FOR ACCESS_MANAGER.APPLICATIONS;
2489
 
2490
CREATE OR REPLACE SYNONYM DATA_PERMISSIONS FOR ACCESS_MANAGER.DATA_PERMISSIONS;
2491
 
2492
CREATE OR REPLACE SYNONYM USER_ROLES FOR ACCESS_MANAGER.USER_ROLES;
2493
 
2494
CREATE OR REPLACE SYNONYM PK_AMUTILS FOR ACCESS_MANAGER.PK_AMUTILS;
2495
 
59 mhunt 2496
CREATE OR REPLACE SYNONYM JIRA_ISSUES FOR RELEASE_MANAGER.JIRA_ISSUES;
2497
 
51 mhunt 2498
CREATE OR REPLACE SYNONYM VTREES FOR RELEASE_MANAGER.VTREES;
2499
 
2500
CREATE OR REPLACE SYNONYM PACKAGE_DEPENDENCIES FOR RELEASE_MANAGER.PACKAGE_DEPENDENCIES;
2501
 
2502
CREATE OR REPLACE SYNONYM PRODUCT_COMPONENTS FOR RELEASE_MANAGER.PRODUCT_COMPONENTS;
2503
 
2504
CREATE OR REPLACE SYNONYM PACKAGES FOR RELEASE_MANAGER.PACKAGES;
2505
 
2506
CREATE OR REPLACE SYNONYM PROJECTS FOR RELEASE_MANAGER.PROJECTS;
2507
 
2508
CREATE OR REPLACE SYNONYM SEED_PACKAGE_NAMES_VERSIONS FOR RELEASE_MANAGER.SEED_PACKAGE_NAMES_VERSIONS;
2509
 
2510
CREATE OR REPLACE SYNONYM CONTROL_OBJECTS FOR ACCESS_MANAGER.CONTROL_OBJECTS;
2511
 
2512
CREATE OR REPLACE SYNONYM USERS FOR ACCESS_MANAGER.USERS;
2513
 
2514
CREATE OR REPLACE SYNONYM DATA_TABLES FOR ACCESS_MANAGER.DATA_TABLES;
2515
 
2516
CREATE OR REPLACE SYNONYM PK_SECURITY FOR ACCESS_MANAGER.PK_SECURITY;
2517
 
2518
CREATE OR REPLACE SYNONYM PROJECT_EXTENTIONS FOR RELEASE_MANAGER.PROJECT_EXTENTIONS;
2519
 
2520
CREATE OR REPLACE SYNONYM PACKAGE_VERSIONS FOR RELEASE_MANAGER.PACKAGE_VERSIONS;
2521
 
2522
CREATE OR REPLACE SYNONYM VTREES_WORLD FOR RELEASE_MANAGER.VTREES_WORLD;
2523
 
2524
CREATE OR REPLACE SYNONYM USER_APPLICATIONS FOR ACCESS_MANAGER.USER_APPLICATIONS;
2525
 
2526
CREATE OR REPLACE SYNONYM PAGE_CONTROL_OBJECTS FOR ACCESS_MANAGER.PAGE_CONTROL_OBJECTS;
2527
 
2528
CREATE OR REPLACE SYNONYM APPLICATION_PAGES FOR ACCESS_MANAGER.APPLICATION_PAGES;
2529
 
2530
CREATE OR REPLACE SYNONYM CQ_ISSUES FOR RELEASE_MANAGER.CQ_ISSUES;
2531
 
2532
CREATE OR REPLACE PACKAGE pk_State IS
2533
 
2534
 
2535
PROCEDURE Add_State ( sStateName IN STATES.STATE_NAME%TYPE,
2536
		  			  nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE,
2537
		  			  nProjId IN STATES.PROJ_ID%TYPE );
2538
 
2539
PROCEDURE Update_State ( nStateId IN STATES.STATE_ID%TYPE,
2540
		  			   	 sStateName IN STATES.STATE_NAME%TYPE,
2541
						 nStateSeq IN STATES.STATE_SEQ%TYPE,
2542
						 nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE );
2543
 
2544
PROCEDURE Remove_State ( nStateId IN STATES.STATE_ID%TYPE );	
2545
 
2546
PROCEDURE Toggle_Is_Displayed ( nStateId IN BOM_STATE.STATE_ID%TYPE,
2547
								nBomId IN BOM_STATE.BOM_ID%TYPE,
2548
								cIsDisplay IN BOM_STATE.IS_DISPLAYED%TYPE );
2549
 
2550
PROCEDURE Auto_Hide ( nStateId IN BOM_STATE.STATE_ID%TYPE,
2551
					  nInsertedBomId IN BOM_STATE.BOM_ID%TYPE,
2552
					  nEventValue IN SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE );								
2553
 
2554
END pk_State;
2555
/
2556
 
2557
CREATE OR REPLACE function strreplace(str varchar2, from_str varchar2, to_str varchar2)
2558
  return varchar2
2559
AS
2560
  str_temp varchar2(4000);
2561
  str_pos  number := instr(str, from_str);
2562
BEGIN
2563
  str_temp := str;
2564
  while ( str_pos > 0 ) loop
2565
    str_temp := substr(str_temp, 0, str_pos-1) || to_str ||
2566
                substr(str_temp, str_pos + length(from_str));
2567
    str_pos  := instr(str_temp, from_str);
2568
  end loop;
2569
  return str_temp;
2570
END;
2571
/
2572
 
2573
CREATE OR REPLACE PACKAGE pk_Network_Node IS
2574
/* ---------------------------------------------------------------------------
2575
    Version: 1.0.0
2576
   --------------------------------------------------------------------------- */
2577
 
2578
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
2579
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
2580
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
2581
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
2582
					 nUserId IN NUMBER,
2583
					 sNotXML IN NETWORK_NODES.NOT_XML%TYPE );
2584
 
2585
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
2586
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
2587
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
2588
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
2589
						nUserId IN NUMBER,
2590
						nLifeCycle IN NUMBER,
2591
						sNotXML IN NETWORK_NODES.NOT_XML%TYPE );					 
2592
 
2593
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
2594
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE );	
2595
 
2596
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t, nUserId IN NUMBER );	
2597
 
2598
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2, nUserId IN NUMBER );			
2599
 
2600
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
2601
		  			   nBomId IN BOMS.BOM_ID%TYPE,
2602
					   nUserId IN NUMBER );						 
2603
 
2604
END pk_Network_Node;
2605
/
2606
 
2607
CREATE OR REPLACE PACKAGE PK_PRODUCTION AS
2608
/******************************************************************************
2609
   NAME:       PK_PRODUCTION
2610
   PURPOSE:
2611
 
2612
   REVISIONS:
2613
   Ver        Date        Author           Description
2614
   ---------  ----------  ---------------  ------------------------------------
2615
   1.0        26/07/2006             1. Created this package.
2616
******************************************************************************/
2617
 
2618
  PROCEDURE Release_Authorisation_Tester ( nPvId IN NUMBER,
2619
  										   nBomId IN NUMBER,
2620
										   nTesterId IN NUMBER,
2621
										   sTesterComments IN VARCHAR2);
2622
 
2623
  PROCEDURE Release_Authorisation_Manager ( nPvId IN NUMBER,
2624
  										   	nBomId IN NUMBER,
2625
										   	nManagerId IN NUMBER,
2626
										   	sManagerComments IN VARCHAR2);		
2627
 
2628
  PROCEDURE Log_Pkg_Trail ( nPkgId IN OS_TRAIL.OS_ID%TYPE,
2629
						  	sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
2630
						  	nUserId IN OS_TRAIL.USER_ID%TYPE  );
2631
 
2632
  PROCEDURE Reject_Product ( nPvId IN NUMBER,
2633
							 nTesterId IN NUMBER,
2634
							 sTesterComments IN VARCHAR2  );	
2635
 
2636
  PROCEDURE Add_Production_Bom ( nBomId IN NUMBER, 
2637
  							   	 nBranchId IN NUMBER, 
2638
								 nStateId IN NUMBER, 
2639
								 nProjId IN NUMBER ); 							 																									   
2640
 
2641
END PK_PRODUCTION;
2642
/
2643
 
2644
CREATE OR REPLACE PACKAGE pk_Utils IS
2645
/* ---------------------------------------------------------------------------
2646
    Version: 1.0.0
2647
   --------------------------------------------------------------------------- */
2648
 
2649
PROCEDURE Clone_BOM ( nFromBomId IN BOMS.BOM_ID%TYPE,
2650
		  			  nToBomId IN BOMS.BOM_ID%TYPE,
2651
					  nUserId IN NUMBER );
2652
 
2653
PROCEDURE Copy_BOM_Contents ( nFromBomId IN BOMS.BOM_ID%TYPE,
2654
		  					  nToBomId IN BOMS.BOM_ID%TYPE );	
2655
 
2656
PROCEDURE Copy_Network_Node ( nFromBomId IN BOMS.BOM_ID%TYPE,
2657
		  					  nToBomId IN BOMS.BOM_ID%TYPE,
2658
							  nFromNodeId IN NUMBER DEFAULT 0  );	
2659
 
2660
PROCEDURE Paste_OS_Contents;							  
2661
 
2662
PROCEDURE Paste_Node ( sNodeIdList IN VARCHAR2,
2663
					   nFromBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
2664
					   nToBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE );
2665
 
2666
PROCEDURE Paste_Os ( sOsIdList IN VARCHAR2,
2667
					 nFromNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
2668
					 nToNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE );
2669
 
2670
PROCEDURE Paste_Products ( sProdIdList IN VARCHAR2,
2671
						   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
2672
						   nToOsId IN OS_CONTENTS.OS_ID%TYPE );
2673
 
2674
PROCEDURE Paste_Products_To_Base_Env ( sProdIdList IN VARCHAR2,
2675
									   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
2676
									   nToBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE );						   
2677
 
2678
PROCEDURE Clean_Old_Id_Column;	
2679
 
2680
PROCEDURE Log_Rejection_Trail ( nEnumEntityType IN REJECTION_TRAIL.ENUM_ENTITY_TYPE%TYPE,
2681
								nEntityId IN REJECTION_TRAIL.ENTITY_ID%TYPE,
2682
								cIsRejected IN REJECTION_TRAIL.IS_REJECTED%TYPE,
2683
								nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2684
								sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL );
2685
 
2686
PROCEDURE Log_Action ( nUserId IN ACTION_TRAIL.USER_ID%TYPE, 
2687
					   nEvent IN ACTION_TRAIL.ACTION_EVENT%TYPE,
2688
					   sMethod IN ACTION_TRAIL.METHOD_CALL%TYPE DEFAULT NULL,
2689
					   sActionScript IN ACTION_TRAIL.ACTION_SCRIPT%TYPE DEFAULT NULL,
2690
					   sDescription IN ACTION_TRAIL.ACTION_DESCRIPTION%TYPE DEFAULT NULL  );					  						  				  				 
2691
 
2692
END pk_Utils;
2693
/
2694
 
2695
CREATE OR REPLACE PACKAGE pk_Base_Env IS
2696
 
2697
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
2698
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
2699
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
2700
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2701
						 nUserId IN NUMBER );
2702
 
2703
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
2704
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
2705
						 	nBosId IN BASE_ENV.BOS_ID%TYPE,
2706
							nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2707
							nUserId IN NUMBER );		
2708
 
2709
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
2710
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE;
2711
 
2712
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
2713
 		  				   	 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2714
						 	 nUserId IN NUMBER);
2715
 
2716
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
2717
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
2718
						nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2719
						nUserId IN NUMBER );
2720
 
2721
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
2722
		  				   	 sProdVersion IN VARCHAR2,
2723
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2724
							 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2725
							 nUserId IN NUMBER,
2726
							 sComments IN VARCHAR2  );
2727
 
2728
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
2729
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2730
							nUserId IN NUMBER );
2731
 
2732
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
2733
						   sNewProdIdVersion IN VARCHAR2,
2734
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2735
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
2736
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
2737
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
2738
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
2739
						   sNotXML IN BASE_ENV_CONTENTS.NOT_XML%TYPE,
2740
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
2741
						   nUserId IN NUMBER,
2742
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );
2743
 
2744
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
2745
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2746
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE );
2747
 
2748
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
2749
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2750
						  nUserId IN NUMBER );
2751
 
2752
 
2753
END pk_Base_Env;
2754
/
2755
 
2756
CREATE OR REPLACE PACKAGE pk_Product IS
2757
/* ---------------------------------------------------------------------------
2758
    Version: 1.0.0
2759
   --------------------------------------------------------------------------- */
2760
 
2761
PROCEDURE New_Product ( sProdName IN PACKAGES.PKG_NAME%TYPE,
2762
						sProdVersion IN PACKAGE_VERSIONS.PKG_VERSION%TYPE,
2763
						nUserId IN NUMBER,
2764
						outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );
2765
 
2766
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
2767
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2768
						nUserId IN NUMBER );
2769
 
2770
PROCEDURE Hide_Product ( sProdIdList IN VARCHAR2,
2771
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2772
						nUserId IN NUMBER );	
2773
 
2774
PROCEDURE Unhide_Product ( sProdIdList IN NUMBER,
2775
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2776
						nUserId IN NUMBER );												
2777
 
2778
PROCEDURE Update_Process (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
2779
		  				  nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
2780
		  				  nIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,		  
2781
		  				  nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,		  
2782
						  nCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2783
						  nPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2784
						  sPkgHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
2785
						  nProduct IN PROCESSES_CONFIG.PROD_ID%TYPE );						
2786
 
2787
PROCEDURE Update_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
2788
						   sNewProdIdVersion IN VARCHAR2,
2789
						   nOsId IN OS_CONTENTS.OS_ID%TYPE,
2790
						   nSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE,
2791
						   sComments IN OS_CONTENTS.PRODUCT_COMMENTS%TYPE,
2792
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
2793
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
2794
						   sIsNodeSpec IN OS_CONTENTS.IS_NODE_SPEC%TYPE,
2795
						   sNotXML IN OS_CONTENTS.NOT_XML%TYPE,
2796
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
2797
   						   nUserId IN NUMBER,
2798
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );						 
2799
 
2800
PROCEDURE Replace_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
2801
		  				  	nNewProdId IN OS_CONTENTS.PROD_ID%TYPE,
2802
		  			  	    nOsId IN OS_CONTENTS.OS_ID%TYPE,
2803
							nUserId IN NUMBER );
2804
 
2805
PROCEDURE Remove_Process ( 	sProcName IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,		
2806
		  				   	sProdIdList IN VARCHAR2,
2807
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2808
							sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2809
							sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2810
							sInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
2811
							nUserId IN NUMBER );							
2812
 
2813
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
2814
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2815
							nUserId IN NUMBER ); 
2816
 
2817
PROCEDURE Add_Products_NodeSpec ( sProdIdList IN VARCHAR2,
2818
		  			  	  		  nOsId IN OS_CONTENTS.OS_ID%TYPE,
2819
								  nUserId IN NUMBER ); 														
2820
 
2821
PROCEDURE Accept_Reject ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
2822
						  nBomId IN BOMS.BOM_ID%TYPE,
2823
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2824
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2825
						  nOsId IN NUMBER );
2826
 
2827
PROCEDURE Accept_Reject_List ( nProdIdList IN VARCHAR2,
2828
							   nBomId IN BOMS.BOM_ID%TYPE,
2829
						  	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2830
						       nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2831
							   nOsId IN NUMBER );
2832
 
2833
PROCEDURE Accept_Reject_Comments ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
2834
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
2835
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2836
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );				
2837
 
2838
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
2839
		  			  	  nOsId IN OS_CONTENTS.OS_ID%TYPE,
2840
						  nUserId IN NUMBER );	
2841
 
2842
PROCEDURE Remove_Obsolete_Patches ( nOsId IN OS_CONTENTS.OS_ID%TYPE,
2843
		  						  	nUserId IN NUMBER );
2844
 
2845
 
2846
FUNCTION GET_OS_ID ( PvId IN NUMBER ) RETURN NUMBER;	
2847
 
2848
FUNCTION GET_NODE_ID ( OsId IN NUMBER ) RETURN NUMBER;
2849
 
2850
PROCEDURE Add_Product_Note ( nProdId IN NUMBER,
2851
		  				   	 sNotes IN VARCHAR2,
2852
							 nUserId IN NUMBER );
2853
 
2854
PROCEDURE Edit_Product_Note ( nProdId IN NUMBER,
2855
		  				   	 sNotes IN VARCHAR2,
2856
							 nUserId IN NUMBER );							 
2857
 
2858
PROCEDURE Log_Product_Trail ( nProdId IN PRODUCT_TRAIL.PROD_ID%TYPE,
2859
						  	  sAction IN PRODUCT_TRAIL.TRAIL_ACTION%TYPE,
2860
						  	  nUserId IN PRODUCT_TRAIL.USER_ID%TYPE  );								 
2861
 
2862
END pk_Product;
2863
/
2864
 
2865
CREATE OR REPLACE PROCEDURE ADD_PROCESS (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
2866
	   	  		  						 sHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
2867
	   	  		  						 nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,
2868
										 sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2869
										 sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2870
										 sIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
2871
										 nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
2872
										 nUserId IN NUMBER) IS
2873
 
2874
 
2875
PkgName VARCHAR2(100);
2876
nPkgId	NUMBER;										 
2877
 
2878
 
2879
/*Rupesh Release 6/02/2006*/
2880
BEGIN
2881
 
2882
	 SELECT PKG.PKG_NAME, PKG.PKG_ID INTO PkgName, nPkgId
2883
	 FROM PACKAGE_VERSIONS PV, PACKAGES PKG
2884
	 WHERE PV.PV_ID = nProdId
2885
	 AND PKG.PKG_ID = PV.PKG_ID;
2886
 
2887
	 INSERT INTO PROCESSES_CONFIG (PROC_ID, PKG_HEALTH_TAG, OS_ID, CMD_INTERFACE, PKG_OWNER, IS_INTERFACE, PROD_ID, PKG_ID )
2888
	 VALUES (nProcId, sHealthTag, nOsId, sCmdInterface, sPkgOwner, sIsInterface, nProdId, nPkgId);
2889
 
2890
 
2891
 
2892
	-- Log Action --
2893
	pk_Bom.Log_Os_Trail ( nOsId,  
2894
						  'Added process with health tag '|| sHealthTag ||' for product '|| PkgName,
2895
						  nUserId );
2896
 
2897
 
2898
END ADD_PROCESS;
2899
/
2900
 
2901
CREATE OR REPLACE PACKAGE pk_Project IS
2902
 
2903
 
2904
PROCEDURE Add_Project ( sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
2905
		  			  	nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE );
2906
 
2907
PROCEDURE Update_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE,
2908
		  				   sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
2909
						   nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE );		
2910
 
2911
PROCEDURE ShowHide_Project ( nProjId DM_PROJECTS.PROJ_ID%TYPE );						   				
2912
 
2913
PROCEDURE Remove_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE );						
2914
 
2915
PROCEDURE Add_Branch ( sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
2916
		  			   nProjId IN BRANCHES.PROJ_ID%TYPE,
2917
					   nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
2918
                       sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE );
2919
 
2920
PROCEDURE Update_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE,
2921
		  				  sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
2922
					   	  nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
2923
                          sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE );					   
2924
 
2925
PROCEDURE Remove_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE );	
2926
 
2927
PROCEDURE ShowHide_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE );
2928
 
2929
PROCEDURE ShowHide_Download ( nProjId DM_PROJECTS.PROJ_ID%TYPE );	
2930
 
2931
PROCEDURE ShowHide_StateDownload ( nStateId STATES.STATE_ID%TYPE );	
2932
 
2933
 
2934
 
2935
 
2936
END pk_Project;
2937
/
2938
 
2939
CREATE OR REPLACE PACKAGE pk_Requirements IS
2940
 
2941
PROCEDURE Add_Bom ( nFromBomId IN BOMS.BOM_ID%TYPE,
2942
					nToBranchId IN BOMS.BRANCH_ID%TYPE );	
2943
 
2944
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 );					
2945
 
2946
END pk_Requirements;
2947
/
2948
 
2949
CREATE OR REPLACE FUNCTION GET_DATETIME  RETURN DATE IS
2950
 
2951
/* ---------------------------------------------------------------------------
2952
    Version: 1.0.0
2953
   --------------------------------------------------------------------------- */
2954
 
2955
BEGIN
2956
 
2957
	RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
2958
 
2959
END GET_DATETIME;
2960
/
2961
 
2962
CREATE OR REPLACE PROCEDURE New_Unit_Test ( nPv_id IN NUMBER,
2963
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
2964
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
2965
                                            sDpkg_path IN VARCHAR2,
2966
                                            sResults IN VARCHAR2,
2967
                                            sCompletion_date IN VARCHAR2,
2968
                                            nCompleted_by IN NUMBER,
2969
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
2970
											enumTEST_TYPE_NOT_DONE IN NUMBER,
2971
											outFileName OUT VARCHAR2
2972
                                           ) IS
2973
/* ---------------------------------------------------------------------------
2974
    Version: 3.2.0
2975
   --------------------------------------------------------------------------- */
2976
 
2977
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'DM_TEST';
2978
 
2979
    newID NUMBER;
2980
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
2981
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
2982
 
2983
BEGIN
2984
 
2985
	-- Get new ID --
2986
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
2987
 
2988
 
2989
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
2990
        	outFileName := sResults;
2991
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
2992
        END IF;
2993
 
2994
 
2995
	-- Remove NOT_DONE entry if exists
2996
	DELETE FROM UNIT_TESTS
2997
	 WHERE pv_id = nPv_id
2998
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
2999
 
3000
	--- Add Additional Note ---
3001
    INSERT INTO UNIT_TESTS ( TEST_ID,
3002
								PV_ID,
3003
								TEST_TYPES_FK,
3004
								TEST_SUMMARY,
3005
								COMPLETION_DATE,
3006
								COMPLETED_BY,
3007
								RESULTS_URL,
3008
								RESULTS_ATTACHMENT_NAME )
3009
    VALUES (
3010
       	newID,
3011
           nPv_id,
3012
           nTestTypeId,
3013
           sTest_summary,
3014
           SYSDATE(),
3015
           nCompleted_by,
3016
           ResultsURL,
3017
           ResultsAttachment );
3018
 
3019
END New_Unit_Test;
3020
/
3021
 
3022
CREATE OR REPLACE PACKAGE PK_REPORT IS
3023
 
3024
/*
3025
------------------------------
3026
||  Last Modified:  S.Vukovic
3027
||  Modified Date:  8/Mar/2005
3028
||  Spec Version:   1.0
3029
------------------------------
3030
*/
3031
 
3032
	TYPE typeCur IS REF CURSOR;
3033
 
3034
    /*================================================================================================*/
3035
 
3036
	FUNCTION BOM_PRODUCTS_BY_NODE_BY_OS ( BomId NUMBER ) RETURN typeCur;
3037
 
3038
	/*================================================================================================*/
3039
 
3040
 
3041
END PK_REPORT;
3042
/
3043
 
3044
CREATE OR REPLACE PACKAGE pk_Base_Env_test IS
3045
 
3046
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
3047
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
3048
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
3049
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE );
3050
 
3051
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
3052
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
3053
						 	nBosId IN BASE_ENV.BOS_ID%TYPE );		
3054
 
3055
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
3056
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE;
3057
 
3058
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE );
3059
 
3060
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
3061
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
3062
						nUserId IN NUMBER );
3063
 
3064
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
3065
		  				   	 sProdVersion IN VARCHAR2,
3066
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3067
							 nUserId IN NUMBER,
3068
							 sComments IN VARCHAR2  );
3069
 
3070
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
3071
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3072
							nUserId IN NUMBER );
3073
 
3074
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
3075
						   sNewProdIdVersion IN VARCHAR2,
3076
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3077
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
3078
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
3079
						   sElectronicName IN PACKAGES.ELECTRONIC_NAME%TYPE );
3080
 
3081
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
3082
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3083
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE );
3084
 
3085
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
3086
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3087
						  nUserId IN NUMBER );
3088
 
3089
 
3090
END pk_Base_Env_test;
3091
/
3092
 
3093
CREATE OR REPLACE PACKAGE pk_Bom_Test IS
3094
 
3095
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
3096
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
3097
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
3098
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
3099
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
3100
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
3101
					nUserId IN BOM_STATE.USER_ID%TYPE );
3102
 
3103
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
3104
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3105
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
3106
					   nUserId IN NUMBER );					
3107
 
3108
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE;	
3109
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE;
3110
 
3111
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
3112
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
3113
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
3114
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
3115
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  );
3116
 
3117
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
3118
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
3119
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
3120
							 nUserId IN NUMBER );		
3121
 
3122
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
3123
							 	 nUserId IN NUMBER );							 		
3124
 
3125
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 );
3126
 
3127
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t );
3128
 
3129
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t );			
3130
 
3131
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
3132
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
3133
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
3134
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
3135
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
3136
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE );	
3137
 
3138
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
3139
					   nUserId IN BOM_STATE.USER_ID%TYPE,
3140
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
3141
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL );	
3142
 
3143
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
3144
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
3145
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3146
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );					   					
3147
 
3148
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
3149
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
3150
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
3151
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  );	
3152
 
3153
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
3154
						   sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
3155
						   nUserId IN NODE_TRAIL.USER_ID%TYPE  );	
3156
 
3157
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
3158
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
3159
						  nUserId IN OS_TRAIL.USER_ID%TYPE  );						   
3160
 
3161
 
3162
 
3163
END pk_Bom_Test;
3164
/
3165
 
3166
CREATE OR REPLACE PACKAGE pk_Bom IS
3167
 
3168
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
3169
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
3170
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
3171
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
3172
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
3173
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
3174
					nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3175
					nUserId IN BOM_STATE.USER_ID%TYPE );
3176
 
3177
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
3178
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3179
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
3180
					   nUserId IN NUMBER );		
3181
 
3182
PROCEDURE Update_ProdBom ( nBomId IN BOMS.BOM_ID%TYPE,
3183
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3184
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
3185
					   nUserId IN NUMBER );							   			
3186
 
3187
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE;	
3188
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE;
3189
 
3190
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
3191
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
3192
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
3193
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
3194
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  );
3195
 
3196
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
3197
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
3198
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
3199
							 nUserId IN NUMBER );		
3200
 
3201
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
3202
							 	 nUserId IN NUMBER );							 		
3203
 
3204
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 );
3205
 
3206
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t );
3207
 
3208
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t );			
3209
 
3210
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
3211
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
3212
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
3213
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
3214
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
3215
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE );	
3216
 
3217
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
3218
					   nUserId IN BOM_STATE.USER_ID%TYPE,
3219
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
3220
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL );	
3221
 
3222
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
3223
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
3224
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3225
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );					   					
3226
 
3227
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
3228
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
3229
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
3230
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  );	
3231
 
3232
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
3233
						   sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
3234
						   nUserId IN NODE_TRAIL.USER_ID%TYPE  );	
3235
 
3236
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
3237
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
3238
						  nUserId IN OS_TRAIL.USER_ID%TYPE  );						   
3239
 
3240
 
3241
 
3242
END pk_Bom;
3243
/
3244
 
3245
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER ( sInList IN VARCHAR2 ) RETURN DEPMGR_NUMBER_TAB_t IS
3246
 
3247
/* ---------------------------------------------------------------------------
3248
    Version: 1.0.0
3249
   --------------------------------------------------------------------------- */
3250
 
3251
    sync_rtags		   DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
3252
	pos				   NUMBER;
3253
	in_list			   VARCHAR2(4000) := sInList || ',';
3254
 
3255
BEGIN
3256
 
3257
	IF NOT sInList IS NULL
3258
	THEN
3259
		LOOP
3260
	        EXIT WHEN in_list IS NULL;
3261
	        pos := INSTR ( in_list, ',' );
3262
	        sync_rtags.extend;
3263
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3264
	        in_list := SUBSTR ( in_list, pos+1 );
3265
		END LOOP;
3266
	END IF;
3267
 
3268
	RETURN sync_rtags;
3269
END IN_LIST_NUMBER;
3270
/
3271
 
3272
CREATE OR REPLACE PACKAGE PK_BOM_RPT AS
3273
	   TYPE TOC_Type IS REF CURSOR RETURN TableOfContents%ROWTYPE;
3274
END PK_BOM_RPT;
3275
/
3276
 
3277
CREATE OR REPLACE PROCEDURE sp_get_toc (toc_Cursor IN OUT PK_BOM_RPT.TOC_Type,Test_Parameter IN varchar2)
3278
AS
3279
  LAST_PAGE INTEGER;
3280
  BEGIN
3281
       DELETE FROM TableOfContents;
3282
       COMMIT;
3283
       EXECUTE IMMEDIATE Test_Parameter;
3284
       SELECT cast(MAX(PAGE) as INTEGER) into LAST_PAGE FROM TableOfContents;
3285
       LAST_PAGE := LAST_PAGE + 2;
3286
       insert into tableofcontents
3287
       values
3288
       ('Base Configurations',LAST_PAGE,GET_DATE());
3289
       COMMIT;
3290
  	   OPEN toc_Cursor FOR
3291
	   	 SELECT * FROM TableOfContents;
3292
END sp_get_toc;
3293
/
3294
 
3295
CREATE OR REPLACE PACKAGE pk_operating_system
3296
IS
3297
   PROCEDURE add_os (
3298
      sosname         IN   operating_systems.os_name%TYPE,
3299
      soscomments     IN   operating_systems.os_comments%TYPE,
3300
      snodespecfile   IN   operating_systems.node_spec_file%TYPE,
3301
      snotxml         IN   operating_systems.not_xml%TYPE,
3302
      nnodeid         IN   operating_systems.node_id%TYPE,
3303
      nbaseenvname    IN   base_env.base_env_name%TYPE,
3304
      nbosid          IN   base_env.bos_id%TYPE DEFAULT NULL,
3305
      nuserid         IN   NUMBER
3306
   );
3307
 
3308
   PROCEDURE update_os (
3309
      nosid           IN   operating_systems.os_id%TYPE,
3310
      sosname         IN   operating_systems.os_name%TYPE,
3311
      soscomments     IN   operating_systems.os_comments%TYPE,
3312
      nbaseenvname    IN   base_env.base_env_name%TYPE,
3313
      snodespecfile   IN   operating_systems.node_spec_file%TYPE,
3314
      snotxml         IN   operating_systems.not_xml%TYPE,
3315
      nuserid         IN   NUMBER
3316
   );
3317
 
3318
   PROCEDURE add_product_wrap (
3319
      npkgid         IN   NUMBER,
3320
      sprodversion   IN   VARCHAR2,
3321
      nosid          IN   os_contents.os_id%TYPE,
3322
      nuserid        IN   NUMBER,
3323
      scomments      IN   VARCHAR2 DEFAULT NULL
3324
   );
3325
 
3326
   PROCEDURE set_base_conf (
3327
      nosid        IN   os_base_env.os_id%TYPE,
3328
      nbaseenvid   IN   os_base_env.base_env_id%TYPE
3329
   );
3330
 
3331
   PROCEDURE shift_product_seqnum (
3332
      nprodid     IN   os_contents.prod_id%TYPE,
3333
      nosid       IN   os_contents.os_id%TYPE,
3334
      ntoseqnum   IN   os_contents.seq_num%TYPE
3335
   );
3336
 
3337
   PROCEDURE shift_bulk_products_seqnum (
3338
      sprodidlist   IN   VARCHAR2,
3339
      nosid         IN   os_contents.os_id%TYPE,
3340
      cdirection    IN   CHAR
3341
   );
3342
 
3343
   PROCEDURE destroy_os (
3344
      nosidcollection   IN   depmgr_number_tab_t,
3345
      nuserid           IN   NUMBER
3346
   );
3347
 
3348
   PROCEDURE destroy_os (nosidlist IN VARCHAR2, nuserid IN NUMBER);
3349
 
3350
   PROCEDURE add_package_process (
3351
      nprocidlist   IN   VARCHAR2,
3352
	  npvid 		IN 	 processes_config.prod_id%TYPE,
3353
      nosid         IN   os_contents.os_id%TYPE,
3354
      nuserid       IN   NUMBER
3355
   );
3356
 
3357
   PROCEDURE add_packages_process (
3358
	  npvidlist		IN 	 VARCHAR2,
3359
      nosid         IN   os_contents.os_id%TYPE,
3360
      nuserid       IN   NUMBER
3361
   );   
3362
END pk_operating_system;
3363
/
3364
 
3365
CREATE OR REPLACE FUNCTION GET_DATE RETURN DATE IS
3366
 
3367
/* ---------------------------------------------------------------------------
3368
    Version: 1.0.0
3369
   --------------------------------------------------------------------------- */
3370
 
3371
BEGIN
3372
 
3373
	RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
3374
 
3375
END GET_DATE;
3376
/
3377
 
3378
CREATE OR REPLACE PROCEDURE WRITE_PRODUCTION_HISTORY (nBomId IN NUMBER,
3379
	   	  		  									  sBomName IN VARCHAR2,
3380
													  sNodeName IN VARCHAR2,
3381
													  sComment IN VARCHAR2,
3382
													  nUserId IN NUMBER
3383
	   	  		  									  )IS
3384
 
3385
/******************************************************************************
3386
   NAME:       WRITE_PRODUCTION_HISTORY
3387
   PURPOSE:    
3388
 
3389
   REVISIONS:
3390
   Ver        Date        Author           Description
3391
   ---------  ----------  ---------------  ------------------------------------
3392
   1.0        6/07/2006          1. Created this procedure.
3393
 
3394
   NOTES:
3395
 
3396
   Automatically available Auto Replace Keywords:
3397
      Object Name:     WRITE_PRODUCTION_HISTORY
3398
      Sysdate:         6/07/2006
3399
      Date and Time:   6/07/2006, 11:52:11 AM, and 6/07/2006 11:52:11 AM
3400
      Username:         (set in TOAD Options, Procedure Editor)
3401
      Table Name:       (set in the "New PL/SQL Object" dialog)
3402
 
3403
******************************************************************************/
3404
BEGIN
3405
   INSERT INTO PRODUCTION_HISTORY (BOM_ID, BOM_NAME, NODE_NAME, COMMENTS, DATE_TIME_STAMP, USER_ID)
3406
   VALUES (nBomId, sBomName, sNodeName, sComment, GET_DATETIME(), nUserId);
3407
 
3408
 
3409
END WRITE_PRODUCTION_HISTORY;
3410
/
3411
 
3412
CREATE OR REPLACE TYPE "DEPMGR_NUMBER_TAB_T"                                                                          as TABLE of NUMBER
3413
/
3414
 
3415
CREATE OR REPLACE PACKAGE pk_Network_Node_test IS
3416
/* ---------------------------------------------------------------------------
3417
    Version: 1.0.0
3418
   --------------------------------------------------------------------------- */
3419
 
3420
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
3421
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
3422
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
3423
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
3424
					 nUserId IN NUMBER );
3425
 
3426
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
3427
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
3428
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
3429
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE );					 
3430
 
3431
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
3432
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE );	
3433
 
3434
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t );	
3435
 
3436
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2 );			
3437
 
3438
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
3439
		  			   nBomId IN BOMS.BOM_ID%TYPE,
3440
					   nUserId IN NUMBER );						 
3441
 
3442
END pk_Network_Node_test;
3443
/
3444
 
3445
CREATE OR REPLACE type split_tbl as table of varchar2(32767)
3446
/
3447
 
3448
CREATE OR REPLACE PACKAGE pk_Product_test IS
3449
/* ---------------------------------------------------------------------------
3450
    Version: 1.0.0
3451
   --------------------------------------------------------------------------- */
3452
 
3453
PROCEDURE New_Product ( sProdName IN PACKAGES.PKG_NAME%TYPE,
3454
						sProdVersion IN PACKAGE_VERSIONS.PKG_VERSION%TYPE,
3455
						nUserId IN NUMBER,
3456
						outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );
3457
 
3458
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
3459
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3460
						nUserId IN NUMBER );
3461
 
3462
PROCEDURE Hide_Product ( sProdIdList IN VARCHAR2,
3463
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3464
						nUserId IN NUMBER );	
3465
 
3466
PROCEDURE Unhide_Product ( sProdIdList IN NUMBER,
3467
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3468
						nUserId IN NUMBER );												
3469
 
3470
PROCEDURE Update_Process (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
3471
		  				  nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
3472
		  				  nIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,		  
3473
		  				  nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,		  
3474
						  nCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
3475
						  nPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
3476
						  sPkgHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
3477
						  nProduct IN PROCESSES_CONFIG.PROD_ID%TYPE );						
3478
 
3479
PROCEDURE Update_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
3480
						   sNewProdIdVersion IN VARCHAR2,
3481
						   nOsId IN OS_CONTENTS.OS_ID%TYPE,
3482
						   nSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE,
3483
						   sComments IN OS_CONTENTS.PRODUCT_COMMENTS%TYPE,
3484
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
3485
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
3486
						   sIsNodeSpec IN OS_CONTENTS.IS_NODE_SPEC%TYPE,
3487
						   sNotXML IN OS_CONTENTS.NOT_XML%TYPE,
3488
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
3489
						   nUserId IN NUMBER,
3490
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );						 
3491
 
3492
PROCEDURE Replace_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
3493
		  				  	nNewProdId IN OS_CONTENTS.PROD_ID%TYPE,
3494
		  			  	    nOsId IN OS_CONTENTS.OS_ID%TYPE,
3495
							nUserId IN NUMBER );
3496
 
3497
PROCEDURE Remove_Process ( 	sProcName IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,		
3498
		  				   	sProdIdList IN VARCHAR2,
3499
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3500
							sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
3501
							sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
3502
							sInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
3503
							nUserId IN NUMBER );							
3504
 
3505
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
3506
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3507
							nUserId IN NUMBER ); 
3508
 
3509
PROCEDURE Add_Products_NodeSpec ( sProdIdList IN VARCHAR2,
3510
		  			  	  		  nOsId IN OS_CONTENTS.OS_ID%TYPE,
3511
								  nUserId IN NUMBER ); 														
3512
 
3513
PROCEDURE Accept_Reject ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
3514
						  nBomId IN BOMS.BOM_ID%TYPE,
3515
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3516
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
3517
						  nOsId IN NUMBER );
3518
 
3519
PROCEDURE Accept_Reject_List ( nProdIdList IN VARCHAR2,
3520
							   nBomId IN BOMS.BOM_ID%TYPE,
3521
						  	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3522
						       nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
3523
							   nOsId IN NUMBER );
3524
 
3525
PROCEDURE Accept_Reject_Comments ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
3526
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
3527
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3528
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );				
3529
 
3530
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
3531
		  			  	  nOsId IN OS_CONTENTS.OS_ID%TYPE,
3532
						  nUserId IN NUMBER );	
3533
 
3534
PROCEDURE Remove_Obsolete_Patches ( nOsId IN OS_CONTENTS.OS_ID%TYPE,
3535
		  						  	nUserId IN NUMBER );
3536
 
3537
 
3538
FUNCTION GET_OS_ID ( PvId IN NUMBER ) RETURN NUMBER;	
3539
 
3540
FUNCTION GET_NODE_ID ( OsId IN NUMBER ) RETURN NUMBER;
3541
 
3542
 
3543
 
3544
END pk_Product_Test;
3545
/
3546
 
3547
CREATE OR REPLACE FUNCTION GET_SYSTEM_VALUE ( sItemName IN SYSTEM_CONFIGURATION.ITEM_NAME%TYPE ) RETURN SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE IS
3548
 
3549
/* ---------------------------------------------------------------------------
3550
    Version: 1.0.0
3551
   --------------------------------------------------------------------------- */
3552
 
3553
ItemValue SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE;
3554
 
3555
BEGIN
3556
	-- Get system value
3557
	SELECT sc.ITEM_VALUE INTO ItemValue
3558
	  FROM SYSTEM_CONFIGURATION sc
3559
	 WHERE sc.ITEM_NAME = sItemName;
3560
 
3561
	RETURN ItemValue;
3562
 
3563
END GET_SYSTEM_VALUE;
3564
/
3565
 
3566
CREATE OR REPLACE PROCEDURE Log_Action ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
3567
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
3568
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
3569
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
3570
/* ---------------------------------------------------------------------------
3571
    Version: 3.0
3572
   --------------------------------------------------------------------------- */
3573
 
3574
    ActionTypeId NUMBER;
3575
 
3576
BEGIN
3577
 
3578
    -- Get Action Type FK
3579
    SELECT act.ACTTYPE_ID INTO ActionTypeId
3580
      FROM ACTION_TYPE act
3581
     WHERE act.NAME = enumActionTypeName;
3582
 
3583
 
3584
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
3585
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
3586
 
3587
 
3588
END Log_Action;
3589
/
3590
 
3591
CREATE OR REPLACE PACKAGE BODY pk_State
3592
IS
3593
/* ---------------------------------------------------------------------------
3594
    Version: 1.0.0
3595
   --------------------------------------------------------------------------- */
3596
 
3597
 
3598
/*--------------------------------------------------------------------------------------------------*/
3599
PROCEDURE Add_State ( sStateName IN STATES.STATE_NAME%TYPE,
3600
		  			  nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE,
3601
		  			  nProjId IN STATES.PROJ_ID%TYPE ) IS
3602
 
3603
StateId NUMBER;
3604
NextStateSeq NUMBER;
3605
 
3606
 
3607
BEGIN
3608
	/*--------------- Business Rules Here -------------------*/
3609
	/*-------------------------------------------------------*/
3610
 
3611
	-- Get state_id --
3612
	SELECT SEQ_STATE_ID.NEXTVAL INTO StateId FROM DUAL;
3613
 
3614
	-- Get Next Release Sequence
3615
	SELECT MAX( st.STATE_SEQ ) INTO NextStateSeq
3616
	  FROM STATES st
3617
	 WHERE st.PROJ_ID = nProjId;
3618
 
3619
	IF NextStateSeq IS NULL THEN
3620
	   NextStateSeq := 1;
3621
	ELSE
3622
	   NextStateSeq := NextStateSeq + 1;
3623
	END IF;
3624
 
3625
 
3626
	-- Insert Branch --
3627
	INSERT INTO STATES ( STATE_ID, PROJ_ID, STATE_NAME, STATE_SEQ, STATE_TYPE_ENUM )
3628
	VALUES ( StateId, nProjId, sStateName, NextStateSeq, nStateTypeEnum );
3629
 
3630
 
3631
	EXCEPTION
3632
    WHEN DUP_VAL_ON_INDEX
3633
	THEN		
3634
		RAISE_APPLICATION_ERROR (-20000, 'State Name "'|| sStateName ||'" is Already Used.');
3635
 
3636
END	Add_State;
3637
/*--------------------------------------------------------------------------------------------------*/
3638
PROCEDURE Update_State ( nStateId IN STATES.STATE_ID%TYPE,
3639
		  			   	 sStateName IN STATES.STATE_NAME%TYPE,
3640
						 nStateSeq IN STATES.STATE_SEQ%TYPE,
3641
						 nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE ) IS
3642
 
3643
currSeqNum NUMBER;
3644
FromSeqNum NUMBER;
3645
ProjId NUMBER;
3646
 
3647
BEGIN
3648
	/*--------------- Business Rules Here -------------------*/
3649
	/*-------------------------------------------------------*/
3650
	-- Get State proj_id --
3651
	SELECT st.PROJ_ID INTO ProjId  FROM STATES st WHERE st.STATE_ID = nStateId;
3652
 
3653
 
3654
	-- Get Current seq_num
3655
	SELECT st.STATE_SEQ INTO currSeqNum
3656
	  FROM STATES st
3657
	 WHERE st.STATE_ID = nStateId;
3658
 
3659
 
3660
	IF currSeqNum > nStateSeq
3661
	THEN
3662
 
3663
		FromSeqNum := nStateSeq;
3664
 
3665
		-- Shift others Up
3666
		UPDATE STATES st SET
3667
			   st.STATE_SEQ = st.STATE_SEQ + 1
3668
		 WHERE st.PROJ_ID = ProjId
3669
		   AND st.STATE_SEQ BETWEEN  FromSeqNum  AND  currSeqNum - 1;
3670
 
3671
 
3672
	ELSIF currSeqNum < nStateSeq
3673
	THEN
3674
 
3675
		FromSeqNum := currSeqNum + 1;  
3676
 
3677
		 -- Shift others Down
3678
		UPDATE STATES st SET
3679
		   	   st.STATE_SEQ = st.STATE_SEQ - 1
3680
		 WHERE st.PROJ_ID = ProjId
3681
		   AND st.STATE_SEQ BETWEEN  FromSeqNum  AND  nStateSeq;
3682
 
3683
	END IF;
3684
 
3685
 
3686
	-- Update State --
3687
	UPDATE STATES st SET
3688
	st.STATE_NAME = sStateName,
3689
	st.STATE_SEQ = nStateSeq,
3690
	st.STATE_TYPE_ENUM = nStateTypeEnum
3691
	WHERE st.STATE_ID = nStateId;
3692
 
3693
	EXCEPTION
3694
    WHEN DUP_VAL_ON_INDEX
3695
	THEN		
3696
		RAISE_APPLICATION_ERROR (-20000, 'State Name "'|| sStateName ||'" is Already Used.');
3697
 
3698
END	Update_State;
3699
/*--------------------------------------------------------------------------------------------------*/
3700
PROCEDURE Remove_State ( nStateId IN STATES.STATE_ID%TYPE ) IS
3701
 
3702
rowCount NUMBER DEFAULT 0;
3703
ProjId NUMBER;
3704
NextSeqNum NUMBER;
3705
 
3706
CURSOR curStates IS
3707
	SELECT st.STATE_ID
3708
	  FROM STATES st
3709
	 WHERE st.PROJ_ID = ProjId
3710
	 ORDER BY st.STATE_SEQ;
3711
recStates curStates%ROWTYPE;
3712
 
3713
BEGIN
3714
	/*--------------- Business Rules Here -------------------*/
3715
	-- Check for Dependencies (BOMS)
3716
	SELECT Count(*) INTO rowCount
3717
	  FROM BOM_STATE bs
3718
	 WHERE bs.STATE_ID = nStateId;
3719
 
3720
	IF rowCount > 0 THEN
3721
	   RAISE_APPLICATION_ERROR (-20000, 'Some BOMS are still using this State ( Counted '|| rowCount ||' ).' );
3722
	END IF; 
3723
	/*-------------------------------------------------------*/
3724
 
3725
	-- Get State proj_id --
3726
	SELECT st.PROJ_ID INTO ProjId  FROM STATES st WHERE st.STATE_ID = nStateId;
3727
 
3728
 
3729
	-- Remove State --
3730
	DELETE 
3731
	  FROM STATES st
3732
	 WHERE st.STATE_ID = nStateId;
3733
 
3734
 
3735
	-- Update Seq Number --
3736
	OPEN curStates;
3737
	FETCH curStates INTO recStates;
3738
 
3739
	NextSeqNum := 1;
3740
	WHILE curStates%FOUND
3741
	LOOP
3742
 
3743
		UPDATE STATES st SET
3744
		st.STATE_SEQ = NextSeqNum
3745
		WHERE st.STATE_ID = recStates.STATE_ID;
3746
 
3747
		NextSeqNum := NextSeqNum + 1;
3748
		FETCH curStates INTO recStates;
3749
	END LOOP;
3750
 
3751
	CLOSE curStates; 
3752
 
3753
 
3754
END	Remove_State;
3755
/*--------------------------------------------------------------------------------------------------*/
3756
PROCEDURE Toggle_Is_Displayed ( nStateId IN BOM_STATE.STATE_ID%TYPE,
3757
								nBomId IN BOM_STATE.BOM_ID%TYPE,
3758
								cIsDisplay IN BOM_STATE.IS_DISPLAYED%TYPE ) IS
3759
 
3760
IsDisplayed BOM_STATE.IS_DISPLAYED%TYPE;
3761
 
3762
BEGIN
3763
	/*--------------- Business Rules Here -------------------*/
3764
	/*-------------------------------------------------------*/
3765
 
3766
	-- Get Current is_displayed
3767
	/*SELECT bs.IS_DISPLAYED INTO IsDisplayed
3768
	  FROM BOM_STATE bs
3769
	 WHERE bs.BOM_ID = nBomId
3770
	   AND bs.STATE_ID = nStateId;
3771
 
3772
 
3773
	-- Toggle is_displayed
3774
	IF IsDisplayed = 'Y' THEN
3775
		IsDisplayed := 'N';
3776
	ELSE
3777
		IsDisplayed := 'Y';
3778
	END IF;*/
3779
 
3780
 
3781
	-- Update bom state
3782
	UPDATE BOM_STATE SET
3783
	IS_DISPLAYED = cIsDisplay
3784
	WHERE BOM_ID = nBomId
3785
	  AND STATE_ID = nStateId;
3786
 
3787
 
3788
END	Toggle_Is_Displayed;
3789
 
3790
/*--------------------------------------------------------------------------------------------------*/
3791
PROCEDURE Auto_Hide ( nStateId IN BOM_STATE.STATE_ID%TYPE,
3792
					  nInsertedBomId IN BOM_STATE.BOM_ID%TYPE,
3793
					  nEventValue IN SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE ) IS
3794
 
3795
CURSOR curParent IS
3796
	SELECT bo.BOM_ID,
3797
		   bo.IS_READONLY,
3798
		   bo.IS_REJECTED
3799
	  FROM BOMS bo
3800
	 WHERE bo.BOM_ID IN (	
3801
	 					 SELECT bo.PARENT_BOM_ID
3802
						   FROM BOMS bo
3803
						  WHERE bo.BOM_ID = nInsertedBomId
3804
						    AND bo.BOM_ID != bo.PARENT_BOM_ID
3805
	 					);
3806
recParent curParent%ROWTYPE;	
3807
 
3808
ParentBomId BOMS.PARENT_BOM_ID%TYPE;
3809
ParentOfficial BOMS.IS_READONLY%TYPE;	
3810
ParentRejected BOMS.IS_REJECTED%TYPE;			  
3811
 
3812
BEGIN
3813
	/*--------------- Business Rules Here -------------------*/
3814
	/*-------------------------------------------------------*/
3815
 
3816
	-- Get Parent Details
3817
	OPEN curParent;
3818
	FETCH curParent INTO recParent;
3819
 
3820
	ParentBomId := recParent.BOM_ID;
3821
	ParentOfficial := recParent.IS_READONLY;
3822
	ParentRejected := recParent.IS_REJECTED;
3823
 
3824
	CLOSE curParent;
3825
 
3826
 
3827
	IF ParentOfficial = 'Y' THEN
3828
		/* Auto-Hide BOM */
3829
 
3830
		IF nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_RELEASE_TO') THEN
3831
			/* REQUIREMENT: Hide Rejected parent */
3832
 
3833
			IF ParentRejected = 'Y' THEN
3834
				-- Update bom state
3835
				UPDATE BOM_STATE SET
3836
					IS_DISPLAYED = 'N'
3837
				WHERE BOM_ID = ParentBomId
3838
				  AND STATE_ID = nStateId;
3839
 
3840
			END IF;
3841
 
3842
 
3843
		ELSIF ( nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_LOCK_BOM') )  OR  (nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_ACCEPT_BOM') ) THEN
3844
			/* REQUIREMENT: Hide Rejected or Accepted parent */
3845
 
3846
			IF NOT ParentRejected IS NULL THEN
3847
				-- Update bom state
3848
				UPDATE BOM_STATE SET
3849
					IS_DISPLAYED = 'N'
3850
				WHERE BOM_ID = ParentBomId
3851
				  AND STATE_ID = nStateId;
3852
 
3853
			END IF;
3854
 
3855
 
3856
		ELSIF ( nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_UNLOCK_BOM') )  OR  (nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_REJECT_BOM') ) THEN
3857
			/* REQUIREMENT: Show parent */
3858
 
3859
			-- Update bom state
3860
			UPDATE BOM_STATE SET
3861
				IS_DISPLAYED = 'Y'
3862
			WHERE BOM_ID = ParentBomId
3863
			  AND STATE_ID = nStateId;
3864
 
3865
		END IF;
3866
 
3867
 
3868
 
3869
	END IF;
3870
 
3871
 
3872
 
3873
 
3874
END	Auto_Hide;
3875
/*--------------------------------------------------------------------------------------------------*/
3876
 
3877
 
3878
END pk_State;
3879
/
3880
 
3881
CREATE OR REPLACE PACKAGE BODY pk_Network_Node
3882
IS
3883
/* ---------------------------------------------------------------------------
3884
    Version: 1.0.0
3885
   --------------------------------------------------------------------------- */
3886
 
3887
/*--------------------------------------------------------------------------------------------------*/
3888
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
3889
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
3890
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
3891
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
3892
					 nUserId IN NUMBER,
3893
					 sNotXML IN NETWORK_NODES.NOT_XML%TYPE ) IS
3894
 
3895
NodeID NUMBER;
3896
 
3897
CURSOR nn_cur IS -- Check Node Name Duplicates
3898
		SELECT bc.node_id
3899
		  FROM BOM_CONTENTS bc,
3900
		  	   NETWORK_NODES nn
3901
		 WHERE bc.NODE_ID = nn.NODE_ID
3902
		   AND bc.BOM_ID = nBomId 
3903
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName );
3904
nn_rec nn_cur%ROWTYPE;
3905
 
3906
DUPLICATE_NODE_NAME EXCEPTION;
3907
 
3908
BEGIN
3909
	/*--------------- Business Rules Here -------------------*/
3910
	OPEN nn_cur;
3911
    FETCH nn_cur INTO nn_rec;
3912
 
3913
    IF nn_cur%FOUND
3914
    THEN
3915
		RAISE DUPLICATE_NODE_NAME;
3916
	END IF;
3917
 
3918
	CLOSE nn_cur;
3919
	/*-------------------------------------------------------*/
3920
 
3921
 
3922
	-- Get node_id
3923
	SELECT SEQ_NODE_ID.NEXTVAL INTO NodeID FROM DUAL;
3924
 
3925
 
3926
	-- Insert new Network Node			  
3927
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS, NOT_XML )
3928
	VALUES (
3929
			NodeID,
3930
			nNodeTypeId,
3931
			sNodeName,
3932
			sNodeComments,
3933
			sNotXML
3934
			);
3935
 
3936
 
3937
	-- Link Node with the BOM
3938
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID )
3939
	VALUES (
3940
		    nBomId,
3941
			NodeID
3942
		    );
3943
 
3944
	/* Log BOM_TRAIL */
3945
	pk_Bom.Log_Bom_Trail ( nBomId, 'Added Network Node: '||sNodeName, nUserId );				
3946
 
3947
EXCEPTION
3948
    WHEN DUPLICATE_NODE_NAME
3949
	THEN		
3950
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
3951
 
3952
END	Add_Node;
3953
/*--------------------------------------------------------------------------------------------------*/
3954
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
3955
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
3956
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
3957
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
3958
						nUserId IN NUMBER,
3959
						nLifeCycle IN NUMBER,
3960
						sNotXML IN NETWORK_NODES.NOT_XML%TYPE ) IS
3961
 
3962
BomID NUMBER;
3963
 
3964
CURSOR nn_cur IS -- Check Node Name Duplicates
3965
		SELECT bc.node_id
3966
		  FROM BOM_CONTENTS bc,
3967
		  	   NETWORK_NODES nn
3968
		 WHERE bc.NODE_ID = nn.NODE_ID
3969
		   AND bc.BOM_ID = BomId 
3970
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName )
3971
		   AND nn.NODE_ID != nNodeId;
3972
nn_rec nn_cur%ROWTYPE;
3973
 
3974
DUPLICATE_NODE_NAME EXCEPTION;
3975
 
3976
BEGIN
3977
	/*--------------- Business Rules Here -------------------*/
3978
	-- Check all parameters
3979
	IF (nNodeId IS NULL)  OR  (nNodeTypeId IS NULL) 
3980
	THEN
3981
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId='|| nNodeId  ||', nNodeTypeId='|| nNodeTypeId  );
3982
 
3983
	END IF;
3984
 
3985
	-- Get bom_id
3986
	SELECT bc.BOM_ID INTO BomId
3987
	  FROM BOM_CONTENTS bc
3988
	 WHERE bc.NODE_ID = nNodeId; 
3989
 
3990
	-- Check for duplicate names
3991
	OPEN nn_cur;
3992
    FETCH nn_cur INTO nn_rec;
3993
 
3994
    IF nn_cur%FOUND
3995
    THEN
3996
		RAISE DUPLICATE_NODE_NAME;
3997
	END IF;
3998
 
3999
	CLOSE nn_cur;
4000
	/*-------------------------------------------------------*/
4001
 
4002
	-- Update Network Node Details
4003
	UPDATE NETWORK_NODES nn SET
4004
		nn.NODE_NAME = sNodeName,
4005
		nn.NODE_COMMENTS = sNodeComments,
4006
		nn.NODE_TYPE_ID = nNodeTypeId,
4007
		nn.NODE_LIFE_CYCLE = nLifeCycle,
4008
		nn.NOT_XML = sNotXML
4009
	 WHERE nn.NODE_ID = nNodeId;
4010
 
4011
 	/* Log BOM_TRAIL */
4012
	pk_Bom.Log_Bom_Trail ( BomID, 'Updated Network Node: '||sNodeName, nUserId );
4013
 
4014
 
4015
EXCEPTION
4016
    WHEN DUPLICATE_NODE_NAME
4017
	THEN		
4018
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
4019
 
4020
END	Update_Node;
4021
/*--------------------------------------------------------------------------------------------------*/
4022
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
4023
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE ) IS
4024
 
4025
 
4026
 
4027
NODE_ID_REQUIRED EXCEPTION;
4028
 
4029
BEGIN
4030
	/*--------------- Business Rules Here -------------------*/
4031
    IF sNodeIdList IS NULL
4032
    THEN
4033
		RAISE NODE_ID_REQUIRED;
4034
	END IF;
4035
	/*-------------------------------------------------------*/
4036
 
4037
 
4038
 
4039
	-- Remove from Bom Contents
4040
	DELETE FROM BOM_CONTENTS
4041
	WHERE bom_id = nBomId
4042
	  AND node_id IN (
4043
		  		  	  SELECT *
4044
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
4045
		  		  	 );
4046
 
4047
 
4048
	-- Remove Network Nodes
4049
	DELETE FROM NETWORK_NODES
4050
	WHERE node_id IN (
4051
		  		  	  SELECT *
4052
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
4053
		  		  	 );
4054
 
4055
 
4056
 
4057
EXCEPTION
4058
    WHEN NODE_ID_REQUIRED
4059
	THEN		
4060
		RAISE_APPLICATION_ERROR (-20000, 'You must select at least one Network Node.');
4061
 
4062
END	Remove_Node;
4063
/*--------------------------------------------------------------------------------------------------*/
4064
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t, nUserId IN NUMBER ) IS
4065
 
4066
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
4067
NodeName VARCHAR2(4000);
4068
BomId NUMBER;
4069
 
4070
BEGIN
4071
	/*--------------- Business Rules Here -------------------*/
4072
	/*-------------------------------------------------------*/
4073
 
4074
	IF (nNodeIdCollection.COUNT > 0) THEN  
4075
 
4076
	   			--Log Action Trail
4077
		FOR i IN 1..nNodeIdCollection.COUNT
4078
		LOOP
4079
			-- Get bom_id
4080
			SELECT bc.BOM_ID INTO BomId
4081
	  		FROM BOM_CONTENTS bc
4082
			WHERE bc.NODE_ID = nNodeIdCollection(i);	
4083
 
4084
			--Get node_name
4085
			SELECT nn.NODE_NAME INTO NodeName
4086
	  		FROM NETWORK_NODES nn
4087
			WHERE nn.NODE_ID = nNodeIdCollection(i);	
4088
 
4089
			/* Log BOM_TRAIL */
4090
			pk_Bom.Log_Bom_Trail ( BomId, 'Deleted Network Node: '||NodeName, nUserId );
4091
 
4092
		END LOOP;				  
4093
 
4094
		-- Destroy Hardware Node Link
4095
		DELETE 
4096
		  FROM HARDWARE_NODE hn
4097
		 WHERE hn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
4098
 
4099
 
4100
		-- Destroy Node from Bom Contents
4101
		DELETE 
4102
		  FROM BOM_CONTENTS bc
4103
		 WHERE bc.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
4104
 
4105
 
4106
		-- Destroy Operation Systems
4107
		nIdCollector := NULL;
4108
		SELECT CAST ( MULTISET ( SELECT os.OS_ID
4109
		  	   		  		   	   FROM OPERATING_SYSTEMS os
4110
		 						  WHERE os.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) )
4111
							    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
4112
 
4113
		pk_Operating_System.Destroy_Os ( nIdCollector, nUserId );
4114
 
4115
		---- Finnaly destroy Network Node ----
4116
		DELETE
4117
		  FROM NETWORK_NODES nn
4118
		 WHERE nn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );		 
4119
 
4120
	END IF; 
4121
 
4122
 
4123
END	Destroy_Node;
4124
/*--------------------------------------------------------------------------------------------------*/
4125
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2, nUserId IN NUMBER ) IS
4126
 
4127
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
4128
 
4129
BEGIN
4130
	/*--------------- Business Rules Here -------------------*/
4131
	/*-------------------------------------------------------*/
4132
	nIdCollector := IN_LIST_NUMBER ( nNodeIdList );
4133
 
4134
	Destroy_Node ( nIdCollector, nUserId);	
4135
 
4136
 
4137
END	Destroy_Node;
4138
/*--------------------------------------------------------------------------------------------------*/
4139
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
4140
		  			   nBomId IN BOMS.BOM_ID%TYPE,
4141
					   nUserId IN NUMBER ) IS
4142
 
4143
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
4144
	SeqNum NUMBER;
4145
 
4146
BEGIN
4147
	/*--------------- Business Rules Here -------------------*/
4148
	-- Check for parameters
4149
	IF (sNodeIdOrder IS NULL)  OR (nBomId IS NULL) 
4150
	THEN
4151
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId='|| nBomId  ||' sNodeIdOrder='|| sNodeIdOrder  );
4152
	END IF;
4153
	/*-------------------------------------------------------*/
4154
 
4155
	nIdCollector := IN_LIST_NUMBER ( sNodeIdOrder );
4156
 
4157
	-- Set start sequence number
4158
	SeqNum := 1;
4159
 
4160
	FOR i IN 1..nIdCollector.COUNT
4161
	LOOP
4162
 
4163
		-- Update new sequence number
4164
		UPDATE BOM_CONTENTS bc SET
4165
			bc.SEQ_NUM = SeqNum
4166
		 WHERE bc.BOM_ID = nBomId
4167
		   AND bc.NODE_ID = nIdCollector(i);
4168
 
4169
		SeqNum := SeqNum + 1;
4170
 
4171
	END LOOP;
4172
 
4173
 
4174
END	Sort_Nodes;
4175
/*--------------------------------------------------------------------------------------------------*/
4176
END pk_Network_Node;
4177
/
4178
 
4179
CREATE OR REPLACE PACKAGE BODY pk_production
4180
IS
4181
/* ---------------------------------------------------------------------------
4182
    Version: 1.0.0
4183
   --------------------------------------------------------------------------- */
4184
 
4185
 
4186
/*--------------------------------------------------------------------------------------------------*/
4187
PROCEDURE Release_Authorisation_Tester ( nPvId IN NUMBER,
4188
  					  				   	 nBomId IN NUMBER,
4189
										 nTesterId IN NUMBER,
4190
										 sTesterComments IN VARCHAR2 ) IS
4191
 
4192
 
4193
BEGIN
4194
	/*--------------- Business Rules Here -------------------*/
4195
	/*-------------------------------------------------------*/
4196
 
4197
 
4198
 
4199
	-- Insert Into Release Authorisation Table --
4200
	INSERT INTO RELEASE_AUTHORISATION ( PV_ID, BOM_ID, TESTER_ID, TESTER_COMMENTS, TESTER_DATESTAMP )
4201
	VALUES ( nPvId, nBomId, nTesterId, sTesterComments, GET_DATETIME() );
4202
 
4203
 
4204
 
4205
END	Release_Authorisation_Tester;
4206
 
4207
/*--------------------------------------------------------------------------------------------------*/
4208
 
4209
/*--------------------------------------------------------------------------------------------------*/
4210
PROCEDURE Release_Authorisation_Manager ( nPvId IN NUMBER,
4211
  					  				   	  nBomId IN NUMBER,
4212
										  nManagerId IN NUMBER,
4213
										  sManagerComments IN VARCHAR2 ) IS
4214
 
4215
 
4216
BEGIN
4217
	/*--------------- Business Rules Here -------------------*/
4218
	/*-------------------------------------------------------*/
4219
 
4220
 
4221
 
4222
	-- Insert Into Release Authorisation Table --
4223
	UPDATE RELEASE_AUTHORISATION 
4224
	SET MANAGER_ID = nManagerId,
4225
		MANAGER_COMMENTS = sManagerComments,
4226
		MANAGER_DATESTAMP = GET_DATETIME(),
4227
		IS_OFFICIAL = 'Y'
4228
	WHERE PV_ID = nPvId
4229
	AND BOM_ID = nBomId;	
4230
 
4231
 
4232
 
4233
END	Release_Authorisation_Manager;
4234
 
4235
/*--------------------------------------------------------------------------------------------------*/
4236
 
4237
/*--------------------------------------------------------------------------------------------------*/
4238
PROCEDURE Log_Pkg_Trail ( nPkgId IN OS_TRAIL.OS_ID%TYPE,
4239
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
4240
						  nUserId IN OS_TRAIL.USER_ID%TYPE  ) IS
4241
 
4242
 
4243
BEGIN
4244
	/*--------------- Business Rules Here -------------------*/
4245
	IF (nPkgId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
4246
	THEN
4247
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nPkgId ||', sAction='|| sAction ||', nUserId='|| nUserId );
4248
	END IF;
4249
	/*-------------------------------------------------------*/
4250
 
4251
	INSERT INTO PACKAGE_TRAIL ( PKG_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
4252
	VALUES ( nPkgId, sAction, nUserId, GET_DATETIME() );	
4253
 
4254
END	Log_Pkg_Trail;
4255
/*--------------------------------------------------------------------------------------------------*/
4256
PROCEDURE Reject_Product ( nPvId IN NUMBER,
4257
						   nTesterId IN NUMBER,
4258
						   sTesterComments IN VARCHAR2 ) IS
4259
 
4260
IsRejected PRODUCT_DETAILS.IS_REJECTED%TYPE;		
4261
 
4262
CURSOR curProd IS
4263
	SELECT pd.*
4264
	  FROM PRODUCT_DETAILS pd
4265
	 WHERE pd.PROD_ID = nPvId;
4266
recProd curProd%ROWTYPE;				   
4267
 
4268
BEGIN
4269
 
4270
	-- Set new Accept-Reject state
4271
	IsRejected := 'Y';
4272
 
4273
 
4274
	OPEN curProd;
4275
	FETCH curProd INTO recProd;	
4276
 
4277
	IF curProd%FOUND THEN
4278
		/* Product Details found */	
4279
 
4280
		-- Toggle Accept-Reject State 
4281
		UPDATE PRODUCT_DETAILS pd SET
4282
		pd.IS_REJECTED = IsRejected
4283
		WHERE pd.PROD_ID = nPvId;
4284
 
4285
	ELSE
4286
		/* Product Details NOT found */
4287
 
4288
		-- Toggle Accept-Reject State	
4289
		INSERT INTO PRODUCT_DETAILS ( PROD_ID, IS_REJECTED )
4290
		VALUES ( nPvId, IsRejected );	
4291
 
4292
 
4293
 
4294
	END IF;	
4295
	CLOSE curProd;	
4296
 
4297
	/* Log Rejection Trail */
4298
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT'), nPvId, IsRejected, nTesterId, sTesterComments );
4299
 
4300
 
4301
 
4302
 
4303
 
4304
END Reject_Product;
4305
/*--------------------------------------------------------------------------------------------------*/
4306
PROCEDURE Add_Production_Bom ( nBomId IN NUMBER, 
4307
  							   nBranchId IN NUMBER, 
4308
							   nStateId IN NUMBER, 
4309
							   nProjId IN NUMBER ) IS
4310
 
4311
BEGIN
4312
 
4313
	 --Update the boms table with the branch_id
4314
	 UPDATE BOMS
4315
	 SET RTAG_ID_FK = nBranchId
4316
	 WHERE BOM_ID = nBomId;
4317
 
4318
	 --Add the production bom into the production_bom table
4319
	 INSERT INTO PRODUCTION_BOM (PROJ_ID, BOM_ID, STATE_ID)
4320
	 VALUES(nProjId, nBomId, nStateId);
4321
 
4322
 
4323
 
4324
 
4325
END Add_Production_Bom;
4326
/*--------------------------------------------------------------------------------------------------*/								 
4327
END pk_production;
4328
/
4329
 
4330
CREATE OR REPLACE PACKAGE BODY pk_Utils
4331
IS
4332
/* ---------------------------------------------------------------------------
4333
    Version: 1.0.0
4334
   --------------------------------------------------------------------------- */
4335
 
4336
/*--------------------------------------------------------------------------------------------------*/
4337
PROCEDURE Clone_BOM ( nFromBomId IN BOMS.BOM_ID%TYPE,
4338
		  			  nToBomId IN BOMS.BOM_ID%TYPE,
4339
					  nUserId IN NUMBER ) IS
4340
 
4341
FromBom VARCHAR2(4000);
4342
 
4343
BEGIN
4344
	/*--------------- Business Rules Here -------------------*/
4345
	/*-------------------------------------------------------*/
4346
 
4347
	-- Define old_bom_id
4348
	UPDATE BOMS bo SET
4349
	bo.OLD_BOM_ID = nFromBomId
4350
	WHERE bo.BOM_ID = nToBomId;
4351
 
4352
	-- Copy Bom Contents
4353
	Copy_BOM_Contents ( nFromBomId, nToBomId );
4354
 
4355
 
4356
	-- Finnaly Clean old_id columns
4357
	Clean_Old_Id_Column();
4358
 
4359
 
4360
 
4361
 
4362
	/* Log BOM_TRAIL */
4363
	-- Get FromBom Details
4364
	SELECT proj.PROJ_NAME ||' / '|| br.BRANCH_NAME ||' / '|| bn.BOM_NAME ||' '|| bo.BOM_VERSION ||'.'|| BOM_LIFECYCLE
4365
		   INTO FromBom 
4366
	  FROM DM_PROJECTS proj,
4367
	  	   BOMS bo,
4368
		   BOM_NAMES bn,
4369
		   BRANCHES br
4370
	 WHERE br.PROJ_ID = proj.PROJ_ID
4371
	   AND bo.BRANCH_ID = br.BRANCH_ID
4372
	   AND bo.BOM_NAME_ID = bn.BOM_NAME_ID
4373
	   AND bo.BOM_ID = nFromBomId;
4374
 
4375
	-- Log Action
4376
	pk_Bom.Log_Bom_Trail ( nToBomId, 'COPIED: From '|| FromBom, nUserId );
4377
 
4378
 
4379
END	Clone_BOM;
4380
/*--------------------------------------------------------------------------------------------------*/
4381
PROCEDURE Copy_BOM_Contents ( nFromBomId IN BOMS.BOM_ID%TYPE,
4382
		  					  nToBomId IN BOMS.BOM_ID%TYPE ) IS
4383
 
4384
 
4385
BEGIN
4386
	/*--------------- Business Rules Here -------------------*/
4387
	/*-------------------------------------------------------*/
4388
 
4389
	-- Copy Network Nodes
4390
	Copy_Network_Node ( nFromBomId, nToBomId ); 
4391
 
4392
 
4393
	-- Copy Hardware Names
4394
	INSERT INTO HARDWARE ( HARDWARE_NAME_ID, BOM_ID, HARDWARE_NAME, TIER_NAME, OLD_HARDWARE_NAME_ID )
4395
	SELECT SEQ_HARDWARE_NAME_ID.NEXTVAL AS HARDWARE_NAME_ID, 
4396
		   nToBomId AS BOM_ID, 
4397
		   hw.HARDWARE_NAME, 
4398
		   hw.TIER_NAME, 
4399
		   hw.HARDWARE_NAME_ID AS OLD_HARDWARE_NAME_ID
4400
	  FROM HARDWARE hw
4401
	 WHERE hw.BOM_ID = nFromBomId;
4402
 
4403
 
4404
	-- Copy Hardware Matrix
4405
	INSERT INTO HARDWARE_NODE ( HARDWARE_NAME_ID, NODE_ID) 
4406
	SELECT hw.HARDWARE_NAME_ID, 
4407
		   nn.NODE_ID
4408
	  FROM HARDWARE hw,
4409
	  	   NETWORK_NODES nn,
4410
		   HARDWARE_NODE hd
4411
	 WHERE hd.NODE_ID = nn.OLD_NODE_ID
4412
	   AND hd.HARDWARE_NAME_ID = hw.OLD_HARDWARE_NAME_ID
4413
	   AND hw.BOM_ID = nToBomId;
4414
 
4415
 
4416
	-- Copy Base Environments
4417
	INSERT INTO BASE_ENV ( BASE_ENV_ID, BOS_ID, BASE_ENV_NAME, OLD_BASE_ENV_ID, BOM_ID )
4418
	SELECT SEQ_BASE_ENV_ID.NEXTVAL AS BASE_ENV_ID, 
4419
		   be.BOS_ID, 
4420
		   be.BASE_ENV_NAME, 
4421
		   be.BASE_ENV_ID AS OLD_BASE_ENV_ID, 
4422
		   nToBomId AS BOM_ID   
4423
	  FROM BASE_ENV be
4424
	 WHERE be.BOM_ID = nFromBomId;
4425
 
4426
 
4427
	-- Relink Base Environment Contents
4428
	INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, PROD_ID, BASE_ENV_COMMENTS, SEQ_NUM, IS_NODE_SPEC, NOT_XML )
4429
	SELECT be.BASE_ENV_ID AS BASE_ENV_ID, 
4430
		   bec.PROD_ID, 
4431
		   bec.BASE_ENV_COMMENTS, 
4432
		   bec.SEQ_NUM,
4433
		   bec.IS_NODE_SPEC,
4434
		   bec.NOT_XML
4435
	  FROM BASE_ENV be,
4436
	  	   BASE_ENV_CONTENTS bec
4437
	 WHERE bec.BASE_ENV_ID = be.OLD_BASE_ENV_ID
4438
	   AND be.BOM_ID = nToBomId;
4439
 
4440
 
4441
    -- Copy OS
4442
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, OLD_OS_ID, NODE_SPEC_FILE, NOT_XML ) 
4443
	SELECT SEQ_OS_ID.NEXTVAL AS OS_ID, 
4444
		   os.OS_NAME, 
4445
		   nn.NODE_ID AS NODE_ID, 
4446
		   os.OS_COMMENTS, 
4447
		   os.OS_ID AS OLD_OS_ID,
4448
		   os.NODE_SPEC_FILE,
4449
		   os.NOT_XML
4450
	  FROM OPERATING_SYSTEMS os,
4451
	  	   NETWORK_NODES nn,
4452
		   BOM_CONTENTS bc
4453
	 WHERE bc.NODE_ID = nn.NODE_ID
4454
	   AND os.NODE_ID = nn.OLD_NODE_ID
4455
	   AND bc.BOM_ID = nToBomId;
4456
 
4457
 
4458
 
4459
    -- Relink OS Base Environments
4460
	INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID ) 
4461
	SELECT os.OS_ID AS OS_ID,
4462
		   be.BASE_ENV_ID AS BASE_ENV_ID
4463
	  FROM OPERATING_SYSTEMS os,
4464
	  	   NETWORK_NODES nn,
4465
		   BOM_CONTENTS bc,
4466
		   OS_BASE_ENV osbe,
4467
		   BASE_ENV be
4468
	 WHERE osbe.OS_ID = os.OLD_OS_ID
4469
	   AND osbe.BASE_ENV_ID = be.OLD_BASE_ENV_ID
4470
	   AND bc.NODE_ID = nn.NODE_ID
4471
	   AND os.NODE_ID = nn.NODE_ID
4472
	   AND bc.BOM_ID = nToBomId;
4473
 
4474
 
4475
	-- Copy OS Contents
4476
	INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS, CHANGE_LOG_FLAG, IS_NODE_SPEC, NOT_XML ) 	  
4477
	SELECT os.OS_ID AS OS_ID, 
4478
		   osc.SEQ_NUM, 
4479
		   osc.PROD_ID, 
4480
		   osc.PRODUCT_COMMENTS, 
4481
		   osc.CHANGE_LOG_FLAG,
4482
		   osc.IS_NODE_SPEC,
4483
		   osc.NOT_XML
4484
	  FROM OPERATING_SYSTEMS os,
4485
	  	   BOM_CONTENTS bc,
4486
		   OS_CONTENTS osc
4487
	 WHERE bc.NODE_ID = os.NODE_ID
4488
	   AND osc.OS_ID = os.OLD_OS_ID
4489
	   AND bc.BOM_ID = nToBomId;
4490
 
4491
 
4492
    -- Copy Processes Config
4493
	INSERT INTO PROCESSES_CONFIG ( PROC_ID, PROD_ID, OS_ID, PKG_HEALTH_TAG, CMD_INTERFACE, PKG_OWNER, IS_INTERFACE, PROC_DESCRIPTION, PKG_ID ) 	  
4494
	SELECT pc.PROC_ID, 
4495
		   pc.PROD_ID, 
4496
		   os.OS_ID AS OS_ID, 
4497
		   pc.PKG_HEALTH_TAG, 
4498
		   pc.CMD_INTERFACE,
4499
		   pc.PKG_OWNER,
4500
		   pc.IS_INTERFACE,
4501
		   pc.PROC_DESCRIPTION,
4502
		   pc.PKG_ID 
4503
	  FROM OPERATING_SYSTEMS os,
4504
	  	   BOM_CONTENTS bc,
4505
		   PROCESSES_CONFIG pc
4506
	 WHERE bc.NODE_ID = os.NODE_ID
4507
	   AND pc.OS_ID = os.OLD_OS_ID
4508
	   AND bc.BOM_ID = nToBomId;
4509
 
4510
 
4511
	-- Copy Hide Products/Patches
4512
	INSERT INTO HIDE_PRODUCTS (OS_ID, PROD_ID)
4513
	SELECT os.OS_ID, 
4514
		   hp.PROD_ID
4515
	FROM   HIDE_PRODUCTS hp,
4516
		   OPERATING_SYSTEMS os,
4517
		   BOM_CONTENTS bc
4518
	WHERE  hp.OS_ID = os.OLD_OS_ID
4519
	AND    bc.NODE_ID = os.NODE_ID
4520
	AND    bc.BOM_ID = nToBomId ; 	   
4521
 
4522
 
4523
END	Copy_BOM_Contents;
4524
/*--------------------------------------------------------------------------------------------------*/
4525
PROCEDURE Copy_Network_Node ( nFromBomId IN BOMS.BOM_ID%TYPE,
4526
		  					  nToBomId IN BOMS.BOM_ID%TYPE,
4527
							  nFromNodeId IN NUMBER DEFAULT 0  ) IS
4528
 
4529
 
4530
BEGIN
4531
	/*--------------- Business Rules Here -------------------*/
4532
	/*-------------------------------------------------------*/
4533
 
4534
	-- Copy Network Nodes
4535
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS, OLD_NODE_ID, NODE_VERSION, NODE_LIFE_CYCLE )
4536
	SELECT SEQ_NODE_ID.NEXTVAL AS NODE_ID, 
4537
		   nn.NODE_TYPE_ID, 
4538
		   nn.NODE_NAME, 
4539
		   nn.NODE_COMMENTS, 
4540
		   nn.NODE_ID AS OLD_NODE_ID,
4541
		   nn.NODE_VERSION, 
4542
		   nn.NODE_LIFE_CYCLE
4543
	  FROM NETWORK_NODES nn,
4544
	  	   BOM_CONTENTS bc
4545
	 WHERE bc.NODE_ID = nn.NODE_ID
4546
	   AND (
4547
	   	    ( bc.NODE_ID = bc.NODE_ID  AND  nFromNodeId = 0 ) OR
4548
			( bc.NODE_ID = nFromNodeId     AND  nFromNodeId != 0 )
4549
	   	   )
4550
	   AND bc.BOM_ID = nFromBomId;
4551
 
4552
 
4553
	-- Relink Bom Contents
4554
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID, SEQ_NUM)
4555
	SELECT bo.BOM_ID,
4556
		   nn.NODE_ID,
4557
		   bc.SEQ_NUM
4558
	  FROM BOMS bo,
4559
	  	   BOM_CONTENTS bc,
4560
		   NETWORK_NODES nn
4561
	 WHERE bc.BOM_ID = bo.OLD_BOM_ID
4562
	   AND bc.NODE_ID = nn.OLD_NODE_ID
4563
	   AND (
4564
	   	    ( nn.OLD_NODE_ID = nn.OLD_NODE_ID  AND  nFromNodeId = 0 ) OR
4565
			( nn.OLD_NODE_ID = nFromNodeId     AND  nFromNodeId != 0 )
4566
	   	   )
4567
	   AND bo.BOM_ID = nToBomId;  
4568
 
4569
END	Copy_Network_Node;
4570
/*--------------------------------------------------------------------------------------------------*/
4571
PROCEDURE Paste_Products ( sProdIdList IN VARCHAR2,
4572
						   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
4573
						   nToOsId IN OS_CONTENTS.OS_ID%TYPE ) IS
4574
 
4575
MaxSeqNum NUMBER;						 
4576
 
4577
BEGIN
4578
	/*--------------- Business Rules Here -------------------*/
4579
	/*-------------------------------------------------------*/
4580
 
4581
	-- Get Max seq_num
4582
	SELECT COUNT(*) INTO MaxSeqNum
4583
	  FROM OS_CONTENTS osc
4584
	 WHERE osc.OS_ID = nToOsId;
4585
 
4586
 
4587
	-- Copy OS Contents
4588
	INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS, CHANGE_LOG_FLAG ) 	  
4589
	SELECT nToOsId AS OS_ID, 
4590
		   ROWNUM + MaxSeqNum, 
4591
		   osc.PROD_ID, 
4592
		   osc.PRODUCT_COMMENTS, 
4593
		   osc.CHANGE_LOG_FLAG
4594
	  FROM OS_CONTENTS osc
4595
	 WHERE osc.OS_ID = nFromOsId
4596
	   AND osc.PROD_ID IN (
4597
						   SELECT *
4598
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4599
	   	   			   	   );
4600
 
4601
 
4602
    -- Copy Processes Config
4603
	INSERT INTO PROCESSES_CONFIG ( PROC_ID, PROD_ID, OS_ID, PKG_HEALTH_TAG, CMD_INTERFACE ) 	  
4604
	SELECT pc.PROC_ID, 
4605
		   pc.PROD_ID, 
4606
		   nToOsId AS OS_ID, 
4607
		   pc.PKG_HEALTH_TAG, 
4608
		   pc.CMD_INTERFACE 
4609
	  FROM OPERATING_SYSTEMS os,
4610
	  	   BOM_CONTENTS bc,
4611
		   PROCESSES_CONFIG pc
4612
	 WHERE bc.NODE_ID = os.NODE_ID
4613
	   AND pc.OS_ID = os.OLD_OS_ID
4614
	   AND bc.BOM_ID = nFromOsId
4615
	   AND pc.PROD_ID IN (
4616
						   SELECT *
4617
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4618
	   	   			   	   );
4619
 
4620
 
4621
    EXCEPTION
4622
    WHEN DUP_VAL_ON_INDEX
4623
	THEN		
4624
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Product.');	
4625
 
4626
END	Paste_Products;
4627
/*--------------------------------------------------------------------------------------------------*/
4628
PROCEDURE Paste_Products_To_Base_Env ( sProdIdList IN VARCHAR2,
4629
									   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
4630
									   nToBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE ) IS
4631
 
4632
MaxSeqNum NUMBER;						 
4633
 
4634
BEGIN
4635
	/*--------------- Business Rules Here -------------------*/
4636
	/*-------------------------------------------------------*/
4637
 
4638
	-- Get Max seq_num
4639
	SELECT COUNT(*) INTO MaxSeqNum
4640
	  FROM BASE_ENV_CONTENTS bec
4641
	 WHERE bec.BASE_ENV_ID = nToBaseEnvId;
4642
 
4643
 
4644
	-- Copy OS Contents
4645
	INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, PROD_ID, BASE_ENV_COMMENTS, SEQ_NUM ) 	  
4646
	SELECT nToBaseEnvId AS BASE_ENV_ID, 
4647
		   osc.PROD_ID,
4648
		   osc.PRODUCT_COMMENTS, 
4649
		   ROWNUM + MaxSeqNum 
4650
	  FROM OS_CONTENTS osc
4651
	 WHERE osc.OS_ID = nFromOsId
4652
	   AND osc.PROD_ID IN (
4653
						   SELECT *
4654
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4655
	   	   			   	   );
4656
 
4657
 
4658
        EXCEPTION
4659
    WHEN DUP_VAL_ON_INDEX
4660
	THEN		
4661
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Product.');	
4662
 
4663
END	Paste_Products_To_Base_Env;
4664
/*--------------------------------------------------------------------------------------------------*/
4665
PROCEDURE Paste_Os ( sOsIdList IN VARCHAR2,
4666
					 nFromNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
4667
					 nToNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE ) IS
4668
 
4669
ToBomId NUMBER;					 
4670
 
4671
BEGIN
4672
	/*--------------- Business Rules Here -------------------*/
4673
	/*-------------------------------------------------------*/
4674
 
4675
	-- Get ToBomId
4676
	SELECT bc.BOM_ID INTO ToBomId
4677
	  FROM BOM_CONTENTS bc
4678
 	 WHERE bc.NODE_ID = nToNodeId;
4679
 
4680
 
4681
    -- Copy OS
4682
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, OLD_OS_ID ) 
4683
	SELECT SEQ_OS_ID.NEXTVAL AS OS_ID, 
4684
		   os.OS_NAME, 
4685
		   nToNodeId AS NODE_ID, 
4686
		   os.OS_COMMENTS, 
4687
		   os.OS_ID AS OLD_OS_ID
4688
	  FROM OPERATING_SYSTEMS os
4689
	 WHERE os.NODE_ID = nFromNodeId
4690
	   AND os.OS_ID IN (
4691
					   	  SELECT *
4692
				   	     	FROM THE ( SELECT CAST( IN_LIST_NUMBER( sOsIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4693
   	   			   	    );
4694
 
4695
 
4696
	-- Paste OS Contents
4697
	Paste_OS_Contents();
4698
 
4699
 
4700
 
4701
	-- Finnaly Clean old_id columns
4702
	Clean_Old_Id_Column();
4703
 
4704
 
4705
	EXCEPTION
4706
    WHEN DUP_VAL_ON_INDEX
4707
	THEN		
4708
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Operating Systems.');	
4709
 
4710
END	Paste_Os;
4711
/*--------------------------------------------------------------------------------------------------*/
4712
PROCEDURE Paste_Node ( sNodeIdList IN VARCHAR2,
4713
					   nFromBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
4714
					   nToBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE ) IS
4715
 
4716
CURSOR curNodeName IS -- Check Node Name Duplicates			
4717
	SELECT nn.NODE_ID
4718
	  FROM (
4719
	  		SELECT UPPER( nn.NODE_NAME ) AS NODE_NAME
4720
		      FROM NETWORK_NODES nn
4721
		     WHERE nn.NODE_ID IN (
4722
		  							SELECT *
4723
		     						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
4724
		  					     )  
4725
	  	   ) nname,
4726
		   BOM_CONTENTS bc,
4727
	  	   NETWORK_NODES nn	
4728
	 WHERE bc.NODE_ID = nn.NODE_ID
4729
	   AND bc.BOM_ID = nToBomId
4730
	   AND UPPER( nn.NODE_NAME ) = UPPER( nname.NODE_NAME );
4731
recNodeName curNodeName%ROWTYPE;	   					 
4732
 
4733
BEGIN
4734
	/*--------------- Business Rules Here -------------------*/
4735
	OPEN curNodeName;
4736
    FETCH curNodeName INTO recNodeName;
4737
 
4738
    IF curNodeName%FOUND
4739
    THEN
4740
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Network Nodes.'   );
4741
 
4742
	END IF;
4743
 
4744
	CLOSE curNodeName;
4745
	/*-------------------------------------------------------*/
4746
 
4747
	-- Copy Network Nodes
4748
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS, OLD_NODE_ID, NODE_VERSION, NODE_LIFE_CYCLE )
4749
	SELECT SEQ_NODE_ID.NEXTVAL AS NODE_ID, 
4750
		   nn.NODE_TYPE_ID, 
4751
		   nn.NODE_NAME, 
4752
		   nn.NODE_COMMENTS, 
4753
		   nn.NODE_ID AS OLD_NODE_ID,
4754
		   nn.NODE_VERSION, 
4755
		   nn.NODE_LIFE_CYCLE
4756
	  FROM NETWORK_NODES nn,
4757
	  	   BOM_CONTENTS bc
4758
	 WHERE bc.NODE_ID = nn.NODE_ID
4759
	   AND bc.BOM_ID = nFromBomId
4760
	   AND nn.NODE_ID IN (
4761
					   	  SELECT *
4762
				   	     	FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4763
   	   			   	     );
4764
 
4765
 
4766
	-- Relink Bom Contents
4767
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID )
4768
	SELECT nToBomId,
4769
		   nn.NODE_ID
4770
	  FROM NETWORK_NODES nn
4771
	 WHERE NOT nn.OLD_NODE_ID IS NULL;
4772
 
4773
 
4774
    -- Copy OS
4775
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, OLD_OS_ID ) 
4776
	SELECT SEQ_OS_ID.NEXTVAL AS OS_ID, 
4777
		   os.OS_NAME, 
4778
		   nn.NODE_ID, 
4779
		   os.OS_COMMENTS, 
4780
		   os.OS_ID AS OLD_OS_ID
4781
	  FROM OPERATING_SYSTEMS os,
4782
	  	   NETWORK_NODES nn
4783
	 WHERE os.NODE_ID = nn.OLD_NODE_ID;
4784
 
4785
 
4786
	-- Paste OS Contents
4787
	Paste_OS_Contents();
4788
 
4789
 
4790
 
4791
	-- Finnaly Clean old_id columns
4792
	Clean_Old_Id_Column();
4793
 
4794
 
4795
END	Paste_Node;
4796
/*--------------------------------------------------------------------------------------------------*/
4797
PROCEDURE Paste_OS_Contents IS
4798
 
4799
 
4800
BEGIN
4801
	/*--------------- Business Rules Here -------------------*/
4802
	/*-------------------------------------------------------*/
4803
 
4804
 
4805
	/* Base environment copy is a bit more complex when is copied from different bom. TODO */   
4806
	/* CODE HERE */
4807
 
4808
	-- Copy OS Contents
4809
	INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS, CHANGE_LOG_FLAG ) 	  
4810
	SELECT os.OS_ID AS OS_ID, 
4811
		   osc.SEQ_NUM, 
4812
		   osc.PROD_ID, 
4813
		   osc.PRODUCT_COMMENTS, 
4814
		   osc.CHANGE_LOG_FLAG
4815
	  FROM OS_CONTENTS osc,
4816
	  	   OPERATING_SYSTEMS os
4817
	 WHERE osc.OS_ID = os.OLD_OS_ID;
4818
 
4819
 
4820
    -- Copy Processes Config
4821
	INSERT INTO PROCESSES_CONFIG ( PROC_ID, PROD_ID, OS_ID, PKG_HEALTH_TAG, CMD_INTERFACE, PKG_ID ) 	  
4822
	SELECT pc.PROC_ID, 
4823
		   pc.PROD_ID, 
4824
		   os.OS_ID AS OS_ID, 
4825
		   pc.PKG_HEALTH_TAG, 
4826
		   pc.CMD_INTERFACE,
4827
		   pc.PKG_ID 
4828
	  FROM PROCESSES_CONFIG pc,
4829
	  	   OPERATING_SYSTEMS os
4830
	 WHERE pc.OS_ID = os.OLD_OS_ID;
4831
 
4832
 
4833
 
4834
END	Paste_OS_Contents;
4835
/*--------------------------------------------------------------------------------------------------*/
4836
PROCEDURE Clean_Old_Id_Column IS
4837
 
4838
 
4839
BEGIN
4840
	/*--------------- Business Rules Here -------------------*/
4841
	/*-------------------------------------------------------*/
4842
 
4843
	-- Clean all old_id columns
4844
	UPDATE BOMS SET OLD_BOM_ID = NULL;
4845
	UPDATE NETWORK_NODES SET OLD_NODE_ID = NULL;
4846
	UPDATE HARDWARE SET OLD_HARDWARE_NAME_ID = NULL;
4847
	UPDATE OPERATING_SYSTEMS SET OLD_OS_ID = NULL;
4848
	UPDATE BASE_ENV SET OLD_BASE_ENV_ID = NULL;
4849
 
4850
 
4851
 
4852
END	Clean_Old_Id_Column;
4853
/*--------------------------------------------------------------------------------------------------*/
4854
PROCEDURE Log_Rejection_Trail ( nEnumEntityType IN REJECTION_TRAIL.ENUM_ENTITY_TYPE%TYPE,
4855
								nEntityId IN REJECTION_TRAIL.ENTITY_ID%TYPE,
4856
								cIsRejected IN REJECTION_TRAIL.IS_REJECTED%TYPE,
4857
								nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
4858
								sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL ) IS
4859
 
4860
nNextRejectSeq REJECTION_TRAIL.REJECT_SEQ%TYPE;
4861
 
4862
CURSOR curRejectTrail IS
4863
	SELECT MAX(rt.REJECT_SEQ) AS LAST_REJECT_SEQ
4864
	  FROM REJECTION_TRAIL rt
4865
	 WHERE rt.ENTITY_ID = nEntityId
4866
	   AND rt.ENUM_ENTITY_TYPE = nEnumEntityType;
4867
recRejectTrail curRejectTrail%ROWTYPE;
4868
 
4869
BEGIN
4870
	/*--------------- Business Rules Here -------------------*/
4871
	/*-------------------------------------------------------*/
4872
 
4873
	-- Get nNextRejectSeq
4874
	OPEN curRejectTrail;
4875
	FETCH curRejectTrail INTO recRejectTrail;
4876
 
4877
	nNextRejectSeq := 1;
4878
	IF recRejectTrail.LAST_REJECT_SEQ IS NOT NULL THEN
4879
	   nNextRejectSeq := recRejectTrail.LAST_REJECT_SEQ + 1;
4880
	END IF;
4881
 
4882
	CLOSE curRejectTrail;
4883
 
4884
 
4885
 
4886
	-- Insert Rejection Comment
4887
	INSERT INTO REJECTION_TRAIL ( ENUM_ENTITY_TYPE, ENTITY_ID, REJECT_SEQ, IS_REJECTED, COMMENTS, DATE_TIME_STAMP, USER_ID )
4888
	VALUES ( 
4889
		   nEnumEntityType,
4890
		   nEntityId,
4891
		   nNextRejectSeq,
4892
		   cIsRejected,
4893
		   sComments,
4894
		   GET_DATETIME(),
4895
		   nUserId
4896
		    );
4897
 
4898
END	Log_Rejection_Trail;
4899
/*--------------------------------------------------------------------------------------------------*/
4900
PROCEDURE Log_Action ( nUserId IN ACTION_TRAIL.USER_ID%TYPE, 
4901
					   nEvent IN ACTION_TRAIL.ACTION_EVENT%TYPE,
4902
					   sMethod IN ACTION_TRAIL.METHOD_CALL%TYPE DEFAULT NULL,
4903
					   sActionScript IN ACTION_TRAIL.ACTION_SCRIPT%TYPE DEFAULT NULL,
4904
					   sDescription IN ACTION_TRAIL.ACTION_DESCRIPTION%TYPE DEFAULT NULL ) IS
4905
 
4906
BEGIN
4907
	/*--------------- Business Rules Here -------------------*/
4908
	/*-------------------------------------------------------*/
4909
 
4910
	INSERT INTO ACTION_TRAIL ( ACTION_STAMP, USER_ID, ACTION_EVENT, METHOD_CALL, ACTION_SCRIPT, ACTION_DESCRIPTION )
4911
	VALUES (
4912
		    TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' ),
4913
			nUserId,
4914
			nEvent,
4915
			sMethod,
4916
			sActionScript,
4917
			sDescription
4918
		   );
4919
 
4920
END	Log_Action;
4921
/*--------------------------------------------------------------------------------------------------*/
4922
 
4923
 
4924
END pk_Utils;
4925
/
4926
 
4927
CREATE OR REPLACE PACKAGE BODY pk_Base_Env
4928
IS
4929
/* ---------------------------------------------------------------------------
4930
    Version: 1.0.0
4931
   --------------------------------------------------------------------------- */
4932
 
4933
 
4934
/*--------------------------------------------------------------------------------------------------*/
4935
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
4936
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
4937
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
4938
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
4939
						 nUserId IN NUMBER ) IS
4940
 
4941
nBaseEnvId BASE_ENV.BASE_ENV_ID%TYPE;	
4942
NodeName VARCHAR2(4000);					 
4943
 
4944
BEGIN
4945
	/*--------------- Business Rules Here -------------------*/
4946
	/*-------------------------------------------------------*/
4947
 
4948
	SELECT NN.NODE_NAME INTO NodeName
4949
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
4950
	WHERE NN.NODE_ID = OS.NODE_ID
4951
	AND OS.OS_ID = nOsId;
4952
 
4953
	-- Get base_env_id
4954
	SELECT SEQ_BASE_ENV_ID.NEXTVAL INTO nBaseEnvId FROM DUAL;
4955
 
4956
	-- Insert new base env name
4957
	INSERT INTO BASE_ENV ( BASE_ENV_ID, BOS_ID, BASE_ENV_NAME, BOM_ID )
4958
	VALUES ( nBaseEnvId, nBosId, sBaseEnvName, nBomId );
4959
 
4960
	/* Log BOM_TRAIL */
4961
	pk_Bom.Log_Os_Trail ( nOsId, 'Added Base Configuration: '||sBaseEnvName||' into Node: '||NodeName, nUserId );	
4962
 
4963
	EXCEPTION
4964
    WHEN DUP_VAL_ON_INDEX
4965
	THEN		
4966
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
4967
 
4968
END	Add_Base_Env;
4969
/*--------------------------------------------------------------------------------------------------*/
4970
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
4971
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
4972
						 	nBosId IN BASE_ENV.BOS_ID%TYPE,
4973
							nOsId IN OS_BASE_ENV.OS_ID%TYPE,
4974
							nUserId IN NUMBER ) IS
4975
 
4976
NodeName VARCHAR2(4000);							
4977
 
4978
BEGIN
4979
	/*--------------- Business Rules Here -------------------*/
4980
	IF (nBaseEnvId IS NULL) 
4981
	THEN
4982
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
4983
 
4984
	END IF;
4985
	/*-------------------------------------------------------*/
4986
 
4987
	SELECT NN.NODE_NAME INTO NodeName
4988
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
4989
	WHERE NN.NODE_ID = OS.NODE_ID
4990
	AND OS.OS_ID = nOsId;
4991
 
4992
	-- Update Base Env
4993
	UPDATE BASE_ENV SET
4994
		BASE_ENV_NAME = sBaseEnvName,
4995
		BOS_ID = nBosId
4996
	WHERE BASE_ENV_ID = nBaseEnvId;
4997
 
4998
	/* Log BOM_TRAIL */
4999
	pk_Bom.Log_Os_Trail ( nOsId, 'Updated Base Configuration: '||sBaseEnvName||' on Node: '||NodeName, nUserId );	
5000
 
5001
	EXCEPTION
5002
    WHEN DUP_VAL_ON_INDEX
5003
	THEN		
5004
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
5005
 
5006
END	Update_Base_Env;
5007
/*--------------------------------------------------------------------------------------------------*/
5008
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
5009
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE IS
5010
 
5011
ReturnValue BASE_ENV.BASE_ENV_ID%TYPE;	
5012
 
5013
CURSOR curBaseEnv IS
5014
	SELECT be.BASE_ENV_ID
5015
	  FROM BASE_ENV be
5016
	 WHERE be.BASE_ENV_NAME = sBaseEnvName
5017
	   AND be.BOM_ID = nBomId;
5018
recBaseEnv curBaseEnv%ROWTYPE;
5019
 
5020
BEGIN
5021
	/*--------------- Business Rules Here -------------------*/
5022
	/*-------------------------------------------------------*/
5023
 
5024
	-- Get bom_name_id
5025
	OPEN curBaseEnv;
5026
	FETCH curBaseEnv INTO recBaseEnv;
5027
 
5028
	IF curBaseEnv%FOUND THEN
5029
		ReturnValue := recBaseEnv.BASE_ENV_ID;
5030
	ELSE
5031
		ReturnValue := NULL;
5032
	END IF;
5033
 
5034
	CLOSE curBaseEnv;
5035
 
5036
	RETURN ReturnValue;
5037
END	Get_Base_Env_Id;
5038
/*--------------------------------------------------------------------------------------------------*/
5039
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE, 
5040
		  				   	 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
5041
						 	 nUserId IN NUMBER ) IS
5042
 
5043
BaseEnvName VARCHAR2(100);		
5044
NodeName VARCHAR2(4000);					 
5045
 
5046
BEGIN
5047
	/*--------------- Business Rules Here -------------------*/
5048
	IF (nBaseEnvId IS NULL) 
5049
	THEN
5050
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
5051
 
5052
	END IF;
5053
	/*-------------------------------------------------------*/
5054
 
5055
	SELECT NN.NODE_NAME INTO NodeName
5056
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
5057
	WHERE NN.NODE_ID = OS.NODE_ID
5058
	AND OS.OS_ID = nOsId;	
5059
 
5060
	SELECT BASE_ENV_NAME INTO BaseEnvName
5061
	FROM BASE_ENV
5062
	WHERE BASE_ENV_ID = nBaseEnvId;
5063
 
5064
	-- Destroy Base Env Contents
5065
	DELETE
5066
      FROM BASE_ENV_CONTENTS
5067
     WHERE BASE_ENV_ID = nBaseEnvId;
5068
 
5069
	-- Remove Base Env From BOM
5070
	DELETE 
5071
	  FROM OS_BASE_ENV obe
5072
	 WHERE obe.BASE_ENV_ID = nBaseEnvId;
5073
 
5074
	-- Destroy Base Env
5075
	DELETE 
5076
	  FROM BASE_ENV be
5077
	 WHERE be.BASE_ENV_ID = nBaseEnvId;		
5078
 
5079
	/* Log BOM_TRAIL */
5080
	pk_Bom.Log_Os_Trail ( nOsId, 'Destroyed Base Configuration: '||BaseEnvName||' on Node: '||NodeName, nUserId );		 		 
5081
 
5082
END	Destroy_Base_Env;
5083
/*--------------------------------------------------------------------------------------------------*/
5084
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
5085
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
5086
						nOsId IN OS_BASE_ENV.OS_ID%TYPE,
5087
						nUserId IN NUMBER ) IS
5088
 
5089
NextSeqNum NUMBER;
5090
BaseEnvName VARCHAR2(100);
5091
PkgName VARCHAR2(100);
5092
PkgVersion VARCHAR2(100);
5093
NodeName VARCHAR2(4000); 
5094
 
5095
CURSOR prod_cur IS
5096
	SELECT pv.pv_id AS PROD_ID,
5097
		   pv.PV_DESCRIPTION
5098
	  FROM PACKAGE_VERSIONS pv
5099
	 WHERE pv.pv_id IN (
5100
	 	   			   	SELECT * 
5101
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
5102
						);
5103
prod_rec prod_cur%ROWTYPE;
5104
 
5105
 
5106
BEGIN
5107
	/*--------------- Business Rules Here -------------------*/
5108
	/*-------------------------------------------------------*/
5109
 
5110
	SELECT BASE_ENV_NAME INTO BaseEnvName 
5111
	FROM BASE_ENV
5112
	WHERE BASE_ENV_ID = nBaseEnvId;
5113
 
5114
	SELECT NN.NODE_NAME INTO NodeName
5115
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
5116
	WHERE NN.NODE_ID = OS.NODE_ID
5117
	AND OS.OS_ID = nOsId;
5118
 
5119
 
5120
	-- Get seq_num
5121
	SELECT MAX( bec.SEQ_NUM ) INTO NextSeqNum
5122
	  FROM BASE_ENV_CONTENTS bec
5123
	 WHERE bec.BASE_ENV_ID = nBaseEnvId;
5124
 
5125
	-- Set NextSeqNum to 0 if no existing products are found
5126
	IF NextSeqNum IS NULL THEN
5127
	   NextSeqNum := 1;
5128
	ELSE
5129
	   NextSeqNum := NextSeqNum + 1;
5130
	END IF;
5131
 
5132
 
5133
	-- Insert into OS Contents
5134
	OPEN prod_cur;
5135
	FETCH prod_cur INTO prod_rec;
5136
 
5137
	WHILE prod_cur%FOUND
5138
	LOOP
5139
 
5140
		INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, SEQ_NUM, PROD_ID, BASE_ENV_COMMENTS )
5141
		VALUES (
5142
				nBaseEnvId, 
5143
				NextSeqNum, 
5144
				prod_rec.PROD_ID,
5145
				prod_rec.PV_DESCRIPTION
5146
				);
5147
 
5148
		SELECT PKG.PKG_NAME INTO PkgName
5149
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
5150
		WHERE PV.PV_ID = prod_rec.PROD_ID
5151
		AND PKG.PKG_ID = PV.PKG_ID;
5152
 
5153
		SELECT PKG_VERSION INTO PkgVersion
5154
		FROM PACKAGE_VERSIONS PV
5155
		WHERE PV.PV_ID = prod_rec.PROD_ID;				
5156
 
5157
		-- Log Action --
5158
		pk_Bom.Log_Os_Trail ( nOsId,  
5159
							  'Added Product: '||PkgName||' (Version '||PkgVersion||') to Base Configuration: '||BaseEnvName||' with Install Order: '||NextSeqNum||' on Node: '||NodeName,
5160
							  nUserId );
5161
 
5162
 
5163
		NextSeqNum := NextSeqNum + 1;
5164
		FETCH prod_cur INTO prod_rec;
5165
	END LOOP;
5166
 
5167
 
5168
	CLOSE prod_cur;
5169
 
5170
 
5171
END	Add_Product; 
5172
/*--------------------------------------------------------------------------------------------------*/
5173
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
5174
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5175
							nUserId IN NUMBER ) IS
5176
 
5177
PkgName VARCHAR2(100);
5178
PkgVersion VARCHAR2(100);		
5179
NextSeqNum NUMBER := 1;
5180
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
5181
 
5182
CURSOR prod_cur IS
5183
	SELECT bec.PROD_ID, bec.SEQ_NUM
5184
	  FROM BASE_ENV_CONTENTS bec
5185
	 WHERE bec.BASE_ENV_ID = nBaseEnvId
5186
	 ORDER BY bec.SEQ_NUM;
5187
prod_rec prod_cur%ROWTYPE;	
5188
 
5189
 
5190
BEGIN
5191
	/*--------------- Business Rules Here -------------------*/
5192
	IF sProdIdList IS NULL
5193
	THEN
5194
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
5195
 
5196
	END IF;
5197
	/*-------------------------------------------------------*/
5198
 
5199
 
5200
 
5201
	-- Remove Products
5202
	DELETE 
5203
	FROM BASE_ENV_CONTENTS
5204
	WHERE BASE_ENV_ID = nBaseEnvId
5205
	  AND PROD_ID IN ( 
5206
	  	  		  	    SELECT * 
5207
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
5208
					 );
5209
 
5210
 
5211
	-- Update Seq Numbers
5212
	OPEN prod_cur;
5213
	FETCH prod_cur INTO prod_rec;
5214
 
5215
	WHILE prod_cur%FOUND
5216
	LOOP
5217
 
5218
		UPDATE BASE_ENV_CONTENTS SET
5219
		SEQ_NUM = NextSeqNum
5220
		WHERE BASE_ENV_ID = nBaseEnvId
5221
		  AND PROD_ID = prod_rec.PROD_ID;
5222
 
5223
		NextSeqNum := NextSeqNum + 1;
5224
		FETCH prod_cur INTO prod_rec;
5225
	END LOOP;
5226
 
5227
	CLOSE prod_cur;
5228
 
5229
	nIdCollector := IN_LIST_NUMBER ( sProdIdList );
5230
 
5231
	FOR i IN 1..nIdCollector.COUNT
5232
	LOOP
5233
		SELECT PKG.PKG_NAME INTO PkgName
5234
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
5235
		WHERE PV.PV_ID = nIdCollector(i)
5236
		AND PKG.PKG_ID = PV.PKG_ID;
5237
 
5238
		SELECT PKG_VERSION INTO PkgVersion
5239
		FROM PACKAGE_VERSIONS PV
5240
		WHERE PV.PV_ID = nIdCollector(i);	
5241
 
5242
		-- Log Action --
5243
		pk_Bom.Log_Os_Trail ( nBaseEnvId,  
5244
							  'Deleted Product: '||PkgName||' (Version: '||PkgVersion||') From Base Configuration from Node',
5245
							  nUserId );					  
5246
	END LOOP;	
5247
 
5248
 
5249
 
5250
END Remove_Products; 
5251
/*--------------------------------------------------------------------------------------------------*/
5252
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
5253
		  				   	 sProdVersion IN VARCHAR2,
5254
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5255
							 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
5256
							 nUserId IN NUMBER,
5257
							 sComments IN VARCHAR2 ) IS
5258
 
5259
ProdId PACKAGE_VERSIONS.PV_ID%TYPE;
5260
ProdName PACKAGES.PKG_NAME%TYPE;
5261
 
5262
CURSOR prod_cur IS
5263
	SELECT bec.PROD_ID
5264
	  FROM BASE_ENV_CONTENTS bec
5265
	 WHERE bec.PROD_ID = ProdId
5266
	   AND bec.BASE_ENV_ID = nBaseEnvId;
5267
prod_rec prod_cur%ROWTYPE;
5268
 
5269
BEGIN
5270
	/*--------------- Business Rules Here -------------------*/                             
5271
	IF (NOT nPkgId IS NULL) AND (sProdVersion IS NULL) AND (NOT nBaseEnvId IS NULL) AND (NOT nUserId IS NULL) THEN
5272
	   RAISE_APPLICATION_ERROR (-20000, 'Please provide Product Version.('|| sProdVersion ||')' );
5273
 
5274
	ELSIF (nPkgId IS NULL) OR (sProdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nUserId IS NULL) THEN
5275
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nPkgId= '|| nPkgId ||', sProdVersion='|| sProdVersion ||', nBaseEnvId='|| nBaseEnvId ||', nUserId='|| nUserId );
5276
 
5277
	END IF;
5278
	/*-------------------------------------------------------*/
5279
 
5280
	-- Get Product Name --
5281
	SELECT PKG_NAME INTO ProdName FROM PACKAGES WHERE PKG_ID = nPkgId;
5282
 
5283
 
5284
	-- Create Product Version in Release Manager if Required, and Get Prod_id --
5285
	Seed_Package_Names_Versions ( ProdName, sProdVersion, nUserId, ProdId );
5286
 
5287
 
5288
	-- Add Product To Base Env --
5289
	OPEN prod_cur;
5290
	FETCH prod_cur INTO prod_rec;
5291
 
5292
	IF prod_cur%NOTFOUND THEN
5293
	   pk_Base_Env.Add_Product ( ProdId, nBaseEnvId, nOsId, nUserId );
5294
 
5295
	   -- Update Comments
5296
	   IF (NOT sComments IS NULL) THEN
5297
	   		UPDATE BASE_ENV_CONTENTS bec SET
5298
				bec.BASE_ENV_COMMENTS = sComments
5299
			 WHERE bec.BASE_ENV_ID = nBaseEnvId
5300
			   AND bec.PROD_ID = ProdId;
5301
 
5302
	   END IF;
5303
	END IF;
5304
 
5305
	CLOSE prod_cur;
5306
 
5307
 
5308
END	Add_Product_Wrap;    
5309
/*--------------------------------------------------------------------------------------------------*/
5310
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
5311
						   sNewProdIdVersion IN VARCHAR2,
5312
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5313
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
5314
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
5315
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
5316
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
5317
						   sNotXML IN BASE_ENV_CONTENTS.NOT_XML%TYPE,
5318
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
5319
						   nUserId IN NUMBER,
5320
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE ) IS
5321
 
5322
nNewProdId BASE_ENV_CONTENTS.PROD_ID%TYPE;		
5323
 
5324
sProdName PACKAGES.PKG_NAME%TYPE;					  
5325
 
5326
CURSOR curProd IS
5327
 	SELECT pv.PV_ID
5328
	  FROM PACKAGE_VERSIONS pv
5329
	 WHERE pv.pkg_id IN ( SELECT pv.pkg_id FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nOldProdId )
5330
	   AND pv.PKG_VERSION = sNewProdIdVersion;
5331
recProd curProd%ROWTYPE;						   
5332
 
5333
BEGIN
5334
	/*--------------- Business Rules Here -------------------*/
5335
	IF (nOldProdId IS NULL) OR (sNewProdIdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nSeqNum IS NULL)
5336
	THEN
5337
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOldProdId= '|| nOldProdId  ||', sNewProdIdVersion= '|| sNewProdIdVersion ||', nBaseEnvId= '|| nBaseEnvId ||', nSeqNum= '|| nSeqNum);
5338
	END IF;
5339
	/*-------------------------------------------------------*/
5340
 
5341
	-- Get new prod_id
5342
	OPEN curProd;
5343
	FETCH curProd INTO recProd;
5344
 
5345
	-- Get the Package Name
5346
	SELECT pkg.pkg_name into sProdName
5347
	FROM PACKAGES pkg, PACKAGE_VERSIONS pv
5348
	WHERE pkg.pkg_id = pv.pkg_id 
5349
	AND pv.pv_id = nOldProdId;		
5350
 
5351
	IF curProd%FOUND THEN
5352
		nNewProdId := recProd.PV_ID;
5353
	ELSE
5354
		-- Call Release Manager to add new product	
5355
		Seed_Package_Names_Versions ( sProdName, sNewProdIdVersion, nUserId, outProdId );
5356
 
5357
		nNewProdId := outProdId;
5358
		/*RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');*/
5359
	END IF;
5360
 
5361
	CLOSE curProd;
5362
 
5363
 
5364
	-- Update Product Details
5365
	UPDATE BASE_ENV_CONTENTS SET
5366
		PROD_ID = nNewProdId,
5367
		BASE_ENV_COMMENTS = sComments,
5368
		NOT_XML = sNotXML
5369
	 WHERE BASE_ENV_ID = nBaseEnvId
5370
	   AND PROD_ID = nOldProdId;
5371
 
5372
 
5373
	UPDATE PACKAGES SET
5374
		SUNOS_ELECTRONIC_NAME = sSunOSElectronicName,
5375
		WIN_ELECTRONIC_NAME = sWinElectronicName
5376
	WHERE  PKG_ID = 
5377
	(
5378
	 SELECT PKG_ID
5379
	 FROM PACKAGE_VERSIONS 
5380
	 WHERE PACKAGE_VERSIONS.PV_ID = nNewProdId
5381
	);   
5382
 
5383
 
5384
	UPDATE PACKAGE_VERSIONS SET 
5385
		 PATCH_ELECTRONIC_NAME = sPatchElectronicName
5386
	WHERE PV_ID = nNewProdId;   		   
5387
 
5388
 
5389
 
5390
	-- Update seq_num
5391
	Shift_Product_SeqNum ( nNewProdId, nBaseEnvId, nSeqNum );
5392
 
5393
END	Update_Product; 
5394
/*--------------------------------------------------------------------------------------------------*/
5395
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
5396
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5397
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE ) IS
5398
 
5399
currSeqNum NUMBER;
5400
FromSeqNum NUMBER;
5401
 
5402
BEGIN
5403
	 -- Get Current seq_num
5404
	 SELECT bec.SEQ_NUM INTO currSeqNum
5405
	   FROM BASE_ENV_CONTENTS bec
5406
	  WHERE bec.BASE_ENV_ID = nBaseEnvId
5407
	    AND bec.PROD_ID = nProdId;
5408
 
5409
 
5410
	 IF currSeqNum > nToSeqNum
5411
	 THEN
5412
 
5413
		FromSeqNum := nToSeqNum;
5414
 
5415
			-- Shift others Up
5416
		UPDATE BASE_ENV_CONTENTS bec SET
5417
			   bec.SEQ_NUM = bec.SEQ_NUM + 1
5418
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
5419
		   AND bec.PROD_ID != nProdId
5420
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  currSeqNum - 1;
5421
 
5422
 
5423
	 ELSIF currSeqNum < nToSeqNum
5424
	 THEN
5425
 
5426
		FromSeqNum := currSeqNum + 1;  
5427
 
5428
		 -- Shift others Down
5429
		UPDATE BASE_ENV_CONTENTS bec SET
5430
		   	   bec.SEQ_NUM = bec.SEQ_NUM - 1
5431
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
5432
		   AND bec.PROD_ID != nProdId
5433
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  nToSeqNum;
5434
 
5435
	 END IF;
5436
 
5437
 
5438
	 -- Move Product to new seq_num
5439
	 UPDATE BASE_ENV_CONTENTS bec SET
5440
		    bec.SEQ_NUM = nToSeqNum
5441
	  WHERE bec.BASE_ENV_ID = nBaseEnvId 
5442
	    AND bec.PROD_ID = nProdId;
5443
 
5444
 
5445
 
5446
END Shift_Product_SeqNum;
5447
/*--------------------------------------------------------------------------------------------------*/
5448
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
5449
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5450
						  nUserId IN NUMBER ) IS
5451
 
5452
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
5453
	SeqNum NUMBER;
5454
 
5455
 
5456
BEGIN
5457
	/*--------------- Business Rules Here -------------------*/
5458
	-- Check for parameters
5459
	IF (sProdIdOrder IS NULL)  OR (nBaseEnvId IS NULL) 
5460
	THEN
5461
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId='|| nBaseEnvId  ||' sProdIdOrder='|| sProdIdOrder  );
5462
	END IF;
5463
	/*-------------------------------------------------------*/
5464
 
5465
	nIdCollector := IN_LIST_NUMBER ( sProdIdOrder );
5466
 
5467
	-- Set start sequence number
5468
	SeqNum := 1;
5469
 
5470
	FOR i IN 1..nIdCollector.COUNT
5471
	LOOP
5472
 
5473
		-- Update new sequence number
5474
		UPDATE BASE_ENV_CONTENTS osc SET
5475
			osc.SEQ_NUM = SeqNum
5476
		 WHERE osc.BASE_ENV_ID = nBaseEnvId
5477
		   AND osc.PROD_ID = nIdCollector(i);
5478
 
5479
		SeqNum := SeqNum + 1;
5480
 
5481
	END LOOP;
5482
 
5483
 
5484
END	Sort_Products;
5485
/*--------------------------------------------------------------------------------------------------*/
5486
 
5487
 
5488
END pk_Base_Env;
5489
/
5490
 
5491
CREATE OR REPLACE PACKAGE BODY pk_product
5492
IS
5493
/* ---------------------------------------------------------------------------
5494
    Modified By: Rupesh Solanki
5495
   Date: 20/03/2006
5496
   --------------------------------------------------------------------------- */
5497
 
5498
   /*--------------------------------------------------------------------------------------------------*/
5499
   PROCEDURE new_product (
5500
      sprodname      IN       PACKAGES.pkg_name%TYPE,
5501
      sprodversion   IN       package_versions.pkg_version%TYPE,
5502
      nuserid        IN       NUMBER,
5503
      outprodid      OUT      package_versions.pv_id%TYPE
5504
   )
5505
   IS
5506
   BEGIN
5507
/*--------------- Business Rules Here -------------------*/
5508
/*-------------------------------------------------------*/
5509
 
5510
      -- Call Release Manager to add new product
5511
      seed_package_names_versions (sprodname,
5512
                                   sprodversion,
5513
                                   nuserid,
5514
                                   outprodid
5515
                                  );
5516
   END new_product;
5517
 
5518
/*--------------------------------------------------------------------------------------------------*/
5519
   PROCEDURE add_product (
5520
      sprodidlist   IN   VARCHAR2,
5521
      nosid         IN   os_contents.os_id%TYPE,
5522
      nuserid       IN   NUMBER
5523
   )
5524
   IS
5525
      nextseqnum   NUMBER;
5526
      pkgname      VARCHAR2 (100);
5527
      pkgversion   VARCHAR2 (100);
5528
      nodename     VARCHAR2 (4000);
5529
 
5530
      CURSOR prod_cur
5531
      IS
5532
         SELECT   qry.pv_id AS prod_id, qry.pv_description, qry.comments,
5533
                  qry.is_patch
5534
             FROM (
5535
                   /* Products */
5536
                   SELECT pv.pv_id, TO_NUMBER (NULL) AS install_order,
5537
                          TO_NUMBER (NULL) AS pkg_id, pv.pv_description,
5538
                          pv.comments, pv.is_patch
5539
                     FROM package_versions pv
5540
                    WHERE pv.is_patch IS NULL
5541
                      AND pv.pv_id IN (
5542
                             SELECT *
5543
                               FROM THE
5544
                                       (SELECT CAST
5545
                                                  (in_list_number (sprodidlist) AS depmgr_number_tab_t
5546
                                                  )
5547
                                          FROM DUAL
5548
                                       ))
5549
                   UNION ALL
5550
                   /* Patches */
5551
                   SELECT pv.pv_id, pp.install_order, pv.pkg_id,
5552
                          pv.pv_description, pv.comments, pv.is_patch
5553
                     FROM package_patches pp, package_versions pv
5554
                    WHERE pp.patch_id = pv.pv_id
5555
                      AND pp.patch_id IN (
5556
                             SELECT *
5557
                               FROM THE
5558
                                       (SELECT CAST
5559
                                                  (in_list_number (sprodidlist) AS depmgr_number_tab_t
5560
                                                  )
5561
                                          FROM DUAL
5562
                                       ))) qry
5563
         ORDER BY qry.pkg_id, qry.install_order;
5564
 
5565
      prod_rec     prod_cur%ROWTYPE;
5566
   BEGIN
5567
/*--------------- Business Rules Here -------------------*/
5568
/*-------------------------------------------------------*/
5569
 
5570
      -- Get seq_num
5571
      SELECT MAX (osc.seq_num)
5572
        INTO nextseqnum
5573
        FROM os_contents osc
5574
       WHERE osc.os_id = nosid;
5575
 
5576
      -- Set NextSeqNum to 0 if no existing products are found
5577
      IF nextseqnum IS NULL
5578
      THEN
5579
         nextseqnum := 1;
5580
      ELSE
5581
         nextseqnum := nextseqnum + 1;
5582
      END IF;
5583
 
5584
      -- Insert into OS Contents
5585
      OPEN prod_cur;
5586
 
5587
      FETCH prod_cur
5588
       INTO prod_rec;
5589
 
5590
      WHILE prod_cur%FOUND
5591
      LOOP
5592
         IF (prod_rec.is_patch IS NULL)
5593
         THEN
5594
            INSERT INTO os_contents
5595
                        (os_id, seq_num, prod_id,
5596
                         product_comments
5597
                        )
5598
                 VALUES (nosid, nextseqnum, prod_rec.prod_id,
5599
                         prod_rec.pv_description
5600
                        );
5601
         ELSE
5602
            INSERT INTO os_contents
5603
                        (os_id, seq_num, prod_id,
5604
                         product_comments
5605
                        )
5606
                 VALUES (nosid, nextseqnum, prod_rec.prod_id,
5607
                         prod_rec.comments
5608
                        );
5609
         END IF;
5610
 
5611
         SELECT pkg.pkg_name
5612
           INTO pkgname
5613
           FROM PACKAGES pkg, package_versions pv
5614
          WHERE pv.pv_id = prod_rec.prod_id AND pkg.pkg_id = pv.pkg_id;
5615
 
5616
         SELECT pkg_version
5617
           INTO pkgversion
5618
           FROM package_versions pv
5619
          WHERE pv.pv_id = prod_rec.prod_id;
5620
 
5621
         SELECT nn.node_name
5622
           INTO nodename
5623
           FROM network_nodes nn, operating_systems os
5624
          WHERE nn.node_id = os.node_id AND os.os_id = nosid;
5625
 
5626
         -- Log Action --
5627
         pk_bom.log_os_trail (nosid,
5628
                                 'Added Product: '
5629
                              || pkgname
5630
                              || ' (Version: '
5631
                              || pkgversion
5632
                              || ') with Install Order: '
5633
                              || nextseqnum
5634
                              || ' on Node: '
5635
                              || nodename,
5636
                              nuserid
5637
                             );
5638
         nextseqnum := nextseqnum + 1;
5639
 
5640
         FETCH prod_cur
5641
          INTO prod_rec;
5642
      END LOOP;
5643
 
5644
      CLOSE prod_cur;
5645
   END add_product;
5646
 
5647
/*--------------------------------------------------------------------------------------------------*/
5648
   PROCEDURE hide_product (
5649
      sprodidlist   IN   VARCHAR2,
5650
      nosid         IN   os_contents.os_id%TYPE,
5651
      nuserid       IN   NUMBER
5652
   )
5653
   IS
5654
   BEGIN
5655
/*--------------- Business Rules Here -------------------*/
5656
/*-------------------------------------------------------*/
5657
      INSERT INTO hide_products
5658
                  (os_id, prod_id
5659
                  )
5660
           VALUES (nosid, sprodidlist
5661
                  );
5662
   END hide_product;
5663
 
5664
/*--------------------------------------------------------------------------------------------------*/
5665
   PROCEDURE unhide_product (
5666
      sprodidlist   IN   NUMBER,
5667
      nosid         IN   os_contents.os_id%TYPE,
5668
      nuserid       IN   NUMBER
5669
   )
5670
   IS
5671
   BEGIN
5672
/*--------------- Business Rules Here -------------------*/
5673
/*-------------------------------------------------------*/
5674
      DELETE FROM hide_products
5675
            WHERE prod_id = sprodidlist AND os_id = nosid;
5676
   END unhide_product;
5677
 
5678
/*--------------------------------------------------------------------------------------------------*/
5679
   PROCEDURE update_process (
5680
      nprocid         IN   processes_config.proc_id%TYPE,
5681
      nprodid         IN   processes_config.prod_id%TYPE,
5682
      nisinterface    IN   processes_config.is_interface%TYPE,
5683
      nosid           IN   processes_config.os_id%TYPE,
5684
      ncmdinterface   IN   processes_config.cmd_interface%TYPE,
5685
      npkgowner       IN   processes_config.pkg_owner%TYPE,
5686
      spkghealthtag   IN   processes_config.pkg_health_tag%TYPE,
5687
      nproduct        IN   processes_config.prod_id%TYPE
5688
   )
5689
   IS
5690
   BEGIN
5691
      UPDATE processes_config
5692
         SET cmd_interface = ncmdinterface,
5693
             pkg_owner = npkgowner,
5694
             is_interface = nisinterface,
5695
             pkg_health_tag = spkghealthtag,
5696
             prod_id = nproduct
5697
       WHERE prod_id = nprodid AND os_id = nosid AND proc_id = nprocid;
5698
   END update_process;
5699
 
5700
/*--------------------------------------------------------------------------------------------------*/
5701
   PROCEDURE update_product (
5702
      noldprodid             IN       os_contents.prod_id%TYPE,
5703
      snewprodidversion      IN       VARCHAR2,
5704
      nosid                  IN       os_contents.os_id%TYPE,
5705
      nseqnum                IN       os_contents.seq_num%TYPE,
5706
      scomments              IN       os_contents.product_comments%TYPE,
5707
      ssunoselectronicname   IN       PACKAGES.sunos_electronic_name%TYPE,
5708
      swinelectronicname     IN       PACKAGES.win_electronic_name%TYPE,
5709
      sisnodespec            IN       os_contents.is_node_spec%TYPE,
5710
      snotxml                IN       os_contents.not_xml%TYPE,
5711
      spatchelectronicname   IN       package_versions.patch_electronic_name%TYPE,
5712
      nuserid                IN       NUMBER,
5713
      outprodid              OUT      package_versions.pv_id%TYPE
5714
   )
5715
   IS
5716
      nnewprodid   os_contents.prod_id%TYPE;
5717
      sprodname    PACKAGES.pkg_name%TYPE;
5718
 
5719
      CURSOR curprod
5720
      IS
5721
         SELECT pv.pv_id
5722
           FROM package_versions pv
5723
          WHERE pv.pkg_id IN (SELECT pv.pkg_id
5724
                                FROM package_versions pv
5725
                               WHERE pv.pv_id = noldprodid)
5726
            AND pv.pkg_version = snewprodidversion;
5727
 
5728
      recprod      curprod%ROWTYPE;
5729
   BEGIN
5730
      /*--------------- Business Rules Here -------------------*/
5731
      IF    (noldprodid IS NULL)
5732
         OR (snewprodidversion IS NULL)
5733
         OR (nosid IS NULL)
5734
         OR (nseqnum IS NULL)
5735
      THEN
5736
         raise_application_error (-20000,
5737
                                     'Missing some parameters! nOldProdId= '
5738
                                  || noldprodid
5739
                                  || ', sNewProdIdVersion= '
5740
                                  || snewprodidversion
5741
                                  || ', nOsId= '
5742
                                  || nosid
5743
                                  || ', nSeqNum= '
5744
                                  || nseqnum
5745
                                 );
5746
      END IF;
5747
 
5748
/*-------------------------------------------------------*/
5749
 
5750
      -- Get new prod_id
5751
      OPEN curprod;
5752
 
5753
      FETCH curprod
5754
       INTO recprod;
5755
 
5756
      -- Get the Package Name
5757
      SELECT pkg.pkg_name
5758
        INTO sprodname
5759
        FROM PACKAGES pkg, package_versions pv
5760
       WHERE pkg.pkg_id = pv.pkg_id AND pv.pv_id = noldprodid;
5761
 
5762
      IF curprod%FOUND
5763
      THEN
5764
         nnewprodid := recprod.pv_id;
5765
      ELSE
5766
         -- Call Release Manager to add new product
5767
         seed_package_names_versions (sprodname,
5768
                                      snewprodidversion,
5769
                                      nuserid,
5770
                                      outprodid
5771
                                     );
5772
         nnewprodid := outprodid;
5773
      /*RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');*/
5774
      END IF;
5775
 
5776
      CLOSE curprod;
5777
 
5778
      -- Update Product Details
5779
      UPDATE os_contents
5780
         SET prod_id = nnewprodid,
5781
             product_comments = scomments,
5782
             not_xml = snotxml,
5783
             is_node_spec = sisnodespec
5784
       WHERE os_id = nosid AND prod_id = noldprodid;
5785
 
5786
      --Update Package Electronic Name Details In Packages Table
5787
      UPDATE PACKAGES
5788
         SET sunos_electronic_name = ssunoselectronicname,
5789
             win_electronic_name = swinelectronicname
5790
       WHERE pkg_id = (SELECT pkg_id
5791
                         FROM package_versions
5792
                        WHERE package_versions.pv_id = nnewprodid);
5793
 
5794
      --Update Patch Electronic Name In Package Versions Table
5795
      UPDATE package_versions
5796
         SET patch_electronic_name = spatchelectronicname
5797
       WHERE pv_id = nnewprodid;
5798
 
5799
      -- Update seq_num
5800
      pk_operating_system.shift_product_seqnum (nnewprodid, nosid, nseqnum);
5801
   END update_product;
5802
 
5803
/*--------------------------------------------------------------------------------------------------*/
5804
   PROCEDURE replace_product (
5805
      noldprodid   IN   os_contents.prod_id%TYPE,
5806
      nnewprodid   IN   os_contents.prod_id%TYPE,
5807
      nosid        IN   os_contents.os_id%TYPE,
5808
      nuserid      IN   NUMBER
5809
   )
5810
   IS
5811
      oldversion   VARCHAR2 (100);
5812
      newversion   VARCHAR2 (100);
5813
      pkgname      VARCHAR2 (100);
5814
      nodename     VARCHAR2 (4000);
5815
   BEGIN
5816
/*--------------- Business Rules Here -------------------*/
5817
/*-------------------------------------------------------*/
5818
      UPDATE os_contents
5819
         SET prod_id = nnewprodid
5820
       WHERE prod_id = noldprodid AND os_id = nosid;
5821
 
5822
      SELECT pkg_version
5823
        INTO oldversion
5824
        FROM package_versions
5825
       WHERE pv_id = noldprodid;
5826
 
5827
      SELECT pkg_version
5828
        INTO newversion
5829
        FROM package_versions
5830
       WHERE pv_id = nnewprodid;
5831
 
5832
      SELECT pkg.pkg_name
5833
        INTO pkgname
5834
        FROM PACKAGES pkg, package_versions pv
5835
       WHERE pv.pv_id = nnewprodid AND pkg.pkg_id = pv.pkg_id;
5836
 
5837
      SELECT nn.node_name
5838
        INTO nodename
5839
        FROM network_nodes nn, operating_systems os
5840
       WHERE nn.node_id = os.node_id AND os.os_id = nosid;
5841
 
5842
      -- Log Action --
5843
      pk_bom.log_os_trail (nosid,
5844
                              'Updated Product: '
5845
                           || pkgname
5846
                           || ' from Version: '
5847
                           || oldversion
5848
                           || ' to '
5849
                           || newversion
5850
                           || ' on Node: '
5851
                           || nodename,
5852
                           nuserid
5853
                          );
5854
   END replace_product;
5855
 
5856
/*--------------------------------------------------------------------------------------------------*/
5857
   PROCEDURE remove_process (
5858
      sprocname       IN   processes_config.pkg_health_tag%TYPE,
5859
      sprodidlist     IN   VARCHAR2,
5860
      nosid           IN   os_contents.os_id%TYPE,
5861
      scmdinterface   IN   processes_config.cmd_interface%TYPE,
5862
      spkgowner       IN   processes_config.pkg_owner%TYPE,
5863
      sinterface      IN   processes_config.is_interface%TYPE,
5864
      nuserid         IN   NUMBER
5865
   )
5866
   IS
5867
      processname   VARCHAR2 (4000);
5868
      nodename      VARCHAR2 (4000);
5869
   BEGIN
5870
      -- Log Action --
5871
      pk_bom.log_os_trail (nosid,
5872
                           'Deleted Process: ' || sprocname || ' From Node. ',
5873
                           nuserid
5874
                          );
5875
 
5876
/*Select the Correct Details - Begin*/
5877
      IF scmdinterface IS NOT NULL
5878
      THEN
5879
         IF sinterface IS NOT NULL
5880
         THEN
5881
            IF spkgowner IS NOT NULL
5882
            THEN
5883
               DELETE FROM processes_config
5884
                     WHERE os_id = nosid
5885
                       AND prod_id = sprodidlist
5886
                       AND pkg_health_tag = sprocname
5887
                       AND cmd_interface = scmdinterface
5888
                       AND pkg_owner = spkgowner
5889
                       AND is_interface = sinterface;
5890
            ELSE
5891
      /*sPkgOwner IS NULL, sInterface IS NOT NULL, sCmdInterface IS NOT NULL*/
5892
               DELETE FROM processes_config
5893
                     WHERE os_id = nosid
5894
                       AND prod_id = sprodidlist
5895
                       AND pkg_health_tag = sprocname
5896
                       AND cmd_interface = scmdinterface
5897
                       AND pkg_owner IS NULL
5898
                       AND is_interface = sinterface;
5899
            END IF;
5900
         ELSE               /* sInterface IS NULL, sCmdInterface IS NOT NULL*/
5901
            IF spkgowner IS NOT NULL
5902
            THEN
5903
               DELETE FROM processes_config
5904
                     WHERE os_id = nosid
5905
                       AND prod_id = sprodidlist
5906
                       AND pkg_health_tag = sprocname
5907
                       AND cmd_interface = scmdinterface
5908
                       AND pkg_owner = spkgowner
5909
                       AND is_interface IS NULL;
5910
            ELSE
5911
         /* sPkqOwner IS NULL, sInterface IS NULL, sCmdInterface IS NOT NULL*/
5912
               DELETE FROM processes_config
5913
                     WHERE os_id = nosid
5914
                       AND prod_id = sprodidlist
5915
                       AND pkg_health_tag = sprocname
5916
                       AND cmd_interface = scmdinterface
5917
                       AND pkg_owner IS NULL
5918
                       AND is_interface IS NULL;
5919
            END IF;
5920
         END IF;
5921
      ELSE                                          /* sCmdInterface IS NULL*/
5922
         IF sinterface IS NOT NULL
5923
         THEN
5924
            IF spkgowner IS NOT NULL
5925
            THEN
5926
               DELETE FROM processes_config
5927
                     WHERE os_id = nosid
5928
                       AND prod_id = sprodidlist
5929
                       AND pkg_health_tag = sprocname
5930
                       AND cmd_interface IS NULL
5931
                       AND pkg_owner = spkgowner
5932
                       AND is_interface = sinterface;
5933
            ELSE
5934
        /* sPkgOwner is NULL, sInterface IS NOT NULL, sCmdInterface IS NULL */
5935
               DELETE FROM processes_config
5936
                     WHERE os_id = nosid
5937
                       AND prod_id = sprodidlist
5938
                       AND pkg_health_tag = sprocname
5939
                       AND cmd_interface IS NULL
5940
                       AND pkg_owner IS NULL
5941
                       AND is_interface = sinterface;
5942
            END IF;
5943
         ELSE                   /* sInterface IS NULL, sCmdInterface IS NULL*/
5944
            IF spkgowner IS NOT NULL
5945
            THEN
5946
               DELETE FROM processes_config
5947
                     WHERE os_id = nosid
5948
                       AND prod_id = sprodidlist
5949
                       AND pkg_health_tag = sprocname
5950
                       AND cmd_interface IS NULL
5951
                       AND pkg_owner = spkgowner
5952
                       AND is_interface IS NULL;
5953
            ELSE
5954
             /* sPkgOwner IS NULL, sInterface IS NULL, sCmdInterface IS NULL*/
5955
               DELETE FROM processes_config
5956
                     WHERE os_id = nosid
5957
                       AND prod_id = sprodidlist
5958
                       AND pkg_health_tag = sprocname
5959
                       AND cmd_interface IS NULL
5960
                       AND pkg_owner IS NULL
5961
                       AND is_interface IS NULL;
5962
            END IF;
5963
         END IF;
5964
      END IF;
5965
/*Select the Correct Details - End*/
5966
   END remove_process;
5967
 
5968
/*--------------------------------------------------------------------------------------------------*/
5969
   PROCEDURE remove_products (
5970
      sprodidlist   IN   VARCHAR2,
5971
      nosid         IN   os_contents.os_id%TYPE,
5972
      nuserid       IN   NUMBER
5973
   )
5974
   IS
5975
      pkgname        VARCHAR2 (100);
5976
      pkgversion     VARCHAR2 (100);
5977
      nextseqnum     NUMBER              := 1;
5978
      nidcollector   depmgr_number_tab_t := depmgr_number_tab_t ();
5979
      nodename       VARCHAR2 (4000);
5980
 
5981
      CURSOR prod_cur
5982
      IS
5983
         SELECT   osc.prod_id, osc.seq_num
5984
             FROM os_contents osc
5985
            WHERE osc.os_id = nosid
5986
         ORDER BY osc.seq_num;
5987
 
5988
      prod_rec       prod_cur%ROWTYPE;
5989
   BEGIN
5990
      /*--------------- Business Rules Here -------------------*/
5991
      IF sprodidlist IS NULL
5992
      THEN
5993
         raise_application_error (-20000,
5994
                                  'Please select one or more Products.'
5995
                                 );
5996
      END IF;
5997
 
5998
/*-------------------------------------------------------*/
5999
      SELECT nn.node_name
6000
        INTO nodename
6001
        FROM network_nodes nn, operating_systems os
6002
       WHERE nn.node_id = os.node_id AND os.os_id = nosid;
6003
 
6004
      -- Remove Products
6005
      DELETE FROM os_contents
6006
            WHERE os_id = nosid
6007
              AND prod_id IN (
6008
                     SELECT *
6009
                       FROM THE
6010
                               (SELECT CAST
6011
                                          (in_list_number (sprodidlist) AS depmgr_number_tab_t
6012
                                          )
6013
                                  FROM DUAL
6014
                               ));
6015
 
6016
      -- Remove Processes
6017
      DELETE FROM processes_config
6018
            WHERE os_id = nosid
6019
              AND pkg_id IN (
6020
                     SELECT pkg_id
6021
                       FROM package_versions
6022
                      WHERE pv_id IN (
6023
                               SELECT *
6024
                                 FROM THE
6025
                                         (SELECT CAST
6026
                                                    (in_list_number
6027
                                                                  (sprodidlist) AS depmgr_number_tab_t
6028
                                                    )
6029
                                            FROM DUAL
6030
                                         )));
6031
 
6032
      -- Update Seq Numbers
6033
      OPEN prod_cur;
6034
 
6035
      FETCH prod_cur
6036
       INTO prod_rec;
6037
 
6038
      WHILE prod_cur%FOUND
6039
      LOOP
6040
         UPDATE os_contents
6041
            SET seq_num = nextseqnum
6042
          WHERE os_id = nosid AND prod_id = prod_rec.prod_id;
6043
 
6044
         nextseqnum := nextseqnum + 1;
6045
 
6046
         FETCH prod_cur
6047
          INTO prod_rec;
6048
      END LOOP;
6049
 
6050
      CLOSE prod_cur;
6051
 
6052
      nidcollector := in_list_number (sprodidlist);
6053
 
6054
      FOR i IN 1 .. nidcollector.COUNT
6055
      LOOP
6056
         SELECT pkg.pkg_name
6057
           INTO pkgname
6058
           FROM PACKAGES pkg, package_versions pv
6059
          WHERE pv.pv_id = nidcollector (i) AND pkg.pkg_id = pv.pkg_id;
6060
 
6061
         SELECT pkg_version
6062
           INTO pkgversion
6063
           FROM package_versions pv
6064
          WHERE pv.pv_id = nidcollector (i);
6065
 
6066
         -- Log Action --
6067
         pk_bom.log_os_trail (nosid,
6068
                                 'Deleted Product: '
6069
                              || pkgname
6070
                              || ' (Version: '
6071
                              || pkgversion
6072
                              || ') from Node: '
6073
                              || nodename,
6074
                              nuserid
6075
                             );
6076
      END LOOP;
6077
   END remove_products;
6078
 
6079
/*--------------------------------------------------------------------------------------------------*/
6080
   PROCEDURE add_products_nodespec (
6081
      sprodidlist   IN   VARCHAR2,
6082
      nosid         IN   os_contents.os_id%TYPE,
6083
      nuserid       IN   NUMBER
6084
   )
6085
   IS
6086
      nextseqnum   NUMBER             := 1;
6087
 
6088
      CURSOR prod_cur
6089
      IS
6090
         SELECT   osc.prod_id, osc.seq_num
6091
             FROM os_contents osc
6092
            WHERE osc.os_id = nosid
6093
         ORDER BY osc.seq_num;
6094
 
6095
      prod_rec     prod_cur%ROWTYPE;
6096
   BEGIN
6097
      /*--------------- Business Rules Here -------------------*/
6098
      IF sprodidlist IS NULL
6099
      THEN
6100
         raise_application_error (-20000,
6101
                                  'Please select one or more Products.'
6102
                                 );
6103
      END IF;
6104
 
6105
/*-------------------------------------------------------*/
6106
      UPDATE os_contents
6107
         SET is_node_spec = ''
6108
       WHERE os_id = nosid;
6109
 
6110
      -- Set Nodespec On
6111
      UPDATE os_contents
6112
         SET is_node_spec = 'on'
6113
       WHERE os_id = nosid
6114
         AND prod_id IN (
6115
                SELECT *
6116
                  FROM THE
6117
                          (SELECT CAST
6118
                                     (in_list_number (sprodidlist) AS depmgr_number_tab_t
6119
                                     )
6120
                             FROM DUAL
6121
                          ));
6122
   END add_products_nodespec;
6123
 
6124
/*--------------------------------------------------------------------------------------------------*/
6125
   PROCEDURE accept_reject (
6126
      nprodid     IN   product_details.prod_id%TYPE,
6127
      nbomid      IN   boms.bom_id%TYPE,
6128
      scomments   IN   rejection_trail.comments%TYPE DEFAULT NULL,
6129
      nuserid     IN   rejection_trail.user_id%TYPE,
6130
      nosid       IN   NUMBER
6131
   )
6132
   IS
6133
      isrejected   product_details.is_rejected%TYPE;
6134
      pkgname      VARCHAR2 (100);
6135
      pkgversion   VARCHAR2 (100);
6136
      nodename     VARCHAR2 (4000);
6137
 
6138
      CURSOR curprod
6139
      IS
6140
         SELECT pd.*
6141
           FROM product_details pd
6142
          WHERE pd.prod_id = nprodid;
6143
 
6144
      recprod      curprod%ROWTYPE;
6145
   BEGIN
6146
      /*--------------- Business Rules Here -------------------*/
6147
      IF (nprodid IS NULL)
6148
      THEN
6149
         raise_application_error (-20000,
6150
                                  'Please select at least one product.'
6151
                                 );
6152
      END IF;
6153
 
6154
/*-------------------------------------------------------*/
6155
 
6156
      -- Set new Accept-Reject state
6157
      isrejected := 'Y';
6158
 
6159
      SELECT nn.node_name
6160
        INTO nodename
6161
        FROM network_nodes nn, operating_systems os
6162
       WHERE nn.node_id = os.node_id AND os.os_id = nosid;
6163
 
6164
      OPEN curprod;
6165
 
6166
      FETCH curprod
6167
       INTO recprod;
6168
 
6169
      IF curprod%FOUND
6170
      THEN
6171
         /* Product Details found */
6172
         SELECT pkg.pkg_name
6173
           INTO pkgname
6174
           FROM PACKAGES pkg, package_versions pv
6175
          WHERE pv.pv_id = nprodid AND pkg.pkg_id = pv.pkg_id;
6176
 
6177
         SELECT pkg_version
6178
           INTO pkgversion
6179
           FROM package_versions pv
6180
          WHERE pv.pv_id = nprodid;
6181
 
6182
         -- Set new Accept-Reject state
6183
         IF recprod.is_rejected = 'Y'
6184
         THEN
6185
            isrejected := 'N';
6186
            -- Log Action --
6187
            pk_bom.log_os_trail (nosid,
6188
                                    'Accepted Product: '
6189
                                 || pkgname
6190
                                 || ' '
6191
                                 || pkgversion
6192
                                 || ' on Node: '
6193
                                 || nodename,
6194
                                 nuserid
6195
                                );
6196
         ELSE
6197
            isrejected := 'Y';
6198
            -- Log Action --
6199
            pk_bom.log_os_trail (nosid,
6200
                                    'Rejected Product: '
6201
                                 || pkgname
6202
                                 || ' '
6203
                                 || pkgversion
6204
                                 || ' on Node: '
6205
                                 || nodename,
6206
                                 nuserid
6207
                                );
6208
         END IF;
6209
 
6210
         -- Toggle Accept-Reject State
6211
         UPDATE product_details pd
6212
            SET pd.is_rejected = isrejected
6213
          WHERE pd.prod_id = nprodid;
6214
      ELSE
6215
         /* Product Details NOT found */
6216
 
6217
         -- Toggle Accept-Reject State
6218
         INSERT INTO product_details
6219
                     (prod_id, is_rejected
6220
                     )
6221
              VALUES (nprodid, isrejected
6222
                     );
6223
      END IF;
6224
 
6225
      CLOSE curprod;
6226
 
6227
      -- Reflect changes to the BOM level
6228
 
6229
      /* Log Rejection Trail */
6230
      pk_utils.log_rejection_trail
6231
                                 (get_system_value ('enumENTITY_TYPE_PRODUCT'),
6232
                                  nprodid,
6233
                                  isrejected,
6234
                                  nuserid,
6235
                                  scomments
6236
                                 );
6237
   END accept_reject;
6238
 
6239
/*--------------------------------------------------------------------------------------------------*/
6240
   PROCEDURE accept_reject_list (
6241
      nprodidlist   IN   VARCHAR2,
6242
      nbomid        IN   boms.bom_id%TYPE,
6243
      scomments     IN   rejection_trail.comments%TYPE DEFAULT NULL,
6244
      nuserid       IN   rejection_trail.user_id%TYPE,
6245
      nosid         IN   NUMBER
6246
   )
6247
   IS
6248
      nidcollector   depmgr_number_tab_t := depmgr_number_tab_t ();
6249
   BEGIN
6250
      /*--------------- Business Rules Here -------------------*/
6251
      IF (nprodidlist IS NULL)
6252
      THEN
6253
         raise_application_error (-20000,
6254
                                  'Please select at least one product.'
6255
                                 );
6256
      END IF;
6257
 
6258
/*-------------------------------------------------------*/
6259
      nidcollector := in_list_number (nprodidlist);
6260
 
6261
      FOR i IN 1 .. nidcollector.COUNT
6262
      LOOP
6263
         accept_reject (nidcollector (i), nbomid, scomments, nuserid, nosid);
6264
      END LOOP;
6265
   END accept_reject_list;
6266
 
6267
/*--------------------------------------------------------------------------------------------------*/
6268
   PROCEDURE accept_reject_comments (
6269
      nprodid      IN   product_details.prod_id%TYPE,
6270
      nrejectseq   IN   rejection_trail.reject_seq%TYPE,
6271
      scomments    IN   rejection_trail.comments%TYPE DEFAULT NULL,
6272
      nuserid      IN   rejection_trail.user_id%TYPE
6273
   )
6274
   IS
6275
      isrejected   rejection_trail.is_rejected%TYPE;
6276
   BEGIN
6277
      /*--------------- Business Rules Here -------------------*/
6278
      IF (nprodid IS NULL)
6279
      THEN
6280
         raise_application_error (-20000,
6281
                                     'Missing some parameters! nProdId= '
6282
                                  || nprodid
6283
                                 );
6284
      END IF;
6285
 
6286
/*-------------------------------------------------------*/
6287
      IF nrejectseq IS NULL
6288
      THEN
6289
         /* CREATE New Note */
6290
 
6291
         -- Get last IsRejected state
6292
         SELECT   rt.is_rejected
6293
             INTO isrejected
6294
             FROM rejection_trail rt
6295
            WHERE rt.entity_id = nprodid
6296
              AND rt.enum_entity_type =
6297
                                  get_system_value ('enumENTITY_TYPE_PRODUCT')
6298
              AND ROWNUM = 1
6299
         ORDER BY rt.reject_seq;
6300
 
6301
         /* Log Rejection Trail */
6302
         pk_utils.log_rejection_trail
6303
                                 (get_system_value ('enumENTITY_TYPE_PRODUCT'),
6304
                                  nprodid,
6305
                                  isrejected,
6306
                                  nuserid,
6307
                                  scomments
6308
                                 );
6309
      ELSE
6310
         /* EDIT Note */
6311
         UPDATE rejection_trail rt
6312
            SET rt.comments = scomments,
6313
                rt.user_id = nuserid,
6314
                rt.date_time_stamp = get_datetime ()
6315
          WHERE rt.enum_entity_type =
6316
                                  get_system_value ('enumENTITY_TYPE_PRODUCT')
6317
            AND rt.entity_id = nprodid
6318
            AND rt.reject_seq = nrejectseq;
6319
      END IF;
6320
   END accept_reject_comments;
6321
 
6322
/*--------------------------------------------------------------------------------------------------*/
6323
   PROCEDURE sort_products (
6324
      sprodidorder   IN   VARCHAR2,
6325
      nosid          IN   os_contents.os_id%TYPE,
6326
      nuserid        IN   NUMBER
6327
   )
6328
   IS
6329
      nidcollector   depmgr_number_tab_t := depmgr_number_tab_t ();
6330
      seqnum         NUMBER;
6331
   BEGIN
6332
      /*--------------- Business Rules Here -------------------*/
6333
      -- Check for parameters
6334
      IF (sprodidorder IS NULL) OR (nosid IS NULL)
6335
      THEN
6336
         raise_application_error (-20000,
6337
                                     'Missing some parameters! nOsId='
6338
                                  || nosid
6339
                                  || ' sProdIdOrder='
6340
                                  || sprodidorder
6341
                                 );
6342
      END IF;
6343
 
6344
/*-------------------------------------------------------*/
6345
      nidcollector := in_list_number (sprodidorder);
6346
      -- Set start sequence number
6347
      seqnum := 1;
6348
 
6349
      FOR i IN 1 .. nidcollector.COUNT
6350
      LOOP
6351
         -- Update new sequence number
6352
         UPDATE os_contents osc
6353
            SET osc.seq_num = seqnum
6354
          WHERE osc.os_id = nosid AND osc.prod_id = nidcollector (i);
6355
 
6356
         seqnum := seqnum + 1;
6357
      END LOOP;
6358
   END sort_products;
6359
 
6360
/*--------------------------------------------------------------------------------------------------*/
6361
   PROCEDURE remove_obsolete_patches (
6362
      nosid     IN   os_contents.os_id%TYPE,
6363
      nuserid   IN   NUMBER
6364
   )
6365
   IS
6366
      nextseqnum         NUMBER                     := 1;
6367
 
6368
      CURSOR prod_cur
6369
      IS
6370
         SELECT   osc.prod_id, osc.seq_num
6371
             FROM os_contents osc
6372
            WHERE osc.os_id = nosid
6373
         ORDER BY osc.seq_num;
6374
 
6375
      prod_rec           prod_cur%ROWTYPE;
6376
 
6377
      CURSOR log_obsolete_cur
6378
      IS
6379
         SELECT osc.prod_id, pv.pkg_version
6380
           FROM os_contents osc, package_versions pv
6381
          WHERE pv.pv_id = osc.prod_id
6382
            AND pv.is_obsolete = 'Y'
6383
            AND osc.os_id = nosid;
6384
 
6385
      log_obsolete_rec   log_obsolete_cur%ROWTYPE;
6386
   BEGIN
6387
      -- Log Obsolete Patches
6388
      OPEN log_obsolete_cur;
6389
 
6390
      FETCH log_obsolete_cur
6391
       INTO log_obsolete_rec;
6392
 
6393
      WHILE log_obsolete_cur%FOUND
6394
      LOOP
6395
         pk_bom.log_os_trail (nosid,
6396
                                 'Removed Obsolete Patch: '
6397
                              || log_obsolete_rec.pkg_version,
6398
                              nuserid
6399
                             );
6400
 
6401
         FETCH log_obsolete_cur
6402
          INTO log_obsolete_rec;
6403
      END LOOP;
6404
 
6405
      CLOSE log_obsolete_cur;
6406
 
6407
      -- Delete Obsolete Patches in the OS.
6408
      DELETE FROM os_contents
6409
            WHERE os_id = nosid
6410
              AND prod_id IN (
6411
                     SELECT osc.prod_id
6412
                       FROM os_contents osc, package_versions pv
6413
                      WHERE pv.pv_id = osc.prod_id
6414
                        AND pv.is_obsolete = 'Y'
6415
                        AND osc.os_id = nosid);
6416
 
6417
      -- Update Seq Numbers
6418
      OPEN prod_cur;
6419
 
6420
      FETCH prod_cur
6421
       INTO prod_rec;
6422
 
6423
      WHILE prod_cur%FOUND
6424
      LOOP
6425
         UPDATE os_contents
6426
            SET seq_num = nextseqnum
6427
          WHERE os_id = nosid AND prod_id = prod_rec.prod_id;
6428
 
6429
         nextseqnum := nextseqnum + 1;
6430
 
6431
         FETCH prod_cur
6432
          INTO prod_rec;
6433
      END LOOP;
6434
 
6435
      CLOSE prod_cur;
6436
   END remove_obsolete_patches;
6437
 
6438
/*--------------------------------------------------------------------------------------------------*/
6439
   FUNCTION get_os_id (pvid IN NUMBER)
6440
      RETURN NUMBER
6441
   IS
6442
      returnvalue   NUMBER;
6443
   BEGIN
6444
      SELECT osc.os_id
6445
        INTO returnvalue
6446
        FROM os_contents osc
6447
       WHERE osc.prod_id = pvid;
6448
 
6449
      RETURN returnvalue;
6450
   END;
6451
 
6452
/*--------------------------------------------------------------------------------------------------*/
6453
   FUNCTION get_node_id (osid IN NUMBER)
6454
      RETURN NUMBER
6455
   IS
6456
      returnvalue   NUMBER;
6457
   BEGIN
6458
      SELECT os.node_id
6459
        INTO returnvalue
6460
        FROM operating_systems os
6461
       WHERE os.os_id = osid;
6462
 
6463
      RETURN returnvalue;
6464
   END;
6465
 
6466
/*-------------------------------------------------------------------------------------------------------*/
6467
   PROCEDURE add_product_note (
6468
      nprodid   IN   NUMBER,
6469
      snotes    IN   VARCHAR2,
6470
      nuserid   IN   NUMBER
6471
   )
6472
   IS
6473
   BEGIN
6474
      INSERT INTO product_notes
6475
           VALUES (nprodid, snotes);
6476
 
6477
      /* log Product_Trail*/
6478
      pk_product.log_product_trail (nprodid, snotes, nuserid);
6479
   END add_product_note;
6480
 
6481
/*-------------------------------------------------------------------------------------------------------*/
6482
   PROCEDURE edit_product_note (
6483
      nprodid   IN   NUMBER,
6484
      snotes    IN   VARCHAR2,
6485
      nuserid   IN   NUMBER
6486
   )
6487
   IS
6488
   BEGIN
6489
      UPDATE product_notes
6490
         SET notes = snotes
6491
       WHERE prod_id = nprodid;
6492
 
6493
      /* log Product_Trail*/
6494
      pk_product.log_product_trail (nprodid, snotes, nuserid);
6495
   END edit_product_note;
6496
 
6497
/*--------------------------------------------------------------------------------------------------*/
6498
   PROCEDURE log_product_trail (
6499
      nprodid   IN   product_trail.prod_id%TYPE,
6500
      saction   IN   product_trail.trail_action%TYPE,
6501
      nuserid   IN   product_trail.user_id%TYPE
6502
   )
6503
   IS
6504
   BEGIN
6505
      /*--------------- Business Rules Here -------------------*/
6506
      IF (nprodid IS NULL) OR (saction IS NULL) OR (nuserid IS NULL)
6507
      THEN
6508
         raise_application_error (-20000,
6509
                                     'Missing some parameters! nProdId= '
6510
                                  || nprodid
6511
                                  || ', sAction='
6512
                                  || saction
6513
                                  || ', nUserId='
6514
                                  || nuserid
6515
                                 );
6516
      END IF;
6517
 
6518
/*-------------------------------------------------------*/
6519
      INSERT INTO product_trail
6520
                  (prod_id, trail_action, user_id, date_time_stamp
6521
                  )
6522
           VALUES (nprodid, saction, nuserid, get_datetime ()
6523
                  );
6524
   END log_product_trail;
6525
/*--------------------------------------------------------------------------------------------------*/
6526
END pk_product;
6527
/
6528
 
6529
CREATE OR REPLACE PACKAGE BODY pk_Project
6530
IS
6531
/* ---------------------------------------------------------------------------
6532
    Version: 2.0
6533
   --------------------------------------------------------------------------- */
6534
 
6535
 
6536
/*--------------------------------------------------------------------------------------------------*/
6537
PROCEDURE Add_Project ( sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
6538
		  			  	nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE ) IS
6539
 
6540
ProjId NUMBER;
6541
 
6542
BEGIN
6543
	/*--------------- Business Rules Here -------------------*/
6544
	/*-------------------------------------------------------*/
6545
 
6546
	-- Get proj_id --
6547
	SELECT SEQ_PROJ_ID.NEXTVAL INTO ProjId FROM DUAL;
6548
 
6549
 
6550
	-- Insert Branch --
6551
	INSERT INTO DM_PROJECTS ( PROJ_ID, PROJ_NAME, RM_PROJECTS_FK, IS_HIDDEN )
6552
	VALUES ( ProjId, sProjName, nRMProjFk, NULL );
6553
 
6554
	EXCEPTION
6555
    WHEN DUP_VAL_ON_INDEX
6556
	THEN		
6557
		RAISE_APPLICATION_ERROR (-20000, 'Project Name "'|| sProjName ||'" is Already Used.');
6558
 
6559
END	Add_Project;
6560
/*--------------------------------------------------------------------------------------------------*/
6561
PROCEDURE Update_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE,
6562
		  				   sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
6563
						   nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE ) IS
6564
 
6565
 
6566
BEGIN
6567
	/*--------------- Business Rules Here -------------------*/
6568
	/*-------------------------------------------------------*/
6569
 
6570
 
6571
	-- Update Project --
6572
	UPDATE DM_PROJECTS SET
6573
	PROJ_NAME = sProjName,
6574
	RM_PROJECTS_FK = nRMProjFk
6575
	WHERE PROJ_ID = nProjId;
6576
 
6577
	EXCEPTION
6578
    WHEN DUP_VAL_ON_INDEX
6579
	THEN		
6580
		RAISE_APPLICATION_ERROR (-20000, 'Project Name "'|| sProjName ||'" is Already Used.');
6581
 
6582
END	Update_Project;
6583
/*--------------------------------------------------------------------------------------------------*/
6584
PROCEDURE ShowHide_Project ( nProjId DM_PROJECTS.PROJ_ID%TYPE ) IS
6585
 
6586
currIsHidden DM_PROJECTS.IS_HIDDEN%TYPE;
6587
 
6588
BEGIN
6589
	/*--------------- Business Rules Here -------------------*/
6590
	/*-------------------------------------------------------*/
6591
 
6592
	-- Get current IsHidden State
6593
	SELECT dmp.IS_HIDDEN INTO currIsHidden
6594
	  FROM DM_PROJECTS dmp
6595
	 WHERE dmp.PROJ_ID = nProjId;
6596
 
6597
 
6598
	-- Toggle IsHidden State --
6599
	IF currIsHidden = 'Y' THEN
6600
	   currIsHidden := NULL;
6601
	ELSE
6602
	   currIsHidden := 'Y';
6603
	END IF;
6604
 
6605
 
6606
	-- Update State --
6607
	UPDATE DM_PROJECTS dmp SET
6608
	IS_HIDDEN = currIsHidden
6609
	WHERE dmp.PROJ_ID = nProjId;
6610
 
6611
 
6612
END	ShowHide_Project;
6613
/*--------------------------------------------------------------------------------------------------*/
6614
PROCEDURE Remove_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE ) IS
6615
 
6616
rowCount NUMBER DEFAULT 0;
6617
 
6618
BEGIN
6619
	/*--------------- Business Rules Here -------------------*/
6620
	-- Check for Dependencies (Branches)
6621
	SELECT Count(*) INTO rowCount
6622
	  FROM BRANCHES br
6623
	 WHERE br.PROJ_ID = nProjId;
6624
 
6625
	IF rowCount > 0 THEN
6626
	   RAISE_APPLICATION_ERROR (-20000, 'Some Branches are still using this Project ( Counted '|| rowCount ||' ).' );
6627
	END IF; 
6628
 
6629
	-- Check for Dependencies (States)
6630
	SELECT Count(*) INTO rowCount
6631
	  FROM STATES st
6632
	  WHERE st.PROJ_ID = nProjId;
6633
 
6634
	IF rowCount > 0 THEN
6635
	   RAISE_APPLICATION_ERROR (-20000, 'Some States are still using this Project ( Counted '|| rowCount ||' ).' );
6636
	END IF; 
6637
	/*-------------------------------------------------------*/
6638
 
6639
 
6640
	-- Remove Notificaitons --
6641
	DELETE 
6642
	  FROM NOTIFY_USER nu
6643
	 WHERE nu.PROJ_ID = nProjId;
6644
 
6645
    -- Remove Product Queue --
6646
	DELETE 
6647
	  FROM PRODUCTS_QUEUE pq
6648
	 WHERE pq.PROJ_ID = nProjId; 
6649
 
6650
	-- Remove Project --
6651
	DELETE 
6652
	  FROM DM_PROJECTS dmp
6653
	 WHERE dmp.PROJ_ID = nProjId; 
6654
 
6655
 
6656
END	Remove_Project;
6657
/*--------------------------------------------------------------------------------------------------*/
6658
PROCEDURE Add_Branch ( sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
6659
		  			   nProjId IN BRANCHES.PROJ_ID%TYPE,
6660
					   nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
6661
                       sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE ) IS
6662
 
6663
BranchId NUMBER;
6664
 
6665
BEGIN
6666
	/*--------------- Business Rules Here -------------------*/
6667
	/*-------------------------------------------------------*/
6668
 
6669
	-- Get branch_id --
6670
	SELECT SEQ_BRANCH_ID.NEXTVAL INTO BranchId FROM DUAL;
6671
 
6672
 
6673
	-- Insert Branch --
6674
	INSERT INTO BRANCHES (BRANCH_ID, PROJ_ID, BRANCH_NAME, RM_VTREE_FK, BRANCH_COMMENTS )
6675
	VALUES ( BranchId, nProjId, sBranchName, nRMVTreeId, sBranchComments );
6676
 
6677
	EXCEPTION
6678
    WHEN DUP_VAL_ON_INDEX
6679
	THEN		
6680
		RAISE_APPLICATION_ERROR (-20000, 'Branch Name "'|| sBranchName ||'" is Already Used.');
6681
 
6682
END	Add_Branch;
6683
/*--------------------------------------------------------------------------------------------------*/
6684
PROCEDURE Remove_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE ) IS
6685
 
6686
rowCount NUMBER DEFAULT 0;
6687
 
6688
BEGIN
6689
	/*--------------- Business Rules Here -------------------*/
6690
	-- Check for Dependencies
6691
	SELECT Count(*) INTO rowCount
6692
	  FROM BOMS bo
6693
	 WHERE bo.BRANCH_ID = nBranchId;
6694
 
6695
	IF rowCount > 0 THEN
6696
	   RAISE_APPLICATION_ERROR (-20000, 'Some BOMS are still using this Branch ( Counted '|| rowCount ||' ).' );
6697
	END IF; 
6698
	/*-------------------------------------------------------*/
6699
 
6700
	-- Remove Branch --
6701
	DELETE 
6702
	  FROM BRANCHES br
6703
	 WHERE br.BRANCH_ID = nBranchId; 
6704
 
6705
 
6706
END	Remove_Branch;
6707
/*--------------------------------------------------------------------------------------------------*/
6708
PROCEDURE Update_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE,
6709
		  				  sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
6710
					   	  nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
6711
                          sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE ) IS
6712
 
6713
 
6714
BEGIN
6715
	/*--------------- Business Rules Here -------------------*/
6716
	/*-------------------------------------------------------*/
6717
 
6718
 
6719
	-- Update Branch --
6720
	UPDATE BRANCHES SET
6721
	BRANCH_NAME = sBranchName,
6722
	RM_VTREE_FK = nRMVTreeId,
6723
    BRANCH_COMMENTS = sBranchComments
6724
	WHERE BRANCH_ID = nBranchId;
6725
 
6726
	EXCEPTION
6727
    WHEN DUP_VAL_ON_INDEX
6728
	THEN		
6729
		RAISE_APPLICATION_ERROR (-20000, 'Branch Name "'|| sBranchName ||'" is Already Used.');
6730
 
6731
END	Update_Branch;
6732
/*--------------------------------------------------------------------------------------------------*/
6733
PROCEDURE ShowHide_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE ) IS
6734
 
6735
currIsHidden BRANCHES.IS_HIDDEN%TYPE;
6736
 
6737
BEGIN
6738
	/*--------------- Business Rules Here -------------------*/
6739
	/*-------------------------------------------------------*/
6740
 
6741
	-- Get current IsHidden State
6742
	SELECT br.IS_HIDDEN INTO currIsHidden
6743
	  FROM BRANCHES br
6744
	 WHERE br.BRANCH_ID = nBranchId;
6745
 
6746
 
6747
	-- Toggle IsHidden State --
6748
	IF currIsHidden = 'Y' THEN
6749
	   currIsHidden := NULL;
6750
	ELSE
6751
	   currIsHidden := 'Y';
6752
	END IF;
6753
 
6754
 
6755
	-- Update State --
6756
	UPDATE BRANCHES SET
6757
	IS_HIDDEN = currIsHidden
6758
	WHERE BRANCH_ID = nBranchId;
6759
 
6760
 
6761
END	ShowHide_Branch;
6762
/*--------------------------------------------------------------------------------------------------*/
6763
PROCEDURE ShowHide_Download ( nProjId DM_PROJECTS.PROJ_ID%TYPE ) IS
6764
 
6765
currIsDownload DM_PROJECTS.IS_DOWNLOAD%TYPE;
6766
 
6767
BEGIN
6768
	/*--------------- Business Rules Here -------------------*/
6769
	/*-------------------------------------------------------*/
6770
 
6771
	-- Get current IsHidden State
6772
	SELECT dmp.IS_DOWNLOAD INTO currIsDownload
6773
	  FROM DM_PROJECTS dmp
6774
	 WHERE dmp.PROJ_ID = nProjId;
6775
 
6776
 
6777
	-- Toggle IsHidden State --
6778
	IF currIsDownload = 'Y' THEN
6779
	   currIsDownload := NULL;
6780
	ELSE
6781
	   currIsDownload := 'Y';
6782
	END IF;
6783
 
6784
 
6785
	-- Update State --
6786
	UPDATE DM_PROJECTS dmp SET
6787
	IS_DOWNLOAD = currIsDownload
6788
	WHERE dmp.PROJ_ID = nProjId;
6789
 
6790
 
6791
END	ShowHide_Download;
6792
/*--------------------------------------------------------------------------------------------------*/
6793
PROCEDURE ShowHide_StateDownload ( nStateId STATES.STATE_ID%TYPE ) IS
6794
 
6795
currIsDownload DM_PROJECTS.IS_DOWNLOAD%TYPE;
6796
 
6797
BEGIN
6798
	/*--------------- Business Rules Here -------------------*/
6799
	/*-------------------------------------------------------*/
6800
 
6801
	-- Get current IsHidden State
6802
	SELECT st.IS_DOWNLOAD INTO currIsDownload
6803
	  FROM STATES st
6804
	 WHERE st.STATE_ID = nStateId;
6805
 
6806
 
6807
	-- Toggle IsHidden State --
6808
	IF currIsDownload = 'Y' THEN
6809
	   currIsDownload := NULL;
6810
	ELSE
6811
	   currIsDownload := 'Y';
6812
	END IF;
6813
 
6814
 
6815
	-- Update State --
6816
	UPDATE STATES st SET
6817
	IS_DOWNLOAD = currIsDownload
6818
	WHERE st.STATE_ID = nStateId;
6819
 
6820
 
6821
END	ShowHide_StateDownload;
6822
 
6823
END pk_Project;
6824
/
6825
 
6826
CREATE OR REPLACE PACKAGE BODY pk_Requirements
6827
IS
6828
/* ---------------------------------------------------------------------------
6829
    Version: 1.0.0
6830
   --------------------------------------------------------------------------- */
6831
 
6832
/*--------------------------------------------------------------------------------------------------*/
6833
PROCEDURE Add_Bom ( nFromBomId IN BOMS.BOM_ID%TYPE,
6834
					   nToBranchId IN BOMS.BRANCH_ID%TYPE ) IS
6835
 
6836
rowCount NUMBER;
6837
FromBranchId NUMBER;
6838
 
6839
BEGIN
6840
	/*--------------- Business Rules Here -------------------*/
6841
	/*-------------------------------------------------------*/
6842
 
6843
	-- Get FromBranchId
6844
	SELECT bo.BRANCH_ID INTO FromBranchId
6845
	  FROM BOMS bo
6846
	 WHERE bo.BOM_ID = nFromBomId;
6847
 
6848
 
6849
	IF FromBranchId = nToBranchId THEN
6850
		/* Only check for rules if same branch_id */
6851
 
6852
 
6853
		-- REQUIREMENT: Cannot Branch more then 2 BOMs from parent
6854
		SELECT COUNT(*) INTO rowCount
6855
		  FROM BOMS bo
6856
		 WHERE bo.PARENT_BOM_ID = nFromBomId
6857
		   AND bo.BRANCH_ID = nToBranchId
6858
		   AND bo.BOM_ID != bo.PARENT_BOM_ID;
6859
 
6860
		IF rowCount >= 2 THEN
6861
		   RAISE_APPLICATION_ERROR (-20000, 'This BOM is already branched.' );
6862
		END IF;  
6863
 
6864
	END IF;
6865
 
6866
 
6867
END	Add_Bom;
6868
/*--------------------------------------------------------------------------------------------------*/
6869
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 ) IS
6870
 
6871
rowCount NUMBER;
6872
nBomIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
6873
 
6874
BEGIN
6875
	/*--------------- Business Rules Here -------------------*/
6876
	/*-------------------------------------------------------*/
6877
	nBomIdCollector := IN_LIST_NUMBER( nBomId );
6878
 
6879
	-- REQUIREMENT: For now if can only deal with one bom at a time
6880
	IF nBomIdCollector.Count > 1 THEN
6881
		RAISE_APPLICATION_ERROR (-20000, 'Please select one BOM only.' );
6882
	END IF;
6883
 
6884
 
6885
	-- REQUIREMENT: BOM need to be Unlocked
6886
	SELECT Count(*) INTO rowCount
6887
	  FROM BOMS bo
6888
	 WHERE bo.IS_READONLY = 'Y'
6889
	   AND bo.BOM_ID IN ( 
6890
	  	  		  	      SELECT * 
6891
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
6892
					 	 );
6893
 
6894
	IF rowCount > 0 THEN
6895
	   RAISE_APPLICATION_ERROR (-20000, 'Cannot Destroy as selected BOM is locked.' );
6896
	END IF;
6897
 
6898
 
6899
	-- REQUIREMENT: Cannot be a parent to someone
6900
	SELECT Count(*) INTO rowCount
6901
	  FROM BOMS bo
6902
	 WHERE bo.BOM_ID != bo.PARENT_BOM_ID
6903
	   AND bo.PARENT_BOM_ID IN ( 
6904
			  	  		  	      SELECT * 
6905
								  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
6906
							 	);
6907
 
6908
	IF rowCount > 0 THEN
6909
	   RAISE_APPLICATION_ERROR (-20000, 'Cannot Destroy as some BOMs are created or branched from this BOM.' );
6910
	END IF;								
6911
 
6912
 
6913
	-- Check for Dependencies (Knowledge Base Notes)
6914
	SELECT Count(*) INTO rowCount
6915
	  FROM BOM_NOTES bn
6916
	 WHERE bn.BOM_ID IN ( 
6917
	  	  		  	      SELECT * 
6918
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
6919
					 	);
6920
 
6921
	IF rowCount > 0 THEN
6922
	   RAISE_APPLICATION_ERROR (-20000, 'Cannot Destroy as some knowledge base notes are attached to this BOM.' );
6923
	END IF;
6924
 
6925
 
6926
END	Destroy_Bom;
6927
/*--------------------------------------------------------------------------------------------------*/
6928
 
6929
 
6930
END pk_Requirements;
6931
/
6932
 
6933
CREATE OR REPLACE PACKAGE BODY PK_REPORT IS
6934
 
6935
/*
6936
------------------------------
6937
||  Last Modified:  S.Vukovic
6938
||  Modified Date:  8/Mar/2005
6939
||  Body Version:   1.0
6940
------------------------------
6941
*/
6942
 
6943
 
6944
/*-------------------------------------------------------------------------------------------------------*/
6945
FUNCTION BOM_PRODUCTS_BY_NODE_BY_OS ( BomId NUMBER ) RETURN typeCur IS
6946
 
6947
	records typeCur;
6948
 
6949
BEGIN
6950
 
6951
 
6952
	OPEN records FOR
6953
	SELECT nn.NODE_ID,
6954
		   nt.NODE_ICON,
6955
		   nn.NODE_NAME,
6956
		   bt.BOS_ICON,
6957
		   obe.BASE_ENV_ID,
6958
		   os.OS_ID,
6959
		   os.OS_NAME,
6960
		   osc.SEQ_NUM,
6961
		   osc.PROD_ID,
6962
		   pkg.PKG_NAME,
6963
		   pv.PKG_VERSION
6964
	  FROM BOM_CONTENTS bc,
6965
	  	   OPERATING_SYSTEMS os,
6966
		   OS_CONTENTS osc,
6967
		   OS_BASE_ENV obe,
6968
		   BASE_ENV be,
6969
		   BOS_TYPES bt,
6970
		   NETWORK_NODES nn,
6971
		   NODE_TYPES nt,
6972
		   PACKAGE_VERSIONS pv,
6973
		   PACKAGES pkg
6974
	 WHERE os.NODE_ID (+) = nn.NODE_ID 
6975
	   AND nn.NODE_ID = bc.NODE_ID 
6976
	   AND nn.NODE_TYPE_ID = nt.NODE_TYPE_ID (+)
6977
	   AND bc.BOM_ID = BomId
6978
	   AND pv.PKG_ID = pkg.PKG_ID (+)
6979
	   AND osc.OS_ID (+) = os.OS_ID 
6980
	   AND osc.PROD_ID = pv.PV_ID (+)
6981
	   AND obe.OS_ID (+) = os.OS_ID
6982
	   AND obe.BASE_ENV_ID = be.BASE_ENV_ID (+)
6983
	   AND be.BOS_ID = bt.BOS_ID (+)
6984
	ORDER BY UPPER(nn.NODE_NAME), UPPER(os.OS_NAME), osc.SEQ_NUM;
6985
 
6986
 
6987
	RETURN records;	   
6988
 
6989
END;
6990
/*-------------------------------------------------------------------------------------------------------*/
6991
END PK_REPORT;
6992
/
6993
 
6994
CREATE OR REPLACE PACKAGE BODY pk_Base_Env_test
6995
IS
6996
/* ---------------------------------------------------------------------------
6997
    Version: 1.0.0
6998
   --------------------------------------------------------------------------- */
6999
 
7000
 
7001
/*--------------------------------------------------------------------------------------------------*/
7002
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
7003
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
7004
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
7005
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE ) IS
7006
 
7007
nBaseEnvId BASE_ENV.BASE_ENV_ID%TYPE;						 
7008
 
7009
BEGIN
7010
	/*--------------- Business Rules Here -------------------*/
7011
	/*-------------------------------------------------------*/
7012
 
7013
	-- Get base_env_id
7014
	SELECT SEQ_BASE_ENV_ID.NEXTVAL INTO nBaseEnvId FROM DUAL;
7015
 
7016
	-- Insert new base env name
7017
	INSERT INTO BASE_ENV ( BASE_ENV_ID, BOS_ID, BASE_ENV_NAME, BOM_ID )
7018
	VALUES ( nBaseEnvId, nBosId, sBaseEnvName, nBomId );
7019
 
7020
 
7021
	EXCEPTION
7022
    WHEN DUP_VAL_ON_INDEX
7023
	THEN		
7024
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
7025
 
7026
END	Add_Base_Env;
7027
/*--------------------------------------------------------------------------------------------------*/
7028
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
7029
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
7030
						 	nBosId IN BASE_ENV.BOS_ID%TYPE ) IS
7031
 
7032
BEGIN
7033
	/*--------------- Business Rules Here -------------------*/
7034
	IF (nBaseEnvId IS NULL) 
7035
	THEN
7036
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
7037
 
7038
	END IF;
7039
	/*-------------------------------------------------------*/
7040
 
7041
	-- Update Base Env
7042
	UPDATE BASE_ENV SET
7043
		BASE_ENV_NAME = sBaseEnvName,
7044
		BOS_ID = nBosId
7045
	WHERE BASE_ENV_ID = nBaseEnvId;
7046
 
7047
 
7048
	EXCEPTION
7049
    WHEN DUP_VAL_ON_INDEX
7050
	THEN		
7051
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
7052
 
7053
END	Update_Base_Env;
7054
/*--------------------------------------------------------------------------------------------------*/
7055
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
7056
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE IS
7057
 
7058
ReturnValue BASE_ENV.BASE_ENV_ID%TYPE;	
7059
 
7060
CURSOR curBaseEnv IS
7061
	SELECT be.BASE_ENV_ID
7062
	  FROM BASE_ENV be
7063
	 WHERE be.BASE_ENV_NAME = sBaseEnvName
7064
	   AND be.BOM_ID = nBomId;
7065
recBaseEnv curBaseEnv%ROWTYPE;
7066
 
7067
BEGIN
7068
	/*--------------- Business Rules Here -------------------*/
7069
	/*-------------------------------------------------------*/
7070
 
7071
	-- Get bom_name_id
7072
	OPEN curBaseEnv;
7073
	FETCH curBaseEnv INTO recBaseEnv;
7074
 
7075
	IF curBaseEnv%FOUND THEN
7076
		ReturnValue := recBaseEnv.BASE_ENV_ID;
7077
	ELSE
7078
		ReturnValue := NULL;
7079
	END IF;
7080
 
7081
	CLOSE curBaseEnv;
7082
 
7083
	RETURN ReturnValue;
7084
END	Get_Base_Env_Id;
7085
/*--------------------------------------------------------------------------------------------------*/
7086
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE ) IS
7087
 
7088
 
7089
BEGIN
7090
	/*--------------- Business Rules Here -------------------*/
7091
	IF (nBaseEnvId IS NULL) 
7092
	THEN
7093
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
7094
 
7095
	END IF;
7096
	/*-------------------------------------------------------*/
7097
 
7098
	-- Destroy Base Env Contents
7099
	DELETE
7100
      FROM BASE_ENV_CONTENTS
7101
     WHERE BASE_ENV_ID = nBaseEnvId;
7102
 
7103
	-- Remove Base Env From BOM
7104
	DELETE 
7105
	  FROM OS_BASE_ENV obe
7106
	 WHERE obe.BASE_ENV_ID = nBaseEnvId;
7107
 
7108
	-- Destroy Base Env
7109
	DELETE 
7110
	  FROM BASE_ENV be
7111
	 WHERE be.BASE_ENV_ID = nBaseEnvId;				 
7112
 
7113
END	Destroy_Base_Env;
7114
/*--------------------------------------------------------------------------------------------------*/
7115
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
7116
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
7117
						nUserId IN NUMBER ) IS
7118
 
7119
NextSeqNum NUMBER;
7120
 
7121
CURSOR prod_cur IS
7122
	SELECT pv.pv_id AS PROD_ID,
7123
		   pv.PV_DESCRIPTION
7124
	  FROM PACKAGE_VERSIONS pv
7125
	 WHERE pv.pv_id IN (
7126
	 	   			   	SELECT * 
7127
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
7128
						);
7129
prod_rec prod_cur%ROWTYPE;
7130
 
7131
 
7132
BEGIN
7133
	/*--------------- Business Rules Here -------------------*/
7134
	/*-------------------------------------------------------*/
7135
 
7136
	-- Get seq_num
7137
	SELECT MAX( bec.SEQ_NUM ) INTO NextSeqNum
7138
	  FROM BASE_ENV_CONTENTS bec
7139
	 WHERE bec.BASE_ENV_ID = nBaseEnvId;
7140
 
7141
	-- Set NextSeqNum to 0 if no existing products are found
7142
	IF NextSeqNum IS NULL THEN
7143
	   NextSeqNum := 1;
7144
	ELSE
7145
	   NextSeqNum := NextSeqNum + 1;
7146
	END IF;
7147
 
7148
 
7149
	-- Insert into OS Contents
7150
	OPEN prod_cur;
7151
	FETCH prod_cur INTO prod_rec;
7152
 
7153
	WHILE prod_cur%FOUND
7154
	LOOP
7155
 
7156
		INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, SEQ_NUM, PROD_ID, BASE_ENV_COMMENTS )
7157
		VALUES (
7158
				nBaseEnvId, 
7159
				NextSeqNum, 
7160
				prod_rec.PROD_ID,
7161
				prod_rec.PV_DESCRIPTION
7162
				);
7163
 
7164
		-- Log Action --
7165
		pk_Utils.Log_Action ( nUserId, 
7166
							  1, 
7167
							  'pk_Base_Env.Add_Product with BASE_ENV_ID='|| nBaseEnvId ||', SEQ_NUM='|| NextSeqNum ||', PROD_ID='|| prod_rec.PROD_ID,
7168
							  NULL, NULL );
7169
 
7170
 
7171
		NextSeqNum := NextSeqNum + 1;
7172
		FETCH prod_cur INTO prod_rec;
7173
	END LOOP;
7174
 
7175
 
7176
	CLOSE prod_cur;
7177
 
7178
 
7179
END	Add_Product; 
7180
/*--------------------------------------------------------------------------------------------------*/
7181
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
7182
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7183
							nUserId IN NUMBER ) IS
7184
 
7185
NextSeqNum NUMBER := 1;
7186
 
7187
CURSOR prod_cur IS
7188
	SELECT bec.PROD_ID, bec.SEQ_NUM
7189
	  FROM BASE_ENV_CONTENTS bec
7190
	 WHERE bec.BASE_ENV_ID = nBaseEnvId
7191
	 ORDER BY bec.SEQ_NUM;
7192
prod_rec prod_cur%ROWTYPE;	  
7193
 
7194
BEGIN
7195
	/*--------------- Business Rules Here -------------------*/
7196
	IF sProdIdList IS NULL
7197
	THEN
7198
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
7199
 
7200
	END IF;
7201
	/*-------------------------------------------------------*/
7202
 
7203
	-- Remove Products
7204
	DELETE 
7205
	FROM BASE_ENV_CONTENTS
7206
	WHERE BASE_ENV_ID = nBaseEnvId
7207
	  AND PROD_ID IN ( 
7208
	  	  		  	    SELECT * 
7209
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
7210
					 );
7211
 
7212
 
7213
	-- Update Seq Numbers
7214
	OPEN prod_cur;
7215
	FETCH prod_cur INTO prod_rec;
7216
 
7217
	WHILE prod_cur%FOUND
7218
	LOOP
7219
 
7220
		UPDATE BASE_ENV_CONTENTS SET
7221
		SEQ_NUM = NextSeqNum
7222
		WHERE BASE_ENV_ID = nBaseEnvId
7223
		  AND PROD_ID = prod_rec.PROD_ID;
7224
 
7225
		NextSeqNum := NextSeqNum + 1;
7226
		FETCH prod_cur INTO prod_rec;
7227
	END LOOP;
7228
 
7229
	CLOSE prod_cur;
7230
 
7231
 
7232
 
7233
END Remove_Products; 
7234
/*--------------------------------------------------------------------------------------------------*/
7235
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
7236
		  				   	 sProdVersion IN VARCHAR2,
7237
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7238
							 nUserId IN NUMBER,
7239
							 sComments IN VARCHAR2 ) IS
7240
 
7241
ProdId PACKAGE_VERSIONS.PV_ID%TYPE;
7242
ProdName PACKAGES.PKG_NAME%TYPE;
7243
 
7244
CURSOR prod_cur IS
7245
	SELECT bec.PROD_ID
7246
	  FROM BASE_ENV_CONTENTS bec
7247
	 WHERE bec.PROD_ID = ProdId
7248
	   AND bec.BASE_ENV_ID = nBaseEnvId;
7249
prod_rec prod_cur%ROWTYPE;
7250
 
7251
BEGIN
7252
	/*--------------- Business Rules Here -------------------*/                             
7253
	IF (NOT nPkgId IS NULL) AND (sProdVersion IS NULL) AND (NOT nBaseEnvId IS NULL) AND (NOT nUserId IS NULL) THEN
7254
	   RAISE_APPLICATION_ERROR (-20000, 'Please provide Product Version.('|| sProdVersion ||')' );
7255
 
7256
	ELSIF (nPkgId IS NULL) OR (sProdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nUserId IS NULL) THEN
7257
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nPkgId= '|| nPkgId ||', sProdVersion='|| sProdVersion ||', nBaseEnvId='|| nBaseEnvId ||', nUserId='|| nUserId );
7258
 
7259
	END IF;
7260
	/*-------------------------------------------------------*/
7261
 
7262
	-- Get Product Name --
7263
	SELECT PKG_NAME INTO ProdName FROM PACKAGES WHERE PKG_ID = nPkgId;
7264
 
7265
 
7266
	-- Create Product Version in Release Manager if Required, and Get Prod_id --
7267
	Seed_Package_Names_Versions ( ProdName, sProdVersion, nUserId, ProdId );
7268
 
7269
 
7270
	-- Add Product To Base Env --
7271
	OPEN prod_cur;
7272
	FETCH prod_cur INTO prod_rec;
7273
 
7274
	IF prod_cur%NOTFOUND THEN
7275
	   pk_Base_Env.Add_Product ( ProdId, nBaseEnvId, nUserId );
7276
 
7277
	   -- Update Comments
7278
	   IF (NOT sComments IS NULL) THEN
7279
	   		UPDATE BASE_ENV_CONTENTS bec SET
7280
				bec.BASE_ENV_COMMENTS = sComments
7281
			 WHERE bec.BASE_ENV_ID = nBaseEnvId
7282
			   AND bec.PROD_ID = ProdId;
7283
 
7284
	   END IF;
7285
	END IF;
7286
 
7287
	CLOSE prod_cur;
7288
 
7289
 
7290
END	Add_Product_Wrap;    
7291
/*--------------------------------------------------------------------------------------------------*/
7292
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
7293
						   sNewProdIdVersion IN VARCHAR2,
7294
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7295
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
7296
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
7297
						   sElectronicName IN PACKAGES.ELECTRONIC_NAME%TYPE ) IS
7298
 
7299
nNewProdId BASE_ENV_CONTENTS.PROD_ID%TYPE;						  
7300
 
7301
CURSOR curProd IS
7302
 	SELECT pv.PV_ID
7303
	  FROM PACKAGE_VERSIONS pv
7304
	 WHERE pv.pkg_id IN ( SELECT pv.pkg_id FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nOldProdId )
7305
	   AND pv.PKG_VERSION = sNewProdIdVersion;
7306
recProd curProd%ROWTYPE;						   
7307
 
7308
BEGIN
7309
	/*--------------- Business Rules Here -------------------*/
7310
	IF (nOldProdId IS NULL) OR (sNewProdIdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nSeqNum IS NULL)
7311
	THEN
7312
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOldProdId= '|| nOldProdId  ||', sNewProdIdVersion= '|| sNewProdIdVersion ||', nBaseEnvId= '|| nBaseEnvId ||', nSeqNum= '|| nSeqNum);
7313
	END IF;
7314
	/*-------------------------------------------------------*/
7315
 
7316
	-- Get new prod_id
7317
	OPEN curProd;
7318
	FETCH curProd INTO recProd;
7319
 
7320
	IF curProd%FOUND THEN
7321
		nNewProdId := recProd.PV_ID;
7322
	ELSE
7323
		RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');
7324
	END IF;
7325
 
7326
	CLOSE curProd;
7327
 
7328
 
7329
	-- Update Product Details
7330
	UPDATE BASE_ENV_CONTENTS SET
7331
		PROD_ID = nNewProdId,
7332
		BASE_ENV_COMMENTS = sComments
7333
	 WHERE BASE_ENV_ID = nBaseEnvId
7334
	   AND PROD_ID = nOldProdId;
7335
 
7336
 
7337
	UPDATE PACKAGES SET
7338
		ELECTRONIC_NAME = sElectronicName
7339
	WHERE  PKG_ID = 
7340
	(
7341
	 SELECT PKG_ID
7342
	 FROM PACKAGE_VERSIONS 
7343
	 WHERE PACKAGE_VERSIONS.PV_ID = nNewProdId
7344
	);   
7345
 
7346
 
7347
 
7348
	-- Update seq_num
7349
	Shift_Product_SeqNum ( nNewProdId, nBaseEnvId, nSeqNum );
7350
 
7351
END	Update_Product; 
7352
/*--------------------------------------------------------------------------------------------------*/
7353
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
7354
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7355
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE ) IS
7356
 
7357
currSeqNum NUMBER;
7358
FromSeqNum NUMBER;
7359
 
7360
BEGIN
7361
	 -- Get Current seq_num
7362
	 SELECT bec.SEQ_NUM INTO currSeqNum
7363
	   FROM BASE_ENV_CONTENTS bec
7364
	  WHERE bec.BASE_ENV_ID = nBaseEnvId
7365
	    AND bec.PROD_ID = nProdId;
7366
 
7367
 
7368
	 IF currSeqNum > nToSeqNum
7369
	 THEN
7370
 
7371
		FromSeqNum := nToSeqNum;
7372
 
7373
			-- Shift others Up
7374
		UPDATE BASE_ENV_CONTENTS bec SET
7375
			   bec.SEQ_NUM = bec.SEQ_NUM + 1
7376
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
7377
		   AND bec.PROD_ID != nProdId
7378
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  currSeqNum - 1;
7379
 
7380
 
7381
	 ELSIF currSeqNum < nToSeqNum
7382
	 THEN
7383
 
7384
		FromSeqNum := currSeqNum + 1;  
7385
 
7386
		 -- Shift others Down
7387
		UPDATE BASE_ENV_CONTENTS bec SET
7388
		   	   bec.SEQ_NUM = bec.SEQ_NUM - 1
7389
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
7390
		   AND bec.PROD_ID != nProdId
7391
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  nToSeqNum;
7392
 
7393
	 END IF;
7394
 
7395
 
7396
	 -- Move Product to new seq_num
7397
	 UPDATE BASE_ENV_CONTENTS bec SET
7398
		    bec.SEQ_NUM = nToSeqNum
7399
	  WHERE bec.BASE_ENV_ID = nBaseEnvId 
7400
	    AND bec.PROD_ID = nProdId;
7401
 
7402
 
7403
 
7404
END Shift_Product_SeqNum;
7405
/*--------------------------------------------------------------------------------------------------*/
7406
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
7407
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7408
						  nUserId IN NUMBER ) IS
7409
 
7410
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
7411
	SeqNum NUMBER;
7412
 
7413
 
7414
BEGIN
7415
	/*--------------- Business Rules Here -------------------*/
7416
	-- Check for parameters
7417
	IF (sProdIdOrder IS NULL)  OR (nBaseEnvId IS NULL) 
7418
	THEN
7419
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId='|| nBaseEnvId  ||' sProdIdOrder='|| sProdIdOrder  );
7420
	END IF;
7421
	/*-------------------------------------------------------*/
7422
 
7423
	nIdCollector := IN_LIST_NUMBER ( sProdIdOrder );
7424
 
7425
	-- Set start sequence number
7426
	SeqNum := 1;
7427
 
7428
	FOR i IN 1..nIdCollector.COUNT
7429
	LOOP
7430
 
7431
		-- Update new sequence number
7432
		UPDATE BASE_ENV_CONTENTS osc SET
7433
			osc.SEQ_NUM = SeqNum
7434
		 WHERE osc.BASE_ENV_ID = nBaseEnvId
7435
		   AND osc.PROD_ID = nIdCollector(i);
7436
 
7437
		SeqNum := SeqNum + 1;
7438
 
7439
	END LOOP;
7440
 
7441
 
7442
END	Sort_Products;
7443
/*--------------------------------------------------------------------------------------------------*/
7444
 
7445
 
7446
END pk_Base_Env_test;
7447
/
7448
 
7449
CREATE OR REPLACE PACKAGE BODY pk_Bom_Test
7450
IS
7451
/* ---------------------------------------------------------------------------
7452
    Version: 2.0
7453
   --------------------------------------------------------------------------- */
7454
 
7455
/*--------------------------------------------------------------------------------------------------*/
7456
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
7457
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
7458
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
7459
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
7460
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
7461
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
7462
					nUserId IN BOM_STATE.USER_ID%TYPE ) IS
7463
 
7464
BomId BOMS.BOM_ID%TYPE;
7465
ParentBomId BOMS.PARENT_BOM_ID%TYPE;
7466
BomNameId BOM_NAMES.BOM_NAME_ID%TYPE;
7467
BomVersion BOMS.BOM_VERSION%TYPE;
7468
BomLifeCycle BOMS.BOM_LIFECYCLE%TYPE;
7469
ProjId BRANCHES.PROJ_ID%TYPE;
7470
 
7471
CURSOR curBom IS 
7472
		SELECT bo.BOM_ID
7473
		  FROM BOMS bo,
7474
		  	   BRANCHES br
7475
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
7476
		   AND br.PROJ_ID = ProjId
7477
		   AND bo.BOM_NAME_ID = BomNameId
7478
		   AND bo.BOM_VERSION = BomVersion
7479
		   AND bo.BOM_LIFECYCLE = BomLifeCycle;
7480
recBom curBom%ROWTYPE;
7481
 
7482
DUPLICATE_BOM EXCEPTION;
7483
 
7484
BEGIN
7485
	/*--------------- Business Rules Here -------------------*/
7486
	IF (nToBranchId IS NULL) OR (nUserId IS NULL)
7487
	THEN
7488
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nToBranchId= '|| nToBranchId ||', nUserId='|| nUserId );
7489
 
7490
	END IF;
7491
	/*-------------------------------------------------------*/
7492
 
7493
	-- Get bom_id
7494
	SELECT SEQ_BOM_ID.NEXTVAL INTO BomId FROM DUAL;
7495
 
7496
 
7497
	-- Get bom_name_id
7498
	IF nFromBomId IS NULL THEN
7499
		BomNameId := New_Bom_Name ( sBomName );
7500
        ParentBomId := BomId;
7501
	ELSE
7502
		BomNameId := New_Bom_Name ( nFromBomId );
7503
        ParentBomId := nFromBomId;
7504
	END IF;		
7505
 
7506
 
7507
 
7508
 
7509
	-- Get Bom Version and Lifecycle
7510
	--Get_Next_Version ( nFromBomId, nToBranchId, BomVersion, BomLifeCycle, ParentBomId, BomNameId );
7511
 
7512
 
7513
 
7514
	-- Get proj_id
7515
	SELECT br.PROJ_ID INTO ProjId
7516
	  FROM BRANCHES br
7517
	 WHERE br.BRANCH_ID = nToBranchId;
7518
 
7519
 
7520
 
7521
	-- Check for duplicate BOMs
7522
	OPEN curBom;
7523
    FETCH curBom INTO recBom;
7524
 
7525
    IF curBom%FOUND
7526
    THEN
7527
		RAISE DUPLICATE_BOM;
7528
	END IF;
7529
 
7530
	CLOSE curBom;
7531
 
7532
 
7533
 
7534
	-- Add Blank Bom --
7535
	INSERT INTO BOMS ( BOM_ID, BRANCH_ID, BOM_NAME_ID, BOM_COMMENTS, BOM_VERSION, BOM_LIFECYCLE, IS_READONLY, IS_HIDDEN, PARENT_BOM_ID )
7536
	VALUES ( BomId, nToBranchId, BomNameId, sBomComments, sBomVersion, sBomLifeCycle, 'N', 'N', ParentBomId  );
7537
 
7538
 
7539
 
7540
 
7541
	/* Log BOM_TRAIL */
7542
	pk_Bom.Log_Bom_Trail ( BomId, 'CREATED: Version '|| sBomVersion ||'.'|| sBomLifeCycle , nUserId );
7543
 
7544
 
7545
 
7546
	IF nFromBomId IS NOT NULL THEN
7547
		/* Add Bom Clonned from ... */
7548
		pk_Utils.Clone_BOM ( nFromBomId, BomId, nUserId );
7549
 
7550
	END IF;
7551
 
7552
 
7553
 
7554
	--- Set Bom State ---
7555
	Release_To ( BomId, nUserId );
7556
 
7557
 
7558
	EXCEPTION
7559
    WHEN DUPLICATE_BOM
7560
	THEN		
7561
		RAISE_APPLICATION_ERROR (-20000, 'BOM "'|| sBomName ||' '|| BomVersion ||'.'|| BomLifeCycle ||'" is Already Used in this Project.');
7562
 
7563
END	Add_Bom;
7564
/*--------------------------------------------------------------------------------------------------*/
7565
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
7566
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
7567
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
7568
					   nUserId IN NUMBER )  IS
7569
 
7570
ReleaseName VARCHAR2(100);					   
7571
 
7572
BEGIN
7573
	/*--------------- Business Rules Here -------------------*/
7574
	/*-------------------------------------------------------*/
7575
 
7576
	--- Update Bom Properties ---
7577
	UPDATE BOMS bo SET
7578
		bo.RTAG_ID_FK = nRtagId,
7579
		bo.BOM_COMMENTS = sBomComment
7580
	WHERE bo.BOM_ID = nBomId;
7581
 
7582
	SELECT RTAG_NAME INTO ReleaseName
7583
	FROM RELEASE_TAGS 
7584
	WHERE RTAG_ID = nRtagId;
7585
 
7586
 
7587
	/* Log BOM_TRAIL */
7588
	pk_Bom.Log_Bom_Trail ( nBomId, 'Updated BOM properties: Set Release Manager Reference ='||ReleaseName||' and comments ='||sBomComment, nUserId );
7589
 
7590
 
7591
END	Update_Bom;
7592
/*--------------------------------------------------------------------------------------------------*/
7593
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE IS
7594
 
7595
ReturnValue 	 BOM_NAMES.BOM_NAME_ID%TYPE;	
7596
 
7597
CURSOR curBomNames IS
7598
	SELECT bn.BOM_NAME_ID
7599
	  FROM BOM_NAMES bn
7600
	 WHERE bn.BOM_NAME = sBomName;
7601
recBomNames curBomNames%ROWTYPE;
7602
 
7603
BEGIN
7604
	/*--------------- Business Rules Here -------------------*/
7605
	/*-------------------------------------------------------*/
7606
 
7607
	-- Check for existance of this name
7608
	OPEN curBomNames;
7609
	FETCH curBomNames INTO recBomNames;
7610
 
7611
	ReturnValue := NULL;
7612
	IF curBomNames%FOUND THEN
7613
		ReturnValue := recBomNames.BOM_NAME_ID;
7614
	END IF;
7615
 
7616
	CLOSE curBomNames;
7617
 
7618
 
7619
	-- Finnaly Create Name if required --    
7620
	IF ReturnValue IS NULL THEN
7621
		-- Get bom_name_id
7622
		SELECT SEQ_BOM_NAME_ID.NEXTVAL INTO ReturnValue FROM DUAL;
7623
 
7624
		INSERT INTO BOM_NAMES ( BOM_NAME_ID, BOM_NAME )
7625
		VALUES ( ReturnValue, sBomName );
7626
 
7627
	END IF;	
7628
 
7629
 
7630
	RETURN ReturnValue;
7631
END	New_Bom_Name;
7632
/*--------------------------------------------------------------------------------------------------*/
7633
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE IS
7634
 
7635
ReturnValue 	 BOMS.BOM_NAME_ID%TYPE;	
7636
 
7637
BEGIN
7638
	/*--------------- Business Rules Here -------------------*/
7639
	/*-------------------------------------------------------*/
7640
 
7641
	-- Get bom_name_id
7642
	SELECT bo.BOM_NAME_ID INTO ReturnValue
7643
	  FROM BOMS bo
7644
	 WHERE bo.BOM_ID = nFromBomId;
7645
 
7646
 
7647
	RETURN ReturnValue;
7648
END	New_Bom_Name;
7649
/*--------------------------------------------------------------------------------------------------*/
7650
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
7651
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
7652
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
7653
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
7654
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  ) IS
7655
 
7656
StateName STATES.STATE_NAME%TYPE;						  
7657
IsOfficial BOMS.IS_READONLY%TYPE;	
7658
IsRejected VARCHAR2(50);					  
7659
 
7660
BEGIN
7661
	/*--------------- Business Rules Here -------------------*/
7662
	-- Check if Bom is official
7663
	SELECT bo.IS_READONLY INTO IsOfficial
7664
	  FROM BOMS bo
7665
	 WHERE bo.BOM_ID = nBomId;
7666
 
7667
	IF IsOfficial != 'Y' THEN
7668
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first.' );
7669
	END IF;
7670
	/*-------------------------------------------------------*/
7671
 
7672
	-- Get State Name
7673
	SELECT st.STATE_NAME INTO StateName
7674
	  FROM STATES st
7675
	 WHERE st.STATE_ID = nStateId;
7676
 
7677
 
7678
	-- AcceptReject BOM
7679
	UPDATE BOMS bo SET
7680
		bo.IS_REJECTED = cIsRejected
7681
	WHERE bo.BOM_ID = nBomId;
7682
 
7683
 
7684
	-- Auto-Hide Bom
7685
	IF cIsRejected = 'Y' THEN
7686
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_REJECT_BOM') );
7687
	ELSE
7688
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_ACCEPT_BOM') );
7689
	END IF;
7690
 
7691
 
7692
	-- Log Rejection Trail 
7693
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, cIsRejected, nUserId, sComments );
7694
 
7695
 
7696
	/* Log BOM_TRAIL */
7697
	-- Get Log Title
7698
	IsRejected := 'ACCEPTED';
7699
	IF cIsRejected = 'Y' THEN
7700
		IsRejected := 'REJECTED';
7701
	END IF;
7702
 
7703
	-- Finnaly log it
7704
	Log_Bom_Trail ( nBomId, IsRejected ||': By '|| StateName, nUserId, sComments );
7705
 
7706
END	Accept_Reject;
7707
/*--------------------------------------------------------------------------------------------------*/
7708
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
7709
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
7710
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
7711
							 nUserId IN NUMBER )  IS
7712
 
7713
BEGIN
7714
	/*--------------- Business Rules Here -------------------*/
7715
	/*-------------------------------------------------------*/
7716
 
7717
	--- Set Bom Official or Not ---
7718
	UPDATE BOMS bo SET
7719
	bo.IS_READONLY = cIsOfficial
7720
	WHERE bo.BOM_ID = nBomId;
7721
 
7722
 
7723
	-- Auto-Hide Bom
7724
	IF cIsOfficial = 'Y' THEN
7725
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_LOCK_BOM') );
7726
 
7727
		-- Update node version
7728
		Update_Nodes_Version ( nBomId, nUserId );
7729
 
7730
	ELSE
7731
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_UNLOCK_BOM') );
7732
	END IF;
7733
 
7734
 
7735
 
7736
	/* Log BOM_TRAIL */
7737
	pk_Bom.Log_Bom_Trail ( nBomId, 'LOCKED: '|| cIsOfficial, nUserId );
7738
 
7739
 
7740
END	Set_Bom_Official;
7741
/*--------------------------------------------------------------------------------------------------*/
7742
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
7743
							 	 nUserId IN NUMBER )  IS
7744
 
7745
	CompareBomId NUMBER;
7746
	ProjId NUMBER;
7747
	BomVersion VARCHAR2(4000);
7748
 
7749
	CURSOR curUpdateNode IS
7750
		SELECT DISTINCT
7751
			   nlook.NODE_ID,
7752
			   DECODE ( nlc.LAST_LIFE_CYCLE,
7753
			   			NULL, 0,
7754
						nlc.LAST_LIFE_CYCLE + 1 ) AS NEW_LIFE_CYCLE	   
7755
		  FROM (
7756
 
7757
		  		/* ADDED PATCHES ONLY */
7758
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
7759
				  FROM (
7760
				  		SELECT osc.PROD_ID,
7761
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7762
						  FROM OS_CONTENTS osc,
7763
						  	   OPERATING_SYSTEMS os,
7764
							   NETWORK_NODES nn,
7765
							   BOM_CONTENTS bc,
7766
							   PACKAGE_VERSIONS pv
7767
						 WHERE osc.OS_ID = os.OS_ID
7768
						   AND os.NODE_ID = nn.NODE_ID
7769
						   AND bc.NODE_ID = nn.NODE_ID
7770
						   AND osc.PROD_ID = pv.PV_ID
7771
						   AND NOT pv.IS_PATCH IS NULL
7772
						   AND bc.BOM_ID = nBomId	
7773
				  	   ) newbom,
7774
					   (
7775
					   	SELECT osc.PROD_ID,
7776
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7777
						  FROM OS_CONTENTS osc,
7778
						  	   OPERATING_SYSTEMS os,
7779
							   NETWORK_NODES nn,
7780
							   BOM_CONTENTS bc,
7781
							   PACKAGE_VERSIONS pv
7782
						 WHERE osc.OS_ID = os.OS_ID
7783
						   AND os.NODE_ID = nn.NODE_ID
7784
						   AND bc.NODE_ID = nn.NODE_ID
7785
						   AND osc.PROD_ID = pv.PV_ID
7786
						   AND NOT pv.IS_PATCH IS NULL
7787
						   AND bc.BOM_ID = CompareBomId	
7788
					   ) oldbom
7789
				 WHERE newbom.PK = oldbom.PK (+) 
7790
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
7791
				   AND oldbom.PK IS NULL
7792
				UNION 
7793
		  		/* ADDED PATCHES ONLY TO BASE CONFIGURATION */
7794
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
7795
				  FROM (
7796
				  		SELECT bec.PROD_ID,
7797
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7798
						  FROM BASE_ENV_CONTENTS bec,
7799
						  	   OS_BASE_ENV obe,
7800
						  	   OPERATING_SYSTEMS os,
7801
							   NETWORK_NODES nn,
7802
							   BOM_CONTENTS bc,
7803
							   PACKAGE_VERSIONS pv
7804
						 WHERE obe.OS_ID = os.OS_ID
7805
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
7806
						   AND os.NODE_ID = nn.NODE_ID
7807
						   AND bc.NODE_ID = nn.NODE_ID
7808
						   AND bec.PROD_ID = pv.PV_ID
7809
						   AND NOT pv.IS_PATCH IS NULL
7810
						   AND bc.BOM_ID = nBomId	
7811
				  	   ) newbom,
7812
					   (
7813
					   	SELECT bec.PROD_ID,
7814
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7815
						  FROM BASE_ENV_CONTENTS bec,
7816
						  	   OS_BASE_ENV obe,
7817
						  	   OPERATING_SYSTEMS os,
7818
							   NETWORK_NODES nn,
7819
							   BOM_CONTENTS bc,
7820
							   PACKAGE_VERSIONS pv
7821
						 WHERE obe.OS_ID = os.OS_ID
7822
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
7823
						   AND os.NODE_ID = nn.NODE_ID
7824
						   AND bc.NODE_ID = nn.NODE_ID
7825
						   AND bec.PROD_ID = pv.PV_ID
7826
						   AND NOT pv.IS_PATCH IS NULL
7827
						   AND bc.BOM_ID = CompareBomId	
7828
					   ) oldbom
7829
				 WHERE newbom.PK = oldbom.PK (+) 
7830
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
7831
				   AND oldbom.PK IS NULL
7832
				UNION				
7833
 
7834
				/* ADDED PRODUCTS ONLY */
7835
				SELECT DECODE( oldbom.PROD_ID,
7836
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
7837
					   newbom.PROD_ID, newbom.PK
7838
				  FROM (
7839
				  		SELECT osc.PROD_ID,
7840
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7841
							   pv.PKG_ID,
7842
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7843
						  FROM OS_CONTENTS osc,
7844
						  	   OPERATING_SYSTEMS os,
7845
							   NETWORK_NODES nn,
7846
							   BOM_CONTENTS bc,
7847
							   PACKAGE_VERSIONS pv
7848
						 WHERE osc.OS_ID = os.OS_ID
7849
						   AND os.NODE_ID = nn.NODE_ID
7850
						   AND bc.NODE_ID = nn.NODE_ID
7851
						   AND osc.PROD_ID = pv.PV_ID
7852
						   AND pv.IS_PATCH IS NULL
7853
						   AND bc.BOM_ID = nBomId	
7854
				  	   ) newbom,
7855
					   (
7856
					   	SELECT osc.PROD_ID,
7857
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7858
							   pv.PKG_ID,
7859
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7860
						  FROM OS_CONTENTS osc,
7861
						  	   OPERATING_SYSTEMS os,
7862
							   NETWORK_NODES nn,
7863
							   BOM_CONTENTS bc,
7864
							   PACKAGE_VERSIONS pv
7865
						 WHERE osc.OS_ID = os.OS_ID
7866
						   AND os.NODE_ID = nn.NODE_ID
7867
						   AND bc.NODE_ID = nn.NODE_ID
7868
						   AND osc.PROD_ID = pv.PV_ID
7869
						   AND pv.IS_PATCH IS NULL
7870
						   AND bc.BOM_ID = CompareBomId	
7871
					   ) oldbom
7872
				 WHERE newbom.PK = oldbom.PK (+) 
7873
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
7874
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
7875
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
7876
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	   
7877
				UNION
7878
 
7879
				/* ADDED PRODUCTS ONLY TO BASE CONFIGURATION */
7880
				SELECT DECODE( oldbom.PROD_ID,
7881
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
7882
					   newbom.PROD_ID, newbom.PK
7883
				  FROM (
7884
				  		SELECT bec.PROD_ID,
7885
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7886
							   pv.PKG_ID,
7887
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7888
						  FROM BASE_ENV_CONTENTS bec,
7889
						  	   OS_BASE_ENV obe,
7890
						  	   OPERATING_SYSTEMS os,
7891
							   NETWORK_NODES nn,
7892
							   BOM_CONTENTS bc,
7893
							   PACKAGE_VERSIONS pv
7894
						 WHERE obe.OS_ID = os.OS_ID
7895
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
7896
						   AND os.NODE_ID = nn.NODE_ID
7897
						   AND bc.NODE_ID = nn.NODE_ID
7898
						   AND bec.PROD_ID = pv.PV_ID
7899
						   AND pv.IS_PATCH IS NULL
7900
						   AND bc.BOM_ID = nBomId	
7901
				  	   ) newbom,
7902
					   (
7903
					   	SELECT bec.PROD_ID,
7904
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7905
							   pv.PKG_ID,
7906
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7907
						  FROM BASE_ENV_CONTENTS bec,
7908
						  	   OS_BASE_ENV obe,
7909
						  	   OPERATING_SYSTEMS os,
7910
							   NETWORK_NODES nn,
7911
							   BOM_CONTENTS bc,
7912
							   PACKAGE_VERSIONS pv
7913
						 WHERE obe.OS_ID = os.OS_ID
7914
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
7915
						   AND os.NODE_ID = nn.NODE_ID
7916
						   AND bc.NODE_ID = nn.NODE_ID
7917
						   AND bec.PROD_ID = pv.PV_ID
7918
						   AND pv.IS_PATCH IS NULL
7919
						   AND bc.BOM_ID = CompareBomId	
7920
					   ) oldbom
7921
				 WHERE newbom.PK = oldbom.PK (+) 
7922
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
7923
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
7924
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
7925
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	   
7926
				UNION
7927
 
7928
				/* REMOVED PRODUCTS ONLY*/    
7929
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
7930
				  FROM (
7931
				  		SELECT osc.PROD_ID,
7932
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7933
							   pv.PKG_ID,
7934
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7935
						  FROM OS_CONTENTS osc,
7936
						  	   OPERATING_SYSTEMS os,
7937
							   NETWORK_NODES nn,
7938
							   BOM_CONTENTS bc,
7939
							   PACKAGE_VERSIONS pv
7940
						 WHERE osc.OS_ID = os.OS_ID
7941
						   AND os.NODE_ID = nn.NODE_ID
7942
						   AND bc.NODE_ID = nn.NODE_ID
7943
						   AND osc.PROD_ID = pv.PV_ID
7944
						   AND pv.IS_PATCH IS NULL
7945
						   AND bc.BOM_ID = nBomId	
7946
				  	   ) newbom,
7947
					   (
7948
					   	SELECT osc.PROD_ID,
7949
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7950
							   pv.PKG_ID,
7951
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7952
						  FROM OS_CONTENTS osc,
7953
						  	   OPERATING_SYSTEMS os,
7954
							   NETWORK_NODES nn,
7955
							   BOM_CONTENTS bc,
7956
							   PACKAGE_VERSIONS pv
7957
						 WHERE osc.OS_ID = os.OS_ID
7958
						   AND os.NODE_ID = nn.NODE_ID
7959
						   AND bc.NODE_ID = nn.NODE_ID
7960
						   AND osc.PROD_ID = pv.PV_ID
7961
						   AND pv.IS_PATCH IS NULL
7962
						   AND bc.BOM_ID = CompareBomId	
7963
					   ) oldbom
7964
				 WHERE newbom.PK (+) = oldbom.PK  
7965
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
7966
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
7967
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
7968
				   AND newbom.PK IS NULL  
7969
				UNION   
7970
				/* REMOVED PATCHES */    
7971
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
7972
				  FROM (
7973
				  		SELECT osc.PROD_ID,
7974
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7975
						  FROM OS_CONTENTS osc,
7976
						  	   OPERATING_SYSTEMS os,
7977
							   NETWORK_NODES nn,
7978
							   BOM_CONTENTS bc,
7979
							   PACKAGE_VERSIONS pv
7980
						 WHERE osc.OS_ID = os.OS_ID
7981
						   AND os.NODE_ID = nn.NODE_ID
7982
						   AND bc.NODE_ID = nn.NODE_ID
7983
						   AND osc.PROD_ID = pv.PV_ID
7984
						   AND NOT pv.IS_PATCH IS NULL
7985
						   AND bc.BOM_ID = nBomId	
7986
				  	   ) newbom,
7987
					   (
7988
					   	SELECT osc.PROD_ID,
7989
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7990
						  FROM OS_CONTENTS osc,
7991
						  	   OPERATING_SYSTEMS os,
7992
							   NETWORK_NODES nn,
7993
							   BOM_CONTENTS bc,
7994
							   PACKAGE_VERSIONS pv
7995
						 WHERE osc.OS_ID = os.OS_ID
7996
						   AND os.NODE_ID = nn.NODE_ID
7997
						   AND bc.NODE_ID = nn.NODE_ID
7998
						   AND osc.PROD_ID = pv.PV_ID
7999
						   AND NOT pv.IS_PATCH IS NULL
8000
						   AND bc.BOM_ID = CompareBomId	
8001
					   ) oldbom
8002
				 WHERE newbom.PK (+) = oldbom.PK  
8003
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
8004
				   AND newbom.PK IS NULL 
8005
				   UNION
8006
				/* REMOVED PRODUCTS ONLY FROM BASE CONFIGURATION*/    
8007
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
8008
				  FROM (
8009
				  		SELECT bec.PROD_ID,
8010
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
8011
							   pv.PKG_ID,
8012
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
8013
						  FROM BASE_ENV_CONTENTS bec,
8014
						  	   OS_BASE_ENV obe,
8015
						  	   OPERATING_SYSTEMS os,
8016
							   NETWORK_NODES nn,
8017
							   BOM_CONTENTS bc,
8018
							   PACKAGE_VERSIONS pv
8019
						 WHERE obe.OS_ID = os.OS_ID
8020
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
8021
						   AND os.NODE_ID = nn.NODE_ID
8022
						   AND bc.NODE_ID = nn.NODE_ID
8023
						   AND bec.PROD_ID = pv.PV_ID
8024
						   AND pv.IS_PATCH IS NULL
8025
						   AND bc.BOM_ID = nBomId	
8026
				  	   ) newbom,
8027
					   (
8028
					   	SELECT bec.PROD_ID,
8029
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
8030
							   pv.PKG_ID,
8031
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
8032
						  FROM BASE_ENV_CONTENTS bec,
8033
						  	   OS_BASE_ENV obe,
8034
						  	   OPERATING_SYSTEMS os,
8035
							   NETWORK_NODES nn,
8036
							   BOM_CONTENTS bc,
8037
							   PACKAGE_VERSIONS pv
8038
						 WHERE obe.OS_ID = os.OS_ID
8039
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID 
8040
						   AND os.NODE_ID = nn.NODE_ID
8041
						   AND bc.NODE_ID = nn.NODE_ID
8042
						   AND bec.PROD_ID = pv.PV_ID
8043
						   AND pv.IS_PATCH IS NULL
8044
						   AND bc.BOM_ID = CompareBomId	
8045
					   ) oldbom
8046
				 WHERE newbom.PK (+) = oldbom.PK  
8047
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
8048
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
8049
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
8050
				   AND newbom.PK IS NULL  
8051
				UNION   
8052
				/* REMOVED PATCHES FROM BASE CONFIGURATION*/    
8053
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
8054
				  FROM (
8055
				  		SELECT bec.PROD_ID,
8056
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8057
						  FROM BASE_ENV_CONTENTS bec,
8058
						  	   OS_BASE_ENV obe,
8059
						  	   OPERATING_SYSTEMS os,
8060
							   NETWORK_NODES nn,
8061
							   BOM_CONTENTS bc,
8062
							   PACKAGE_VERSIONS pv
8063
						 WHERE obe.OS_ID = os.OS_ID
8064
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
8065
						   AND os.NODE_ID = nn.NODE_ID
8066
						   AND bc.NODE_ID = nn.NODE_ID
8067
						   AND bec.PROD_ID = pv.PV_ID
8068
						   AND NOT pv.IS_PATCH IS NULL
8069
						   AND bc.BOM_ID = nBomId	
8070
				  	   ) newbom,
8071
					   (
8072
					   	SELECT bec.PROD_ID,
8073
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8074
						  FROM BASE_ENV_CONTENTS bec,
8075
						  	   OS_BASE_ENV obe,
8076
						  	   OPERATING_SYSTEMS os,
8077
							   NETWORK_NODES nn,
8078
							   BOM_CONTENTS bc,
8079
							   PACKAGE_VERSIONS pv
8080
						 WHERE obe.OS_ID = os.OS_ID
8081
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
8082
						   AND os.NODE_ID = nn.NODE_ID
8083
						   AND bc.NODE_ID = nn.NODE_ID
8084
						   AND bec.PROD_ID = pv.PV_ID
8085
						   AND NOT pv.IS_PATCH IS NULL
8086
						   AND bc.BOM_ID = CompareBomId	
8087
					   ) oldbom
8088
				 WHERE newbom.PK (+) = oldbom.PK  
8089
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
8090
				   AND newbom.PK IS NULL				    	
8091
 
8092
		       ) qry,
8093
			   (
8094
 
8095
		  		SELECT nn.NODE_ID,
8096
					   nn.NODE_NAME,
8097
					   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8098
				  FROM OPERATING_SYSTEMS os,
8099
					   NETWORK_NODES nn,
8100
					   BOM_CONTENTS bc
8101
				 WHERE os.NODE_ID = nn.NODE_ID
8102
				   AND bc.NODE_ID = nn.NODE_ID
8103
				   AND bc.BOM_ID = nBomId
8104
 
8105
		  	   ) nlook,
8106
			   (
8107
 
8108
				SELECT nn.NODE_NAME, 
8109
					   MAX(nn.NODE_LIFE_CYCLE) AS LAST_LIFE_CYCLE
8110
				  FROM BOMS bo,
8111
				  	   BOM_CONTENTS bc,
8112
					   BRANCHES br,
8113
					   NETWORK_NODES nn
8114
				 WHERE bc.BOM_ID = bo.BOM_ID
8115
				   AND bo.BRANCH_ID = br.BRANCH_ID
8116
				   AND bc.NODE_ID = nn.NODE_ID
8117
				   AND br.PROJ_ID = ProjId
8118
		  	     GROUP BY nn.NODE_NAME
8119
 
8120
			   ) nlc
8121
		 WHERE nlook.PK = qry.PK 
8122
		   AND nlc.NODE_NAME = nlook.NODE_NAME;
8123
	recUpdateNode curUpdateNode%ROWTYPE;
8124
 
8125
 
8126
 
8127
BEGIN
8128
	/*--------------- Business Rules Here -------------------*/
8129
	/*-------------------------------------------------------*/
8130
 
8131
	-- Get some BOM details
8132
	SELECT bo.PARENT_BOM_ID, br.PROJ_ID, bo.BOM_VERSION ||'.'|| bo.BOM_LIFECYCLE INTO CompareBomId, ProjId, BomVersion
8133
	  FROM BOMS bo,
8134
	  	   BRANCHES br
8135
	 WHERE bo.BOM_ID = nBomId
8136
	   AND bo.BRANCH_ID = br.BRANCH_ID;
8137
 
8138
 
8139
	-- Update node version
8140
	OPEN curUpdateNode;
8141
	FETCH curUpdateNode INTO recUpdateNode;
8142
 
8143
	WHILE curUpdateNode%FOUND
8144
	LOOP
8145
 
8146
		UPDATE NETWORK_NODES nn SET
8147
			nn.NODE_VERSION = BomVersion,
8148
			nn.NODE_LIFE_CYCLE = recUpdateNode.NEW_LIFE_CYCLE
8149
		 WHERE nn.NODE_ID = recUpdateNode.NODE_ID;
8150
 
8151
		FETCH curUpdateNode INTO recUpdateNode;
8152
	END LOOP;
8153
 
8154
 
8155
	CLOSE curUpdateNode;	
8156
 
8157
END	Update_Nodes_Version;
8158
/*--------------------------------------------------------------------------------------------------*/
8159
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 ) IS
8160
 
8161
rowCount NUMBER;
8162
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
8163
nBomIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
8164
 
8165
BEGIN
8166
	/*--------------- Business Rules Here -------------------*/
8167
	IF (nBomId IS NULL) 
8168
	THEN
8169
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId );
8170
 
8171
	END IF;
8172
 
8173
	-- Check Requirements
8174
	pk_Requirements.Destroy_Bom ( nBomId );
8175
 
8176
	/*-------------------------------------------------------*/
8177
 
8178
 
8179
 
8180
	-- Load Collector
8181
	nBomIdCollector := IN_LIST_NUMBER( nBomId );
8182
 
8183
 
8184
	-- Destroy BASE_ENV
8185
	nIdCollector := NULL;
8186
	SELECT CAST ( MULTISET ( SELECT be.BASE_ENV_ID
8187
	  	   		  		   	   FROM BASE_ENV be
8188
	 						  WHERE be.BOM_ID IN   ( 
8189
								  	  		  	      SELECT * 
8190
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8191
												 	) 
8192
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
8193
 
8194
	Destroy_BaseEnv ( nIdCollector );
8195
 
8196
 
8197
 
8198
	-- Destroy NETWORK_NODES
8199
	nIdCollector := NULL;
8200
	SELECT CAST ( MULTISET ( SELECT bc.NODE_ID
8201
	  	   		  		   	   FROM BOM_CONTENTS bc
8202
	 						  WHERE bc.BOM_ID IN   ( 
8203
								  	  		  	      SELECT * 
8204
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8205
												 	) 
8206
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
8207
 
8208
	pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
8209
 
8210
 
8211
 
8212
	-- Destroy HARDWARE
8213
	nIdCollector := NULL;
8214
	SELECT CAST ( MULTISET ( SELECT hr.HARDWARE_NAME_ID
8215
	  	   		  		   	   FROM HARDWARE hr
8216
	 						  WHERE hr.BOM_ID IN   ( 
8217
								  	  		  	      SELECT * 
8218
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8219
												 	)
8220
							) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
8221
 
8222
	Destroy_Hardware ( nIdCollector );
8223
 
8224
 
8225
 
8226
	-- Destroy BOM_STATE
8227
	DELETE 
8228
	  FROM BOM_STATE bs
8229
	 WHERE bs.BOM_ID IN ( 
8230
	  	  		  	      SELECT * 
8231
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8232
					 	);
8233
 
8234
 
8235
	-- Destroy BOM_TRAIL
8236
	DELETE 
8237
	  FROM BOM_TRAIL bt
8238
	 WHERE bt.BOM_ID IN ( 
8239
	  	  		  	      SELECT * 
8240
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8241
					 	); 
8242
 
8243
 
8244
	---- Finnaly Destroy BOM ----
8245
	DELETE 
8246
	  FROM BOMS bo
8247
	 WHERE bo.BOM_ID IN ( 
8248
	  	  		  	      SELECT * 
8249
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8250
					 	);
8251
 
8252
 
8253
 
8254
END	Destroy_Bom;
8255
/*--------------------------------------------------------------------------------------------------*/
8256
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
8257
 
8258
 
8259
BEGIN
8260
	/*--------------- Business Rules Here -------------------*/
8261
	/*-------------------------------------------------------*/
8262
 
8263
	-- Destroy BASE_ENV_CONTENTS
8264
	DELETE
8265
	  FROM BASE_ENV_CONTENTS bec
8266
	 WHERE bec.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
8267
 
8268
	-- Destroy OS_BASE_ENV
8269
	DELETE
8270
	  FROM OS_BASE_ENV obe
8271
	 WHERE obe.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
8272
 
8273
	 -- Destroy BASE_ENV
8274
	DELETE
8275
	  FROM BASE_ENV be
8276
	 WHERE be.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
8277
 
8278
 
8279
END	Destroy_BaseEnv;
8280
/*--------------------------------------------------------------------------------------------------*/
8281
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
8282
 
8283
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
8284
 
8285
BEGIN
8286
	/*--------------- Business Rules Here -------------------*/
8287
	/*-------------------------------------------------------*/
8288
 
8289
    -- Destroy NETWORK_NODES
8290
    nIdCollector := NULL;
8291
    SELECT CAST ( MULTISET ( SELECT hn.NODE_ID
8292
	  	   		  		   	   FROM HARDWARE_NODE hn
8293
	 						  WHERE hn.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) ) 
8294
						   ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
8295
 
8296
    pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
8297
 
8298
 
8299
	-- Finnaly Destroy HARDWARE
8300
	DELETE
8301
	  FROM HARDWARE hd
8302
	 WHERE hd.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
8303
 
8304
END	Destroy_Hardware;
8305
/*--------------------------------------------------------------------------------------------------*/
8306
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
8307
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
8308
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
8309
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
8310
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
8311
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE ) IS
8312
 
8313
IsNotHead NUMBER;
8314
FromBranch NUMBER;
8315
LastRootVersion NUMBER;
8316
LastVersion BOMS.BOM_VERSION%TYPE;
8317
 
8318
CURSOR curBoms IS
8319
	SELECT Max ( CAST ( bo.BOM_VERSION AS NUMBER  ) ) AS LAST_VERSION
8320
		  FROM BOMS bo,
8321
		  	   BRANCHES br
8322
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
8323
		   AND br.PROJ_ID IN ( SELECT br.PROJ_ID  FROM BRANCHES br  WHERE br.BRANCH_ID = nToBranchId )	
8324
		   AND bo.BOM_NAME_ID = nBomNameId;
8325
recBoms curBoms%ROWTYPE;
8326
 
8327
 
8328
BEGIN
8329
 
8330
	/*--------------- Business Rules Here -------------------*/
8331
	/*-------------------------------------------------------*/
8332
	-- Get Last Root Version
8333
 
8334
	OPEN curBoms;
8335
	FETCH curBoms INTO recBoms;	
8336
	LastRootVersion := recBoms.LAST_VERSION;
8337
	CLOSE curBoms;
8338
 
8339
 
8340
 
8341
 
8342
 
8343
	IF nFromBomId IS NULL THEN
8344
		/* Blank BOM Required */
8345
 
8346
		-- Get Next Available Version
8347
		sNextVersion := '1';
8348
		sNextLifeCycle := '0';
8349
		IF LastRootVersion IS NOT NULL THEN
8350
			sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
8351
		END IF;
8352
 
8353
 
8354
 
8355
	ELSE
8356
		/* Create Bom From ... */
8357
 
8358
		-- Check if BOM is comming from different Iteration
8359
		SELECT bo.BRANCH_ID INTO FromBranch
8360
		  FROM BOMS bo
8361
		 WHERE bo.BOM_ID = nFromBomId; 
8362
 
8363
 
8364
 
8365
		IF FromBranch = nToBranchId THEN
8366
			/* Bom is comming from same Iteration */
8367
			/* i.e. Continue on same version stream. */
8368
 
8369
			-- Set parent_id
8370
			nParentBomId := nFromBomId;
8371
 
8372
 
8373
			-- Get Last Version 
8374
			SELECT bo.BOM_VERSION INTO LastVersion
8375
			  FROM BOMS bo
8376
			 WHERE bo.BOM_ID = nFromBomId;
8377
 
8378
 
8379
			-- Check if Bom is Head (i.e. Last on its branch )
8380
			SELECT COUNT(*) INTO IsNotHead
8381
			  FROM BOMS bo,
8382
			  	   BRANCHES br
8383
			 WHERE bo.BRANCH_ID = br.BRANCH_ID
8384
			   AND br.PROJ_ID IN ( SELECT br.PROJ_ID FROM BRANCHES br WHERE br.BRANCH_ID = FromBranch )
8385
			   AND bo.PARENT_BOM_ID = nFromBomId
8386
			   AND bo.BOM_VERSION = LastVersion
8387
			   AND bo.BOM_ID != bo.PARENT_BOM_ID;
8388
 
8389
 
8390
			IF IsNotHead = 0 THEN
8391
				/* Bom IS Head (i.e. Last on its branch ) */
8392
 
8393
				-- Get Bom Version and LifeCycle
8394
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
8395
				  FROM BOMS bo
8396
				 WHERE bo.BOM_ID = nFromBomId;
8397
 
8398
				-- Increase Lifecycle
8399
				sNextLifeCycle := CAST (  ( CAST( sNextLifeCycle AS NUMBER ) + 1 )  AS VARCHAR2 );
8400
 
8401
 
8402
			ELSE
8403
				/* Bom IS NOT Head */
8404
 
8405
				-- Get Bom Version and LifeCycle
8406
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
8407
				  FROM BOMS bo
8408
				 WHERE bo.BOM_ID = nFromBomId;
8409
 
8410
				-- Branch Bom Version 
8411
				sNextVersion := sNextVersion ||'.'|| sNextLifeCycle;
8412
 
8413
				-- Reset Lifecycle to 1
8414
				sNextLifeCycle := '1';
8415
 
8416
			END IF;	
8417
 
8418
 
8419
		ELSE
8420
			/* BOM is comming from Different Iteration */
8421
			/* i.e. Start new version stream. */
8422
 
8423
			-- Get Next Available Version
8424
			sNextVersion := '1';
8425
			sNextLifeCycle := '0';
8426
			IF LastRootVersion IS NOT NULL THEN
8427
				sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
8428
			END IF;
8429
 
8430
		END IF;
8431
 
8432
 
8433
	END IF;
8434
 
8435
 
8436
END	Get_Next_Version;
8437
/*--------------------------------------------------------------------------------------------------*/
8438
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
8439
					   nUserId IN BOM_STATE.USER_ID%TYPE,
8440
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
8441
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL ) IS
8442
 
8443
rowCount NUMBER;	
8444
IsOfficial BOMS.IS_READONLY%TYPE;					 
8445
StateId BOM_STATE.STATE_ID%TYPE;
8446
StateName STATES.STATE_NAME%TYPE;
8447
 
8448
BEGIN
8449
	/*--------------- Business Rules Here -------------------*/
8450
	-- Check if already released
8451
	SELECT Count(*) INTO rowCount
8452
	  FROM BOM_STATE bs
8453
	 WHERE bs.BOM_ID = nBomId
8454
	   AND bs.STATE_ID = nToState;
8455
 
8456
	IF rowCount > 0 THEN
8457
	   RAISE_APPLICATION_ERROR (-20000, 'This BOM is already release' );
8458
	END IF;
8459
 
8460
 
8461
	-- Check if Bom is official
8462
	SELECT bo.IS_READONLY INTO IsOfficial
8463
	  FROM BOMS bo
8464
	 WHERE bo.BOM_ID = nBomId;
8465
 
8466
	IF (IsOfficial != 'Y') AND (nToState IS NOT NULL) THEN
8467
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first' );
8468
	END IF;
8469
	/*-------------------------------------------------------*/
8470
 
8471
 
8472
	-- Get State --
8473
	StateId := nToState;
8474
	IF StateId IS NULL THEN
8475
		-- If state_id is null it is considered as state_type_enum = 'BOM Creator'
8476
		SELECT st.STATE_ID INTO StateId
8477
		  FROM BOMS bo,
8478
		  	   BRANCHES br,
8479
			   DM_PROJECTS proj,
8480
			   STATES st
8481
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
8482
		   AND br.PROJ_ID = proj.PROJ_ID
8483
		   AND st.PROJ_ID = proj.PROJ_ID
8484
		   AND bo.BOM_ID = nBomId
8485
		   AND st.STATE_TYPE_ENUM = GET_SYSTEM_VALUE('enumSTATE_TYPE_CREATOR');	
8486
	END IF;
8487
 
8488
 
8489
	-- Add Bom to State --
8490
	INSERT INTO BOM_STATE (BOM_ID, STATE_ID, DATE_STAMP, IS_DISPLAYED, USER_ID )
8491
	VALUES( nBomId,
8492
			StateId,
8493
			GET_DATE(),
8494
			'Y',
8495
			nUserId );
8496
 
8497
 
8498
 
8499
	-- Auto-Hide Bom
8500
	pk_State.Auto_Hide ( StateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_RELEASE_TO') );
8501
 
8502
 
8503
	/* Log BOM_TRAIL */
8504
	-- Get State Name --
8505
	SELECT st.STATE_NAME INTO StateName
8506
	  FROM STATES st
8507
	 WHERE st.STATE_ID = StateId;
8508
 
8509
	-- Log Action 
8510
	pk_Bom.Log_Bom_Trail ( nBomId, 'RELEASED TO: '|| StateName, nUserId, sComments );
8511
 
8512
 
8513
END	Release_To;
8514
/*--------------------------------------------------------------------------------------------------*/
8515
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
8516
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
8517
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
8518
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE ) IS
8519
 
8520
IsRejected REJECTION_TRAIL.IS_REJECTED%TYPE;
8521
 
8522
BEGIN
8523
	/*--------------- Business Rules Here -------------------*/
8524
	IF (nBomId IS NULL)
8525
	THEN
8526
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId  );
8527
	END IF;
8528
	/*-------------------------------------------------------*/
8529
 
8530
	IF nRejectSeq IS NULL THEN
8531
		/* CREATE New Note */
8532
 
8533
		-- Get last IsRejected state
8534
		SELECT rt.IS_REJECTED INTO IsRejected
8535
		  FROM REJECTION_TRAIL rt
8536
		 WHERE rt.ENTITY_ID = nBomId
8537
		   AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
8538
		   AND ROWNUM = 1
8539
		 ORDER BY rt.REJECT_SEQ;
8540
 
8541
 
8542
		/* Log Rejection Trail */
8543
		pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, IsRejected, nUserId, sComments );
8544
 
8545
 
8546
	ELSE
8547
		/* EDIT Note */
8548
		UPDATE REJECTION_TRAIL rt SET
8549
			rt.COMMENTS = sComments,
8550
			rt.USER_ID = nUserId,
8551
			rt.DATE_TIME_STAMP = GET_DATETIME()
8552
		WHERE rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
8553
		  AND rt.ENTITY_ID = nBomId
8554
		  AND rt.REJECT_SEQ = nRejectSeq;
8555
 
8556
 
8557
	END IF;
8558
 
8559
 
8560
END	Accept_Reject_Comments;
8561
/*--------------------------------------------------------------------------------------------------*/
8562
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
8563
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
8564
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
8565
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  ) IS
8566
 
8567
 
8568
BEGIN
8569
	/*--------------- Business Rules Here -------------------*/
8570
	IF (nBomId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
8571
	THEN
8572
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId ||', sAction='|| sAction ||', nUserId='|| nUserId );
8573
	END IF;
8574
	/*-------------------------------------------------------*/
8575
 
8576
	INSERT INTO BOM_TRAIL ( BOM_ID, TRAIL_ACTION, TRAIL_COMMENTS, USER_ID, DATE_TIME_STAMP )
8577
	VALUES ( nBomId, sAction, sComments, nUserId, GET_DATETIME() );	
8578
 
8579
END	Log_Bom_Trail;
8580
/*--------------------------------------------------------------------------------------------------*/
8581
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
8582
						  sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
8583
						  nUserId IN NODE_TRAIL.USER_ID%TYPE  ) IS
8584
 
8585
 
8586
BEGIN
8587
	/*--------------- Business Rules Here -------------------*/
8588
	IF (nNodeId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
8589
	THEN
8590
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId= '|| nNodeId ||', sAction='|| sAction ||', nUserId='|| nUserId );
8591
	END IF;
8592
	/*-------------------------------------------------------*/
8593
 
8594
	INSERT INTO NODE_TRAIL ( NODE_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
8595
	VALUES ( nNodeId, sAction, nUserId, GET_DATETIME() );	
8596
 
8597
END	Log_Node_Trail;
8598
/*--------------------------------------------------------------------------------------------------*/
8599
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
8600
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
8601
						  nUserId IN OS_TRAIL.USER_ID%TYPE  ) IS
8602
 
8603
 
8604
BEGIN
8605
	/*--------------- Business Rules Here -------------------*/
8606
	IF (nOsId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
8607
	THEN
8608
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nOsId ||', sAction='|| sAction ||', nUserId='|| nUserId );
8609
	END IF;
8610
	/*-------------------------------------------------------*/
8611
 
8612
	INSERT INTO OS_TRAIL ( OS_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
8613
	VALUES ( nOsId, sAction, nUserId, GET_DATETIME() );	
8614
 
8615
END	Log_Os_Trail;
8616
/*--------------------------------------------------------------------------------------------------*/
8617
 
8618
END pk_Bom_Test;
8619
/
8620
 
8621
CREATE OR REPLACE PACKAGE BODY pk_Bom
8622
IS
8623
/* ---------------------------------------------------------------------------
8624
    Version: 2.0
8625
   --------------------------------------------------------------------------- */
8626
 
8627
/*--------------------------------------------------------------------------------------------------*/
8628
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
8629
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
8630
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
8631
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
8632
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
8633
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
8634
					nRtagId IN BOMS.RTAG_ID_FK%TYPE,
8635
					nUserId IN BOM_STATE.USER_ID%TYPE ) IS
8636
 
8637
BomId BOMS.BOM_ID%TYPE;
8638
ParentBomId BOMS.PARENT_BOM_ID%TYPE;
8639
BomNameId BOM_NAMES.BOM_NAME_ID%TYPE;
8640
BomVersion BOMS.BOM_VERSION%TYPE;
8641
BomLifeCycle BOMS.BOM_LIFECYCLE%TYPE;
8642
ProjId BRANCHES.PROJ_ID%TYPE;
8643
 
8644
CURSOR curBom IS 
8645
		SELECT bo.BOM_ID
8646
		  FROM BOMS bo,
8647
		  	   BRANCHES br
8648
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
8649
		   AND br.PROJ_ID = ProjId
8650
		   AND bo.BOM_NAME_ID = BomNameId
8651
		   AND bo.BOM_VERSION = BomVersion
8652
		   AND bo.BOM_LIFECYCLE = BomLifeCycle;
8653
recBom curBom%ROWTYPE;
8654
 
8655
DUPLICATE_BOM EXCEPTION;
8656
 
8657
BEGIN
8658
	/*--------------- Business Rules Here -------------------*/
8659
	IF (nToBranchId IS NULL) OR (nUserId IS NULL)
8660
	THEN
8661
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nToBranchId= '|| nToBranchId ||', nUserId='|| nUserId );
8662
 
8663
	END IF;
8664
	/*-------------------------------------------------------*/
8665
 
8666
	-- Get bom_id
8667
	SELECT SEQ_BOM_ID.NEXTVAL INTO BomId FROM DUAL;
8668
 
8669
 
8670
	-- Get bom_name_id
8671
	IF nFromBomId IS NULL THEN
8672
		BomNameId := New_Bom_Name ( sBomName );
8673
        ParentBomId := BomId;
8674
	ELSE
8675
		BomNameId := New_Bom_Name ( nFromBomId );
8676
        ParentBomId := nFromBomId;
8677
	END IF;		
8678
 
8679
 
8680
 
8681
 
8682
	-- Get Bom Version and Lifecycle
8683
	--Get_Next_Version ( nFromBomId, nToBranchId, BomVersion, BomLifeCycle, ParentBomId, BomNameId );
8684
 
8685
 
8686
 
8687
	-- Get proj_id
8688
	SELECT br.PROJ_ID INTO ProjId
8689
	  FROM BRANCHES br
8690
	 WHERE br.BRANCH_ID = nToBranchId;
8691
 
8692
 
8693
 
8694
	-- Check for duplicate BOMs
8695
	OPEN curBom;
8696
    FETCH curBom INTO recBom;
8697
 
8698
    IF curBom%FOUND
8699
    THEN
8700
		RAISE DUPLICATE_BOM;
8701
	END IF;
8702
 
8703
	CLOSE curBom;
8704
 
8705
 
8706
 
8707
	-- Add Blank Bom --
8708
	INSERT INTO BOMS ( BOM_ID, BRANCH_ID, BOM_NAME_ID, BOM_COMMENTS, BOM_VERSION, BOM_LIFECYCLE, IS_READONLY, IS_HIDDEN, PARENT_BOM_ID, RTAG_ID_FK )
8709
	VALUES ( BomId, nToBranchId, BomNameId, sBomComments, sBomVersion, sBomLifeCycle, 'N', 'N', ParentBomId, nRtagId  );
8710
 
8711
 
8712
 
8713
 
8714
	/* Log BOM_TRAIL */
8715
	pk_Bom.Log_Bom_Trail ( BomId, 'CREATED: Version '|| sBomVersion ||'.'|| sBomLifeCycle , nUserId );
8716
 
8717
 
8718
 
8719
	IF nFromBomId IS NOT NULL THEN
8720
		/* Add Bom Clonned from ... */
8721
		pk_Utils.Clone_BOM ( nFromBomId, BomId, nUserId );
8722
 
8723
	END IF;
8724
 
8725
 
8726
 
8727
	--- Set Bom State ---
8728
	Release_To ( BomId, nUserId );
8729
 
8730
 
8731
	EXCEPTION
8732
    WHEN DUPLICATE_BOM
8733
	THEN		
8734
		RAISE_APPLICATION_ERROR (-20000, 'BOM "'|| sBomName ||' '|| BomVersion ||'.'|| BomLifeCycle ||'" is Already Used in this Project.');
8735
 
8736
END	Add_Bom;
8737
/*--------------------------------------------------------------------------------------------------*/
8738
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
8739
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
8740
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
8741
					   nUserId IN NUMBER )  IS
8742
 
8743
ReleaseName VARCHAR2(100);					   
8744
 
8745
BEGIN
8746
	/*--------------- Business Rules Here -------------------*/
8747
	/*-------------------------------------------------------*/
8748
 
8749
	--- Update Bom Properties ---
8750
	UPDATE BOMS bo SET
8751
		bo.RTAG_ID_FK = nRtagId,
8752
		bo.BOM_COMMENTS = sBomComment
8753
	WHERE bo.BOM_ID = nBomId;
8754
 
8755
	SELECT RTAG_NAME INTO ReleaseName
8756
	FROM RELEASE_TAGS 
8757
	WHERE RTAG_ID = nRtagId;
8758
 
8759
 
8760
	/* Log BOM_TRAIL */
8761
	pk_Bom.Log_Bom_Trail ( nBomId, 'Updated BOM properties: Set Release Manager Reference ='||ReleaseName||' and comments ='||sBomComment, nUserId );
8762
 
8763
 
8764
END	Update_Bom;
8765
/*--------------------------------------------------------------------------------------------------*/
8766
PROCEDURE Update_ProdBom ( nBomId IN BOMS.BOM_ID%TYPE,
8767
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
8768
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
8769
					   nUserId IN NUMBER )  IS
8770
 
8771
ReleaseName VARCHAR2(100);					   
8772
 
8773
BEGIN
8774
	/*--------------- Business Rules Here -------------------*/
8775
	/*-------------------------------------------------------*/
8776
 
8777
	--- Update Bom Properties ---
8778
	UPDATE BOMS bo SET
8779
		bo.RTAG_ID_FK = nRtagId,
8780
		bo.BOM_COMMENTS = sBomComment
8781
	WHERE bo.BOM_ID = nBomId;
8782
 
8783
	SELECT BRANCH_NAME INTO ReleaseName
8784
	FROM BRANCHES 
8785
	WHERE BRANCH_ID = nRtagId;
8786
 
8787
 
8788
	/* Log BOM_TRAIL */
8789
	pk_Bom.Log_Bom_Trail ( nBomId, 'Updated BOM properties: Set Deployment Manager Reference ='||ReleaseName||' and comments ='||sBomComment, nUserId );
8790
 
8791
 
8792
END	Update_ProdBom;
8793
/*--------------------------------------------------------------------------------------------------*/
8794
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE IS
8795
 
8796
ReturnValue 	 BOM_NAMES.BOM_NAME_ID%TYPE;	
8797
 
8798
CURSOR curBomNames IS
8799
	SELECT bn.BOM_NAME_ID
8800
	  FROM BOM_NAMES bn
8801
	 WHERE bn.BOM_NAME = sBomName;
8802
recBomNames curBomNames%ROWTYPE;
8803
 
8804
BEGIN
8805
	/*--------------- Business Rules Here -------------------*/
8806
	/*-------------------------------------------------------*/
8807
 
8808
	-- Check for existance of this name
8809
	OPEN curBomNames;
8810
	FETCH curBomNames INTO recBomNames;
8811
 
8812
	ReturnValue := NULL;
8813
	IF curBomNames%FOUND THEN
8814
		ReturnValue := recBomNames.BOM_NAME_ID;
8815
	END IF;
8816
 
8817
	CLOSE curBomNames;
8818
 
8819
 
8820
	-- Finnaly Create Name if required --    
8821
	IF ReturnValue IS NULL THEN
8822
		-- Get bom_name_id
8823
		SELECT SEQ_BOM_NAME_ID.NEXTVAL INTO ReturnValue FROM DUAL;
8824
 
8825
		INSERT INTO BOM_NAMES ( BOM_NAME_ID, BOM_NAME )
8826
		VALUES ( ReturnValue, sBomName );
8827
 
8828
	END IF;	
8829
 
8830
 
8831
	RETURN ReturnValue;
8832
END	New_Bom_Name;
8833
/*--------------------------------------------------------------------------------------------------*/
8834
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE IS
8835
 
8836
ReturnValue 	 BOMS.BOM_NAME_ID%TYPE;	
8837
 
8838
BEGIN
8839
	/*--------------- Business Rules Here -------------------*/
8840
	/*-------------------------------------------------------*/
8841
 
8842
	-- Get bom_name_id
8843
	SELECT bo.BOM_NAME_ID INTO ReturnValue
8844
	  FROM BOMS bo
8845
	 WHERE bo.BOM_ID = nFromBomId;
8846
 
8847
 
8848
	RETURN ReturnValue;
8849
END	New_Bom_Name;
8850
/*--------------------------------------------------------------------------------------------------*/
8851
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
8852
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
8853
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
8854
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
8855
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  ) IS
8856
 
8857
StateName STATES.STATE_NAME%TYPE;						  
8858
IsOfficial BOMS.IS_READONLY%TYPE;	
8859
IsRejected VARCHAR2(50);					  
8860
 
8861
BEGIN
8862
	/*--------------- Business Rules Here -------------------*/
8863
	-- Check if Bom is official
8864
	SELECT bo.IS_READONLY INTO IsOfficial
8865
	  FROM BOMS bo
8866
	 WHERE bo.BOM_ID = nBomId;
8867
 
8868
	IF IsOfficial != 'Y' THEN
8869
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first.' );
8870
	END IF;
8871
	/*-------------------------------------------------------*/
8872
 
8873
	-- Get State Name
8874
	SELECT st.STATE_NAME INTO StateName
8875
	  FROM STATES st
8876
	 WHERE st.STATE_ID = nStateId;
8877
 
8878
 
8879
	-- AcceptReject BOM
8880
	UPDATE BOMS bo SET
8881
		bo.IS_REJECTED = cIsRejected
8882
	WHERE bo.BOM_ID = nBomId;
8883
 
8884
 
8885
	-- Auto-Hide Bom
8886
	IF cIsRejected = 'Y' THEN
8887
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_REJECT_BOM') );
8888
	ELSE
8889
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_ACCEPT_BOM') );
8890
	END IF;
8891
 
8892
 
8893
	-- Log Rejection Trail 
8894
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, cIsRejected, nUserId, sComments );
8895
 
8896
 
8897
	/* Log BOM_TRAIL */
8898
	-- Get Log Title
8899
	IsRejected := 'ACCEPTED';
8900
	IF cIsRejected = 'Y' THEN
8901
		IsRejected := 'REJECTED';
8902
	END IF;
8903
 
8904
	-- Finnaly log it
8905
	Log_Bom_Trail ( nBomId, IsRejected ||': By '|| StateName, nUserId, sComments );
8906
 
8907
END	Accept_Reject;
8908
/*--------------------------------------------------------------------------------------------------*/
8909
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
8910
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
8911
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
8912
							 nUserId IN NUMBER )  IS
8913
 
8914
 
8915
BEGIN
8916
	/*--------------- Business Rules Here -------------------*/
8917
	/*-------------------------------------------------------*/
8918
	--- Set Bom Official or Not ---
8919
	UPDATE BOMS bo SET
8920
	bo.IS_READONLY = cIsOfficial
8921
	WHERE bo.BOM_ID = nBomId;
8922
 
8923
 
8924
	-- Auto-Hide Bom
8925
	IF cIsOfficial = 'Y' THEN
8926
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_LOCK_BOM') );
8927
 
8928
		-- Update node version
8929
		Update_Nodes_Version ( nBomId, nUserId );
8930
	ELSE
8931
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_UNLOCK_BOM') );
8932
	END IF;
8933
 
8934
 
8935
 
8936
	/* Log BOM_TRAIL */
8937
	pk_Bom.Log_Bom_Trail ( nBomId, 'LOCKED: '|| cIsOfficial, nUserId );
8938
 
8939
 
8940
END	Set_Bom_Official;
8941
/*--------------------------------------------------------------------------------------------------*/
8942
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
8943
							 	 nUserId IN NUMBER )  IS
8944
 
8945
	CompareBomId NUMBER;
8946
	ProjId NUMBER;
8947
	BomVersion VARCHAR2(4000);
8948
 
8949
	CURSOR curUpdateNode IS
8950
		SELECT DISTINCT
8951
			   nlook.NODE_ID,
8952
			   DECODE ( nlc.LAST_LIFE_CYCLE,
8953
			   			NULL, 0,
8954
						nlc.LAST_LIFE_CYCLE + 1 ) AS NEW_LIFE_CYCLE	   
8955
		  FROM (
8956
 
8957
		  		/* ADDED PATCHES ONLY */
8958
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
8959
				  FROM (
8960
				  		SELECT osc.PROD_ID,
8961
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8962
						  FROM OS_CONTENTS osc,
8963
						  	   OPERATING_SYSTEMS os,
8964
							   NETWORK_NODES nn,
8965
							   BOM_CONTENTS bc,
8966
							   PACKAGE_VERSIONS pv
8967
						 WHERE osc.OS_ID = os.OS_ID
8968
						   AND os.NODE_ID = nn.NODE_ID
8969
						   AND bc.NODE_ID = nn.NODE_ID
8970
						   AND osc.PROD_ID = pv.PV_ID
8971
						   AND NOT pv.IS_PATCH IS NULL
8972
						   AND bc.BOM_ID = nBomId	
8973
				  	   ) newbom,
8974
					   (
8975
					   	SELECT osc.PROD_ID,
8976
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8977
						  FROM OS_CONTENTS osc,
8978
						  	   OPERATING_SYSTEMS os,
8979
							   NETWORK_NODES nn,
8980
							   BOM_CONTENTS bc,
8981
							   PACKAGE_VERSIONS pv
8982
						 WHERE osc.OS_ID = os.OS_ID
8983
						   AND os.NODE_ID = nn.NODE_ID
8984
						   AND bc.NODE_ID = nn.NODE_ID
8985
						   AND osc.PROD_ID = pv.PV_ID
8986
						   AND NOT pv.IS_PATCH IS NULL
8987
						   AND bc.BOM_ID = CompareBomId	
8988
					   ) oldbom
8989
				 WHERE newbom.PK = oldbom.PK (+) 
8990
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
8991
				   AND oldbom.PK IS NULL
8992
				UNION 
8993
		  		/* ADDED PATCHES ONLY TO BASE CONFIGURATION */
8994
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
8995
				  FROM (
8996
				  		SELECT bec.PROD_ID,
8997
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8998
						  FROM BASE_ENV_CONTENTS bec,
8999
						  	   OS_BASE_ENV obe,
9000
						  	   OPERATING_SYSTEMS os,
9001
							   NETWORK_NODES nn,
9002
							   BOM_CONTENTS bc,
9003
							   PACKAGE_VERSIONS pv
9004
						 WHERE obe.OS_ID = os.OS_ID
9005
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9006
						   AND os.NODE_ID = nn.NODE_ID
9007
						   AND bc.NODE_ID = nn.NODE_ID
9008
						   AND bec.PROD_ID = pv.PV_ID
9009
						   AND NOT pv.IS_PATCH IS NULL
9010
						   AND bc.BOM_ID = nBomId	
9011
				  	   ) newbom,
9012
					   (
9013
					   	SELECT bec.PROD_ID,
9014
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9015
						  FROM BASE_ENV_CONTENTS bec,
9016
						  	   OS_BASE_ENV obe,
9017
						  	   OPERATING_SYSTEMS os,
9018
							   NETWORK_NODES nn,
9019
							   BOM_CONTENTS bc,
9020
							   PACKAGE_VERSIONS pv
9021
						 WHERE obe.OS_ID = os.OS_ID
9022
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9023
						   AND os.NODE_ID = nn.NODE_ID
9024
						   AND bc.NODE_ID = nn.NODE_ID
9025
						   AND bec.PROD_ID = pv.PV_ID
9026
						   AND NOT pv.IS_PATCH IS NULL
9027
						   AND bc.BOM_ID = CompareBomId	
9028
					   ) oldbom
9029
				 WHERE newbom.PK = oldbom.PK (+) 
9030
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
9031
				   AND oldbom.PK IS NULL
9032
				UNION				
9033
 
9034
				/* ADDED PRODUCTS ONLY */
9035
				SELECT DECODE( oldbom.PROD_ID,
9036
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
9037
					   newbom.PROD_ID, newbom.PK
9038
				  FROM (
9039
				  		SELECT osc.PROD_ID,
9040
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9041
							   pv.PKG_ID,
9042
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9043
						  FROM OS_CONTENTS osc,
9044
						  	   OPERATING_SYSTEMS os,
9045
							   NETWORK_NODES nn,
9046
							   BOM_CONTENTS bc,
9047
							   PACKAGE_VERSIONS pv
9048
						 WHERE osc.OS_ID = os.OS_ID
9049
						   AND os.NODE_ID = nn.NODE_ID
9050
						   AND bc.NODE_ID = nn.NODE_ID
9051
						   AND osc.PROD_ID = pv.PV_ID
9052
						   AND pv.IS_PATCH IS NULL
9053
						   AND bc.BOM_ID = nBomId	
9054
				  	   ) newbom,
9055
					   (
9056
					   	SELECT osc.PROD_ID,
9057
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9058
							   pv.PKG_ID,
9059
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9060
						  FROM OS_CONTENTS osc,
9061
						  	   OPERATING_SYSTEMS os,
9062
							   NETWORK_NODES nn,
9063
							   BOM_CONTENTS bc,
9064
							   PACKAGE_VERSIONS pv
9065
						 WHERE osc.OS_ID = os.OS_ID
9066
						   AND os.NODE_ID = nn.NODE_ID
9067
						   AND bc.NODE_ID = nn.NODE_ID
9068
						   AND osc.PROD_ID = pv.PV_ID
9069
						   AND pv.IS_PATCH IS NULL
9070
						   AND bc.BOM_ID = CompareBomId	
9071
					   ) oldbom
9072
				 WHERE newbom.PK = oldbom.PK (+) 
9073
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
9074
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
9075
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
9076
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	
9077
				   AND newbom.PROD_ID NOT IN 
9078
				   (
9079
				   	   SELECT osc.PROD_ID
9080
					   FROM OS_CONTENTS osc,
9081
					  	    OPERATING_SYSTEMS os,
9082
							NETWORK_NODES nn,
9083
							BOM_CONTENTS bc,
9084
							PACKAGE_VERSIONS pv
9085
					  WHERE osc.OS_ID = os.OS_ID
9086
						AND os.NODE_ID = nn.NODE_ID
9087
						AND bc.NODE_ID = nn.NODE_ID
9088
						AND osc.PROD_ID = pv.PV_ID
9089
						AND pv.IS_PATCH IS NULL
9090
						AND bc.BOM_ID = CompareBomId
9091
				  )	 				   
9092
 
9093
				UNION
9094
 
9095
				/* ADDED PRODUCTS ONLY TO BASE CONFIGURATION */
9096
				SELECT DECODE( oldbom.PROD_ID,
9097
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
9098
					   newbom.PROD_ID, newbom.PK
9099
				  FROM (
9100
				  		SELECT bec.PROD_ID,
9101
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9102
							   pv.PKG_ID,
9103
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9104
						  FROM BASE_ENV_CONTENTS bec,
9105
						  	   OS_BASE_ENV obe,
9106
						  	   OPERATING_SYSTEMS os,
9107
							   NETWORK_NODES nn,
9108
							   BOM_CONTENTS bc,
9109
							   PACKAGE_VERSIONS pv
9110
						 WHERE obe.OS_ID = os.OS_ID
9111
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9112
						   AND os.NODE_ID = nn.NODE_ID
9113
						   AND bc.NODE_ID = nn.NODE_ID
9114
						   AND bec.PROD_ID = pv.PV_ID
9115
						   AND pv.IS_PATCH IS NULL
9116
						   AND bc.BOM_ID = nBomId	
9117
				  	   ) newbom,
9118
					   (
9119
					   	SELECT bec.PROD_ID,
9120
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9121
							   pv.PKG_ID,
9122
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9123
						  FROM BASE_ENV_CONTENTS bec,
9124
						  	   OS_BASE_ENV obe,
9125
						  	   OPERATING_SYSTEMS os,
9126
							   NETWORK_NODES nn,
9127
							   BOM_CONTENTS bc,
9128
							   PACKAGE_VERSIONS pv
9129
						 WHERE obe.OS_ID = os.OS_ID
9130
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9131
						   AND os.NODE_ID = nn.NODE_ID
9132
						   AND bc.NODE_ID = nn.NODE_ID
9133
						   AND bec.PROD_ID = pv.PV_ID
9134
						   AND pv.IS_PATCH IS NULL
9135
						   AND bc.BOM_ID = CompareBomId	
9136
					   ) oldbom
9137
				 WHERE newbom.PK = oldbom.PK (+) 
9138
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
9139
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
9140
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
9141
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	   
9142
				UNION
9143
 
9144
				/* REMOVED PRODUCTS ONLY*/    
9145
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
9146
				  FROM (
9147
				  		SELECT osc.PROD_ID,
9148
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9149
							   pv.PKG_ID,
9150
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9151
						  FROM OS_CONTENTS osc,
9152
						  	   OPERATING_SYSTEMS os,
9153
							   NETWORK_NODES nn,
9154
							   BOM_CONTENTS bc,
9155
							   PACKAGE_VERSIONS pv
9156
						 WHERE osc.OS_ID = os.OS_ID
9157
						   AND os.NODE_ID = nn.NODE_ID
9158
						   AND bc.NODE_ID = nn.NODE_ID
9159
						   AND osc.PROD_ID = pv.PV_ID
9160
						   AND pv.IS_PATCH IS NULL
9161
						   AND bc.BOM_ID = nBomId	
9162
				  	   ) newbom,
9163
					   (
9164
					   	SELECT osc.PROD_ID,
9165
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9166
							   pv.PKG_ID,
9167
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9168
						  FROM OS_CONTENTS osc,
9169
						  	   OPERATING_SYSTEMS os,
9170
							   NETWORK_NODES nn,
9171
							   BOM_CONTENTS bc,
9172
							   PACKAGE_VERSIONS pv
9173
						 WHERE osc.OS_ID = os.OS_ID
9174
						   AND os.NODE_ID = nn.NODE_ID
9175
						   AND bc.NODE_ID = nn.NODE_ID
9176
						   AND osc.PROD_ID = pv.PV_ID
9177
						   AND pv.IS_PATCH IS NULL
9178
						   AND bc.BOM_ID = CompareBomId	
9179
					   ) oldbom
9180
				 WHERE newbom.PK (+) = oldbom.PK  
9181
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
9182
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
9183
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
9184
				   AND newbom.PK IS NULL  
9185
				UNION   
9186
				/* REMOVED PATCHES */    
9187
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
9188
				  FROM (
9189
				  		SELECT osc.PROD_ID,
9190
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9191
						  FROM OS_CONTENTS osc,
9192
						  	   OPERATING_SYSTEMS os,
9193
							   NETWORK_NODES nn,
9194
							   BOM_CONTENTS bc,
9195
							   PACKAGE_VERSIONS pv
9196
						 WHERE osc.OS_ID = os.OS_ID
9197
						   AND os.NODE_ID = nn.NODE_ID
9198
						   AND bc.NODE_ID = nn.NODE_ID
9199
						   AND osc.PROD_ID = pv.PV_ID
9200
						   AND NOT pv.IS_PATCH IS NULL
9201
						   AND bc.BOM_ID = nBomId	
9202
				  	   ) newbom,
9203
					   (
9204
					   	SELECT osc.PROD_ID,
9205
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9206
						  FROM OS_CONTENTS osc,
9207
						  	   OPERATING_SYSTEMS os,
9208
							   NETWORK_NODES nn,
9209
							   BOM_CONTENTS bc,
9210
							   PACKAGE_VERSIONS pv
9211
						 WHERE osc.OS_ID = os.OS_ID
9212
						   AND os.NODE_ID = nn.NODE_ID
9213
						   AND bc.NODE_ID = nn.NODE_ID
9214
						   AND osc.PROD_ID = pv.PV_ID
9215
						   AND NOT pv.IS_PATCH IS NULL
9216
						   AND bc.BOM_ID = CompareBomId	
9217
					   ) oldbom
9218
				 WHERE newbom.PK (+) = oldbom.PK  
9219
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
9220
				   AND newbom.PK IS NULL 
9221
				   UNION
9222
				/* REMOVED PRODUCTS ONLY FROM BASE CONFIGURATION*/    
9223
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
9224
				  FROM (
9225
				  		SELECT bec.PROD_ID,
9226
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9227
							   pv.PKG_ID,
9228
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9229
						  FROM BASE_ENV_CONTENTS bec,
9230
						  	   OS_BASE_ENV obe,
9231
						  	   OPERATING_SYSTEMS os,
9232
							   NETWORK_NODES nn,
9233
							   BOM_CONTENTS bc,
9234
							   PACKAGE_VERSIONS pv
9235
						 WHERE obe.OS_ID = os.OS_ID
9236
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9237
						   AND os.NODE_ID = nn.NODE_ID
9238
						   AND bc.NODE_ID = nn.NODE_ID
9239
						   AND bec.PROD_ID = pv.PV_ID
9240
						   AND pv.IS_PATCH IS NULL
9241
						   AND bc.BOM_ID = nBomId	
9242
				  	   ) newbom,
9243
					   (
9244
					   	SELECT bec.PROD_ID,
9245
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9246
							   pv.PKG_ID,
9247
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9248
						  FROM BASE_ENV_CONTENTS bec,
9249
						  	   OS_BASE_ENV obe,
9250
						  	   OPERATING_SYSTEMS os,
9251
							   NETWORK_NODES nn,
9252
							   BOM_CONTENTS bc,
9253
							   PACKAGE_VERSIONS pv
9254
						 WHERE obe.OS_ID = os.OS_ID
9255
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID 
9256
						   AND os.NODE_ID = nn.NODE_ID
9257
						   AND bc.NODE_ID = nn.NODE_ID
9258
						   AND bec.PROD_ID = pv.PV_ID
9259
						   AND pv.IS_PATCH IS NULL
9260
						   AND bc.BOM_ID = CompareBomId	
9261
					   ) oldbom
9262
				 WHERE newbom.PK (+) = oldbom.PK  
9263
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
9264
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
9265
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
9266
				   AND newbom.PK IS NULL  
9267
				UNION   
9268
				/* REMOVED PATCHES FROM BASE CONFIGURATION*/    
9269
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
9270
				  FROM (
9271
				  		SELECT bec.PROD_ID,
9272
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9273
						  FROM BASE_ENV_CONTENTS bec,
9274
						  	   OS_BASE_ENV obe,
9275
						  	   OPERATING_SYSTEMS os,
9276
							   NETWORK_NODES nn,
9277
							   BOM_CONTENTS bc,
9278
							   PACKAGE_VERSIONS pv
9279
						 WHERE obe.OS_ID = os.OS_ID
9280
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9281
						   AND os.NODE_ID = nn.NODE_ID
9282
						   AND bc.NODE_ID = nn.NODE_ID
9283
						   AND bec.PROD_ID = pv.PV_ID
9284
						   AND NOT pv.IS_PATCH IS NULL
9285
						   AND bc.BOM_ID = nBomId	
9286
				  	   ) newbom,
9287
					   (
9288
					   	SELECT bec.PROD_ID,
9289
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9290
						  FROM BASE_ENV_CONTENTS bec,
9291
						  	   OS_BASE_ENV obe,
9292
						  	   OPERATING_SYSTEMS os,
9293
							   NETWORK_NODES nn,
9294
							   BOM_CONTENTS bc,
9295
							   PACKAGE_VERSIONS pv
9296
						 WHERE obe.OS_ID = os.OS_ID
9297
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9298
						   AND os.NODE_ID = nn.NODE_ID
9299
						   AND bc.NODE_ID = nn.NODE_ID
9300
						   AND bec.PROD_ID = pv.PV_ID
9301
						   AND NOT pv.IS_PATCH IS NULL
9302
						   AND bc.BOM_ID = CompareBomId	
9303
					   ) oldbom
9304
				 WHERE newbom.PK (+) = oldbom.PK  
9305
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
9306
				   AND newbom.PK IS NULL				    	
9307
 
9308
		       ) qry,
9309
			   (
9310
 
9311
		  		SELECT nn.NODE_ID,
9312
					   nn.NODE_NAME,
9313
					   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9314
				  FROM OPERATING_SYSTEMS os,
9315
					   NETWORK_NODES nn,
9316
					   BOM_CONTENTS bc
9317
				 WHERE os.NODE_ID = nn.NODE_ID
9318
				   AND bc.NODE_ID = nn.NODE_ID
9319
				   AND bc.BOM_ID = nBomId
9320
 
9321
		  	   ) nlook,
9322
			   (
9323
 
9324
				SELECT nn.NODE_NAME, 
9325
					   MAX(nn.NODE_LIFE_CYCLE) AS LAST_LIFE_CYCLE
9326
				  FROM BOMS bo,
9327
				  	   BOM_CONTENTS bc,
9328
					   BRANCHES br,
9329
					   NETWORK_NODES nn
9330
				 WHERE bc.BOM_ID = bo.BOM_ID
9331
				   AND bo.BRANCH_ID = br.BRANCH_ID
9332
				   AND bc.NODE_ID = nn.NODE_ID
9333
				   AND br.PROJ_ID = ProjId
9334
		  	     GROUP BY nn.NODE_NAME
9335
 
9336
			   ) nlc
9337
		 WHERE nlook.PK = qry.PK 
9338
		   AND nlc.NODE_NAME = nlook.NODE_NAME;
9339
	recUpdateNode curUpdateNode%ROWTYPE;
9340
 
9341
 
9342
 
9343
BEGIN
9344
	/*--------------- Business Rules Here -------------------*/
9345
	/*-------------------------------------------------------*/
9346
 
9347
	-- Get some BOM details
9348
	SELECT bo.PARENT_BOM_ID, br.PROJ_ID, bo.BOM_VERSION ||'.'|| bo.BOM_LIFECYCLE INTO CompareBomId, ProjId, BomVersion
9349
	  FROM BOMS bo,
9350
	  	   BRANCHES br
9351
	 WHERE bo.BOM_ID = nBomId
9352
	   AND bo.BRANCH_ID = br.BRANCH_ID;
9353
 
9354
 
9355
	-- Update node version
9356
	OPEN curUpdateNode;
9357
	FETCH curUpdateNode INTO recUpdateNode;
9358
 
9359
	WHILE curUpdateNode%FOUND
9360
	LOOP
9361
 
9362
		UPDATE NETWORK_NODES nn SET
9363
			nn.NODE_VERSION = BomVersion,
9364
			nn.NODE_LIFE_CYCLE = recUpdateNode.NEW_LIFE_CYCLE
9365
		 WHERE nn.NODE_ID = recUpdateNode.NODE_ID;
9366
 
9367
		FETCH curUpdateNode INTO recUpdateNode;
9368
	END LOOP;
9369
 
9370
 
9371
	CLOSE curUpdateNode;	
9372
 
9373
END	Update_Nodes_Version;
9374
/*--------------------------------------------------------------------------------------------------*/
9375
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 ) IS
9376
 
9377
rowCount NUMBER;
9378
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
9379
nBomIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
9380
 
9381
BEGIN
9382
	/*--------------- Business Rules Here -------------------*/
9383
	IF (nBomId IS NULL) 
9384
	THEN
9385
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId );
9386
 
9387
	END IF;
9388
 
9389
	-- Check Requirements
9390
	pk_Requirements.Destroy_Bom ( nBomId );
9391
 
9392
	/*-------------------------------------------------------*/
9393
 
9394
 
9395
 
9396
	-- Load Collector
9397
	nBomIdCollector := IN_LIST_NUMBER( nBomId );
9398
 
9399
 
9400
	-- Destroy BASE_ENV
9401
	nIdCollector := NULL;
9402
	SELECT CAST ( MULTISET ( SELECT be.BASE_ENV_ID
9403
	  	   		  		   	   FROM BASE_ENV be
9404
	 						  WHERE be.BOM_ID IN   ( 
9405
								  	  		  	      SELECT * 
9406
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9407
												 	) 
9408
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
9409
 
9410
	Destroy_BaseEnv ( nIdCollector );
9411
 
9412
 
9413
 
9414
	-- Destroy NETWORK_NODES
9415
	nIdCollector := NULL;
9416
	SELECT CAST ( MULTISET ( SELECT bc.NODE_ID
9417
	  	   		  		   	   FROM BOM_CONTENTS bc
9418
	 						  WHERE bc.BOM_ID IN   ( 
9419
								  	  		  	      SELECT * 
9420
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9421
												 	) 
9422
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
9423
 
9424
	pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
9425
 
9426
 
9427
 
9428
	-- Destroy HARDWARE
9429
	nIdCollector := NULL;
9430
	SELECT CAST ( MULTISET ( SELECT hr.HARDWARE_NAME_ID
9431
	  	   		  		   	   FROM HARDWARE hr
9432
	 						  WHERE hr.BOM_ID IN   ( 
9433
								  	  		  	      SELECT * 
9434
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9435
												 	)
9436
							) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
9437
 
9438
	Destroy_Hardware ( nIdCollector );
9439
 
9440
 
9441
 
9442
	-- Destroy BOM_STATE
9443
	DELETE 
9444
	  FROM BOM_STATE bs
9445
	 WHERE bs.BOM_ID IN ( 
9446
	  	  		  	      SELECT * 
9447
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9448
					 	);
9449
 
9450
 
9451
	-- Destroy BOM_TRAIL
9452
	DELETE 
9453
	  FROM BOM_TRAIL bt
9454
	 WHERE bt.BOM_ID IN ( 
9455
	  	  		  	      SELECT * 
9456
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9457
					 	); 
9458
 
9459
 
9460
	---- Finnaly Destroy BOM ----
9461
	DELETE 
9462
	  FROM BOMS bo
9463
	 WHERE bo.BOM_ID IN ( 
9464
	  	  		  	      SELECT * 
9465
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9466
					 	);
9467
 
9468
 
9469
 
9470
END	Destroy_Bom;
9471
/*--------------------------------------------------------------------------------------------------*/
9472
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
9473
 
9474
 
9475
BEGIN
9476
	/*--------------- Business Rules Here -------------------*/
9477
	/*-------------------------------------------------------*/
9478
 
9479
	-- Destroy BASE_ENV_CONTENTS
9480
	DELETE
9481
	  FROM BASE_ENV_CONTENTS bec
9482
	 WHERE bec.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
9483
 
9484
	-- Destroy OS_BASE_ENV
9485
	DELETE
9486
	  FROM OS_BASE_ENV obe
9487
	 WHERE obe.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
9488
 
9489
	 -- Destroy BASE_ENV
9490
	DELETE
9491
	  FROM BASE_ENV be
9492
	 WHERE be.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
9493
 
9494
 
9495
END	Destroy_BaseEnv;
9496
/*--------------------------------------------------------------------------------------------------*/
9497
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
9498
 
9499
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
9500
 
9501
BEGIN
9502
	/*--------------- Business Rules Here -------------------*/
9503
	/*-------------------------------------------------------*/
9504
 
9505
    -- Destroy NETWORK_NODES
9506
    nIdCollector := NULL;
9507
    SELECT CAST ( MULTISET ( SELECT hn.NODE_ID
9508
	  	   		  		   	   FROM HARDWARE_NODE hn
9509
	 						  WHERE hn.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) ) 
9510
						   ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
9511
 
9512
    pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
9513
 
9514
 
9515
	-- Finnaly Destroy HARDWARE
9516
	DELETE
9517
	  FROM HARDWARE hd
9518
	 WHERE hd.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
9519
 
9520
END	Destroy_Hardware;
9521
/*--------------------------------------------------------------------------------------------------*/
9522
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
9523
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
9524
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
9525
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
9526
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
9527
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE ) IS
9528
 
9529
IsNotHead NUMBER;
9530
FromBranch NUMBER;
9531
LastRootVersion NUMBER;
9532
LastVersion BOMS.BOM_VERSION%TYPE;
9533
 
9534
CURSOR curBoms IS
9535
	SELECT Max ( CAST ( bo.BOM_VERSION AS NUMBER  ) ) AS LAST_VERSION
9536
		  FROM BOMS bo,
9537
		  	   BRANCHES br
9538
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
9539
		   AND br.PROJ_ID IN ( SELECT br.PROJ_ID  FROM BRANCHES br  WHERE br.BRANCH_ID = nToBranchId )	
9540
		   AND bo.BOM_NAME_ID = nBomNameId;
9541
recBoms curBoms%ROWTYPE;
9542
 
9543
 
9544
BEGIN
9545
 
9546
	/*--------------- Business Rules Here -------------------*/
9547
	/*-------------------------------------------------------*/
9548
	-- Get Last Root Version
9549
 
9550
	OPEN curBoms;
9551
	FETCH curBoms INTO recBoms;	
9552
	LastRootVersion := recBoms.LAST_VERSION;
9553
	CLOSE curBoms;
9554
 
9555
 
9556
 
9557
 
9558
 
9559
	IF nFromBomId IS NULL THEN
9560
		/* Blank BOM Required */
9561
 
9562
		-- Get Next Available Version
9563
		sNextVersion := '1';
9564
		sNextLifeCycle := '0';
9565
		IF LastRootVersion IS NOT NULL THEN
9566
			sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
9567
		END IF;
9568
 
9569
 
9570
 
9571
	ELSE
9572
		/* Create Bom From ... */
9573
 
9574
		-- Check if BOM is comming from different Iteration
9575
		SELECT bo.BRANCH_ID INTO FromBranch
9576
		  FROM BOMS bo
9577
		 WHERE bo.BOM_ID = nFromBomId; 
9578
 
9579
 
9580
 
9581
		IF FromBranch = nToBranchId THEN
9582
			/* Bom is comming from same Iteration */
9583
			/* i.e. Continue on same version stream. */
9584
 
9585
			-- Set parent_id
9586
			nParentBomId := nFromBomId;
9587
 
9588
 
9589
			-- Get Last Version 
9590
			SELECT bo.BOM_VERSION INTO LastVersion
9591
			  FROM BOMS bo
9592
			 WHERE bo.BOM_ID = nFromBomId;
9593
 
9594
 
9595
			-- Check if Bom is Head (i.e. Last on its branch )
9596
			SELECT COUNT(*) INTO IsNotHead
9597
			  FROM BOMS bo,
9598
			  	   BRANCHES br
9599
			 WHERE bo.BRANCH_ID = br.BRANCH_ID
9600
			   AND br.PROJ_ID IN ( SELECT br.PROJ_ID FROM BRANCHES br WHERE br.BRANCH_ID = FromBranch )
9601
			   AND bo.PARENT_BOM_ID = nFromBomId
9602
			   AND bo.BOM_VERSION = LastVersion
9603
			   AND bo.BOM_ID != bo.PARENT_BOM_ID;
9604
 
9605
 
9606
			IF IsNotHead = 0 THEN
9607
				/* Bom IS Head (i.e. Last on its branch ) */
9608
 
9609
				-- Get Bom Version and LifeCycle
9610
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
9611
				  FROM BOMS bo
9612
				 WHERE bo.BOM_ID = nFromBomId;
9613
 
9614
				-- Increase Lifecycle
9615
				sNextLifeCycle := CAST (  ( CAST( sNextLifeCycle AS NUMBER ) + 1 )  AS VARCHAR2 );
9616
 
9617
 
9618
			ELSE
9619
				/* Bom IS NOT Head */
9620
 
9621
				-- Get Bom Version and LifeCycle
9622
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
9623
				  FROM BOMS bo
9624
				 WHERE bo.BOM_ID = nFromBomId;
9625
 
9626
				-- Branch Bom Version 
9627
				sNextVersion := sNextVersion ||'.'|| sNextLifeCycle;
9628
 
9629
				-- Reset Lifecycle to 1
9630
				sNextLifeCycle := '1';
9631
 
9632
			END IF;	
9633
 
9634
 
9635
		ELSE
9636
			/* BOM is comming from Different Iteration */
9637
			/* i.e. Start new version stream. */
9638
 
9639
			-- Get Next Available Version
9640
			sNextVersion := '1';
9641
			sNextLifeCycle := '0';
9642
			IF LastRootVersion IS NOT NULL THEN
9643
				sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
9644
			END IF;
9645
 
9646
		END IF;
9647
 
9648
 
9649
	END IF;
9650
 
9651
 
9652
END	Get_Next_Version;
9653
/*--------------------------------------------------------------------------------------------------*/
9654
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
9655
					   nUserId IN BOM_STATE.USER_ID%TYPE,
9656
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
9657
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL ) IS
9658
 
9659
rowCount NUMBER;	
9660
IsOfficial BOMS.IS_READONLY%TYPE;					 
9661
StateId BOM_STATE.STATE_ID%TYPE;
9662
StateName STATES.STATE_NAME%TYPE;
9663
 
9664
BEGIN
9665
	/*--------------- Business Rules Here -------------------*/
9666
	-- Check if already released
9667
	SELECT Count(*) INTO rowCount
9668
	  FROM BOM_STATE bs
9669
	 WHERE bs.BOM_ID = nBomId
9670
	   AND bs.STATE_ID = nToState;
9671
 
9672
	IF rowCount > 0 THEN
9673
	   RAISE_APPLICATION_ERROR (-20000, 'This BOM is already release' );
9674
	END IF;
9675
 
9676
 
9677
	-- Check if Bom is official
9678
	SELECT bo.IS_READONLY INTO IsOfficial
9679
	  FROM BOMS bo
9680
	 WHERE bo.BOM_ID = nBomId;
9681
 
9682
	IF (IsOfficial != 'Y') AND (nToState IS NOT NULL) THEN
9683
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first' );
9684
	END IF;
9685
	/*-------------------------------------------------------*/
9686
 
9687
 
9688
	-- Get State --
9689
	StateId := nToState;
9690
	IF StateId IS NULL THEN
9691
		-- If state_id is null it is considered as state_type_enum = 'BOM Creator'
9692
		SELECT st.STATE_ID INTO StateId
9693
		  FROM BOMS bo,
9694
		  	   BRANCHES br,
9695
			   DM_PROJECTS proj,
9696
			   STATES st
9697
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
9698
		   AND br.PROJ_ID = proj.PROJ_ID
9699
		   AND st.PROJ_ID = proj.PROJ_ID
9700
		   AND bo.BOM_ID = nBomId
9701
		   AND st.STATE_TYPE_ENUM = GET_SYSTEM_VALUE('enumSTATE_TYPE_CREATOR');	
9702
	END IF;
9703
 
9704
 
9705
	-- Add Bom to State --
9706
	INSERT INTO BOM_STATE (BOM_ID, STATE_ID, DATE_STAMP, IS_DISPLAYED, USER_ID )
9707
	VALUES( nBomId,
9708
			StateId,
9709
			GET_DATE(),
9710
			'Y',
9711
			nUserId );
9712
 
9713
 
9714
 
9715
	-- Auto-Hide Bom
9716
	pk_State.Auto_Hide ( StateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_RELEASE_TO') );
9717
 
9718
 
9719
	/* Log BOM_TRAIL */
9720
	-- Get State Name --
9721
	SELECT st.STATE_NAME INTO StateName
9722
	  FROM STATES st
9723
	 WHERE st.STATE_ID = StateId;
9724
 
9725
	-- Log Action 
9726
	pk_Bom.Log_Bom_Trail ( nBomId, 'RELEASED TO: '|| StateName, nUserId, sComments );
9727
 
9728
 
9729
END	Release_To;
9730
/*--------------------------------------------------------------------------------------------------*/
9731
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
9732
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
9733
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
9734
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE ) IS
9735
 
9736
IsRejected REJECTION_TRAIL.IS_REJECTED%TYPE;
9737
 
9738
BEGIN
9739
	/*--------------- Business Rules Here -------------------*/
9740
	IF (nBomId IS NULL)
9741
	THEN
9742
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId  );
9743
	END IF;
9744
	/*-------------------------------------------------------*/
9745
 
9746
	IF nRejectSeq IS NULL THEN
9747
		/* CREATE New Note */
9748
 
9749
		-- Get last IsRejected state
9750
		SELECT rt.IS_REJECTED INTO IsRejected
9751
		  FROM REJECTION_TRAIL rt
9752
		 WHERE rt.ENTITY_ID = nBomId
9753
		   AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
9754
		   AND rt.REJECT_SEQ =
9755
		   (
9756
		   	SELECT MAX(REJECT_SEQ) FROM
9757
			REJECTION_TRAIL rt
9758
		 	WHERE rt.ENTITY_ID = nBomId
9759
		   	AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
9760
 
9761
		   );
9762
 
9763
 
9764
		/* Log Rejection Trail */
9765
		pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, IsRejected, nUserId, sComments );
9766
 
9767
	ELSE
9768
		/* EDIT Note */
9769
		UPDATE REJECTION_TRAIL rt SET
9770
			rt.COMMENTS = sComments,
9771
			rt.USER_ID = nUserId,
9772
			rt.DATE_TIME_STAMP = GET_DATETIME()
9773
		WHERE rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
9774
		  AND rt.ENTITY_ID = nBomId
9775
		  AND rt.REJECT_SEQ = nRejectSeq;
9776
 
9777
 
9778
	END IF;
9779
 
9780
 
9781
END	Accept_Reject_Comments;
9782
/*--------------------------------------------------------------------------------------------------*/
9783
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
9784
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
9785
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
9786
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  ) IS
9787
 
9788
 
9789
BEGIN
9790
	/*--------------- Business Rules Here -------------------*/
9791
	IF (nBomId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
9792
	THEN
9793
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId ||', sAction='|| sAction ||', nUserId='|| nUserId );
9794
	END IF;
9795
	/*-------------------------------------------------------*/
9796
 
9797
	INSERT INTO BOM_TRAIL ( BOM_ID, TRAIL_ACTION, TRAIL_COMMENTS, USER_ID, DATE_TIME_STAMP )
9798
	VALUES ( nBomId, sAction, sComments, nUserId, GET_DATETIME() );	
9799
 
9800
END	Log_Bom_Trail;
9801
/*--------------------------------------------------------------------------------------------------*/
9802
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
9803
						  sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
9804
						  nUserId IN NODE_TRAIL.USER_ID%TYPE  ) IS
9805
 
9806
 
9807
BEGIN
9808
	/*--------------- Business Rules Here -------------------*/
9809
	IF (nNodeId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
9810
	THEN
9811
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId= '|| nNodeId ||', sAction='|| sAction ||', nUserId='|| nUserId );
9812
	END IF;
9813
	/*-------------------------------------------------------*/
9814
 
9815
	INSERT INTO NODE_TRAIL ( NODE_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
9816
	VALUES ( nNodeId, sAction, nUserId, GET_DATETIME() );	
9817
 
9818
END	Log_Node_Trail;
9819
/*--------------------------------------------------------------------------------------------------*/
9820
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
9821
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
9822
						  nUserId IN OS_TRAIL.USER_ID%TYPE  ) IS
9823
 
9824
 
9825
BEGIN
9826
	/*--------------- Business Rules Here -------------------*/
9827
	IF (nOsId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
9828
	THEN
9829
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nOsId ||', sAction='|| sAction ||', nUserId='|| nUserId );
9830
	END IF;
9831
	/*-------------------------------------------------------*/
9832
 
9833
	INSERT INTO OS_TRAIL ( OS_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
9834
	VALUES ( nOsId, sAction, nUserId, GET_DATETIME() );	
9835
 
9836
END	Log_Os_Trail;
9837
/*--------------------------------------------------------------------------------------------------*/
9838
 
9839
END pk_Bom;
9840
/
9841
 
9842
CREATE OR REPLACE PACKAGE BODY pk_Operating_System
9843
IS
9844
/* ---------------------------------------------------------------------------
9845
    Modified: Rupesh Solanki
9846
	Date: 20/03/2006
9847
   --------------------------------------------------------------------------- */
9848
 
9849
/*--------------------------------------------------------------------------------------------------*/
9850
PROCEDURE Add_Os ( sOsName IN OPERATING_SYSTEMS.OS_NAME%TYPE,
9851
		  		   sOsComments IN OPERATING_SYSTEMS.OS_COMMENTS%TYPE,
9852
				   sNodeSpecFile IN OPERATING_SYSTEMS.NODE_SPEC_FILE%TYPE,
9853
 				   sNotXML IN OPERATING_SYSTEMS.NOT_XML%TYPE,
9854
				   nNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
9855
				   nBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
9856
				   nBosId IN BASE_ENV.BOS_ID%TYPE DEFAULT NULL,
9857
				   nUserId IN NUMBER ) IS
9858
 
9859
OsID NUMBER;
9860
BosId NUMBER;
9861
BaseEnvId NUMBER;
9862
BomId NUMBER;
9863
 
9864
CURSOR curOs IS -- Check Node Name Duplicates
9865
		SELECT os.OS_ID
9866
		  FROM OPERATING_SYSTEMS os
9867
		 WHERE os.NODE_ID = nNodeId
9868
		   AND UPPER(os.OS_NAME) = UPPER(sOsName);
9869
recOs curOs%ROWTYPE;
9870
 
9871
DUPLICATE_OS_NAME EXCEPTION;
9872
 
9873
BEGIN
9874
	/*--------------- Business Rules Here -------------------*/
9875
	-- Check for duplicate names
9876
	OPEN curOs;
9877
    FETCH curOs INTO recOs;
9878
 
9879
    IF curOs%FOUND
9880
    THEN
9881
		RAISE DUPLICATE_OS_NAME;
9882
	END IF;
9883
 
9884
	CLOSE curOs;
9885
	/*-------------------------------------------------------*/
9886
 
9887
	-- Get os_id
9888
	SELECT SEQ_OS_ID.NEXTVAL INTO OsID FROM DUAL;
9889
 
9890
	-- Insert new OS
9891
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, NODE_SPEC_FILE, NOT_XML ) 
9892
	VALUES ( OsID, sOsName, nNodeId, sOsComments, sNodeSpecFile, sNotXML  );
9893
 
9894
 
9895
 
9896
	/* Set up Base Configuration */
9897
	IF nBaseEnvName IS NOT NULL THEN
9898
 
9899
		-- Get bom_id
9900
		SELECT bc.BOM_ID INTO BomId
9901
		  FROM BOM_CONTENTS bc
9902
		 WHERE bc.NODE_ID = nNodeId;
9903
 
9904
 
9905
		-- Set bos _id to default
9906
		BosId := 5;		-- This is Generic OS in BOS_TYPES table
9907
		IF nBosId IS NOT NULL THEN
9908
			BosId := nBosId;
9909
		END IF;
9910
 
9911
 
9912
		-- Get base_env_id
9913
		BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
9914
 
9915
 
9916
		-- Create Base Env if Required
9917
		IF BaseEnvId IS NULL THEN
9918
 
9919
			pk_Base_Env.Add_Base_Env ( nBaseEnvName, BosId, BomId, OsID, nUserId );
9920
 
9921
			BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
9922
 
9923
		END IF;
9924
 
9925
		-- Finally assign this  base env to OS
9926
		INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID )
9927
		VALUES ( OsID, BaseEnvId );
9928
 
9929
	END IF;
9930
 
9931
 
9932
	/* Log BOM_TRAIL */
9933
	pk_Bom.Log_Node_Trail ( nNodeId, 'Added Operating System: '||sOsName, nUserId );	
9934
 
9935
 
9936
	EXCEPTION
9937
    WHEN DUPLICATE_OS_NAME
9938
	THEN		
9939
		RAISE_APPLICATION_ERROR (-20000, 'OS Name "'|| sOsName ||'" is Already Used in this Network Node.');
9940
 
9941
END	Add_Os;
9942
/*--------------------------------------------------------------------------------------------------*/
9943
PROCEDURE Update_Os ( nOsId IN OPERATING_SYSTEMS.OS_ID%TYPE,
9944
					  sOsName IN OPERATING_SYSTEMS.OS_NAME%TYPE,
9945
		  		   	  sOsComments IN OPERATING_SYSTEMS.OS_COMMENTS%TYPE,
9946
				  	  nBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
9947
					  sNodeSpecFile IN OPERATING_SYSTEMS.NODE_SPEC_FILE%TYPE,
9948
					  sNotXML IN OPERATING_SYSTEMS.NOT_XML%TYPE,
9949
					  nUserId IN NUMBER  ) IS
9950
 
9951
BomId NUMBER;
9952
BosId NUMBER;
9953
BaseEnvId NUMBER;
9954
NodeId NUMBER;
9955
 
9956
CURSOR curOs IS
9957
		SELECT os.OS_ID
9958
		  FROM OPERATING_SYSTEMS os
9959
		 WHERE os.NODE_ID = NodeId
9960
		   AND UPPER(os.OS_NAME) = UPPER(sOsName)
9961
		   AND os.OS_ID != nOsId;
9962
recOs curOs%ROWTYPE;
9963
 
9964
DUPLICATE_OS_NAME EXCEPTION;
9965
 
9966
BEGIN
9967
	/*--------------- Business Rules Here -------------------*/
9968
	-- Check for parameters
9969
	IF (nOsId IS NULL) 
9970
	THEN
9971
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId='|| nOsId   );
9972
 
9973
	END IF;
9974
 
9975
 
9976
	-- Get node_id
9977
	SELECT os.NODE_ID INTO NodeId
9978
	  FROM OPERATING_SYSTEMS os
9979
	 WHERE os.OS_ID = nOsId;
9980
 
9981
 
9982
	-- Check for duplicate names
9983
	OPEN curOs;
9984
    FETCH curOs INTO recOs;
9985
 
9986
    IF curOs%FOUND
9987
    THEN
9988
		RAISE DUPLICATE_OS_NAME;
9989
	END IF;
9990
 
9991
	CLOSE curOs;
9992
	/*-------------------------------------------------------*/
9993
 
9994
	-- Delete current Base Env
9995
	DELETE
9996
	  FROM OS_BASE_ENV obe
9997
	 WHERE obe.OS_ID = nOsId;
9998
 
9999
 
10000
	/* Set up Base Configuration */
10001
	IF nBaseEnvName IS NOT NULL THEN
10002
 
10003
		-- Get bom_id
10004
		SELECT bc.BOM_ID INTO BomId
10005
		  FROM BOM_CONTENTS bc
10006
		 WHERE bc.NODE_ID = NodeId;
10007
 
10008
 
10009
		-- Get base_env_id
10010
		BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
10011
 
10012
 
10013
		-- Set bos _id to default
10014
		BosId := 5;		-- This is Generic OS in BOS_TYPES table
10015
 
10016
 
10017
		-- Create Base Env if Required
10018
		IF BaseEnvId IS NULL THEN
10019
 
10020
			pk_Base_Env.Add_Base_Env ( nBaseEnvName, BosId, BomId, nOsId, nUserId );
10021
 
10022
			BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
10023
 
10024
		ELSE
10025
			-- Get bos_id
10026
			SELECT be.BOS_ID INTO BosId
10027
			  FROM BASE_ENV be
10028
			 WHERE be.BASE_ENV_ID = BaseEnvId;
10029
 
10030
		END IF;
10031
 
10032
 
10033
		-- Finally assign this  base env to OS
10034
		INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID )
10035
		VALUES ( nOsId, BaseEnvId );
10036
 
10037
	END IF;
10038
 
10039
 
10040
 
10041
	-- Update Os Details
10042
	UPDATE OPERATING_SYSTEMS os SET
10043
		os.OS_NAME = sOsName,
10044
		os.OS_COMMENTS = sOsComments,
10045
		os.NODE_SPEC_FILE = sNodeSpecFile,
10046
		os.NOT_XML = sNotXML
10047
	 WHERE os.OS_ID = nOsId;
10048
 
10049
	/* Log BOM_TRAIL */
10050
	pk_Bom.Log_Node_Trail ( NodeId, 'Updated Operating System: '||sOsName, nUserId );		 
10051
 
10052
 
10053
	EXCEPTION
10054
    WHEN DUPLICATE_OS_NAME
10055
	THEN		
10056
		RAISE_APPLICATION_ERROR (-20000, 'OS Name "'|| sOsName ||'" is Already Used in this Network Node.');
10057
 
10058
END	Update_Os;
10059
/*--------------------------------------------------------------------------------------------------*/
10060
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
10061
		  				   	 sProdVersion IN VARCHAR2,
10062
							 nOsId IN OS_CONTENTS.OS_ID%TYPE,
10063
							 nUserId IN NUMBER,
10064
							 sComments IN VARCHAR2 DEFAULT NULL ) IS
10065
 
10066
ProdId PACKAGE_VERSIONS.PV_ID%TYPE;
10067
ProdName PACKAGES.PKG_NAME%TYPE;
10068
 
10069
CURSOR prod_cur IS
10070
	SELECT osc.PROD_ID
10071
	  FROM OS_CONTENTS osc
10072
	 WHERE osc.PROD_ID = ProdId
10073
	   AND osc.OS_ID = nOsId;
10074
prod_rec prod_cur%ROWTYPE;
10075
 
10076
BEGIN
10077
	/*--------------- Business Rules Here -------------------*/                             
10078
	IF (NOT nPkgId IS NULL) AND (sProdVersion IS NULL) AND (NOT nOsId IS NULL) AND (NOT nUserId IS NULL) THEN
10079
	   RAISE_APPLICATION_ERROR (-20000, 'Please provide Product Version.' );
10080
 
10081
	ELSIF (nPkgId IS NULL) OR (sProdVersion IS NULL) OR (nOsId IS NULL) OR (nUserId IS NULL) THEN
10082
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nPkgId= '|| nPkgId ||', sProdVersion='|| sProdVersion ||', nOsId='|| nOsId ||', nUserId='|| nUserId );
10083
 
10084
	END IF;
10085
	/*-------------------------------------------------------*/
10086
 
10087
	-- Get Product Name --
10088
	SELECT PKG_NAME INTO ProdName FROM PACKAGES WHERE PKG_ID = nPkgId;
10089
 
10090
 
10091
	-- Create Product Version in Release Manager if Required, and Get Prod_id --
10092
	Seed_Package_Names_Versions ( ProdName, sProdVersion, nUserId, ProdId );
10093
 
10094
 
10095
	-- Add Product To OS --
10096
	OPEN prod_cur;
10097
	FETCH prod_cur INTO prod_rec;
10098
 
10099
	IF prod_cur%NOTFOUND THEN
10100
	   pk_Product.Add_Product ( ProdId, nOsId, nUserId );
10101
 
10102
	   -- Add comments if required
10103
	   IF (NOT sComments IS NULL) THEN
10104
	   		UPDATE OS_CONTENTS osc SET
10105
				osc.PRODUCT_COMMENTS = sComments
10106
			 WHERE osc.OS_ID = nOsId
10107
			   AND osc.PROD_ID = ProdId;
10108
 
10109
	   END IF;
10110
 
10111
 
10112
	END IF;
10113
 
10114
	CLOSE prod_cur;
10115
 
10116
 
10117
END	Add_Product_Wrap;
10118
/*--------------------------------------------------------------------------------------------------*/
10119
PROCEDURE Set_Base_Conf ( nOsId IN OS_BASE_ENV.OS_ID%TYPE,
10120
		  				  nBaseEnvId IN OS_BASE_ENV.BASE_ENV_ID%TYPE ) IS
10121
 
10122
BEGIN
10123
	/*--------------- Business Rules Here -------------------*/
10124
	/*-------------------------------------------------------*/
10125
 
10126
	-- Delete current Base Conf setting
10127
	DELETE FROM OS_BASE_ENV
10128
	WHERE OS_ID = nOsId;
10129
 
10130
	-- Set new Base Conf	
10131
	IF NOT nBaseEnvId IS NULL
10132
	THEN
10133
		INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID )
10134
		VALUES ( nOsId, nBaseEnvId );
10135
	END IF;
10136
 
10137
END	Set_Base_Conf;
10138
/*--------------------------------------------------------------------------------------------------*/
10139
PROCEDURE Shift_Product_SeqNum ( nProdId IN OS_CONTENTS.PROD_ID%TYPE,
10140
		  				 	     nOsId IN OS_CONTENTS.OS_ID%TYPE,
10141
						 		 nToSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE ) IS
10142
 
10143
currSeqNum NUMBER;
10144
FromSeqNum NUMBER;
10145
 
10146
BEGIN
10147
	 -- Get Current seq_num
10148
	 SELECT osc.SEQ_NUM INTO currSeqNum
10149
	   FROM OS_CONTENTS osc
10150
	  WHERE osc.OS_ID = nOsId
10151
	    AND osc.PROD_ID = nProdId;
10152
 
10153
 
10154
	 IF currSeqNum > nToSeqNum
10155
	 THEN
10156
 
10157
		FromSeqNum := nToSeqNum;
10158
 
10159
			-- Shift others Up
10160
		UPDATE OS_CONTENTS osc SET
10161
			   osc.SEQ_NUM = osc.SEQ_NUM + 1
10162
		 WHERE osc.OS_ID = nOsId 
10163
		   AND osc.PROD_ID != nProdId
10164
		   AND osc.SEQ_NUM BETWEEN  FromSeqNum  AND  currSeqNum - 1;
10165
 
10166
 
10167
	 ELSIF currSeqNum < nToSeqNum
10168
	 THEN
10169
 
10170
		FromSeqNum := currSeqNum + 1;  
10171
 
10172
		 -- Shift others Down
10173
		UPDATE OS_CONTENTS osc SET
10174
		   	   osc.SEQ_NUM = osc.SEQ_NUM - 1
10175
		 WHERE osc.OS_ID = nOsId 
10176
		   AND osc.PROD_ID != nProdId
10177
		   AND osc.SEQ_NUM BETWEEN  FromSeqNum  AND  nToSeqNum;
10178
 
10179
	 END IF;
10180
 
10181
 
10182
	 -- Move Product to new seq_num
10183
	 UPDATE OS_CONTENTS osc SET
10184
		    osc.SEQ_NUM = nToSeqNum
10185
	  WHERE osc.OS_ID = nOsId 
10186
	    AND osc.PROD_ID = nProdId;
10187
 
10188
 
10189
 
10190
END Shift_Product_SeqNum;
10191
/*--------------------------------------------------------------------------------------------------*/
10192
PROCEDURE Shift_Bulk_Products_SeqNum ( sProdIdList IN VARCHAR2,
10193
		  							   nOsId IN OS_CONTENTS.OS_ID%TYPE,
10194
									   cDirection IN CHAR ) IS
10195
 
10196
MinSeqNum	  NUMBER := 1;									   
10197
FirstSeqNum   NUMBER;
10198
LastSeqNum 	  NUMBER;
10199
MaxSeqNum	  NUMBER;
10200
 
10201
 
10202
CURSOR osc_down_cur IS
10203
	SELECT osc.prod_id, osc.seq_num
10204
	  FROM OS_CONTENTS osc
10205
	 WHERE osc.OS_ID = nOsId
10206
	   AND osc.PROD_ID IN (
10207
						   SELECT *
10208
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10209
	   	   			   	   )
10210
	ORDER BY osc.seq_num ASC;
10211
osc_down_rec osc_down_cur%ROWTYPE;	
10212
 
10213
CURSOR osc_up_cur IS
10214
	SELECT osc.prod_id, osc.seq_num
10215
	  FROM OS_CONTENTS osc
10216
	 WHERE osc.OS_ID = nOsId
10217
	   AND osc.PROD_ID IN (
10218
						   SELECT *
10219
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10220
	   	   			   	   )
10221
	ORDER BY osc.seq_num DESC;
10222
osc_up_rec osc_up_cur%ROWTYPE;
10223
 
10224
 
10225
BEGIN
10226
	/*--------------- Business Rules Here -------------------*/
10227
	IF sProdIdList IS NULL
10228
	THEN
10229
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
10230
 
10231
	ELSIF (nOsId IS NULL) OR (cDirection IS NULL)
10232
	THEN
10233
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nOsId ||', cDirection='|| cDirection );
10234
 
10235
	END IF;
10236
	/*-------------------------------------------------------*/
10237
 
10238
 
10239
 
10240
	-- Get First seq_num
10241
	SELECT MIN( osc.SEQ_NUM ) INTO FirstSeqNum
10242
	  FROM OS_CONTENTS osc
10243
	 WHERE osc.OS_ID = nOsId
10244
	   AND osc.PROD_ID IN (
10245
						   SELECT *
10246
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10247
	   	   			   	   );
10248
 
10249
	-- Get Last seq_num
10250
	SELECT MAX( osc.SEQ_NUM ) INTO LastSeqNum
10251
	  FROM OS_CONTENTS osc
10252
	 WHERE osc.OS_ID = nOsId
10253
	   AND osc.PROD_ID IN (
10254
						   SELECT *
10255
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10256
	   	   			   	   );
10257
 
10258
    -- Get Max seq_num
10259
	SELECT MAX( osc.SEQ_NUM ) INTO MaxSeqNum
10260
	  FROM OS_CONTENTS osc
10261
	 WHERE osc.OS_ID = nOsId;
10262
 
10263
 
10264
 
10265
    IF cDirection = '+'
10266
	THEN
10267
		-- Shift UP
10268
		IF LastSeqNum < MaxSeqNum
10269
		THEN
10270
			/* Can only shift up if maxseqnum is not reached */
10271
			OPEN osc_up_cur;
10272
			FETCH osc_up_cur INTO osc_up_rec;
10273
 
10274
			WHILE osc_up_cur%FOUND
10275
			LOOP
10276
				Shift_Product_SeqNum ( osc_up_rec.PROD_ID, nOsId, osc_up_rec.SEQ_NUM + 1  );
10277
 
10278
				FETCH osc_up_cur INTO osc_up_rec;
10279
			END LOOP;
10280
 
10281
 
10282
			CLOSE osc_up_cur;
10283
 
10284
 
10285
		END IF;
10286
 
10287
 
10288
 
10289
 
10290
	ELSIF cDirection = '-'
10291
	THEN
10292
		-- Shift DOWN
10293
		IF FirstSeqNum > MinSeqNum
10294
		THEN
10295
			/* Can only shift down if minseqnum is not reached */
10296
			OPEN osc_down_cur;
10297
			FETCH osc_down_cur INTO osc_down_rec;
10298
 
10299
			WHILE osc_down_cur%FOUND
10300
			LOOP
10301
				Shift_Product_SeqNum ( osc_down_rec.PROD_ID, nOsId, osc_down_rec.SEQ_NUM - 1  );
10302
 
10303
				FETCH osc_down_cur INTO osc_down_rec;
10304
			END LOOP;
10305
 
10306
			CLOSE osc_down_cur;
10307
 
10308
 
10309
		END IF;
10310
 
10311
 
10312
	END IF;
10313
 
10314
 
10315
END Shift_Bulk_Products_SeqNum;
10316
/*--------------------------------------------------------------------------------------------------*/
10317
PROCEDURE Destroy_Os ( nOsIdCollection IN DEPMGR_NUMBER_TAB_t, nUserId IN NUMBER ) IS
10318
 
10319
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10320
NodeId NUMBER;
10321
OsName VARCHAR2(4000);
10322
 
10323
BEGIN
10324
	/*--------------- Business Rules Here -------------------*/
10325
	/*-------------------------------------------------------*/
10326
 
10327
	IF (nOsIdCollection.COUNT > 0) THEN   
10328
			--Log Action Trail
10329
		FOR i IN 1..nOsIdCollection.COUNT
10330
		LOOP
10331
			-- Get node_id
10332
			SELECT os.NODE_ID INTO NodeId
10333
	  		FROM OPERATING_SYSTEMS os
10334
			WHERE os.OS_ID = nOsIdCollection(i);	
10335
 
10336
			--Get os_name
10337
			SELECT os.OS_NAME INTO OsName
10338
	  		FROM OPERATING_SYSTEMS os
10339
			WHERE os.OS_ID = nOsIdCollection(i);	
10340
 
10341
			/* Log BOM_TRAIL */
10342
			pk_Bom.Log_Node_Trail ( NodeId, 'Deleted Operating System: '||OsName, nUserId );		 
10343
 
10344
 
10345
 
10346
		END LOOP;
10347
 
10348
		-- Destroy PROCESSES_CONFIG
10349
		DELETE 
10350
		  FROM PROCESSES_CONFIG pc
10351
		 WHERE pc.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10352
 
10353
 
10354
		-- Destroy OS_CONTENTS
10355
		DELETE 
10356
		  FROM OS_CONTENTS osc
10357
		 WHERE osc.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10358
 
10359
 
10360
		-- Destroy OS_BASE_ENV
10361
		DELETE 
10362
		  FROM OS_BASE_ENV obe
10363
		 WHERE obe.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10364
 
10365
 
10366
		-- Destroy HIDE_PRODUCTS
10367
		DELETE 
10368
		  FROM HIDE_PRODUCTS hp
10369
		 WHERE hp.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) ); 
10370
 
10371
 
10372
		-- Destroy OS_TRAIL
10373
		DELETE
10374
		  FROM OS_TRAIL ot
10375
		 WHERE ot.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) ); 
10376
 
10377
 
10378
		---- Finnaly destroy Operating System ----
10379
		DELETE
10380
		  FROM OPERATING_SYSTEMS os
10381
		 WHERE os.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10382
 
10383
 
10384
 
10385
 
10386
	END IF; 
10387
 
10388
 
10389
 
10390
END	Destroy_Os;
10391
/*--------------------------------------------------------------------------------------------------*/
10392
PROCEDURE Destroy_Os ( nOsIdList IN VARCHAR2, nUserId IN NUMBER ) IS
10393
 
10394
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10395
 
10396
BEGIN
10397
	/*--------------- Business Rules Here -------------------*/
10398
	IF nOsIdList IS NULL
10399
	THEN
10400
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Operating Systems.');
10401
 
10402
	END IF;
10403
	/*-------------------------------------------------------*/
10404
	nIdCollector := IN_LIST_NUMBER ( nOsIdList );
10405
 
10406
	Destroy_Os ( nIdCollector, nUserId );					 
10407
 
10408
END	Destroy_Os;
10409
 
10410
/*-------------------------------------------------------------------------------------------------------*/
10411
  PROCEDURE add_package_process (
10412
      nprocidlist   IN   VARCHAR2,
10413
	  npvid 		IN 	 processes_config.prod_id%TYPE,	  
10414
      nosid         IN   os_contents.os_id%TYPE,
10415
      nuserid       IN   NUMBER
10416
   )
10417
   IS
10418
      processname   VARCHAR2 (4000);
10419
	  PkgName 		VARCHAR2 (4000);
10420
	  nPkgId		NUMBER;
10421
 
10422
	  nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10423
 
10424
 
10425
 
10426
/*Rupesh Release on 17/05/2006*/
10427
     CURSOR proc_cur
10428
      IS
10429
         SELECT prc.proc_id, prc.proc_name, prc.proc_description, 
10430
		 		prc.run_as, prc.pkg_owner, prc.is_interface
10431
           FROM processes prc
10432
          WHERE prc.proc_id IN (
10433
                   SELECT *
10434
                     FROM THE
10435
                             (SELECT CAST
10436
                                        (in_list_number (nprocidlist) AS DEPMGR_NUMBER_TAB_t
10437
                                        )
10438
                                FROM DUAL
10439
                             ));
10440
 
10441
      proc_rec      proc_cur%ROWTYPE;
10442
   BEGIN
10443
 
10444
   BEGIN
10445
   	 SELECT PKG.PKG_NAME, PKG.PKG_ID INTO PkgName, nPkgId
10446
	 FROM PACKAGE_VERSIONS PV, PACKAGES PKG
10447
	 WHERE PV.PV_ID = npvid
10448
	 AND PKG.PKG_ID = PV.PKG_ID;
10449
	 EXCEPTION
10450
	 WHEN NO_DATA_FOUND THEN
10451
	 	  RAISE_APPLICATION_ERROR (-20000, 'Select the Package Name and Version: ' );
10452
   END;	 
10453
 
10454
 
10455
      OPEN proc_cur;
10456
 
10457
      FETCH proc_cur
10458
       INTO proc_rec;
10459
 
10460
      WHILE proc_cur%FOUND
10461
      LOOP
10462
         INSERT INTO processes_config
10463
                     (proc_id, prod_id, os_id, pkg_health_tag, cmd_interface, pkg_owner, is_interface, proc_description, pkg_id
10464
                     )
10465
              VALUES (proc_rec.proc_id, npvid, nosid, proc_rec.proc_name, proc_rec.run_as, proc_rec.pkg_owner, proc_rec.is_interface, proc_rec.proc_description, nPkgId
10466
                     );
10467
 
10468
         SELECT prc.proc_name
10469
           INTO processname
10470
           FROM processes prc
10471
          WHERE prc.proc_id = proc_rec.proc_id;
10472
 
10473
	-- Log Action --
10474
	pk_Bom.Log_Os_Trail ( nosid,  
10475
						  'Added process with health tag '|| processname ||' for product '|| PkgName,
10476
						  nUserId );
10477
 
10478
         FETCH proc_cur
10479
          INTO proc_rec;
10480
      END LOOP;
10481
   END;
10482
 
10483
/*--------------------------------------------------------------------------------------------------*/
10484
/*-------------------------------------------------------------------------------------------------------*/
10485
  PROCEDURE add_packages_process (
10486
      npvidlist   	IN   VARCHAR2,	  
10487
      nosid         IN   os_contents.os_id%TYPE,
10488
      nuserid       IN   NUMBER
10489
   )
10490
   IS
10491
      processname   VARCHAR2 (4000);
10492
	  PkgName 		VARCHAR2 (4000);
10493
 
10494
	  nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10495
 
10496
 
10497
 
10498
/*Rupesh Release on 17/05/2006*/
10499
     CURSOR proc_cur
10500
      IS
10501
         SELECT prc.proc_id, prc.proc_name, prc.proc_description, 
10502
		 		prc.run_as, prc.pkg_owner, prc.is_interface, pp.PV_ID
10503
           FROM processes prc, release_manager.package_processes pp
10504
          WHERE pp.pv_id IN (
10505
                   SELECT *
10506
                     FROM THE
10507
                             (SELECT CAST
10508
                                        (in_list_number (npvidlist) AS DEPMGR_NUMBER_TAB_t
10509
                                        )
10510
                                FROM DUAL
10511
                             ))
10512
			AND	pp.PROC_ID = prc.PROC_ID;
10513
 
10514
      proc_rec      proc_cur%ROWTYPE;
10515
   BEGIN
10516
 
10517
 
10518
 
10519
      OPEN proc_cur;
10520
 
10521
      FETCH proc_cur
10522
       INTO proc_rec;
10523
 
10524
      WHILE proc_cur%FOUND
10525
      LOOP
10526
 
10527
   	 SELECT PKG.PKG_NAME INTO PkgName
10528
	 FROM PACKAGE_VERSIONS PV, PACKAGES PKG
10529
	 WHERE PV.PV_ID = proc_rec.pv_id
10530
	 AND PKG.PKG_ID = PV.PKG_ID;	  
10531
 
10532
         INSERT INTO processes_config
10533
                     (proc_id, prod_id, os_id, pkg_health_tag, cmd_interface, pkg_owner, is_interface, proc_description
10534
                     )
10535
              VALUES (proc_rec.proc_id, proc_rec.pv_id, nosid, proc_rec.proc_name, proc_rec.run_as, proc_rec.pkg_owner, proc_rec.is_interface, proc_rec.proc_description
10536
                     );
10537
 
10538
         SELECT prc.proc_name
10539
           INTO processname
10540
           FROM processes prc
10541
          WHERE prc.proc_id = proc_rec.proc_id;
10542
 
10543
	-- Log Action --
10544
	pk_Bom.Log_Os_Trail ( nosid,  
10545
						  'Added process with health tag '|| processname ||' for product '|| PkgName,
10546
						  nUserId );
10547
 
10548
         FETCH proc_cur
10549
          INTO proc_rec;
10550
      END LOOP;
10551
   END;
10552
 
10553
/*--------------------------------------------------------------------------------------------------*/
10554
 
10555
 
10556
 
10557
END pk_Operating_System;
10558
/
10559
 
10560
CREATE OR REPLACE PACKAGE BODY pk_Network_Node_test
10561
IS
10562
/* ---------------------------------------------------------------------------
10563
    Version: 1.0.0
10564
   --------------------------------------------------------------------------- */
10565
 
10566
/*--------------------------------------------------------------------------------------------------*/
10567
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
10568
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
10569
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
10570
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
10571
					 nUserId IN NUMBER ) IS
10572
 
10573
NodeID NUMBER;
10574
 
10575
CURSOR nn_cur IS -- Check Node Name Duplicates
10576
		SELECT bc.node_id
10577
		  FROM BOM_CONTENTS bc,
10578
		  	   NETWORK_NODES nn
10579
		 WHERE bc.NODE_ID = nn.NODE_ID
10580
		   AND bc.BOM_ID = nBomId 
10581
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName );
10582
nn_rec nn_cur%ROWTYPE;
10583
 
10584
DUPLICATE_NODE_NAME EXCEPTION;
10585
 
10586
BEGIN
10587
	/*--------------- Business Rules Here -------------------*/
10588
	OPEN nn_cur;
10589
    FETCH nn_cur INTO nn_rec;
10590
 
10591
    IF nn_cur%FOUND
10592
    THEN
10593
		RAISE DUPLICATE_NODE_NAME;
10594
	END IF;
10595
 
10596
	CLOSE nn_cur;
10597
	/*-------------------------------------------------------*/
10598
 
10599
 
10600
	-- Get node_id
10601
	SELECT SEQ_NODE_ID.NEXTVAL INTO NodeID FROM DUAL;
10602
 
10603
 
10604
	-- Insert new Network Node			  
10605
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS )
10606
	VALUES (
10607
			NodeID,
10608
			nNodeTypeId,
10609
			sNodeName,
10610
			sNodeComments
10611
			);
10612
 
10613
 
10614
	-- Link Node with the BOM
10615
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID )
10616
	VALUES (
10617
		    nBomId,
10618
			NodeID
10619
		    );
10620
 
10621
	/* Log BOM_TRAIL */
10622
	pk_Bom.Log_Bom_Trail ( nBomId, 'ADDED NETWORK NODE: '||sNodeName, nUserId );			
10623
 
10624
EXCEPTION
10625
    WHEN DUPLICATE_NODE_NAME
10626
	THEN		
10627
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
10628
 
10629
END	Add_Node;
10630
/*--------------------------------------------------------------------------------------------------*/
10631
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
10632
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
10633
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
10634
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE ) IS
10635
 
10636
BomID NUMBER;
10637
 
10638
CURSOR nn_cur IS -- Check Node Name Duplicates
10639
		SELECT bc.node_id
10640
		  FROM BOM_CONTENTS bc,
10641
		  	   NETWORK_NODES nn
10642
		 WHERE bc.NODE_ID = nn.NODE_ID
10643
		   AND bc.BOM_ID = BomId 
10644
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName )
10645
		   AND nn.NODE_ID != nNodeId;
10646
nn_rec nn_cur%ROWTYPE;
10647
 
10648
DUPLICATE_NODE_NAME EXCEPTION;
10649
 
10650
BEGIN
10651
	/*--------------- Business Rules Here -------------------*/
10652
	-- Check all parameters
10653
	IF (nNodeId IS NULL)  OR  (nNodeTypeId IS NULL) 
10654
	THEN
10655
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId='|| nNodeId  ||', nNodeTypeId='|| nNodeTypeId  );
10656
 
10657
	END IF;
10658
 
10659
	-- Get bom_id
10660
	SELECT bc.BOM_ID INTO BomId
10661
	  FROM BOM_CONTENTS bc
10662
	 WHERE bc.NODE_ID = nNodeId; 
10663
 
10664
	-- Check for duplicate names
10665
	OPEN nn_cur;
10666
    FETCH nn_cur INTO nn_rec;
10667
 
10668
    IF nn_cur%FOUND
10669
    THEN
10670
		RAISE DUPLICATE_NODE_NAME;
10671
	END IF;
10672
 
10673
	CLOSE nn_cur;
10674
	/*-------------------------------------------------------*/
10675
 
10676
	-- Update Network Node Details
10677
	UPDATE NETWORK_NODES nn SET
10678
		nn.NODE_NAME = sNodeName,
10679
		nn.NODE_COMMENTS = sNodeComments,
10680
		nn.NODE_TYPE_ID = nNodeTypeId
10681
	 WHERE nn.NODE_ID = nNodeId;
10682
 
10683
 
10684
 
10685
EXCEPTION
10686
    WHEN DUPLICATE_NODE_NAME
10687
	THEN		
10688
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
10689
 
10690
END	Update_Node;
10691
/*--------------------------------------------------------------------------------------------------*/
10692
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
10693
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE ) IS
10694
 
10695
 
10696
 
10697
NODE_ID_REQUIRED EXCEPTION;
10698
 
10699
BEGIN
10700
	/*--------------- Business Rules Here -------------------*/
10701
    IF sNodeIdList IS NULL
10702
    THEN
10703
		RAISE NODE_ID_REQUIRED;
10704
	END IF;
10705
	/*-------------------------------------------------------*/
10706
 
10707
 
10708
 
10709
	-- Remove from Bom Contents
10710
	DELETE FROM BOM_CONTENTS
10711
	WHERE bom_id = nBomId
10712
	  AND node_id IN (
10713
		  		  	  SELECT *
10714
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
10715
		  		  	 );
10716
 
10717
 
10718
	-- Remove Network Nodes
10719
	DELETE FROM NETWORK_NODES
10720
	WHERE node_id IN (
10721
		  		  	  SELECT *
10722
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
10723
		  		  	 );
10724
 
10725
 
10726
 
10727
EXCEPTION
10728
    WHEN NODE_ID_REQUIRED
10729
	THEN		
10730
		RAISE_APPLICATION_ERROR (-20000, 'You must select at least one Network Node.');
10731
 
10732
END	Remove_Node;
10733
/*--------------------------------------------------------------------------------------------------*/
10734
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t ) IS
10735
 
10736
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10737
 
10738
BEGIN
10739
	/*--------------- Business Rules Here -------------------*/
10740
	/*-------------------------------------------------------*/
10741
 
10742
	IF (nNodeIdCollection.COUNT > 0) THEN   
10743
 
10744
		-- Destroy Hardware Node Link
10745
		DELETE 
10746
		  FROM HARDWARE_NODE hn
10747
		 WHERE hn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10748
 
10749
 
10750
		-- Destroy Node from Bom Contents
10751
		DELETE 
10752
		  FROM BOM_CONTENTS bc
10753
		 WHERE bc.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10754
 
10755
 
10756
		-- Destroy Operation Systems
10757
		nIdCollector := NULL;
10758
		SELECT CAST ( MULTISET ( SELECT os.OS_ID
10759
		  	   		  		   	   FROM OPERATING_SYSTEMS os
10760
		 						  WHERE os.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) )
10761
							    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
10762
 
10763
		pk_Operating_System.Destroy_Os ( nIdCollector );
10764
 
10765
 
10766
 
10767
 
10768
		---- Finnaly destroy Network Node ----
10769
		DELETE
10770
		  FROM NETWORK_NODES nn
10771
		 WHERE nn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10772
 
10773
 
10774
	END IF; 
10775
 
10776
 
10777
END	Destroy_Node;
10778
/*--------------------------------------------------------------------------------------------------*/
10779
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2 ) IS
10780
 
10781
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10782
 
10783
BEGIN
10784
	/*--------------- Business Rules Here -------------------*/
10785
	/*-------------------------------------------------------*/
10786
	nIdCollector := IN_LIST_NUMBER ( nNodeIdList );
10787
 
10788
	Destroy_Node ( nIdCollector );	
10789
 
10790
 
10791
END	Destroy_Node;
10792
/*--------------------------------------------------------------------------------------------------*/
10793
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
10794
		  			   nBomId IN BOMS.BOM_ID%TYPE,
10795
					   nUserId IN NUMBER ) IS
10796
 
10797
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
10798
	SeqNum NUMBER;
10799
 
10800
BEGIN
10801
	/*--------------- Business Rules Here -------------------*/
10802
	-- Check for parameters
10803
	IF (sNodeIdOrder IS NULL)  OR (nBomId IS NULL) 
10804
	THEN
10805
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId='|| nBomId  ||' sNodeIdOrder='|| sNodeIdOrder  );
10806
	END IF;
10807
	/*-------------------------------------------------------*/
10808
 
10809
	nIdCollector := IN_LIST_NUMBER ( sNodeIdOrder );
10810
 
10811
	-- Set start sequence number
10812
	SeqNum := 1;
10813
 
10814
	FOR i IN 1..nIdCollector.COUNT
10815
	LOOP
10816
 
10817
		-- Update new sequence number
10818
		UPDATE BOM_CONTENTS bc SET
10819
			bc.SEQ_NUM = SeqNum
10820
		 WHERE bc.BOM_ID = nBomId
10821
		   AND bc.NODE_ID = nIdCollector(i);
10822
 
10823
		SeqNum := SeqNum + 1;
10824
 
10825
	END LOOP;
10826
 
10827
 
10828
END	Sort_Nodes;
10829
/*--------------------------------------------------------------------------------------------------*/
10830
END pk_Network_Node_test;
10831
/
10832
 
10833
CREATE OR REPLACE PACKAGE BODY pk_Product_Test
10834
IS
10835
/* ---------------------------------------------------------------------------
10836
    Modified By: Rupesh Solanki
10837
	Date: 20/03/2006
10838
   --------------------------------------------------------------------------- */
10839
 
10840
/*--------------------------------------------------------------------------------------------------*/
10841
PROCEDURE New_Product ( sProdName IN PACKAGES.PKG_NAME%TYPE,
10842
						sProdVersion IN PACKAGE_VERSIONS.PKG_VERSION%TYPE,
10843
						nUserId IN NUMBER,
10844
						outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE ) IS
10845
 
10846
 
10847
BEGIN
10848
	/*--------------- Business Rules Here -------------------*/
10849
	/*-------------------------------------------------------*/
10850
 
10851
	-- Call Release Manager to add new product
10852
	Seed_Package_Names_Versions ( sProdName, sProdVersion, nUserId, outProdId );
10853
 
10854
 
10855
END	New_Product;
10856
/*--------------------------------------------------------------------------------------------------*/
10857
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
10858
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
10859
						nUserId IN NUMBER ) IS
10860
 
10861
NextSeqNum NUMBER;
10862
PkgName VARCHAR2(100);
10863
PkgVersion VARCHAR2(100);
10864
NodeName VARCHAR2(4000);
10865
 
10866
CURSOR prod_cur IS
10867
	SELECT qry.PV_ID AS PROD_ID,
10868
		   qry.PV_DESCRIPTION,
10869
           qry.COMMENTS,
10870
           qry.IS_PATCH
10871
	  FROM ( 
10872
      		/* Products */
10873
			SELECT pv.PV_ID, TO_NUMBER(NULL) AS INSTALL_ORDER, TO_NUMBER(NULL) AS PKG_ID, pv.PV_DESCRIPTION, pv.COMMENTS, pv.IS_PATCH
10874
			  FROM PACKAGE_VERSIONS pv
10875
			 WHERE pv.IS_PATCH IS NULL
10876
			   AND pv.PV_ID IN (
10877
			 	   			   	SELECT * 
10878
								  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10879
								)
10880
 
10881
			UNION ALL
10882
 
10883
            /* Patches */  
10884
			SELECT pv.PV_ID, pp.INSTALL_ORDER, pv.PKG_ID, pv.PV_DESCRIPTION, pv.COMMENTS, pv.IS_PATCH
10885
			  FROM PACKAGE_PATCHES pp,
10886
			  	   PACKAGE_VERSIONS pv
10887
			 WHERE pp.PATCH_ID = pv.PV_ID
10888
			   AND pp.PATCH_ID IN (
10889
			 	   			   	SELECT * 
10890
								  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10891
								)  		
10892
	        ) qry  
10893
	 ORDER BY qry.PKG_ID, qry.INSTALL_ORDER;
10894
prod_rec prod_cur%ROWTYPE;
10895
 
10896
 
10897
BEGIN
10898
	/*--------------- Business Rules Here -------------------*/
10899
	/*-------------------------------------------------------*/
10900
 
10901
	-- Get seq_num
10902
	SELECT MAX( osc.SEQ_NUM ) INTO NextSeqNum
10903
	  FROM OS_CONTENTS osc
10904
	 WHERE osc.OS_ID = nOsId;
10905
 
10906
	-- Set NextSeqNum to 0 if no existing products are found
10907
	IF NextSeqNum IS NULL THEN
10908
	   NextSeqNum := 1;
10909
	ELSE
10910
	   NextSeqNum := NextSeqNum + 1;
10911
	END IF;
10912
 
10913
 
10914
	-- Insert into OS Contents
10915
	OPEN prod_cur;
10916
	FETCH prod_cur INTO prod_rec;
10917
 
10918
	WHILE prod_cur%FOUND
10919
	LOOP
10920
 
10921
        IF (prod_rec.IS_PATCH IS NULL) THEN
10922
            INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS )
10923
       		VALUES (
10924
       				nOsId, 
10925
       				NextSeqNum, 
10926
       				prod_rec.PROD_ID,
10927
       				prod_rec.PV_DESCRIPTION
10928
       				);
10929
        ELSE
10930
            INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS )
10931
    		VALUES (
10932
    				nOsId, 
10933
    				NextSeqNum, 
10934
    				prod_rec.PROD_ID,
10935
    				prod_rec.COMMENTS
10936
    				);
10937
        END IF;
10938
 
10939
 
10940
		SELECT PKG.PKG_NAME INTO PkgName
10941
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
10942
		WHERE PV.PV_ID = prod_rec.PROD_ID
10943
		AND PKG.PKG_ID = PV.PKG_ID;
10944
 
10945
		SELECT PKG_VERSION INTO PkgVersion
10946
		FROM PACKAGE_VERSIONS PV
10947
		WHERE PV.PV_ID = prod_rec.PROD_ID;
10948
 
10949
		SELECT NN.NODE_NAME INTO NodeName
10950
		FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
10951
		WHERE NN.NODE_ID = OS.NODE_ID
10952
		AND OS.OS_ID = nOsId;
10953
 
10954
 
10955
		-- Log Action --
10956
		pk_Bom.Log_Os_Trail ( nOsId,  
10957
							  'Added Product: '||PkgName||' (Version: '||PkgVersion||') with Install Order: '||NextSeqNum||' on Node: '||NodeName,
10958
							  nUserId );
10959
 
10960
 
10961
		NextSeqNum := NextSeqNum + 1;
10962
		FETCH prod_cur INTO prod_rec;
10963
	END LOOP;
10964
 
10965
 
10966
	CLOSE prod_cur;
10967
 
10968
 
10969
END	Add_Product;
10970
/*--------------------------------------------------------------------------------------------------*/
10971
PROCEDURE Hide_Product ( sProdIdList IN VARCHAR2,
10972
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
10973
						nUserId IN NUMBER ) IS
10974
 
10975
BEGIN
10976
	/*--------------- Business Rules Here -------------------*/
10977
	/*-------------------------------------------------------*/
10978
 
10979
 
10980
            INSERT INTO HIDE_PRODUCTS ( OS_ID, PROD_ID )
10981
       		VALUES (
10982
       				nOsId, 
10983
       				sProdIdList
10984
       				);
10985
 
10986
END	Hide_Product;
10987
/*--------------------------------------------------------------------------------------------------*/
10988
PROCEDURE Unhide_Product ( sProdIdList IN NUMBER,
10989
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
10990
						nUserId IN NUMBER ) IS
10991
 
10992
BEGIN
10993
	/*--------------- Business Rules Here -------------------*/
10994
	/*-------------------------------------------------------*/
10995
 
10996
 
10997
            DELETE FROM HIDE_PRODUCTS WHERE 
10998
			PROD_ID = sProdIdList
10999
			AND OS_ID = nOsId;
11000
 
11001
END	Unhide_Product;
11002
/*--------------------------------------------------------------------------------------------------*/
11003
PROCEDURE Update_Process (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
11004
		  				  nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
11005
		  				  nIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE, 		  
11006
		  				  nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,		  
11007
						  nCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
11008
						  nPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
11009
						  sPkgHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
11010
						  nProduct IN PROCESSES_CONFIG.PROD_ID%TYPE) IS
11011
 
11012
BEGIN
11013
 
11014
	 UPDATE PROCESSES_CONFIG SET
11015
	 	CMD_INTERFACE = nCmdInterface,
11016
		PKG_OWNER = nPkgOwner,
11017
		IS_INTERFACE = nIsInterface,
11018
		PKG_HEALTH_TAG = sPkgHealthTag,
11019
		PROD_ID = nProduct 
11020
 
11021
 
11022
	 WHERE PROD_ID = nProdId
11023
	 AND OS_ID = nOsId
11024
	 AND PROC_ID = nProcId	;						  
11025
 
11026
 
11027
END Update_Process;
11028
 
11029
/*--------------------------------------------------------------------------------------------------*/
11030
PROCEDURE Update_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
11031
						   sNewProdIdVersion IN VARCHAR2,
11032
						   nOsId IN OS_CONTENTS.OS_ID%TYPE,
11033
						   nSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE,
11034
						   sComments IN OS_CONTENTS.PRODUCT_COMMENTS%TYPE,
11035
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
11036
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
11037
						   sIsNodeSpec IN OS_CONTENTS.IS_NODE_SPEC%TYPE,
11038
						   sNotXML IN OS_CONTENTS.NOT_XML%TYPE,
11039
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
11040
						   nUserId IN NUMBER,
11041
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE ) IS
11042
 
11043
nNewProdId OS_CONTENTS.PROD_ID%TYPE;
11044
 
11045
sProdName PACKAGES.PKG_NAME%TYPE;
11046
 
11047
 
11048
 
11049
 
11050
 
11051
CURSOR curProd IS
11052
 	SELECT pv.PV_ID
11053
	  FROM PACKAGE_VERSIONS pv
11054
	 WHERE pv.pkg_id IN ( SELECT pv.pkg_id FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nOldProdId )
11055
	   AND pv.PKG_VERSION = sNewProdIdVersion;
11056
recProd curProd%ROWTYPE;						   
11057
 
11058
BEGIN
11059
	/*--------------- Business Rules Here -------------------*/
11060
	IF (nOldProdId IS NULL) OR (sNewProdIdVersion IS NULL) OR (nOsId IS NULL) OR (nSeqNum IS NULL)
11061
	THEN
11062
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOldProdId= '|| nOldProdId  ||', sNewProdIdVersion= '|| sNewProdIdVersion ||', nOsId= '|| nOsId ||', nSeqNum= '|| nSeqNum);
11063
	END IF;
11064
	/*-------------------------------------------------------*/
11065
 
11066
	-- Get new prod_id
11067
	OPEN curProd;
11068
	FETCH curProd INTO recProd;
11069
 
11070
	SELECT pkg.pkg_name into sProdName
11071
	FROM PACKAGES pkg, PACKAGE_VERSIONS pv
11072
	WHERE pkg.pkg_id = pv.pkg_id 
11073
	AND pv.pv_id = nOldProdId;
11074
 
11075
 
11076
	IF curProd%FOUND THEN
11077
	   nNewProdId := recProd.PV_ID;
11078
	ELSE
11079
		Seed_Package_Names_Versions ( sProdName, sNewProdIdVersion, nUserId, outProdId );
11080
		nNewProdId := outProdId;
11081
		/*RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');*/
11082
	END IF;
11083
 
11084
	CLOSE curProd;
11085
 
11086
 
11087
	-- Update Product Details
11088
	UPDATE OS_CONTENTS SET
11089
		PROD_ID = nNewProdId,
11090
		PRODUCT_COMMENTS = sComments,
11091
		NOT_XML = sNotXML,
11092
		IS_NODE_SPEC = sIsNodeSpec
11093
	 WHERE OS_ID = nOsId
11094
	   AND PROD_ID = nOldProdId;
11095
 
11096
	--Update Package Electronic Name Details In Packages Table 
11097
	UPDATE PACKAGES SET
11098
		SUNOS_ELECTRONIC_NAME = sSunOSElectronicName,
11099
		WIN_ELECTRONIC_NAME = sWinElectronicName
11100
	WHERE  PKG_ID = 
11101
	(
11102
	 SELECT PKG_ID
11103
	 FROM PACKAGE_VERSIONS 
11104
	 WHERE PACKAGE_VERSIONS.PV_ID = nNewProdId
11105
	);
11106
 
11107
	--Update Patch Electronic Name In Package Versions Table
11108
	UPDATE PACKAGE_VERSIONS SET
11109
		   PATCH_ELECTRONIC_NAME = sPatchElectronicName
11110
	WHERE PV_ID = nNewProdId;	   
11111
 
11112
 
11113
	-- Update seq_num
11114
	pk_Operating_System.Shift_Product_SeqNum ( nNewProdId, nOsId, nSeqNum );
11115
 
11116
END	Update_Product;
11117
/*--------------------------------------------------------------------------------------------------*/
11118
PROCEDURE Replace_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
11119
		  				  	nNewProdId IN OS_CONTENTS.PROD_ID%TYPE,
11120
		  			  	    nOsId IN OS_CONTENTS.OS_ID%TYPE,
11121
							nUserId IN NUMBER ) IS
11122
 
11123
OldVersion VARCHAR2(100);
11124
NewVersion VARCHAR2(100);
11125
PkgName    VARCHAR2(100);	
11126
NodeName VARCHAR2(4000);	
11127
 
11128
BEGIN
11129
	/*--------------- Business Rules Here -------------------*/
11130
	/*-------------------------------------------------------*/
11131
 
11132
 
11133
	UPDATE OS_CONTENTS SET
11134
	PROD_ID = nNewProdId
11135
	WHERE PROD_ID = nOldProdId
11136
	  AND OS_ID = nOsId;
11137
 
11138
	SELECT PKG_VERSION INTO OldVersion
11139
	FROM PACKAGE_VERSIONS
11140
	WHERE PV_ID = nOldProdId;
11141
 
11142
	SELECT PKG_VERSION INTO NewVersion
11143
	FROM PACKAGE_VERSIONS
11144
	WHERE PV_ID = nNewProdId;	
11145
 
11146
	SELECT PKG.PKG_NAME INTO PkgName
11147
	FROM PACKAGES PKG, PACKAGE_VERSIONS PV
11148
	WHERE PV.PV_ID = nNewProdId
11149
	AND PKG.PKG_ID = PV.PKG_ID; 
11150
 
11151
	SELECT NN.NODE_NAME INTO NodeName
11152
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
11153
	WHERE NN.NODE_ID = OS.NODE_ID
11154
	AND OS.OS_ID = nOsId;
11155
 
11156
 
11157
	-- Log Action --
11158
	pk_Bom.Log_Os_Trail ( nOsId, 
11159
						  'Updated Product: '||PkgName|| ' from Version: '||OldVersion||' to '||NewVersion||' on Node: '||NodeName,
11160
						  nUserId );
11161
 
11162
END	Replace_Product;
11163
/*--------------------------------------------------------------------------------------------------*/
11164
PROCEDURE Remove_Process ( sProcName IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,	
11165
		  				   sProdIdList IN VARCHAR2,
11166
		  			  	   nOsId IN OS_CONTENTS.OS_ID%TYPE,
11167
  						   sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
11168
						   sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
11169
						   sInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
11170
						   nUserId IN NUMBER ) IS
11171
 
11172
ProcessName VARCHAR2(4000);
11173
NodeName VARCHAR2(4000);
11174
 
11175
BEGIN
11176
 
11177
 
11178
/*Select the Correct Details - Begin*/
11179
 
11180
		 IF sCmdInterface IS NOT NULL THEN
11181
		 	IF sInterface IS NOT NULL THEN
11182
			   IF sPkgOwner IS NOT NULL THEN
11183
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11184
					 FROM PROCESSES_CONFIG
11185
					 WHERE OS_ID = nOsId
11186
					 AND PROD_ID = sProdIdList
11187
					 AND PKG_HEALTH_TAG = sProcName
11188
					 AND CMD_INTERFACE = sCmdInterface
11189
					 AND PKG_OWNER = sPkgOwner
11190
					 AND IS_INTERFACE = sInterface;			   	  
11191
 
11192
			   ELSE/*sPkgOwner IS NULL, sInterface IS NOT NULL, sCmdInterface IS NOT NULL*/
11193
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11194
					 FROM PROCESSES_CONFIG
11195
					 WHERE OS_ID = nOsId
11196
					 AND PROD_ID = sProdIdList
11197
					 AND PKG_HEALTH_TAG = sProcName
11198
					 AND CMD_INTERFACE = sCmdInterface
11199
					 AND PKG_OWNER IS NULL
11200
					 AND IS_INTERFACE = sInterface;				   
11201
			   END IF ;  
11202
			ELSE 
11203
				 IF sInterface IS NULL OR sInterface = 'F' THEN/* sInterface IS NULL, sCmdInterface IS NOT NULL*/
11204
			   	   IF sPkgOwner IS NOT NULL THEN
11205
			   	   	 SELECT PKG_HEALTH_TAG INTO ProcessName
11206
					 FROM PROCESSES_CONFIG
11207
					 WHERE OS_ID = nOsId
11208
					 AND PROD_ID = sProdIdList
11209
					 AND PKG_HEALTH_TAG = sProcName
11210
					 AND CMD_INTERFACE = sCmdInterface
11211
					 AND PKG_OWNER = sPkgOwner
11212
					 AND (IS_INTERFACE = 'F' OR IS_INTERFACE IS NULL);				    
11213
				   ELSE/* sPkqOwner IS NULL, sInterface IS NULL, sCmdInterface IS NOT NULL*/
11214
			   	   	 SELECT PKG_HEALTH_TAG INTO ProcessName
11215
					 FROM PROCESSES_CONFIG
11216
					 WHERE OS_ID = nOsId
11217
					 AND PROD_ID = sProdIdList
11218
					 AND PKG_HEALTH_TAG = sProcName
11219
					 AND CMD_INTERFACE = sCmdInterface
11220
					 AND PKG_OWNER IS NULL
11221
					 AND IS_INTERFACE IS NULL;				   
11222
				   END IF;
11223
				  END IF; 
11224
			END IF;
11225
		 ELSE/* sCmdInterface IS NULL*/
11226
		 		IF sInterface IS NOT NULL THEN
11227
				   IF sPkgOwner IS NOT NULL THEN				   	  
11228
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11229
					 FROM PROCESSES_CONFIG
11230
					 WHERE OS_ID = nOsId
11231
					 AND PROD_ID = sProdIdList
11232
					 AND PKG_HEALTH_TAG = sProcName
11233
					 AND CMD_INTERFACE IS NULL
11234
					 AND PKG_OWNER = sPkgOwner
11235
					 AND IS_INTERFACE = sInterface;					   
11236
				   ELSE/* sPkgOwner is NULL, sInterface IS NOT NULL, sCmdInterface IS NULL */
11237
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11238
					 FROM PROCESSES_CONFIG
11239
					 WHERE OS_ID = nOsId
11240
					 AND PROD_ID = sProdIdList
11241
					 AND PKG_HEALTH_TAG = sProcName
11242
					 AND CMD_INTERFACE IS NULL
11243
					 AND PKG_OWNER IS NULL
11244
					 AND IS_INTERFACE = sInterface;						   
11245
				   END IF;
11246
				ELSE
11247
				  IF sInterface IS NULL OR sInterface = 'F' THEN/* sInterface IS NULL, sCmdInterface IS NULL*/
11248
					IF sPkgOwner IS NOT NULL THEN
11249
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11250
					 FROM PROCESSES_CONFIG
11251
					 WHERE OS_ID = nOsId
11252
					 AND PROD_ID = sProdIdList
11253
					 AND PKG_HEALTH_TAG = sProcName
11254
					 AND CMD_INTERFACE IS NULL
11255
					 AND PKG_OWNER = sPkgOwner
11256
					 AND (IS_INTERFACE IS NULL OR IS_INTERFACE = 'F');						   
11257
					ELSE/* sPkgOwner IS NULL, sInterface IS NULL, sCmdInterface IS NULL*/
11258
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11259
					 FROM PROCESSES_CONFIG
11260
					 WHERE OS_ID = nOsId
11261
					 AND PROD_ID = sProdIdList
11262
					 AND PKG_HEALTH_TAG = sProcName
11263
					 AND CMD_INTERFACE IS NULL
11264
					 AND PKG_OWNER IS NULL
11265
					 AND IS_INTERFACE IS NULL;										
11266
					END IF;
11267
				  END IF;	
11268
				END IF;
11269
		 END IF;
11270
 
11271
 
11272
/*Select the Correct Details - End */
11273
 
11274
	-- Log Action --
11275
	pk_Bom.Log_Os_Trail ( nOsId, 
11276
						  'Deleted Process: '||ProcessName||' From Node: '||NodeName,
11277
						  nUserId );
11278
 
11279
 
11280
/*Select the Correct Details - Begin*/	
11281
		 IF sCmdInterface IS NOT NULL THEN
11282
		 	IF sInterface IS NOT NULL THEN
11283
			   IF sPkgOwner IS NOT NULL THEN
11284
			   		 DELETE
11285
					 FROM PROCESSES_CONFIG
11286
					 WHERE OS_ID = nOsId
11287
					 AND PROD_ID = sProdIdList
11288
					 AND PKG_HEALTH_TAG = sProcName
11289
					 AND CMD_INTERFACE = sCmdInterface
11290
					 AND PKG_OWNER = sPkgOwner
11291
					 AND IS_INTERFACE = sInterface;			   	  
11292
 
11293
			   ELSE/*sPkgOwner IS NULL, sInterface IS NOT NULL, sCmdInterface IS NOT NULL*/
11294
			   		 DELETE
11295
					 FROM PROCESSES_CONFIG
11296
					 WHERE OS_ID = nOsId
11297
					 AND PROD_ID = sProdIdList
11298
					 AND PKG_HEALTH_TAG = sProcName
11299
					 AND CMD_INTERFACE = sCmdInterface
11300
					 AND PKG_OWNER IS NULL
11301
					 AND IS_INTERFACE = sInterface;				   
11302
			   END IF;
11303
			ELSE/* sInterface IS NULL, sCmdInterface IS NOT NULL*/
11304
			   	   IF sPkgOwner IS NOT NULL THEN
11305
			   	   	 DELETE
11306
					 FROM PROCESSES_CONFIG
11307
					 WHERE OS_ID = nOsId
11308
					 AND PROD_ID = sProdIdList
11309
					 AND PKG_HEALTH_TAG = sProcName
11310
					 AND CMD_INTERFACE = sCmdInterface
11311
					 AND PKG_OWNER = sPkgOwner
11312
					 AND IS_INTERFACE IS NULL;				    
11313
				   ELSE/* sPkqOwner IS NULL, sInterface IS NULL, sCmdInterface IS NOT NULL*/
11314
			   	   	 DELETE
11315
					 FROM PROCESSES_CONFIG
11316
					 WHERE OS_ID = nOsId
11317
					 AND PROD_ID = sProdIdList
11318
					 AND PKG_HEALTH_TAG = sProcName
11319
					 AND CMD_INTERFACE = sCmdInterface
11320
					 AND PKG_OWNER IS NULL
11321
					 AND IS_INTERFACE IS NULL;				   
11322
				   END IF;
11323
			END IF;
11324
		 ELSE/* sCmdInterface IS NULL*/
11325
		 		IF sInterface IS NOT NULL THEN
11326
				   IF sPkgOwner IS NOT NULL THEN				   	  
11327
			   		 DELETE
11328
					 FROM PROCESSES_CONFIG
11329
					 WHERE OS_ID = nOsId
11330
					 AND PROD_ID = sProdIdList
11331
					 AND PKG_HEALTH_TAG = sProcName
11332
					 AND CMD_INTERFACE IS NULL
11333
					 AND PKG_OWNER = sPkgOwner
11334
					 AND IS_INTERFACE = sInterface;					   
11335
				   ELSE/* sPkgOwner is NULL, sInterface IS NOT NULL, sCmdInterface IS NULL */
11336
			   		 DELETE
11337
					 FROM PROCESSES_CONFIG
11338
					 WHERE OS_ID = nOsId
11339
					 AND PROD_ID = sProdIdList
11340
					 AND PKG_HEALTH_TAG = sProcName
11341
					 AND CMD_INTERFACE IS NULL
11342
					 AND PKG_OWNER IS NULL
11343
					 AND IS_INTERFACE = sInterface;						   
11344
				   END IF;
11345
				ELSE/* sInterface IS NULL, sCmdInterface IS NULL*/
11346
					IF sPkgOwner IS NOT NULL THEN
11347
			   		 DELETE
11348
					 FROM PROCESSES_CONFIG
11349
					 WHERE OS_ID = nOsId
11350
					 AND PROD_ID = sProdIdList
11351
					 AND PKG_HEALTH_TAG = sProcName
11352
					 AND CMD_INTERFACE IS NULL
11353
					 AND PKG_OWNER = sPkgOwner
11354
					 AND IS_INTERFACE IS NULL;						   
11355
					ELSE/* sPkgOwner IS NULL, sInterface IS NULL, sCmdInterface IS NULL*/
11356
			   		 DELETE
11357
					 FROM PROCESSES_CONFIG
11358
					 WHERE OS_ID = nOsId
11359
					 AND PROD_ID = sProdIdList
11360
					 AND PKG_HEALTH_TAG = sProcName
11361
					 AND CMD_INTERFACE IS NULL
11362
					 AND PKG_OWNER IS NULL
11363
					 AND IS_INTERFACE IS NULL;										
11364
					END IF;
11365
				END IF;
11366
		 END IF;
11367
 
11368
 
11369
/*Select the Correct Details - End*/				  
11370
 
11371
END Remove_Process;							
11372
/*--------------------------------------------------------------------------------------------------*/
11373
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
11374
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
11375
							nUserId IN NUMBER ) IS
11376
 
11377
PkgName VARCHAR2(100);
11378
PkgVersion VARCHAR2(100);		
11379
NextSeqNum NUMBER := 1;
11380
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();	
11381
NodeName VARCHAR2(4000);
11382
 
11383
CURSOR prod_cur IS
11384
	SELECT osc.PROD_ID, osc.SEQ_NUM
11385
	  FROM OS_CONTENTS osc
11386
	 WHERE osc.OS_ID = nOsId
11387
	 ORDER BY osc.SEQ_NUM;
11388
prod_rec prod_cur%ROWTYPE;	  
11389
 
11390
BEGIN
11391
	/*--------------- Business Rules Here -------------------*/
11392
	IF sProdIdList IS NULL
11393
	THEN
11394
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
11395
 
11396
	END IF;
11397
	/*-------------------------------------------------------*/
11398
 
11399
	SELECT NN.NODE_NAME INTO NodeName
11400
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
11401
	WHERE NN.NODE_ID = OS.NODE_ID
11402
	AND OS.OS_ID = nOsId; 	
11403
 
11404
	-- Remove Products
11405
	DELETE 
11406
	FROM OS_CONTENTS
11407
	WHERE OS_ID = nOsId
11408
	  AND PROD_ID IN ( 
11409
	  	  		  	    SELECT * 
11410
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
11411
					 );
11412
 
11413
 
11414
	-- Remove Processes
11415
	DELETE 
11416
	FROM PROCESSES_CONFIG
11417
	WHERE OS_ID = nOsId
11418
	  AND PROD_ID IN ( 
11419
	  	  		  	    SELECT * 
11420
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
11421
					 );  
11422
 
11423
 
11424
	-- Update Seq Numbers
11425
	OPEN prod_cur;
11426
	FETCH prod_cur INTO prod_rec;
11427
 
11428
	WHILE prod_cur%FOUND
11429
	LOOP
11430
 
11431
		UPDATE OS_CONTENTS SET
11432
		SEQ_NUM = NextSeqNum
11433
		WHERE OS_ID = nOsId
11434
		  AND PROD_ID = prod_rec.PROD_ID;
11435
 
11436
		NextSeqNum := NextSeqNum + 1;
11437
		FETCH prod_cur INTO prod_rec;
11438
 
11439
 
11440
	END LOOP;
11441
 
11442
	CLOSE prod_cur;
11443
 
11444
	nIdCollector := IN_LIST_NUMBER ( sProdIdList );
11445
 
11446
	FOR i IN 1..nIdCollector.COUNT
11447
	LOOP
11448
		SELECT PKG.PKG_NAME INTO PkgName
11449
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
11450
		WHERE PV.PV_ID = nIdCollector(i)
11451
		AND PKG.PKG_ID = PV.PKG_ID;
11452
 
11453
		SELECT PKG_VERSION INTO PkgVersion
11454
		FROM PACKAGE_VERSIONS PV
11455
		WHERE PV.PV_ID = nIdCollector(i);	
11456
 
11457
		-- Log Action --
11458
		pk_Bom.Log_Os_Trail ( nOsId,  
11459
							  'Deleted Product: '||PkgName||' (Version: '||PkgVersion||') from Node: '||NodeName,
11460
							  nUserId );
11461
 
11462
	END LOOP;
11463
 
11464
 
11465
 
11466
 
11467
 
11468
 
11469
 
11470
END Remove_Products; 
11471
/*--------------------------------------------------------------------------------------------------*/
11472
PROCEDURE Add_Products_NodeSpec ( sProdIdList IN VARCHAR2,
11473
		  			  	  		  nOsId IN OS_CONTENTS.OS_ID%TYPE,
11474
								  nUserId IN NUMBER ) IS
11475
 
11476
NextSeqNum NUMBER := 1;
11477
 
11478
CURSOR prod_cur IS
11479
	SELECT osc.PROD_ID, osc.SEQ_NUM
11480
	  FROM OS_CONTENTS osc
11481
	 WHERE osc.OS_ID = nOsId
11482
	 ORDER BY osc.SEQ_NUM;
11483
prod_rec prod_cur%ROWTYPE;	  
11484
 
11485
BEGIN
11486
	/*--------------- Business Rules Here -------------------*/
11487
	IF sProdIdList IS NULL
11488
	THEN
11489
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
11490
 
11491
	END IF;
11492
	/*-------------------------------------------------------*/
11493
	UPDATE OS_CONTENTS
11494
	SET IS_NODE_SPEC = ''
11495
	WHERE OS_ID = nOsId;
11496
 
11497
	-- Set Nodespec On
11498
	UPDATE OS_CONTENTS
11499
	SET IS_NODE_SPEC = 'on'
11500
	WHERE OS_ID = nOsId
11501
	  AND PROD_ID IN ( 
11502
	  	  		  	    SELECT * 
11503
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
11504
					 );
11505
 
11506
END Add_Products_NodeSpec; 
11507
/*--------------------------------------------------------------------------------------------------*/
11508
PROCEDURE Accept_Reject ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,	
11509
						  nBomId IN BOMS.BOM_ID%TYPE,
11510
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
11511
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
11512
						  nOsId IN NUMBER ) IS
11513
 
11514
IsRejected PRODUCT_DETAILS.IS_REJECTED%TYPE;
11515
 
11516
PkgName VARCHAR2(100);
11517
PkgVersion VARCHAR2(100);
11518
NodeName VARCHAR2(4000);
11519
 
11520
CURSOR curProd IS
11521
	SELECT pd.*
11522
	  FROM PRODUCT_DETAILS pd
11523
	 WHERE pd.PROD_ID = nProdId;
11524
recProd curProd%ROWTYPE;
11525
 
11526
BEGIN
11527
	/*--------------- Business Rules Here -------------------*/
11528
	IF (nProdId IS NULL)
11529
	THEN
11530
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one product.' );
11531
	END IF;
11532
	/*-------------------------------------------------------*/
11533
 
11534
	-- Set new Accept-Reject state
11535
	IsRejected := 'Y';
11536
 
11537
	SELECT NN.NODE_NAME INTO NodeName
11538
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
11539
	WHERE NN.NODE_ID = OS.NODE_ID
11540
	AND OS.OS_ID = nOsId; 	
11541
 
11542
 
11543
	OPEN curProd;
11544
	FETCH curProd INTO recProd;
11545
 
11546
	IF curProd%FOUND THEN
11547
		/* Product Details found */
11548
 
11549
		SELECT PKG.PKG_NAME INTO PkgName
11550
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
11551
		WHERE PV.PV_ID = nProdId
11552
		AND PKG.PKG_ID = PV.PKG_ID;
11553
 
11554
		SELECT PKG_VERSION INTO PkgVersion
11555
		FROM PACKAGE_VERSIONS PV
11556
		WHERE PV.PV_ID = nProdId;	
11557
 
11558
		-- Set new Accept-Reject state
11559
		IF recProd.IS_REJECTED = 'Y' THEN
11560
			IsRejected := 'N';
11561
			-- Log Action --
11562
			pk_Bom.Log_Os_Trail ( nOsId, 
11563
								  'Accepted Product: '||PkgName||' '||PkgVersion||' on Node: '||NodeName,
11564
						  		  nUserId );
11565
 
11566
		ELSE
11567
			IsRejected := 'Y';
11568
			-- Log Action --
11569
			pk_Bom.Log_Os_Trail ( nOsId, 
11570
								  'Rejected Product: '||PkgName||' '||PkgVersion||' on Node: '||NodeName,
11571
						  		  nUserId );			
11572
		END IF;
11573
 
11574
		-- Toggle Accept-Reject State 
11575
		UPDATE PRODUCT_DETAILS pd SET
11576
		pd.IS_REJECTED = IsRejected
11577
		WHERE pd.PROD_ID = nProdId;
11578
 
11579
 
11580
	ELSE
11581
		/* Product Details NOT found */
11582
 
11583
		-- Toggle Accept-Reject State	
11584
		INSERT INTO PRODUCT_DETAILS ( PROD_ID, IS_REJECTED )
11585
		VALUES ( nProdId, IsRejected );
11586
 
11587
 
11588
	END IF;
11589
 
11590
	CLOSE curProd;
11591
 
11592
 
11593
	-- Reflect changes to the BOM level
11594
 
11595
 
11596
 
11597
	/* Log Rejection Trail */
11598
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT'), nProdId, IsRejected, nUserId, sComments );
11599
 
11600
 
11601
END	Accept_Reject;
11602
/*--------------------------------------------------------------------------------------------------*/
11603
PROCEDURE Accept_Reject_List ( nProdIdList IN VARCHAR2,
11604
							   nBomId IN BOMS.BOM_ID%TYPE,
11605
						  	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
11606
						       nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
11607
							   nOsId IN NUMBER ) IS
11608
 
11609
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
11610
 
11611
BEGIN
11612
	/*--------------- Business Rules Here -------------------*/
11613
	IF (nProdIdList IS NULL)
11614
	THEN
11615
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one product.' );
11616
	END IF;
11617
	/*-------------------------------------------------------*/
11618
 
11619
	nIdCollector := IN_LIST_NUMBER ( nProdIdList );
11620
 
11621
	FOR i IN 1..nIdCollector.COUNT
11622
	LOOP
11623
		Accept_Reject ( nIdCollector(i), nBomId, sComments, nUserId, nOsId);
11624
	END LOOP;
11625
 
11626
 
11627
END	Accept_Reject_List;
11628
/*--------------------------------------------------------------------------------------------------*/
11629
PROCEDURE Accept_Reject_Comments ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
11630
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
11631
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
11632
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE ) IS
11633
 
11634
IsRejected REJECTION_TRAIL.IS_REJECTED%TYPE;
11635
 
11636
BEGIN
11637
	/*--------------- Business Rules Here -------------------*/
11638
	IF (nProdId IS NULL)
11639
	THEN
11640
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nProdId= '|| nProdId  );
11641
	END IF;
11642
	/*-------------------------------------------------------*/
11643
 
11644
	IF nRejectSeq IS NULL THEN
11645
		/* CREATE New Note */
11646
 
11647
		-- Get last IsRejected state
11648
		SELECT rt.IS_REJECTED INTO IsRejected
11649
		  FROM REJECTION_TRAIL rt
11650
		 WHERE rt.ENTITY_ID = nProdId
11651
		   AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT')
11652
		   AND ROWNUM = 1
11653
		 ORDER BY rt.REJECT_SEQ;
11654
 
11655
 
11656
		/* Log Rejection Trail */
11657
		pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT'), nProdId, IsRejected, nUserId, sComments );
11658
 
11659
 
11660
	ELSE
11661
		/* EDIT Note */
11662
		UPDATE REJECTION_TRAIL rt SET
11663
			rt.COMMENTS = sComments,
11664
			rt.USER_ID = nUserId,
11665
			rt.DATE_TIME_STAMP = GET_DATETIME()
11666
		WHERE rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT')
11667
		  AND rt.ENTITY_ID = nProdId
11668
		  AND rt.REJECT_SEQ = nRejectSeq;
11669
 
11670
 
11671
	END IF;
11672
 
11673
 
11674
END	Accept_Reject_Comments;
11675
/*--------------------------------------------------------------------------------------------------*/
11676
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
11677
		  			  	  nOsId IN OS_CONTENTS.OS_ID%TYPE,
11678
						  nUserId IN NUMBER ) IS
11679
 
11680
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
11681
	SeqNum NUMBER;
11682
 
11683
BEGIN
11684
	/*--------------- Business Rules Here -------------------*/
11685
	-- Check for parameters
11686
	IF (sProdIdOrder IS NULL)  OR (nOsId IS NULL) 
11687
	THEN
11688
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId='|| nOsId  ||' sProdIdOrder='|| sProdIdOrder  );
11689
	END IF;
11690
	/*-------------------------------------------------------*/
11691
 
11692
	nIdCollector := IN_LIST_NUMBER ( sProdIdOrder );
11693
 
11694
	-- Set start sequence number
11695
	SeqNum := 1;
11696
 
11697
	FOR i IN 1..nIdCollector.COUNT
11698
	LOOP
11699
 
11700
		-- Update new sequence number
11701
		UPDATE OS_CONTENTS osc SET
11702
			osc.SEQ_NUM = SeqNum
11703
		 WHERE osc.OS_ID = nOsId
11704
		   AND osc.PROD_ID = nIdCollector(i);
11705
 
11706
		SeqNum := SeqNum + 1;
11707
 
11708
	END LOOP;
11709
 
11710
 
11711
END	Sort_Products;
11712
/*--------------------------------------------------------------------------------------------------*/
11713
PROCEDURE Remove_Obsolete_Patches ( nOsId IN OS_CONTENTS.OS_ID%TYPE,
11714
		  						  	nUserId IN NUMBER ) IS
11715
 
11716
 
11717
NextSeqNum NUMBER := 1;									
11718
 
11719
 
11720
CURSOR prod_cur IS
11721
	SELECT osc.PROD_ID, osc.SEQ_NUM
11722
	  FROM OS_CONTENTS osc
11723
	 WHERE osc.OS_ID = nOsId
11724
	 ORDER BY osc.SEQ_NUM;
11725
prod_rec prod_cur%ROWTYPE;										
11726
 
11727
 
11728
BEGIN
11729
 
11730
	 -- Delete Obsolete Patches in the OS.
11731
	 DELETE FROM OS_CONTENTS 
11732
	 WHERE OS_ID = nOsId
11733
	 AND PROD_ID IN 
11734
	 (
11735
	 	  SELECT osc.PROD_ID
11736
	 	  FROM OS_CONTENTS osc, PACKAGE_VERSIONS pv
11737
		  WHERE pv.PV_ID = osc.PROD_ID
11738
		  AND pv.IS_OBSOLETE = 'Y'
11739
		  AND osc.OS_ID = nOsId
11740
	 );  	
11741
 
11742
 
11743
	-- Update Seq Numbers
11744
	OPEN prod_cur;
11745
	FETCH prod_cur INTO prod_rec;
11746
 
11747
	WHILE prod_cur%FOUND
11748
	LOOP
11749
 
11750
		UPDATE OS_CONTENTS SET
11751
		SEQ_NUM = NextSeqNum
11752
		WHERE OS_ID = nOsId
11753
		  AND PROD_ID = prod_rec.PROD_ID;
11754
 
11755
		NextSeqNum := NextSeqNum + 1;
11756
		FETCH prod_cur INTO prod_rec;
11757
 
11758
 
11759
	END LOOP;
11760
 
11761
	CLOSE prod_cur;	 								
11762
 
11763
END Remove_Obsolete_Patches;
11764
/*--------------------------------------------------------------------------------------------------*/
11765
FUNCTION GET_OS_ID ( PvId IN NUMBER ) RETURN NUMBER IS
11766
 
11767
	ReturnValue NUMBER;
11768
 
11769
BEGIN
11770
	SELECT osc.OS_ID INTO ReturnValue
11771
	  FROM OS_CONTENTS osc
11772
	 WHERE osc.PROD_ID = PvId;
11773
 
11774
	RETURN ReturnValue;
11775
END;
11776
/*--------------------------------------------------------------------------------------------------*/
11777
FUNCTION GET_NODE_ID ( OsId IN NUMBER ) RETURN NUMBER IS
11778
 
11779
	ReturnValue NUMBER;
11780
 
11781
BEGIN
11782
	SELECT os.NODE_ID INTO ReturnValue
11783
	  FROM OPERATING_SYSTEMS os
11784
	 WHERE os.OS_ID = OsId;
11785
 
11786
	RETURN ReturnValue;
11787
END;
11788
/*-------------------------------------------------------------------------------------------------------*/
11789
 
11790
/*-------------------------------------------------------------------------------------------------------*/
11791
 
11792
 
11793
END pk_Product_Test;
11794
/
11795