Subversion Repositories DevTools

Rev

Go to most recent revision | Details | 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
 
2496
CREATE OR REPLACE SYNONYM VTREES FOR RELEASE_MANAGER.VTREES;
2497
 
2498
CREATE OR REPLACE SYNONYM PACKAGE_DEPENDENCIES FOR RELEASE_MANAGER.PACKAGE_DEPENDENCIES;
2499
 
2500
CREATE OR REPLACE SYNONYM PRODUCT_COMPONENTS FOR RELEASE_MANAGER.PRODUCT_COMPONENTS;
2501
 
2502
CREATE OR REPLACE SYNONYM PACKAGES FOR RELEASE_MANAGER.PACKAGES;
2503
 
2504
CREATE OR REPLACE SYNONYM PROJECTS FOR RELEASE_MANAGER.PROJECTS;
2505
 
2506
CREATE OR REPLACE SYNONYM SEED_PACKAGE_NAMES_VERSIONS FOR RELEASE_MANAGER.SEED_PACKAGE_NAMES_VERSIONS;
2507
 
2508
CREATE OR REPLACE SYNONYM CONTROL_OBJECTS FOR ACCESS_MANAGER.CONTROL_OBJECTS;
2509
 
2510
CREATE OR REPLACE SYNONYM USERS FOR ACCESS_MANAGER.USERS;
2511
 
2512
CREATE OR REPLACE SYNONYM DATA_TABLES FOR ACCESS_MANAGER.DATA_TABLES;
2513
 
2514
CREATE OR REPLACE SYNONYM PK_SECURITY FOR ACCESS_MANAGER.PK_SECURITY;
2515
 
2516
CREATE OR REPLACE SYNONYM PROJECT_EXTENTIONS FOR RELEASE_MANAGER.PROJECT_EXTENTIONS;
2517
 
2518
CREATE OR REPLACE SYNONYM PACKAGE_VERSIONS FOR RELEASE_MANAGER.PACKAGE_VERSIONS;
2519
 
2520
CREATE OR REPLACE SYNONYM VTREES_WORLD FOR RELEASE_MANAGER.VTREES_WORLD;
2521
 
2522
CREATE OR REPLACE SYNONYM USER_APPLICATIONS FOR ACCESS_MANAGER.USER_APPLICATIONS;
2523
 
2524
CREATE OR REPLACE SYNONYM PAGE_CONTROL_OBJECTS FOR ACCESS_MANAGER.PAGE_CONTROL_OBJECTS;
2525
 
2526
CREATE OR REPLACE SYNONYM APPLICATION_PAGES FOR ACCESS_MANAGER.APPLICATION_PAGES;
2527
 
2528
CREATE OR REPLACE SYNONYM CQ_ISSUES FOR RELEASE_MANAGER.CQ_ISSUES;
2529
 
2530
CREATE OR REPLACE PACKAGE pk_State IS
2531
 
2532
 
2533
PROCEDURE Add_State ( sStateName IN STATES.STATE_NAME%TYPE,
2534
		  			  nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE,
2535
		  			  nProjId IN STATES.PROJ_ID%TYPE );
2536
 
2537
PROCEDURE Update_State ( nStateId IN STATES.STATE_ID%TYPE,
2538
		  			   	 sStateName IN STATES.STATE_NAME%TYPE,
2539
						 nStateSeq IN STATES.STATE_SEQ%TYPE,
2540
						 nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE );
2541
 
2542
PROCEDURE Remove_State ( nStateId IN STATES.STATE_ID%TYPE );	
2543
 
2544
PROCEDURE Toggle_Is_Displayed ( nStateId IN BOM_STATE.STATE_ID%TYPE,
2545
								nBomId IN BOM_STATE.BOM_ID%TYPE,
2546
								cIsDisplay IN BOM_STATE.IS_DISPLAYED%TYPE );
2547
 
2548
PROCEDURE Auto_Hide ( nStateId IN BOM_STATE.STATE_ID%TYPE,
2549
					  nInsertedBomId IN BOM_STATE.BOM_ID%TYPE,
2550
					  nEventValue IN SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE );								
2551
 
2552
END pk_State;
2553
/
2554
 
2555
CREATE OR REPLACE function strreplace(str varchar2, from_str varchar2, to_str varchar2)
2556
  return varchar2
2557
AS
2558
  str_temp varchar2(4000);
2559
  str_pos  number := instr(str, from_str);
2560
BEGIN
2561
  str_temp := str;
2562
  while ( str_pos > 0 ) loop
2563
    str_temp := substr(str_temp, 0, str_pos-1) || to_str ||
2564
                substr(str_temp, str_pos + length(from_str));
2565
    str_pos  := instr(str_temp, from_str);
2566
  end loop;
2567
  return str_temp;
2568
END;
2569
/
2570
 
2571
CREATE OR REPLACE PACKAGE pk_Network_Node IS
2572
/* ---------------------------------------------------------------------------
2573
    Version: 1.0.0
2574
   --------------------------------------------------------------------------- */
2575
 
2576
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
2577
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
2578
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
2579
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
2580
					 nUserId IN NUMBER,
2581
					 sNotXML IN NETWORK_NODES.NOT_XML%TYPE );
2582
 
2583
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
2584
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
2585
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
2586
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
2587
						nUserId IN NUMBER,
2588
						nLifeCycle IN NUMBER,
2589
						sNotXML IN NETWORK_NODES.NOT_XML%TYPE );					 
2590
 
2591
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
2592
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE );	
2593
 
2594
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t, nUserId IN NUMBER );	
2595
 
2596
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2, nUserId IN NUMBER );			
2597
 
2598
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
2599
		  			   nBomId IN BOMS.BOM_ID%TYPE,
2600
					   nUserId IN NUMBER );						 
2601
 
2602
END pk_Network_Node;
2603
/
2604
 
2605
CREATE OR REPLACE PACKAGE PK_PRODUCTION AS
2606
/******************************************************************************
2607
   NAME:       PK_PRODUCTION
2608
   PURPOSE:
2609
 
2610
   REVISIONS:
2611
   Ver        Date        Author           Description
2612
   ---------  ----------  ---------------  ------------------------------------
2613
   1.0        26/07/2006             1. Created this package.
2614
******************************************************************************/
2615
 
2616
  PROCEDURE Release_Authorisation_Tester ( nPvId IN NUMBER,
2617
  										   nBomId IN NUMBER,
2618
										   nTesterId IN NUMBER,
2619
										   sTesterComments IN VARCHAR2);
2620
 
2621
  PROCEDURE Release_Authorisation_Manager ( nPvId IN NUMBER,
2622
  										   	nBomId IN NUMBER,
2623
										   	nManagerId IN NUMBER,
2624
										   	sManagerComments IN VARCHAR2);		
2625
 
2626
  PROCEDURE Log_Pkg_Trail ( nPkgId IN OS_TRAIL.OS_ID%TYPE,
2627
						  	sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
2628
						  	nUserId IN OS_TRAIL.USER_ID%TYPE  );
2629
 
2630
  PROCEDURE Reject_Product ( nPvId IN NUMBER,
2631
							 nTesterId IN NUMBER,
2632
							 sTesterComments IN VARCHAR2  );	
2633
 
2634
  PROCEDURE Add_Production_Bom ( nBomId IN NUMBER, 
2635
  							   	 nBranchId IN NUMBER, 
2636
								 nStateId IN NUMBER, 
2637
								 nProjId IN NUMBER ); 							 																									   
2638
 
2639
END PK_PRODUCTION;
2640
/
2641
 
2642
CREATE OR REPLACE PACKAGE pk_Utils IS
2643
/* ---------------------------------------------------------------------------
2644
    Version: 1.0.0
2645
   --------------------------------------------------------------------------- */
2646
 
2647
PROCEDURE Clone_BOM ( nFromBomId IN BOMS.BOM_ID%TYPE,
2648
		  			  nToBomId IN BOMS.BOM_ID%TYPE,
2649
					  nUserId IN NUMBER );
2650
 
2651
PROCEDURE Copy_BOM_Contents ( nFromBomId IN BOMS.BOM_ID%TYPE,
2652
		  					  nToBomId IN BOMS.BOM_ID%TYPE );	
2653
 
2654
PROCEDURE Copy_Network_Node ( nFromBomId IN BOMS.BOM_ID%TYPE,
2655
		  					  nToBomId IN BOMS.BOM_ID%TYPE,
2656
							  nFromNodeId IN NUMBER DEFAULT 0  );	
2657
 
2658
PROCEDURE Paste_OS_Contents;							  
2659
 
2660
PROCEDURE Paste_Node ( sNodeIdList IN VARCHAR2,
2661
					   nFromBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
2662
					   nToBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE );
2663
 
2664
PROCEDURE Paste_Os ( sOsIdList IN VARCHAR2,
2665
					 nFromNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
2666
					 nToNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE );
2667
 
2668
PROCEDURE Paste_Products ( sProdIdList IN VARCHAR2,
2669
						   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
2670
						   nToOsId IN OS_CONTENTS.OS_ID%TYPE );
2671
 
2672
PROCEDURE Paste_Products_To_Base_Env ( sProdIdList IN VARCHAR2,
2673
									   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
2674
									   nToBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE );						   
2675
 
2676
PROCEDURE Clean_Old_Id_Column;	
2677
 
2678
PROCEDURE Log_Rejection_Trail ( nEnumEntityType IN REJECTION_TRAIL.ENUM_ENTITY_TYPE%TYPE,
2679
								nEntityId IN REJECTION_TRAIL.ENTITY_ID%TYPE,
2680
								cIsRejected IN REJECTION_TRAIL.IS_REJECTED%TYPE,
2681
								nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2682
								sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL );
2683
 
2684
PROCEDURE Log_Action ( nUserId IN ACTION_TRAIL.USER_ID%TYPE, 
2685
					   nEvent IN ACTION_TRAIL.ACTION_EVENT%TYPE,
2686
					   sMethod IN ACTION_TRAIL.METHOD_CALL%TYPE DEFAULT NULL,
2687
					   sActionScript IN ACTION_TRAIL.ACTION_SCRIPT%TYPE DEFAULT NULL,
2688
					   sDescription IN ACTION_TRAIL.ACTION_DESCRIPTION%TYPE DEFAULT NULL  );					  						  				  				 
2689
 
2690
END pk_Utils;
2691
/
2692
 
2693
CREATE OR REPLACE PACKAGE pk_Base_Env IS
2694
 
2695
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
2696
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
2697
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
2698
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2699
						 nUserId IN NUMBER );
2700
 
2701
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
2702
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
2703
						 	nBosId IN BASE_ENV.BOS_ID%TYPE,
2704
							nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2705
							nUserId IN NUMBER );		
2706
 
2707
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
2708
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE;
2709
 
2710
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
2711
 		  				   	 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2712
						 	 nUserId IN NUMBER);
2713
 
2714
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
2715
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
2716
						nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2717
						nUserId IN NUMBER );
2718
 
2719
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
2720
		  				   	 sProdVersion IN VARCHAR2,
2721
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2722
							 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2723
							 nUserId IN NUMBER,
2724
							 sComments IN VARCHAR2  );
2725
 
2726
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
2727
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2728
							nUserId IN NUMBER );
2729
 
2730
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
2731
						   sNewProdIdVersion IN VARCHAR2,
2732
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2733
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
2734
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
2735
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
2736
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
2737
						   sNotXML IN BASE_ENV_CONTENTS.NOT_XML%TYPE,
2738
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
2739
						   nUserId IN NUMBER,
2740
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );
2741
 
2742
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
2743
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2744
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE );
2745
 
2746
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
2747
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
2748
						  nUserId IN NUMBER );
2749
 
2750
 
2751
END pk_Base_Env;
2752
/
2753
 
2754
CREATE OR REPLACE PACKAGE pk_Product IS
2755
/* ---------------------------------------------------------------------------
2756
    Version: 1.0.0
2757
   --------------------------------------------------------------------------- */
2758
 
2759
PROCEDURE New_Product ( sProdName IN PACKAGES.PKG_NAME%TYPE,
2760
						sProdVersion IN PACKAGE_VERSIONS.PKG_VERSION%TYPE,
2761
						nUserId IN NUMBER,
2762
						outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );
2763
 
2764
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
2765
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2766
						nUserId IN NUMBER );
2767
 
2768
PROCEDURE Hide_Product ( sProdIdList IN VARCHAR2,
2769
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2770
						nUserId IN NUMBER );	
2771
 
2772
PROCEDURE Unhide_Product ( sProdIdList IN NUMBER,
2773
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2774
						nUserId IN NUMBER );												
2775
 
2776
PROCEDURE Update_Process (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
2777
		  				  nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
2778
		  				  nIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,		  
2779
		  				  nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,		  
2780
						  nCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2781
						  nPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2782
						  sPkgHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
2783
						  nProduct IN PROCESSES_CONFIG.PROD_ID%TYPE );						
2784
 
2785
PROCEDURE Update_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
2786
						   sNewProdIdVersion IN VARCHAR2,
2787
						   nOsId IN OS_CONTENTS.OS_ID%TYPE,
2788
						   nSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE,
2789
						   sComments IN OS_CONTENTS.PRODUCT_COMMENTS%TYPE,
2790
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
2791
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
2792
						   sIsNodeSpec IN OS_CONTENTS.IS_NODE_SPEC%TYPE,
2793
						   sNotXML IN OS_CONTENTS.NOT_XML%TYPE,
2794
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
2795
   						   nUserId IN NUMBER,
2796
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );						 
2797
 
2798
PROCEDURE Replace_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
2799
		  				  	nNewProdId IN OS_CONTENTS.PROD_ID%TYPE,
2800
		  			  	    nOsId IN OS_CONTENTS.OS_ID%TYPE,
2801
							nUserId IN NUMBER );
2802
 
2803
PROCEDURE Remove_Process ( 	sProcName IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,		
2804
		  				   	sProdIdList IN VARCHAR2,
2805
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2806
							sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2807
							sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2808
							sInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
2809
							nUserId IN NUMBER );							
2810
 
2811
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
2812
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2813
							nUserId IN NUMBER ); 
2814
 
2815
PROCEDURE Add_Products_NodeSpec ( sProdIdList IN VARCHAR2,
2816
		  			  	  		  nOsId IN OS_CONTENTS.OS_ID%TYPE,
2817
								  nUserId IN NUMBER ); 														
2818
 
2819
PROCEDURE Accept_Reject ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
2820
						  nBomId IN BOMS.BOM_ID%TYPE,
2821
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2822
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2823
						  nOsId IN NUMBER );
2824
 
2825
PROCEDURE Accept_Reject_List ( nProdIdList IN VARCHAR2,
2826
							   nBomId IN BOMS.BOM_ID%TYPE,
2827
						  	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2828
						       nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2829
							   nOsId IN NUMBER );
2830
 
2831
PROCEDURE Accept_Reject_Comments ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
2832
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
2833
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2834
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );				
2835
 
2836
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
2837
		  			  	  nOsId IN OS_CONTENTS.OS_ID%TYPE,
2838
						  nUserId IN NUMBER );	
2839
 
2840
PROCEDURE Remove_Obsolete_Patches ( nOsId IN OS_CONTENTS.OS_ID%TYPE,
2841
		  						  	nUserId IN NUMBER );
2842
 
2843
 
2844
FUNCTION GET_OS_ID ( PvId IN NUMBER ) RETURN NUMBER;	
2845
 
2846
FUNCTION GET_NODE_ID ( OsId IN NUMBER ) RETURN NUMBER;
2847
 
2848
PROCEDURE Add_Product_Note ( nProdId IN NUMBER,
2849
		  				   	 sNotes IN VARCHAR2,
2850
							 nUserId IN NUMBER );
2851
 
2852
PROCEDURE Edit_Product_Note ( nProdId IN NUMBER,
2853
		  				   	 sNotes IN VARCHAR2,
2854
							 nUserId IN NUMBER );							 
2855
 
2856
PROCEDURE Log_Product_Trail ( nProdId IN PRODUCT_TRAIL.PROD_ID%TYPE,
2857
						  	  sAction IN PRODUCT_TRAIL.TRAIL_ACTION%TYPE,
2858
						  	  nUserId IN PRODUCT_TRAIL.USER_ID%TYPE  );								 
2859
 
2860
END pk_Product;
2861
/
2862
 
2863
CREATE OR REPLACE PROCEDURE ADD_PROCESS (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
2864
	   	  		  						 sHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
2865
	   	  		  						 nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,
2866
										 sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2867
										 sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2868
										 sIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
2869
										 nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
2870
										 nUserId IN NUMBER) IS
2871
 
2872
 
2873
PkgName VARCHAR2(100);
2874
nPkgId	NUMBER;										 
2875
 
2876
 
2877
/*Rupesh Release 6/02/2006*/
2878
BEGIN
2879
 
2880
	 SELECT PKG.PKG_NAME, PKG.PKG_ID INTO PkgName, nPkgId
2881
	 FROM PACKAGE_VERSIONS PV, PACKAGES PKG
2882
	 WHERE PV.PV_ID = nProdId
2883
	 AND PKG.PKG_ID = PV.PKG_ID;
2884
 
2885
	 INSERT INTO PROCESSES_CONFIG (PROC_ID, PKG_HEALTH_TAG, OS_ID, CMD_INTERFACE, PKG_OWNER, IS_INTERFACE, PROD_ID, PKG_ID )
2886
	 VALUES (nProcId, sHealthTag, nOsId, sCmdInterface, sPkgOwner, sIsInterface, nProdId, nPkgId);
2887
 
2888
 
2889
 
2890
	-- Log Action --
2891
	pk_Bom.Log_Os_Trail ( nOsId,  
2892
						  'Added process with health tag '|| sHealthTag ||' for product '|| PkgName,
2893
						  nUserId );
2894
 
2895
 
2896
END ADD_PROCESS;
2897
/
2898
 
2899
CREATE OR REPLACE PACKAGE pk_Project IS
2900
 
2901
 
2902
PROCEDURE Add_Project ( sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
2903
		  			  	nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE );
2904
 
2905
PROCEDURE Update_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE,
2906
		  				   sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
2907
						   nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE );		
2908
 
2909
PROCEDURE ShowHide_Project ( nProjId DM_PROJECTS.PROJ_ID%TYPE );						   				
2910
 
2911
PROCEDURE Remove_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE );						
2912
 
2913
PROCEDURE Add_Branch ( sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
2914
		  			   nProjId IN BRANCHES.PROJ_ID%TYPE,
2915
					   nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
2916
                       sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE );
2917
 
2918
PROCEDURE Update_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE,
2919
		  				  sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
2920
					   	  nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
2921
                          sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE );					   
2922
 
2923
PROCEDURE Remove_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE );	
2924
 
2925
PROCEDURE ShowHide_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE );
2926
 
2927
PROCEDURE ShowHide_Download ( nProjId DM_PROJECTS.PROJ_ID%TYPE );	
2928
 
2929
PROCEDURE ShowHide_StateDownload ( nStateId STATES.STATE_ID%TYPE );	
2930
 
2931
 
2932
 
2933
 
2934
END pk_Project;
2935
/
2936
 
2937
CREATE OR REPLACE PACKAGE pk_Requirements IS
2938
 
2939
PROCEDURE Add_Bom ( nFromBomId IN BOMS.BOM_ID%TYPE,
2940
					nToBranchId IN BOMS.BRANCH_ID%TYPE );	
2941
 
2942
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 );					
2943
 
2944
END pk_Requirements;
2945
/
2946
 
2947
CREATE OR REPLACE FUNCTION GET_DATETIME  RETURN DATE IS
2948
 
2949
/* ---------------------------------------------------------------------------
2950
    Version: 1.0.0
2951
   --------------------------------------------------------------------------- */
2952
 
2953
BEGIN
2954
 
2955
	RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
2956
 
2957
END GET_DATETIME;
2958
/
2959
 
2960
CREATE OR REPLACE PROCEDURE New_Unit_Test ( nPv_id IN NUMBER,
2961
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
2962
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
2963
                                            sDpkg_path IN VARCHAR2,
2964
                                            sResults IN VARCHAR2,
2965
                                            sCompletion_date IN VARCHAR2,
2966
                                            nCompleted_by IN NUMBER,
2967
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
2968
											enumTEST_TYPE_NOT_DONE IN NUMBER,
2969
											outFileName OUT VARCHAR2
2970
                                           ) IS
2971
/* ---------------------------------------------------------------------------
2972
    Version: 3.2.0
2973
   --------------------------------------------------------------------------- */
2974
 
2975
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'DM_TEST';
2976
 
2977
    newID NUMBER;
2978
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
2979
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
2980
 
2981
BEGIN
2982
 
2983
	-- Get new ID --
2984
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
2985
 
2986
 
2987
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
2988
        	outFileName := sResults;
2989
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
2990
        END IF;
2991
 
2992
 
2993
	-- Remove NOT_DONE entry if exists
2994
	DELETE FROM UNIT_TESTS
2995
	 WHERE pv_id = nPv_id
2996
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
2997
 
2998
	--- Add Additional Note ---
2999
    INSERT INTO UNIT_TESTS ( TEST_ID,
3000
								PV_ID,
3001
								TEST_TYPES_FK,
3002
								TEST_SUMMARY,
3003
								COMPLETION_DATE,
3004
								COMPLETED_BY,
3005
								RESULTS_URL,
3006
								RESULTS_ATTACHMENT_NAME )
3007
    VALUES (
3008
       	newID,
3009
           nPv_id,
3010
           nTestTypeId,
3011
           sTest_summary,
3012
           SYSDATE(),
3013
           nCompleted_by,
3014
           ResultsURL,
3015
           ResultsAttachment );
3016
 
3017
END New_Unit_Test;
3018
/
3019
 
3020
CREATE OR REPLACE PACKAGE PK_REPORT IS
3021
 
3022
/*
3023
------------------------------
3024
||  Last Modified:  S.Vukovic
3025
||  Modified Date:  8/Mar/2005
3026
||  Spec Version:   1.0
3027
------------------------------
3028
*/
3029
 
3030
	TYPE typeCur IS REF CURSOR;
3031
 
3032
    /*================================================================================================*/
3033
 
3034
	FUNCTION BOM_PRODUCTS_BY_NODE_BY_OS ( BomId NUMBER ) RETURN typeCur;
3035
 
3036
	/*================================================================================================*/
3037
 
3038
 
3039
END PK_REPORT;
3040
/
3041
 
3042
CREATE OR REPLACE PACKAGE pk_Base_Env_test IS
3043
 
3044
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
3045
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
3046
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
3047
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE );
3048
 
3049
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
3050
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
3051
						 	nBosId IN BASE_ENV.BOS_ID%TYPE );		
3052
 
3053
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
3054
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE;
3055
 
3056
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE );
3057
 
3058
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
3059
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
3060
						nUserId IN NUMBER );
3061
 
3062
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
3063
		  				   	 sProdVersion IN VARCHAR2,
3064
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3065
							 nUserId IN NUMBER,
3066
							 sComments IN VARCHAR2  );
3067
 
3068
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
3069
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3070
							nUserId IN NUMBER );
3071
 
3072
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
3073
						   sNewProdIdVersion IN VARCHAR2,
3074
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3075
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
3076
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
3077
						   sElectronicName IN PACKAGES.ELECTRONIC_NAME%TYPE );
3078
 
3079
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
3080
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3081
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE );
3082
 
3083
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
3084
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3085
						  nUserId IN NUMBER );
3086
 
3087
 
3088
END pk_Base_Env_test;
3089
/
3090
 
3091
CREATE OR REPLACE PACKAGE pk_Bom_Test IS
3092
 
3093
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
3094
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
3095
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
3096
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
3097
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
3098
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
3099
					nUserId IN BOM_STATE.USER_ID%TYPE );
3100
 
3101
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
3102
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3103
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
3104
					   nUserId IN NUMBER );					
3105
 
3106
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE;	
3107
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE;
3108
 
3109
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
3110
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
3111
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
3112
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
3113
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  );
3114
 
3115
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
3116
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
3117
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
3118
							 nUserId IN NUMBER );		
3119
 
3120
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
3121
							 	 nUserId IN NUMBER );							 		
3122
 
3123
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 );
3124
 
3125
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t );
3126
 
3127
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t );			
3128
 
3129
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
3130
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
3131
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
3132
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
3133
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
3134
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE );	
3135
 
3136
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
3137
					   nUserId IN BOM_STATE.USER_ID%TYPE,
3138
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
3139
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL );	
3140
 
3141
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
3142
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
3143
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3144
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );					   					
3145
 
3146
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
3147
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
3148
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
3149
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  );	
3150
 
3151
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
3152
						   sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
3153
						   nUserId IN NODE_TRAIL.USER_ID%TYPE  );	
3154
 
3155
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
3156
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
3157
						  nUserId IN OS_TRAIL.USER_ID%TYPE  );						   
3158
 
3159
 
3160
 
3161
END pk_Bom_Test;
3162
/
3163
 
3164
CREATE OR REPLACE PACKAGE pk_Bom IS
3165
 
3166
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
3167
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
3168
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
3169
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
3170
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
3171
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
3172
					nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3173
					nUserId IN BOM_STATE.USER_ID%TYPE );
3174
 
3175
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
3176
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3177
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
3178
					   nUserId IN NUMBER );		
3179
 
3180
PROCEDURE Update_ProdBom ( nBomId IN BOMS.BOM_ID%TYPE,
3181
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3182
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
3183
					   nUserId IN NUMBER );							   			
3184
 
3185
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE;	
3186
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE;
3187
 
3188
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
3189
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
3190
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
3191
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
3192
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  );
3193
 
3194
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
3195
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
3196
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
3197
							 nUserId IN NUMBER );		
3198
 
3199
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
3200
							 	 nUserId IN NUMBER );							 		
3201
 
3202
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 );
3203
 
3204
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t );
3205
 
3206
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t );			
3207
 
3208
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
3209
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
3210
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
3211
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
3212
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
3213
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE );	
3214
 
3215
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
3216
					   nUserId IN BOM_STATE.USER_ID%TYPE,
3217
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
3218
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL );	
3219
 
3220
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
3221
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
3222
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3223
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );					   					
3224
 
3225
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
3226
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
3227
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
3228
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  );	
3229
 
3230
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
3231
						   sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
3232
						   nUserId IN NODE_TRAIL.USER_ID%TYPE  );	
3233
 
3234
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
3235
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
3236
						  nUserId IN OS_TRAIL.USER_ID%TYPE  );						   
3237
 
3238
 
3239
 
3240
END pk_Bom;
3241
/
3242
 
3243
CREATE OR REPLACE FUNCTION IN_LIST_NUMBER ( sInList IN VARCHAR2 ) RETURN DEPMGR_NUMBER_TAB_t IS
3244
 
3245
/* ---------------------------------------------------------------------------
3246
    Version: 1.0.0
3247
   --------------------------------------------------------------------------- */
3248
 
3249
    sync_rtags		   DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
3250
	pos				   NUMBER;
3251
	in_list			   VARCHAR2(4000) := sInList || ',';
3252
 
3253
BEGIN
3254
 
3255
	IF NOT sInList IS NULL
3256
	THEN
3257
		LOOP
3258
	        EXIT WHEN in_list IS NULL;
3259
	        pos := INSTR ( in_list, ',' );
3260
	        sync_rtags.extend;
3261
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3262
	        in_list := SUBSTR ( in_list, pos+1 );
3263
		END LOOP;
3264
	END IF;
3265
 
3266
	RETURN sync_rtags;
3267
END IN_LIST_NUMBER;
3268
/
3269
 
3270
CREATE OR REPLACE PACKAGE PK_BOM_RPT AS
3271
	   TYPE TOC_Type IS REF CURSOR RETURN TableOfContents%ROWTYPE;
3272
END PK_BOM_RPT;
3273
/
3274
 
3275
CREATE OR REPLACE PROCEDURE sp_get_toc (toc_Cursor IN OUT PK_BOM_RPT.TOC_Type,Test_Parameter IN varchar2)
3276
AS
3277
  LAST_PAGE INTEGER;
3278
  BEGIN
3279
       DELETE FROM TableOfContents;
3280
       COMMIT;
3281
       EXECUTE IMMEDIATE Test_Parameter;
3282
       SELECT cast(MAX(PAGE) as INTEGER) into LAST_PAGE FROM TableOfContents;
3283
       LAST_PAGE := LAST_PAGE + 2;
3284
       insert into tableofcontents
3285
       values
3286
       ('Base Configurations',LAST_PAGE,GET_DATE());
3287
       COMMIT;
3288
  	   OPEN toc_Cursor FOR
3289
	   	 SELECT * FROM TableOfContents;
3290
END sp_get_toc;
3291
/
3292
 
3293
CREATE OR REPLACE PACKAGE pk_operating_system
3294
IS
3295
   PROCEDURE add_os (
3296
      sosname         IN   operating_systems.os_name%TYPE,
3297
      soscomments     IN   operating_systems.os_comments%TYPE,
3298
      snodespecfile   IN   operating_systems.node_spec_file%TYPE,
3299
      snotxml         IN   operating_systems.not_xml%TYPE,
3300
      nnodeid         IN   operating_systems.node_id%TYPE,
3301
      nbaseenvname    IN   base_env.base_env_name%TYPE,
3302
      nbosid          IN   base_env.bos_id%TYPE DEFAULT NULL,
3303
      nuserid         IN   NUMBER
3304
   );
3305
 
3306
   PROCEDURE update_os (
3307
      nosid           IN   operating_systems.os_id%TYPE,
3308
      sosname         IN   operating_systems.os_name%TYPE,
3309
      soscomments     IN   operating_systems.os_comments%TYPE,
3310
      nbaseenvname    IN   base_env.base_env_name%TYPE,
3311
      snodespecfile   IN   operating_systems.node_spec_file%TYPE,
3312
      snotxml         IN   operating_systems.not_xml%TYPE,
3313
      nuserid         IN   NUMBER
3314
   );
3315
 
3316
   PROCEDURE add_product_wrap (
3317
      npkgid         IN   NUMBER,
3318
      sprodversion   IN   VARCHAR2,
3319
      nosid          IN   os_contents.os_id%TYPE,
3320
      nuserid        IN   NUMBER,
3321
      scomments      IN   VARCHAR2 DEFAULT NULL
3322
   );
3323
 
3324
   PROCEDURE set_base_conf (
3325
      nosid        IN   os_base_env.os_id%TYPE,
3326
      nbaseenvid   IN   os_base_env.base_env_id%TYPE
3327
   );
3328
 
3329
   PROCEDURE shift_product_seqnum (
3330
      nprodid     IN   os_contents.prod_id%TYPE,
3331
      nosid       IN   os_contents.os_id%TYPE,
3332
      ntoseqnum   IN   os_contents.seq_num%TYPE
3333
   );
3334
 
3335
   PROCEDURE shift_bulk_products_seqnum (
3336
      sprodidlist   IN   VARCHAR2,
3337
      nosid         IN   os_contents.os_id%TYPE,
3338
      cdirection    IN   CHAR
3339
   );
3340
 
3341
   PROCEDURE destroy_os (
3342
      nosidcollection   IN   depmgr_number_tab_t,
3343
      nuserid           IN   NUMBER
3344
   );
3345
 
3346
   PROCEDURE destroy_os (nosidlist IN VARCHAR2, nuserid IN NUMBER);
3347
 
3348
   PROCEDURE add_package_process (
3349
      nprocidlist   IN   VARCHAR2,
3350
	  npvid 		IN 	 processes_config.prod_id%TYPE,
3351
      nosid         IN   os_contents.os_id%TYPE,
3352
      nuserid       IN   NUMBER
3353
   );
3354
 
3355
   PROCEDURE add_packages_process (
3356
	  npvidlist		IN 	 VARCHAR2,
3357
      nosid         IN   os_contents.os_id%TYPE,
3358
      nuserid       IN   NUMBER
3359
   );   
3360
END pk_operating_system;
3361
/
3362
 
3363
CREATE OR REPLACE FUNCTION GET_DATE RETURN DATE IS
3364
 
3365
/* ---------------------------------------------------------------------------
3366
    Version: 1.0.0
3367
   --------------------------------------------------------------------------- */
3368
 
3369
BEGIN
3370
 
3371
	RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
3372
 
3373
END GET_DATE;
3374
/
3375
 
3376
CREATE OR REPLACE PROCEDURE WRITE_PRODUCTION_HISTORY (nBomId IN NUMBER,
3377
	   	  		  									  sBomName IN VARCHAR2,
3378
													  sNodeName IN VARCHAR2,
3379
													  sComment IN VARCHAR2,
3380
													  nUserId IN NUMBER
3381
	   	  		  									  )IS
3382
 
3383
/******************************************************************************
3384
   NAME:       WRITE_PRODUCTION_HISTORY
3385
   PURPOSE:    
3386
 
3387
   REVISIONS:
3388
   Ver        Date        Author           Description
3389
   ---------  ----------  ---------------  ------------------------------------
3390
   1.0        6/07/2006          1. Created this procedure.
3391
 
3392
   NOTES:
3393
 
3394
   Automatically available Auto Replace Keywords:
3395
      Object Name:     WRITE_PRODUCTION_HISTORY
3396
      Sysdate:         6/07/2006
3397
      Date and Time:   6/07/2006, 11:52:11 AM, and 6/07/2006 11:52:11 AM
3398
      Username:         (set in TOAD Options, Procedure Editor)
3399
      Table Name:       (set in the "New PL/SQL Object" dialog)
3400
 
3401
******************************************************************************/
3402
BEGIN
3403
   INSERT INTO PRODUCTION_HISTORY (BOM_ID, BOM_NAME, NODE_NAME, COMMENTS, DATE_TIME_STAMP, USER_ID)
3404
   VALUES (nBomId, sBomName, sNodeName, sComment, GET_DATETIME(), nUserId);
3405
 
3406
 
3407
END WRITE_PRODUCTION_HISTORY;
3408
/
3409
 
3410
CREATE OR REPLACE TYPE "DEPMGR_NUMBER_TAB_T"                                                                          as TABLE of NUMBER
3411
/
3412
 
3413
CREATE OR REPLACE PACKAGE pk_Network_Node_test IS
3414
/* ---------------------------------------------------------------------------
3415
    Version: 1.0.0
3416
   --------------------------------------------------------------------------- */
3417
 
3418
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
3419
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
3420
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
3421
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
3422
					 nUserId IN NUMBER );
3423
 
3424
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
3425
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
3426
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
3427
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE );					 
3428
 
3429
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
3430
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE );	
3431
 
3432
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t );	
3433
 
3434
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2 );			
3435
 
3436
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
3437
		  			   nBomId IN BOMS.BOM_ID%TYPE,
3438
					   nUserId IN NUMBER );						 
3439
 
3440
END pk_Network_Node_test;
3441
/
3442
 
3443
CREATE OR REPLACE type split_tbl as table of varchar2(32767)
3444
/
3445
 
3446
CREATE OR REPLACE PACKAGE pk_Product_test IS
3447
/* ---------------------------------------------------------------------------
3448
    Version: 1.0.0
3449
   --------------------------------------------------------------------------- */
3450
 
3451
PROCEDURE New_Product ( sProdName IN PACKAGES.PKG_NAME%TYPE,
3452
						sProdVersion IN PACKAGE_VERSIONS.PKG_VERSION%TYPE,
3453
						nUserId IN NUMBER,
3454
						outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );
3455
 
3456
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
3457
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3458
						nUserId IN NUMBER );
3459
 
3460
PROCEDURE Hide_Product ( sProdIdList IN VARCHAR2,
3461
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3462
						nUserId IN NUMBER );	
3463
 
3464
PROCEDURE Unhide_Product ( sProdIdList IN NUMBER,
3465
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3466
						nUserId IN NUMBER );												
3467
 
3468
PROCEDURE Update_Process (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
3469
		  				  nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
3470
		  				  nIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,		  
3471
		  				  nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,		  
3472
						  nCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
3473
						  nPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
3474
						  sPkgHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
3475
						  nProduct IN PROCESSES_CONFIG.PROD_ID%TYPE );						
3476
 
3477
PROCEDURE Update_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
3478
						   sNewProdIdVersion IN VARCHAR2,
3479
						   nOsId IN OS_CONTENTS.OS_ID%TYPE,
3480
						   nSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE,
3481
						   sComments IN OS_CONTENTS.PRODUCT_COMMENTS%TYPE,
3482
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
3483
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
3484
						   sIsNodeSpec IN OS_CONTENTS.IS_NODE_SPEC%TYPE,
3485
						   sNotXML IN OS_CONTENTS.NOT_XML%TYPE,
3486
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
3487
						   nUserId IN NUMBER,
3488
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );						 
3489
 
3490
PROCEDURE Replace_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
3491
		  				  	nNewProdId IN OS_CONTENTS.PROD_ID%TYPE,
3492
		  			  	    nOsId IN OS_CONTENTS.OS_ID%TYPE,
3493
							nUserId IN NUMBER );
3494
 
3495
PROCEDURE Remove_Process ( 	sProcName IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,		
3496
		  				   	sProdIdList IN VARCHAR2,
3497
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3498
							sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
3499
							sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
3500
							sInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
3501
							nUserId IN NUMBER );							
3502
 
3503
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
3504
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
3505
							nUserId IN NUMBER ); 
3506
 
3507
PROCEDURE Add_Products_NodeSpec ( sProdIdList IN VARCHAR2,
3508
		  			  	  		  nOsId IN OS_CONTENTS.OS_ID%TYPE,
3509
								  nUserId IN NUMBER ); 														
3510
 
3511
PROCEDURE Accept_Reject ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
3512
						  nBomId IN BOMS.BOM_ID%TYPE,
3513
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3514
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
3515
						  nOsId IN NUMBER );
3516
 
3517
PROCEDURE Accept_Reject_List ( nProdIdList IN VARCHAR2,
3518
							   nBomId IN BOMS.BOM_ID%TYPE,
3519
						  	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3520
						       nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
3521
							   nOsId IN NUMBER );
3522
 
3523
PROCEDURE Accept_Reject_Comments ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
3524
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
3525
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
3526
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );				
3527
 
3528
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
3529
		  			  	  nOsId IN OS_CONTENTS.OS_ID%TYPE,
3530
						  nUserId IN NUMBER );	
3531
 
3532
PROCEDURE Remove_Obsolete_Patches ( nOsId IN OS_CONTENTS.OS_ID%TYPE,
3533
		  						  	nUserId IN NUMBER );
3534
 
3535
 
3536
FUNCTION GET_OS_ID ( PvId IN NUMBER ) RETURN NUMBER;	
3537
 
3538
FUNCTION GET_NODE_ID ( OsId IN NUMBER ) RETURN NUMBER;
3539
 
3540
 
3541
 
3542
END pk_Product_Test;
3543
/
3544
 
3545
CREATE OR REPLACE FUNCTION GET_SYSTEM_VALUE ( sItemName IN SYSTEM_CONFIGURATION.ITEM_NAME%TYPE ) RETURN SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE IS
3546
 
3547
/* ---------------------------------------------------------------------------
3548
    Version: 1.0.0
3549
   --------------------------------------------------------------------------- */
3550
 
3551
ItemValue SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE;
3552
 
3553
BEGIN
3554
	-- Get system value
3555
	SELECT sc.ITEM_VALUE INTO ItemValue
3556
	  FROM SYSTEM_CONFIGURATION sc
3557
	 WHERE sc.ITEM_NAME = sItemName;
3558
 
3559
	RETURN ItemValue;
3560
 
3561
END GET_SYSTEM_VALUE;
3562
/
3563
 
3564
CREATE OR REPLACE PROCEDURE Log_Action ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
3565
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
3566
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
3567
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
3568
/* ---------------------------------------------------------------------------
3569
    Version: 3.0
3570
   --------------------------------------------------------------------------- */
3571
 
3572
    ActionTypeId NUMBER;
3573
 
3574
BEGIN
3575
 
3576
    -- Get Action Type FK
3577
    SELECT act.ACTTYPE_ID INTO ActionTypeId
3578
      FROM ACTION_TYPE act
3579
     WHERE act.NAME = enumActionTypeName;
3580
 
3581
 
3582
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
3583
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
3584
 
3585
 
3586
END Log_Action;
3587
/
3588
 
3589
CREATE OR REPLACE PACKAGE BODY pk_State
3590
IS
3591
/* ---------------------------------------------------------------------------
3592
    Version: 1.0.0
3593
   --------------------------------------------------------------------------- */
3594
 
3595
 
3596
/*--------------------------------------------------------------------------------------------------*/
3597
PROCEDURE Add_State ( sStateName IN STATES.STATE_NAME%TYPE,
3598
		  			  nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE,
3599
		  			  nProjId IN STATES.PROJ_ID%TYPE ) IS
3600
 
3601
StateId NUMBER;
3602
NextStateSeq NUMBER;
3603
 
3604
 
3605
BEGIN
3606
	/*--------------- Business Rules Here -------------------*/
3607
	/*-------------------------------------------------------*/
3608
 
3609
	-- Get state_id --
3610
	SELECT SEQ_STATE_ID.NEXTVAL INTO StateId FROM DUAL;
3611
 
3612
	-- Get Next Release Sequence
3613
	SELECT MAX( st.STATE_SEQ ) INTO NextStateSeq
3614
	  FROM STATES st
3615
	 WHERE st.PROJ_ID = nProjId;
3616
 
3617
	IF NextStateSeq IS NULL THEN
3618
	   NextStateSeq := 1;
3619
	ELSE
3620
	   NextStateSeq := NextStateSeq + 1;
3621
	END IF;
3622
 
3623
 
3624
	-- Insert Branch --
3625
	INSERT INTO STATES ( STATE_ID, PROJ_ID, STATE_NAME, STATE_SEQ, STATE_TYPE_ENUM )
3626
	VALUES ( StateId, nProjId, sStateName, NextStateSeq, nStateTypeEnum );
3627
 
3628
 
3629
	EXCEPTION
3630
    WHEN DUP_VAL_ON_INDEX
3631
	THEN		
3632
		RAISE_APPLICATION_ERROR (-20000, 'State Name "'|| sStateName ||'" is Already Used.');
3633
 
3634
END	Add_State;
3635
/*--------------------------------------------------------------------------------------------------*/
3636
PROCEDURE Update_State ( nStateId IN STATES.STATE_ID%TYPE,
3637
		  			   	 sStateName IN STATES.STATE_NAME%TYPE,
3638
						 nStateSeq IN STATES.STATE_SEQ%TYPE,
3639
						 nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE ) IS
3640
 
3641
currSeqNum NUMBER;
3642
FromSeqNum NUMBER;
3643
ProjId NUMBER;
3644
 
3645
BEGIN
3646
	/*--------------- Business Rules Here -------------------*/
3647
	/*-------------------------------------------------------*/
3648
	-- Get State proj_id --
3649
	SELECT st.PROJ_ID INTO ProjId  FROM STATES st WHERE st.STATE_ID = nStateId;
3650
 
3651
 
3652
	-- Get Current seq_num
3653
	SELECT st.STATE_SEQ INTO currSeqNum
3654
	  FROM STATES st
3655
	 WHERE st.STATE_ID = nStateId;
3656
 
3657
 
3658
	IF currSeqNum > nStateSeq
3659
	THEN
3660
 
3661
		FromSeqNum := nStateSeq;
3662
 
3663
		-- Shift others Up
3664
		UPDATE STATES st SET
3665
			   st.STATE_SEQ = st.STATE_SEQ + 1
3666
		 WHERE st.PROJ_ID = ProjId
3667
		   AND st.STATE_SEQ BETWEEN  FromSeqNum  AND  currSeqNum - 1;
3668
 
3669
 
3670
	ELSIF currSeqNum < nStateSeq
3671
	THEN
3672
 
3673
		FromSeqNum := currSeqNum + 1;  
3674
 
3675
		 -- Shift others Down
3676
		UPDATE STATES st SET
3677
		   	   st.STATE_SEQ = st.STATE_SEQ - 1
3678
		 WHERE st.PROJ_ID = ProjId
3679
		   AND st.STATE_SEQ BETWEEN  FromSeqNum  AND  nStateSeq;
3680
 
3681
	END IF;
3682
 
3683
 
3684
	-- Update State --
3685
	UPDATE STATES st SET
3686
	st.STATE_NAME = sStateName,
3687
	st.STATE_SEQ = nStateSeq,
3688
	st.STATE_TYPE_ENUM = nStateTypeEnum
3689
	WHERE st.STATE_ID = nStateId;
3690
 
3691
	EXCEPTION
3692
    WHEN DUP_VAL_ON_INDEX
3693
	THEN		
3694
		RAISE_APPLICATION_ERROR (-20000, 'State Name "'|| sStateName ||'" is Already Used.');
3695
 
3696
END	Update_State;
3697
/*--------------------------------------------------------------------------------------------------*/
3698
PROCEDURE Remove_State ( nStateId IN STATES.STATE_ID%TYPE ) IS
3699
 
3700
rowCount NUMBER DEFAULT 0;
3701
ProjId NUMBER;
3702
NextSeqNum NUMBER;
3703
 
3704
CURSOR curStates IS
3705
	SELECT st.STATE_ID
3706
	  FROM STATES st
3707
	 WHERE st.PROJ_ID = ProjId
3708
	 ORDER BY st.STATE_SEQ;
3709
recStates curStates%ROWTYPE;
3710
 
3711
BEGIN
3712
	/*--------------- Business Rules Here -------------------*/
3713
	-- Check for Dependencies (BOMS)
3714
	SELECT Count(*) INTO rowCount
3715
	  FROM BOM_STATE bs
3716
	 WHERE bs.STATE_ID = nStateId;
3717
 
3718
	IF rowCount > 0 THEN
3719
	   RAISE_APPLICATION_ERROR (-20000, 'Some BOMS are still using this State ( Counted '|| rowCount ||' ).' );
3720
	END IF; 
3721
	/*-------------------------------------------------------*/
3722
 
3723
	-- Get State proj_id --
3724
	SELECT st.PROJ_ID INTO ProjId  FROM STATES st WHERE st.STATE_ID = nStateId;
3725
 
3726
 
3727
	-- Remove State --
3728
	DELETE 
3729
	  FROM STATES st
3730
	 WHERE st.STATE_ID = nStateId;
3731
 
3732
 
3733
	-- Update Seq Number --
3734
	OPEN curStates;
3735
	FETCH curStates INTO recStates;
3736
 
3737
	NextSeqNum := 1;
3738
	WHILE curStates%FOUND
3739
	LOOP
3740
 
3741
		UPDATE STATES st SET
3742
		st.STATE_SEQ = NextSeqNum
3743
		WHERE st.STATE_ID = recStates.STATE_ID;
3744
 
3745
		NextSeqNum := NextSeqNum + 1;
3746
		FETCH curStates INTO recStates;
3747
	END LOOP;
3748
 
3749
	CLOSE curStates; 
3750
 
3751
 
3752
END	Remove_State;
3753
/*--------------------------------------------------------------------------------------------------*/
3754
PROCEDURE Toggle_Is_Displayed ( nStateId IN BOM_STATE.STATE_ID%TYPE,
3755
								nBomId IN BOM_STATE.BOM_ID%TYPE,
3756
								cIsDisplay IN BOM_STATE.IS_DISPLAYED%TYPE ) IS
3757
 
3758
IsDisplayed BOM_STATE.IS_DISPLAYED%TYPE;
3759
 
3760
BEGIN
3761
	/*--------------- Business Rules Here -------------------*/
3762
	/*-------------------------------------------------------*/
3763
 
3764
	-- Get Current is_displayed
3765
	/*SELECT bs.IS_DISPLAYED INTO IsDisplayed
3766
	  FROM BOM_STATE bs
3767
	 WHERE bs.BOM_ID = nBomId
3768
	   AND bs.STATE_ID = nStateId;
3769
 
3770
 
3771
	-- Toggle is_displayed
3772
	IF IsDisplayed = 'Y' THEN
3773
		IsDisplayed := 'N';
3774
	ELSE
3775
		IsDisplayed := 'Y';
3776
	END IF;*/
3777
 
3778
 
3779
	-- Update bom state
3780
	UPDATE BOM_STATE SET
3781
	IS_DISPLAYED = cIsDisplay
3782
	WHERE BOM_ID = nBomId
3783
	  AND STATE_ID = nStateId;
3784
 
3785
 
3786
END	Toggle_Is_Displayed;
3787
 
3788
/*--------------------------------------------------------------------------------------------------*/
3789
PROCEDURE Auto_Hide ( nStateId IN BOM_STATE.STATE_ID%TYPE,
3790
					  nInsertedBomId IN BOM_STATE.BOM_ID%TYPE,
3791
					  nEventValue IN SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE ) IS
3792
 
3793
CURSOR curParent IS
3794
	SELECT bo.BOM_ID,
3795
		   bo.IS_READONLY,
3796
		   bo.IS_REJECTED
3797
	  FROM BOMS bo
3798
	 WHERE bo.BOM_ID IN (	
3799
	 					 SELECT bo.PARENT_BOM_ID
3800
						   FROM BOMS bo
3801
						  WHERE bo.BOM_ID = nInsertedBomId
3802
						    AND bo.BOM_ID != bo.PARENT_BOM_ID
3803
	 					);
3804
recParent curParent%ROWTYPE;	
3805
 
3806
ParentBomId BOMS.PARENT_BOM_ID%TYPE;
3807
ParentOfficial BOMS.IS_READONLY%TYPE;	
3808
ParentRejected BOMS.IS_REJECTED%TYPE;			  
3809
 
3810
BEGIN
3811
	/*--------------- Business Rules Here -------------------*/
3812
	/*-------------------------------------------------------*/
3813
 
3814
	-- Get Parent Details
3815
	OPEN curParent;
3816
	FETCH curParent INTO recParent;
3817
 
3818
	ParentBomId := recParent.BOM_ID;
3819
	ParentOfficial := recParent.IS_READONLY;
3820
	ParentRejected := recParent.IS_REJECTED;
3821
 
3822
	CLOSE curParent;
3823
 
3824
 
3825
	IF ParentOfficial = 'Y' THEN
3826
		/* Auto-Hide BOM */
3827
 
3828
		IF nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_RELEASE_TO') THEN
3829
			/* REQUIREMENT: Hide Rejected parent */
3830
 
3831
			IF ParentRejected = 'Y' THEN
3832
				-- Update bom state
3833
				UPDATE BOM_STATE SET
3834
					IS_DISPLAYED = 'N'
3835
				WHERE BOM_ID = ParentBomId
3836
				  AND STATE_ID = nStateId;
3837
 
3838
			END IF;
3839
 
3840
 
3841
		ELSIF ( nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_LOCK_BOM') )  OR  (nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_ACCEPT_BOM') ) THEN
3842
			/* REQUIREMENT: Hide Rejected or Accepted parent */
3843
 
3844
			IF NOT ParentRejected IS NULL THEN
3845
				-- Update bom state
3846
				UPDATE BOM_STATE SET
3847
					IS_DISPLAYED = 'N'
3848
				WHERE BOM_ID = ParentBomId
3849
				  AND STATE_ID = nStateId;
3850
 
3851
			END IF;
3852
 
3853
 
3854
		ELSIF ( nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_UNLOCK_BOM') )  OR  (nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_REJECT_BOM') ) THEN
3855
			/* REQUIREMENT: Show parent */
3856
 
3857
			-- Update bom state
3858
			UPDATE BOM_STATE SET
3859
				IS_DISPLAYED = 'Y'
3860
			WHERE BOM_ID = ParentBomId
3861
			  AND STATE_ID = nStateId;
3862
 
3863
		END IF;
3864
 
3865
 
3866
 
3867
	END IF;
3868
 
3869
 
3870
 
3871
 
3872
END	Auto_Hide;
3873
/*--------------------------------------------------------------------------------------------------*/
3874
 
3875
 
3876
END pk_State;
3877
/
3878
 
3879
CREATE OR REPLACE PACKAGE BODY pk_Network_Node
3880
IS
3881
/* ---------------------------------------------------------------------------
3882
    Version: 1.0.0
3883
   --------------------------------------------------------------------------- */
3884
 
3885
/*--------------------------------------------------------------------------------------------------*/
3886
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
3887
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
3888
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
3889
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
3890
					 nUserId IN NUMBER,
3891
					 sNotXML IN NETWORK_NODES.NOT_XML%TYPE ) IS
3892
 
3893
NodeID NUMBER;
3894
 
3895
CURSOR nn_cur IS -- Check Node Name Duplicates
3896
		SELECT bc.node_id
3897
		  FROM BOM_CONTENTS bc,
3898
		  	   NETWORK_NODES nn
3899
		 WHERE bc.NODE_ID = nn.NODE_ID
3900
		   AND bc.BOM_ID = nBomId 
3901
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName );
3902
nn_rec nn_cur%ROWTYPE;
3903
 
3904
DUPLICATE_NODE_NAME EXCEPTION;
3905
 
3906
BEGIN
3907
	/*--------------- Business Rules Here -------------------*/
3908
	OPEN nn_cur;
3909
    FETCH nn_cur INTO nn_rec;
3910
 
3911
    IF nn_cur%FOUND
3912
    THEN
3913
		RAISE DUPLICATE_NODE_NAME;
3914
	END IF;
3915
 
3916
	CLOSE nn_cur;
3917
	/*-------------------------------------------------------*/
3918
 
3919
 
3920
	-- Get node_id
3921
	SELECT SEQ_NODE_ID.NEXTVAL INTO NodeID FROM DUAL;
3922
 
3923
 
3924
	-- Insert new Network Node			  
3925
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS, NOT_XML )
3926
	VALUES (
3927
			NodeID,
3928
			nNodeTypeId,
3929
			sNodeName,
3930
			sNodeComments,
3931
			sNotXML
3932
			);
3933
 
3934
 
3935
	-- Link Node with the BOM
3936
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID )
3937
	VALUES (
3938
		    nBomId,
3939
			NodeID
3940
		    );
3941
 
3942
	/* Log BOM_TRAIL */
3943
	pk_Bom.Log_Bom_Trail ( nBomId, 'Added Network Node: '||sNodeName, nUserId );				
3944
 
3945
EXCEPTION
3946
    WHEN DUPLICATE_NODE_NAME
3947
	THEN		
3948
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
3949
 
3950
END	Add_Node;
3951
/*--------------------------------------------------------------------------------------------------*/
3952
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
3953
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
3954
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
3955
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
3956
						nUserId IN NUMBER,
3957
						nLifeCycle IN NUMBER,
3958
						sNotXML IN NETWORK_NODES.NOT_XML%TYPE ) IS
3959
 
3960
BomID NUMBER;
3961
 
3962
CURSOR nn_cur IS -- Check Node Name Duplicates
3963
		SELECT bc.node_id
3964
		  FROM BOM_CONTENTS bc,
3965
		  	   NETWORK_NODES nn
3966
		 WHERE bc.NODE_ID = nn.NODE_ID
3967
		   AND bc.BOM_ID = BomId 
3968
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName )
3969
		   AND nn.NODE_ID != nNodeId;
3970
nn_rec nn_cur%ROWTYPE;
3971
 
3972
DUPLICATE_NODE_NAME EXCEPTION;
3973
 
3974
BEGIN
3975
	/*--------------- Business Rules Here -------------------*/
3976
	-- Check all parameters
3977
	IF (nNodeId IS NULL)  OR  (nNodeTypeId IS NULL) 
3978
	THEN
3979
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId='|| nNodeId  ||', nNodeTypeId='|| nNodeTypeId  );
3980
 
3981
	END IF;
3982
 
3983
	-- Get bom_id
3984
	SELECT bc.BOM_ID INTO BomId
3985
	  FROM BOM_CONTENTS bc
3986
	 WHERE bc.NODE_ID = nNodeId; 
3987
 
3988
	-- Check for duplicate names
3989
	OPEN nn_cur;
3990
    FETCH nn_cur INTO nn_rec;
3991
 
3992
    IF nn_cur%FOUND
3993
    THEN
3994
		RAISE DUPLICATE_NODE_NAME;
3995
	END IF;
3996
 
3997
	CLOSE nn_cur;
3998
	/*-------------------------------------------------------*/
3999
 
4000
	-- Update Network Node Details
4001
	UPDATE NETWORK_NODES nn SET
4002
		nn.NODE_NAME = sNodeName,
4003
		nn.NODE_COMMENTS = sNodeComments,
4004
		nn.NODE_TYPE_ID = nNodeTypeId,
4005
		nn.NODE_LIFE_CYCLE = nLifeCycle,
4006
		nn.NOT_XML = sNotXML
4007
	 WHERE nn.NODE_ID = nNodeId;
4008
 
4009
 	/* Log BOM_TRAIL */
4010
	pk_Bom.Log_Bom_Trail ( BomID, 'Updated Network Node: '||sNodeName, nUserId );
4011
 
4012
 
4013
EXCEPTION
4014
    WHEN DUPLICATE_NODE_NAME
4015
	THEN		
4016
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
4017
 
4018
END	Update_Node;
4019
/*--------------------------------------------------------------------------------------------------*/
4020
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
4021
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE ) IS
4022
 
4023
 
4024
 
4025
NODE_ID_REQUIRED EXCEPTION;
4026
 
4027
BEGIN
4028
	/*--------------- Business Rules Here -------------------*/
4029
    IF sNodeIdList IS NULL
4030
    THEN
4031
		RAISE NODE_ID_REQUIRED;
4032
	END IF;
4033
	/*-------------------------------------------------------*/
4034
 
4035
 
4036
 
4037
	-- Remove from Bom Contents
4038
	DELETE FROM BOM_CONTENTS
4039
	WHERE bom_id = nBomId
4040
	  AND node_id IN (
4041
		  		  	  SELECT *
4042
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
4043
		  		  	 );
4044
 
4045
 
4046
	-- Remove Network Nodes
4047
	DELETE FROM NETWORK_NODES
4048
	WHERE node_id IN (
4049
		  		  	  SELECT *
4050
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
4051
		  		  	 );
4052
 
4053
 
4054
 
4055
EXCEPTION
4056
    WHEN NODE_ID_REQUIRED
4057
	THEN		
4058
		RAISE_APPLICATION_ERROR (-20000, 'You must select at least one Network Node.');
4059
 
4060
END	Remove_Node;
4061
/*--------------------------------------------------------------------------------------------------*/
4062
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t, nUserId IN NUMBER ) IS
4063
 
4064
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
4065
NodeName VARCHAR2(4000);
4066
BomId NUMBER;
4067
 
4068
BEGIN
4069
	/*--------------- Business Rules Here -------------------*/
4070
	/*-------------------------------------------------------*/
4071
 
4072
	IF (nNodeIdCollection.COUNT > 0) THEN  
4073
 
4074
	   			--Log Action Trail
4075
		FOR i IN 1..nNodeIdCollection.COUNT
4076
		LOOP
4077
			-- Get bom_id
4078
			SELECT bc.BOM_ID INTO BomId
4079
	  		FROM BOM_CONTENTS bc
4080
			WHERE bc.NODE_ID = nNodeIdCollection(i);	
4081
 
4082
			--Get node_name
4083
			SELECT nn.NODE_NAME INTO NodeName
4084
	  		FROM NETWORK_NODES nn
4085
			WHERE nn.NODE_ID = nNodeIdCollection(i);	
4086
 
4087
			/* Log BOM_TRAIL */
4088
			pk_Bom.Log_Bom_Trail ( BomId, 'Deleted Network Node: '||NodeName, nUserId );
4089
 
4090
		END LOOP;				  
4091
 
4092
		-- Destroy Hardware Node Link
4093
		DELETE 
4094
		  FROM HARDWARE_NODE hn
4095
		 WHERE hn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
4096
 
4097
 
4098
		-- Destroy Node from Bom Contents
4099
		DELETE 
4100
		  FROM BOM_CONTENTS bc
4101
		 WHERE bc.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
4102
 
4103
 
4104
		-- Destroy Operation Systems
4105
		nIdCollector := NULL;
4106
		SELECT CAST ( MULTISET ( SELECT os.OS_ID
4107
		  	   		  		   	   FROM OPERATING_SYSTEMS os
4108
		 						  WHERE os.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) )
4109
							    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
4110
 
4111
		pk_Operating_System.Destroy_Os ( nIdCollector, nUserId );
4112
 
4113
		---- Finnaly destroy Network Node ----
4114
		DELETE
4115
		  FROM NETWORK_NODES nn
4116
		 WHERE nn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );		 
4117
 
4118
	END IF; 
4119
 
4120
 
4121
END	Destroy_Node;
4122
/*--------------------------------------------------------------------------------------------------*/
4123
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2, nUserId IN NUMBER ) IS
4124
 
4125
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
4126
 
4127
BEGIN
4128
	/*--------------- Business Rules Here -------------------*/
4129
	/*-------------------------------------------------------*/
4130
	nIdCollector := IN_LIST_NUMBER ( nNodeIdList );
4131
 
4132
	Destroy_Node ( nIdCollector, nUserId);	
4133
 
4134
 
4135
END	Destroy_Node;
4136
/*--------------------------------------------------------------------------------------------------*/
4137
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
4138
		  			   nBomId IN BOMS.BOM_ID%TYPE,
4139
					   nUserId IN NUMBER ) IS
4140
 
4141
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
4142
	SeqNum NUMBER;
4143
 
4144
BEGIN
4145
	/*--------------- Business Rules Here -------------------*/
4146
	-- Check for parameters
4147
	IF (sNodeIdOrder IS NULL)  OR (nBomId IS NULL) 
4148
	THEN
4149
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId='|| nBomId  ||' sNodeIdOrder='|| sNodeIdOrder  );
4150
	END IF;
4151
	/*-------------------------------------------------------*/
4152
 
4153
	nIdCollector := IN_LIST_NUMBER ( sNodeIdOrder );
4154
 
4155
	-- Set start sequence number
4156
	SeqNum := 1;
4157
 
4158
	FOR i IN 1..nIdCollector.COUNT
4159
	LOOP
4160
 
4161
		-- Update new sequence number
4162
		UPDATE BOM_CONTENTS bc SET
4163
			bc.SEQ_NUM = SeqNum
4164
		 WHERE bc.BOM_ID = nBomId
4165
		   AND bc.NODE_ID = nIdCollector(i);
4166
 
4167
		SeqNum := SeqNum + 1;
4168
 
4169
	END LOOP;
4170
 
4171
 
4172
END	Sort_Nodes;
4173
/*--------------------------------------------------------------------------------------------------*/
4174
END pk_Network_Node;
4175
/
4176
 
4177
CREATE OR REPLACE PACKAGE BODY pk_production
4178
IS
4179
/* ---------------------------------------------------------------------------
4180
    Version: 1.0.0
4181
   --------------------------------------------------------------------------- */
4182
 
4183
 
4184
/*--------------------------------------------------------------------------------------------------*/
4185
PROCEDURE Release_Authorisation_Tester ( nPvId IN NUMBER,
4186
  					  				   	 nBomId IN NUMBER,
4187
										 nTesterId IN NUMBER,
4188
										 sTesterComments IN VARCHAR2 ) IS
4189
 
4190
 
4191
BEGIN
4192
	/*--------------- Business Rules Here -------------------*/
4193
	/*-------------------------------------------------------*/
4194
 
4195
 
4196
 
4197
	-- Insert Into Release Authorisation Table --
4198
	INSERT INTO RELEASE_AUTHORISATION ( PV_ID, BOM_ID, TESTER_ID, TESTER_COMMENTS, TESTER_DATESTAMP )
4199
	VALUES ( nPvId, nBomId, nTesterId, sTesterComments, GET_DATETIME() );
4200
 
4201
 
4202
 
4203
END	Release_Authorisation_Tester;
4204
 
4205
/*--------------------------------------------------------------------------------------------------*/
4206
 
4207
/*--------------------------------------------------------------------------------------------------*/
4208
PROCEDURE Release_Authorisation_Manager ( nPvId IN NUMBER,
4209
  					  				   	  nBomId IN NUMBER,
4210
										  nManagerId IN NUMBER,
4211
										  sManagerComments IN VARCHAR2 ) IS
4212
 
4213
 
4214
BEGIN
4215
	/*--------------- Business Rules Here -------------------*/
4216
	/*-------------------------------------------------------*/
4217
 
4218
 
4219
 
4220
	-- Insert Into Release Authorisation Table --
4221
	UPDATE RELEASE_AUTHORISATION 
4222
	SET MANAGER_ID = nManagerId,
4223
		MANAGER_COMMENTS = sManagerComments,
4224
		MANAGER_DATESTAMP = GET_DATETIME(),
4225
		IS_OFFICIAL = 'Y'
4226
	WHERE PV_ID = nPvId
4227
	AND BOM_ID = nBomId;	
4228
 
4229
 
4230
 
4231
END	Release_Authorisation_Manager;
4232
 
4233
/*--------------------------------------------------------------------------------------------------*/
4234
 
4235
/*--------------------------------------------------------------------------------------------------*/
4236
PROCEDURE Log_Pkg_Trail ( nPkgId IN OS_TRAIL.OS_ID%TYPE,
4237
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
4238
						  nUserId IN OS_TRAIL.USER_ID%TYPE  ) IS
4239
 
4240
 
4241
BEGIN
4242
	/*--------------- Business Rules Here -------------------*/
4243
	IF (nPkgId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
4244
	THEN
4245
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nPkgId ||', sAction='|| sAction ||', nUserId='|| nUserId );
4246
	END IF;
4247
	/*-------------------------------------------------------*/
4248
 
4249
	INSERT INTO PACKAGE_TRAIL ( PKG_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
4250
	VALUES ( nPkgId, sAction, nUserId, GET_DATETIME() );	
4251
 
4252
END	Log_Pkg_Trail;
4253
/*--------------------------------------------------------------------------------------------------*/
4254
PROCEDURE Reject_Product ( nPvId IN NUMBER,
4255
						   nTesterId IN NUMBER,
4256
						   sTesterComments IN VARCHAR2 ) IS
4257
 
4258
IsRejected PRODUCT_DETAILS.IS_REJECTED%TYPE;		
4259
 
4260
CURSOR curProd IS
4261
	SELECT pd.*
4262
	  FROM PRODUCT_DETAILS pd
4263
	 WHERE pd.PROD_ID = nPvId;
4264
recProd curProd%ROWTYPE;				   
4265
 
4266
BEGIN
4267
 
4268
	-- Set new Accept-Reject state
4269
	IsRejected := 'Y';
4270
 
4271
 
4272
	OPEN curProd;
4273
	FETCH curProd INTO recProd;	
4274
 
4275
	IF curProd%FOUND THEN
4276
		/* Product Details found */	
4277
 
4278
		-- Toggle Accept-Reject State 
4279
		UPDATE PRODUCT_DETAILS pd SET
4280
		pd.IS_REJECTED = IsRejected
4281
		WHERE pd.PROD_ID = nPvId;
4282
 
4283
	ELSE
4284
		/* Product Details NOT found */
4285
 
4286
		-- Toggle Accept-Reject State	
4287
		INSERT INTO PRODUCT_DETAILS ( PROD_ID, IS_REJECTED )
4288
		VALUES ( nPvId, IsRejected );	
4289
 
4290
 
4291
 
4292
	END IF;	
4293
	CLOSE curProd;	
4294
 
4295
	/* Log Rejection Trail */
4296
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT'), nPvId, IsRejected, nTesterId, sTesterComments );
4297
 
4298
 
4299
 
4300
 
4301
 
4302
END Reject_Product;
4303
/*--------------------------------------------------------------------------------------------------*/
4304
PROCEDURE Add_Production_Bom ( nBomId IN NUMBER, 
4305
  							   nBranchId IN NUMBER, 
4306
							   nStateId IN NUMBER, 
4307
							   nProjId IN NUMBER ) IS
4308
 
4309
BEGIN
4310
 
4311
	 --Update the boms table with the branch_id
4312
	 UPDATE BOMS
4313
	 SET RTAG_ID_FK = nBranchId
4314
	 WHERE BOM_ID = nBomId;
4315
 
4316
	 --Add the production bom into the production_bom table
4317
	 INSERT INTO PRODUCTION_BOM (PROJ_ID, BOM_ID, STATE_ID)
4318
	 VALUES(nProjId, nBomId, nStateId);
4319
 
4320
 
4321
 
4322
 
4323
END Add_Production_Bom;
4324
/*--------------------------------------------------------------------------------------------------*/								 
4325
END pk_production;
4326
/
4327
 
4328
CREATE OR REPLACE PACKAGE BODY pk_Utils
4329
IS
4330
/* ---------------------------------------------------------------------------
4331
    Version: 1.0.0
4332
   --------------------------------------------------------------------------- */
4333
 
4334
/*--------------------------------------------------------------------------------------------------*/
4335
PROCEDURE Clone_BOM ( nFromBomId IN BOMS.BOM_ID%TYPE,
4336
		  			  nToBomId IN BOMS.BOM_ID%TYPE,
4337
					  nUserId IN NUMBER ) IS
4338
 
4339
FromBom VARCHAR2(4000);
4340
 
4341
BEGIN
4342
	/*--------------- Business Rules Here -------------------*/
4343
	/*-------------------------------------------------------*/
4344
 
4345
	-- Define old_bom_id
4346
	UPDATE BOMS bo SET
4347
	bo.OLD_BOM_ID = nFromBomId
4348
	WHERE bo.BOM_ID = nToBomId;
4349
 
4350
	-- Copy Bom Contents
4351
	Copy_BOM_Contents ( nFromBomId, nToBomId );
4352
 
4353
 
4354
	-- Finnaly Clean old_id columns
4355
	Clean_Old_Id_Column();
4356
 
4357
 
4358
 
4359
 
4360
	/* Log BOM_TRAIL */
4361
	-- Get FromBom Details
4362
	SELECT proj.PROJ_NAME ||' / '|| br.BRANCH_NAME ||' / '|| bn.BOM_NAME ||' '|| bo.BOM_VERSION ||'.'|| BOM_LIFECYCLE
4363
		   INTO FromBom 
4364
	  FROM DM_PROJECTS proj,
4365
	  	   BOMS bo,
4366
		   BOM_NAMES bn,
4367
		   BRANCHES br
4368
	 WHERE br.PROJ_ID = proj.PROJ_ID
4369
	   AND bo.BRANCH_ID = br.BRANCH_ID
4370
	   AND bo.BOM_NAME_ID = bn.BOM_NAME_ID
4371
	   AND bo.BOM_ID = nFromBomId;
4372
 
4373
	-- Log Action
4374
	pk_Bom.Log_Bom_Trail ( nToBomId, 'COPIED: From '|| FromBom, nUserId );
4375
 
4376
 
4377
END	Clone_BOM;
4378
/*--------------------------------------------------------------------------------------------------*/
4379
PROCEDURE Copy_BOM_Contents ( nFromBomId IN BOMS.BOM_ID%TYPE,
4380
		  					  nToBomId IN BOMS.BOM_ID%TYPE ) IS
4381
 
4382
 
4383
BEGIN
4384
	/*--------------- Business Rules Here -------------------*/
4385
	/*-------------------------------------------------------*/
4386
 
4387
	-- Copy Network Nodes
4388
	Copy_Network_Node ( nFromBomId, nToBomId ); 
4389
 
4390
 
4391
	-- Copy Hardware Names
4392
	INSERT INTO HARDWARE ( HARDWARE_NAME_ID, BOM_ID, HARDWARE_NAME, TIER_NAME, OLD_HARDWARE_NAME_ID )
4393
	SELECT SEQ_HARDWARE_NAME_ID.NEXTVAL AS HARDWARE_NAME_ID, 
4394
		   nToBomId AS BOM_ID, 
4395
		   hw.HARDWARE_NAME, 
4396
		   hw.TIER_NAME, 
4397
		   hw.HARDWARE_NAME_ID AS OLD_HARDWARE_NAME_ID
4398
	  FROM HARDWARE hw
4399
	 WHERE hw.BOM_ID = nFromBomId;
4400
 
4401
 
4402
	-- Copy Hardware Matrix
4403
	INSERT INTO HARDWARE_NODE ( HARDWARE_NAME_ID, NODE_ID) 
4404
	SELECT hw.HARDWARE_NAME_ID, 
4405
		   nn.NODE_ID
4406
	  FROM HARDWARE hw,
4407
	  	   NETWORK_NODES nn,
4408
		   HARDWARE_NODE hd
4409
	 WHERE hd.NODE_ID = nn.OLD_NODE_ID
4410
	   AND hd.HARDWARE_NAME_ID = hw.OLD_HARDWARE_NAME_ID
4411
	   AND hw.BOM_ID = nToBomId;
4412
 
4413
 
4414
	-- Copy Base Environments
4415
	INSERT INTO BASE_ENV ( BASE_ENV_ID, BOS_ID, BASE_ENV_NAME, OLD_BASE_ENV_ID, BOM_ID )
4416
	SELECT SEQ_BASE_ENV_ID.NEXTVAL AS BASE_ENV_ID, 
4417
		   be.BOS_ID, 
4418
		   be.BASE_ENV_NAME, 
4419
		   be.BASE_ENV_ID AS OLD_BASE_ENV_ID, 
4420
		   nToBomId AS BOM_ID   
4421
	  FROM BASE_ENV be
4422
	 WHERE be.BOM_ID = nFromBomId;
4423
 
4424
 
4425
	-- Relink Base Environment Contents
4426
	INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, PROD_ID, BASE_ENV_COMMENTS, SEQ_NUM, IS_NODE_SPEC, NOT_XML )
4427
	SELECT be.BASE_ENV_ID AS BASE_ENV_ID, 
4428
		   bec.PROD_ID, 
4429
		   bec.BASE_ENV_COMMENTS, 
4430
		   bec.SEQ_NUM,
4431
		   bec.IS_NODE_SPEC,
4432
		   bec.NOT_XML
4433
	  FROM BASE_ENV be,
4434
	  	   BASE_ENV_CONTENTS bec
4435
	 WHERE bec.BASE_ENV_ID = be.OLD_BASE_ENV_ID
4436
	   AND be.BOM_ID = nToBomId;
4437
 
4438
 
4439
    -- Copy OS
4440
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, OLD_OS_ID, NODE_SPEC_FILE, NOT_XML ) 
4441
	SELECT SEQ_OS_ID.NEXTVAL AS OS_ID, 
4442
		   os.OS_NAME, 
4443
		   nn.NODE_ID AS NODE_ID, 
4444
		   os.OS_COMMENTS, 
4445
		   os.OS_ID AS OLD_OS_ID,
4446
		   os.NODE_SPEC_FILE,
4447
		   os.NOT_XML
4448
	  FROM OPERATING_SYSTEMS os,
4449
	  	   NETWORK_NODES nn,
4450
		   BOM_CONTENTS bc
4451
	 WHERE bc.NODE_ID = nn.NODE_ID
4452
	   AND os.NODE_ID = nn.OLD_NODE_ID
4453
	   AND bc.BOM_ID = nToBomId;
4454
 
4455
 
4456
 
4457
    -- Relink OS Base Environments
4458
	INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID ) 
4459
	SELECT os.OS_ID AS OS_ID,
4460
		   be.BASE_ENV_ID AS BASE_ENV_ID
4461
	  FROM OPERATING_SYSTEMS os,
4462
	  	   NETWORK_NODES nn,
4463
		   BOM_CONTENTS bc,
4464
		   OS_BASE_ENV osbe,
4465
		   BASE_ENV be
4466
	 WHERE osbe.OS_ID = os.OLD_OS_ID
4467
	   AND osbe.BASE_ENV_ID = be.OLD_BASE_ENV_ID
4468
	   AND bc.NODE_ID = nn.NODE_ID
4469
	   AND os.NODE_ID = nn.NODE_ID
4470
	   AND bc.BOM_ID = nToBomId;
4471
 
4472
 
4473
	-- Copy OS Contents
4474
	INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS, CHANGE_LOG_FLAG, IS_NODE_SPEC, NOT_XML ) 	  
4475
	SELECT os.OS_ID AS OS_ID, 
4476
		   osc.SEQ_NUM, 
4477
		   osc.PROD_ID, 
4478
		   osc.PRODUCT_COMMENTS, 
4479
		   osc.CHANGE_LOG_FLAG,
4480
		   osc.IS_NODE_SPEC,
4481
		   osc.NOT_XML
4482
	  FROM OPERATING_SYSTEMS os,
4483
	  	   BOM_CONTENTS bc,
4484
		   OS_CONTENTS osc
4485
	 WHERE bc.NODE_ID = os.NODE_ID
4486
	   AND osc.OS_ID = os.OLD_OS_ID
4487
	   AND bc.BOM_ID = nToBomId;
4488
 
4489
 
4490
    -- Copy Processes Config
4491
	INSERT INTO PROCESSES_CONFIG ( PROC_ID, PROD_ID, OS_ID, PKG_HEALTH_TAG, CMD_INTERFACE, PKG_OWNER, IS_INTERFACE, PROC_DESCRIPTION, PKG_ID ) 	  
4492
	SELECT pc.PROC_ID, 
4493
		   pc.PROD_ID, 
4494
		   os.OS_ID AS OS_ID, 
4495
		   pc.PKG_HEALTH_TAG, 
4496
		   pc.CMD_INTERFACE,
4497
		   pc.PKG_OWNER,
4498
		   pc.IS_INTERFACE,
4499
		   pc.PROC_DESCRIPTION,
4500
		   pc.PKG_ID 
4501
	  FROM OPERATING_SYSTEMS os,
4502
	  	   BOM_CONTENTS bc,
4503
		   PROCESSES_CONFIG pc
4504
	 WHERE bc.NODE_ID = os.NODE_ID
4505
	   AND pc.OS_ID = os.OLD_OS_ID
4506
	   AND bc.BOM_ID = nToBomId;
4507
 
4508
 
4509
	-- Copy Hide Products/Patches
4510
	INSERT INTO HIDE_PRODUCTS (OS_ID, PROD_ID)
4511
	SELECT os.OS_ID, 
4512
		   hp.PROD_ID
4513
	FROM   HIDE_PRODUCTS hp,
4514
		   OPERATING_SYSTEMS os,
4515
		   BOM_CONTENTS bc
4516
	WHERE  hp.OS_ID = os.OLD_OS_ID
4517
	AND    bc.NODE_ID = os.NODE_ID
4518
	AND    bc.BOM_ID = nToBomId ; 	   
4519
 
4520
 
4521
END	Copy_BOM_Contents;
4522
/*--------------------------------------------------------------------------------------------------*/
4523
PROCEDURE Copy_Network_Node ( nFromBomId IN BOMS.BOM_ID%TYPE,
4524
		  					  nToBomId IN BOMS.BOM_ID%TYPE,
4525
							  nFromNodeId IN NUMBER DEFAULT 0  ) IS
4526
 
4527
 
4528
BEGIN
4529
	/*--------------- Business Rules Here -------------------*/
4530
	/*-------------------------------------------------------*/
4531
 
4532
	-- Copy Network Nodes
4533
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS, OLD_NODE_ID, NODE_VERSION, NODE_LIFE_CYCLE )
4534
	SELECT SEQ_NODE_ID.NEXTVAL AS NODE_ID, 
4535
		   nn.NODE_TYPE_ID, 
4536
		   nn.NODE_NAME, 
4537
		   nn.NODE_COMMENTS, 
4538
		   nn.NODE_ID AS OLD_NODE_ID,
4539
		   nn.NODE_VERSION, 
4540
		   nn.NODE_LIFE_CYCLE
4541
	  FROM NETWORK_NODES nn,
4542
	  	   BOM_CONTENTS bc
4543
	 WHERE bc.NODE_ID = nn.NODE_ID
4544
	   AND (
4545
	   	    ( bc.NODE_ID = bc.NODE_ID  AND  nFromNodeId = 0 ) OR
4546
			( bc.NODE_ID = nFromNodeId     AND  nFromNodeId != 0 )
4547
	   	   )
4548
	   AND bc.BOM_ID = nFromBomId;
4549
 
4550
 
4551
	-- Relink Bom Contents
4552
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID, SEQ_NUM)
4553
	SELECT bo.BOM_ID,
4554
		   nn.NODE_ID,
4555
		   bc.SEQ_NUM
4556
	  FROM BOMS bo,
4557
	  	   BOM_CONTENTS bc,
4558
		   NETWORK_NODES nn
4559
	 WHERE bc.BOM_ID = bo.OLD_BOM_ID
4560
	   AND bc.NODE_ID = nn.OLD_NODE_ID
4561
	   AND (
4562
	   	    ( nn.OLD_NODE_ID = nn.OLD_NODE_ID  AND  nFromNodeId = 0 ) OR
4563
			( nn.OLD_NODE_ID = nFromNodeId     AND  nFromNodeId != 0 )
4564
	   	   )
4565
	   AND bo.BOM_ID = nToBomId;  
4566
 
4567
END	Copy_Network_Node;
4568
/*--------------------------------------------------------------------------------------------------*/
4569
PROCEDURE Paste_Products ( sProdIdList IN VARCHAR2,
4570
						   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
4571
						   nToOsId IN OS_CONTENTS.OS_ID%TYPE ) IS
4572
 
4573
MaxSeqNum NUMBER;						 
4574
 
4575
BEGIN
4576
	/*--------------- Business Rules Here -------------------*/
4577
	/*-------------------------------------------------------*/
4578
 
4579
	-- Get Max seq_num
4580
	SELECT COUNT(*) INTO MaxSeqNum
4581
	  FROM OS_CONTENTS osc
4582
	 WHERE osc.OS_ID = nToOsId;
4583
 
4584
 
4585
	-- Copy OS Contents
4586
	INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS, CHANGE_LOG_FLAG ) 	  
4587
	SELECT nToOsId AS OS_ID, 
4588
		   ROWNUM + MaxSeqNum, 
4589
		   osc.PROD_ID, 
4590
		   osc.PRODUCT_COMMENTS, 
4591
		   osc.CHANGE_LOG_FLAG
4592
	  FROM OS_CONTENTS osc
4593
	 WHERE osc.OS_ID = nFromOsId
4594
	   AND osc.PROD_ID IN (
4595
						   SELECT *
4596
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4597
	   	   			   	   );
4598
 
4599
 
4600
    -- Copy Processes Config
4601
	INSERT INTO PROCESSES_CONFIG ( PROC_ID, PROD_ID, OS_ID, PKG_HEALTH_TAG, CMD_INTERFACE ) 	  
4602
	SELECT pc.PROC_ID, 
4603
		   pc.PROD_ID, 
4604
		   nToOsId AS OS_ID, 
4605
		   pc.PKG_HEALTH_TAG, 
4606
		   pc.CMD_INTERFACE 
4607
	  FROM OPERATING_SYSTEMS os,
4608
	  	   BOM_CONTENTS bc,
4609
		   PROCESSES_CONFIG pc
4610
	 WHERE bc.NODE_ID = os.NODE_ID
4611
	   AND pc.OS_ID = os.OLD_OS_ID
4612
	   AND bc.BOM_ID = nFromOsId
4613
	   AND pc.PROD_ID IN (
4614
						   SELECT *
4615
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4616
	   	   			   	   );
4617
 
4618
 
4619
    EXCEPTION
4620
    WHEN DUP_VAL_ON_INDEX
4621
	THEN		
4622
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Product.');	
4623
 
4624
END	Paste_Products;
4625
/*--------------------------------------------------------------------------------------------------*/
4626
PROCEDURE Paste_Products_To_Base_Env ( sProdIdList IN VARCHAR2,
4627
									   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
4628
									   nToBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE ) IS
4629
 
4630
MaxSeqNum NUMBER;						 
4631
 
4632
BEGIN
4633
	/*--------------- Business Rules Here -------------------*/
4634
	/*-------------------------------------------------------*/
4635
 
4636
	-- Get Max seq_num
4637
	SELECT COUNT(*) INTO MaxSeqNum
4638
	  FROM BASE_ENV_CONTENTS bec
4639
	 WHERE bec.BASE_ENV_ID = nToBaseEnvId;
4640
 
4641
 
4642
	-- Copy OS Contents
4643
	INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, PROD_ID, BASE_ENV_COMMENTS, SEQ_NUM ) 	  
4644
	SELECT nToBaseEnvId AS BASE_ENV_ID, 
4645
		   osc.PROD_ID,
4646
		   osc.PRODUCT_COMMENTS, 
4647
		   ROWNUM + MaxSeqNum 
4648
	  FROM OS_CONTENTS osc
4649
	 WHERE osc.OS_ID = nFromOsId
4650
	   AND osc.PROD_ID IN (
4651
						   SELECT *
4652
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4653
	   	   			   	   );
4654
 
4655
 
4656
        EXCEPTION
4657
    WHEN DUP_VAL_ON_INDEX
4658
	THEN		
4659
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Product.');	
4660
 
4661
END	Paste_Products_To_Base_Env;
4662
/*--------------------------------------------------------------------------------------------------*/
4663
PROCEDURE Paste_Os ( sOsIdList IN VARCHAR2,
4664
					 nFromNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
4665
					 nToNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE ) IS
4666
 
4667
ToBomId NUMBER;					 
4668
 
4669
BEGIN
4670
	/*--------------- Business Rules Here -------------------*/
4671
	/*-------------------------------------------------------*/
4672
 
4673
	-- Get ToBomId
4674
	SELECT bc.BOM_ID INTO ToBomId
4675
	  FROM BOM_CONTENTS bc
4676
 	 WHERE bc.NODE_ID = nToNodeId;
4677
 
4678
 
4679
    -- Copy OS
4680
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, OLD_OS_ID ) 
4681
	SELECT SEQ_OS_ID.NEXTVAL AS OS_ID, 
4682
		   os.OS_NAME, 
4683
		   nToNodeId AS NODE_ID, 
4684
		   os.OS_COMMENTS, 
4685
		   os.OS_ID AS OLD_OS_ID
4686
	  FROM OPERATING_SYSTEMS os
4687
	 WHERE os.NODE_ID = nFromNodeId
4688
	   AND os.OS_ID IN (
4689
					   	  SELECT *
4690
				   	     	FROM THE ( SELECT CAST( IN_LIST_NUMBER( sOsIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4691
   	   			   	    );
4692
 
4693
 
4694
	-- Paste OS Contents
4695
	Paste_OS_Contents();
4696
 
4697
 
4698
 
4699
	-- Finnaly Clean old_id columns
4700
	Clean_Old_Id_Column();
4701
 
4702
 
4703
	EXCEPTION
4704
    WHEN DUP_VAL_ON_INDEX
4705
	THEN		
4706
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Operating Systems.');	
4707
 
4708
END	Paste_Os;
4709
/*--------------------------------------------------------------------------------------------------*/
4710
PROCEDURE Paste_Node ( sNodeIdList IN VARCHAR2,
4711
					   nFromBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
4712
					   nToBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE ) IS
4713
 
4714
CURSOR curNodeName IS -- Check Node Name Duplicates			
4715
	SELECT nn.NODE_ID
4716
	  FROM (
4717
	  		SELECT UPPER( nn.NODE_NAME ) AS NODE_NAME
4718
		      FROM NETWORK_NODES nn
4719
		     WHERE nn.NODE_ID IN (
4720
		  							SELECT *
4721
		     						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
4722
		  					     )  
4723
	  	   ) nname,
4724
		   BOM_CONTENTS bc,
4725
	  	   NETWORK_NODES nn	
4726
	 WHERE bc.NODE_ID = nn.NODE_ID
4727
	   AND bc.BOM_ID = nToBomId
4728
	   AND UPPER( nn.NODE_NAME ) = UPPER( nname.NODE_NAME );
4729
recNodeName curNodeName%ROWTYPE;	   					 
4730
 
4731
BEGIN
4732
	/*--------------- Business Rules Here -------------------*/
4733
	OPEN curNodeName;
4734
    FETCH curNodeName INTO recNodeName;
4735
 
4736
    IF curNodeName%FOUND
4737
    THEN
4738
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Network Nodes.'   );
4739
 
4740
	END IF;
4741
 
4742
	CLOSE curNodeName;
4743
	/*-------------------------------------------------------*/
4744
 
4745
	-- Copy Network Nodes
4746
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS, OLD_NODE_ID, NODE_VERSION, NODE_LIFE_CYCLE )
4747
	SELECT SEQ_NODE_ID.NEXTVAL AS NODE_ID, 
4748
		   nn.NODE_TYPE_ID, 
4749
		   nn.NODE_NAME, 
4750
		   nn.NODE_COMMENTS, 
4751
		   nn.NODE_ID AS OLD_NODE_ID,
4752
		   nn.NODE_VERSION, 
4753
		   nn.NODE_LIFE_CYCLE
4754
	  FROM NETWORK_NODES nn,
4755
	  	   BOM_CONTENTS bc
4756
	 WHERE bc.NODE_ID = nn.NODE_ID
4757
	   AND bc.BOM_ID = nFromBomId
4758
	   AND nn.NODE_ID IN (
4759
					   	  SELECT *
4760
				   	     	FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
4761
   	   			   	     );
4762
 
4763
 
4764
	-- Relink Bom Contents
4765
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID )
4766
	SELECT nToBomId,
4767
		   nn.NODE_ID
4768
	  FROM NETWORK_NODES nn
4769
	 WHERE NOT nn.OLD_NODE_ID IS NULL;
4770
 
4771
 
4772
    -- Copy OS
4773
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, OLD_OS_ID ) 
4774
	SELECT SEQ_OS_ID.NEXTVAL AS OS_ID, 
4775
		   os.OS_NAME, 
4776
		   nn.NODE_ID, 
4777
		   os.OS_COMMENTS, 
4778
		   os.OS_ID AS OLD_OS_ID
4779
	  FROM OPERATING_SYSTEMS os,
4780
	  	   NETWORK_NODES nn
4781
	 WHERE os.NODE_ID = nn.OLD_NODE_ID;
4782
 
4783
 
4784
	-- Paste OS Contents
4785
	Paste_OS_Contents();
4786
 
4787
 
4788
 
4789
	-- Finnaly Clean old_id columns
4790
	Clean_Old_Id_Column();
4791
 
4792
 
4793
END	Paste_Node;
4794
/*--------------------------------------------------------------------------------------------------*/
4795
PROCEDURE Paste_OS_Contents IS
4796
 
4797
 
4798
BEGIN
4799
	/*--------------- Business Rules Here -------------------*/
4800
	/*-------------------------------------------------------*/
4801
 
4802
 
4803
	/* Base environment copy is a bit more complex when is copied from different bom. TODO */   
4804
	/* CODE HERE */
4805
 
4806
	-- Copy OS Contents
4807
	INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS, CHANGE_LOG_FLAG ) 	  
4808
	SELECT os.OS_ID AS OS_ID, 
4809
		   osc.SEQ_NUM, 
4810
		   osc.PROD_ID, 
4811
		   osc.PRODUCT_COMMENTS, 
4812
		   osc.CHANGE_LOG_FLAG
4813
	  FROM OS_CONTENTS osc,
4814
	  	   OPERATING_SYSTEMS os
4815
	 WHERE osc.OS_ID = os.OLD_OS_ID;
4816
 
4817
 
4818
    -- Copy Processes Config
4819
	INSERT INTO PROCESSES_CONFIG ( PROC_ID, PROD_ID, OS_ID, PKG_HEALTH_TAG, CMD_INTERFACE, PKG_ID ) 	  
4820
	SELECT pc.PROC_ID, 
4821
		   pc.PROD_ID, 
4822
		   os.OS_ID AS OS_ID, 
4823
		   pc.PKG_HEALTH_TAG, 
4824
		   pc.CMD_INTERFACE,
4825
		   pc.PKG_ID 
4826
	  FROM PROCESSES_CONFIG pc,
4827
	  	   OPERATING_SYSTEMS os
4828
	 WHERE pc.OS_ID = os.OLD_OS_ID;
4829
 
4830
 
4831
 
4832
END	Paste_OS_Contents;
4833
/*--------------------------------------------------------------------------------------------------*/
4834
PROCEDURE Clean_Old_Id_Column IS
4835
 
4836
 
4837
BEGIN
4838
	/*--------------- Business Rules Here -------------------*/
4839
	/*-------------------------------------------------------*/
4840
 
4841
	-- Clean all old_id columns
4842
	UPDATE BOMS SET OLD_BOM_ID = NULL;
4843
	UPDATE NETWORK_NODES SET OLD_NODE_ID = NULL;
4844
	UPDATE HARDWARE SET OLD_HARDWARE_NAME_ID = NULL;
4845
	UPDATE OPERATING_SYSTEMS SET OLD_OS_ID = NULL;
4846
	UPDATE BASE_ENV SET OLD_BASE_ENV_ID = NULL;
4847
 
4848
 
4849
 
4850
END	Clean_Old_Id_Column;
4851
/*--------------------------------------------------------------------------------------------------*/
4852
PROCEDURE Log_Rejection_Trail ( nEnumEntityType IN REJECTION_TRAIL.ENUM_ENTITY_TYPE%TYPE,
4853
								nEntityId IN REJECTION_TRAIL.ENTITY_ID%TYPE,
4854
								cIsRejected IN REJECTION_TRAIL.IS_REJECTED%TYPE,
4855
								nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
4856
								sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL ) IS
4857
 
4858
nNextRejectSeq REJECTION_TRAIL.REJECT_SEQ%TYPE;
4859
 
4860
CURSOR curRejectTrail IS
4861
	SELECT MAX(rt.REJECT_SEQ) AS LAST_REJECT_SEQ
4862
	  FROM REJECTION_TRAIL rt
4863
	 WHERE rt.ENTITY_ID = nEntityId
4864
	   AND rt.ENUM_ENTITY_TYPE = nEnumEntityType;
4865
recRejectTrail curRejectTrail%ROWTYPE;
4866
 
4867
BEGIN
4868
	/*--------------- Business Rules Here -------------------*/
4869
	/*-------------------------------------------------------*/
4870
 
4871
	-- Get nNextRejectSeq
4872
	OPEN curRejectTrail;
4873
	FETCH curRejectTrail INTO recRejectTrail;
4874
 
4875
	nNextRejectSeq := 1;
4876
	IF recRejectTrail.LAST_REJECT_SEQ IS NOT NULL THEN
4877
	   nNextRejectSeq := recRejectTrail.LAST_REJECT_SEQ + 1;
4878
	END IF;
4879
 
4880
	CLOSE curRejectTrail;
4881
 
4882
 
4883
 
4884
	-- Insert Rejection Comment
4885
	INSERT INTO REJECTION_TRAIL ( ENUM_ENTITY_TYPE, ENTITY_ID, REJECT_SEQ, IS_REJECTED, COMMENTS, DATE_TIME_STAMP, USER_ID )
4886
	VALUES ( 
4887
		   nEnumEntityType,
4888
		   nEntityId,
4889
		   nNextRejectSeq,
4890
		   cIsRejected,
4891
		   sComments,
4892
		   GET_DATETIME(),
4893
		   nUserId
4894
		    );
4895
 
4896
END	Log_Rejection_Trail;
4897
/*--------------------------------------------------------------------------------------------------*/
4898
PROCEDURE Log_Action ( nUserId IN ACTION_TRAIL.USER_ID%TYPE, 
4899
					   nEvent IN ACTION_TRAIL.ACTION_EVENT%TYPE,
4900
					   sMethod IN ACTION_TRAIL.METHOD_CALL%TYPE DEFAULT NULL,
4901
					   sActionScript IN ACTION_TRAIL.ACTION_SCRIPT%TYPE DEFAULT NULL,
4902
					   sDescription IN ACTION_TRAIL.ACTION_DESCRIPTION%TYPE DEFAULT NULL ) IS
4903
 
4904
BEGIN
4905
	/*--------------- Business Rules Here -------------------*/
4906
	/*-------------------------------------------------------*/
4907
 
4908
	INSERT INTO ACTION_TRAIL ( ACTION_STAMP, USER_ID, ACTION_EVENT, METHOD_CALL, ACTION_SCRIPT, ACTION_DESCRIPTION )
4909
	VALUES (
4910
		    TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' ),
4911
			nUserId,
4912
			nEvent,
4913
			sMethod,
4914
			sActionScript,
4915
			sDescription
4916
		   );
4917
 
4918
END	Log_Action;
4919
/*--------------------------------------------------------------------------------------------------*/
4920
 
4921
 
4922
END pk_Utils;
4923
/
4924
 
4925
CREATE OR REPLACE PACKAGE BODY pk_Base_Env
4926
IS
4927
/* ---------------------------------------------------------------------------
4928
    Version: 1.0.0
4929
   --------------------------------------------------------------------------- */
4930
 
4931
 
4932
/*--------------------------------------------------------------------------------------------------*/
4933
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
4934
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
4935
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
4936
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
4937
						 nUserId IN NUMBER ) IS
4938
 
4939
nBaseEnvId BASE_ENV.BASE_ENV_ID%TYPE;	
4940
NodeName VARCHAR2(4000);					 
4941
 
4942
BEGIN
4943
	/*--------------- Business Rules Here -------------------*/
4944
	/*-------------------------------------------------------*/
4945
 
4946
	SELECT NN.NODE_NAME INTO NodeName
4947
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
4948
	WHERE NN.NODE_ID = OS.NODE_ID
4949
	AND OS.OS_ID = nOsId;
4950
 
4951
	-- Get base_env_id
4952
	SELECT SEQ_BASE_ENV_ID.NEXTVAL INTO nBaseEnvId FROM DUAL;
4953
 
4954
	-- Insert new base env name
4955
	INSERT INTO BASE_ENV ( BASE_ENV_ID, BOS_ID, BASE_ENV_NAME, BOM_ID )
4956
	VALUES ( nBaseEnvId, nBosId, sBaseEnvName, nBomId );
4957
 
4958
	/* Log BOM_TRAIL */
4959
	pk_Bom.Log_Os_Trail ( nOsId, 'Added Base Configuration: '||sBaseEnvName||' into Node: '||NodeName, nUserId );	
4960
 
4961
	EXCEPTION
4962
    WHEN DUP_VAL_ON_INDEX
4963
	THEN		
4964
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
4965
 
4966
END	Add_Base_Env;
4967
/*--------------------------------------------------------------------------------------------------*/
4968
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
4969
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
4970
						 	nBosId IN BASE_ENV.BOS_ID%TYPE,
4971
							nOsId IN OS_BASE_ENV.OS_ID%TYPE,
4972
							nUserId IN NUMBER ) IS
4973
 
4974
NodeName VARCHAR2(4000);							
4975
 
4976
BEGIN
4977
	/*--------------- Business Rules Here -------------------*/
4978
	IF (nBaseEnvId IS NULL) 
4979
	THEN
4980
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
4981
 
4982
	END IF;
4983
	/*-------------------------------------------------------*/
4984
 
4985
	SELECT NN.NODE_NAME INTO NodeName
4986
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
4987
	WHERE NN.NODE_ID = OS.NODE_ID
4988
	AND OS.OS_ID = nOsId;
4989
 
4990
	-- Update Base Env
4991
	UPDATE BASE_ENV SET
4992
		BASE_ENV_NAME = sBaseEnvName,
4993
		BOS_ID = nBosId
4994
	WHERE BASE_ENV_ID = nBaseEnvId;
4995
 
4996
	/* Log BOM_TRAIL */
4997
	pk_Bom.Log_Os_Trail ( nOsId, 'Updated Base Configuration: '||sBaseEnvName||' on Node: '||NodeName, nUserId );	
4998
 
4999
	EXCEPTION
5000
    WHEN DUP_VAL_ON_INDEX
5001
	THEN		
5002
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
5003
 
5004
END	Update_Base_Env;
5005
/*--------------------------------------------------------------------------------------------------*/
5006
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
5007
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE IS
5008
 
5009
ReturnValue BASE_ENV.BASE_ENV_ID%TYPE;	
5010
 
5011
CURSOR curBaseEnv IS
5012
	SELECT be.BASE_ENV_ID
5013
	  FROM BASE_ENV be
5014
	 WHERE be.BASE_ENV_NAME = sBaseEnvName
5015
	   AND be.BOM_ID = nBomId;
5016
recBaseEnv curBaseEnv%ROWTYPE;
5017
 
5018
BEGIN
5019
	/*--------------- Business Rules Here -------------------*/
5020
	/*-------------------------------------------------------*/
5021
 
5022
	-- Get bom_name_id
5023
	OPEN curBaseEnv;
5024
	FETCH curBaseEnv INTO recBaseEnv;
5025
 
5026
	IF curBaseEnv%FOUND THEN
5027
		ReturnValue := recBaseEnv.BASE_ENV_ID;
5028
	ELSE
5029
		ReturnValue := NULL;
5030
	END IF;
5031
 
5032
	CLOSE curBaseEnv;
5033
 
5034
	RETURN ReturnValue;
5035
END	Get_Base_Env_Id;
5036
/*--------------------------------------------------------------------------------------------------*/
5037
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE, 
5038
		  				   	 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
5039
						 	 nUserId IN NUMBER ) IS
5040
 
5041
BaseEnvName VARCHAR2(100);		
5042
NodeName VARCHAR2(4000);					 
5043
 
5044
BEGIN
5045
	/*--------------- Business Rules Here -------------------*/
5046
	IF (nBaseEnvId IS NULL) 
5047
	THEN
5048
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
5049
 
5050
	END IF;
5051
	/*-------------------------------------------------------*/
5052
 
5053
	SELECT NN.NODE_NAME INTO NodeName
5054
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
5055
	WHERE NN.NODE_ID = OS.NODE_ID
5056
	AND OS.OS_ID = nOsId;	
5057
 
5058
	SELECT BASE_ENV_NAME INTO BaseEnvName
5059
	FROM BASE_ENV
5060
	WHERE BASE_ENV_ID = nBaseEnvId;
5061
 
5062
	-- Destroy Base Env Contents
5063
	DELETE
5064
      FROM BASE_ENV_CONTENTS
5065
     WHERE BASE_ENV_ID = nBaseEnvId;
5066
 
5067
	-- Remove Base Env From BOM
5068
	DELETE 
5069
	  FROM OS_BASE_ENV obe
5070
	 WHERE obe.BASE_ENV_ID = nBaseEnvId;
5071
 
5072
	-- Destroy Base Env
5073
	DELETE 
5074
	  FROM BASE_ENV be
5075
	 WHERE be.BASE_ENV_ID = nBaseEnvId;		
5076
 
5077
	/* Log BOM_TRAIL */
5078
	pk_Bom.Log_Os_Trail ( nOsId, 'Destroyed Base Configuration: '||BaseEnvName||' on Node: '||NodeName, nUserId );		 		 
5079
 
5080
END	Destroy_Base_Env;
5081
/*--------------------------------------------------------------------------------------------------*/
5082
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
5083
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
5084
						nOsId IN OS_BASE_ENV.OS_ID%TYPE,
5085
						nUserId IN NUMBER ) IS
5086
 
5087
NextSeqNum NUMBER;
5088
BaseEnvName VARCHAR2(100);
5089
PkgName VARCHAR2(100);
5090
PkgVersion VARCHAR2(100);
5091
NodeName VARCHAR2(4000); 
5092
 
5093
CURSOR prod_cur IS
5094
	SELECT pv.pv_id AS PROD_ID,
5095
		   pv.PV_DESCRIPTION
5096
	  FROM PACKAGE_VERSIONS pv
5097
	 WHERE pv.pv_id IN (
5098
	 	   			   	SELECT * 
5099
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
5100
						);
5101
prod_rec prod_cur%ROWTYPE;
5102
 
5103
 
5104
BEGIN
5105
	/*--------------- Business Rules Here -------------------*/
5106
	/*-------------------------------------------------------*/
5107
 
5108
	SELECT BASE_ENV_NAME INTO BaseEnvName 
5109
	FROM BASE_ENV
5110
	WHERE BASE_ENV_ID = nBaseEnvId;
5111
 
5112
	SELECT NN.NODE_NAME INTO NodeName
5113
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
5114
	WHERE NN.NODE_ID = OS.NODE_ID
5115
	AND OS.OS_ID = nOsId;
5116
 
5117
 
5118
	-- Get seq_num
5119
	SELECT MAX( bec.SEQ_NUM ) INTO NextSeqNum
5120
	  FROM BASE_ENV_CONTENTS bec
5121
	 WHERE bec.BASE_ENV_ID = nBaseEnvId;
5122
 
5123
	-- Set NextSeqNum to 0 if no existing products are found
5124
	IF NextSeqNum IS NULL THEN
5125
	   NextSeqNum := 1;
5126
	ELSE
5127
	   NextSeqNum := NextSeqNum + 1;
5128
	END IF;
5129
 
5130
 
5131
	-- Insert into OS Contents
5132
	OPEN prod_cur;
5133
	FETCH prod_cur INTO prod_rec;
5134
 
5135
	WHILE prod_cur%FOUND
5136
	LOOP
5137
 
5138
		INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, SEQ_NUM, PROD_ID, BASE_ENV_COMMENTS )
5139
		VALUES (
5140
				nBaseEnvId, 
5141
				NextSeqNum, 
5142
				prod_rec.PROD_ID,
5143
				prod_rec.PV_DESCRIPTION
5144
				);
5145
 
5146
		SELECT PKG.PKG_NAME INTO PkgName
5147
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
5148
		WHERE PV.PV_ID = prod_rec.PROD_ID
5149
		AND PKG.PKG_ID = PV.PKG_ID;
5150
 
5151
		SELECT PKG_VERSION INTO PkgVersion
5152
		FROM PACKAGE_VERSIONS PV
5153
		WHERE PV.PV_ID = prod_rec.PROD_ID;				
5154
 
5155
		-- Log Action --
5156
		pk_Bom.Log_Os_Trail ( nOsId,  
5157
							  'Added Product: '||PkgName||' (Version '||PkgVersion||') to Base Configuration: '||BaseEnvName||' with Install Order: '||NextSeqNum||' on Node: '||NodeName,
5158
							  nUserId );
5159
 
5160
 
5161
		NextSeqNum := NextSeqNum + 1;
5162
		FETCH prod_cur INTO prod_rec;
5163
	END LOOP;
5164
 
5165
 
5166
	CLOSE prod_cur;
5167
 
5168
 
5169
END	Add_Product; 
5170
/*--------------------------------------------------------------------------------------------------*/
5171
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
5172
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5173
							nUserId IN NUMBER ) IS
5174
 
5175
PkgName VARCHAR2(100);
5176
PkgVersion VARCHAR2(100);		
5177
NextSeqNum NUMBER := 1;
5178
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
5179
 
5180
CURSOR prod_cur IS
5181
	SELECT bec.PROD_ID, bec.SEQ_NUM
5182
	  FROM BASE_ENV_CONTENTS bec
5183
	 WHERE bec.BASE_ENV_ID = nBaseEnvId
5184
	 ORDER BY bec.SEQ_NUM;
5185
prod_rec prod_cur%ROWTYPE;	
5186
 
5187
 
5188
BEGIN
5189
	/*--------------- Business Rules Here -------------------*/
5190
	IF sProdIdList IS NULL
5191
	THEN
5192
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
5193
 
5194
	END IF;
5195
	/*-------------------------------------------------------*/
5196
 
5197
 
5198
 
5199
	-- Remove Products
5200
	DELETE 
5201
	FROM BASE_ENV_CONTENTS
5202
	WHERE BASE_ENV_ID = nBaseEnvId
5203
	  AND PROD_ID IN ( 
5204
	  	  		  	    SELECT * 
5205
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
5206
					 );
5207
 
5208
 
5209
	-- Update Seq Numbers
5210
	OPEN prod_cur;
5211
	FETCH prod_cur INTO prod_rec;
5212
 
5213
	WHILE prod_cur%FOUND
5214
	LOOP
5215
 
5216
		UPDATE BASE_ENV_CONTENTS SET
5217
		SEQ_NUM = NextSeqNum
5218
		WHERE BASE_ENV_ID = nBaseEnvId
5219
		  AND PROD_ID = prod_rec.PROD_ID;
5220
 
5221
		NextSeqNum := NextSeqNum + 1;
5222
		FETCH prod_cur INTO prod_rec;
5223
	END LOOP;
5224
 
5225
	CLOSE prod_cur;
5226
 
5227
	nIdCollector := IN_LIST_NUMBER ( sProdIdList );
5228
 
5229
	FOR i IN 1..nIdCollector.COUNT
5230
	LOOP
5231
		SELECT PKG.PKG_NAME INTO PkgName
5232
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
5233
		WHERE PV.PV_ID = nIdCollector(i)
5234
		AND PKG.PKG_ID = PV.PKG_ID;
5235
 
5236
		SELECT PKG_VERSION INTO PkgVersion
5237
		FROM PACKAGE_VERSIONS PV
5238
		WHERE PV.PV_ID = nIdCollector(i);	
5239
 
5240
		-- Log Action --
5241
		pk_Bom.Log_Os_Trail ( nBaseEnvId,  
5242
							  'Deleted Product: '||PkgName||' (Version: '||PkgVersion||') From Base Configuration from Node',
5243
							  nUserId );					  
5244
	END LOOP;	
5245
 
5246
 
5247
 
5248
END Remove_Products; 
5249
/*--------------------------------------------------------------------------------------------------*/
5250
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
5251
		  				   	 sProdVersion IN VARCHAR2,
5252
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5253
							 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
5254
							 nUserId IN NUMBER,
5255
							 sComments IN VARCHAR2 ) IS
5256
 
5257
ProdId PACKAGE_VERSIONS.PV_ID%TYPE;
5258
ProdName PACKAGES.PKG_NAME%TYPE;
5259
 
5260
CURSOR prod_cur IS
5261
	SELECT bec.PROD_ID
5262
	  FROM BASE_ENV_CONTENTS bec
5263
	 WHERE bec.PROD_ID = ProdId
5264
	   AND bec.BASE_ENV_ID = nBaseEnvId;
5265
prod_rec prod_cur%ROWTYPE;
5266
 
5267
BEGIN
5268
	/*--------------- Business Rules Here -------------------*/                             
5269
	IF (NOT nPkgId IS NULL) AND (sProdVersion IS NULL) AND (NOT nBaseEnvId IS NULL) AND (NOT nUserId IS NULL) THEN
5270
	   RAISE_APPLICATION_ERROR (-20000, 'Please provide Product Version.('|| sProdVersion ||')' );
5271
 
5272
	ELSIF (nPkgId IS NULL) OR (sProdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nUserId IS NULL) THEN
5273
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nPkgId= '|| nPkgId ||', sProdVersion='|| sProdVersion ||', nBaseEnvId='|| nBaseEnvId ||', nUserId='|| nUserId );
5274
 
5275
	END IF;
5276
	/*-------------------------------------------------------*/
5277
 
5278
	-- Get Product Name --
5279
	SELECT PKG_NAME INTO ProdName FROM PACKAGES WHERE PKG_ID = nPkgId;
5280
 
5281
 
5282
	-- Create Product Version in Release Manager if Required, and Get Prod_id --
5283
	Seed_Package_Names_Versions ( ProdName, sProdVersion, nUserId, ProdId );
5284
 
5285
 
5286
	-- Add Product To Base Env --
5287
	OPEN prod_cur;
5288
	FETCH prod_cur INTO prod_rec;
5289
 
5290
	IF prod_cur%NOTFOUND THEN
5291
	   pk_Base_Env.Add_Product ( ProdId, nBaseEnvId, nOsId, nUserId );
5292
 
5293
	   -- Update Comments
5294
	   IF (NOT sComments IS NULL) THEN
5295
	   		UPDATE BASE_ENV_CONTENTS bec SET
5296
				bec.BASE_ENV_COMMENTS = sComments
5297
			 WHERE bec.BASE_ENV_ID = nBaseEnvId
5298
			   AND bec.PROD_ID = ProdId;
5299
 
5300
	   END IF;
5301
	END IF;
5302
 
5303
	CLOSE prod_cur;
5304
 
5305
 
5306
END	Add_Product_Wrap;    
5307
/*--------------------------------------------------------------------------------------------------*/
5308
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
5309
						   sNewProdIdVersion IN VARCHAR2,
5310
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5311
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
5312
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
5313
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
5314
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
5315
						   sNotXML IN BASE_ENV_CONTENTS.NOT_XML%TYPE,
5316
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
5317
						   nUserId IN NUMBER,
5318
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE ) IS
5319
 
5320
nNewProdId BASE_ENV_CONTENTS.PROD_ID%TYPE;		
5321
 
5322
sProdName PACKAGES.PKG_NAME%TYPE;					  
5323
 
5324
CURSOR curProd IS
5325
 	SELECT pv.PV_ID
5326
	  FROM PACKAGE_VERSIONS pv
5327
	 WHERE pv.pkg_id IN ( SELECT pv.pkg_id FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nOldProdId )
5328
	   AND pv.PKG_VERSION = sNewProdIdVersion;
5329
recProd curProd%ROWTYPE;						   
5330
 
5331
BEGIN
5332
	/*--------------- Business Rules Here -------------------*/
5333
	IF (nOldProdId IS NULL) OR (sNewProdIdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nSeqNum IS NULL)
5334
	THEN
5335
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOldProdId= '|| nOldProdId  ||', sNewProdIdVersion= '|| sNewProdIdVersion ||', nBaseEnvId= '|| nBaseEnvId ||', nSeqNum= '|| nSeqNum);
5336
	END IF;
5337
	/*-------------------------------------------------------*/
5338
 
5339
	-- Get new prod_id
5340
	OPEN curProd;
5341
	FETCH curProd INTO recProd;
5342
 
5343
	-- Get the Package Name
5344
	SELECT pkg.pkg_name into sProdName
5345
	FROM PACKAGES pkg, PACKAGE_VERSIONS pv
5346
	WHERE pkg.pkg_id = pv.pkg_id 
5347
	AND pv.pv_id = nOldProdId;		
5348
 
5349
	IF curProd%FOUND THEN
5350
		nNewProdId := recProd.PV_ID;
5351
	ELSE
5352
		-- Call Release Manager to add new product	
5353
		Seed_Package_Names_Versions ( sProdName, sNewProdIdVersion, nUserId, outProdId );
5354
 
5355
		nNewProdId := outProdId;
5356
		/*RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');*/
5357
	END IF;
5358
 
5359
	CLOSE curProd;
5360
 
5361
 
5362
	-- Update Product Details
5363
	UPDATE BASE_ENV_CONTENTS SET
5364
		PROD_ID = nNewProdId,
5365
		BASE_ENV_COMMENTS = sComments,
5366
		NOT_XML = sNotXML
5367
	 WHERE BASE_ENV_ID = nBaseEnvId
5368
	   AND PROD_ID = nOldProdId;
5369
 
5370
 
5371
	UPDATE PACKAGES SET
5372
		SUNOS_ELECTRONIC_NAME = sSunOSElectronicName,
5373
		WIN_ELECTRONIC_NAME = sWinElectronicName
5374
	WHERE  PKG_ID = 
5375
	(
5376
	 SELECT PKG_ID
5377
	 FROM PACKAGE_VERSIONS 
5378
	 WHERE PACKAGE_VERSIONS.PV_ID = nNewProdId
5379
	);   
5380
 
5381
 
5382
	UPDATE PACKAGE_VERSIONS SET 
5383
		 PATCH_ELECTRONIC_NAME = sPatchElectronicName
5384
	WHERE PV_ID = nNewProdId;   		   
5385
 
5386
 
5387
 
5388
	-- Update seq_num
5389
	Shift_Product_SeqNum ( nNewProdId, nBaseEnvId, nSeqNum );
5390
 
5391
END	Update_Product; 
5392
/*--------------------------------------------------------------------------------------------------*/
5393
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
5394
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5395
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE ) IS
5396
 
5397
currSeqNum NUMBER;
5398
FromSeqNum NUMBER;
5399
 
5400
BEGIN
5401
	 -- Get Current seq_num
5402
	 SELECT bec.SEQ_NUM INTO currSeqNum
5403
	   FROM BASE_ENV_CONTENTS bec
5404
	  WHERE bec.BASE_ENV_ID = nBaseEnvId
5405
	    AND bec.PROD_ID = nProdId;
5406
 
5407
 
5408
	 IF currSeqNum > nToSeqNum
5409
	 THEN
5410
 
5411
		FromSeqNum := nToSeqNum;
5412
 
5413
			-- Shift others Up
5414
		UPDATE BASE_ENV_CONTENTS bec SET
5415
			   bec.SEQ_NUM = bec.SEQ_NUM + 1
5416
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
5417
		   AND bec.PROD_ID != nProdId
5418
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  currSeqNum - 1;
5419
 
5420
 
5421
	 ELSIF currSeqNum < nToSeqNum
5422
	 THEN
5423
 
5424
		FromSeqNum := currSeqNum + 1;  
5425
 
5426
		 -- Shift others Down
5427
		UPDATE BASE_ENV_CONTENTS bec SET
5428
		   	   bec.SEQ_NUM = bec.SEQ_NUM - 1
5429
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
5430
		   AND bec.PROD_ID != nProdId
5431
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  nToSeqNum;
5432
 
5433
	 END IF;
5434
 
5435
 
5436
	 -- Move Product to new seq_num
5437
	 UPDATE BASE_ENV_CONTENTS bec SET
5438
		    bec.SEQ_NUM = nToSeqNum
5439
	  WHERE bec.BASE_ENV_ID = nBaseEnvId 
5440
	    AND bec.PROD_ID = nProdId;
5441
 
5442
 
5443
 
5444
END Shift_Product_SeqNum;
5445
/*--------------------------------------------------------------------------------------------------*/
5446
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
5447
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
5448
						  nUserId IN NUMBER ) IS
5449
 
5450
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
5451
	SeqNum NUMBER;
5452
 
5453
 
5454
BEGIN
5455
	/*--------------- Business Rules Here -------------------*/
5456
	-- Check for parameters
5457
	IF (sProdIdOrder IS NULL)  OR (nBaseEnvId IS NULL) 
5458
	THEN
5459
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId='|| nBaseEnvId  ||' sProdIdOrder='|| sProdIdOrder  );
5460
	END IF;
5461
	/*-------------------------------------------------------*/
5462
 
5463
	nIdCollector := IN_LIST_NUMBER ( sProdIdOrder );
5464
 
5465
	-- Set start sequence number
5466
	SeqNum := 1;
5467
 
5468
	FOR i IN 1..nIdCollector.COUNT
5469
	LOOP
5470
 
5471
		-- Update new sequence number
5472
		UPDATE BASE_ENV_CONTENTS osc SET
5473
			osc.SEQ_NUM = SeqNum
5474
		 WHERE osc.BASE_ENV_ID = nBaseEnvId
5475
		   AND osc.PROD_ID = nIdCollector(i);
5476
 
5477
		SeqNum := SeqNum + 1;
5478
 
5479
	END LOOP;
5480
 
5481
 
5482
END	Sort_Products;
5483
/*--------------------------------------------------------------------------------------------------*/
5484
 
5485
 
5486
END pk_Base_Env;
5487
/
5488
 
5489
CREATE OR REPLACE PACKAGE BODY pk_product
5490
IS
5491
/* ---------------------------------------------------------------------------
5492
    Modified By: Rupesh Solanki
5493
   Date: 20/03/2006
5494
   --------------------------------------------------------------------------- */
5495
 
5496
   /*--------------------------------------------------------------------------------------------------*/
5497
   PROCEDURE new_product (
5498
      sprodname      IN       PACKAGES.pkg_name%TYPE,
5499
      sprodversion   IN       package_versions.pkg_version%TYPE,
5500
      nuserid        IN       NUMBER,
5501
      outprodid      OUT      package_versions.pv_id%TYPE
5502
   )
5503
   IS
5504
   BEGIN
5505
/*--------------- Business Rules Here -------------------*/
5506
/*-------------------------------------------------------*/
5507
 
5508
      -- Call Release Manager to add new product
5509
      seed_package_names_versions (sprodname,
5510
                                   sprodversion,
5511
                                   nuserid,
5512
                                   outprodid
5513
                                  );
5514
   END new_product;
5515
 
5516
/*--------------------------------------------------------------------------------------------------*/
5517
   PROCEDURE add_product (
5518
      sprodidlist   IN   VARCHAR2,
5519
      nosid         IN   os_contents.os_id%TYPE,
5520
      nuserid       IN   NUMBER
5521
   )
5522
   IS
5523
      nextseqnum   NUMBER;
5524
      pkgname      VARCHAR2 (100);
5525
      pkgversion   VARCHAR2 (100);
5526
      nodename     VARCHAR2 (4000);
5527
 
5528
      CURSOR prod_cur
5529
      IS
5530
         SELECT   qry.pv_id AS prod_id, qry.pv_description, qry.comments,
5531
                  qry.is_patch
5532
             FROM (
5533
                   /* Products */
5534
                   SELECT pv.pv_id, TO_NUMBER (NULL) AS install_order,
5535
                          TO_NUMBER (NULL) AS pkg_id, pv.pv_description,
5536
                          pv.comments, pv.is_patch
5537
                     FROM package_versions pv
5538
                    WHERE pv.is_patch IS NULL
5539
                      AND pv.pv_id IN (
5540
                             SELECT *
5541
                               FROM THE
5542
                                       (SELECT CAST
5543
                                                  (in_list_number (sprodidlist) AS depmgr_number_tab_t
5544
                                                  )
5545
                                          FROM DUAL
5546
                                       ))
5547
                   UNION ALL
5548
                   /* Patches */
5549
                   SELECT pv.pv_id, pp.install_order, pv.pkg_id,
5550
                          pv.pv_description, pv.comments, pv.is_patch
5551
                     FROM package_patches pp, package_versions pv
5552
                    WHERE pp.patch_id = pv.pv_id
5553
                      AND pp.patch_id IN (
5554
                             SELECT *
5555
                               FROM THE
5556
                                       (SELECT CAST
5557
                                                  (in_list_number (sprodidlist) AS depmgr_number_tab_t
5558
                                                  )
5559
                                          FROM DUAL
5560
                                       ))) qry
5561
         ORDER BY qry.pkg_id, qry.install_order;
5562
 
5563
      prod_rec     prod_cur%ROWTYPE;
5564
   BEGIN
5565
/*--------------- Business Rules Here -------------------*/
5566
/*-------------------------------------------------------*/
5567
 
5568
      -- Get seq_num
5569
      SELECT MAX (osc.seq_num)
5570
        INTO nextseqnum
5571
        FROM os_contents osc
5572
       WHERE osc.os_id = nosid;
5573
 
5574
      -- Set NextSeqNum to 0 if no existing products are found
5575
      IF nextseqnum IS NULL
5576
      THEN
5577
         nextseqnum := 1;
5578
      ELSE
5579
         nextseqnum := nextseqnum + 1;
5580
      END IF;
5581
 
5582
      -- Insert into OS Contents
5583
      OPEN prod_cur;
5584
 
5585
      FETCH prod_cur
5586
       INTO prod_rec;
5587
 
5588
      WHILE prod_cur%FOUND
5589
      LOOP
5590
         IF (prod_rec.is_patch IS NULL)
5591
         THEN
5592
            INSERT INTO os_contents
5593
                        (os_id, seq_num, prod_id,
5594
                         product_comments
5595
                        )
5596
                 VALUES (nosid, nextseqnum, prod_rec.prod_id,
5597
                         prod_rec.pv_description
5598
                        );
5599
         ELSE
5600
            INSERT INTO os_contents
5601
                        (os_id, seq_num, prod_id,
5602
                         product_comments
5603
                        )
5604
                 VALUES (nosid, nextseqnum, prod_rec.prod_id,
5605
                         prod_rec.comments
5606
                        );
5607
         END IF;
5608
 
5609
         SELECT pkg.pkg_name
5610
           INTO pkgname
5611
           FROM PACKAGES pkg, package_versions pv
5612
          WHERE pv.pv_id = prod_rec.prod_id AND pkg.pkg_id = pv.pkg_id;
5613
 
5614
         SELECT pkg_version
5615
           INTO pkgversion
5616
           FROM package_versions pv
5617
          WHERE pv.pv_id = prod_rec.prod_id;
5618
 
5619
         SELECT nn.node_name
5620
           INTO nodename
5621
           FROM network_nodes nn, operating_systems os
5622
          WHERE nn.node_id = os.node_id AND os.os_id = nosid;
5623
 
5624
         -- Log Action --
5625
         pk_bom.log_os_trail (nosid,
5626
                                 'Added Product: '
5627
                              || pkgname
5628
                              || ' (Version: '
5629
                              || pkgversion
5630
                              || ') with Install Order: '
5631
                              || nextseqnum
5632
                              || ' on Node: '
5633
                              || nodename,
5634
                              nuserid
5635
                             );
5636
         nextseqnum := nextseqnum + 1;
5637
 
5638
         FETCH prod_cur
5639
          INTO prod_rec;
5640
      END LOOP;
5641
 
5642
      CLOSE prod_cur;
5643
   END add_product;
5644
 
5645
/*--------------------------------------------------------------------------------------------------*/
5646
   PROCEDURE hide_product (
5647
      sprodidlist   IN   VARCHAR2,
5648
      nosid         IN   os_contents.os_id%TYPE,
5649
      nuserid       IN   NUMBER
5650
   )
5651
   IS
5652
   BEGIN
5653
/*--------------- Business Rules Here -------------------*/
5654
/*-------------------------------------------------------*/
5655
      INSERT INTO hide_products
5656
                  (os_id, prod_id
5657
                  )
5658
           VALUES (nosid, sprodidlist
5659
                  );
5660
   END hide_product;
5661
 
5662
/*--------------------------------------------------------------------------------------------------*/
5663
   PROCEDURE unhide_product (
5664
      sprodidlist   IN   NUMBER,
5665
      nosid         IN   os_contents.os_id%TYPE,
5666
      nuserid       IN   NUMBER
5667
   )
5668
   IS
5669
   BEGIN
5670
/*--------------- Business Rules Here -------------------*/
5671
/*-------------------------------------------------------*/
5672
      DELETE FROM hide_products
5673
            WHERE prod_id = sprodidlist AND os_id = nosid;
5674
   END unhide_product;
5675
 
5676
/*--------------------------------------------------------------------------------------------------*/
5677
   PROCEDURE update_process (
5678
      nprocid         IN   processes_config.proc_id%TYPE,
5679
      nprodid         IN   processes_config.prod_id%TYPE,
5680
      nisinterface    IN   processes_config.is_interface%TYPE,
5681
      nosid           IN   processes_config.os_id%TYPE,
5682
      ncmdinterface   IN   processes_config.cmd_interface%TYPE,
5683
      npkgowner       IN   processes_config.pkg_owner%TYPE,
5684
      spkghealthtag   IN   processes_config.pkg_health_tag%TYPE,
5685
      nproduct        IN   processes_config.prod_id%TYPE
5686
   )
5687
   IS
5688
   BEGIN
5689
      UPDATE processes_config
5690
         SET cmd_interface = ncmdinterface,
5691
             pkg_owner = npkgowner,
5692
             is_interface = nisinterface,
5693
             pkg_health_tag = spkghealthtag,
5694
             prod_id = nproduct
5695
       WHERE prod_id = nprodid AND os_id = nosid AND proc_id = nprocid;
5696
   END update_process;
5697
 
5698
/*--------------------------------------------------------------------------------------------------*/
5699
   PROCEDURE update_product (
5700
      noldprodid             IN       os_contents.prod_id%TYPE,
5701
      snewprodidversion      IN       VARCHAR2,
5702
      nosid                  IN       os_contents.os_id%TYPE,
5703
      nseqnum                IN       os_contents.seq_num%TYPE,
5704
      scomments              IN       os_contents.product_comments%TYPE,
5705
      ssunoselectronicname   IN       PACKAGES.sunos_electronic_name%TYPE,
5706
      swinelectronicname     IN       PACKAGES.win_electronic_name%TYPE,
5707
      sisnodespec            IN       os_contents.is_node_spec%TYPE,
5708
      snotxml                IN       os_contents.not_xml%TYPE,
5709
      spatchelectronicname   IN       package_versions.patch_electronic_name%TYPE,
5710
      nuserid                IN       NUMBER,
5711
      outprodid              OUT      package_versions.pv_id%TYPE
5712
   )
5713
   IS
5714
      nnewprodid   os_contents.prod_id%TYPE;
5715
      sprodname    PACKAGES.pkg_name%TYPE;
5716
 
5717
      CURSOR curprod
5718
      IS
5719
         SELECT pv.pv_id
5720
           FROM package_versions pv
5721
          WHERE pv.pkg_id IN (SELECT pv.pkg_id
5722
                                FROM package_versions pv
5723
                               WHERE pv.pv_id = noldprodid)
5724
            AND pv.pkg_version = snewprodidversion;
5725
 
5726
      recprod      curprod%ROWTYPE;
5727
   BEGIN
5728
      /*--------------- Business Rules Here -------------------*/
5729
      IF    (noldprodid IS NULL)
5730
         OR (snewprodidversion IS NULL)
5731
         OR (nosid IS NULL)
5732
         OR (nseqnum IS NULL)
5733
      THEN
5734
         raise_application_error (-20000,
5735
                                     'Missing some parameters! nOldProdId= '
5736
                                  || noldprodid
5737
                                  || ', sNewProdIdVersion= '
5738
                                  || snewprodidversion
5739
                                  || ', nOsId= '
5740
                                  || nosid
5741
                                  || ', nSeqNum= '
5742
                                  || nseqnum
5743
                                 );
5744
      END IF;
5745
 
5746
/*-------------------------------------------------------*/
5747
 
5748
      -- Get new prod_id
5749
      OPEN curprod;
5750
 
5751
      FETCH curprod
5752
       INTO recprod;
5753
 
5754
      -- Get the Package Name
5755
      SELECT pkg.pkg_name
5756
        INTO sprodname
5757
        FROM PACKAGES pkg, package_versions pv
5758
       WHERE pkg.pkg_id = pv.pkg_id AND pv.pv_id = noldprodid;
5759
 
5760
      IF curprod%FOUND
5761
      THEN
5762
         nnewprodid := recprod.pv_id;
5763
      ELSE
5764
         -- Call Release Manager to add new product
5765
         seed_package_names_versions (sprodname,
5766
                                      snewprodidversion,
5767
                                      nuserid,
5768
                                      outprodid
5769
                                     );
5770
         nnewprodid := outprodid;
5771
      /*RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');*/
5772
      END IF;
5773
 
5774
      CLOSE curprod;
5775
 
5776
      -- Update Product Details
5777
      UPDATE os_contents
5778
         SET prod_id = nnewprodid,
5779
             product_comments = scomments,
5780
             not_xml = snotxml,
5781
             is_node_spec = sisnodespec
5782
       WHERE os_id = nosid AND prod_id = noldprodid;
5783
 
5784
      --Update Package Electronic Name Details In Packages Table
5785
      UPDATE PACKAGES
5786
         SET sunos_electronic_name = ssunoselectronicname,
5787
             win_electronic_name = swinelectronicname
5788
       WHERE pkg_id = (SELECT pkg_id
5789
                         FROM package_versions
5790
                        WHERE package_versions.pv_id = nnewprodid);
5791
 
5792
      --Update Patch Electronic Name In Package Versions Table
5793
      UPDATE package_versions
5794
         SET patch_electronic_name = spatchelectronicname
5795
       WHERE pv_id = nnewprodid;
5796
 
5797
      -- Update seq_num
5798
      pk_operating_system.shift_product_seqnum (nnewprodid, nosid, nseqnum);
5799
   END update_product;
5800
 
5801
/*--------------------------------------------------------------------------------------------------*/
5802
   PROCEDURE replace_product (
5803
      noldprodid   IN   os_contents.prod_id%TYPE,
5804
      nnewprodid   IN   os_contents.prod_id%TYPE,
5805
      nosid        IN   os_contents.os_id%TYPE,
5806
      nuserid      IN   NUMBER
5807
   )
5808
   IS
5809
      oldversion   VARCHAR2 (100);
5810
      newversion   VARCHAR2 (100);
5811
      pkgname      VARCHAR2 (100);
5812
      nodename     VARCHAR2 (4000);
5813
   BEGIN
5814
/*--------------- Business Rules Here -------------------*/
5815
/*-------------------------------------------------------*/
5816
      UPDATE os_contents
5817
         SET prod_id = nnewprodid
5818
       WHERE prod_id = noldprodid AND os_id = nosid;
5819
 
5820
      SELECT pkg_version
5821
        INTO oldversion
5822
        FROM package_versions
5823
       WHERE pv_id = noldprodid;
5824
 
5825
      SELECT pkg_version
5826
        INTO newversion
5827
        FROM package_versions
5828
       WHERE pv_id = nnewprodid;
5829
 
5830
      SELECT pkg.pkg_name
5831
        INTO pkgname
5832
        FROM PACKAGES pkg, package_versions pv
5833
       WHERE pv.pv_id = nnewprodid AND pkg.pkg_id = pv.pkg_id;
5834
 
5835
      SELECT nn.node_name
5836
        INTO nodename
5837
        FROM network_nodes nn, operating_systems os
5838
       WHERE nn.node_id = os.node_id AND os.os_id = nosid;
5839
 
5840
      -- Log Action --
5841
      pk_bom.log_os_trail (nosid,
5842
                              'Updated Product: '
5843
                           || pkgname
5844
                           || ' from Version: '
5845
                           || oldversion
5846
                           || ' to '
5847
                           || newversion
5848
                           || ' on Node: '
5849
                           || nodename,
5850
                           nuserid
5851
                          );
5852
   END replace_product;
5853
 
5854
/*--------------------------------------------------------------------------------------------------*/
5855
   PROCEDURE remove_process (
5856
      sprocname       IN   processes_config.pkg_health_tag%TYPE,
5857
      sprodidlist     IN   VARCHAR2,
5858
      nosid           IN   os_contents.os_id%TYPE,
5859
      scmdinterface   IN   processes_config.cmd_interface%TYPE,
5860
      spkgowner       IN   processes_config.pkg_owner%TYPE,
5861
      sinterface      IN   processes_config.is_interface%TYPE,
5862
      nuserid         IN   NUMBER
5863
   )
5864
   IS
5865
      processname   VARCHAR2 (4000);
5866
      nodename      VARCHAR2 (4000);
5867
   BEGIN
5868
      -- Log Action --
5869
      pk_bom.log_os_trail (nosid,
5870
                           'Deleted Process: ' || sprocname || ' From Node. ',
5871
                           nuserid
5872
                          );
5873
 
5874
/*Select the Correct Details - Begin*/
5875
      IF scmdinterface IS NOT NULL
5876
      THEN
5877
         IF sinterface IS NOT NULL
5878
         THEN
5879
            IF spkgowner IS NOT NULL
5880
            THEN
5881
               DELETE FROM processes_config
5882
                     WHERE os_id = nosid
5883
                       AND prod_id = sprodidlist
5884
                       AND pkg_health_tag = sprocname
5885
                       AND cmd_interface = scmdinterface
5886
                       AND pkg_owner = spkgowner
5887
                       AND is_interface = sinterface;
5888
            ELSE
5889
      /*sPkgOwner IS NULL, sInterface IS NOT NULL, sCmdInterface IS NOT NULL*/
5890
               DELETE FROM processes_config
5891
                     WHERE os_id = nosid
5892
                       AND prod_id = sprodidlist
5893
                       AND pkg_health_tag = sprocname
5894
                       AND cmd_interface = scmdinterface
5895
                       AND pkg_owner IS NULL
5896
                       AND is_interface = sinterface;
5897
            END IF;
5898
         ELSE               /* sInterface IS NULL, sCmdInterface IS NOT NULL*/
5899
            IF spkgowner IS NOT NULL
5900
            THEN
5901
               DELETE FROM processes_config
5902
                     WHERE os_id = nosid
5903
                       AND prod_id = sprodidlist
5904
                       AND pkg_health_tag = sprocname
5905
                       AND cmd_interface = scmdinterface
5906
                       AND pkg_owner = spkgowner
5907
                       AND is_interface IS NULL;
5908
            ELSE
5909
         /* sPkqOwner IS NULL, sInterface IS NULL, sCmdInterface IS NOT NULL*/
5910
               DELETE FROM processes_config
5911
                     WHERE os_id = nosid
5912
                       AND prod_id = sprodidlist
5913
                       AND pkg_health_tag = sprocname
5914
                       AND cmd_interface = scmdinterface
5915
                       AND pkg_owner IS NULL
5916
                       AND is_interface IS NULL;
5917
            END IF;
5918
         END IF;
5919
      ELSE                                          /* sCmdInterface IS NULL*/
5920
         IF sinterface IS NOT NULL
5921
         THEN
5922
            IF spkgowner IS NOT NULL
5923
            THEN
5924
               DELETE FROM processes_config
5925
                     WHERE os_id = nosid
5926
                       AND prod_id = sprodidlist
5927
                       AND pkg_health_tag = sprocname
5928
                       AND cmd_interface IS NULL
5929
                       AND pkg_owner = spkgowner
5930
                       AND is_interface = sinterface;
5931
            ELSE
5932
        /* sPkgOwner is NULL, sInterface IS NOT NULL, sCmdInterface IS NULL */
5933
               DELETE FROM processes_config
5934
                     WHERE os_id = nosid
5935
                       AND prod_id = sprodidlist
5936
                       AND pkg_health_tag = sprocname
5937
                       AND cmd_interface IS NULL
5938
                       AND pkg_owner IS NULL
5939
                       AND is_interface = sinterface;
5940
            END IF;
5941
         ELSE                   /* sInterface IS NULL, sCmdInterface IS NULL*/
5942
            IF spkgowner IS NOT NULL
5943
            THEN
5944
               DELETE FROM processes_config
5945
                     WHERE os_id = nosid
5946
                       AND prod_id = sprodidlist
5947
                       AND pkg_health_tag = sprocname
5948
                       AND cmd_interface IS NULL
5949
                       AND pkg_owner = spkgowner
5950
                       AND is_interface IS NULL;
5951
            ELSE
5952
             /* sPkgOwner IS NULL, sInterface IS NULL, sCmdInterface IS NULL*/
5953
               DELETE FROM processes_config
5954
                     WHERE os_id = nosid
5955
                       AND prod_id = sprodidlist
5956
                       AND pkg_health_tag = sprocname
5957
                       AND cmd_interface IS NULL
5958
                       AND pkg_owner IS NULL
5959
                       AND is_interface IS NULL;
5960
            END IF;
5961
         END IF;
5962
      END IF;
5963
/*Select the Correct Details - End*/
5964
   END remove_process;
5965
 
5966
/*--------------------------------------------------------------------------------------------------*/
5967
   PROCEDURE remove_products (
5968
      sprodidlist   IN   VARCHAR2,
5969
      nosid         IN   os_contents.os_id%TYPE,
5970
      nuserid       IN   NUMBER
5971
   )
5972
   IS
5973
      pkgname        VARCHAR2 (100);
5974
      pkgversion     VARCHAR2 (100);
5975
      nextseqnum     NUMBER              := 1;
5976
      nidcollector   depmgr_number_tab_t := depmgr_number_tab_t ();
5977
      nodename       VARCHAR2 (4000);
5978
 
5979
      CURSOR prod_cur
5980
      IS
5981
         SELECT   osc.prod_id, osc.seq_num
5982
             FROM os_contents osc
5983
            WHERE osc.os_id = nosid
5984
         ORDER BY osc.seq_num;
5985
 
5986
      prod_rec       prod_cur%ROWTYPE;
5987
   BEGIN
5988
      /*--------------- Business Rules Here -------------------*/
5989
      IF sprodidlist IS NULL
5990
      THEN
5991
         raise_application_error (-20000,
5992
                                  'Please select one or more Products.'
5993
                                 );
5994
      END IF;
5995
 
5996
/*-------------------------------------------------------*/
5997
      SELECT nn.node_name
5998
        INTO nodename
5999
        FROM network_nodes nn, operating_systems os
6000
       WHERE nn.node_id = os.node_id AND os.os_id = nosid;
6001
 
6002
      -- Remove Products
6003
      DELETE FROM os_contents
6004
            WHERE os_id = nosid
6005
              AND prod_id IN (
6006
                     SELECT *
6007
                       FROM THE
6008
                               (SELECT CAST
6009
                                          (in_list_number (sprodidlist) AS depmgr_number_tab_t
6010
                                          )
6011
                                  FROM DUAL
6012
                               ));
6013
 
6014
      -- Remove Processes
6015
      DELETE FROM processes_config
6016
            WHERE os_id = nosid
6017
              AND pkg_id IN (
6018
                     SELECT pkg_id
6019
                       FROM package_versions
6020
                      WHERE pv_id IN (
6021
                               SELECT *
6022
                                 FROM THE
6023
                                         (SELECT CAST
6024
                                                    (in_list_number
6025
                                                                  (sprodidlist) AS depmgr_number_tab_t
6026
                                                    )
6027
                                            FROM DUAL
6028
                                         )));
6029
 
6030
      -- Update Seq Numbers
6031
      OPEN prod_cur;
6032
 
6033
      FETCH prod_cur
6034
       INTO prod_rec;
6035
 
6036
      WHILE prod_cur%FOUND
6037
      LOOP
6038
         UPDATE os_contents
6039
            SET seq_num = nextseqnum
6040
          WHERE os_id = nosid AND prod_id = prod_rec.prod_id;
6041
 
6042
         nextseqnum := nextseqnum + 1;
6043
 
6044
         FETCH prod_cur
6045
          INTO prod_rec;
6046
      END LOOP;
6047
 
6048
      CLOSE prod_cur;
6049
 
6050
      nidcollector := in_list_number (sprodidlist);
6051
 
6052
      FOR i IN 1 .. nidcollector.COUNT
6053
      LOOP
6054
         SELECT pkg.pkg_name
6055
           INTO pkgname
6056
           FROM PACKAGES pkg, package_versions pv
6057
          WHERE pv.pv_id = nidcollector (i) AND pkg.pkg_id = pv.pkg_id;
6058
 
6059
         SELECT pkg_version
6060
           INTO pkgversion
6061
           FROM package_versions pv
6062
          WHERE pv.pv_id = nidcollector (i);
6063
 
6064
         -- Log Action --
6065
         pk_bom.log_os_trail (nosid,
6066
                                 'Deleted Product: '
6067
                              || pkgname
6068
                              || ' (Version: '
6069
                              || pkgversion
6070
                              || ') from Node: '
6071
                              || nodename,
6072
                              nuserid
6073
                             );
6074
      END LOOP;
6075
   END remove_products;
6076
 
6077
/*--------------------------------------------------------------------------------------------------*/
6078
   PROCEDURE add_products_nodespec (
6079
      sprodidlist   IN   VARCHAR2,
6080
      nosid         IN   os_contents.os_id%TYPE,
6081
      nuserid       IN   NUMBER
6082
   )
6083
   IS
6084
      nextseqnum   NUMBER             := 1;
6085
 
6086
      CURSOR prod_cur
6087
      IS
6088
         SELECT   osc.prod_id, osc.seq_num
6089
             FROM os_contents osc
6090
            WHERE osc.os_id = nosid
6091
         ORDER BY osc.seq_num;
6092
 
6093
      prod_rec     prod_cur%ROWTYPE;
6094
   BEGIN
6095
      /*--------------- Business Rules Here -------------------*/
6096
      IF sprodidlist IS NULL
6097
      THEN
6098
         raise_application_error (-20000,
6099
                                  'Please select one or more Products.'
6100
                                 );
6101
      END IF;
6102
 
6103
/*-------------------------------------------------------*/
6104
      UPDATE os_contents
6105
         SET is_node_spec = ''
6106
       WHERE os_id = nosid;
6107
 
6108
      -- Set Nodespec On
6109
      UPDATE os_contents
6110
         SET is_node_spec = 'on'
6111
       WHERE os_id = nosid
6112
         AND prod_id IN (
6113
                SELECT *
6114
                  FROM THE
6115
                          (SELECT CAST
6116
                                     (in_list_number (sprodidlist) AS depmgr_number_tab_t
6117
                                     )
6118
                             FROM DUAL
6119
                          ));
6120
   END add_products_nodespec;
6121
 
6122
/*--------------------------------------------------------------------------------------------------*/
6123
   PROCEDURE accept_reject (
6124
      nprodid     IN   product_details.prod_id%TYPE,
6125
      nbomid      IN   boms.bom_id%TYPE,
6126
      scomments   IN   rejection_trail.comments%TYPE DEFAULT NULL,
6127
      nuserid     IN   rejection_trail.user_id%TYPE,
6128
      nosid       IN   NUMBER
6129
   )
6130
   IS
6131
      isrejected   product_details.is_rejected%TYPE;
6132
      pkgname      VARCHAR2 (100);
6133
      pkgversion   VARCHAR2 (100);
6134
      nodename     VARCHAR2 (4000);
6135
 
6136
      CURSOR curprod
6137
      IS
6138
         SELECT pd.*
6139
           FROM product_details pd
6140
          WHERE pd.prod_id = nprodid;
6141
 
6142
      recprod      curprod%ROWTYPE;
6143
   BEGIN
6144
      /*--------------- Business Rules Here -------------------*/
6145
      IF (nprodid IS NULL)
6146
      THEN
6147
         raise_application_error (-20000,
6148
                                  'Please select at least one product.'
6149
                                 );
6150
      END IF;
6151
 
6152
/*-------------------------------------------------------*/
6153
 
6154
      -- Set new Accept-Reject state
6155
      isrejected := 'Y';
6156
 
6157
      SELECT nn.node_name
6158
        INTO nodename
6159
        FROM network_nodes nn, operating_systems os
6160
       WHERE nn.node_id = os.node_id AND os.os_id = nosid;
6161
 
6162
      OPEN curprod;
6163
 
6164
      FETCH curprod
6165
       INTO recprod;
6166
 
6167
      IF curprod%FOUND
6168
      THEN
6169
         /* Product Details found */
6170
         SELECT pkg.pkg_name
6171
           INTO pkgname
6172
           FROM PACKAGES pkg, package_versions pv
6173
          WHERE pv.pv_id = nprodid AND pkg.pkg_id = pv.pkg_id;
6174
 
6175
         SELECT pkg_version
6176
           INTO pkgversion
6177
           FROM package_versions pv
6178
          WHERE pv.pv_id = nprodid;
6179
 
6180
         -- Set new Accept-Reject state
6181
         IF recprod.is_rejected = 'Y'
6182
         THEN
6183
            isrejected := 'N';
6184
            -- Log Action --
6185
            pk_bom.log_os_trail (nosid,
6186
                                    'Accepted Product: '
6187
                                 || pkgname
6188
                                 || ' '
6189
                                 || pkgversion
6190
                                 || ' on Node: '
6191
                                 || nodename,
6192
                                 nuserid
6193
                                );
6194
         ELSE
6195
            isrejected := 'Y';
6196
            -- Log Action --
6197
            pk_bom.log_os_trail (nosid,
6198
                                    'Rejected Product: '
6199
                                 || pkgname
6200
                                 || ' '
6201
                                 || pkgversion
6202
                                 || ' on Node: '
6203
                                 || nodename,
6204
                                 nuserid
6205
                                );
6206
         END IF;
6207
 
6208
         -- Toggle Accept-Reject State
6209
         UPDATE product_details pd
6210
            SET pd.is_rejected = isrejected
6211
          WHERE pd.prod_id = nprodid;
6212
      ELSE
6213
         /* Product Details NOT found */
6214
 
6215
         -- Toggle Accept-Reject State
6216
         INSERT INTO product_details
6217
                     (prod_id, is_rejected
6218
                     )
6219
              VALUES (nprodid, isrejected
6220
                     );
6221
      END IF;
6222
 
6223
      CLOSE curprod;
6224
 
6225
      -- Reflect changes to the BOM level
6226
 
6227
      /* Log Rejection Trail */
6228
      pk_utils.log_rejection_trail
6229
                                 (get_system_value ('enumENTITY_TYPE_PRODUCT'),
6230
                                  nprodid,
6231
                                  isrejected,
6232
                                  nuserid,
6233
                                  scomments
6234
                                 );
6235
   END accept_reject;
6236
 
6237
/*--------------------------------------------------------------------------------------------------*/
6238
   PROCEDURE accept_reject_list (
6239
      nprodidlist   IN   VARCHAR2,
6240
      nbomid        IN   boms.bom_id%TYPE,
6241
      scomments     IN   rejection_trail.comments%TYPE DEFAULT NULL,
6242
      nuserid       IN   rejection_trail.user_id%TYPE,
6243
      nosid         IN   NUMBER
6244
   )
6245
   IS
6246
      nidcollector   depmgr_number_tab_t := depmgr_number_tab_t ();
6247
   BEGIN
6248
      /*--------------- Business Rules Here -------------------*/
6249
      IF (nprodidlist IS NULL)
6250
      THEN
6251
         raise_application_error (-20000,
6252
                                  'Please select at least one product.'
6253
                                 );
6254
      END IF;
6255
 
6256
/*-------------------------------------------------------*/
6257
      nidcollector := in_list_number (nprodidlist);
6258
 
6259
      FOR i IN 1 .. nidcollector.COUNT
6260
      LOOP
6261
         accept_reject (nidcollector (i), nbomid, scomments, nuserid, nosid);
6262
      END LOOP;
6263
   END accept_reject_list;
6264
 
6265
/*--------------------------------------------------------------------------------------------------*/
6266
   PROCEDURE accept_reject_comments (
6267
      nprodid      IN   product_details.prod_id%TYPE,
6268
      nrejectseq   IN   rejection_trail.reject_seq%TYPE,
6269
      scomments    IN   rejection_trail.comments%TYPE DEFAULT NULL,
6270
      nuserid      IN   rejection_trail.user_id%TYPE
6271
   )
6272
   IS
6273
      isrejected   rejection_trail.is_rejected%TYPE;
6274
   BEGIN
6275
      /*--------------- Business Rules Here -------------------*/
6276
      IF (nprodid IS NULL)
6277
      THEN
6278
         raise_application_error (-20000,
6279
                                     'Missing some parameters! nProdId= '
6280
                                  || nprodid
6281
                                 );
6282
      END IF;
6283
 
6284
/*-------------------------------------------------------*/
6285
      IF nrejectseq IS NULL
6286
      THEN
6287
         /* CREATE New Note */
6288
 
6289
         -- Get last IsRejected state
6290
         SELECT   rt.is_rejected
6291
             INTO isrejected
6292
             FROM rejection_trail rt
6293
            WHERE rt.entity_id = nprodid
6294
              AND rt.enum_entity_type =
6295
                                  get_system_value ('enumENTITY_TYPE_PRODUCT')
6296
              AND ROWNUM = 1
6297
         ORDER BY rt.reject_seq;
6298
 
6299
         /* Log Rejection Trail */
6300
         pk_utils.log_rejection_trail
6301
                                 (get_system_value ('enumENTITY_TYPE_PRODUCT'),
6302
                                  nprodid,
6303
                                  isrejected,
6304
                                  nuserid,
6305
                                  scomments
6306
                                 );
6307
      ELSE
6308
         /* EDIT Note */
6309
         UPDATE rejection_trail rt
6310
            SET rt.comments = scomments,
6311
                rt.user_id = nuserid,
6312
                rt.date_time_stamp = get_datetime ()
6313
          WHERE rt.enum_entity_type =
6314
                                  get_system_value ('enumENTITY_TYPE_PRODUCT')
6315
            AND rt.entity_id = nprodid
6316
            AND rt.reject_seq = nrejectseq;
6317
      END IF;
6318
   END accept_reject_comments;
6319
 
6320
/*--------------------------------------------------------------------------------------------------*/
6321
   PROCEDURE sort_products (
6322
      sprodidorder   IN   VARCHAR2,
6323
      nosid          IN   os_contents.os_id%TYPE,
6324
      nuserid        IN   NUMBER
6325
   )
6326
   IS
6327
      nidcollector   depmgr_number_tab_t := depmgr_number_tab_t ();
6328
      seqnum         NUMBER;
6329
   BEGIN
6330
      /*--------------- Business Rules Here -------------------*/
6331
      -- Check for parameters
6332
      IF (sprodidorder IS NULL) OR (nosid IS NULL)
6333
      THEN
6334
         raise_application_error (-20000,
6335
                                     'Missing some parameters! nOsId='
6336
                                  || nosid
6337
                                  || ' sProdIdOrder='
6338
                                  || sprodidorder
6339
                                 );
6340
      END IF;
6341
 
6342
/*-------------------------------------------------------*/
6343
      nidcollector := in_list_number (sprodidorder);
6344
      -- Set start sequence number
6345
      seqnum := 1;
6346
 
6347
      FOR i IN 1 .. nidcollector.COUNT
6348
      LOOP
6349
         -- Update new sequence number
6350
         UPDATE os_contents osc
6351
            SET osc.seq_num = seqnum
6352
          WHERE osc.os_id = nosid AND osc.prod_id = nidcollector (i);
6353
 
6354
         seqnum := seqnum + 1;
6355
      END LOOP;
6356
   END sort_products;
6357
 
6358
/*--------------------------------------------------------------------------------------------------*/
6359
   PROCEDURE remove_obsolete_patches (
6360
      nosid     IN   os_contents.os_id%TYPE,
6361
      nuserid   IN   NUMBER
6362
   )
6363
   IS
6364
      nextseqnum         NUMBER                     := 1;
6365
 
6366
      CURSOR prod_cur
6367
      IS
6368
         SELECT   osc.prod_id, osc.seq_num
6369
             FROM os_contents osc
6370
            WHERE osc.os_id = nosid
6371
         ORDER BY osc.seq_num;
6372
 
6373
      prod_rec           prod_cur%ROWTYPE;
6374
 
6375
      CURSOR log_obsolete_cur
6376
      IS
6377
         SELECT osc.prod_id, pv.pkg_version
6378
           FROM os_contents osc, package_versions pv
6379
          WHERE pv.pv_id = osc.prod_id
6380
            AND pv.is_obsolete = 'Y'
6381
            AND osc.os_id = nosid;
6382
 
6383
      log_obsolete_rec   log_obsolete_cur%ROWTYPE;
6384
   BEGIN
6385
      -- Log Obsolete Patches
6386
      OPEN log_obsolete_cur;
6387
 
6388
      FETCH log_obsolete_cur
6389
       INTO log_obsolete_rec;
6390
 
6391
      WHILE log_obsolete_cur%FOUND
6392
      LOOP
6393
         pk_bom.log_os_trail (nosid,
6394
                                 'Removed Obsolete Patch: '
6395
                              || log_obsolete_rec.pkg_version,
6396
                              nuserid
6397
                             );
6398
 
6399
         FETCH log_obsolete_cur
6400
          INTO log_obsolete_rec;
6401
      END LOOP;
6402
 
6403
      CLOSE log_obsolete_cur;
6404
 
6405
      -- Delete Obsolete Patches in the OS.
6406
      DELETE FROM os_contents
6407
            WHERE os_id = nosid
6408
              AND prod_id IN (
6409
                     SELECT osc.prod_id
6410
                       FROM os_contents osc, package_versions pv
6411
                      WHERE pv.pv_id = osc.prod_id
6412
                        AND pv.is_obsolete = 'Y'
6413
                        AND osc.os_id = nosid);
6414
 
6415
      -- Update Seq Numbers
6416
      OPEN prod_cur;
6417
 
6418
      FETCH prod_cur
6419
       INTO prod_rec;
6420
 
6421
      WHILE prod_cur%FOUND
6422
      LOOP
6423
         UPDATE os_contents
6424
            SET seq_num = nextseqnum
6425
          WHERE os_id = nosid AND prod_id = prod_rec.prod_id;
6426
 
6427
         nextseqnum := nextseqnum + 1;
6428
 
6429
         FETCH prod_cur
6430
          INTO prod_rec;
6431
      END LOOP;
6432
 
6433
      CLOSE prod_cur;
6434
   END remove_obsolete_patches;
6435
 
6436
/*--------------------------------------------------------------------------------------------------*/
6437
   FUNCTION get_os_id (pvid IN NUMBER)
6438
      RETURN NUMBER
6439
   IS
6440
      returnvalue   NUMBER;
6441
   BEGIN
6442
      SELECT osc.os_id
6443
        INTO returnvalue
6444
        FROM os_contents osc
6445
       WHERE osc.prod_id = pvid;
6446
 
6447
      RETURN returnvalue;
6448
   END;
6449
 
6450
/*--------------------------------------------------------------------------------------------------*/
6451
   FUNCTION get_node_id (osid IN NUMBER)
6452
      RETURN NUMBER
6453
   IS
6454
      returnvalue   NUMBER;
6455
   BEGIN
6456
      SELECT os.node_id
6457
        INTO returnvalue
6458
        FROM operating_systems os
6459
       WHERE os.os_id = osid;
6460
 
6461
      RETURN returnvalue;
6462
   END;
6463
 
6464
/*-------------------------------------------------------------------------------------------------------*/
6465
   PROCEDURE add_product_note (
6466
      nprodid   IN   NUMBER,
6467
      snotes    IN   VARCHAR2,
6468
      nuserid   IN   NUMBER
6469
   )
6470
   IS
6471
   BEGIN
6472
      INSERT INTO product_notes
6473
           VALUES (nprodid, snotes);
6474
 
6475
      /* log Product_Trail*/
6476
      pk_product.log_product_trail (nprodid, snotes, nuserid);
6477
   END add_product_note;
6478
 
6479
/*-------------------------------------------------------------------------------------------------------*/
6480
   PROCEDURE edit_product_note (
6481
      nprodid   IN   NUMBER,
6482
      snotes    IN   VARCHAR2,
6483
      nuserid   IN   NUMBER
6484
   )
6485
   IS
6486
   BEGIN
6487
      UPDATE product_notes
6488
         SET notes = snotes
6489
       WHERE prod_id = nprodid;
6490
 
6491
      /* log Product_Trail*/
6492
      pk_product.log_product_trail (nprodid, snotes, nuserid);
6493
   END edit_product_note;
6494
 
6495
/*--------------------------------------------------------------------------------------------------*/
6496
   PROCEDURE log_product_trail (
6497
      nprodid   IN   product_trail.prod_id%TYPE,
6498
      saction   IN   product_trail.trail_action%TYPE,
6499
      nuserid   IN   product_trail.user_id%TYPE
6500
   )
6501
   IS
6502
   BEGIN
6503
      /*--------------- Business Rules Here -------------------*/
6504
      IF (nprodid IS NULL) OR (saction IS NULL) OR (nuserid IS NULL)
6505
      THEN
6506
         raise_application_error (-20000,
6507
                                     'Missing some parameters! nProdId= '
6508
                                  || nprodid
6509
                                  || ', sAction='
6510
                                  || saction
6511
                                  || ', nUserId='
6512
                                  || nuserid
6513
                                 );
6514
      END IF;
6515
 
6516
/*-------------------------------------------------------*/
6517
      INSERT INTO product_trail
6518
                  (prod_id, trail_action, user_id, date_time_stamp
6519
                  )
6520
           VALUES (nprodid, saction, nuserid, get_datetime ()
6521
                  );
6522
   END log_product_trail;
6523
/*--------------------------------------------------------------------------------------------------*/
6524
END pk_product;
6525
/
6526
 
6527
CREATE OR REPLACE PACKAGE BODY pk_Project
6528
IS
6529
/* ---------------------------------------------------------------------------
6530
    Version: 2.0
6531
   --------------------------------------------------------------------------- */
6532
 
6533
 
6534
/*--------------------------------------------------------------------------------------------------*/
6535
PROCEDURE Add_Project ( sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
6536
		  			  	nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE ) IS
6537
 
6538
ProjId NUMBER;
6539
 
6540
BEGIN
6541
	/*--------------- Business Rules Here -------------------*/
6542
	/*-------------------------------------------------------*/
6543
 
6544
	-- Get proj_id --
6545
	SELECT SEQ_PROJ_ID.NEXTVAL INTO ProjId FROM DUAL;
6546
 
6547
 
6548
	-- Insert Branch --
6549
	INSERT INTO DM_PROJECTS ( PROJ_ID, PROJ_NAME, RM_PROJECTS_FK, IS_HIDDEN )
6550
	VALUES ( ProjId, sProjName, nRMProjFk, NULL );
6551
 
6552
	EXCEPTION
6553
    WHEN DUP_VAL_ON_INDEX
6554
	THEN		
6555
		RAISE_APPLICATION_ERROR (-20000, 'Project Name "'|| sProjName ||'" is Already Used.');
6556
 
6557
END	Add_Project;
6558
/*--------------------------------------------------------------------------------------------------*/
6559
PROCEDURE Update_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE,
6560
		  				   sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
6561
						   nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE ) IS
6562
 
6563
 
6564
BEGIN
6565
	/*--------------- Business Rules Here -------------------*/
6566
	/*-------------------------------------------------------*/
6567
 
6568
 
6569
	-- Update Project --
6570
	UPDATE DM_PROJECTS SET
6571
	PROJ_NAME = sProjName,
6572
	RM_PROJECTS_FK = nRMProjFk
6573
	WHERE PROJ_ID = nProjId;
6574
 
6575
	EXCEPTION
6576
    WHEN DUP_VAL_ON_INDEX
6577
	THEN		
6578
		RAISE_APPLICATION_ERROR (-20000, 'Project Name "'|| sProjName ||'" is Already Used.');
6579
 
6580
END	Update_Project;
6581
/*--------------------------------------------------------------------------------------------------*/
6582
PROCEDURE ShowHide_Project ( nProjId DM_PROJECTS.PROJ_ID%TYPE ) IS
6583
 
6584
currIsHidden DM_PROJECTS.IS_HIDDEN%TYPE;
6585
 
6586
BEGIN
6587
	/*--------------- Business Rules Here -------------------*/
6588
	/*-------------------------------------------------------*/
6589
 
6590
	-- Get current IsHidden State
6591
	SELECT dmp.IS_HIDDEN INTO currIsHidden
6592
	  FROM DM_PROJECTS dmp
6593
	 WHERE dmp.PROJ_ID = nProjId;
6594
 
6595
 
6596
	-- Toggle IsHidden State --
6597
	IF currIsHidden = 'Y' THEN
6598
	   currIsHidden := NULL;
6599
	ELSE
6600
	   currIsHidden := 'Y';
6601
	END IF;
6602
 
6603
 
6604
	-- Update State --
6605
	UPDATE DM_PROJECTS dmp SET
6606
	IS_HIDDEN = currIsHidden
6607
	WHERE dmp.PROJ_ID = nProjId;
6608
 
6609
 
6610
END	ShowHide_Project;
6611
/*--------------------------------------------------------------------------------------------------*/
6612
PROCEDURE Remove_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE ) IS
6613
 
6614
rowCount NUMBER DEFAULT 0;
6615
 
6616
BEGIN
6617
	/*--------------- Business Rules Here -------------------*/
6618
	-- Check for Dependencies (Branches)
6619
	SELECT Count(*) INTO rowCount
6620
	  FROM BRANCHES br
6621
	 WHERE br.PROJ_ID = nProjId;
6622
 
6623
	IF rowCount > 0 THEN
6624
	   RAISE_APPLICATION_ERROR (-20000, 'Some Branches are still using this Project ( Counted '|| rowCount ||' ).' );
6625
	END IF; 
6626
 
6627
	-- Check for Dependencies (States)
6628
	SELECT Count(*) INTO rowCount
6629
	  FROM STATES st
6630
	  WHERE st.PROJ_ID = nProjId;
6631
 
6632
	IF rowCount > 0 THEN
6633
	   RAISE_APPLICATION_ERROR (-20000, 'Some States are still using this Project ( Counted '|| rowCount ||' ).' );
6634
	END IF; 
6635
	/*-------------------------------------------------------*/
6636
 
6637
 
6638
	-- Remove Notificaitons --
6639
	DELETE 
6640
	  FROM NOTIFY_USER nu
6641
	 WHERE nu.PROJ_ID = nProjId;
6642
 
6643
    -- Remove Product Queue --
6644
	DELETE 
6645
	  FROM PRODUCTS_QUEUE pq
6646
	 WHERE pq.PROJ_ID = nProjId; 
6647
 
6648
	-- Remove Project --
6649
	DELETE 
6650
	  FROM DM_PROJECTS dmp
6651
	 WHERE dmp.PROJ_ID = nProjId; 
6652
 
6653
 
6654
END	Remove_Project;
6655
/*--------------------------------------------------------------------------------------------------*/
6656
PROCEDURE Add_Branch ( sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
6657
		  			   nProjId IN BRANCHES.PROJ_ID%TYPE,
6658
					   nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
6659
                       sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE ) IS
6660
 
6661
BranchId NUMBER;
6662
 
6663
BEGIN
6664
	/*--------------- Business Rules Here -------------------*/
6665
	/*-------------------------------------------------------*/
6666
 
6667
	-- Get branch_id --
6668
	SELECT SEQ_BRANCH_ID.NEXTVAL INTO BranchId FROM DUAL;
6669
 
6670
 
6671
	-- Insert Branch --
6672
	INSERT INTO BRANCHES (BRANCH_ID, PROJ_ID, BRANCH_NAME, RM_VTREE_FK, BRANCH_COMMENTS )
6673
	VALUES ( BranchId, nProjId, sBranchName, nRMVTreeId, sBranchComments );
6674
 
6675
	EXCEPTION
6676
    WHEN DUP_VAL_ON_INDEX
6677
	THEN		
6678
		RAISE_APPLICATION_ERROR (-20000, 'Branch Name "'|| sBranchName ||'" is Already Used.');
6679
 
6680
END	Add_Branch;
6681
/*--------------------------------------------------------------------------------------------------*/
6682
PROCEDURE Remove_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE ) IS
6683
 
6684
rowCount NUMBER DEFAULT 0;
6685
 
6686
BEGIN
6687
	/*--------------- Business Rules Here -------------------*/
6688
	-- Check for Dependencies
6689
	SELECT Count(*) INTO rowCount
6690
	  FROM BOMS bo
6691
	 WHERE bo.BRANCH_ID = nBranchId;
6692
 
6693
	IF rowCount > 0 THEN
6694
	   RAISE_APPLICATION_ERROR (-20000, 'Some BOMS are still using this Branch ( Counted '|| rowCount ||' ).' );
6695
	END IF; 
6696
	/*-------------------------------------------------------*/
6697
 
6698
	-- Remove Branch --
6699
	DELETE 
6700
	  FROM BRANCHES br
6701
	 WHERE br.BRANCH_ID = nBranchId; 
6702
 
6703
 
6704
END	Remove_Branch;
6705
/*--------------------------------------------------------------------------------------------------*/
6706
PROCEDURE Update_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE,
6707
		  				  sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
6708
					   	  nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
6709
                          sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE ) IS
6710
 
6711
 
6712
BEGIN
6713
	/*--------------- Business Rules Here -------------------*/
6714
	/*-------------------------------------------------------*/
6715
 
6716
 
6717
	-- Update Branch --
6718
	UPDATE BRANCHES SET
6719
	BRANCH_NAME = sBranchName,
6720
	RM_VTREE_FK = nRMVTreeId,
6721
    BRANCH_COMMENTS = sBranchComments
6722
	WHERE BRANCH_ID = nBranchId;
6723
 
6724
	EXCEPTION
6725
    WHEN DUP_VAL_ON_INDEX
6726
	THEN		
6727
		RAISE_APPLICATION_ERROR (-20000, 'Branch Name "'|| sBranchName ||'" is Already Used.');
6728
 
6729
END	Update_Branch;
6730
/*--------------------------------------------------------------------------------------------------*/
6731
PROCEDURE ShowHide_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE ) IS
6732
 
6733
currIsHidden BRANCHES.IS_HIDDEN%TYPE;
6734
 
6735
BEGIN
6736
	/*--------------- Business Rules Here -------------------*/
6737
	/*-------------------------------------------------------*/
6738
 
6739
	-- Get current IsHidden State
6740
	SELECT br.IS_HIDDEN INTO currIsHidden
6741
	  FROM BRANCHES br
6742
	 WHERE br.BRANCH_ID = nBranchId;
6743
 
6744
 
6745
	-- Toggle IsHidden State --
6746
	IF currIsHidden = 'Y' THEN
6747
	   currIsHidden := NULL;
6748
	ELSE
6749
	   currIsHidden := 'Y';
6750
	END IF;
6751
 
6752
 
6753
	-- Update State --
6754
	UPDATE BRANCHES SET
6755
	IS_HIDDEN = currIsHidden
6756
	WHERE BRANCH_ID = nBranchId;
6757
 
6758
 
6759
END	ShowHide_Branch;
6760
/*--------------------------------------------------------------------------------------------------*/
6761
PROCEDURE ShowHide_Download ( nProjId DM_PROJECTS.PROJ_ID%TYPE ) IS
6762
 
6763
currIsDownload DM_PROJECTS.IS_DOWNLOAD%TYPE;
6764
 
6765
BEGIN
6766
	/*--------------- Business Rules Here -------------------*/
6767
	/*-------------------------------------------------------*/
6768
 
6769
	-- Get current IsHidden State
6770
	SELECT dmp.IS_DOWNLOAD INTO currIsDownload
6771
	  FROM DM_PROJECTS dmp
6772
	 WHERE dmp.PROJ_ID = nProjId;
6773
 
6774
 
6775
	-- Toggle IsHidden State --
6776
	IF currIsDownload = 'Y' THEN
6777
	   currIsDownload := NULL;
6778
	ELSE
6779
	   currIsDownload := 'Y';
6780
	END IF;
6781
 
6782
 
6783
	-- Update State --
6784
	UPDATE DM_PROJECTS dmp SET
6785
	IS_DOWNLOAD = currIsDownload
6786
	WHERE dmp.PROJ_ID = nProjId;
6787
 
6788
 
6789
END	ShowHide_Download;
6790
/*--------------------------------------------------------------------------------------------------*/
6791
PROCEDURE ShowHide_StateDownload ( nStateId STATES.STATE_ID%TYPE ) IS
6792
 
6793
currIsDownload DM_PROJECTS.IS_DOWNLOAD%TYPE;
6794
 
6795
BEGIN
6796
	/*--------------- Business Rules Here -------------------*/
6797
	/*-------------------------------------------------------*/
6798
 
6799
	-- Get current IsHidden State
6800
	SELECT st.IS_DOWNLOAD INTO currIsDownload
6801
	  FROM STATES st
6802
	 WHERE st.STATE_ID = nStateId;
6803
 
6804
 
6805
	-- Toggle IsHidden State --
6806
	IF currIsDownload = 'Y' THEN
6807
	   currIsDownload := NULL;
6808
	ELSE
6809
	   currIsDownload := 'Y';
6810
	END IF;
6811
 
6812
 
6813
	-- Update State --
6814
	UPDATE STATES st SET
6815
	IS_DOWNLOAD = currIsDownload
6816
	WHERE st.STATE_ID = nStateId;
6817
 
6818
 
6819
END	ShowHide_StateDownload;
6820
 
6821
END pk_Project;
6822
/
6823
 
6824
CREATE OR REPLACE PACKAGE BODY pk_Requirements
6825
IS
6826
/* ---------------------------------------------------------------------------
6827
    Version: 1.0.0
6828
   --------------------------------------------------------------------------- */
6829
 
6830
/*--------------------------------------------------------------------------------------------------*/
6831
PROCEDURE Add_Bom ( nFromBomId IN BOMS.BOM_ID%TYPE,
6832
					   nToBranchId IN BOMS.BRANCH_ID%TYPE ) IS
6833
 
6834
rowCount NUMBER;
6835
FromBranchId NUMBER;
6836
 
6837
BEGIN
6838
	/*--------------- Business Rules Here -------------------*/
6839
	/*-------------------------------------------------------*/
6840
 
6841
	-- Get FromBranchId
6842
	SELECT bo.BRANCH_ID INTO FromBranchId
6843
	  FROM BOMS bo
6844
	 WHERE bo.BOM_ID = nFromBomId;
6845
 
6846
 
6847
	IF FromBranchId = nToBranchId THEN
6848
		/* Only check for rules if same branch_id */
6849
 
6850
 
6851
		-- REQUIREMENT: Cannot Branch more then 2 BOMs from parent
6852
		SELECT COUNT(*) INTO rowCount
6853
		  FROM BOMS bo
6854
		 WHERE bo.PARENT_BOM_ID = nFromBomId
6855
		   AND bo.BRANCH_ID = nToBranchId
6856
		   AND bo.BOM_ID != bo.PARENT_BOM_ID;
6857
 
6858
		IF rowCount >= 2 THEN
6859
		   RAISE_APPLICATION_ERROR (-20000, 'This BOM is already branched.' );
6860
		END IF;  
6861
 
6862
	END IF;
6863
 
6864
 
6865
END	Add_Bom;
6866
/*--------------------------------------------------------------------------------------------------*/
6867
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 ) IS
6868
 
6869
rowCount NUMBER;
6870
nBomIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
6871
 
6872
BEGIN
6873
	/*--------------- Business Rules Here -------------------*/
6874
	/*-------------------------------------------------------*/
6875
	nBomIdCollector := IN_LIST_NUMBER( nBomId );
6876
 
6877
	-- REQUIREMENT: For now if can only deal with one bom at a time
6878
	IF nBomIdCollector.Count > 1 THEN
6879
		RAISE_APPLICATION_ERROR (-20000, 'Please select one BOM only.' );
6880
	END IF;
6881
 
6882
 
6883
	-- REQUIREMENT: BOM need to be Unlocked
6884
	SELECT Count(*) INTO rowCount
6885
	  FROM BOMS bo
6886
	 WHERE bo.IS_READONLY = 'Y'
6887
	   AND bo.BOM_ID IN ( 
6888
	  	  		  	      SELECT * 
6889
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
6890
					 	 );
6891
 
6892
	IF rowCount > 0 THEN
6893
	   RAISE_APPLICATION_ERROR (-20000, 'Cannot Destroy as selected BOM is locked.' );
6894
	END IF;
6895
 
6896
 
6897
	-- REQUIREMENT: Cannot be a parent to someone
6898
	SELECT Count(*) INTO rowCount
6899
	  FROM BOMS bo
6900
	 WHERE bo.BOM_ID != bo.PARENT_BOM_ID
6901
	   AND bo.PARENT_BOM_ID IN ( 
6902
			  	  		  	      SELECT * 
6903
								  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
6904
							 	);
6905
 
6906
	IF rowCount > 0 THEN
6907
	   RAISE_APPLICATION_ERROR (-20000, 'Cannot Destroy as some BOMs are created or branched from this BOM.' );
6908
	END IF;								
6909
 
6910
 
6911
	-- Check for Dependencies (Knowledge Base Notes)
6912
	SELECT Count(*) INTO rowCount
6913
	  FROM BOM_NOTES bn
6914
	 WHERE bn.BOM_ID IN ( 
6915
	  	  		  	      SELECT * 
6916
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
6917
					 	);
6918
 
6919
	IF rowCount > 0 THEN
6920
	   RAISE_APPLICATION_ERROR (-20000, 'Cannot Destroy as some knowledge base notes are attached to this BOM.' );
6921
	END IF;
6922
 
6923
 
6924
END	Destroy_Bom;
6925
/*--------------------------------------------------------------------------------------------------*/
6926
 
6927
 
6928
END pk_Requirements;
6929
/
6930
 
6931
CREATE OR REPLACE PACKAGE BODY PK_REPORT IS
6932
 
6933
/*
6934
------------------------------
6935
||  Last Modified:  S.Vukovic
6936
||  Modified Date:  8/Mar/2005
6937
||  Body Version:   1.0
6938
------------------------------
6939
*/
6940
 
6941
 
6942
/*-------------------------------------------------------------------------------------------------------*/
6943
FUNCTION BOM_PRODUCTS_BY_NODE_BY_OS ( BomId NUMBER ) RETURN typeCur IS
6944
 
6945
	records typeCur;
6946
 
6947
BEGIN
6948
 
6949
 
6950
	OPEN records FOR
6951
	SELECT nn.NODE_ID,
6952
		   nt.NODE_ICON,
6953
		   nn.NODE_NAME,
6954
		   bt.BOS_ICON,
6955
		   obe.BASE_ENV_ID,
6956
		   os.OS_ID,
6957
		   os.OS_NAME,
6958
		   osc.SEQ_NUM,
6959
		   osc.PROD_ID,
6960
		   pkg.PKG_NAME,
6961
		   pv.PKG_VERSION
6962
	  FROM BOM_CONTENTS bc,
6963
	  	   OPERATING_SYSTEMS os,
6964
		   OS_CONTENTS osc,
6965
		   OS_BASE_ENV obe,
6966
		   BASE_ENV be,
6967
		   BOS_TYPES bt,
6968
		   NETWORK_NODES nn,
6969
		   NODE_TYPES nt,
6970
		   PACKAGE_VERSIONS pv,
6971
		   PACKAGES pkg
6972
	 WHERE os.NODE_ID (+) = nn.NODE_ID 
6973
	   AND nn.NODE_ID = bc.NODE_ID 
6974
	   AND nn.NODE_TYPE_ID = nt.NODE_TYPE_ID (+)
6975
	   AND bc.BOM_ID = BomId
6976
	   AND pv.PKG_ID = pkg.PKG_ID (+)
6977
	   AND osc.OS_ID (+) = os.OS_ID 
6978
	   AND osc.PROD_ID = pv.PV_ID (+)
6979
	   AND obe.OS_ID (+) = os.OS_ID
6980
	   AND obe.BASE_ENV_ID = be.BASE_ENV_ID (+)
6981
	   AND be.BOS_ID = bt.BOS_ID (+)
6982
	ORDER BY UPPER(nn.NODE_NAME), UPPER(os.OS_NAME), osc.SEQ_NUM;
6983
 
6984
 
6985
	RETURN records;	   
6986
 
6987
END;
6988
/*-------------------------------------------------------------------------------------------------------*/
6989
END PK_REPORT;
6990
/
6991
 
6992
CREATE OR REPLACE PACKAGE BODY pk_Base_Env_test
6993
IS
6994
/* ---------------------------------------------------------------------------
6995
    Version: 1.0.0
6996
   --------------------------------------------------------------------------- */
6997
 
6998
 
6999
/*--------------------------------------------------------------------------------------------------*/
7000
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
7001
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
7002
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
7003
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE ) IS
7004
 
7005
nBaseEnvId BASE_ENV.BASE_ENV_ID%TYPE;						 
7006
 
7007
BEGIN
7008
	/*--------------- Business Rules Here -------------------*/
7009
	/*-------------------------------------------------------*/
7010
 
7011
	-- Get base_env_id
7012
	SELECT SEQ_BASE_ENV_ID.NEXTVAL INTO nBaseEnvId FROM DUAL;
7013
 
7014
	-- Insert new base env name
7015
	INSERT INTO BASE_ENV ( BASE_ENV_ID, BOS_ID, BASE_ENV_NAME, BOM_ID )
7016
	VALUES ( nBaseEnvId, nBosId, sBaseEnvName, nBomId );
7017
 
7018
 
7019
	EXCEPTION
7020
    WHEN DUP_VAL_ON_INDEX
7021
	THEN		
7022
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
7023
 
7024
END	Add_Base_Env;
7025
/*--------------------------------------------------------------------------------------------------*/
7026
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
7027
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
7028
						 	nBosId IN BASE_ENV.BOS_ID%TYPE ) IS
7029
 
7030
BEGIN
7031
	/*--------------- Business Rules Here -------------------*/
7032
	IF (nBaseEnvId IS NULL) 
7033
	THEN
7034
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
7035
 
7036
	END IF;
7037
	/*-------------------------------------------------------*/
7038
 
7039
	-- Update Base Env
7040
	UPDATE BASE_ENV SET
7041
		BASE_ENV_NAME = sBaseEnvName,
7042
		BOS_ID = nBosId
7043
	WHERE BASE_ENV_ID = nBaseEnvId;
7044
 
7045
 
7046
	EXCEPTION
7047
    WHEN DUP_VAL_ON_INDEX
7048
	THEN		
7049
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
7050
 
7051
END	Update_Base_Env;
7052
/*--------------------------------------------------------------------------------------------------*/
7053
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
7054
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE IS
7055
 
7056
ReturnValue BASE_ENV.BASE_ENV_ID%TYPE;	
7057
 
7058
CURSOR curBaseEnv IS
7059
	SELECT be.BASE_ENV_ID
7060
	  FROM BASE_ENV be
7061
	 WHERE be.BASE_ENV_NAME = sBaseEnvName
7062
	   AND be.BOM_ID = nBomId;
7063
recBaseEnv curBaseEnv%ROWTYPE;
7064
 
7065
BEGIN
7066
	/*--------------- Business Rules Here -------------------*/
7067
	/*-------------------------------------------------------*/
7068
 
7069
	-- Get bom_name_id
7070
	OPEN curBaseEnv;
7071
	FETCH curBaseEnv INTO recBaseEnv;
7072
 
7073
	IF curBaseEnv%FOUND THEN
7074
		ReturnValue := recBaseEnv.BASE_ENV_ID;
7075
	ELSE
7076
		ReturnValue := NULL;
7077
	END IF;
7078
 
7079
	CLOSE curBaseEnv;
7080
 
7081
	RETURN ReturnValue;
7082
END	Get_Base_Env_Id;
7083
/*--------------------------------------------------------------------------------------------------*/
7084
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE ) IS
7085
 
7086
 
7087
BEGIN
7088
	/*--------------- Business Rules Here -------------------*/
7089
	IF (nBaseEnvId IS NULL) 
7090
	THEN
7091
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
7092
 
7093
	END IF;
7094
	/*-------------------------------------------------------*/
7095
 
7096
	-- Destroy Base Env Contents
7097
	DELETE
7098
      FROM BASE_ENV_CONTENTS
7099
     WHERE BASE_ENV_ID = nBaseEnvId;
7100
 
7101
	-- Remove Base Env From BOM
7102
	DELETE 
7103
	  FROM OS_BASE_ENV obe
7104
	 WHERE obe.BASE_ENV_ID = nBaseEnvId;
7105
 
7106
	-- Destroy Base Env
7107
	DELETE 
7108
	  FROM BASE_ENV be
7109
	 WHERE be.BASE_ENV_ID = nBaseEnvId;				 
7110
 
7111
END	Destroy_Base_Env;
7112
/*--------------------------------------------------------------------------------------------------*/
7113
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
7114
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
7115
						nUserId IN NUMBER ) IS
7116
 
7117
NextSeqNum NUMBER;
7118
 
7119
CURSOR prod_cur IS
7120
	SELECT pv.pv_id AS PROD_ID,
7121
		   pv.PV_DESCRIPTION
7122
	  FROM PACKAGE_VERSIONS pv
7123
	 WHERE pv.pv_id IN (
7124
	 	   			   	SELECT * 
7125
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
7126
						);
7127
prod_rec prod_cur%ROWTYPE;
7128
 
7129
 
7130
BEGIN
7131
	/*--------------- Business Rules Here -------------------*/
7132
	/*-------------------------------------------------------*/
7133
 
7134
	-- Get seq_num
7135
	SELECT MAX( bec.SEQ_NUM ) INTO NextSeqNum
7136
	  FROM BASE_ENV_CONTENTS bec
7137
	 WHERE bec.BASE_ENV_ID = nBaseEnvId;
7138
 
7139
	-- Set NextSeqNum to 0 if no existing products are found
7140
	IF NextSeqNum IS NULL THEN
7141
	   NextSeqNum := 1;
7142
	ELSE
7143
	   NextSeqNum := NextSeqNum + 1;
7144
	END IF;
7145
 
7146
 
7147
	-- Insert into OS Contents
7148
	OPEN prod_cur;
7149
	FETCH prod_cur INTO prod_rec;
7150
 
7151
	WHILE prod_cur%FOUND
7152
	LOOP
7153
 
7154
		INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, SEQ_NUM, PROD_ID, BASE_ENV_COMMENTS )
7155
		VALUES (
7156
				nBaseEnvId, 
7157
				NextSeqNum, 
7158
				prod_rec.PROD_ID,
7159
				prod_rec.PV_DESCRIPTION
7160
				);
7161
 
7162
		-- Log Action --
7163
		pk_Utils.Log_Action ( nUserId, 
7164
							  1, 
7165
							  'pk_Base_Env.Add_Product with BASE_ENV_ID='|| nBaseEnvId ||', SEQ_NUM='|| NextSeqNum ||', PROD_ID='|| prod_rec.PROD_ID,
7166
							  NULL, NULL );
7167
 
7168
 
7169
		NextSeqNum := NextSeqNum + 1;
7170
		FETCH prod_cur INTO prod_rec;
7171
	END LOOP;
7172
 
7173
 
7174
	CLOSE prod_cur;
7175
 
7176
 
7177
END	Add_Product; 
7178
/*--------------------------------------------------------------------------------------------------*/
7179
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
7180
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7181
							nUserId IN NUMBER ) IS
7182
 
7183
NextSeqNum NUMBER := 1;
7184
 
7185
CURSOR prod_cur IS
7186
	SELECT bec.PROD_ID, bec.SEQ_NUM
7187
	  FROM BASE_ENV_CONTENTS bec
7188
	 WHERE bec.BASE_ENV_ID = nBaseEnvId
7189
	 ORDER BY bec.SEQ_NUM;
7190
prod_rec prod_cur%ROWTYPE;	  
7191
 
7192
BEGIN
7193
	/*--------------- Business Rules Here -------------------*/
7194
	IF sProdIdList IS NULL
7195
	THEN
7196
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
7197
 
7198
	END IF;
7199
	/*-------------------------------------------------------*/
7200
 
7201
	-- Remove Products
7202
	DELETE 
7203
	FROM BASE_ENV_CONTENTS
7204
	WHERE BASE_ENV_ID = nBaseEnvId
7205
	  AND PROD_ID IN ( 
7206
	  	  		  	    SELECT * 
7207
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
7208
					 );
7209
 
7210
 
7211
	-- Update Seq Numbers
7212
	OPEN prod_cur;
7213
	FETCH prod_cur INTO prod_rec;
7214
 
7215
	WHILE prod_cur%FOUND
7216
	LOOP
7217
 
7218
		UPDATE BASE_ENV_CONTENTS SET
7219
		SEQ_NUM = NextSeqNum
7220
		WHERE BASE_ENV_ID = nBaseEnvId
7221
		  AND PROD_ID = prod_rec.PROD_ID;
7222
 
7223
		NextSeqNum := NextSeqNum + 1;
7224
		FETCH prod_cur INTO prod_rec;
7225
	END LOOP;
7226
 
7227
	CLOSE prod_cur;
7228
 
7229
 
7230
 
7231
END Remove_Products; 
7232
/*--------------------------------------------------------------------------------------------------*/
7233
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
7234
		  				   	 sProdVersion IN VARCHAR2,
7235
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7236
							 nUserId IN NUMBER,
7237
							 sComments IN VARCHAR2 ) IS
7238
 
7239
ProdId PACKAGE_VERSIONS.PV_ID%TYPE;
7240
ProdName PACKAGES.PKG_NAME%TYPE;
7241
 
7242
CURSOR prod_cur IS
7243
	SELECT bec.PROD_ID
7244
	  FROM BASE_ENV_CONTENTS bec
7245
	 WHERE bec.PROD_ID = ProdId
7246
	   AND bec.BASE_ENV_ID = nBaseEnvId;
7247
prod_rec prod_cur%ROWTYPE;
7248
 
7249
BEGIN
7250
	/*--------------- Business Rules Here -------------------*/                             
7251
	IF (NOT nPkgId IS NULL) AND (sProdVersion IS NULL) AND (NOT nBaseEnvId IS NULL) AND (NOT nUserId IS NULL) THEN
7252
	   RAISE_APPLICATION_ERROR (-20000, 'Please provide Product Version.('|| sProdVersion ||')' );
7253
 
7254
	ELSIF (nPkgId IS NULL) OR (sProdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nUserId IS NULL) THEN
7255
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nPkgId= '|| nPkgId ||', sProdVersion='|| sProdVersion ||', nBaseEnvId='|| nBaseEnvId ||', nUserId='|| nUserId );
7256
 
7257
	END IF;
7258
	/*-------------------------------------------------------*/
7259
 
7260
	-- Get Product Name --
7261
	SELECT PKG_NAME INTO ProdName FROM PACKAGES WHERE PKG_ID = nPkgId;
7262
 
7263
 
7264
	-- Create Product Version in Release Manager if Required, and Get Prod_id --
7265
	Seed_Package_Names_Versions ( ProdName, sProdVersion, nUserId, ProdId );
7266
 
7267
 
7268
	-- Add Product To Base Env --
7269
	OPEN prod_cur;
7270
	FETCH prod_cur INTO prod_rec;
7271
 
7272
	IF prod_cur%NOTFOUND THEN
7273
	   pk_Base_Env.Add_Product ( ProdId, nBaseEnvId, nUserId );
7274
 
7275
	   -- Update Comments
7276
	   IF (NOT sComments IS NULL) THEN
7277
	   		UPDATE BASE_ENV_CONTENTS bec SET
7278
				bec.BASE_ENV_COMMENTS = sComments
7279
			 WHERE bec.BASE_ENV_ID = nBaseEnvId
7280
			   AND bec.PROD_ID = ProdId;
7281
 
7282
	   END IF;
7283
	END IF;
7284
 
7285
	CLOSE prod_cur;
7286
 
7287
 
7288
END	Add_Product_Wrap;    
7289
/*--------------------------------------------------------------------------------------------------*/
7290
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
7291
						   sNewProdIdVersion IN VARCHAR2,
7292
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7293
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
7294
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
7295
						   sElectronicName IN PACKAGES.ELECTRONIC_NAME%TYPE ) IS
7296
 
7297
nNewProdId BASE_ENV_CONTENTS.PROD_ID%TYPE;						  
7298
 
7299
CURSOR curProd IS
7300
 	SELECT pv.PV_ID
7301
	  FROM PACKAGE_VERSIONS pv
7302
	 WHERE pv.pkg_id IN ( SELECT pv.pkg_id FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nOldProdId )
7303
	   AND pv.PKG_VERSION = sNewProdIdVersion;
7304
recProd curProd%ROWTYPE;						   
7305
 
7306
BEGIN
7307
	/*--------------- Business Rules Here -------------------*/
7308
	IF (nOldProdId IS NULL) OR (sNewProdIdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nSeqNum IS NULL)
7309
	THEN
7310
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOldProdId= '|| nOldProdId  ||', sNewProdIdVersion= '|| sNewProdIdVersion ||', nBaseEnvId= '|| nBaseEnvId ||', nSeqNum= '|| nSeqNum);
7311
	END IF;
7312
	/*-------------------------------------------------------*/
7313
 
7314
	-- Get new prod_id
7315
	OPEN curProd;
7316
	FETCH curProd INTO recProd;
7317
 
7318
	IF curProd%FOUND THEN
7319
		nNewProdId := recProd.PV_ID;
7320
	ELSE
7321
		RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');
7322
	END IF;
7323
 
7324
	CLOSE curProd;
7325
 
7326
 
7327
	-- Update Product Details
7328
	UPDATE BASE_ENV_CONTENTS SET
7329
		PROD_ID = nNewProdId,
7330
		BASE_ENV_COMMENTS = sComments
7331
	 WHERE BASE_ENV_ID = nBaseEnvId
7332
	   AND PROD_ID = nOldProdId;
7333
 
7334
 
7335
	UPDATE PACKAGES SET
7336
		ELECTRONIC_NAME = sElectronicName
7337
	WHERE  PKG_ID = 
7338
	(
7339
	 SELECT PKG_ID
7340
	 FROM PACKAGE_VERSIONS 
7341
	 WHERE PACKAGE_VERSIONS.PV_ID = nNewProdId
7342
	);   
7343
 
7344
 
7345
 
7346
	-- Update seq_num
7347
	Shift_Product_SeqNum ( nNewProdId, nBaseEnvId, nSeqNum );
7348
 
7349
END	Update_Product; 
7350
/*--------------------------------------------------------------------------------------------------*/
7351
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
7352
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7353
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE ) IS
7354
 
7355
currSeqNum NUMBER;
7356
FromSeqNum NUMBER;
7357
 
7358
BEGIN
7359
	 -- Get Current seq_num
7360
	 SELECT bec.SEQ_NUM INTO currSeqNum
7361
	   FROM BASE_ENV_CONTENTS bec
7362
	  WHERE bec.BASE_ENV_ID = nBaseEnvId
7363
	    AND bec.PROD_ID = nProdId;
7364
 
7365
 
7366
	 IF currSeqNum > nToSeqNum
7367
	 THEN
7368
 
7369
		FromSeqNum := nToSeqNum;
7370
 
7371
			-- Shift others Up
7372
		UPDATE BASE_ENV_CONTENTS bec SET
7373
			   bec.SEQ_NUM = bec.SEQ_NUM + 1
7374
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
7375
		   AND bec.PROD_ID != nProdId
7376
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  currSeqNum - 1;
7377
 
7378
 
7379
	 ELSIF currSeqNum < nToSeqNum
7380
	 THEN
7381
 
7382
		FromSeqNum := currSeqNum + 1;  
7383
 
7384
		 -- Shift others Down
7385
		UPDATE BASE_ENV_CONTENTS bec SET
7386
		   	   bec.SEQ_NUM = bec.SEQ_NUM - 1
7387
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
7388
		   AND bec.PROD_ID != nProdId
7389
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  nToSeqNum;
7390
 
7391
	 END IF;
7392
 
7393
 
7394
	 -- Move Product to new seq_num
7395
	 UPDATE BASE_ENV_CONTENTS bec SET
7396
		    bec.SEQ_NUM = nToSeqNum
7397
	  WHERE bec.BASE_ENV_ID = nBaseEnvId 
7398
	    AND bec.PROD_ID = nProdId;
7399
 
7400
 
7401
 
7402
END Shift_Product_SeqNum;
7403
/*--------------------------------------------------------------------------------------------------*/
7404
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
7405
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
7406
						  nUserId IN NUMBER ) IS
7407
 
7408
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
7409
	SeqNum NUMBER;
7410
 
7411
 
7412
BEGIN
7413
	/*--------------- Business Rules Here -------------------*/
7414
	-- Check for parameters
7415
	IF (sProdIdOrder IS NULL)  OR (nBaseEnvId IS NULL) 
7416
	THEN
7417
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId='|| nBaseEnvId  ||' sProdIdOrder='|| sProdIdOrder  );
7418
	END IF;
7419
	/*-------------------------------------------------------*/
7420
 
7421
	nIdCollector := IN_LIST_NUMBER ( sProdIdOrder );
7422
 
7423
	-- Set start sequence number
7424
	SeqNum := 1;
7425
 
7426
	FOR i IN 1..nIdCollector.COUNT
7427
	LOOP
7428
 
7429
		-- Update new sequence number
7430
		UPDATE BASE_ENV_CONTENTS osc SET
7431
			osc.SEQ_NUM = SeqNum
7432
		 WHERE osc.BASE_ENV_ID = nBaseEnvId
7433
		   AND osc.PROD_ID = nIdCollector(i);
7434
 
7435
		SeqNum := SeqNum + 1;
7436
 
7437
	END LOOP;
7438
 
7439
 
7440
END	Sort_Products;
7441
/*--------------------------------------------------------------------------------------------------*/
7442
 
7443
 
7444
END pk_Base_Env_test;
7445
/
7446
 
7447
CREATE OR REPLACE PACKAGE BODY pk_Bom_Test
7448
IS
7449
/* ---------------------------------------------------------------------------
7450
    Version: 2.0
7451
   --------------------------------------------------------------------------- */
7452
 
7453
/*--------------------------------------------------------------------------------------------------*/
7454
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
7455
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
7456
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
7457
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
7458
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
7459
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
7460
					nUserId IN BOM_STATE.USER_ID%TYPE ) IS
7461
 
7462
BomId BOMS.BOM_ID%TYPE;
7463
ParentBomId BOMS.PARENT_BOM_ID%TYPE;
7464
BomNameId BOM_NAMES.BOM_NAME_ID%TYPE;
7465
BomVersion BOMS.BOM_VERSION%TYPE;
7466
BomLifeCycle BOMS.BOM_LIFECYCLE%TYPE;
7467
ProjId BRANCHES.PROJ_ID%TYPE;
7468
 
7469
CURSOR curBom IS 
7470
		SELECT bo.BOM_ID
7471
		  FROM BOMS bo,
7472
		  	   BRANCHES br
7473
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
7474
		   AND br.PROJ_ID = ProjId
7475
		   AND bo.BOM_NAME_ID = BomNameId
7476
		   AND bo.BOM_VERSION = BomVersion
7477
		   AND bo.BOM_LIFECYCLE = BomLifeCycle;
7478
recBom curBom%ROWTYPE;
7479
 
7480
DUPLICATE_BOM EXCEPTION;
7481
 
7482
BEGIN
7483
	/*--------------- Business Rules Here -------------------*/
7484
	IF (nToBranchId IS NULL) OR (nUserId IS NULL)
7485
	THEN
7486
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nToBranchId= '|| nToBranchId ||', nUserId='|| nUserId );
7487
 
7488
	END IF;
7489
	/*-------------------------------------------------------*/
7490
 
7491
	-- Get bom_id
7492
	SELECT SEQ_BOM_ID.NEXTVAL INTO BomId FROM DUAL;
7493
 
7494
 
7495
	-- Get bom_name_id
7496
	IF nFromBomId IS NULL THEN
7497
		BomNameId := New_Bom_Name ( sBomName );
7498
        ParentBomId := BomId;
7499
	ELSE
7500
		BomNameId := New_Bom_Name ( nFromBomId );
7501
        ParentBomId := nFromBomId;
7502
	END IF;		
7503
 
7504
 
7505
 
7506
 
7507
	-- Get Bom Version and Lifecycle
7508
	--Get_Next_Version ( nFromBomId, nToBranchId, BomVersion, BomLifeCycle, ParentBomId, BomNameId );
7509
 
7510
 
7511
 
7512
	-- Get proj_id
7513
	SELECT br.PROJ_ID INTO ProjId
7514
	  FROM BRANCHES br
7515
	 WHERE br.BRANCH_ID = nToBranchId;
7516
 
7517
 
7518
 
7519
	-- Check for duplicate BOMs
7520
	OPEN curBom;
7521
    FETCH curBom INTO recBom;
7522
 
7523
    IF curBom%FOUND
7524
    THEN
7525
		RAISE DUPLICATE_BOM;
7526
	END IF;
7527
 
7528
	CLOSE curBom;
7529
 
7530
 
7531
 
7532
	-- Add Blank Bom --
7533
	INSERT INTO BOMS ( BOM_ID, BRANCH_ID, BOM_NAME_ID, BOM_COMMENTS, BOM_VERSION, BOM_LIFECYCLE, IS_READONLY, IS_HIDDEN, PARENT_BOM_ID )
7534
	VALUES ( BomId, nToBranchId, BomNameId, sBomComments, sBomVersion, sBomLifeCycle, 'N', 'N', ParentBomId  );
7535
 
7536
 
7537
 
7538
 
7539
	/* Log BOM_TRAIL */
7540
	pk_Bom.Log_Bom_Trail ( BomId, 'CREATED: Version '|| sBomVersion ||'.'|| sBomLifeCycle , nUserId );
7541
 
7542
 
7543
 
7544
	IF nFromBomId IS NOT NULL THEN
7545
		/* Add Bom Clonned from ... */
7546
		pk_Utils.Clone_BOM ( nFromBomId, BomId, nUserId );
7547
 
7548
	END IF;
7549
 
7550
 
7551
 
7552
	--- Set Bom State ---
7553
	Release_To ( BomId, nUserId );
7554
 
7555
 
7556
	EXCEPTION
7557
    WHEN DUPLICATE_BOM
7558
	THEN		
7559
		RAISE_APPLICATION_ERROR (-20000, 'BOM "'|| sBomName ||' '|| BomVersion ||'.'|| BomLifeCycle ||'" is Already Used in this Project.');
7560
 
7561
END	Add_Bom;
7562
/*--------------------------------------------------------------------------------------------------*/
7563
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
7564
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
7565
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
7566
					   nUserId IN NUMBER )  IS
7567
 
7568
ReleaseName VARCHAR2(100);					   
7569
 
7570
BEGIN
7571
	/*--------------- Business Rules Here -------------------*/
7572
	/*-------------------------------------------------------*/
7573
 
7574
	--- Update Bom Properties ---
7575
	UPDATE BOMS bo SET
7576
		bo.RTAG_ID_FK = nRtagId,
7577
		bo.BOM_COMMENTS = sBomComment
7578
	WHERE bo.BOM_ID = nBomId;
7579
 
7580
	SELECT RTAG_NAME INTO ReleaseName
7581
	FROM RELEASE_TAGS 
7582
	WHERE RTAG_ID = nRtagId;
7583
 
7584
 
7585
	/* Log BOM_TRAIL */
7586
	pk_Bom.Log_Bom_Trail ( nBomId, 'Updated BOM properties: Set Release Manager Reference ='||ReleaseName||' and comments ='||sBomComment, nUserId );
7587
 
7588
 
7589
END	Update_Bom;
7590
/*--------------------------------------------------------------------------------------------------*/
7591
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE IS
7592
 
7593
ReturnValue 	 BOM_NAMES.BOM_NAME_ID%TYPE;	
7594
 
7595
CURSOR curBomNames IS
7596
	SELECT bn.BOM_NAME_ID
7597
	  FROM BOM_NAMES bn
7598
	 WHERE bn.BOM_NAME = sBomName;
7599
recBomNames curBomNames%ROWTYPE;
7600
 
7601
BEGIN
7602
	/*--------------- Business Rules Here -------------------*/
7603
	/*-------------------------------------------------------*/
7604
 
7605
	-- Check for existance of this name
7606
	OPEN curBomNames;
7607
	FETCH curBomNames INTO recBomNames;
7608
 
7609
	ReturnValue := NULL;
7610
	IF curBomNames%FOUND THEN
7611
		ReturnValue := recBomNames.BOM_NAME_ID;
7612
	END IF;
7613
 
7614
	CLOSE curBomNames;
7615
 
7616
 
7617
	-- Finnaly Create Name if required --    
7618
	IF ReturnValue IS NULL THEN
7619
		-- Get bom_name_id
7620
		SELECT SEQ_BOM_NAME_ID.NEXTVAL INTO ReturnValue FROM DUAL;
7621
 
7622
		INSERT INTO BOM_NAMES ( BOM_NAME_ID, BOM_NAME )
7623
		VALUES ( ReturnValue, sBomName );
7624
 
7625
	END IF;	
7626
 
7627
 
7628
	RETURN ReturnValue;
7629
END	New_Bom_Name;
7630
/*--------------------------------------------------------------------------------------------------*/
7631
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE IS
7632
 
7633
ReturnValue 	 BOMS.BOM_NAME_ID%TYPE;	
7634
 
7635
BEGIN
7636
	/*--------------- Business Rules Here -------------------*/
7637
	/*-------------------------------------------------------*/
7638
 
7639
	-- Get bom_name_id
7640
	SELECT bo.BOM_NAME_ID INTO ReturnValue
7641
	  FROM BOMS bo
7642
	 WHERE bo.BOM_ID = nFromBomId;
7643
 
7644
 
7645
	RETURN ReturnValue;
7646
END	New_Bom_Name;
7647
/*--------------------------------------------------------------------------------------------------*/
7648
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
7649
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
7650
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
7651
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
7652
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  ) IS
7653
 
7654
StateName STATES.STATE_NAME%TYPE;						  
7655
IsOfficial BOMS.IS_READONLY%TYPE;	
7656
IsRejected VARCHAR2(50);					  
7657
 
7658
BEGIN
7659
	/*--------------- Business Rules Here -------------------*/
7660
	-- Check if Bom is official
7661
	SELECT bo.IS_READONLY INTO IsOfficial
7662
	  FROM BOMS bo
7663
	 WHERE bo.BOM_ID = nBomId;
7664
 
7665
	IF IsOfficial != 'Y' THEN
7666
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first.' );
7667
	END IF;
7668
	/*-------------------------------------------------------*/
7669
 
7670
	-- Get State Name
7671
	SELECT st.STATE_NAME INTO StateName
7672
	  FROM STATES st
7673
	 WHERE st.STATE_ID = nStateId;
7674
 
7675
 
7676
	-- AcceptReject BOM
7677
	UPDATE BOMS bo SET
7678
		bo.IS_REJECTED = cIsRejected
7679
	WHERE bo.BOM_ID = nBomId;
7680
 
7681
 
7682
	-- Auto-Hide Bom
7683
	IF cIsRejected = 'Y' THEN
7684
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_REJECT_BOM') );
7685
	ELSE
7686
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_ACCEPT_BOM') );
7687
	END IF;
7688
 
7689
 
7690
	-- Log Rejection Trail 
7691
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, cIsRejected, nUserId, sComments );
7692
 
7693
 
7694
	/* Log BOM_TRAIL */
7695
	-- Get Log Title
7696
	IsRejected := 'ACCEPTED';
7697
	IF cIsRejected = 'Y' THEN
7698
		IsRejected := 'REJECTED';
7699
	END IF;
7700
 
7701
	-- Finnaly log it
7702
	Log_Bom_Trail ( nBomId, IsRejected ||': By '|| StateName, nUserId, sComments );
7703
 
7704
END	Accept_Reject;
7705
/*--------------------------------------------------------------------------------------------------*/
7706
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
7707
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
7708
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
7709
							 nUserId IN NUMBER )  IS
7710
 
7711
BEGIN
7712
	/*--------------- Business Rules Here -------------------*/
7713
	/*-------------------------------------------------------*/
7714
 
7715
	--- Set Bom Official or Not ---
7716
	UPDATE BOMS bo SET
7717
	bo.IS_READONLY = cIsOfficial
7718
	WHERE bo.BOM_ID = nBomId;
7719
 
7720
 
7721
	-- Auto-Hide Bom
7722
	IF cIsOfficial = 'Y' THEN
7723
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_LOCK_BOM') );
7724
 
7725
		-- Update node version
7726
		Update_Nodes_Version ( nBomId, nUserId );
7727
 
7728
	ELSE
7729
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_UNLOCK_BOM') );
7730
	END IF;
7731
 
7732
 
7733
 
7734
	/* Log BOM_TRAIL */
7735
	pk_Bom.Log_Bom_Trail ( nBomId, 'LOCKED: '|| cIsOfficial, nUserId );
7736
 
7737
 
7738
END	Set_Bom_Official;
7739
/*--------------------------------------------------------------------------------------------------*/
7740
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
7741
							 	 nUserId IN NUMBER )  IS
7742
 
7743
	CompareBomId NUMBER;
7744
	ProjId NUMBER;
7745
	BomVersion VARCHAR2(4000);
7746
 
7747
	CURSOR curUpdateNode IS
7748
		SELECT DISTINCT
7749
			   nlook.NODE_ID,
7750
			   DECODE ( nlc.LAST_LIFE_CYCLE,
7751
			   			NULL, 0,
7752
						nlc.LAST_LIFE_CYCLE + 1 ) AS NEW_LIFE_CYCLE	   
7753
		  FROM (
7754
 
7755
		  		/* ADDED PATCHES ONLY */
7756
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
7757
				  FROM (
7758
				  		SELECT osc.PROD_ID,
7759
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7760
						  FROM OS_CONTENTS osc,
7761
						  	   OPERATING_SYSTEMS os,
7762
							   NETWORK_NODES nn,
7763
							   BOM_CONTENTS bc,
7764
							   PACKAGE_VERSIONS pv
7765
						 WHERE osc.OS_ID = os.OS_ID
7766
						   AND os.NODE_ID = nn.NODE_ID
7767
						   AND bc.NODE_ID = nn.NODE_ID
7768
						   AND osc.PROD_ID = pv.PV_ID
7769
						   AND NOT pv.IS_PATCH IS NULL
7770
						   AND bc.BOM_ID = nBomId	
7771
				  	   ) newbom,
7772
					   (
7773
					   	SELECT osc.PROD_ID,
7774
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7775
						  FROM OS_CONTENTS osc,
7776
						  	   OPERATING_SYSTEMS os,
7777
							   NETWORK_NODES nn,
7778
							   BOM_CONTENTS bc,
7779
							   PACKAGE_VERSIONS pv
7780
						 WHERE osc.OS_ID = os.OS_ID
7781
						   AND os.NODE_ID = nn.NODE_ID
7782
						   AND bc.NODE_ID = nn.NODE_ID
7783
						   AND osc.PROD_ID = pv.PV_ID
7784
						   AND NOT pv.IS_PATCH IS NULL
7785
						   AND bc.BOM_ID = CompareBomId	
7786
					   ) oldbom
7787
				 WHERE newbom.PK = oldbom.PK (+) 
7788
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
7789
				   AND oldbom.PK IS NULL
7790
				UNION 
7791
		  		/* ADDED PATCHES ONLY TO BASE CONFIGURATION */
7792
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
7793
				  FROM (
7794
				  		SELECT bec.PROD_ID,
7795
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7796
						  FROM BASE_ENV_CONTENTS bec,
7797
						  	   OS_BASE_ENV obe,
7798
						  	   OPERATING_SYSTEMS os,
7799
							   NETWORK_NODES nn,
7800
							   BOM_CONTENTS bc,
7801
							   PACKAGE_VERSIONS pv
7802
						 WHERE obe.OS_ID = os.OS_ID
7803
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
7804
						   AND os.NODE_ID = nn.NODE_ID
7805
						   AND bc.NODE_ID = nn.NODE_ID
7806
						   AND bec.PROD_ID = pv.PV_ID
7807
						   AND NOT pv.IS_PATCH IS NULL
7808
						   AND bc.BOM_ID = nBomId	
7809
				  	   ) newbom,
7810
					   (
7811
					   	SELECT bec.PROD_ID,
7812
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7813
						  FROM BASE_ENV_CONTENTS bec,
7814
						  	   OS_BASE_ENV obe,
7815
						  	   OPERATING_SYSTEMS os,
7816
							   NETWORK_NODES nn,
7817
							   BOM_CONTENTS bc,
7818
							   PACKAGE_VERSIONS pv
7819
						 WHERE obe.OS_ID = os.OS_ID
7820
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
7821
						   AND os.NODE_ID = nn.NODE_ID
7822
						   AND bc.NODE_ID = nn.NODE_ID
7823
						   AND bec.PROD_ID = pv.PV_ID
7824
						   AND NOT pv.IS_PATCH IS NULL
7825
						   AND bc.BOM_ID = CompareBomId	
7826
					   ) oldbom
7827
				 WHERE newbom.PK = oldbom.PK (+) 
7828
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
7829
				   AND oldbom.PK IS NULL
7830
				UNION				
7831
 
7832
				/* ADDED PRODUCTS ONLY */
7833
				SELECT DECODE( oldbom.PROD_ID,
7834
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
7835
					   newbom.PROD_ID, newbom.PK
7836
				  FROM (
7837
				  		SELECT osc.PROD_ID,
7838
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7839
							   pv.PKG_ID,
7840
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7841
						  FROM OS_CONTENTS osc,
7842
						  	   OPERATING_SYSTEMS os,
7843
							   NETWORK_NODES nn,
7844
							   BOM_CONTENTS bc,
7845
							   PACKAGE_VERSIONS pv
7846
						 WHERE osc.OS_ID = os.OS_ID
7847
						   AND os.NODE_ID = nn.NODE_ID
7848
						   AND bc.NODE_ID = nn.NODE_ID
7849
						   AND osc.PROD_ID = pv.PV_ID
7850
						   AND pv.IS_PATCH IS NULL
7851
						   AND bc.BOM_ID = nBomId	
7852
				  	   ) newbom,
7853
					   (
7854
					   	SELECT osc.PROD_ID,
7855
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7856
							   pv.PKG_ID,
7857
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7858
						  FROM OS_CONTENTS osc,
7859
						  	   OPERATING_SYSTEMS os,
7860
							   NETWORK_NODES nn,
7861
							   BOM_CONTENTS bc,
7862
							   PACKAGE_VERSIONS pv
7863
						 WHERE osc.OS_ID = os.OS_ID
7864
						   AND os.NODE_ID = nn.NODE_ID
7865
						   AND bc.NODE_ID = nn.NODE_ID
7866
						   AND osc.PROD_ID = pv.PV_ID
7867
						   AND pv.IS_PATCH IS NULL
7868
						   AND bc.BOM_ID = CompareBomId	
7869
					   ) oldbom
7870
				 WHERE newbom.PK = oldbom.PK (+) 
7871
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
7872
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
7873
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
7874
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	   
7875
				UNION
7876
 
7877
				/* ADDED PRODUCTS ONLY TO BASE CONFIGURATION */
7878
				SELECT DECODE( oldbom.PROD_ID,
7879
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
7880
					   newbom.PROD_ID, newbom.PK
7881
				  FROM (
7882
				  		SELECT bec.PROD_ID,
7883
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7884
							   pv.PKG_ID,
7885
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7886
						  FROM BASE_ENV_CONTENTS bec,
7887
						  	   OS_BASE_ENV obe,
7888
						  	   OPERATING_SYSTEMS os,
7889
							   NETWORK_NODES nn,
7890
							   BOM_CONTENTS bc,
7891
							   PACKAGE_VERSIONS pv
7892
						 WHERE obe.OS_ID = os.OS_ID
7893
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
7894
						   AND os.NODE_ID = nn.NODE_ID
7895
						   AND bc.NODE_ID = nn.NODE_ID
7896
						   AND bec.PROD_ID = pv.PV_ID
7897
						   AND pv.IS_PATCH IS NULL
7898
						   AND bc.BOM_ID = nBomId	
7899
				  	   ) newbom,
7900
					   (
7901
					   	SELECT bec.PROD_ID,
7902
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7903
							   pv.PKG_ID,
7904
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7905
						  FROM BASE_ENV_CONTENTS bec,
7906
						  	   OS_BASE_ENV obe,
7907
						  	   OPERATING_SYSTEMS os,
7908
							   NETWORK_NODES nn,
7909
							   BOM_CONTENTS bc,
7910
							   PACKAGE_VERSIONS pv
7911
						 WHERE obe.OS_ID = os.OS_ID
7912
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
7913
						   AND os.NODE_ID = nn.NODE_ID
7914
						   AND bc.NODE_ID = nn.NODE_ID
7915
						   AND bec.PROD_ID = pv.PV_ID
7916
						   AND pv.IS_PATCH IS NULL
7917
						   AND bc.BOM_ID = CompareBomId	
7918
					   ) oldbom
7919
				 WHERE newbom.PK = oldbom.PK (+) 
7920
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
7921
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
7922
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
7923
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	   
7924
				UNION
7925
 
7926
				/* REMOVED PRODUCTS ONLY*/    
7927
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
7928
				  FROM (
7929
				  		SELECT osc.PROD_ID,
7930
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7931
							   pv.PKG_ID,
7932
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7933
						  FROM OS_CONTENTS osc,
7934
						  	   OPERATING_SYSTEMS os,
7935
							   NETWORK_NODES nn,
7936
							   BOM_CONTENTS bc,
7937
							   PACKAGE_VERSIONS pv
7938
						 WHERE osc.OS_ID = os.OS_ID
7939
						   AND os.NODE_ID = nn.NODE_ID
7940
						   AND bc.NODE_ID = nn.NODE_ID
7941
						   AND osc.PROD_ID = pv.PV_ID
7942
						   AND pv.IS_PATCH IS NULL
7943
						   AND bc.BOM_ID = nBomId	
7944
				  	   ) newbom,
7945
					   (
7946
					   	SELECT osc.PROD_ID,
7947
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
7948
							   pv.PKG_ID,
7949
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
7950
						  FROM OS_CONTENTS osc,
7951
						  	   OPERATING_SYSTEMS os,
7952
							   NETWORK_NODES nn,
7953
							   BOM_CONTENTS bc,
7954
							   PACKAGE_VERSIONS pv
7955
						 WHERE osc.OS_ID = os.OS_ID
7956
						   AND os.NODE_ID = nn.NODE_ID
7957
						   AND bc.NODE_ID = nn.NODE_ID
7958
						   AND osc.PROD_ID = pv.PV_ID
7959
						   AND pv.IS_PATCH IS NULL
7960
						   AND bc.BOM_ID = CompareBomId	
7961
					   ) oldbom
7962
				 WHERE newbom.PK (+) = oldbom.PK  
7963
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
7964
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
7965
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
7966
				   AND newbom.PK IS NULL  
7967
				UNION   
7968
				/* REMOVED PATCHES */    
7969
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
7970
				  FROM (
7971
				  		SELECT osc.PROD_ID,
7972
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7973
						  FROM OS_CONTENTS osc,
7974
						  	   OPERATING_SYSTEMS os,
7975
							   NETWORK_NODES nn,
7976
							   BOM_CONTENTS bc,
7977
							   PACKAGE_VERSIONS pv
7978
						 WHERE osc.OS_ID = os.OS_ID
7979
						   AND os.NODE_ID = nn.NODE_ID
7980
						   AND bc.NODE_ID = nn.NODE_ID
7981
						   AND osc.PROD_ID = pv.PV_ID
7982
						   AND NOT pv.IS_PATCH IS NULL
7983
						   AND bc.BOM_ID = nBomId	
7984
				  	   ) newbom,
7985
					   (
7986
					   	SELECT osc.PROD_ID,
7987
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
7988
						  FROM OS_CONTENTS osc,
7989
						  	   OPERATING_SYSTEMS os,
7990
							   NETWORK_NODES nn,
7991
							   BOM_CONTENTS bc,
7992
							   PACKAGE_VERSIONS pv
7993
						 WHERE osc.OS_ID = os.OS_ID
7994
						   AND os.NODE_ID = nn.NODE_ID
7995
						   AND bc.NODE_ID = nn.NODE_ID
7996
						   AND osc.PROD_ID = pv.PV_ID
7997
						   AND NOT pv.IS_PATCH IS NULL
7998
						   AND bc.BOM_ID = CompareBomId	
7999
					   ) oldbom
8000
				 WHERE newbom.PK (+) = oldbom.PK  
8001
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
8002
				   AND newbom.PK IS NULL 
8003
				   UNION
8004
				/* REMOVED PRODUCTS ONLY FROM BASE CONFIGURATION*/    
8005
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
8006
				  FROM (
8007
				  		SELECT bec.PROD_ID,
8008
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
8009
							   pv.PKG_ID,
8010
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
8011
						  FROM BASE_ENV_CONTENTS bec,
8012
						  	   OS_BASE_ENV obe,
8013
						  	   OPERATING_SYSTEMS os,
8014
							   NETWORK_NODES nn,
8015
							   BOM_CONTENTS bc,
8016
							   PACKAGE_VERSIONS pv
8017
						 WHERE obe.OS_ID = os.OS_ID
8018
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
8019
						   AND os.NODE_ID = nn.NODE_ID
8020
						   AND bc.NODE_ID = nn.NODE_ID
8021
						   AND bec.PROD_ID = pv.PV_ID
8022
						   AND pv.IS_PATCH IS NULL
8023
						   AND bc.BOM_ID = nBomId	
8024
				  	   ) newbom,
8025
					   (
8026
					   	SELECT bec.PROD_ID,
8027
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
8028
							   pv.PKG_ID,
8029
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
8030
						  FROM BASE_ENV_CONTENTS bec,
8031
						  	   OS_BASE_ENV obe,
8032
						  	   OPERATING_SYSTEMS os,
8033
							   NETWORK_NODES nn,
8034
							   BOM_CONTENTS bc,
8035
							   PACKAGE_VERSIONS pv
8036
						 WHERE obe.OS_ID = os.OS_ID
8037
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID 
8038
						   AND os.NODE_ID = nn.NODE_ID
8039
						   AND bc.NODE_ID = nn.NODE_ID
8040
						   AND bec.PROD_ID = pv.PV_ID
8041
						   AND pv.IS_PATCH IS NULL
8042
						   AND bc.BOM_ID = CompareBomId	
8043
					   ) oldbom
8044
				 WHERE newbom.PK (+) = oldbom.PK  
8045
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
8046
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
8047
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
8048
				   AND newbom.PK IS NULL  
8049
				UNION   
8050
				/* REMOVED PATCHES FROM BASE CONFIGURATION*/    
8051
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
8052
				  FROM (
8053
				  		SELECT bec.PROD_ID,
8054
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8055
						  FROM BASE_ENV_CONTENTS bec,
8056
						  	   OS_BASE_ENV obe,
8057
						  	   OPERATING_SYSTEMS os,
8058
							   NETWORK_NODES nn,
8059
							   BOM_CONTENTS bc,
8060
							   PACKAGE_VERSIONS pv
8061
						 WHERE obe.OS_ID = os.OS_ID
8062
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
8063
						   AND os.NODE_ID = nn.NODE_ID
8064
						   AND bc.NODE_ID = nn.NODE_ID
8065
						   AND bec.PROD_ID = pv.PV_ID
8066
						   AND NOT pv.IS_PATCH IS NULL
8067
						   AND bc.BOM_ID = nBomId	
8068
				  	   ) newbom,
8069
					   (
8070
					   	SELECT bec.PROD_ID,
8071
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8072
						  FROM BASE_ENV_CONTENTS bec,
8073
						  	   OS_BASE_ENV obe,
8074
						  	   OPERATING_SYSTEMS os,
8075
							   NETWORK_NODES nn,
8076
							   BOM_CONTENTS bc,
8077
							   PACKAGE_VERSIONS pv
8078
						 WHERE obe.OS_ID = os.OS_ID
8079
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
8080
						   AND os.NODE_ID = nn.NODE_ID
8081
						   AND bc.NODE_ID = nn.NODE_ID
8082
						   AND bec.PROD_ID = pv.PV_ID
8083
						   AND NOT pv.IS_PATCH IS NULL
8084
						   AND bc.BOM_ID = CompareBomId	
8085
					   ) oldbom
8086
				 WHERE newbom.PK (+) = oldbom.PK  
8087
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
8088
				   AND newbom.PK IS NULL				    	
8089
 
8090
		       ) qry,
8091
			   (
8092
 
8093
		  		SELECT nn.NODE_ID,
8094
					   nn.NODE_NAME,
8095
					   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8096
				  FROM OPERATING_SYSTEMS os,
8097
					   NETWORK_NODES nn,
8098
					   BOM_CONTENTS bc
8099
				 WHERE os.NODE_ID = nn.NODE_ID
8100
				   AND bc.NODE_ID = nn.NODE_ID
8101
				   AND bc.BOM_ID = nBomId
8102
 
8103
		  	   ) nlook,
8104
			   (
8105
 
8106
				SELECT nn.NODE_NAME, 
8107
					   MAX(nn.NODE_LIFE_CYCLE) AS LAST_LIFE_CYCLE
8108
				  FROM BOMS bo,
8109
				  	   BOM_CONTENTS bc,
8110
					   BRANCHES br,
8111
					   NETWORK_NODES nn
8112
				 WHERE bc.BOM_ID = bo.BOM_ID
8113
				   AND bo.BRANCH_ID = br.BRANCH_ID
8114
				   AND bc.NODE_ID = nn.NODE_ID
8115
				   AND br.PROJ_ID = ProjId
8116
		  	     GROUP BY nn.NODE_NAME
8117
 
8118
			   ) nlc
8119
		 WHERE nlook.PK = qry.PK 
8120
		   AND nlc.NODE_NAME = nlook.NODE_NAME;
8121
	recUpdateNode curUpdateNode%ROWTYPE;
8122
 
8123
 
8124
 
8125
BEGIN
8126
	/*--------------- Business Rules Here -------------------*/
8127
	/*-------------------------------------------------------*/
8128
 
8129
	-- Get some BOM details
8130
	SELECT bo.PARENT_BOM_ID, br.PROJ_ID, bo.BOM_VERSION ||'.'|| bo.BOM_LIFECYCLE INTO CompareBomId, ProjId, BomVersion
8131
	  FROM BOMS bo,
8132
	  	   BRANCHES br
8133
	 WHERE bo.BOM_ID = nBomId
8134
	   AND bo.BRANCH_ID = br.BRANCH_ID;
8135
 
8136
 
8137
	-- Update node version
8138
	OPEN curUpdateNode;
8139
	FETCH curUpdateNode INTO recUpdateNode;
8140
 
8141
	WHILE curUpdateNode%FOUND
8142
	LOOP
8143
 
8144
		UPDATE NETWORK_NODES nn SET
8145
			nn.NODE_VERSION = BomVersion,
8146
			nn.NODE_LIFE_CYCLE = recUpdateNode.NEW_LIFE_CYCLE
8147
		 WHERE nn.NODE_ID = recUpdateNode.NODE_ID;
8148
 
8149
		FETCH curUpdateNode INTO recUpdateNode;
8150
	END LOOP;
8151
 
8152
 
8153
	CLOSE curUpdateNode;	
8154
 
8155
END	Update_Nodes_Version;
8156
/*--------------------------------------------------------------------------------------------------*/
8157
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 ) IS
8158
 
8159
rowCount NUMBER;
8160
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
8161
nBomIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
8162
 
8163
BEGIN
8164
	/*--------------- Business Rules Here -------------------*/
8165
	IF (nBomId IS NULL) 
8166
	THEN
8167
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId );
8168
 
8169
	END IF;
8170
 
8171
	-- Check Requirements
8172
	pk_Requirements.Destroy_Bom ( nBomId );
8173
 
8174
	/*-------------------------------------------------------*/
8175
 
8176
 
8177
 
8178
	-- Load Collector
8179
	nBomIdCollector := IN_LIST_NUMBER( nBomId );
8180
 
8181
 
8182
	-- Destroy BASE_ENV
8183
	nIdCollector := NULL;
8184
	SELECT CAST ( MULTISET ( SELECT be.BASE_ENV_ID
8185
	  	   		  		   	   FROM BASE_ENV be
8186
	 						  WHERE be.BOM_ID IN   ( 
8187
								  	  		  	      SELECT * 
8188
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8189
												 	) 
8190
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
8191
 
8192
	Destroy_BaseEnv ( nIdCollector );
8193
 
8194
 
8195
 
8196
	-- Destroy NETWORK_NODES
8197
	nIdCollector := NULL;
8198
	SELECT CAST ( MULTISET ( SELECT bc.NODE_ID
8199
	  	   		  		   	   FROM BOM_CONTENTS bc
8200
	 						  WHERE bc.BOM_ID IN   ( 
8201
								  	  		  	      SELECT * 
8202
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8203
												 	) 
8204
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
8205
 
8206
	pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
8207
 
8208
 
8209
 
8210
	-- Destroy HARDWARE
8211
	nIdCollector := NULL;
8212
	SELECT CAST ( MULTISET ( SELECT hr.HARDWARE_NAME_ID
8213
	  	   		  		   	   FROM HARDWARE hr
8214
	 						  WHERE hr.BOM_ID IN   ( 
8215
								  	  		  	      SELECT * 
8216
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8217
												 	)
8218
							) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
8219
 
8220
	Destroy_Hardware ( nIdCollector );
8221
 
8222
 
8223
 
8224
	-- Destroy BOM_STATE
8225
	DELETE 
8226
	  FROM BOM_STATE bs
8227
	 WHERE bs.BOM_ID IN ( 
8228
	  	  		  	      SELECT * 
8229
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8230
					 	);
8231
 
8232
 
8233
	-- Destroy BOM_TRAIL
8234
	DELETE 
8235
	  FROM BOM_TRAIL bt
8236
	 WHERE bt.BOM_ID IN ( 
8237
	  	  		  	      SELECT * 
8238
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8239
					 	); 
8240
 
8241
 
8242
	---- Finnaly Destroy BOM ----
8243
	DELETE 
8244
	  FROM BOMS bo
8245
	 WHERE bo.BOM_ID IN ( 
8246
	  	  		  	      SELECT * 
8247
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
8248
					 	);
8249
 
8250
 
8251
 
8252
END	Destroy_Bom;
8253
/*--------------------------------------------------------------------------------------------------*/
8254
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
8255
 
8256
 
8257
BEGIN
8258
	/*--------------- Business Rules Here -------------------*/
8259
	/*-------------------------------------------------------*/
8260
 
8261
	-- Destroy BASE_ENV_CONTENTS
8262
	DELETE
8263
	  FROM BASE_ENV_CONTENTS bec
8264
	 WHERE bec.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
8265
 
8266
	-- Destroy OS_BASE_ENV
8267
	DELETE
8268
	  FROM OS_BASE_ENV obe
8269
	 WHERE obe.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
8270
 
8271
	 -- Destroy BASE_ENV
8272
	DELETE
8273
	  FROM BASE_ENV be
8274
	 WHERE be.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
8275
 
8276
 
8277
END	Destroy_BaseEnv;
8278
/*--------------------------------------------------------------------------------------------------*/
8279
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
8280
 
8281
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
8282
 
8283
BEGIN
8284
	/*--------------- Business Rules Here -------------------*/
8285
	/*-------------------------------------------------------*/
8286
 
8287
    -- Destroy NETWORK_NODES
8288
    nIdCollector := NULL;
8289
    SELECT CAST ( MULTISET ( SELECT hn.NODE_ID
8290
	  	   		  		   	   FROM HARDWARE_NODE hn
8291
	 						  WHERE hn.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) ) 
8292
						   ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
8293
 
8294
    pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
8295
 
8296
 
8297
	-- Finnaly Destroy HARDWARE
8298
	DELETE
8299
	  FROM HARDWARE hd
8300
	 WHERE hd.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
8301
 
8302
END	Destroy_Hardware;
8303
/*--------------------------------------------------------------------------------------------------*/
8304
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
8305
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
8306
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
8307
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
8308
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
8309
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE ) IS
8310
 
8311
IsNotHead NUMBER;
8312
FromBranch NUMBER;
8313
LastRootVersion NUMBER;
8314
LastVersion BOMS.BOM_VERSION%TYPE;
8315
 
8316
CURSOR curBoms IS
8317
	SELECT Max ( CAST ( bo.BOM_VERSION AS NUMBER  ) ) AS LAST_VERSION
8318
		  FROM BOMS bo,
8319
		  	   BRANCHES br
8320
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
8321
		   AND br.PROJ_ID IN ( SELECT br.PROJ_ID  FROM BRANCHES br  WHERE br.BRANCH_ID = nToBranchId )	
8322
		   AND bo.BOM_NAME_ID = nBomNameId;
8323
recBoms curBoms%ROWTYPE;
8324
 
8325
 
8326
BEGIN
8327
 
8328
	/*--------------- Business Rules Here -------------------*/
8329
	/*-------------------------------------------------------*/
8330
	-- Get Last Root Version
8331
 
8332
	OPEN curBoms;
8333
	FETCH curBoms INTO recBoms;	
8334
	LastRootVersion := recBoms.LAST_VERSION;
8335
	CLOSE curBoms;
8336
 
8337
 
8338
 
8339
 
8340
 
8341
	IF nFromBomId IS NULL THEN
8342
		/* Blank BOM Required */
8343
 
8344
		-- Get Next Available Version
8345
		sNextVersion := '1';
8346
		sNextLifeCycle := '0';
8347
		IF LastRootVersion IS NOT NULL THEN
8348
			sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
8349
		END IF;
8350
 
8351
 
8352
 
8353
	ELSE
8354
		/* Create Bom From ... */
8355
 
8356
		-- Check if BOM is comming from different Iteration
8357
		SELECT bo.BRANCH_ID INTO FromBranch
8358
		  FROM BOMS bo
8359
		 WHERE bo.BOM_ID = nFromBomId; 
8360
 
8361
 
8362
 
8363
		IF FromBranch = nToBranchId THEN
8364
			/* Bom is comming from same Iteration */
8365
			/* i.e. Continue on same version stream. */
8366
 
8367
			-- Set parent_id
8368
			nParentBomId := nFromBomId;
8369
 
8370
 
8371
			-- Get Last Version 
8372
			SELECT bo.BOM_VERSION INTO LastVersion
8373
			  FROM BOMS bo
8374
			 WHERE bo.BOM_ID = nFromBomId;
8375
 
8376
 
8377
			-- Check if Bom is Head (i.e. Last on its branch )
8378
			SELECT COUNT(*) INTO IsNotHead
8379
			  FROM BOMS bo,
8380
			  	   BRANCHES br
8381
			 WHERE bo.BRANCH_ID = br.BRANCH_ID
8382
			   AND br.PROJ_ID IN ( SELECT br.PROJ_ID FROM BRANCHES br WHERE br.BRANCH_ID = FromBranch )
8383
			   AND bo.PARENT_BOM_ID = nFromBomId
8384
			   AND bo.BOM_VERSION = LastVersion
8385
			   AND bo.BOM_ID != bo.PARENT_BOM_ID;
8386
 
8387
 
8388
			IF IsNotHead = 0 THEN
8389
				/* Bom IS Head (i.e. Last on its branch ) */
8390
 
8391
				-- Get Bom Version and LifeCycle
8392
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
8393
				  FROM BOMS bo
8394
				 WHERE bo.BOM_ID = nFromBomId;
8395
 
8396
				-- Increase Lifecycle
8397
				sNextLifeCycle := CAST (  ( CAST( sNextLifeCycle AS NUMBER ) + 1 )  AS VARCHAR2 );
8398
 
8399
 
8400
			ELSE
8401
				/* Bom IS NOT Head */
8402
 
8403
				-- Get Bom Version and LifeCycle
8404
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
8405
				  FROM BOMS bo
8406
				 WHERE bo.BOM_ID = nFromBomId;
8407
 
8408
				-- Branch Bom Version 
8409
				sNextVersion := sNextVersion ||'.'|| sNextLifeCycle;
8410
 
8411
				-- Reset Lifecycle to 1
8412
				sNextLifeCycle := '1';
8413
 
8414
			END IF;	
8415
 
8416
 
8417
		ELSE
8418
			/* BOM is comming from Different Iteration */
8419
			/* i.e. Start new version stream. */
8420
 
8421
			-- Get Next Available Version
8422
			sNextVersion := '1';
8423
			sNextLifeCycle := '0';
8424
			IF LastRootVersion IS NOT NULL THEN
8425
				sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
8426
			END IF;
8427
 
8428
		END IF;
8429
 
8430
 
8431
	END IF;
8432
 
8433
 
8434
END	Get_Next_Version;
8435
/*--------------------------------------------------------------------------------------------------*/
8436
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
8437
					   nUserId IN BOM_STATE.USER_ID%TYPE,
8438
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
8439
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL ) IS
8440
 
8441
rowCount NUMBER;	
8442
IsOfficial BOMS.IS_READONLY%TYPE;					 
8443
StateId BOM_STATE.STATE_ID%TYPE;
8444
StateName STATES.STATE_NAME%TYPE;
8445
 
8446
BEGIN
8447
	/*--------------- Business Rules Here -------------------*/
8448
	-- Check if already released
8449
	SELECT Count(*) INTO rowCount
8450
	  FROM BOM_STATE bs
8451
	 WHERE bs.BOM_ID = nBomId
8452
	   AND bs.STATE_ID = nToState;
8453
 
8454
	IF rowCount > 0 THEN
8455
	   RAISE_APPLICATION_ERROR (-20000, 'This BOM is already release' );
8456
	END IF;
8457
 
8458
 
8459
	-- Check if Bom is official
8460
	SELECT bo.IS_READONLY INTO IsOfficial
8461
	  FROM BOMS bo
8462
	 WHERE bo.BOM_ID = nBomId;
8463
 
8464
	IF (IsOfficial != 'Y') AND (nToState IS NOT NULL) THEN
8465
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first' );
8466
	END IF;
8467
	/*-------------------------------------------------------*/
8468
 
8469
 
8470
	-- Get State --
8471
	StateId := nToState;
8472
	IF StateId IS NULL THEN
8473
		-- If state_id is null it is considered as state_type_enum = 'BOM Creator'
8474
		SELECT st.STATE_ID INTO StateId
8475
		  FROM BOMS bo,
8476
		  	   BRANCHES br,
8477
			   DM_PROJECTS proj,
8478
			   STATES st
8479
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
8480
		   AND br.PROJ_ID = proj.PROJ_ID
8481
		   AND st.PROJ_ID = proj.PROJ_ID
8482
		   AND bo.BOM_ID = nBomId
8483
		   AND st.STATE_TYPE_ENUM = GET_SYSTEM_VALUE('enumSTATE_TYPE_CREATOR');	
8484
	END IF;
8485
 
8486
 
8487
	-- Add Bom to State --
8488
	INSERT INTO BOM_STATE (BOM_ID, STATE_ID, DATE_STAMP, IS_DISPLAYED, USER_ID )
8489
	VALUES( nBomId,
8490
			StateId,
8491
			GET_DATE(),
8492
			'Y',
8493
			nUserId );
8494
 
8495
 
8496
 
8497
	-- Auto-Hide Bom
8498
	pk_State.Auto_Hide ( StateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_RELEASE_TO') );
8499
 
8500
 
8501
	/* Log BOM_TRAIL */
8502
	-- Get State Name --
8503
	SELECT st.STATE_NAME INTO StateName
8504
	  FROM STATES st
8505
	 WHERE st.STATE_ID = StateId;
8506
 
8507
	-- Log Action 
8508
	pk_Bom.Log_Bom_Trail ( nBomId, 'RELEASED TO: '|| StateName, nUserId, sComments );
8509
 
8510
 
8511
END	Release_To;
8512
/*--------------------------------------------------------------------------------------------------*/
8513
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
8514
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
8515
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
8516
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE ) IS
8517
 
8518
IsRejected REJECTION_TRAIL.IS_REJECTED%TYPE;
8519
 
8520
BEGIN
8521
	/*--------------- Business Rules Here -------------------*/
8522
	IF (nBomId IS NULL)
8523
	THEN
8524
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId  );
8525
	END IF;
8526
	/*-------------------------------------------------------*/
8527
 
8528
	IF nRejectSeq IS NULL THEN
8529
		/* CREATE New Note */
8530
 
8531
		-- Get last IsRejected state
8532
		SELECT rt.IS_REJECTED INTO IsRejected
8533
		  FROM REJECTION_TRAIL rt
8534
		 WHERE rt.ENTITY_ID = nBomId
8535
		   AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
8536
		   AND ROWNUM = 1
8537
		 ORDER BY rt.REJECT_SEQ;
8538
 
8539
 
8540
		/* Log Rejection Trail */
8541
		pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, IsRejected, nUserId, sComments );
8542
 
8543
 
8544
	ELSE
8545
		/* EDIT Note */
8546
		UPDATE REJECTION_TRAIL rt SET
8547
			rt.COMMENTS = sComments,
8548
			rt.USER_ID = nUserId,
8549
			rt.DATE_TIME_STAMP = GET_DATETIME()
8550
		WHERE rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
8551
		  AND rt.ENTITY_ID = nBomId
8552
		  AND rt.REJECT_SEQ = nRejectSeq;
8553
 
8554
 
8555
	END IF;
8556
 
8557
 
8558
END	Accept_Reject_Comments;
8559
/*--------------------------------------------------------------------------------------------------*/
8560
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
8561
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
8562
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
8563
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  ) IS
8564
 
8565
 
8566
BEGIN
8567
	/*--------------- Business Rules Here -------------------*/
8568
	IF (nBomId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
8569
	THEN
8570
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId ||', sAction='|| sAction ||', nUserId='|| nUserId );
8571
	END IF;
8572
	/*-------------------------------------------------------*/
8573
 
8574
	INSERT INTO BOM_TRAIL ( BOM_ID, TRAIL_ACTION, TRAIL_COMMENTS, USER_ID, DATE_TIME_STAMP )
8575
	VALUES ( nBomId, sAction, sComments, nUserId, GET_DATETIME() );	
8576
 
8577
END	Log_Bom_Trail;
8578
/*--------------------------------------------------------------------------------------------------*/
8579
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
8580
						  sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
8581
						  nUserId IN NODE_TRAIL.USER_ID%TYPE  ) IS
8582
 
8583
 
8584
BEGIN
8585
	/*--------------- Business Rules Here -------------------*/
8586
	IF (nNodeId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
8587
	THEN
8588
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId= '|| nNodeId ||', sAction='|| sAction ||', nUserId='|| nUserId );
8589
	END IF;
8590
	/*-------------------------------------------------------*/
8591
 
8592
	INSERT INTO NODE_TRAIL ( NODE_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
8593
	VALUES ( nNodeId, sAction, nUserId, GET_DATETIME() );	
8594
 
8595
END	Log_Node_Trail;
8596
/*--------------------------------------------------------------------------------------------------*/
8597
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
8598
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
8599
						  nUserId IN OS_TRAIL.USER_ID%TYPE  ) IS
8600
 
8601
 
8602
BEGIN
8603
	/*--------------- Business Rules Here -------------------*/
8604
	IF (nOsId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
8605
	THEN
8606
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nOsId ||', sAction='|| sAction ||', nUserId='|| nUserId );
8607
	END IF;
8608
	/*-------------------------------------------------------*/
8609
 
8610
	INSERT INTO OS_TRAIL ( OS_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
8611
	VALUES ( nOsId, sAction, nUserId, GET_DATETIME() );	
8612
 
8613
END	Log_Os_Trail;
8614
/*--------------------------------------------------------------------------------------------------*/
8615
 
8616
END pk_Bom_Test;
8617
/
8618
 
8619
CREATE OR REPLACE PACKAGE BODY pk_Bom
8620
IS
8621
/* ---------------------------------------------------------------------------
8622
    Version: 2.0
8623
   --------------------------------------------------------------------------- */
8624
 
8625
/*--------------------------------------------------------------------------------------------------*/
8626
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
8627
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
8628
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
8629
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
8630
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
8631
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
8632
					nRtagId IN BOMS.RTAG_ID_FK%TYPE,
8633
					nUserId IN BOM_STATE.USER_ID%TYPE ) IS
8634
 
8635
BomId BOMS.BOM_ID%TYPE;
8636
ParentBomId BOMS.PARENT_BOM_ID%TYPE;
8637
BomNameId BOM_NAMES.BOM_NAME_ID%TYPE;
8638
BomVersion BOMS.BOM_VERSION%TYPE;
8639
BomLifeCycle BOMS.BOM_LIFECYCLE%TYPE;
8640
ProjId BRANCHES.PROJ_ID%TYPE;
8641
 
8642
CURSOR curBom IS 
8643
		SELECT bo.BOM_ID
8644
		  FROM BOMS bo,
8645
		  	   BRANCHES br
8646
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
8647
		   AND br.PROJ_ID = ProjId
8648
		   AND bo.BOM_NAME_ID = BomNameId
8649
		   AND bo.BOM_VERSION = BomVersion
8650
		   AND bo.BOM_LIFECYCLE = BomLifeCycle;
8651
recBom curBom%ROWTYPE;
8652
 
8653
DUPLICATE_BOM EXCEPTION;
8654
 
8655
BEGIN
8656
	/*--------------- Business Rules Here -------------------*/
8657
	IF (nToBranchId IS NULL) OR (nUserId IS NULL)
8658
	THEN
8659
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nToBranchId= '|| nToBranchId ||', nUserId='|| nUserId );
8660
 
8661
	END IF;
8662
	/*-------------------------------------------------------*/
8663
 
8664
	-- Get bom_id
8665
	SELECT SEQ_BOM_ID.NEXTVAL INTO BomId FROM DUAL;
8666
 
8667
 
8668
	-- Get bom_name_id
8669
	IF nFromBomId IS NULL THEN
8670
		BomNameId := New_Bom_Name ( sBomName );
8671
        ParentBomId := BomId;
8672
	ELSE
8673
		BomNameId := New_Bom_Name ( nFromBomId );
8674
        ParentBomId := nFromBomId;
8675
	END IF;		
8676
 
8677
 
8678
 
8679
 
8680
	-- Get Bom Version and Lifecycle
8681
	--Get_Next_Version ( nFromBomId, nToBranchId, BomVersion, BomLifeCycle, ParentBomId, BomNameId );
8682
 
8683
 
8684
 
8685
	-- Get proj_id
8686
	SELECT br.PROJ_ID INTO ProjId
8687
	  FROM BRANCHES br
8688
	 WHERE br.BRANCH_ID = nToBranchId;
8689
 
8690
 
8691
 
8692
	-- Check for duplicate BOMs
8693
	OPEN curBom;
8694
    FETCH curBom INTO recBom;
8695
 
8696
    IF curBom%FOUND
8697
    THEN
8698
		RAISE DUPLICATE_BOM;
8699
	END IF;
8700
 
8701
	CLOSE curBom;
8702
 
8703
 
8704
 
8705
	-- Add Blank Bom --
8706
	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 )
8707
	VALUES ( BomId, nToBranchId, BomNameId, sBomComments, sBomVersion, sBomLifeCycle, 'N', 'N', ParentBomId, nRtagId  );
8708
 
8709
 
8710
 
8711
 
8712
	/* Log BOM_TRAIL */
8713
	pk_Bom.Log_Bom_Trail ( BomId, 'CREATED: Version '|| sBomVersion ||'.'|| sBomLifeCycle , nUserId );
8714
 
8715
 
8716
 
8717
	IF nFromBomId IS NOT NULL THEN
8718
		/* Add Bom Clonned from ... */
8719
		pk_Utils.Clone_BOM ( nFromBomId, BomId, nUserId );
8720
 
8721
	END IF;
8722
 
8723
 
8724
 
8725
	--- Set Bom State ---
8726
	Release_To ( BomId, nUserId );
8727
 
8728
 
8729
	EXCEPTION
8730
    WHEN DUPLICATE_BOM
8731
	THEN		
8732
		RAISE_APPLICATION_ERROR (-20000, 'BOM "'|| sBomName ||' '|| BomVersion ||'.'|| BomLifeCycle ||'" is Already Used in this Project.');
8733
 
8734
END	Add_Bom;
8735
/*--------------------------------------------------------------------------------------------------*/
8736
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
8737
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
8738
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
8739
					   nUserId IN NUMBER )  IS
8740
 
8741
ReleaseName VARCHAR2(100);					   
8742
 
8743
BEGIN
8744
	/*--------------- Business Rules Here -------------------*/
8745
	/*-------------------------------------------------------*/
8746
 
8747
	--- Update Bom Properties ---
8748
	UPDATE BOMS bo SET
8749
		bo.RTAG_ID_FK = nRtagId,
8750
		bo.BOM_COMMENTS = sBomComment
8751
	WHERE bo.BOM_ID = nBomId;
8752
 
8753
	SELECT RTAG_NAME INTO ReleaseName
8754
	FROM RELEASE_TAGS 
8755
	WHERE RTAG_ID = nRtagId;
8756
 
8757
 
8758
	/* Log BOM_TRAIL */
8759
	pk_Bom.Log_Bom_Trail ( nBomId, 'Updated BOM properties: Set Release Manager Reference ='||ReleaseName||' and comments ='||sBomComment, nUserId );
8760
 
8761
 
8762
END	Update_Bom;
8763
/*--------------------------------------------------------------------------------------------------*/
8764
PROCEDURE Update_ProdBom ( nBomId IN BOMS.BOM_ID%TYPE,
8765
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
8766
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
8767
					   nUserId IN NUMBER )  IS
8768
 
8769
ReleaseName VARCHAR2(100);					   
8770
 
8771
BEGIN
8772
	/*--------------- Business Rules Here -------------------*/
8773
	/*-------------------------------------------------------*/
8774
 
8775
	--- Update Bom Properties ---
8776
	UPDATE BOMS bo SET
8777
		bo.RTAG_ID_FK = nRtagId,
8778
		bo.BOM_COMMENTS = sBomComment
8779
	WHERE bo.BOM_ID = nBomId;
8780
 
8781
	SELECT BRANCH_NAME INTO ReleaseName
8782
	FROM BRANCHES 
8783
	WHERE BRANCH_ID = nRtagId;
8784
 
8785
 
8786
	/* Log BOM_TRAIL */
8787
	pk_Bom.Log_Bom_Trail ( nBomId, 'Updated BOM properties: Set Deployment Manager Reference ='||ReleaseName||' and comments ='||sBomComment, nUserId );
8788
 
8789
 
8790
END	Update_ProdBom;
8791
/*--------------------------------------------------------------------------------------------------*/
8792
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE IS
8793
 
8794
ReturnValue 	 BOM_NAMES.BOM_NAME_ID%TYPE;	
8795
 
8796
CURSOR curBomNames IS
8797
	SELECT bn.BOM_NAME_ID
8798
	  FROM BOM_NAMES bn
8799
	 WHERE bn.BOM_NAME = sBomName;
8800
recBomNames curBomNames%ROWTYPE;
8801
 
8802
BEGIN
8803
	/*--------------- Business Rules Here -------------------*/
8804
	/*-------------------------------------------------------*/
8805
 
8806
	-- Check for existance of this name
8807
	OPEN curBomNames;
8808
	FETCH curBomNames INTO recBomNames;
8809
 
8810
	ReturnValue := NULL;
8811
	IF curBomNames%FOUND THEN
8812
		ReturnValue := recBomNames.BOM_NAME_ID;
8813
	END IF;
8814
 
8815
	CLOSE curBomNames;
8816
 
8817
 
8818
	-- Finnaly Create Name if required --    
8819
	IF ReturnValue IS NULL THEN
8820
		-- Get bom_name_id
8821
		SELECT SEQ_BOM_NAME_ID.NEXTVAL INTO ReturnValue FROM DUAL;
8822
 
8823
		INSERT INTO BOM_NAMES ( BOM_NAME_ID, BOM_NAME )
8824
		VALUES ( ReturnValue, sBomName );
8825
 
8826
	END IF;	
8827
 
8828
 
8829
	RETURN ReturnValue;
8830
END	New_Bom_Name;
8831
/*--------------------------------------------------------------------------------------------------*/
8832
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE IS
8833
 
8834
ReturnValue 	 BOMS.BOM_NAME_ID%TYPE;	
8835
 
8836
BEGIN
8837
	/*--------------- Business Rules Here -------------------*/
8838
	/*-------------------------------------------------------*/
8839
 
8840
	-- Get bom_name_id
8841
	SELECT bo.BOM_NAME_ID INTO ReturnValue
8842
	  FROM BOMS bo
8843
	 WHERE bo.BOM_ID = nFromBomId;
8844
 
8845
 
8846
	RETURN ReturnValue;
8847
END	New_Bom_Name;
8848
/*--------------------------------------------------------------------------------------------------*/
8849
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
8850
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
8851
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
8852
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
8853
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  ) IS
8854
 
8855
StateName STATES.STATE_NAME%TYPE;						  
8856
IsOfficial BOMS.IS_READONLY%TYPE;	
8857
IsRejected VARCHAR2(50);					  
8858
 
8859
BEGIN
8860
	/*--------------- Business Rules Here -------------------*/
8861
	-- Check if Bom is official
8862
	SELECT bo.IS_READONLY INTO IsOfficial
8863
	  FROM BOMS bo
8864
	 WHERE bo.BOM_ID = nBomId;
8865
 
8866
	IF IsOfficial != 'Y' THEN
8867
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first.' );
8868
	END IF;
8869
	/*-------------------------------------------------------*/
8870
 
8871
	-- Get State Name
8872
	SELECT st.STATE_NAME INTO StateName
8873
	  FROM STATES st
8874
	 WHERE st.STATE_ID = nStateId;
8875
 
8876
 
8877
	-- AcceptReject BOM
8878
	UPDATE BOMS bo SET
8879
		bo.IS_REJECTED = cIsRejected
8880
	WHERE bo.BOM_ID = nBomId;
8881
 
8882
 
8883
	-- Auto-Hide Bom
8884
	IF cIsRejected = 'Y' THEN
8885
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_REJECT_BOM') );
8886
	ELSE
8887
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_ACCEPT_BOM') );
8888
	END IF;
8889
 
8890
 
8891
	-- Log Rejection Trail 
8892
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, cIsRejected, nUserId, sComments );
8893
 
8894
 
8895
	/* Log BOM_TRAIL */
8896
	-- Get Log Title
8897
	IsRejected := 'ACCEPTED';
8898
	IF cIsRejected = 'Y' THEN
8899
		IsRejected := 'REJECTED';
8900
	END IF;
8901
 
8902
	-- Finnaly log it
8903
	Log_Bom_Trail ( nBomId, IsRejected ||': By '|| StateName, nUserId, sComments );
8904
 
8905
END	Accept_Reject;
8906
/*--------------------------------------------------------------------------------------------------*/
8907
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
8908
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
8909
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
8910
							 nUserId IN NUMBER )  IS
8911
 
8912
 
8913
BEGIN
8914
	/*--------------- Business Rules Here -------------------*/
8915
	/*-------------------------------------------------------*/
8916
	--- Set Bom Official or Not ---
8917
	UPDATE BOMS bo SET
8918
	bo.IS_READONLY = cIsOfficial
8919
	WHERE bo.BOM_ID = nBomId;
8920
 
8921
 
8922
	-- Auto-Hide Bom
8923
	IF cIsOfficial = 'Y' THEN
8924
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_LOCK_BOM') );
8925
 
8926
		-- Update node version
8927
		Update_Nodes_Version ( nBomId, nUserId );
8928
	ELSE
8929
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_UNLOCK_BOM') );
8930
	END IF;
8931
 
8932
 
8933
 
8934
	/* Log BOM_TRAIL */
8935
	pk_Bom.Log_Bom_Trail ( nBomId, 'LOCKED: '|| cIsOfficial, nUserId );
8936
 
8937
 
8938
END	Set_Bom_Official;
8939
/*--------------------------------------------------------------------------------------------------*/
8940
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
8941
							 	 nUserId IN NUMBER )  IS
8942
 
8943
	CompareBomId NUMBER;
8944
	ProjId NUMBER;
8945
	BomVersion VARCHAR2(4000);
8946
 
8947
	CURSOR curUpdateNode IS
8948
		SELECT DISTINCT
8949
			   nlook.NODE_ID,
8950
			   DECODE ( nlc.LAST_LIFE_CYCLE,
8951
			   			NULL, 0,
8952
						nlc.LAST_LIFE_CYCLE + 1 ) AS NEW_LIFE_CYCLE	   
8953
		  FROM (
8954
 
8955
		  		/* ADDED PATCHES ONLY */
8956
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
8957
				  FROM (
8958
				  		SELECT osc.PROD_ID,
8959
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8960
						  FROM OS_CONTENTS osc,
8961
						  	   OPERATING_SYSTEMS os,
8962
							   NETWORK_NODES nn,
8963
							   BOM_CONTENTS bc,
8964
							   PACKAGE_VERSIONS pv
8965
						 WHERE osc.OS_ID = os.OS_ID
8966
						   AND os.NODE_ID = nn.NODE_ID
8967
						   AND bc.NODE_ID = nn.NODE_ID
8968
						   AND osc.PROD_ID = pv.PV_ID
8969
						   AND NOT pv.IS_PATCH IS NULL
8970
						   AND bc.BOM_ID = nBomId	
8971
				  	   ) newbom,
8972
					   (
8973
					   	SELECT osc.PROD_ID,
8974
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8975
						  FROM OS_CONTENTS osc,
8976
						  	   OPERATING_SYSTEMS os,
8977
							   NETWORK_NODES nn,
8978
							   BOM_CONTENTS bc,
8979
							   PACKAGE_VERSIONS pv
8980
						 WHERE osc.OS_ID = os.OS_ID
8981
						   AND os.NODE_ID = nn.NODE_ID
8982
						   AND bc.NODE_ID = nn.NODE_ID
8983
						   AND osc.PROD_ID = pv.PV_ID
8984
						   AND NOT pv.IS_PATCH IS NULL
8985
						   AND bc.BOM_ID = CompareBomId	
8986
					   ) oldbom
8987
				 WHERE newbom.PK = oldbom.PK (+) 
8988
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
8989
				   AND oldbom.PK IS NULL
8990
				UNION 
8991
		  		/* ADDED PATCHES ONLY TO BASE CONFIGURATION */
8992
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
8993
				  FROM (
8994
				  		SELECT bec.PROD_ID,
8995
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
8996
						  FROM BASE_ENV_CONTENTS bec,
8997
						  	   OS_BASE_ENV obe,
8998
						  	   OPERATING_SYSTEMS os,
8999
							   NETWORK_NODES nn,
9000
							   BOM_CONTENTS bc,
9001
							   PACKAGE_VERSIONS pv
9002
						 WHERE obe.OS_ID = os.OS_ID
9003
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9004
						   AND os.NODE_ID = nn.NODE_ID
9005
						   AND bc.NODE_ID = nn.NODE_ID
9006
						   AND bec.PROD_ID = pv.PV_ID
9007
						   AND NOT pv.IS_PATCH IS NULL
9008
						   AND bc.BOM_ID = nBomId	
9009
				  	   ) newbom,
9010
					   (
9011
					   	SELECT bec.PROD_ID,
9012
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9013
						  FROM BASE_ENV_CONTENTS bec,
9014
						  	   OS_BASE_ENV obe,
9015
						  	   OPERATING_SYSTEMS os,
9016
							   NETWORK_NODES nn,
9017
							   BOM_CONTENTS bc,
9018
							   PACKAGE_VERSIONS pv
9019
						 WHERE obe.OS_ID = os.OS_ID
9020
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9021
						   AND os.NODE_ID = nn.NODE_ID
9022
						   AND bc.NODE_ID = nn.NODE_ID
9023
						   AND bec.PROD_ID = pv.PV_ID
9024
						   AND NOT pv.IS_PATCH IS NULL
9025
						   AND bc.BOM_ID = CompareBomId	
9026
					   ) oldbom
9027
				 WHERE newbom.PK = oldbom.PK (+) 
9028
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
9029
				   AND oldbom.PK IS NULL
9030
				UNION				
9031
 
9032
				/* ADDED PRODUCTS ONLY */
9033
				SELECT DECODE( oldbom.PROD_ID,
9034
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
9035
					   newbom.PROD_ID, newbom.PK
9036
				  FROM (
9037
				  		SELECT osc.PROD_ID,
9038
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9039
							   pv.PKG_ID,
9040
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9041
						  FROM OS_CONTENTS osc,
9042
						  	   OPERATING_SYSTEMS os,
9043
							   NETWORK_NODES nn,
9044
							   BOM_CONTENTS bc,
9045
							   PACKAGE_VERSIONS pv
9046
						 WHERE osc.OS_ID = os.OS_ID
9047
						   AND os.NODE_ID = nn.NODE_ID
9048
						   AND bc.NODE_ID = nn.NODE_ID
9049
						   AND osc.PROD_ID = pv.PV_ID
9050
						   AND pv.IS_PATCH IS NULL
9051
						   AND bc.BOM_ID = nBomId	
9052
				  	   ) newbom,
9053
					   (
9054
					   	SELECT osc.PROD_ID,
9055
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9056
							   pv.PKG_ID,
9057
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9058
						  FROM OS_CONTENTS osc,
9059
						  	   OPERATING_SYSTEMS os,
9060
							   NETWORK_NODES nn,
9061
							   BOM_CONTENTS bc,
9062
							   PACKAGE_VERSIONS pv
9063
						 WHERE osc.OS_ID = os.OS_ID
9064
						   AND os.NODE_ID = nn.NODE_ID
9065
						   AND bc.NODE_ID = nn.NODE_ID
9066
						   AND osc.PROD_ID = pv.PV_ID
9067
						   AND pv.IS_PATCH IS NULL
9068
						   AND bc.BOM_ID = CompareBomId	
9069
					   ) oldbom
9070
				 WHERE newbom.PK = oldbom.PK (+) 
9071
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
9072
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
9073
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
9074
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	
9075
				   AND newbom.PROD_ID NOT IN 
9076
				   (
9077
				   	   SELECT osc.PROD_ID
9078
					   FROM OS_CONTENTS osc,
9079
					  	    OPERATING_SYSTEMS os,
9080
							NETWORK_NODES nn,
9081
							BOM_CONTENTS bc,
9082
							PACKAGE_VERSIONS pv
9083
					  WHERE osc.OS_ID = os.OS_ID
9084
						AND os.NODE_ID = nn.NODE_ID
9085
						AND bc.NODE_ID = nn.NODE_ID
9086
						AND osc.PROD_ID = pv.PV_ID
9087
						AND pv.IS_PATCH IS NULL
9088
						AND bc.BOM_ID = CompareBomId
9089
				  )	 				   
9090
 
9091
				UNION
9092
 
9093
				/* ADDED PRODUCTS ONLY TO BASE CONFIGURATION */
9094
				SELECT DECODE( oldbom.PROD_ID,
9095
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
9096
					   newbom.PROD_ID, newbom.PK
9097
				  FROM (
9098
				  		SELECT bec.PROD_ID,
9099
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9100
							   pv.PKG_ID,
9101
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9102
						  FROM BASE_ENV_CONTENTS bec,
9103
						  	   OS_BASE_ENV obe,
9104
						  	   OPERATING_SYSTEMS os,
9105
							   NETWORK_NODES nn,
9106
							   BOM_CONTENTS bc,
9107
							   PACKAGE_VERSIONS pv
9108
						 WHERE obe.OS_ID = os.OS_ID
9109
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9110
						   AND os.NODE_ID = nn.NODE_ID
9111
						   AND bc.NODE_ID = nn.NODE_ID
9112
						   AND bec.PROD_ID = pv.PV_ID
9113
						   AND pv.IS_PATCH IS NULL
9114
						   AND bc.BOM_ID = nBomId	
9115
				  	   ) newbom,
9116
					   (
9117
					   	SELECT bec.PROD_ID,
9118
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9119
							   pv.PKG_ID,
9120
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9121
						  FROM BASE_ENV_CONTENTS bec,
9122
						  	   OS_BASE_ENV obe,
9123
						  	   OPERATING_SYSTEMS os,
9124
							   NETWORK_NODES nn,
9125
							   BOM_CONTENTS bc,
9126
							   PACKAGE_VERSIONS pv
9127
						 WHERE obe.OS_ID = os.OS_ID
9128
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9129
						   AND os.NODE_ID = nn.NODE_ID
9130
						   AND bc.NODE_ID = nn.NODE_ID
9131
						   AND bec.PROD_ID = pv.PV_ID
9132
						   AND pv.IS_PATCH IS NULL
9133
						   AND bc.BOM_ID = CompareBomId	
9134
					   ) oldbom
9135
				 WHERE newbom.PK = oldbom.PK (+) 
9136
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
9137
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
9138
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
9139
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	   
9140
				UNION
9141
 
9142
				/* REMOVED PRODUCTS ONLY*/    
9143
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
9144
				  FROM (
9145
				  		SELECT osc.PROD_ID,
9146
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9147
							   pv.PKG_ID,
9148
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9149
						  FROM OS_CONTENTS osc,
9150
						  	   OPERATING_SYSTEMS os,
9151
							   NETWORK_NODES nn,
9152
							   BOM_CONTENTS bc,
9153
							   PACKAGE_VERSIONS pv
9154
						 WHERE osc.OS_ID = os.OS_ID
9155
						   AND os.NODE_ID = nn.NODE_ID
9156
						   AND bc.NODE_ID = nn.NODE_ID
9157
						   AND osc.PROD_ID = pv.PV_ID
9158
						   AND pv.IS_PATCH IS NULL
9159
						   AND bc.BOM_ID = nBomId	
9160
				  	   ) newbom,
9161
					   (
9162
					   	SELECT osc.PROD_ID,
9163
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9164
							   pv.PKG_ID,
9165
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9166
						  FROM OS_CONTENTS osc,
9167
						  	   OPERATING_SYSTEMS os,
9168
							   NETWORK_NODES nn,
9169
							   BOM_CONTENTS bc,
9170
							   PACKAGE_VERSIONS pv
9171
						 WHERE osc.OS_ID = os.OS_ID
9172
						   AND os.NODE_ID = nn.NODE_ID
9173
						   AND bc.NODE_ID = nn.NODE_ID
9174
						   AND osc.PROD_ID = pv.PV_ID
9175
						   AND pv.IS_PATCH IS NULL
9176
						   AND bc.BOM_ID = CompareBomId	
9177
					   ) oldbom
9178
				 WHERE newbom.PK (+) = oldbom.PK  
9179
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
9180
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
9181
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
9182
				   AND newbom.PK IS NULL  
9183
				UNION   
9184
				/* REMOVED PATCHES */    
9185
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
9186
				  FROM (
9187
				  		SELECT osc.PROD_ID,
9188
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9189
						  FROM OS_CONTENTS osc,
9190
						  	   OPERATING_SYSTEMS os,
9191
							   NETWORK_NODES nn,
9192
							   BOM_CONTENTS bc,
9193
							   PACKAGE_VERSIONS pv
9194
						 WHERE osc.OS_ID = os.OS_ID
9195
						   AND os.NODE_ID = nn.NODE_ID
9196
						   AND bc.NODE_ID = nn.NODE_ID
9197
						   AND osc.PROD_ID = pv.PV_ID
9198
						   AND NOT pv.IS_PATCH IS NULL
9199
						   AND bc.BOM_ID = nBomId	
9200
				  	   ) newbom,
9201
					   (
9202
					   	SELECT osc.PROD_ID,
9203
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9204
						  FROM OS_CONTENTS osc,
9205
						  	   OPERATING_SYSTEMS os,
9206
							   NETWORK_NODES nn,
9207
							   BOM_CONTENTS bc,
9208
							   PACKAGE_VERSIONS pv
9209
						 WHERE osc.OS_ID = os.OS_ID
9210
						   AND os.NODE_ID = nn.NODE_ID
9211
						   AND bc.NODE_ID = nn.NODE_ID
9212
						   AND osc.PROD_ID = pv.PV_ID
9213
						   AND NOT pv.IS_PATCH IS NULL
9214
						   AND bc.BOM_ID = CompareBomId	
9215
					   ) oldbom
9216
				 WHERE newbom.PK (+) = oldbom.PK  
9217
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
9218
				   AND newbom.PK IS NULL 
9219
				   UNION
9220
				/* REMOVED PRODUCTS ONLY FROM BASE CONFIGURATION*/    
9221
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
9222
				  FROM (
9223
				  		SELECT bec.PROD_ID,
9224
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9225
							   pv.PKG_ID,
9226
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9227
						  FROM BASE_ENV_CONTENTS bec,
9228
						  	   OS_BASE_ENV obe,
9229
						  	   OPERATING_SYSTEMS os,
9230
							   NETWORK_NODES nn,
9231
							   BOM_CONTENTS bc,
9232
							   PACKAGE_VERSIONS pv
9233
						 WHERE obe.OS_ID = os.OS_ID
9234
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9235
						   AND os.NODE_ID = nn.NODE_ID
9236
						   AND bc.NODE_ID = nn.NODE_ID
9237
						   AND bec.PROD_ID = pv.PV_ID
9238
						   AND pv.IS_PATCH IS NULL
9239
						   AND bc.BOM_ID = nBomId	
9240
				  	   ) newbom,
9241
					   (
9242
					   	SELECT bec.PROD_ID,
9243
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
9244
							   pv.PKG_ID,
9245
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
9246
						  FROM BASE_ENV_CONTENTS bec,
9247
						  	   OS_BASE_ENV obe,
9248
						  	   OPERATING_SYSTEMS os,
9249
							   NETWORK_NODES nn,
9250
							   BOM_CONTENTS bc,
9251
							   PACKAGE_VERSIONS pv
9252
						 WHERE obe.OS_ID = os.OS_ID
9253
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID 
9254
						   AND os.NODE_ID = nn.NODE_ID
9255
						   AND bc.NODE_ID = nn.NODE_ID
9256
						   AND bec.PROD_ID = pv.PV_ID
9257
						   AND pv.IS_PATCH IS NULL
9258
						   AND bc.BOM_ID = CompareBomId	
9259
					   ) oldbom
9260
				 WHERE newbom.PK (+) = oldbom.PK  
9261
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
9262
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
9263
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
9264
				   AND newbom.PK IS NULL  
9265
				UNION   
9266
				/* REMOVED PATCHES FROM BASE CONFIGURATION*/    
9267
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
9268
				  FROM (
9269
				  		SELECT bec.PROD_ID,
9270
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9271
						  FROM BASE_ENV_CONTENTS bec,
9272
						  	   OS_BASE_ENV obe,
9273
						  	   OPERATING_SYSTEMS os,
9274
							   NETWORK_NODES nn,
9275
							   BOM_CONTENTS bc,
9276
							   PACKAGE_VERSIONS pv
9277
						 WHERE obe.OS_ID = os.OS_ID
9278
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9279
						   AND os.NODE_ID = nn.NODE_ID
9280
						   AND bc.NODE_ID = nn.NODE_ID
9281
						   AND bec.PROD_ID = pv.PV_ID
9282
						   AND NOT pv.IS_PATCH IS NULL
9283
						   AND bc.BOM_ID = nBomId	
9284
				  	   ) newbom,
9285
					   (
9286
					   	SELECT bec.PROD_ID,
9287
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9288
						  FROM BASE_ENV_CONTENTS bec,
9289
						  	   OS_BASE_ENV obe,
9290
						  	   OPERATING_SYSTEMS os,
9291
							   NETWORK_NODES nn,
9292
							   BOM_CONTENTS bc,
9293
							   PACKAGE_VERSIONS pv
9294
						 WHERE obe.OS_ID = os.OS_ID
9295
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
9296
						   AND os.NODE_ID = nn.NODE_ID
9297
						   AND bc.NODE_ID = nn.NODE_ID
9298
						   AND bec.PROD_ID = pv.PV_ID
9299
						   AND NOT pv.IS_PATCH IS NULL
9300
						   AND bc.BOM_ID = CompareBomId	
9301
					   ) oldbom
9302
				 WHERE newbom.PK (+) = oldbom.PK  
9303
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
9304
				   AND newbom.PK IS NULL				    	
9305
 
9306
		       ) qry,
9307
			   (
9308
 
9309
		  		SELECT nn.NODE_ID,
9310
					   nn.NODE_NAME,
9311
					   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
9312
				  FROM OPERATING_SYSTEMS os,
9313
					   NETWORK_NODES nn,
9314
					   BOM_CONTENTS bc
9315
				 WHERE os.NODE_ID = nn.NODE_ID
9316
				   AND bc.NODE_ID = nn.NODE_ID
9317
				   AND bc.BOM_ID = nBomId
9318
 
9319
		  	   ) nlook,
9320
			   (
9321
 
9322
				SELECT nn.NODE_NAME, 
9323
					   MAX(nn.NODE_LIFE_CYCLE) AS LAST_LIFE_CYCLE
9324
				  FROM BOMS bo,
9325
				  	   BOM_CONTENTS bc,
9326
					   BRANCHES br,
9327
					   NETWORK_NODES nn
9328
				 WHERE bc.BOM_ID = bo.BOM_ID
9329
				   AND bo.BRANCH_ID = br.BRANCH_ID
9330
				   AND bc.NODE_ID = nn.NODE_ID
9331
				   AND br.PROJ_ID = ProjId
9332
		  	     GROUP BY nn.NODE_NAME
9333
 
9334
			   ) nlc
9335
		 WHERE nlook.PK = qry.PK 
9336
		   AND nlc.NODE_NAME = nlook.NODE_NAME;
9337
	recUpdateNode curUpdateNode%ROWTYPE;
9338
 
9339
 
9340
 
9341
BEGIN
9342
	/*--------------- Business Rules Here -------------------*/
9343
	/*-------------------------------------------------------*/
9344
 
9345
	-- Get some BOM details
9346
	SELECT bo.PARENT_BOM_ID, br.PROJ_ID, bo.BOM_VERSION ||'.'|| bo.BOM_LIFECYCLE INTO CompareBomId, ProjId, BomVersion
9347
	  FROM BOMS bo,
9348
	  	   BRANCHES br
9349
	 WHERE bo.BOM_ID = nBomId
9350
	   AND bo.BRANCH_ID = br.BRANCH_ID;
9351
 
9352
 
9353
	-- Update node version
9354
	OPEN curUpdateNode;
9355
	FETCH curUpdateNode INTO recUpdateNode;
9356
 
9357
	WHILE curUpdateNode%FOUND
9358
	LOOP
9359
 
9360
		UPDATE NETWORK_NODES nn SET
9361
			nn.NODE_VERSION = BomVersion,
9362
			nn.NODE_LIFE_CYCLE = recUpdateNode.NEW_LIFE_CYCLE
9363
		 WHERE nn.NODE_ID = recUpdateNode.NODE_ID;
9364
 
9365
		FETCH curUpdateNode INTO recUpdateNode;
9366
	END LOOP;
9367
 
9368
 
9369
	CLOSE curUpdateNode;	
9370
 
9371
END	Update_Nodes_Version;
9372
/*--------------------------------------------------------------------------------------------------*/
9373
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 ) IS
9374
 
9375
rowCount NUMBER;
9376
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
9377
nBomIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
9378
 
9379
BEGIN
9380
	/*--------------- Business Rules Here -------------------*/
9381
	IF (nBomId IS NULL) 
9382
	THEN
9383
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId );
9384
 
9385
	END IF;
9386
 
9387
	-- Check Requirements
9388
	pk_Requirements.Destroy_Bom ( nBomId );
9389
 
9390
	/*-------------------------------------------------------*/
9391
 
9392
 
9393
 
9394
	-- Load Collector
9395
	nBomIdCollector := IN_LIST_NUMBER( nBomId );
9396
 
9397
 
9398
	-- Destroy BASE_ENV
9399
	nIdCollector := NULL;
9400
	SELECT CAST ( MULTISET ( SELECT be.BASE_ENV_ID
9401
	  	   		  		   	   FROM BASE_ENV be
9402
	 						  WHERE be.BOM_ID IN   ( 
9403
								  	  		  	      SELECT * 
9404
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9405
												 	) 
9406
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
9407
 
9408
	Destroy_BaseEnv ( nIdCollector );
9409
 
9410
 
9411
 
9412
	-- Destroy NETWORK_NODES
9413
	nIdCollector := NULL;
9414
	SELECT CAST ( MULTISET ( SELECT bc.NODE_ID
9415
	  	   		  		   	   FROM BOM_CONTENTS bc
9416
	 						  WHERE bc.BOM_ID IN   ( 
9417
								  	  		  	      SELECT * 
9418
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9419
												 	) 
9420
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
9421
 
9422
	pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
9423
 
9424
 
9425
 
9426
	-- Destroy HARDWARE
9427
	nIdCollector := NULL;
9428
	SELECT CAST ( MULTISET ( SELECT hr.HARDWARE_NAME_ID
9429
	  	   		  		   	   FROM HARDWARE hr
9430
	 						  WHERE hr.BOM_ID IN   ( 
9431
								  	  		  	      SELECT * 
9432
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9433
												 	)
9434
							) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
9435
 
9436
	Destroy_Hardware ( nIdCollector );
9437
 
9438
 
9439
 
9440
	-- Destroy BOM_STATE
9441
	DELETE 
9442
	  FROM BOM_STATE bs
9443
	 WHERE bs.BOM_ID IN ( 
9444
	  	  		  	      SELECT * 
9445
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9446
					 	);
9447
 
9448
 
9449
	-- Destroy BOM_TRAIL
9450
	DELETE 
9451
	  FROM BOM_TRAIL bt
9452
	 WHERE bt.BOM_ID IN ( 
9453
	  	  		  	      SELECT * 
9454
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9455
					 	); 
9456
 
9457
 
9458
	---- Finnaly Destroy BOM ----
9459
	DELETE 
9460
	  FROM BOMS bo
9461
	 WHERE bo.BOM_ID IN ( 
9462
	  	  		  	      SELECT * 
9463
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9464
					 	);
9465
 
9466
 
9467
 
9468
END	Destroy_Bom;
9469
/*--------------------------------------------------------------------------------------------------*/
9470
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
9471
 
9472
 
9473
BEGIN
9474
	/*--------------- Business Rules Here -------------------*/
9475
	/*-------------------------------------------------------*/
9476
 
9477
	-- Destroy BASE_ENV_CONTENTS
9478
	DELETE
9479
	  FROM BASE_ENV_CONTENTS bec
9480
	 WHERE bec.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
9481
 
9482
	-- Destroy OS_BASE_ENV
9483
	DELETE
9484
	  FROM OS_BASE_ENV obe
9485
	 WHERE obe.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
9486
 
9487
	 -- Destroy BASE_ENV
9488
	DELETE
9489
	  FROM BASE_ENV be
9490
	 WHERE be.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
9491
 
9492
 
9493
END	Destroy_BaseEnv;
9494
/*--------------------------------------------------------------------------------------------------*/
9495
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
9496
 
9497
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
9498
 
9499
BEGIN
9500
	/*--------------- Business Rules Here -------------------*/
9501
	/*-------------------------------------------------------*/
9502
 
9503
    -- Destroy NETWORK_NODES
9504
    nIdCollector := NULL;
9505
    SELECT CAST ( MULTISET ( SELECT hn.NODE_ID
9506
	  	   		  		   	   FROM HARDWARE_NODE hn
9507
	 						  WHERE hn.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) ) 
9508
						   ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
9509
 
9510
    pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
9511
 
9512
 
9513
	-- Finnaly Destroy HARDWARE
9514
	DELETE
9515
	  FROM HARDWARE hd
9516
	 WHERE hd.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
9517
 
9518
END	Destroy_Hardware;
9519
/*--------------------------------------------------------------------------------------------------*/
9520
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
9521
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
9522
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
9523
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
9524
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
9525
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE ) IS
9526
 
9527
IsNotHead NUMBER;
9528
FromBranch NUMBER;
9529
LastRootVersion NUMBER;
9530
LastVersion BOMS.BOM_VERSION%TYPE;
9531
 
9532
CURSOR curBoms IS
9533
	SELECT Max ( CAST ( bo.BOM_VERSION AS NUMBER  ) ) AS LAST_VERSION
9534
		  FROM BOMS bo,
9535
		  	   BRANCHES br
9536
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
9537
		   AND br.PROJ_ID IN ( SELECT br.PROJ_ID  FROM BRANCHES br  WHERE br.BRANCH_ID = nToBranchId )	
9538
		   AND bo.BOM_NAME_ID = nBomNameId;
9539
recBoms curBoms%ROWTYPE;
9540
 
9541
 
9542
BEGIN
9543
 
9544
	/*--------------- Business Rules Here -------------------*/
9545
	/*-------------------------------------------------------*/
9546
	-- Get Last Root Version
9547
 
9548
	OPEN curBoms;
9549
	FETCH curBoms INTO recBoms;	
9550
	LastRootVersion := recBoms.LAST_VERSION;
9551
	CLOSE curBoms;
9552
 
9553
 
9554
 
9555
 
9556
 
9557
	IF nFromBomId IS NULL THEN
9558
		/* Blank BOM Required */
9559
 
9560
		-- Get Next Available Version
9561
		sNextVersion := '1';
9562
		sNextLifeCycle := '0';
9563
		IF LastRootVersion IS NOT NULL THEN
9564
			sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
9565
		END IF;
9566
 
9567
 
9568
 
9569
	ELSE
9570
		/* Create Bom From ... */
9571
 
9572
		-- Check if BOM is comming from different Iteration
9573
		SELECT bo.BRANCH_ID INTO FromBranch
9574
		  FROM BOMS bo
9575
		 WHERE bo.BOM_ID = nFromBomId; 
9576
 
9577
 
9578
 
9579
		IF FromBranch = nToBranchId THEN
9580
			/* Bom is comming from same Iteration */
9581
			/* i.e. Continue on same version stream. */
9582
 
9583
			-- Set parent_id
9584
			nParentBomId := nFromBomId;
9585
 
9586
 
9587
			-- Get Last Version 
9588
			SELECT bo.BOM_VERSION INTO LastVersion
9589
			  FROM BOMS bo
9590
			 WHERE bo.BOM_ID = nFromBomId;
9591
 
9592
 
9593
			-- Check if Bom is Head (i.e. Last on its branch )
9594
			SELECT COUNT(*) INTO IsNotHead
9595
			  FROM BOMS bo,
9596
			  	   BRANCHES br
9597
			 WHERE bo.BRANCH_ID = br.BRANCH_ID
9598
			   AND br.PROJ_ID IN ( SELECT br.PROJ_ID FROM BRANCHES br WHERE br.BRANCH_ID = FromBranch )
9599
			   AND bo.PARENT_BOM_ID = nFromBomId
9600
			   AND bo.BOM_VERSION = LastVersion
9601
			   AND bo.BOM_ID != bo.PARENT_BOM_ID;
9602
 
9603
 
9604
			IF IsNotHead = 0 THEN
9605
				/* Bom IS Head (i.e. Last on its branch ) */
9606
 
9607
				-- Get Bom Version and LifeCycle
9608
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
9609
				  FROM BOMS bo
9610
				 WHERE bo.BOM_ID = nFromBomId;
9611
 
9612
				-- Increase Lifecycle
9613
				sNextLifeCycle := CAST (  ( CAST( sNextLifeCycle AS NUMBER ) + 1 )  AS VARCHAR2 );
9614
 
9615
 
9616
			ELSE
9617
				/* Bom IS NOT Head */
9618
 
9619
				-- Get Bom Version and LifeCycle
9620
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
9621
				  FROM BOMS bo
9622
				 WHERE bo.BOM_ID = nFromBomId;
9623
 
9624
				-- Branch Bom Version 
9625
				sNextVersion := sNextVersion ||'.'|| sNextLifeCycle;
9626
 
9627
				-- Reset Lifecycle to 1
9628
				sNextLifeCycle := '1';
9629
 
9630
			END IF;	
9631
 
9632
 
9633
		ELSE
9634
			/* BOM is comming from Different Iteration */
9635
			/* i.e. Start new version stream. */
9636
 
9637
			-- Get Next Available Version
9638
			sNextVersion := '1';
9639
			sNextLifeCycle := '0';
9640
			IF LastRootVersion IS NOT NULL THEN
9641
				sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
9642
			END IF;
9643
 
9644
		END IF;
9645
 
9646
 
9647
	END IF;
9648
 
9649
 
9650
END	Get_Next_Version;
9651
/*--------------------------------------------------------------------------------------------------*/
9652
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
9653
					   nUserId IN BOM_STATE.USER_ID%TYPE,
9654
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
9655
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL ) IS
9656
 
9657
rowCount NUMBER;	
9658
IsOfficial BOMS.IS_READONLY%TYPE;					 
9659
StateId BOM_STATE.STATE_ID%TYPE;
9660
StateName STATES.STATE_NAME%TYPE;
9661
 
9662
BEGIN
9663
	/*--------------- Business Rules Here -------------------*/
9664
	-- Check if already released
9665
	SELECT Count(*) INTO rowCount
9666
	  FROM BOM_STATE bs
9667
	 WHERE bs.BOM_ID = nBomId
9668
	   AND bs.STATE_ID = nToState;
9669
 
9670
	IF rowCount > 0 THEN
9671
	   RAISE_APPLICATION_ERROR (-20000, 'This BOM is already release' );
9672
	END IF;
9673
 
9674
 
9675
	-- Check if Bom is official
9676
	SELECT bo.IS_READONLY INTO IsOfficial
9677
	  FROM BOMS bo
9678
	 WHERE bo.BOM_ID = nBomId;
9679
 
9680
	IF (IsOfficial != 'Y') AND (nToState IS NOT NULL) THEN
9681
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first' );
9682
	END IF;
9683
	/*-------------------------------------------------------*/
9684
 
9685
 
9686
	-- Get State --
9687
	StateId := nToState;
9688
	IF StateId IS NULL THEN
9689
		-- If state_id is null it is considered as state_type_enum = 'BOM Creator'
9690
		SELECT st.STATE_ID INTO StateId
9691
		  FROM BOMS bo,
9692
		  	   BRANCHES br,
9693
			   DM_PROJECTS proj,
9694
			   STATES st
9695
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
9696
		   AND br.PROJ_ID = proj.PROJ_ID
9697
		   AND st.PROJ_ID = proj.PROJ_ID
9698
		   AND bo.BOM_ID = nBomId
9699
		   AND st.STATE_TYPE_ENUM = GET_SYSTEM_VALUE('enumSTATE_TYPE_CREATOR');	
9700
	END IF;
9701
 
9702
 
9703
	-- Add Bom to State --
9704
	INSERT INTO BOM_STATE (BOM_ID, STATE_ID, DATE_STAMP, IS_DISPLAYED, USER_ID )
9705
	VALUES( nBomId,
9706
			StateId,
9707
			GET_DATE(),
9708
			'Y',
9709
			nUserId );
9710
 
9711
 
9712
 
9713
	-- Auto-Hide Bom
9714
	pk_State.Auto_Hide ( StateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_RELEASE_TO') );
9715
 
9716
 
9717
	/* Log BOM_TRAIL */
9718
	-- Get State Name --
9719
	SELECT st.STATE_NAME INTO StateName
9720
	  FROM STATES st
9721
	 WHERE st.STATE_ID = StateId;
9722
 
9723
	-- Log Action 
9724
	pk_Bom.Log_Bom_Trail ( nBomId, 'RELEASED TO: '|| StateName, nUserId, sComments );
9725
 
9726
 
9727
END	Release_To;
9728
/*--------------------------------------------------------------------------------------------------*/
9729
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
9730
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
9731
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
9732
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE ) IS
9733
 
9734
IsRejected REJECTION_TRAIL.IS_REJECTED%TYPE;
9735
 
9736
BEGIN
9737
	/*--------------- Business Rules Here -------------------*/
9738
	IF (nBomId IS NULL)
9739
	THEN
9740
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId  );
9741
	END IF;
9742
	/*-------------------------------------------------------*/
9743
 
9744
	IF nRejectSeq IS NULL THEN
9745
		/* CREATE New Note */
9746
 
9747
		-- Get last IsRejected state
9748
		SELECT rt.IS_REJECTED INTO IsRejected
9749
		  FROM REJECTION_TRAIL rt
9750
		 WHERE rt.ENTITY_ID = nBomId
9751
		   AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
9752
		   AND rt.REJECT_SEQ =
9753
		   (
9754
		   	SELECT MAX(REJECT_SEQ) FROM
9755
			REJECTION_TRAIL rt
9756
		 	WHERE rt.ENTITY_ID = nBomId
9757
		   	AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
9758
 
9759
		   );
9760
 
9761
 
9762
		/* Log Rejection Trail */
9763
		pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, IsRejected, nUserId, sComments );
9764
 
9765
	ELSE
9766
		/* EDIT Note */
9767
		UPDATE REJECTION_TRAIL rt SET
9768
			rt.COMMENTS = sComments,
9769
			rt.USER_ID = nUserId,
9770
			rt.DATE_TIME_STAMP = GET_DATETIME()
9771
		WHERE rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
9772
		  AND rt.ENTITY_ID = nBomId
9773
		  AND rt.REJECT_SEQ = nRejectSeq;
9774
 
9775
 
9776
	END IF;
9777
 
9778
 
9779
END	Accept_Reject_Comments;
9780
/*--------------------------------------------------------------------------------------------------*/
9781
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
9782
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
9783
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
9784
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  ) IS
9785
 
9786
 
9787
BEGIN
9788
	/*--------------- Business Rules Here -------------------*/
9789
	IF (nBomId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
9790
	THEN
9791
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId ||', sAction='|| sAction ||', nUserId='|| nUserId );
9792
	END IF;
9793
	/*-------------------------------------------------------*/
9794
 
9795
	INSERT INTO BOM_TRAIL ( BOM_ID, TRAIL_ACTION, TRAIL_COMMENTS, USER_ID, DATE_TIME_STAMP )
9796
	VALUES ( nBomId, sAction, sComments, nUserId, GET_DATETIME() );	
9797
 
9798
END	Log_Bom_Trail;
9799
/*--------------------------------------------------------------------------------------------------*/
9800
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
9801
						  sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
9802
						  nUserId IN NODE_TRAIL.USER_ID%TYPE  ) IS
9803
 
9804
 
9805
BEGIN
9806
	/*--------------- Business Rules Here -------------------*/
9807
	IF (nNodeId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
9808
	THEN
9809
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId= '|| nNodeId ||', sAction='|| sAction ||', nUserId='|| nUserId );
9810
	END IF;
9811
	/*-------------------------------------------------------*/
9812
 
9813
	INSERT INTO NODE_TRAIL ( NODE_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
9814
	VALUES ( nNodeId, sAction, nUserId, GET_DATETIME() );	
9815
 
9816
END	Log_Node_Trail;
9817
/*--------------------------------------------------------------------------------------------------*/
9818
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
9819
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
9820
						  nUserId IN OS_TRAIL.USER_ID%TYPE  ) IS
9821
 
9822
 
9823
BEGIN
9824
	/*--------------- Business Rules Here -------------------*/
9825
	IF (nOsId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
9826
	THEN
9827
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nOsId ||', sAction='|| sAction ||', nUserId='|| nUserId );
9828
	END IF;
9829
	/*-------------------------------------------------------*/
9830
 
9831
	INSERT INTO OS_TRAIL ( OS_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
9832
	VALUES ( nOsId, sAction, nUserId, GET_DATETIME() );	
9833
 
9834
END	Log_Os_Trail;
9835
/*--------------------------------------------------------------------------------------------------*/
9836
 
9837
END pk_Bom;
9838
/
9839
 
9840
CREATE OR REPLACE PACKAGE BODY pk_Operating_System
9841
IS
9842
/* ---------------------------------------------------------------------------
9843
    Modified: Rupesh Solanki
9844
	Date: 20/03/2006
9845
   --------------------------------------------------------------------------- */
9846
 
9847
/*--------------------------------------------------------------------------------------------------*/
9848
PROCEDURE Add_Os ( sOsName IN OPERATING_SYSTEMS.OS_NAME%TYPE,
9849
		  		   sOsComments IN OPERATING_SYSTEMS.OS_COMMENTS%TYPE,
9850
				   sNodeSpecFile IN OPERATING_SYSTEMS.NODE_SPEC_FILE%TYPE,
9851
 				   sNotXML IN OPERATING_SYSTEMS.NOT_XML%TYPE,
9852
				   nNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
9853
				   nBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
9854
				   nBosId IN BASE_ENV.BOS_ID%TYPE DEFAULT NULL,
9855
				   nUserId IN NUMBER ) IS
9856
 
9857
OsID NUMBER;
9858
BosId NUMBER;
9859
BaseEnvId NUMBER;
9860
BomId NUMBER;
9861
 
9862
CURSOR curOs IS -- Check Node Name Duplicates
9863
		SELECT os.OS_ID
9864
		  FROM OPERATING_SYSTEMS os
9865
		 WHERE os.NODE_ID = nNodeId
9866
		   AND UPPER(os.OS_NAME) = UPPER(sOsName);
9867
recOs curOs%ROWTYPE;
9868
 
9869
DUPLICATE_OS_NAME EXCEPTION;
9870
 
9871
BEGIN
9872
	/*--------------- Business Rules Here -------------------*/
9873
	-- Check for duplicate names
9874
	OPEN curOs;
9875
    FETCH curOs INTO recOs;
9876
 
9877
    IF curOs%FOUND
9878
    THEN
9879
		RAISE DUPLICATE_OS_NAME;
9880
	END IF;
9881
 
9882
	CLOSE curOs;
9883
	/*-------------------------------------------------------*/
9884
 
9885
	-- Get os_id
9886
	SELECT SEQ_OS_ID.NEXTVAL INTO OsID FROM DUAL;
9887
 
9888
	-- Insert new OS
9889
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, NODE_SPEC_FILE, NOT_XML ) 
9890
	VALUES ( OsID, sOsName, nNodeId, sOsComments, sNodeSpecFile, sNotXML  );
9891
 
9892
 
9893
 
9894
	/* Set up Base Configuration */
9895
	IF nBaseEnvName IS NOT NULL THEN
9896
 
9897
		-- Get bom_id
9898
		SELECT bc.BOM_ID INTO BomId
9899
		  FROM BOM_CONTENTS bc
9900
		 WHERE bc.NODE_ID = nNodeId;
9901
 
9902
 
9903
		-- Set bos _id to default
9904
		BosId := 5;		-- This is Generic OS in BOS_TYPES table
9905
		IF nBosId IS NOT NULL THEN
9906
			BosId := nBosId;
9907
		END IF;
9908
 
9909
 
9910
		-- Get base_env_id
9911
		BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
9912
 
9913
 
9914
		-- Create Base Env if Required
9915
		IF BaseEnvId IS NULL THEN
9916
 
9917
			pk_Base_Env.Add_Base_Env ( nBaseEnvName, BosId, BomId, OsID, nUserId );
9918
 
9919
			BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
9920
 
9921
		END IF;
9922
 
9923
		-- Finally assign this  base env to OS
9924
		INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID )
9925
		VALUES ( OsID, BaseEnvId );
9926
 
9927
	END IF;
9928
 
9929
 
9930
	/* Log BOM_TRAIL */
9931
	pk_Bom.Log_Node_Trail ( nNodeId, 'Added Operating System: '||sOsName, nUserId );	
9932
 
9933
 
9934
	EXCEPTION
9935
    WHEN DUPLICATE_OS_NAME
9936
	THEN		
9937
		RAISE_APPLICATION_ERROR (-20000, 'OS Name "'|| sOsName ||'" is Already Used in this Network Node.');
9938
 
9939
END	Add_Os;
9940
/*--------------------------------------------------------------------------------------------------*/
9941
PROCEDURE Update_Os ( nOsId IN OPERATING_SYSTEMS.OS_ID%TYPE,
9942
					  sOsName IN OPERATING_SYSTEMS.OS_NAME%TYPE,
9943
		  		   	  sOsComments IN OPERATING_SYSTEMS.OS_COMMENTS%TYPE,
9944
				  	  nBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
9945
					  sNodeSpecFile IN OPERATING_SYSTEMS.NODE_SPEC_FILE%TYPE,
9946
					  sNotXML IN OPERATING_SYSTEMS.NOT_XML%TYPE,
9947
					  nUserId IN NUMBER  ) IS
9948
 
9949
BomId NUMBER;
9950
BosId NUMBER;
9951
BaseEnvId NUMBER;
9952
NodeId NUMBER;
9953
 
9954
CURSOR curOs IS
9955
		SELECT os.OS_ID
9956
		  FROM OPERATING_SYSTEMS os
9957
		 WHERE os.NODE_ID = NodeId
9958
		   AND UPPER(os.OS_NAME) = UPPER(sOsName)
9959
		   AND os.OS_ID != nOsId;
9960
recOs curOs%ROWTYPE;
9961
 
9962
DUPLICATE_OS_NAME EXCEPTION;
9963
 
9964
BEGIN
9965
	/*--------------- Business Rules Here -------------------*/
9966
	-- Check for parameters
9967
	IF (nOsId IS NULL) 
9968
	THEN
9969
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId='|| nOsId   );
9970
 
9971
	END IF;
9972
 
9973
 
9974
	-- Get node_id
9975
	SELECT os.NODE_ID INTO NodeId
9976
	  FROM OPERATING_SYSTEMS os
9977
	 WHERE os.OS_ID = nOsId;
9978
 
9979
 
9980
	-- Check for duplicate names
9981
	OPEN curOs;
9982
    FETCH curOs INTO recOs;
9983
 
9984
    IF curOs%FOUND
9985
    THEN
9986
		RAISE DUPLICATE_OS_NAME;
9987
	END IF;
9988
 
9989
	CLOSE curOs;
9990
	/*-------------------------------------------------------*/
9991
 
9992
	-- Delete current Base Env
9993
	DELETE
9994
	  FROM OS_BASE_ENV obe
9995
	 WHERE obe.OS_ID = nOsId;
9996
 
9997
 
9998
	/* Set up Base Configuration */
9999
	IF nBaseEnvName IS NOT NULL THEN
10000
 
10001
		-- Get bom_id
10002
		SELECT bc.BOM_ID INTO BomId
10003
		  FROM BOM_CONTENTS bc
10004
		 WHERE bc.NODE_ID = NodeId;
10005
 
10006
 
10007
		-- Get base_env_id
10008
		BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
10009
 
10010
 
10011
		-- Set bos _id to default
10012
		BosId := 5;		-- This is Generic OS in BOS_TYPES table
10013
 
10014
 
10015
		-- Create Base Env if Required
10016
		IF BaseEnvId IS NULL THEN
10017
 
10018
			pk_Base_Env.Add_Base_Env ( nBaseEnvName, BosId, BomId, nOsId, nUserId );
10019
 
10020
			BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
10021
 
10022
		ELSE
10023
			-- Get bos_id
10024
			SELECT be.BOS_ID INTO BosId
10025
			  FROM BASE_ENV be
10026
			 WHERE be.BASE_ENV_ID = BaseEnvId;
10027
 
10028
		END IF;
10029
 
10030
 
10031
		-- Finally assign this  base env to OS
10032
		INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID )
10033
		VALUES ( nOsId, BaseEnvId );
10034
 
10035
	END IF;
10036
 
10037
 
10038
 
10039
	-- Update Os Details
10040
	UPDATE OPERATING_SYSTEMS os SET
10041
		os.OS_NAME = sOsName,
10042
		os.OS_COMMENTS = sOsComments,
10043
		os.NODE_SPEC_FILE = sNodeSpecFile,
10044
		os.NOT_XML = sNotXML
10045
	 WHERE os.OS_ID = nOsId;
10046
 
10047
	/* Log BOM_TRAIL */
10048
	pk_Bom.Log_Node_Trail ( NodeId, 'Updated Operating System: '||sOsName, nUserId );		 
10049
 
10050
 
10051
	EXCEPTION
10052
    WHEN DUPLICATE_OS_NAME
10053
	THEN		
10054
		RAISE_APPLICATION_ERROR (-20000, 'OS Name "'|| sOsName ||'" is Already Used in this Network Node.');
10055
 
10056
END	Update_Os;
10057
/*--------------------------------------------------------------------------------------------------*/
10058
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
10059
		  				   	 sProdVersion IN VARCHAR2,
10060
							 nOsId IN OS_CONTENTS.OS_ID%TYPE,
10061
							 nUserId IN NUMBER,
10062
							 sComments IN VARCHAR2 DEFAULT NULL ) IS
10063
 
10064
ProdId PACKAGE_VERSIONS.PV_ID%TYPE;
10065
ProdName PACKAGES.PKG_NAME%TYPE;
10066
 
10067
CURSOR prod_cur IS
10068
	SELECT osc.PROD_ID
10069
	  FROM OS_CONTENTS osc
10070
	 WHERE osc.PROD_ID = ProdId
10071
	   AND osc.OS_ID = nOsId;
10072
prod_rec prod_cur%ROWTYPE;
10073
 
10074
BEGIN
10075
	/*--------------- Business Rules Here -------------------*/                             
10076
	IF (NOT nPkgId IS NULL) AND (sProdVersion IS NULL) AND (NOT nOsId IS NULL) AND (NOT nUserId IS NULL) THEN
10077
	   RAISE_APPLICATION_ERROR (-20000, 'Please provide Product Version.' );
10078
 
10079
	ELSIF (nPkgId IS NULL) OR (sProdVersion IS NULL) OR (nOsId IS NULL) OR (nUserId IS NULL) THEN
10080
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nPkgId= '|| nPkgId ||', sProdVersion='|| sProdVersion ||', nOsId='|| nOsId ||', nUserId='|| nUserId );
10081
 
10082
	END IF;
10083
	/*-------------------------------------------------------*/
10084
 
10085
	-- Get Product Name --
10086
	SELECT PKG_NAME INTO ProdName FROM PACKAGES WHERE PKG_ID = nPkgId;
10087
 
10088
 
10089
	-- Create Product Version in Release Manager if Required, and Get Prod_id --
10090
	Seed_Package_Names_Versions ( ProdName, sProdVersion, nUserId, ProdId );
10091
 
10092
 
10093
	-- Add Product To OS --
10094
	OPEN prod_cur;
10095
	FETCH prod_cur INTO prod_rec;
10096
 
10097
	IF prod_cur%NOTFOUND THEN
10098
	   pk_Product.Add_Product ( ProdId, nOsId, nUserId );
10099
 
10100
	   -- Add comments if required
10101
	   IF (NOT sComments IS NULL) THEN
10102
	   		UPDATE OS_CONTENTS osc SET
10103
				osc.PRODUCT_COMMENTS = sComments
10104
			 WHERE osc.OS_ID = nOsId
10105
			   AND osc.PROD_ID = ProdId;
10106
 
10107
	   END IF;
10108
 
10109
 
10110
	END IF;
10111
 
10112
	CLOSE prod_cur;
10113
 
10114
 
10115
END	Add_Product_Wrap;
10116
/*--------------------------------------------------------------------------------------------------*/
10117
PROCEDURE Set_Base_Conf ( nOsId IN OS_BASE_ENV.OS_ID%TYPE,
10118
		  				  nBaseEnvId IN OS_BASE_ENV.BASE_ENV_ID%TYPE ) IS
10119
 
10120
BEGIN
10121
	/*--------------- Business Rules Here -------------------*/
10122
	/*-------------------------------------------------------*/
10123
 
10124
	-- Delete current Base Conf setting
10125
	DELETE FROM OS_BASE_ENV
10126
	WHERE OS_ID = nOsId;
10127
 
10128
	-- Set new Base Conf	
10129
	IF NOT nBaseEnvId IS NULL
10130
	THEN
10131
		INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID )
10132
		VALUES ( nOsId, nBaseEnvId );
10133
	END IF;
10134
 
10135
END	Set_Base_Conf;
10136
/*--------------------------------------------------------------------------------------------------*/
10137
PROCEDURE Shift_Product_SeqNum ( nProdId IN OS_CONTENTS.PROD_ID%TYPE,
10138
		  				 	     nOsId IN OS_CONTENTS.OS_ID%TYPE,
10139
						 		 nToSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE ) IS
10140
 
10141
currSeqNum NUMBER;
10142
FromSeqNum NUMBER;
10143
 
10144
BEGIN
10145
	 -- Get Current seq_num
10146
	 SELECT osc.SEQ_NUM INTO currSeqNum
10147
	   FROM OS_CONTENTS osc
10148
	  WHERE osc.OS_ID = nOsId
10149
	    AND osc.PROD_ID = nProdId;
10150
 
10151
 
10152
	 IF currSeqNum > nToSeqNum
10153
	 THEN
10154
 
10155
		FromSeqNum := nToSeqNum;
10156
 
10157
			-- Shift others Up
10158
		UPDATE OS_CONTENTS osc SET
10159
			   osc.SEQ_NUM = osc.SEQ_NUM + 1
10160
		 WHERE osc.OS_ID = nOsId 
10161
		   AND osc.PROD_ID != nProdId
10162
		   AND osc.SEQ_NUM BETWEEN  FromSeqNum  AND  currSeqNum - 1;
10163
 
10164
 
10165
	 ELSIF currSeqNum < nToSeqNum
10166
	 THEN
10167
 
10168
		FromSeqNum := currSeqNum + 1;  
10169
 
10170
		 -- Shift others Down
10171
		UPDATE OS_CONTENTS osc SET
10172
		   	   osc.SEQ_NUM = osc.SEQ_NUM - 1
10173
		 WHERE osc.OS_ID = nOsId 
10174
		   AND osc.PROD_ID != nProdId
10175
		   AND osc.SEQ_NUM BETWEEN  FromSeqNum  AND  nToSeqNum;
10176
 
10177
	 END IF;
10178
 
10179
 
10180
	 -- Move Product to new seq_num
10181
	 UPDATE OS_CONTENTS osc SET
10182
		    osc.SEQ_NUM = nToSeqNum
10183
	  WHERE osc.OS_ID = nOsId 
10184
	    AND osc.PROD_ID = nProdId;
10185
 
10186
 
10187
 
10188
END Shift_Product_SeqNum;
10189
/*--------------------------------------------------------------------------------------------------*/
10190
PROCEDURE Shift_Bulk_Products_SeqNum ( sProdIdList IN VARCHAR2,
10191
		  							   nOsId IN OS_CONTENTS.OS_ID%TYPE,
10192
									   cDirection IN CHAR ) IS
10193
 
10194
MinSeqNum	  NUMBER := 1;									   
10195
FirstSeqNum   NUMBER;
10196
LastSeqNum 	  NUMBER;
10197
MaxSeqNum	  NUMBER;
10198
 
10199
 
10200
CURSOR osc_down_cur IS
10201
	SELECT osc.prod_id, osc.seq_num
10202
	  FROM OS_CONTENTS osc
10203
	 WHERE osc.OS_ID = nOsId
10204
	   AND osc.PROD_ID IN (
10205
						   SELECT *
10206
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10207
	   	   			   	   )
10208
	ORDER BY osc.seq_num ASC;
10209
osc_down_rec osc_down_cur%ROWTYPE;	
10210
 
10211
CURSOR osc_up_cur IS
10212
	SELECT osc.prod_id, osc.seq_num
10213
	  FROM OS_CONTENTS osc
10214
	 WHERE osc.OS_ID = nOsId
10215
	   AND osc.PROD_ID IN (
10216
						   SELECT *
10217
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10218
	   	   			   	   )
10219
	ORDER BY osc.seq_num DESC;
10220
osc_up_rec osc_up_cur%ROWTYPE;
10221
 
10222
 
10223
BEGIN
10224
	/*--------------- Business Rules Here -------------------*/
10225
	IF sProdIdList IS NULL
10226
	THEN
10227
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
10228
 
10229
	ELSIF (nOsId IS NULL) OR (cDirection IS NULL)
10230
	THEN
10231
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nOsId ||', cDirection='|| cDirection );
10232
 
10233
	END IF;
10234
	/*-------------------------------------------------------*/
10235
 
10236
 
10237
 
10238
	-- Get First seq_num
10239
	SELECT MIN( osc.SEQ_NUM ) INTO FirstSeqNum
10240
	  FROM OS_CONTENTS osc
10241
	 WHERE osc.OS_ID = nOsId
10242
	   AND osc.PROD_ID IN (
10243
						   SELECT *
10244
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10245
	   	   			   	   );
10246
 
10247
	-- Get Last seq_num
10248
	SELECT MAX( osc.SEQ_NUM ) INTO LastSeqNum
10249
	  FROM OS_CONTENTS osc
10250
	 WHERE osc.OS_ID = nOsId
10251
	   AND osc.PROD_ID IN (
10252
						   SELECT *
10253
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10254
	   	   			   	   );
10255
 
10256
    -- Get Max seq_num
10257
	SELECT MAX( osc.SEQ_NUM ) INTO MaxSeqNum
10258
	  FROM OS_CONTENTS osc
10259
	 WHERE osc.OS_ID = nOsId;
10260
 
10261
 
10262
 
10263
    IF cDirection = '+'
10264
	THEN
10265
		-- Shift UP
10266
		IF LastSeqNum < MaxSeqNum
10267
		THEN
10268
			/* Can only shift up if maxseqnum is not reached */
10269
			OPEN osc_up_cur;
10270
			FETCH osc_up_cur INTO osc_up_rec;
10271
 
10272
			WHILE osc_up_cur%FOUND
10273
			LOOP
10274
				Shift_Product_SeqNum ( osc_up_rec.PROD_ID, nOsId, osc_up_rec.SEQ_NUM + 1  );
10275
 
10276
				FETCH osc_up_cur INTO osc_up_rec;
10277
			END LOOP;
10278
 
10279
 
10280
			CLOSE osc_up_cur;
10281
 
10282
 
10283
		END IF;
10284
 
10285
 
10286
 
10287
 
10288
	ELSIF cDirection = '-'
10289
	THEN
10290
		-- Shift DOWN
10291
		IF FirstSeqNum > MinSeqNum
10292
		THEN
10293
			/* Can only shift down if minseqnum is not reached */
10294
			OPEN osc_down_cur;
10295
			FETCH osc_down_cur INTO osc_down_rec;
10296
 
10297
			WHILE osc_down_cur%FOUND
10298
			LOOP
10299
				Shift_Product_SeqNum ( osc_down_rec.PROD_ID, nOsId, osc_down_rec.SEQ_NUM - 1  );
10300
 
10301
				FETCH osc_down_cur INTO osc_down_rec;
10302
			END LOOP;
10303
 
10304
			CLOSE osc_down_cur;
10305
 
10306
 
10307
		END IF;
10308
 
10309
 
10310
	END IF;
10311
 
10312
 
10313
END Shift_Bulk_Products_SeqNum;
10314
/*--------------------------------------------------------------------------------------------------*/
10315
PROCEDURE Destroy_Os ( nOsIdCollection IN DEPMGR_NUMBER_TAB_t, nUserId IN NUMBER ) IS
10316
 
10317
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10318
NodeId NUMBER;
10319
OsName VARCHAR2(4000);
10320
 
10321
BEGIN
10322
	/*--------------- Business Rules Here -------------------*/
10323
	/*-------------------------------------------------------*/
10324
 
10325
	IF (nOsIdCollection.COUNT > 0) THEN   
10326
			--Log Action Trail
10327
		FOR i IN 1..nOsIdCollection.COUNT
10328
		LOOP
10329
			-- Get node_id
10330
			SELECT os.NODE_ID INTO NodeId
10331
	  		FROM OPERATING_SYSTEMS os
10332
			WHERE os.OS_ID = nOsIdCollection(i);	
10333
 
10334
			--Get os_name
10335
			SELECT os.OS_NAME INTO OsName
10336
	  		FROM OPERATING_SYSTEMS os
10337
			WHERE os.OS_ID = nOsIdCollection(i);	
10338
 
10339
			/* Log BOM_TRAIL */
10340
			pk_Bom.Log_Node_Trail ( NodeId, 'Deleted Operating System: '||OsName, nUserId );		 
10341
 
10342
 
10343
 
10344
		END LOOP;
10345
 
10346
		-- Destroy PROCESSES_CONFIG
10347
		DELETE 
10348
		  FROM PROCESSES_CONFIG pc
10349
		 WHERE pc.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10350
 
10351
 
10352
		-- Destroy OS_CONTENTS
10353
		DELETE 
10354
		  FROM OS_CONTENTS osc
10355
		 WHERE osc.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10356
 
10357
 
10358
		-- Destroy OS_BASE_ENV
10359
		DELETE 
10360
		  FROM OS_BASE_ENV obe
10361
		 WHERE obe.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10362
 
10363
 
10364
		-- Destroy HIDE_PRODUCTS
10365
		DELETE 
10366
		  FROM HIDE_PRODUCTS hp
10367
		 WHERE hp.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) ); 
10368
 
10369
 
10370
		-- Destroy OS_TRAIL
10371
		DELETE
10372
		  FROM OS_TRAIL ot
10373
		 WHERE ot.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) ); 
10374
 
10375
 
10376
		---- Finnaly destroy Operating System ----
10377
		DELETE
10378
		  FROM OPERATING_SYSTEMS os
10379
		 WHERE os.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10380
 
10381
 
10382
 
10383
 
10384
	END IF; 
10385
 
10386
 
10387
 
10388
END	Destroy_Os;
10389
/*--------------------------------------------------------------------------------------------------*/
10390
PROCEDURE Destroy_Os ( nOsIdList IN VARCHAR2, nUserId IN NUMBER ) IS
10391
 
10392
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10393
 
10394
BEGIN
10395
	/*--------------- Business Rules Here -------------------*/
10396
	IF nOsIdList IS NULL
10397
	THEN
10398
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Operating Systems.');
10399
 
10400
	END IF;
10401
	/*-------------------------------------------------------*/
10402
	nIdCollector := IN_LIST_NUMBER ( nOsIdList );
10403
 
10404
	Destroy_Os ( nIdCollector, nUserId );					 
10405
 
10406
END	Destroy_Os;
10407
 
10408
/*-------------------------------------------------------------------------------------------------------*/
10409
  PROCEDURE add_package_process (
10410
      nprocidlist   IN   VARCHAR2,
10411
	  npvid 		IN 	 processes_config.prod_id%TYPE,	  
10412
      nosid         IN   os_contents.os_id%TYPE,
10413
      nuserid       IN   NUMBER
10414
   )
10415
   IS
10416
      processname   VARCHAR2 (4000);
10417
	  PkgName 		VARCHAR2 (4000);
10418
	  nPkgId		NUMBER;
10419
 
10420
	  nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10421
 
10422
 
10423
 
10424
/*Rupesh Release on 17/05/2006*/
10425
     CURSOR proc_cur
10426
      IS
10427
         SELECT prc.proc_id, prc.proc_name, prc.proc_description, 
10428
		 		prc.run_as, prc.pkg_owner, prc.is_interface
10429
           FROM processes prc
10430
          WHERE prc.proc_id IN (
10431
                   SELECT *
10432
                     FROM THE
10433
                             (SELECT CAST
10434
                                        (in_list_number (nprocidlist) AS DEPMGR_NUMBER_TAB_t
10435
                                        )
10436
                                FROM DUAL
10437
                             ));
10438
 
10439
      proc_rec      proc_cur%ROWTYPE;
10440
   BEGIN
10441
 
10442
   BEGIN
10443
   	 SELECT PKG.PKG_NAME, PKG.PKG_ID INTO PkgName, nPkgId
10444
	 FROM PACKAGE_VERSIONS PV, PACKAGES PKG
10445
	 WHERE PV.PV_ID = npvid
10446
	 AND PKG.PKG_ID = PV.PKG_ID;
10447
	 EXCEPTION
10448
	 WHEN NO_DATA_FOUND THEN
10449
	 	  RAISE_APPLICATION_ERROR (-20000, 'Select the Package Name and Version: ' );
10450
   END;	 
10451
 
10452
 
10453
      OPEN proc_cur;
10454
 
10455
      FETCH proc_cur
10456
       INTO proc_rec;
10457
 
10458
      WHILE proc_cur%FOUND
10459
      LOOP
10460
         INSERT INTO processes_config
10461
                     (proc_id, prod_id, os_id, pkg_health_tag, cmd_interface, pkg_owner, is_interface, proc_description, pkg_id
10462
                     )
10463
              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
10464
                     );
10465
 
10466
         SELECT prc.proc_name
10467
           INTO processname
10468
           FROM processes prc
10469
          WHERE prc.proc_id = proc_rec.proc_id;
10470
 
10471
	-- Log Action --
10472
	pk_Bom.Log_Os_Trail ( nosid,  
10473
						  'Added process with health tag '|| processname ||' for product '|| PkgName,
10474
						  nUserId );
10475
 
10476
         FETCH proc_cur
10477
          INTO proc_rec;
10478
      END LOOP;
10479
   END;
10480
 
10481
/*--------------------------------------------------------------------------------------------------*/
10482
/*-------------------------------------------------------------------------------------------------------*/
10483
  PROCEDURE add_packages_process (
10484
      npvidlist   	IN   VARCHAR2,	  
10485
      nosid         IN   os_contents.os_id%TYPE,
10486
      nuserid       IN   NUMBER
10487
   )
10488
   IS
10489
      processname   VARCHAR2 (4000);
10490
	  PkgName 		VARCHAR2 (4000);
10491
 
10492
	  nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10493
 
10494
 
10495
 
10496
/*Rupesh Release on 17/05/2006*/
10497
     CURSOR proc_cur
10498
      IS
10499
         SELECT prc.proc_id, prc.proc_name, prc.proc_description, 
10500
		 		prc.run_as, prc.pkg_owner, prc.is_interface, pp.PV_ID
10501
           FROM processes prc, release_manager.package_processes pp
10502
          WHERE pp.pv_id IN (
10503
                   SELECT *
10504
                     FROM THE
10505
                             (SELECT CAST
10506
                                        (in_list_number (npvidlist) AS DEPMGR_NUMBER_TAB_t
10507
                                        )
10508
                                FROM DUAL
10509
                             ))
10510
			AND	pp.PROC_ID = prc.PROC_ID;
10511
 
10512
      proc_rec      proc_cur%ROWTYPE;
10513
   BEGIN
10514
 
10515
 
10516
 
10517
      OPEN proc_cur;
10518
 
10519
      FETCH proc_cur
10520
       INTO proc_rec;
10521
 
10522
      WHILE proc_cur%FOUND
10523
      LOOP
10524
 
10525
   	 SELECT PKG.PKG_NAME INTO PkgName
10526
	 FROM PACKAGE_VERSIONS PV, PACKAGES PKG
10527
	 WHERE PV.PV_ID = proc_rec.pv_id
10528
	 AND PKG.PKG_ID = PV.PKG_ID;	  
10529
 
10530
         INSERT INTO processes_config
10531
                     (proc_id, prod_id, os_id, pkg_health_tag, cmd_interface, pkg_owner, is_interface, proc_description
10532
                     )
10533
              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
10534
                     );
10535
 
10536
         SELECT prc.proc_name
10537
           INTO processname
10538
           FROM processes prc
10539
          WHERE prc.proc_id = proc_rec.proc_id;
10540
 
10541
	-- Log Action --
10542
	pk_Bom.Log_Os_Trail ( nosid,  
10543
						  'Added process with health tag '|| processname ||' for product '|| PkgName,
10544
						  nUserId );
10545
 
10546
         FETCH proc_cur
10547
          INTO proc_rec;
10548
      END LOOP;
10549
   END;
10550
 
10551
/*--------------------------------------------------------------------------------------------------*/
10552
 
10553
 
10554
 
10555
END pk_Operating_System;
10556
/
10557
 
10558
CREATE OR REPLACE PACKAGE BODY pk_Network_Node_test
10559
IS
10560
/* ---------------------------------------------------------------------------
10561
    Version: 1.0.0
10562
   --------------------------------------------------------------------------- */
10563
 
10564
/*--------------------------------------------------------------------------------------------------*/
10565
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
10566
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
10567
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
10568
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
10569
					 nUserId IN NUMBER ) IS
10570
 
10571
NodeID NUMBER;
10572
 
10573
CURSOR nn_cur IS -- Check Node Name Duplicates
10574
		SELECT bc.node_id
10575
		  FROM BOM_CONTENTS bc,
10576
		  	   NETWORK_NODES nn
10577
		 WHERE bc.NODE_ID = nn.NODE_ID
10578
		   AND bc.BOM_ID = nBomId 
10579
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName );
10580
nn_rec nn_cur%ROWTYPE;
10581
 
10582
DUPLICATE_NODE_NAME EXCEPTION;
10583
 
10584
BEGIN
10585
	/*--------------- Business Rules Here -------------------*/
10586
	OPEN nn_cur;
10587
    FETCH nn_cur INTO nn_rec;
10588
 
10589
    IF nn_cur%FOUND
10590
    THEN
10591
		RAISE DUPLICATE_NODE_NAME;
10592
	END IF;
10593
 
10594
	CLOSE nn_cur;
10595
	/*-------------------------------------------------------*/
10596
 
10597
 
10598
	-- Get node_id
10599
	SELECT SEQ_NODE_ID.NEXTVAL INTO NodeID FROM DUAL;
10600
 
10601
 
10602
	-- Insert new Network Node			  
10603
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS )
10604
	VALUES (
10605
			NodeID,
10606
			nNodeTypeId,
10607
			sNodeName,
10608
			sNodeComments
10609
			);
10610
 
10611
 
10612
	-- Link Node with the BOM
10613
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID )
10614
	VALUES (
10615
		    nBomId,
10616
			NodeID
10617
		    );
10618
 
10619
	/* Log BOM_TRAIL */
10620
	pk_Bom.Log_Bom_Trail ( nBomId, 'ADDED NETWORK NODE: '||sNodeName, nUserId );			
10621
 
10622
EXCEPTION
10623
    WHEN DUPLICATE_NODE_NAME
10624
	THEN		
10625
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
10626
 
10627
END	Add_Node;
10628
/*--------------------------------------------------------------------------------------------------*/
10629
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
10630
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
10631
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
10632
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE ) IS
10633
 
10634
BomID NUMBER;
10635
 
10636
CURSOR nn_cur IS -- Check Node Name Duplicates
10637
		SELECT bc.node_id
10638
		  FROM BOM_CONTENTS bc,
10639
		  	   NETWORK_NODES nn
10640
		 WHERE bc.NODE_ID = nn.NODE_ID
10641
		   AND bc.BOM_ID = BomId 
10642
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName )
10643
		   AND nn.NODE_ID != nNodeId;
10644
nn_rec nn_cur%ROWTYPE;
10645
 
10646
DUPLICATE_NODE_NAME EXCEPTION;
10647
 
10648
BEGIN
10649
	/*--------------- Business Rules Here -------------------*/
10650
	-- Check all parameters
10651
	IF (nNodeId IS NULL)  OR  (nNodeTypeId IS NULL) 
10652
	THEN
10653
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId='|| nNodeId  ||', nNodeTypeId='|| nNodeTypeId  );
10654
 
10655
	END IF;
10656
 
10657
	-- Get bom_id
10658
	SELECT bc.BOM_ID INTO BomId
10659
	  FROM BOM_CONTENTS bc
10660
	 WHERE bc.NODE_ID = nNodeId; 
10661
 
10662
	-- Check for duplicate names
10663
	OPEN nn_cur;
10664
    FETCH nn_cur INTO nn_rec;
10665
 
10666
    IF nn_cur%FOUND
10667
    THEN
10668
		RAISE DUPLICATE_NODE_NAME;
10669
	END IF;
10670
 
10671
	CLOSE nn_cur;
10672
	/*-------------------------------------------------------*/
10673
 
10674
	-- Update Network Node Details
10675
	UPDATE NETWORK_NODES nn SET
10676
		nn.NODE_NAME = sNodeName,
10677
		nn.NODE_COMMENTS = sNodeComments,
10678
		nn.NODE_TYPE_ID = nNodeTypeId
10679
	 WHERE nn.NODE_ID = nNodeId;
10680
 
10681
 
10682
 
10683
EXCEPTION
10684
    WHEN DUPLICATE_NODE_NAME
10685
	THEN		
10686
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
10687
 
10688
END	Update_Node;
10689
/*--------------------------------------------------------------------------------------------------*/
10690
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
10691
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE ) IS
10692
 
10693
 
10694
 
10695
NODE_ID_REQUIRED EXCEPTION;
10696
 
10697
BEGIN
10698
	/*--------------- Business Rules Here -------------------*/
10699
    IF sNodeIdList IS NULL
10700
    THEN
10701
		RAISE NODE_ID_REQUIRED;
10702
	END IF;
10703
	/*-------------------------------------------------------*/
10704
 
10705
 
10706
 
10707
	-- Remove from Bom Contents
10708
	DELETE FROM BOM_CONTENTS
10709
	WHERE bom_id = nBomId
10710
	  AND node_id IN (
10711
		  		  	  SELECT *
10712
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
10713
		  		  	 );
10714
 
10715
 
10716
	-- Remove Network Nodes
10717
	DELETE FROM NETWORK_NODES
10718
	WHERE node_id IN (
10719
		  		  	  SELECT *
10720
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
10721
		  		  	 );
10722
 
10723
 
10724
 
10725
EXCEPTION
10726
    WHEN NODE_ID_REQUIRED
10727
	THEN		
10728
		RAISE_APPLICATION_ERROR (-20000, 'You must select at least one Network Node.');
10729
 
10730
END	Remove_Node;
10731
/*--------------------------------------------------------------------------------------------------*/
10732
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t ) IS
10733
 
10734
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10735
 
10736
BEGIN
10737
	/*--------------- Business Rules Here -------------------*/
10738
	/*-------------------------------------------------------*/
10739
 
10740
	IF (nNodeIdCollection.COUNT > 0) THEN   
10741
 
10742
		-- Destroy Hardware Node Link
10743
		DELETE 
10744
		  FROM HARDWARE_NODE hn
10745
		 WHERE hn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10746
 
10747
 
10748
		-- Destroy Node from Bom Contents
10749
		DELETE 
10750
		  FROM BOM_CONTENTS bc
10751
		 WHERE bc.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10752
 
10753
 
10754
		-- Destroy Operation Systems
10755
		nIdCollector := NULL;
10756
		SELECT CAST ( MULTISET ( SELECT os.OS_ID
10757
		  	   		  		   	   FROM OPERATING_SYSTEMS os
10758
		 						  WHERE os.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) )
10759
							    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
10760
 
10761
		pk_Operating_System.Destroy_Os ( nIdCollector );
10762
 
10763
 
10764
 
10765
 
10766
		---- Finnaly destroy Network Node ----
10767
		DELETE
10768
		  FROM NETWORK_NODES nn
10769
		 WHERE nn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
10770
 
10771
 
10772
	END IF; 
10773
 
10774
 
10775
END	Destroy_Node;
10776
/*--------------------------------------------------------------------------------------------------*/
10777
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2 ) IS
10778
 
10779
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10780
 
10781
BEGIN
10782
	/*--------------- Business Rules Here -------------------*/
10783
	/*-------------------------------------------------------*/
10784
	nIdCollector := IN_LIST_NUMBER ( nNodeIdList );
10785
 
10786
	Destroy_Node ( nIdCollector );	
10787
 
10788
 
10789
END	Destroy_Node;
10790
/*--------------------------------------------------------------------------------------------------*/
10791
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
10792
		  			   nBomId IN BOMS.BOM_ID%TYPE,
10793
					   nUserId IN NUMBER ) IS
10794
 
10795
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
10796
	SeqNum NUMBER;
10797
 
10798
BEGIN
10799
	/*--------------- Business Rules Here -------------------*/
10800
	-- Check for parameters
10801
	IF (sNodeIdOrder IS NULL)  OR (nBomId IS NULL) 
10802
	THEN
10803
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId='|| nBomId  ||' sNodeIdOrder='|| sNodeIdOrder  );
10804
	END IF;
10805
	/*-------------------------------------------------------*/
10806
 
10807
	nIdCollector := IN_LIST_NUMBER ( sNodeIdOrder );
10808
 
10809
	-- Set start sequence number
10810
	SeqNum := 1;
10811
 
10812
	FOR i IN 1..nIdCollector.COUNT
10813
	LOOP
10814
 
10815
		-- Update new sequence number
10816
		UPDATE BOM_CONTENTS bc SET
10817
			bc.SEQ_NUM = SeqNum
10818
		 WHERE bc.BOM_ID = nBomId
10819
		   AND bc.NODE_ID = nIdCollector(i);
10820
 
10821
		SeqNum := SeqNum + 1;
10822
 
10823
	END LOOP;
10824
 
10825
 
10826
END	Sort_Nodes;
10827
/*--------------------------------------------------------------------------------------------------*/
10828
END pk_Network_Node_test;
10829
/
10830
 
10831
CREATE OR REPLACE PACKAGE BODY pk_Product_Test
10832
IS
10833
/* ---------------------------------------------------------------------------
10834
    Modified By: Rupesh Solanki
10835
	Date: 20/03/2006
10836
   --------------------------------------------------------------------------- */
10837
 
10838
/*--------------------------------------------------------------------------------------------------*/
10839
PROCEDURE New_Product ( sProdName IN PACKAGES.PKG_NAME%TYPE,
10840
						sProdVersion IN PACKAGE_VERSIONS.PKG_VERSION%TYPE,
10841
						nUserId IN NUMBER,
10842
						outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE ) IS
10843
 
10844
 
10845
BEGIN
10846
	/*--------------- Business Rules Here -------------------*/
10847
	/*-------------------------------------------------------*/
10848
 
10849
	-- Call Release Manager to add new product
10850
	Seed_Package_Names_Versions ( sProdName, sProdVersion, nUserId, outProdId );
10851
 
10852
 
10853
END	New_Product;
10854
/*--------------------------------------------------------------------------------------------------*/
10855
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
10856
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
10857
						nUserId IN NUMBER ) IS
10858
 
10859
NextSeqNum NUMBER;
10860
PkgName VARCHAR2(100);
10861
PkgVersion VARCHAR2(100);
10862
NodeName VARCHAR2(4000);
10863
 
10864
CURSOR prod_cur IS
10865
	SELECT qry.PV_ID AS PROD_ID,
10866
		   qry.PV_DESCRIPTION,
10867
           qry.COMMENTS,
10868
           qry.IS_PATCH
10869
	  FROM ( 
10870
      		/* Products */
10871
			SELECT pv.PV_ID, TO_NUMBER(NULL) AS INSTALL_ORDER, TO_NUMBER(NULL) AS PKG_ID, pv.PV_DESCRIPTION, pv.COMMENTS, pv.IS_PATCH
10872
			  FROM PACKAGE_VERSIONS pv
10873
			 WHERE pv.IS_PATCH IS NULL
10874
			   AND pv.PV_ID IN (
10875
			 	   			   	SELECT * 
10876
								  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10877
								)
10878
 
10879
			UNION ALL
10880
 
10881
            /* Patches */  
10882
			SELECT pv.PV_ID, pp.INSTALL_ORDER, pv.PKG_ID, pv.PV_DESCRIPTION, pv.COMMENTS, pv.IS_PATCH
10883
			  FROM PACKAGE_PATCHES pp,
10884
			  	   PACKAGE_VERSIONS pv
10885
			 WHERE pp.PATCH_ID = pv.PV_ID
10886
			   AND pp.PATCH_ID IN (
10887
			 	   			   	SELECT * 
10888
								  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10889
								)  		
10890
	        ) qry  
10891
	 ORDER BY qry.PKG_ID, qry.INSTALL_ORDER;
10892
prod_rec prod_cur%ROWTYPE;
10893
 
10894
 
10895
BEGIN
10896
	/*--------------- Business Rules Here -------------------*/
10897
	/*-------------------------------------------------------*/
10898
 
10899
	-- Get seq_num
10900
	SELECT MAX( osc.SEQ_NUM ) INTO NextSeqNum
10901
	  FROM OS_CONTENTS osc
10902
	 WHERE osc.OS_ID = nOsId;
10903
 
10904
	-- Set NextSeqNum to 0 if no existing products are found
10905
	IF NextSeqNum IS NULL THEN
10906
	   NextSeqNum := 1;
10907
	ELSE
10908
	   NextSeqNum := NextSeqNum + 1;
10909
	END IF;
10910
 
10911
 
10912
	-- Insert into OS Contents
10913
	OPEN prod_cur;
10914
	FETCH prod_cur INTO prod_rec;
10915
 
10916
	WHILE prod_cur%FOUND
10917
	LOOP
10918
 
10919
        IF (prod_rec.IS_PATCH IS NULL) THEN
10920
            INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS )
10921
       		VALUES (
10922
       				nOsId, 
10923
       				NextSeqNum, 
10924
       				prod_rec.PROD_ID,
10925
       				prod_rec.PV_DESCRIPTION
10926
       				);
10927
        ELSE
10928
            INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS )
10929
    		VALUES (
10930
    				nOsId, 
10931
    				NextSeqNum, 
10932
    				prod_rec.PROD_ID,
10933
    				prod_rec.COMMENTS
10934
    				);
10935
        END IF;
10936
 
10937
 
10938
		SELECT PKG.PKG_NAME INTO PkgName
10939
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
10940
		WHERE PV.PV_ID = prod_rec.PROD_ID
10941
		AND PKG.PKG_ID = PV.PKG_ID;
10942
 
10943
		SELECT PKG_VERSION INTO PkgVersion
10944
		FROM PACKAGE_VERSIONS PV
10945
		WHERE PV.PV_ID = prod_rec.PROD_ID;
10946
 
10947
		SELECT NN.NODE_NAME INTO NodeName
10948
		FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
10949
		WHERE NN.NODE_ID = OS.NODE_ID
10950
		AND OS.OS_ID = nOsId;
10951
 
10952
 
10953
		-- Log Action --
10954
		pk_Bom.Log_Os_Trail ( nOsId,  
10955
							  'Added Product: '||PkgName||' (Version: '||PkgVersion||') with Install Order: '||NextSeqNum||' on Node: '||NodeName,
10956
							  nUserId );
10957
 
10958
 
10959
		NextSeqNum := NextSeqNum + 1;
10960
		FETCH prod_cur INTO prod_rec;
10961
	END LOOP;
10962
 
10963
 
10964
	CLOSE prod_cur;
10965
 
10966
 
10967
END	Add_Product;
10968
/*--------------------------------------------------------------------------------------------------*/
10969
PROCEDURE Hide_Product ( sProdIdList IN VARCHAR2,
10970
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
10971
						nUserId IN NUMBER ) IS
10972
 
10973
BEGIN
10974
	/*--------------- Business Rules Here -------------------*/
10975
	/*-------------------------------------------------------*/
10976
 
10977
 
10978
            INSERT INTO HIDE_PRODUCTS ( OS_ID, PROD_ID )
10979
       		VALUES (
10980
       				nOsId, 
10981
       				sProdIdList
10982
       				);
10983
 
10984
END	Hide_Product;
10985
/*--------------------------------------------------------------------------------------------------*/
10986
PROCEDURE Unhide_Product ( sProdIdList IN NUMBER,
10987
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
10988
						nUserId IN NUMBER ) IS
10989
 
10990
BEGIN
10991
	/*--------------- Business Rules Here -------------------*/
10992
	/*-------------------------------------------------------*/
10993
 
10994
 
10995
            DELETE FROM HIDE_PRODUCTS WHERE 
10996
			PROD_ID = sProdIdList
10997
			AND OS_ID = nOsId;
10998
 
10999
END	Unhide_Product;
11000
/*--------------------------------------------------------------------------------------------------*/
11001
PROCEDURE Update_Process (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
11002
		  				  nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
11003
		  				  nIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE, 		  
11004
		  				  nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,		  
11005
						  nCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
11006
						  nPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
11007
						  sPkgHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
11008
						  nProduct IN PROCESSES_CONFIG.PROD_ID%TYPE) IS
11009
 
11010
BEGIN
11011
 
11012
	 UPDATE PROCESSES_CONFIG SET
11013
	 	CMD_INTERFACE = nCmdInterface,
11014
		PKG_OWNER = nPkgOwner,
11015
		IS_INTERFACE = nIsInterface,
11016
		PKG_HEALTH_TAG = sPkgHealthTag,
11017
		PROD_ID = nProduct 
11018
 
11019
 
11020
	 WHERE PROD_ID = nProdId
11021
	 AND OS_ID = nOsId
11022
	 AND PROC_ID = nProcId	;						  
11023
 
11024
 
11025
END Update_Process;
11026
 
11027
/*--------------------------------------------------------------------------------------------------*/
11028
PROCEDURE Update_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
11029
						   sNewProdIdVersion IN VARCHAR2,
11030
						   nOsId IN OS_CONTENTS.OS_ID%TYPE,
11031
						   nSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE,
11032
						   sComments IN OS_CONTENTS.PRODUCT_COMMENTS%TYPE,
11033
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
11034
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
11035
						   sIsNodeSpec IN OS_CONTENTS.IS_NODE_SPEC%TYPE,
11036
						   sNotXML IN OS_CONTENTS.NOT_XML%TYPE,
11037
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
11038
						   nUserId IN NUMBER,
11039
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE ) IS
11040
 
11041
nNewProdId OS_CONTENTS.PROD_ID%TYPE;
11042
 
11043
sProdName PACKAGES.PKG_NAME%TYPE;
11044
 
11045
 
11046
 
11047
 
11048
 
11049
CURSOR curProd IS
11050
 	SELECT pv.PV_ID
11051
	  FROM PACKAGE_VERSIONS pv
11052
	 WHERE pv.pkg_id IN ( SELECT pv.pkg_id FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nOldProdId )
11053
	   AND pv.PKG_VERSION = sNewProdIdVersion;
11054
recProd curProd%ROWTYPE;						   
11055
 
11056
BEGIN
11057
	/*--------------- Business Rules Here -------------------*/
11058
	IF (nOldProdId IS NULL) OR (sNewProdIdVersion IS NULL) OR (nOsId IS NULL) OR (nSeqNum IS NULL)
11059
	THEN
11060
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOldProdId= '|| nOldProdId  ||', sNewProdIdVersion= '|| sNewProdIdVersion ||', nOsId= '|| nOsId ||', nSeqNum= '|| nSeqNum);
11061
	END IF;
11062
	/*-------------------------------------------------------*/
11063
 
11064
	-- Get new prod_id
11065
	OPEN curProd;
11066
	FETCH curProd INTO recProd;
11067
 
11068
	SELECT pkg.pkg_name into sProdName
11069
	FROM PACKAGES pkg, PACKAGE_VERSIONS pv
11070
	WHERE pkg.pkg_id = pv.pkg_id 
11071
	AND pv.pv_id = nOldProdId;
11072
 
11073
 
11074
	IF curProd%FOUND THEN
11075
	   nNewProdId := recProd.PV_ID;
11076
	ELSE
11077
		Seed_Package_Names_Versions ( sProdName, sNewProdIdVersion, nUserId, outProdId );
11078
		nNewProdId := outProdId;
11079
		/*RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');*/
11080
	END IF;
11081
 
11082
	CLOSE curProd;
11083
 
11084
 
11085
	-- Update Product Details
11086
	UPDATE OS_CONTENTS SET
11087
		PROD_ID = nNewProdId,
11088
		PRODUCT_COMMENTS = sComments,
11089
		NOT_XML = sNotXML,
11090
		IS_NODE_SPEC = sIsNodeSpec
11091
	 WHERE OS_ID = nOsId
11092
	   AND PROD_ID = nOldProdId;
11093
 
11094
	--Update Package Electronic Name Details In Packages Table 
11095
	UPDATE PACKAGES SET
11096
		SUNOS_ELECTRONIC_NAME = sSunOSElectronicName,
11097
		WIN_ELECTRONIC_NAME = sWinElectronicName
11098
	WHERE  PKG_ID = 
11099
	(
11100
	 SELECT PKG_ID
11101
	 FROM PACKAGE_VERSIONS 
11102
	 WHERE PACKAGE_VERSIONS.PV_ID = nNewProdId
11103
	);
11104
 
11105
	--Update Patch Electronic Name In Package Versions Table
11106
	UPDATE PACKAGE_VERSIONS SET
11107
		   PATCH_ELECTRONIC_NAME = sPatchElectronicName
11108
	WHERE PV_ID = nNewProdId;	   
11109
 
11110
 
11111
	-- Update seq_num
11112
	pk_Operating_System.Shift_Product_SeqNum ( nNewProdId, nOsId, nSeqNum );
11113
 
11114
END	Update_Product;
11115
/*--------------------------------------------------------------------------------------------------*/
11116
PROCEDURE Replace_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
11117
		  				  	nNewProdId IN OS_CONTENTS.PROD_ID%TYPE,
11118
		  			  	    nOsId IN OS_CONTENTS.OS_ID%TYPE,
11119
							nUserId IN NUMBER ) IS
11120
 
11121
OldVersion VARCHAR2(100);
11122
NewVersion VARCHAR2(100);
11123
PkgName    VARCHAR2(100);	
11124
NodeName VARCHAR2(4000);	
11125
 
11126
BEGIN
11127
	/*--------------- Business Rules Here -------------------*/
11128
	/*-------------------------------------------------------*/
11129
 
11130
 
11131
	UPDATE OS_CONTENTS SET
11132
	PROD_ID = nNewProdId
11133
	WHERE PROD_ID = nOldProdId
11134
	  AND OS_ID = nOsId;
11135
 
11136
	SELECT PKG_VERSION INTO OldVersion
11137
	FROM PACKAGE_VERSIONS
11138
	WHERE PV_ID = nOldProdId;
11139
 
11140
	SELECT PKG_VERSION INTO NewVersion
11141
	FROM PACKAGE_VERSIONS
11142
	WHERE PV_ID = nNewProdId;	
11143
 
11144
	SELECT PKG.PKG_NAME INTO PkgName
11145
	FROM PACKAGES PKG, PACKAGE_VERSIONS PV
11146
	WHERE PV.PV_ID = nNewProdId
11147
	AND PKG.PKG_ID = PV.PKG_ID; 
11148
 
11149
	SELECT NN.NODE_NAME INTO NodeName
11150
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
11151
	WHERE NN.NODE_ID = OS.NODE_ID
11152
	AND OS.OS_ID = nOsId;
11153
 
11154
 
11155
	-- Log Action --
11156
	pk_Bom.Log_Os_Trail ( nOsId, 
11157
						  'Updated Product: '||PkgName|| ' from Version: '||OldVersion||' to '||NewVersion||' on Node: '||NodeName,
11158
						  nUserId );
11159
 
11160
END	Replace_Product;
11161
/*--------------------------------------------------------------------------------------------------*/
11162
PROCEDURE Remove_Process ( sProcName IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,	
11163
		  				   sProdIdList IN VARCHAR2,
11164
		  			  	   nOsId IN OS_CONTENTS.OS_ID%TYPE,
11165
  						   sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
11166
						   sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
11167
						   sInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
11168
						   nUserId IN NUMBER ) IS
11169
 
11170
ProcessName VARCHAR2(4000);
11171
NodeName VARCHAR2(4000);
11172
 
11173
BEGIN
11174
 
11175
 
11176
/*Select the Correct Details - Begin*/
11177
 
11178
		 IF sCmdInterface IS NOT NULL THEN
11179
		 	IF sInterface IS NOT NULL THEN
11180
			   IF sPkgOwner IS NOT NULL THEN
11181
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11182
					 FROM PROCESSES_CONFIG
11183
					 WHERE OS_ID = nOsId
11184
					 AND PROD_ID = sProdIdList
11185
					 AND PKG_HEALTH_TAG = sProcName
11186
					 AND CMD_INTERFACE = sCmdInterface
11187
					 AND PKG_OWNER = sPkgOwner
11188
					 AND IS_INTERFACE = sInterface;			   	  
11189
 
11190
			   ELSE/*sPkgOwner IS NULL, sInterface IS NOT NULL, sCmdInterface IS NOT NULL*/
11191
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11192
					 FROM PROCESSES_CONFIG
11193
					 WHERE OS_ID = nOsId
11194
					 AND PROD_ID = sProdIdList
11195
					 AND PKG_HEALTH_TAG = sProcName
11196
					 AND CMD_INTERFACE = sCmdInterface
11197
					 AND PKG_OWNER IS NULL
11198
					 AND IS_INTERFACE = sInterface;				   
11199
			   END IF ;  
11200
			ELSE 
11201
				 IF sInterface IS NULL OR sInterface = 'F' THEN/* sInterface IS NULL, sCmdInterface IS NOT NULL*/
11202
			   	   IF sPkgOwner IS NOT NULL THEN
11203
			   	   	 SELECT PKG_HEALTH_TAG INTO ProcessName
11204
					 FROM PROCESSES_CONFIG
11205
					 WHERE OS_ID = nOsId
11206
					 AND PROD_ID = sProdIdList
11207
					 AND PKG_HEALTH_TAG = sProcName
11208
					 AND CMD_INTERFACE = sCmdInterface
11209
					 AND PKG_OWNER = sPkgOwner
11210
					 AND (IS_INTERFACE = 'F' OR IS_INTERFACE IS NULL);				    
11211
				   ELSE/* sPkqOwner IS NULL, sInterface IS NULL, sCmdInterface IS NOT NULL*/
11212
			   	   	 SELECT PKG_HEALTH_TAG INTO ProcessName
11213
					 FROM PROCESSES_CONFIG
11214
					 WHERE OS_ID = nOsId
11215
					 AND PROD_ID = sProdIdList
11216
					 AND PKG_HEALTH_TAG = sProcName
11217
					 AND CMD_INTERFACE = sCmdInterface
11218
					 AND PKG_OWNER IS NULL
11219
					 AND IS_INTERFACE IS NULL;				   
11220
				   END IF;
11221
				  END IF; 
11222
			END IF;
11223
		 ELSE/* sCmdInterface IS NULL*/
11224
		 		IF sInterface IS NOT NULL THEN
11225
				   IF sPkgOwner IS NOT NULL THEN				   	  
11226
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11227
					 FROM PROCESSES_CONFIG
11228
					 WHERE OS_ID = nOsId
11229
					 AND PROD_ID = sProdIdList
11230
					 AND PKG_HEALTH_TAG = sProcName
11231
					 AND CMD_INTERFACE IS NULL
11232
					 AND PKG_OWNER = sPkgOwner
11233
					 AND IS_INTERFACE = sInterface;					   
11234
				   ELSE/* sPkgOwner is NULL, sInterface IS NOT NULL, sCmdInterface IS NULL */
11235
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11236
					 FROM PROCESSES_CONFIG
11237
					 WHERE OS_ID = nOsId
11238
					 AND PROD_ID = sProdIdList
11239
					 AND PKG_HEALTH_TAG = sProcName
11240
					 AND CMD_INTERFACE IS NULL
11241
					 AND PKG_OWNER IS NULL
11242
					 AND IS_INTERFACE = sInterface;						   
11243
				   END IF;
11244
				ELSE
11245
				  IF sInterface IS NULL OR sInterface = 'F' THEN/* sInterface IS NULL, sCmdInterface IS NULL*/
11246
					IF sPkgOwner IS NOT NULL THEN
11247
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11248
					 FROM PROCESSES_CONFIG
11249
					 WHERE OS_ID = nOsId
11250
					 AND PROD_ID = sProdIdList
11251
					 AND PKG_HEALTH_TAG = sProcName
11252
					 AND CMD_INTERFACE IS NULL
11253
					 AND PKG_OWNER = sPkgOwner
11254
					 AND (IS_INTERFACE IS NULL OR IS_INTERFACE = 'F');						   
11255
					ELSE/* sPkgOwner IS NULL, sInterface IS NULL, sCmdInterface IS NULL*/
11256
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
11257
					 FROM PROCESSES_CONFIG
11258
					 WHERE OS_ID = nOsId
11259
					 AND PROD_ID = sProdIdList
11260
					 AND PKG_HEALTH_TAG = sProcName
11261
					 AND CMD_INTERFACE IS NULL
11262
					 AND PKG_OWNER IS NULL
11263
					 AND IS_INTERFACE IS NULL;										
11264
					END IF;
11265
				  END IF;	
11266
				END IF;
11267
		 END IF;
11268
 
11269
 
11270
/*Select the Correct Details - End */
11271
 
11272
	-- Log Action --
11273
	pk_Bom.Log_Os_Trail ( nOsId, 
11274
						  'Deleted Process: '||ProcessName||' From Node: '||NodeName,
11275
						  nUserId );
11276
 
11277
 
11278
/*Select the Correct Details - Begin*/	
11279
		 IF sCmdInterface IS NOT NULL THEN
11280
		 	IF sInterface IS NOT NULL THEN
11281
			   IF sPkgOwner IS NOT NULL THEN
11282
			   		 DELETE
11283
					 FROM PROCESSES_CONFIG
11284
					 WHERE OS_ID = nOsId
11285
					 AND PROD_ID = sProdIdList
11286
					 AND PKG_HEALTH_TAG = sProcName
11287
					 AND CMD_INTERFACE = sCmdInterface
11288
					 AND PKG_OWNER = sPkgOwner
11289
					 AND IS_INTERFACE = sInterface;			   	  
11290
 
11291
			   ELSE/*sPkgOwner IS NULL, sInterface IS NOT NULL, sCmdInterface IS NOT NULL*/
11292
			   		 DELETE
11293
					 FROM PROCESSES_CONFIG
11294
					 WHERE OS_ID = nOsId
11295
					 AND PROD_ID = sProdIdList
11296
					 AND PKG_HEALTH_TAG = sProcName
11297
					 AND CMD_INTERFACE = sCmdInterface
11298
					 AND PKG_OWNER IS NULL
11299
					 AND IS_INTERFACE = sInterface;				   
11300
			   END IF;
11301
			ELSE/* sInterface IS NULL, sCmdInterface IS NOT NULL*/
11302
			   	   IF sPkgOwner IS NOT NULL THEN
11303
			   	   	 DELETE
11304
					 FROM PROCESSES_CONFIG
11305
					 WHERE OS_ID = nOsId
11306
					 AND PROD_ID = sProdIdList
11307
					 AND PKG_HEALTH_TAG = sProcName
11308
					 AND CMD_INTERFACE = sCmdInterface
11309
					 AND PKG_OWNER = sPkgOwner
11310
					 AND IS_INTERFACE IS NULL;				    
11311
				   ELSE/* sPkqOwner IS NULL, sInterface IS NULL, sCmdInterface IS NOT NULL*/
11312
			   	   	 DELETE
11313
					 FROM PROCESSES_CONFIG
11314
					 WHERE OS_ID = nOsId
11315
					 AND PROD_ID = sProdIdList
11316
					 AND PKG_HEALTH_TAG = sProcName
11317
					 AND CMD_INTERFACE = sCmdInterface
11318
					 AND PKG_OWNER IS NULL
11319
					 AND IS_INTERFACE IS NULL;				   
11320
				   END IF;
11321
			END IF;
11322
		 ELSE/* sCmdInterface IS NULL*/
11323
		 		IF sInterface IS NOT NULL THEN
11324
				   IF sPkgOwner IS NOT NULL THEN				   	  
11325
			   		 DELETE
11326
					 FROM PROCESSES_CONFIG
11327
					 WHERE OS_ID = nOsId
11328
					 AND PROD_ID = sProdIdList
11329
					 AND PKG_HEALTH_TAG = sProcName
11330
					 AND CMD_INTERFACE IS NULL
11331
					 AND PKG_OWNER = sPkgOwner
11332
					 AND IS_INTERFACE = sInterface;					   
11333
				   ELSE/* sPkgOwner is NULL, sInterface IS NOT NULL, sCmdInterface IS NULL */
11334
			   		 DELETE
11335
					 FROM PROCESSES_CONFIG
11336
					 WHERE OS_ID = nOsId
11337
					 AND PROD_ID = sProdIdList
11338
					 AND PKG_HEALTH_TAG = sProcName
11339
					 AND CMD_INTERFACE IS NULL
11340
					 AND PKG_OWNER IS NULL
11341
					 AND IS_INTERFACE = sInterface;						   
11342
				   END IF;
11343
				ELSE/* sInterface IS NULL, sCmdInterface IS NULL*/
11344
					IF sPkgOwner IS NOT NULL THEN
11345
			   		 DELETE
11346
					 FROM PROCESSES_CONFIG
11347
					 WHERE OS_ID = nOsId
11348
					 AND PROD_ID = sProdIdList
11349
					 AND PKG_HEALTH_TAG = sProcName
11350
					 AND CMD_INTERFACE IS NULL
11351
					 AND PKG_OWNER = sPkgOwner
11352
					 AND IS_INTERFACE IS NULL;						   
11353
					ELSE/* sPkgOwner IS NULL, sInterface IS NULL, sCmdInterface IS NULL*/
11354
			   		 DELETE
11355
					 FROM PROCESSES_CONFIG
11356
					 WHERE OS_ID = nOsId
11357
					 AND PROD_ID = sProdIdList
11358
					 AND PKG_HEALTH_TAG = sProcName
11359
					 AND CMD_INTERFACE IS NULL
11360
					 AND PKG_OWNER IS NULL
11361
					 AND IS_INTERFACE IS NULL;										
11362
					END IF;
11363
				END IF;
11364
		 END IF;
11365
 
11366
 
11367
/*Select the Correct Details - End*/				  
11368
 
11369
END Remove_Process;							
11370
/*--------------------------------------------------------------------------------------------------*/
11371
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
11372
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
11373
							nUserId IN NUMBER ) IS
11374
 
11375
PkgName VARCHAR2(100);
11376
PkgVersion VARCHAR2(100);		
11377
NextSeqNum NUMBER := 1;
11378
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();	
11379
NodeName VARCHAR2(4000);
11380
 
11381
CURSOR prod_cur IS
11382
	SELECT osc.PROD_ID, osc.SEQ_NUM
11383
	  FROM OS_CONTENTS osc
11384
	 WHERE osc.OS_ID = nOsId
11385
	 ORDER BY osc.SEQ_NUM;
11386
prod_rec prod_cur%ROWTYPE;	  
11387
 
11388
BEGIN
11389
	/*--------------- Business Rules Here -------------------*/
11390
	IF sProdIdList IS NULL
11391
	THEN
11392
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
11393
 
11394
	END IF;
11395
	/*-------------------------------------------------------*/
11396
 
11397
	SELECT NN.NODE_NAME INTO NodeName
11398
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
11399
	WHERE NN.NODE_ID = OS.NODE_ID
11400
	AND OS.OS_ID = nOsId; 	
11401
 
11402
	-- Remove Products
11403
	DELETE 
11404
	FROM OS_CONTENTS
11405
	WHERE OS_ID = nOsId
11406
	  AND PROD_ID IN ( 
11407
	  	  		  	    SELECT * 
11408
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
11409
					 );
11410
 
11411
 
11412
	-- Remove Processes
11413
	DELETE 
11414
	FROM PROCESSES_CONFIG
11415
	WHERE OS_ID = nOsId
11416
	  AND PROD_ID IN ( 
11417
	  	  		  	    SELECT * 
11418
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
11419
					 );  
11420
 
11421
 
11422
	-- Update Seq Numbers
11423
	OPEN prod_cur;
11424
	FETCH prod_cur INTO prod_rec;
11425
 
11426
	WHILE prod_cur%FOUND
11427
	LOOP
11428
 
11429
		UPDATE OS_CONTENTS SET
11430
		SEQ_NUM = NextSeqNum
11431
		WHERE OS_ID = nOsId
11432
		  AND PROD_ID = prod_rec.PROD_ID;
11433
 
11434
		NextSeqNum := NextSeqNum + 1;
11435
		FETCH prod_cur INTO prod_rec;
11436
 
11437
 
11438
	END LOOP;
11439
 
11440
	CLOSE prod_cur;
11441
 
11442
	nIdCollector := IN_LIST_NUMBER ( sProdIdList );
11443
 
11444
	FOR i IN 1..nIdCollector.COUNT
11445
	LOOP
11446
		SELECT PKG.PKG_NAME INTO PkgName
11447
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
11448
		WHERE PV.PV_ID = nIdCollector(i)
11449
		AND PKG.PKG_ID = PV.PKG_ID;
11450
 
11451
		SELECT PKG_VERSION INTO PkgVersion
11452
		FROM PACKAGE_VERSIONS PV
11453
		WHERE PV.PV_ID = nIdCollector(i);	
11454
 
11455
		-- Log Action --
11456
		pk_Bom.Log_Os_Trail ( nOsId,  
11457
							  'Deleted Product: '||PkgName||' (Version: '||PkgVersion||') from Node: '||NodeName,
11458
							  nUserId );
11459
 
11460
	END LOOP;
11461
 
11462
 
11463
 
11464
 
11465
 
11466
 
11467
 
11468
END Remove_Products; 
11469
/*--------------------------------------------------------------------------------------------------*/
11470
PROCEDURE Add_Products_NodeSpec ( sProdIdList IN VARCHAR2,
11471
		  			  	  		  nOsId IN OS_CONTENTS.OS_ID%TYPE,
11472
								  nUserId IN NUMBER ) IS
11473
 
11474
NextSeqNum NUMBER := 1;
11475
 
11476
CURSOR prod_cur IS
11477
	SELECT osc.PROD_ID, osc.SEQ_NUM
11478
	  FROM OS_CONTENTS osc
11479
	 WHERE osc.OS_ID = nOsId
11480
	 ORDER BY osc.SEQ_NUM;
11481
prod_rec prod_cur%ROWTYPE;	  
11482
 
11483
BEGIN
11484
	/*--------------- Business Rules Here -------------------*/
11485
	IF sProdIdList IS NULL
11486
	THEN
11487
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
11488
 
11489
	END IF;
11490
	/*-------------------------------------------------------*/
11491
	UPDATE OS_CONTENTS
11492
	SET IS_NODE_SPEC = ''
11493
	WHERE OS_ID = nOsId;
11494
 
11495
	-- Set Nodespec On
11496
	UPDATE OS_CONTENTS
11497
	SET IS_NODE_SPEC = 'on'
11498
	WHERE OS_ID = nOsId
11499
	  AND PROD_ID IN ( 
11500
	  	  		  	    SELECT * 
11501
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
11502
					 );
11503
 
11504
END Add_Products_NodeSpec; 
11505
/*--------------------------------------------------------------------------------------------------*/
11506
PROCEDURE Accept_Reject ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,	
11507
						  nBomId IN BOMS.BOM_ID%TYPE,
11508
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
11509
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
11510
						  nOsId IN NUMBER ) IS
11511
 
11512
IsRejected PRODUCT_DETAILS.IS_REJECTED%TYPE;
11513
 
11514
PkgName VARCHAR2(100);
11515
PkgVersion VARCHAR2(100);
11516
NodeName VARCHAR2(4000);
11517
 
11518
CURSOR curProd IS
11519
	SELECT pd.*
11520
	  FROM PRODUCT_DETAILS pd
11521
	 WHERE pd.PROD_ID = nProdId;
11522
recProd curProd%ROWTYPE;
11523
 
11524
BEGIN
11525
	/*--------------- Business Rules Here -------------------*/
11526
	IF (nProdId IS NULL)
11527
	THEN
11528
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one product.' );
11529
	END IF;
11530
	/*-------------------------------------------------------*/
11531
 
11532
	-- Set new Accept-Reject state
11533
	IsRejected := 'Y';
11534
 
11535
	SELECT NN.NODE_NAME INTO NodeName
11536
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
11537
	WHERE NN.NODE_ID = OS.NODE_ID
11538
	AND OS.OS_ID = nOsId; 	
11539
 
11540
 
11541
	OPEN curProd;
11542
	FETCH curProd INTO recProd;
11543
 
11544
	IF curProd%FOUND THEN
11545
		/* Product Details found */
11546
 
11547
		SELECT PKG.PKG_NAME INTO PkgName
11548
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
11549
		WHERE PV.PV_ID = nProdId
11550
		AND PKG.PKG_ID = PV.PKG_ID;
11551
 
11552
		SELECT PKG_VERSION INTO PkgVersion
11553
		FROM PACKAGE_VERSIONS PV
11554
		WHERE PV.PV_ID = nProdId;	
11555
 
11556
		-- Set new Accept-Reject state
11557
		IF recProd.IS_REJECTED = 'Y' THEN
11558
			IsRejected := 'N';
11559
			-- Log Action --
11560
			pk_Bom.Log_Os_Trail ( nOsId, 
11561
								  'Accepted Product: '||PkgName||' '||PkgVersion||' on Node: '||NodeName,
11562
						  		  nUserId );
11563
 
11564
		ELSE
11565
			IsRejected := 'Y';
11566
			-- Log Action --
11567
			pk_Bom.Log_Os_Trail ( nOsId, 
11568
								  'Rejected Product: '||PkgName||' '||PkgVersion||' on Node: '||NodeName,
11569
						  		  nUserId );			
11570
		END IF;
11571
 
11572
		-- Toggle Accept-Reject State 
11573
		UPDATE PRODUCT_DETAILS pd SET
11574
		pd.IS_REJECTED = IsRejected
11575
		WHERE pd.PROD_ID = nProdId;
11576
 
11577
 
11578
	ELSE
11579
		/* Product Details NOT found */
11580
 
11581
		-- Toggle Accept-Reject State	
11582
		INSERT INTO PRODUCT_DETAILS ( PROD_ID, IS_REJECTED )
11583
		VALUES ( nProdId, IsRejected );
11584
 
11585
 
11586
	END IF;
11587
 
11588
	CLOSE curProd;
11589
 
11590
 
11591
	-- Reflect changes to the BOM level
11592
 
11593
 
11594
 
11595
	/* Log Rejection Trail */
11596
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT'), nProdId, IsRejected, nUserId, sComments );
11597
 
11598
 
11599
END	Accept_Reject;
11600
/*--------------------------------------------------------------------------------------------------*/
11601
PROCEDURE Accept_Reject_List ( nProdIdList IN VARCHAR2,
11602
							   nBomId IN BOMS.BOM_ID%TYPE,
11603
						  	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
11604
						       nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
11605
							   nOsId IN NUMBER ) IS
11606
 
11607
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
11608
 
11609
BEGIN
11610
	/*--------------- Business Rules Here -------------------*/
11611
	IF (nProdIdList IS NULL)
11612
	THEN
11613
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one product.' );
11614
	END IF;
11615
	/*-------------------------------------------------------*/
11616
 
11617
	nIdCollector := IN_LIST_NUMBER ( nProdIdList );
11618
 
11619
	FOR i IN 1..nIdCollector.COUNT
11620
	LOOP
11621
		Accept_Reject ( nIdCollector(i), nBomId, sComments, nUserId, nOsId);
11622
	END LOOP;
11623
 
11624
 
11625
END	Accept_Reject_List;
11626
/*--------------------------------------------------------------------------------------------------*/
11627
PROCEDURE Accept_Reject_Comments ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
11628
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
11629
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
11630
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE ) IS
11631
 
11632
IsRejected REJECTION_TRAIL.IS_REJECTED%TYPE;
11633
 
11634
BEGIN
11635
	/*--------------- Business Rules Here -------------------*/
11636
	IF (nProdId IS NULL)
11637
	THEN
11638
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nProdId= '|| nProdId  );
11639
	END IF;
11640
	/*-------------------------------------------------------*/
11641
 
11642
	IF nRejectSeq IS NULL THEN
11643
		/* CREATE New Note */
11644
 
11645
		-- Get last IsRejected state
11646
		SELECT rt.IS_REJECTED INTO IsRejected
11647
		  FROM REJECTION_TRAIL rt
11648
		 WHERE rt.ENTITY_ID = nProdId
11649
		   AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT')
11650
		   AND ROWNUM = 1
11651
		 ORDER BY rt.REJECT_SEQ;
11652
 
11653
 
11654
		/* Log Rejection Trail */
11655
		pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT'), nProdId, IsRejected, nUserId, sComments );
11656
 
11657
 
11658
	ELSE
11659
		/* EDIT Note */
11660
		UPDATE REJECTION_TRAIL rt SET
11661
			rt.COMMENTS = sComments,
11662
			rt.USER_ID = nUserId,
11663
			rt.DATE_TIME_STAMP = GET_DATETIME()
11664
		WHERE rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT')
11665
		  AND rt.ENTITY_ID = nProdId
11666
		  AND rt.REJECT_SEQ = nRejectSeq;
11667
 
11668
 
11669
	END IF;
11670
 
11671
 
11672
END	Accept_Reject_Comments;
11673
/*--------------------------------------------------------------------------------------------------*/
11674
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
11675
		  			  	  nOsId IN OS_CONTENTS.OS_ID%TYPE,
11676
						  nUserId IN NUMBER ) IS
11677
 
11678
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
11679
	SeqNum NUMBER;
11680
 
11681
BEGIN
11682
	/*--------------- Business Rules Here -------------------*/
11683
	-- Check for parameters
11684
	IF (sProdIdOrder IS NULL)  OR (nOsId IS NULL) 
11685
	THEN
11686
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId='|| nOsId  ||' sProdIdOrder='|| sProdIdOrder  );
11687
	END IF;
11688
	/*-------------------------------------------------------*/
11689
 
11690
	nIdCollector := IN_LIST_NUMBER ( sProdIdOrder );
11691
 
11692
	-- Set start sequence number
11693
	SeqNum := 1;
11694
 
11695
	FOR i IN 1..nIdCollector.COUNT
11696
	LOOP
11697
 
11698
		-- Update new sequence number
11699
		UPDATE OS_CONTENTS osc SET
11700
			osc.SEQ_NUM = SeqNum
11701
		 WHERE osc.OS_ID = nOsId
11702
		   AND osc.PROD_ID = nIdCollector(i);
11703
 
11704
		SeqNum := SeqNum + 1;
11705
 
11706
	END LOOP;
11707
 
11708
 
11709
END	Sort_Products;
11710
/*--------------------------------------------------------------------------------------------------*/
11711
PROCEDURE Remove_Obsolete_Patches ( nOsId IN OS_CONTENTS.OS_ID%TYPE,
11712
		  						  	nUserId IN NUMBER ) IS
11713
 
11714
 
11715
NextSeqNum NUMBER := 1;									
11716
 
11717
 
11718
CURSOR prod_cur IS
11719
	SELECT osc.PROD_ID, osc.SEQ_NUM
11720
	  FROM OS_CONTENTS osc
11721
	 WHERE osc.OS_ID = nOsId
11722
	 ORDER BY osc.SEQ_NUM;
11723
prod_rec prod_cur%ROWTYPE;										
11724
 
11725
 
11726
BEGIN
11727
 
11728
	 -- Delete Obsolete Patches in the OS.
11729
	 DELETE FROM OS_CONTENTS 
11730
	 WHERE OS_ID = nOsId
11731
	 AND PROD_ID IN 
11732
	 (
11733
	 	  SELECT osc.PROD_ID
11734
	 	  FROM OS_CONTENTS osc, PACKAGE_VERSIONS pv
11735
		  WHERE pv.PV_ID = osc.PROD_ID
11736
		  AND pv.IS_OBSOLETE = 'Y'
11737
		  AND osc.OS_ID = nOsId
11738
	 );  	
11739
 
11740
 
11741
	-- Update Seq Numbers
11742
	OPEN prod_cur;
11743
	FETCH prod_cur INTO prod_rec;
11744
 
11745
	WHILE prod_cur%FOUND
11746
	LOOP
11747
 
11748
		UPDATE OS_CONTENTS SET
11749
		SEQ_NUM = NextSeqNum
11750
		WHERE OS_ID = nOsId
11751
		  AND PROD_ID = prod_rec.PROD_ID;
11752
 
11753
		NextSeqNum := NextSeqNum + 1;
11754
		FETCH prod_cur INTO prod_rec;
11755
 
11756
 
11757
	END LOOP;
11758
 
11759
	CLOSE prod_cur;	 								
11760
 
11761
END Remove_Obsolete_Patches;
11762
/*--------------------------------------------------------------------------------------------------*/
11763
FUNCTION GET_OS_ID ( PvId IN NUMBER ) RETURN NUMBER IS
11764
 
11765
	ReturnValue NUMBER;
11766
 
11767
BEGIN
11768
	SELECT osc.OS_ID INTO ReturnValue
11769
	  FROM OS_CONTENTS osc
11770
	 WHERE osc.PROD_ID = PvId;
11771
 
11772
	RETURN ReturnValue;
11773
END;
11774
/*--------------------------------------------------------------------------------------------------*/
11775
FUNCTION GET_NODE_ID ( OsId IN NUMBER ) RETURN NUMBER IS
11776
 
11777
	ReturnValue NUMBER;
11778
 
11779
BEGIN
11780
	SELECT os.NODE_ID INTO ReturnValue
11781
	  FROM OPERATING_SYSTEMS os
11782
	 WHERE os.OS_ID = OsId;
11783
 
11784
	RETURN ReturnValue;
11785
END;
11786
/*-------------------------------------------------------------------------------------------------------*/
11787
 
11788
/*-------------------------------------------------------------------------------------------------------*/
11789
 
11790
 
11791
END pk_Product_Test;
11792
/
11793