Subversion Repositories DevTools

Rev

Rev 4534 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3926 dpurdie 1
--------------------------------------------------------
4534 dpurdie 2
--  File created - Tuesday-September-23-2014   
3926 dpurdie 3
--------------------------------------------------------
4534 dpurdie 4
--------------------------------------------------------
5
--  DDL for Type DEPMGR_NUMBER_TAB_T
6
--------------------------------------------------------
7
 
8
  CREATE OR REPLACE TYPE "DEPMGR_NUMBER_TAB_T" as TABLE of NUMBER
9
 
10
/
11
 
12
/
13
--------------------------------------------------------
14
--  DDL for Type SPLIT_TBL
15
--------------------------------------------------------
16
 
17
  CREATE OR REPLACE TYPE "SPLIT_TBL" as table of varchar2(32767)
18
 
19
/
20
 
21
/
22
--------------------------------------------------------
23
--  DDL for Sequence SEQ_ARTICLE_ID
24
--------------------------------------------------------
25
 
26
   CREATE SEQUENCE  "SEQ_ARTICLE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 10000 CACHE 20 ORDER  NOCYCLE ;
27
/
28
--------------------------------------------------------
29
--  DDL for Sequence SEQ_BASE_ENV_ID
30
--------------------------------------------------------
31
 
32
   CREATE SEQUENCE  "SEQ_BASE_ENV_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 81675 CACHE 20 ORDER  NOCYCLE ;
33
/
34
--------------------------------------------------------
35
--  DDL for Sequence SEQ_BOM_ID
36
--------------------------------------------------------
37
 
38
   CREATE SEQUENCE  "SEQ_BOM_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 85984 CACHE 20 ORDER  NOCYCLE ;
39
/
40
--------------------------------------------------------
41
--  DDL for Sequence SEQ_BOM_NAME_ID
42
--------------------------------------------------------
43
 
44
   CREATE SEQUENCE  "SEQ_BOM_NAME_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1501 CACHE 20 ORDER  NOCYCLE ;
45
/
46
--------------------------------------------------------
47
--  DDL for Sequence SEQ_BRANCH_ID
48
--------------------------------------------------------
49
 
50
   CREATE SEQUENCE  "SEQ_BRANCH_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 4941 CACHE 20 ORDER  NOCYCLE ;
51
/
52
--------------------------------------------------------
53
--  DDL for Sequence SEQ_HARDWARE_NAME_ID
54
--------------------------------------------------------
55
 
56
   CREATE SEQUENCE  "SEQ_HARDWARE_NAME_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 61 CACHE 20 ORDER  NOCYCLE ;
57
/
58
--------------------------------------------------------
59
--  DDL for Sequence SEQ_MSG_ID
60
--------------------------------------------------------
61
 
62
   CREATE SEQUENCE  "SEQ_MSG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 462 CACHE 20 ORDER  NOCYCLE ;
63
/
64
--------------------------------------------------------
65
--  DDL for Sequence SEQ_NODE_ID
66
--------------------------------------------------------
67
 
68
   CREATE SEQUENCE  "SEQ_NODE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 171695 CACHE 20 ORDER  NOCYCLE ;
69
/
70
--------------------------------------------------------
71
--  DDL for Sequence SEQ_OS_ID
72
--------------------------------------------------------
73
 
74
   CREATE SEQUENCE  "SEQ_OS_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 177041 CACHE 20 ORDER  NOCYCLE ;
75
/
76
--------------------------------------------------------
77
--  DDL for Sequence SEQ_PROC_ID
78
--------------------------------------------------------
79
 
80
   CREATE SEQUENCE  "SEQ_PROC_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1441 CACHE 20 ORDER  NOCYCLE ;
81
/
82
--------------------------------------------------------
83
--  DDL for Sequence SEQ_PROJ_ID
84
--------------------------------------------------------
85
 
86
   CREATE SEQUENCE  "SEQ_PROJ_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 881 CACHE 20 ORDER  NOCYCLE ;
87
/
88
--------------------------------------------------------
89
--  DDL for Sequence SEQ_STATE_ID
90
--------------------------------------------------------
91
 
92
   CREATE SEQUENCE  "SEQ_STATE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1621 CACHE 20 ORDER  NOCYCLE ;
93
/
94
--------------------------------------------------------
95
--  DDL for Sequence SEQ_UNIT_TESTS
96
--------------------------------------------------------
97
 
98
   CREATE SEQUENCE  "SEQ_UNIT_TESTS"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 541 CACHE 20 ORDER  NOCYCLE ;
99
/
100
--------------------------------------------------------
101
--  DDL for Table ACTION_TRAIL
102
--------------------------------------------------------
103
 
104
  CREATE TABLE "ACTION_TRAIL" 
105
   (	"ACTION_STAMP" DATE, 
106
	"USER_ID" NUMBER, 
107
	"ACTION_EVENT" NUMBER, 
108
	"METHOD_CALL" VARCHAR2(4000), 
109
	"ACTION_SCRIPT" VARCHAR2(4000), 
110
	"ACTION_DESCRIPTION" VARCHAR2(4000)
111
   ) ;
112
/
113
--------------------------------------------------------
114
--  DDL for Table BASE_ENV
115
--------------------------------------------------------
116
 
117
  CREATE TABLE "BASE_ENV" 
118
   (	"BASE_ENV_ID" NUMBER, 
119
	"BOS_ID" NUMBER, 
120
	"BASE_ENV_NAME" VARCHAR2(50), 
121
	"OLD_BASE_ENV_ID" NUMBER, 
122
	"BOM_ID" NUMBER
123
   ) ;
124
/
125
--------------------------------------------------------
126
--  DDL for Table BASE_ENV_CONTENTS
127
--------------------------------------------------------
128
 
129
  CREATE TABLE "BASE_ENV_CONTENTS" 
130
   (	"BASE_ENV_ID" NUMBER, 
131
	"PROD_ID" NUMBER, 
132
	"BASE_ENV_COMMENTS" VARCHAR2(4000), 
133
	"SEQ_NUM" NUMBER, 
134
	"IS_NODE_SPEC" VARCHAR2(2), 
135
	"NOT_XML" VARCHAR2(2)
136
   ) ;
137
/
138
--------------------------------------------------------
139
--  DDL for Table BOMS
140
--------------------------------------------------------
141
 
142
  CREATE TABLE "BOMS" 
143
   (	"BOM_ID" NUMBER, 
144
	"BRANCH_ID" NUMBER, 
145
	"BOM_NAME_ID" NUMBER, 
146
	"BOM_VERSION" VARCHAR2(4000), 
147
	"IS_REJECTED" CHAR(1), 
148
	"IS_READONLY" CHAR(1), 
149
	"IS_HIDDEN" CHAR(1), 
150
	"BOM_COMMENTS" VARCHAR2(4000), 
151
	"BOM_LIFECYCLE" VARCHAR2(4000), 
152
	"OLD_BOM_ID" NUMBER, 
153
	"PARENT_BOM_ID" NUMBER, 
154
	"RTAG_ID_FK" NUMBER, 
155
	"PDF_ATTACHMENT_PATH" VARCHAR2(4000)
156
   ) ;
157
/
158
--------------------------------------------------------
159
--  DDL for Table BOM_CONTENTS
160
--------------------------------------------------------
161
 
162
  CREATE TABLE "BOM_CONTENTS" 
163
   (	"BOM_ID" NUMBER, 
164
	"NODE_ID" NUMBER, 
165
	"SEQ_NUM" NUMBER
166
   ) ;
167
/
168
--------------------------------------------------------
169
--  DDL for Table BOM_NAMES
170
--------------------------------------------------------
171
 
172
  CREATE TABLE "BOM_NAMES" 
173
   (	"BOM_NAME_ID" NUMBER, 
174
	"BOM_NAME" VARCHAR2(255)
175
   ) ;
176
/
177
--------------------------------------------------------
178
--  DDL for Table BOM_NOTES
179
--------------------------------------------------------
180
 
181
  CREATE TABLE "BOM_NOTES" 
182
   (	"BOM_ID" NUMBER, 
183
	"BOM_SCOPE" NUMBER, 
184
	"SCOPE_ID" NUMBER, 
185
	"ARTICLE_ID" NUMBER
186
   ) ;
187
/
188
--------------------------------------------------------
189
--  DDL for Table BOM_STATE
190
--------------------------------------------------------
191
 
192
  CREATE TABLE "BOM_STATE" 
193
   (	"BOM_ID" NUMBER, 
194
	"STATE_ID" NUMBER, 
195
	"DATE_STAMP" DATE, 
196
	"USER_ID" NUMBER, 
197
	"IS_DISPLAYED" CHAR(1)
198
   ) ;
199
/
200
--------------------------------------------------------
201
--  DDL for Table BOM_STATE20100609
202
--------------------------------------------------------
203
 
204
  CREATE TABLE "BOM_STATE20100609" 
205
   (	"BOM_ID" NUMBER, 
206
	"STATE_ID" NUMBER, 
207
	"DATE_STAMP" DATE, 
208
	"USER_ID" NUMBER, 
209
	"IS_DISPLAYED" CHAR(1)
210
   ) ;
211
/
212
--------------------------------------------------------
213
--  DDL for Table BOM_TRAIL
214
--------------------------------------------------------
215
 
216
  CREATE TABLE "BOM_TRAIL" 
217
   (	"BOM_ID" NUMBER, 
218
	"TRAIL_ACTION" VARCHAR2(4000), 
219
	"TRAIL_COMMENTS" VARCHAR2(4000), 
220
	"USER_ID" NUMBER, 
221
	"DATE_TIME_STAMP" DATE
222
   ) ;
223
/
224
--------------------------------------------------------
225
--  DDL for Table BOS_TYPES
226
--------------------------------------------------------
227
 
228
  CREATE TABLE "BOS_TYPES" 
229
   (	"BOS_ID" NUMBER, 
230
	"BOS_TYPE" VARCHAR2(50), 
231
	"BOS_ICON" VARCHAR2(50), 
232
	"BOS_ORDER" NUMBER, 
233
	"ELECTRONIC_NAME" VARCHAR2(50)
234
   ) ;
235
/
236
--------------------------------------------------------
237
--  DDL for Table BRANCHES
238
--------------------------------------------------------
239
 
240
  CREATE TABLE "BRANCHES" 
241
   (	"BRANCH_ID" NUMBER, 
242
	"PROJ_ID" NUMBER, 
243
	"BRANCH_NAME" VARCHAR2(255), 
244
	"RM_VTREE_FK" NUMBER, 
245
	"IS_HIDDEN" CHAR(1), 
246
	"BRANCH_COMMENTS" VARCHAR2(4000)
247
   ) ;
248
/
249
--------------------------------------------------------
250
--  DDL for Table DEF_ACTION_BUTTONS
251
--------------------------------------------------------
252
 
253
  CREATE TABLE "DEF_ACTION_BUTTONS" 
254
   (	"ABTN_ID" NUMBER, 
255
	"ABTN_NAME" VARCHAR2(1000), 
256
	"TEXT" VARCHAR2(50), 
257
	"ACTION_LINK" VARCHAR2(4000), 
258
	"EVENT_HANDLER" VARCHAR2(4000), 
259
	"IMG_ENABLED" VARCHAR2(1000), 
260
	"IMG_DISABLED" VARCHAR2(1000), 
261
	"HINT" VARCHAR2(1000), 
262
	"VISIBLE" CHAR(1), 
263
	"ACTIVE" CHAR(1), 
264
	"IS_READONLY_ACTION" CHAR(1)
265
   ) ;
266
/
267
--------------------------------------------------------
268
--  DDL for Table DEF_MENU_ITEMS
269
--------------------------------------------------------
270
 
271
  CREATE TABLE "DEF_MENU_ITEMS" 
272
   (	"ITEM_ID" NUMBER, 
273
	"ITEM_NAME" VARCHAR2(1000), 
274
	"TEXT" VARCHAR2(255), 
275
	"ACTION_LINK" VARCHAR2(255), 
276
	"EVENT_HANDLER" VARCHAR2(4000), 
277
	"IMG_ENABLED" VARCHAR2(4000), 
278
	"IMG_DISABLED" VARCHAR2(4000), 
279
	"HINT" VARCHAR2(50), 
280
	"VISIBLE" CHAR(1), 
281
	"ACTIVE" CHAR(1)
282
   ) ;
283
/
284
--------------------------------------------------------
285
--  DDL for Table DM_PROJECTS
286
--------------------------------------------------------
287
 
288
  CREATE TABLE "DM_PROJECTS" 
289
   (	"PROJ_ID" NUMBER, 
290
	"PROJ_NAME" VARCHAR2(255), 
291
	"RM_PROJECTS_FK" NUMBER, 
292
	"IS_HIDDEN" CHAR(1), 
293
	"IS_DOWNLOAD" CHAR(1)
294
   ) ;
295
/
296
--------------------------------------------------------
297
--  DDL for Table HARDWARE
298
--------------------------------------------------------
299
 
300
  CREATE TABLE "HARDWARE" 
301
   (	"HARDWARE_NAME_ID" NUMBER, 
302
	"BOM_ID" NUMBER, 
303
	"HARDWARE_NAME" VARCHAR2(255), 
304
	"TIER_NAME" VARCHAR2(255), 
305
	"OLD_HARDWARE_NAME_ID" NUMBER
306
   ) ;
307
/
308
--------------------------------------------------------
309
--  DDL for Table HARDWARE_NODE
310
--------------------------------------------------------
311
 
312
  CREATE TABLE "HARDWARE_NODE" 
313
   (	"HARDWARE_NAME_ID" NUMBER, 
314
	"NODE_ID" NUMBER
315
   ) ;
316
/
317
--------------------------------------------------------
318
--  DDL for Table HIDE_PRODUCTS
319
--------------------------------------------------------
320
 
321
  CREATE TABLE "HIDE_PRODUCTS" 
322
   (	"OS_ID" NUMBER, 
323
	"PROD_ID" NUMBER
324
   ) ;
325
/
326
--------------------------------------------------------
327
--  DDL for Table KNOWLEDGE_BASE
328
--------------------------------------------------------
329
 
330
  CREATE TABLE "KNOWLEDGE_BASE" 
331
   (	"ARTICLE_ID" NUMBER, 
332
	"ARTICLE_TITLE" VARCHAR2(4000), 
333
	"ARTICLE_DETAILS" VARCHAR2(4000), 
334
	"VISIBILITY_LEVEL_FK" NUMBER, 
335
	"IS_READONLY" CHAR(1), 
336
	"CREATED_STAMP" DATE, 
337
	"CREATOR_ID" NUMBER, 
338
	"MOD_STAMP" DATE, 
339
	"MODIFIER_ID" NUMBER
340
   ) ;
341
/
342
--------------------------------------------------------
343
--  DDL for Table MESSAGE_BOARD
344
--------------------------------------------------------
345
 
346
  CREATE TABLE "MESSAGE_BOARD" 
347
   (	"MSG_ID" NUMBER, 
348
	"MSG_DETAILS" VARCHAR2(2000), 
349
	"SUBMITION_DATE" DATE, 
350
	"EXPIRY_DATE" DATE, 
351
	"DUE_DATE" DATE
352
   ) ;
353
/
354
--------------------------------------------------------
355
--  DDL for Table NETWORK_NODES
356
--------------------------------------------------------
357
 
358
  CREATE TABLE "NETWORK_NODES" 
359
   (	"NODE_ID" NUMBER, 
360
	"NODE_TYPE_ID" NUMBER, 
361
	"NODE_NAME" VARCHAR2(255), 
362
	"NODE_COMMENTS" VARCHAR2(4000), 
363
	"OLD_NODE_ID" NUMBER, 
364
	"NODE_VERSION" VARCHAR2(4000), 
365
	"NODE_LIFE_CYCLE" NUMBER, 
366
	"NOT_XML" VARCHAR2(2)
367
   ) ;
368
/
369
--------------------------------------------------------
370
--  DDL for Table NODE_TRAIL
371
--------------------------------------------------------
372
 
373
  CREATE TABLE "NODE_TRAIL" 
374
   (	"NODE_ID" NUMBER, 
375
	"TRAIL_ACTION" VARCHAR2(4000), 
376
	"USER_ID" NUMBER, 
377
	"DATE_TIME_STAMP" DATE
378
   ) ;
379
/
380
--------------------------------------------------------
381
--  DDL for Table NODE_TYPES
382
--------------------------------------------------------
383
 
384
  CREATE TABLE "NODE_TYPES" 
385
   (	"NODE_TYPE_ID" NUMBER, 
386
	"NODE_TYPE" VARCHAR2(50), 
387
	"NODE_ICON" VARCHAR2(50), 
388
	"NODE_IMAGE" VARCHAR2(50), 
389
	"NODE_ORDER" NUMBER
390
   ) ;
391
/
392
--------------------------------------------------------
393
--  DDL for Table NOTIFY_USER
394
--------------------------------------------------------
395
 
396
  CREATE TABLE "NOTIFY_USER" 
397
   (	"PROJ_ID" NUMBER, 
398
	"USER_ID" NUMBER, 
399
	"EVENT_ENUM" NUMBER
400
   ) ;
401
/
402
--------------------------------------------------------
403
--  DDL for Table OPERATING_SYSTEMS
404
--------------------------------------------------------
405
 
406
  CREATE TABLE "OPERATING_SYSTEMS" 
407
   (	"OS_ID" NUMBER, 
408
	"OS_NAME" VARCHAR2(50), 
409
	"NODE_ID" NUMBER, 
410
	"OS_COMMENTS" VARCHAR2(4000), 
411
	"OLD_OS_ID" NUMBER, 
412
	"NODE_SPEC_FILE" VARCHAR2(4000), 
413
	"NOT_XML" VARCHAR2(2)
414
   ) ;
415
/
416
--------------------------------------------------------
417
--  DDL for Table OS_BASE_ENV
418
--------------------------------------------------------
419
 
420
  CREATE TABLE "OS_BASE_ENV" 
421
   (	"OS_ID" NUMBER, 
422
	"BASE_ENV_ID" NUMBER
423
   ) ;
424
/
425
--------------------------------------------------------
426
--  DDL for Table OS_CONTENTS
427
--------------------------------------------------------
428
 
429
  CREATE TABLE "OS_CONTENTS" 
430
   (	"OS_ID" NUMBER, 
431
	"SEQ_NUM" NUMBER, 
432
	"PROD_ID" NUMBER, 
433
	"PRODUCT_COMMENTS" VARCHAR2(4000), 
434
	"CHANGE_LOG_FLAG" CHAR(1), 
435
	"IS_NODE_SPEC" VARCHAR2(2), 
436
	"NOT_XML" VARCHAR2(2)
437
   ) ;
438
 
439
   COMMENT ON COLUMN "OS_CONTENTS"."CHANGE_LOG_FLAG" IS 'cvn';
440
   COMMENT ON TABLE "OS_CONTENTS"  IS 'CHANGE_LOG_FLAG: 
441
N - new 
442
U - updated version';
443
/
444
--------------------------------------------------------
445
--  DDL for Table OS_TRAIL
446
--------------------------------------------------------
447
 
448
  CREATE TABLE "OS_TRAIL" 
449
   (	"OS_ID" NUMBER, 
450
	"TRAIL_ACTION" VARCHAR2(4000), 
451
	"USER_ID" NUMBER, 
452
	"DATE_TIME_STAMP" DATE
453
   ) ;
454
/
455
--------------------------------------------------------
456
--  DDL for Table PACKAGE_TRAIL
457
--------------------------------------------------------
458
 
459
  CREATE TABLE "PACKAGE_TRAIL" 
460
   (	"PKG_ID" NUMBER, 
461
	"TRAIL_ACTION" VARCHAR2(4000), 
462
	"USER_ID" NUMBER, 
463
	"DATE_TIME_STAMP" DATE
464
   ) ;
465
/
466
--------------------------------------------------------
467
--  DDL for Table PROCESSES_CONFIG
468
--------------------------------------------------------
469
 
470
  CREATE TABLE "PROCESSES_CONFIG" 
471
   (	"PROC_ID" NUMBER, 
472
	"PROD_ID" NUMBER, 
473
	"OS_ID" NUMBER, 
474
	"PKG_HEALTH_TAG" VARCHAR2(255), 
475
	"CMD_INTERFACE" VARCHAR2(4000), 
476
	"PKG_OWNER" VARCHAR2(4000), 
477
	"IS_INTERFACE" CHAR(1), 
478
	"PROC_DESCRIPTION" VARCHAR2(4000), 
479
	"PKG_ID" NUMBER
480
   ) ;
481
/
482
--------------------------------------------------------
483
--  DDL for Table PRODUCTION_BOM
484
--------------------------------------------------------
485
 
486
  CREATE TABLE "PRODUCTION_BOM" 
487
   (	"PROJ_ID" NUMBER, 
488
	"BOM_ID" NUMBER, 
489
	"STATE_ID" NUMBER
490
   ) ;
491
/
492
--------------------------------------------------------
493
--  DDL for Table PRODUCTS_QUEUE
494
--------------------------------------------------------
495
 
496
  CREATE TABLE "PRODUCTS_QUEUE" 
497
   (	"PRODQ_ID" NUMBER, 
498
	"PROJ_ID" NUMBER, 
499
	"PROD_ID" NUMBER, 
500
	"ARRIVAL_STAMP" DATE
501
   ) ;
502
/
503
--------------------------------------------------------
504
--  DDL for Table PRODUCT_DETAILS
505
--------------------------------------------------------
506
 
507
  CREATE TABLE "PRODUCT_DETAILS" 
508
   (	"PROD_ID" NUMBER, 
509
	"IS_REJECTED" CHAR(1)
510
   ) ;
511
/
512
--------------------------------------------------------
513
--  DDL for Table PRODUCT_NOTES
514
--------------------------------------------------------
515
 
516
  CREATE TABLE "PRODUCT_NOTES" 
517
   (	"PROD_ID" NUMBER, 
518
	"NOTES" VARCHAR2(4000)
519
   ) ;
520
/
521
--------------------------------------------------------
522
--  DDL for Table PRODUCT_TRAIL
523
--------------------------------------------------------
524
 
525
  CREATE TABLE "PRODUCT_TRAIL" 
526
   (	"PROD_ID" NUMBER, 
527
	"TRAIL_ACTION" VARCHAR2(4000), 
528
	"USER_ID" NUMBER, 
529
	"DATE_TIME_STAMP" DATE
530
   ) ;
531
/
532
--------------------------------------------------------
533
--  DDL for Table REJECTION_TRAIL
534
--------------------------------------------------------
535
 
536
  CREATE TABLE "REJECTION_TRAIL" 
537
   (	"ENUM_ENTITY_TYPE" NUMBER, 
538
	"ENTITY_ID" NUMBER, 
539
	"REJECT_SEQ" NUMBER, 
540
	"IS_REJECTED" CHAR(1), 
541
	"COMMENTS" VARCHAR2(4000), 
542
	"DATE_TIME_STAMP" DATE, 
543
	"USER_ID" NUMBER
544
   ) ;
545
/
546
--------------------------------------------------------
547
--  DDL for Table RELATED_ARTICLES
548
--------------------------------------------------------
549
 
550
  CREATE TABLE "RELATED_ARTICLES" 
551
   (	"ARTICLE_ID" NUMBER, 
552
	"RARTICLE_ID" NUMBER
553
   ) ;
554
/
555
--------------------------------------------------------
556
--  DDL for Table RELEASE_AUTHORISATION
557
--------------------------------------------------------
558
 
559
  CREATE TABLE "RELEASE_AUTHORISATION" 
560
   (	"PV_ID" NUMBER, 
561
	"BOM_ID" NUMBER, 
562
	"TESTER_ID" NUMBER, 
563
	"TESTER_COMMENTS" VARCHAR2(4000), 
564
	"TESTER_DATESTAMP" DATE, 
565
	"MANAGER_ID" NUMBER, 
566
	"MANAGER_COMMENTS" VARCHAR2(4000), 
567
	"MANAGER_DATESTAMP" DATE, 
568
	"IS_OFFICIAL" CHAR(1 CHAR)
569
   ) ;
570
/
571
--------------------------------------------------------
572
--  DDL for Table STATES
573
--------------------------------------------------------
574
 
575
  CREATE TABLE "STATES" 
576
   (	"STATE_ID" NUMBER, 
577
	"PROJ_ID" NUMBER, 
578
	"STATE_NAME" VARCHAR2(255), 
579
	"STATE_SEQ" NUMBER, 
580
	"STATE_TYPE_ENUM" NUMBER, 
581
	"IS_DOWNLOAD" CHAR(1)
582
   ) ;
583
 
584
   COMMENT ON TABLE "STATES"  IS '1 Integration
585
2 Released To Testing
586
3 Released To Region
587
4 Released To Customer';
588
/
589
--------------------------------------------------------
590
--  DDL for Table SYSTEM_CONFIGURATION
591
--------------------------------------------------------
592
 
593
  CREATE TABLE "SYSTEM_CONFIGURATION" 
594
   (	"ITEM_NAME" VARCHAR2(255), 
595
	"ITEM_VALUE" VARCHAR2(4000), 
596
	"ITEM_DESCRIPTION" VARCHAR2(4000)
597
   ) ;
598
/
599
--------------------------------------------------------
600
--  DDL for Table TABLEOFCONTENTS
601
--------------------------------------------------------
602
 
603
  CREATE TABLE "TABLEOFCONTENTS" 
604
   (	"GROUPER" VARCHAR2(1000), 
605
	"PAGE" NUMBER(*,0), 
606
	"DATETIME" DATE
607
   ) ;
608
/
609
--------------------------------------------------------
610
--  DDL for Table TEST_TYPES
611
--------------------------------------------------------
612
 
613
  CREATE TABLE "TEST_TYPES" 
614
   (	"TEST_TYPE_ID" NUMBER, 
615
	"TEST_TYPE_NAME" VARCHAR2(50), 
616
	"DISPLAY_ORDER" NUMBER
617
   ) ;
618
/
619
--------------------------------------------------------
620
--  DDL for Table UNIT_TESTS
621
--------------------------------------------------------
622
 
623
  CREATE TABLE "UNIT_TESTS" 
624
   (	"TEST_ID" NUMBER, 
625
	"PV_ID" NUMBER, 
626
	"TEST_TYPES_FK" NUMBER, 
627
	"TEST_SUMMARY" VARCHAR2(4000), 
628
	"COMPLETION_DATE" DATE, 
629
	"COMPLETED_BY" NUMBER, 
630
	"RESULTS_URL" VARCHAR2(2000), 
631
	"RESULTS_ATTACHMENT_NAME" VARCHAR2(2000)
632
   ) ;
633
/
634
--------------------------------------------------------
635
--  DDL for Table VALIDATION_RULES
636
--------------------------------------------------------
637
 
638
  CREATE TABLE "VALIDATION_RULES" 
639
   (	"FIELD_NAME" VARCHAR2(1000), 
640
	"IS_REQUIRED" CHAR(1), 
641
	"IS_NUMERIC" CHAR(1), 
642
	"MIN_NUMERIC_VALUE" NUMBER, 
643
	"MAX_NUMERIC_VALUE" NUMBER, 
644
	"IS_DATE" CHAR(1), 
645
	"START_DATE" DATE, 
646
	"END_DATE" DATE, 
647
	"MIN_STRING_LENGTH" NUMBER, 
648
	"MAX_STRING_LENGTH" NUMBER, 
649
	"REGEXP" VARCHAR2(4000), 
650
	"REGEXP_DESCRIPTION" VARCHAR2(50)
651
   ) ;
652
/
653
--------------------------------------------------------
654
--  DDL for Index INX_BASE_ENV_BOM_ID
655
--------------------------------------------------------
656
 
657
  CREATE INDEX "INX_BASE_ENV_BOM_ID" ON "BASE_ENV" ("BOM_ID") 
658
  ;
659
/
660
--------------------------------------------------------
661
--  DDL for Index PK_BOS_TYPES
662
--------------------------------------------------------
663
 
664
  CREATE UNIQUE INDEX "PK_BOS_TYPES" ON "BOS_TYPES" ("BOS_ID") 
665
  ;
666
/
667
--------------------------------------------------------
668
--  DDL for Index PRODUCT_NOTES_PK
669
--------------------------------------------------------
670
 
671
  CREATE UNIQUE INDEX "PRODUCT_NOTES_PK" ON "PRODUCT_NOTES" ("PROD_ID") 
672
  ;
673
/
674
--------------------------------------------------------
675
--  DDL for Index INX_OLD_BASE_ENV_ID
676
--------------------------------------------------------
677
 
678
  CREATE INDEX "INX_OLD_BASE_ENV_ID" ON "BASE_ENV" ("OLD_BASE_ENV_ID") 
679
  ;
680
/
681
--------------------------------------------------------
682
--  DDL for Index PK_DM_PROJECTS
683
--------------------------------------------------------
684
 
685
  CREATE UNIQUE INDEX "PK_DM_PROJECTS" ON "DM_PROJECTS" ("PROJ_ID") 
686
  ;
687
/
688
--------------------------------------------------------
689
--  DDL for Index INX_OLD_OS_ID
690
--------------------------------------------------------
691
 
692
  CREATE INDEX "INX_OLD_OS_ID" ON "OPERATING_SYSTEMS" ("OLD_OS_ID") 
693
  ;
694
/
695
--------------------------------------------------------
696
--  DDL for Index PK_NODE_TYPES
697
--------------------------------------------------------
698
 
699
  CREATE UNIQUE INDEX "PK_NODE_TYPES" ON "NODE_TYPES" ("NODE_TYPE_ID") 
700
  ;
701
/
702
--------------------------------------------------------
703
--  DDL for Index PK_DEF_ACTION_BUTTONS
704
--------------------------------------------------------
705
 
706
  CREATE UNIQUE INDEX "PK_DEF_ACTION_BUTTONS" ON "DEF_ACTION_BUTTONS" ("ABTN_ID") 
707
  ;
708
/
709
--------------------------------------------------------
710
--  DDL for Index UNQ_HARDWARE_NODE
711
--------------------------------------------------------
712
 
713
  CREATE UNIQUE INDEX "UNQ_HARDWARE_NODE" ON "HARDWARE_NODE" ("HARDWARE_NAME_ID", "NODE_ID") 
714
  ;
715
/
716
--------------------------------------------------------
717
--  DDL for Index PK_BASE_ENV
718
--------------------------------------------------------
719
 
720
  CREATE UNIQUE INDEX "PK_BASE_ENV" ON "BASE_ENV" ("BASE_ENV_ID") 
721
  ;
722
/
723
--------------------------------------------------------
724
--  DDL for Index UNQ_HARDWARE
725
--------------------------------------------------------
726
 
727
  CREATE UNIQUE INDEX "UNQ_HARDWARE" ON "HARDWARE" ("BOM_ID", "HARDWARE_NAME") 
728
  ;
729
/
730
--------------------------------------------------------
731
--  DDL for Index INX_KB_ARTICLE_DETAILS
732
--------------------------------------------------------
733
 
734
  CREATE INDEX "INX_KB_ARTICLE_DETAILS" ON "KNOWLEDGE_BASE" ("ARTICLE_DETAILS") 
735
  ;
736
/
737
--------------------------------------------------------
738
--  DDL for Index UNQ_OS_BASE_ENV
739
--------------------------------------------------------
740
 
741
  CREATE UNIQUE INDEX "UNQ_OS_BASE_ENV" ON "OS_BASE_ENV" ("OS_ID", "BASE_ENV_ID") 
742
  ;
743
/
744
--------------------------------------------------------
745
--  DDL for Index UNQ_BOS_TYPES
746
--------------------------------------------------------
747
 
748
  CREATE UNIQUE INDEX "UNQ_BOS_TYPES" ON "BOS_TYPES" ("BOS_TYPE") 
749
  ;
750
/
751
--------------------------------------------------------
752
--  DDL for Index INX_OS_NODE_ID
753
--------------------------------------------------------
754
 
755
  CREATE INDEX "INX_OS_NODE_ID" ON "OPERATING_SYSTEMS" ("NODE_ID") 
756
  ;
757
/
758
--------------------------------------------------------
759
--  DDL for Index INX_OLD_HARDWARE_NAME_ID
760
--------------------------------------------------------
761
 
762
  CREATE INDEX "INX_OLD_HARDWARE_NAME_ID" ON "HARDWARE" ("OLD_HARDWARE_NAME_ID") 
763
  ;
764
/
765
--------------------------------------------------------
766
--  DDL for Index INX_BOM_NOTES
767
--------------------------------------------------------
768
 
769
  CREATE INDEX "INX_BOM_NOTES" ON "BOM_NOTES" ("BOM_ID", "BOM_SCOPE", "SCOPE_ID") 
770
  ;
771
/
772
--------------------------------------------------------
773
--  DDL for Index INX_PC_PROC_ID
774
--------------------------------------------------------
775
 
776
  CREATE INDEX "INX_PC_PROC_ID" ON "PROCESSES_CONFIG" ("PROC_ID") 
777
  ;
778
/
779
--------------------------------------------------------
780
--  DDL for Index UNQ_NODE_TYPES
781
--------------------------------------------------------
782
 
783
  CREATE UNIQUE INDEX "UNQ_NODE_TYPES" ON "NODE_TYPES" ("NODE_TYPE") 
784
  ;
785
/
786
--------------------------------------------------------
787
--  DDL for Index UNQ_OS_CONTENTS
788
--------------------------------------------------------
789
 
790
  CREATE UNIQUE INDEX "UNQ_OS_CONTENTS" ON "OS_CONTENTS" ("OS_ID", "PROD_ID") 
791
  ;
792
/
793
--------------------------------------------------------
794
--  DDL for Index INX_BT_BOM_ID
795
--------------------------------------------------------
796
 
797
  CREATE INDEX "INX_BT_BOM_ID" ON "BOM_TRAIL" ("BOM_ID") 
798
  ;
799
/
800
--------------------------------------------------------
801
--  DDL for Index INX_BO_BOM_NAME_ID
802
--------------------------------------------------------
803
 
804
  CREATE INDEX "INX_BO_BOM_NAME_ID" ON "BOMS" ("BOM_NAME_ID") 
805
  ;
806
/
807
--------------------------------------------------------
808
--  DDL for Index INX_BO_BRANCH_ID
809
--------------------------------------------------------
810
 
811
  CREATE INDEX "INX_BO_BRANCH_ID" ON "BOMS" ("BRANCH_ID") 
812
  ;
813
/
814
--------------------------------------------------------
815
--  DDL for Index UNQ_POPUP_MENU_DEF
816
--------------------------------------------------------
817
 
818
  CREATE UNIQUE INDEX "UNQ_POPUP_MENU_DEF" ON "DEF_MENU_ITEMS" ("ITEM_NAME") 
819
  ;
820
/
821
--------------------------------------------------------
822
--  DDL for Index INX_PC_OS_ID
823
--------------------------------------------------------
824
 
825
  CREATE INDEX "INX_PC_OS_ID" ON "PROCESSES_CONFIG" ("OS_ID") 
826
  ;
827
/
828
--------------------------------------------------------
829
--  DDL for Index UNQ_ABTN_DEF
830
--------------------------------------------------------
831
 
832
  CREATE UNIQUE INDEX "UNQ_ABTN_DEF" ON "DEF_ACTION_BUTTONS" ("ABTN_NAME") 
833
  ;
834
/
835
--------------------------------------------------------
836
--  DDL for Index PK_NETWORK_NODES
837
--------------------------------------------------------
838
 
839
  CREATE UNIQUE INDEX "PK_NETWORK_NODES" ON "NETWORK_NODES" ("NODE_ID") 
840
  ;
841
/
842
--------------------------------------------------------
843
--  DDL for Index INX_BOM_NOTES_BOM_ID
844
--------------------------------------------------------
845
 
846
  CREATE INDEX "INX_BOM_NOTES_BOM_ID" ON "BOM_NOTES" ("BOM_ID") 
847
  ;
848
/
849
--------------------------------------------------------
850
--  DDL for Index INX_MSGBOARD
851
--------------------------------------------------------
852
 
853
  CREATE INDEX "INX_MSGBOARD" ON "MESSAGE_BOARD" ("EXPIRY_DATE", "DUE_DATE") 
854
  ;
855
/
856
--------------------------------------------------------
857
--  DDL for Index INX_OBE_OS_ID
858
--------------------------------------------------------
859
 
860
  CREATE INDEX "INX_OBE_OS_ID" ON "OS_BASE_ENV" ("OS_ID") 
861
  ;
862
/
863
--------------------------------------------------------
864
--  DDL for Index INX_HN_NODE_ID
865
--------------------------------------------------------
866
 
867
  CREATE INDEX "INX_HN_NODE_ID" ON "HARDWARE_NODE" ("NODE_ID") 
868
  ;
869
/
870
--------------------------------------------------------
871
--  DDL for Index INX_HN_HW_ID
872
--------------------------------------------------------
873
 
874
  CREATE INDEX "INX_HN_HW_ID" ON "HARDWARE_NODE" ("HARDWARE_NAME_ID") 
875
  ;
876
/
877
--------------------------------------------------------
878
--  DDL for Index INX_OLD_NODE_ID
879
--------------------------------------------------------
880
 
881
  CREATE INDEX "INX_OLD_NODE_ID" ON "NETWORK_NODES" ("OLD_NODE_ID") 
882
  ;
883
/
884
--------------------------------------------------------
885
--  DDL for Index UNQ_PROC_CONFIG
886
--------------------------------------------------------
887
 
888
  CREATE INDEX "UNQ_PROC_CONFIG" ON "PROCESSES_CONFIG" ("PROD_ID", "OS_ID", "PKG_HEALTH_TAG") 
889
  ;
890
/
891
--------------------------------------------------------
892
--  DDL for Index INX_HARDWARE_BOM_ID
893
--------------------------------------------------------
894
 
895
  CREATE INDEX "INX_HARDWARE_BOM_ID" ON "HARDWARE" ("BOM_ID") 
896
  ;
897
/
898
--------------------------------------------------------
899
--  DDL for Index INX_BO_BOM_VERSION
900
--------------------------------------------------------
901
 
902
  CREATE INDEX "INX_BO_BOM_VERSION" ON "BOMS" ("BOM_VERSION") 
903
  ;
904
/
905
--------------------------------------------------------
906
--  DDL for Index UNQ_DM_PROJECTS
907
--------------------------------------------------------
908
 
909
  CREATE UNIQUE INDEX "UNQ_DM_PROJECTS" ON "DM_PROJECTS" ("PROJ_NAME") 
910
  ;
911
/
912
--------------------------------------------------------
913
--  DDL for Index PK_BOMS
914
--------------------------------------------------------
915
 
916
  CREATE UNIQUE INDEX "PK_BOMS" ON "BOMS" ("BOM_ID") 
917
  ;
918
/
919
--------------------------------------------------------
920
--  DDL for Index UNQ_BASE_ENV
921
--------------------------------------------------------
922
 
923
  CREATE UNIQUE INDEX "UNQ_BASE_ENV" ON "BASE_ENV" ("BASE_ENV_NAME", "BOM_ID") 
924
  ;
925
/
926
--------------------------------------------------------
927
--  DDL for Index INX_ST_PROJ_ID
928
--------------------------------------------------------
929
 
930
  CREATE INDEX "INX_ST_PROJ_ID" ON "STATES" ("PROJ_ID") 
931
  ;
932
/
933
--------------------------------------------------------
934
--  DDL for Index PK_BRANCHES
935
--------------------------------------------------------
936
 
937
  CREATE UNIQUE INDEX "PK_BRANCHES" ON "BRANCHES" ("BRANCH_ID") 
938
  ;
939
/
940
--------------------------------------------------------
941
--  DDL for Index UNQ_VALIDATION_RULES
942
--------------------------------------------------------
943
 
944
  CREATE UNIQUE INDEX "UNQ_VALIDATION_RULES" ON "VALIDATION_RULES" ("FIELD_NAME") 
945
  ;
946
/
947
--------------------------------------------------------
948
--  DDL for Index UNQ_BOM_NAMES
949
--------------------------------------------------------
950
 
951
  CREATE UNIQUE INDEX "UNQ_BOM_NAMES" ON "BOM_NAMES" ("BOM_NAME") 
952
  ;
953
/
954
--------------------------------------------------------
955
--  DDL for Index PK_DEF_MENU_ITEMS
956
--------------------------------------------------------
957
 
958
  CREATE UNIQUE INDEX "PK_DEF_MENU_ITEMS" ON "DEF_MENU_ITEMS" ("ITEM_ID") 
959
  ;
960
/
961
--------------------------------------------------------
962
--  DDL for Index UNQ_STATES
963
--------------------------------------------------------
964
 
965
  CREATE UNIQUE INDEX "UNQ_STATES" ON "STATES" ("PROJ_ID", "STATE_NAME") 
966
  ;
967
/
968
--------------------------------------------------------
969
--  DDL for Index PK_STATES
970
--------------------------------------------------------
971
 
972
  CREATE UNIQUE INDEX "PK_STATES" ON "STATES" ("STATE_ID") 
973
  ;
974
/
975
--------------------------------------------------------
976
--  DDL for Index INX_BR_PROJ_ID
977
--------------------------------------------------------
978
 
979
  CREATE INDEX "INX_BR_PROJ_ID" ON "BRANCHES" ("PROJ_ID") 
980
  ;
981
/
982
--------------------------------------------------------
983
--  DDL for Index INX_OSC_PROD_ID
984
--------------------------------------------------------
985
 
986
  CREATE INDEX "INX_OSC_PROD_ID" ON "OS_CONTENTS" ("PROD_ID") 
987
  ;
988
/
989
--------------------------------------------------------
990
--  DDL for Index PKSYSTEM_CONFIGURATION1
991
--------------------------------------------------------
992
 
993
  CREATE UNIQUE INDEX "PKSYSTEM_CONFIGURATION1" ON "SYSTEM_CONFIGURATION" ("ITEM_NAME") 
994
  ;
995
/
996
--------------------------------------------------------
997
--  DDL for Index UNQ_BASE_ENV_CONTS
998
--------------------------------------------------------
999
 
1000
  CREATE UNIQUE INDEX "UNQ_BASE_ENV_CONTS" ON "BASE_ENV_CONTENTS" ("BASE_ENV_ID", "PROD_ID") 
1001
  ;
1002
/
1003
--------------------------------------------------------
1004
--  DDL for Index UNQ_BOM_STATE
1005
--------------------------------------------------------
1006
 
1007
  CREATE UNIQUE INDEX "UNQ_BOM_STATE" ON "BOM_STATE" ("BOM_ID", "STATE_ID") 
1008
  ;
1009
/
1010
--------------------------------------------------------
1011
--  DDL for Index PK_KNOWLEDGE_BASE
1012
--------------------------------------------------------
1013
 
1014
  CREATE UNIQUE INDEX "PK_KNOWLEDGE_BASE" ON "KNOWLEDGE_BASE" ("ARTICLE_ID") 
1015
  ;
1016
/
1017
--------------------------------------------------------
1018
--  DDL for Index UNQ_RELATED_ARTICLES
1019
--------------------------------------------------------
1020
 
1021
  CREATE UNIQUE INDEX "UNQ_RELATED_ARTICLES" ON "RELATED_ARTICLES" ("ARTICLE_ID", "RARTICLE_ID") 
1022
  ;
1023
/
1024
--------------------------------------------------------
1025
--  DDL for Index INX_BS_BOM_ID
1026
--------------------------------------------------------
1027
 
1028
  CREATE INDEX "INX_BS_BOM_ID" ON "BOM_STATE" ("BOM_ID") 
1029
  ;
1030
/
1031
--------------------------------------------------------
1032
--  DDL for Index INX_PC_PROD_ID
1033
--------------------------------------------------------
1034
 
1035
  CREATE INDEX "INX_PC_PROD_ID" ON "PROCESSES_CONFIG" ("PROD_ID") 
1036
  ;
1037
/
1038
--------------------------------------------------------
1039
--  DDL for Index INX_BEC_BASE_ENV_ID
1040
--------------------------------------------------------
1041
 
1042
  CREATE INDEX "INX_BEC_BASE_ENV_ID" ON "BASE_ENV_CONTENTS" ("BASE_ENV_ID") 
1043
  ;
1044
/
1045
--------------------------------------------------------
1046
--  DDL for Index INX_OBE_BASE_ENV_ID
1047
--------------------------------------------------------
1048
 
1049
  CREATE INDEX "INX_OBE_BASE_ENV_ID" ON "OS_BASE_ENV" ("BASE_ENV_ID") 
1050
  ;
1051
/
1052
--------------------------------------------------------
1053
--  DDL for Index UNQ_BOM_CONTENTS
1054
--------------------------------------------------------
1055
 
1056
  CREATE UNIQUE INDEX "UNQ_BOM_CONTENTS" ON "BOM_CONTENTS" ("BOM_ID", "NODE_ID") 
1057
  ;
1058
/
1059
--------------------------------------------------------
1060
--  DDL for Index INX_BO_OLD_BOM_ID
1061
--------------------------------------------------------
1062
 
1063
  CREATE INDEX "INX_BO_OLD_BOM_ID" ON "BOMS" ("OLD_BOM_ID") 
1064
  ;
1065
/
1066
--------------------------------------------------------
1067
--  DDL for Index UNQ_OPERATING_SYSTEMS
1068
--------------------------------------------------------
1069
 
1070
  CREATE UNIQUE INDEX "UNQ_OPERATING_SYSTEMS" ON "OPERATING_SYSTEMS" ("OS_NAME", "NODE_ID") 
1071
  ;
1072
/
1073
--------------------------------------------------------
1074
--  DDL for Index PK_MESSAGE_BOARD
1075
--------------------------------------------------------
1076
 
1077
  CREATE UNIQUE INDEX "PK_MESSAGE_BOARD" ON "MESSAGE_BOARD" ("MSG_ID") 
1078
  ;
1079
/
1080
--------------------------------------------------------
1081
--  DDL for Index INX_KB_MOD_STAMP
1082
--------------------------------------------------------
1083
 
1084
  CREATE INDEX "INX_KB_MOD_STAMP" ON "KNOWLEDGE_BASE" ("MOD_STAMP") 
1085
  ;
1086
/
1087
--------------------------------------------------------
1088
--  DDL for Index INX_BO_PARENT_BOM_ID
1089
--------------------------------------------------------
1090
 
1091
  CREATE INDEX "INX_BO_PARENT_BOM_ID" ON "BOMS" ("PARENT_BOM_ID") 
1092
  ;
1093
/
1094
--------------------------------------------------------
1095
--  DDL for Index INX_KB_ARTICLE_TITLE
1096
--------------------------------------------------------
1097
 
1098
  CREATE INDEX "INX_KB_ARTICLE_TITLE" ON "KNOWLEDGE_BASE" ("ARTICLE_TITLE") 
1099
  ;
1100
/
1101
--------------------------------------------------------
1102
--  DDL for Index UNQ_REJECTION_TRAIL
1103
--------------------------------------------------------
1104
 
1105
  CREATE UNIQUE INDEX "UNQ_REJECTION_TRAIL" ON "REJECTION_TRAIL" ("ENUM_ENTITY_TYPE", "ENTITY_ID", "REJECT_SEQ") 
1106
  ;
1107
/
1108
--------------------------------------------------------
1109
--  DDL for Index PK_OPERATING_SYSTEMS
1110
--------------------------------------------------------
1111
 
1112
  CREATE UNIQUE INDEX "PK_OPERATING_SYSTEMS" ON "OPERATING_SYSTEMS" ("OS_ID") 
1113
  ;
1114
/
1115
--------------------------------------------------------
1116
--  DDL for Index PK_BOM_NAMES
1117
--------------------------------------------------------
1118
 
1119
  CREATE UNIQUE INDEX "PK_BOM_NAMES" ON "BOM_NAMES" ("BOM_NAME_ID") 
1120
  ;
1121
/
1122
--------------------------------------------------------
1123
--  DDL for Index PKPRODUCT_DETAILS
1124
--------------------------------------------------------
1125
 
1126
  CREATE UNIQUE INDEX "PKPRODUCT_DETAILS" ON "PRODUCT_DETAILS" ("PROD_ID") 
1127
  ;
1128
/
1129
--------------------------------------------------------
1130
--  DDL for Index INX_ACTION_TRAIL
1131
--------------------------------------------------------
1132
 
1133
  CREATE INDEX "INX_ACTION_TRAIL" ON "ACTION_TRAIL" ("ACTION_STAMP", "USER_ID", "ACTION_EVENT") 
1134
  ;
1135
/
1136
--------------------------------------------------------
1137
--  DDL for Index PK_HARDWARE
1138
--------------------------------------------------------
1139
 
1140
  CREATE UNIQUE INDEX "PK_HARDWARE" ON "HARDWARE" ("HARDWARE_NAME_ID") 
1141
  ;
1142
/
1143
--------------------------------------------------------
1144
--  DDL for Index INX_OSC_OS_ID
1145
--------------------------------------------------------
1146
 
1147
  CREATE INDEX "INX_OSC_OS_ID" ON "OS_CONTENTS" ("OS_ID") 
1148
  ;
1149
/
1150
--------------------------------------------------------
1151
--  DDL for Index INX_BO_BOM_LIFECYCLE
1152
--------------------------------------------------------
1153
 
1154
  CREATE INDEX "INX_BO_BOM_LIFECYCLE" ON "BOMS" ("BOM_LIFECYCLE") 
1155
  ;
1156
/
1157
--------------------------------------------------------
1158
--  DDL for Index UNQ_BRANCHES
1159
--------------------------------------------------------
1160
 
1161
  CREATE UNIQUE INDEX "UNQ_BRANCHES" ON "BRANCHES" ("PROJ_ID", "BRANCH_NAME") 
1162
  ;
1163
/
1164
--------------------------------------------------------
1165
--  Constraints for Table HIDE_PRODUCTS
1166
--------------------------------------------------------
1167
 
1168
  ALTER TABLE "HIDE_PRODUCTS" MODIFY ("PROD_ID" NOT NULL ENABLE);
1169
  ALTER TABLE "HIDE_PRODUCTS" MODIFY ("OS_ID" NOT NULL ENABLE);
1170
/
1171
--------------------------------------------------------
1172
--  Constraints for Table BASE_ENV
1173
--------------------------------------------------------
1174
 
1175
  ALTER TABLE "BASE_ENV" ADD CONSTRAINT "PK_BASE_ENV" PRIMARY KEY ("BASE_ENV_ID") ENABLE;
1176
  ALTER TABLE "BASE_ENV" MODIFY ("BOM_ID" NOT NULL ENABLE);
1177
  ALTER TABLE "BASE_ENV" MODIFY ("BASE_ENV_NAME" NOT NULL ENABLE);
1178
  ALTER TABLE "BASE_ENV" MODIFY ("BOS_ID" NOT NULL ENABLE);
1179
  ALTER TABLE "BASE_ENV" MODIFY ("BASE_ENV_ID" NOT NULL ENABLE);
1180
/
1181
--------------------------------------------------------
1182
--  Constraints for Table OS_CONTENTS
1183
--------------------------------------------------------
1184
 
1185
  ALTER TABLE "OS_CONTENTS" MODIFY ("PROD_ID" NOT NULL ENABLE);
1186
  ALTER TABLE "OS_CONTENTS" MODIFY ("SEQ_NUM" NOT NULL ENABLE);
1187
  ALTER TABLE "OS_CONTENTS" MODIFY ("OS_ID" NOT NULL ENABLE);
1188
/
1189
--------------------------------------------------------
1190
--  Constraints for Table BOM_NAMES
1191
--------------------------------------------------------
1192
 
1193
  ALTER TABLE "BOM_NAMES" ADD CONSTRAINT "PK_BOM_NAMES" PRIMARY KEY ("BOM_NAME_ID") ENABLE;
1194
  ALTER TABLE "BOM_NAMES" MODIFY ("BOM_NAME" NOT NULL ENABLE);
1195
  ALTER TABLE "BOM_NAMES" MODIFY ("BOM_NAME_ID" NOT NULL ENABLE);
1196
/
1197
--------------------------------------------------------
1198
--  Constraints for Table UNIT_TESTS
1199
--------------------------------------------------------
1200
 
1201
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_TYPES_FK" NOT NULL ENABLE);
1202
  ALTER TABLE "UNIT_TESTS" MODIFY ("PV_ID" NOT NULL ENABLE);
1203
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_ID" NOT NULL ENABLE);
1204
/
1205
--------------------------------------------------------
1206
--  Constraints for Table SYSTEM_CONFIGURATION
1207
--------------------------------------------------------
1208
 
1209
  ALTER TABLE "SYSTEM_CONFIGURATION" ADD CONSTRAINT "PKSYSTEM_CONFIGURATION1" PRIMARY KEY ("ITEM_NAME") ENABLE;
1210
  ALTER TABLE "SYSTEM_CONFIGURATION" MODIFY ("ITEM_NAME" NOT NULL ENABLE);
1211
/
1212
--------------------------------------------------------
1213
--  Constraints for Table PACKAGE_TRAIL
1214
--------------------------------------------------------
1215
 
1216
  ALTER TABLE "PACKAGE_TRAIL" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
1217
  ALTER TABLE "PACKAGE_TRAIL" MODIFY ("USER_ID" NOT NULL ENABLE);
1218
  ALTER TABLE "PACKAGE_TRAIL" MODIFY ("TRAIL_ACTION" NOT NULL ENABLE);
1219
  ALTER TABLE "PACKAGE_TRAIL" MODIFY ("PKG_ID" NOT NULL ENABLE);
1220
/
1221
--------------------------------------------------------
1222
--  Constraints for Table OS_TRAIL
1223
--------------------------------------------------------
1224
 
1225
  ALTER TABLE "OS_TRAIL" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
1226
  ALTER TABLE "OS_TRAIL" MODIFY ("USER_ID" NOT NULL ENABLE);
1227
/
1228
--------------------------------------------------------
1229
--  Constraints for Table BOS_TYPES
1230
--------------------------------------------------------
1231
 
1232
  ALTER TABLE "BOS_TYPES" ADD CONSTRAINT "PK_BOS_TYPES" PRIMARY KEY ("BOS_ID") ENABLE;
1233
  ALTER TABLE "BOS_TYPES" MODIFY ("BOS_ICON" NOT NULL ENABLE);
1234
  ALTER TABLE "BOS_TYPES" MODIFY ("BOS_TYPE" NOT NULL ENABLE);
1235
  ALTER TABLE "BOS_TYPES" MODIFY ("BOS_ID" NOT NULL ENABLE);
1236
/
1237
--------------------------------------------------------
1238
--  Constraints for Table MESSAGE_BOARD
1239
--------------------------------------------------------
1240
 
1241
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("SUBMITION_DATE" NOT NULL ENABLE);
1242
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_DETAILS" NOT NULL ENABLE);
1243
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_ID" NOT NULL ENABLE);
1244
/
1245
--------------------------------------------------------
1246
--  Constraints for Table HARDWARE
1247
--------------------------------------------------------
1248
 
1249
  ALTER TABLE "HARDWARE" ADD CONSTRAINT "PK_HARDWARE" PRIMARY KEY ("HARDWARE_NAME_ID") ENABLE;
1250
  ALTER TABLE "HARDWARE" MODIFY ("HARDWARE_NAME" NOT NULL ENABLE);
1251
  ALTER TABLE "HARDWARE" MODIFY ("BOM_ID" NOT NULL ENABLE);
1252
  ALTER TABLE "HARDWARE" MODIFY ("HARDWARE_NAME_ID" NOT NULL ENABLE);
1253
/
1254
--------------------------------------------------------
1255
--  Constraints for Table BOMS
1256
--------------------------------------------------------
1257
 
1258
  ALTER TABLE "BOMS" ADD CONSTRAINT "PK_BOMS" PRIMARY KEY ("BOM_ID") ENABLE;
1259
  ALTER TABLE "BOMS" MODIFY ("PARENT_BOM_ID" NOT NULL ENABLE);
1260
  ALTER TABLE "BOMS" MODIFY ("BOM_LIFECYCLE" NOT NULL ENABLE);
1261
  ALTER TABLE "BOMS" MODIFY ("IS_HIDDEN" NOT NULL ENABLE);
1262
  ALTER TABLE "BOMS" MODIFY ("IS_READONLY" NOT NULL ENABLE);
1263
  ALTER TABLE "BOMS" MODIFY ("BOM_VERSION" NOT NULL ENABLE);
1264
  ALTER TABLE "BOMS" MODIFY ("BOM_NAME_ID" NOT NULL ENABLE);
1265
  ALTER TABLE "BOMS" MODIFY ("BRANCH_ID" NOT NULL ENABLE);
1266
  ALTER TABLE "BOMS" MODIFY ("BOM_ID" NOT NULL ENABLE);
1267
/
1268
--------------------------------------------------------
1269
--  Constraints for Table STATES
1270
--------------------------------------------------------
1271
 
1272
  ALTER TABLE "STATES" ADD CONSTRAINT "PK_STATES" PRIMARY KEY ("STATE_ID") ENABLE;
1273
  ALTER TABLE "STATES" MODIFY ("STATE_TYPE_ENUM" NOT NULL ENABLE);
1274
  ALTER TABLE "STATES" MODIFY ("STATE_SEQ" NOT NULL ENABLE);
1275
  ALTER TABLE "STATES" MODIFY ("STATE_NAME" NOT NULL ENABLE);
1276
  ALTER TABLE "STATES" MODIFY ("PROJ_ID" NOT NULL ENABLE);
1277
  ALTER TABLE "STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
1278
/
1279
--------------------------------------------------------
1280
--  Constraints for Table NODE_TYPES
1281
--------------------------------------------------------
1282
 
1283
  ALTER TABLE "NODE_TYPES" ADD CONSTRAINT "PK_NODE_TYPES" PRIMARY KEY ("NODE_TYPE_ID") ENABLE;
1284
  ALTER TABLE "NODE_TYPES" MODIFY ("NODE_IMAGE" NOT NULL ENABLE);
1285
  ALTER TABLE "NODE_TYPES" MODIFY ("NODE_ICON" NOT NULL ENABLE);
1286
  ALTER TABLE "NODE_TYPES" MODIFY ("NODE_TYPE" NOT NULL ENABLE);
1287
  ALTER TABLE "NODE_TYPES" MODIFY ("NODE_TYPE_ID" NOT NULL ENABLE);
1288
/
1289
--------------------------------------------------------
1290
--  Constraints for Table BOM_STATE
1291
--------------------------------------------------------
1292
 
1293
  ALTER TABLE "BOM_STATE" MODIFY ("IS_DISPLAYED" NOT NULL ENABLE);
1294
  ALTER TABLE "BOM_STATE" MODIFY ("USER_ID" NOT NULL ENABLE);
1295
  ALTER TABLE "BOM_STATE" MODIFY ("STATE_ID" NOT NULL ENABLE);
1296
  ALTER TABLE "BOM_STATE" MODIFY ("BOM_ID" NOT NULL ENABLE);
1297
/
1298
--------------------------------------------------------
1299
--  Constraints for Table HARDWARE_NODE
1300
--------------------------------------------------------
1301
 
1302
  ALTER TABLE "HARDWARE_NODE" MODIFY ("NODE_ID" NOT NULL ENABLE);
1303
  ALTER TABLE "HARDWARE_NODE" MODIFY ("HARDWARE_NAME_ID" NOT NULL ENABLE);
1304
/
1305
--------------------------------------------------------
1306
--  Constraints for Table NODE_TRAIL
1307
--------------------------------------------------------
1308
 
1309
  ALTER TABLE "NODE_TRAIL" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
1310
  ALTER TABLE "NODE_TRAIL" MODIFY ("USER_ID" NOT NULL ENABLE);
1311
  ALTER TABLE "NODE_TRAIL" MODIFY ("NODE_ID" NOT NULL ENABLE);
1312
/
1313
--------------------------------------------------------
1314
--  Constraints for Table PRODUCTS_QUEUE
1315
--------------------------------------------------------
1316
 
1317
  ALTER TABLE "PRODUCTS_QUEUE" MODIFY ("ARRIVAL_STAMP" NOT NULL ENABLE);
1318
  ALTER TABLE "PRODUCTS_QUEUE" MODIFY ("PROD_ID" NOT NULL ENABLE);
1319
  ALTER TABLE "PRODUCTS_QUEUE" MODIFY ("PROJ_ID" NOT NULL ENABLE);
1320
/
1321
--------------------------------------------------------
1322
--  Constraints for Table DEF_ACTION_BUTTONS
1323
--------------------------------------------------------
1324
 
1325
  ALTER TABLE "DEF_ACTION_BUTTONS" ADD CONSTRAINT "PK_DEF_ACTION_BUTTONS" PRIMARY KEY ("ABTN_ID") ENABLE;
1326
  ALTER TABLE "DEF_ACTION_BUTTONS" MODIFY ("IS_READONLY_ACTION" NOT NULL ENABLE);
1327
  ALTER TABLE "DEF_ACTION_BUTTONS" MODIFY ("ACTIVE" NOT NULL ENABLE);
1328
  ALTER TABLE "DEF_ACTION_BUTTONS" MODIFY ("VISIBLE" NOT NULL ENABLE);
1329
  ALTER TABLE "DEF_ACTION_BUTTONS" MODIFY ("ABTN_NAME" NOT NULL ENABLE);
1330
  ALTER TABLE "DEF_ACTION_BUTTONS" MODIFY ("ABTN_ID" NOT NULL ENABLE);
1331
/
1332
--------------------------------------------------------
1333
--  Constraints for Table KNOWLEDGE_BASE
1334
--------------------------------------------------------
1335
 
1336
  ALTER TABLE "KNOWLEDGE_BASE" ADD CONSTRAINT "PK_KNOWLEDGE_BASE" PRIMARY KEY ("ARTICLE_ID") ENABLE;
1337
  ALTER TABLE "KNOWLEDGE_BASE" MODIFY ("MODIFIER_ID" NOT NULL ENABLE);
1338
  ALTER TABLE "KNOWLEDGE_BASE" MODIFY ("MOD_STAMP" NOT NULL ENABLE);
1339
  ALTER TABLE "KNOWLEDGE_BASE" MODIFY ("CREATOR_ID" NOT NULL ENABLE);
1340
  ALTER TABLE "KNOWLEDGE_BASE" MODIFY ("CREATED_STAMP" NOT NULL ENABLE);
1341
  ALTER TABLE "KNOWLEDGE_BASE" MODIFY ("VISIBILITY_LEVEL_FK" NOT NULL ENABLE);
1342
  ALTER TABLE "KNOWLEDGE_BASE" MODIFY ("ARTICLE_DETAILS" NOT NULL ENABLE);
1343
  ALTER TABLE "KNOWLEDGE_BASE" MODIFY ("ARTICLE_TITLE" NOT NULL ENABLE);
1344
  ALTER TABLE "KNOWLEDGE_BASE" MODIFY ("ARTICLE_ID" NOT NULL ENABLE);
1345
/
1346
--------------------------------------------------------
1347
--  Constraints for Table BOM_TRAIL
1348
--------------------------------------------------------
1349
 
1350
  ALTER TABLE "BOM_TRAIL" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
1351
  ALTER TABLE "BOM_TRAIL" MODIFY ("USER_ID" NOT NULL ENABLE);
1352
  ALTER TABLE "BOM_TRAIL" MODIFY ("TRAIL_ACTION" NOT NULL ENABLE);
1353
  ALTER TABLE "BOM_TRAIL" MODIFY ("BOM_ID" NOT NULL ENABLE);
1354
/
1355
--------------------------------------------------------
1356
--  Constraints for Table TEST_TYPES
1357
--------------------------------------------------------
1358
 
1359
  ALTER TABLE "TEST_TYPES" ADD PRIMARY KEY ("TEST_TYPE_ID") ENABLE;
1360
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_NAME" NOT NULL ENABLE);
1361
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_ID" NOT NULL ENABLE);
1362
/
1363
--------------------------------------------------------
1364
--  Constraints for Table PRODUCT_TRAIL
1365
--------------------------------------------------------
1366
 
1367
  ALTER TABLE "PRODUCT_TRAIL" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
1368
  ALTER TABLE "PRODUCT_TRAIL" MODIFY ("USER_ID" NOT NULL ENABLE);
1369
/
1370
--------------------------------------------------------
1371
--  Constraints for Table BOM_STATE20100609
1372
--------------------------------------------------------
1373
 
1374
  ALTER TABLE "BOM_STATE20100609" MODIFY ("IS_DISPLAYED" NOT NULL ENABLE);
1375
  ALTER TABLE "BOM_STATE20100609" MODIFY ("USER_ID" NOT NULL ENABLE);
1376
  ALTER TABLE "BOM_STATE20100609" MODIFY ("STATE_ID" NOT NULL ENABLE);
1377
  ALTER TABLE "BOM_STATE20100609" MODIFY ("BOM_ID" NOT NULL ENABLE);
1378
/
1379
--------------------------------------------------------
1380
--  Constraints for Table ACTION_TRAIL
1381
--------------------------------------------------------
1382
 
1383
  ALTER TABLE "ACTION_TRAIL" MODIFY ("ACTION_EVENT" NOT NULL ENABLE);
1384
  ALTER TABLE "ACTION_TRAIL" MODIFY ("USER_ID" NOT NULL ENABLE);
1385
  ALTER TABLE "ACTION_TRAIL" MODIFY ("ACTION_STAMP" NOT NULL ENABLE);
1386
/
1387
--------------------------------------------------------
1388
--  Constraints for Table PRODUCT_NOTES
1389
--------------------------------------------------------
1390
 
1391
  ALTER TABLE "PRODUCT_NOTES" ADD CONSTRAINT "PRODUCT_NOTES_PK" PRIMARY KEY ("PROD_ID") ENABLE;
1392
  ALTER TABLE "PRODUCT_NOTES" MODIFY ("PROD_ID" NOT NULL ENABLE);
1393
/
1394
--------------------------------------------------------
1395
--  Constraints for Table OS_BASE_ENV
1396
--------------------------------------------------------
1397
 
1398
  ALTER TABLE "OS_BASE_ENV" MODIFY ("BASE_ENV_ID" NOT NULL ENABLE);
1399
  ALTER TABLE "OS_BASE_ENV" MODIFY ("OS_ID" NOT NULL ENABLE);
1400
/
1401
--------------------------------------------------------
1402
--  Constraints for Table BASE_ENV_CONTENTS
1403
--------------------------------------------------------
1404
 
1405
  ALTER TABLE "BASE_ENV_CONTENTS" MODIFY ("SEQ_NUM" NOT NULL ENABLE);
1406
  ALTER TABLE "BASE_ENV_CONTENTS" MODIFY ("PROD_ID" NOT NULL ENABLE);
1407
  ALTER TABLE "BASE_ENV_CONTENTS" MODIFY ("BASE_ENV_ID" NOT NULL ENABLE);
1408
/
1409
--------------------------------------------------------
1410
--  Constraints for Table VALIDATION_RULES
1411
--------------------------------------------------------
1412
 
1413
  ALTER TABLE "VALIDATION_RULES" MODIFY ("IS_REQUIRED" NOT NULL ENABLE);
1414
  ALTER TABLE "VALIDATION_RULES" MODIFY ("FIELD_NAME" NOT NULL ENABLE);
1415
/
1416
--------------------------------------------------------
1417
--  Constraints for Table NOTIFY_USER
1418
--------------------------------------------------------
1419
 
1420
  ALTER TABLE "NOTIFY_USER" MODIFY ("EVENT_ENUM" NOT NULL ENABLE);
1421
  ALTER TABLE "NOTIFY_USER" MODIFY ("USER_ID" NOT NULL ENABLE);
1422
  ALTER TABLE "NOTIFY_USER" MODIFY ("PROJ_ID" NOT NULL ENABLE);
1423
/
1424
--------------------------------------------------------
1425
--  Constraints for Table BOM_NOTES
1426
--------------------------------------------------------
1427
 
1428
  ALTER TABLE "BOM_NOTES" MODIFY ("ARTICLE_ID" NOT NULL ENABLE);
1429
  ALTER TABLE "BOM_NOTES" MODIFY ("SCOPE_ID" NOT NULL ENABLE);
1430
  ALTER TABLE "BOM_NOTES" MODIFY ("BOM_SCOPE" NOT NULL ENABLE);
1431
  ALTER TABLE "BOM_NOTES" MODIFY ("BOM_ID" NOT NULL ENABLE);
1432
/
1433
--------------------------------------------------------
1434
--  Constraints for Table PRODUCTION_BOM
1435
--------------------------------------------------------
1436
 
1437
  ALTER TABLE "PRODUCTION_BOM" MODIFY ("BOM_ID" NOT NULL ENABLE);
1438
  ALTER TABLE "PRODUCTION_BOM" MODIFY ("PROJ_ID" NOT NULL ENABLE);
1439
/
1440
--------------------------------------------------------
1441
--  Constraints for Table NETWORK_NODES
1442
--------------------------------------------------------
1443
 
1444
  ALTER TABLE "NETWORK_NODES" ADD CONSTRAINT "PK_NETWORK_NODES" PRIMARY KEY ("NODE_ID") ENABLE;
1445
  ALTER TABLE "NETWORK_NODES" MODIFY ("NODE_NAME" NOT NULL ENABLE);
1446
  ALTER TABLE "NETWORK_NODES" MODIFY ("NODE_TYPE_ID" NOT NULL ENABLE);
1447
  ALTER TABLE "NETWORK_NODES" MODIFY ("NODE_ID" NOT NULL ENABLE);
1448
/
1449
--------------------------------------------------------
1450
--  Constraints for Table PRODUCT_DETAILS
1451
--------------------------------------------------------
1452
 
1453
  ALTER TABLE "PRODUCT_DETAILS" ADD CONSTRAINT "PKPRODUCT_DETAILS" PRIMARY KEY ("PROD_ID") ENABLE;
1454
  ALTER TABLE "PRODUCT_DETAILS" MODIFY ("PROD_ID" NOT NULL ENABLE);
1455
/
1456
--------------------------------------------------------
1457
--  Constraints for Table DM_PROJECTS
1458
--------------------------------------------------------
1459
 
1460
  ALTER TABLE "DM_PROJECTS" ADD CONSTRAINT "PK_DM_PROJECTS" PRIMARY KEY ("PROJ_ID") ENABLE;
1461
  ALTER TABLE "DM_PROJECTS" MODIFY ("PROJ_NAME" NOT NULL ENABLE);
1462
  ALTER TABLE "DM_PROJECTS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
1463
/
1464
--------------------------------------------------------
1465
--  Constraints for Table BRANCHES
1466
--------------------------------------------------------
1467
 
1468
  ALTER TABLE "BRANCHES" ADD CONSTRAINT "PK_BRANCHES" PRIMARY KEY ("BRANCH_ID") ENABLE;
1469
  ALTER TABLE "BRANCHES" MODIFY ("BRANCH_NAME" NOT NULL ENABLE);
1470
  ALTER TABLE "BRANCHES" MODIFY ("PROJ_ID" NOT NULL ENABLE);
1471
  ALTER TABLE "BRANCHES" MODIFY ("BRANCH_ID" NOT NULL ENABLE);
1472
/
1473
--------------------------------------------------------
1474
--  Constraints for Table BOM_CONTENTS
1475
--------------------------------------------------------
1476
 
1477
  ALTER TABLE "BOM_CONTENTS" MODIFY ("NODE_ID" NOT NULL ENABLE);
1478
  ALTER TABLE "BOM_CONTENTS" MODIFY ("BOM_ID" NOT NULL ENABLE);
1479
/
1480
--------------------------------------------------------
1481
--  Constraints for Table REJECTION_TRAIL
1482
--------------------------------------------------------
1483
 
1484
  ALTER TABLE "REJECTION_TRAIL" MODIFY ("USER_ID" NOT NULL ENABLE);
1485
  ALTER TABLE "REJECTION_TRAIL" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
1486
  ALTER TABLE "REJECTION_TRAIL" MODIFY ("REJECT_SEQ" NOT NULL ENABLE);
1487
  ALTER TABLE "REJECTION_TRAIL" MODIFY ("ENTITY_ID" NOT NULL ENABLE);
1488
  ALTER TABLE "REJECTION_TRAIL" MODIFY ("ENUM_ENTITY_TYPE" NOT NULL ENABLE);
1489
/
1490
--------------------------------------------------------
1491
--  Constraints for Table RELATED_ARTICLES
1492
--------------------------------------------------------
1493
 
1494
  ALTER TABLE "RELATED_ARTICLES" MODIFY ("RARTICLE_ID" NOT NULL ENABLE);
1495
  ALTER TABLE "RELATED_ARTICLES" MODIFY ("ARTICLE_ID" NOT NULL ENABLE);
1496
/
1497
--------------------------------------------------------
1498
--  Constraints for Table DEF_MENU_ITEMS
1499
--------------------------------------------------------
1500
 
1501
  ALTER TABLE "DEF_MENU_ITEMS" ADD CONSTRAINT "PK_DEF_MENU_ITEMS" PRIMARY KEY ("ITEM_ID") ENABLE;
1502
  ALTER TABLE "DEF_MENU_ITEMS" MODIFY ("ACTIVE" NOT NULL ENABLE);
1503
  ALTER TABLE "DEF_MENU_ITEMS" MODIFY ("VISIBLE" NOT NULL ENABLE);
1504
  ALTER TABLE "DEF_MENU_ITEMS" MODIFY ("ITEM_NAME" NOT NULL ENABLE);
1505
  ALTER TABLE "DEF_MENU_ITEMS" MODIFY ("ITEM_ID" NOT NULL ENABLE);
1506
/
1507
--------------------------------------------------------
1508
--  Constraints for Table PROCESSES_CONFIG
1509
--------------------------------------------------------
1510
 
1511
  ALTER TABLE "PROCESSES_CONFIG" MODIFY ("PKG_ID" NOT NULL ENABLE);
1512
  ALTER TABLE "PROCESSES_CONFIG" MODIFY ("PKG_HEALTH_TAG" NOT NULL ENABLE);
1513
  ALTER TABLE "PROCESSES_CONFIG" MODIFY ("OS_ID" NOT NULL ENABLE);
1514
  ALTER TABLE "PROCESSES_CONFIG" MODIFY ("PROD_ID" NOT NULL ENABLE);
1515
/
1516
--------------------------------------------------------
1517
--  Constraints for Table RELEASE_AUTHORISATION
1518
--------------------------------------------------------
1519
 
1520
  ALTER TABLE "RELEASE_AUTHORISATION" MODIFY ("TESTER_ID" NOT NULL ENABLE);
1521
  ALTER TABLE "RELEASE_AUTHORISATION" MODIFY ("BOM_ID" NOT NULL ENABLE);
1522
  ALTER TABLE "RELEASE_AUTHORISATION" MODIFY ("PV_ID" NOT NULL ENABLE);
1523
/
1524
--------------------------------------------------------
1525
--  Constraints for Table OPERATING_SYSTEMS
1526
--------------------------------------------------------
1527
 
1528
  ALTER TABLE "OPERATING_SYSTEMS" ADD CONSTRAINT "PK_OPERATING_SYSTEMS" PRIMARY KEY ("OS_ID") ENABLE;
1529
  ALTER TABLE "OPERATING_SYSTEMS" MODIFY ("NODE_ID" NOT NULL ENABLE);
1530
  ALTER TABLE "OPERATING_SYSTEMS" MODIFY ("OS_NAME" NOT NULL ENABLE);
1531
  ALTER TABLE "OPERATING_SYSTEMS" MODIFY ("OS_ID" NOT NULL ENABLE);
1532
/
1533
--------------------------------------------------------
1534
--  Ref Constraints for Table BASE_ENV
1535
--------------------------------------------------------
1536
 
1537
  ALTER TABLE "BASE_ENV" ADD CONSTRAINT "FK_BASE_ENV_REF_BOMS" FOREIGN KEY ("BOM_ID")
1538
	  REFERENCES "BOMS" ("BOM_ID") ENABLE;
1539
  ALTER TABLE "BASE_ENV" ADD CONSTRAINT "FK_BASE_ENV_REF_BOS_TYPES" FOREIGN KEY ("BOS_ID")
1540
	  REFERENCES "BOS_TYPES" ("BOS_ID") ENABLE;
1541
/
1542
--------------------------------------------------------
1543
--  Ref Constraints for Table BASE_ENV_CONTENTS
1544
--------------------------------------------------------
1545
 
1546
  ALTER TABLE "BASE_ENV_CONTENTS" ADD CONSTRAINT "FK_BASE_ENV_CONT_REF_BASE_ENV" FOREIGN KEY ("BASE_ENV_ID")
1547
	  REFERENCES "BASE_ENV" ("BASE_ENV_ID") ENABLE;
1548
/
1549
--------------------------------------------------------
1550
--  Ref Constraints for Table BOMS
1551
--------------------------------------------------------
1552
 
1553
  ALTER TABLE "BOMS" ADD CONSTRAINT "FK_BOMS_REF_BOM_NAME" FOREIGN KEY ("BOM_NAME_ID")
1554
	  REFERENCES "BOM_NAMES" ("BOM_NAME_ID") ENABLE;
1555
  ALTER TABLE "BOMS" ADD CONSTRAINT "FK_BOMS_REF_BRANCHES" FOREIGN KEY ("BRANCH_ID")
1556
	  REFERENCES "BRANCHES" ("BRANCH_ID") ENABLE;
1557
/
1558
--------------------------------------------------------
1559
--  Ref Constraints for Table BOM_CONTENTS
1560
--------------------------------------------------------
1561
 
1562
  ALTER TABLE "BOM_CONTENTS" ADD CONSTRAINT "FK_BOM_CONT_REF_BOMS" FOREIGN KEY ("BOM_ID")
1563
	  REFERENCES "BOMS" ("BOM_ID") ENABLE;
1564
  ALTER TABLE "BOM_CONTENTS" ADD CONSTRAINT "FK_BOM_CONT_REF_NETWORK" FOREIGN KEY ("NODE_ID")
1565
	  REFERENCES "NETWORK_NODES" ("NODE_ID") ENABLE;
1566
/
1567
--------------------------------------------------------
1568
--  Ref Constraints for Table BOM_NOTES
1569
--------------------------------------------------------
1570
 
1571
  ALTER TABLE "BOM_NOTES" ADD CONSTRAINT "FK_BOM_NOTES_REF_BOMS" FOREIGN KEY ("BOM_ID")
1572
	  REFERENCES "BOMS" ("BOM_ID") ENABLE;
1573
  ALTER TABLE "BOM_NOTES" ADD CONSTRAINT "FK_BOM_NOTE_REF_HELP_NOTE" FOREIGN KEY ("ARTICLE_ID")
1574
	  REFERENCES "KNOWLEDGE_BASE" ("ARTICLE_ID") ENABLE;
1575
/
1576
--------------------------------------------------------
1577
--  Ref Constraints for Table BOM_STATE
1578
--------------------------------------------------------
1579
 
1580
  ALTER TABLE "BOM_STATE" ADD CONSTRAINT "FK_BOM_STAT_REF_BOMS" FOREIGN KEY ("BOM_ID")
1581
	  REFERENCES "BOMS" ("BOM_ID") ENABLE;
1582
  ALTER TABLE "BOM_STATE" ADD CONSTRAINT "FK_BOM_STAT_REF_STATES" FOREIGN KEY ("STATE_ID")
1583
	  REFERENCES "STATES" ("STATE_ID") ENABLE;
1584
/
1585
--------------------------------------------------------
1586
--  Ref Constraints for Table BOM_TRAIL
1587
--------------------------------------------------------
1588
 
1589
  ALTER TABLE "BOM_TRAIL" ADD CONSTRAINT "FK_BOM_TRAIL_REF_BOMS" FOREIGN KEY ("BOM_ID")
1590
	  REFERENCES "BOMS" ("BOM_ID") ENABLE;
1591
/
1592
--------------------------------------------------------
1593
--  Ref Constraints for Table BRANCHES
1594
--------------------------------------------------------
1595
 
1596
  ALTER TABLE "BRANCHES" ADD CONSTRAINT "FK_BRANCHES_RE_DM_PROJ" FOREIGN KEY ("PROJ_ID")
1597
	  REFERENCES "DM_PROJECTS" ("PROJ_ID") ENABLE;
1598
/
1599
--------------------------------------------------------
1600
--  Ref Constraints for Table HARDWARE
1601
--------------------------------------------------------
1602
 
1603
  ALTER TABLE "HARDWARE" ADD CONSTRAINT "FK_HARDWARE_REF_BOMS" FOREIGN KEY ("BOM_ID")
1604
	  REFERENCES "BOMS" ("BOM_ID") ENABLE;
1605
/
1606
--------------------------------------------------------
1607
--  Ref Constraints for Table HARDWARE_NODE
1608
--------------------------------------------------------
1609
 
1610
  ALTER TABLE "HARDWARE_NODE" ADD CONSTRAINT "FK_HARDWARE_NODE_REF_HARDWARE" FOREIGN KEY ("HARDWARE_NAME_ID")
1611
	  REFERENCES "HARDWARE" ("HARDWARE_NAME_ID") ENABLE;
1612
  ALTER TABLE "HARDWARE_NODE" ADD CONSTRAINT "FK_HARDWARE_REF_NETWORK" FOREIGN KEY ("NODE_ID")
1613
	  REFERENCES "NETWORK_NODES" ("NODE_ID") ENABLE;
1614
/
1615
--------------------------------------------------------
1616
--  Ref Constraints for Table HIDE_PRODUCTS
1617
--------------------------------------------------------
1618
 
1619
  ALTER TABLE "HIDE_PRODUCTS" ADD FOREIGN KEY ("OS_ID")
1620
	  REFERENCES "OPERATING_SYSTEMS" ("OS_ID") DISABLE;
1621
/
1622
--------------------------------------------------------
1623
--  Ref Constraints for Table NETWORK_NODES
1624
--------------------------------------------------------
1625
 
1626
  ALTER TABLE "NETWORK_NODES" ADD CONSTRAINT "FK_NETWORK__REF_NODE_TYP" FOREIGN KEY ("NODE_TYPE_ID")
1627
	  REFERENCES "NODE_TYPES" ("NODE_TYPE_ID") ENABLE;
1628
/
1629
--------------------------------------------------------
1630
--  Ref Constraints for Table NOTIFY_USER
1631
--------------------------------------------------------
1632
 
1633
  ALTER TABLE "NOTIFY_USER" ADD CONSTRAINT "FK_NOTIFY_USR_REFE_DM_PROJ" FOREIGN KEY ("PROJ_ID")
1634
	  REFERENCES "DM_PROJECTS" ("PROJ_ID") ENABLE;
1635
/
1636
--------------------------------------------------------
1637
--  Ref Constraints for Table OPERATING_SYSTEMS
1638
--------------------------------------------------------
1639
 
1640
  ALTER TABLE "OPERATING_SYSTEMS" ADD CONSTRAINT "FK_OPERATIN_REF_NETWORK" FOREIGN KEY ("NODE_ID")
1641
	  REFERENCES "NETWORK_NODES" ("NODE_ID") ENABLE;
1642
/
1643
--------------------------------------------------------
1644
--  Ref Constraints for Table OS_BASE_ENV
1645
--------------------------------------------------------
1646
 
1647
  ALTER TABLE "OS_BASE_ENV" ADD CONSTRAINT "FK_OS_BASE_ENV_REF_BASE_ENV" FOREIGN KEY ("BASE_ENV_ID")
1648
	  REFERENCES "BASE_ENV" ("BASE_ENV_ID") ENABLE;
1649
  ALTER TABLE "OS_BASE_ENV" ADD CONSTRAINT "FK_OS_BASE_ENV_REF_OS" FOREIGN KEY ("OS_ID")
1650
	  REFERENCES "OPERATING_SYSTEMS" ("OS_ID") ENABLE;
1651
/
1652
--------------------------------------------------------
1653
--  Ref Constraints for Table OS_CONTENTS
1654
--------------------------------------------------------
1655
 
1656
  ALTER TABLE "OS_CONTENTS" ADD CONSTRAINT "FK_OS_CONTE_REF_OPERATIN" FOREIGN KEY ("OS_ID")
1657
	  REFERENCES "OPERATING_SYSTEMS" ("OS_ID") ENABLE;
1658
/
1659
--------------------------------------------------------
1660
--  Ref Constraints for Table PROCESSES_CONFIG
1661
--------------------------------------------------------
1662
 
1663
  ALTER TABLE "PROCESSES_CONFIG" ADD CONSTRAINT "FK_PROC_CONFIG_REF_OS" FOREIGN KEY ("OS_ID")
1664
	  REFERENCES "OPERATING_SYSTEMS" ("OS_ID") DISABLE;
1665
/
1666
--------------------------------------------------------
1667
--  Ref Constraints for Table PRODUCTION_BOM
1668
--------------------------------------------------------
1669
 
1670
  ALTER TABLE "PRODUCTION_BOM" ADD FOREIGN KEY ("PROJ_ID")
1671
	  REFERENCES "DM_PROJECTS" ("PROJ_ID") ENABLE;
1672
  ALTER TABLE "PRODUCTION_BOM" ADD FOREIGN KEY ("BOM_ID")
1673
	  REFERENCES "BOMS" ("BOM_ID") ENABLE;
1674
  ALTER TABLE "PRODUCTION_BOM" ADD FOREIGN KEY ("STATE_ID")
1675
	  REFERENCES "STATES" ("STATE_ID") ENABLE;
1676
/
1677
--------------------------------------------------------
1678
--  Ref Constraints for Table PRODUCTS_QUEUE
1679
--------------------------------------------------------
1680
 
1681
  ALTER TABLE "PRODUCTS_QUEUE" ADD CONSTRAINT "FK_PRODUCTS_REFERENCE_DM_PROJE" FOREIGN KEY ("PRODQ_ID")
1682
	  REFERENCES "DM_PROJECTS" ("PROJ_ID") ENABLE;
1683
/
1684
--------------------------------------------------------
1685
--  Ref Constraints for Table RELATED_ARTICLES
1686
--------------------------------------------------------
1687
 
1688
  ALTER TABLE "RELATED_ARTICLES" ADD CONSTRAINT "FK_RA_ARTID_REF_ARTID" FOREIGN KEY ("ARTICLE_ID")
1689
	  REFERENCES "KNOWLEDGE_BASE" ("ARTICLE_ID") ENABLE;
1690
  ALTER TABLE "RELATED_ARTICLES" ADD CONSTRAINT "FK_RA_RARTID_REF_ARTID" FOREIGN KEY ("RARTICLE_ID")
1691
	  REFERENCES "KNOWLEDGE_BASE" ("ARTICLE_ID") ENABLE;
1692
/
1693
--------------------------------------------------------
1694
--  Ref Constraints for Table RELEASE_AUTHORISATION
1695
--------------------------------------------------------
1696
 
1697
  ALTER TABLE "RELEASE_AUTHORISATION" ADD CONSTRAINT "RELEASE_AUTHORISATION_R01" FOREIGN KEY ("BOM_ID")
1698
	  REFERENCES "BOMS" ("BOM_ID") ENABLE;
1699
/
1700
--------------------------------------------------------
1701
--  Ref Constraints for Table STATES
1702
--------------------------------------------------------
1703
 
1704
  ALTER TABLE "STATES" ADD CONSTRAINT "FK_STATES_REF_DM_PROJ" FOREIGN KEY ("PROJ_ID")
1705
	  REFERENCES "DM_PROJECTS" ("PROJ_ID") ENABLE;
1706
/
3926 dpurdie 1707
--------------------------------------------------------
1708
--  DDL for Function GET_DATE
1709
--------------------------------------------------------
1710
 
1711
  CREATE OR REPLACE FUNCTION "GET_DATE" RETURN DATE IS
1712
 
1713
/* ---------------------------------------------------------------------------
1714
    Version: 1.0.0
1715
   --------------------------------------------------------------------------- */
1716
 
1717
BEGIN
1718
 
1719
	RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
1720
 
1721
END GET_DATE;
1722
 
1723
/
1724
 
1725
/
1726
--------------------------------------------------------
1727
--  DDL for Function GET_DATETIME
1728
--------------------------------------------------------
1729
 
1730
  CREATE OR REPLACE FUNCTION "GET_DATETIME" RETURN DATE IS
1731
 
1732
/* ---------------------------------------------------------------------------
1733
    Version: 1.0.0
1734
   --------------------------------------------------------------------------- */
1735
 
1736
BEGIN
1737
 
1738
	RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
1739
 
1740
END GET_DATETIME;
1741
 
1742
/
1743
 
1744
/
1745
--------------------------------------------------------
1746
--  DDL for Function GET_SYSTEM_VALUE
1747
--------------------------------------------------------
1748
 
1749
  CREATE OR REPLACE FUNCTION "GET_SYSTEM_VALUE" ( sItemName IN SYSTEM_CONFIGURATION.ITEM_NAME%TYPE ) RETURN SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE IS
1750
 
1751
/* ---------------------------------------------------------------------------
1752
    Version: 1.0.0
1753
   --------------------------------------------------------------------------- */
1754
 
1755
ItemValue SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE;
1756
 
1757
BEGIN
1758
	-- Get system value
1759
	SELECT sc.ITEM_VALUE INTO ItemValue
1760
	  FROM SYSTEM_CONFIGURATION sc
1761
	 WHERE sc.ITEM_NAME = sItemName;
1762
 
1763
	RETURN ItemValue;
1764
 
1765
END GET_SYSTEM_VALUE;
1766
 
1767
/
1768
 
1769
/
1770
--------------------------------------------------------
1771
--  DDL for Function IN_LIST_NUMBER
1772
--------------------------------------------------------
1773
 
1774
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN DEPMGR_NUMBER_TAB_t IS
1775
 
1776
/* ---------------------------------------------------------------------------
1777
    Version: 1.0.0
1778
   --------------------------------------------------------------------------- */
1779
 
1780
    sync_rtags		   DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
1781
	pos				   NUMBER;
1782
	in_list			   VARCHAR2(4000) := sInList || ',';
1783
 
1784
BEGIN
1785
 
1786
	IF NOT sInList IS NULL
1787
	THEN
1788
		LOOP
1789
	        EXIT WHEN in_list IS NULL;
1790
	        pos := INSTR ( in_list, ',' );
1791
	        sync_rtags.extend;
1792
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
1793
	        in_list := SUBSTR ( in_list, pos+1 );
1794
		END LOOP;
1795
	END IF;
1796
 
1797
	RETURN sync_rtags;
1798
END IN_LIST_NUMBER;
1799
 
1800
/
1801
 
1802
/
1803
--------------------------------------------------------
1804
--  DDL for Function PRINT_SBOM_PACKAGES
1805
--------------------------------------------------------
1806
 
1807
  CREATE OR REPLACE FUNCTION "PRINT_SBOM_PACKAGES" (v_dm_branch_name VARCHAR2, v_sbom_version VARCHAR2)
1808
  RETURN NUMBER IS
1809
 
1810
  cur ref_cursor;
1811
  SqlCmd VARCHAR2(4000);
1812
BEGIN
1813
 
1814
  SqlCmd := ' 
1815
  CREATE GLOBAL TEMPORARY TABLE sbom_packages
1816
   ON COMMIT PRESERVE ROWS 
1817
   AS SELECT DISTINCT pv.pv_id
1818
      FROM deployment_manager.boms b
1819
    INNER JOIN deployment_manager.bom_contents bc ON b.bom_id = bc.bom_id
1820
    INNER JOIN deployment_manager.branches br ON b.branch_id = br.branch_id
1821
    INNER JOIN deployment_manager.operating_systems os ON bc.node_id = os.node_id
1822
    INNER JOIN deployment_manager.os_contents osc ON os.os_id = osc.os_id
1823
    INNER JOIN release_manager.package_versions pv ON osc.prod_id = pv.pv_id
1824
    WHERE br.branch_name = v_dm_branch_name
1825
        AND b.bom_version||''.''||b.bom_lifecycle = v_sbom_version;
1826
        ';
1827
  EXECUTE SqlCmd;
1828
 
1829
 
1830
  FOR cur IN SELECT DISTINCT pv_id FROM sbom_packages LOOP
1831
 
1832
    INSERT INTO sbom_packages (    
1833
    SELECT DISTINCT PV.pv_id
1834
      FROM release_content RC
1835
      INNER JOIN package_versions PV ON PV.pv_id = RC.pv_id
1836
      INNER JOIN packages P ON P.pkg_id = PV.pkg_id
1837
      WHERE PV.pv_id IN ( SELECT DISTINCT dpv_id
1838
                            FROM package_dependencies
1839
                          START WITH pv_id = cur.pv_id
1840
                        CONNECT BY pv_id = PRIOR dpv_id )
1841
                               );
1842
  END LOOP;
1843
 
1844
  FOR cur IN SELECT DISTINCT pv_id FROM sbom_packages LOOP
1845
    Dbms_Output.put_line(cur.pv_id);
1846
  END LOOP;
1847
 
1848
  RETURN 0;
1849
END;
1850
 
1851
/
1852
 
1853
/
1854
--------------------------------------------------------
1855
--  DDL for Function STRREPLACE
1856
--------------------------------------------------------
1857
 
1858
  CREATE OR REPLACE FUNCTION "STRREPLACE" (str varchar2, from_str varchar2, to_str varchar2)
1859
  return varchar2
1860
AS
1861
  str_temp varchar2(4000);
1862
  str_pos  number := instr(str, from_str);
1863
BEGIN
1864
  str_temp := str;
1865
  while ( str_pos > 0 ) loop
1866
    str_temp := substr(str_temp, 0, str_pos-1) || to_str ||
1867
                substr(str_temp, str_pos + length(from_str));
1868
    str_pos  := instr(str_temp, from_str);
1869
  end loop;
1870
  return str_temp;
1871
END;
1872
 
1873
/
1874
 
1875
/
1876
--------------------------------------------------------
1877
--  DDL for Package PK_BASE_ENV
1878
--------------------------------------------------------
1879
 
1880
  CREATE OR REPLACE PACKAGE "PK_BASE_ENV" IS
1881
 
1882
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
1883
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
1884
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
1885
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
1886
						 nUserId IN NUMBER );
1887
 
1888
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
1889
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
1890
						 	nBosId IN BASE_ENV.BOS_ID%TYPE,
1891
							nOsId IN OS_BASE_ENV.OS_ID%TYPE,
1892
							nUserId IN NUMBER );		
1893
 
1894
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
1895
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE;
1896
 
1897
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
1898
 		  				   	 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
1899
						 	 nUserId IN NUMBER);
1900
 
1901
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
1902
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
1903
						nOsId IN OS_BASE_ENV.OS_ID%TYPE,
1904
						nUserId IN NUMBER );
1905
 
1906
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
1907
		  				   	 sProdVersion IN VARCHAR2,
1908
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1909
							 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
1910
							 nUserId IN NUMBER,
1911
							 sComments IN VARCHAR2  );
1912
 
1913
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
1914
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1915
							nUserId IN NUMBER );
1916
 
1917
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
1918
						   sNewProdIdVersion IN VARCHAR2,
1919
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1920
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
1921
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
1922
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
1923
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
1924
						   sNotXML IN BASE_ENV_CONTENTS.NOT_XML%TYPE,
1925
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
1926
						   nUserId IN NUMBER,
1927
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );
1928
 
1929
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
1930
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1931
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE );
1932
 
1933
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
1934
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1935
						  nUserId IN NUMBER );
1936
 
1937
 
1938
END pk_Base_Env;
1939
 
1940
/
1941
 
1942
/
1943
--------------------------------------------------------
1944
--  DDL for Package PK_BASE_ENV_TEST
1945
--------------------------------------------------------
1946
 
1947
  CREATE OR REPLACE PACKAGE "PK_BASE_ENV_TEST" IS
1948
 
1949
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
1950
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
1951
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
1952
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE );
1953
 
1954
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
1955
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
1956
						 	nBosId IN BASE_ENV.BOS_ID%TYPE );		
1957
 
1958
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
1959
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE;
1960
 
1961
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE );
1962
 
1963
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
1964
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
1965
						nUserId IN NUMBER );
1966
 
1967
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
1968
		  				   	 sProdVersion IN VARCHAR2,
1969
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1970
							 nUserId IN NUMBER,
1971
							 sComments IN VARCHAR2  );
1972
 
1973
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
1974
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1975
							nUserId IN NUMBER );
1976
 
1977
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
1978
						   sNewProdIdVersion IN VARCHAR2,
1979
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1980
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
1981
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
1982
						   sElectronicName IN PACKAGES.ELECTRONIC_NAME%TYPE );
1983
 
1984
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
1985
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1986
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE );
1987
 
1988
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
1989
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
1990
						  nUserId IN NUMBER );
1991
 
1992
 
1993
END pk_Base_Env_test;
1994
 
1995
/
1996
 
1997
/
1998
--------------------------------------------------------
1999
--  DDL for Package PK_BOM
2000
--------------------------------------------------------
2001
 
2002
  CREATE OR REPLACE PACKAGE "PK_BOM" IS
2003
 
2004
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
2005
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
2006
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
2007
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
2008
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
2009
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
2010
					nRtagId IN BOMS.RTAG_ID_FK%TYPE,
2011
					nUserId IN BOM_STATE.USER_ID%TYPE );
2012
 
2013
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
2014
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
2015
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
2016
					   nUserId IN NUMBER );		
2017
 
2018
PROCEDURE Update_ProdBom ( nBomId IN BOMS.BOM_ID%TYPE,
2019
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
2020
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
2021
					   nUserId IN NUMBER );							   			
2022
 
2023
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE;	
2024
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE;
2025
 
2026
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
2027
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
2028
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
2029
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
2030
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  );
2031
 
2032
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
2033
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
2034
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
2035
							 nUserId IN NUMBER );		
2036
 
2037
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
2038
							 	 nUserId IN NUMBER );							 		
2039
 
2040
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 );
2041
 
2042
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t );
2043
 
2044
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t );			
2045
 
2046
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
2047
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
2048
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
2049
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
2050
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
2051
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE );	
2052
 
2053
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
2054
					   nUserId IN BOM_STATE.USER_ID%TYPE,
2055
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
2056
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL );	
2057
 
2058
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
2059
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
2060
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2061
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );					   					
2062
 
2063
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
2064
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
2065
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
2066
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  );	
2067
 
2068
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
2069
						   sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
2070
						   nUserId IN NODE_TRAIL.USER_ID%TYPE  );	
2071
 
2072
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
2073
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
2074
						  nUserId IN OS_TRAIL.USER_ID%TYPE  );						   
2075
 
2076
 
2077
 
2078
END pk_Bom;
2079
 
2080
/
2081
 
2082
/
2083
--------------------------------------------------------
2084
--  DDL for Package PK_BOM_RPT
2085
--------------------------------------------------------
2086
 
2087
  CREATE OR REPLACE PACKAGE "PK_BOM_RPT" AS
2088
	   TYPE TOC_Type IS REF CURSOR RETURN TableOfContents%ROWTYPE;
2089
END PK_BOM_RPT;
2090
 
2091
 
2092
 
2093
/
2094
 
2095
/
2096
--------------------------------------------------------
2097
--  DDL for Package PK_BOM_TEST
2098
--------------------------------------------------------
2099
 
2100
  CREATE OR REPLACE PACKAGE "PK_BOM_TEST" IS
2101
 
2102
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
2103
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
2104
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
2105
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
2106
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
2107
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
2108
					nUserId IN BOM_STATE.USER_ID%TYPE );
2109
 
2110
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
2111
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
2112
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
2113
					   nUserId IN NUMBER );					
2114
 
2115
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE;	
2116
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE;
2117
 
2118
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
2119
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
2120
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
2121
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
2122
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  );
2123
 
2124
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
2125
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
2126
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
2127
							 nUserId IN NUMBER );		
2128
 
2129
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
2130
							 	 nUserId IN NUMBER );							 		
2131
 
2132
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 );
2133
 
2134
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t );
2135
 
2136
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t );			
2137
 
2138
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
2139
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
2140
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
2141
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
2142
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
2143
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE );	
2144
 
2145
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
2146
					   nUserId IN BOM_STATE.USER_ID%TYPE,
2147
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
2148
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL );	
2149
 
2150
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
2151
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
2152
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2153
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );					   					
2154
 
2155
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
2156
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
2157
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
2158
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  );	
2159
 
2160
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
2161
						   sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
2162
						   nUserId IN NODE_TRAIL.USER_ID%TYPE  );	
2163
 
2164
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
2165
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
2166
						  nUserId IN OS_TRAIL.USER_ID%TYPE  );						   
2167
 
2168
 
2169
 
2170
END pk_Bom_Test;
2171
 
2172
/
2173
 
2174
/
2175
--------------------------------------------------------
2176
--  DDL for Package PK_NETWORK_NODE
2177
--------------------------------------------------------
2178
 
2179
  CREATE OR REPLACE PACKAGE "PK_NETWORK_NODE" IS
2180
/* ---------------------------------------------------------------------------
2181
    Version: 1.0.0
2182
   --------------------------------------------------------------------------- */
2183
 
2184
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
2185
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
2186
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
2187
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
2188
					 nUserId IN NUMBER,
2189
					 sNotXML IN NETWORK_NODES.NOT_XML%TYPE );
2190
 
2191
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
2192
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
2193
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
2194
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
2195
						nUserId IN NUMBER,
2196
						nLifeCycle IN NUMBER,
2197
						sNotXML IN NETWORK_NODES.NOT_XML%TYPE );					 
2198
 
2199
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
2200
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE );	
2201
 
2202
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t, nUserId IN NUMBER );	
2203
 
2204
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2, nUserId IN NUMBER );			
2205
 
2206
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
2207
		  			   nBomId IN BOMS.BOM_ID%TYPE,
2208
					   nUserId IN NUMBER );						 
2209
 
2210
END pk_Network_Node;
2211
 
2212
/
2213
 
2214
/
2215
--------------------------------------------------------
2216
--  DDL for Package PK_NETWORK_NODE_TEST
2217
--------------------------------------------------------
2218
 
2219
  CREATE OR REPLACE PACKAGE "PK_NETWORK_NODE_TEST" IS
2220
/* ---------------------------------------------------------------------------
2221
    Version: 1.0.0
2222
   --------------------------------------------------------------------------- */
2223
 
2224
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
2225
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
2226
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
2227
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
2228
					 nUserId IN NUMBER );
2229
 
2230
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
2231
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
2232
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
2233
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE );					 
2234
 
2235
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
2236
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE );	
2237
 
2238
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t );	
2239
 
2240
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2 );			
2241
 
2242
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
2243
		  			   nBomId IN BOMS.BOM_ID%TYPE,
2244
					   nUserId IN NUMBER );						 
2245
 
2246
END pk_Network_Node_test;
2247
 
2248
/
2249
 
2250
/
2251
--------------------------------------------------------
2252
--  DDL for Package PK_OPERATING_SYSTEM
2253
--------------------------------------------------------
2254
 
2255
  CREATE OR REPLACE PACKAGE "PK_OPERATING_SYSTEM" 
2256
IS
2257
   PROCEDURE add_os (
2258
      sosname         IN   operating_systems.os_name%TYPE,
2259
      soscomments     IN   operating_systems.os_comments%TYPE,
2260
      snodespecfile   IN   operating_systems.node_spec_file%TYPE,
2261
      snotxml         IN   operating_systems.not_xml%TYPE,
2262
      nnodeid         IN   operating_systems.node_id%TYPE,
2263
      nbaseenvname    IN   base_env.base_env_name%TYPE,
2264
      nbosid          IN   base_env.bos_id%TYPE DEFAULT NULL,
2265
      nuserid         IN   NUMBER
2266
   );
2267
 
2268
   PROCEDURE update_os (
2269
      nosid           IN   operating_systems.os_id%TYPE,
2270
      sosname         IN   operating_systems.os_name%TYPE,
2271
      soscomments     IN   operating_systems.os_comments%TYPE,
2272
      nbaseenvname    IN   base_env.base_env_name%TYPE,
2273
      snodespecfile   IN   operating_systems.node_spec_file%TYPE,
2274
      snotxml         IN   operating_systems.not_xml%TYPE,
2275
      nuserid         IN   NUMBER
2276
   );
2277
 
2278
   PROCEDURE add_product_wrap (
2279
      npkgid         IN   NUMBER,
2280
      sprodversion   IN   VARCHAR2,
2281
      nosid          IN   os_contents.os_id%TYPE,
2282
      nuserid        IN   NUMBER,
2283
      scomments      IN   VARCHAR2 DEFAULT NULL
2284
   );
2285
 
2286
   PROCEDURE set_base_conf (
2287
      nosid        IN   os_base_env.os_id%TYPE,
2288
      nbaseenvid   IN   os_base_env.base_env_id%TYPE
2289
   );
2290
 
2291
   PROCEDURE shift_product_seqnum (
2292
      nprodid     IN   os_contents.prod_id%TYPE,
2293
      nosid       IN   os_contents.os_id%TYPE,
2294
      ntoseqnum   IN   os_contents.seq_num%TYPE
2295
   );
2296
 
2297
   PROCEDURE shift_bulk_products_seqnum (
2298
      sprodidlist   IN   VARCHAR2,
2299
      nosid         IN   os_contents.os_id%TYPE,
2300
      cdirection    IN   CHAR
2301
   );
2302
 
2303
   PROCEDURE destroy_os (
2304
      nosidcollection   IN   depmgr_number_tab_t,
2305
      nuserid           IN   NUMBER
2306
   );
2307
 
2308
   PROCEDURE destroy_os (nosidlist IN VARCHAR2, nuserid IN NUMBER);
2309
 
2310
   PROCEDURE add_package_process (
2311
      nprocidlist   IN   VARCHAR2,
2312
	  npvid 		IN 	 processes_config.prod_id%TYPE,
2313
      nosid         IN   os_contents.os_id%TYPE,
2314
      nuserid       IN   NUMBER
2315
   );
2316
 
2317
   PROCEDURE add_packages_process (
2318
	  npvidlist		IN 	 VARCHAR2,
2319
      nosid         IN   os_contents.os_id%TYPE,
2320
      nuserid       IN   NUMBER
2321
   );   
2322
END pk_operating_system;
2323
 
2324
/
2325
 
2326
/
2327
--------------------------------------------------------
2328
--  DDL for Package PK_PRODUCT
2329
--------------------------------------------------------
2330
 
2331
  CREATE OR REPLACE PACKAGE "PK_PRODUCT" IS
2332
/* ---------------------------------------------------------------------------
2333
    Version: 1.0.0
2334
   --------------------------------------------------------------------------- */
2335
 
2336
PROCEDURE New_Product ( sProdName IN PACKAGES.PKG_NAME%TYPE,
2337
						sProdVersion IN PACKAGE_VERSIONS.PKG_VERSION%TYPE,
2338
						nUserId IN NUMBER,
2339
						outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );
2340
 
2341
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
2342
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2343
						nUserId IN NUMBER );
2344
 
2345
PROCEDURE Hide_Product ( sProdIdList IN VARCHAR2,
2346
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2347
						nUserId IN NUMBER );	
2348
 
2349
PROCEDURE Unhide_Product ( sProdIdList IN NUMBER,
2350
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2351
						nUserId IN NUMBER );												
2352
 
2353
PROCEDURE Update_Process (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
2354
		  				  nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
2355
		  				  nIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,		  
2356
		  				  nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,		  
2357
						  nCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2358
						  nPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2359
						  sPkgHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
2360
						  nProduct IN PROCESSES_CONFIG.PROD_ID%TYPE );						
2361
 
2362
PROCEDURE Update_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
2363
						   sNewProdIdVersion IN VARCHAR2,
2364
						   nOsId IN OS_CONTENTS.OS_ID%TYPE,
2365
						   nSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE,
2366
						   sComments IN OS_CONTENTS.PRODUCT_COMMENTS%TYPE,
2367
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
2368
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
2369
						   sIsNodeSpec IN OS_CONTENTS.IS_NODE_SPEC%TYPE,
2370
						   sNotXML IN OS_CONTENTS.NOT_XML%TYPE,
2371
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
2372
   						   nUserId IN NUMBER,
2373
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );						 
2374
 
2375
PROCEDURE Replace_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
2376
		  				  	nNewProdId IN OS_CONTENTS.PROD_ID%TYPE,
2377
		  			  	    nOsId IN OS_CONTENTS.OS_ID%TYPE,
2378
							nUserId IN NUMBER );
2379
 
2380
PROCEDURE Remove_Process ( 	sProcName IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,		
2381
		  				   	sProdIdList IN VARCHAR2,
2382
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2383
							sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2384
							sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2385
							sInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
2386
							nUserId IN NUMBER );							
2387
 
2388
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
2389
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2390
							nUserId IN NUMBER ); 
2391
 
2392
PROCEDURE Add_Products_NodeSpec ( sProdIdList IN VARCHAR2,
2393
		  			  	  		  nOsId IN OS_CONTENTS.OS_ID%TYPE,
2394
								  nUserId IN NUMBER ); 														
2395
 
2396
PROCEDURE Accept_Reject ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
2397
						  nBomId IN BOMS.BOM_ID%TYPE,
2398
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2399
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2400
						  nOsId IN NUMBER );
2401
 
2402
PROCEDURE Accept_Reject_List ( nProdIdList IN VARCHAR2,
2403
							   nBomId IN BOMS.BOM_ID%TYPE,
2404
						  	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2405
						       nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2406
							   nOsId IN NUMBER );
2407
 
2408
PROCEDURE Accept_Reject_Comments ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
2409
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
2410
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2411
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );				
2412
 
2413
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
2414
		  			  	  nOsId IN OS_CONTENTS.OS_ID%TYPE,
2415
						  nUserId IN NUMBER );	
2416
 
2417
PROCEDURE Remove_Obsolete_Patches ( nOsId IN OS_CONTENTS.OS_ID%TYPE,
2418
		  						  	nUserId IN NUMBER );
2419
 
2420
 
2421
FUNCTION GET_OS_ID ( PvId IN NUMBER ) RETURN NUMBER;	
2422
 
2423
FUNCTION GET_NODE_ID ( OsId IN NUMBER ) RETURN NUMBER;
2424
 
2425
PROCEDURE Add_Product_Note ( nProdId IN NUMBER,
2426
		  				   	 sNotes IN VARCHAR2,
2427
							 nUserId IN NUMBER );
2428
 
2429
PROCEDURE Edit_Product_Note ( nProdId IN NUMBER,
2430
		  				   	 sNotes IN VARCHAR2,
2431
							 nUserId IN NUMBER );							 
2432
 
2433
PROCEDURE Log_Product_Trail ( nProdId IN PRODUCT_TRAIL.PROD_ID%TYPE,
2434
						  	  sAction IN PRODUCT_TRAIL.TRAIL_ACTION%TYPE,
2435
						  	  nUserId IN PRODUCT_TRAIL.USER_ID%TYPE  );								 
2436
 
2437
END pk_Product;
2438
 
2439
/
2440
 
2441
/
2442
--------------------------------------------------------
2443
--  DDL for Package PK_PRODUCTION
2444
--------------------------------------------------------
2445
 
2446
  CREATE OR REPLACE PACKAGE "PK_PRODUCTION" AS
2447
/******************************************************************************
2448
   NAME:       PK_PRODUCTION
2449
   PURPOSE:
2450
 
2451
   REVISIONS:
2452
   Ver        Date        Author           Description
2453
   ---------  ----------  ---------------  ------------------------------------
2454
   1.0        26/07/2006             1. Created this package.
2455
******************************************************************************/
2456
 
2457
  PROCEDURE Release_Authorisation_Tester ( nPvId IN NUMBER,
2458
  										   nBomId IN NUMBER,
2459
										   nTesterId IN NUMBER,
2460
										   sTesterComments IN VARCHAR2);
2461
 
2462
  PROCEDURE Release_Authorisation_Manager ( nPvId IN NUMBER,
2463
  										   	nBomId IN NUMBER,
2464
										   	nManagerId IN NUMBER,
2465
										   	sManagerComments IN VARCHAR2);		
2466
 
2467
  PROCEDURE Log_Pkg_Trail ( nPkgId IN OS_TRAIL.OS_ID%TYPE,
2468
						  	sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
2469
						  	nUserId IN OS_TRAIL.USER_ID%TYPE  );
2470
 
2471
  PROCEDURE Reject_Product ( nPvId IN NUMBER,
2472
							 nTesterId IN NUMBER,
2473
							 sTesterComments IN VARCHAR2  );	
2474
 
2475
  PROCEDURE Add_Production_Bom ( nBomId IN NUMBER, 
2476
  							   	 nBranchId IN NUMBER, 
2477
								 nStateId IN NUMBER, 
2478
								 nProjId IN NUMBER ); 							 																									   
2479
 
2480
END PK_PRODUCTION;
2481
 
2482
/
2483
 
2484
/
2485
--------------------------------------------------------
2486
--  DDL for Package PK_PRODUCT_TEST
2487
--------------------------------------------------------
2488
 
2489
  CREATE OR REPLACE PACKAGE "PK_PRODUCT_TEST" IS
2490
/* ---------------------------------------------------------------------------
2491
    Version: 1.0.0
2492
   --------------------------------------------------------------------------- */
2493
 
2494
PROCEDURE New_Product ( sProdName IN PACKAGES.PKG_NAME%TYPE,
2495
						sProdVersion IN PACKAGE_VERSIONS.PKG_VERSION%TYPE,
2496
						nUserId IN NUMBER,
2497
						outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );
2498
 
2499
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
2500
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2501
						nUserId IN NUMBER );
2502
 
2503
PROCEDURE Hide_Product ( sProdIdList IN VARCHAR2,
2504
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2505
						nUserId IN NUMBER );	
2506
 
2507
PROCEDURE Unhide_Product ( sProdIdList IN NUMBER,
2508
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2509
						nUserId IN NUMBER );												
2510
 
2511
PROCEDURE Update_Process (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
2512
		  				  nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
2513
		  				  nIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,		  
2514
		  				  nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,		  
2515
						  nCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2516
						  nPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2517
						  sPkgHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
2518
						  nProduct IN PROCESSES_CONFIG.PROD_ID%TYPE );						
2519
 
2520
PROCEDURE Update_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
2521
						   sNewProdIdVersion IN VARCHAR2,
2522
						   nOsId IN OS_CONTENTS.OS_ID%TYPE,
2523
						   nSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE,
2524
						   sComments IN OS_CONTENTS.PRODUCT_COMMENTS%TYPE,
2525
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
2526
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
2527
						   sIsNodeSpec IN OS_CONTENTS.IS_NODE_SPEC%TYPE,
2528
						   sNotXML IN OS_CONTENTS.NOT_XML%TYPE,
2529
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
2530
						   nUserId IN NUMBER,
2531
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE );						 
2532
 
2533
PROCEDURE Replace_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
2534
		  				  	nNewProdId IN OS_CONTENTS.PROD_ID%TYPE,
2535
		  			  	    nOsId IN OS_CONTENTS.OS_ID%TYPE,
2536
							nUserId IN NUMBER );
2537
 
2538
PROCEDURE Remove_Process ( 	sProcName IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,		
2539
		  				   	sProdIdList IN VARCHAR2,
2540
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2541
							sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
2542
							sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
2543
							sInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
2544
							nUserId IN NUMBER );							
2545
 
2546
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
2547
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
2548
							nUserId IN NUMBER ); 
2549
 
2550
PROCEDURE Add_Products_NodeSpec ( sProdIdList IN VARCHAR2,
2551
		  			  	  		  nOsId IN OS_CONTENTS.OS_ID%TYPE,
2552
								  nUserId IN NUMBER ); 														
2553
 
2554
PROCEDURE Accept_Reject ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
2555
						  nBomId IN BOMS.BOM_ID%TYPE,
2556
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2557
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2558
						  nOsId IN NUMBER );
2559
 
2560
PROCEDURE Accept_Reject_List ( nProdIdList IN VARCHAR2,
2561
							   nBomId IN BOMS.BOM_ID%TYPE,
2562
						  	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2563
						       nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2564
							   nOsId IN NUMBER );
2565
 
2566
PROCEDURE Accept_Reject_Comments ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
2567
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
2568
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
2569
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE );				
2570
 
2571
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
2572
		  			  	  nOsId IN OS_CONTENTS.OS_ID%TYPE,
2573
						  nUserId IN NUMBER );	
2574
 
2575
PROCEDURE Remove_Obsolete_Patches ( nOsId IN OS_CONTENTS.OS_ID%TYPE,
2576
		  						  	nUserId IN NUMBER );
2577
 
2578
 
2579
FUNCTION GET_OS_ID ( PvId IN NUMBER ) RETURN NUMBER;	
2580
 
2581
FUNCTION GET_NODE_ID ( OsId IN NUMBER ) RETURN NUMBER;
2582
 
2583
 
2584
 
2585
END pk_Product_Test;
2586
 
2587
/
2588
 
2589
/
2590
--------------------------------------------------------
2591
--  DDL for Package PK_PROJECT
2592
--------------------------------------------------------
2593
 
2594
  CREATE OR REPLACE PACKAGE "PK_PROJECT" IS
2595
 
2596
 
2597
PROCEDURE Add_Project ( sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
2598
		  			  	nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE );
2599
 
2600
PROCEDURE Update_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE,
2601
		  				   sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
2602
						   nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE );		
2603
 
2604
PROCEDURE ShowHide_Project ( nProjId DM_PROJECTS.PROJ_ID%TYPE );						   				
2605
 
2606
PROCEDURE Remove_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE );						
2607
 
2608
PROCEDURE Add_Branch ( sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
2609
		  			   nProjId IN BRANCHES.PROJ_ID%TYPE,
2610
					   nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
2611
                       sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE );
2612
 
2613
PROCEDURE Update_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE,
2614
		  				  sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
2615
					   	  nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
2616
                          sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE );					   
2617
 
2618
PROCEDURE Remove_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE );	
2619
 
2620
PROCEDURE ShowHide_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE );
2621
 
2622
PROCEDURE ShowHide_Download ( nProjId DM_PROJECTS.PROJ_ID%TYPE );	
2623
 
2624
PROCEDURE ShowHide_StateDownload ( nStateId STATES.STATE_ID%TYPE );	
2625
 
2626
 
2627
 
2628
 
2629
END pk_Project;
2630
 
2631
/
2632
 
2633
/
2634
--------------------------------------------------------
2635
--  DDL for Package PK_REPORT
2636
--------------------------------------------------------
2637
 
2638
  CREATE OR REPLACE PACKAGE "PK_REPORT" IS
2639
 
2640
/*
2641
------------------------------
2642
||  Last Modified:  S.Vukovic
2643
||  Modified Date:  8/Mar/2005
2644
||  Spec Version:   1.0
2645
------------------------------
2646
*/
2647
 
2648
	TYPE typeCur IS REF CURSOR;
2649
 
2650
    /*================================================================================================*/
2651
 
2652
	FUNCTION BOM_PRODUCTS_BY_NODE_BY_OS ( BomId NUMBER ) RETURN typeCur;
2653
 
2654
	/*================================================================================================*/
2655
 
2656
 
2657
END PK_REPORT;
2658
 
2659
/
2660
 
2661
/
2662
--------------------------------------------------------
2663
--  DDL for Package PK_REQUIREMENTS
2664
--------------------------------------------------------
2665
 
2666
  CREATE OR REPLACE PACKAGE "PK_REQUIREMENTS" IS
2667
 
2668
PROCEDURE Add_Bom ( nFromBomId IN BOMS.BOM_ID%TYPE,
2669
					nToBranchId IN BOMS.BRANCH_ID%TYPE );	
2670
 
2671
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 );					
2672
 
2673
END pk_Requirements;
2674
 
2675
/
2676
 
2677
/
2678
--------------------------------------------------------
2679
--  DDL for Package PK_STATE
2680
--------------------------------------------------------
2681
 
2682
  CREATE OR REPLACE PACKAGE "PK_STATE" IS
2683
 
2684
 
2685
PROCEDURE Add_State ( sStateName IN STATES.STATE_NAME%TYPE,
2686
		  			  nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE,
2687
		  			  nProjId IN STATES.PROJ_ID%TYPE );
2688
 
2689
PROCEDURE Update_State ( nStateId IN STATES.STATE_ID%TYPE,
2690
		  			   	 sStateName IN STATES.STATE_NAME%TYPE,
2691
						 nStateSeq IN STATES.STATE_SEQ%TYPE,
2692
						 nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE );
2693
 
2694
PROCEDURE Remove_State ( nStateId IN STATES.STATE_ID%TYPE );	
2695
 
2696
PROCEDURE Toggle_Is_Displayed ( nStateId IN BOM_STATE.STATE_ID%TYPE,
2697
								nBomId IN BOM_STATE.BOM_ID%TYPE,
2698
								cIsDisplay IN BOM_STATE.IS_DISPLAYED%TYPE );
2699
 
2700
PROCEDURE Auto_Hide ( nStateId IN BOM_STATE.STATE_ID%TYPE,
2701
					  nInsertedBomId IN BOM_STATE.BOM_ID%TYPE,
2702
					  nEventValue IN SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE );								
2703
 
2704
END pk_State;
2705
 
2706
/
2707
 
2708
/
2709
--------------------------------------------------------
2710
--  DDL for Package PK_UTILS
2711
--------------------------------------------------------
2712
 
2713
  CREATE OR REPLACE PACKAGE "PK_UTILS" IS
2714
/* ---------------------------------------------------------------------------
2715
    Version: 1.0.0
2716
   --------------------------------------------------------------------------- */
2717
 
2718
PROCEDURE Clone_BOM ( nFromBomId IN BOMS.BOM_ID%TYPE,
2719
		  			  nToBomId IN BOMS.BOM_ID%TYPE,
2720
					  nUserId IN NUMBER );
2721
 
2722
PROCEDURE Copy_BOM_Contents ( nFromBomId IN BOMS.BOM_ID%TYPE,
2723
		  					  nToBomId IN BOMS.BOM_ID%TYPE );	
2724
 
2725
PROCEDURE Copy_Network_Node ( nFromBomId IN BOMS.BOM_ID%TYPE,
2726
		  					  nToBomId IN BOMS.BOM_ID%TYPE,
2727
							  nFromNodeId IN NUMBER DEFAULT 0  );	
2728
 
2729
PROCEDURE Paste_OS_Contents;							  
2730
 
2731
PROCEDURE Paste_Node ( sNodeIdList IN VARCHAR2,
2732
					   nFromBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
2733
					   nToBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE );
2734
 
2735
PROCEDURE Paste_Os ( sOsIdList IN VARCHAR2,
2736
					 nFromNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
2737
					 nToNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE );
2738
 
2739
PROCEDURE Paste_Products ( sProdIdList IN VARCHAR2,
2740
						   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
2741
						   nToOsId IN OS_CONTENTS.OS_ID%TYPE );
2742
 
2743
PROCEDURE Paste_Products_To_Base_Env ( sProdIdList IN VARCHAR2,
2744
									   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
2745
									   nToBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE );						   
2746
 
2747
PROCEDURE Clean_Old_Id_Column;	
2748
 
2749
PROCEDURE Log_Rejection_Trail ( nEnumEntityType IN REJECTION_TRAIL.ENUM_ENTITY_TYPE%TYPE,
2750
								nEntityId IN REJECTION_TRAIL.ENTITY_ID%TYPE,
2751
								cIsRejected IN REJECTION_TRAIL.IS_REJECTED%TYPE,
2752
								nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
2753
								sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL );
2754
 
2755
PROCEDURE Log_Action ( nUserId IN ACTION_TRAIL.USER_ID%TYPE, 
2756
					   nEvent IN ACTION_TRAIL.ACTION_EVENT%TYPE,
2757
					   sMethod IN ACTION_TRAIL.METHOD_CALL%TYPE DEFAULT NULL,
2758
					   sActionScript IN ACTION_TRAIL.ACTION_SCRIPT%TYPE DEFAULT NULL,
2759
					   sDescription IN ACTION_TRAIL.ACTION_DESCRIPTION%TYPE DEFAULT NULL  );					  						  				  				 
2760
 
2761
END pk_Utils;
2762
 
2763
/
2764
 
2765
/
2766
--------------------------------------------------------
2767
--  DDL for Package Body PK_BASE_ENV
2768
--------------------------------------------------------
2769
 
2770
  CREATE OR REPLACE PACKAGE BODY "PK_BASE_ENV" 
2771
IS
2772
/* ---------------------------------------------------------------------------
2773
    Version: 1.0.0
2774
   --------------------------------------------------------------------------- */
2775
 
2776
 
2777
/*--------------------------------------------------------------------------------------------------*/
2778
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
2779
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
2780
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
2781
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2782
						 nUserId IN NUMBER ) IS
2783
 
2784
nBaseEnvId BASE_ENV.BASE_ENV_ID%TYPE;	
2785
NodeName VARCHAR2(4000);					 
2786
 
2787
BEGIN
2788
	/*--------------- Business Rules Here -------------------*/
2789
	/*-------------------------------------------------------*/
2790
 
2791
	SELECT NN.NODE_NAME INTO NodeName
2792
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
2793
	WHERE NN.NODE_ID = OS.NODE_ID
2794
	AND OS.OS_ID = nOsId;
2795
 
2796
	-- Get base_env_id
2797
	SELECT SEQ_BASE_ENV_ID.NEXTVAL INTO nBaseEnvId FROM DUAL;
2798
 
2799
	-- Insert new base env name
2800
	INSERT INTO BASE_ENV ( BASE_ENV_ID, BOS_ID, BASE_ENV_NAME, BOM_ID )
2801
	VALUES ( nBaseEnvId, nBosId, sBaseEnvName, nBomId );
2802
 
2803
	/* Log BOM_TRAIL */
2804
	pk_Bom.Log_Os_Trail ( nOsId, 'Added Base Configuration: '||sBaseEnvName||' into Node: '||NodeName, nUserId );	
2805
 
2806
	EXCEPTION
2807
    WHEN DUP_VAL_ON_INDEX
2808
	THEN		
2809
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
2810
 
2811
END	Add_Base_Env;
2812
/*--------------------------------------------------------------------------------------------------*/
2813
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
2814
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
2815
						 	nBosId IN BASE_ENV.BOS_ID%TYPE,
2816
							nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2817
							nUserId IN NUMBER ) IS
2818
 
2819
NodeName VARCHAR2(4000);							
2820
 
2821
BEGIN
2822
	/*--------------- Business Rules Here -------------------*/
2823
	IF (nBaseEnvId IS NULL) 
2824
	THEN
2825
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
2826
 
2827
	END IF;
2828
	/*-------------------------------------------------------*/
2829
 
2830
	SELECT NN.NODE_NAME INTO NodeName
2831
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
2832
	WHERE NN.NODE_ID = OS.NODE_ID
2833
	AND OS.OS_ID = nOsId;
2834
 
2835
	-- Update Base Env
2836
	UPDATE BASE_ENV SET
2837
		BASE_ENV_NAME = sBaseEnvName,
2838
		BOS_ID = nBosId
2839
	WHERE BASE_ENV_ID = nBaseEnvId;
2840
 
2841
	/* Log BOM_TRAIL */
2842
	pk_Bom.Log_Os_Trail ( nOsId, 'Updated Base Configuration: '||sBaseEnvName||' on Node: '||NodeName, nUserId );	
2843
 
2844
	EXCEPTION
2845
    WHEN DUP_VAL_ON_INDEX
2846
	THEN		
2847
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
2848
 
2849
END	Update_Base_Env;
2850
/*--------------------------------------------------------------------------------------------------*/
2851
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
2852
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE IS
2853
 
2854
ReturnValue BASE_ENV.BASE_ENV_ID%TYPE;	
2855
 
2856
CURSOR curBaseEnv IS
2857
	SELECT be.BASE_ENV_ID
2858
	  FROM BASE_ENV be
2859
	 WHERE be.BASE_ENV_NAME = sBaseEnvName
2860
	   AND be.BOM_ID = nBomId;
2861
recBaseEnv curBaseEnv%ROWTYPE;
2862
 
2863
BEGIN
2864
	/*--------------- Business Rules Here -------------------*/
2865
	/*-------------------------------------------------------*/
2866
 
2867
	-- Get bom_name_id
2868
	OPEN curBaseEnv;
2869
	FETCH curBaseEnv INTO recBaseEnv;
2870
 
2871
	IF curBaseEnv%FOUND THEN
2872
		ReturnValue := recBaseEnv.BASE_ENV_ID;
2873
	ELSE
2874
		ReturnValue := NULL;
2875
	END IF;
2876
 
2877
	CLOSE curBaseEnv;
2878
 
2879
	RETURN ReturnValue;
2880
END	Get_Base_Env_Id;
2881
/*--------------------------------------------------------------------------------------------------*/
2882
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE, 
2883
		  				   	 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2884
						 	 nUserId IN NUMBER ) IS
2885
 
2886
BaseEnvName VARCHAR2(100);		
2887
NodeName VARCHAR2(4000);					 
2888
 
2889
BEGIN
2890
	/*--------------- Business Rules Here -------------------*/
2891
	IF (nBaseEnvId IS NULL) 
2892
	THEN
2893
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
2894
 
2895
	END IF;
2896
	/*-------------------------------------------------------*/
2897
 
2898
	SELECT NN.NODE_NAME INTO NodeName
2899
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
2900
	WHERE NN.NODE_ID = OS.NODE_ID
2901
	AND OS.OS_ID = nOsId;	
2902
 
2903
	SELECT BASE_ENV_NAME INTO BaseEnvName
2904
	FROM BASE_ENV
2905
	WHERE BASE_ENV_ID = nBaseEnvId;
2906
 
2907
	-- Destroy Base Env Contents
2908
	DELETE
2909
      FROM BASE_ENV_CONTENTS
2910
     WHERE BASE_ENV_ID = nBaseEnvId;
2911
 
2912
	-- Remove Base Env From BOM
2913
	DELETE 
2914
	  FROM OS_BASE_ENV obe
2915
	 WHERE obe.BASE_ENV_ID = nBaseEnvId;
2916
 
2917
	-- Destroy Base Env
2918
	DELETE 
2919
	  FROM BASE_ENV be
2920
	 WHERE be.BASE_ENV_ID = nBaseEnvId;		
2921
 
2922
	/* Log BOM_TRAIL */
2923
	pk_Bom.Log_Os_Trail ( nOsId, 'Destroyed Base Configuration: '||BaseEnvName||' on Node: '||NodeName, nUserId );		 		 
2924
 
2925
END	Destroy_Base_Env;
2926
/*--------------------------------------------------------------------------------------------------*/
2927
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
2928
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
2929
						nOsId IN OS_BASE_ENV.OS_ID%TYPE,
2930
						nUserId IN NUMBER ) IS
2931
 
2932
NextSeqNum NUMBER;
2933
BaseEnvName VARCHAR2(100);
2934
PkgName VARCHAR2(100);
2935
PkgVersion VARCHAR2(100);
2936
NodeName VARCHAR2(4000); 
2937
 
2938
CURSOR prod_cur IS
2939
	SELECT pv.pv_id AS PROD_ID,
2940
		   pv.PV_DESCRIPTION
2941
	  FROM PACKAGE_VERSIONS pv
2942
	 WHERE pv.pv_id IN (
2943
	 	   			   	SELECT * 
2944
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
2945
						);
2946
prod_rec prod_cur%ROWTYPE;
2947
 
2948
 
2949
BEGIN
2950
	/*--------------- Business Rules Here -------------------*/
2951
	/*-------------------------------------------------------*/
2952
 
2953
	SELECT BASE_ENV_NAME INTO BaseEnvName 
2954
	FROM BASE_ENV
2955
	WHERE BASE_ENV_ID = nBaseEnvId;
2956
 
2957
	SELECT NN.NODE_NAME INTO NodeName
2958
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
2959
	WHERE NN.NODE_ID = OS.NODE_ID
2960
	AND OS.OS_ID = nOsId;
2961
 
2962
 
2963
	-- Get seq_num
2964
	SELECT MAX( bec.SEQ_NUM ) INTO NextSeqNum
2965
	  FROM BASE_ENV_CONTENTS bec
2966
	 WHERE bec.BASE_ENV_ID = nBaseEnvId;
2967
 
2968
	-- Set NextSeqNum to 0 if no existing products are found
2969
	IF NextSeqNum IS NULL THEN
2970
	   NextSeqNum := 1;
2971
	ELSE
2972
	   NextSeqNum := NextSeqNum + 1;
2973
	END IF;
2974
 
2975
 
2976
	-- Insert into OS Contents
2977
	OPEN prod_cur;
2978
	FETCH prod_cur INTO prod_rec;
2979
 
2980
	WHILE prod_cur%FOUND
2981
	LOOP
2982
 
2983
		INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, SEQ_NUM, PROD_ID, BASE_ENV_COMMENTS )
2984
		VALUES (
2985
				nBaseEnvId, 
2986
				NextSeqNum, 
2987
				prod_rec.PROD_ID,
2988
				prod_rec.PV_DESCRIPTION
2989
				);
2990
 
2991
		SELECT PKG.PKG_NAME INTO PkgName
2992
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
2993
		WHERE PV.PV_ID = prod_rec.PROD_ID
2994
		AND PKG.PKG_ID = PV.PKG_ID;
2995
 
2996
		SELECT PKG_VERSION INTO PkgVersion
2997
		FROM PACKAGE_VERSIONS PV
2998
		WHERE PV.PV_ID = prod_rec.PROD_ID;				
2999
 
3000
		-- Log Action --
3001
		pk_Bom.Log_Os_Trail ( nOsId,  
3002
							  'Added Product: '||PkgName||' (Version '||PkgVersion||') to Base Configuration: '||BaseEnvName||' with Install Order: '||NextSeqNum||' on Node: '||NodeName,
3003
							  nUserId );
3004
 
3005
 
3006
		NextSeqNum := NextSeqNum + 1;
3007
		FETCH prod_cur INTO prod_rec;
3008
	END LOOP;
3009
 
3010
 
3011
	CLOSE prod_cur;
3012
 
3013
 
3014
END	Add_Product; 
3015
/*--------------------------------------------------------------------------------------------------*/
3016
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
3017
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3018
							nUserId IN NUMBER ) IS
3019
 
3020
PkgName VARCHAR2(100);
3021
PkgVersion VARCHAR2(100);		
3022
NextSeqNum NUMBER := 1;
3023
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
3024
 
3025
CURSOR prod_cur IS
3026
	SELECT bec.PROD_ID, bec.SEQ_NUM
3027
	  FROM BASE_ENV_CONTENTS bec
3028
	 WHERE bec.BASE_ENV_ID = nBaseEnvId
3029
	 ORDER BY bec.SEQ_NUM;
3030
prod_rec prod_cur%ROWTYPE;	
3031
 
3032
 
3033
BEGIN
3034
	/*--------------- Business Rules Here -------------------*/
3035
	IF sProdIdList IS NULL
3036
	THEN
3037
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
3038
 
3039
	END IF;
3040
	/*-------------------------------------------------------*/
3041
 
3042
 
3043
 
3044
	-- Remove Products
3045
	DELETE 
3046
	FROM BASE_ENV_CONTENTS
3047
	WHERE BASE_ENV_ID = nBaseEnvId
3048
	  AND PROD_ID IN ( 
3049
	  	  		  	    SELECT * 
3050
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
3051
					 );
3052
 
3053
 
3054
	-- Update Seq Numbers
3055
	OPEN prod_cur;
3056
	FETCH prod_cur INTO prod_rec;
3057
 
3058
	WHILE prod_cur%FOUND
3059
	LOOP
3060
 
3061
		UPDATE BASE_ENV_CONTENTS SET
3062
		SEQ_NUM = NextSeqNum
3063
		WHERE BASE_ENV_ID = nBaseEnvId
3064
		  AND PROD_ID = prod_rec.PROD_ID;
3065
 
3066
		NextSeqNum := NextSeqNum + 1;
3067
		FETCH prod_cur INTO prod_rec;
3068
	END LOOP;
3069
 
3070
	CLOSE prod_cur;
3071
 
3072
	nIdCollector := IN_LIST_NUMBER ( sProdIdList );
3073
 
3074
	FOR i IN 1..nIdCollector.COUNT
3075
	LOOP
3076
		SELECT PKG.PKG_NAME INTO PkgName
3077
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
3078
		WHERE PV.PV_ID = nIdCollector(i)
3079
		AND PKG.PKG_ID = PV.PKG_ID;
3080
 
3081
		SELECT PKG_VERSION INTO PkgVersion
3082
		FROM PACKAGE_VERSIONS PV
3083
		WHERE PV.PV_ID = nIdCollector(i);	
3084
 
3085
		-- Log Action --
3086
		pk_Bom.Log_Os_Trail ( nBaseEnvId,  
3087
							  'Deleted Product: '||PkgName||' (Version: '||PkgVersion||') From Base Configuration from Node',
3088
							  nUserId );					  
3089
	END LOOP;	
3090
 
3091
 
3092
 
3093
END Remove_Products; 
3094
/*--------------------------------------------------------------------------------------------------*/
3095
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
3096
		  				   	 sProdVersion IN VARCHAR2,
3097
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3098
							 nOsId IN OS_BASE_ENV.OS_ID%TYPE,
3099
							 nUserId IN NUMBER,
3100
							 sComments IN VARCHAR2 ) IS
3101
 
3102
ProdId PACKAGE_VERSIONS.PV_ID%TYPE;
3103
ProdName PACKAGES.PKG_NAME%TYPE;
3104
 
3105
CURSOR prod_cur IS
3106
	SELECT bec.PROD_ID
3107
	  FROM BASE_ENV_CONTENTS bec
3108
	 WHERE bec.PROD_ID = ProdId
3109
	   AND bec.BASE_ENV_ID = nBaseEnvId;
3110
prod_rec prod_cur%ROWTYPE;
3111
 
3112
BEGIN
3113
	/*--------------- Business Rules Here -------------------*/                             
3114
	IF (NOT nPkgId IS NULL) AND (sProdVersion IS NULL) AND (NOT nBaseEnvId IS NULL) AND (NOT nUserId IS NULL) THEN
3115
	   RAISE_APPLICATION_ERROR (-20000, 'Please provide Product Version.('|| sProdVersion ||')' );
3116
 
3117
	ELSIF (nPkgId IS NULL) OR (sProdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nUserId IS NULL) THEN
3118
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nPkgId= '|| nPkgId ||', sProdVersion='|| sProdVersion ||', nBaseEnvId='|| nBaseEnvId ||', nUserId='|| nUserId );
3119
 
3120
	END IF;
3121
	/*-------------------------------------------------------*/
3122
 
3123
	-- Get Product Name --
3124
	SELECT PKG_NAME INTO ProdName FROM PACKAGES WHERE PKG_ID = nPkgId;
3125
 
3126
 
3127
	-- Create Product Version in Release Manager if Required, and Get Prod_id --
3128
	Seed_Package_Names_Versions ( ProdName, sProdVersion, nUserId, ProdId );
3129
 
3130
 
3131
	-- Add Product To Base Env --
3132
	OPEN prod_cur;
3133
	FETCH prod_cur INTO prod_rec;
3134
 
3135
	IF prod_cur%NOTFOUND THEN
3136
	   pk_Base_Env.Add_Product ( ProdId, nBaseEnvId, nOsId, nUserId );
3137
 
3138
	   -- Update Comments
3139
	   IF (NOT sComments IS NULL) THEN
3140
	   		UPDATE BASE_ENV_CONTENTS bec SET
3141
				bec.BASE_ENV_COMMENTS = sComments
3142
			 WHERE bec.BASE_ENV_ID = nBaseEnvId
3143
			   AND bec.PROD_ID = ProdId;
3144
 
3145
	   END IF;
3146
	END IF;
3147
 
3148
	CLOSE prod_cur;
3149
 
3150
 
3151
END	Add_Product_Wrap;    
3152
/*--------------------------------------------------------------------------------------------------*/
3153
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
3154
						   sNewProdIdVersion IN VARCHAR2,
3155
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3156
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
3157
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
3158
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
3159
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
3160
						   sNotXML IN BASE_ENV_CONTENTS.NOT_XML%TYPE,
3161
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
3162
						   nUserId IN NUMBER,
3163
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE ) IS
3164
 
3165
nNewProdId BASE_ENV_CONTENTS.PROD_ID%TYPE;		
3166
 
3167
sProdName PACKAGES.PKG_NAME%TYPE;					  
3168
 
3169
CURSOR curProd IS
3170
 	SELECT pv.PV_ID
3171
	  FROM PACKAGE_VERSIONS pv
3172
	 WHERE pv.pkg_id IN ( SELECT pv.pkg_id FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nOldProdId )
3173
	   AND pv.PKG_VERSION = sNewProdIdVersion;
3174
recProd curProd%ROWTYPE;						   
3175
 
3176
BEGIN
3177
	/*--------------- Business Rules Here -------------------*/
3178
	IF (nOldProdId IS NULL) OR (sNewProdIdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nSeqNum IS NULL)
3179
	THEN
3180
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOldProdId= '|| nOldProdId  ||', sNewProdIdVersion= '|| sNewProdIdVersion ||', nBaseEnvId= '|| nBaseEnvId ||', nSeqNum= '|| nSeqNum);
3181
	END IF;
3182
	/*-------------------------------------------------------*/
3183
 
3184
	-- Get new prod_id
3185
	OPEN curProd;
3186
	FETCH curProd INTO recProd;
3187
 
3188
	-- Get the Package Name
3189
	SELECT pkg.pkg_name into sProdName
3190
	FROM PACKAGES pkg, PACKAGE_VERSIONS pv
3191
	WHERE pkg.pkg_id = pv.pkg_id 
3192
	AND pv.pv_id = nOldProdId;		
3193
 
3194
	IF curProd%FOUND THEN
3195
		nNewProdId := recProd.PV_ID;
3196
	ELSE
3197
		-- Call Release Manager to add new product	
3198
		Seed_Package_Names_Versions ( sProdName, sNewProdIdVersion, nUserId, outProdId );
3199
 
3200
		nNewProdId := outProdId;
3201
		/*RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');*/
3202
	END IF;
3203
 
3204
	CLOSE curProd;
3205
 
3206
 
3207
	-- Update Product Details
3208
	UPDATE BASE_ENV_CONTENTS SET
3209
		PROD_ID = nNewProdId,
3210
		BASE_ENV_COMMENTS = sComments,
3211
		NOT_XML = sNotXML
3212
	 WHERE BASE_ENV_ID = nBaseEnvId
3213
	   AND PROD_ID = nOldProdId;
3214
 
3215
 
3216
	UPDATE PACKAGES SET
3217
		SUNOS_ELECTRONIC_NAME = sSunOSElectronicName,
3218
		WIN_ELECTRONIC_NAME = sWinElectronicName
3219
	WHERE  PKG_ID = 
3220
	(
3221
	 SELECT PKG_ID
3222
	 FROM PACKAGE_VERSIONS 
3223
	 WHERE PACKAGE_VERSIONS.PV_ID = nNewProdId
3224
	);   
3225
 
3226
 
3227
	UPDATE PACKAGE_VERSIONS SET 
3228
		 PATCH_ELECTRONIC_NAME = sPatchElectronicName
3229
	WHERE PV_ID = nNewProdId;   		   
3230
 
3231
 
3232
 
3233
	-- Update seq_num
3234
	Shift_Product_SeqNum ( nNewProdId, nBaseEnvId, nSeqNum );
3235
 
3236
END	Update_Product; 
3237
/*--------------------------------------------------------------------------------------------------*/
3238
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
3239
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3240
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE ) IS
3241
 
3242
currSeqNum NUMBER;
3243
FromSeqNum NUMBER;
3244
 
3245
BEGIN
3246
	 -- Get Current seq_num
3247
	 SELECT bec.SEQ_NUM INTO currSeqNum
3248
	   FROM BASE_ENV_CONTENTS bec
3249
	  WHERE bec.BASE_ENV_ID = nBaseEnvId
3250
	    AND bec.PROD_ID = nProdId;
3251
 
3252
 
3253
	 IF currSeqNum > nToSeqNum
3254
	 THEN
3255
 
3256
		FromSeqNum := nToSeqNum;
3257
 
3258
			-- Shift others Up
3259
		UPDATE BASE_ENV_CONTENTS bec SET
3260
			   bec.SEQ_NUM = bec.SEQ_NUM + 1
3261
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
3262
		   AND bec.PROD_ID != nProdId
3263
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  currSeqNum - 1;
3264
 
3265
 
3266
	 ELSIF currSeqNum < nToSeqNum
3267
	 THEN
3268
 
3269
		FromSeqNum := currSeqNum + 1;  
3270
 
3271
		 -- Shift others Down
3272
		UPDATE BASE_ENV_CONTENTS bec SET
3273
		   	   bec.SEQ_NUM = bec.SEQ_NUM - 1
3274
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
3275
		   AND bec.PROD_ID != nProdId
3276
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  nToSeqNum;
3277
 
3278
	 END IF;
3279
 
3280
 
3281
	 -- Move Product to new seq_num
3282
	 UPDATE BASE_ENV_CONTENTS bec SET
3283
		    bec.SEQ_NUM = nToSeqNum
3284
	  WHERE bec.BASE_ENV_ID = nBaseEnvId 
3285
	    AND bec.PROD_ID = nProdId;
3286
 
3287
 
3288
 
3289
END Shift_Product_SeqNum;
3290
/*--------------------------------------------------------------------------------------------------*/
3291
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
3292
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3293
						  nUserId IN NUMBER ) IS
3294
 
3295
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
3296
	SeqNum NUMBER;
3297
 
3298
 
3299
BEGIN
3300
	/*--------------- Business Rules Here -------------------*/
3301
	-- Check for parameters
3302
	IF (sProdIdOrder IS NULL)  OR (nBaseEnvId IS NULL) 
3303
	THEN
3304
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId='|| nBaseEnvId  ||' sProdIdOrder='|| sProdIdOrder  );
3305
	END IF;
3306
	/*-------------------------------------------------------*/
3307
 
3308
	nIdCollector := IN_LIST_NUMBER ( sProdIdOrder );
3309
 
3310
	-- Set start sequence number
3311
	SeqNum := 1;
3312
 
3313
	FOR i IN 1..nIdCollector.COUNT
3314
	LOOP
3315
 
3316
		-- Update new sequence number
3317
		UPDATE BASE_ENV_CONTENTS osc SET
3318
			osc.SEQ_NUM = SeqNum
3319
		 WHERE osc.BASE_ENV_ID = nBaseEnvId
3320
		   AND osc.PROD_ID = nIdCollector(i);
3321
 
3322
		SeqNum := SeqNum + 1;
3323
 
3324
	END LOOP;
3325
 
3326
 
3327
END	Sort_Products;
3328
/*--------------------------------------------------------------------------------------------------*/
3329
 
3330
 
3331
END pk_Base_Env;
3332
 
3333
/
3334
 
3335
/
3336
--------------------------------------------------------
3337
--  DDL for Package Body PK_BASE_ENV_TEST
3338
--------------------------------------------------------
3339
 
3340
  CREATE OR REPLACE PACKAGE BODY "PK_BASE_ENV_TEST" 
3341
IS
3342
/* ---------------------------------------------------------------------------
3343
    Version: 1.0.0
3344
   --------------------------------------------------------------------------- */
3345
 
3346
 
3347
/*--------------------------------------------------------------------------------------------------*/
3348
PROCEDURE Add_Base_Env ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
3349
						 nBosId IN BASE_ENV.BOS_ID%TYPE,
3350
						 nBomId IN BASE_ENV.BOM_ID%TYPE,
3351
						 nOsId IN OS_BASE_ENV.OS_ID%TYPE ) IS
3352
 
3353
nBaseEnvId BASE_ENV.BASE_ENV_ID%TYPE;						 
3354
 
3355
BEGIN
3356
	/*--------------- Business Rules Here -------------------*/
3357
	/*-------------------------------------------------------*/
3358
 
3359
	-- Get base_env_id
3360
	SELECT SEQ_BASE_ENV_ID.NEXTVAL INTO nBaseEnvId FROM DUAL;
3361
 
3362
	-- Insert new base env name
3363
	INSERT INTO BASE_ENV ( BASE_ENV_ID, BOS_ID, BASE_ENV_NAME, BOM_ID )
3364
	VALUES ( nBaseEnvId, nBosId, sBaseEnvName, nBomId );
3365
 
3366
 
3367
	EXCEPTION
3368
    WHEN DUP_VAL_ON_INDEX
3369
	THEN		
3370
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
3371
 
3372
END	Add_Base_Env;
3373
/*--------------------------------------------------------------------------------------------------*/
3374
PROCEDURE Update_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
3375
							sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
3376
						 	nBosId IN BASE_ENV.BOS_ID%TYPE ) IS
3377
 
3378
BEGIN
3379
	/*--------------- Business Rules Here -------------------*/
3380
	IF (nBaseEnvId IS NULL) 
3381
	THEN
3382
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
3383
 
3384
	END IF;
3385
	/*-------------------------------------------------------*/
3386
 
3387
	-- Update Base Env
3388
	UPDATE BASE_ENV SET
3389
		BASE_ENV_NAME = sBaseEnvName,
3390
		BOS_ID = nBosId
3391
	WHERE BASE_ENV_ID = nBaseEnvId;
3392
 
3393
 
3394
	EXCEPTION
3395
    WHEN DUP_VAL_ON_INDEX
3396
	THEN		
3397
		RAISE_APPLICATION_ERROR (-20000, 'Base Configuration Name "'|| sBaseEnvName ||'" is Already Used in this BOM.');
3398
 
3399
END	Update_Base_Env;
3400
/*--------------------------------------------------------------------------------------------------*/
3401
FUNCTION Get_Base_Env_Id ( sBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
3402
						   nBomId IN BASE_ENV.BOM_ID%TYPE ) RETURN BASE_ENV.BASE_ENV_ID%TYPE IS
3403
 
3404
ReturnValue BASE_ENV.BASE_ENV_ID%TYPE;	
3405
 
3406
CURSOR curBaseEnv IS
3407
	SELECT be.BASE_ENV_ID
3408
	  FROM BASE_ENV be
3409
	 WHERE be.BASE_ENV_NAME = sBaseEnvName
3410
	   AND be.BOM_ID = nBomId;
3411
recBaseEnv curBaseEnv%ROWTYPE;
3412
 
3413
BEGIN
3414
	/*--------------- Business Rules Here -------------------*/
3415
	/*-------------------------------------------------------*/
3416
 
3417
	-- Get bom_name_id
3418
	OPEN curBaseEnv;
3419
	FETCH curBaseEnv INTO recBaseEnv;
3420
 
3421
	IF curBaseEnv%FOUND THEN
3422
		ReturnValue := recBaseEnv.BASE_ENV_ID;
3423
	ELSE
3424
		ReturnValue := NULL;
3425
	END IF;
3426
 
3427
	CLOSE curBaseEnv;
3428
 
3429
	RETURN ReturnValue;
3430
END	Get_Base_Env_Id;
3431
/*--------------------------------------------------------------------------------------------------*/
3432
PROCEDURE Destroy_Base_Env ( nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE ) IS
3433
 
3434
 
3435
BEGIN
3436
	/*--------------- Business Rules Here -------------------*/
3437
	IF (nBaseEnvId IS NULL) 
3438
	THEN
3439
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId= '|| nBaseEnvId  );
3440
 
3441
	END IF;
3442
	/*-------------------------------------------------------*/
3443
 
3444
	-- Destroy Base Env Contents
3445
	DELETE
3446
      FROM BASE_ENV_CONTENTS
3447
     WHERE BASE_ENV_ID = nBaseEnvId;
3448
 
3449
	-- Remove Base Env From BOM
3450
	DELETE 
3451
	  FROM OS_BASE_ENV obe
3452
	 WHERE obe.BASE_ENV_ID = nBaseEnvId;
3453
 
3454
	-- Destroy Base Env
3455
	DELETE 
3456
	  FROM BASE_ENV be
3457
	 WHERE be.BASE_ENV_ID = nBaseEnvId;				 
3458
 
3459
END	Destroy_Base_Env;
3460
/*--------------------------------------------------------------------------------------------------*/
3461
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
3462
		  			  	nBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE,
3463
						nUserId IN NUMBER ) IS
3464
 
3465
NextSeqNum NUMBER;
3466
 
3467
CURSOR prod_cur IS
3468
	SELECT pv.pv_id AS PROD_ID,
3469
		   pv.PV_DESCRIPTION
3470
	  FROM PACKAGE_VERSIONS pv
3471
	 WHERE pv.pv_id IN (
3472
	 	   			   	SELECT * 
3473
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
3474
						);
3475
prod_rec prod_cur%ROWTYPE;
3476
 
3477
 
3478
BEGIN
3479
	/*--------------- Business Rules Here -------------------*/
3480
	/*-------------------------------------------------------*/
3481
 
3482
	-- Get seq_num
3483
	SELECT MAX( bec.SEQ_NUM ) INTO NextSeqNum
3484
	  FROM BASE_ENV_CONTENTS bec
3485
	 WHERE bec.BASE_ENV_ID = nBaseEnvId;
3486
 
3487
	-- Set NextSeqNum to 0 if no existing products are found
3488
	IF NextSeqNum IS NULL THEN
3489
	   NextSeqNum := 1;
3490
	ELSE
3491
	   NextSeqNum := NextSeqNum + 1;
3492
	END IF;
3493
 
3494
 
3495
	-- Insert into OS Contents
3496
	OPEN prod_cur;
3497
	FETCH prod_cur INTO prod_rec;
3498
 
3499
	WHILE prod_cur%FOUND
3500
	LOOP
3501
 
3502
		INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, SEQ_NUM, PROD_ID, BASE_ENV_COMMENTS )
3503
		VALUES (
3504
				nBaseEnvId, 
3505
				NextSeqNum, 
3506
				prod_rec.PROD_ID,
3507
				prod_rec.PV_DESCRIPTION
3508
				);
3509
 
3510
		-- Log Action --
3511
		pk_Utils.Log_Action ( nUserId, 
3512
							  1, 
3513
							  'pk_Base_Env.Add_Product with BASE_ENV_ID='|| nBaseEnvId ||', SEQ_NUM='|| NextSeqNum ||', PROD_ID='|| prod_rec.PROD_ID,
3514
							  NULL, NULL );
3515
 
3516
 
3517
		NextSeqNum := NextSeqNum + 1;
3518
		FETCH prod_cur INTO prod_rec;
3519
	END LOOP;
3520
 
3521
 
3522
	CLOSE prod_cur;
3523
 
3524
 
3525
END	Add_Product; 
3526
/*--------------------------------------------------------------------------------------------------*/
3527
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
3528
		  			  	  	nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3529
							nUserId IN NUMBER ) IS
3530
 
3531
NextSeqNum NUMBER := 1;
3532
 
3533
CURSOR prod_cur IS
3534
	SELECT bec.PROD_ID, bec.SEQ_NUM
3535
	  FROM BASE_ENV_CONTENTS bec
3536
	 WHERE bec.BASE_ENV_ID = nBaseEnvId
3537
	 ORDER BY bec.SEQ_NUM;
3538
prod_rec prod_cur%ROWTYPE;	  
3539
 
3540
BEGIN
3541
	/*--------------- Business Rules Here -------------------*/
3542
	IF sProdIdList IS NULL
3543
	THEN
3544
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
3545
 
3546
	END IF;
3547
	/*-------------------------------------------------------*/
3548
 
3549
	-- Remove Products
3550
	DELETE 
3551
	FROM BASE_ENV_CONTENTS
3552
	WHERE BASE_ENV_ID = nBaseEnvId
3553
	  AND PROD_ID IN ( 
3554
	  	  		  	    SELECT * 
3555
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
3556
					 );
3557
 
3558
 
3559
	-- Update Seq Numbers
3560
	OPEN prod_cur;
3561
	FETCH prod_cur INTO prod_rec;
3562
 
3563
	WHILE prod_cur%FOUND
3564
	LOOP
3565
 
3566
		UPDATE BASE_ENV_CONTENTS SET
3567
		SEQ_NUM = NextSeqNum
3568
		WHERE BASE_ENV_ID = nBaseEnvId
3569
		  AND PROD_ID = prod_rec.PROD_ID;
3570
 
3571
		NextSeqNum := NextSeqNum + 1;
3572
		FETCH prod_cur INTO prod_rec;
3573
	END LOOP;
3574
 
3575
	CLOSE prod_cur;
3576
 
3577
 
3578
 
3579
END Remove_Products; 
3580
/*--------------------------------------------------------------------------------------------------*/
3581
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
3582
		  				   	 sProdVersion IN VARCHAR2,
3583
							 nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3584
							 nUserId IN NUMBER,
3585
							 sComments IN VARCHAR2 ) IS
3586
 
3587
ProdId PACKAGE_VERSIONS.PV_ID%TYPE;
3588
ProdName PACKAGES.PKG_NAME%TYPE;
3589
 
3590
CURSOR prod_cur IS
3591
	SELECT bec.PROD_ID
3592
	  FROM BASE_ENV_CONTENTS bec
3593
	 WHERE bec.PROD_ID = ProdId
3594
	   AND bec.BASE_ENV_ID = nBaseEnvId;
3595
prod_rec prod_cur%ROWTYPE;
3596
 
3597
BEGIN
3598
	/*--------------- Business Rules Here -------------------*/                             
3599
	IF (NOT nPkgId IS NULL) AND (sProdVersion IS NULL) AND (NOT nBaseEnvId IS NULL) AND (NOT nUserId IS NULL) THEN
3600
	   RAISE_APPLICATION_ERROR (-20000, 'Please provide Product Version.('|| sProdVersion ||')' );
3601
 
3602
	ELSIF (nPkgId IS NULL) OR (sProdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nUserId IS NULL) THEN
3603
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nPkgId= '|| nPkgId ||', sProdVersion='|| sProdVersion ||', nBaseEnvId='|| nBaseEnvId ||', nUserId='|| nUserId );
3604
 
3605
	END IF;
3606
	/*-------------------------------------------------------*/
3607
 
3608
	-- Get Product Name --
3609
	SELECT PKG_NAME INTO ProdName FROM PACKAGES WHERE PKG_ID = nPkgId;
3610
 
3611
 
3612
	-- Create Product Version in Release Manager if Required, and Get Prod_id --
3613
	Seed_Package_Names_Versions ( ProdName, sProdVersion, nUserId, ProdId );
3614
 
3615
 
3616
	-- Add Product To Base Env --
3617
	OPEN prod_cur;
3618
	FETCH prod_cur INTO prod_rec;
3619
 
3620
	IF prod_cur%NOTFOUND THEN
3621
	   pk_Base_Env.Add_Product ( ProdId, nBaseEnvId, nUserId );
3622
 
3623
	   -- Update Comments
3624
	   IF (NOT sComments IS NULL) THEN
3625
	   		UPDATE BASE_ENV_CONTENTS bec SET
3626
				bec.BASE_ENV_COMMENTS = sComments
3627
			 WHERE bec.BASE_ENV_ID = nBaseEnvId
3628
			   AND bec.PROD_ID = ProdId;
3629
 
3630
	   END IF;
3631
	END IF;
3632
 
3633
	CLOSE prod_cur;
3634
 
3635
 
3636
END	Add_Product_Wrap;    
3637
/*--------------------------------------------------------------------------------------------------*/
3638
PROCEDURE Update_Product ( nOldProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
3639
						   sNewProdIdVersion IN VARCHAR2,
3640
						   nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3641
						   nSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE,
3642
						   sComments IN BASE_ENV_CONTENTS.BASE_ENV_COMMENTS%TYPE,
3643
						   sElectronicName IN PACKAGES.ELECTRONIC_NAME%TYPE ) IS
3644
 
3645
nNewProdId BASE_ENV_CONTENTS.PROD_ID%TYPE;						  
3646
 
3647
CURSOR curProd IS
3648
 	SELECT pv.PV_ID
3649
	  FROM PACKAGE_VERSIONS pv
3650
	 WHERE pv.pkg_id IN ( SELECT pv.pkg_id FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nOldProdId )
3651
	   AND pv.PKG_VERSION = sNewProdIdVersion;
3652
recProd curProd%ROWTYPE;						   
3653
 
3654
BEGIN
3655
	/*--------------- Business Rules Here -------------------*/
3656
	IF (nOldProdId IS NULL) OR (sNewProdIdVersion IS NULL) OR (nBaseEnvId IS NULL) OR (nSeqNum IS NULL)
3657
	THEN
3658
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOldProdId= '|| nOldProdId  ||', sNewProdIdVersion= '|| sNewProdIdVersion ||', nBaseEnvId= '|| nBaseEnvId ||', nSeqNum= '|| nSeqNum);
3659
	END IF;
3660
	/*-------------------------------------------------------*/
3661
 
3662
	-- Get new prod_id
3663
	OPEN curProd;
3664
	FETCH curProd INTO recProd;
3665
 
3666
	IF curProd%FOUND THEN
3667
		nNewProdId := recProd.PV_ID;
3668
	ELSE
3669
		RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');
3670
	END IF;
3671
 
3672
	CLOSE curProd;
3673
 
3674
 
3675
	-- Update Product Details
3676
	UPDATE BASE_ENV_CONTENTS SET
3677
		PROD_ID = nNewProdId,
3678
		BASE_ENV_COMMENTS = sComments
3679
	 WHERE BASE_ENV_ID = nBaseEnvId
3680
	   AND PROD_ID = nOldProdId;
3681
 
3682
 
3683
	UPDATE PACKAGES SET
3684
		ELECTRONIC_NAME = sElectronicName
3685
	WHERE  PKG_ID = 
3686
	(
3687
	 SELECT PKG_ID
3688
	 FROM PACKAGE_VERSIONS 
3689
	 WHERE PACKAGE_VERSIONS.PV_ID = nNewProdId
3690
	);   
3691
 
3692
 
3693
 
3694
	-- Update seq_num
3695
	Shift_Product_SeqNum ( nNewProdId, nBaseEnvId, nSeqNum );
3696
 
3697
END	Update_Product; 
3698
/*--------------------------------------------------------------------------------------------------*/
3699
PROCEDURE Shift_Product_SeqNum ( nProdId IN BASE_ENV_CONTENTS.PROD_ID%TYPE,
3700
		  				 	     nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3701
						 		 nToSeqNum IN BASE_ENV_CONTENTS.SEQ_NUM%TYPE ) IS
3702
 
3703
currSeqNum NUMBER;
3704
FromSeqNum NUMBER;
3705
 
3706
BEGIN
3707
	 -- Get Current seq_num
3708
	 SELECT bec.SEQ_NUM INTO currSeqNum
3709
	   FROM BASE_ENV_CONTENTS bec
3710
	  WHERE bec.BASE_ENV_ID = nBaseEnvId
3711
	    AND bec.PROD_ID = nProdId;
3712
 
3713
 
3714
	 IF currSeqNum > nToSeqNum
3715
	 THEN
3716
 
3717
		FromSeqNum := nToSeqNum;
3718
 
3719
			-- Shift others Up
3720
		UPDATE BASE_ENV_CONTENTS bec SET
3721
			   bec.SEQ_NUM = bec.SEQ_NUM + 1
3722
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
3723
		   AND bec.PROD_ID != nProdId
3724
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  currSeqNum - 1;
3725
 
3726
 
3727
	 ELSIF currSeqNum < nToSeqNum
3728
	 THEN
3729
 
3730
		FromSeqNum := currSeqNum + 1;  
3731
 
3732
		 -- Shift others Down
3733
		UPDATE BASE_ENV_CONTENTS bec SET
3734
		   	   bec.SEQ_NUM = bec.SEQ_NUM - 1
3735
		 WHERE bec.BASE_ENV_ID = nBaseEnvId 
3736
		   AND bec.PROD_ID != nProdId
3737
		   AND bec.SEQ_NUM BETWEEN  FromSeqNum  AND  nToSeqNum;
3738
 
3739
	 END IF;
3740
 
3741
 
3742
	 -- Move Product to new seq_num
3743
	 UPDATE BASE_ENV_CONTENTS bec SET
3744
		    bec.SEQ_NUM = nToSeqNum
3745
	  WHERE bec.BASE_ENV_ID = nBaseEnvId 
3746
	    AND bec.PROD_ID = nProdId;
3747
 
3748
 
3749
 
3750
END Shift_Product_SeqNum;
3751
/*--------------------------------------------------------------------------------------------------*/
3752
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
3753
		  			  	  nBaseEnvId IN BASE_ENV_CONTENTS.BASE_ENV_ID%TYPE,
3754
						  nUserId IN NUMBER ) IS
3755
 
3756
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
3757
	SeqNum NUMBER;
3758
 
3759
 
3760
BEGIN
3761
	/*--------------- Business Rules Here -------------------*/
3762
	-- Check for parameters
3763
	IF (sProdIdOrder IS NULL)  OR (nBaseEnvId IS NULL) 
3764
	THEN
3765
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBaseEnvId='|| nBaseEnvId  ||' sProdIdOrder='|| sProdIdOrder  );
3766
	END IF;
3767
	/*-------------------------------------------------------*/
3768
 
3769
	nIdCollector := IN_LIST_NUMBER ( sProdIdOrder );
3770
 
3771
	-- Set start sequence number
3772
	SeqNum := 1;
3773
 
3774
	FOR i IN 1..nIdCollector.COUNT
3775
	LOOP
3776
 
3777
		-- Update new sequence number
3778
		UPDATE BASE_ENV_CONTENTS osc SET
3779
			osc.SEQ_NUM = SeqNum
3780
		 WHERE osc.BASE_ENV_ID = nBaseEnvId
3781
		   AND osc.PROD_ID = nIdCollector(i);
3782
 
3783
		SeqNum := SeqNum + 1;
3784
 
3785
	END LOOP;
3786
 
3787
 
3788
END	Sort_Products;
3789
/*--------------------------------------------------------------------------------------------------*/
3790
 
3791
 
3792
END pk_Base_Env_test;
3793
 
3794
/
3795
 
3796
/
3797
--------------------------------------------------------
3798
--  DDL for Package Body PK_BOM
3799
--------------------------------------------------------
3800
 
3801
  CREATE OR REPLACE PACKAGE BODY "PK_BOM" 
3802
IS
3803
/* ---------------------------------------------------------------------------
3804
    Version: 2.0
3805
   --------------------------------------------------------------------------- */
3806
 
3807
/*--------------------------------------------------------------------------------------------------*/
3808
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
3809
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
3810
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
3811
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
3812
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
3813
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
3814
					nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3815
					nUserId IN BOM_STATE.USER_ID%TYPE ) IS
3816
 
3817
BomId BOMS.BOM_ID%TYPE;
3818
ParentBomId BOMS.PARENT_BOM_ID%TYPE;
3819
BomNameId BOM_NAMES.BOM_NAME_ID%TYPE;
3820
BomVersion BOMS.BOM_VERSION%TYPE;
3821
BomLifeCycle BOMS.BOM_LIFECYCLE%TYPE;
3822
ProjId BRANCHES.PROJ_ID%TYPE;
3823
 
3824
CURSOR curBom IS 
3825
		SELECT bo.BOM_ID
3826
		  FROM BOMS bo,
3827
		  	   BRANCHES br
3828
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
3829
		   AND br.PROJ_ID = ProjId
3830
		   AND bo.BOM_NAME_ID = BomNameId
3831
		   AND bo.BOM_VERSION = BomVersion
3832
		   AND bo.BOM_LIFECYCLE = BomLifeCycle;
3833
recBom curBom%ROWTYPE;
3834
 
3835
DUPLICATE_BOM EXCEPTION;
3836
 
3837
BEGIN
3838
	/*--------------- Business Rules Here -------------------*/
3839
	IF (nToBranchId IS NULL) OR (nUserId IS NULL)
3840
	THEN
3841
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nToBranchId= '|| nToBranchId ||', nUserId='|| nUserId );
3842
 
3843
	END IF;
3844
	/*-------------------------------------------------------*/
3845
 
3846
	-- Get bom_id
3847
	SELECT SEQ_BOM_ID.NEXTVAL INTO BomId FROM DUAL;
3848
 
3849
 
3850
	-- Get bom_name_id
3851
	IF nFromBomId IS NULL THEN
3852
		BomNameId := New_Bom_Name ( sBomName );
3853
        ParentBomId := BomId;
3854
	ELSE
3855
		BomNameId := New_Bom_Name ( nFromBomId );
3856
        ParentBomId := nFromBomId;
3857
	END IF;		
3858
 
3859
 
3860
 
3861
 
3862
	-- Get Bom Version and Lifecycle
3863
	--Get_Next_Version ( nFromBomId, nToBranchId, BomVersion, BomLifeCycle, ParentBomId, BomNameId );
3864
 
3865
 
3866
 
3867
	-- Get proj_id
3868
	SELECT br.PROJ_ID INTO ProjId
3869
	  FROM BRANCHES br
3870
	 WHERE br.BRANCH_ID = nToBranchId;
3871
 
3872
 
3873
 
3874
	-- Check for duplicate BOMs
3875
	OPEN curBom;
3876
    FETCH curBom INTO recBom;
3877
 
3878
    IF curBom%FOUND
3879
    THEN
3880
		RAISE DUPLICATE_BOM;
3881
	END IF;
3882
 
3883
	CLOSE curBom;
3884
 
3885
 
3886
 
3887
	-- Add Blank Bom --
3888
	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 )
3889
	VALUES ( BomId, nToBranchId, BomNameId, sBomComments, sBomVersion, sBomLifeCycle, 'N', 'N', ParentBomId, nRtagId  );
3890
 
3891
 
3892
 
3893
 
3894
	/* Log BOM_TRAIL */
3895
	pk_Bom.Log_Bom_Trail ( BomId, 'CREATED: Version '|| sBomVersion ||'.'|| sBomLifeCycle , nUserId );
3896
 
3897
 
3898
 
3899
	IF nFromBomId IS NOT NULL THEN
3900
		/* Add Bom Clonned from ... */
3901
		pk_Utils.Clone_BOM ( nFromBomId, BomId, nUserId );
3902
 
3903
	END IF;
3904
 
3905
 
3906
 
3907
	--- Set Bom State ---
3908
	Release_To ( BomId, nUserId );
3909
 
3910
 
3911
	EXCEPTION
3912
    WHEN DUPLICATE_BOM
3913
	THEN		
3914
		RAISE_APPLICATION_ERROR (-20000, 'BOM "'|| sBomName ||' '|| BomVersion ||'.'|| BomLifeCycle ||'" is Already Used in this Project.');
3915
 
3916
END	Add_Bom;
3917
/*--------------------------------------------------------------------------------------------------*/
3918
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
3919
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3920
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
3921
					   nUserId IN NUMBER )  IS
3922
 
3923
ReleaseName VARCHAR2(100);					   
3924
 
3925
BEGIN
3926
	/*--------------- Business Rules Here -------------------*/
3927
	/*-------------------------------------------------------*/
3928
 
3929
	--- Update Bom Properties ---
3930
	UPDATE BOMS bo SET
3931
		bo.RTAG_ID_FK = nRtagId,
3932
		bo.BOM_COMMENTS = sBomComment
3933
	WHERE bo.BOM_ID = nBomId;
3934
 
3935
	SELECT RTAG_NAME INTO ReleaseName
3936
	FROM RELEASE_TAGS 
3937
	WHERE RTAG_ID = nRtagId;
3938
 
3939
 
3940
	/* Log BOM_TRAIL */
3941
	pk_Bom.Log_Bom_Trail ( nBomId, 'Updated BOM properties: Set Release Manager Reference ='||ReleaseName||' and comments ='||sBomComment, nUserId );
3942
 
3943
 
3944
END	Update_Bom;
3945
/*--------------------------------------------------------------------------------------------------*/
3946
PROCEDURE Update_ProdBom ( nBomId IN BOMS.BOM_ID%TYPE,
3947
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
3948
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
3949
					   nUserId IN NUMBER )  IS
3950
 
3951
ReleaseName VARCHAR2(100);					   
3952
 
3953
BEGIN
3954
	/*--------------- Business Rules Here -------------------*/
3955
	/*-------------------------------------------------------*/
3956
 
3957
	--- Update Bom Properties ---
3958
	UPDATE BOMS bo SET
3959
		bo.RTAG_ID_FK = nRtagId,
3960
		bo.BOM_COMMENTS = sBomComment
3961
	WHERE bo.BOM_ID = nBomId;
3962
 
3963
	SELECT BRANCH_NAME INTO ReleaseName
3964
	FROM BRANCHES 
3965
	WHERE BRANCH_ID = nRtagId;
3966
 
3967
 
3968
	/* Log BOM_TRAIL */
3969
	pk_Bom.Log_Bom_Trail ( nBomId, 'Updated BOM properties: Set Deployment Manager Reference ='||ReleaseName||' and comments ='||sBomComment, nUserId );
3970
 
3971
 
3972
END	Update_ProdBom;
3973
/*--------------------------------------------------------------------------------------------------*/
3974
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE IS
3975
 
3976
ReturnValue 	 BOM_NAMES.BOM_NAME_ID%TYPE;	
3977
 
3978
CURSOR curBomNames IS
3979
	SELECT bn.BOM_NAME_ID
3980
	  FROM BOM_NAMES bn
3981
	 WHERE bn.BOM_NAME = sBomName;
3982
recBomNames curBomNames%ROWTYPE;
3983
 
3984
BEGIN
3985
	/*--------------- Business Rules Here -------------------*/
3986
	/*-------------------------------------------------------*/
3987
 
3988
	-- Check for existance of this name
3989
	OPEN curBomNames;
3990
	FETCH curBomNames INTO recBomNames;
3991
 
3992
	ReturnValue := NULL;
3993
	IF curBomNames%FOUND THEN
3994
		ReturnValue := recBomNames.BOM_NAME_ID;
3995
	END IF;
3996
 
3997
	CLOSE curBomNames;
3998
 
3999
 
4000
	-- Finnaly Create Name if required --    
4001
	IF ReturnValue IS NULL THEN
4002
		-- Get bom_name_id
4003
		SELECT SEQ_BOM_NAME_ID.NEXTVAL INTO ReturnValue FROM DUAL;
4004
 
4005
		INSERT INTO BOM_NAMES ( BOM_NAME_ID, BOM_NAME )
4006
		VALUES ( ReturnValue, sBomName );
4007
 
4008
	END IF;	
4009
 
4010
 
4011
	RETURN ReturnValue;
4012
END	New_Bom_Name;
4013
/*--------------------------------------------------------------------------------------------------*/
4014
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE IS
4015
 
4016
ReturnValue 	 BOMS.BOM_NAME_ID%TYPE;	
4017
 
4018
BEGIN
4019
	/*--------------- Business Rules Here -------------------*/
4020
	/*-------------------------------------------------------*/
4021
 
4022
	-- Get bom_name_id
4023
	SELECT bo.BOM_NAME_ID INTO ReturnValue
4024
	  FROM BOMS bo
4025
	 WHERE bo.BOM_ID = nFromBomId;
4026
 
4027
 
4028
	RETURN ReturnValue;
4029
END	New_Bom_Name;
4030
/*--------------------------------------------------------------------------------------------------*/
4031
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
4032
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
4033
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
4034
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
4035
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  ) IS
4036
 
4037
StateName STATES.STATE_NAME%TYPE;						  
4038
IsOfficial BOMS.IS_READONLY%TYPE;	
4039
IsRejected VARCHAR2(50);					  
4040
 
4041
BEGIN
4042
	/*--------------- Business Rules Here -------------------*/
4043
	-- Check if Bom is official
4044
	SELECT bo.IS_READONLY INTO IsOfficial
4045
	  FROM BOMS bo
4046
	 WHERE bo.BOM_ID = nBomId;
4047
 
4048
	IF IsOfficial != 'Y' THEN
4049
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first.' );
4050
	END IF;
4051
	/*-------------------------------------------------------*/
4052
 
4053
	-- Get State Name
4054
	SELECT st.STATE_NAME INTO StateName
4055
	  FROM STATES st
4056
	 WHERE st.STATE_ID = nStateId;
4057
 
4058
 
4059
	-- AcceptReject BOM
4060
	UPDATE BOMS bo SET
4061
		bo.IS_REJECTED = cIsRejected
4062
	WHERE bo.BOM_ID = nBomId;
4063
 
4064
 
4065
	-- Auto-Hide Bom
4066
	IF cIsRejected = 'Y' THEN
4067
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_REJECT_BOM') );
4068
	ELSE
4069
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_ACCEPT_BOM') );
4070
	END IF;
4071
 
4072
 
4073
	-- Log Rejection Trail 
4074
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, cIsRejected, nUserId, sComments );
4075
 
4076
 
4077
	/* Log BOM_TRAIL */
4078
	-- Get Log Title
4079
	IsRejected := 'ACCEPTED';
4080
	IF cIsRejected = 'Y' THEN
4081
		IsRejected := 'REJECTED';
4082
	END IF;
4083
 
4084
	-- Finnaly log it
4085
	Log_Bom_Trail ( nBomId, IsRejected ||': By '|| StateName, nUserId, sComments );
4086
 
4087
END	Accept_Reject;
4088
/*--------------------------------------------------------------------------------------------------*/
4089
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
4090
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
4091
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
4092
							 nUserId IN NUMBER )  IS
4093
 
4094
 
4095
BEGIN
4096
	/*--------------- Business Rules Here -------------------*/
4097
	/*-------------------------------------------------------*/
4098
	--- Set Bom Official or Not ---
4099
	UPDATE BOMS bo SET
4100
	bo.IS_READONLY = cIsOfficial
4101
	WHERE bo.BOM_ID = nBomId;
4102
 
4103
 
4104
	-- Auto-Hide Bom
4105
	IF cIsOfficial = 'Y' THEN
4106
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_LOCK_BOM') );
4107
 
4108
		-- Update node version
4109
		Update_Nodes_Version ( nBomId, nUserId );
4110
	ELSE
4111
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_UNLOCK_BOM') );
4112
	END IF;
4113
 
4114
 
4115
 
4116
	/* Log BOM_TRAIL */
4117
	pk_Bom.Log_Bom_Trail ( nBomId, 'LOCKED: '|| cIsOfficial, nUserId );
4118
 
4119
 
4120
END	Set_Bom_Official;
4121
/*--------------------------------------------------------------------------------------------------*/
4122
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
4123
							 	 nUserId IN NUMBER )  IS
4124
 
4125
	CompareBomId NUMBER;
4126
	ProjId NUMBER;
4127
	BomVersion VARCHAR2(4000);
4128
 
4129
	CURSOR curUpdateNode IS
4130
		SELECT DISTINCT
4131
			   nlook.NODE_ID,
4132
			   DECODE ( nlc.LAST_LIFE_CYCLE,
4133
			   			NULL, 0,
4134
						nlc.LAST_LIFE_CYCLE + 1 ) AS NEW_LIFE_CYCLE	   
4135
		  FROM (
4136
 
4137
		  		/* ADDED PATCHES ONLY */
4138
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
4139
				  FROM (
4140
				  		SELECT osc.PROD_ID,
4141
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
4142
						  FROM OS_CONTENTS osc,
4143
						  	   OPERATING_SYSTEMS os,
4144
							   NETWORK_NODES nn,
4145
							   BOM_CONTENTS bc,
4146
							   PACKAGE_VERSIONS pv
4147
						 WHERE osc.OS_ID = os.OS_ID
4148
						   AND os.NODE_ID = nn.NODE_ID
4149
						   AND bc.NODE_ID = nn.NODE_ID
4150
						   AND osc.PROD_ID = pv.PV_ID
4151
						   AND NOT pv.IS_PATCH IS NULL
4152
						   AND bc.BOM_ID = nBomId	
4153
				  	   ) newbom,
4154
					   (
4155
					   	SELECT osc.PROD_ID,
4156
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
4157
						  FROM OS_CONTENTS osc,
4158
						  	   OPERATING_SYSTEMS os,
4159
							   NETWORK_NODES nn,
4160
							   BOM_CONTENTS bc,
4161
							   PACKAGE_VERSIONS pv
4162
						 WHERE osc.OS_ID = os.OS_ID
4163
						   AND os.NODE_ID = nn.NODE_ID
4164
						   AND bc.NODE_ID = nn.NODE_ID
4165
						   AND osc.PROD_ID = pv.PV_ID
4166
						   AND NOT pv.IS_PATCH IS NULL
4167
						   AND bc.BOM_ID = CompareBomId	
4168
					   ) oldbom
4169
				 WHERE newbom.PK = oldbom.PK (+) 
4170
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
4171
				   AND oldbom.PK IS NULL
4172
				UNION 
4173
		  		/* ADDED PATCHES ONLY TO BASE CONFIGURATION */
4174
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
4175
				  FROM (
4176
				  		SELECT bec.PROD_ID,
4177
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
4178
						  FROM BASE_ENV_CONTENTS bec,
4179
						  	   OS_BASE_ENV obe,
4180
						  	   OPERATING_SYSTEMS os,
4181
							   NETWORK_NODES nn,
4182
							   BOM_CONTENTS bc,
4183
							   PACKAGE_VERSIONS pv
4184
						 WHERE obe.OS_ID = os.OS_ID
4185
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
4186
						   AND os.NODE_ID = nn.NODE_ID
4187
						   AND bc.NODE_ID = nn.NODE_ID
4188
						   AND bec.PROD_ID = pv.PV_ID
4189
						   AND NOT pv.IS_PATCH IS NULL
4190
						   AND bc.BOM_ID = nBomId	
4191
				  	   ) newbom,
4192
					   (
4193
					   	SELECT bec.PROD_ID,
4194
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
4195
						  FROM BASE_ENV_CONTENTS bec,
4196
						  	   OS_BASE_ENV obe,
4197
						  	   OPERATING_SYSTEMS os,
4198
							   NETWORK_NODES nn,
4199
							   BOM_CONTENTS bc,
4200
							   PACKAGE_VERSIONS pv
4201
						 WHERE obe.OS_ID = os.OS_ID
4202
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
4203
						   AND os.NODE_ID = nn.NODE_ID
4204
						   AND bc.NODE_ID = nn.NODE_ID
4205
						   AND bec.PROD_ID = pv.PV_ID
4206
						   AND NOT pv.IS_PATCH IS NULL
4207
						   AND bc.BOM_ID = CompareBomId	
4208
					   ) oldbom
4209
				 WHERE newbom.PK = oldbom.PK (+) 
4210
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
4211
				   AND oldbom.PK IS NULL
4212
				UNION				
4213
 
4214
				/* ADDED PRODUCTS ONLY */
4215
				SELECT DECODE( oldbom.PROD_ID,
4216
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
4217
					   newbom.PROD_ID, newbom.PK
4218
				  FROM (
4219
				  		SELECT osc.PROD_ID,
4220
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
4221
							   pv.PKG_ID,
4222
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
4223
						  FROM OS_CONTENTS osc,
4224
						  	   OPERATING_SYSTEMS os,
4225
							   NETWORK_NODES nn,
4226
							   BOM_CONTENTS bc,
4227
							   PACKAGE_VERSIONS pv
4228
						 WHERE osc.OS_ID = os.OS_ID
4229
						   AND os.NODE_ID = nn.NODE_ID
4230
						   AND bc.NODE_ID = nn.NODE_ID
4231
						   AND osc.PROD_ID = pv.PV_ID
4232
						   AND pv.IS_PATCH IS NULL
4233
						   AND bc.BOM_ID = nBomId	
4234
				  	   ) newbom,
4235
					   (
4236
					   	SELECT osc.PROD_ID,
4237
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
4238
							   pv.PKG_ID,
4239
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
4240
						  FROM OS_CONTENTS osc,
4241
						  	   OPERATING_SYSTEMS os,
4242
							   NETWORK_NODES nn,
4243
							   BOM_CONTENTS bc,
4244
							   PACKAGE_VERSIONS pv
4245
						 WHERE osc.OS_ID = os.OS_ID
4246
						   AND os.NODE_ID = nn.NODE_ID
4247
						   AND bc.NODE_ID = nn.NODE_ID
4248
						   AND osc.PROD_ID = pv.PV_ID
4249
						   AND pv.IS_PATCH IS NULL
4250
						   AND bc.BOM_ID = CompareBomId	
4251
					   ) oldbom
4252
				 WHERE newbom.PK = oldbom.PK (+) 
4253
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
4254
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
4255
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
4256
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	
4257
				   AND newbom.PROD_ID NOT IN 
4258
				   (
4259
				   	   SELECT osc.PROD_ID
4260
					   FROM OS_CONTENTS osc,
4261
					  	    OPERATING_SYSTEMS os,
4262
							NETWORK_NODES nn,
4263
							BOM_CONTENTS bc,
4264
							PACKAGE_VERSIONS pv
4265
					  WHERE osc.OS_ID = os.OS_ID
4266
						AND os.NODE_ID = nn.NODE_ID
4267
						AND bc.NODE_ID = nn.NODE_ID
4268
						AND osc.PROD_ID = pv.PV_ID
4269
						AND pv.IS_PATCH IS NULL
4270
						AND bc.BOM_ID = CompareBomId
4271
				  )	 				   
4272
 
4273
				UNION
4274
 
4275
				/* ADDED PRODUCTS ONLY TO BASE CONFIGURATION */
4276
				SELECT DECODE( oldbom.PROD_ID,
4277
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
4278
					   newbom.PROD_ID, newbom.PK
4279
				  FROM (
4280
				  		SELECT bec.PROD_ID,
4281
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
4282
							   pv.PKG_ID,
4283
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
4284
						  FROM BASE_ENV_CONTENTS bec,
4285
						  	   OS_BASE_ENV obe,
4286
						  	   OPERATING_SYSTEMS os,
4287
							   NETWORK_NODES nn,
4288
							   BOM_CONTENTS bc,
4289
							   PACKAGE_VERSIONS pv
4290
						 WHERE obe.OS_ID = os.OS_ID
4291
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
4292
						   AND os.NODE_ID = nn.NODE_ID
4293
						   AND bc.NODE_ID = nn.NODE_ID
4294
						   AND bec.PROD_ID = pv.PV_ID
4295
						   AND pv.IS_PATCH IS NULL
4296
						   AND bc.BOM_ID = nBomId	
4297
				  	   ) newbom,
4298
					   (
4299
					   	SELECT bec.PROD_ID,
4300
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
4301
							   pv.PKG_ID,
4302
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
4303
						  FROM BASE_ENV_CONTENTS bec,
4304
						  	   OS_BASE_ENV obe,
4305
						  	   OPERATING_SYSTEMS os,
4306
							   NETWORK_NODES nn,
4307
							   BOM_CONTENTS bc,
4308
							   PACKAGE_VERSIONS pv
4309
						 WHERE obe.OS_ID = os.OS_ID
4310
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
4311
						   AND os.NODE_ID = nn.NODE_ID
4312
						   AND bc.NODE_ID = nn.NODE_ID
4313
						   AND bec.PROD_ID = pv.PV_ID
4314
						   AND pv.IS_PATCH IS NULL
4315
						   AND bc.BOM_ID = CompareBomId	
4316
					   ) oldbom
4317
				 WHERE newbom.PK = oldbom.PK (+) 
4318
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
4319
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
4320
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
4321
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	   
4322
				UNION
4323
 
4324
				/* REMOVED PRODUCTS ONLY*/    
4325
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
4326
				  FROM (
4327
				  		SELECT osc.PROD_ID,
4328
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
4329
							   pv.PKG_ID,
4330
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
4331
						  FROM OS_CONTENTS osc,
4332
						  	   OPERATING_SYSTEMS os,
4333
							   NETWORK_NODES nn,
4334
							   BOM_CONTENTS bc,
4335
							   PACKAGE_VERSIONS pv
4336
						 WHERE osc.OS_ID = os.OS_ID
4337
						   AND os.NODE_ID = nn.NODE_ID
4338
						   AND bc.NODE_ID = nn.NODE_ID
4339
						   AND osc.PROD_ID = pv.PV_ID
4340
						   AND pv.IS_PATCH IS NULL
4341
						   AND bc.BOM_ID = nBomId	
4342
				  	   ) newbom,
4343
					   (
4344
					   	SELECT osc.PROD_ID,
4345
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
4346
							   pv.PKG_ID,
4347
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
4348
						  FROM OS_CONTENTS osc,
4349
						  	   OPERATING_SYSTEMS os,
4350
							   NETWORK_NODES nn,
4351
							   BOM_CONTENTS bc,
4352
							   PACKAGE_VERSIONS pv
4353
						 WHERE osc.OS_ID = os.OS_ID
4354
						   AND os.NODE_ID = nn.NODE_ID
4355
						   AND bc.NODE_ID = nn.NODE_ID
4356
						   AND osc.PROD_ID = pv.PV_ID
4357
						   AND pv.IS_PATCH IS NULL
4358
						   AND bc.BOM_ID = CompareBomId	
4359
					   ) oldbom
4360
				 WHERE newbom.PK (+) = oldbom.PK  
4361
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
4362
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
4363
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
4364
				   AND newbom.PK IS NULL  
4365
				UNION   
4366
				/* REMOVED PATCHES */    
4367
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
4368
				  FROM (
4369
				  		SELECT osc.PROD_ID,
4370
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
4371
						  FROM OS_CONTENTS osc,
4372
						  	   OPERATING_SYSTEMS os,
4373
							   NETWORK_NODES nn,
4374
							   BOM_CONTENTS bc,
4375
							   PACKAGE_VERSIONS pv
4376
						 WHERE osc.OS_ID = os.OS_ID
4377
						   AND os.NODE_ID = nn.NODE_ID
4378
						   AND bc.NODE_ID = nn.NODE_ID
4379
						   AND osc.PROD_ID = pv.PV_ID
4380
						   AND NOT pv.IS_PATCH IS NULL
4381
						   AND bc.BOM_ID = nBomId	
4382
				  	   ) newbom,
4383
					   (
4384
					   	SELECT osc.PROD_ID,
4385
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
4386
						  FROM OS_CONTENTS osc,
4387
						  	   OPERATING_SYSTEMS os,
4388
							   NETWORK_NODES nn,
4389
							   BOM_CONTENTS bc,
4390
							   PACKAGE_VERSIONS pv
4391
						 WHERE osc.OS_ID = os.OS_ID
4392
						   AND os.NODE_ID = nn.NODE_ID
4393
						   AND bc.NODE_ID = nn.NODE_ID
4394
						   AND osc.PROD_ID = pv.PV_ID
4395
						   AND NOT pv.IS_PATCH IS NULL
4396
						   AND bc.BOM_ID = CompareBomId	
4397
					   ) oldbom
4398
				 WHERE newbom.PK (+) = oldbom.PK  
4399
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
4400
				   AND newbom.PK IS NULL 
4401
				   UNION
4402
				/* REMOVED PRODUCTS ONLY FROM BASE CONFIGURATION*/    
4403
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
4404
				  FROM (
4405
				  		SELECT bec.PROD_ID,
4406
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
4407
							   pv.PKG_ID,
4408
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
4409
						  FROM BASE_ENV_CONTENTS bec,
4410
						  	   OS_BASE_ENV obe,
4411
						  	   OPERATING_SYSTEMS os,
4412
							   NETWORK_NODES nn,
4413
							   BOM_CONTENTS bc,
4414
							   PACKAGE_VERSIONS pv
4415
						 WHERE obe.OS_ID = os.OS_ID
4416
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
4417
						   AND os.NODE_ID = nn.NODE_ID
4418
						   AND bc.NODE_ID = nn.NODE_ID
4419
						   AND bec.PROD_ID = pv.PV_ID
4420
						   AND pv.IS_PATCH IS NULL
4421
						   AND bc.BOM_ID = nBomId	
4422
				  	   ) newbom,
4423
					   (
4424
					   	SELECT bec.PROD_ID,
4425
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
4426
							   pv.PKG_ID,
4427
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
4428
						  FROM BASE_ENV_CONTENTS bec,
4429
						  	   OS_BASE_ENV obe,
4430
						  	   OPERATING_SYSTEMS os,
4431
							   NETWORK_NODES nn,
4432
							   BOM_CONTENTS bc,
4433
							   PACKAGE_VERSIONS pv
4434
						 WHERE obe.OS_ID = os.OS_ID
4435
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID 
4436
						   AND os.NODE_ID = nn.NODE_ID
4437
						   AND bc.NODE_ID = nn.NODE_ID
4438
						   AND bec.PROD_ID = pv.PV_ID
4439
						   AND pv.IS_PATCH IS NULL
4440
						   AND bc.BOM_ID = CompareBomId	
4441
					   ) oldbom
4442
				 WHERE newbom.PK (+) = oldbom.PK  
4443
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
4444
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
4445
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
4446
				   AND newbom.PK IS NULL  
4447
				UNION   
4448
				/* REMOVED PATCHES FROM BASE CONFIGURATION*/    
4449
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
4450
				  FROM (
4451
				  		SELECT bec.PROD_ID,
4452
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
4453
						  FROM BASE_ENV_CONTENTS bec,
4454
						  	   OS_BASE_ENV obe,
4455
						  	   OPERATING_SYSTEMS os,
4456
							   NETWORK_NODES nn,
4457
							   BOM_CONTENTS bc,
4458
							   PACKAGE_VERSIONS pv
4459
						 WHERE obe.OS_ID = os.OS_ID
4460
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
4461
						   AND os.NODE_ID = nn.NODE_ID
4462
						   AND bc.NODE_ID = nn.NODE_ID
4463
						   AND bec.PROD_ID = pv.PV_ID
4464
						   AND NOT pv.IS_PATCH IS NULL
4465
						   AND bc.BOM_ID = nBomId	
4466
				  	   ) newbom,
4467
					   (
4468
					   	SELECT bec.PROD_ID,
4469
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
4470
						  FROM BASE_ENV_CONTENTS bec,
4471
						  	   OS_BASE_ENV obe,
4472
						  	   OPERATING_SYSTEMS os,
4473
							   NETWORK_NODES nn,
4474
							   BOM_CONTENTS bc,
4475
							   PACKAGE_VERSIONS pv
4476
						 WHERE obe.OS_ID = os.OS_ID
4477
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
4478
						   AND os.NODE_ID = nn.NODE_ID
4479
						   AND bc.NODE_ID = nn.NODE_ID
4480
						   AND bec.PROD_ID = pv.PV_ID
4481
						   AND NOT pv.IS_PATCH IS NULL
4482
						   AND bc.BOM_ID = CompareBomId	
4483
					   ) oldbom
4484
				 WHERE newbom.PK (+) = oldbom.PK  
4485
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
4486
				   AND newbom.PK IS NULL				    	
4487
 
4488
		       ) qry,
4489
			   (
4490
 
4491
		  		SELECT nn.NODE_ID,
4492
					   nn.NODE_NAME,
4493
					   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
4494
				  FROM OPERATING_SYSTEMS os,
4495
					   NETWORK_NODES nn,
4496
					   BOM_CONTENTS bc
4497
				 WHERE os.NODE_ID = nn.NODE_ID
4498
				   AND bc.NODE_ID = nn.NODE_ID
4499
				   AND bc.BOM_ID = nBomId
4500
 
4501
		  	   ) nlook,
4502
			   (
4503
 
4504
				SELECT nn.NODE_NAME, 
4505
					   MAX(nn.NODE_LIFE_CYCLE) AS LAST_LIFE_CYCLE
4506
				  FROM BOMS bo,
4507
				  	   BOM_CONTENTS bc,
4508
					   BRANCHES br,
4509
					   NETWORK_NODES nn
4510
				 WHERE bc.BOM_ID = bo.BOM_ID
4511
				   AND bo.BRANCH_ID = br.BRANCH_ID
4512
				   AND bc.NODE_ID = nn.NODE_ID
4513
				   AND br.PROJ_ID = ProjId
4514
		  	     GROUP BY nn.NODE_NAME
4515
 
4516
			   ) nlc
4517
		 WHERE nlook.PK = qry.PK 
4518
		   AND nlc.NODE_NAME = nlook.NODE_NAME;
4519
	recUpdateNode curUpdateNode%ROWTYPE;
4520
 
4521
 
4522
 
4523
BEGIN
4524
	/*--------------- Business Rules Here -------------------*/
4525
	/*-------------------------------------------------------*/
4526
 
4527
	-- Get some BOM details
4528
	SELECT bo.PARENT_BOM_ID, br.PROJ_ID, bo.BOM_VERSION ||'.'|| bo.BOM_LIFECYCLE INTO CompareBomId, ProjId, BomVersion
4529
	  FROM BOMS bo,
4530
	  	   BRANCHES br
4531
	 WHERE bo.BOM_ID = nBomId
4532
	   AND bo.BRANCH_ID = br.BRANCH_ID;
4533
 
4534
 
4535
	-- Update node version
4536
	OPEN curUpdateNode;
4537
	FETCH curUpdateNode INTO recUpdateNode;
4538
 
4539
	WHILE curUpdateNode%FOUND
4540
	LOOP
4541
 
4542
		UPDATE NETWORK_NODES nn SET
4543
			nn.NODE_VERSION = BomVersion,
4544
			nn.NODE_LIFE_CYCLE = recUpdateNode.NEW_LIFE_CYCLE
4545
		 WHERE nn.NODE_ID = recUpdateNode.NODE_ID;
4546
 
4547
		FETCH curUpdateNode INTO recUpdateNode;
4548
	END LOOP;
4549
 
4550
 
4551
	CLOSE curUpdateNode;	
4552
 
4553
END	Update_Nodes_Version;
4554
/*--------------------------------------------------------------------------------------------------*/
4555
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 ) IS
4556
 
4557
rowCount NUMBER;
4558
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
4559
nBomIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
4560
 
4561
BEGIN
4562
	/*--------------- Business Rules Here -------------------*/
4563
	IF (nBomId IS NULL) 
4564
	THEN
4565
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId );
4566
 
4567
	END IF;
4568
 
4569
	-- Check Requirements
4570
	pk_Requirements.Destroy_Bom ( nBomId );
4571
 
4572
	/*-------------------------------------------------------*/
4573
 
4574
 
4575
 
4576
	-- Load Collector
4577
	nBomIdCollector := IN_LIST_NUMBER( nBomId );
4578
 
4579
 
4580
	-- Destroy BASE_ENV
4581
	nIdCollector := NULL;
4582
	SELECT CAST ( MULTISET ( SELECT be.BASE_ENV_ID
4583
	  	   		  		   	   FROM BASE_ENV be
4584
	 						  WHERE be.BOM_ID IN   ( 
4585
								  	  		  	      SELECT * 
4586
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
4587
												 	) 
4588
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
4589
 
4590
	Destroy_BaseEnv ( nIdCollector );
4591
 
4592
 
4593
 
4594
	-- Destroy NETWORK_NODES
4595
	nIdCollector := NULL;
4596
	SELECT CAST ( MULTISET ( SELECT bc.NODE_ID
4597
	  	   		  		   	   FROM BOM_CONTENTS bc
4598
	 						  WHERE bc.BOM_ID IN   ( 
4599
								  	  		  	      SELECT * 
4600
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
4601
												 	) 
4602
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
4603
 
4604
	pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
4605
 
4606
 
4607
 
4608
	-- Destroy HARDWARE
4609
	nIdCollector := NULL;
4610
	SELECT CAST ( MULTISET ( SELECT hr.HARDWARE_NAME_ID
4611
	  	   		  		   	   FROM HARDWARE hr
4612
	 						  WHERE hr.BOM_ID IN   ( 
4613
								  	  		  	      SELECT * 
4614
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
4615
												 	)
4616
							) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
4617
 
4618
	Destroy_Hardware ( nIdCollector );
4619
 
4620
 
4621
 
4622
	-- Destroy BOM_STATE
4623
	DELETE 
4624
	  FROM BOM_STATE bs
4625
	 WHERE bs.BOM_ID IN ( 
4626
	  	  		  	      SELECT * 
4627
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
4628
					 	);
4629
 
4630
 
4631
	-- Destroy BOM_TRAIL
4632
	DELETE 
4633
	  FROM BOM_TRAIL bt
4634
	 WHERE bt.BOM_ID IN ( 
4635
	  	  		  	      SELECT * 
4636
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
4637
					 	); 
4638
 
4639
 
4640
	---- Finnaly Destroy BOM ----
4641
	DELETE 
4642
	  FROM BOMS bo
4643
	 WHERE bo.BOM_ID IN ( 
4644
	  	  		  	      SELECT * 
4645
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
4646
					 	);
4647
 
4648
 
4649
 
4650
END	Destroy_Bom;
4651
/*--------------------------------------------------------------------------------------------------*/
4652
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
4653
 
4654
 
4655
BEGIN
4656
	/*--------------- Business Rules Here -------------------*/
4657
	/*-------------------------------------------------------*/
4658
 
4659
	-- Destroy BASE_ENV_CONTENTS
4660
	DELETE
4661
	  FROM BASE_ENV_CONTENTS bec
4662
	 WHERE bec.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
4663
 
4664
	-- Destroy OS_BASE_ENV
4665
	DELETE
4666
	  FROM OS_BASE_ENV obe
4667
	 WHERE obe.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
4668
 
4669
	 -- Destroy BASE_ENV
4670
	DELETE
4671
	  FROM BASE_ENV be
4672
	 WHERE be.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
4673
 
4674
 
4675
END	Destroy_BaseEnv;
4676
/*--------------------------------------------------------------------------------------------------*/
4677
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
4678
 
4679
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
4680
 
4681
BEGIN
4682
	/*--------------- Business Rules Here -------------------*/
4683
	/*-------------------------------------------------------*/
4684
 
4685
    -- Destroy NETWORK_NODES
4686
    nIdCollector := NULL;
4687
    SELECT CAST ( MULTISET ( SELECT hn.NODE_ID
4688
	  	   		  		   	   FROM HARDWARE_NODE hn
4689
	 						  WHERE hn.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) ) 
4690
						   ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
4691
 
4692
    pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
4693
 
4694
 
4695
	-- Finnaly Destroy HARDWARE
4696
	DELETE
4697
	  FROM HARDWARE hd
4698
	 WHERE hd.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
4699
 
4700
END	Destroy_Hardware;
4701
/*--------------------------------------------------------------------------------------------------*/
4702
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
4703
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
4704
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
4705
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
4706
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
4707
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE ) IS
4708
 
4709
IsNotHead NUMBER;
4710
FromBranch NUMBER;
4711
LastRootVersion NUMBER;
4712
LastVersion BOMS.BOM_VERSION%TYPE;
4713
 
4714
CURSOR curBoms IS
4715
	SELECT Max ( CAST ( bo.BOM_VERSION AS NUMBER  ) ) AS LAST_VERSION
4716
		  FROM BOMS bo,
4717
		  	   BRANCHES br
4718
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
4719
		   AND br.PROJ_ID IN ( SELECT br.PROJ_ID  FROM BRANCHES br  WHERE br.BRANCH_ID = nToBranchId )	
4720
		   AND bo.BOM_NAME_ID = nBomNameId;
4721
recBoms curBoms%ROWTYPE;
4722
 
4723
 
4724
BEGIN
4725
 
4726
	/*--------------- Business Rules Here -------------------*/
4727
	/*-------------------------------------------------------*/
4728
	-- Get Last Root Version
4729
 
4730
	OPEN curBoms;
4731
	FETCH curBoms INTO recBoms;	
4732
	LastRootVersion := recBoms.LAST_VERSION;
4733
	CLOSE curBoms;
4734
 
4735
 
4736
 
4737
 
4738
 
4739
	IF nFromBomId IS NULL THEN
4740
		/* Blank BOM Required */
4741
 
4742
		-- Get Next Available Version
4743
		sNextVersion := '1';
4744
		sNextLifeCycle := '0';
4745
		IF LastRootVersion IS NOT NULL THEN
4746
			sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
4747
		END IF;
4748
 
4749
 
4750
 
4751
	ELSE
4752
		/* Create Bom From ... */
4753
 
4754
		-- Check if BOM is comming from different Iteration
4755
		SELECT bo.BRANCH_ID INTO FromBranch
4756
		  FROM BOMS bo
4757
		 WHERE bo.BOM_ID = nFromBomId; 
4758
 
4759
 
4760
 
4761
		IF FromBranch = nToBranchId THEN
4762
			/* Bom is comming from same Iteration */
4763
			/* i.e. Continue on same version stream. */
4764
 
4765
			-- Set parent_id
4766
			nParentBomId := nFromBomId;
4767
 
4768
 
4769
			-- Get Last Version 
4770
			SELECT bo.BOM_VERSION INTO LastVersion
4771
			  FROM BOMS bo
4772
			 WHERE bo.BOM_ID = nFromBomId;
4773
 
4774
 
4775
			-- Check if Bom is Head (i.e. Last on its branch )
4776
			SELECT COUNT(*) INTO IsNotHead
4777
			  FROM BOMS bo,
4778
			  	   BRANCHES br
4779
			 WHERE bo.BRANCH_ID = br.BRANCH_ID
4780
			   AND br.PROJ_ID IN ( SELECT br.PROJ_ID FROM BRANCHES br WHERE br.BRANCH_ID = FromBranch )
4781
			   AND bo.PARENT_BOM_ID = nFromBomId
4782
			   AND bo.BOM_VERSION = LastVersion
4783
			   AND bo.BOM_ID != bo.PARENT_BOM_ID;
4784
 
4785
 
4786
			IF IsNotHead = 0 THEN
4787
				/* Bom IS Head (i.e. Last on its branch ) */
4788
 
4789
				-- Get Bom Version and LifeCycle
4790
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
4791
				  FROM BOMS bo
4792
				 WHERE bo.BOM_ID = nFromBomId;
4793
 
4794
				-- Increase Lifecycle
4795
				sNextLifeCycle := CAST (  ( CAST( sNextLifeCycle AS NUMBER ) + 1 )  AS VARCHAR2 );
4796
 
4797
 
4798
			ELSE
4799
				/* Bom IS NOT Head */
4800
 
4801
				-- Get Bom Version and LifeCycle
4802
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
4803
				  FROM BOMS bo
4804
				 WHERE bo.BOM_ID = nFromBomId;
4805
 
4806
				-- Branch Bom Version 
4807
				sNextVersion := sNextVersion ||'.'|| sNextLifeCycle;
4808
 
4809
				-- Reset Lifecycle to 1
4810
				sNextLifeCycle := '1';
4811
 
4812
			END IF;	
4813
 
4814
 
4815
		ELSE
4816
			/* BOM is comming from Different Iteration */
4817
			/* i.e. Start new version stream. */
4818
 
4819
			-- Get Next Available Version
4820
			sNextVersion := '1';
4821
			sNextLifeCycle := '0';
4822
			IF LastRootVersion IS NOT NULL THEN
4823
				sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
4824
			END IF;
4825
 
4826
		END IF;
4827
 
4828
 
4829
	END IF;
4830
 
4831
 
4832
END	Get_Next_Version;
4833
/*--------------------------------------------------------------------------------------------------*/
4534 dpurdie 4834
PROCEDURE Release_To ( nBomId    IN BOM_STATE.BOM_ID%TYPE,
4835
					             nUserId   IN BOM_STATE.USER_ID%TYPE,
4836
					             nToState  IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
4837
					             sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL ) IS
3926 dpurdie 4838
 
4839
rowCount NUMBER;	
4840
IsOfficial BOMS.IS_READONLY%TYPE;					 
4841
StateId BOM_STATE.STATE_ID%TYPE;
4842
StateName STATES.STATE_NAME%TYPE;
4843
 
4844
BEGIN
4845
	/*--------------- Business Rules Here -------------------*/
4846
	-- Check if already released
4847
	SELECT Count(*) INTO rowCount
4848
	  FROM BOM_STATE bs
4849
	 WHERE bs.BOM_ID = nBomId
4850
	   AND bs.STATE_ID = nToState;
4851
 
4852
	IF rowCount > 0 THEN
4853
	   RAISE_APPLICATION_ERROR (-20000, 'This BOM is already release' );
4854
	END IF;
4855
 
4856
 
4857
	-- Check if Bom is official
4858
	SELECT bo.IS_READONLY INTO IsOfficial
4859
	  FROM BOMS bo
4860
	 WHERE bo.BOM_ID = nBomId;
4861
 
4862
	IF (IsOfficial != 'Y') AND (nToState IS NOT NULL) THEN
4863
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first' );
4864
	END IF;
4865
	/*-------------------------------------------------------*/
4866
 
4867
 
4868
	-- Get State --
4869
	StateId := nToState;
4870
	IF StateId IS NULL THEN
4534 dpurdie 4871
    BEGIN
3926 dpurdie 4872
		-- If state_id is null it is considered as state_type_enum = 'BOM Creator'
4873
		SELECT st.STATE_ID INTO StateId
4874
		  FROM BOMS bo,
4875
		  	   BRANCHES br,
4876
			   DM_PROJECTS proj,
4877
			   STATES st
4878
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
4879
		   AND br.PROJ_ID = proj.PROJ_ID
4880
		   AND st.PROJ_ID = proj.PROJ_ID
4881
		   AND bo.BOM_ID = nBomId
4534 dpurdie 4882
		   AND st.STATE_TYPE_ENUM = GET_SYSTEM_VALUE('enumSTATE_TYPE_CREATOR')
4883
       AND rownum = 1
4884
     ORDER BY st.STATE_ID;
4885
     EXCEPTION  WHEN NO_DATA_FOUND THEN 
4886
       RAISE_APPLICATION_ERROR (-20000, 'Cannot find BOM Creator in project. Project is misconfigured! nBomId= '|| nBomId  );
4887
   END;
4888
 
3926 dpurdie 4889
	END IF;
4890
 
4891
 
4892
	-- Add Bom to State --
4893
	INSERT INTO BOM_STATE (BOM_ID, STATE_ID, DATE_STAMP, IS_DISPLAYED, USER_ID )
4894
	VALUES( nBomId,
4895
			StateId,
4896
			GET_DATE(),
4897
			'Y',
4898
			nUserId );
4899
 
4900
 
4901
 
4902
	-- Auto-Hide Bom
4903
	pk_State.Auto_Hide ( StateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_RELEASE_TO') );
4904
 
4905
 
4906
	/* Log BOM_TRAIL */
4907
	-- Get State Name --
4908
	SELECT st.STATE_NAME INTO StateName
4909
	  FROM STATES st
4910
	 WHERE st.STATE_ID = StateId;
4911
 
4912
	-- Log Action 
4913
	pk_Bom.Log_Bom_Trail ( nBomId, 'RELEASED TO: '|| StateName, nUserId, sComments );
4914
 
4915
 
4916
END	Release_To;
4917
/*--------------------------------------------------------------------------------------------------*/
4918
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
4919
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
4920
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
4921
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE ) IS
4922
 
4923
IsRejected REJECTION_TRAIL.IS_REJECTED%TYPE;
4924
 
4925
BEGIN
4926
	/*--------------- Business Rules Here -------------------*/
4927
	IF (nBomId IS NULL)
4928
	THEN
4929
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId  );
4930
	END IF;
4931
	/*-------------------------------------------------------*/
4932
 
4933
	IF nRejectSeq IS NULL THEN
4934
		/* CREATE New Note */
4935
 
4936
		-- Get last IsRejected state
4937
		SELECT rt.IS_REJECTED INTO IsRejected
4938
		  FROM REJECTION_TRAIL rt
4939
		 WHERE rt.ENTITY_ID = nBomId
4940
		   AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
4941
		   AND rt.REJECT_SEQ =
4942
		   (
4943
		   	SELECT MAX(REJECT_SEQ) FROM
4944
			REJECTION_TRAIL rt
4945
		 	WHERE rt.ENTITY_ID = nBomId
4946
		   	AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
4947
 
4948
		   );
4949
 
4950
 
4951
		/* Log Rejection Trail */
4952
		pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, IsRejected, nUserId, sComments );
4953
 
4954
	ELSE
4955
		/* EDIT Note */
4956
		UPDATE REJECTION_TRAIL rt SET
4957
			rt.COMMENTS = sComments,
4958
			rt.USER_ID = nUserId,
4959
			rt.DATE_TIME_STAMP = GET_DATETIME()
4960
		WHERE rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
4961
		  AND rt.ENTITY_ID = nBomId
4962
		  AND rt.REJECT_SEQ = nRejectSeq;
4963
 
4964
 
4965
	END IF;
4966
 
4967
 
4968
END	Accept_Reject_Comments;
4969
/*--------------------------------------------------------------------------------------------------*/
4970
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
4971
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
4972
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
4973
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  ) IS
4974
 
4975
 
4976
BEGIN
4977
	/*--------------- Business Rules Here -------------------*/
4978
	IF (nBomId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
4979
	THEN
4980
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId ||', sAction='|| sAction ||', nUserId='|| nUserId );
4981
	END IF;
4982
	/*-------------------------------------------------------*/
4983
 
4984
	INSERT INTO BOM_TRAIL ( BOM_ID, TRAIL_ACTION, TRAIL_COMMENTS, USER_ID, DATE_TIME_STAMP )
4985
	VALUES ( nBomId, sAction, sComments, nUserId, GET_DATETIME() );	
4986
 
4987
END	Log_Bom_Trail;
4988
/*--------------------------------------------------------------------------------------------------*/
4989
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
4990
						  sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
4991
						  nUserId IN NODE_TRAIL.USER_ID%TYPE  ) IS
4992
 
4993
 
4994
BEGIN
4995
	/*--------------- Business Rules Here -------------------*/
4996
	IF (nNodeId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
4997
	THEN
4998
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId= '|| nNodeId ||', sAction='|| sAction ||', nUserId='|| nUserId );
4999
	END IF;
5000
	/*-------------------------------------------------------*/
5001
 
5002
	INSERT INTO NODE_TRAIL ( NODE_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
5003
	VALUES ( nNodeId, sAction, nUserId, GET_DATETIME() );	
5004
 
5005
END	Log_Node_Trail;
5006
/*--------------------------------------------------------------------------------------------------*/
5007
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
5008
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
5009
						  nUserId IN OS_TRAIL.USER_ID%TYPE  ) IS
5010
 
5011
 
5012
BEGIN
5013
	/*--------------- Business Rules Here -------------------*/
5014
	IF (nOsId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
5015
	THEN
5016
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nOsId ||', sAction='|| sAction ||', nUserId='|| nUserId );
5017
	END IF;
5018
	/*-------------------------------------------------------*/
5019
 
5020
	INSERT INTO OS_TRAIL ( OS_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
5021
	VALUES ( nOsId, sAction, nUserId, GET_DATETIME() );	
5022
 
5023
END	Log_Os_Trail;
5024
/*--------------------------------------------------------------------------------------------------*/
5025
 
5026
END pk_Bom;
5027
 
5028
/
5029
 
5030
/
5031
--------------------------------------------------------
5032
--  DDL for Package Body PK_BOM_TEST
5033
--------------------------------------------------------
5034
 
5035
  CREATE OR REPLACE PACKAGE BODY "PK_BOM_TEST" 
5036
IS
5037
/* ---------------------------------------------------------------------------
5038
    Version: 2.0
5039
   --------------------------------------------------------------------------- */
5040
 
5041
/*--------------------------------------------------------------------------------------------------*/
5042
PROCEDURE Add_Bom ( sBomName IN BOM_NAMES.BOM_NAME%TYPE DEFAULT NULL,
5043
		  		  	sBomVersion IN BOMS.BOM_VERSION%TYPE,
5044
		  		  	sBomLifeCycle IN BOMS.BOM_LIFECYCLE%TYPE,		
5045
					sBomComments IN BOMS.BOM_COMMENTS%TYPE DEFAULT NULL,
5046
					nToBranchId IN BOMS.BRANCH_ID%TYPE,
5047
					nFromBomId IN BOMS.BOM_ID%TYPE DEFAULT NULL,
5048
					nUserId IN BOM_STATE.USER_ID%TYPE ) IS
5049
 
5050
BomId BOMS.BOM_ID%TYPE;
5051
ParentBomId BOMS.PARENT_BOM_ID%TYPE;
5052
BomNameId BOM_NAMES.BOM_NAME_ID%TYPE;
5053
BomVersion BOMS.BOM_VERSION%TYPE;
5054
BomLifeCycle BOMS.BOM_LIFECYCLE%TYPE;
5055
ProjId BRANCHES.PROJ_ID%TYPE;
5056
 
5057
CURSOR curBom IS 
5058
		SELECT bo.BOM_ID
5059
		  FROM BOMS bo,
5060
		  	   BRANCHES br
5061
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
5062
		   AND br.PROJ_ID = ProjId
5063
		   AND bo.BOM_NAME_ID = BomNameId
5064
		   AND bo.BOM_VERSION = BomVersion
5065
		   AND bo.BOM_LIFECYCLE = BomLifeCycle;
5066
recBom curBom%ROWTYPE;
5067
 
5068
DUPLICATE_BOM EXCEPTION;
5069
 
5070
BEGIN
5071
	/*--------------- Business Rules Here -------------------*/
5072
	IF (nToBranchId IS NULL) OR (nUserId IS NULL)
5073
	THEN
5074
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nToBranchId= '|| nToBranchId ||', nUserId='|| nUserId );
5075
 
5076
	END IF;
5077
	/*-------------------------------------------------------*/
5078
 
5079
	-- Get bom_id
5080
	SELECT SEQ_BOM_ID.NEXTVAL INTO BomId FROM DUAL;
5081
 
5082
 
5083
	-- Get bom_name_id
5084
	IF nFromBomId IS NULL THEN
5085
		BomNameId := New_Bom_Name ( sBomName );
5086
        ParentBomId := BomId;
5087
	ELSE
5088
		BomNameId := New_Bom_Name ( nFromBomId );
5089
        ParentBomId := nFromBomId;
5090
	END IF;		
5091
 
5092
 
5093
 
5094
 
5095
	-- Get Bom Version and Lifecycle
5096
	--Get_Next_Version ( nFromBomId, nToBranchId, BomVersion, BomLifeCycle, ParentBomId, BomNameId );
5097
 
5098
 
5099
 
5100
	-- Get proj_id
5101
	SELECT br.PROJ_ID INTO ProjId
5102
	  FROM BRANCHES br
5103
	 WHERE br.BRANCH_ID = nToBranchId;
5104
 
5105
 
5106
 
5107
	-- Check for duplicate BOMs
5108
	OPEN curBom;
5109
    FETCH curBom INTO recBom;
5110
 
5111
    IF curBom%FOUND
5112
    THEN
5113
		RAISE DUPLICATE_BOM;
5114
	END IF;
5115
 
5116
	CLOSE curBom;
5117
 
5118
 
5119
 
5120
	-- Add Blank Bom --
5121
	INSERT INTO BOMS ( BOM_ID, BRANCH_ID, BOM_NAME_ID, BOM_COMMENTS, BOM_VERSION, BOM_LIFECYCLE, IS_READONLY, IS_HIDDEN, PARENT_BOM_ID )
5122
	VALUES ( BomId, nToBranchId, BomNameId, sBomComments, sBomVersion, sBomLifeCycle, 'N', 'N', ParentBomId  );
5123
 
5124
 
5125
 
5126
 
5127
	/* Log BOM_TRAIL */
5128
	pk_Bom.Log_Bom_Trail ( BomId, 'CREATED: Version '|| sBomVersion ||'.'|| sBomLifeCycle , nUserId );
5129
 
5130
 
5131
 
5132
	IF nFromBomId IS NOT NULL THEN
5133
		/* Add Bom Clonned from ... */
5134
		pk_Utils.Clone_BOM ( nFromBomId, BomId, nUserId );
5135
 
5136
	END IF;
5137
 
5138
 
5139
 
5140
	--- Set Bom State ---
5141
	Release_To ( BomId, nUserId );
5142
 
5143
 
5144
	EXCEPTION
5145
    WHEN DUPLICATE_BOM
5146
	THEN		
5147
		RAISE_APPLICATION_ERROR (-20000, 'BOM "'|| sBomName ||' '|| BomVersion ||'.'|| BomLifeCycle ||'" is Already Used in this Project.');
5148
 
5149
END	Add_Bom;
5150
/*--------------------------------------------------------------------------------------------------*/
5151
PROCEDURE Update_Bom ( nBomId IN BOMS.BOM_ID%TYPE,
5152
					   nRtagId IN BOMS.RTAG_ID_FK%TYPE,
5153
					   sBomComment IN BOMS.BOM_COMMENTS%TYPE,
5154
					   nUserId IN NUMBER )  IS
5155
 
5156
ReleaseName VARCHAR2(100);					   
5157
 
5158
BEGIN
5159
	/*--------------- Business Rules Here -------------------*/
5160
	/*-------------------------------------------------------*/
5161
 
5162
	--- Update Bom Properties ---
5163
	UPDATE BOMS bo SET
5164
		bo.RTAG_ID_FK = nRtagId,
5165
		bo.BOM_COMMENTS = sBomComment
5166
	WHERE bo.BOM_ID = nBomId;
5167
 
5168
	SELECT RTAG_NAME INTO ReleaseName
5169
	FROM RELEASE_TAGS 
5170
	WHERE RTAG_ID = nRtagId;
5171
 
5172
 
5173
	/* Log BOM_TRAIL */
5174
	pk_Bom.Log_Bom_Trail ( nBomId, 'Updated BOM properties: Set Release Manager Reference ='||ReleaseName||' and comments ='||sBomComment, nUserId );
5175
 
5176
 
5177
END	Update_Bom;
5178
/*--------------------------------------------------------------------------------------------------*/
5179
FUNCTION New_Bom_Name ( sBomName IN BOM_NAMES.BOM_NAME%TYPE ) RETURN BOM_NAMES.BOM_NAME_ID%TYPE IS
5180
 
5181
ReturnValue 	 BOM_NAMES.BOM_NAME_ID%TYPE;	
5182
 
5183
CURSOR curBomNames IS
5184
	SELECT bn.BOM_NAME_ID
5185
	  FROM BOM_NAMES bn
5186
	 WHERE bn.BOM_NAME = sBomName;
5187
recBomNames curBomNames%ROWTYPE;
5188
 
5189
BEGIN
5190
	/*--------------- Business Rules Here -------------------*/
5191
	/*-------------------------------------------------------*/
5192
 
5193
	-- Check for existance of this name
5194
	OPEN curBomNames;
5195
	FETCH curBomNames INTO recBomNames;
5196
 
5197
	ReturnValue := NULL;
5198
	IF curBomNames%FOUND THEN
5199
		ReturnValue := recBomNames.BOM_NAME_ID;
5200
	END IF;
5201
 
5202
	CLOSE curBomNames;
5203
 
5204
 
5205
	-- Finnaly Create Name if required --    
5206
	IF ReturnValue IS NULL THEN
5207
		-- Get bom_name_id
5208
		SELECT SEQ_BOM_NAME_ID.NEXTVAL INTO ReturnValue FROM DUAL;
5209
 
5210
		INSERT INTO BOM_NAMES ( BOM_NAME_ID, BOM_NAME )
5211
		VALUES ( ReturnValue, sBomName );
5212
 
5213
	END IF;	
5214
 
5215
 
5216
	RETURN ReturnValue;
5217
END	New_Bom_Name;
5218
/*--------------------------------------------------------------------------------------------------*/
5219
FUNCTION New_Bom_Name ( nFromBomId IN BOMS.BOM_NAME_ID%TYPE ) RETURN BOMS.BOM_NAME_ID%TYPE IS
5220
 
5221
ReturnValue 	 BOMS.BOM_NAME_ID%TYPE;	
5222
 
5223
BEGIN
5224
	/*--------------- Business Rules Here -------------------*/
5225
	/*-------------------------------------------------------*/
5226
 
5227
	-- Get bom_name_id
5228
	SELECT bo.BOM_NAME_ID INTO ReturnValue
5229
	  FROM BOMS bo
5230
	 WHERE bo.BOM_ID = nFromBomId;
5231
 
5232
 
5233
	RETURN ReturnValue;
5234
END	New_Bom_Name;
5235
/*--------------------------------------------------------------------------------------------------*/
5236
PROCEDURE Accept_Reject ( nBomId IN BOMS.BOM_ID%TYPE,
5237
						  cIsRejected IN BOMS.IS_REJECTED%TYPE,
5238
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE,
5239
						  nStateId IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
5240
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE  ) IS
5241
 
5242
StateName STATES.STATE_NAME%TYPE;						  
5243
IsOfficial BOMS.IS_READONLY%TYPE;	
5244
IsRejected VARCHAR2(50);					  
5245
 
5246
BEGIN
5247
	/*--------------- Business Rules Here -------------------*/
5248
	-- Check if Bom is official
5249
	SELECT bo.IS_READONLY INTO IsOfficial
5250
	  FROM BOMS bo
5251
	 WHERE bo.BOM_ID = nBomId;
5252
 
5253
	IF IsOfficial != 'Y' THEN
5254
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first.' );
5255
	END IF;
5256
	/*-------------------------------------------------------*/
5257
 
5258
	-- Get State Name
5259
	SELECT st.STATE_NAME INTO StateName
5260
	  FROM STATES st
5261
	 WHERE st.STATE_ID = nStateId;
5262
 
5263
 
5264
	-- AcceptReject BOM
5265
	UPDATE BOMS bo SET
5266
		bo.IS_REJECTED = cIsRejected
5267
	WHERE bo.BOM_ID = nBomId;
5268
 
5269
 
5270
	-- Auto-Hide Bom
5271
	IF cIsRejected = 'Y' THEN
5272
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_REJECT_BOM') );
5273
	ELSE
5274
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_ACCEPT_BOM') );
5275
	END IF;
5276
 
5277
 
5278
	-- Log Rejection Trail 
5279
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, cIsRejected, nUserId, sComments );
5280
 
5281
 
5282
	/* Log BOM_TRAIL */
5283
	-- Get Log Title
5284
	IsRejected := 'ACCEPTED';
5285
	IF cIsRejected = 'Y' THEN
5286
		IsRejected := 'REJECTED';
5287
	END IF;
5288
 
5289
	-- Finnaly log it
5290
	Log_Bom_Trail ( nBomId, IsRejected ||': By '|| StateName, nUserId, sComments );
5291
 
5292
END	Accept_Reject;
5293
/*--------------------------------------------------------------------------------------------------*/
5294
PROCEDURE Set_Bom_Official ( nBomId IN BOMS.BOM_ID%TYPE,
5295
							 cIsOfficial IN BOMS.IS_READONLY%TYPE,
5296
							 nStateId IN BOM_STATE.STATE_ID%TYPE,
5297
							 nUserId IN NUMBER )  IS
5298
 
5299
BEGIN
5300
	/*--------------- Business Rules Here -------------------*/
5301
	/*-------------------------------------------------------*/
5302
 
5303
	--- Set Bom Official or Not ---
5304
	UPDATE BOMS bo SET
5305
	bo.IS_READONLY = cIsOfficial
5306
	WHERE bo.BOM_ID = nBomId;
5307
 
5308
 
5309
	-- Auto-Hide Bom
5310
	IF cIsOfficial = 'Y' THEN
5311
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_LOCK_BOM') );
5312
 
5313
		-- Update node version
5314
		Update_Nodes_Version ( nBomId, nUserId );
5315
 
5316
	ELSE
5317
		pk_State.Auto_Hide ( nStateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_UNLOCK_BOM') );
5318
	END IF;
5319
 
5320
 
5321
 
5322
	/* Log BOM_TRAIL */
5323
	pk_Bom.Log_Bom_Trail ( nBomId, 'LOCKED: '|| cIsOfficial, nUserId );
5324
 
5325
 
5326
END	Set_Bom_Official;
5327
/*--------------------------------------------------------------------------------------------------*/
5328
PROCEDURE Update_Nodes_Version ( nBomId IN BOMS.BOM_ID%TYPE,
5329
							 	 nUserId IN NUMBER )  IS
5330
 
5331
	CompareBomId NUMBER;
5332
	ProjId NUMBER;
5333
	BomVersion VARCHAR2(4000);
5334
 
5335
	CURSOR curUpdateNode IS
5336
		SELECT DISTINCT
5337
			   nlook.NODE_ID,
5338
			   DECODE ( nlc.LAST_LIFE_CYCLE,
5339
			   			NULL, 0,
5340
						nlc.LAST_LIFE_CYCLE + 1 ) AS NEW_LIFE_CYCLE	   
5341
		  FROM (
5342
 
5343
		  		/* ADDED PATCHES ONLY */
5344
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
5345
				  FROM (
5346
				  		SELECT osc.PROD_ID,
5347
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
5348
						  FROM OS_CONTENTS osc,
5349
						  	   OPERATING_SYSTEMS os,
5350
							   NETWORK_NODES nn,
5351
							   BOM_CONTENTS bc,
5352
							   PACKAGE_VERSIONS pv
5353
						 WHERE osc.OS_ID = os.OS_ID
5354
						   AND os.NODE_ID = nn.NODE_ID
5355
						   AND bc.NODE_ID = nn.NODE_ID
5356
						   AND osc.PROD_ID = pv.PV_ID
5357
						   AND NOT pv.IS_PATCH IS NULL
5358
						   AND bc.BOM_ID = nBomId	
5359
				  	   ) newbom,
5360
					   (
5361
					   	SELECT osc.PROD_ID,
5362
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
5363
						  FROM OS_CONTENTS osc,
5364
						  	   OPERATING_SYSTEMS os,
5365
							   NETWORK_NODES nn,
5366
							   BOM_CONTENTS bc,
5367
							   PACKAGE_VERSIONS pv
5368
						 WHERE osc.OS_ID = os.OS_ID
5369
						   AND os.NODE_ID = nn.NODE_ID
5370
						   AND bc.NODE_ID = nn.NODE_ID
5371
						   AND osc.PROD_ID = pv.PV_ID
5372
						   AND NOT pv.IS_PATCH IS NULL
5373
						   AND bc.BOM_ID = CompareBomId	
5374
					   ) oldbom
5375
				 WHERE newbom.PK = oldbom.PK (+) 
5376
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
5377
				   AND oldbom.PK IS NULL
5378
				UNION 
5379
		  		/* ADDED PATCHES ONLY TO BASE CONFIGURATION */
5380
				SELECT 'A' AS CHANGE_TYPE, newbom.PROD_ID, newbom.PK 
5381
				  FROM (
5382
				  		SELECT bec.PROD_ID,
5383
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
5384
						  FROM BASE_ENV_CONTENTS bec,
5385
						  	   OS_BASE_ENV obe,
5386
						  	   OPERATING_SYSTEMS os,
5387
							   NETWORK_NODES nn,
5388
							   BOM_CONTENTS bc,
5389
							   PACKAGE_VERSIONS pv
5390
						 WHERE obe.OS_ID = os.OS_ID
5391
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
5392
						   AND os.NODE_ID = nn.NODE_ID
5393
						   AND bc.NODE_ID = nn.NODE_ID
5394
						   AND bec.PROD_ID = pv.PV_ID
5395
						   AND NOT pv.IS_PATCH IS NULL
5396
						   AND bc.BOM_ID = nBomId	
5397
				  	   ) newbom,
5398
					   (
5399
					   	SELECT bec.PROD_ID,
5400
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
5401
						  FROM BASE_ENV_CONTENTS bec,
5402
						  	   OS_BASE_ENV obe,
5403
						  	   OPERATING_SYSTEMS os,
5404
							   NETWORK_NODES nn,
5405
							   BOM_CONTENTS bc,
5406
							   PACKAGE_VERSIONS pv
5407
						 WHERE obe.OS_ID = os.OS_ID
5408
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
5409
						   AND os.NODE_ID = nn.NODE_ID
5410
						   AND bc.NODE_ID = nn.NODE_ID
5411
						   AND bec.PROD_ID = pv.PV_ID
5412
						   AND NOT pv.IS_PATCH IS NULL
5413
						   AND bc.BOM_ID = CompareBomId	
5414
					   ) oldbom
5415
				 WHERE newbom.PK = oldbom.PK (+) 
5416
				   AND newbom.PROD_ID = oldbom.PROD_ID (+)
5417
				   AND oldbom.PK IS NULL
5418
				UNION				
5419
 
5420
				/* ADDED PRODUCTS ONLY */
5421
				SELECT DECODE( oldbom.PROD_ID,
5422
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
5423
					   newbom.PROD_ID, newbom.PK
5424
				  FROM (
5425
				  		SELECT osc.PROD_ID,
5426
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
5427
							   pv.PKG_ID,
5428
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
5429
						  FROM OS_CONTENTS osc,
5430
						  	   OPERATING_SYSTEMS os,
5431
							   NETWORK_NODES nn,
5432
							   BOM_CONTENTS bc,
5433
							   PACKAGE_VERSIONS pv
5434
						 WHERE osc.OS_ID = os.OS_ID
5435
						   AND os.NODE_ID = nn.NODE_ID
5436
						   AND bc.NODE_ID = nn.NODE_ID
5437
						   AND osc.PROD_ID = pv.PV_ID
5438
						   AND pv.IS_PATCH IS NULL
5439
						   AND bc.BOM_ID = nBomId	
5440
				  	   ) newbom,
5441
					   (
5442
					   	SELECT osc.PROD_ID,
5443
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
5444
							   pv.PKG_ID,
5445
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
5446
						  FROM OS_CONTENTS osc,
5447
						  	   OPERATING_SYSTEMS os,
5448
							   NETWORK_NODES nn,
5449
							   BOM_CONTENTS bc,
5450
							   PACKAGE_VERSIONS pv
5451
						 WHERE osc.OS_ID = os.OS_ID
5452
						   AND os.NODE_ID = nn.NODE_ID
5453
						   AND bc.NODE_ID = nn.NODE_ID
5454
						   AND osc.PROD_ID = pv.PV_ID
5455
						   AND pv.IS_PATCH IS NULL
5456
						   AND bc.BOM_ID = CompareBomId	
5457
					   ) oldbom
5458
				 WHERE newbom.PK = oldbom.PK (+) 
5459
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
5460
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
5461
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
5462
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	   
5463
				UNION
5464
 
5465
				/* ADDED PRODUCTS ONLY TO BASE CONFIGURATION */
5466
				SELECT DECODE( oldbom.PROD_ID,
5467
							   NULL, 'A', 'U' ) AS CHANGE_TYPE, 
5468
					   newbom.PROD_ID, newbom.PK
5469
				  FROM (
5470
				  		SELECT bec.PROD_ID,
5471
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
5472
							   pv.PKG_ID,
5473
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
5474
						  FROM BASE_ENV_CONTENTS bec,
5475
						  	   OS_BASE_ENV obe,
5476
						  	   OPERATING_SYSTEMS os,
5477
							   NETWORK_NODES nn,
5478
							   BOM_CONTENTS bc,
5479
							   PACKAGE_VERSIONS pv
5480
						 WHERE obe.OS_ID = os.OS_ID
5481
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
5482
						   AND os.NODE_ID = nn.NODE_ID
5483
						   AND bc.NODE_ID = nn.NODE_ID
5484
						   AND bec.PROD_ID = pv.PV_ID
5485
						   AND pv.IS_PATCH IS NULL
5486
						   AND bc.BOM_ID = nBomId	
5487
				  	   ) newbom,
5488
					   (
5489
					   	SELECT bec.PROD_ID,
5490
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
5491
							   pv.PKG_ID,
5492
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
5493
						  FROM BASE_ENV_CONTENTS bec,
5494
						  	   OS_BASE_ENV obe,
5495
						  	   OPERATING_SYSTEMS os,
5496
							   NETWORK_NODES nn,
5497
							   BOM_CONTENTS bc,
5498
							   PACKAGE_VERSIONS pv
5499
						 WHERE obe.OS_ID = os.OS_ID
5500
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
5501
						   AND os.NODE_ID = nn.NODE_ID
5502
						   AND bc.NODE_ID = nn.NODE_ID
5503
						   AND bec.PROD_ID = pv.PV_ID
5504
						   AND pv.IS_PATCH IS NULL
5505
						   AND bc.BOM_ID = CompareBomId	
5506
					   ) oldbom
5507
				 WHERE newbom.PK = oldbom.PK (+) 
5508
				   --AND newbom.PROD_ID = oldbom.PROD_ID (+)
5509
				   AND newbom.PKG_ID  = oldbom.PKG_ID (+)
5510
				   AND newbom.V_EXT  = oldbom.V_EXT (+) 
5511
				   AND ( oldbom.PROD_ID != newbom.PROD_ID  OR oldbom.PROD_ID IS NULL )	   
5512
				UNION
5513
 
5514
				/* REMOVED PRODUCTS ONLY*/    
5515
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
5516
				  FROM (
5517
				  		SELECT osc.PROD_ID,
5518
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
5519
							   pv.PKG_ID,
5520
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
5521
						  FROM OS_CONTENTS osc,
5522
						  	   OPERATING_SYSTEMS os,
5523
							   NETWORK_NODES nn,
5524
							   BOM_CONTENTS bc,
5525
							   PACKAGE_VERSIONS pv
5526
						 WHERE osc.OS_ID = os.OS_ID
5527
						   AND os.NODE_ID = nn.NODE_ID
5528
						   AND bc.NODE_ID = nn.NODE_ID
5529
						   AND osc.PROD_ID = pv.PV_ID
5530
						   AND pv.IS_PATCH IS NULL
5531
						   AND bc.BOM_ID = nBomId	
5532
				  	   ) newbom,
5533
					   (
5534
					   	SELECT osc.PROD_ID,
5535
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
5536
							   pv.PKG_ID,
5537
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
5538
						  FROM OS_CONTENTS osc,
5539
						  	   OPERATING_SYSTEMS os,
5540
							   NETWORK_NODES nn,
5541
							   BOM_CONTENTS bc,
5542
							   PACKAGE_VERSIONS pv
5543
						 WHERE osc.OS_ID = os.OS_ID
5544
						   AND os.NODE_ID = nn.NODE_ID
5545
						   AND bc.NODE_ID = nn.NODE_ID
5546
						   AND osc.PROD_ID = pv.PV_ID
5547
						   AND pv.IS_PATCH IS NULL
5548
						   AND bc.BOM_ID = CompareBomId	
5549
					   ) oldbom
5550
				 WHERE newbom.PK (+) = oldbom.PK  
5551
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
5552
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
5553
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
5554
				   AND newbom.PK IS NULL  
5555
				UNION   
5556
				/* REMOVED PATCHES */    
5557
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
5558
				  FROM (
5559
				  		SELECT osc.PROD_ID,
5560
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
5561
						  FROM OS_CONTENTS osc,
5562
						  	   OPERATING_SYSTEMS os,
5563
							   NETWORK_NODES nn,
5564
							   BOM_CONTENTS bc,
5565
							   PACKAGE_VERSIONS pv
5566
						 WHERE osc.OS_ID = os.OS_ID
5567
						   AND os.NODE_ID = nn.NODE_ID
5568
						   AND bc.NODE_ID = nn.NODE_ID
5569
						   AND osc.PROD_ID = pv.PV_ID
5570
						   AND NOT pv.IS_PATCH IS NULL
5571
						   AND bc.BOM_ID = nBomId	
5572
				  	   ) newbom,
5573
					   (
5574
					   	SELECT osc.PROD_ID,
5575
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
5576
						  FROM OS_CONTENTS osc,
5577
						  	   OPERATING_SYSTEMS os,
5578
							   NETWORK_NODES nn,
5579
							   BOM_CONTENTS bc,
5580
							   PACKAGE_VERSIONS pv
5581
						 WHERE osc.OS_ID = os.OS_ID
5582
						   AND os.NODE_ID = nn.NODE_ID
5583
						   AND bc.NODE_ID = nn.NODE_ID
5584
						   AND osc.PROD_ID = pv.PV_ID
5585
						   AND NOT pv.IS_PATCH IS NULL
5586
						   AND bc.BOM_ID = CompareBomId	
5587
					   ) oldbom
5588
				 WHERE newbom.PK (+) = oldbom.PK  
5589
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
5590
				   AND newbom.PK IS NULL 
5591
				   UNION
5592
				/* REMOVED PRODUCTS ONLY FROM BASE CONFIGURATION*/    
5593
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
5594
				  FROM (
5595
				  		SELECT bec.PROD_ID,
5596
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
5597
							   pv.PKG_ID,
5598
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
5599
						  FROM BASE_ENV_CONTENTS bec,
5600
						  	   OS_BASE_ENV obe,
5601
						  	   OPERATING_SYSTEMS os,
5602
							   NETWORK_NODES nn,
5603
							   BOM_CONTENTS bc,
5604
							   PACKAGE_VERSIONS pv
5605
						 WHERE obe.OS_ID = os.OS_ID
5606
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
5607
						   AND os.NODE_ID = nn.NODE_ID
5608
						   AND bc.NODE_ID = nn.NODE_ID
5609
						   AND bec.PROD_ID = pv.PV_ID
5610
						   AND pv.IS_PATCH IS NULL
5611
						   AND bc.BOM_ID = nBomId	
5612
				  	   ) newbom,
5613
					   (
5614
					   	SELECT bec.PROD_ID,
5615
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK,
5616
							   pv.PKG_ID,
5617
							   NVL( pv.V_EXT, '|LINK_A_NULL|' ) AS V_EXT
5618
						  FROM BASE_ENV_CONTENTS bec,
5619
						  	   OS_BASE_ENV obe,
5620
						  	   OPERATING_SYSTEMS os,
5621
							   NETWORK_NODES nn,
5622
							   BOM_CONTENTS bc,
5623
							   PACKAGE_VERSIONS pv
5624
						 WHERE obe.OS_ID = os.OS_ID
5625
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID 
5626
						   AND os.NODE_ID = nn.NODE_ID
5627
						   AND bc.NODE_ID = nn.NODE_ID
5628
						   AND bec.PROD_ID = pv.PV_ID
5629
						   AND pv.IS_PATCH IS NULL
5630
						   AND bc.BOM_ID = CompareBomId	
5631
					   ) oldbom
5632
				 WHERE newbom.PK (+) = oldbom.PK  
5633
				   --AND newbom.PROD_ID (+) = oldbom.PROD_ID
5634
				   AND newbom.PKG_ID (+) = oldbom.PKG_ID
5635
				   AND newbom.V_EXT (+) = oldbom.V_EXT   
5636
				   AND newbom.PK IS NULL  
5637
				UNION   
5638
				/* REMOVED PATCHES FROM BASE CONFIGURATION*/    
5639
				SELECT 'R' AS CHANGE_TYPE, oldbom.PROD_ID, oldbom.PK
5640
				  FROM (
5641
				  		SELECT bec.PROD_ID,
5642
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
5643
						  FROM BASE_ENV_CONTENTS bec,
5644
						  	   OS_BASE_ENV obe,
5645
						  	   OPERATING_SYSTEMS os,
5646
							   NETWORK_NODES nn,
5647
							   BOM_CONTENTS bc,
5648
							   PACKAGE_VERSIONS pv
5649
						 WHERE obe.OS_ID = os.OS_ID
5650
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
5651
						   AND os.NODE_ID = nn.NODE_ID
5652
						   AND bc.NODE_ID = nn.NODE_ID
5653
						   AND bec.PROD_ID = pv.PV_ID
5654
						   AND NOT pv.IS_PATCH IS NULL
5655
						   AND bc.BOM_ID = nBomId	
5656
				  	   ) newbom,
5657
					   (
5658
					   	SELECT bec.PROD_ID,
5659
							   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
5660
						  FROM BASE_ENV_CONTENTS bec,
5661
						  	   OS_BASE_ENV obe,
5662
						  	   OPERATING_SYSTEMS os,
5663
							   NETWORK_NODES nn,
5664
							   BOM_CONTENTS bc,
5665
							   PACKAGE_VERSIONS pv
5666
						 WHERE obe.OS_ID = os.OS_ID
5667
						   AND bec.BASE_ENV_ID = obe.BASE_ENV_ID
5668
						   AND os.NODE_ID = nn.NODE_ID
5669
						   AND bc.NODE_ID = nn.NODE_ID
5670
						   AND bec.PROD_ID = pv.PV_ID
5671
						   AND NOT pv.IS_PATCH IS NULL
5672
						   AND bc.BOM_ID = CompareBomId	
5673
					   ) oldbom
5674
				 WHERE newbom.PK (+) = oldbom.PK  
5675
				   AND newbom.PROD_ID (+) = oldbom.PROD_ID  
5676
				   AND newbom.PK IS NULL				    	
5677
 
5678
		       ) qry,
5679
			   (
5680
 
5681
		  		SELECT nn.NODE_ID,
5682
					   nn.NODE_NAME,
5683
					   nn.NODE_NAME ||'_'|| os.OS_NAME AS PK
5684
				  FROM OPERATING_SYSTEMS os,
5685
					   NETWORK_NODES nn,
5686
					   BOM_CONTENTS bc
5687
				 WHERE os.NODE_ID = nn.NODE_ID
5688
				   AND bc.NODE_ID = nn.NODE_ID
5689
				   AND bc.BOM_ID = nBomId
5690
 
5691
		  	   ) nlook,
5692
			   (
5693
 
5694
				SELECT nn.NODE_NAME, 
5695
					   MAX(nn.NODE_LIFE_CYCLE) AS LAST_LIFE_CYCLE
5696
				  FROM BOMS bo,
5697
				  	   BOM_CONTENTS bc,
5698
					   BRANCHES br,
5699
					   NETWORK_NODES nn
5700
				 WHERE bc.BOM_ID = bo.BOM_ID
5701
				   AND bo.BRANCH_ID = br.BRANCH_ID
5702
				   AND bc.NODE_ID = nn.NODE_ID
5703
				   AND br.PROJ_ID = ProjId
5704
		  	     GROUP BY nn.NODE_NAME
5705
 
5706
			   ) nlc
5707
		 WHERE nlook.PK = qry.PK 
5708
		   AND nlc.NODE_NAME = nlook.NODE_NAME;
5709
	recUpdateNode curUpdateNode%ROWTYPE;
5710
 
5711
 
5712
 
5713
BEGIN
5714
	/*--------------- Business Rules Here -------------------*/
5715
	/*-------------------------------------------------------*/
5716
 
5717
	-- Get some BOM details
5718
	SELECT bo.PARENT_BOM_ID, br.PROJ_ID, bo.BOM_VERSION ||'.'|| bo.BOM_LIFECYCLE INTO CompareBomId, ProjId, BomVersion
5719
	  FROM BOMS bo,
5720
	  	   BRANCHES br
5721
	 WHERE bo.BOM_ID = nBomId
5722
	   AND bo.BRANCH_ID = br.BRANCH_ID;
5723
 
5724
 
5725
	-- Update node version
5726
	OPEN curUpdateNode;
5727
	FETCH curUpdateNode INTO recUpdateNode;
5728
 
5729
	WHILE curUpdateNode%FOUND
5730
	LOOP
5731
 
5732
		UPDATE NETWORK_NODES nn SET
5733
			nn.NODE_VERSION = BomVersion,
5734
			nn.NODE_LIFE_CYCLE = recUpdateNode.NEW_LIFE_CYCLE
5735
		 WHERE nn.NODE_ID = recUpdateNode.NODE_ID;
5736
 
5737
		FETCH curUpdateNode INTO recUpdateNode;
5738
	END LOOP;
5739
 
5740
 
5741
	CLOSE curUpdateNode;	
5742
 
5743
END	Update_Nodes_Version;
5744
/*--------------------------------------------------------------------------------------------------*/
5745
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 ) IS
5746
 
5747
rowCount NUMBER;
5748
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
5749
nBomIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
5750
 
5751
BEGIN
5752
	/*--------------- Business Rules Here -------------------*/
5753
	IF (nBomId IS NULL) 
5754
	THEN
5755
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId );
5756
 
5757
	END IF;
5758
 
5759
	-- Check Requirements
5760
	pk_Requirements.Destroy_Bom ( nBomId );
5761
 
5762
	/*-------------------------------------------------------*/
5763
 
5764
 
5765
 
5766
	-- Load Collector
5767
	nBomIdCollector := IN_LIST_NUMBER( nBomId );
5768
 
5769
 
5770
	-- Destroy BASE_ENV
5771
	nIdCollector := NULL;
5772
	SELECT CAST ( MULTISET ( SELECT be.BASE_ENV_ID
5773
	  	   		  		   	   FROM BASE_ENV be
5774
	 						  WHERE be.BOM_ID IN   ( 
5775
								  	  		  	      SELECT * 
5776
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
5777
												 	) 
5778
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
5779
 
5780
	Destroy_BaseEnv ( nIdCollector );
5781
 
5782
 
5783
 
5784
	-- Destroy NETWORK_NODES
5785
	nIdCollector := NULL;
5786
	SELECT CAST ( MULTISET ( SELECT bc.NODE_ID
5787
	  	   		  		   	   FROM BOM_CONTENTS bc
5788
	 						  WHERE bc.BOM_ID IN   ( 
5789
								  	  		  	      SELECT * 
5790
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
5791
												 	) 
5792
						    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
5793
 
5794
	pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
5795
 
5796
 
5797
 
5798
	-- Destroy HARDWARE
5799
	nIdCollector := NULL;
5800
	SELECT CAST ( MULTISET ( SELECT hr.HARDWARE_NAME_ID
5801
	  	   		  		   	   FROM HARDWARE hr
5802
	 						  WHERE hr.BOM_ID IN   ( 
5803
								  	  		  	      SELECT * 
5804
													  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
5805
												 	)
5806
							) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
5807
 
5808
	Destroy_Hardware ( nIdCollector );
5809
 
5810
 
5811
 
5812
	-- Destroy BOM_STATE
5813
	DELETE 
5814
	  FROM BOM_STATE bs
5815
	 WHERE bs.BOM_ID IN ( 
5816
	  	  		  	      SELECT * 
5817
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
5818
					 	);
5819
 
5820
 
5821
	-- Destroy BOM_TRAIL
5822
	DELETE 
5823
	  FROM BOM_TRAIL bt
5824
	 WHERE bt.BOM_ID IN ( 
5825
	  	  		  	      SELECT * 
5826
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
5827
					 	); 
5828
 
5829
 
5830
	---- Finnaly Destroy BOM ----
5831
	DELETE 
5832
	  FROM BOMS bo
5833
	 WHERE bo.BOM_ID IN ( 
5834
	  	  		  	      SELECT * 
5835
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
5836
					 	);
5837
 
5838
 
5839
 
5840
END	Destroy_Bom;
5841
/*--------------------------------------------------------------------------------------------------*/
5842
PROCEDURE Destroy_BaseEnv ( nBaseEndIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
5843
 
5844
 
5845
BEGIN
5846
	/*--------------- Business Rules Here -------------------*/
5847
	/*-------------------------------------------------------*/
5848
 
5849
	-- Destroy BASE_ENV_CONTENTS
5850
	DELETE
5851
	  FROM BASE_ENV_CONTENTS bec
5852
	 WHERE bec.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
5853
 
5854
	-- Destroy OS_BASE_ENV
5855
	DELETE
5856
	  FROM OS_BASE_ENV obe
5857
	 WHERE obe.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
5858
 
5859
	 -- Destroy BASE_ENV
5860
	DELETE
5861
	  FROM BASE_ENV be
5862
	 WHERE be.BASE_ENV_ID IN ( SELECT * FROM TABLE ( CAST ( nBaseEndIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
5863
 
5864
 
5865
END	Destroy_BaseEnv;
5866
/*--------------------------------------------------------------------------------------------------*/
5867
PROCEDURE Destroy_Hardware ( nHardwareNameIdCollector IN DEPMGR_NUMBER_TAB_t ) IS
5868
 
5869
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
5870
 
5871
BEGIN
5872
	/*--------------- Business Rules Here -------------------*/
5873
	/*-------------------------------------------------------*/
5874
 
5875
    -- Destroy NETWORK_NODES
5876
    nIdCollector := NULL;
5877
    SELECT CAST ( MULTISET ( SELECT hn.NODE_ID
5878
	  	   		  		   	   FROM HARDWARE_NODE hn
5879
	 						  WHERE hn.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) ) 
5880
						   ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
5881
 
5882
    pk_Network_Node.Destroy_Node ( nIdCollector, 0 );
5883
 
5884
 
5885
	-- Finnaly Destroy HARDWARE
5886
	DELETE
5887
	  FROM HARDWARE hd
5888
	 WHERE hd.HARDWARE_NAME_ID IN ( SELECT * FROM TABLE ( CAST ( nHardwareNameIdCollector AS DEPMGR_NUMBER_TAB_t ) ) );
5889
 
5890
END	Destroy_Hardware;
5891
/*--------------------------------------------------------------------------------------------------*/
5892
PROCEDURE Get_Next_Version (nFromBomId IN BOMS.BOM_ID%TYPE,
5893
							nToBranchId IN BOMS.BRANCH_ID%TYPE,
5894
							sNextVersion OUT BOMS.BOM_VERSION%TYPE,
5895
							sNextLifeCycle OUT BOMS.BOM_LIFECYCLE%TYPE,
5896
							nParentBomId IN OUT BOMS.PARENT_BOM_ID%TYPE,
5897
							nBomNameId IN BOMS.BOM_NAME_ID%TYPE ) IS
5898
 
5899
IsNotHead NUMBER;
5900
FromBranch NUMBER;
5901
LastRootVersion NUMBER;
5902
LastVersion BOMS.BOM_VERSION%TYPE;
5903
 
5904
CURSOR curBoms IS
5905
	SELECT Max ( CAST ( bo.BOM_VERSION AS NUMBER  ) ) AS LAST_VERSION
5906
		  FROM BOMS bo,
5907
		  	   BRANCHES br
5908
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
5909
		   AND br.PROJ_ID IN ( SELECT br.PROJ_ID  FROM BRANCHES br  WHERE br.BRANCH_ID = nToBranchId )	
5910
		   AND bo.BOM_NAME_ID = nBomNameId;
5911
recBoms curBoms%ROWTYPE;
5912
 
5913
 
5914
BEGIN
5915
 
5916
	/*--------------- Business Rules Here -------------------*/
5917
	/*-------------------------------------------------------*/
5918
	-- Get Last Root Version
5919
 
5920
	OPEN curBoms;
5921
	FETCH curBoms INTO recBoms;	
5922
	LastRootVersion := recBoms.LAST_VERSION;
5923
	CLOSE curBoms;
5924
 
5925
 
5926
 
5927
 
5928
 
5929
	IF nFromBomId IS NULL THEN
5930
		/* Blank BOM Required */
5931
 
5932
		-- Get Next Available Version
5933
		sNextVersion := '1';
5934
		sNextLifeCycle := '0';
5935
		IF LastRootVersion IS NOT NULL THEN
5936
			sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
5937
		END IF;
5938
 
5939
 
5940
 
5941
	ELSE
5942
		/* Create Bom From ... */
5943
 
5944
		-- Check if BOM is comming from different Iteration
5945
		SELECT bo.BRANCH_ID INTO FromBranch
5946
		  FROM BOMS bo
5947
		 WHERE bo.BOM_ID = nFromBomId; 
5948
 
5949
 
5950
 
5951
		IF FromBranch = nToBranchId THEN
5952
			/* Bom is comming from same Iteration */
5953
			/* i.e. Continue on same version stream. */
5954
 
5955
			-- Set parent_id
5956
			nParentBomId := nFromBomId;
5957
 
5958
 
5959
			-- Get Last Version 
5960
			SELECT bo.BOM_VERSION INTO LastVersion
5961
			  FROM BOMS bo
5962
			 WHERE bo.BOM_ID = nFromBomId;
5963
 
5964
 
5965
			-- Check if Bom is Head (i.e. Last on its branch )
5966
			SELECT COUNT(*) INTO IsNotHead
5967
			  FROM BOMS bo,
5968
			  	   BRANCHES br
5969
			 WHERE bo.BRANCH_ID = br.BRANCH_ID
5970
			   AND br.PROJ_ID IN ( SELECT br.PROJ_ID FROM BRANCHES br WHERE br.BRANCH_ID = FromBranch )
5971
			   AND bo.PARENT_BOM_ID = nFromBomId
5972
			   AND bo.BOM_VERSION = LastVersion
5973
			   AND bo.BOM_ID != bo.PARENT_BOM_ID;
5974
 
5975
 
5976
			IF IsNotHead = 0 THEN
5977
				/* Bom IS Head (i.e. Last on its branch ) */
5978
 
5979
				-- Get Bom Version and LifeCycle
5980
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
5981
				  FROM BOMS bo
5982
				 WHERE bo.BOM_ID = nFromBomId;
5983
 
5984
				-- Increase Lifecycle
5985
				sNextLifeCycle := CAST (  ( CAST( sNextLifeCycle AS NUMBER ) + 1 )  AS VARCHAR2 );
5986
 
5987
 
5988
			ELSE
5989
				/* Bom IS NOT Head */
5990
 
5991
				-- Get Bom Version and LifeCycle
5992
				SELECT bo.BOM_VERSION, bo.BOM_LIFECYCLE INTO sNextVersion, sNextLifeCycle
5993
				  FROM BOMS bo
5994
				 WHERE bo.BOM_ID = nFromBomId;
5995
 
5996
				-- Branch Bom Version 
5997
				sNextVersion := sNextVersion ||'.'|| sNextLifeCycle;
5998
 
5999
				-- Reset Lifecycle to 1
6000
				sNextLifeCycle := '1';
6001
 
6002
			END IF;	
6003
 
6004
 
6005
		ELSE
6006
			/* BOM is comming from Different Iteration */
6007
			/* i.e. Start new version stream. */
6008
 
6009
			-- Get Next Available Version
6010
			sNextVersion := '1';
6011
			sNextLifeCycle := '0';
6012
			IF LastRootVersion IS NOT NULL THEN
6013
				sNextVersion := CAST( LastRootVersion + 1 AS VARCHAR2 );
6014
			END IF;
6015
 
6016
		END IF;
6017
 
6018
 
6019
	END IF;
6020
 
6021
 
6022
END	Get_Next_Version;
6023
/*--------------------------------------------------------------------------------------------------*/
6024
PROCEDURE Release_To ( nBomId IN BOM_STATE.BOM_ID%TYPE,
6025
					   nUserId IN BOM_STATE.USER_ID%TYPE,
6026
					   nToState IN BOM_STATE.STATE_ID%TYPE DEFAULT NULL,
6027
					   sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL ) IS
6028
 
6029
rowCount NUMBER;	
6030
IsOfficial BOMS.IS_READONLY%TYPE;					 
6031
StateId BOM_STATE.STATE_ID%TYPE;
6032
StateName STATES.STATE_NAME%TYPE;
6033
 
6034
BEGIN
6035
	/*--------------- Business Rules Here -------------------*/
6036
	-- Check if already released
6037
	SELECT Count(*) INTO rowCount
6038
	  FROM BOM_STATE bs
6039
	 WHERE bs.BOM_ID = nBomId
6040
	   AND bs.STATE_ID = nToState;
6041
 
6042
	IF rowCount > 0 THEN
6043
	   RAISE_APPLICATION_ERROR (-20000, 'This BOM is already release' );
6044
	END IF;
6045
 
6046
 
6047
	-- Check if Bom is official
6048
	SELECT bo.IS_READONLY INTO IsOfficial
6049
	  FROM BOMS bo
6050
	 WHERE bo.BOM_ID = nBomId;
6051
 
6052
	IF (IsOfficial != 'Y') AND (nToState IS NOT NULL) THEN
6053
		RAISE_APPLICATION_ERROR (-20000, 'BOM must be locked first' );
6054
	END IF;
6055
	/*-------------------------------------------------------*/
6056
 
6057
 
6058
	-- Get State --
6059
	StateId := nToState;
6060
	IF StateId IS NULL THEN
6061
		-- If state_id is null it is considered as state_type_enum = 'BOM Creator'
6062
		SELECT st.STATE_ID INTO StateId
6063
		  FROM BOMS bo,
6064
		  	   BRANCHES br,
6065
			   DM_PROJECTS proj,
6066
			   STATES st
6067
		 WHERE bo.BRANCH_ID = br.BRANCH_ID
6068
		   AND br.PROJ_ID = proj.PROJ_ID
6069
		   AND st.PROJ_ID = proj.PROJ_ID
6070
		   AND bo.BOM_ID = nBomId
6071
		   AND st.STATE_TYPE_ENUM = GET_SYSTEM_VALUE('enumSTATE_TYPE_CREATOR');	
6072
	END IF;
6073
 
6074
 
6075
	-- Add Bom to State --
6076
	INSERT INTO BOM_STATE (BOM_ID, STATE_ID, DATE_STAMP, IS_DISPLAYED, USER_ID )
6077
	VALUES( nBomId,
6078
			StateId,
6079
			GET_DATE(),
6080
			'Y',
6081
			nUserId );
6082
 
6083
 
6084
 
6085
	-- Auto-Hide Bom
6086
	pk_State.Auto_Hide ( StateId, nBomId, GET_SYSTEM_VALUE('enumEVENT_ON_RELEASE_TO') );
6087
 
6088
 
6089
	/* Log BOM_TRAIL */
6090
	-- Get State Name --
6091
	SELECT st.STATE_NAME INTO StateName
6092
	  FROM STATES st
6093
	 WHERE st.STATE_ID = StateId;
6094
 
6095
	-- Log Action 
6096
	pk_Bom.Log_Bom_Trail ( nBomId, 'RELEASED TO: '|| StateName, nUserId, sComments );
6097
 
6098
 
6099
END	Release_To;
6100
/*--------------------------------------------------------------------------------------------------*/
6101
PROCEDURE Accept_Reject_Comments ( nBomId IN BOMS.BOM_ID%TYPE,
6102
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
6103
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
6104
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE ) IS
6105
 
6106
IsRejected REJECTION_TRAIL.IS_REJECTED%TYPE;
6107
 
6108
BEGIN
6109
	/*--------------- Business Rules Here -------------------*/
6110
	IF (nBomId IS NULL)
6111
	THEN
6112
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId  );
6113
	END IF;
6114
	/*-------------------------------------------------------*/
6115
 
6116
	IF nRejectSeq IS NULL THEN
6117
		/* CREATE New Note */
6118
 
6119
		-- Get last IsRejected state
6120
		SELECT rt.IS_REJECTED INTO IsRejected
6121
		  FROM REJECTION_TRAIL rt
6122
		 WHERE rt.ENTITY_ID = nBomId
6123
		   AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
6124
		   AND ROWNUM = 1
6125
		 ORDER BY rt.REJECT_SEQ;
6126
 
6127
 
6128
		/* Log Rejection Trail */
6129
		pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM'), nBomId, IsRejected, nUserId, sComments );
6130
 
6131
 
6132
	ELSE
6133
		/* EDIT Note */
6134
		UPDATE REJECTION_TRAIL rt SET
6135
			rt.COMMENTS = sComments,
6136
			rt.USER_ID = nUserId,
6137
			rt.DATE_TIME_STAMP = GET_DATETIME()
6138
		WHERE rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_BOM')
6139
		  AND rt.ENTITY_ID = nBomId
6140
		  AND rt.REJECT_SEQ = nRejectSeq;
6141
 
6142
 
6143
	END IF;
6144
 
6145
 
6146
END	Accept_Reject_Comments;
6147
/*--------------------------------------------------------------------------------------------------*/
6148
PROCEDURE Log_Bom_Trail ( nBomId IN BOM_TRAIL.BOM_ID%TYPE,
6149
						  sAction IN BOM_TRAIL.TRAIL_ACTION%TYPE,
6150
						  nUserId IN BOM_TRAIL.USER_ID%TYPE,
6151
						  sComments IN BOM_TRAIL.TRAIL_COMMENTS%TYPE DEFAULT NULL  ) IS
6152
 
6153
 
6154
BEGIN
6155
	/*--------------- Business Rules Here -------------------*/
6156
	IF (nBomId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
6157
	THEN
6158
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId= '|| nBomId ||', sAction='|| sAction ||', nUserId='|| nUserId );
6159
	END IF;
6160
	/*-------------------------------------------------------*/
6161
 
6162
	INSERT INTO BOM_TRAIL ( BOM_ID, TRAIL_ACTION, TRAIL_COMMENTS, USER_ID, DATE_TIME_STAMP )
6163
	VALUES ( nBomId, sAction, sComments, nUserId, GET_DATETIME() );	
6164
 
6165
END	Log_Bom_Trail;
6166
/*--------------------------------------------------------------------------------------------------*/
6167
PROCEDURE Log_Node_Trail ( nNodeId IN NODE_TRAIL.NODE_ID%TYPE,
6168
						  sAction IN NODE_TRAIL.TRAIL_ACTION%TYPE,
6169
						  nUserId IN NODE_TRAIL.USER_ID%TYPE  ) IS
6170
 
6171
 
6172
BEGIN
6173
	/*--------------- Business Rules Here -------------------*/
6174
	IF (nNodeId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
6175
	THEN
6176
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId= '|| nNodeId ||', sAction='|| sAction ||', nUserId='|| nUserId );
6177
	END IF;
6178
	/*-------------------------------------------------------*/
6179
 
6180
	INSERT INTO NODE_TRAIL ( NODE_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
6181
	VALUES ( nNodeId, sAction, nUserId, GET_DATETIME() );	
6182
 
6183
END	Log_Node_Trail;
6184
/*--------------------------------------------------------------------------------------------------*/
6185
PROCEDURE Log_Os_Trail ( nOsId IN OS_TRAIL.OS_ID%TYPE,
6186
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
6187
						  nUserId IN OS_TRAIL.USER_ID%TYPE  ) IS
6188
 
6189
 
6190
BEGIN
6191
	/*--------------- Business Rules Here -------------------*/
6192
	IF (nOsId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
6193
	THEN
6194
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nOsId ||', sAction='|| sAction ||', nUserId='|| nUserId );
6195
	END IF;
6196
	/*-------------------------------------------------------*/
6197
 
6198
	INSERT INTO OS_TRAIL ( OS_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
6199
	VALUES ( nOsId, sAction, nUserId, GET_DATETIME() );	
6200
 
6201
END	Log_Os_Trail;
6202
/*--------------------------------------------------------------------------------------------------*/
6203
 
6204
END pk_Bom_Test;
6205
 
6206
/
6207
 
6208
/
6209
--------------------------------------------------------
6210
--  DDL for Package Body PK_NETWORK_NODE
6211
--------------------------------------------------------
6212
 
6213
  CREATE OR REPLACE PACKAGE BODY "PK_NETWORK_NODE" 
6214
IS
6215
/* ---------------------------------------------------------------------------
6216
    Version: 1.0.0
6217
   --------------------------------------------------------------------------- */
6218
 
6219
/*--------------------------------------------------------------------------------------------------*/
6220
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
6221
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
6222
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
6223
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
6224
					 nUserId IN NUMBER,
6225
					 sNotXML IN NETWORK_NODES.NOT_XML%TYPE ) IS
6226
 
6227
NodeID NUMBER;
6228
 
6229
CURSOR nn_cur IS -- Check Node Name Duplicates
6230
		SELECT bc.node_id
6231
		  FROM BOM_CONTENTS bc,
6232
		  	   NETWORK_NODES nn
6233
		 WHERE bc.NODE_ID = nn.NODE_ID
6234
		   AND bc.BOM_ID = nBomId 
6235
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName );
6236
nn_rec nn_cur%ROWTYPE;
6237
 
6238
DUPLICATE_NODE_NAME EXCEPTION;
6239
 
6240
BEGIN
6241
	/*--------------- Business Rules Here -------------------*/
6242
	OPEN nn_cur;
6243
    FETCH nn_cur INTO nn_rec;
6244
 
6245
    IF nn_cur%FOUND
6246
    THEN
6247
		RAISE DUPLICATE_NODE_NAME;
6248
	END IF;
6249
 
6250
	CLOSE nn_cur;
6251
	/*-------------------------------------------------------*/
6252
 
6253
 
6254
	-- Get node_id
6255
	SELECT SEQ_NODE_ID.NEXTVAL INTO NodeID FROM DUAL;
6256
 
6257
 
6258
	-- Insert new Network Node			  
6259
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS, NOT_XML )
6260
	VALUES (
6261
			NodeID,
6262
			nNodeTypeId,
6263
			sNodeName,
6264
			sNodeComments,
6265
			sNotXML
6266
			);
6267
 
6268
 
6269
	-- Link Node with the BOM
6270
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID )
6271
	VALUES (
6272
		    nBomId,
6273
			NodeID
6274
		    );
6275
 
6276
	/* Log BOM_TRAIL */
6277
	pk_Bom.Log_Bom_Trail ( nBomId, 'Added Network Node: '||sNodeName, nUserId );				
6278
 
6279
EXCEPTION
6280
    WHEN DUPLICATE_NODE_NAME
6281
	THEN		
6282
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
6283
 
6284
END	Add_Node;
6285
/*--------------------------------------------------------------------------------------------------*/
6286
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
6287
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
6288
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
6289
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
6290
						nUserId IN NUMBER,
6291
						nLifeCycle IN NUMBER,
6292
						sNotXML IN NETWORK_NODES.NOT_XML%TYPE ) IS
6293
 
6294
BomID NUMBER;
6295
 
6296
CURSOR nn_cur IS -- Check Node Name Duplicates
6297
		SELECT bc.node_id
6298
		  FROM BOM_CONTENTS bc,
6299
		  	   NETWORK_NODES nn
6300
		 WHERE bc.NODE_ID = nn.NODE_ID
6301
		   AND bc.BOM_ID = BomId 
6302
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName )
6303
		   AND nn.NODE_ID != nNodeId;
6304
nn_rec nn_cur%ROWTYPE;
6305
 
6306
DUPLICATE_NODE_NAME EXCEPTION;
6307
 
6308
BEGIN
6309
	/*--------------- Business Rules Here -------------------*/
6310
	-- Check all parameters
6311
	IF (nNodeId IS NULL)  OR  (nNodeTypeId IS NULL) 
6312
	THEN
6313
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId='|| nNodeId  ||', nNodeTypeId='|| nNodeTypeId  );
6314
 
6315
	END IF;
6316
 
6317
	-- Get bom_id
6318
	SELECT bc.BOM_ID INTO BomId
6319
	  FROM BOM_CONTENTS bc
6320
	 WHERE bc.NODE_ID = nNodeId; 
6321
 
6322
	-- Check for duplicate names
6323
	OPEN nn_cur;
6324
    FETCH nn_cur INTO nn_rec;
6325
 
6326
    IF nn_cur%FOUND
6327
    THEN
6328
		RAISE DUPLICATE_NODE_NAME;
6329
	END IF;
6330
 
6331
	CLOSE nn_cur;
6332
	/*-------------------------------------------------------*/
6333
 
6334
	-- Update Network Node Details
6335
	UPDATE NETWORK_NODES nn SET
6336
		nn.NODE_NAME = sNodeName,
6337
		nn.NODE_COMMENTS = sNodeComments,
6338
		nn.NODE_TYPE_ID = nNodeTypeId,
6339
		nn.NODE_LIFE_CYCLE = nLifeCycle,
6340
		nn.NOT_XML = sNotXML
6341
	 WHERE nn.NODE_ID = nNodeId;
6342
 
6343
 	/* Log BOM_TRAIL */
6344
	pk_Bom.Log_Bom_Trail ( BomID, 'Updated Network Node: '||sNodeName, nUserId );
6345
 
6346
 
6347
EXCEPTION
6348
    WHEN DUPLICATE_NODE_NAME
6349
	THEN		
6350
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
6351
 
6352
END	Update_Node;
6353
/*--------------------------------------------------------------------------------------------------*/
6354
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
6355
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE ) IS
6356
 
6357
 
6358
 
6359
NODE_ID_REQUIRED EXCEPTION;
6360
 
6361
BEGIN
6362
	/*--------------- Business Rules Here -------------------*/
6363
    IF sNodeIdList IS NULL
6364
    THEN
6365
		RAISE NODE_ID_REQUIRED;
6366
	END IF;
6367
	/*-------------------------------------------------------*/
6368
 
6369
 
6370
 
6371
	-- Remove from Bom Contents
6372
	DELETE FROM BOM_CONTENTS
6373
	WHERE bom_id = nBomId
6374
	  AND node_id IN (
6375
		  		  	  SELECT *
6376
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
6377
		  		  	 );
6378
 
6379
 
6380
	-- Remove Network Nodes
6381
	DELETE FROM NETWORK_NODES
6382
	WHERE node_id IN (
6383
		  		  	  SELECT *
6384
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
6385
		  		  	 );
6386
 
6387
 
6388
 
6389
EXCEPTION
6390
    WHEN NODE_ID_REQUIRED
6391
	THEN		
6392
		RAISE_APPLICATION_ERROR (-20000, 'You must select at least one Network Node.');
6393
 
6394
END	Remove_Node;
6395
/*--------------------------------------------------------------------------------------------------*/
6396
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t, nUserId IN NUMBER ) IS
6397
 
6398
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
6399
NodeName VARCHAR2(4000);
6400
BomId NUMBER;
6401
 
6402
BEGIN
6403
	/*--------------- Business Rules Here -------------------*/
6404
	/*-------------------------------------------------------*/
6405
 
6406
	IF (nNodeIdCollection.COUNT > 0) THEN  
6407
 
6408
	   			--Log Action Trail
6409
		FOR i IN 1..nNodeIdCollection.COUNT
6410
		LOOP
6411
			-- Get bom_id
6412
			SELECT bc.BOM_ID INTO BomId
6413
	  		FROM BOM_CONTENTS bc
6414
			WHERE bc.NODE_ID = nNodeIdCollection(i);	
6415
 
6416
			--Get node_name
6417
			SELECT nn.NODE_NAME INTO NodeName
6418
	  		FROM NETWORK_NODES nn
6419
			WHERE nn.NODE_ID = nNodeIdCollection(i);	
6420
 
6421
			/* Log BOM_TRAIL */
6422
			pk_Bom.Log_Bom_Trail ( BomId, 'Deleted Network Node: '||NodeName, nUserId );
6423
 
6424
		END LOOP;				  
6425
 
6426
		-- Destroy Hardware Node Link
6427
		DELETE 
6428
		  FROM HARDWARE_NODE hn
6429
		 WHERE hn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
6430
 
6431
 
6432
		-- Destroy Node from Bom Contents
6433
		DELETE 
6434
		  FROM BOM_CONTENTS bc
6435
		 WHERE bc.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
6436
 
6437
 
6438
		-- Destroy Operation Systems
6439
		nIdCollector := NULL;
6440
		SELECT CAST ( MULTISET ( SELECT os.OS_ID
6441
		  	   		  		   	   FROM OPERATING_SYSTEMS os
6442
		 						  WHERE os.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) )
6443
							    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
6444
 
6445
		pk_Operating_System.Destroy_Os ( nIdCollector, nUserId );
6446
 
6447
		---- Finnaly destroy Network Node ----
6448
		DELETE
6449
		  FROM NETWORK_NODES nn
6450
		 WHERE nn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );		 
6451
 
6452
	END IF; 
6453
 
6454
 
6455
END	Destroy_Node;
6456
/*--------------------------------------------------------------------------------------------------*/
6457
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2, nUserId IN NUMBER ) IS
6458
 
6459
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
6460
 
6461
BEGIN
6462
	/*--------------- Business Rules Here -------------------*/
6463
	/*-------------------------------------------------------*/
6464
	nIdCollector := IN_LIST_NUMBER ( nNodeIdList );
6465
 
6466
	Destroy_Node ( nIdCollector, nUserId);	
6467
 
6468
 
6469
END	Destroy_Node;
6470
/*--------------------------------------------------------------------------------------------------*/
6471
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
6472
		  			   nBomId IN BOMS.BOM_ID%TYPE,
6473
					   nUserId IN NUMBER ) IS
6474
 
6475
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
6476
	SeqNum NUMBER;
6477
 
6478
BEGIN
6479
	/*--------------- Business Rules Here -------------------*/
6480
	-- Check for parameters
6481
	IF (sNodeIdOrder IS NULL)  OR (nBomId IS NULL) 
6482
	THEN
6483
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId='|| nBomId  ||' sNodeIdOrder='|| sNodeIdOrder  );
6484
	END IF;
6485
	/*-------------------------------------------------------*/
6486
 
6487
	nIdCollector := IN_LIST_NUMBER ( sNodeIdOrder );
6488
 
6489
	-- Set start sequence number
6490
	SeqNum := 1;
6491
 
6492
	FOR i IN 1..nIdCollector.COUNT
6493
	LOOP
6494
 
6495
		-- Update new sequence number
6496
		UPDATE BOM_CONTENTS bc SET
6497
			bc.SEQ_NUM = SeqNum
6498
		 WHERE bc.BOM_ID = nBomId
6499
		   AND bc.NODE_ID = nIdCollector(i);
6500
 
6501
		SeqNum := SeqNum + 1;
6502
 
6503
	END LOOP;
6504
 
6505
 
6506
END	Sort_Nodes;
6507
/*--------------------------------------------------------------------------------------------------*/
6508
END pk_Network_Node;
6509
 
6510
/
6511
 
6512
/
6513
--------------------------------------------------------
6514
--  DDL for Package Body PK_NETWORK_NODE_TEST
6515
--------------------------------------------------------
6516
 
6517
  CREATE OR REPLACE PACKAGE BODY "PK_NETWORK_NODE_TEST" 
6518
IS
6519
/* ---------------------------------------------------------------------------
6520
    Version: 1.0.0
6521
   --------------------------------------------------------------------------- */
6522
 
6523
/*--------------------------------------------------------------------------------------------------*/
6524
PROCEDURE Add_Node ( sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
6525
  		   	   	     nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
6526
					 sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE,
6527
					 nBomId IN BOM_CONTENTS.BOM_ID%TYPE,
6528
					 nUserId IN NUMBER ) IS
6529
 
6530
NodeID NUMBER;
6531
 
6532
CURSOR nn_cur IS -- Check Node Name Duplicates
6533
		SELECT bc.node_id
6534
		  FROM BOM_CONTENTS bc,
6535
		  	   NETWORK_NODES nn
6536
		 WHERE bc.NODE_ID = nn.NODE_ID
6537
		   AND bc.BOM_ID = nBomId 
6538
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName );
6539
nn_rec nn_cur%ROWTYPE;
6540
 
6541
DUPLICATE_NODE_NAME EXCEPTION;
6542
 
6543
BEGIN
6544
	/*--------------- Business Rules Here -------------------*/
6545
	OPEN nn_cur;
6546
    FETCH nn_cur INTO nn_rec;
6547
 
6548
    IF nn_cur%FOUND
6549
    THEN
6550
		RAISE DUPLICATE_NODE_NAME;
6551
	END IF;
6552
 
6553
	CLOSE nn_cur;
6554
	/*-------------------------------------------------------*/
6555
 
6556
 
6557
	-- Get node_id
6558
	SELECT SEQ_NODE_ID.NEXTVAL INTO NodeID FROM DUAL;
6559
 
6560
 
6561
	-- Insert new Network Node			  
6562
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS )
6563
	VALUES (
6564
			NodeID,
6565
			nNodeTypeId,
6566
			sNodeName,
6567
			sNodeComments
6568
			);
6569
 
6570
 
6571
	-- Link Node with the BOM
6572
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID )
6573
	VALUES (
6574
		    nBomId,
6575
			NodeID
6576
		    );
6577
 
6578
	/* Log BOM_TRAIL */
6579
	pk_Bom.Log_Bom_Trail ( nBomId, 'ADDED NETWORK NODE: '||sNodeName, nUserId );			
6580
 
6581
EXCEPTION
6582
    WHEN DUPLICATE_NODE_NAME
6583
	THEN		
6584
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
6585
 
6586
END	Add_Node;
6587
/*--------------------------------------------------------------------------------------------------*/
6588
PROCEDURE Update_Node ( nNodeId IN NETWORK_NODES.NODE_ID%TYPE,
6589
						sNodeName IN NETWORK_NODES.NODE_NAME%TYPE,
6590
  		   	   	     	nNodeTypeId IN NETWORK_NODES.NODE_TYPE_ID%TYPE,
6591
					 	sNodeComments IN NETWORK_NODES.NODE_COMMENTS%TYPE ) IS
6592
 
6593
BomID NUMBER;
6594
 
6595
CURSOR nn_cur IS -- Check Node Name Duplicates
6596
		SELECT bc.node_id
6597
		  FROM BOM_CONTENTS bc,
6598
		  	   NETWORK_NODES nn
6599
		 WHERE bc.NODE_ID = nn.NODE_ID
6600
		   AND bc.BOM_ID = BomId 
6601
		   AND UPPER( nn.NODE_NAME ) = UPPER( sNodeName )
6602
		   AND nn.NODE_ID != nNodeId;
6603
nn_rec nn_cur%ROWTYPE;
6604
 
6605
DUPLICATE_NODE_NAME EXCEPTION;
6606
 
6607
BEGIN
6608
	/*--------------- Business Rules Here -------------------*/
6609
	-- Check all parameters
6610
	IF (nNodeId IS NULL)  OR  (nNodeTypeId IS NULL) 
6611
	THEN
6612
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nNodeId='|| nNodeId  ||', nNodeTypeId='|| nNodeTypeId  );
6613
 
6614
	END IF;
6615
 
6616
	-- Get bom_id
6617
	SELECT bc.BOM_ID INTO BomId
6618
	  FROM BOM_CONTENTS bc
6619
	 WHERE bc.NODE_ID = nNodeId; 
6620
 
6621
	-- Check for duplicate names
6622
	OPEN nn_cur;
6623
    FETCH nn_cur INTO nn_rec;
6624
 
6625
    IF nn_cur%FOUND
6626
    THEN
6627
		RAISE DUPLICATE_NODE_NAME;
6628
	END IF;
6629
 
6630
	CLOSE nn_cur;
6631
	/*-------------------------------------------------------*/
6632
 
6633
	-- Update Network Node Details
6634
	UPDATE NETWORK_NODES nn SET
6635
		nn.NODE_NAME = sNodeName,
6636
		nn.NODE_COMMENTS = sNodeComments,
6637
		nn.NODE_TYPE_ID = nNodeTypeId
6638
	 WHERE nn.NODE_ID = nNodeId;
6639
 
6640
 
6641
 
6642
EXCEPTION
6643
    WHEN DUPLICATE_NODE_NAME
6644
	THEN		
6645
		RAISE_APPLICATION_ERROR (-20000, 'Node Name "'|| sNodeName ||'" is Already Used in this BOM.');
6646
 
6647
END	Update_Node;
6648
/*--------------------------------------------------------------------------------------------------*/
6649
PROCEDURE Remove_Node ( sNodeIdList IN VARCHAR2,
6650
					  	nBomId IN BOM_CONTENTS.BOM_ID%TYPE ) IS
6651
 
6652
 
6653
 
6654
NODE_ID_REQUIRED EXCEPTION;
6655
 
6656
BEGIN
6657
	/*--------------- Business Rules Here -------------------*/
6658
    IF sNodeIdList IS NULL
6659
    THEN
6660
		RAISE NODE_ID_REQUIRED;
6661
	END IF;
6662
	/*-------------------------------------------------------*/
6663
 
6664
 
6665
 
6666
	-- Remove from Bom Contents
6667
	DELETE FROM BOM_CONTENTS
6668
	WHERE bom_id = nBomId
6669
	  AND node_id IN (
6670
		  		  	  SELECT *
6671
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
6672
		  		  	 );
6673
 
6674
 
6675
	-- Remove Network Nodes
6676
	DELETE FROM NETWORK_NODES
6677
	WHERE node_id IN (
6678
		  		  	  SELECT *
6679
   	   		   	      FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
6680
		  		  	 );
6681
 
6682
 
6683
 
6684
EXCEPTION
6685
    WHEN NODE_ID_REQUIRED
6686
	THEN		
6687
		RAISE_APPLICATION_ERROR (-20000, 'You must select at least one Network Node.');
6688
 
6689
END	Remove_Node;
6690
/*--------------------------------------------------------------------------------------------------*/
6691
PROCEDURE Destroy_Node ( nNodeIdCollection IN DEPMGR_NUMBER_TAB_t ) IS
6692
 
6693
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
6694
 
6695
BEGIN
6696
	/*--------------- Business Rules Here -------------------*/
6697
	/*-------------------------------------------------------*/
6698
 
6699
	IF (nNodeIdCollection.COUNT > 0) THEN   
6700
 
6701
		-- Destroy Hardware Node Link
6702
		DELETE 
6703
		  FROM HARDWARE_NODE hn
6704
		 WHERE hn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
6705
 
6706
 
6707
		-- Destroy Node from Bom Contents
6708
		DELETE 
6709
		  FROM BOM_CONTENTS bc
6710
		 WHERE bc.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
6711
 
6712
 
6713
		-- Destroy Operation Systems
6714
		nIdCollector := NULL;
6715
		SELECT CAST ( MULTISET ( SELECT os.OS_ID
6716
		  	   		  		   	   FROM OPERATING_SYSTEMS os
6717
		 						  WHERE os.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) )
6718
							    ) AS DEPMGR_NUMBER_TAB_t ) INTO nIdCollector FROM DUAL;
6719
 
6720
		pk_Operating_System.Destroy_Os ( nIdCollector );
6721
 
6722
 
6723
 
6724
 
6725
		---- Finnaly destroy Network Node ----
6726
		DELETE
6727
		  FROM NETWORK_NODES nn
6728
		 WHERE nn.NODE_ID IN ( SELECT * FROM TABLE ( CAST ( nNodeIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
6729
 
6730
 
6731
	END IF; 
6732
 
6733
 
6734
END	Destroy_Node;
6735
/*--------------------------------------------------------------------------------------------------*/
6736
PROCEDURE Destroy_Node ( nNodeIdList IN VARCHAR2 ) IS
6737
 
6738
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
6739
 
6740
BEGIN
6741
	/*--------------- Business Rules Here -------------------*/
6742
	/*-------------------------------------------------------*/
6743
	nIdCollector := IN_LIST_NUMBER ( nNodeIdList );
6744
 
6745
	Destroy_Node ( nIdCollector );	
6746
 
6747
 
6748
END	Destroy_Node;
6749
/*--------------------------------------------------------------------------------------------------*/
6750
PROCEDURE Sort_Nodes ( sNodeIdOrder IN VARCHAR2,
6751
		  			   nBomId IN BOMS.BOM_ID%TYPE,
6752
					   nUserId IN NUMBER ) IS
6753
 
6754
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
6755
	SeqNum NUMBER;
6756
 
6757
BEGIN
6758
	/*--------------- Business Rules Here -------------------*/
6759
	-- Check for parameters
6760
	IF (sNodeIdOrder IS NULL)  OR (nBomId IS NULL) 
6761
	THEN
6762
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nBomId='|| nBomId  ||' sNodeIdOrder='|| sNodeIdOrder  );
6763
	END IF;
6764
	/*-------------------------------------------------------*/
6765
 
6766
	nIdCollector := IN_LIST_NUMBER ( sNodeIdOrder );
6767
 
6768
	-- Set start sequence number
6769
	SeqNum := 1;
6770
 
6771
	FOR i IN 1..nIdCollector.COUNT
6772
	LOOP
6773
 
6774
		-- Update new sequence number
6775
		UPDATE BOM_CONTENTS bc SET
6776
			bc.SEQ_NUM = SeqNum
6777
		 WHERE bc.BOM_ID = nBomId
6778
		   AND bc.NODE_ID = nIdCollector(i);
6779
 
6780
		SeqNum := SeqNum + 1;
6781
 
6782
	END LOOP;
6783
 
6784
 
6785
END	Sort_Nodes;
6786
/*--------------------------------------------------------------------------------------------------*/
6787
END pk_Network_Node_test;
6788
 
6789
/
6790
 
6791
/
6792
--------------------------------------------------------
6793
--  DDL for Package Body PK_OPERATING_SYSTEM
6794
--------------------------------------------------------
6795
 
6796
  CREATE OR REPLACE PACKAGE BODY "PK_OPERATING_SYSTEM" 
6797
IS
6798
/* ---------------------------------------------------------------------------
6799
    Modified: Rupesh Solanki
6800
	Date: 20/03/2006
6801
   --------------------------------------------------------------------------- */
6802
 
6803
/*--------------------------------------------------------------------------------------------------*/
6804
PROCEDURE Add_Os ( sOsName IN OPERATING_SYSTEMS.OS_NAME%TYPE,
6805
		  		   sOsComments IN OPERATING_SYSTEMS.OS_COMMENTS%TYPE,
6806
				   sNodeSpecFile IN OPERATING_SYSTEMS.NODE_SPEC_FILE%TYPE,
6807
 				   sNotXML IN OPERATING_SYSTEMS.NOT_XML%TYPE,
6808
				   nNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
6809
				   nBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
6810
				   nBosId IN BASE_ENV.BOS_ID%TYPE DEFAULT NULL,
6811
				   nUserId IN NUMBER ) IS
6812
 
6813
OsID NUMBER;
6814
BosId NUMBER;
6815
BaseEnvId NUMBER;
6816
BomId NUMBER;
6817
 
6818
CURSOR curOs IS -- Check Node Name Duplicates
6819
		SELECT os.OS_ID
6820
		  FROM OPERATING_SYSTEMS os
6821
		 WHERE os.NODE_ID = nNodeId
6822
		   AND UPPER(os.OS_NAME) = UPPER(sOsName);
6823
recOs curOs%ROWTYPE;
6824
 
6825
DUPLICATE_OS_NAME EXCEPTION;
6826
 
6827
BEGIN
6828
	/*--------------- Business Rules Here -------------------*/
6829
	-- Check for duplicate names
6830
	OPEN curOs;
6831
    FETCH curOs INTO recOs;
6832
 
6833
    IF curOs%FOUND
6834
    THEN
6835
		RAISE DUPLICATE_OS_NAME;
6836
	END IF;
6837
 
6838
	CLOSE curOs;
6839
	/*-------------------------------------------------------*/
6840
 
6841
	-- Get os_id
6842
	SELECT SEQ_OS_ID.NEXTVAL INTO OsID FROM DUAL;
6843
 
6844
	-- Insert new OS
6845
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, NODE_SPEC_FILE, NOT_XML ) 
6846
	VALUES ( OsID, sOsName, nNodeId, sOsComments, sNodeSpecFile, sNotXML  );
6847
 
6848
 
6849
 
6850
	/* Set up Base Configuration */
6851
	IF nBaseEnvName IS NOT NULL THEN
6852
 
6853
		-- Get bom_id
6854
		SELECT bc.BOM_ID INTO BomId
6855
		  FROM BOM_CONTENTS bc
6856
		 WHERE bc.NODE_ID = nNodeId;
6857
 
6858
 
6859
		-- Set bos _id to default
6860
		BosId := 5;		-- This is Generic OS in BOS_TYPES table
6861
		IF nBosId IS NOT NULL THEN
6862
			BosId := nBosId;
6863
		END IF;
6864
 
6865
 
6866
		-- Get base_env_id
6867
		BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
6868
 
6869
 
6870
		-- Create Base Env if Required
6871
		IF BaseEnvId IS NULL THEN
6872
 
6873
			pk_Base_Env.Add_Base_Env ( nBaseEnvName, BosId, BomId, OsID, nUserId );
6874
 
6875
			BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
6876
 
6877
		END IF;
6878
 
6879
		-- Finally assign this  base env to OS
6880
		INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID )
6881
		VALUES ( OsID, BaseEnvId );
6882
 
6883
	END IF;
6884
 
6885
 
6886
	/* Log BOM_TRAIL */
6887
	pk_Bom.Log_Node_Trail ( nNodeId, 'Added Operating System: '||sOsName, nUserId );	
6888
 
6889
 
6890
	EXCEPTION
6891
    WHEN DUPLICATE_OS_NAME
6892
	THEN		
6893
		RAISE_APPLICATION_ERROR (-20000, 'OS Name "'|| sOsName ||'" is Already Used in this Network Node.');
6894
 
6895
END	Add_Os;
6896
/*--------------------------------------------------------------------------------------------------*/
6897
PROCEDURE Update_Os ( nOsId IN OPERATING_SYSTEMS.OS_ID%TYPE,
6898
					  sOsName IN OPERATING_SYSTEMS.OS_NAME%TYPE,
6899
		  		   	  sOsComments IN OPERATING_SYSTEMS.OS_COMMENTS%TYPE,
6900
				  	  nBaseEnvName IN BASE_ENV.BASE_ENV_NAME%TYPE,
6901
					  sNodeSpecFile IN OPERATING_SYSTEMS.NODE_SPEC_FILE%TYPE,
6902
					  sNotXML IN OPERATING_SYSTEMS.NOT_XML%TYPE,
6903
					  nUserId IN NUMBER  ) IS
6904
 
6905
BomId NUMBER;
6906
BosId NUMBER;
6907
BaseEnvId NUMBER;
6908
NodeId NUMBER;
6909
 
6910
CURSOR curOs IS
6911
		SELECT os.OS_ID
6912
		  FROM OPERATING_SYSTEMS os
6913
		 WHERE os.NODE_ID = NodeId
6914
		   AND UPPER(os.OS_NAME) = UPPER(sOsName)
6915
		   AND os.OS_ID != nOsId;
6916
recOs curOs%ROWTYPE;
6917
 
6918
DUPLICATE_OS_NAME EXCEPTION;
6919
 
6920
BEGIN
6921
	/*--------------- Business Rules Here -------------------*/
6922
	-- Check for parameters
6923
	IF (nOsId IS NULL) 
6924
	THEN
6925
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId='|| nOsId   );
6926
 
6927
	END IF;
6928
 
6929
 
6930
	-- Get node_id
6931
	SELECT os.NODE_ID INTO NodeId
6932
	  FROM OPERATING_SYSTEMS os
6933
	 WHERE os.OS_ID = nOsId;
6934
 
6935
 
6936
	-- Check for duplicate names
6937
	OPEN curOs;
6938
    FETCH curOs INTO recOs;
6939
 
6940
    IF curOs%FOUND
6941
    THEN
6942
		RAISE DUPLICATE_OS_NAME;
6943
	END IF;
6944
 
6945
	CLOSE curOs;
6946
	/*-------------------------------------------------------*/
6947
 
6948
	-- Delete current Base Env
6949
	DELETE
6950
	  FROM OS_BASE_ENV obe
6951
	 WHERE obe.OS_ID = nOsId;
6952
 
6953
 
6954
	/* Set up Base Configuration */
6955
	IF nBaseEnvName IS NOT NULL THEN
6956
 
6957
		-- Get bom_id
6958
		SELECT bc.BOM_ID INTO BomId
6959
		  FROM BOM_CONTENTS bc
6960
		 WHERE bc.NODE_ID = NodeId;
6961
 
6962
 
6963
		-- Get base_env_id
6964
		BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
6965
 
6966
 
6967
		-- Set bos _id to default
6968
		BosId := 5;		-- This is Generic OS in BOS_TYPES table
6969
 
6970
 
6971
		-- Create Base Env if Required
6972
		IF BaseEnvId IS NULL THEN
6973
 
6974
			pk_Base_Env.Add_Base_Env ( nBaseEnvName, BosId, BomId, nOsId, nUserId );
6975
 
6976
			BaseEnvId := pk_Base_Env.Get_Base_Env_Id ( nBaseEnvName, BomId );
6977
 
6978
		ELSE
6979
			-- Get bos_id
6980
			SELECT be.BOS_ID INTO BosId
6981
			  FROM BASE_ENV be
6982
			 WHERE be.BASE_ENV_ID = BaseEnvId;
6983
 
6984
		END IF;
6985
 
6986
 
6987
		-- Finally assign this  base env to OS
6988
		INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID )
6989
		VALUES ( nOsId, BaseEnvId );
6990
 
6991
	END IF;
6992
 
6993
 
6994
 
6995
	-- Update Os Details
6996
	UPDATE OPERATING_SYSTEMS os SET
6997
		os.OS_NAME = sOsName,
6998
		os.OS_COMMENTS = sOsComments,
6999
		os.NODE_SPEC_FILE = sNodeSpecFile,
7000
		os.NOT_XML = sNotXML
7001
	 WHERE os.OS_ID = nOsId;
7002
 
7003
	/* Log BOM_TRAIL */
7004
	pk_Bom.Log_Node_Trail ( NodeId, 'Updated Operating System: '||sOsName, nUserId );		 
7005
 
7006
 
7007
	EXCEPTION
7008
    WHEN DUPLICATE_OS_NAME
7009
	THEN		
7010
		RAISE_APPLICATION_ERROR (-20000, 'OS Name "'|| sOsName ||'" is Already Used in this Network Node.');
7011
 
7012
END	Update_Os;
7013
/*--------------------------------------------------------------------------------------------------*/
7014
PROCEDURE Add_Product_Wrap ( nPkgId IN NUMBER,
7015
		  				   	 sProdVersion IN VARCHAR2,
7016
							 nOsId IN OS_CONTENTS.OS_ID%TYPE,
7017
							 nUserId IN NUMBER,
7018
							 sComments IN VARCHAR2 DEFAULT NULL ) IS
7019
 
7020
ProdId PACKAGE_VERSIONS.PV_ID%TYPE;
7021
ProdName PACKAGES.PKG_NAME%TYPE;
7022
 
7023
CURSOR prod_cur IS
7024
	SELECT osc.PROD_ID
7025
	  FROM OS_CONTENTS osc
7026
	 WHERE osc.PROD_ID = ProdId
7027
	   AND osc.OS_ID = nOsId;
7028
prod_rec prod_cur%ROWTYPE;
7029
 
7030
BEGIN
7031
	/*--------------- Business Rules Here -------------------*/                             
7032
	IF (NOT nPkgId IS NULL) AND (sProdVersion IS NULL) AND (NOT nOsId IS NULL) AND (NOT nUserId IS NULL) THEN
7033
	   RAISE_APPLICATION_ERROR (-20000, 'Please provide Product Version.' );
7034
 
7035
	ELSIF (nPkgId IS NULL) OR (sProdVersion IS NULL) OR (nOsId IS NULL) OR (nUserId IS NULL) THEN
7036
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nPkgId= '|| nPkgId ||', sProdVersion='|| sProdVersion ||', nOsId='|| nOsId ||', nUserId='|| nUserId );
7037
 
7038
	END IF;
7039
	/*-------------------------------------------------------*/
7040
 
7041
	-- Get Product Name --
7042
	SELECT PKG_NAME INTO ProdName FROM PACKAGES WHERE PKG_ID = nPkgId;
7043
 
7044
 
7045
	-- Create Product Version in Release Manager if Required, and Get Prod_id --
7046
	Seed_Package_Names_Versions ( ProdName, sProdVersion, nUserId, ProdId );
7047
 
7048
 
7049
	-- Add Product To OS --
7050
	OPEN prod_cur;
7051
	FETCH prod_cur INTO prod_rec;
7052
 
7053
	IF prod_cur%NOTFOUND THEN
7054
	   pk_Product.Add_Product ( ProdId, nOsId, nUserId );
7055
 
7056
	   -- Add comments if required
7057
	   IF (NOT sComments IS NULL) THEN
7058
	   		UPDATE OS_CONTENTS osc SET
7059
				osc.PRODUCT_COMMENTS = sComments
7060
			 WHERE osc.OS_ID = nOsId
7061
			   AND osc.PROD_ID = ProdId;
7062
 
7063
	   END IF;
7064
 
7065
 
7066
	END IF;
7067
 
7068
	CLOSE prod_cur;
7069
 
7070
 
7071
END	Add_Product_Wrap;
7072
/*--------------------------------------------------------------------------------------------------*/
7073
PROCEDURE Set_Base_Conf ( nOsId IN OS_BASE_ENV.OS_ID%TYPE,
7074
		  				  nBaseEnvId IN OS_BASE_ENV.BASE_ENV_ID%TYPE ) IS
7075
 
7076
BEGIN
7077
	/*--------------- Business Rules Here -------------------*/
7078
	/*-------------------------------------------------------*/
7079
 
7080
	-- Delete current Base Conf setting
7081
	DELETE FROM OS_BASE_ENV
7082
	WHERE OS_ID = nOsId;
7083
 
7084
	-- Set new Base Conf	
7085
	IF NOT nBaseEnvId IS NULL
7086
	THEN
7087
		INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID )
7088
		VALUES ( nOsId, nBaseEnvId );
7089
	END IF;
7090
 
7091
END	Set_Base_Conf;
7092
/*--------------------------------------------------------------------------------------------------*/
7093
PROCEDURE Shift_Product_SeqNum ( nProdId IN OS_CONTENTS.PROD_ID%TYPE,
7094
		  				 	     nOsId IN OS_CONTENTS.OS_ID%TYPE,
7095
						 		 nToSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE ) IS
7096
 
7097
currSeqNum NUMBER;
7098
FromSeqNum NUMBER;
7099
 
7100
BEGIN
7101
	 -- Get Current seq_num
7102
	 SELECT osc.SEQ_NUM INTO currSeqNum
7103
	   FROM OS_CONTENTS osc
7104
	  WHERE osc.OS_ID = nOsId
7105
	    AND osc.PROD_ID = nProdId;
7106
 
7107
 
7108
	 IF currSeqNum > nToSeqNum
7109
	 THEN
7110
 
7111
		FromSeqNum := nToSeqNum;
7112
 
7113
			-- Shift others Up
7114
		UPDATE OS_CONTENTS osc SET
7115
			   osc.SEQ_NUM = osc.SEQ_NUM + 1
7116
		 WHERE osc.OS_ID = nOsId 
7117
		   AND osc.PROD_ID != nProdId
7118
		   AND osc.SEQ_NUM BETWEEN  FromSeqNum  AND  currSeqNum - 1;
7119
 
7120
 
7121
	 ELSIF currSeqNum < nToSeqNum
7122
	 THEN
7123
 
7124
		FromSeqNum := currSeqNum + 1;  
7125
 
7126
		 -- Shift others Down
7127
		UPDATE OS_CONTENTS osc SET
7128
		   	   osc.SEQ_NUM = osc.SEQ_NUM - 1
7129
		 WHERE osc.OS_ID = nOsId 
7130
		   AND osc.PROD_ID != nProdId
7131
		   AND osc.SEQ_NUM BETWEEN  FromSeqNum  AND  nToSeqNum;
7132
 
7133
	 END IF;
7134
 
7135
 
7136
	 -- Move Product to new seq_num
7137
	 UPDATE OS_CONTENTS osc SET
7138
		    osc.SEQ_NUM = nToSeqNum
7139
	  WHERE osc.OS_ID = nOsId 
7140
	    AND osc.PROD_ID = nProdId;
7141
 
7142
 
7143
 
7144
END Shift_Product_SeqNum;
7145
/*--------------------------------------------------------------------------------------------------*/
7146
PROCEDURE Shift_Bulk_Products_SeqNum ( sProdIdList IN VARCHAR2,
7147
		  							   nOsId IN OS_CONTENTS.OS_ID%TYPE,
7148
									   cDirection IN CHAR ) IS
7149
 
7150
MinSeqNum	  NUMBER := 1;									   
7151
FirstSeqNum   NUMBER;
7152
LastSeqNum 	  NUMBER;
7153
MaxSeqNum	  NUMBER;
7154
 
7155
 
7156
CURSOR osc_down_cur IS
7157
	SELECT osc.prod_id, osc.seq_num
7158
	  FROM OS_CONTENTS osc
7159
	 WHERE osc.OS_ID = nOsId
7160
	   AND osc.PROD_ID IN (
7161
						   SELECT *
7162
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
7163
	   	   			   	   )
7164
	ORDER BY osc.seq_num ASC;
7165
osc_down_rec osc_down_cur%ROWTYPE;	
7166
 
7167
CURSOR osc_up_cur IS
7168
	SELECT osc.prod_id, osc.seq_num
7169
	  FROM OS_CONTENTS osc
7170
	 WHERE osc.OS_ID = nOsId
7171
	   AND osc.PROD_ID IN (
7172
						   SELECT *
7173
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
7174
	   	   			   	   )
7175
	ORDER BY osc.seq_num DESC;
7176
osc_up_rec osc_up_cur%ROWTYPE;
7177
 
7178
 
7179
BEGIN
7180
	/*--------------- Business Rules Here -------------------*/
7181
	IF sProdIdList IS NULL
7182
	THEN
7183
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
7184
 
7185
	ELSIF (nOsId IS NULL) OR (cDirection IS NULL)
7186
	THEN
7187
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nOsId ||', cDirection='|| cDirection );
7188
 
7189
	END IF;
7190
	/*-------------------------------------------------------*/
7191
 
7192
 
7193
 
7194
	-- Get First seq_num
7195
	SELECT MIN( osc.SEQ_NUM ) INTO FirstSeqNum
7196
	  FROM OS_CONTENTS osc
7197
	 WHERE osc.OS_ID = nOsId
7198
	   AND osc.PROD_ID IN (
7199
						   SELECT *
7200
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
7201
	   	   			   	   );
7202
 
7203
	-- Get Last seq_num
7204
	SELECT MAX( osc.SEQ_NUM ) INTO LastSeqNum
7205
	  FROM OS_CONTENTS osc
7206
	 WHERE osc.OS_ID = nOsId
7207
	   AND osc.PROD_ID IN (
7208
						   SELECT *
7209
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
7210
	   	   			   	   );
7211
 
7212
    -- Get Max seq_num
7213
	SELECT MAX( osc.SEQ_NUM ) INTO MaxSeqNum
7214
	  FROM OS_CONTENTS osc
7215
	 WHERE osc.OS_ID = nOsId;
7216
 
7217
 
7218
 
7219
    IF cDirection = '+'
7220
	THEN
7221
		-- Shift UP
7222
		IF LastSeqNum < MaxSeqNum
7223
		THEN
7224
			/* Can only shift up if maxseqnum is not reached */
7225
			OPEN osc_up_cur;
7226
			FETCH osc_up_cur INTO osc_up_rec;
7227
 
7228
			WHILE osc_up_cur%FOUND
7229
			LOOP
7230
				Shift_Product_SeqNum ( osc_up_rec.PROD_ID, nOsId, osc_up_rec.SEQ_NUM + 1  );
7231
 
7232
				FETCH osc_up_cur INTO osc_up_rec;
7233
			END LOOP;
7234
 
7235
 
7236
			CLOSE osc_up_cur;
7237
 
7238
 
7239
		END IF;
7240
 
7241
 
7242
 
7243
 
7244
	ELSIF cDirection = '-'
7245
	THEN
7246
		-- Shift DOWN
7247
		IF FirstSeqNum > MinSeqNum
7248
		THEN
7249
			/* Can only shift down if minseqnum is not reached */
7250
			OPEN osc_down_cur;
7251
			FETCH osc_down_cur INTO osc_down_rec;
7252
 
7253
			WHILE osc_down_cur%FOUND
7254
			LOOP
7255
				Shift_Product_SeqNum ( osc_down_rec.PROD_ID, nOsId, osc_down_rec.SEQ_NUM - 1  );
7256
 
7257
				FETCH osc_down_cur INTO osc_down_rec;
7258
			END LOOP;
7259
 
7260
			CLOSE osc_down_cur;
7261
 
7262
 
7263
		END IF;
7264
 
7265
 
7266
	END IF;
7267
 
7268
 
7269
END Shift_Bulk_Products_SeqNum;
7270
/*--------------------------------------------------------------------------------------------------*/
7271
PROCEDURE Destroy_Os ( nOsIdCollection IN DEPMGR_NUMBER_TAB_t, nUserId IN NUMBER ) IS
7272
 
7273
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
7274
NodeId NUMBER;
7275
OsName VARCHAR2(4000);
7276
 
7277
BEGIN
7278
	/*--------------- Business Rules Here -------------------*/
7279
	/*-------------------------------------------------------*/
7280
 
7281
	IF (nOsIdCollection.COUNT > 0) THEN   
7282
			--Log Action Trail
7283
		FOR i IN 1..nOsIdCollection.COUNT
7284
		LOOP
7285
			-- Get node_id
7286
			SELECT os.NODE_ID INTO NodeId
7287
	  		FROM OPERATING_SYSTEMS os
7288
			WHERE os.OS_ID = nOsIdCollection(i);	
7289
 
7290
			--Get os_name
7291
			SELECT os.OS_NAME INTO OsName
7292
	  		FROM OPERATING_SYSTEMS os
7293
			WHERE os.OS_ID = nOsIdCollection(i);	
7294
 
7295
			/* Log BOM_TRAIL */
7296
			pk_Bom.Log_Node_Trail ( NodeId, 'Deleted Operating System: '||OsName, nUserId );		 
7297
 
7298
 
7299
 
7300
		END LOOP;
7301
 
7302
		-- Destroy PROCESSES_CONFIG
7303
		DELETE 
7304
		  FROM PROCESSES_CONFIG pc
7305
		 WHERE pc.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
7306
 
7307
 
7308
		-- Destroy OS_CONTENTS
7309
		DELETE 
7310
		  FROM OS_CONTENTS osc
7311
		 WHERE osc.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
7312
 
7313
 
7314
		-- Destroy OS_BASE_ENV
7315
		DELETE 
7316
		  FROM OS_BASE_ENV obe
7317
		 WHERE obe.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
7318
 
7319
 
7320
		-- Destroy HIDE_PRODUCTS
7321
		DELETE 
7322
		  FROM HIDE_PRODUCTS hp
7323
		 WHERE hp.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) ); 
7324
 
7325
 
7326
		-- Destroy OS_TRAIL
7327
		DELETE
7328
		  FROM OS_TRAIL ot
7329
		 WHERE ot.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) ); 
7330
 
7331
 
7332
		---- Finnaly destroy Operating System ----
7333
		DELETE
7334
		  FROM OPERATING_SYSTEMS os
7335
		 WHERE os.OS_ID IN ( SELECT * FROM TABLE ( CAST ( nOsIdCollection AS DEPMGR_NUMBER_TAB_t ) ) );
7336
 
7337
 
7338
 
7339
 
7340
	END IF; 
7341
 
7342
 
7343
 
7344
END	Destroy_Os;
7345
/*--------------------------------------------------------------------------------------------------*/
7346
PROCEDURE Destroy_Os ( nOsIdList IN VARCHAR2, nUserId IN NUMBER ) IS
7347
 
7348
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
7349
 
7350
BEGIN
7351
	/*--------------- Business Rules Here -------------------*/
7352
	IF nOsIdList IS NULL
7353
	THEN
7354
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Operating Systems.');
7355
 
7356
	END IF;
7357
	/*-------------------------------------------------------*/
7358
	nIdCollector := IN_LIST_NUMBER ( nOsIdList );
7359
 
7360
	Destroy_Os ( nIdCollector, nUserId );					 
7361
 
7362
END	Destroy_Os;
7363
 
7364
/*-------------------------------------------------------------------------------------------------------*/
7365
  PROCEDURE add_package_process (
7366
      nprocidlist   IN   VARCHAR2,
7367
	  npvid 		IN 	 processes_config.prod_id%TYPE,	  
7368
      nosid         IN   os_contents.os_id%TYPE,
7369
      nuserid       IN   NUMBER
7370
   )
7371
   IS
7372
      processname   VARCHAR2 (4000);
7373
	  PkgName 		VARCHAR2 (4000);
7374
	  nPkgId		NUMBER;
7375
 
7376
	  nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
7377
 
7378
 
7379
 
7380
/*Rupesh Release on 17/05/2006*/
7381
     CURSOR proc_cur
7382
      IS
7383
         SELECT prc.proc_id, prc.proc_name, prc.proc_description, 
7384
		 		prc.run_as, prc.pkg_owner, prc.is_interface
7385
           FROM processes prc
7386
          WHERE prc.proc_id IN (
7387
                   SELECT *
7388
                     FROM THE
7389
                             (SELECT CAST
7390
                                        (in_list_number (nprocidlist) AS DEPMGR_NUMBER_TAB_t
7391
                                        )
7392
                                FROM DUAL
7393
                             ));
7394
 
7395
      proc_rec      proc_cur%ROWTYPE;
7396
   BEGIN
7397
 
7398
   BEGIN
7399
   	 SELECT PKG.PKG_NAME, PKG.PKG_ID INTO PkgName, nPkgId
7400
	 FROM PACKAGE_VERSIONS PV, PACKAGES PKG
7401
	 WHERE PV.PV_ID = npvid
7402
	 AND PKG.PKG_ID = PV.PKG_ID;
7403
	 EXCEPTION
7404
	 WHEN NO_DATA_FOUND THEN
7405
	 	  RAISE_APPLICATION_ERROR (-20000, 'Select the Package Name and Version: ' );
7406
   END;	 
7407
 
7408
 
7409
      OPEN proc_cur;
7410
 
7411
      FETCH proc_cur
7412
       INTO proc_rec;
7413
 
7414
      WHILE proc_cur%FOUND
7415
      LOOP
7416
         INSERT INTO processes_config
7417
                     (proc_id, prod_id, os_id, pkg_health_tag, cmd_interface, pkg_owner, is_interface, proc_description, pkg_id
7418
                     )
7419
              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
7420
                     );
7421
 
7422
         SELECT prc.proc_name
7423
           INTO processname
7424
           FROM processes prc
7425
          WHERE prc.proc_id = proc_rec.proc_id;
7426
 
7427
	-- Log Action --
7428
	pk_Bom.Log_Os_Trail ( nosid,  
7429
						  'Added process with health tag '|| processname ||' for product '|| PkgName,
7430
						  nUserId );
7431
 
7432
         FETCH proc_cur
7433
          INTO proc_rec;
7434
      END LOOP;
7435
   END;
7436
 
7437
/*--------------------------------------------------------------------------------------------------*/
7438
/*-------------------------------------------------------------------------------------------------------*/
7439
  PROCEDURE add_packages_process (
7440
      npvidlist   	IN   VARCHAR2,	  
7441
      nosid         IN   os_contents.os_id%TYPE,
7442
      nuserid       IN   NUMBER
7443
   )
7444
   IS
7445
      processname   VARCHAR2 (4000);
7446
	  PkgName 		VARCHAR2 (4000);
7447
 
7448
	  nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
7449
 
7450
 
7451
 
7452
/*Rupesh Release on 17/05/2006*/
7453
     CURSOR proc_cur
7454
      IS
7455
         SELECT prc.proc_id, prc.proc_name, prc.proc_description, 
7456
		 		prc.run_as, prc.pkg_owner, prc.is_interface, pp.PV_ID
7457
           FROM processes prc, release_manager.package_processes pp
7458
          WHERE pp.pv_id IN (
7459
                   SELECT *
7460
                     FROM THE
7461
                             (SELECT CAST
7462
                                        (in_list_number (npvidlist) AS DEPMGR_NUMBER_TAB_t
7463
                                        )
7464
                                FROM DUAL
7465
                             ))
7466
			AND	pp.PROC_ID = prc.PROC_ID;
7467
 
7468
      proc_rec      proc_cur%ROWTYPE;
7469
   BEGIN
7470
 
7471
 
7472
 
7473
      OPEN proc_cur;
7474
 
7475
      FETCH proc_cur
7476
       INTO proc_rec;
7477
 
7478
      WHILE proc_cur%FOUND
7479
      LOOP
7480
 
7481
   	 SELECT PKG.PKG_NAME INTO PkgName
7482
	 FROM PACKAGE_VERSIONS PV, PACKAGES PKG
7483
	 WHERE PV.PV_ID = proc_rec.pv_id
7484
	 AND PKG.PKG_ID = PV.PKG_ID;	  
7485
 
7486
         INSERT INTO processes_config
7487
                     (proc_id, prod_id, os_id, pkg_health_tag, cmd_interface, pkg_owner, is_interface, proc_description
7488
                     )
7489
              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
7490
                     );
7491
 
7492
         SELECT prc.proc_name
7493
           INTO processname
7494
           FROM processes prc
7495
          WHERE prc.proc_id = proc_rec.proc_id;
7496
 
7497
	-- Log Action --
7498
	pk_Bom.Log_Os_Trail ( nosid,  
7499
						  'Added process with health tag '|| processname ||' for product '|| PkgName,
7500
						  nUserId );
7501
 
7502
         FETCH proc_cur
7503
          INTO proc_rec;
7504
      END LOOP;
7505
   END;
7506
 
7507
/*--------------------------------------------------------------------------------------------------*/
7508
 
7509
 
7510
 
7511
END pk_Operating_System;
7512
 
7513
/
7514
 
7515
/
7516
--------------------------------------------------------
7517
--  DDL for Package Body PK_PRODUCT
7518
--------------------------------------------------------
7519
 
7520
  CREATE OR REPLACE PACKAGE BODY "PK_PRODUCT" 
7521
IS
7522
/* ---------------------------------------------------------------------------
7523
    Modified By: Rupesh Solanki
7524
   Date: 20/03/2006
7525
   --------------------------------------------------------------------------- */
7526
 
7527
   /*--------------------------------------------------------------------------------------------------*/
7528
   PROCEDURE new_product (
7529
      sprodname      IN       PACKAGES.pkg_name%TYPE,
7530
      sprodversion   IN       package_versions.pkg_version%TYPE,
7531
      nuserid        IN       NUMBER,
7532
      outprodid      OUT      package_versions.pv_id%TYPE
7533
   )
7534
   IS
7535
   BEGIN
7536
/*--------------- Business Rules Here -------------------*/
7537
/*-------------------------------------------------------*/
7538
 
7539
      -- Call Release Manager to add new product
7540
      seed_package_names_versions (sprodname,
7541
                                   sprodversion,
7542
                                   nuserid,
7543
                                   outprodid
7544
                                  );
7545
   END new_product;
7546
 
7547
/*--------------------------------------------------------------------------------------------------*/
7548
   PROCEDURE add_product (
7549
      sprodidlist   IN   VARCHAR2,
7550
      nosid         IN   os_contents.os_id%TYPE,
7551
      nuserid       IN   NUMBER
7552
   )
7553
   IS
7554
      nextseqnum   NUMBER;
7555
      pkgname      VARCHAR2 (100);
7556
      pkgversion   VARCHAR2 (100);
7557
      nodename     VARCHAR2 (4000);
7558
 
7559
      CURSOR prod_cur
7560
      IS
7561
         SELECT   qry.pv_id AS prod_id, qry.pv_description, qry.comments,
7562
                  qry.is_patch
7563
             FROM (
7564
                   /* Products */
7565
                   SELECT pv.pv_id, TO_NUMBER (NULL) AS install_order,
7566
                          TO_NUMBER (NULL) AS pkg_id, pv.pv_description,
7567
                          pv.comments, pv.is_patch
7568
                     FROM package_versions pv
7569
                    WHERE pv.is_patch IS NULL
7570
                      AND pv.pv_id IN (
7571
                             SELECT *
7572
                               FROM THE
7573
                                       (SELECT CAST
7574
                                                  (in_list_number (sprodidlist) AS depmgr_number_tab_t
7575
                                                  )
7576
                                          FROM DUAL
7577
                                       ))
7578
                   UNION ALL
7579
                   /* Patches */
7580
                   SELECT pv.pv_id, pp.install_order, pv.pkg_id,
7581
                          pv.pv_description, pv.comments, pv.is_patch
7582
                     FROM package_patches pp, package_versions pv
7583
                    WHERE pp.patch_id = pv.pv_id
7584
                      AND pp.patch_id IN (
7585
                             SELECT *
7586
                               FROM THE
7587
                                       (SELECT CAST
7588
                                                  (in_list_number (sprodidlist) AS depmgr_number_tab_t
7589
                                                  )
7590
                                          FROM DUAL
7591
                                       ))) qry
7592
         ORDER BY qry.pkg_id, qry.install_order;
7593
 
7594
      prod_rec     prod_cur%ROWTYPE;
7595
   BEGIN
7596
/*--------------- Business Rules Here -------------------*/
7597
/*-------------------------------------------------------*/
7598
 
7599
      -- Get seq_num
7600
      SELECT MAX (osc.seq_num)
7601
        INTO nextseqnum
7602
        FROM os_contents osc
7603
       WHERE osc.os_id = nosid;
7604
 
7605
      -- Set NextSeqNum to 0 if no existing products are found
7606
      IF nextseqnum IS NULL
7607
      THEN
7608
         nextseqnum := 1;
7609
      ELSE
7610
         nextseqnum := nextseqnum + 1;
7611
      END IF;
7612
 
7613
      -- Insert into OS Contents
7614
      OPEN prod_cur;
7615
 
7616
      FETCH prod_cur
7617
       INTO prod_rec;
7618
 
7619
      WHILE prod_cur%FOUND
7620
      LOOP
7621
         IF (prod_rec.is_patch IS NULL)
7622
         THEN
7623
            INSERT INTO os_contents
7624
                        (os_id, seq_num, prod_id,
7625
                         product_comments
7626
                        )
7627
                 VALUES (nosid, nextseqnum, prod_rec.prod_id,
7628
                         prod_rec.pv_description
7629
                        );
7630
         ELSE
7631
            INSERT INTO os_contents
7632
                        (os_id, seq_num, prod_id,
7633
                         product_comments
7634
                        )
7635
                 VALUES (nosid, nextseqnum, prod_rec.prod_id,
7636
                         prod_rec.comments
7637
                        );
7638
         END IF;
7639
 
7640
         SELECT pkg.pkg_name
7641
           INTO pkgname
7642
           FROM PACKAGES pkg, package_versions pv
7643
          WHERE pv.pv_id = prod_rec.prod_id AND pkg.pkg_id = pv.pkg_id;
7644
 
7645
         SELECT pkg_version
7646
           INTO pkgversion
7647
           FROM package_versions pv
7648
          WHERE pv.pv_id = prod_rec.prod_id;
7649
 
7650
         SELECT nn.node_name
7651
           INTO nodename
7652
           FROM network_nodes nn, operating_systems os
7653
          WHERE nn.node_id = os.node_id AND os.os_id = nosid;
7654
 
7655
         -- Log Action --
7656
         pk_bom.log_os_trail (nosid,
7657
                                 'Added Product: '
7658
                              || pkgname
7659
                              || ' (Version: '
7660
                              || pkgversion
7661
                              || ') with Install Order: '
7662
                              || nextseqnum
7663
                              || ' on Node: '
7664
                              || nodename,
7665
                              nuserid
7666
                             );
7667
         nextseqnum := nextseqnum + 1;
7668
 
7669
         FETCH prod_cur
7670
          INTO prod_rec;
7671
      END LOOP;
7672
 
7673
      CLOSE prod_cur;
7674
   END add_product;
7675
 
7676
/*--------------------------------------------------------------------------------------------------*/
7677
   PROCEDURE hide_product (
7678
      sprodidlist   IN   VARCHAR2,
7679
      nosid         IN   os_contents.os_id%TYPE,
7680
      nuserid       IN   NUMBER
7681
   )
7682
   IS
7683
   BEGIN
7684
/*--------------- Business Rules Here -------------------*/
7685
/*-------------------------------------------------------*/
7686
      INSERT INTO hide_products
7687
                  (os_id, prod_id
7688
                  )
7689
           VALUES (nosid, sprodidlist
7690
                  );
7691
   END hide_product;
7692
 
7693
/*--------------------------------------------------------------------------------------------------*/
7694
   PROCEDURE unhide_product (
7695
      sprodidlist   IN   NUMBER,
7696
      nosid         IN   os_contents.os_id%TYPE,
7697
      nuserid       IN   NUMBER
7698
   )
7699
   IS
7700
   BEGIN
7701
/*--------------- Business Rules Here -------------------*/
7702
/*-------------------------------------------------------*/
7703
      DELETE FROM hide_products
7704
            WHERE prod_id = sprodidlist AND os_id = nosid;
7705
   END unhide_product;
7706
 
7707
/*--------------------------------------------------------------------------------------------------*/
7708
   PROCEDURE update_process (
7709
      nprocid         IN   processes_config.proc_id%TYPE,
7710
      nprodid         IN   processes_config.prod_id%TYPE,
7711
      nisinterface    IN   processes_config.is_interface%TYPE,
7712
      nosid           IN   processes_config.os_id%TYPE,
7713
      ncmdinterface   IN   processes_config.cmd_interface%TYPE,
7714
      npkgowner       IN   processes_config.pkg_owner%TYPE,
7715
      spkghealthtag   IN   processes_config.pkg_health_tag%TYPE,
7716
      nproduct        IN   processes_config.prod_id%TYPE
7717
   )
7718
   IS
7719
   BEGIN
7720
      UPDATE processes_config
7721
         SET cmd_interface = ncmdinterface,
7722
             pkg_owner = npkgowner,
7723
             is_interface = nisinterface,
7724
             pkg_health_tag = spkghealthtag,
7725
             prod_id = nproduct
7726
       WHERE prod_id = nprodid AND os_id = nosid AND proc_id = nprocid;
7727
   END update_process;
7728
 
7729
/*--------------------------------------------------------------------------------------------------*/
7730
   PROCEDURE update_product (
7731
      noldprodid             IN       os_contents.prod_id%TYPE,
7732
      snewprodidversion      IN       VARCHAR2,
7733
      nosid                  IN       os_contents.os_id%TYPE,
7734
      nseqnum                IN       os_contents.seq_num%TYPE,
7735
      scomments              IN       os_contents.product_comments%TYPE,
7736
      ssunoselectronicname   IN       PACKAGES.sunos_electronic_name%TYPE,
7737
      swinelectronicname     IN       PACKAGES.win_electronic_name%TYPE,
7738
      sisnodespec            IN       os_contents.is_node_spec%TYPE,
7739
      snotxml                IN       os_contents.not_xml%TYPE,
7740
      spatchelectronicname   IN       package_versions.patch_electronic_name%TYPE,
7741
      nuserid                IN       NUMBER,
7742
      outprodid              OUT      package_versions.pv_id%TYPE
7743
   )
7744
   IS
7745
      nnewprodid   os_contents.prod_id%TYPE;
7746
      sprodname    PACKAGES.pkg_name%TYPE;
7747
 
7748
      CURSOR curprod
7749
      IS
7750
         SELECT pv.pv_id
7751
           FROM package_versions pv
7752
          WHERE pv.pkg_id IN (SELECT pv.pkg_id
7753
                                FROM package_versions pv
7754
                               WHERE pv.pv_id = noldprodid)
7755
            AND pv.pkg_version = snewprodidversion;
7756
 
7757
      recprod      curprod%ROWTYPE;
7758
   BEGIN
7759
      /*--------------- Business Rules Here -------------------*/
7760
      IF    (noldprodid IS NULL)
7761
         OR (snewprodidversion IS NULL)
7762
         OR (nosid IS NULL)
7763
         OR (nseqnum IS NULL)
7764
      THEN
7765
         raise_application_error (-20000,
7766
                                     'Missing some parameters! nOldProdId= '
7767
                                  || noldprodid
7768
                                  || ', sNewProdIdVersion= '
7769
                                  || snewprodidversion
7770
                                  || ', nOsId= '
7771
                                  || nosid
7772
                                  || ', nSeqNum= '
7773
                                  || nseqnum
7774
                                 );
7775
      END IF;
7776
 
7777
/*-------------------------------------------------------*/
7778
 
7779
      -- Get new prod_id
7780
      OPEN curprod;
7781
 
7782
      FETCH curprod
7783
       INTO recprod;
7784
 
7785
      -- Get the Package Name
7786
      SELECT pkg.pkg_name
7787
        INTO sprodname
7788
        FROM PACKAGES pkg, package_versions pv
7789
       WHERE pkg.pkg_id = pv.pkg_id AND pv.pv_id = noldprodid;
7790
 
7791
      IF curprod%FOUND
7792
      THEN
7793
         nnewprodid := recprod.pv_id;
7794
      ELSE
7795
         -- Call Release Manager to add new product
7796
         seed_package_names_versions (sprodname,
7797
                                      snewprodidversion,
7798
                                      nuserid,
7799
                                      outprodid
7800
                                     );
7801
         nnewprodid := outprodid;
7802
      /*RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');*/
7803
      END IF;
7804
 
7805
      CLOSE curprod;
7806
 
7807
      -- Update Product Details
7808
      UPDATE os_contents
7809
         SET prod_id = nnewprodid,
7810
             product_comments = scomments,
7811
             not_xml = snotxml,
7812
             is_node_spec = sisnodespec
7813
       WHERE os_id = nosid AND prod_id = noldprodid;
7814
 
7815
      --Update Package Electronic Name Details In Packages Table
7816
      UPDATE PACKAGES
7817
         SET sunos_electronic_name = ssunoselectronicname,
7818
             win_electronic_name = swinelectronicname
7819
       WHERE pkg_id = (SELECT pkg_id
7820
                         FROM package_versions
7821
                        WHERE package_versions.pv_id = nnewprodid);
7822
 
7823
      --Update Patch Electronic Name In Package Versions Table
7824
      UPDATE package_versions
7825
         SET patch_electronic_name = spatchelectronicname
7826
       WHERE pv_id = nnewprodid;
7827
 
7828
      -- Update seq_num
7829
      pk_operating_system.shift_product_seqnum (nnewprodid, nosid, nseqnum);
7830
   END update_product;
7831
 
7832
/*--------------------------------------------------------------------------------------------------*/
7833
   PROCEDURE replace_product (
7834
      noldprodid   IN   os_contents.prod_id%TYPE,
7835
      nnewprodid   IN   os_contents.prod_id%TYPE,
7836
      nosid        IN   os_contents.os_id%TYPE,
7837
      nuserid      IN   NUMBER
7838
   )
7839
   IS
7840
      oldversion   VARCHAR2 (100);
7841
      newversion   VARCHAR2 (100);
7842
      pkgname      VARCHAR2 (100);
7843
      nodename     VARCHAR2 (4000);
7844
   BEGIN
7845
/*--------------- Business Rules Here -------------------*/
7846
/*-------------------------------------------------------*/
7847
      UPDATE os_contents
7848
         SET prod_id = nnewprodid
7849
       WHERE prod_id = noldprodid AND os_id = nosid;
7850
 
7851
      SELECT pkg_version
7852
        INTO oldversion
7853
        FROM package_versions
7854
       WHERE pv_id = noldprodid;
7855
 
7856
      SELECT pkg_version
7857
        INTO newversion
7858
        FROM package_versions
7859
       WHERE pv_id = nnewprodid;
7860
 
7861
      SELECT pkg.pkg_name
7862
        INTO pkgname
7863
        FROM PACKAGES pkg, package_versions pv
7864
       WHERE pv.pv_id = nnewprodid AND pkg.pkg_id = pv.pkg_id;
7865
 
7866
      SELECT nn.node_name
7867
        INTO nodename
7868
        FROM network_nodes nn, operating_systems os
7869
       WHERE nn.node_id = os.node_id AND os.os_id = nosid;
7870
 
7871
      -- Log Action --
7872
      pk_bom.log_os_trail (nosid,
7873
                              'Updated Product: '
7874
                           || pkgname
7875
                           || ' from Version: '
7876
                           || oldversion
7877
                           || ' to '
7878
                           || newversion
7879
                           || ' on Node: '
7880
                           || nodename,
7881
                           nuserid
7882
                          );
7883
   END replace_product;
7884
 
7885
/*--------------------------------------------------------------------------------------------------*/
7886
   PROCEDURE remove_process (
7887
      sprocname       IN   processes_config.pkg_health_tag%TYPE,
7888
      sprodidlist     IN   VARCHAR2,
7889
      nosid           IN   os_contents.os_id%TYPE,
7890
      scmdinterface   IN   processes_config.cmd_interface%TYPE,
7891
      spkgowner       IN   processes_config.pkg_owner%TYPE,
7892
      sinterface      IN   processes_config.is_interface%TYPE,
7893
      nuserid         IN   NUMBER
7894
   )
7895
   IS
7896
      processname   VARCHAR2 (4000);
7897
      nodename      VARCHAR2 (4000);
7898
   BEGIN
7899
      -- Log Action --
7900
      pk_bom.log_os_trail (nosid,
7901
                           'Deleted Process: ' || sprocname || ' From Node. ',
7902
                           nuserid
7903
                          );
7904
 
7905
/*Select the Correct Details - Begin*/
7906
      IF scmdinterface IS NOT NULL
7907
      THEN
7908
         IF sinterface IS NOT NULL
7909
         THEN
7910
            IF spkgowner IS NOT NULL
7911
            THEN
7912
               DELETE FROM processes_config
7913
                     WHERE os_id = nosid
7914
                       AND prod_id = sprodidlist
7915
                       AND pkg_health_tag = sprocname
7916
                       AND cmd_interface = scmdinterface
7917
                       AND pkg_owner = spkgowner
7918
                       AND is_interface = sinterface;
7919
            ELSE
7920
      /*sPkgOwner IS NULL, sInterface IS NOT NULL, sCmdInterface IS NOT NULL*/
7921
               DELETE FROM processes_config
7922
                     WHERE os_id = nosid
7923
                       AND prod_id = sprodidlist
7924
                       AND pkg_health_tag = sprocname
7925
                       AND cmd_interface = scmdinterface
7926
                       AND pkg_owner IS NULL
7927
                       AND is_interface = sinterface;
7928
            END IF;
7929
         ELSE               /* sInterface IS NULL, sCmdInterface IS NOT NULL*/
7930
            IF spkgowner IS NOT NULL
7931
            THEN
7932
               DELETE FROM processes_config
7933
                     WHERE os_id = nosid
7934
                       AND prod_id = sprodidlist
7935
                       AND pkg_health_tag = sprocname
7936
                       AND cmd_interface = scmdinterface
7937
                       AND pkg_owner = spkgowner
7938
                       AND is_interface IS NULL;
7939
            ELSE
7940
         /* sPkqOwner IS NULL, sInterface IS NULL, sCmdInterface IS NOT NULL*/
7941
               DELETE FROM processes_config
7942
                     WHERE os_id = nosid
7943
                       AND prod_id = sprodidlist
7944
                       AND pkg_health_tag = sprocname
7945
                       AND cmd_interface = scmdinterface
7946
                       AND pkg_owner IS NULL
7947
                       AND is_interface IS NULL;
7948
            END IF;
7949
         END IF;
7950
      ELSE                                          /* sCmdInterface IS NULL*/
7951
         IF sinterface IS NOT NULL
7952
         THEN
7953
            IF spkgowner IS NOT NULL
7954
            THEN
7955
               DELETE FROM processes_config
7956
                     WHERE os_id = nosid
7957
                       AND prod_id = sprodidlist
7958
                       AND pkg_health_tag = sprocname
7959
                       AND cmd_interface IS NULL
7960
                       AND pkg_owner = spkgowner
7961
                       AND is_interface = sinterface;
7962
            ELSE
7963
        /* sPkgOwner is NULL, sInterface IS NOT NULL, sCmdInterface IS NULL */
7964
               DELETE FROM processes_config
7965
                     WHERE os_id = nosid
7966
                       AND prod_id = sprodidlist
7967
                       AND pkg_health_tag = sprocname
7968
                       AND cmd_interface IS NULL
7969
                       AND pkg_owner IS NULL
7970
                       AND is_interface = sinterface;
7971
            END IF;
7972
         ELSE                   /* sInterface IS NULL, sCmdInterface IS NULL*/
7973
            IF spkgowner IS NOT NULL
7974
            THEN
7975
               DELETE FROM processes_config
7976
                     WHERE os_id = nosid
7977
                       AND prod_id = sprodidlist
7978
                       AND pkg_health_tag = sprocname
7979
                       AND cmd_interface IS NULL
7980
                       AND pkg_owner = spkgowner
7981
                       AND is_interface IS NULL;
7982
            ELSE
7983
             /* sPkgOwner IS NULL, sInterface IS NULL, sCmdInterface IS NULL*/
7984
               DELETE FROM processes_config
7985
                     WHERE os_id = nosid
7986
                       AND prod_id = sprodidlist
7987
                       AND pkg_health_tag = sprocname
7988
                       AND cmd_interface IS NULL
7989
                       AND pkg_owner IS NULL
7990
                       AND is_interface IS NULL;
7991
            END IF;
7992
         END IF;
7993
      END IF;
7994
/*Select the Correct Details - End*/
7995
   END remove_process;
7996
 
7997
/*--------------------------------------------------------------------------------------------------*/
7998
   PROCEDURE remove_products (
7999
      sprodidlist   IN   VARCHAR2,
8000
      nosid         IN   os_contents.os_id%TYPE,
8001
      nuserid       IN   NUMBER
8002
   )
8003
   IS
8004
      pkgname        VARCHAR2 (100);
8005
      pkgversion     VARCHAR2 (100);
8006
      nextseqnum     NUMBER              := 1;
8007
      nidcollector   depmgr_number_tab_t := depmgr_number_tab_t ();
8008
      nodename       VARCHAR2 (4000);
8009
 
8010
      CURSOR prod_cur
8011
      IS
8012
         SELECT   osc.prod_id, osc.seq_num
8013
             FROM os_contents osc
8014
            WHERE osc.os_id = nosid
8015
         ORDER BY osc.seq_num;
8016
 
8017
      prod_rec       prod_cur%ROWTYPE;
8018
   BEGIN
8019
      /*--------------- Business Rules Here -------------------*/
8020
      IF sprodidlist IS NULL
8021
      THEN
8022
         raise_application_error (-20000,
8023
                                  'Please select one or more Products.'
8024
                                 );
8025
      END IF;
8026
 
8027
/*-------------------------------------------------------*/
8028
      SELECT nn.node_name
8029
        INTO nodename
8030
        FROM network_nodes nn, operating_systems os
8031
       WHERE nn.node_id = os.node_id AND os.os_id = nosid;
8032
 
8033
      -- Remove Products
8034
      DELETE FROM os_contents
8035
            WHERE os_id = nosid
8036
              AND prod_id IN (
8037
                     SELECT *
8038
                       FROM THE
8039
                               (SELECT CAST
8040
                                          (in_list_number (sprodidlist) AS depmgr_number_tab_t
8041
                                          )
8042
                                  FROM DUAL
8043
                               ));
8044
 
8045
      -- Remove Processes
8046
      DELETE FROM processes_config
8047
            WHERE os_id = nosid
8048
              AND pkg_id IN (
8049
                     SELECT pkg_id
8050
                       FROM package_versions
8051
                      WHERE pv_id IN (
8052
                               SELECT *
8053
                                 FROM THE
8054
                                         (SELECT CAST
8055
                                                    (in_list_number
8056
                                                                  (sprodidlist) AS depmgr_number_tab_t
8057
                                                    )
8058
                                            FROM DUAL
8059
                                         )));
8060
 
8061
      -- Update Seq Numbers
8062
      OPEN prod_cur;
8063
 
8064
      FETCH prod_cur
8065
       INTO prod_rec;
8066
 
8067
      WHILE prod_cur%FOUND
8068
      LOOP
8069
         UPDATE os_contents
8070
            SET seq_num = nextseqnum
8071
          WHERE os_id = nosid AND prod_id = prod_rec.prod_id;
8072
 
8073
         nextseqnum := nextseqnum + 1;
8074
 
8075
         FETCH prod_cur
8076
          INTO prod_rec;
8077
      END LOOP;
8078
 
8079
      CLOSE prod_cur;
8080
 
8081
      nidcollector := in_list_number (sprodidlist);
8082
 
8083
      FOR i IN 1 .. nidcollector.COUNT
8084
      LOOP
8085
         SELECT pkg.pkg_name
8086
           INTO pkgname
8087
           FROM PACKAGES pkg, package_versions pv
8088
          WHERE pv.pv_id = nidcollector (i) AND pkg.pkg_id = pv.pkg_id;
8089
 
8090
         SELECT pkg_version
8091
           INTO pkgversion
8092
           FROM package_versions pv
8093
          WHERE pv.pv_id = nidcollector (i);
8094
 
8095
         -- Log Action --
8096
         pk_bom.log_os_trail (nosid,
8097
                                 'Deleted Product: '
8098
                              || pkgname
8099
                              || ' (Version: '
8100
                              || pkgversion
8101
                              || ') from Node: '
8102
                              || nodename,
8103
                              nuserid
8104
                             );
8105
      END LOOP;
8106
   END remove_products;
8107
 
8108
/*--------------------------------------------------------------------------------------------------*/
8109
   PROCEDURE add_products_nodespec (
8110
      sprodidlist   IN   VARCHAR2,
8111
      nosid         IN   os_contents.os_id%TYPE,
8112
      nuserid       IN   NUMBER
8113
   )
8114
   IS
8115
      nextseqnum   NUMBER             := 1;
8116
 
8117
      CURSOR prod_cur
8118
      IS
8119
         SELECT   osc.prod_id, osc.seq_num
8120
             FROM os_contents osc
8121
            WHERE osc.os_id = nosid
8122
         ORDER BY osc.seq_num;
8123
 
8124
      prod_rec     prod_cur%ROWTYPE;
8125
   BEGIN
8126
      /*--------------- Business Rules Here -------------------*/
8127
      IF sprodidlist IS NULL
8128
      THEN
8129
         raise_application_error (-20000,
8130
                                  'Please select one or more Products.'
8131
                                 );
8132
      END IF;
8133
 
8134
/*-------------------------------------------------------*/
8135
      UPDATE os_contents
8136
         SET is_node_spec = ''
8137
       WHERE os_id = nosid;
8138
 
8139
      -- Set Nodespec On
8140
      UPDATE os_contents
8141
         SET is_node_spec = 'on'
8142
       WHERE os_id = nosid
8143
         AND prod_id IN (
8144
                SELECT *
8145
                  FROM THE
8146
                          (SELECT CAST
8147
                                     (in_list_number (sprodidlist) AS depmgr_number_tab_t
8148
                                     )
8149
                             FROM DUAL
8150
                          ));
8151
   END add_products_nodespec;
8152
 
8153
/*--------------------------------------------------------------------------------------------------*/
8154
   PROCEDURE accept_reject (
8155
      nprodid     IN   product_details.prod_id%TYPE,
8156
      nbomid      IN   boms.bom_id%TYPE,
8157
      scomments   IN   rejection_trail.comments%TYPE DEFAULT NULL,
8158
      nuserid     IN   rejection_trail.user_id%TYPE,
8159
      nosid       IN   NUMBER
8160
   )
8161
   IS
8162
      isrejected   product_details.is_rejected%TYPE;
8163
      pkgname      VARCHAR2 (100);
8164
      pkgversion   VARCHAR2 (100);
8165
      nodename     VARCHAR2 (4000);
8166
 
8167
      CURSOR curprod
8168
      IS
8169
         SELECT pd.*
8170
           FROM product_details pd
8171
          WHERE pd.prod_id = nprodid;
8172
 
8173
      recprod      curprod%ROWTYPE;
8174
   BEGIN
8175
      /*--------------- Business Rules Here -------------------*/
8176
      IF (nprodid IS NULL)
8177
      THEN
8178
         raise_application_error (-20000,
8179
                                  'Please select at least one product.'
8180
                                 );
8181
      END IF;
8182
 
8183
/*-------------------------------------------------------*/
8184
 
8185
      -- Set new Accept-Reject state
8186
      isrejected := 'Y';
8187
 
8188
      SELECT nn.node_name
8189
        INTO nodename
8190
        FROM network_nodes nn, operating_systems os
8191
       WHERE nn.node_id = os.node_id AND os.os_id = nosid;
8192
 
8193
      OPEN curprod;
8194
 
8195
      FETCH curprod
8196
       INTO recprod;
8197
 
8198
      IF curprod%FOUND
8199
      THEN
8200
         /* Product Details found */
8201
         SELECT pkg.pkg_name
8202
           INTO pkgname
8203
           FROM PACKAGES pkg, package_versions pv
8204
          WHERE pv.pv_id = nprodid AND pkg.pkg_id = pv.pkg_id;
8205
 
8206
         SELECT pkg_version
8207
           INTO pkgversion
8208
           FROM package_versions pv
8209
          WHERE pv.pv_id = nprodid;
8210
 
8211
         -- Set new Accept-Reject state
8212
         IF recprod.is_rejected = 'Y'
8213
         THEN
8214
            isrejected := 'N';
8215
            -- Log Action --
8216
            pk_bom.log_os_trail (nosid,
8217
                                    'Accepted Product: '
8218
                                 || pkgname
8219
                                 || ' '
8220
                                 || pkgversion
8221
                                 || ' on Node: '
8222
                                 || nodename,
8223
                                 nuserid
8224
                                );
8225
         ELSE
8226
            isrejected := 'Y';
8227
            -- Log Action --
8228
            pk_bom.log_os_trail (nosid,
8229
                                    'Rejected Product: '
8230
                                 || pkgname
8231
                                 || ' '
8232
                                 || pkgversion
8233
                                 || ' on Node: '
8234
                                 || nodename,
8235
                                 nuserid
8236
                                );
8237
         END IF;
8238
 
8239
         -- Toggle Accept-Reject State
8240
         UPDATE product_details pd
8241
            SET pd.is_rejected = isrejected
8242
          WHERE pd.prod_id = nprodid;
8243
      ELSE
8244
         /* Product Details NOT found */
8245
 
8246
         -- Toggle Accept-Reject State
8247
         INSERT INTO product_details
8248
                     (prod_id, is_rejected
8249
                     )
8250
              VALUES (nprodid, isrejected
8251
                     );
8252
      END IF;
8253
 
8254
      CLOSE curprod;
8255
 
8256
      -- Reflect changes to the BOM level
8257
 
8258
      /* Log Rejection Trail */
8259
      pk_utils.log_rejection_trail
8260
                                 (get_system_value ('enumENTITY_TYPE_PRODUCT'),
8261
                                  nprodid,
8262
                                  isrejected,
8263
                                  nuserid,
8264
                                  scomments
8265
                                 );
8266
   END accept_reject;
8267
 
8268
/*--------------------------------------------------------------------------------------------------*/
8269
   PROCEDURE accept_reject_list (
8270
      nprodidlist   IN   VARCHAR2,
8271
      nbomid        IN   boms.bom_id%TYPE,
8272
      scomments     IN   rejection_trail.comments%TYPE DEFAULT NULL,
8273
      nuserid       IN   rejection_trail.user_id%TYPE,
8274
      nosid         IN   NUMBER
8275
   )
8276
   IS
8277
      nidcollector   depmgr_number_tab_t := depmgr_number_tab_t ();
8278
   BEGIN
8279
      /*--------------- Business Rules Here -------------------*/
8280
      IF (nprodidlist IS NULL)
8281
      THEN
8282
         raise_application_error (-20000,
8283
                                  'Please select at least one product.'
8284
                                 );
8285
      END IF;
8286
 
8287
/*-------------------------------------------------------*/
8288
      nidcollector := in_list_number (nprodidlist);
8289
 
8290
      FOR i IN 1 .. nidcollector.COUNT
8291
      LOOP
8292
         accept_reject (nidcollector (i), nbomid, scomments, nuserid, nosid);
8293
      END LOOP;
8294
   END accept_reject_list;
8295
 
8296
/*--------------------------------------------------------------------------------------------------*/
8297
   PROCEDURE accept_reject_comments (
8298
      nprodid      IN   product_details.prod_id%TYPE,
8299
      nrejectseq   IN   rejection_trail.reject_seq%TYPE,
8300
      scomments    IN   rejection_trail.comments%TYPE DEFAULT NULL,
8301
      nuserid      IN   rejection_trail.user_id%TYPE
8302
   )
8303
   IS
8304
      isrejected   rejection_trail.is_rejected%TYPE;
8305
   BEGIN
8306
      /*--------------- Business Rules Here -------------------*/
8307
      IF (nprodid IS NULL)
8308
      THEN
8309
         raise_application_error (-20000,
8310
                                     'Missing some parameters! nProdId= '
8311
                                  || nprodid
8312
                                 );
8313
      END IF;
8314
 
8315
/*-------------------------------------------------------*/
8316
      IF nrejectseq IS NULL
8317
      THEN
8318
         /* CREATE New Note */
8319
 
8320
         -- Get last IsRejected state
8321
         SELECT   rt.is_rejected
8322
             INTO isrejected
8323
             FROM rejection_trail rt
8324
            WHERE rt.entity_id = nprodid
8325
              AND rt.enum_entity_type =
8326
                                  get_system_value ('enumENTITY_TYPE_PRODUCT')
8327
              AND ROWNUM = 1
8328
         ORDER BY rt.reject_seq;
8329
 
8330
         /* Log Rejection Trail */
8331
         pk_utils.log_rejection_trail
8332
                                 (get_system_value ('enumENTITY_TYPE_PRODUCT'),
8333
                                  nprodid,
8334
                                  isrejected,
8335
                                  nuserid,
8336
                                  scomments
8337
                                 );
8338
      ELSE
8339
         /* EDIT Note */
8340
         UPDATE rejection_trail rt
8341
            SET rt.comments = scomments,
8342
                rt.user_id = nuserid,
8343
                rt.date_time_stamp = get_datetime ()
8344
          WHERE rt.enum_entity_type =
8345
                                  get_system_value ('enumENTITY_TYPE_PRODUCT')
8346
            AND rt.entity_id = nprodid
8347
            AND rt.reject_seq = nrejectseq;
8348
      END IF;
8349
   END accept_reject_comments;
8350
 
8351
/*--------------------------------------------------------------------------------------------------*/
8352
   PROCEDURE sort_products (
8353
      sprodidorder   IN   VARCHAR2,
8354
      nosid          IN   os_contents.os_id%TYPE,
8355
      nuserid        IN   NUMBER
8356
   )
8357
   IS
8358
      nidcollector   depmgr_number_tab_t := depmgr_number_tab_t ();
8359
      seqnum         NUMBER;
8360
   BEGIN
8361
      /*--------------- Business Rules Here -------------------*/
8362
      -- Check for parameters
8363
      IF (sprodidorder IS NULL) OR (nosid IS NULL)
8364
      THEN
8365
         raise_application_error (-20000,
8366
                                     'Missing some parameters! nOsId='
8367
                                  || nosid
8368
                                  || ' sProdIdOrder='
8369
                                  || sprodidorder
8370
                                 );
8371
      END IF;
8372
 
8373
/*-------------------------------------------------------*/
8374
      nidcollector := in_list_number (sprodidorder);
8375
      -- Set start sequence number
8376
      seqnum := 1;
8377
 
8378
      FOR i IN 1 .. nidcollector.COUNT
8379
      LOOP
8380
         -- Update new sequence number
8381
         UPDATE os_contents osc
8382
            SET osc.seq_num = seqnum
8383
          WHERE osc.os_id = nosid AND osc.prod_id = nidcollector (i);
8384
 
8385
         seqnum := seqnum + 1;
8386
      END LOOP;
8387
   END sort_products;
8388
 
8389
/*--------------------------------------------------------------------------------------------------*/
8390
   PROCEDURE remove_obsolete_patches (
8391
      nosid     IN   os_contents.os_id%TYPE,
8392
      nuserid   IN   NUMBER
8393
   )
8394
   IS
8395
      nextseqnum         NUMBER                     := 1;
8396
 
8397
      CURSOR prod_cur
8398
      IS
8399
         SELECT   osc.prod_id, osc.seq_num
8400
             FROM os_contents osc
8401
            WHERE osc.os_id = nosid
8402
         ORDER BY osc.seq_num;
8403
 
8404
      prod_rec           prod_cur%ROWTYPE;
8405
 
8406
      CURSOR log_obsolete_cur
8407
      IS
8408
         SELECT osc.prod_id, pv.pkg_version
8409
           FROM os_contents osc, package_versions pv
8410
          WHERE pv.pv_id = osc.prod_id
8411
            AND pv.is_obsolete = 'Y'
8412
            AND osc.os_id = nosid;
8413
 
8414
      log_obsolete_rec   log_obsolete_cur%ROWTYPE;
8415
   BEGIN
8416
      -- Log Obsolete Patches
8417
      OPEN log_obsolete_cur;
8418
 
8419
      FETCH log_obsolete_cur
8420
       INTO log_obsolete_rec;
8421
 
8422
      WHILE log_obsolete_cur%FOUND
8423
      LOOP
8424
         pk_bom.log_os_trail (nosid,
8425
                                 'Removed Obsolete Patch: '
8426
                              || log_obsolete_rec.pkg_version,
8427
                              nuserid
8428
                             );
8429
 
8430
         FETCH log_obsolete_cur
8431
          INTO log_obsolete_rec;
8432
      END LOOP;
8433
 
8434
      CLOSE log_obsolete_cur;
8435
 
8436
      -- Delete Obsolete Patches in the OS.
8437
      DELETE FROM os_contents
8438
            WHERE os_id = nosid
8439
              AND prod_id IN (
8440
                     SELECT osc.prod_id
8441
                       FROM os_contents osc, package_versions pv
8442
                      WHERE pv.pv_id = osc.prod_id
8443
                        AND pv.is_obsolete = 'Y'
8444
                        AND osc.os_id = nosid);
8445
 
8446
      -- Update Seq Numbers
8447
      OPEN prod_cur;
8448
 
8449
      FETCH prod_cur
8450
       INTO prod_rec;
8451
 
8452
      WHILE prod_cur%FOUND
8453
      LOOP
8454
         UPDATE os_contents
8455
            SET seq_num = nextseqnum
8456
          WHERE os_id = nosid AND prod_id = prod_rec.prod_id;
8457
 
8458
         nextseqnum := nextseqnum + 1;
8459
 
8460
         FETCH prod_cur
8461
          INTO prod_rec;
8462
      END LOOP;
8463
 
8464
      CLOSE prod_cur;
8465
   END remove_obsolete_patches;
8466
 
8467
/*--------------------------------------------------------------------------------------------------*/
8468
   FUNCTION get_os_id (pvid IN NUMBER)
8469
      RETURN NUMBER
8470
   IS
8471
      returnvalue   NUMBER;
8472
   BEGIN
8473
      SELECT osc.os_id
8474
        INTO returnvalue
8475
        FROM os_contents osc
8476
       WHERE osc.prod_id = pvid;
8477
 
8478
      RETURN returnvalue;
8479
   END;
8480
 
8481
/*--------------------------------------------------------------------------------------------------*/
8482
   FUNCTION get_node_id (osid IN NUMBER)
8483
      RETURN NUMBER
8484
   IS
8485
      returnvalue   NUMBER;
8486
   BEGIN
8487
      SELECT os.node_id
8488
        INTO returnvalue
8489
        FROM operating_systems os
8490
       WHERE os.os_id = osid;
8491
 
8492
      RETURN returnvalue;
8493
   END;
8494
 
8495
/*-------------------------------------------------------------------------------------------------------*/
8496
   PROCEDURE add_product_note (
8497
      nprodid   IN   NUMBER,
8498
      snotes    IN   VARCHAR2,
8499
      nuserid   IN   NUMBER
8500
   )
8501
   IS
8502
   BEGIN
8503
      INSERT INTO product_notes
8504
           VALUES (nprodid, snotes);
8505
 
8506
      /* log Product_Trail*/
8507
      pk_product.log_product_trail (nprodid, snotes, nuserid);
8508
   END add_product_note;
8509
 
8510
/*-------------------------------------------------------------------------------------------------------*/
8511
   PROCEDURE edit_product_note (
8512
      nprodid   IN   NUMBER,
8513
      snotes    IN   VARCHAR2,
8514
      nuserid   IN   NUMBER
8515
   )
8516
   IS
8517
   BEGIN
8518
      UPDATE product_notes
8519
         SET notes = snotes
8520
       WHERE prod_id = nprodid;
8521
 
8522
      /* log Product_Trail*/
8523
      pk_product.log_product_trail (nprodid, snotes, nuserid);
8524
   END edit_product_note;
8525
 
8526
/*--------------------------------------------------------------------------------------------------*/
8527
   PROCEDURE log_product_trail (
8528
      nprodid   IN   product_trail.prod_id%TYPE,
8529
      saction   IN   product_trail.trail_action%TYPE,
8530
      nuserid   IN   product_trail.user_id%TYPE
8531
   )
8532
   IS
8533
   BEGIN
8534
      /*--------------- Business Rules Here -------------------*/
8535
      IF (nprodid IS NULL) OR (saction IS NULL) OR (nuserid IS NULL)
8536
      THEN
8537
         raise_application_error (-20000,
8538
                                     'Missing some parameters! nProdId= '
8539
                                  || nprodid
8540
                                  || ', sAction='
8541
                                  || saction
8542
                                  || ', nUserId='
8543
                                  || nuserid
8544
                                 );
8545
      END IF;
8546
 
8547
/*-------------------------------------------------------*/
8548
      INSERT INTO product_trail
8549
                  (prod_id, trail_action, user_id, date_time_stamp
8550
                  )
8551
           VALUES (nprodid, saction, nuserid, get_datetime ()
8552
                  );
8553
   END log_product_trail;
8554
/*--------------------------------------------------------------------------------------------------*/
8555
END pk_product;
8556
 
8557
/
8558
 
8559
/
8560
--------------------------------------------------------
8561
--  DDL for Package Body PK_PRODUCTION
8562
--------------------------------------------------------
8563
 
8564
  CREATE OR REPLACE PACKAGE BODY "PK_PRODUCTION" 
8565
IS
8566
/* ---------------------------------------------------------------------------
8567
    Version: 1.0.0
8568
   --------------------------------------------------------------------------- */
8569
 
8570
 
8571
/*--------------------------------------------------------------------------------------------------*/
8572
PROCEDURE Release_Authorisation_Tester ( nPvId IN NUMBER,
8573
  					  				   	 nBomId IN NUMBER,
8574
										 nTesterId IN NUMBER,
8575
										 sTesterComments IN VARCHAR2 ) IS
8576
 
8577
 
8578
BEGIN
8579
	/*--------------- Business Rules Here -------------------*/
8580
	/*-------------------------------------------------------*/
8581
 
8582
 
8583
 
8584
	-- Insert Into Release Authorisation Table --
8585
	INSERT INTO RELEASE_AUTHORISATION ( PV_ID, BOM_ID, TESTER_ID, TESTER_COMMENTS, TESTER_DATESTAMP )
8586
	VALUES ( nPvId, nBomId, nTesterId, sTesterComments, GET_DATETIME() );
8587
 
8588
 
8589
 
8590
END	Release_Authorisation_Tester;
8591
 
8592
/*--------------------------------------------------------------------------------------------------*/
8593
 
8594
/*--------------------------------------------------------------------------------------------------*/
8595
PROCEDURE Release_Authorisation_Manager ( nPvId IN NUMBER,
8596
  					  				   	  nBomId IN NUMBER,
8597
										  nManagerId IN NUMBER,
8598
										  sManagerComments IN VARCHAR2 ) IS
8599
 
8600
 
8601
BEGIN
8602
	/*--------------- Business Rules Here -------------------*/
8603
	/*-------------------------------------------------------*/
8604
 
8605
 
8606
 
8607
	-- Insert Into Release Authorisation Table --
8608
	UPDATE RELEASE_AUTHORISATION 
8609
	SET MANAGER_ID = nManagerId,
8610
		MANAGER_COMMENTS = sManagerComments,
8611
		MANAGER_DATESTAMP = GET_DATETIME(),
8612
		IS_OFFICIAL = 'Y'
8613
	WHERE PV_ID = nPvId
8614
	AND BOM_ID = nBomId;	
8615
 
8616
 
8617
 
8618
END	Release_Authorisation_Manager;
8619
 
8620
/*--------------------------------------------------------------------------------------------------*/
8621
 
8622
/*--------------------------------------------------------------------------------------------------*/
8623
PROCEDURE Log_Pkg_Trail ( nPkgId IN OS_TRAIL.OS_ID%TYPE,
8624
						  sAction IN OS_TRAIL.TRAIL_ACTION%TYPE,
8625
						  nUserId IN OS_TRAIL.USER_ID%TYPE  ) IS
8626
 
8627
 
8628
BEGIN
8629
	/*--------------- Business Rules Here -------------------*/
8630
	IF (nPkgId IS NULL) OR (sAction IS NULL) OR (nUserId IS NULL)
8631
	THEN
8632
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId= '|| nPkgId ||', sAction='|| sAction ||', nUserId='|| nUserId );
8633
	END IF;
8634
	/*-------------------------------------------------------*/
8635
 
8636
	INSERT INTO PACKAGE_TRAIL ( PKG_ID, TRAIL_ACTION, USER_ID, DATE_TIME_STAMP )
8637
	VALUES ( nPkgId, sAction, nUserId, GET_DATETIME() );	
8638
 
8639
END	Log_Pkg_Trail;
8640
/*--------------------------------------------------------------------------------------------------*/
8641
PROCEDURE Reject_Product ( nPvId IN NUMBER,
8642
						   nTesterId IN NUMBER,
8643
						   sTesterComments IN VARCHAR2 ) IS
8644
 
8645
IsRejected PRODUCT_DETAILS.IS_REJECTED%TYPE;		
8646
 
8647
CURSOR curProd IS
8648
	SELECT pd.*
8649
	  FROM PRODUCT_DETAILS pd
8650
	 WHERE pd.PROD_ID = nPvId;
8651
recProd curProd%ROWTYPE;				   
8652
 
8653
BEGIN
8654
 
8655
	-- Set new Accept-Reject state
8656
	IsRejected := 'Y';
8657
 
8658
 
8659
	OPEN curProd;
8660
	FETCH curProd INTO recProd;	
8661
 
8662
	IF curProd%FOUND THEN
8663
		/* Product Details found */	
8664
 
8665
		-- Toggle Accept-Reject State 
8666
		UPDATE PRODUCT_DETAILS pd SET
8667
		pd.IS_REJECTED = IsRejected
8668
		WHERE pd.PROD_ID = nPvId;
8669
 
8670
	ELSE
8671
		/* Product Details NOT found */
8672
 
8673
		-- Toggle Accept-Reject State	
8674
		INSERT INTO PRODUCT_DETAILS ( PROD_ID, IS_REJECTED )
8675
		VALUES ( nPvId, IsRejected );	
8676
 
8677
 
8678
 
8679
	END IF;	
8680
	CLOSE curProd;	
8681
 
8682
	/* Log Rejection Trail */
8683
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT'), nPvId, IsRejected, nTesterId, sTesterComments );
8684
 
8685
 
8686
 
8687
 
8688
 
8689
END Reject_Product;
8690
/*--------------------------------------------------------------------------------------------------*/
8691
PROCEDURE Add_Production_Bom ( nBomId IN NUMBER, 
8692
  							   nBranchId IN NUMBER, 
8693
							   nStateId IN NUMBER, 
8694
							   nProjId IN NUMBER ) IS
8695
 
8696
BEGIN
8697
 
8698
	 --Update the boms table with the branch_id
8699
	 UPDATE BOMS
8700
	 SET RTAG_ID_FK = nBranchId
8701
	 WHERE BOM_ID = nBomId;
8702
 
8703
	 --Add the production bom into the production_bom table
8704
	 INSERT INTO PRODUCTION_BOM (PROJ_ID, BOM_ID, STATE_ID)
8705
	 VALUES(nProjId, nBomId, nStateId);
8706
 
8707
 
8708
 
8709
 
8710
END Add_Production_Bom;
8711
/*--------------------------------------------------------------------------------------------------*/								 
8712
END pk_production;
8713
 
8714
/
8715
 
8716
/
8717
--------------------------------------------------------
8718
--  DDL for Package Body PK_PRODUCT_TEST
8719
--------------------------------------------------------
8720
 
8721
  CREATE OR REPLACE PACKAGE BODY "PK_PRODUCT_TEST" 
8722
IS
8723
/* ---------------------------------------------------------------------------
8724
    Modified By: Rupesh Solanki
8725
	Date: 20/03/2006
8726
   --------------------------------------------------------------------------- */
8727
 
8728
/*--------------------------------------------------------------------------------------------------*/
8729
PROCEDURE New_Product ( sProdName IN PACKAGES.PKG_NAME%TYPE,
8730
						sProdVersion IN PACKAGE_VERSIONS.PKG_VERSION%TYPE,
8731
						nUserId IN NUMBER,
8732
						outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE ) IS
8733
 
8734
 
8735
BEGIN
8736
	/*--------------- Business Rules Here -------------------*/
8737
	/*-------------------------------------------------------*/
8738
 
8739
	-- Call Release Manager to add new product
8740
	Seed_Package_Names_Versions ( sProdName, sProdVersion, nUserId, outProdId );
8741
 
8742
 
8743
END	New_Product;
8744
/*--------------------------------------------------------------------------------------------------*/
8745
PROCEDURE Add_Product ( sProdIdList IN VARCHAR2,
8746
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
8747
						nUserId IN NUMBER ) IS
8748
 
8749
NextSeqNum NUMBER;
8750
PkgName VARCHAR2(100);
8751
PkgVersion VARCHAR2(100);
8752
NodeName VARCHAR2(4000);
8753
 
8754
CURSOR prod_cur IS
8755
	SELECT qry.PV_ID AS PROD_ID,
8756
		   qry.PV_DESCRIPTION,
8757
           qry.COMMENTS,
8758
           qry.IS_PATCH
8759
	  FROM ( 
8760
      		/* Products */
8761
			SELECT pv.PV_ID, TO_NUMBER(NULL) AS INSTALL_ORDER, TO_NUMBER(NULL) AS PKG_ID, pv.PV_DESCRIPTION, pv.COMMENTS, pv.IS_PATCH
8762
			  FROM PACKAGE_VERSIONS pv
8763
			 WHERE pv.IS_PATCH IS NULL
8764
			   AND pv.PV_ID IN (
8765
			 	   			   	SELECT * 
8766
								  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
8767
								)
8768
 
8769
			UNION ALL
8770
 
8771
            /* Patches */  
8772
			SELECT pv.PV_ID, pp.INSTALL_ORDER, pv.PKG_ID, pv.PV_DESCRIPTION, pv.COMMENTS, pv.IS_PATCH
8773
			  FROM PACKAGE_PATCHES pp,
8774
			  	   PACKAGE_VERSIONS pv
8775
			 WHERE pp.PATCH_ID = pv.PV_ID
8776
			   AND pp.PATCH_ID IN (
8777
			 	   			   	SELECT * 
8778
								  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
8779
								)  		
8780
	        ) qry  
8781
	 ORDER BY qry.PKG_ID, qry.INSTALL_ORDER;
8782
prod_rec prod_cur%ROWTYPE;
8783
 
8784
 
8785
BEGIN
8786
	/*--------------- Business Rules Here -------------------*/
8787
	/*-------------------------------------------------------*/
8788
 
8789
	-- Get seq_num
8790
	SELECT MAX( osc.SEQ_NUM ) INTO NextSeqNum
8791
	  FROM OS_CONTENTS osc
8792
	 WHERE osc.OS_ID = nOsId;
8793
 
8794
	-- Set NextSeqNum to 0 if no existing products are found
8795
	IF NextSeqNum IS NULL THEN
8796
	   NextSeqNum := 1;
8797
	ELSE
8798
	   NextSeqNum := NextSeqNum + 1;
8799
	END IF;
8800
 
8801
 
8802
	-- Insert into OS Contents
8803
	OPEN prod_cur;
8804
	FETCH prod_cur INTO prod_rec;
8805
 
8806
	WHILE prod_cur%FOUND
8807
	LOOP
8808
 
8809
        IF (prod_rec.IS_PATCH IS NULL) THEN
8810
            INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS )
8811
       		VALUES (
8812
       				nOsId, 
8813
       				NextSeqNum, 
8814
       				prod_rec.PROD_ID,
8815
       				prod_rec.PV_DESCRIPTION
8816
       				);
8817
        ELSE
8818
            INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS )
8819
    		VALUES (
8820
    				nOsId, 
8821
    				NextSeqNum, 
8822
    				prod_rec.PROD_ID,
8823
    				prod_rec.COMMENTS
8824
    				);
8825
        END IF;
8826
 
8827
 
8828
		SELECT PKG.PKG_NAME INTO PkgName
8829
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
8830
		WHERE PV.PV_ID = prod_rec.PROD_ID
8831
		AND PKG.PKG_ID = PV.PKG_ID;
8832
 
8833
		SELECT PKG_VERSION INTO PkgVersion
8834
		FROM PACKAGE_VERSIONS PV
8835
		WHERE PV.PV_ID = prod_rec.PROD_ID;
8836
 
8837
		SELECT NN.NODE_NAME INTO NodeName
8838
		FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
8839
		WHERE NN.NODE_ID = OS.NODE_ID
8840
		AND OS.OS_ID = nOsId;
8841
 
8842
 
8843
		-- Log Action --
8844
		pk_Bom.Log_Os_Trail ( nOsId,  
8845
							  'Added Product: '||PkgName||' (Version: '||PkgVersion||') with Install Order: '||NextSeqNum||' on Node: '||NodeName,
8846
							  nUserId );
8847
 
8848
 
8849
		NextSeqNum := NextSeqNum + 1;
8850
		FETCH prod_cur INTO prod_rec;
8851
	END LOOP;
8852
 
8853
 
8854
	CLOSE prod_cur;
8855
 
8856
 
8857
END	Add_Product;
8858
/*--------------------------------------------------------------------------------------------------*/
8859
PROCEDURE Hide_Product ( sProdIdList IN VARCHAR2,
8860
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
8861
						nUserId IN NUMBER ) IS
8862
 
8863
BEGIN
8864
	/*--------------- Business Rules Here -------------------*/
8865
	/*-------------------------------------------------------*/
8866
 
8867
 
8868
            INSERT INTO HIDE_PRODUCTS ( OS_ID, PROD_ID )
8869
       		VALUES (
8870
       				nOsId, 
8871
       				sProdIdList
8872
       				);
8873
 
8874
END	Hide_Product;
8875
/*--------------------------------------------------------------------------------------------------*/
8876
PROCEDURE Unhide_Product ( sProdIdList IN NUMBER,
8877
		  			  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
8878
						nUserId IN NUMBER ) IS
8879
 
8880
BEGIN
8881
	/*--------------- Business Rules Here -------------------*/
8882
	/*-------------------------------------------------------*/
8883
 
8884
 
8885
            DELETE FROM HIDE_PRODUCTS WHERE 
8886
			PROD_ID = sProdIdList
8887
			AND OS_ID = nOsId;
8888
 
8889
END	Unhide_Product;
8890
/*--------------------------------------------------------------------------------------------------*/
8891
PROCEDURE Update_Process (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
8892
		  				  nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
8893
		  				  nIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE, 		  
8894
		  				  nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,		  
8895
						  nCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
8896
						  nPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
8897
						  sPkgHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
8898
						  nProduct IN PROCESSES_CONFIG.PROD_ID%TYPE) IS
8899
 
8900
BEGIN
8901
 
8902
	 UPDATE PROCESSES_CONFIG SET
8903
	 	CMD_INTERFACE = nCmdInterface,
8904
		PKG_OWNER = nPkgOwner,
8905
		IS_INTERFACE = nIsInterface,
8906
		PKG_HEALTH_TAG = sPkgHealthTag,
8907
		PROD_ID = nProduct 
8908
 
8909
 
8910
	 WHERE PROD_ID = nProdId
8911
	 AND OS_ID = nOsId
8912
	 AND PROC_ID = nProcId	;						  
8913
 
8914
 
8915
END Update_Process;
8916
 
8917
/*--------------------------------------------------------------------------------------------------*/
8918
PROCEDURE Update_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
8919
						   sNewProdIdVersion IN VARCHAR2,
8920
						   nOsId IN OS_CONTENTS.OS_ID%TYPE,
8921
						   nSeqNum IN OS_CONTENTS.SEQ_NUM%TYPE,
8922
						   sComments IN OS_CONTENTS.PRODUCT_COMMENTS%TYPE,
8923
						   sSunOSElectronicName IN PACKAGES.SUNOS_ELECTRONIC_NAME%TYPE,
8924
						   sWinElectronicName IN PACKAGES.WIN_ELECTRONIC_NAME%TYPE,
8925
						   sIsNodeSpec IN OS_CONTENTS.IS_NODE_SPEC%TYPE,
8926
						   sNotXML IN OS_CONTENTS.NOT_XML%TYPE,
8927
						   sPatchElectronicName IN PACKAGE_VERSIONS.PATCH_ELECTRONIC_NAME%TYPE,
8928
						   nUserId IN NUMBER,
8929
						   outProdId OUT PACKAGE_VERSIONS.PV_ID%TYPE ) IS
8930
 
8931
nNewProdId OS_CONTENTS.PROD_ID%TYPE;
8932
 
8933
sProdName PACKAGES.PKG_NAME%TYPE;
8934
 
8935
 
8936
 
8937
 
8938
 
8939
CURSOR curProd IS
8940
 	SELECT pv.PV_ID
8941
	  FROM PACKAGE_VERSIONS pv
8942
	 WHERE pv.pkg_id IN ( SELECT pv.pkg_id FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nOldProdId )
8943
	   AND pv.PKG_VERSION = sNewProdIdVersion;
8944
recProd curProd%ROWTYPE;						   
8945
 
8946
BEGIN
8947
	/*--------------- Business Rules Here -------------------*/
8948
	IF (nOldProdId IS NULL) OR (sNewProdIdVersion IS NULL) OR (nOsId IS NULL) OR (nSeqNum IS NULL)
8949
	THEN
8950
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOldProdId= '|| nOldProdId  ||', sNewProdIdVersion= '|| sNewProdIdVersion ||', nOsId= '|| nOsId ||', nSeqNum= '|| nSeqNum);
8951
	END IF;
8952
	/*-------------------------------------------------------*/
8953
 
8954
	-- Get new prod_id
8955
	OPEN curProd;
8956
	FETCH curProd INTO recProd;
8957
 
8958
	SELECT pkg.pkg_name into sProdName
8959
	FROM PACKAGES pkg, PACKAGE_VERSIONS pv
8960
	WHERE pkg.pkg_id = pv.pkg_id 
8961
	AND pv.pv_id = nOldProdId;
8962
 
8963
 
8964
	IF curProd%FOUND THEN
8965
	   nNewProdId := recProd.PV_ID;
8966
	ELSE
8967
		Seed_Package_Names_Versions ( sProdName, sNewProdIdVersion, nUserId, outProdId );
8968
		nNewProdId := outProdId;
8969
		/*RAISE_APPLICATION_ERROR (-20000, 'Version '|| sNewProdIdVersion ||' does not exist.');*/
8970
	END IF;
8971
 
8972
	CLOSE curProd;
8973
 
8974
 
8975
	-- Update Product Details
8976
	UPDATE OS_CONTENTS SET
8977
		PROD_ID = nNewProdId,
8978
		PRODUCT_COMMENTS = sComments,
8979
		NOT_XML = sNotXML,
8980
		IS_NODE_SPEC = sIsNodeSpec
8981
	 WHERE OS_ID = nOsId
8982
	   AND PROD_ID = nOldProdId;
8983
 
8984
	--Update Package Electronic Name Details In Packages Table 
8985
	UPDATE PACKAGES SET
8986
		SUNOS_ELECTRONIC_NAME = sSunOSElectronicName,
8987
		WIN_ELECTRONIC_NAME = sWinElectronicName
8988
	WHERE  PKG_ID = 
8989
	(
8990
	 SELECT PKG_ID
8991
	 FROM PACKAGE_VERSIONS 
8992
	 WHERE PACKAGE_VERSIONS.PV_ID = nNewProdId
8993
	);
8994
 
8995
	--Update Patch Electronic Name In Package Versions Table
8996
	UPDATE PACKAGE_VERSIONS SET
8997
		   PATCH_ELECTRONIC_NAME = sPatchElectronicName
8998
	WHERE PV_ID = nNewProdId;	   
8999
 
9000
 
9001
	-- Update seq_num
9002
	pk_Operating_System.Shift_Product_SeqNum ( nNewProdId, nOsId, nSeqNum );
9003
 
9004
END	Update_Product;
9005
/*--------------------------------------------------------------------------------------------------*/
9006
PROCEDURE Replace_Product ( nOldProdId IN OS_CONTENTS.PROD_ID%TYPE,
9007
		  				  	nNewProdId IN OS_CONTENTS.PROD_ID%TYPE,
9008
		  			  	    nOsId IN OS_CONTENTS.OS_ID%TYPE,
9009
							nUserId IN NUMBER ) IS
9010
 
9011
OldVersion VARCHAR2(100);
9012
NewVersion VARCHAR2(100);
9013
PkgName    VARCHAR2(100);	
9014
NodeName VARCHAR2(4000);	
9015
 
9016
BEGIN
9017
	/*--------------- Business Rules Here -------------------*/
9018
	/*-------------------------------------------------------*/
9019
 
9020
 
9021
	UPDATE OS_CONTENTS SET
9022
	PROD_ID = nNewProdId
9023
	WHERE PROD_ID = nOldProdId
9024
	  AND OS_ID = nOsId;
9025
 
9026
	SELECT PKG_VERSION INTO OldVersion
9027
	FROM PACKAGE_VERSIONS
9028
	WHERE PV_ID = nOldProdId;
9029
 
9030
	SELECT PKG_VERSION INTO NewVersion
9031
	FROM PACKAGE_VERSIONS
9032
	WHERE PV_ID = nNewProdId;	
9033
 
9034
	SELECT PKG.PKG_NAME INTO PkgName
9035
	FROM PACKAGES PKG, PACKAGE_VERSIONS PV
9036
	WHERE PV.PV_ID = nNewProdId
9037
	AND PKG.PKG_ID = PV.PKG_ID; 
9038
 
9039
	SELECT NN.NODE_NAME INTO NodeName
9040
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
9041
	WHERE NN.NODE_ID = OS.NODE_ID
9042
	AND OS.OS_ID = nOsId;
9043
 
9044
 
9045
	-- Log Action --
9046
	pk_Bom.Log_Os_Trail ( nOsId, 
9047
						  'Updated Product: '||PkgName|| ' from Version: '||OldVersion||' to '||NewVersion||' on Node: '||NodeName,
9048
						  nUserId );
9049
 
9050
END	Replace_Product;
9051
/*--------------------------------------------------------------------------------------------------*/
9052
PROCEDURE Remove_Process ( sProcName IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,	
9053
		  				   sProdIdList IN VARCHAR2,
9054
		  			  	   nOsId IN OS_CONTENTS.OS_ID%TYPE,
9055
  						   sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
9056
						   sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
9057
						   sInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
9058
						   nUserId IN NUMBER ) IS
9059
 
9060
ProcessName VARCHAR2(4000);
9061
NodeName VARCHAR2(4000);
9062
 
9063
BEGIN
9064
 
9065
 
9066
/*Select the Correct Details - Begin*/
9067
 
9068
		 IF sCmdInterface IS NOT NULL THEN
9069
		 	IF sInterface IS NOT NULL THEN
9070
			   IF sPkgOwner IS NOT NULL THEN
9071
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
9072
					 FROM PROCESSES_CONFIG
9073
					 WHERE OS_ID = nOsId
9074
					 AND PROD_ID = sProdIdList
9075
					 AND PKG_HEALTH_TAG = sProcName
9076
					 AND CMD_INTERFACE = sCmdInterface
9077
					 AND PKG_OWNER = sPkgOwner
9078
					 AND IS_INTERFACE = sInterface;			   	  
9079
 
9080
			   ELSE/*sPkgOwner IS NULL, sInterface IS NOT NULL, sCmdInterface IS NOT NULL*/
9081
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
9082
					 FROM PROCESSES_CONFIG
9083
					 WHERE OS_ID = nOsId
9084
					 AND PROD_ID = sProdIdList
9085
					 AND PKG_HEALTH_TAG = sProcName
9086
					 AND CMD_INTERFACE = sCmdInterface
9087
					 AND PKG_OWNER IS NULL
9088
					 AND IS_INTERFACE = sInterface;				   
9089
			   END IF ;  
9090
			ELSE 
9091
				 IF sInterface IS NULL OR sInterface = 'F' THEN/* sInterface IS NULL, sCmdInterface IS NOT NULL*/
9092
			   	   IF sPkgOwner IS NOT NULL THEN
9093
			   	   	 SELECT PKG_HEALTH_TAG INTO ProcessName
9094
					 FROM PROCESSES_CONFIG
9095
					 WHERE OS_ID = nOsId
9096
					 AND PROD_ID = sProdIdList
9097
					 AND PKG_HEALTH_TAG = sProcName
9098
					 AND CMD_INTERFACE = sCmdInterface
9099
					 AND PKG_OWNER = sPkgOwner
9100
					 AND (IS_INTERFACE = 'F' OR IS_INTERFACE IS NULL);				    
9101
				   ELSE/* sPkqOwner IS NULL, sInterface IS NULL, sCmdInterface IS NOT NULL*/
9102
			   	   	 SELECT PKG_HEALTH_TAG INTO ProcessName
9103
					 FROM PROCESSES_CONFIG
9104
					 WHERE OS_ID = nOsId
9105
					 AND PROD_ID = sProdIdList
9106
					 AND PKG_HEALTH_TAG = sProcName
9107
					 AND CMD_INTERFACE = sCmdInterface
9108
					 AND PKG_OWNER IS NULL
9109
					 AND IS_INTERFACE IS NULL;				   
9110
				   END IF;
9111
				  END IF; 
9112
			END IF;
9113
		 ELSE/* sCmdInterface IS NULL*/
9114
		 		IF sInterface IS NOT NULL THEN
9115
				   IF sPkgOwner IS NOT NULL THEN				   	  
9116
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
9117
					 FROM PROCESSES_CONFIG
9118
					 WHERE OS_ID = nOsId
9119
					 AND PROD_ID = sProdIdList
9120
					 AND PKG_HEALTH_TAG = sProcName
9121
					 AND CMD_INTERFACE IS NULL
9122
					 AND PKG_OWNER = sPkgOwner
9123
					 AND IS_INTERFACE = sInterface;					   
9124
				   ELSE/* sPkgOwner is NULL, sInterface IS NOT NULL, sCmdInterface IS NULL */
9125
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
9126
					 FROM PROCESSES_CONFIG
9127
					 WHERE OS_ID = nOsId
9128
					 AND PROD_ID = sProdIdList
9129
					 AND PKG_HEALTH_TAG = sProcName
9130
					 AND CMD_INTERFACE IS NULL
9131
					 AND PKG_OWNER IS NULL
9132
					 AND IS_INTERFACE = sInterface;						   
9133
				   END IF;
9134
				ELSE
9135
				  IF sInterface IS NULL OR sInterface = 'F' THEN/* sInterface IS NULL, sCmdInterface IS NULL*/
9136
					IF sPkgOwner IS NOT NULL THEN
9137
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
9138
					 FROM PROCESSES_CONFIG
9139
					 WHERE OS_ID = nOsId
9140
					 AND PROD_ID = sProdIdList
9141
					 AND PKG_HEALTH_TAG = sProcName
9142
					 AND CMD_INTERFACE IS NULL
9143
					 AND PKG_OWNER = sPkgOwner
9144
					 AND (IS_INTERFACE IS NULL OR IS_INTERFACE = 'F');						   
9145
					ELSE/* sPkgOwner IS NULL, sInterface IS NULL, sCmdInterface IS NULL*/
9146
			   		 SELECT PKG_HEALTH_TAG INTO ProcessName
9147
					 FROM PROCESSES_CONFIG
9148
					 WHERE OS_ID = nOsId
9149
					 AND PROD_ID = sProdIdList
9150
					 AND PKG_HEALTH_TAG = sProcName
9151
					 AND CMD_INTERFACE IS NULL
9152
					 AND PKG_OWNER IS NULL
9153
					 AND IS_INTERFACE IS NULL;										
9154
					END IF;
9155
				  END IF;	
9156
				END IF;
9157
		 END IF;
9158
 
9159
 
9160
/*Select the Correct Details - End */
9161
 
9162
	-- Log Action --
9163
	pk_Bom.Log_Os_Trail ( nOsId, 
9164
						  'Deleted Process: '||ProcessName||' From Node: '||NodeName,
9165
						  nUserId );
9166
 
9167
 
9168
/*Select the Correct Details - Begin*/	
9169
		 IF sCmdInterface IS NOT NULL THEN
9170
		 	IF sInterface IS NOT NULL THEN
9171
			   IF sPkgOwner IS NOT NULL THEN
9172
			   		 DELETE
9173
					 FROM PROCESSES_CONFIG
9174
					 WHERE OS_ID = nOsId
9175
					 AND PROD_ID = sProdIdList
9176
					 AND PKG_HEALTH_TAG = sProcName
9177
					 AND CMD_INTERFACE = sCmdInterface
9178
					 AND PKG_OWNER = sPkgOwner
9179
					 AND IS_INTERFACE = sInterface;			   	  
9180
 
9181
			   ELSE/*sPkgOwner IS NULL, sInterface IS NOT NULL, sCmdInterface IS NOT NULL*/
9182
			   		 DELETE
9183
					 FROM PROCESSES_CONFIG
9184
					 WHERE OS_ID = nOsId
9185
					 AND PROD_ID = sProdIdList
9186
					 AND PKG_HEALTH_TAG = sProcName
9187
					 AND CMD_INTERFACE = sCmdInterface
9188
					 AND PKG_OWNER IS NULL
9189
					 AND IS_INTERFACE = sInterface;				   
9190
			   END IF;
9191
			ELSE/* sInterface IS NULL, sCmdInterface IS NOT NULL*/
9192
			   	   IF sPkgOwner IS NOT NULL THEN
9193
			   	   	 DELETE
9194
					 FROM PROCESSES_CONFIG
9195
					 WHERE OS_ID = nOsId
9196
					 AND PROD_ID = sProdIdList
9197
					 AND PKG_HEALTH_TAG = sProcName
9198
					 AND CMD_INTERFACE = sCmdInterface
9199
					 AND PKG_OWNER = sPkgOwner
9200
					 AND IS_INTERFACE IS NULL;				    
9201
				   ELSE/* sPkqOwner IS NULL, sInterface IS NULL, sCmdInterface IS NOT NULL*/
9202
			   	   	 DELETE
9203
					 FROM PROCESSES_CONFIG
9204
					 WHERE OS_ID = nOsId
9205
					 AND PROD_ID = sProdIdList
9206
					 AND PKG_HEALTH_TAG = sProcName
9207
					 AND CMD_INTERFACE = sCmdInterface
9208
					 AND PKG_OWNER IS NULL
9209
					 AND IS_INTERFACE IS NULL;				   
9210
				   END IF;
9211
			END IF;
9212
		 ELSE/* sCmdInterface IS NULL*/
9213
		 		IF sInterface IS NOT NULL THEN
9214
				   IF sPkgOwner IS NOT NULL THEN				   	  
9215
			   		 DELETE
9216
					 FROM PROCESSES_CONFIG
9217
					 WHERE OS_ID = nOsId
9218
					 AND PROD_ID = sProdIdList
9219
					 AND PKG_HEALTH_TAG = sProcName
9220
					 AND CMD_INTERFACE IS NULL
9221
					 AND PKG_OWNER = sPkgOwner
9222
					 AND IS_INTERFACE = sInterface;					   
9223
				   ELSE/* sPkgOwner is NULL, sInterface IS NOT NULL, sCmdInterface IS NULL */
9224
			   		 DELETE
9225
					 FROM PROCESSES_CONFIG
9226
					 WHERE OS_ID = nOsId
9227
					 AND PROD_ID = sProdIdList
9228
					 AND PKG_HEALTH_TAG = sProcName
9229
					 AND CMD_INTERFACE IS NULL
9230
					 AND PKG_OWNER IS NULL
9231
					 AND IS_INTERFACE = sInterface;						   
9232
				   END IF;
9233
				ELSE/* sInterface IS NULL, sCmdInterface IS NULL*/
9234
					IF sPkgOwner IS NOT NULL THEN
9235
			   		 DELETE
9236
					 FROM PROCESSES_CONFIG
9237
					 WHERE OS_ID = nOsId
9238
					 AND PROD_ID = sProdIdList
9239
					 AND PKG_HEALTH_TAG = sProcName
9240
					 AND CMD_INTERFACE IS NULL
9241
					 AND PKG_OWNER = sPkgOwner
9242
					 AND IS_INTERFACE IS NULL;						   
9243
					ELSE/* sPkgOwner IS NULL, sInterface IS NULL, sCmdInterface IS NULL*/
9244
			   		 DELETE
9245
					 FROM PROCESSES_CONFIG
9246
					 WHERE OS_ID = nOsId
9247
					 AND PROD_ID = sProdIdList
9248
					 AND PKG_HEALTH_TAG = sProcName
9249
					 AND CMD_INTERFACE IS NULL
9250
					 AND PKG_OWNER IS NULL
9251
					 AND IS_INTERFACE IS NULL;										
9252
					END IF;
9253
				END IF;
9254
		 END IF;
9255
 
9256
 
9257
/*Select the Correct Details - End*/				  
9258
 
9259
END Remove_Process;							
9260
/*--------------------------------------------------------------------------------------------------*/
9261
PROCEDURE Remove_Products ( sProdIdList IN VARCHAR2,
9262
		  			  	  	nOsId IN OS_CONTENTS.OS_ID%TYPE,
9263
							nUserId IN NUMBER ) IS
9264
 
9265
PkgName VARCHAR2(100);
9266
PkgVersion VARCHAR2(100);		
9267
NextSeqNum NUMBER := 1;
9268
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();	
9269
NodeName VARCHAR2(4000);
9270
 
9271
CURSOR prod_cur IS
9272
	SELECT osc.PROD_ID, osc.SEQ_NUM
9273
	  FROM OS_CONTENTS osc
9274
	 WHERE osc.OS_ID = nOsId
9275
	 ORDER BY osc.SEQ_NUM;
9276
prod_rec prod_cur%ROWTYPE;	  
9277
 
9278
BEGIN
9279
	/*--------------- Business Rules Here -------------------*/
9280
	IF sProdIdList IS NULL
9281
	THEN
9282
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
9283
 
9284
	END IF;
9285
	/*-------------------------------------------------------*/
9286
 
9287
	SELECT NN.NODE_NAME INTO NodeName
9288
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
9289
	WHERE NN.NODE_ID = OS.NODE_ID
9290
	AND OS.OS_ID = nOsId; 	
9291
 
9292
	-- Remove Products
9293
	DELETE 
9294
	FROM OS_CONTENTS
9295
	WHERE OS_ID = nOsId
9296
	  AND PROD_ID IN ( 
9297
	  	  		  	    SELECT * 
9298
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9299
					 );
9300
 
9301
 
9302
	-- Remove Processes
9303
	DELETE 
9304
	FROM PROCESSES_CONFIG
9305
	WHERE OS_ID = nOsId
9306
	  AND PROD_ID IN ( 
9307
	  	  		  	    SELECT * 
9308
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9309
					 );  
9310
 
9311
 
9312
	-- Update Seq Numbers
9313
	OPEN prod_cur;
9314
	FETCH prod_cur INTO prod_rec;
9315
 
9316
	WHILE prod_cur%FOUND
9317
	LOOP
9318
 
9319
		UPDATE OS_CONTENTS SET
9320
		SEQ_NUM = NextSeqNum
9321
		WHERE OS_ID = nOsId
9322
		  AND PROD_ID = prod_rec.PROD_ID;
9323
 
9324
		NextSeqNum := NextSeqNum + 1;
9325
		FETCH prod_cur INTO prod_rec;
9326
 
9327
 
9328
	END LOOP;
9329
 
9330
	CLOSE prod_cur;
9331
 
9332
	nIdCollector := IN_LIST_NUMBER ( sProdIdList );
9333
 
9334
	FOR i IN 1..nIdCollector.COUNT
9335
	LOOP
9336
		SELECT PKG.PKG_NAME INTO PkgName
9337
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
9338
		WHERE PV.PV_ID = nIdCollector(i)
9339
		AND PKG.PKG_ID = PV.PKG_ID;
9340
 
9341
		SELECT PKG_VERSION INTO PkgVersion
9342
		FROM PACKAGE_VERSIONS PV
9343
		WHERE PV.PV_ID = nIdCollector(i);	
9344
 
9345
		-- Log Action --
9346
		pk_Bom.Log_Os_Trail ( nOsId,  
9347
							  'Deleted Product: '||PkgName||' (Version: '||PkgVersion||') from Node: '||NodeName,
9348
							  nUserId );
9349
 
9350
	END LOOP;
9351
 
9352
 
9353
 
9354
 
9355
 
9356
 
9357
 
9358
END Remove_Products; 
9359
/*--------------------------------------------------------------------------------------------------*/
9360
PROCEDURE Add_Products_NodeSpec ( sProdIdList IN VARCHAR2,
9361
		  			  	  		  nOsId IN OS_CONTENTS.OS_ID%TYPE,
9362
								  nUserId IN NUMBER ) IS
9363
 
9364
NextSeqNum NUMBER := 1;
9365
 
9366
CURSOR prod_cur IS
9367
	SELECT osc.PROD_ID, osc.SEQ_NUM
9368
	  FROM OS_CONTENTS osc
9369
	 WHERE osc.OS_ID = nOsId
9370
	 ORDER BY osc.SEQ_NUM;
9371
prod_rec prod_cur%ROWTYPE;	  
9372
 
9373
BEGIN
9374
	/*--------------- Business Rules Here -------------------*/
9375
	IF sProdIdList IS NULL
9376
	THEN
9377
		RAISE_APPLICATION_ERROR (-20000, 'Please select one or more Products.');
9378
 
9379
	END IF;
9380
	/*-------------------------------------------------------*/
9381
	UPDATE OS_CONTENTS
9382
	SET IS_NODE_SPEC = ''
9383
	WHERE OS_ID = nOsId;
9384
 
9385
	-- Set Nodespec On
9386
	UPDATE OS_CONTENTS
9387
	SET IS_NODE_SPEC = 'on'
9388
	WHERE OS_ID = nOsId
9389
	  AND PROD_ID IN ( 
9390
	  	  		  	    SELECT * 
9391
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
9392
					 );
9393
 
9394
END Add_Products_NodeSpec; 
9395
/*--------------------------------------------------------------------------------------------------*/
9396
PROCEDURE Accept_Reject ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,	
9397
						  nBomId IN BOMS.BOM_ID%TYPE,
9398
						  sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
9399
						  nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
9400
						  nOsId IN NUMBER ) IS
9401
 
9402
IsRejected PRODUCT_DETAILS.IS_REJECTED%TYPE;
9403
 
9404
PkgName VARCHAR2(100);
9405
PkgVersion VARCHAR2(100);
9406
NodeName VARCHAR2(4000);
9407
 
9408
CURSOR curProd IS
9409
	SELECT pd.*
9410
	  FROM PRODUCT_DETAILS pd
9411
	 WHERE pd.PROD_ID = nProdId;
9412
recProd curProd%ROWTYPE;
9413
 
9414
BEGIN
9415
	/*--------------- Business Rules Here -------------------*/
9416
	IF (nProdId IS NULL)
9417
	THEN
9418
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one product.' );
9419
	END IF;
9420
	/*-------------------------------------------------------*/
9421
 
9422
	-- Set new Accept-Reject state
9423
	IsRejected := 'Y';
9424
 
9425
	SELECT NN.NODE_NAME INTO NodeName
9426
	FROM NETWORK_NODES NN, OPERATING_SYSTEMS OS
9427
	WHERE NN.NODE_ID = OS.NODE_ID
9428
	AND OS.OS_ID = nOsId; 	
9429
 
9430
 
9431
	OPEN curProd;
9432
	FETCH curProd INTO recProd;
9433
 
9434
	IF curProd%FOUND THEN
9435
		/* Product Details found */
9436
 
9437
		SELECT PKG.PKG_NAME INTO PkgName
9438
		FROM PACKAGES PKG, PACKAGE_VERSIONS PV
9439
		WHERE PV.PV_ID = nProdId
9440
		AND PKG.PKG_ID = PV.PKG_ID;
9441
 
9442
		SELECT PKG_VERSION INTO PkgVersion
9443
		FROM PACKAGE_VERSIONS PV
9444
		WHERE PV.PV_ID = nProdId;	
9445
 
9446
		-- Set new Accept-Reject state
9447
		IF recProd.IS_REJECTED = 'Y' THEN
9448
			IsRejected := 'N';
9449
			-- Log Action --
9450
			pk_Bom.Log_Os_Trail ( nOsId, 
9451
								  'Accepted Product: '||PkgName||' '||PkgVersion||' on Node: '||NodeName,
9452
						  		  nUserId );
9453
 
9454
		ELSE
9455
			IsRejected := 'Y';
9456
			-- Log Action --
9457
			pk_Bom.Log_Os_Trail ( nOsId, 
9458
								  'Rejected Product: '||PkgName||' '||PkgVersion||' on Node: '||NodeName,
9459
						  		  nUserId );			
9460
		END IF;
9461
 
9462
		-- Toggle Accept-Reject State 
9463
		UPDATE PRODUCT_DETAILS pd SET
9464
		pd.IS_REJECTED = IsRejected
9465
		WHERE pd.PROD_ID = nProdId;
9466
 
9467
 
9468
	ELSE
9469
		/* Product Details NOT found */
9470
 
9471
		-- Toggle Accept-Reject State	
9472
		INSERT INTO PRODUCT_DETAILS ( PROD_ID, IS_REJECTED )
9473
		VALUES ( nProdId, IsRejected );
9474
 
9475
 
9476
	END IF;
9477
 
9478
	CLOSE curProd;
9479
 
9480
 
9481
	-- Reflect changes to the BOM level
9482
 
9483
 
9484
 
9485
	/* Log Rejection Trail */
9486
	pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT'), nProdId, IsRejected, nUserId, sComments );
9487
 
9488
 
9489
END	Accept_Reject;
9490
/*--------------------------------------------------------------------------------------------------*/
9491
PROCEDURE Accept_Reject_List ( nProdIdList IN VARCHAR2,
9492
							   nBomId IN BOMS.BOM_ID%TYPE,
9493
						  	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
9494
						       nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
9495
							   nOsId IN NUMBER ) IS
9496
 
9497
nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
9498
 
9499
BEGIN
9500
	/*--------------- Business Rules Here -------------------*/
9501
	IF (nProdIdList IS NULL)
9502
	THEN
9503
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one product.' );
9504
	END IF;
9505
	/*-------------------------------------------------------*/
9506
 
9507
	nIdCollector := IN_LIST_NUMBER ( nProdIdList );
9508
 
9509
	FOR i IN 1..nIdCollector.COUNT
9510
	LOOP
9511
		Accept_Reject ( nIdCollector(i), nBomId, sComments, nUserId, nOsId);
9512
	END LOOP;
9513
 
9514
 
9515
END	Accept_Reject_List;
9516
/*--------------------------------------------------------------------------------------------------*/
9517
PROCEDURE Accept_Reject_Comments ( nProdId IN PRODUCT_DETAILS.PROD_ID%TYPE,
9518
		  						   nRejectSeq IN REJECTION_TRAIL.REJECT_SEQ%TYPE,
9519
						  	   	   sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL,
9520
						       	   nUserId IN REJECTION_TRAIL.USER_ID%TYPE ) IS
9521
 
9522
IsRejected REJECTION_TRAIL.IS_REJECTED%TYPE;
9523
 
9524
BEGIN
9525
	/*--------------- Business Rules Here -------------------*/
9526
	IF (nProdId IS NULL)
9527
	THEN
9528
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nProdId= '|| nProdId  );
9529
	END IF;
9530
	/*-------------------------------------------------------*/
9531
 
9532
	IF nRejectSeq IS NULL THEN
9533
		/* CREATE New Note */
9534
 
9535
		-- Get last IsRejected state
9536
		SELECT rt.IS_REJECTED INTO IsRejected
9537
		  FROM REJECTION_TRAIL rt
9538
		 WHERE rt.ENTITY_ID = nProdId
9539
		   AND rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT')
9540
		   AND ROWNUM = 1
9541
		 ORDER BY rt.REJECT_SEQ;
9542
 
9543
 
9544
		/* Log Rejection Trail */
9545
		pk_Utils.Log_Rejection_Trail ( GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT'), nProdId, IsRejected, nUserId, sComments );
9546
 
9547
 
9548
	ELSE
9549
		/* EDIT Note */
9550
		UPDATE REJECTION_TRAIL rt SET
9551
			rt.COMMENTS = sComments,
9552
			rt.USER_ID = nUserId,
9553
			rt.DATE_TIME_STAMP = GET_DATETIME()
9554
		WHERE rt.ENUM_ENTITY_TYPE = GET_SYSTEM_VALUE('enumENTITY_TYPE_PRODUCT')
9555
		  AND rt.ENTITY_ID = nProdId
9556
		  AND rt.REJECT_SEQ = nRejectSeq;
9557
 
9558
 
9559
	END IF;
9560
 
9561
 
9562
END	Accept_Reject_Comments;
9563
/*--------------------------------------------------------------------------------------------------*/
9564
PROCEDURE Sort_Products ( sProdIdOrder IN VARCHAR2,
9565
		  			  	  nOsId IN OS_CONTENTS.OS_ID%TYPE,
9566
						  nUserId IN NUMBER ) IS
9567
 
9568
	nIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();						 
9569
	SeqNum NUMBER;
9570
 
9571
BEGIN
9572
	/*--------------- Business Rules Here -------------------*/
9573
	-- Check for parameters
9574
	IF (sProdIdOrder IS NULL)  OR (nOsId IS NULL) 
9575
	THEN
9576
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nOsId='|| nOsId  ||' sProdIdOrder='|| sProdIdOrder  );
9577
	END IF;
9578
	/*-------------------------------------------------------*/
9579
 
9580
	nIdCollector := IN_LIST_NUMBER ( sProdIdOrder );
9581
 
9582
	-- Set start sequence number
9583
	SeqNum := 1;
9584
 
9585
	FOR i IN 1..nIdCollector.COUNT
9586
	LOOP
9587
 
9588
		-- Update new sequence number
9589
		UPDATE OS_CONTENTS osc SET
9590
			osc.SEQ_NUM = SeqNum
9591
		 WHERE osc.OS_ID = nOsId
9592
		   AND osc.PROD_ID = nIdCollector(i);
9593
 
9594
		SeqNum := SeqNum + 1;
9595
 
9596
	END LOOP;
9597
 
9598
 
9599
END	Sort_Products;
9600
/*--------------------------------------------------------------------------------------------------*/
9601
PROCEDURE Remove_Obsolete_Patches ( nOsId IN OS_CONTENTS.OS_ID%TYPE,
9602
		  						  	nUserId IN NUMBER ) IS
9603
 
9604
 
9605
NextSeqNum NUMBER := 1;									
9606
 
9607
 
9608
CURSOR prod_cur IS
9609
	SELECT osc.PROD_ID, osc.SEQ_NUM
9610
	  FROM OS_CONTENTS osc
9611
	 WHERE osc.OS_ID = nOsId
9612
	 ORDER BY osc.SEQ_NUM;
9613
prod_rec prod_cur%ROWTYPE;										
9614
 
9615
 
9616
BEGIN
9617
 
9618
	 -- Delete Obsolete Patches in the OS.
9619
	 DELETE FROM OS_CONTENTS 
9620
	 WHERE OS_ID = nOsId
9621
	 AND PROD_ID IN 
9622
	 (
9623
	 	  SELECT osc.PROD_ID
9624
	 	  FROM OS_CONTENTS osc, PACKAGE_VERSIONS pv
9625
		  WHERE pv.PV_ID = osc.PROD_ID
9626
		  AND pv.IS_OBSOLETE = 'Y'
9627
		  AND osc.OS_ID = nOsId
9628
	 );  	
9629
 
9630
 
9631
	-- Update Seq Numbers
9632
	OPEN prod_cur;
9633
	FETCH prod_cur INTO prod_rec;
9634
 
9635
	WHILE prod_cur%FOUND
9636
	LOOP
9637
 
9638
		UPDATE OS_CONTENTS SET
9639
		SEQ_NUM = NextSeqNum
9640
		WHERE OS_ID = nOsId
9641
		  AND PROD_ID = prod_rec.PROD_ID;
9642
 
9643
		NextSeqNum := NextSeqNum + 1;
9644
		FETCH prod_cur INTO prod_rec;
9645
 
9646
 
9647
	END LOOP;
9648
 
9649
	CLOSE prod_cur;	 								
9650
 
9651
END Remove_Obsolete_Patches;
9652
/*--------------------------------------------------------------------------------------------------*/
9653
FUNCTION GET_OS_ID ( PvId IN NUMBER ) RETURN NUMBER IS
9654
 
9655
	ReturnValue NUMBER;
9656
 
9657
BEGIN
9658
	SELECT osc.OS_ID INTO ReturnValue
9659
	  FROM OS_CONTENTS osc
9660
	 WHERE osc.PROD_ID = PvId;
9661
 
9662
	RETURN ReturnValue;
9663
END;
9664
/*--------------------------------------------------------------------------------------------------*/
9665
FUNCTION GET_NODE_ID ( OsId IN NUMBER ) RETURN NUMBER IS
9666
 
9667
	ReturnValue NUMBER;
9668
 
9669
BEGIN
9670
	SELECT os.NODE_ID INTO ReturnValue
9671
	  FROM OPERATING_SYSTEMS os
9672
	 WHERE os.OS_ID = OsId;
9673
 
9674
	RETURN ReturnValue;
9675
END;
9676
/*-------------------------------------------------------------------------------------------------------*/
9677
 
9678
/*-------------------------------------------------------------------------------------------------------*/
9679
 
9680
 
9681
END pk_Product_Test;
9682
 
9683
/
9684
 
9685
/
9686
--------------------------------------------------------
9687
--  DDL for Package Body PK_PROJECT
9688
--------------------------------------------------------
9689
 
9690
  CREATE OR REPLACE PACKAGE BODY "PK_PROJECT" 
9691
IS
9692
/* ---------------------------------------------------------------------------
9693
    Version: 2.0
9694
   --------------------------------------------------------------------------- */
9695
 
9696
 
9697
/*--------------------------------------------------------------------------------------------------*/
9698
PROCEDURE Add_Project ( sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
9699
		  			  	nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE ) IS
9700
 
9701
ProjId NUMBER;
9702
 
9703
BEGIN
9704
	/*--------------- Business Rules Here -------------------*/
9705
	/*-------------------------------------------------------*/
9706
 
9707
	-- Get proj_id --
9708
	SELECT SEQ_PROJ_ID.NEXTVAL INTO ProjId FROM DUAL;
9709
 
9710
 
9711
	-- Insert Branch --
9712
	INSERT INTO DM_PROJECTS ( PROJ_ID, PROJ_NAME, RM_PROJECTS_FK, IS_HIDDEN )
9713
	VALUES ( ProjId, sProjName, nRMProjFk, NULL );
9714
 
9715
	EXCEPTION
9716
    WHEN DUP_VAL_ON_INDEX
9717
	THEN		
9718
		RAISE_APPLICATION_ERROR (-20000, 'Project Name "'|| sProjName ||'" is Already Used.');
9719
 
9720
END	Add_Project;
9721
/*--------------------------------------------------------------------------------------------------*/
9722
PROCEDURE Update_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE,
9723
		  				   sProjName IN DM_PROJECTS.PROJ_NAME%TYPE,
9724
						   nRMProjFk IN DM_PROJECTS.RM_PROJECTS_FK%TYPE ) IS
9725
 
9726
 
9727
BEGIN
9728
	/*--------------- Business Rules Here -------------------*/
9729
	/*-------------------------------------------------------*/
9730
 
9731
 
9732
	-- Update Project --
9733
	UPDATE DM_PROJECTS SET
9734
	PROJ_NAME = sProjName,
9735
	RM_PROJECTS_FK = nRMProjFk
9736
	WHERE PROJ_ID = nProjId;
9737
 
9738
	EXCEPTION
9739
    WHEN DUP_VAL_ON_INDEX
9740
	THEN		
9741
		RAISE_APPLICATION_ERROR (-20000, 'Project Name "'|| sProjName ||'" is Already Used.');
9742
 
9743
END	Update_Project;
9744
/*--------------------------------------------------------------------------------------------------*/
9745
PROCEDURE ShowHide_Project ( nProjId DM_PROJECTS.PROJ_ID%TYPE ) IS
9746
 
9747
currIsHidden DM_PROJECTS.IS_HIDDEN%TYPE;
9748
 
9749
BEGIN
9750
	/*--------------- Business Rules Here -------------------*/
9751
	/*-------------------------------------------------------*/
9752
 
9753
	-- Get current IsHidden State
9754
	SELECT dmp.IS_HIDDEN INTO currIsHidden
9755
	  FROM DM_PROJECTS dmp
9756
	 WHERE dmp.PROJ_ID = nProjId;
9757
 
9758
 
9759
	-- Toggle IsHidden State --
9760
	IF currIsHidden = 'Y' THEN
9761
	   currIsHidden := NULL;
9762
	ELSE
9763
	   currIsHidden := 'Y';
9764
	END IF;
9765
 
9766
 
9767
	-- Update State --
9768
	UPDATE DM_PROJECTS dmp SET
9769
	IS_HIDDEN = currIsHidden
9770
	WHERE dmp.PROJ_ID = nProjId;
9771
 
9772
 
9773
END	ShowHide_Project;
9774
/*--------------------------------------------------------------------------------------------------*/
9775
PROCEDURE Remove_Project ( nProjId IN DM_PROJECTS.PROJ_ID%TYPE ) IS
9776
 
9777
rowCount NUMBER DEFAULT 0;
9778
 
9779
BEGIN
9780
	/*--------------- Business Rules Here -------------------*/
9781
	-- Check for Dependencies (Branches)
9782
	SELECT Count(*) INTO rowCount
9783
	  FROM BRANCHES br
9784
	 WHERE br.PROJ_ID = nProjId;
9785
 
9786
	IF rowCount > 0 THEN
9787
	   RAISE_APPLICATION_ERROR (-20000, 'Some Branches are still using this Project ( Counted '|| rowCount ||' ).' );
9788
	END IF; 
9789
 
9790
	-- Check for Dependencies (States)
9791
	SELECT Count(*) INTO rowCount
9792
	  FROM STATES st
9793
	  WHERE st.PROJ_ID = nProjId;
9794
 
9795
	IF rowCount > 0 THEN
9796
	   RAISE_APPLICATION_ERROR (-20000, 'Some States are still using this Project ( Counted '|| rowCount ||' ).' );
9797
	END IF; 
9798
	/*-------------------------------------------------------*/
9799
 
9800
 
9801
	-- Remove Notificaitons --
9802
	DELETE 
9803
	  FROM NOTIFY_USER nu
9804
	 WHERE nu.PROJ_ID = nProjId;
9805
 
9806
    -- Remove Product Queue --
9807
	DELETE 
9808
	  FROM PRODUCTS_QUEUE pq
9809
	 WHERE pq.PROJ_ID = nProjId; 
9810
 
9811
	-- Remove Project --
9812
	DELETE 
9813
	  FROM DM_PROJECTS dmp
9814
	 WHERE dmp.PROJ_ID = nProjId; 
9815
 
9816
 
9817
END	Remove_Project;
9818
/*--------------------------------------------------------------------------------------------------*/
9819
PROCEDURE Add_Branch ( sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
9820
		  			   nProjId IN BRANCHES.PROJ_ID%TYPE,
9821
					   nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
9822
                       sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE ) IS
9823
 
9824
BranchId NUMBER;
9825
 
9826
BEGIN
9827
	/*--------------- Business Rules Here -------------------*/
9828
	/*-------------------------------------------------------*/
9829
 
9830
	-- Get branch_id --
9831
	SELECT SEQ_BRANCH_ID.NEXTVAL INTO BranchId FROM DUAL;
9832
 
9833
 
9834
	-- Insert Branch --
9835
	INSERT INTO BRANCHES (BRANCH_ID, PROJ_ID, BRANCH_NAME, RM_VTREE_FK, BRANCH_COMMENTS )
9836
	VALUES ( BranchId, nProjId, sBranchName, nRMVTreeId, sBranchComments );
9837
 
9838
	EXCEPTION
9839
    WHEN DUP_VAL_ON_INDEX
9840
	THEN		
9841
		RAISE_APPLICATION_ERROR (-20000, 'Branch Name "'|| sBranchName ||'" is Already Used.');
9842
 
9843
END	Add_Branch;
9844
/*--------------------------------------------------------------------------------------------------*/
9845
PROCEDURE Remove_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE ) IS
9846
 
9847
rowCount NUMBER DEFAULT 0;
9848
 
9849
BEGIN
9850
	/*--------------- Business Rules Here -------------------*/
9851
	-- Check for Dependencies
9852
	SELECT Count(*) INTO rowCount
9853
	  FROM BOMS bo
9854
	 WHERE bo.BRANCH_ID = nBranchId;
9855
 
9856
	IF rowCount > 0 THEN
9857
	   RAISE_APPLICATION_ERROR (-20000, 'Some BOMS are still using this Branch ( Counted '|| rowCount ||' ).' );
9858
	END IF; 
9859
	/*-------------------------------------------------------*/
9860
 
9861
	-- Remove Branch --
9862
	DELETE 
9863
	  FROM BRANCHES br
9864
	 WHERE br.BRANCH_ID = nBranchId; 
9865
 
9866
 
9867
END	Remove_Branch;
9868
/*--------------------------------------------------------------------------------------------------*/
9869
PROCEDURE Update_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE,
9870
		  				  sBranchName IN BRANCHES.BRANCH_NAME%TYPE,
9871
					   	  nRMVTreeId IN BRANCHES.RM_VTREE_FK%TYPE,
9872
                          sBranchComments IN BRANCHES.BRANCH_COMMENTS%TYPE ) IS
9873
 
9874
 
9875
BEGIN
9876
	/*--------------- Business Rules Here -------------------*/
9877
	/*-------------------------------------------------------*/
9878
 
9879
 
9880
	-- Update Branch --
9881
	UPDATE BRANCHES SET
9882
	BRANCH_NAME = sBranchName,
9883
	RM_VTREE_FK = nRMVTreeId,
9884
    BRANCH_COMMENTS = sBranchComments
9885
	WHERE BRANCH_ID = nBranchId;
9886
 
9887
	EXCEPTION
9888
    WHEN DUP_VAL_ON_INDEX
9889
	THEN		
9890
		RAISE_APPLICATION_ERROR (-20000, 'Branch Name "'|| sBranchName ||'" is Already Used.');
9891
 
9892
END	Update_Branch;
9893
/*--------------------------------------------------------------------------------------------------*/
9894
PROCEDURE ShowHide_Branch ( nBranchId IN BRANCHES.BRANCH_ID%TYPE ) IS
9895
 
9896
currIsHidden BRANCHES.IS_HIDDEN%TYPE;
9897
 
9898
BEGIN
9899
	/*--------------- Business Rules Here -------------------*/
9900
	/*-------------------------------------------------------*/
9901
 
9902
	-- Get current IsHidden State
9903
	SELECT br.IS_HIDDEN INTO currIsHidden
9904
	  FROM BRANCHES br
9905
	 WHERE br.BRANCH_ID = nBranchId;
9906
 
9907
 
9908
	-- Toggle IsHidden State --
9909
	IF currIsHidden = 'Y' THEN
9910
	   currIsHidden := NULL;
9911
	ELSE
9912
	   currIsHidden := 'Y';
9913
	END IF;
9914
 
9915
 
9916
	-- Update State --
9917
	UPDATE BRANCHES SET
9918
	IS_HIDDEN = currIsHidden
9919
	WHERE BRANCH_ID = nBranchId;
9920
 
9921
 
9922
END	ShowHide_Branch;
9923
/*--------------------------------------------------------------------------------------------------*/
9924
PROCEDURE ShowHide_Download ( nProjId DM_PROJECTS.PROJ_ID%TYPE ) IS
9925
 
9926
currIsDownload DM_PROJECTS.IS_DOWNLOAD%TYPE;
9927
 
9928
BEGIN
9929
	/*--------------- Business Rules Here -------------------*/
9930
	/*-------------------------------------------------------*/
9931
 
9932
	-- Get current IsHidden State
9933
	SELECT dmp.IS_DOWNLOAD INTO currIsDownload
9934
	  FROM DM_PROJECTS dmp
9935
	 WHERE dmp.PROJ_ID = nProjId;
9936
 
9937
 
9938
	-- Toggle IsHidden State --
9939
	IF currIsDownload = 'Y' THEN
9940
	   currIsDownload := NULL;
9941
	ELSE
9942
	   currIsDownload := 'Y';
9943
	END IF;
9944
 
9945
 
9946
	-- Update State --
9947
	UPDATE DM_PROJECTS dmp SET
9948
	IS_DOWNLOAD = currIsDownload
9949
	WHERE dmp.PROJ_ID = nProjId;
9950
 
9951
 
9952
END	ShowHide_Download;
9953
/*--------------------------------------------------------------------------------------------------*/
9954
PROCEDURE ShowHide_StateDownload ( nStateId STATES.STATE_ID%TYPE ) IS
9955
 
9956
currIsDownload DM_PROJECTS.IS_DOWNLOAD%TYPE;
9957
 
9958
BEGIN
9959
	/*--------------- Business Rules Here -------------------*/
9960
	/*-------------------------------------------------------*/
9961
 
9962
	-- Get current IsHidden State
9963
	SELECT st.IS_DOWNLOAD INTO currIsDownload
9964
	  FROM STATES st
9965
	 WHERE st.STATE_ID = nStateId;
9966
 
9967
 
9968
	-- Toggle IsHidden State --
9969
	IF currIsDownload = 'Y' THEN
9970
	   currIsDownload := NULL;
9971
	ELSE
9972
	   currIsDownload := 'Y';
9973
	END IF;
9974
 
9975
 
9976
	-- Update State --
9977
	UPDATE STATES st SET
9978
	IS_DOWNLOAD = currIsDownload
9979
	WHERE st.STATE_ID = nStateId;
9980
 
9981
 
9982
END	ShowHide_StateDownload;
9983
 
9984
END pk_Project;
9985
 
9986
/
9987
 
9988
/
9989
--------------------------------------------------------
9990
--  DDL for Package Body PK_REPORT
9991
--------------------------------------------------------
9992
 
9993
  CREATE OR REPLACE PACKAGE BODY "PK_REPORT" IS
9994
 
9995
/*
9996
------------------------------
9997
||  Last Modified:  S.Vukovic
9998
||  Modified Date:  8/Mar/2005
9999
||  Body Version:   1.0
10000
------------------------------
10001
*/
10002
 
10003
 
10004
/*-------------------------------------------------------------------------------------------------------*/
10005
FUNCTION BOM_PRODUCTS_BY_NODE_BY_OS ( BomId NUMBER ) RETURN typeCur IS
10006
 
10007
	records typeCur;
10008
 
10009
BEGIN
10010
 
10011
 
10012
	OPEN records FOR
10013
	SELECT nn.NODE_ID,
10014
		   nt.NODE_ICON,
10015
		   nn.NODE_NAME,
10016
		   bt.BOS_ICON,
10017
		   obe.BASE_ENV_ID,
10018
		   os.OS_ID,
10019
		   os.OS_NAME,
10020
		   osc.SEQ_NUM,
10021
		   osc.PROD_ID,
10022
		   pkg.PKG_NAME,
10023
		   pv.PKG_VERSION
10024
	  FROM BOM_CONTENTS bc,
10025
	  	   OPERATING_SYSTEMS os,
10026
		   OS_CONTENTS osc,
10027
		   OS_BASE_ENV obe,
10028
		   BASE_ENV be,
10029
		   BOS_TYPES bt,
10030
		   NETWORK_NODES nn,
10031
		   NODE_TYPES nt,
10032
		   PACKAGE_VERSIONS pv,
10033
		   PACKAGES pkg
10034
	 WHERE os.NODE_ID (+) = nn.NODE_ID 
10035
	   AND nn.NODE_ID = bc.NODE_ID 
10036
	   AND nn.NODE_TYPE_ID = nt.NODE_TYPE_ID (+)
10037
	   AND bc.BOM_ID = BomId
10038
	   AND pv.PKG_ID = pkg.PKG_ID (+)
10039
	   AND osc.OS_ID (+) = os.OS_ID 
10040
	   AND osc.PROD_ID = pv.PV_ID (+)
10041
	   AND obe.OS_ID (+) = os.OS_ID
10042
	   AND obe.BASE_ENV_ID = be.BASE_ENV_ID (+)
10043
	   AND be.BOS_ID = bt.BOS_ID (+)
10044
	ORDER BY UPPER(nn.NODE_NAME), UPPER(os.OS_NAME), osc.SEQ_NUM;
10045
 
10046
 
10047
	RETURN records;	   
10048
 
10049
END;
10050
/*-------------------------------------------------------------------------------------------------------*/
10051
END PK_REPORT;
10052
 
10053
/
10054
 
10055
/
10056
--------------------------------------------------------
10057
--  DDL for Package Body PK_REQUIREMENTS
10058
--------------------------------------------------------
10059
 
10060
  CREATE OR REPLACE PACKAGE BODY "PK_REQUIREMENTS" 
10061
IS
10062
/* ---------------------------------------------------------------------------
10063
    Version: 1.0.0
10064
   --------------------------------------------------------------------------- */
10065
 
10066
/*--------------------------------------------------------------------------------------------------*/
10067
PROCEDURE Add_Bom ( nFromBomId IN BOMS.BOM_ID%TYPE,
10068
					   nToBranchId IN BOMS.BRANCH_ID%TYPE ) IS
10069
 
10070
rowCount NUMBER;
10071
FromBranchId NUMBER;
10072
 
10073
BEGIN
10074
	/*--------------- Business Rules Here -------------------*/
10075
	/*-------------------------------------------------------*/
10076
 
10077
	-- Get FromBranchId
10078
	SELECT bo.BRANCH_ID INTO FromBranchId
10079
	  FROM BOMS bo
10080
	 WHERE bo.BOM_ID = nFromBomId;
10081
 
10082
 
10083
	IF FromBranchId = nToBranchId THEN
10084
		/* Only check for rules if same branch_id */
10085
 
10086
 
10087
		-- REQUIREMENT: Cannot Branch more then 2 BOMs from parent
10088
		SELECT COUNT(*) INTO rowCount
10089
		  FROM BOMS bo
10090
		 WHERE bo.PARENT_BOM_ID = nFromBomId
10091
		   AND bo.BRANCH_ID = nToBranchId
10092
		   AND bo.BOM_ID != bo.PARENT_BOM_ID;
10093
 
10094
		IF rowCount >= 2 THEN
10095
		   RAISE_APPLICATION_ERROR (-20000, 'This BOM is already branched.' );
10096
		END IF;  
10097
 
10098
	END IF;
10099
 
10100
 
10101
END	Add_Bom;
10102
/*--------------------------------------------------------------------------------------------------*/
10103
PROCEDURE Destroy_Bom ( nBomId IN VARCHAR2 ) IS
10104
 
10105
rowCount NUMBER;
10106
nBomIdCollector DEPMGR_NUMBER_TAB_t := DEPMGR_NUMBER_TAB_t();
10107
 
10108
BEGIN
10109
	/*--------------- Business Rules Here -------------------*/
10110
	/*-------------------------------------------------------*/
10111
	nBomIdCollector := IN_LIST_NUMBER( nBomId );
10112
 
10113
	-- REQUIREMENT: For now if can only deal with one bom at a time
10114
	IF nBomIdCollector.Count > 1 THEN
10115
		RAISE_APPLICATION_ERROR (-20000, 'Please select one BOM only.' );
10116
	END IF;
10117
 
10118
 
10119
	-- REQUIREMENT: BOM need to be Unlocked
10120
	SELECT Count(*) INTO rowCount
10121
	  FROM BOMS bo
10122
	 WHERE bo.IS_READONLY = 'Y'
10123
	   AND bo.BOM_ID IN ( 
10124
	  	  		  	      SELECT * 
10125
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
10126
					 	 );
10127
 
10128
	IF rowCount > 0 THEN
10129
	   RAISE_APPLICATION_ERROR (-20000, 'Cannot Destroy as selected BOM is locked.' );
10130
	END IF;
10131
 
10132
 
10133
	-- REQUIREMENT: Cannot be a parent to someone
10134
	SELECT Count(*) INTO rowCount
10135
	  FROM BOMS bo
10136
	 WHERE bo.BOM_ID != bo.PARENT_BOM_ID
10137
	   AND bo.PARENT_BOM_ID IN ( 
10138
			  	  		  	      SELECT * 
10139
								  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
10140
							 	);
10141
 
10142
	IF rowCount > 0 THEN
10143
	   RAISE_APPLICATION_ERROR (-20000, 'Cannot Destroy as some BOMs are created or branched from this BOM.' );
10144
	END IF;								
10145
 
10146
 
10147
	-- Check for Dependencies (Knowledge Base Notes)
10148
	SELECT Count(*) INTO rowCount
10149
	  FROM BOM_NOTES bn
10150
	 WHERE bn.BOM_ID IN ( 
10151
	  	  		  	      SELECT * 
10152
						  FROM THE ( SELECT CAST( nBomIdCollector AS DEPMGR_NUMBER_TAB_t ) FROM dual )  
10153
					 	);
10154
 
10155
	IF rowCount > 0 THEN
10156
	   RAISE_APPLICATION_ERROR (-20000, 'Cannot Destroy as some knowledge base notes are attached to this BOM.' );
10157
	END IF;
10158
 
10159
 
10160
END	Destroy_Bom;
10161
/*--------------------------------------------------------------------------------------------------*/
10162
 
10163
 
10164
END pk_Requirements;
10165
 
10166
/
10167
 
10168
/
10169
--------------------------------------------------------
10170
--  DDL for Package Body PK_STATE
10171
--------------------------------------------------------
10172
 
10173
  CREATE OR REPLACE PACKAGE BODY "PK_STATE" 
10174
IS
10175
/* ---------------------------------------------------------------------------
10176
    Version: 1.0.0
10177
   --------------------------------------------------------------------------- */
10178
 
10179
 
10180
/*--------------------------------------------------------------------------------------------------*/
4534 dpurdie 10181
PROCEDURE Add_State ( sStateName     IN STATES.STATE_NAME%TYPE,
10182
		  			          nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE,
10183
		  			          nProjId        IN STATES.PROJ_ID%TYPE ) IS
3926 dpurdie 10184
 
4534 dpurdie 10185
StateId      NUMBER;
3926 dpurdie 10186
NextStateSeq NUMBER;
10187
 
10188
BEGIN
10189
	/*--------------- Business Rules Here -------------------*/
10190
	/*-------------------------------------------------------*/
10191
 
10192
	-- Get state_id --
10193
	SELECT SEQ_STATE_ID.NEXTVAL INTO StateId FROM DUAL;
10194
 
4534 dpurdie 10195
 
3926 dpurdie 10196
	-- Get Next Release Sequence
10197
	SELECT MAX( st.STATE_SEQ ) INTO NextStateSeq
10198
	  FROM STATES st
10199
	 WHERE st.PROJ_ID = nProjId;
10200
 
10201
	IF NextStateSeq IS NULL THEN
10202
	   NextStateSeq := 1;
10203
	ELSE
10204
	   NextStateSeq := NextStateSeq + 1;
10205
	END IF;
10206
 
10207
 
10208
	-- Insert Branch --
10209
	INSERT INTO STATES ( STATE_ID, PROJ_ID, STATE_NAME, STATE_SEQ, STATE_TYPE_ENUM )
10210
	VALUES ( StateId, nProjId, sStateName, NextStateSeq, nStateTypeEnum );
10211
 
10212
 
10213
	EXCEPTION
10214
    WHEN DUP_VAL_ON_INDEX
10215
	THEN		
10216
		RAISE_APPLICATION_ERROR (-20000, 'State Name "'|| sStateName ||'" is Already Used.');
10217
 
10218
END	Add_State;
10219
/*--------------------------------------------------------------------------------------------------*/
4534 dpurdie 10220
PROCEDURE Update_State ( nStateId       IN STATES.STATE_ID%TYPE,
10221
		  			   	         sStateName     IN STATES.STATE_NAME%TYPE,
10222
						             nStateSeq      IN STATES.STATE_SEQ%TYPE,
10223
						             nStateTypeEnum IN STATES.STATE_TYPE_ENUM%TYPE ) IS
3926 dpurdie 10224
 
10225
currSeqNum NUMBER;
10226
FromSeqNum NUMBER;
10227
ProjId NUMBER;
10228
 
10229
BEGIN
10230
	/*--------------- Business Rules Here -------------------*/
10231
	/*-------------------------------------------------------*/
10232
	-- Get State proj_id --
10233
	SELECT st.PROJ_ID INTO ProjId  FROM STATES st WHERE st.STATE_ID = nStateId;
10234
 
4534 dpurdie 10235
 
3926 dpurdie 10236
	-- Get Current seq_num
10237
	SELECT st.STATE_SEQ INTO currSeqNum
10238
	  FROM STATES st
10239
	 WHERE st.STATE_ID = nStateId;
10240
 
10241
 
10242
	IF currSeqNum > nStateSeq
10243
	THEN
10244
 
10245
		FromSeqNum := nStateSeq;
10246
 
10247
		-- Shift others Up
10248
		UPDATE STATES st SET
10249
			   st.STATE_SEQ = st.STATE_SEQ + 1
10250
		 WHERE st.PROJ_ID = ProjId
10251
		   AND st.STATE_SEQ BETWEEN  FromSeqNum  AND  currSeqNum - 1;
10252
 
10253
 
10254
	ELSIF currSeqNum < nStateSeq
10255
	THEN
10256
 
10257
		FromSeqNum := currSeqNum + 1;  
10258
 
10259
		 -- Shift others Down
10260
		UPDATE STATES st SET
10261
		   	   st.STATE_SEQ = st.STATE_SEQ - 1
10262
		 WHERE st.PROJ_ID = ProjId
10263
		   AND st.STATE_SEQ BETWEEN  FromSeqNum  AND  nStateSeq;
10264
 
10265
	END IF;
10266
 
10267
 
10268
	-- Update State --
10269
	UPDATE STATES st SET
10270
	st.STATE_NAME = sStateName,
10271
	st.STATE_SEQ = nStateSeq,
10272
	st.STATE_TYPE_ENUM = nStateTypeEnum
10273
	WHERE st.STATE_ID = nStateId;
10274
 
10275
	EXCEPTION
10276
    WHEN DUP_VAL_ON_INDEX
10277
	THEN		
10278
		RAISE_APPLICATION_ERROR (-20000, 'State Name "'|| sStateName ||'" is Already Used.');
10279
 
10280
END	Update_State;
10281
/*--------------------------------------------------------------------------------------------------*/
10282
PROCEDURE Remove_State ( nStateId IN STATES.STATE_ID%TYPE ) IS
10283
 
10284
rowCount NUMBER DEFAULT 0;
10285
ProjId NUMBER;
10286
NextSeqNum NUMBER;
10287
 
10288
CURSOR curStates IS
10289
	SELECT st.STATE_ID
10290
	  FROM STATES st
10291
	 WHERE st.PROJ_ID = ProjId
10292
	 ORDER BY st.STATE_SEQ;
10293
recStates curStates%ROWTYPE;
10294
 
10295
BEGIN
10296
	/*--------------- Business Rules Here -------------------*/
10297
	-- Check for Dependencies (BOMS)
10298
	SELECT Count(*) INTO rowCount
10299
	  FROM BOM_STATE bs
10300
	 WHERE bs.STATE_ID = nStateId;
10301
 
10302
	IF rowCount > 0 THEN
10303
	   RAISE_APPLICATION_ERROR (-20000, 'Some BOMS are still using this State ( Counted '|| rowCount ||' ).' );
10304
	END IF; 
10305
	/*-------------------------------------------------------*/
10306
 
10307
	-- Get State proj_id --
10308
	SELECT st.PROJ_ID INTO ProjId  FROM STATES st WHERE st.STATE_ID = nStateId;
10309
 
10310
 
10311
	-- Remove State --
10312
	DELETE 
10313
	  FROM STATES st
10314
	 WHERE st.STATE_ID = nStateId;
10315
 
10316
 
10317
	-- Update Seq Number --
10318
	OPEN curStates;
10319
	FETCH curStates INTO recStates;
10320
 
10321
	NextSeqNum := 1;
10322
	WHILE curStates%FOUND
10323
	LOOP
10324
 
10325
		UPDATE STATES st SET
10326
		st.STATE_SEQ = NextSeqNum
10327
		WHERE st.STATE_ID = recStates.STATE_ID;
10328
 
10329
		NextSeqNum := NextSeqNum + 1;
10330
		FETCH curStates INTO recStates;
10331
	END LOOP;
10332
 
10333
	CLOSE curStates; 
10334
 
10335
 
10336
END	Remove_State;
10337
/*--------------------------------------------------------------------------------------------------*/
10338
PROCEDURE Toggle_Is_Displayed ( nStateId IN BOM_STATE.STATE_ID%TYPE,
10339
								nBomId IN BOM_STATE.BOM_ID%TYPE,
10340
								cIsDisplay IN BOM_STATE.IS_DISPLAYED%TYPE ) IS
10341
 
10342
IsDisplayed BOM_STATE.IS_DISPLAYED%TYPE;
10343
 
10344
BEGIN
10345
	/*--------------- Business Rules Here -------------------*/
10346
	/*-------------------------------------------------------*/
10347
 
10348
	-- Get Current is_displayed
10349
	/*SELECT bs.IS_DISPLAYED INTO IsDisplayed
10350
	  FROM BOM_STATE bs
10351
	 WHERE bs.BOM_ID = nBomId
10352
	   AND bs.STATE_ID = nStateId;
10353
 
10354
 
10355
	-- Toggle is_displayed
10356
	IF IsDisplayed = 'Y' THEN
10357
		IsDisplayed := 'N';
10358
	ELSE
10359
		IsDisplayed := 'Y';
10360
	END IF;*/
10361
 
10362
 
10363
	-- Update bom state
10364
	UPDATE BOM_STATE SET
10365
	IS_DISPLAYED = cIsDisplay
10366
	WHERE BOM_ID = nBomId
10367
	  AND STATE_ID = nStateId;
10368
 
10369
 
10370
END	Toggle_Is_Displayed;
10371
 
10372
/*--------------------------------------------------------------------------------------------------*/
10373
PROCEDURE Auto_Hide ( nStateId IN BOM_STATE.STATE_ID%TYPE,
10374
					  nInsertedBomId IN BOM_STATE.BOM_ID%TYPE,
10375
					  nEventValue IN SYSTEM_CONFIGURATION.ITEM_VALUE%TYPE ) IS
10376
 
10377
CURSOR curParent IS
10378
	SELECT bo.BOM_ID,
10379
		   bo.IS_READONLY,
10380
		   bo.IS_REJECTED
10381
	  FROM BOMS bo
10382
	 WHERE bo.BOM_ID IN (	
10383
	 					 SELECT bo.PARENT_BOM_ID
10384
						   FROM BOMS bo
10385
						  WHERE bo.BOM_ID = nInsertedBomId
10386
						    AND bo.BOM_ID != bo.PARENT_BOM_ID
10387
	 					);
10388
recParent curParent%ROWTYPE;	
10389
 
10390
ParentBomId BOMS.PARENT_BOM_ID%TYPE;
10391
ParentOfficial BOMS.IS_READONLY%TYPE;	
10392
ParentRejected BOMS.IS_REJECTED%TYPE;			  
10393
 
10394
BEGIN
10395
	/*--------------- Business Rules Here -------------------*/
10396
	/*-------------------------------------------------------*/
10397
 
10398
	-- Get Parent Details
10399
	OPEN curParent;
10400
	FETCH curParent INTO recParent;
10401
 
10402
	ParentBomId := recParent.BOM_ID;
10403
	ParentOfficial := recParent.IS_READONLY;
10404
	ParentRejected := recParent.IS_REJECTED;
10405
 
10406
	CLOSE curParent;
10407
 
10408
 
10409
	IF ParentOfficial = 'Y' THEN
10410
		/* Auto-Hide BOM */
10411
 
10412
		IF nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_RELEASE_TO') THEN
10413
			/* REQUIREMENT: Hide Rejected parent */
10414
 
10415
			IF ParentRejected = 'Y' THEN
10416
				-- Update bom state
10417
				UPDATE BOM_STATE SET
10418
					IS_DISPLAYED = 'N'
10419
				WHERE BOM_ID = ParentBomId
10420
				  AND STATE_ID = nStateId;
10421
 
10422
			END IF;
10423
 
10424
 
10425
		ELSIF ( nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_LOCK_BOM') )  OR  (nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_ACCEPT_BOM') ) THEN
10426
			/* REQUIREMENT: Hide Rejected or Accepted parent */
10427
 
10428
			IF NOT ParentRejected IS NULL THEN
10429
				-- Update bom state
10430
				UPDATE BOM_STATE SET
10431
					IS_DISPLAYED = 'N'
10432
				WHERE BOM_ID = ParentBomId
10433
				  AND STATE_ID = nStateId;
10434
 
10435
			END IF;
10436
 
10437
 
10438
		ELSIF ( nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_UNLOCK_BOM') )  OR  (nEventValue = GET_SYSTEM_VALUE('enumEVENT_ON_REJECT_BOM') ) THEN
10439
			/* REQUIREMENT: Show parent */
10440
 
10441
			-- Update bom state
10442
			UPDATE BOM_STATE SET
10443
				IS_DISPLAYED = 'Y'
10444
			WHERE BOM_ID = ParentBomId
10445
			  AND STATE_ID = nStateId;
10446
 
10447
		END IF;
10448
 
10449
 
10450
 
10451
	END IF;
10452
 
10453
 
10454
 
10455
 
10456
END	Auto_Hide;
10457
/*--------------------------------------------------------------------------------------------------*/
10458
 
10459
 
10460
END pk_State;
10461
 
10462
/
10463
 
10464
/
10465
--------------------------------------------------------
10466
--  DDL for Package Body PK_UTILS
10467
--------------------------------------------------------
10468
 
10469
  CREATE OR REPLACE PACKAGE BODY "PK_UTILS" 
10470
IS
10471
/* ---------------------------------------------------------------------------
10472
    Version: 1.0.0
10473
   --------------------------------------------------------------------------- */
10474
 
10475
/*--------------------------------------------------------------------------------------------------*/
10476
PROCEDURE Clone_BOM ( nFromBomId IN BOMS.BOM_ID%TYPE,
10477
		  			  nToBomId IN BOMS.BOM_ID%TYPE,
10478
					  nUserId IN NUMBER ) IS
10479
 
10480
FromBom VARCHAR2(4000);
10481
 
10482
BEGIN
10483
	/*--------------- Business Rules Here -------------------*/
10484
	/*-------------------------------------------------------*/
10485
 
10486
	-- Define old_bom_id
10487
	UPDATE BOMS bo SET
10488
	bo.OLD_BOM_ID = nFromBomId
10489
	WHERE bo.BOM_ID = nToBomId;
10490
 
10491
	-- Copy Bom Contents
10492
	Copy_BOM_Contents ( nFromBomId, nToBomId );
10493
 
10494
 
10495
	-- Finnaly Clean old_id columns
10496
	Clean_Old_Id_Column();
10497
 
10498
 
10499
 
10500
 
10501
	/* Log BOM_TRAIL */
10502
	-- Get FromBom Details
10503
	SELECT proj.PROJ_NAME ||' / '|| br.BRANCH_NAME ||' / '|| bn.BOM_NAME ||' '|| bo.BOM_VERSION ||'.'|| BOM_LIFECYCLE
10504
		   INTO FromBom 
10505
	  FROM DM_PROJECTS proj,
10506
	  	   BOMS bo,
10507
		   BOM_NAMES bn,
10508
		   BRANCHES br
10509
	 WHERE br.PROJ_ID = proj.PROJ_ID
10510
	   AND bo.BRANCH_ID = br.BRANCH_ID
10511
	   AND bo.BOM_NAME_ID = bn.BOM_NAME_ID
10512
	   AND bo.BOM_ID = nFromBomId;
10513
 
10514
	-- Log Action
10515
	pk_Bom.Log_Bom_Trail ( nToBomId, 'COPIED: From '|| FromBom, nUserId );
10516
 
10517
 
10518
END	Clone_BOM;
10519
/*--------------------------------------------------------------------------------------------------*/
10520
PROCEDURE Copy_BOM_Contents ( nFromBomId IN BOMS.BOM_ID%TYPE,
10521
		  					  nToBomId IN BOMS.BOM_ID%TYPE ) IS
10522
 
10523
 
10524
BEGIN
10525
	/*--------------- Business Rules Here -------------------*/
10526
	/*-------------------------------------------------------*/
10527
 
10528
	-- Copy Network Nodes
10529
	Copy_Network_Node ( nFromBomId, nToBomId ); 
10530
 
10531
 
10532
	-- Copy Hardware Names
10533
	INSERT INTO HARDWARE ( HARDWARE_NAME_ID, BOM_ID, HARDWARE_NAME, TIER_NAME, OLD_HARDWARE_NAME_ID )
10534
	SELECT SEQ_HARDWARE_NAME_ID.NEXTVAL AS HARDWARE_NAME_ID, 
10535
		   nToBomId AS BOM_ID, 
10536
		   hw.HARDWARE_NAME, 
10537
		   hw.TIER_NAME, 
10538
		   hw.HARDWARE_NAME_ID AS OLD_HARDWARE_NAME_ID
10539
	  FROM HARDWARE hw
10540
	 WHERE hw.BOM_ID = nFromBomId;
10541
 
10542
 
10543
	-- Copy Hardware Matrix
10544
	INSERT INTO HARDWARE_NODE ( HARDWARE_NAME_ID, NODE_ID) 
10545
	SELECT hw.HARDWARE_NAME_ID, 
10546
		   nn.NODE_ID
10547
	  FROM HARDWARE hw,
10548
	  	   NETWORK_NODES nn,
10549
		   HARDWARE_NODE hd
10550
	 WHERE hd.NODE_ID = nn.OLD_NODE_ID
10551
	   AND hd.HARDWARE_NAME_ID = hw.OLD_HARDWARE_NAME_ID
10552
	   AND hw.BOM_ID = nToBomId;
10553
 
10554
 
10555
	-- Copy Base Environments
10556
	INSERT INTO BASE_ENV ( BASE_ENV_ID, BOS_ID, BASE_ENV_NAME, OLD_BASE_ENV_ID, BOM_ID )
10557
	SELECT SEQ_BASE_ENV_ID.NEXTVAL AS BASE_ENV_ID, 
10558
		   be.BOS_ID, 
10559
		   be.BASE_ENV_NAME, 
10560
		   be.BASE_ENV_ID AS OLD_BASE_ENV_ID, 
10561
		   nToBomId AS BOM_ID   
10562
	  FROM BASE_ENV be
10563
	 WHERE be.BOM_ID = nFromBomId;
10564
 
10565
 
10566
	-- Relink Base Environment Contents
10567
	INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, PROD_ID, BASE_ENV_COMMENTS, SEQ_NUM, IS_NODE_SPEC, NOT_XML )
10568
	SELECT be.BASE_ENV_ID AS BASE_ENV_ID, 
10569
		   bec.PROD_ID, 
10570
		   bec.BASE_ENV_COMMENTS, 
10571
		   bec.SEQ_NUM,
10572
		   bec.IS_NODE_SPEC,
10573
		   bec.NOT_XML
10574
	  FROM BASE_ENV be,
10575
	  	   BASE_ENV_CONTENTS bec
10576
	 WHERE bec.BASE_ENV_ID = be.OLD_BASE_ENV_ID
10577
	   AND be.BOM_ID = nToBomId;
10578
 
10579
 
10580
    -- Copy OS
10581
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, OLD_OS_ID, NODE_SPEC_FILE, NOT_XML ) 
10582
	SELECT SEQ_OS_ID.NEXTVAL AS OS_ID, 
10583
		   os.OS_NAME, 
10584
		   nn.NODE_ID AS NODE_ID, 
10585
		   os.OS_COMMENTS, 
10586
		   os.OS_ID AS OLD_OS_ID,
10587
		   os.NODE_SPEC_FILE,
10588
		   os.NOT_XML
10589
	  FROM OPERATING_SYSTEMS os,
10590
	  	   NETWORK_NODES nn,
10591
		   BOM_CONTENTS bc
10592
	 WHERE bc.NODE_ID = nn.NODE_ID
10593
	   AND os.NODE_ID = nn.OLD_NODE_ID
10594
	   AND bc.BOM_ID = nToBomId;
10595
 
10596
 
10597
 
10598
    -- Relink OS Base Environments
10599
	INSERT INTO OS_BASE_ENV ( OS_ID, BASE_ENV_ID ) 
10600
	SELECT os.OS_ID AS OS_ID,
10601
		   be.BASE_ENV_ID AS BASE_ENV_ID
10602
	  FROM OPERATING_SYSTEMS os,
10603
	  	   NETWORK_NODES nn,
10604
		   BOM_CONTENTS bc,
10605
		   OS_BASE_ENV osbe,
10606
		   BASE_ENV be
10607
	 WHERE osbe.OS_ID = os.OLD_OS_ID
10608
	   AND osbe.BASE_ENV_ID = be.OLD_BASE_ENV_ID
10609
	   AND bc.NODE_ID = nn.NODE_ID
10610
	   AND os.NODE_ID = nn.NODE_ID
10611
	   AND bc.BOM_ID = nToBomId;
10612
 
10613
 
10614
	-- Copy OS Contents
10615
	INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS, CHANGE_LOG_FLAG, IS_NODE_SPEC, NOT_XML ) 	  
10616
	SELECT os.OS_ID AS OS_ID, 
10617
		   osc.SEQ_NUM, 
10618
		   osc.PROD_ID, 
10619
		   osc.PRODUCT_COMMENTS, 
10620
		   osc.CHANGE_LOG_FLAG,
10621
		   osc.IS_NODE_SPEC,
10622
		   osc.NOT_XML
10623
	  FROM OPERATING_SYSTEMS os,
10624
	  	   BOM_CONTENTS bc,
10625
		   OS_CONTENTS osc
10626
	 WHERE bc.NODE_ID = os.NODE_ID
10627
	   AND osc.OS_ID = os.OLD_OS_ID
10628
	   AND bc.BOM_ID = nToBomId;
10629
 
10630
 
10631
    -- Copy Processes Config
10632
	INSERT INTO PROCESSES_CONFIG ( PROC_ID, PROD_ID, OS_ID, PKG_HEALTH_TAG, CMD_INTERFACE, PKG_OWNER, IS_INTERFACE, PROC_DESCRIPTION, PKG_ID ) 	  
10633
	SELECT pc.PROC_ID, 
10634
		   pc.PROD_ID, 
10635
		   os.OS_ID AS OS_ID, 
10636
		   pc.PKG_HEALTH_TAG, 
10637
		   pc.CMD_INTERFACE,
10638
		   pc.PKG_OWNER,
10639
		   pc.IS_INTERFACE,
10640
		   pc.PROC_DESCRIPTION,
10641
		   pc.PKG_ID 
10642
	  FROM OPERATING_SYSTEMS os,
10643
	  	   BOM_CONTENTS bc,
10644
		   PROCESSES_CONFIG pc
10645
	 WHERE bc.NODE_ID = os.NODE_ID
10646
	   AND pc.OS_ID = os.OLD_OS_ID
10647
	   AND bc.BOM_ID = nToBomId;
10648
 
10649
 
10650
	-- Copy Hide Products/Patches
10651
	INSERT INTO HIDE_PRODUCTS (OS_ID, PROD_ID)
10652
	SELECT os.OS_ID, 
10653
		   hp.PROD_ID
10654
	FROM   HIDE_PRODUCTS hp,
10655
		   OPERATING_SYSTEMS os,
10656
		   BOM_CONTENTS bc
10657
	WHERE  hp.OS_ID = os.OLD_OS_ID
10658
	AND    bc.NODE_ID = os.NODE_ID
10659
	AND    bc.BOM_ID = nToBomId ; 	   
10660
 
10661
 
10662
END	Copy_BOM_Contents;
10663
/*--------------------------------------------------------------------------------------------------*/
10664
PROCEDURE Copy_Network_Node ( nFromBomId IN BOMS.BOM_ID%TYPE,
10665
		  					  nToBomId IN BOMS.BOM_ID%TYPE,
10666
							  nFromNodeId IN NUMBER DEFAULT 0  ) IS
10667
 
10668
 
10669
BEGIN
10670
	/*--------------- Business Rules Here -------------------*/
10671
	/*-------------------------------------------------------*/
10672
 
10673
	-- Copy Network Nodes
10674
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS, OLD_NODE_ID, NODE_VERSION, NODE_LIFE_CYCLE )
10675
	SELECT SEQ_NODE_ID.NEXTVAL AS NODE_ID, 
10676
		   nn.NODE_TYPE_ID, 
10677
		   nn.NODE_NAME, 
10678
		   nn.NODE_COMMENTS, 
10679
		   nn.NODE_ID AS OLD_NODE_ID,
10680
		   nn.NODE_VERSION, 
10681
		   nn.NODE_LIFE_CYCLE
10682
	  FROM NETWORK_NODES nn,
10683
	  	   BOM_CONTENTS bc
10684
	 WHERE bc.NODE_ID = nn.NODE_ID
10685
	   AND (
10686
	   	    ( bc.NODE_ID = bc.NODE_ID  AND  nFromNodeId = 0 ) OR
10687
			( bc.NODE_ID = nFromNodeId     AND  nFromNodeId != 0 )
10688
	   	   )
10689
	   AND bc.BOM_ID = nFromBomId;
10690
 
10691
 
10692
	-- Relink Bom Contents
10693
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID, SEQ_NUM)
10694
	SELECT bo.BOM_ID,
10695
		   nn.NODE_ID,
10696
		   bc.SEQ_NUM
10697
	  FROM BOMS bo,
10698
	  	   BOM_CONTENTS bc,
10699
		   NETWORK_NODES nn
10700
	 WHERE bc.BOM_ID = bo.OLD_BOM_ID
10701
	   AND bc.NODE_ID = nn.OLD_NODE_ID
10702
	   AND (
10703
	   	    ( nn.OLD_NODE_ID = nn.OLD_NODE_ID  AND  nFromNodeId = 0 ) OR
10704
			( nn.OLD_NODE_ID = nFromNodeId     AND  nFromNodeId != 0 )
10705
	   	   )
10706
	   AND bo.BOM_ID = nToBomId;  
10707
 
10708
END	Copy_Network_Node;
10709
/*--------------------------------------------------------------------------------------------------*/
10710
PROCEDURE Paste_Products ( sProdIdList IN VARCHAR2,
10711
						   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
10712
						   nToOsId IN OS_CONTENTS.OS_ID%TYPE ) IS
10713
 
10714
MaxSeqNum NUMBER;						 
10715
 
10716
BEGIN
10717
	/*--------------- Business Rules Here -------------------*/
10718
	/*-------------------------------------------------------*/
10719
 
10720
	-- Get Max seq_num
10721
	SELECT COUNT(*) INTO MaxSeqNum
10722
	  FROM OS_CONTENTS osc
10723
	 WHERE osc.OS_ID = nToOsId;
10724
 
10725
 
10726
	-- Copy OS Contents
10727
	INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS, CHANGE_LOG_FLAG ) 	  
10728
	SELECT nToOsId AS OS_ID, 
10729
		   ROWNUM + MaxSeqNum, 
10730
		   osc.PROD_ID, 
10731
		   osc.PRODUCT_COMMENTS, 
10732
		   osc.CHANGE_LOG_FLAG
10733
	  FROM OS_CONTENTS osc
10734
	 WHERE osc.OS_ID = nFromOsId
10735
	   AND osc.PROD_ID IN (
10736
						   SELECT *
10737
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10738
	   	   			   	   );
10739
 
10740
 
10741
    -- Copy Processes Config
10742
	INSERT INTO PROCESSES_CONFIG ( PROC_ID, PROD_ID, OS_ID, PKG_HEALTH_TAG, CMD_INTERFACE ) 	  
10743
	SELECT pc.PROC_ID, 
10744
		   pc.PROD_ID, 
10745
		   nToOsId AS OS_ID, 
10746
		   pc.PKG_HEALTH_TAG, 
10747
		   pc.CMD_INTERFACE 
10748
	  FROM OPERATING_SYSTEMS os,
10749
	  	   BOM_CONTENTS bc,
10750
		   PROCESSES_CONFIG pc
10751
	 WHERE bc.NODE_ID = os.NODE_ID
10752
	   AND pc.OS_ID = os.OLD_OS_ID
10753
	   AND bc.BOM_ID = nFromOsId
10754
	   AND pc.PROD_ID IN (
10755
						   SELECT *
10756
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10757
	   	   			   	   );
10758
 
10759
 
10760
    EXCEPTION
10761
    WHEN DUP_VAL_ON_INDEX
10762
	THEN		
10763
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Product.');	
10764
 
10765
END	Paste_Products;
10766
/*--------------------------------------------------------------------------------------------------*/
10767
PROCEDURE Paste_Products_To_Base_Env ( sProdIdList IN VARCHAR2,
10768
									   nFromOsId IN OS_CONTENTS.OS_ID%TYPE, 
10769
									   nToBaseEnvId IN BASE_ENV.BASE_ENV_ID%TYPE ) IS
10770
 
10771
MaxSeqNum NUMBER;						 
10772
 
10773
BEGIN
10774
	/*--------------- Business Rules Here -------------------*/
10775
	/*-------------------------------------------------------*/
10776
 
10777
	-- Get Max seq_num
10778
	SELECT COUNT(*) INTO MaxSeqNum
10779
	  FROM BASE_ENV_CONTENTS bec
10780
	 WHERE bec.BASE_ENV_ID = nToBaseEnvId;
10781
 
10782
 
10783
	-- Copy OS Contents
10784
	INSERT INTO BASE_ENV_CONTENTS ( BASE_ENV_ID, PROD_ID, BASE_ENV_COMMENTS, SEQ_NUM ) 	  
10785
	SELECT nToBaseEnvId AS BASE_ENV_ID, 
10786
		   osc.PROD_ID,
10787
		   osc.PRODUCT_COMMENTS, 
10788
		   ROWNUM + MaxSeqNum 
10789
	  FROM OS_CONTENTS osc
10790
	 WHERE osc.OS_ID = nFromOsId
10791
	   AND osc.PROD_ID IN (
10792
						   SELECT *
10793
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sProdIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10794
	   	   			   	   );
10795
 
10796
 
10797
        EXCEPTION
10798
    WHEN DUP_VAL_ON_INDEX
10799
	THEN		
10800
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Product.');	
10801
 
10802
END	Paste_Products_To_Base_Env;
10803
/*--------------------------------------------------------------------------------------------------*/
10804
PROCEDURE Paste_Os ( sOsIdList IN VARCHAR2,
10805
					 nFromNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
10806
					 nToNodeId IN OPERATING_SYSTEMS.NODE_ID%TYPE ) IS
10807
 
10808
ToBomId NUMBER;					 
10809
 
10810
BEGIN
10811
	/*--------------- Business Rules Here -------------------*/
10812
	/*-------------------------------------------------------*/
10813
 
10814
	-- Get ToBomId
10815
	SELECT bc.BOM_ID INTO ToBomId
10816
	  FROM BOM_CONTENTS bc
10817
 	 WHERE bc.NODE_ID = nToNodeId;
10818
 
10819
 
10820
    -- Copy OS
10821
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, OLD_OS_ID ) 
10822
	SELECT SEQ_OS_ID.NEXTVAL AS OS_ID, 
10823
		   os.OS_NAME, 
10824
		   nToNodeId AS NODE_ID, 
10825
		   os.OS_COMMENTS, 
10826
		   os.OS_ID AS OLD_OS_ID
10827
	  FROM OPERATING_SYSTEMS os
10828
	 WHERE os.NODE_ID = nFromNodeId
10829
	   AND os.OS_ID IN (
10830
					   	  SELECT *
10831
				   	     	FROM THE ( SELECT CAST( IN_LIST_NUMBER( sOsIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10832
   	   			   	    );
10833
 
10834
 
10835
	-- Paste OS Contents
10836
	Paste_OS_Contents();
10837
 
10838
 
10839
 
10840
	-- Finnaly Clean old_id columns
10841
	Clean_Old_Id_Column();
10842
 
10843
 
10844
	EXCEPTION
10845
    WHEN DUP_VAL_ON_INDEX
10846
	THEN		
10847
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Operating Systems.');	
10848
 
10849
END	Paste_Os;
10850
/*--------------------------------------------------------------------------------------------------*/
10851
PROCEDURE Paste_Node ( sNodeIdList IN VARCHAR2,
10852
					   nFromBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE,
10853
					   nToBomId IN OPERATING_SYSTEMS.NODE_ID%TYPE ) IS
10854
 
10855
CURSOR curNodeName IS -- Check Node Name Duplicates			
10856
	SELECT nn.NODE_ID
10857
	  FROM (
10858
	  		SELECT UPPER( nn.NODE_NAME ) AS NODE_NAME
10859
		      FROM NETWORK_NODES nn
10860
		     WHERE nn.NODE_ID IN (
10861
		  							SELECT *
10862
		     						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual )
10863
		  					     )  
10864
	  	   ) nname,
10865
		   BOM_CONTENTS bc,
10866
	  	   NETWORK_NODES nn	
10867
	 WHERE bc.NODE_ID = nn.NODE_ID
10868
	   AND bc.BOM_ID = nToBomId
10869
	   AND UPPER( nn.NODE_NAME ) = UPPER( nname.NODE_NAME );
10870
recNodeName curNodeName%ROWTYPE;	   					 
10871
 
10872
BEGIN
10873
	/*--------------- Business Rules Here -------------------*/
10874
	OPEN curNodeName;
10875
    FETCH curNodeName INTO recNodeName;
10876
 
10877
    IF curNodeName%FOUND
10878
    THEN
10879
		RAISE_APPLICATION_ERROR (-20000, 'Cannot Paste Duplicate Network Nodes.'   );
10880
 
10881
	END IF;
10882
 
10883
	CLOSE curNodeName;
10884
	/*-------------------------------------------------------*/
10885
 
10886
	-- Copy Network Nodes
10887
	INSERT INTO NETWORK_NODES ( NODE_ID, NODE_TYPE_ID, NODE_NAME, NODE_COMMENTS, OLD_NODE_ID, NODE_VERSION, NODE_LIFE_CYCLE )
10888
	SELECT SEQ_NODE_ID.NEXTVAL AS NODE_ID, 
10889
		   nn.NODE_TYPE_ID, 
10890
		   nn.NODE_NAME, 
10891
		   nn.NODE_COMMENTS, 
10892
		   nn.NODE_ID AS OLD_NODE_ID,
10893
		   nn.NODE_VERSION, 
10894
		   nn.NODE_LIFE_CYCLE
10895
	  FROM NETWORK_NODES nn,
10896
	  	   BOM_CONTENTS bc
10897
	 WHERE bc.NODE_ID = nn.NODE_ID
10898
	   AND bc.BOM_ID = nFromBomId
10899
	   AND nn.NODE_ID IN (
10900
					   	  SELECT *
10901
				   	     	FROM THE ( SELECT CAST( IN_LIST_NUMBER( sNodeIdList ) AS DEPMGR_NUMBER_TAB_t ) FROM dual ) 
10902
   	   			   	     );
10903
 
10904
 
10905
	-- Relink Bom Contents
10906
	INSERT INTO BOM_CONTENTS ( BOM_ID, NODE_ID )
10907
	SELECT nToBomId,
10908
		   nn.NODE_ID
10909
	  FROM NETWORK_NODES nn
10910
	 WHERE NOT nn.OLD_NODE_ID IS NULL;
10911
 
10912
 
10913
    -- Copy OS
10914
	INSERT INTO OPERATING_SYSTEMS ( OS_ID, OS_NAME, NODE_ID, OS_COMMENTS, OLD_OS_ID ) 
10915
	SELECT SEQ_OS_ID.NEXTVAL AS OS_ID, 
10916
		   os.OS_NAME, 
10917
		   nn.NODE_ID, 
10918
		   os.OS_COMMENTS, 
10919
		   os.OS_ID AS OLD_OS_ID
10920
	  FROM OPERATING_SYSTEMS os,
10921
	  	   NETWORK_NODES nn
10922
	 WHERE os.NODE_ID = nn.OLD_NODE_ID;
10923
 
10924
 
10925
	-- Paste OS Contents
10926
	Paste_OS_Contents();
10927
 
10928
 
10929
 
10930
	-- Finnaly Clean old_id columns
10931
	Clean_Old_Id_Column();
10932
 
10933
 
10934
END	Paste_Node;
10935
/*--------------------------------------------------------------------------------------------------*/
10936
PROCEDURE Paste_OS_Contents IS
10937
 
10938
 
10939
BEGIN
10940
	/*--------------- Business Rules Here -------------------*/
10941
	/*-------------------------------------------------------*/
10942
 
10943
 
10944
	/* Base environment copy is a bit more complex when is copied from different bom. TODO */   
10945
	/* CODE HERE */
10946
 
10947
	-- Copy OS Contents
10948
	INSERT INTO OS_CONTENTS ( OS_ID, SEQ_NUM, PROD_ID, PRODUCT_COMMENTS, CHANGE_LOG_FLAG ) 	  
10949
	SELECT os.OS_ID AS OS_ID, 
10950
		   osc.SEQ_NUM, 
10951
		   osc.PROD_ID, 
10952
		   osc.PRODUCT_COMMENTS, 
10953
		   osc.CHANGE_LOG_FLAG
10954
	  FROM OS_CONTENTS osc,
10955
	  	   OPERATING_SYSTEMS os
10956
	 WHERE osc.OS_ID = os.OLD_OS_ID;
10957
 
10958
 
10959
    -- Copy Processes Config
10960
	INSERT INTO PROCESSES_CONFIG ( PROC_ID, PROD_ID, OS_ID, PKG_HEALTH_TAG, CMD_INTERFACE, PKG_ID ) 	  
10961
	SELECT pc.PROC_ID, 
10962
		   pc.PROD_ID, 
10963
		   os.OS_ID AS OS_ID, 
10964
		   pc.PKG_HEALTH_TAG, 
10965
		   pc.CMD_INTERFACE,
10966
		   pc.PKG_ID 
10967
	  FROM PROCESSES_CONFIG pc,
10968
	  	   OPERATING_SYSTEMS os
10969
	 WHERE pc.OS_ID = os.OLD_OS_ID;
10970
 
10971
 
10972
 
10973
END	Paste_OS_Contents;
10974
/*--------------------------------------------------------------------------------------------------*/
10975
PROCEDURE Clean_Old_Id_Column IS
10976
 
10977
 
10978
BEGIN
10979
	/*--------------- Business Rules Here -------------------*/
10980
	/*-------------------------------------------------------*/
10981
 
10982
	-- Clean all old_id columns
10983
	UPDATE BOMS SET OLD_BOM_ID = NULL;
10984
	UPDATE NETWORK_NODES SET OLD_NODE_ID = NULL;
10985
	UPDATE HARDWARE SET OLD_HARDWARE_NAME_ID = NULL;
10986
	UPDATE OPERATING_SYSTEMS SET OLD_OS_ID = NULL;
10987
	UPDATE BASE_ENV SET OLD_BASE_ENV_ID = NULL;
10988
 
10989
 
10990
 
10991
END	Clean_Old_Id_Column;
10992
/*--------------------------------------------------------------------------------------------------*/
10993
PROCEDURE Log_Rejection_Trail ( nEnumEntityType IN REJECTION_TRAIL.ENUM_ENTITY_TYPE%TYPE,
10994
								nEntityId IN REJECTION_TRAIL.ENTITY_ID%TYPE,
10995
								cIsRejected IN REJECTION_TRAIL.IS_REJECTED%TYPE,
10996
								nUserId IN REJECTION_TRAIL.USER_ID%TYPE,
10997
								sComments IN REJECTION_TRAIL.COMMENTS%TYPE DEFAULT NULL ) IS
10998
 
10999
nNextRejectSeq REJECTION_TRAIL.REJECT_SEQ%TYPE;
11000
 
11001
CURSOR curRejectTrail IS
11002
	SELECT MAX(rt.REJECT_SEQ) AS LAST_REJECT_SEQ
11003
	  FROM REJECTION_TRAIL rt
11004
	 WHERE rt.ENTITY_ID = nEntityId
11005
	   AND rt.ENUM_ENTITY_TYPE = nEnumEntityType;
11006
recRejectTrail curRejectTrail%ROWTYPE;
11007
 
11008
BEGIN
11009
	/*--------------- Business Rules Here -------------------*/
11010
	/*-------------------------------------------------------*/
11011
 
11012
	-- Get nNextRejectSeq
11013
	OPEN curRejectTrail;
11014
	FETCH curRejectTrail INTO recRejectTrail;
11015
 
11016
	nNextRejectSeq := 1;
11017
	IF recRejectTrail.LAST_REJECT_SEQ IS NOT NULL THEN
11018
	   nNextRejectSeq := recRejectTrail.LAST_REJECT_SEQ + 1;
11019
	END IF;
11020
 
11021
	CLOSE curRejectTrail;
11022
 
11023
 
11024
 
11025
	-- Insert Rejection Comment
11026
	INSERT INTO REJECTION_TRAIL ( ENUM_ENTITY_TYPE, ENTITY_ID, REJECT_SEQ, IS_REJECTED, COMMENTS, DATE_TIME_STAMP, USER_ID )
11027
	VALUES ( 
11028
		   nEnumEntityType,
11029
		   nEntityId,
11030
		   nNextRejectSeq,
11031
		   cIsRejected,
11032
		   sComments,
11033
		   GET_DATETIME(),
11034
		   nUserId
11035
		    );
11036
 
11037
END	Log_Rejection_Trail;
11038
/*--------------------------------------------------------------------------------------------------*/
11039
PROCEDURE Log_Action ( nUserId IN ACTION_TRAIL.USER_ID%TYPE, 
11040
					   nEvent IN ACTION_TRAIL.ACTION_EVENT%TYPE,
11041
					   sMethod IN ACTION_TRAIL.METHOD_CALL%TYPE DEFAULT NULL,
11042
					   sActionScript IN ACTION_TRAIL.ACTION_SCRIPT%TYPE DEFAULT NULL,
11043
					   sDescription IN ACTION_TRAIL.ACTION_DESCRIPTION%TYPE DEFAULT NULL ) IS
11044
 
11045
BEGIN
11046
	/*--------------- Business Rules Here -------------------*/
11047
	/*-------------------------------------------------------*/
11048
 
11049
	INSERT INTO ACTION_TRAIL ( ACTION_STAMP, USER_ID, ACTION_EVENT, METHOD_CALL, ACTION_SCRIPT, ACTION_DESCRIPTION )
11050
	VALUES (
11051
		    TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' ),
11052
			nUserId,
11053
			nEvent,
11054
			sMethod,
11055
			sActionScript,
11056
			sDescription
11057
		   );
11058
 
11059
END	Log_Action;
11060
/*--------------------------------------------------------------------------------------------------*/
11061
 
11062
 
11063
END pk_Utils;
11064
 
11065
/
11066
 
11067
/
11068
--------------------------------------------------------
11069
--  DDL for Procedure ADD_PROCESS
11070
--------------------------------------------------------
11071
set define off;
11072
 
11073
  CREATE OR REPLACE PROCEDURE "ADD_PROCESS" (nProcId IN PROCESSES_CONFIG.PROC_ID%TYPE,
11074
	   	  		  						 sHealthTag IN PROCESSES_CONFIG.PKG_HEALTH_TAG%TYPE,
11075
	   	  		  						 nOsId IN PROCESSES_CONFIG.OS_ID%TYPE,
11076
										 sCmdInterface IN PROCESSES_CONFIG.CMD_INTERFACE%TYPE,
11077
										 sPkgOwner IN PROCESSES_CONFIG.PKG_OWNER%TYPE,
11078
										 sIsInterface IN PROCESSES_CONFIG.IS_INTERFACE%TYPE,
11079
										 nProdId IN PROCESSES_CONFIG.PROD_ID%TYPE,
11080
										 nUserId IN NUMBER) IS
11081
 
11082
 
11083
PkgName VARCHAR2(100);
11084
nPkgId	NUMBER;										 
11085
 
11086
 
11087
/*Rupesh Release 6/02/2006*/
11088
BEGIN
11089
 
11090
	 SELECT PKG.PKG_NAME, PKG.PKG_ID INTO PkgName, nPkgId
11091
	 FROM PACKAGE_VERSIONS PV, PACKAGES PKG
11092
	 WHERE PV.PV_ID = nProdId
11093
	 AND PKG.PKG_ID = PV.PKG_ID;
11094
 
11095
	 INSERT INTO PROCESSES_CONFIG (PROC_ID, PKG_HEALTH_TAG, OS_ID, CMD_INTERFACE, PKG_OWNER, IS_INTERFACE, PROD_ID, PKG_ID )
11096
	 VALUES (nProcId, sHealthTag, nOsId, sCmdInterface, sPkgOwner, sIsInterface, nProdId, nPkgId);
11097
 
11098
 
11099
 
11100
	-- Log Action --
11101
	pk_Bom.Log_Os_Trail ( nOsId,  
11102
						  'Added process with health tag '|| sHealthTag ||' for product '|| PkgName,
11103
						  nUserId );
11104
 
11105
 
11106
END ADD_PROCESS;
11107
 
11108
/
11109
 
11110
/
11111
--------------------------------------------------------
11112
--  DDL for Procedure LOG_ACTION
11113
--------------------------------------------------------
11114
set define off;
11115
 
11116
  CREATE OR REPLACE PROCEDURE "LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
11117
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
11118
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
11119
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
11120
/* ---------------------------------------------------------------------------
11121
    Version: 3.0
11122
   --------------------------------------------------------------------------- */
11123
 
11124
    ActionTypeId NUMBER;
11125
 
11126
BEGIN
11127
 
11128
    -- Get Action Type FK
11129
    SELECT act.ACTTYPE_ID INTO ActionTypeId
11130
      FROM ACTION_TYPE act
11131
     WHERE act.NAME = enumActionTypeName;
11132
 
11133
 
11134
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
11135
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
11136
 
11137
 
11138
END Log_Action;
11139
 
11140
/
11141
 
11142
/
11143
--------------------------------------------------------
11144
--  DDL for Procedure NEW_UNIT_TEST
11145
--------------------------------------------------------
11146
set define off;
11147
 
11148
  CREATE OR REPLACE PROCEDURE "NEW_UNIT_TEST" ( nPv_id IN NUMBER,
11149
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
11150
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
11151
                                            sDpkg_path IN VARCHAR2,
11152
                                            sResults IN VARCHAR2,
11153
                                            sCompletion_date IN VARCHAR2,
11154
                                            nCompleted_by IN NUMBER,
11155
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
11156
											enumTEST_TYPE_NOT_DONE IN NUMBER,
11157
											outFileName OUT VARCHAR2
11158
                                           ) IS
11159
/* ---------------------------------------------------------------------------
11160
    Version: 3.2.0
11161
   --------------------------------------------------------------------------- */
11162
 
11163
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'DM_TEST';
11164
 
11165
    newID NUMBER;
11166
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
11167
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
11168
 
11169
BEGIN
11170
 
11171
	-- Get new ID --
11172
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
11173
 
11174
 
11175
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
11176
        	outFileName := sResults;
11177
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
11178
        END IF;
11179
 
11180
 
11181
	-- Remove NOT_DONE entry if exists
11182
	DELETE FROM UNIT_TESTS
11183
	 WHERE pv_id = nPv_id
11184
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
11185
 
11186
	--- Add Additional Note ---
11187
    INSERT INTO UNIT_TESTS ( TEST_ID,
11188
								PV_ID,
11189
								TEST_TYPES_FK,
11190
								TEST_SUMMARY,
11191
								COMPLETION_DATE,
11192
								COMPLETED_BY,
11193
								RESULTS_URL,
11194
								RESULTS_ATTACHMENT_NAME )
11195
    VALUES (
11196
       	newID,
11197
           nPv_id,
11198
           nTestTypeId,
11199
           sTest_summary,
11200
           SYSDATE(),
11201
           nCompleted_by,
11202
           ResultsURL,
11203
           ResultsAttachment );
11204
 
11205
END New_Unit_Test;
11206
 
11207
/
11208
 
11209
/
11210
--------------------------------------------------------
11211
--  DDL for Procedure SP_GET_TOC
11212
--------------------------------------------------------
11213
set define off;
11214
 
11215
  CREATE OR REPLACE PROCEDURE "SP_GET_TOC" (toc_Cursor IN OUT PK_BOM_RPT.TOC_Type,Test_Parameter IN varchar2)
11216
AS
11217
  LAST_PAGE INTEGER;
11218
  BEGIN
11219
       DELETE FROM TableOfContents;
11220
       COMMIT;
11221
       EXECUTE IMMEDIATE Test_Parameter;
11222
       SELECT cast(MAX(PAGE) as INTEGER) into LAST_PAGE FROM TableOfContents;
11223
       LAST_PAGE := LAST_PAGE + 2;
11224
       insert into tableofcontents
11225
       values
11226
       ('Base Configurations',LAST_PAGE,GET_DATE());
11227
       COMMIT;
11228
  	   OPEN toc_Cursor FOR
11229
	   	 SELECT * FROM TableOfContents;
11230
END sp_get_toc;
11231
 
11232
 
11233
/
11234
 
11235
/
11236
--------------------------------------------------------
11237
--  DDL for Procedure WRITE_PRODUCTION_HISTORY
11238
--------------------------------------------------------
11239
set define off;
11240
 
11241
  CREATE OR REPLACE PROCEDURE "WRITE_PRODUCTION_HISTORY" (nBomId IN NUMBER,
11242
	   	  		  									  sBomName IN VARCHAR2,
11243
													  sNodeName IN VARCHAR2,
11244
													  sComment IN VARCHAR2,
11245
													  nUserId IN NUMBER
11246
	   	  		  									  )IS
11247
 
11248
/******************************************************************************
11249
   NAME:       WRITE_PRODUCTION_HISTORY
11250
   PURPOSE:    
11251
 
11252
   REVISIONS:
11253
   Ver        Date        Author           Description
11254
   ---------  ----------  ---------------  ------------------------------------
11255
   1.0        6/07/2006          1. Created this procedure.
11256
 
11257
   NOTES:
11258
 
11259
   Automatically available Auto Replace Keywords:
11260
      Object Name:     WRITE_PRODUCTION_HISTORY
11261
      Sysdate:         6/07/2006
11262
      Date and Time:   6/07/2006, 11:52:11 AM, and 6/07/2006 11:52:11 AM
11263
      Username:         (set in TOAD Options, Procedure Editor)
11264
      Table Name:       (set in the "New PL/SQL Object" dialog)
11265
 
11266
******************************************************************************/
11267
BEGIN
11268
   INSERT INTO PRODUCTION_HISTORY (BOM_ID, BOM_NAME, NODE_NAME, COMMENTS, DATE_TIME_STAMP, USER_ID)
11269
   VALUES (nBomId, sBomName, sNodeName, sComment, GET_DATETIME(), nUserId);
11270
 
11271
 
11272
END WRITE_PRODUCTION_HISTORY;
11273
 
11274
/
11275
 
11276
/
4534 dpurdie 11277
--------------------------------------------------------
11278
--  DDL for Synonymn APPLICATIONS
11279
--------------------------------------------------------
11280
 
11281
  CREATE OR REPLACE SYNONYM "APPLICATIONS" FOR "APPLICATIONS";
11282
/
11283
--------------------------------------------------------
11284
--  DDL for Synonymn APPLICATION_PAGES
11285
--------------------------------------------------------
11286
 
11287
  CREATE OR REPLACE SYNONYM "APPLICATION_PAGES" FOR "APPLICATION_PAGES";
11288
/
11289
--------------------------------------------------------
11290
--  DDL for Synonymn CONTROL_OBJECTS
11291
--------------------------------------------------------
11292
 
11293
  CREATE OR REPLACE SYNONYM "CONTROL_OBJECTS" FOR "CONTROL_OBJECTS";
11294
/
11295
--------------------------------------------------------
11296
--  DDL for Synonymn CQ_ISSUES
11297
--------------------------------------------------------
11298
 
11299
  CREATE OR REPLACE SYNONYM "CQ_ISSUES" FOR "CQ_ISSUES";
11300
/
11301
--------------------------------------------------------
11302
--  DDL for Synonymn DATA_PERMISSIONS
11303
--------------------------------------------------------
11304
 
11305
  CREATE OR REPLACE SYNONYM "DATA_PERMISSIONS" FOR "DATA_PERMISSIONS";
11306
/
11307
--------------------------------------------------------
11308
--  DDL for Synonymn DATA_TABLES
11309
--------------------------------------------------------
11310
 
11311
  CREATE OR REPLACE SYNONYM "DATA_TABLES" FOR "DATA_TABLES";
11312
/
11313
--------------------------------------------------------
11314
--  DDL for Synonymn JIRA_ISSUES
11315
--------------------------------------------------------
11316
 
11317
  CREATE OR REPLACE SYNONYM "JIRA_ISSUES" FOR "JIRA_ISSUES";
11318
/
11319
--------------------------------------------------------
11320
--  DDL for Synonymn PACKAGES
11321
--------------------------------------------------------
11322
 
11323
  CREATE OR REPLACE SYNONYM "PACKAGES" FOR "PACKAGES";
11324
/
11325
--------------------------------------------------------
11326
--  DDL for Synonymn PACKAGE_DEPENDENCIES
11327
--------------------------------------------------------
11328
 
11329
  CREATE OR REPLACE SYNONYM "PACKAGE_DEPENDENCIES" FOR "PACKAGE_DEPENDENCIES";
11330
/
11331
--------------------------------------------------------
11332
--  DDL for Synonymn PACKAGE_PATCHES
11333
--------------------------------------------------------
11334
 
11335
  CREATE OR REPLACE SYNONYM "PACKAGE_PATCHES" FOR "PACKAGE_PATCHES";
11336
/
11337
--------------------------------------------------------
11338
--  DDL for Synonymn PACKAGE_VERSIONS
11339
--------------------------------------------------------
11340
 
11341
  CREATE OR REPLACE SYNONYM "PACKAGE_VERSIONS" FOR "PACKAGE_VERSIONS";
11342
/
11343
--------------------------------------------------------
11344
--  DDL for Synonymn PAGE_CONTROL_OBJECTS
11345
--------------------------------------------------------
11346
 
11347
  CREATE OR REPLACE SYNONYM "PAGE_CONTROL_OBJECTS" FOR "PAGE_CONTROL_OBJECTS";
11348
/
11349
--------------------------------------------------------
11350
--  DDL for Synonymn PERMISSION_TYPES
11351
--------------------------------------------------------
11352
 
11353
  CREATE OR REPLACE SYNONYM "PERMISSION_TYPES" FOR "PERMISSION_TYPES";
11354
/
11355
--------------------------------------------------------
11356
--  DDL for Synonymn PK_AMUTILS
11357
--------------------------------------------------------
11358
 
11359
  CREATE OR REPLACE SYNONYM "PK_AMUTILS" FOR "PK_AMUTILS";
11360
/
11361
--------------------------------------------------------
11362
--  DDL for Synonymn PK_SECURITY
11363
--------------------------------------------------------
11364
 
11365
  CREATE OR REPLACE SYNONYM "PK_SECURITY" FOR "PK_SECURITY";
11366
/
11367
--------------------------------------------------------
11368
--  DDL for Synonymn PLATFORMS
11369
--------------------------------------------------------
11370
 
11371
  CREATE OR REPLACE SYNONYM "PLATFORMS" FOR "PLATFORMS";
11372
/
11373
--------------------------------------------------------
11374
--  DDL for Synonymn PROCESSES
11375
--------------------------------------------------------
11376
 
11377
  CREATE OR REPLACE SYNONYM "PROCESSES" FOR "PROCESSES";
11378
/
11379
--------------------------------------------------------
11380
--  DDL for Synonymn PRODUCT_COMPONENTS
11381
--------------------------------------------------------
11382
 
11383
  CREATE OR REPLACE SYNONYM "PRODUCT_COMPONENTS" FOR "PRODUCT_COMPONENTS";
11384
/
11385
--------------------------------------------------------
11386
--  DDL for Synonymn PROJECTS
11387
--------------------------------------------------------
11388
 
11389
  CREATE OR REPLACE SYNONYM "PROJECTS" FOR "PROJECTS";
11390
/
11391
--------------------------------------------------------
11392
--  DDL for Synonymn PROJECT_EXTENTIONS
11393
--------------------------------------------------------
11394
 
11395
  CREATE OR REPLACE SYNONYM "PROJECT_EXTENTIONS" FOR "PROJECT_EXTENTIONS";
11396
/
11397
--------------------------------------------------------
11398
--  DDL for Synonymn RELEASE_CONTENT
11399
--------------------------------------------------------
11400
 
11401
  CREATE OR REPLACE SYNONYM "RELEASE_CONTENT" FOR "RELEASE_CONTENT";
11402
/
11403
--------------------------------------------------------
11404
--  DDL for Synonymn RELEASE_TAGS
11405
--------------------------------------------------------
11406
 
11407
  CREATE OR REPLACE SYNONYM "RELEASE_TAGS" FOR "RELEASE_TAGS";
11408
/
11409
--------------------------------------------------------
11410
--  DDL for Synonymn RM_USERS
11411
--------------------------------------------------------
11412
 
11413
  CREATE OR REPLACE SYNONYM "RM_USERS" FOR "USERS";
11414
/
11415
--------------------------------------------------------
11416
--  DDL for Synonymn ROLES
11417
--------------------------------------------------------
11418
 
11419
  CREATE OR REPLACE SYNONYM "ROLES" FOR "ROLES";
11420
/
11421
--------------------------------------------------------
11422
--  DDL for Synonymn ROLE_PRIVILEGES
11423
--------------------------------------------------------
11424
 
11425
  CREATE OR REPLACE SYNONYM "ROLE_PRIVILEGES" FOR "ROLE_PRIVILEGES";
11426
/
11427
--------------------------------------------------------
11428
--  DDL for Synonymn SEED_PACKAGE_NAMES_VERSIONS
11429
--------------------------------------------------------
11430
 
11431
  CREATE OR REPLACE SYNONYM "SEED_PACKAGE_NAMES_VERSIONS" FOR "SEED_PACKAGE_NAMES_VERSIONS";
11432
/
11433
--------------------------------------------------------
11434
--  DDL for Synonymn USERS
11435
--------------------------------------------------------
11436
 
11437
  CREATE OR REPLACE SYNONYM "USERS" FOR "USERS";
11438
/
11439
--------------------------------------------------------
11440
--  DDL for Synonymn USER_APPLICATIONS
11441
--------------------------------------------------------
11442
 
11443
  CREATE OR REPLACE SYNONYM "USER_APPLICATIONS" FOR "USER_APPLICATIONS";
11444
/
11445
--------------------------------------------------------
11446
--  DDL for Synonymn USER_ROLES
11447
--------------------------------------------------------
11448
 
11449
  CREATE OR REPLACE SYNONYM "USER_ROLES" FOR "USER_ROLES";
11450
/
11451
--------------------------------------------------------
11452
--  DDL for Synonymn VTREES
11453
--------------------------------------------------------
11454
 
11455
  CREATE OR REPLACE SYNONYM "VTREES" FOR "VTREES";
11456
/
11457
--------------------------------------------------------
11458
--  DDL for Synonymn VTREES_WORLD
11459
--------------------------------------------------------
11460
 
11461
  CREATE OR REPLACE SYNONYM "VTREES_WORLD" FOR "VTREES_WORLD";
11462
/