[Home] [Help]
PACKAGE BODY: APPS.MSD_COPY_DEMAND_PLAN
Source
1 PACKAGE BODY MSD_COPY_DEMAND_PLAN AS
2 /* $Header: msdcpdpb.pls 120.6 2006/03/31 06:18:36 brampall noship $ */
3
4 /* Public Procedures */
5
6 function get_parameter_type(p_demand_plan_id number,
7 p_parameter_id varchar2)
8 return varchar2
9 is
10 cursor par_type is
11 select parameter_type
12 from msd_dp_parameters
13 where demand_plan_id=p_demand_plan_id
14 and to_char(parameter_id)=rtrim(p_parameter_id);
15
16 l_par_type varchar2(300) := null;
17
18 begin
19
20 open par_type;
21 fetch par_type into l_par_type;
22 close par_type;
23
24 return l_par_type;
25
26 end get_parameter_type;
27
28 function copy_demand_plan (
29 p_new_dp_id in out nocopy number,
30 p_target_demand_plan_name in VARCHAR2,
31 p_target_demand_plan_descr in VARCHAR2,
32 p_shared_db_location in VARCHAR2,
33 p_source_demand_plan_id in NUMBER,
34 p_organization_id in number,
35 p_instance_id in number,
36 p_errcode in out nocopy varchar2
37 ) return NUMBER IS
38
39 lv_error_cd NUMBER;
40 lv_status_id NUMBER;
41 x_demand_plan_id number ;
42 x_new_scenario_id number;
43 x_new_document_id number;
44 x_new_formula_id number;
45 x_dp_exists number := 0 ;
46 No_Source_Dp EXCEPTION;
47
48 cursor cur_scenario is
49 select scenario_id
50 from msd_dp_scenarios
51 where demand_plan_id = p_source_demand_plan_id
52 and (nvl(supply_plan_flag,'N') = 'N'
53 or p_source_demand_plan_id not in
54 (select demand_plan_id
55 from msd_demand_plans
56 where template_flag = 'Y'));
57
58 cursor cur_document is
59 select document_id
60 from msd_dp_seeded_documents
61 where demand_plan_id = p_source_demand_plan_id;
62
63 cursor cur_formula is
64 select formula_id
65 from msd_dp_formulas
66 where demand_plan_id = p_source_demand_plan_id
67 and (nvl(supply_plan_flag,'N') = 'N'
68 or p_source_demand_plan_id not in
69 (select demand_plan_id
70 from msd_demand_plans
71 where template_flag = 'Y'))
72 order by creation_sequence;
73
74 cursor get_template_flag is
75 select template_flag
76 from msd_demand_plans
77 where demand_plan_id=p_source_demand_plan_id;
78
79 cursor get_template_id is
80 select template_id
81 from msd_demand_plans
82 where demand_plan_id=x_demand_plan_id;
83
84 cursor replace_equation(p_demand_plan_id number) is
85 select parameter_type,equation,post_calculation
86 from msd_dp_parameters
87 where demand_plan_id=p_demand_plan_id;
88
89 cursor replace_associate_param is
90 select scenario_id,associate_parameter
91 from msd_dp_scenarios
92 where demand_plan_id=x_demand_plan_id;
93
94 l_template_flag varchar2(3);
95
96 l_template_id number;
97
98 l_par_type varchar2(300);
99 BEGIN
100
101
102 select msc_plans_s.nextval into x_demand_plan_id
103 from dual ;
104
105
106
107 lv_status_id := 5;
108
109 select count(*) into x_dp_exists
110 from msd_demand_plans
111 where demand_plan_id = p_source_demand_plan_id;
112 if x_dp_exists = 0 then
113 raise No_Source_Dp ;
114 end if ;
115
116
117 lv_status_id := 10;
118
119 INSERT INTO msd_demand_plans
120 ( DEMAND_PLAN_ID
121 ,ORGANIZATION_ID
122 ,DEMAND_PLAN_NAME
123 ,DESCRIPTION
124 ,CALENDAR_TYPE
125 ,CALENDAR_CODE
126 ,PERIOD_SET_NAME
127 ,BASE_UOM
128 ,AVERAGE_DISCOUNT
129 ,CATEGORY_SET_ID
130 ,LOWEST_PERIOD_TYPE
131 ,HISTORY_START_DATE
132 ,LAST_UPDATE_DATE
133 ,LAST_UPDATED_BY
134 ,CREATION_DATE
135 ,CREATED_BY
136 ,LAST_UPDATE_LOGIN
137 ,REQUEST_ID
138 ,PROGRAM_APPLICATION_ID
139 ,PROGRAM_ID
140 ,PROGRAM_UPDATE_DATE
141 ,ATTRIBUTE_CATEGORY
142 ,ATTRIBUTE1
143 ,ATTRIBUTE2
144 ,ATTRIBUTE3
145 ,ATTRIBUTE4
146 ,ATTRIBUTE5
147 ,ATTRIBUTE6
148 ,ATTRIBUTE7
149 ,ATTRIBUTE8
150 ,ATTRIBUTE9
151 ,ATTRIBUTE10
152 ,ATTRIBUTE11
153 ,ATTRIBUTE12
154 ,ATTRIBUTE13
155 ,ATTRIBUTE14
156 ,ATTRIBUTE15
157 ,SR_INSTANCE_ID
158 ,VALID_FLAG
159 ,ENABLE_FCST_EXPLOSION
160 ,USE_ORG_SPECIFIC_BOM_FLAG
161 ,ROUNDOFF_THREASHOLD
162 ,ROUNDOFF_DECIMAL_PLACES
163 ,AMT_THRESHOLD
164 ,AMT_DECIMAL_PLACES
165 ,G_MIN_TIM_LVL_ID
166 ,F_MIN_TIM_LVL_ID
167 ,C_MIN_TIM_LVL_ID
168 ,M_MIN_TIM_LVL_ID
169 ,STRIPE_INSTANCE
170 ,STRIPE_LEVEL_ID
171 ,STRIPE_SR_LEVEL_PK
172 ,STRIPE_STREAM_NAME
173 ,STRIPE_STREAM_DESIG
174 ,ROUNDING_LEVEL_ID
175 ,TEMPLATE_FLAG
176 ,TEMPLATE_ID
177 ,DEFAULT_TEMPLATE
178 ,PLAN_TYPE
179 ,LIAB_PLAN_ID
180 ,LIAB_PLAN_NAME
181 ,PLAN_START_DATE
182 ,PLAN_END_DATE
183 ,PREV_LIAB_PUB_PLAN_START_DATE
184 ,PREVIOUS_PLAN_START_DATE
185 ,LIABILITY_REVISION_NUM
186 )
187 SELECT
188 x_demand_plan_id
189 ,nvl(p_organization_id, dp.ORGANIZATION_ID)
190 ,p_target_demand_plan_name
191 ,p_target_demand_plan_descr
192 ,dp.CALENDAR_TYPE
193 ,dp.CALENDAR_CODE
194 ,dp.PERIOD_SET_NAME
195 ,dp.BASE_UOM
196 ,dp.AVERAGE_DISCOUNT
197 ,dp.CATEGORY_SET_ID
198 ,dp.LOWEST_PERIOD_TYPE
199 ,dp.HISTORY_START_DATE
200 ,SYSDATE
201 ,fnd_global.user_id
202 ,SYSDATE
203 ,fnd_global.user_id
204 ,fnd_global.login_id
205 ,NULL
206 ,NULL
207 ,NULL
208 ,SYSDATE
209 ,dp.ATTRIBUTE_CATEGORY
210 ,dp.ATTRIBUTE1
211 ,dp.ATTRIBUTE2
212 ,dp.ATTRIBUTE3
213 ,dp.ATTRIBUTE4
214 ,dp.ATTRIBUTE5
215 ,dp.ATTRIBUTE6
216 ,dp.ATTRIBUTE7
217 ,dp.ATTRIBUTE8
218 ,dp.ATTRIBUTE9
219 ,dp.ATTRIBUTE10
220 ,dp.ATTRIBUTE11
221 ,dp.ATTRIBUTE12
222 ,dp.ATTRIBUTE13
223 ,dp.ATTRIBUTE14
224 ,dp.ATTRIBUTE15
225 ,nvl(p_instance_id, dp.SR_INSTANCE_ID)
226 ,1
227 ,dp.ENABLE_FCST_EXPLOSION
228 ,dp.USE_ORG_SPECIFIC_BOM_FLAG
229 ,dp.ROUNDOFF_THREASHOLD
230 ,dp.ROUNDOFF_DECIMAL_PLACES
231 ,dp.AMT_THRESHOLD
232 ,dp.AMT_DECIMAL_PLACES
233 ,dp.G_MIN_TIM_LVL_ID
234 ,dp.F_MIN_TIM_LVL_ID
235 ,dp.C_MIN_TIM_LVL_ID
236 ,dp.M_MIN_TIM_LVL_ID
237 ,dp.STRIPE_INSTANCE
238 ,dp.STRIPE_LEVEL_ID
239 ,dp.STRIPE_SR_LEVEL_PK
240 ,dp.STRIPE_STREAM_NAME
241 ,dp.STRIPE_STREAM_DESIG
242 ,dp.ROUNDING_LEVEL_ID
243 ,'N'
244 ,dp.TEMPLATE_ID
245 ,'N'
246 ,dp.PLAN_TYPE
247 ,dp.LIAB_PLAN_ID
248 ,dp.LIAB_PLAN_NAME
249 ,dp.PLAN_START_DATE
250 ,dp.PLAN_END_DATE
251 ,dp.PREV_LIAB_PUB_PLAN_START_DATE
252 ,dp.PREVIOUS_PLAN_START_DATE
253 ,dp.LIABILITY_REVISION_NUM
254 FROM
255 msd_demand_plans dp
256 WHERE
257 DEMAND_PLAN_ID = p_source_demand_plan_id ;
258
259 INSERT INTO msd_demand_plans_tl
260 (
261 DEMAND_PLAN_ID
262 ,DESCRIPTION
263 ,LANGUAGE
264 ,SOURCE_LANG
265 ,CREATION_DATE
266 ,CREATED_BY
267 ,LAST_UPDATE_DATE
268 ,LAST_UPDATED_BY
269 ,LAST_UPDATE_LOGIN
270 ,REQUEST_ID
271 ,PROGRAM_APPLICATION_ID
272 ,PROGRAM_ID
273 ,PROGRAM_UPDATE_DATE
274 )
275 SELECT
276 x_demand_plan_id
277 ,p_target_demand_plan_descr
278 ,USERENV('LANG')
279 ,USERENV('LANG')
280 ,SYSDATE
281 ,fnd_global.user_id
282 ,SYSDATE
283 ,fnd_global.user_id
284 ,fnd_global.login_id
285 ,NULL
286 ,NULL
287 ,NULL
288 ,SYSDATE
289 FROM DUAL;
290
291 lv_status_id := 20;
292
293 INSERT INTO msd_dp_dimensions
294 ( DEMAND_PLAN_ID
295 ,DP_DIMENSION_CODE
296 ,DIMENSION_CODE
297 ,LAST_UPDATE_DATE
298 ,LAST_UPDATED_BY
299 ,CREATION_DATE
300 ,CREATED_BY
301 ,LAST_UPDATE_LOGIN
302 ,REQUEST_ID
303 ,PROGRAM_APPLICATION_ID
304 ,PROGRAM_ID
305 ,PROGRAM_UPDATE_DATE
306 ,DELETEABLE_FLAG)
307 SELECT
308 x_demand_plan_id
309 ,dim.DP_DIMENSION_CODE
310 ,dim.DIMENSION_CODE
311 ,SYSDATE
312 ,fnd_global.user_id
313 ,SYSDATE
314 ,fnd_global.user_id
315 ,fnd_global.login_id
316 ,NULL
317 ,NULL
318 ,NULL
319 ,SYSDATE
320 ,dim.DELETEABLE_FLAG
321 FROM
322 msd_dp_dimensions dim
323 WHERE
324 DEMAND_PLAN_ID = p_source_demand_plan_id;
325
326 INSERT INTO msd_dp_hierarchies
327 ( DEMAND_PLAN_ID
328 ,DP_DIMENSION_CODE
329 ,HIERARCHY_ID
330 ,LAST_UPDATE_DATE
331 ,LAST_UPDATED_BY
332 ,CREATION_DATE
333 ,CREATED_BY
334 ,LAST_UPDATE_LOGIN
335 ,REQUEST_ID
336 ,PROGRAM_APPLICATION_ID
337 ,PROGRAM_ID
338 ,PROGRAM_UPDATE_DATE
339 ,DELETEABLE_FLAG)
340
341 SELECT
342 x_demand_plan_id
343 ,hie.DP_DIMENSION_CODE
344 ,hie.HIERARCHY_ID
345 ,SYSDATE
346 ,fnd_global.user_id
347 ,SYSDATE
348 ,fnd_global.user_id
349 ,fnd_global.login_id
350 ,NULL
351 ,NULL
352 ,NULL
353 ,SYSDATE
354 ,hie.DELETEABLE_FLAG
355 FROM msd_dp_hierarchies hie
356 WHERE DEMAND_PLAN_ID = p_source_demand_plan_id;
357
358
359
360 lv_status_id := 30;
361
362 INSERT INTO msd_dp_parameters
363 (DEMAND_PLAN_ID,
364 PARAMETER_ID,
365 PARAMETER_TYPE,
366 PARAMETER_NAME,
367 START_DATE,
368 END_DATE,
369 OUTPUT_SCENARIO_ID,
370 INPUT_SCENARIO_ID,
371 INPUT_DEMAND_PLAN_ID,
372 REVISION,
373 FORECAST_DATE_USED,
374 FORECAST_BASED_ON,
375 QUANTITY_USED,
376 AMOUNT_USED,
377 FORECAST_USED,
378 PERIOD_TYPE,
379 FACT_TYPE,
380 VIEW_NAME,
381 ALLO_AGG_BASIS_STREAM_ID,
382 NUMBER_OF_PERIOD,
383 LAST_UPDATE_DATE,
384 LAST_UPDATED_BY,
385 CREATION_DATE,
386 CREATED_BY,
387 LAST_UPDATE_LOGIN,
388 REQUEST_ID,
389 PROGRAM_APPLICATION_ID,
390 PROGRAM_ID,
391 PROGRAM_UPDATE_DATE,
392 DELETEABLE_FLAG,
393 CAPACITY_USAGE_RATIO,
394 SUPPLY_PLAN_FLAG,
395 PRICE_LIST_NAME,
396 STREAM_TYPE,
397 EQUATION,
398 CALCULATED_ORDER,
399 POST_CALCULATION)
400 SELECT
401 x_demand_plan_id
402 ,msd_dp_parameters_s.nextval
403 ,par.PARAMETER_TYPE
404 ,par.PARAMETER_NAME
405 ,par.START_DATE
406 ,par.END_DATE
407 ,par.OUTPUT_SCENARIO_ID
408 ,par.INPUT_SCENARIO_ID
409 ,par.INPUT_DEMAND_PLAN_ID
410 ,par.REVISION
411 ,par.FORECAST_DATE_USED
412 ,par.FORECAST_BASED_ON
413 ,par.QUANTITY_USED
414 ,par.AMOUNT_USED
415 ,par.FORECAST_USED
416 ,par.PERIOD_TYPE
417 ,par.FACT_TYPE
418 ,par.VIEW_NAME
419 ,par.ALLO_AGG_BASIS_STREAM_ID
420 ,par.NUMBER_OF_PERIOD
421 ,SYSDATE
422 ,fnd_global.user_id
423 ,SYSDATE
424 ,fnd_global.user_id
425 ,fnd_global.login_id
426 ,NULL
427 ,NULL
428 ,NULL
429 ,SYSDATE
430 ,par.DELETEABLE_FLAG
431 ,par.CAPACITY_USAGE_RATIO
432 ,par.SUPPLY_PLAN_FLAG
433 ,par.PRICE_LIST_NAME
434 ,par.stream_type
435 ,par.equation
436 ,par.calculated_order
437 ,par.post_calculation
438 FROM
439 msd_dp_parameters par
440 WHERE
441 DEMAND_PLAN_ID = p_source_demand_plan_id
442 and nvl(par.stream_type,'ABCD') not in ('ARCHIVED','ARCHIVED_TIM')
443 and (nvl(supply_plan_flag,'N') = 'N'
444 or p_source_demand_plan_id not in
445 (select demand_plan_id
446 from msd_demand_plans
447 where template_flag = 'Y'));
448
449 open get_template_flag;
450 fetch get_template_flag into l_template_flag;
451 close get_template_flag;
452
453 if nvl(l_template_flag,'N') = 'N' then
454
455 open get_template_id;
456 fetch get_template_id into l_template_id;
457 close get_template_id;
458
459 for rep_rec in replace_equation(l_template_id)
460 loop
461 update msd_dp_parameters set equation = rep_rec.equation, post_calculation=rep_rec.post_calculation where demand_plan_id=x_demand_plan_id and parameter_type=rep_rec.parameter_type;
462
463 end loop;
464 end if;
465
466 /* Once Parameters are re-created. Update new Parameters with Allocation/Aggregation
467 * Stream Id's to simulate Source Plan but point to Destination Plan.
468 */
469
470 UPDATE msd_dp_parameters mdp
471 SET
472 mdp.allo_agg_basis_stream_id =
473 (
474 select mdp1.parameter_id
475 from
476 msd_dp_parameters mdp1,
477 (
478 select parameter_id,parameter_type, parameter_name
479 from
480 msd_dp_parameters
481 ) mdp2
482 where
483 mdp2.parameter_id = mdp.allo_agg_basis_stream_id
484 and
485 mdp1.parameter_type = mdp2.parameter_type
486 and
487 (((mdp2.parameter_name is null) and (mdp1.parameter_name is null))
488 or
489 ( (mdp2.parameter_name is not null)
490 and
491 (mdp1.parameter_name is not null)
492 and
493 (mdp1.parameter_name = mdp2.parameter_name)
494 ))
495 and
496 mdp1.demand_plan_id = x_demand_plan_id
497 )
498 where
499 (mdp.allo_agg_basis_stream_id is not null)
500 and demand_plan_id = x_demand_plan_id;
501
502
503
504
505 lv_status_id := 40;
506 for lv_cur_scenario_rec in cur_scenario LOOP
507
508
509 select msd_dp_scenarios_s.nextval into x_new_scenario_id
510 from dual;
511
512
513 INSERT INTO msd_dp_scenarios
514 ( DEMAND_PLAN_ID
515 ,SCENARIO_ID
516 ,SCENARIO_NAME
517 ,DESCRIPTION
518 ,OUTPUT_PERIOD_TYPE
519 ,HORIZON_START_DATE
520 ,HORIZON_END_DATE
521 ,FORECAST_DATE_USED
522 ,FORECAST_BASED_ON
523 ,PARAMETER_NAME
524 ,LAST_UPDATE_DATE
525 ,LAST_UPDATED_BY
526 ,CREATION_DATE
527 ,CREATED_BY
528 ,LAST_UPDATE_LOGIN
529 ,REQUEST_ID
530 ,PROGRAM_APPLICATION_ID
531 ,PROGRAM_ID
532 ,PROGRAM_UPDATE_DATE
533 ,ATTRIBUTE_CATEGORY
534 ,ATTRIBUTE1
535 ,ATTRIBUTE2
536 ,ATTRIBUTE3
537 ,ATTRIBUTE4
538 ,ATTRIBUTE5
539 ,ATTRIBUTE6
540 ,ATTRIBUTE7
541 ,ATTRIBUTE8
542 ,ATTRIBUTE9
543 ,ATTRIBUTE10
544 ,ATTRIBUTE11
545 ,ATTRIBUTE12
546 ,ATTRIBUTE13
547 ,ATTRIBUTE14
548 ,ATTRIBUTE15
549 ,SCENARIO_TYPE
550 ,STATUS
551 ,HISTORY_START_DATE
552 ,HISTORY_END_DATE
553 ,PUBLISH_FLAG
554 ,ENABLE_FLAG
555 ,PRICE_LIST_NAME
556 ,ERROR_TYPE
557 ,CONSUME_FLAG
558 ,DELETEABLE_FLAG
559 ,SUPPLY_PLAN_FLAG
560 ,SUPPLY_PLAN_ID
561 ,SUPPLY_PLAN_NAME
562 ,OLD_SUPPLY_PLAN_ID
563 ,OLD_SUPPLY_PLAN_NAME
564 ,SC_TYPE
565 , ASSOCIATE_PARAMETER
566 ,dmd_priority_scenario_id -- Bug# 4710963
567 )
568 SELECT
569 x_demand_plan_id
570 ,x_new_scenario_id
571 ,sce.SCENARIO_NAME
572 ,sce.DESCRIPTION
573 ,sce.OUTPUT_PERIOD_TYPE
574 ,sce.HORIZON_START_DATE
575 ,sce.HORIZON_END_DATE
576 ,sce.FORECAST_DATE_USED
577 ,sce.FORECAST_BASED_ON
578 ,sce.PARAMETER_NAME
579 ,SYSDATE
580 ,fnd_global.user_id
581 ,SYSDATE
582 ,fnd_global.user_id
583 ,fnd_global.login_id
584 ,NULL
585 ,NULL
586 ,NULL
587 ,SYSDATE
588 ,sce.ATTRIBUTE_CATEGORY
589 ,sce.ATTRIBUTE1
590 ,sce.ATTRIBUTE2
591 ,sce.ATTRIBUTE3
592 ,sce.ATTRIBUTE4
593 ,sce.ATTRIBUTE5
594 ,sce.ATTRIBUTE6
595 ,sce.ATTRIBUTE7
596 ,sce.ATTRIBUTE8
597 ,sce.ATTRIBUTE9
598 ,sce.ATTRIBUTE10
599 ,sce.ATTRIBUTE11
600 ,sce.ATTRIBUTE12
601 ,sce.ATTRIBUTE13
602 ,sce.ATTRIBUTE14
603 ,sce.ATTRIBUTE15
604 ,sce.SCENARIO_TYPE
605 ,sce.STATUS
606 ,sce.HISTORY_START_DATE
607 ,sce.HISTORY_END_DATE
608 ,sce.PUBLISH_FLAG
609 ,sce.ENABLE_FLAG
610 ,sce.PRICE_LIST_NAME
611 ,sce.ERROR_TYPE
612 ,sce.CONSUME_FLAG
613 ,sce.DELETEABLE_FLAG
614 ,sce.SUPPLY_PLAN_FLAG
615 ,sce.SUPPLY_PLAN_ID
616 ,sce.SUPPLY_PLAN_NAME
617 --,sce.OLD_SUPPLY_PLAN_ID -- Bug# 4575137
618 --,sce.OLD_SUPPLY_PLAN_NAME -- Bug# 4575137
619 ,NULL
620 ,NULL
621 ,sce.SC_TYPE
622 ,sce.ASSOCIATE_PARAMETER
623 ,sce.dmd_priority_scenario_id -- Bug# 4710963
624 FROM
625 msd_dp_scenarios sce
626 WHERE
627 scenario_id = lv_cur_scenario_rec.scenario_id AND demand_plan_id =
628 p_source_demand_plan_id;
629
630
631 INSERT INTO msd_dp_scenarios_tl
632 ( DEMAND_PLAN_ID
633 ,SCENARIO_ID
634 ,DESCRIPTION
635 ,LANGUAGE
636 ,SOURCE_LANG
637 ,CREATION_DATE
638 ,CREATED_BY
639 ,LAST_UPDATE_DATE
640 ,LAST_UPDATED_BY
641 ,LAST_UPDATE_LOGIN
642 ,REQUEST_ID
643 ,PROGRAM_APPLICATION_ID
644 ,PROGRAM_ID
645 ,PROGRAM_UPDATE_DATE
646 )
647 SELECT
648 x_demand_plan_id
649 ,x_new_scenario_id
650 ,sce.description
651 ,USERENV('LANG')
652 ,USERENV('LANG')
653 ,SYSDATE
654 ,fnd_global.user_id
655 ,SYSDATE
656 ,fnd_global.user_id
657 ,fnd_global.login_id
658 ,NULL
659 ,NULL
660 ,NULL
661 ,SYSDATE
662 FROM
663 msd_dp_scenarios_tl sce
664 WHERE
665 scenario_id = lv_cur_scenario_rec.scenario_id
666 AND demand_plan_id = p_source_demand_plan_id
667 and USERENV('LANG') = language;
668
669
670
671 lv_status_id := 50;
672
673
674 INSERT INTO msd_dp_scenario_events
675
676 ( DEMAND_PLAN_ID
677 ,SCENARIO_ID
678 ,EVENT_ID
679 ,LAST_UPDATE_DATE
680 ,LAST_UPDATED_BY
681 ,CREATION_DATE
682 ,CREATED_BY
683 ,LAST_UPDATE_LOGIN
684 ,REQUEST_ID
685 ,PROGRAM_APPLICATION_ID
686 ,PROGRAM_ID
687 ,PROGRAM_UPDATE_DATE
688 ,EVENT_ASSOCIATION_PRIORITY
689 ,DELETEABLE_FLAG
690 )
691
692 SELECT
693 x_demand_plan_id
694 ,x_new_scenario_id
695 ,scev.EVENT_ID
696 ,LAST_UPDATE_DATE
697 ,LAST_UPDATED_BY
698 ,CREATION_DATE
699 ,CREATED_BY
700 ,LAST_UPDATE_LOGIN
701 ,REQUEST_ID
702 ,PROGRAM_APPLICATION_ID
703 ,PROGRAM_ID
704 ,PROGRAM_UPDATE_DATE
705 ,scev.EVENT_ASSOCIATION_PRIORITY
706 ,scev.DELETEABLE_FLAG
707 FROM
708 msd_dp_scenario_events scev
709 WHERE
710 scenario_id = lv_cur_scenario_rec.scenario_id AND demand_plan_id
711 = p_source_demand_plan_id;
712
713 lv_status_id := 60;
714 INSERT INTO msd_dp_scenario_output_levels
715 (DEMAND_PLAN_ID
716 ,SCENARIO_ID
717 ,LEVEL_ID
718 ,LAST_UPDATE_DATE
719 ,LAST_UPDATED_BY
720 ,CREATION_DATE
721 ,CREATED_BY
722 ,LAST_UPDATE_LOGIN
723 ,REQUEST_ID
724 ,PROGRAM_APPLICATION_ID
725 ,PROGRAM_ID
726 ,PROGRAM_UPDATE_DATE
727 ,DELETEABLE_FLAG
728 )
729
730 SELECT
731 x_demand_plan_id
732 ,x_new_scenario_id
733 ,sceol.LEVEL_ID
734 ,SYSDATE
735 ,fnd_global.user_id
736 ,SYSDATE
737 ,fnd_global.user_id
738 ,fnd_global.login_id
739 ,NULL
740 ,NULL
741 ,NULL
742 ,SYSDATE
743 ,sceol.DELETEABLE_FLAG
744 FROM
745 msd_dp_scenario_output_levels sceol
746 WHERE
747 scenario_id = lv_cur_scenario_rec.scenario_id AND demand_plan_id
748 = p_source_demand_plan_id;
749
750 END LOOP;
751
752
753 if nvl(l_template_flag,'N') = 'N' then
754
755 for rep_assoc in replace_associate_param
756 loop
757 l_par_type := get_parameter_type(p_source_demand_plan_id,rep_assoc.associate_parameter);
758
759 update msd_dp_scenarios set associate_parameter = l_par_type where demand_plan_id=x_demand_plan_id and scenario_id=rep_assoc.scenario_id;
760 end loop;
761
762 msd_apply_template_demand_plan.replace_associate_parameters(x_demand_plan_id);
763
764 end if;
765
766 lv_status_id := 65;
767
768
769
770 INSERT INTO msd_dp_events
771 ( DP_EVENT_ID,
772 EVENT_ID,
773 DEMAND_PLAN_ID,
774 CREATION_DATE,
775 CREATED_BY,
776 LAST_UPDATE_DATE,
777 LAST_UPDATED_BY,
778 LAST_UPDATE_LOGIN,
779 REQUEST_ID,
780 PROGRAM_APPLICATION_ID,
781 PROGRAM_ID,
782 PROGRAM_UPDATE_DATE,
783 DELETEABLE_FLAG
784 )
785 SELECT
786 msd_dp_events_s.nextval
787 ,dpev.event_id
788 ,x_demand_plan_id
789 ,SYSDATE
790 ,fnd_global.user_id
791 ,SYSDATE
792 ,fnd_global.user_id
793 ,fnd_global.login_id
794 ,NULL
795 ,NULL
796 ,NULL
797 ,SYSDATE
798 ,dpev.DELETEABLE_FLAG
799 FROM
800 msd_dp_events dpev
801 WHERE
802 demand_plan_id = p_source_demand_plan_id;
803
804 INSERT INTO msd_dp_price_lists
805 ( DP_PRICE_LIST_ID,
806 DEMAND_PLAN_ID,
807 PRICE_LIST_NAME,
808 CREATION_DATE,
809 CREATED_BY,
810 LAST_UPDATE_DATE,
811 LAST_UPDATED_BY,
812 LAST_UPDATE_LOGIN,
813 REQUEST_ID,
814 PROGRAM_APPLICATION_ID,
815 PROGRAM_ID,
816 PROGRAM_UPDATE_DATE,
817 DELETEABLE_FLAG
818 )
819 SELECT
820 msd_dp_price_lists_s.nextval
821 ,x_demand_plan_id
822 ,dppl.price_list_name
823 ,SYSDATE
824 ,fnd_global.user_id
825 ,SYSDATE
826 ,fnd_global.user_id
827 ,fnd_global.login_id
828 ,NULL
829 ,NULL
830 ,NULL
831 ,SYSDATE
832 ,dppl.DELETEABLE_FLAG
833 FROM
834 msd_dp_price_lists dppl
835 WHERE
836 demand_plan_id = p_source_demand_plan_id;
837
838
839 lv_status_id := 70;
840
841 INSERT INTO msd_dp_express_setup
842 ( DEMAND_PLAN_ID
843 ,ORGANIZATION_ID
844 ,SHARED_DB_PREFIX
845 ,CODE_LOCATION
846 ,SHARED_DB_LOCATION
847 ,EXPRESS_MACHINE_PORT
848 ,OWA_VIRTUAL_PATH_NAME
849 ,EAD_NAME
850 ,EXPRESS_CONNECT_STRING
851 ,SETUP1
852 ,SETUP2
853 ,SETUP3
854 ,SETUP4
855 ,SETUP5
856 )
857 SELECT
858 x_demand_plan_id
859 ,nvl(p_organization_id, exp.ORGANIZATION_ID)
860 ,'MSD' || to_char(x_demand_plan_id)
861 ,null
862 ,null
863 ,null
864 ,null
865 ,null
866 ,null
867 ,null
868 ,null
869 ,null
870 ,null
871 ,null
872 FROM
873 msd_dp_express_setup exp
874 WHERE
875 DEMAND_PLAN_ID = p_source_demand_plan_id;
876
877 /** Added for Multiple Time Hierarchies **/
878 lv_status_id := 80;
879
880 INSERT INTO MSD_DP_CALENDARS
881 ( DEMAND_PLAN_ID
882 , CALENDAR_CODE
883 , CALENDAR_TYPE
884 , LAST_UPDATE_DATE
885 , LAST_UPDATED_BY
886 , CREATION_DATE
887 , CREATED_BY
888 , LAST_UPDATE_LOGIN
889 , REQUEST_ID
890 , PROGRAM_APPLICATION_ID
891 , PROGRAM_ID
892 , PROGRAM_UPDATE_DATE
893 ,DELETEABLE_FLAG
894 )
895 SELECT
896 x_demand_plan_id
897 ,cal.calendar_code
898 ,cal.calendar_type
899 ,SYSDATE
900 ,fnd_global.user_id
901 ,SYSDATE
902 ,fnd_global.user_id
903 ,fnd_global.login_id
904 ,NULL
905 ,NULL
906 ,NULL
907 ,SYSDATE
908 ,DELETEABLE_FLAG
909 FROM
910 msd_dp_calendars cal
911 WHERE
912 cal.demand_plan_id = p_source_demand_plan_id;
913
914
915 for lv_cur_formula_rec in cur_formula LOOP
916
917
918 select msd_dp_parameters_s.nextval into x_new_formula_id
919 from dual;
920
921
922 INSERT INTO msd_dp_formulas
923 ( DEMAND_PLAN_ID
924 ,FORMULA_ID
925 ,CREATION_SEQUENCE
926 ,FORMULA_NAME
927 ,FORMULA_DESC
928 ,CUSTOM_TYPE
929 ,EQUATION
930 ,CUSTOM_FIELD1
931 ,CUSTOM_FIELD2
932 ,CUSTOM_SUBTYPE
933 ,CUSTOM_ADDTLCALC
934 ,ISBY
935 ,VALID_FLAG
936 ,NUMERATOR
937 ,DENOMINATOR
938 ,SUPPLY_PLAN_FLAG
939 ,SUPPLY_PLAN_NAME
940 ,LAST_UPDATE_DATE
941 ,FORMAT /*----NEW COLUMN ADDED--BUG#4373422-----*/
942 ,LAST_UPDATED_BY
943 ,CREATION_DATE
944 ,CREATED_BY
945 ,LAST_UPDATE_LOGIN
946 ,REQUEST_ID
947 ,PROGRAM_APPLICATION_ID
948 ,PROGRAM_ID
949 ,PROGRAM_UPDATE_DATE
950 ,UPLOAD_FORMULA_ID
951 ,START_PERIOD /*----NEW COLUMN ADDED--BUG#4744717-----*/
952 )
953 SELECT
954 x_demand_plan_id
955 ,x_new_formula_id
956 ,CREATION_SEQUENCE
957 ,FORMULA_NAME
958 ,FORMULA_DESC
959 ,CUSTOM_TYPE
960 ,EQUATION
961 ,CUSTOM_FIELD1
962 ,CUSTOM_FIELD2
963 ,CUSTOM_SUBTYPE
964 ,CUSTOM_ADDTLCALC
965 ,ISBY
966 ,VALID_FLAG
967 ,NUMERATOR
968 ,DENOMINATOR
969 ,SUPPLY_PLAN_FLAG
970 ,SUPPLY_PLAN_NAME
971 ,SYSDATE
972 ,FORMAT /*----NEW COLUMN ADDED--BUG#4373422-----*/
973 ,fnd_global.user_id
974 ,SYSDATE
975 ,fnd_global.user_id
976 ,fnd_global.login_id
977 ,NULL
978 ,NULL
979 ,NULL
980 ,SYSDATE
981 ,UPLOAD_FORMULA_ID
982 ,START_PERIOD /*----NEW COLUMN ADDED--BUG#4744717-----*/
983 FROM
984 msd_dp_formulas mdf
985 WHERE
986 formula_id = lv_cur_formula_rec.formula_id AND demand_plan_id =
987 p_source_demand_plan_id;
988
989
990
991 lv_status_id := 190;
992
993
994 INSERT INTO msd_dp_formula_parameters
995 ( DEMAND_PLAN_ID
996 ,FORMULA_ID
997 ,WHERE_USED
998 ,PARAMETER_SEQUENCE
999 ,ENABLED_FLAG
1000 ,MANDATORY_FLAG
1001 ,PARAMETER_TYPE
1002 ,PARAMETER_COMPONENT
1003 ,PARAMETER_VALUE
1004 ,SUPPLY_PLAN_FLAG
1005 ,SUPPLY_PLAN_NAME
1006 ,LAST_UPDATE_DATE
1007 ,LAST_UPDATED_BY
1008 ,CREATION_DATE
1009 ,CREATED_BY
1010 ,LAST_UPDATE_LOGIN
1011 ,REQUEST_ID
1012 ,PROGRAM_APPLICATION_ID
1013 ,PROGRAM_ID
1014 ,PROGRAM_UPDATE_DATE
1015 )
1016
1017 SELECT
1018 x_demand_plan_id
1019 ,x_new_formula_id
1020 ,WHERE_USED
1021 ,PARAMETER_SEQUENCE
1022 ,ENABLED_FLAG
1023 ,MANDATORY_FLAG
1024 ,PARAMETER_TYPE
1025 ,PARAMETER_COMPONENT
1026 ,PARAMETER_VALUE
1027 ,SUPPLY_PLAN_FLAG
1028 ,SUPPLY_PLAN_NAME
1029 ,SYSDATE
1030 ,fnd_global.user_id
1031 ,SYSDATE
1032 ,fnd_global.user_id
1033 ,fnd_global.login_id
1034 ,NULL
1035 ,NULL
1036 ,NULL
1037 ,SYSDATE
1038 FROM
1039 msd_dp_formula_parameters mfp
1040 WHERE
1041 formula_id = lv_cur_formula_rec.formula_id AND demand_plan_id
1042 = p_source_demand_plan_id;
1043
1044 lv_status_id := 200;
1045
1046 END LOOP;
1047
1048 if nvl(l_template_flag,'N') <> 'N' then
1049
1050 insert into msd_dp_formula_parameters
1051
1052 (
1053
1054 demand_plan_id
1055
1056 ,formula_id
1057
1058 ,where_used
1059
1060 ,parameter_sequence
1061
1062 ,enabled_flag
1063
1064 ,mandatory_flag
1065
1066 ,parameter_type
1067
1068 ,parameter_component
1069
1070 ,parameter_value
1071
1072 ,supply_plan_flag
1073
1074 ,supply_plan_name
1075
1076 ,last_update_date
1077
1078 ,last_updated_by
1079
1080 ,creation_date
1081
1082 ,created_by
1083
1084 ,last_update_login
1085
1086 ,request_id
1087
1088 ,program_application_id
1089
1090 ,program_id
1091
1092 ,program_update_date
1093
1094 )
1095
1096 (select
1097
1098 x_demand_plan_id
1099
1100 ,mdp1.parameter_id
1101
1102 ,mdfp.where_used
1103
1104 ,mdfp.parameter_sequence
1105
1106 ,mdfp.enabled_flag
1107
1108 ,mdfp.mandatory_flag
1109
1110 ,mdfp.parameter_type
1111
1112 ,mdfp.parameter_component
1113
1114 ,mdfp.parameter_value
1115
1116 ,mdfp.supply_plan_flag
1117
1118 ,mdfp.supply_plan_name -- Bug 4729854
1119
1120 ,SYSDATE
1121
1122 ,fnd_global.user_id
1123
1124 ,SYSDATE
1125
1126 ,fnd_global.user_id
1127
1128 ,fnd_global.login_id
1129
1130 ,NULL
1131
1132 ,NULL
1133
1134 ,NULL
1135
1136 ,SYSDATE
1137
1138 from msd_dp_formula_parameters mdfp,
1139 msd_dp_parameters mdp,
1140 msd_dp_parameters mdp1
1141
1142 where mdfp.demand_plan_id in
1143
1144 (select demand_plan_id
1145
1146 from msd_demand_plans
1147
1148 where plan_type = 'EOL'
1149
1150 and template_flag = 'Y'
1151
1152 and default_template = 'Y')
1153 and mdp.demand_plan_id=mdfp.demand_plan_id
1154 and mdp.parameter_id=mdfp.formula_id
1155 and mdp1.demand_plan_id=x_demand_plan_id
1156 and mdp1.parameter_type=mdp.parameter_type);
1157
1158 else
1159 insert into msd_dp_formula_parameters
1160
1161 (
1162
1163 demand_plan_id
1164
1165 ,formula_id
1166
1167 ,where_used
1168
1169 ,parameter_sequence
1170
1171 ,enabled_flag
1172
1173 ,mandatory_flag
1174
1175 ,parameter_type
1176
1177 ,parameter_component
1178
1179 ,parameter_value
1180
1181 ,supply_plan_flag
1182
1183 ,supply_plan_name
1184
1185 ,last_update_date
1186
1187 ,last_updated_by
1188
1189 ,creation_date
1190
1191 ,created_by
1192
1193 ,last_update_login
1194
1195 ,request_id
1196
1197 ,program_application_id
1198
1199 ,program_id
1200
1201 ,program_update_date
1202
1203 )
1204
1205 (select
1206
1207 x_demand_plan_id
1208
1209 ,mdp1.parameter_id
1210
1211 ,mdfp.where_used
1212
1213 ,mdfp.parameter_sequence
1214
1215 ,mdfp.enabled_flag
1216
1217 ,mdfp.mandatory_flag
1218
1219 ,mdfp.parameter_type
1220
1221 ,mdfp.parameter_component
1222
1223 ,mdfp.parameter_value
1224
1225 ,mdfp.supply_plan_flag
1226
1227 ,mdfp.supply_plan_name -- Bug 4729854
1228
1229 ,SYSDATE
1230
1231 ,fnd_global.user_id
1232
1233 ,SYSDATE
1234
1235 ,fnd_global.user_id
1236
1237 ,fnd_global.login_id
1238
1239 ,NULL
1240
1241 ,NULL
1242
1243 ,NULL
1244
1245 ,SYSDATE
1246
1247 from msd_dp_formula_parameters mdfp,
1248 msd_dp_parameters mdp,
1249 msd_dp_parameters mdp1
1250
1251 where mdfp.demand_plan_id = p_source_demand_plan_id
1252 and mdp.demand_plan_id=mdfp.demand_plan_id
1253 and mdp.parameter_id=mdfp.formula_id
1254 and mdp1.demand_plan_id=x_demand_plan_id
1255 and mdp1.parameter_type=mdp.parameter_type);
1256 end if;
1257
1258 for lv_cur_document_rec in cur_document LOOP
1259
1260
1261
1262 if nvl(l_template_flag,'N') = 'N' then
1263
1264 msd_apply_template_demand_plan.replace_parameter_tokens(x_demand_plan_id);
1265
1266 end if;
1267
1268 select msd_dp_seeded_doc_s.nextval into x_new_document_id
1269 from dual;
1270
1271
1272 INSERT INTO msd_dp_seeded_documents
1273 ( DEMAND_PLAN_ID
1274 ,DOCUMENT_ID
1275 ,DOCUMENT_NAME
1276 ,DESCRIPTION
1277 ,TYPE
1278 ,OPEN_ON_STARTUP
1279 ,SCRIPT_CLEANUP
1280 ,SCRIPT_INIT
1281 ,SCRIPT_PREPAGE
1282 ,SCRIPT_POSTPAGE
1283 ,VALID_FLAG
1284 ,LAST_UPDATE_DATE
1285 ,LAST_UPDATED_BY
1286 ,CREATION_DATE
1287 ,CREATED_BY
1288 ,LAST_UPDATE_LOGIN
1289 ,REQUEST_ID
1290 ,PROGRAM_APPLICATION_ID
1291 ,PROGRAM_ID
1292 ,PROGRAM_UPDATE_DATE
1293 ,SUB_TYPE
1294 )
1295 SELECT
1296 x_demand_plan_id
1297 ,x_new_document_id
1298 ,msd.DOCUMENT_NAME
1299 ,msd.DESCRIPTION
1300 ,msd.TYPE
1301 ,msd.OPEN_ON_STARTUP
1302 ,msd.SCRIPT_CLEANUP
1303 ,msd.SCRIPT_INIT
1304 ,msd.SCRIPT_PREPAGE
1305 ,msd.SCRIPT_POSTPAGE
1306 ,msd.VALID_FLAG
1307 ,SYSDATE
1308 ,fnd_global.user_id
1309 ,SYSDATE
1310 ,fnd_global.user_id
1311 ,fnd_global.login_id
1312 ,NULL
1313 ,NULL
1314 ,NULL
1315 ,SYSDATE
1316 ,msd.SUB_TYPE
1317 FROM
1318 msd_dp_seeded_documents msd
1319 WHERE
1320 document_id = lv_cur_document_rec.document_id AND demand_plan_id =
1321 p_source_demand_plan_id;
1322
1323
1324
1325 lv_status_id := 90;
1326
1327
1328 INSERT INTO msd_dp_seeded_doc_dimensions
1329 ( DEMAND_PLAN_ID
1330 ,DOCUMENT_ID
1331 ,DIMENSION_CODE
1332 ,SEQUENCE_NUMBER
1333 ,AXIS
1334 ,HIERARCHY_ID
1335 ,SELECTION_TYPE
1336 ,SELECTION_SCRIPT
1337 ,ENABLED_FLAG
1338 ,MANDATORY_FLAG
1339 ,LAST_UPDATE_DATE
1340 ,LAST_UPDATED_BY
1341 ,CREATION_DATE
1342 ,CREATED_BY
1343 ,LAST_UPDATE_LOGIN
1344 ,REQUEST_ID
1345 ,PROGRAM_APPLICATION_ID
1346 ,PROGRAM_ID
1347 ,PROGRAM_UPDATE_DATE
1348 )
1349
1350 SELECT
1351 x_demand_plan_id
1352 ,X_NEW_DOCUMENT_ID
1353 ,DIMENSION_CODE
1354 ,SEQUENCE_NUMBER
1355 ,AXIS
1356 ,HIERARCHY_ID
1357 ,SELECTION_TYPE
1358 ,SELECTION_SCRIPT
1359 ,ENABLED_FLAG
1360 ,MANDATORY_FLAG
1361 ,SYSDATE
1362 ,fnd_global.user_id
1363 ,SYSDATE
1364 ,fnd_global.user_id
1365 ,fnd_global.login_id
1366 ,NULL
1367 ,NULL
1368 ,NULL
1369 ,SYSDATE
1370 FROM
1371 MSD_DP_SEEDED_DOC_DIMENSIONS MDD
1372 WHERE
1373 document_id = lv_cur_document_rec.document_id AND demand_plan_id
1374 = p_source_demand_plan_id;
1375
1376 lv_status_id := 100;
1377
1378 INSERT INTO msd_dp_doc_dim_selections
1379 (DEMAND_PLAN_ID
1380 ,DOCUMENT_ID
1381 ,DIMENSION_CODE
1382 ,ENABLED_FLAG
1383 ,MANDATORY_FLAG
1384 ,SELECTION_SEQUENCE
1385 ,SELECTION_TYPE
1386 ,SELECTION_COMPONENT
1387 ,SELECTION_VALUE
1388 ,SUPPLY_PLAN_FLAG
1389 ,SUPPLY_PLAN_NAME
1390 ,LAST_UPDATE_DATE
1391 ,LAST_UPDATED_BY
1392 ,CREATION_DATE
1393 ,CREATED_BY
1394 ,LAST_UPDATE_LOGIN
1395 ,REQUEST_ID
1396 ,PROGRAM_APPLICATION_ID
1397 ,PROGRAM_ID
1398 ,PROGRAM_UPDATE_DATE
1399 )
1400
1401 SELECT
1402 x_demand_plan_id
1403 ,x_new_document_id
1404 ,DIMENSION_CODE
1405 ,ENABLED_FLAG
1406 ,MANDATORY_FLAG
1407 ,SELECTION_SEQUENCE
1408 ,SELECTION_TYPE
1409 ,SELECTION_COMPONENT
1410 ,SELECTION_VALUE
1411 ,SUPPLY_PLAN_FLAG
1412 ,SUPPLY_PLAN_NAME
1413 ,SYSDATE
1414 ,fnd_global.user_id
1415 ,SYSDATE
1416 ,fnd_global.user_id
1417 ,fnd_global.login_id
1418 ,NULL
1419 ,NULL
1420 ,NULL
1421 ,SYSDATE
1422 FROM
1423 msd_dp_doc_dim_selections mdds
1424 WHERE
1425 document_id = lv_cur_document_rec.document_id
1426 and demand_plan_id = p_source_demand_plan_id
1427 and (nvl(supply_plan_flag,'N') = 'N'
1428 or p_source_demand_plan_id not in
1429 (select demand_plan_id
1430 from msd_demand_plans
1431 where template_flag = 'Y'));
1432
1433 END LOOP;
1434
1435 /*----------bug 4615390---------------*/
1436
1437 insert into MSD_DP_ISO_ORGANIZATIONS
1438 (DEMAND_PLAN_ID,
1439 SR_INSTANCE_ID,
1440 SR_ORGANIZATION_ID,
1441 --ATTACHED_FLAG ,
1442 --BUILT_FLAG ,
1443 LAST_UPDATED_BY,
1444 CREATION_DATE,
1445 CREATED_BY,
1446 LAST_UPDATE_LOGIN,
1447 REQUEST_ID,
1448 PROGRAM_APPLICATION_ID,
1449 PROGRAM_ID,
1450 PROGRAM_UPDATE_DATE,
1451 LAST_UPDATE_DATE )
1452 select
1453 X_DEMAND_PLAN_ID,
1454 SR_INSTANCE_ID,
1455 SR_ORGANIZATION_ID,
1456 --ATTACHED_FLAG ,
1457 --BUILT_FLAG ,
1458 LAST_UPDATED_BY,
1459 CREATION_DATE,
1460 CREATED_BY,
1461 LAST_UPDATE_LOGIN,
1462 REQUEST_ID,
1463 PROGRAM_APPLICATION_ID,
1464 PROGRAM_ID,
1465 PROGRAM_UPDATE_DATE,
1466 LAST_UPDATE_DATE
1467 from MSD_DP_ISO_ORGANIZATIONS
1468 where demand_plan_id = p_source_demand_plan_id;
1469 -- and attached_flag='Y';
1470
1471
1472
1473 p_new_dp_id := x_demand_plan_id ;
1474
1475 return 0;
1476
1477 EXCEPTION
1478
1479 when No_Source_Dp then
1480 p_new_dp_id := null ;
1481 p_errcode := 'Demand Plan Does not Exist' ;
1482 return 1;
1483
1484
1485 WHEN OTHERS THEN
1486 p_new_dp_id := null ;
1487 p_errcode := substr(SQLERRM,1,150);
1488 return 1;
1489
1490
1491 END copy_demand_plan;
1492
1493 END MSD_COPY_DEMAND_PLAN;