[Home] [Help]
PACKAGE BODY: APPS.MSD_CL_PRE_PROCESS
Source
1 PACKAGE BODY MSD_CL_PRE_PROCESS AS -- Package Body
2 /* $Header: MSDCLPPB.pls 120.13.12010000.1 2008/05/01 18:19:41 appldev ship $ */
3
4
5 v_sql_stmt PLS_INTEGER;--Holds the DML statement no used for error logging.
6 v_plan_per_profile NUMBER:=nvl(fnd_profile.value('MSD_PLANNING_PERCENTAGE'), G_NO_PLAN_PERCENTAGE);
7 v_null_pk NUMBER := msd_sr_util.get_null_pk; --Use this variable to assign SR_LEVEL_PK for the level value 'Others' in ALL DIMENSIONS.
8
9
10 --========================PROCEDURES/FUNCTION=================
11
12 /*==========================================================================+
13 | DESCRIPTION : This function accepts the concurrent program request id as|
14 | input parameter and returns the status of the request. |
15 | SYS_NO - Request Completed |
16 | SYS_YES - Request in Running/Pending status |
17 | |
18 | Added to fix the bug#2402527 |
19 +==========================================================================*/
20
21 FUNCTION is_request_status_valid( p_request_id IN Number)
22 RETURN NUMBER
23 IS
24 l_call_status boolean;
25 l_phase varchar2(80);
26 l_status varchar2(80);
27 l_dev_phase varchar2(80);
28 l_dev_status varchar2(80);
29 l_message varchar2(2048);
30 l_request_id Number;
31 BEGIN
32 l_request_id := p_request_id;
33 l_call_status:= FND_CONCURRENT.GET_REQUEST_STATUS
34 ( l_request_id,
35 NULL,
36 NULL,
37 l_phase,
38 l_status,
39 l_dev_phase,
40 l_dev_status,
41 l_message);
42
43 IF l_call_status=FALSE THEN
44 msc_St_util.log_message( l_message);
45 RETURN SYS_NO;
46 END IF;
47
48 IF l_dev_phase NOT IN ( 'PENDING','RUNNING') THEN
49 RETURN SYS_NO;
50 END IF;
51
52 RETURN SYS_YES;
53 END is_request_status_valid;
54
55 /*==========================================================================+
56 | DESCRIPTION : This function returns OEM's company name |
57 +==========================================================================*/
58
59 FUNCTION GET_MY_COMPANY return VARCHAR2 IS
60 p_my_company msc_companies.company_name%TYPE;
61 BEGIN
62
63 /* Get the name of the own Company */
64 /* This name is seeded with company_is = 1 in msc_companies */
65 BEGIN
66 select company_name into p_my_company
67 from msc_companies
68 where company_id = 1;
69 EXCEPTION
70 WHEN OTHERS THEN
71 return 'My Company';
72 END;
73
74 return p_my_company;
75
76 END GET_MY_COMPANY;
77
78 /*==========================================================================+
79 | DESCRIPTION : This function performs the validation and loads the data |
80 | for business object organization and customer |
81 +==========================================================================*/
82
83 PROCEDURE LOAD_ORG_CUST (ERRBUF OUT NOCOPY VARCHAR,
84 RETCODE OUT NOCOPY NUMBER,
85 p_instance_id IN NUMBER,
86 p_batch_id IN NUMBER)
87 IS
88 lv_sql_stmt VARCHAR2(4000);
89 lv_error_text VARCHAR2(250);
90 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
91
92 BEGIN
93
94 v_sql_stmt := 01;
95 lv_sql_stmt :=
96 ' INSERT INTO MSD_ST_LEVEL_VALUES '
97 ||' (INSTANCE , '
98 ||' LEVEL_ID, '
99 ||' LEVEL_VALUE, '
100 ||' SR_LEVEL_PK, '
101 ||' LEVEL_VALUE_DESC, '
102 ||' ATTRIBUTE1, '
103 ||' ATTRIBUTE2, '
104 ||' ATTRIBUTE3, '
105 ||' ATTRIBUTE4, '
106 ||' ATTRIBUTE5, '
107 ||' LAST_UPDATE_DATE, '
108 ||' LAST_UPDATED_BY, '
109 ||' CREATION_DATE, '
110 ||' CREATED_BY, '
111 ||' LAST_UPDATE_LOGIN, '
112 ||' REQUEST_ID, '
113 ||' PROGRAM_APPLICATION_ID, '
114 ||' PROGRAM_ID, '
115 ||' PROGRAM_UPDATE_DATE ) '
116 ||' SELECT DISTINCT'
117 ||' sr_instance_id,'
118 ||' DECODE(partner_type,3,7,2,15),'
119 ||' partner_name, '
120 ||' sr_tp_id, '
121 ||' DECODE(partner_type,3,substr(organization_code,instr(organization_code,'':'')+1,length(organization_code))||'''||':'||'''||substr(partner_name,instr(partner_name,'':'')+1,length(partner_name)),2,'''',''''), '
122 ||' NULL,'
123 ||' NULL,'
124 ||' NULL,'
125 ||' NULL,'
126 ||' NULL,'
127 ||' last_update_date,'
128 ||' last_updated_by,'
129 ||' creation_date,'
130 ||' created_by, '
131 ||' last_update_login, '
132 ||' request_id , '
133 ||' program_application_id, '
134 ||' program_id , '
135 ||' program_update_date '
136 ||' FROM msc_st_trading_partners'
137 ||' WHERE sr_instance_id = :p_instance_id'
138 ||' AND process_flag = '||G_VALID
139 ||' AND batch_id = :p_batch_id'
140 ||' AND partner_type IN (2,3)';
141
142 IF lv_debug THEN
143 msc_st_util.log_message(lv_sql_stmt);
144 END IF;
145
146 EXECUTE IMMEDIATE lv_sql_stmt
147 USING p_instance_id,
148 p_batch_id;
149
150 v_sql_stmt := 02;
151
152 lv_sql_stmt :=
153 ' INSERT INTO MSD_ST_ORG_CALENDARS '
154 ||' (INSTANCE , '
155 ||' SR_ORG_PK, '
156 ||' CALENDAR_TYPE, '
157 ||' CALENDAR_CODE, '
158 ||' CREATION_DATE, '
159 ||' CREATED_BY, '
160 ||' LAST_UPDATE_DATE, '
161 ||' LAST_UPDATED_BY, '
162 ||' LAST_UPDATE_LOGIN, '
163 ||' REQUEST_ID, '
164 ||' PROGRAM_APPLICATION_ID, '
165 ||' PROGRAM_ID, '
166 ||' PROGRAM_UPDATE_DATE ) '
167 ||' SELECT DISTINCT'
168 ||' sr_instance_id,'
169 ||' sr_tp_id,'
170 || G_MFG_CAL||','
171 ||' calendar_code, '
172 ||' creation_date,'
173 ||' created_by, '
174 ||' last_update_date,'
175 ||' last_updated_by,'
176 ||' last_update_login, '
177 ||' request_id , '
178 ||' program_application_id, '
179 ||' program_id , '
180 ||' program_update_date '
181 ||' FROM msc_st_trading_partners mstp'
182 ||' WHERE EXISTS ( SELECT 1'
183 ||' FROM msd_st_time mst '
184 ||' WHERE mstp.calendar_code=mst.calendar_code '
185 ||' AND mst.calendar_type='||G_MFG_CAL
186 ||' AND mstp.sr_instance_code=mst.sr_instance_code'
187 ||' UNION '
188 ||' SELECT 1'
189 ||' FROM msd_time mt'
190 ||' WHERE mstp.calendar_code=mt.calendar_code'
191 ||' AND mt.calendar_type='||G_MFG_CAL
192 ||' AND mstp.sr_instance_id=mt.instance)'
193 ||' AND mstp.sr_instance_id = :p_instance_id'
194 ||' AND mstp.process_flag = '||G_VALID
195 ||' AND mstp.batch_id = :p_batch_id'
196 ||' AND mstp.partner_type=3 ';
197
198
199 IF lv_debug THEN
200 msc_st_util.log_message(lv_sql_stmt);
201 END IF;
202
203 EXECUTE IMMEDIATE lv_sql_stmt
204 USING p_instance_id,
205 p_batch_id;
206
207
208 --RETURN(lv_status);
209
210 EXCEPTION
211 WHEN OTHERS THEN
212 ROLLBACK;
213
214 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_ORG_CUST '||'('
215 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
216 msc_st_util.log_message(lv_error_text);
217 ERRBUF := lv_error_text;
218 RETCODE := G_WARNING;
219
220 END LOAD_ORG_CUST;
221
222 /*==========================================================================+
223 | DESCRIPTION : This function performs the validation and loads the data |
224 | for business object items. |
225 +==========================================================================*/
226 PROCEDURE LOAD_ITEMS (ERRBUF OUT NOCOPY VARCHAR,
227 RETCODE OUT NOCOPY NUMBER,
228 p_instance_id IN NUMBER,
229 p_batch_id IN NUMBER)
230 IS
231 lv_sql_stmt VARCHAR2(6000);
232 lv_error_text VARCHAR2(250);
233 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
234
235 cursor c1 (p_instance varchar2) is
236 select count(*) from MSD_LEVEL_VALUES
237 where LEVEL_ID = 2
238 and instance = p_instance
239 and SR_LEVEL_PK = to_char(v_null_pk); --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
240
241 cursor c2 (p_instance_code varchar2) is
242 select local_id from msd_local_id_setup
243 where char1 = p_instance_code
244 -- and char2 = 'All Products'
245 and level_id = 28;
246
247 cursor c3 (p_instance_id number) is
248 select instance_code
249 from msc_apps_instances
250 where instance_id=p_instance_id;
251
252 lv_other_exist PLS_INTEGER := 0;
253 lv_instance_code VARCHAR2(5) :='';
254 lv_all_prd_pk NUMBER := 0; --Renamed 'lv_sr_level_pk' to 'lv_all_prd_pk'.Also initialized this to 0 instead of -1.
255
256 lv_other_desc varchar2(240) := NULL; --Adding this to insert level value - 'Others'
257 lv_all_prd_desc varchar2(240) := NULL; --Adding this to insert level value - 'All Products'
258
259 BEGIN
260
261 v_sql_stmt := 01;
262 lv_sql_stmt :=
263 ' INSERT INTO MSD_ST_LEVEL_VALUES '
264 ||' (INSTANCE , '
265 ||' LEVEL_ID, '
266 ||' LEVEL_VALUE, '
267 ||' SR_LEVEL_PK, '
268 ||' LEVEL_VALUE_DESC, '
269 ||' ATTRIBUTE1, '
270 ||' ATTRIBUTE2, '
271 ||' ATTRIBUTE3, '
272 ||' ATTRIBUTE4, '
273 ||' ATTRIBUTE5, '
274 ||' LAST_UPDATE_DATE, '
275 ||' LAST_UPDATED_BY, '
276 ||' CREATION_DATE, '
277 ||' CREATED_BY, '
278 ||' LAST_UPDATE_LOGIN, '
279 ||' REQUEST_ID, '
280 ||' PROGRAM_APPLICATION_ID, '
281 ||' PROGRAM_ID, '
282 ||' PROGRAM_UPDATE_DATE ) '
283 ||' SELECT '
284 ||' sr_instance_id,'
285 ||' DECODE(bom_item_type,5,3,1,1,1),'
286 ||' item_name, '
287 ||' sr_inventory_item_id, '
288 ||' mssi.DESCRIPTION, '
289 ||' NULL,'
290 ||' NULL,'
291 ||' NULL,'
292 ||' NULL,'
293 ||' NULL,'
294 ||' mssi.last_update_date,'
295 ||' mssi.last_updated_by,'
296 ||' mssi.creation_date,'
297 ||' mssi.created_by ,'
298 ||' mssi.last_update_login, '
299 ||' mssi.request_id , '
300 ||' mssi.program_application_id, '
301 ||' mssi.program_id , '
302 ||' mssi.program_update_date '
303 ||' FROM msc_st_system_items mssi'
304 ||' WHERE mssi.rowid = ( select max(mssi1.rowid) '
305 ||' from msc_st_system_items mssi1,msc_local_id_item lid '
306 ||' WHERE mssi1.sr_instance_code = lid.char1'
307 ||' AND NVL(mssi1.company_name, '||''''||-1||''''||') = '
308 ||' NVL(lid.char2,'||''''||-1||''''||') '
309 ||' AND mssi1.organization_code = lid.char3'
310 ||' AND mssi1.item_name = lid.char4'
311 ||' AND mssi1.process_flag = '||G_VALID
312 ||' AND ((mssi1.mrp_planning_code <> 6) OR (mssi1.pick_components_flag =''Y'')) '
313 ||' AND (('||v_plan_per_profile||'= 4) OR (mssi1.ato_forecast_control <> 3))'
314 ||' AND mssi1.sr_instance_id = :p_instance_id'
315 ||' AND lid.entity_name = ''SR_INVENTORY_ITEM_ID'''
316 ||' AND mssi.item_name = mssi1.item_name '
317 ||' group by mssi1.item_name )'
318 ||' AND mssi.process_flag = '||G_VALID
319 ||' AND mssi.batch_id = :p_batch_id'
320 ||' AND mssi.sr_instance_id = :p_instance_id';
321
322 IF lv_debug THEN
323 msc_st_util.log_message(lv_sql_stmt);
324 END IF;
325
326 EXECUTE IMMEDIATE lv_sql_stmt
327 USING p_instance_id,
328 p_batch_id,
329 p_instance_id;
330
331
332 v_sql_stmt := 02;
333 lv_sql_stmt :=
334 ' INSERT INTO MSD_ST_LEVEL_ORG_ASSCNS '
335 ||' (INSTANCE , '
336 ||' LEVEL_ID, '
337 ||' LEVEL_VALUE, '
338 ||' SR_LEVEL_PK, '
339 ||' ORG_LEVEL_ID, '
340 ||' ORG_LEVEL_VALUE, '
341 ||' ORG_SR_LEVEL_PK, '
342 ||' LAST_UPDATE_DATE, '
343 ||' LAST_UPDATED_BY, '
344 ||' CREATION_DATE, '
345 ||' CREATED_BY, '
346 ||' LAST_UPDATE_LOGIN, '
347 ||' REQUEST_ID, '
348 ||' PROGRAM_APPLICATION_ID, '
349 ||' PROGRAM_ID, '
350 ||' PROGRAM_UPDATE_DATE ) '
351 ||' SELECT '
352 ||' mssi.sr_instance_id,'
353 ||' 1,'
354 ||' mssi.item_name, '
355 ||' mssi.sr_inventory_item_id, '
356 ||' 7,'
357 ||' NULL,'
358 ||' mssi.organization_id,'
359 ||' mssi.last_update_date,'
360 ||' mssi.last_updated_by,'
361 ||' mssi.creation_date,'
362 ||' mssi.created_by ,'
363 ||' mssi.last_update_login, '
364 ||' mssi.request_id , '
365 ||' mssi.program_application_id, '
366 ||' mssi.program_id , '
367 ||' mssi.program_update_date '
368 ||' FROM msc_st_system_items mssi'
369 ||' WHERE mssi.bom_item_type <> 5 ' -- excluding the Product Families
370 ||' AND mssi.process_flag = '||G_VALID
371 ||' AND mssi.batch_id = :p_batch_id'
372 ||' AND mssi.sr_instance_id = :p_instance_id';
373
374
375 IF lv_debug THEN
376 msc_st_util.log_message(lv_sql_stmt);
377 END IF;
378
379
380 EXECUTE IMMEDIATE lv_sql_stmt
381 USING p_batch_id,
382 p_instance_id;
383
384
385 v_sql_stmt := 03;
386 lv_sql_stmt :=
387 'INSERT INTO MSD_ST_ITEM_LIST_PRICE '
388 ||' (INSTANCE ,'
389 ||' ITEM ,'
390 ||' LIST_PRICE ,'
391 ||' AVG_DISCOUNT ,'
392 ||' BASE_UOM ,'
393 ||' SR_ITEM_PK ,'
394 ||' ITEM_TYPE_ID ,'
395 ||' FORECAST_TYPE_ID ,'
396 ||' SR_INSTANCE_CODE, '
397 ||' LAST_UPDATE_DATE, '
398 ||' LAST_UPDATED_BY, '
399 ||' CREATION_DATE, '
400 ||' CREATED_BY, '
401 ||' LAST_UPDATE_LOGIN, '
402 ||' REQUEST_ID, '
403 ||' PROGRAM_APPLICATION_ID, '
404 ||' PROGRAM_ID, '
405 ||' PROGRAM_UPDATE_DATE ) '
406 ||' Select '
407 ||' SR_INSTANCE_ID ,'
408 ||' ITEM_NAME ,'
409 ||' LIST_PRICE ,'
410 ||' AVERAGE_DISCOUNT ,'
411 ||' UOM_CODE ,'
412 ||' SR_INVENTORY_ITEM_ID ,'
413 ||' BOM_ITEM_TYPE ,'
414 ||' ATO_FORECAST_CONTROL ,'
415 ||' SR_INSTANCE_CODE,'
416 ||' mssi.last_update_date,'
417 ||' mssi.last_updated_by,'
418 ||' mssi.creation_date,'
419 ||' mssi.created_by ,'
420 ||' mssi.last_update_login, '
421 ||' mssi.request_id , '
422 ||' mssi.program_application_id, '
423 ||' mssi.program_id , '
424 ||' mssi.program_update_date '
425 ||' FROM msc_st_system_items mssi'
426 ||' WHERE mssi.rowid = ( select max(mssi1.rowid) '
427 ||' FROM msc_st_system_items mssi1,msc_local_id_item lid '
428 ||' WHERE mssi1.sr_instance_code = lid.char1'
429 ||' AND NVL(mssi1.company_name, '||''''||-1||''''||') = '
430 ||' NVL(lid.char2,'||''''||-1||''''||') '
431 ||' AND mssi1.organization_code = lid.char3'
432 ||' AND mssi1.item_name = lid.char4'
433 ||' AND mssi1.process_flag = '||G_VALID
434 ||' AND ((mssi1.mrp_planning_code <> 6) OR (mssi1.pick_components_flag =''Y'')) '
435 ||' AND (('||v_plan_per_profile||'= 4) OR (mssi1.ato_forecast_control <> 3))'
436 ||' AND mssi1.sr_instance_id = :p_instance_id'
437 ||' AND lid.entity_name = ''SR_INVENTORY_ITEM_ID'''
438 ||' AND mssi.item_name = mssi1.item_name '
439 ||' group by mssi1.item_name )'
440 ||' AND mssi.process_flag = '||G_VALID
441 ||' AND mssi.batch_id = :p_batch_id'
442 ||' AND mssi.sr_instance_id = :p_instance_id';
443
444 IF lv_debug THEN
445 msc_st_util.log_message(lv_sql_stmt);
446 END IF;
447
448 EXECUTE IMMEDIATE lv_sql_stmt
449 USING p_instance_id,
450 p_batch_id,
451 p_instance_id;
452
453
454 OPEN c1(p_instance_id);
455 FETCH c1 into lv_other_exist;
456 CLOSE c1;
457
458 IF lv_other_exist = 0 THEN
459
460 lv_other_desc := msd_sr_util.get_null_desc; --Calling fuction - msd_sr_util.get_null_desc, to fetch the level value 'Others'
461 lv_all_prd_desc := msd_sr_util.get_all_prd_desc; --Calling fuction - msd_sr_util.get_all_prd_desc, to fetch the level value 'All Products'
462
463 INSERT INTO MSD_ST_LEVEL_VALUES
464 (INSTANCE ,
465 LEVEL_ID,
466 LEVEL_VALUE,
467 SR_LEVEL_PK,
468 ATTRIBUTE1,
469 ATTRIBUTE2,
470 ATTRIBUTE3,
471 ATTRIBUTE4,
472 ATTRIBUTE5,
473 LAST_UPDATE_DATE,
474 LAST_UPDATED_BY,
475 CREATION_DATE,
476 CREATED_BY,
477 LAST_UPDATE_LOGIN,
478 REQUEST_ID,
479 PROGRAM_APPLICATION_ID,
480 PROGRAM_ID,
481 PROGRAM_UPDATE_DATE )
482 VALUES
483 (p_instance_id,
484 2,
485 lv_other_desc, --Using the value fetched from function - msd_sr_util.get_null_desc
486 to_char(v_null_pk), --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
487 NULL,
488 NULL,
489 NULL,
490 NULL,
491 NULL,
492 sysdate,
493 -1,
494 sysdate,
495 -1,
496 -1,
497 -1,
498 -1,
499 -1,
500 sysdate);
501
502 END IF;
503
504 OPEN c3(p_instance_id);
505 FETCH c3 into lv_instance_code;
506 CLOSE c3;
507
508 OPEN c2(lv_instance_code);
509 FETCH c2 into lv_all_prd_pk; --Renamed 'lv_sr_level_pk' to 'lv_all_prd_pk'.
510 CLOSE c2;
511
512 IF lv_all_prd_pk = 0 THEN --Renamed 'lv_sr_level_pk' to 'lv_all_prd_pk'.
513
514 lv_all_prd_pk := msd_sr_util.get_all_prd_pk; -- Inserting 'All Products' records with sr_level_pk using function msd_sr_util.get_all_prd_pk(lv_all_prd_pk= -1)
515
516 -- insert into msd_local_id_setup
517
518 INSERT INTO msd_local_id_setup
519 (local_id,
520 instance_id,
521 level_id,
522 char1,
523 char2,
524 last_update_date,
525 last_updated_by,
526 creation_date,
527 created_by )
528 VALUES
529 (lv_all_prd_pk, --Using the value lv_all_prd_pk fetched above.
530 p_instance_id,
531 28,
532 lv_instance_code,
533 lv_all_prd_desc, --Using the value fetched from function - msd_sr_util.get_all_prd_desc
534 sysdate,
535 -1,
536 sysdate,
537 -1);
538
539
540 --Inserting into MSD_ST_LEVEL_VALUES
541
542 INSERT INTO MSD_ST_LEVEL_VALUES
543 (INSTANCE ,
544 LEVEL_ID,
545 LEVEL_VALUE,
546 SR_LEVEL_PK,
547 ATTRIBUTE1,
548 ATTRIBUTE2,
549 ATTRIBUTE3,
550 ATTRIBUTE4,
551 ATTRIBUTE5,
552 LAST_UPDATE_DATE,
553 LAST_UPDATED_BY,
554 CREATION_DATE,
555 CREATED_BY,
556 LAST_UPDATE_LOGIN,
557 REQUEST_ID,
558 PROGRAM_APPLICATION_ID,
559 PROGRAM_ID,
560 PROGRAM_UPDATE_DATE )
561 VALUES
562 (p_instance_id,
563 28,
564 lv_all_prd_desc, --Using the value fetched from function - msd_sr_util.get_all_prd_desc
565 lv_all_prd_pk, --Inserting lv_all_prd_pk(-1) as sr_level_pk instead of '-7771'.
566 NULL,
567 NULL,
568 NULL,
569 NULL,
570 NULL,
571 sysdate,
572 -1,
573 sysdate,
574 -1,
575 -1,
576 -1,
577 -1,
578 -1,
579 sysdate);
580
581
582 -- Insert into msd_st_level_associations.
583
584 INSERT INTO MSD_ST_LEVEL_ASSOCIATIONS
585 (INSTANCE ,
586 LEVEL_ID,
587 SR_LEVEL_PK,
588 PARENT_LEVEL_ID,
589 SR_PARENT_LEVEL_PK,
590 ATTRIBUTE1,
591 ATTRIBUTE2,
592 ATTRIBUTE3,
593 ATTRIBUTE4,
594 ATTRIBUTE5,
595 LAST_UPDATE_DATE,
596 LAST_UPDATED_BY,
597 CREATION_DATE,
598 CREATED_BY,
599 LAST_UPDATE_LOGIN,
600 REQUEST_ID,
601 PROGRAM_APPLICATION_ID,
602 PROGRAM_ID,
603 PROGRAM_UPDATE_DATE )
604 VALUES
605 (p_instance_id,
606 2,
607 to_char(v_null_pk), --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
608 28,
609 lv_all_prd_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_prd_pk'.
610 NULL,
611 NULL,
612 NULL,
613 NULL,
614 NULL,
615 sysdate,
616 -1,
617 sysdate,
618 -1,
619 -1,
620 -1,
621 -1,
622 -1,
623 sysdate);
624
625
626 END IF;
627
628
629
630 /* v_sql_stmt := 04; -- bug 5586170
631
632 lv_sql_stmt :=
633 ' INSERT INTO MSD_ST_LEVEL_ASSOCIATIONS'
634 ||' (INSTANCE , '
635 ||' LEVEL_ID, '
636 ||' SR_LEVEL_PK, '
637 ||' PARENT_LEVEL_ID,'
638 ||' SR_PARENT_LEVEL_PK,'
639 ||' ATTRIBUTE1, '
640 ||' ATTRIBUTE2, '
641 ||' ATTRIBUTE3, '
642 ||' ATTRIBUTE4, '
643 ||' ATTRIBUTE5, '
644 ||' LAST_UPDATE_DATE, '
645 ||' LAST_UPDATED_BY, '
646 ||' CREATION_DATE, '
647 ||' CREATED_BY, '
648 ||' LAST_UPDATE_LOGIN, '
649 ||' REQUEST_ID, '
650 ||' PROGRAM_APPLICATION_ID, '
651 ||' PROGRAM_ID, '
652 ||' PROGRAM_UPDATE_DATE ) '
653 ||' SELECT DISTINCT'
654 ||' mssi.sr_instance_id,'
655 ||' 1 ,'
656 ||' mssi.sr_inventory_item_id, '
657 ||' 2 ,'
658 || to_char(v_null_pk)||',' --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
659 ||' NULL,'
660 ||' NULL,'
661 ||' NULL,'
662 ||' NULL,'
663 ||' NULL,'
664 ||' mssi.last_update_date,'
665 ||' mssi.last_updated_by,'
666 ||' mssi.creation_date,'
667 ||' mssi.created_by, '
668 ||' mssi.last_update_login, '
669 ||' mssi.request_id , '
670 ||' mssi.program_application_id, '
671 ||' mssi.program_id , '
672 ||' mssi.program_update_date '
673 ||' FROM msc_st_system_items mssi'
674 ||' WHERE mssi.rowid = ( select max(mssi1.rowid) '
675 ||' from msc_st_system_items mssi1,msc_local_id_item lid '
676 ||' WHERE mssi1.sr_instance_code = lid.char1'
677 ||' AND NVL(mssi1.company_name, '||''''||-1||''''||') = '
678 ||' NVL(lid.char2,'||''''||-1||''''||') '
679 ||' AND mssi1.organization_code = lid.char3'
680 ||' AND mssi1.item_name = lid.char4'
681 ||' AND mssi1.process_flag = '||G_VALID
682 ||' AND ((mssi1.mrp_planning_code <> 6) OR (mssi1.pick_components_flag =''Y'')) '
683 ||' AND (('||v_plan_per_profile||'= 4) OR (mssi1.ato_forecast_control <> 3))'
684 ||' AND mssi1.sr_instance_id = :p_instance_id'
685 ||' AND lid.entity_name = ''SR_INVENTORY_ITEM_ID'''
686 ||' AND mssi.item_name = mssi1.item_name '
687 ||' group by mssi1.item_name )'
688 ||' AND mssi.process_flag = '||G_VALID
689 ||' AND mssi.batch_id = :p_batch_id'
690 ||' AND mssi.sr_instance_id = :p_instance_id'
691 ||' AND NOT EXISTS ( select 1'
692 ||' from msc_st_system_items mssi2, msd_setup_parameters par'
693 ||' where mssi.item_name =mssi2.item_name'
694 ||' and mssi2.organization_code = par.PARAMETER_VALUE'
695 ||' and ((mssi2.mrp_planning_code <> 6) OR (mssi2.pick_components_flag =''Y''))'
696 ||' and (('||v_plan_per_profile||'= 4) OR (mssi2.ato_forecast_control <> 3))'
697 ||' and mssi2.process_flag = '||G_VALID
698 ||' and mssi2.sr_instance_id = :p_instance_id'
699 ||' and par.parameter_name = ''MSD_MASTER_ORG_LEGACY'''
700 ||' and par.instance_id = mssi2.sr_instance_id'
701 ||' UNION'
702 ||' select 1'
703 ||' from msc_system_items msi, msd_setup_parameters par'
704 ||' where mssi.item_name = msi.item_name'
705 ||' and msi.organization_code = par.PARAMETER_VALUE'
706 ||' and ((msi.mrp_planning_code <> 6) OR (msi.pick_components_flag =''Y''))'
707 ||' and (('||v_plan_per_profile||'= 4) OR (msi.ato_forecast_control <> 3))'
708 ||' and msi.sr_instance_id = :p_instance_id'
709 ||' and msi.plan_id = -1'
710 ||' and par.parameter_name = ''MSD_MASTER_ORG_LEGACY'''
711 ||' and par.instance_id = msi.sr_instance_id ) ';
712
713
714 IF lv_debug THEN
715 msc_st_util.log_message(lv_sql_stmt);
716 END IF;
717
718 EXECUTE IMMEDIATE lv_sql_stmt
719 USING p_instance_id,
720 p_batch_id,
721 p_instance_id,
722 p_instance_id,
723 p_instance_id;
724 */
725
726 EXCEPTION
727 WHEN OTHERS THEN
728 ROLLBACK;
729
730 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_ITEMS '||'('
731 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
732 msc_st_util.log_message(SQLERRM);
733 msc_st_util.log_message(lv_error_text);
734 ERRBUF := lv_error_text;
735 RETCODE := G_WARNING;
736
737 END LOAD_ITEMS;
738
739 /*==========================================================================+
740 | DESCRIPTION : This function performs the validation and loads the data |
741 | for business object category |
742 +==========================================================================*/
743 PROCEDURE LOAD_CATEGORY (ERRBUF OUT NOCOPY VARCHAR,
744 RETCODE OUT NOCOPY NUMBER,
745 p_instance_id IN NUMBER,
746 p_batch_id IN NUMBER,
747 p_link IN NUMBER)
748 IS
749 lv_sql_stmt VARCHAR2(4000);
750 lv_error_text VARCHAR2(250);
751 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
752
753 BEGIN
754
755
756
757 v_sql_stmt := 01;
758
759 lv_sql_stmt :=
760 ' INSERT INTO MSD_ST_LEVEL_VALUES '
761 ||' (INSTANCE , '
762 ||' LEVEL_ID, '
763 ||' LEVEL_VALUE, '
764 ||' SR_LEVEL_PK, '
765 ||' LEVEL_VALUE_DESC, '
766 ||' ATTRIBUTE1, '
767 ||' ATTRIBUTE2, '
768 ||' ATTRIBUTE3, '
769 ||' ATTRIBUTE4, '
770 ||' ATTRIBUTE5, '
771 ||' LAST_UPDATE_DATE, '
772 ||' LAST_UPDATED_BY, '
773 ||' CREATION_DATE, '
774 ||' CREATED_BY, '
775 ||' LAST_UPDATE_LOGIN, '
776 ||' REQUEST_ID, '
777 ||' PROGRAM_APPLICATION_ID, '
778 ||' PROGRAM_ID, '
779 ||' PROGRAM_UPDATE_DATE ) '
780 ||' SELECT DISTINCT'
781 ||' mic.sr_instance_id,'
782 ||' 2 ,'
783 ||' mic.category_name, '
784 ||' mic.sr_category_id, '
785 ||' mic.DESCRIPTION, '
786 ||' NULL,'
787 ||' NULL,'
788 ||' NULL,'
789 ||' NULL,'
790 ||' NULL,'
791 ||' mic.last_update_date,'
792 ||' mic.last_updated_by,'
793 ||' mic.creation_date,'
794 ||' mic.created_by, '
795 ||' mic.last_update_login, '
796 ||' mic.request_id , '
797 ||' mic.program_application_id, '
798 ||' mic.program_id , '
799 ||' mic.program_update_date '
800 ||' FROM msc_st_item_categories mic,msc_st_system_items mssi'
801 ||' WHERE mic.sr_instance_id = :p_instance_id'
802 ||' AND mic.process_flag = '||G_VALID
803 ||' AND mic.batch_id = :p_batch_id'
804 ||' AND mic.organization_code = ( SELECT '
805 ||' parameter_value from msd_setup_parameters'
806 ||' WHERE parameter_name = ''MSD_MASTER_ORG_LEGACY'''
807 ||' AND instance_id = mic.sr_instance_id)'
808 ||' AND mic.category_set_name = ( SELECT '
809 ||' parameter_value from msd_setup_parameters'
810 ||' WHERE parameter_name = ''MSD_CATEGORY_SET_NAME_LEGACY'' '
811 ||' AND instance_id = mic.sr_instance_id)'
812 ||' AND (('||v_plan_per_profile||'= 4) OR (mssi.ato_forecast_control <> 3))'
813 ||' AND mssi.mrp_planning_code <> 6'
814 ||' AND mic.sr_instance_id =mssi.sr_instance_id'
815 ||' AND mic.organization_id= mssi.organization_id'
816 ||' AND mic.item_name = mssi.item_name'
817 ||' UNION '
818 ||' SELECT DISTINCT'
819 ||' mic.sr_instance_id,'
820 ||' 2 ,'
821 ||' mic.category_name, '
822 ||' mic.sr_category_id, '
823 ||' mic.DESCRIPTION, '
824 ||' NULL,'
825 ||' NULL,'
826 ||' NULL,'
827 ||' NULL,'
828 ||' NULL,'
829 ||' mic.last_update_date,'
830 ||' mic.last_updated_by,'
831 ||' mic.creation_date,'
832 ||' mic.created_by, '
833 ||' mic.last_update_login, '
834 ||' mic.request_id , '
835 ||' mic.program_application_id, '
836 ||' mic.program_id , '
837 ||' mic.program_update_date '
838 ||' FROM msc_st_item_categories mic,msc_system_items msi'
839 ||' WHERE mic.sr_instance_id = :p_instance_id'
840 ||' AND mic.process_flag = '||G_VALID
841 ||' AND mic.batch_id = :p_batch_id'
842 ||' AND mic.organization_code = ( SELECT '
843 ||' parameter_value from msd_setup_parameters'
844 ||' WHERE parameter_name = ''MSD_MASTER_ORG_LEGACY'''
845 ||' AND instance_id = mic.sr_instance_id)'
846 ||' AND mic.category_set_name = ( SELECT '
847 ||' parameter_value from msd_setup_parameters'
848 ||' WHERE parameter_name = ''MSD_CATEGORY_SET_NAME_LEGACY'' '
849 ||' AND instance_id = mic.sr_instance_id)'
850 ||' AND (('||v_plan_per_profile||'= 4) OR (msi.ato_forecast_control <> 3))'
851 ||' AND msi.mrp_planning_code <> 6'
852 ||' AND mic.sr_instance_id =msi.sr_instance_id'
853 ||' AND mic.organization_id= msi.organization_id'
854 ||' AND mic.item_name = msi.item_name'
855 ||' AND msi.plan_id = -1';
856
857
858 IF lv_debug THEN
859 msc_st_util.log_message(lv_sql_stmt);
860 END IF;
861 EXECUTE IMMEDIATE lv_sql_stmt
862 USING p_instance_id,
863 p_batch_id,
864 p_instance_id,
865 p_batch_id;
866
867
868 IF (p_link = 1) THEN
869
870 v_sql_stmt := 02;
871
872 lv_sql_stmt :=
873 ' INSERT INTO MSD_ST_LEVEL_ASSOCIATIONS'
874 ||' (INSTANCE , '
875 ||' LEVEL_ID, '
876 ||' SR_LEVEL_PK, '
877 ||' PARENT_LEVEL_ID,'
878 ||' SR_PARENT_LEVEL_PK,'
879 ||' ATTRIBUTE1, '
880 ||' ATTRIBUTE2, '
881 ||' ATTRIBUTE3, '
882 ||' ATTRIBUTE4, '
883 ||' ATTRIBUTE5, '
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 ||' SELECT DISTINCT'
894 ||' mic.sr_instance_id,'
895 ||' 1 ,'
896 ||' mic.inventory_item_id, '
897 ||' 2 ,'
898 ||' mic.sr_category_id,'
899 ||' NULL,'
900 ||' NULL,'
901 ||' NULL,'
902 ||' NULL,'
903 ||' NULL,'
904 ||' mic.last_update_date,'
905 ||' mic.last_updated_by,'
906 ||' mic.creation_date,'
907 ||' mic.created_by, '
908 ||' mic.last_update_login, '
909 ||' mic.request_id , '
910 ||' mic.program_application_id, '
911 ||' mic.program_id , '
912 ||' mic.program_update_date '
913 ||' FROM msc_st_item_categories mic,msc_st_system_items mssi'
914 ||' WHERE mic.sr_instance_id = :p_instance_id'
915 ||' AND mic.process_flag = '||G_VALID
916 ||' AND mic.batch_id = :p_batch_id'
917 ||' AND mic.organization_code = ( SELECT '
918 ||' parameter_value from msd_setup_parameters'
919 ||' WHERE parameter_name = ''MSD_MASTER_ORG_LEGACY'''
920 ||' AND instance_id = mic.sr_instance_id)'
921 ||' AND mic.category_set_name = ( SELECT '
922 ||' parameter_value from msd_setup_parameters'
923 ||' WHERE parameter_name = ''MSD_CATEGORY_SET_NAME_LEGACY'' '
924 ||' AND instance_id = mic.sr_instance_id)'
925 ||' AND (('||v_plan_per_profile||'= 4) OR (mssi.ato_forecast_control <> 3))'
926 ||' AND mssi.mrp_planning_code <> 6'
927 ||' AND mic.sr_instance_id =mssi.sr_instance_id'
928 ||' AND mic.organization_id= mssi.organization_id'
929 ||' AND mic.item_name = mssi.item_name'
930 ||' UNION '
931 ||' SELECT DISTINCT'
932 ||' mic.sr_instance_id,'
933 ||' 1 ,'
934 ||' mic.inventory_item_id, '
935 ||' 2 ,'
936 ||' mic.sr_category_id,'
937 ||' NULL,'
938 ||' NULL,'
939 ||' NULL,'
940 ||' NULL,'
941 ||' NULL,'
942 ||' mic.last_update_date,'
943 ||' mic.last_updated_by,'
944 ||' mic.creation_date,'
945 ||' mic.created_by, '
946 ||' mic.last_update_login, '
947 ||' mic.request_id , '
948 ||' mic.program_application_id, '
949 ||' mic.program_id , '
950 ||' mic.program_update_date '
951 ||' FROM msc_st_item_categories mic,msc_system_items msi'
952 ||' WHERE mic.sr_instance_id = :p_instance_id'
953 ||' AND mic.process_flag = '||G_VALID
954 ||' AND mic.batch_id = :p_batch_id'
955 ||' AND mic.organization_code = ( SELECT '
956 ||' parameter_value from msd_setup_parameters'
957 ||' WHERE parameter_name = ''MSD_MASTER_ORG_LEGACY'''
958 ||' AND instance_id = mic.sr_instance_id)'
959 ||' AND mic.category_set_name = ( SELECT '
960 ||' parameter_value from msd_setup_parameters'
961 ||' WHERE parameter_name = ''MSD_CATEGORY_SET_NAME_LEGACY'' '
962 ||' AND instance_id = mic.sr_instance_id)'
963 ||' AND (('||v_plan_per_profile||'= 4) OR (msi.ato_forecast_control <> 3))'
964 ||' AND msi.mrp_planning_code <> 6'
965 ||' AND mic.sr_instance_id =msi.sr_instance_id'
966 ||' AND mic.organization_id= msi.organization_id'
967 ||' AND mic.item_name = msi.item_name'
968 ||' AND msi.plan_id = -1';
969
970
971 IF lv_debug THEN
972 msc_st_util.log_message(lv_sql_stmt);
973 END IF;
974
975 EXECUTE IMMEDIATE lv_sql_stmt
976 USING p_instance_id,
977 p_batch_id,
978 p_instance_id,
979 p_batch_id;
980
981 END IF ; --p_link
982
983 EXCEPTION
984 WHEN OTHERS THEN
985 ROLLBACK;
986
987 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_CATEGORY '||'('
988 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
989 msc_st_util.log_message(lv_error_text);
990 ERRBUF := lv_error_text;
991 RETCODE := G_WARNING;
992
993 END LOAD_CATEGORY;
994 /*==========================================================================+
995 | DESCRIPTION : This function performs the validation and loads the data |
996 | for business object ship to location of customer |
997 +==========================================================================*/
998
999 PROCEDURE LOAD_SITE (ERRBUF OUT NOCOPY VARCHAR,
1000 RETCODE OUT NOCOPY NUMBER,
1001 p_instance_id IN NUMBER,
1002 p_batch_id IN NUMBER)
1003 IS
1004 lv_sql_stmt VARCHAR2(4000);
1005 lv_error_text VARCHAR2(250);
1006 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
1007 cursor c1 is select count(*) from MSD_HIERARCHY_LEVELS
1008 where LEVEL_ID = 11
1009 AND PARENT_LEVEL_ID = 15 ;
1010
1011 lv_other_exist PLS_INTEGER := 0;
1012
1013 BEGIN
1014 v_sql_stmt := 01;
1015 lv_sql_stmt :=
1016 ' INSERT INTO MSD_ST_LEVEL_VALUES '
1017 ||' (INSTANCE , '
1018 ||' LEVEL_ID, '
1019 ||' LEVEL_VALUE, '
1020 ||' SR_LEVEL_PK, '
1021 ||' ATTRIBUTE1, '
1022 ||' ATTRIBUTE2, '
1023 ||' ATTRIBUTE3, '
1024 ||' ATTRIBUTE4, '
1025 ||' ATTRIBUTE5, '
1026 ||' LAST_UPDATE_DATE, '
1027 ||' LAST_UPDATED_BY, '
1028 ||' CREATION_DATE, '
1029 ||' CREATED_BY, '
1030 ||' LAST_UPDATE_LOGIN, '
1031 ||' REQUEST_ID, '
1032 ||' PROGRAM_APPLICATION_ID, '
1033 ||' PROGRAM_ID, '
1034 ||' PROGRAM_UPDATE_DATE ) '
1035 ||' SELECT DISTINCT'
1036 ||' sr_instance_id,'
1037 ||' 11 ,'
1038 ||' tp_site_code, '
1039 ||' sr_tp_site_id, '
1040 ||' NULL,'
1041 ||' NULL,'
1042 ||' NULL,'
1043 ||' NULL,'
1044 ||' NULL,'
1045 ||' last_update_date,'
1046 ||' last_updated_by,'
1047 ||' creation_date,'
1048 ||' created_by , '
1049 ||' last_update_login, '
1050 ||' request_id , '
1051 ||' program_application_id, '
1052 ||' program_id , '
1053 ||' program_update_date '
1054 ||' FROM msc_st_trading_partner_sites'
1055 ||' WHERE partner_type = 2' -- customer site
1056 ||' AND process_flag = '||G_VALID
1057 ||' AND sr_instance_id = :p_instance_id'
1058 ||' AND batch_id = :p_batch_id';
1059
1060 IF lv_debug THEN
1061 msc_st_util.log_message(lv_sql_stmt);
1062 END IF;
1063 EXECUTE IMMEDIATE lv_sql_stmt
1064 USING p_instance_id,
1065 p_batch_id;
1066
1067
1068 OPEN c1;
1069 FETCH c1 into lv_other_exist;
1070 CLOSE c1;
1071
1072 IF lv_other_exist >= 1 THEN
1073
1074 v_sql_stmt := 02;
1075 lv_sql_stmt :=
1076 ' INSERT INTO MSD_ST_LEVEL_ASSOCIATIONS'
1077 ||' (INSTANCE , '
1078 ||' LEVEL_ID, '
1079 ||' SR_LEVEL_PK, '
1080 ||' PARENT_LEVEL_ID,'
1081 ||' SR_PARENT_LEVEL_PK,'
1082 ||' ATTRIBUTE1, '
1083 ||' ATTRIBUTE2, '
1084 ||' ATTRIBUTE3, '
1085 ||' ATTRIBUTE4, '
1086 ||' ATTRIBUTE5, '
1087 ||' LAST_UPDATE_DATE, '
1088 ||' LAST_UPDATED_BY, '
1089 ||' CREATION_DATE, '
1090 ||' CREATED_BY, '
1091 ||' LAST_UPDATE_LOGIN, '
1092 ||' REQUEST_ID, '
1093 ||' PROGRAM_APPLICATION_ID, '
1094 ||' PROGRAM_ID, '
1095 ||' PROGRAM_UPDATE_DATE ) '
1096 ||' SELECT DISTINCT'
1097 ||' sr_instance_id,'
1098 ||' 11 ,'
1099 ||' sr_tp_site_id,'
1100 ||' 15 ,'
1101 ||' sr_tp_id, '
1102 ||' NULL,'
1103 ||' NULL,'
1104 ||' NULL,'
1105 ||' NULL,'
1106 ||' NULL,'
1107 ||' last_update_date,'
1108 ||' last_updated_by,'
1109 ||' creation_date,'
1110 ||' created_by, '
1111 ||' last_update_login, '
1112 ||' request_id , '
1113 ||' program_application_id, '
1114 ||' program_id , '
1115 ||' program_update_date '
1116 ||' FROM msc_st_trading_partner_sites tps'
1117 ||' WHERE sr_instance_id = :p_instance_id'
1118 ||' AND partner_type = 2'
1119 ||' AND process_flag = '||G_VALID
1120 ||' AND batch_id = :p_batch_id';
1121
1122 IF lv_debug THEN
1123 msc_st_util.log_message(lv_sql_stmt);
1124 END IF;
1125
1126 EXECUTE IMMEDIATE lv_sql_stmt
1127 USING p_instance_id,
1128 p_batch_id;
1129
1130 END IF;
1131
1132 EXCEPTION
1133 WHEN OTHERS THEN
1134 ROLLBACK;
1135
1136 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_SITE '||'('
1137 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
1138 msc_st_util.log_message(lv_error_text);
1139 ERRBUF := lv_error_text;
1140 RETCODE := G_WARNING;
1141
1142 END LOAD_SITE;
1143
1144 /*==========================================================================+
1145 | DESCRIPTION : This function performs the validation and loads the data |
1146 | for business object demand_classes |
1147 +==========================================================================*/
1148 PROCEDURE LOAD_DEMAND_CLASS ( ERRBUF OUT NOCOPY VARCHAR,
1149 RETCODE OUT NOCOPY NUMBER,
1150 p_instance_code IN VARCHAR,
1151 p_instance_id IN NUMBER,
1152 p_batch_id IN NUMBER)
1153 IS
1154
1155 lv_sql_stmt VARCHAR2(4000);
1156 lv_error_text VARCHAR2(250);
1157 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
1158
1159 cursor c1 (p_instance_code varchar2) is
1160 select local_id from msd_local_id_setup
1161 where char1 = p_instance_code
1162 -- and char2 = 'All Demand Classes'
1163 and level_id = 40;
1164
1165 lv_all_dcs_pk NUMBER :=0; --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
1166
1167 lv_all_dcs_desc varchar2(240) := NULL; --Adding this to insert level value - 'All Demand Classes'
1168
1169 BEGIN
1170
1171 v_sql_stmt := 01;
1172
1173 lv_sql_stmt :=
1174 ' INSERT INTO MSD_ST_LEVEL_VALUES '
1175 ||' (INSTANCE , '
1176 ||' LEVEL_ID, '
1177 ||' LEVEL_VALUE, '
1178 ||' SR_LEVEL_PK, '
1179 ||' LEVEL_VALUE_DESC, '
1180 ||' ATTRIBUTE1, '
1181 ||' ATTRIBUTE2, '
1182 ||' ATTRIBUTE3, '
1183 ||' ATTRIBUTE4, '
1184 ||' ATTRIBUTE5, '
1185 ||' LAST_UPDATE_DATE, '
1186 ||' LAST_UPDATED_BY, '
1187 ||' CREATION_DATE, '
1188 ||' CREATED_BY, '
1189 ||' LAST_UPDATE_LOGIN, '
1190 ||' REQUEST_ID, '
1191 ||' PROGRAM_APPLICATION_ID, '
1192 ||' PROGRAM_ID, '
1193 ||' PROGRAM_UPDATE_DATE ) '
1194 ||' SELECT '
1195 ||' sr_instance_id,'
1196 ||' 34 ,'
1197 ||' meaning, '
1198 ||' demand_class, '
1199 ||' DESCRIPTION, '
1200 ||' NULL,'
1201 ||' NULL,'
1202 ||' NULL,'
1203 ||' NULL,'
1204 ||' NULL,'
1205 ||' last_update_date,'
1206 ||' last_updated_by,'
1207 ||' creation_date,'
1208 ||' created_by, '
1209 ||' last_update_login, '
1210 ||' request_id , '
1211 ||' program_application_id, '
1212 ||' program_id , '
1213 ||' program_update_date '
1214 ||' FROM msc_st_demand_classes '
1215 ||' WHERE sr_instance_id = :p_instance_id'
1216 ||' AND process_flag = '||G_VALID
1217 ||' AND batch_id = :p_batch_id';
1218
1219
1220 IF lv_debug THEN
1221 msc_st_util.log_message(lv_sql_stmt);
1222 END IF;
1223
1224 EXECUTE IMMEDIATE lv_sql_stmt
1225 USING p_instance_id,
1226 p_batch_id;
1227
1228
1229 OPEN c1(p_instance_code);
1230 FETCH c1 into lv_all_dcs_pk; --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
1231 CLOSE c1;
1232
1233 IF lv_all_dcs_pk = 0 THEN --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
1234
1235 lv_all_dcs_pk := msd_sr_util.get_all_dcs_pk; -- Insert 'All Demand Classes' records with sr_level_pk as -6
1236 lv_all_dcs_desc := msd_sr_util.get_all_dcs_desc; -- Calling fuction - msd_sr_util.get_all_dcs_desc, to fetch the level value 'All Demand Classes'
1237
1238 INSERT INTO msd_local_id_setup -- insert into msd_local_id_setup
1239 (local_id,
1240 instance_id,
1241 level_id,
1242 char1,
1243 char2,
1244 last_update_date,
1245 last_updated_by,
1246 creation_date,
1247 created_by )
1248 VALUES
1249 (lv_all_dcs_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
1250 p_instance_id,
1251 40,
1252 p_instance_code,
1253 lv_all_dcs_desc, --Using the value fetched from function - msd_sr_util.get_all_dcs_desc
1254 sysdate,
1255 -1,
1256 sysdate,
1257 -1);
1258
1259 INSERT INTO MSD_ST_LEVEL_VALUES --insert into msd_st_level_values
1260 (INSTANCE ,
1261 LEVEL_ID,
1262 LEVEL_VALUE,
1263 SR_LEVEL_PK,
1264 ATTRIBUTE1,
1265 ATTRIBUTE2,
1266 ATTRIBUTE3,
1267 ATTRIBUTE4,
1268 ATTRIBUTE5,
1269 LAST_UPDATE_DATE,
1270 LAST_UPDATED_BY,
1271 CREATION_DATE,
1272 CREATED_BY,
1273 LAST_UPDATE_LOGIN,
1274 REQUEST_ID,
1275 PROGRAM_APPLICATION_ID,
1276 PROGRAM_ID,
1277 PROGRAM_UPDATE_DATE )
1278 VALUES
1279 (p_instance_id,
1280 40,
1281 lv_all_dcs_desc, --Using the value fetched from function - msd_sr_util.get_all_dcs_desc
1282 lv_all_dcs_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
1283 NULL,
1284 NULL,
1285 NULL,
1286 NULL,
1287 NULL,
1288 sysdate,
1289 -1,
1290 sysdate,
1291 -1,
1292 -1,
1293 -1,
1294 -1,
1295 -1,
1296 sysdate);
1297
1298 END IF;
1299
1300 v_sql_stmt := 02;
1301
1302 lv_sql_stmt :=
1303 ' INSERT INTO MSD_ST_LEVEL_ASSOCIATIONS'
1304 ||' (INSTANCE , '
1305 ||' LEVEL_ID, '
1306 ||' SR_LEVEL_PK, '
1307 ||' PARENT_LEVEL_ID,'
1308 ||' SR_PARENT_LEVEL_PK,'
1309 ||' ATTRIBUTE1, '
1310 ||' ATTRIBUTE2, '
1311 ||' ATTRIBUTE3, '
1312 ||' ATTRIBUTE4, '
1313 ||' ATTRIBUTE5, '
1314 ||' LAST_UPDATE_DATE, '
1315 ||' LAST_UPDATED_BY, '
1316 ||' CREATION_DATE, '
1317 ||' CREATED_BY, '
1318 ||' LAST_UPDATE_LOGIN, '
1319 ||' REQUEST_ID, '
1320 ||' PROGRAM_APPLICATION_ID, '
1321 ||' PROGRAM_ID, '
1322 ||' PROGRAM_UPDATE_DATE ) '
1323 ||' SELECT DISTINCT'
1324 ||' sr_instance_id,'
1325 ||' 34 ,'
1326 ||' demand_class, '
1327 ||' 40 ,'
1328 ||' :lv_all_dcs_pk, ' --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
1329 ||' NULL,'
1330 ||' NULL,'
1331 ||' NULL,'
1332 ||' NULL,'
1333 ||' NULL,'
1334 ||' last_update_date,'
1335 ||' last_updated_by,'
1336 ||' creation_date,'
1337 ||' created_by, '
1338 ||' last_update_login, '
1339 ||' request_id , '
1340 ||' program_application_id, '
1341 ||' program_id , '
1342 ||' program_update_date '
1343 ||' FROM msc_st_demand_classes '
1344 ||' WHERE sr_instance_id = :p_instance_id'
1345 ||' AND process_flag = '||G_VALID
1346 ||' AND batch_id = :p_batch_id';
1347
1348 IF lv_debug THEN
1349 msc_st_util.log_message(lv_sql_stmt);
1350 END IF;
1351
1352 EXECUTE IMMEDIATE lv_sql_stmt
1353 USING lv_all_dcs_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
1354 p_instance_id,
1355 p_batch_id;
1356
1357 EXCEPTION
1358 WHEN OTHERS THEN
1359 ROLLBACK;
1360
1361 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_DEMAND_CLASS '||'('
1362 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
1363 msc_st_util.log_message(lv_error_text);
1364 ERRBUF := lv_error_text;
1365 RETCODE := G_WARNING;
1366
1367 END LOAD_DEMAND_CLASS;
1368
1369 /*==========================================================================+
1370 | DESCRIPTION : This function performs the validation and loads the data |
1371 | for business object level_values |
1372 +==========================================================================*/
1373 PROCEDURE LOAD_LEVEL_VALUE(ERRBUF OUT NOCOPY VARCHAR,
1374 RETCODE OUT NOCOPY NUMBER,
1375 p_instance_code IN VARCHAR,
1376 p_instance_id IN NUMBER,
1377 p_batch_id IN NUMBER)
1378 IS
1379 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
1380 TYPE LevelValueTab IS TABLE OF VARCHAR2(255) INDEX BY BINARY_INTEGER;
1381 TYPE SrLevelPk IS TABLE OF VARCHAR2(255) INDEX BY BINARY_INTEGER;
1382 v_index NUMBER :=0;
1383 lb_rowid RowidTab;
1384 lb_level_value LevelValueTab;
1385 lb_sr_level_pk SrLevelPk;
1386 lv_sql_stmt VARCHAR2(4000);
1387 lv_batch_id msd_st_level_values.batch_id%TYPE;
1388 lv_message_text msc_errors.error_text%TYPE;
1389 lv_error_text VARCHAR2(250);
1390 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
1391 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
1392 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
1393 lv_current_date DATE := msc_cl_pre_process.v_current_date;
1394 lv_return NUMBER := 0;
1395 /* lv_master_org_id NUMBER := 0; */
1396 lv_column_names VARCHAR2(5000);
1397 ex_logging_err EXCEPTION;
1398
1399 CURSOR c1(p_batch_id NUMBER)IS
1400 SELECT rowid
1401 FROM msd_st_level_values
1402 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
1403 AND sr_instance_code = p_instance_code
1404 AND batch_id = p_batch_id;
1405
1406 CURSOR c2(p_batch_id NUMBER) IS
1407 SELECT rowid
1408 FROM msd_st_level_values
1409 WHERE process_flag = G_IN_PROCESS
1410 AND sr_instance_code = p_instance_code
1411 AND batch_id = p_batch_id
1412 AND NVL(sr_level_pk,NULL_CHAR) = NULL_CHAR ;
1413
1414 lv_instance_type msc_apps_instances.instance_type%TYPE;
1415
1416 CURSOR instance_type IS
1417 SELECT instance_type
1418 FROM msc_apps_instances
1419 WHERE instance_id=p_instance_id;
1420 /*
1421 CURSOR master_org(p_instance_id NUMBER) IS
1422 SELECT parameter_value
1423 FROM msd_setup_parameters
1424 WHERE parameter_name = 'MSD_MASTER_ORG'
1425 AND instance_id = p_instance_id;
1426 */
1427 CURSOR c3(p_batch_id NUMBER)IS
1428 SELECT level_value
1429 FROM msd_st_level_values
1430 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
1431 AND sr_instance_code = p_instance_code
1432 AND level_id = 1
1433 AND batch_id = p_batch_id;
1434
1435 BEGIN
1436
1437 lv_batch_id := p_batch_id;
1438
1439 lv_column_names :=
1440
1441 'SR_INSTANCE_CODE||''~''||'
1442 ||'LEVEL_NAME||''~''||'
1443 ||'LEVEL_VALUE||''~''||'
1444 ||'LEVEL_VALUE_DESC||''~''||'
1445 ||'ATTRIBUTE1||''~''||'
1446 ||'ATTRIBUTE2||''~''||'
1447 ||'ATTRIBUTE3||''~''||'
1448 ||'ATTRIBUTE4||''~''||'
1449 ||'ATTRIBUTE5 ';
1450
1451 OPEN c1(lv_batch_id);
1452 FETCH c1 BULK COLLECT INTO lb_rowid;
1453 CLOSE c1;
1454
1455 v_sql_stmt := 01;
1456
1457 FORALL j IN 1..lb_rowid.COUNT
1458 UPDATE msd_st_level_values
1459 SET st_transaction_id = msd_st_level_values_s.NEXTVAL,
1460 last_update_date = lv_current_date,
1461 last_updated_by = lv_current_user,
1462 creation_date = lv_current_date,
1463 created_by = lv_current_user
1464 WHERE rowid = lb_rowid(j);
1465
1466
1467 -- Error out the records where level_name is invalid
1468 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
1469 (p_app_short_name => 'MSC',
1470 p_error_code => 'MSC_PP_INVALID_VALUE',
1471 p_message_text => lv_message_text,
1472 p_error_text => lv_error_text,
1473 p_token1 => 'COLUMN_NAME',
1474 p_token_value1 => 'LEVEL_NAME');
1475
1476 IF lv_return <> 0 THEN
1477 RAISE ex_logging_err;
1478 END IF;
1479
1480 -- Derive LEVEL_ID from msd_levels
1481 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
1482 (p_table_name => 'MSD_ST_LEVEL_VALUES',
1483 p_level_name_col => 'LEVEL_NAME',
1484 p_level_id_col => 'LEVEL_ID',
1485 p_severity => G_SEV_ERROR,
1486 p_message_text => lv_message_text,
1487 p_instance_code => p_instance_code,
1488 p_batch_id => lv_batch_id,
1489 p_error_text => lv_error_text);
1490
1491
1492 IF lv_return <> 0 THEN
1493 RAISE ex_logging_err;
1494 END IF;
1495
1496
1497
1498 OPEN instance_type;
1499 FETCH instance_type into lv_instance_type;
1500 CLOSE instance_type;
1501
1502
1503
1504
1505 IF (lv_instance_type = G_INS_OTHER) THEN
1506
1507 -- Error out the records where level_name is invalid
1508 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
1509 (p_app_short_name => 'MSC',
1510 p_error_code => 'MSC_PP_INVALID_VALUE',
1511 p_message_text => lv_message_text,
1512 p_error_text => lv_error_text,
1513 p_token1 => 'COLUMN_NAME',
1514 p_token_value1 => 'LEVEL_NAME');
1515
1516 IF lv_return <> 0 THEN
1517 RAISE ex_logging_err;
1518 END IF;
1519
1520 -- Error out the records if Level_id is IN (1,2,3,7,11,15,34) ASCP/DP common
1521 -- level values to be collected via MSC flat file
1522
1523 lv_sql_stmt :=
1524 'UPDATE msd_st_level_values'
1525 ||' SET process_flag = '||G_ERROR_FLG||','
1526 ||' error_text = '||''''||lv_message_text||''''
1527 ||' WHERE level_id IN (1,2,3,7,11,15,34)'
1528 ||' AND process_flag = '||G_IN_PROCESS
1529 ||' AND batch_id = :lv_batch_id'
1530 ||' AND sr_instance_code = :p_instance_code';
1531
1532 IF lv_debug THEN
1533 msc_st_util.log_message(lv_sql_stmt);
1534 END IF;
1535 EXECUTE IMMEDIATE lv_sql_stmt
1536 USING lv_batch_id,
1537 p_instance_code;
1538
1539 END IF;
1540
1541 -- Error out the record if level value is NULL
1542 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
1543 (p_app_short_name => 'MSC',
1544 p_error_code => 'MSC_PP_COL_VAL_NULL',
1545 p_message_text => lv_message_text,
1546 p_error_text => lv_error_text,
1547 p_token1 => 'COLUMN_NAME',
1548 p_token_value1 => 'LEVEL_VALUE');
1549
1550 IF lv_return <> 0 THEN
1551 RAISE ex_logging_err;
1552 END IF;
1553
1554 v_sql_stmt := 03;
1555 lv_sql_stmt :=
1556 'UPDATE msd_st_level_values'
1557 ||' SET process_flag = '||G_ERROR_FLG||','
1558 ||' error_text = '||''''||lv_message_text||''''
1559 ||' WHERE NVL(level_value, '||''''||NULL_CHAR||''''||') '
1560 ||' = '||''''||NULL_CHAR||''''
1561 ||' AND batch_id = :lv_batch_id'
1562 ||' AND process_flag = '||G_IN_PROCESS
1563 ||' AND sr_instance_code = :p_instance_code';
1564
1565 IF lv_debug THEN
1566 msc_st_util.log_message(lv_sql_stmt);
1567 END IF;
1568 EXECUTE IMMEDIATE lv_sql_stmt
1569 USING lv_batch_id,
1570 p_instance_code;
1571
1572
1573
1574
1575 IF (lv_instance_type <> G_INS_OTHER) THEN
1576
1577 -- Now derive sr_level_pk from the ASCP tables if Level Values are loaded forERP data.
1578 v_sql_stmt := 05;
1579 lv_return := MSC_ST_UTIL.DERIVE_SETUP_SR_LEVEL_PK
1580 (p_table_name => 'MSD_ST_LEVEL_VALUES',
1581 p_level_val_col => 'LEVEL_VALUE',
1582 p_level_pk_col => 'SR_LEVEL_PK',
1583 p_level_id_col => 'LEVEL_ID',
1584 p_instance_code => p_instance_code,
1585 p_instance_id => p_instance_id,
1586 p_error_text => lv_error_text,
1587 p_batch_id => lv_batch_id);
1588
1589 IF lv_return <> 0 THEN
1590 RAISE ex_logging_err;
1591 END IF;
1592
1593
1594
1595 v_sql_stmt := 06;
1596 OPEN c3(lv_batch_id);
1597 FETCH c3 BULK COLLECT INTO lb_level_value ;
1598
1599 IF c3%ROWCOUNT > 0 THEN
1600 -- Insert into the Item List Price table the UOM for the Master orgs
1601 /*
1602 OPEN master_org(p_instance_id);
1603 FETCH master_org into lv_master_org_id;
1604 CLOSE master_org;
1605 */
1606 v_sql_stmt := 07;
1607 FORALL j IN 1..lb_level_value.COUNT
1608 INSERT INTO MSD_ST_ITEM_LIST_PRICE
1609 (INSTANCE ,
1610 ITEM ,
1611 LIST_PRICE ,
1612 AVG_DISCOUNT ,
1613 BASE_UOM ,
1614 SR_ITEM_PK ,
1615 ITEM_TYPE_ID ,
1616 FORECAST_TYPE_ID ,
1617 SR_INSTANCE_CODE,
1618 LAST_UPDATE_DATE,
1619 LAST_UPDATED_BY,
1620 CREATION_DATE,
1621 CREATED_BY,
1622 LAST_UPDATE_LOGIN,
1623 REQUEST_ID,
1624 PROGRAM_APPLICATION_ID,
1625 PROGRAM_ID,
1626 PROGRAM_UPDATE_DATE )
1627 SELECT
1628 SR_INSTANCE_ID ,
1629 ITEM_NAME ,
1630 LIST_PRICE ,
1631 AVERAGE_DISCOUNT ,
1632 UOM_CODE ,
1633 SR_INVENTORY_ITEM_ID ,
1634 BOM_ITEM_TYPE ,
1635 ATO_FORECAST_CONTROL ,
1636 p_instance_code,
1637 last_update_date,
1638 last_updated_by,
1639 creation_date,
1640 created_by ,
1641 last_update_login,
1642 request_id ,
1643 program_application_id,
1644 program_id ,
1645 program_update_date
1646 FROM MSC_SYSTEM_ITEMS
1647 WHERE item_name = lb_level_value(j)
1648 AND sr_instance_id = p_instance_id
1649 AND plan_id = -1
1650 AND organization_id = (select mtp.sr_tp_id
1651 from msc_trading_partners mtp,msd_setup_parameters msp
1652 where msp.parameter_name ='MSD_MASTER_ORG_LEGACY'
1653 and msp.instance_id = p_instance_id
1654 and msp.parameter_value = substr(mtp.organization_code,instr(mtp.organization_code,':')+1,length(mtp.organization_code))
1655 and nvl(mtp.company_id,-1) = -1
1656 and mtp.sr_instance_id = msp.instance_id);
1657 /* AND organization_id = lv_master_org_id; */
1658
1659
1660 END IF ; --IF c3%ROWCOUNT > 0 THEN
1661 CLOSE c3;
1662
1663 END IF; --IF (lv_instance_type <> G_INS_OTHER) THEN
1664
1665 -- Now derive sr_level_pk from the msd_local_id_setup
1666 v_sql_stmt := 08;
1667 lv_return := MSC_ST_UTIL.DERIVE_SR_LEVEL_PK
1668 (p_table_name => 'MSD_ST_LEVEL_VALUES',
1669 p_level_val_col => 'LEVEL_VALUE',
1670 p_level_pk_col => 'SR_LEVEL_PK',
1671 p_level_id_col => 'LEVEL_ID',
1672 p_instance_code => p_instance_code,
1673 p_error_text => lv_error_text,
1674 p_batch_id => lv_batch_id);
1675
1676 IF lv_return <> 0 THEN
1677 RAISE ex_logging_err;
1678 END IF;
1679
1680 --Call to customised validation.
1681 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
1682 (ERRBUF => lv_error_text,
1683 RETCODE => lv_return,
1684 pBatchID => lv_batch_id,
1685 pInstanceCode => p_instance_code,
1686 pEntityName => 'MSD_ST_LEVEL_VALUES',
1687 pInstanceID => p_instance_id);
1688
1689 IF NVL(lv_return,0) <> 0 THEN
1690 RAISE ex_logging_err;
1691 END IF;
1692
1693 -- Generate the sr_level_pk
1694
1695 OPEN c2(lv_batch_id);
1696 FETCH c2 BULK COLLECT INTO lb_rowid ;
1697
1698 IF c2%ROWCOUNT > 0 THEN
1699
1700 /* FORALL j IN 1..lb_rowid.COUNT
1701 UPDATE msd_st_level_values
1702 SET sr_level_pk = msd_common_utilities.get_sr_level_pk(p_instance_id,p_instance_code)
1703 WHERE rowid = lb_rowid(j);
1704 */
1705
1706 LOOP
1707 v_index :=v_index + 1;
1708 lb_sr_level_pk(v_index) := msd_common_utilities.get_sr_level_pk(p_instance_id,p_instance_code);
1709 EXIT WHEN v_index = lb_rowid.COUNT;
1710 END LOOP;
1711
1712 FORALL j IN 1..lb_rowid.COUNT
1713 UPDATE msd_st_level_values
1714 SET sr_level_pk = lb_sr_level_pk(j)
1715 WHERE rowid = lb_rowid(j);
1716
1717
1718 -- Insert into the LID table this new level_value
1719
1720 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
1721 INSERT INTO msd_local_id_setup
1722 (local_id,
1723 instance_id,
1724 level_id,
1725 data_source_type,
1726 char1,
1727 char2,
1728 last_update_date,
1729 last_updated_by,
1730 creation_date,
1731 created_by )
1732 SELECT
1733 TO_NUMBER(sr_level_pk),
1734 p_instance_id,
1735 level_id,
1736 data_source_type,
1737 p_instance_code,
1738 level_value,
1739 last_update_date,
1740 last_updated_by,
1741 creation_date,
1742 created_by
1743 FROM msd_st_level_values
1744 WHERE rowid = lb_rowid(j);
1745
1746 END IF ;
1747
1748 CLOSE c2;
1749
1750 -- Set the process flag as Valid and populate instance_id
1751 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
1752 (p_table_name => 'MSD_ST_LEVEL_VALUES',
1753 p_instance_id => p_instance_id,
1754 p_instance_code => p_instance_code,
1755 p_process_flag => G_VALID,
1756 p_error_text => lv_error_text,
1757 p_batch_id => lv_batch_id,
1758 p_instance_id_col=> 'INSTANCE');
1759
1760 IF lv_return <> 0 THEN
1761 RAISE ex_logging_err;
1762 END IF;
1763
1764 -- Inserting all the errored out records into MSC_ERRORS
1765
1766 lv_return := MSC_ST_UTIL.LOG_ERROR
1767 (p_table_name => 'MSD_ST_LEVEL_VALUES',
1768 p_instance_code => p_instance_code,
1769 p_row => lv_column_names,
1770 p_severity => G_SEV_ERROR,
1771 p_error_text => lv_error_text,
1772 p_message_text => NULL,
1773 p_batch_id => lv_batch_id);
1774
1775 IF(lv_return <> 0) THEN
1776 msc_st_util.log_message(lv_error_text);
1777 END IF;
1778
1779
1780 LOAD_LEVEL_ORG_ASSCNS ( p_instance_code,
1781 p_instance_id );
1782
1783 LOAD_ITEM_RELATIONSHIP ( p_instance_code,
1784 p_instance_id);
1785
1786
1787 COMMIT;
1788
1789 EXCEPTION
1790 WHEN ex_logging_err THEN
1791 ROLLBACK;
1792
1793 ERRBUF := lv_error_text;
1794 RETCODE := G_WARNING;
1795 msc_st_util.log_message(lv_error_text);
1796
1797 WHEN OTHERS THEN
1798 ROLLBACK;
1799
1800 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_LEVEL_VALUE '||'('
1801 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
1802 msc_st_util.log_message(lv_error_text);
1803 ERRBUF := lv_error_text;
1804 RETCODE := G_WARNING;
1805
1806 END LOAD_LEVEL_VALUE ;
1807
1808 /*==========================================================================+
1809 | DESCRIPTION : This function performs the validation and loads the data |
1810 | for business object level_value_associations |
1811 +==========================================================================*/
1812 PROCEDURE LOAD_LEVEL_ASSOC( ERRBUF OUT NOCOPY VARCHAR,
1813 RETCODE OUT NOCOPY VARCHAR,
1814 p_instance_code IN VARCHAR,
1815 p_instance_id IN NUMBER,
1816 p_batch_id IN NUMBER)
1817 IS
1818 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
1819 lb_rowid RowidTab;
1820 lv_sql_stmt VARCHAR2(4000);
1821 lv_batch_id msd_st_level_associations.batch_id%TYPE;
1822 lv_message_text msc_errors.error_text%TYPE;
1823 lv_error_text VARCHAR2(250);
1824 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
1825 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
1826 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
1827 lv_current_date DATE := msc_cl_pre_process.v_current_date;
1828 lv_return NUMBER := 0;
1829 ex_logging_err EXCEPTION;
1830 lv_column_names VARCHAR2(5000);
1831
1832 CURSOR c1(p_batch_id NUMBER)IS
1833 SELECT rowid
1834 FROM msd_st_level_associations
1835 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
1836 AND sr_instance_code = p_instance_code
1837 AND batch_id = p_batch_id;
1838
1839 BEGIN
1840
1841 lv_batch_id := p_batch_id;
1842
1843 lv_column_names :=
1844
1845 ' SR_INSTANCE_CODE ||''~''||'
1846 ||' LEVEL_NAME ||''~''||'
1847 ||' SR_LEVEL_VALUE ||''~''||'
1848 ||' PARENT_LEVEL_NAME ||''~''||'
1849 ||' SR_PARENT_LEVEL_VALUE ||''~''||'
1850 ||' ATTRIBUTE1 ||''~''||'
1851 ||' ATTRIBUTE2 ||''~''||'
1852 ||' ATTRIBUTE3 ||''~''||'
1853 ||' ATTRIBUTE4 ||''~''||'
1854 ||' ATTRIBUTE5';
1855
1856
1857 OPEN c1(lv_batch_id);
1858 FETCH c1 BULK COLLECT INTO lb_rowid;
1859 CLOSE c1;
1860
1861 v_sql_stmt := 04;
1862 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
1863 UPDATE msd_st_level_associations
1864 SET st_transaction_id = msd_st_level_associations_s.NEXTVAL,
1865 last_update_date = lv_current_date,
1866 last_updated_by = lv_current_user,
1867 creation_date = lv_current_date,
1868 created_by = lv_current_user
1869 WHERE rowid = lb_rowid(j);
1870
1871
1872 -- Error out the records where level_name is invalid
1873 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
1874 (p_app_short_name => 'MSC',
1875 p_error_code => 'MSC_PP_INVALID_VALUE',
1876 p_message_text => lv_message_text,
1877 p_error_text => lv_error_text,
1878 p_token1 => 'COLUMN_NAME',
1879 p_token_value1 => 'LEVEL_NAME');
1880
1881 IF lv_return <> 0 THEN
1882 RAISE ex_logging_err;
1883 END IF;
1884
1885 -- Derive LEVEL_ID from msd_levels
1886 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
1887 (p_table_name => 'MSD_ST_LEVEL_ASSOCIATIONS',
1888 p_level_name_col => 'LEVEL_NAME',
1889 p_level_id_col => 'LEVEL_ID',
1890 p_severity => G_SEV_ERROR,
1891 p_message_text => lv_message_text,
1892 p_instance_code => p_instance_code,
1893 p_batch_id => lv_batch_id,
1894 p_error_text => lv_error_text);
1895
1896 IF lv_return <> 0 THEN
1897 RAISE ex_logging_err;
1898 END IF;
1899
1900 -- Error out the records where parent_level_name is invalid
1901 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
1902 (p_app_short_name => 'MSC',
1903 p_error_code => 'MSC_PP_INVALID_VALUE',
1904 p_message_text => lv_message_text,
1905 p_error_text => lv_error_text,
1906 p_token1 => 'COLUMN_NAME',
1907 p_token_value1 => 'PARENT_LEVEL_NAME');
1908
1909 IF lv_return <> 0 THEN
1910 RAISE ex_logging_err;
1911 END IF;
1912
1913 -- Derive PARENT_LEVEL_ID from msd_levels
1914 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
1915 (p_table_name => 'MSD_ST_LEVEL_ASSOCIATIONS',
1916 p_level_name_col => 'PARENT_LEVEL_NAME',
1917 p_level_id_col => 'PARENT_LEVEL_ID',
1918 p_severity => G_SEV_ERROR,
1919 p_message_text => lv_message_text,
1920 p_instance_code => p_instance_code,
1921 p_batch_id => lv_batch_id,
1922 p_error_text => lv_error_text);
1923
1924 IF lv_return <> 0 THEN
1925 RAISE ex_logging_err;
1926 END IF;
1927
1928 -- set the message, sr_level_value is invalid
1929
1930 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
1931 (p_app_short_name => 'MSC',
1932 p_error_code => 'MSC_PP_INVALID_VALUE',
1933 p_message_text => lv_message_text,
1934 p_error_text => lv_error_text,
1935 p_token1 => 'COLUMN_NAME',
1936 p_token_value1 => 'SR_LEVEL_VALUE');
1937
1938 IF lv_return <> 0 THEN
1939 RAISE ex_logging_err;
1940 END IF;
1941
1942 -- Derive SR_LEVEL_PK from msd_level_value or msd_st_level_values
1943
1944 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
1945 (p_table_name => 'MSD_ST_LEVEL_ASSOCIATIONS',
1946 p_level_val_col => 'SR_LEVEL_VALUE',
1947 p_level_name_col => 'LEVEL_NAME',
1948 p_level_pk_col => 'SR_LEVEL_PK',
1949 p_instance_code => p_instance_code,
1950 p_instance_id => p_instance_id,
1951 p_message_text => lv_message_text,
1952 p_batch_id => lv_batch_id,
1953 p_error_text => lv_error_text);
1954
1955 IF lv_return <> 0 THEN
1956 RAISE ex_logging_err;
1957 END IF;
1958
1959 -- set the message, sr_parent_level_value is invalid
1960
1961 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
1962 (p_app_short_name => 'MSC',
1963 p_error_code => 'MSC_PP_INVALID_VALUE',
1964 p_message_text => lv_message_text,
1965 p_error_text => lv_error_text,
1966 p_token1 => 'COLUMN_NAME',
1967 p_token_value1 => 'SR_PARENT_LEVEL_VALUE');
1968
1969 IF lv_return <> 0 THEN
1970 RAISE ex_logging_err;
1971 END IF;
1972
1973 -- Derive SR_PARENT_LEVEL_PK from msd_level_values or msd_st_level_values
1974
1975 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
1976 (p_table_name => 'MSD_ST_LEVEL_ASSOCIATIONS',
1977 p_level_val_col => 'SR_PARENT_LEVEL_VALUE',
1978 p_level_name_col => 'PARENT_LEVEL_NAME',
1979 p_level_pk_col => 'SR_PARENT_LEVEL_PK',
1980 p_instance_code => p_instance_code,
1981 p_instance_id => p_instance_id,
1982 p_message_text => lv_message_text,
1983 p_batch_id => lv_batch_id,
1984 p_error_text => lv_error_text);
1985 IF lv_return <> 0 THEN
1986 RAISE ex_logging_err;
1987 END IF;
1988
1989 -- Validate whether the child and parent level exist in msd_level_hierarchies
1990 -- This can exist under any hierarhcy
1991 -- Set the message,
1992
1993 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
1994 (p_app_short_name => 'MSC',
1995 p_error_code => 'MSD_PP_ASSOC_INVALID',
1996 p_message_text => lv_message_text,
1997 p_error_text => lv_error_text,
1998 p_token1 => 'COLUMN_NAME',
1999 p_token_value1 => 'LEVEL_NAME',
2000 p_token2 => 'COLUMN_NAME',
2001 p_token_value2 => 'PARENT_LEVEL_NAME');
2002
2003 IF lv_return <> 0 THEN
2004 RAISE ex_logging_err;
2005 END IF;
2006
2007 --Error out if parent child-association not there in any hierarchy
2008 v_sql_stmt := 07;
2009
2010 lv_sql_Stmt:=
2011 'UPDATE msd_st_level_associations mla'
2012 ||' SET process_flag ='||G_ERROR_FLG||','
2013 ||' error_text = '||''''||lv_message_text||''''
2014 ||' WHERE NOT EXISTS ( SELECT 1'
2015 ||' FROM msd_hierarchy_levels mhl'
2016 ||' WHERE mla.level_id = mhl.level_id'
2017 ||' AND mla.parent_level_id = mhl.parent_level_id)'
2018 ||' AND process_flag ='|| G_IN_PROCESS
2019 ||' AND batch_id = :lv_batch_id'
2020 ||' AND sr_instance_code = :p_instance_code';
2021
2022 IF lv_debug THEN
2023 msc_st_util.log_message(lv_sql_stmt);
2024 END IF;
2025
2026 EXECUTE IMMEDIATE lv_sql_stmt
2027 USING lv_batch_id,
2028 p_instance_code ;
2029
2030
2031 --Call to customised validation.
2032 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
2033 (ERRBUF => lv_error_text,
2034 RETCODE => lv_return,
2035 pBatchID => null,
2036 pInstanceCode => p_instance_code,
2037 pEntityName => 'MSD_ST_LEVEL_ASSOCIATIONS',
2038 pInstanceID => p_instance_id);
2039
2040 IF lv_return <> 0 THEN
2041 RAISE ex_logging_err;
2042 END IF;
2043
2044 -- Set the process flag as Valid and populate instance_id
2045 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
2046 (p_table_name => 'MSD_ST_LEVEL_ASSOCIATIONS',
2047 p_instance_id => p_instance_id,
2048 p_instance_code => p_instance_code,
2049 p_process_flag => G_VALID,
2050 p_error_text => lv_error_text,
2051 p_batch_id => lv_batch_id,
2052 p_instance_id_col=> 'INSTANCE');
2053
2054 IF lv_return <> 0 THEN
2055 RAISE ex_logging_err;
2056 END IF;
2057
2058 -- Inserting all the errored out records into MSC_ERRORS:
2059
2060 lv_return := MSC_ST_UTIL.LOG_ERROR
2061 (p_table_name => 'MSD_ST_LEVEL_ASSOCIATIONS',
2062 p_instance_code => p_instance_code,
2063 p_row => lv_column_names,
2064 p_severity => G_SEV_ERROR,
2065 p_error_text => lv_error_text,
2066 p_message_text => NULL,
2067 p_batch_id => lv_batch_id);
2068
2069 IF(lv_return <> 0) THEN
2070 msc_st_util.log_message(lv_error_text);
2071 END IF;
2072 COMMIT;
2073
2074 EXCEPTION
2075 WHEN ex_logging_err THEN
2076 ROLLBACK;
2077
2078 ERRBUF := lv_error_text;
2079 RETCODE := G_WARNING;
2080 msc_st_util.log_message(lv_error_text);
2081
2082 WHEN OTHERS THEN
2083 ROLLBACK;
2084
2085 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_LEVEL_ASSOC'||'('
2086 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
2087 msc_st_util.log_message(lv_error_text);
2088 ERRBUF := lv_error_text;
2089 RETCODE := G_WARNING;
2090
2091 END LOAD_LEVEL_ASSOC ;
2092
2093 /*==========================================================================+
2094 | DESCRIPTION : This function performs the validation and loads the data |
2095 | for business object booking data |
2096 +==========================================================================*/
2097
2098 PROCEDURE LOAD_BOOKING_DATA(ERRBUF OUT NOCOPY VARCHAR,
2099 RETCODE OUT NOCOPY NUMBER,
2100 p_instance_code IN VARCHAR,
2101 p_instance_id IN NUMBER,
2102 p_batch_id IN NUMBER)
2103 IS
2104 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
2105 lb_rowid RowidTab;
2106 /* lb_rowid1 RowidTab; Bug3749959 */
2107 lv_sql_stmt VARCHAR2(4000);
2108 lv_batch_id msd_st_booking_data.batch_id%TYPE;
2109 lv_message_text msc_errors.error_text%TYPE;
2110 lv_my_company msc_companies.company_name%TYPE := GET_MY_COMPANY;
2111 lv_error_text VARCHAR2(250);
2112 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
2113 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
2114 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
2115 lv_current_date DATE := msc_cl_pre_process.v_current_date;
2116 lv_return NUMBER := 0;
2117 ex_logging_err EXCEPTION;
2118 lv_column_names VARCHAR2(5000);
2119 /*
2120 lv_other_desc varchar2(240) := NULL; --Adding this to insert level value - 'Others'
2121 lv_all_dcs_desc varchar2(240) := NULL; --Adding this to insert level value - 'All Demand Classes'
2122 Bug3749959 */
2123
2124 lv_instance_type msc_apps_instances.instance_type%TYPE;
2125 /* lv_other_exist NUMBER :=0;
2126 lv_all_dcs_pk NUMBER :=0; --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
2127 Bug3749959 */
2128
2129 CURSOR instance_type IS
2130 SELECT instance_type
2131 FROM msc_apps_instances
2132 WHERE instance_id=p_instance_id;
2133
2134 CURSOR c1(p_batch_id NUMBER)IS
2135 SELECT rowid
2136 FROM msd_st_booking_data
2137 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
2138 AND sr_instance_code = p_instance_code
2139 AND batch_id = p_batch_id;
2140 /*
2141 CURSOR c2(p_batch_id NUMBER)IS
2142 SELECT rowid
2143 FROM msd_st_booking_data
2144 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
2145 AND nvl(DEMAND_CLASS_LVL_VAL,'-1') = '-1'
2146 AND sr_instance_code = p_instance_code
2147 AND batch_id = p_batch_id;
2148
2149 cursor c3 (p_instance varchar2) is
2150 select count(*) from MSD_LEVEL_VALUES
2151 where LEVEL_ID = 34
2152 and instance = p_instance
2153 and SR_LEVEL_PK = to_char(v_null_pk); --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
2154
2155 cursor c4 (p_instance_code varchar2) is
2156 select local_id from msd_local_id_setup
2157 where char1 = p_instance_code
2158 -- and char2 = 'All Demand Classes'
2159 and level_id = 40;
2160 Bug3749959 */
2161
2162
2163 BEGIN
2164
2165 lv_batch_id := p_batch_id;
2166 lv_column_names :=
2167 ' SR_INSTANCE_CODE ||''~''||'
2168 ||' INV_ORG ||''~''||'
2169 ||' ITEM ||''~''||'
2170 ||' CUSTOMER ||''~''||'
2171 ||' SALES_CHANNEL ||''~''||'
2172 ||' SALES_REP ||''~''||'
2173 ||' SHIP_TO_LOC ||''~''||'
2174 ||' PARENT_ITEM ||''~''||'
2175 ||' USER_DEFINED_LEVEL1 ||''~''||'
2176 ||' USER_DEFINED1 ||''~''||'
2177 ||' USER_DEFINED_LEVEL2 ||''~''||'
2178 ||' USER_DEFINED2 ||''~''||'
2179 ||' BOOKED_DATE ||''~''||'
2180 ||' REQUESTED_DATE ||''~''||'
2181 ||' PROMISED_DATE ||''~''||'
2182 ||' SCHEDULED_DATE ||''~''||'
2183 ||' AMOUNT ||''~''||'
2184 ||' QTY_ORDERED ||''~''||'
2185 ||' ORIGINAL_ITEM ';
2186
2187 OPEN c1(lv_batch_id);
2188 FETCH c1 BULK COLLECT INTO lb_rowid;
2189 CLOSE c1;
2190
2191 v_sql_stmt := 04;
2192 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
2193 UPDATE msd_st_booking_data
2194 SET st_transaction_id = msd_st_booking_data_s.NEXTVAL,
2195 last_update_date = lv_current_date,
2196 last_updated_by = lv_current_user,
2197 creation_date = lv_current_date,
2198 created_by = lv_current_user
2199 WHERE rowid = lb_rowid(j);
2200
2201 /*
2202 OPEN c2(lv_batch_id);
2203 FETCH c2 BULK COLLECT INTO lb_rowid1;
2204 CLOSE c2;
2205
2206 IF ( lb_rowid1.COUNT <> 0 ) THEN
2207
2208 lv_other_desc := msd_sr_util.get_null_desc; --Calling fuction - msd_sr_util.get_null_desc, to fetch the level value 'Others'
2209 lv_all_dcs_desc := msd_sr_util.get_all_dcs_desc; --Calling fuction - msd_sr_util.get_all_dcs_desc, to fetch the level value 'All Demand Classes'
2210
2211 v_sql_stmt := 05;
2212 FORALL j IN lb_rowid1.FIRST..lb_rowid1.LAST
2213 UPDATE msd_st_booking_data
2214 SET DEMAND_CLASS_LVL_VAL = lv_other_desc --Using the value fetched from function - msd_sr_util.get_null_desc
2215 WHERE rowid = lb_rowid1(j);
2216
2217
2218 OPEN c3(p_instance_id);
2219 FETCH c3 into lv_other_exist;
2220 CLOSE c3;
2221
2222 IF lv_other_exist = 0 THEN
2223 INSERT INTO MSD_ST_LEVEL_VALUES
2224 (INSTANCE ,
2225 LEVEL_ID,
2226 LEVEL_VALUE,
2227 SR_LEVEL_PK,
2228 ATTRIBUTE1,
2229 ATTRIBUTE2,
2230 ATTRIBUTE3,
2231 ATTRIBUTE4,
2232 ATTRIBUTE5,
2233 LAST_UPDATE_DATE,
2234 LAST_UPDATED_BY,
2235 CREATION_DATE,
2236 CREATED_BY,
2237 LAST_UPDATE_LOGIN,
2238 REQUEST_ID,
2239 PROGRAM_APPLICATION_ID,
2240 PROGRAM_ID,
2241 PROGRAM_UPDATE_DATE )
2242 VALUES
2243 (p_instance_id,
2244 34,
2245 lv_other_desc, --Using the value fetched from function - msd_sr_util.get_null_desc
2246 to_char(v_null_pk), --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
2247 NULL,
2248 NULL,
2249 NULL,
2250 NULL,
2251 NULL,
2252 sysdate,
2253 -1,
2254 sysdate,
2255 -1,
2256 -1,
2257 -1,
2258 -1,
2259 -1,
2260 sysdate);
2261
2262 END IF;
2263
2264 OPEN c4(p_instance_code);
2265 FETCH c4 into lv_all_dcs_pk; --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
2266 CLOSE c4;
2267
2268 IF lv_all_dcs_pk = 0 THEN --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
2269
2270 lv_all_dcs_pk := msd_sr_util.get_all_dcs_pk; -- Fetching the SR_LEVEL_PK for 'ALL Demand Classes' level value from function - msd_sr_util.get_all_dcs_pk
2271
2272 INSERT INTO msd_local_id_setup -- insert into msd_local_id_setup
2273 (local_id,
2274 instance_id,
2275 level_id,
2276 char1,
2277 char2,
2278 last_update_date,
2279 last_updated_by,
2280 creation_date,
2281 created_by )
2282 VALUES
2283 (lv_all_dcs_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
2284 p_instance_id,
2285 40,
2286 p_instance_code,
2287 lv_all_dcs_desc, --Using the value fetched from function - msd_sr_util.get_all_dcs_desc
2288 sysdate,
2289 -1,
2290 sysdate,
2291 -1);
2292
2293 -- lv_sr_level_pk := -6; -- Inserting 'All Demand Classes' records with sr_level_pk as -6
2294
2295
2296 INSERT INTO MSD_ST_LEVEL_VALUES --Inserting into MSD_ST_LEVEL_VALUES
2297 (INSTANCE ,
2298 LEVEL_ID,
2299 LEVEL_VALUE,
2300 SR_LEVEL_PK,
2301 ATTRIBUTE1,
2302 ATTRIBUTE2,
2303 ATTRIBUTE3,
2304 ATTRIBUTE4,
2305 ATTRIBUTE5,
2306 LAST_UPDATE_DATE,
2307 LAST_UPDATED_BY,
2308 CREATION_DATE,
2309 CREATED_BY,
2310 LAST_UPDATE_LOGIN,
2311 REQUEST_ID,
2312 PROGRAM_APPLICATION_ID,
2313 PROGRAM_ID,
2314 PROGRAM_UPDATE_DATE )
2315 VALUES
2316 (p_instance_id,
2317 40,
2318 lv_all_dcs_desc, --Using the value fetched from function - msd_sr_util.get_all_dcs_desc
2319 lv_all_dcs_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
2320 NULL,
2321 NULL,
2322 NULL,
2323 NULL,
2324 NULL,
2325 sysdate,
2326 -1,
2327 sysdate,
2328 -1,
2329 -1,
2330 -1,
2331 -1,
2332 -1,
2333 sysdate);
2334
2335
2336 -- Insert into msd_st_level_associations.
2337
2338 INSERT INTO MSD_ST_LEVEL_ASSOCIATIONS
2339 (INSTANCE ,
2340 LEVEL_ID,
2341 SR_LEVEL_PK,
2342 PARENT_LEVEL_ID,
2343 SR_PARENT_LEVEL_PK,
2344 ATTRIBUTE1,
2345 ATTRIBUTE2,
2346 ATTRIBUTE3,
2347 ATTRIBUTE4,
2348 ATTRIBUTE5,
2349 LAST_UPDATE_DATE,
2350 LAST_UPDATED_BY,
2351 CREATION_DATE,
2352 CREATED_BY,
2353 LAST_UPDATE_LOGIN,
2354 REQUEST_ID,
2355 PROGRAM_APPLICATION_ID,
2356 PROGRAM_ID,
2357 PROGRAM_UPDATE_DATE )
2358 VALUES
2359 (p_instance_id,
2360 34,
2361 to_char(v_null_pk), --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
2362 40,
2363 lv_all_dcs_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
2364 NULL,
2365 NULL,
2366 NULL,
2367 NULL,
2368 NULL,
2369 sysdate,
2370 -1,
2371 sysdate,
2372 -1,
2373 -1,
2374 -1,
2375 -1,
2376 -1,
2377 sysdate);
2378
2379
2380 END IF;
2381
2382 END IF;
2383 Bug3749959 */
2384
2385 OPEN instance_type;
2386 FETCH instance_type into lv_instance_type;
2387 CLOSE instance_type;
2388
2389 IF (lv_instance_type = G_INS_OTHER) THEN
2390
2391 -- Set the message to validate customer-ship to location combination
2392 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2393 (p_app_short_name => 'MSC',
2394 p_error_code => 'MSC_PP_COL_REF_NOT_EXIST',
2395 p_message_text => lv_message_text,
2396 p_error_text => lv_error_text,
2397 p_token1 => 'COLUMN_NAMES',
2398 p_token_value1 => 'SR_INSTANCE_CODE AND'
2399 ||' CUSTOMER AND SHIP_TO_LOC',
2400 p_token2 => 'MASTER_TABLE',
2401 p_token_value2 => 'MSC_TRADING_PARTNER_SITES',
2402 p_token3 => 'CHILD_TABLE',
2403 p_token_value3 => 'MSD_ST_BOOKING_DATA');
2404
2405 IF lv_return <> 0 THEN
2406 RAISE ex_logging_err;
2407 END IF;
2408
2409 -- Validate customer-ship to location combination
2410 v_sql_stmt := 06;
2411 UPDATE msd_st_booking_data mbd
2412 SET process_flag = G_ERROR_FLG,
2413 error_text = lv_message_text
2414 WHERE NOT EXISTS(SELECT 1
2415 FROM msc_local_id_setup mls
2416 WHERE mls.char1 = mbd.sr_instance_code
2417 AND nvl(mls.char2,lv_my_company) = lv_my_company
2418 AND mls.char3 = mbd.customer
2419 AND mls.char4 = mbd.ship_to_loc
2420 AND mls.number1 = 2 --customer
2421 AND mls.entity_name = 'SR_TP_SITE_ID')
2422 AND mbd.process_flag = G_IN_PROCESS
2423 AND mbd.sr_instance_code = p_instance_code
2424 AND mbd.batch_id = p_batch_id;
2425
2426 END IF;
2427
2428 -- Set the message
2429 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2430 (p_app_short_name => 'MSC',
2431 p_error_code => 'MSC_PP_INVALID_VALUE',
2432 p_message_text => lv_message_text,
2433 p_error_text => lv_error_text,
2434 p_token1 => 'COLUMN_NAME',
2435 p_token_value1 => 'ITEM');
2436
2437 IF lv_return <> 0 THEN
2438 RAISE ex_logging_err;
2439 END IF;
2440
2441 -- Derive sr_item_pk from msd_st_level_values and msd_level_values
2442
2443 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
2444 (p_table_name => 'MSD_ST_BOOKING_DATA',
2445 p_column_name => 'ITEM',
2446 p_pk_col_name => 'SR_ITEM_PK',
2447 p_level_id => 1,
2448 p_instance_code => p_instance_code,
2449 p_instance_id => p_instance_id,
2450 p_message_text => lv_message_text,
2451 p_batch_id => lv_batch_id,
2452 p_severity => G_SEV_ERROR, -- Against Bug#2415379
2453 p_error_text => lv_error_text);
2454
2455 IF lv_return <> 0 THEN
2456 RAISE ex_logging_err;
2457 END IF;
2458
2459 -- Code generated against the bug number : 2357511
2460 v_sql_stmt := 07;
2461
2462 lv_sql_Stmt:=
2463 'UPDATE msd_st_booking_data '
2464 ||' SET ORIGINAL_ITEM =ITEM '
2465 ||' WHERE ORIGINAL_ITEM IS NULL '
2466 ||' AND process_flag ='|| G_IN_PROCESS
2467 ||' AND batch_id = :lv_batch_id'
2468 ||' AND sr_instance_code = :p_instance_code';
2469
2470 IF lv_debug THEN
2471 msc_st_util.log_message(lv_sql_stmt);
2472 END IF;
2473
2474 EXECUTE IMMEDIATE lv_sql_stmt
2475 USING lv_batch_id,
2476 p_instance_code ;
2477
2478 -- Set the message
2479 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2480 (p_app_short_name => 'MSC',
2481 p_error_code => 'MSC_PP_INVALID_VALUE',
2482 p_message_text => lv_message_text,
2483 p_error_text => lv_error_text,
2484 p_token1 => 'COLUMN_NAME',
2485 p_token_value1 => 'ORIGINAL_ITEM');
2486
2487 IF lv_return <> 0 THEN
2488 RAISE ex_logging_err;
2489 END IF;
2490
2491 -- Derive SR_ORIGINAL_ITEM_PK from msd_st_level_values and msd_level_values
2492
2493 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
2494 (p_table_name => 'MSD_ST_BOOKING_DATA',
2495 p_column_name => 'ORIGINAL_ITEM',
2496 p_pk_col_name => 'SR_ORIGINAL_ITEM_PK',
2497 p_level_id => 1,
2498 p_instance_code => p_instance_code,
2499 p_instance_id => p_instance_id,
2500 p_message_text => lv_message_text,
2501 p_batch_id => lv_batch_id,
2502 p_severity => G_SEV_ERROR, -- Against Bug#2415379
2503 p_error_text => lv_error_text);
2504
2505 IF lv_return <> 0 THEN
2506 RAISE ex_logging_err;
2507 END IF;
2508
2509 -- Set the message
2510 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2511 (p_app_short_name => 'MSC',
2512 p_error_code => 'MSC_PP_INVALID_VALUE',
2513 p_message_text => lv_message_text,
2514 p_error_text => lv_error_text,
2515 p_token1 => 'COLUMN_NAME',
2516 p_token_value1 => 'INV_ORG');
2517
2518 IF lv_return <> 0 THEN
2519 RAISE ex_logging_err;
2520 END IF;
2521
2522 -- Derive sr_inv_org_pk from msd_st_level_values and msd_level_values
2523
2524 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
2525 (p_table_name => 'MSD_ST_BOOKING_DATA',
2526 p_column_name => 'INV_ORG',
2527 p_pk_col_name => 'SR_INV_ORG_PK',
2528 p_level_id => 7,
2529 p_instance_code => p_instance_code,
2530 p_instance_id => p_instance_id,
2531 p_message_text => lv_message_text,
2532 p_batch_id => lv_batch_id,
2533 p_severity => G_SEV_ERROR, -- Against Bug#2415379
2534 p_error_text => lv_error_text);
2535
2536 IF lv_return <> 0 THEN
2537 RAISE ex_logging_err;
2538 END IF;
2539
2540 IF (lv_instance_type = G_INS_OTHER) THEN
2541
2542 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2543 (p_app_short_name => 'MSC',
2544 p_error_code => 'MSC_PP_COL_REF_NOT_EXIST',
2545 p_message_text => lv_message_text,
2546 p_error_text => lv_error_text,
2547 p_token1 => 'COLUMN_NAMES',
2548 p_token_value1 => 'SR_INSTANCE_CODE AND'
2549 ||' INV_ORG AND ITEM AND ITEM.ATO_FORECAST_CONTROL'
2550 ||' AND ITEM.MRP_PLANNING_CODE',
2551 p_token2 => 'MASTER_TABLE',
2552 p_token_value2 => 'MSC_SYSTEM_ITEMS',
2553 p_token3 => 'CHILD_TABLE',
2554 p_token_value3 => 'MSD_ST_BOOKING_DATA');
2555
2556 IF lv_return <> 0 THEN
2557 RAISE ex_logging_err;
2558 END IF;
2559
2560 -- Validate item-org combination
2561 v_sql_stmt := 15;
2562
2563 UPDATE msd_st_booking_data mbd
2564 SET process_flag = G_ERROR_FLG,
2565 error_text = lv_message_text
2566 WHERE NOT EXISTS(SELECT 1
2567 FROM msc_st_system_items msi
2568 WHERE msi.sr_instance_id = p_instance_id
2569 AND nvl(msi.company_name,lv_my_company) = lv_my_company
2570 AND msi.organization_id = mbd.sr_inv_org_pk
2571 AND msi.item_name = mbd.item
2572 AND ((v_plan_per_profile = 4) OR (msi.ato_forecast_control <> 3)) --forecast control - none
2573 AND ((msi.mrp_planning_code <> 6 ) OR (msi.pick_components_flag='Y' )) --Not planned item
2574 UNION
2575 SELECT 1
2576 FROM msc_system_items mls
2577 WHERE mls.sr_instance_id = p_instance_id
2578 AND mls.organization_id = mbd.sr_inv_org_pk
2579 AND mls.item_name = mbd.item
2580 AND mls.plan_id = -1
2581 AND ((v_plan_per_profile = 4) OR (mls.ato_forecast_control <> 3)) --forecast control - none
2582 AND ((mls.mrp_planning_code <> 6 ) OR (mls.pick_components_flag='Y' ))) --Not planned item
2583 AND mbd.process_flag = G_IN_PROCESS
2584 AND mbd.sr_instance_code = p_instance_code
2585 AND mbd.batch_id = p_batch_id;
2586
2587 END IF;
2588
2589
2590 -- Set the message
2591 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2592 (p_app_short_name => 'MSC',
2593 p_error_code => 'MSC_PP_INVALID_VALUE',
2594 p_message_text => lv_message_text,
2595 p_error_text => lv_error_text,
2596 p_token1 => 'COLUMN_NAME',
2597 p_token_value1 => 'CUSTOMER');
2598
2599 IF lv_return <> 0 THEN
2600 RAISE ex_logging_err;
2601 END IF;
2602
2603 -- Derive sr_customer_pk from msd_st_level_values and msd_level_values
2604
2605 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
2606 (p_table_name => 'MSD_ST_BOOKING_DATA',
2607 p_column_name => 'CUSTOMER',
2608 p_pk_col_name => 'SR_CUSTOMER_PK',
2609 p_level_id => 15,
2610 p_instance_code => p_instance_code,
2611 p_instance_id => p_instance_id,
2612 p_message_text => lv_message_text,
2613 p_batch_id => lv_batch_id,
2614 p_error_text => lv_error_text);
2615
2616 IF lv_return <> 0 THEN
2617 RAISE ex_logging_err;
2618 END IF;
2619
2620 -- Set the message
2621 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2622 (p_app_short_name => 'MSC',
2623 p_error_code => 'MSC_PP_INVALID_VALUE',
2624 p_message_text => lv_message_text,
2625 p_error_text => lv_error_text,
2626 p_token1 => 'COLUMN_NAME',
2627 p_token_value1 => 'SHIP_TO_LOC');
2628
2629 IF lv_return <> 0 THEN
2630 RAISE ex_logging_err;
2631 END IF;
2632 -- Derive sr_ship_to_loc_pk from msd_st_level_values and msd_level_values
2633
2634 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
2635 (p_table_name => 'MSD_ST_BOOKING_DATA',
2636 p_column_name => 'SHIP_TO_LOC',
2637 p_pk_col_name => 'SR_SHIP_TO_LOC_PK',
2638 p_level_id => 11,
2639 p_instance_code => p_instance_code,
2640 p_instance_id => p_instance_id,
2641 p_message_text => lv_message_text,
2642 p_batch_id => lv_batch_id,
2643 p_severity => G_SEV_ERROR, -- Against Bug#2415379
2644 p_error_text => lv_error_text);
2645
2646 IF lv_return <> 0 THEN
2647 RAISE ex_logging_err;
2648 END IF;
2649
2650 IF (lv_instance_type <> G_INS_OTHER) THEN
2651
2652 -- Set the message to validate customer-ship to location combination for ERP Data
2653 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2654 (p_app_short_name => 'MSC',
2655 p_error_code => 'MSC_PP_COL_REF_NOT_EXIST',
2656 p_message_text => lv_message_text,
2657 p_error_text => lv_error_text,
2658 p_token1 => 'COLUMN_NAMES',
2659 p_token_value1 => 'SR_INSTANCE_CODE AND'
2660 ||' CUSTOMER AND SHIP_TO_LOC',
2661 p_token2 => 'MASTER_TABLE',
2662 p_token_value2 => 'MSD_LEVEL_ASSOCIATIONS',
2663 p_token3 => 'CHILD_TABLE',
2664 p_token_value3 => 'MSD_ST_BOOKING_DATA');
2665
2666 IF lv_return <> 0 THEN
2667 RAISE ex_logging_err;
2668 END IF;
2669
2670
2671 -- Validate customer-ship to location combination for ERP Data
2672 UPDATE msd_st_booking_data mbd
2673 SET process_flag = G_ERROR_FLG,
2674 error_text = lv_message_text
2675 WHERE NOT EXISTS(SELECT 1
2676 FROM msd_st_level_associations msla
2677 WHERE msla.level_id = 11
2678 AND msla.parent_level_id = 15
2679 AND mbd.sr_customer_pk = msla.sr_parent_level_pk
2680 AND mbd.sr_ship_to_loc_pk = msla.sr_level_pk
2681 AND msla.instance = p_instance_id
2682 UNION ALL
2683 SELECT 1
2684 FROM msd_level_associations mla
2685 WHERE mla.level_id = 11
2686 AND mla.parent_level_id = 15
2687 AND mbd.sr_customer_pk = mla.sr_parent_level_pk
2688 AND mbd.sr_ship_to_loc_pk = mla.sr_level_pk
2689 AND mla.instance = p_instance_id)
2690 AND mbd.process_flag = G_IN_PROCESS
2691 AND mbd.sr_instance_code = p_instance_code
2692 AND mbd.batch_id = p_batch_id;
2693
2694
2695 END IF;
2696
2697
2698 -- Set the message
2699 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2700 (p_app_short_name => 'MSC',
2701 p_error_code => 'MSC_PP_INVALID_VALUE',
2702 p_message_text => lv_message_text,
2703 p_error_text => lv_error_text,
2704 p_token1 => 'COLUMN_NAME',
2705 p_token_value1 => 'SALES_CHANNEL');
2706
2707 IF lv_return <> 0 THEN
2708 RAISE ex_logging_err;
2709 END IF;
2710
2711 -- Derive sr_sales_channel_pk from msd_st_level_values and msd_level_values
2712
2713 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
2714 (p_table_name => 'MSD_ST_BOOKING_DATA',
2715 p_column_name => 'SALES_CHANNEL',
2716 p_pk_col_name => 'SR_SALES_CHANNEL_PK',
2717 p_level_id => 27,
2718 p_instance_code => p_instance_code,
2719 p_instance_id => p_instance_id,
2720 p_message_text => lv_message_text,
2721 p_batch_id => lv_batch_id,
2722 p_severity => G_SEV_ERROR, -- Against Bug#2415379
2723 p_error_text => lv_error_text);
2724
2725 IF lv_return <> 0 THEN
2726 RAISE ex_logging_err;
2727 END IF;
2728
2729 -- Set the message
2730 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2731 (p_app_short_name => 'MSC',
2732 p_error_code => 'MSC_PP_INVALID_VALUE',
2733 p_message_text => lv_message_text,
2734 p_error_text => lv_error_text,
2735 p_token1 => 'COLUMN_NAME',
2736 p_token_value1 => 'SALES_REP');
2737
2738 IF lv_return <> 0 THEN
2739 RAISE ex_logging_err;
2740 END IF;
2741 -- Derive sr_sales_rep_pk from msd_st_level_values and msd_level_values
2742
2743 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
2744 (p_table_name => 'MSD_ST_BOOKING_DATA',
2745 p_column_name => 'SALES_REP',
2746 p_pk_col_name => 'SR_SALES_REP_PK',
2747 p_level_id => 18,
2748 p_instance_code => p_instance_code,
2749 p_instance_id => p_instance_id,
2750 p_message_text => lv_message_text,
2751 p_batch_id => lv_batch_id,
2752 p_severity => G_SEV_ERROR, -- Against Bug#2415379
2753 p_error_text => lv_error_text);
2754
2755 IF lv_return <> 0 THEN
2756 RAISE ex_logging_err;
2757 END IF;
2758
2759 -- Demand Class changes for Booking Data starts
2760 -- Set the message
2761 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2762 (p_app_short_name => 'MSC',
2763 p_error_code => 'MSC_PP_INVALID_VALUE',
2764 p_message_text => lv_message_text,
2765 p_error_text => lv_error_text,
2766 p_token1 => 'COLUMN_NAME',
2767 p_token_value1 => 'DEMAND_CLASS_LVL_VAL');
2768
2769 IF lv_return <> 0 THEN
2770 RAISE ex_logging_err;
2771 END IF;
2772
2773 -- Derive sr_sales_channel_pk from msd_st_level_values and msd_level_values
2774
2775 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
2776 (p_table_name => 'MSD_ST_BOOKING_DATA',
2777 p_column_name => 'DEMAND_CLASS_LVL_VAL',
2778 p_pk_col_name => 'SR_DEMAND_CLASS_PK',
2779 p_level_id => 34,
2780 p_instance_code => p_instance_code,
2781 p_instance_id => p_instance_id,
2782 p_message_text => lv_message_text,
2783 p_batch_id => lv_batch_id,
2784 p_severity => G_SEV3_ERROR, -- Against Bug#2415379
2785 p_error_text => lv_error_text);
2786
2787 IF lv_return <> 0 THEN
2788 RAISE ex_logging_err;
2789 END IF;
2790
2791 -- Demand Class changes for Booking Data ends
2792
2793 -- Set the message
2794 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2795 (p_app_short_name => 'MSC',
2796 p_error_code => 'MSC_PP_INVALID_VALUE',
2797 p_message_text => lv_message_text,
2798 p_error_text => lv_error_text,
2799 p_token1 => 'COLUMN_NAME',
2800 p_token_value1 => 'PARENT_ITEM');
2801
2802 IF lv_return <> 0 THEN
2803 RAISE ex_logging_err;
2804 END IF;
2805
2806 -- Derive sr_parent_item_pk from msd_st_level_values and msd_level_values
2807
2808 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
2809 (p_table_name => 'MSD_ST_BOOKING_DATA',
2810 p_column_name => 'PARENT_ITEM',
2811 p_pk_col_name => 'SR_PARENT_ITEM_PK',
2812 p_level_id => 1,
2813 p_instance_code => p_instance_code,
2814 p_instance_id => p_instance_id,
2815 p_message_text => lv_message_text,
2816 p_batch_id => lv_batch_id,
2817 p_severity => G_SEV3_ERROR, -- Against Bug#2415379
2818 p_error_text => lv_error_text);
2819
2820 IF lv_return <> 0 THEN
2821 RAISE ex_logging_err;
2822 END IF;
2823
2824
2825 -- set the message, USER_DEFINED1 is invalid
2826
2827 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2828 (p_app_short_name => 'MSC',
2829 p_error_code => 'MSC_PP_INVALID_VALUE',
2830 p_message_text => lv_message_text,
2831 p_error_text => lv_error_text,
2832 p_token1 => 'COLUMN_NAME',
2833 p_token_value1 => 'USER_DEFINED1');
2834
2835 IF lv_return <> 0 THEN
2836 RAISE ex_logging_err;
2837 END IF;
2838
2839 -- Derive SR_USER_DEFINED1_LVL_PK
2840
2841 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
2842 (p_table_name => 'MSD_ST_BOOKING_DATA',
2843 p_level_val_col => 'USER_DEFINED1',
2844 p_level_name_col => 'USER_DEFINED_LEVEL1',
2845 p_level_pk_col => 'SR_USER_DEFINED1_PK',
2846 p_instance_code => p_instance_code,
2847 p_instance_id => p_instance_id,
2848 p_message_text => lv_message_text,
2849 p_batch_id => lv_batch_id,
2850 p_error_text => lv_error_text);
2851
2852 IF lv_return <> 0 THEN
2853 RAISE ex_logging_err;
2854 END IF;
2855
2856 -- set the message, USER_DEFINED2 is invalid
2857
2858 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2859 (p_app_short_name => 'MSC',
2860 p_error_code => 'MSC_PP_INVALID_VALUE',
2861 p_message_text => lv_message_text,
2862 p_error_text => lv_error_text,
2863 p_token1 => 'COLUMN_NAME',
2864 p_token_value1 => 'USER_DEFINED2');
2865
2866 IF lv_return <> 0 THEN
2867 RAISE ex_logging_err;
2868 END IF;
2869
2870 -- Derive SR_USER_DEFINED2_LVL_PK
2871
2872 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
2873 (p_table_name => 'MSD_ST_BOOKING_DATA',
2874 p_level_val_col => 'USER_DEFINED2',
2875 p_level_name_col => 'USER_DEFINED_LEVEL2',
2876 p_level_pk_col => 'SR_USER_DEFINED2_PK',
2877 p_instance_code => p_instance_code,
2878 p_instance_id => p_instance_id,
2879 p_message_text => lv_message_text,
2880 p_batch_id => lv_batch_id,
2881 p_error_text => lv_error_text);
2882
2883 IF lv_return <> 0 THEN
2884 RAISE ex_logging_err;
2885 END IF;
2886
2887 -- Set the message
2888 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
2889 (p_app_short_name => 'MSC',
2890 p_error_code => 'MSC_PP_COL_VAL_NULL',
2891 p_message_text => lv_message_text,
2892 p_error_text => lv_error_text,
2893 p_token1 => 'COLUMN_NAME',
2894 p_token_value1 => 'BOOKED_DATE');
2895
2896 IF lv_return <> 0 THEN
2897 RAISE ex_logging_err;
2898 END IF;
2899
2900 --booked_date cannot be null.
2901 v_sql_stmt := 07;
2902
2903 lv_sql_Stmt:=
2904 'UPDATE msd_st_booking_data '
2905 ||' SET process_flag ='||G_ERROR_FLG||','
2906 ||' error_text = '||''''||lv_message_text||''''
2907 ||' WHERE NVL(booked_date,(sysdate-36500)) = (sysdate-36500)'
2908 ||' AND process_flag ='|| G_IN_PROCESS
2909 ||' AND batch_id = :lv_batch_id'
2910 ||' AND sr_instance_code = :p_instance_code';
2911
2912 IF lv_debug THEN
2913 msc_st_util.log_message(lv_sql_stmt);
2914 END IF;
2915
2916 EXECUTE IMMEDIATE lv_sql_stmt
2917 USING lv_batch_id,
2918 p_instance_code ;
2919
2920 --Call to customised validation.
2921 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
2922 (ERRBUF => lv_error_text,
2923 RETCODE => lv_return,
2924 pBatchID => null,
2925 pInstanceCode => p_instance_code,
2926 pEntityName => 'MSD_ST_BOOKING_DATA',
2927 pInstanceID => p_instance_id);
2928
2929 IF lv_return <> 0 THEN
2930 RAISE ex_logging_err;
2931 END IF;
2932
2933 -- Set the process flag as Valid and populate instance_id
2934 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
2935 (p_table_name => 'MSD_ST_BOOKING_DATA',
2936 p_instance_id => p_instance_id,
2937 p_instance_code => p_instance_code,
2938 p_process_flag => G_VALID,
2939 p_error_text => lv_error_text,
2940 p_batch_id => lv_batch_id,
2941 p_instance_id_col=> 'INSTANCE');
2942
2943 IF lv_return <> 0 THEN
2944 RAISE ex_logging_err;
2945 END IF;
2946
2947 -- Inserting all the errored out records into MSC_ERRORS:
2948
2949 lv_return := MSC_ST_UTIL.LOG_ERROR
2950 (p_table_name => 'MSD_ST_BOOKING_DATA',
2951 p_instance_code => p_instance_code,
2952 p_row => lv_column_names,
2953 p_severity => G_SEV_ERROR,
2954 p_error_text => lv_error_text,
2955 p_message_text => NULL,
2956 p_batch_id => lv_batch_id);
2957
2958 IF(lv_return <> 0) THEN
2959 msc_st_util.log_message(lv_error_text);
2960 END IF;
2961 COMMIT;
2962
2963 EXCEPTION
2964 WHEN ex_logging_err THEN
2965 ROLLBACK;
2966
2967 ERRBUF := lv_error_text;
2968 RETCODE := G_WARNING;
2969 msc_st_util.log_message(lv_error_text);
2970
2971 WHEN OTHERS THEN
2972 ROLLBACK;
2973
2974 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_BOOKING_DATA '||'('
2975 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
2976 msc_st_util.log_message(lv_error_text);
2977 ERRBUF := lv_error_text;
2978 RETCODE := G_WARNING;
2979
2980 END LOAD_BOOKING_DATA ;
2981
2982 /*==========================================================================+
2983 | DESCRIPTION : This function performs the validation and loads the data |
2984 | for business object shipment data |
2985 +==========================================================================*/
2986
2987 PROCEDURE LOAD_SHIPMENT_DATA(ERRBUF OUT NOCOPY VARCHAR,
2988 RETCODE OUT NOCOPY NUMBER,
2989 p_instance_code IN VARCHAR,
2990 p_instance_id IN NUMBER,
2991 p_batch_id IN NUMBER)
2992 IS
2993 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
2994 lb_rowid RowidTab;
2995 /* lb_rowid1 RowidTab; Bug3749959 */
2996 lv_sql_stmt VARCHAR2(4000);
2997 lv_batch_id msd_st_shipment_data.batch_id%TYPE;
2998 lv_message_text msc_errors.error_text%TYPE;
2999 lv_my_company msc_companies.company_name%TYPE := GET_MY_COMPANY;
3000 lv_error_text VARCHAR2(250);
3001 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
3002 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
3003 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
3004 lv_current_date DATE := msc_cl_pre_process.v_current_date;
3005 lv_return NUMBER := 0;
3006 ex_logging_err EXCEPTION;
3007 lv_column_names VARCHAR2(5000);
3008 /*
3009 lv_other_desc varchar2(240) := NULL; --Adding this to insert level value - 'Others'
3010 lv_all_dcs_desc varchar2(240) := NULL; --Adding this to insert level value - 'All Demand Classes'
3011 Bug3749959 */
3012 lv_instance_type msc_apps_instances.instance_type%TYPE;
3013
3014 /* lv_other_exist NUMBER :=0;
3015 lv_all_dcs_pk NUMBER :=0; --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
3016 Bug3749959 */
3017
3018 CURSOR instance_type IS
3019 SELECT instance_type
3020 FROM msc_apps_instances
3021 WHERE instance_id=p_instance_id;
3022
3023 CURSOR c1(p_batch_id NUMBER)IS
3024 SELECT rowid
3025 FROM msd_st_shipment_data
3026 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
3027 AND sr_instance_code = p_instance_code
3028 AND batch_id = p_batch_id;
3029 /*
3030 CURSOR c2(p_batch_id NUMBER)IS
3031 SELECT rowid
3032 FROM msd_st_shipment_data
3033 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
3034 AND nvl(DEMAND_CLASS_LVL_VAL,'-1') = '-1'
3035 AND sr_instance_code = p_instance_code
3036 AND batch_id = p_batch_id;
3037
3038 cursor c3 (p_instance varchar2) is
3039 select count(*) from MSD_LEVEL_VALUES
3040 where LEVEL_ID = 34
3041 and instance = p_instance
3042 and SR_LEVEL_PK = to_char(v_null_pk); --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
3043
3044 cursor c4 (p_instance_code varchar2) is
3045 select local_id from msd_local_id_setup
3046 where char1 = p_instance_code
3047 -- and char2 = 'All Demand Classes'
3048 and level_id = 40;
3049 Bug3749959 */
3050
3051 BEGIN
3052
3053 lv_batch_id := p_batch_id;
3054
3055 lv_column_names :=
3056
3057 ' SR_INSTANCE_CODE ||''~''||'
3058 ||' INV_ORG ||''~''||'
3059 ||' ITEM ||''~''||'
3060 ||' CUSTOMER ||''~''||'
3061 ||' SALES_CHANNEL ||''~''||'
3062 ||' SALES_REP ||''~''||'
3063 ||' SHIP_TO_LOC ||''~''||'
3064 ||' PARENT_ITEM ||''~''||'
3065 ||' USER_DEFINED_LEVEL1 ||''~''||'
3066 ||' USER_DEFINED1 ||''~''||'
3067 ||' USER_DEFINED_LEVEL2 ||''~''||'
3068 ||' USER_DEFINED2 ||''~''||'
3069 ||' BOOKED_DATE ||''~''||'
3070 ||' REQUESTED_DATE ||''~''||'
3071 ||' PROMISED_DATE ||''~''||'
3072 ||' SHIPPED_DATE ||''~''||'
3073 ||' AMOUNT ||''~''||'
3074 ||' QTY_SHIPPED ||''~''||'
3075 ||' ORIGINAL_ITEM';
3076
3077 OPEN c1(lv_batch_id);
3078 FETCH c1 BULK COLLECT INTO lb_rowid;
3079 CLOSE c1;
3080
3081 v_sql_stmt := 04;
3082 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
3083 UPDATE msd_st_shipment_data
3084 SET st_transaction_id = msd_st_shipment_data_s.NEXTVAL,
3085 last_update_date = lv_current_date,
3086 last_updated_by = lv_current_user,
3087 creation_date = lv_current_date,
3088 created_by = lv_current_user
3089 WHERE rowid = lb_rowid(j);
3090 /*
3091 OPEN c2(lv_batch_id);
3092 FETCH c2 BULK COLLECT INTO lb_rowid1;
3093 CLOSE c2;
3094
3095 IF ( lb_rowid1.COUNT <> 0 ) THEN
3096
3097 lv_other_desc := msd_sr_util.get_null_desc; --Calling fuction - msd_sr_util.get_null_desc, to fetch the level value 'Others'
3098 lv_all_dcs_desc := msd_sr_util.get_all_dcs_desc; --Calling fuction - msd_sr_util.get_all_dcs_desc, to fetch the level value 'All Demand Classes'
3099
3100 v_sql_stmt := 05;
3101 FORALL j IN lb_rowid1.FIRST..lb_rowid1.LAST
3102 UPDATE msd_st_shipment_data
3103 SET DEMAND_CLASS_LVL_VAL = lv_other_desc --Using the value fetched from function - msd_sr_util.get_null_desc
3104 WHERE rowid = lb_rowid1(j);
3105
3106
3107
3108 OPEN c3(p_instance_id);
3109 FETCH c3 into lv_other_exist;
3110 CLOSE c3;
3111
3112 IF lv_other_exist = 0 THEN
3113 INSERT INTO MSD_ST_LEVEL_VALUES
3114 (INSTANCE ,
3115 LEVEL_ID,
3116 LEVEL_VALUE,
3117 SR_LEVEL_PK,
3118 ATTRIBUTE1,
3119 ATTRIBUTE2,
3120 ATTRIBUTE3,
3121 ATTRIBUTE4,
3122 ATTRIBUTE5,
3123 LAST_UPDATE_DATE,
3124 LAST_UPDATED_BY,
3125 CREATION_DATE,
3126 CREATED_BY,
3127 LAST_UPDATE_LOGIN,
3128 REQUEST_ID,
3129 PROGRAM_APPLICATION_ID,
3130 PROGRAM_ID,
3131 PROGRAM_UPDATE_DATE )
3132 VALUES
3133 (p_instance_id,
3134 34,
3135 lv_other_desc, --Using the value fetched from function - msd_sr_util.get_null_desc
3136 to_char(v_null_pk), --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
3137 NULL,
3138 NULL,
3139 NULL,
3140 NULL,
3141 NULL,
3142 sysdate,
3143 -1,
3144 sysdate,
3145 -1,
3146 -1,
3147 -1,
3148 -1,
3149 -1,
3150 sysdate);
3151
3152 END IF;
3153
3154 OPEN c4(p_instance_code);
3155 FETCH c4 into lv_all_dcs_pk; --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
3156 CLOSE c4;
3157
3158 IF lv_all_dcs_pk = 0 THEN --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
3159
3160 lv_all_dcs_pk := msd_sr_util.get_all_dcs_pk; -- Fetching the SR_LEVEL_PK for 'ALL Demand Classes' level value from function - msd_sr_util.get_all_dcs_pk
3161
3162 INSERT INTO msd_local_id_setup -- insert into msd_local_id_setup
3163 (local_id,
3164 instance_id,
3165 level_id,
3166 char1,
3167 char2,
3168 last_update_date,
3169 last_updated_by,
3170 creation_date,
3171 created_by )
3172 VALUES
3173 (lv_all_dcs_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
3174 p_instance_id,
3175 40,
3176 p_instance_code,
3177 lv_all_dcs_desc, --Using the value fetched from function - msd_sr_util.get_all_dcs_desc
3178 sysdate,
3179 -1,
3180 sysdate,
3181 -1);
3182
3183 -- lv_sr_level_pk := -6; -- Inserting 'All Demand Classes' records with sr_level_pk as -6
3184
3185
3186 INSERT INTO MSD_ST_LEVEL_VALUES --Inserting into MSD_ST_LEVEL_VALUES
3187 (INSTANCE ,
3188 LEVEL_ID,
3189 LEVEL_VALUE,
3190 SR_LEVEL_PK,
3191 ATTRIBUTE1,
3192 ATTRIBUTE2,
3193 ATTRIBUTE3,
3194 ATTRIBUTE4,
3195 ATTRIBUTE5,
3196 LAST_UPDATE_DATE,
3197 LAST_UPDATED_BY,
3198 CREATION_DATE,
3199 CREATED_BY,
3200 LAST_UPDATE_LOGIN,
3201 REQUEST_ID,
3202 PROGRAM_APPLICATION_ID,
3203 PROGRAM_ID,
3204 PROGRAM_UPDATE_DATE )
3205 VALUES
3206 (p_instance_id,
3207 40,
3208 lv_all_dcs_desc, --Using the value fetched from function - msd_sr_util.get_all_dcs_desc
3209 lv_all_dcs_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
3210 NULL,
3211 NULL,
3212 NULL,
3213 NULL,
3214 NULL,
3215 sysdate,
3216 -1,
3217 sysdate,
3218 -1,
3219 -1,
3220 -1,
3221 -1,
3222 -1,
3223 sysdate);
3224
3225
3226 -- Insert into msd_st_level_associations.
3227
3228 INSERT INTO MSD_ST_LEVEL_ASSOCIATIONS
3229 (INSTANCE ,
3230 LEVEL_ID,
3231 SR_LEVEL_PK,
3232 PARENT_LEVEL_ID,
3233 SR_PARENT_LEVEL_PK,
3234 ATTRIBUTE1,
3235 ATTRIBUTE2,
3236 ATTRIBUTE3,
3237 ATTRIBUTE4,
3238 ATTRIBUTE5,
3239 LAST_UPDATE_DATE,
3240 LAST_UPDATED_BY,
3241 CREATION_DATE,
3242 CREATED_BY,
3243 LAST_UPDATE_LOGIN,
3244 REQUEST_ID,
3245 PROGRAM_APPLICATION_ID,
3246 PROGRAM_ID,
3247 PROGRAM_UPDATE_DATE )
3248 VALUES
3249 (p_instance_id,
3250 34,
3251 to_char(v_null_pk), --Using global variable v_null_pk insteda of hardcoding -777 at multiple places.
3252 40,
3253 lv_all_dcs_pk, --Renamed 'lv_sr_level_pk' to 'lv_all_dcs_pk'.
3254 NULL,
3255 NULL,
3256 NULL,
3257 NULL,
3258 NULL,
3259 sysdate,
3260 -1,
3261 sysdate,
3262 -1,
3263 -1,
3264 -1,
3265 -1,
3266 -1,
3267 sysdate);
3268
3269 END IF;
3270
3271 END IF;
3272 Bug3749959 */
3273
3274 OPEN instance_type;
3275 FETCH instance_type into lv_instance_type;
3276 CLOSE instance_type;
3277
3278 IF (lv_instance_type = G_INS_OTHER) THEN
3279
3280 -- Set the message to validate customer-ship to location combination
3281 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3282 (p_app_short_name => 'MSC',
3283 p_error_code => 'MSC_PP_COL_REF_NOT_EXIST',
3284 p_message_text => lv_message_text,
3285 p_error_text => lv_error_text,
3286 p_token1 => 'COLUMN_NAMES',
3287 p_token_value1 => 'SR_INSTANCE_CODE AND'
3288 ||' CUSTOMER AND SHIP_TO_LOC',
3289 p_token2 => 'MASTER_TABLE',
3290 p_token_value2 => 'MSC_TRADING_PARTNER_SITES',
3291 p_token3 => 'CHILD_TABLE',
3292 p_token_value3 => 'MSD_ST_SHIPMENT_DATA');
3293
3294 IF lv_return <> 0 THEN
3295 RAISE ex_logging_err;
3296 END IF;
3297
3298 -- Validate customer-ship to location combination
3299 v_sql_stmt := 15;
3300 UPDATE msd_st_shipment_data msd
3301 SET process_flag = G_ERROR_FLG,
3302 error_text = lv_message_text
3303 WHERE NOT EXISTS(SELECT 1
3304 FROM msc_local_id_setup mls
3305 WHERE mls.char1 = msd.sr_instance_code
3306 AND nvl(mls.char2,lv_my_company) = lv_my_company
3307 AND mls.char3 = msd.customer
3308 AND mls.char4 = msd.ship_to_loc
3309 AND mls.number1 = 2 --customer
3310 AND mls.entity_name = 'SR_TP_SITE_ID')
3311 AND msd.process_flag = G_IN_PROCESS
3312 AND msd.sr_instance_code = p_instance_code
3313 AND msd.batch_id = p_batch_id;
3314
3315 END IF;
3316
3317
3318 -- Set the message
3319 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3320 (p_app_short_name => 'MSC',
3321 p_error_code => 'MSC_PP_INVALID_VALUE',
3322 p_message_text => lv_message_text,
3323 p_error_text => lv_error_text,
3324 p_token1 => 'COLUMN_NAME',
3325 p_token_value1 => 'ITEM');
3326
3327 IF lv_return <> 0 THEN
3328 RAISE ex_logging_err;
3329 END IF;
3330
3331 -- Derive sr_item_pk from msd_st_level_values and msd_level_values
3332
3333 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
3334 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3335 p_column_name => 'ITEM',
3336 p_pk_col_name => 'SR_ITEM_PK',
3337 p_level_id => 1,
3338 p_instance_code => p_instance_code,
3339 p_instance_id => p_instance_id,
3340 p_message_text => lv_message_text,
3341 p_batch_id => lv_batch_id,
3342 p_severity => G_SEV_ERROR, -- Against Bug#2415379
3343 p_error_text => lv_error_text);
3344
3345 IF lv_return <> 0 THEN
3346 RAISE ex_logging_err;
3347 END IF;
3348
3349 -- Code generated against the bug number : 2357511
3350
3351 v_sql_stmt := 07;
3352
3353 lv_sql_Stmt:=
3354 'UPDATE MSD_ST_SHIPMENT_DATA '
3355 ||' SET ORIGINAL_ITEM =ITEM '
3356 ||' WHERE ORIGINAL_ITEM IS NULL '
3357 ||' AND process_flag ='|| G_IN_PROCESS
3358 ||' AND batch_id = :lv_batch_id'
3359 ||' AND sr_instance_code = :p_instance_code';
3360
3361 IF lv_debug THEN
3362 msc_st_util.log_message(lv_sql_stmt);
3363 END IF;
3364
3365 EXECUTE IMMEDIATE lv_sql_stmt
3366 USING lv_batch_id,
3367 p_instance_code ;
3368
3369
3370 -- Set the message
3371 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3372 (p_app_short_name => 'MSC',
3373 p_error_code => 'MSC_PP_INVALID_VALUE',
3374 p_message_text => lv_message_text,
3375 p_error_text => lv_error_text,
3376 p_token1 => 'COLUMN_NAME',
3377 p_token_value1 => 'ORIGINAL_ITEM');
3378
3379 IF lv_return <> 0 THEN
3380 RAISE ex_logging_err;
3381 END IF;
3382
3383 -- Derive sr_original_item_pk from msd_st_level_values and msd_level_values
3384
3385 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
3386 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3387 p_column_name => 'ORIGINAL_ITEM',
3388 p_pk_col_name => 'SR_ORIGINAL_ITEM_PK',
3389 p_level_id => 1,
3390 p_instance_code => p_instance_code,
3391 p_instance_id => p_instance_id,
3392 p_message_text => lv_message_text,
3393 p_batch_id => lv_batch_id,
3394 p_severity => G_SEV_ERROR, -- Against Bug#2415379
3395 p_error_text => lv_error_text);
3396
3397 IF lv_return <> 0 THEN
3398 RAISE ex_logging_err;
3399 END IF;
3400
3401 -- Set the message
3402 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3403 (p_app_short_name => 'MSC',
3404 p_error_code => 'MSC_PP_INVALID_VALUE',
3405 p_message_text => lv_message_text,
3406 p_error_text => lv_error_text,
3407 p_token1 => 'COLUMN_NAME',
3408 p_token_value1 => 'INV_ORG');
3409
3410 IF lv_return <> 0 THEN
3411 RAISE ex_logging_err;
3412 END IF;
3413
3414 -- Derive sr_inv_org_pk from msd_st_level_values and msd_level_values
3415
3416 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
3417 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3418 p_column_name => 'INV_ORG',
3419 p_pk_col_name => 'SR_INV_ORG_PK',
3420 p_level_id => 7,
3421 p_instance_code => p_instance_code,
3422 p_instance_id => p_instance_id,
3423 p_message_text => lv_message_text,
3424 p_batch_id => lv_batch_id,
3425 p_severity => G_SEV_ERROR, -- Against Bug#2415379
3426 p_error_text => lv_error_text);
3427
3428 IF lv_return <> 0 THEN
3429 RAISE ex_logging_err;
3430 END IF;
3431
3432 IF (lv_instance_type = G_INS_OTHER) THEN
3433
3434 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3435 (p_app_short_name => 'MSC',
3436 p_error_code => 'MSC_PP_COL_REF_NOT_EXIST',
3437 p_message_text => lv_message_text,
3438 p_error_text => lv_error_text,
3439 p_token1 => 'COLUMN_NAMES',
3440 p_token_value1 => 'SR_INSTANCE_CODE AND'
3441 ||' INV_ORG AND ITEM AND ITEM.ATO_FORECAST_CONTROL'
3442 ||' AND ITEM.MRP_PLANNING_CODE',
3443 p_token2 => 'MASTER_TABLE',
3444 p_token_value2 => 'MSC_SYSTEM_ITEMS',
3445 p_token3 => 'CHILD_TABLE',
3446 p_token_value3 => 'MSD_ST_SHIPMENT_DATA');
3447
3448 IF lv_return <> 0 THEN
3449 RAISE ex_logging_err;
3450 END IF;
3451
3452 -- Validate item-org combination
3453 v_sql_stmt := 15;
3454
3455 UPDATE msd_st_shipment_data msd
3456 SET process_flag = G_ERROR_FLG,
3457 error_text = lv_message_text
3458 WHERE NOT EXISTS(SELECT 1
3459 FROM msc_st_system_items msi
3460 WHERE msi.sr_instance_id = p_instance_id
3461 AND nvl(msi.company_name,lv_my_company) = lv_my_company
3462 AND msi.organization_id = msd.sr_inv_org_pk
3463 AND msi.item_name = msd.item
3464 AND ((v_plan_per_profile = 4) OR (msi.ato_forecast_control <> 3)) --forecast control - none
3465 AND ((msi.mrp_planning_code <> 6 ) OR (msi.pick_components_flag='Y' )) --Not planned item
3466 UNION
3467 SELECT 1
3468 FROM msc_system_items mls
3469 WHERE mls.sr_instance_id = p_instance_id
3470 AND mls.organization_id = msd.sr_inv_org_pk
3471 AND mls.item_name = msd.item
3472 AND mls.plan_id = -1
3473 AND ((v_plan_per_profile = 4) OR (mls.ato_forecast_control <> 3)) --forecast control - none
3474 AND ((mls.mrp_planning_code <> 6 ) OR (mls.pick_components_flag='Y' )) ) --Not planned item
3475 AND msd.process_flag = G_IN_PROCESS
3476 AND msd.sr_instance_code = p_instance_code
3477 AND msd.batch_id = p_batch_id;
3478
3479 END IF;
3480
3481 -- Set the message
3482 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3483 (p_app_short_name => 'MSC',
3484 p_error_code => 'MSC_PP_INVALID_VALUE',
3485 p_message_text => lv_message_text,
3486 p_error_text => lv_error_text,
3487 p_token1 => 'COLUMN_NAME',
3488 p_token_value1 => 'CUSTOMER');
3489
3490 IF lv_return <> 0 THEN
3491 RAISE ex_logging_err;
3492 END IF;
3493
3494 -- Derive sr_customer_pk from msd_st_level_values and msd_level_values
3495
3496 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
3497 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3498 p_column_name => 'CUSTOMER',
3499 p_pk_col_name => 'SR_CUSTOMER_PK',
3500 p_level_id => 15,
3501 p_instance_code => p_instance_code,
3502 p_instance_id => p_instance_id,
3503 p_message_text => lv_message_text,
3504 p_batch_id => lv_batch_id,
3505 p_error_text => lv_error_text);
3506
3507 IF lv_return <> 0 THEN
3508 RAISE ex_logging_err;
3509 END IF;
3510
3511 -- Set the message
3512 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3513 (p_app_short_name => 'MSC',
3514 p_error_code => 'MSC_PP_INVALID_VALUE',
3515 p_message_text => lv_message_text,
3516 p_error_text => lv_error_text,
3517 p_token1 => 'COLUMN_NAME',
3518 p_token_value1 => 'SHIP_TO_LOC');
3519
3520 IF lv_return <> 0 THEN
3521 RAISE ex_logging_err;
3522 END IF;
3523
3524 -- Derive sr_ship_to_loc_pk from msd_st_level_values and msd_level_values
3525
3526 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
3527 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3528 p_column_name => 'SHIP_TO_LOC',
3529 p_pk_col_name => 'SR_SHIP_TO_LOC_PK',
3530 p_level_id => 11,
3531 p_instance_code => p_instance_code,
3532 p_instance_id => p_instance_id,
3533 p_message_text => lv_message_text,
3534 p_batch_id => lv_batch_id,
3535 p_severity => G_SEV_ERROR, -- Against Bug#2415379
3536 p_error_text => lv_error_text);
3537
3538 IF lv_return <> 0 THEN
3539 RAISE ex_logging_err;
3540 END IF;
3541
3542 IF (lv_instance_type <> G_INS_OTHER) THEN
3543
3544 -- Set the message to validate customer-ship to location combination for ERP data
3545 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3546 (p_app_short_name => 'MSC',
3547 p_error_code => 'MSC_PP_COL_REF_NOT_EXIST',
3548 p_message_text => lv_message_text,
3549 p_error_text => lv_error_text,
3550 p_token1 => 'COLUMN_NAMES',
3551 p_token_value1 => 'SR_INSTANCE_CODE AND'
3552 ||' CUSTOMER AND SHIP_TO_LOC',
3553 p_token2 => 'MASTER_TABLE',
3554 p_token_value2 => 'MSD_LEVEL_ASSOCIATIONS',
3555 p_token3 => 'CHILD_TABLE',
3556 p_token_value3 => 'MSD_ST_SHIPMENT_DATA');
3557
3558 IF lv_return <> 0 THEN
3559 RAISE ex_logging_err;
3560 END IF;
3561
3562 -- Validate customer-ship to location combination for ERP data
3563 UPDATE msd_st_shipment_data msd
3564 SET process_flag = G_ERROR_FLG,
3565 error_text = lv_message_text
3566 WHERE NOT EXISTS(SELECT 1
3567 FROM msd_st_level_associations msla
3568 WHERE msla.level_id = 11
3569 AND msla.parent_level_id = 15
3570 AND msd.sr_customer_pk = msla.sr_parent_level_pk
3571 AND msd.sr_ship_to_loc_pk = msla.sr_level_pk
3572 AND msla.instance = p_instance_id
3573 UNION ALL
3574 SELECT 1
3575 FROM msd_level_associations mla
3576 WHERE mla.level_id = 11
3577 AND mla.parent_level_id = 15
3578 AND msd.sr_customer_pk = mla.sr_parent_level_pk
3579 AND msd.sr_ship_to_loc_pk = mla.sr_level_pk
3580 AND mla.instance = p_instance_id)
3581 AND msd.process_flag = G_IN_PROCESS
3582 AND msd.sr_instance_code = p_instance_code
3583 AND msd.batch_id = p_batch_id;
3584
3585 END IF;
3586
3587 -- Set the message
3588 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3589 (p_app_short_name => 'MSC',
3590 p_error_code => 'MSC_PP_INVALID_VALUE',
3591 p_message_text => lv_message_text,
3592 p_error_text => lv_error_text,
3593 p_token1 => 'COLUMN_NAME',
3594 p_token_value1 => 'SALES_CHANNEL');
3595
3596 IF lv_return <> 0 THEN
3597 RAISE ex_logging_err;
3598 END IF;
3599
3600 -- Derive sr_sales_channel_pk from msd_st_level_values and msd_level_values
3601
3602 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
3603 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3604 p_column_name => 'SALES_CHANNEL',
3605 p_pk_col_name => 'SR_SALES_CHANNEL_PK',
3606 p_level_id => 27,
3607 p_instance_code => p_instance_code,
3608 p_instance_id => p_instance_id,
3609 p_message_text => lv_message_text,
3610 p_batch_id => lv_batch_id,
3611 p_severity => G_SEV_ERROR, -- Against Bug#2415379
3612 p_error_text => lv_error_text);
3613
3614 IF lv_return <> 0 THEN
3615 RAISE ex_logging_err;
3616 END IF;
3617
3618 -- Set the message
3619 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3620 (p_app_short_name => 'MSC',
3621 p_error_code => 'MSC_PP_INVALID_VALUE',
3622 p_message_text => lv_message_text,
3623 p_error_text => lv_error_text,
3624 p_token1 => 'COLUMN_NAME',
3625 p_token_value1 => 'SALES_REP');
3626
3627 IF lv_return <> 0 THEN
3628 RAISE ex_logging_err;
3629 END IF;
3630 -- Derive sr_sales_rep_pk from msd_st_level_values and msd_level_values
3631
3632 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
3633 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3634 p_column_name => 'SALES_REP',
3635 p_pk_col_name => 'SR_SALES_REP_PK',
3636 p_level_id => 18,
3637 p_instance_code => p_instance_code,
3638 p_instance_id => p_instance_id,
3639 p_message_text => lv_message_text,
3640 p_batch_id => lv_batch_id,
3641 p_severity => G_SEV_ERROR, -- Against Bug#2415379
3642 p_error_text => lv_error_text);
3643
3644 IF lv_return <> 0 THEN
3645 RAISE ex_logging_err;
3646 END IF;
3647
3648 -- Demand Class changes for Shipment Data starts
3649 -- Set the message
3650 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3651 (p_app_short_name => 'MSC',
3652 p_error_code => 'MSC_PP_INVALID_VALUE',
3653 p_message_text => lv_message_text,
3654 p_error_text => lv_error_text,
3655 p_token1 => 'COLUMN_NAME',
3656 p_token_value1 => 'DEMAND_CLASS_LVL_VAL');
3657
3658 IF lv_return <> 0 THEN
3659 RAISE ex_logging_err;
3660 END IF;
3661 -- Derive sr_sales_rep_pk from msd_st_level_values and msd_level_values
3662
3663 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
3664 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3665 p_column_name => 'DEMAND_CLASS_LVL_VAL',
3666 p_pk_col_name => 'SR_DEMAND_CLASS_PK',
3667 p_level_id => 34,
3668 p_instance_code => p_instance_code,
3669 p_instance_id => p_instance_id,
3670 p_message_text => lv_message_text,
3671 p_batch_id => lv_batch_id,
3672 p_severity => G_SEV3_ERROR, -- Against Bug#2415379
3673 p_error_text => lv_error_text);
3674
3675 IF lv_return <> 0 THEN
3676 RAISE ex_logging_err;
3677 END IF;
3678
3679 -- Demand Class changes for Shipment Data ends
3680 -- Set the message
3681 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3682 (p_app_short_name => 'MSC',
3683 p_error_code => 'MSC_PP_INVALID_VALUE',
3684 p_message_text => lv_message_text,
3685 p_error_text => lv_error_text,
3686 p_token1 => 'COLUMN_NAME',
3687 p_token_value1 => 'PARENT_ITEM');
3688
3689 IF lv_return <> 0 THEN
3690 RAISE ex_logging_err;
3691 END IF;
3692 -- Derive sr_sales_rep_pk from msd_st_level_values and msd_level_values
3693
3694 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
3695 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3696 p_column_name => 'PARENT_ITEM',
3697 p_pk_col_name => 'SR_PARENT_ITEM_PK',
3698 p_level_id => 1,
3699 p_instance_code => p_instance_code,
3700 p_instance_id => p_instance_id,
3701 p_message_text => lv_message_text,
3702 p_batch_id => lv_batch_id,
3703 p_severity => G_SEV3_ERROR, -- Against Bug#2415379
3704 p_error_text => lv_error_text);
3705
3706 IF lv_return <> 0 THEN
3707 RAISE ex_logging_err;
3708 END IF;
3709
3710
3711
3712
3713 -- set the message, USER_DEFINED1 is invalid
3714
3715 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3716 (p_app_short_name => 'MSC',
3717 p_error_code => 'MSC_PP_INVALID_VALUE',
3718 p_message_text => lv_message_text,
3719 p_error_text => lv_error_text,
3720 p_token1 => 'COLUMN_NAME',
3721 p_token_value1 => 'USER_DEFINED1');
3722
3723 IF lv_return <> 0 THEN
3724 RAISE ex_logging_err;
3725 END IF;
3726
3727 -- Derive SR_USER_DEFINED1_LVL_PK
3728
3729 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
3730 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3731 p_level_val_col => 'USER_DEFINED1',
3732 p_level_name_col => 'USER_DEFINED_LEVEL1',
3733 p_level_pk_col => 'SR_USER_DEFINED1_PK',
3734 p_instance_code => p_instance_code,
3735 p_instance_id => p_instance_id,
3736 p_message_text => lv_message_text,
3737 p_batch_id => lv_batch_id,
3738 p_error_text => lv_error_text);
3739
3740 IF lv_return <> 0 THEN
3741 RAISE ex_logging_err;
3742 END IF;
3743
3744 -- set the message, USER_DEFINED2 is invalid
3745
3746 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3747 (p_app_short_name => 'MSC',
3748 p_error_code => 'MSC_PP_INVALID_VALUE',
3749 p_message_text => lv_message_text,
3750 p_error_text => lv_error_text,
3751 p_token1 => 'COLUMN_NAME',
3752 p_token_value1 => 'USER_DEFINED2');
3753
3754 IF lv_return <> 0 THEN
3755 RAISE ex_logging_err;
3756 END IF;
3757
3758 -- Derive SR_USER_DEFINED2_LVL_PK
3759
3760 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
3761 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3762 p_level_val_col => 'USER_DEFINED2',
3763 p_level_name_col => 'USER_DEFINED_LEVEL2',
3764 p_level_pk_col => 'SR_USER_DEFINED2_PK',
3765 p_instance_code => p_instance_code,
3766 p_instance_id => p_instance_id,
3767 p_message_text => lv_message_text,
3768 p_batch_id => lv_batch_id,
3769 p_error_text => lv_error_text);
3770
3771 IF lv_return <> 0 THEN
3772 RAISE ex_logging_err;
3773 END IF;
3774 -- Set the message
3775 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
3776 (p_app_short_name => 'MSC',
3777 p_error_code => 'MSC_PP_COL_VAL_NULL',
3778 p_message_text => lv_message_text,
3779 p_error_text => lv_error_text,
3780 p_token1 => 'COLUMN_NAME',
3781 p_token_value1 => 'SHIPPED_DATE');
3782
3783 IF lv_return <> 0 THEN
3784 RAISE ex_logging_err;
3785 END IF;
3786
3787 --shipped_date cannot be null.
3788 v_sql_stmt := 07;
3789
3790 lv_sql_Stmt:=
3791 'UPDATE msd_st_shipment_data '
3792 ||' SET process_flag ='||G_ERROR_FLG||','
3793 ||' error_text = '||''''||lv_message_text||''''
3794 ||' WHERE NVL(shipped_date,(sysdate-36500)) = (sysdate-36500)'
3795 ||' AND process_flag ='|| G_IN_PROCESS
3796 ||' AND batch_id = :lv_batch_id'
3797 ||' AND sr_instance_code = :p_instance_code';
3798
3799 IF lv_debug THEN
3800 msc_st_util.log_message(lv_sql_stmt);
3801 END IF;
3802
3803 EXECUTE IMMEDIATE lv_sql_stmt
3804 USING lv_batch_id,
3805 p_instance_code ;
3806
3807
3808 --Call to customised validation.
3809 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
3810 (ERRBUF => lv_error_text,
3811 RETCODE => lv_return,
3812 pBatchID => lv_batch_id,
3813 pInstanceCode => p_instance_code,
3814 pEntityName => 'MSD_ST_SHIPMENT_DATA',
3815 pInstanceID => p_instance_id);
3816
3817 IF NVL(lv_return,0) <> 0 THEN
3818 RAISE ex_logging_err;
3819 END IF;
3820
3821 -- Set the process flag as Valid and populate instance_id
3822 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
3823 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3824 p_instance_id => p_instance_id,
3825 p_instance_code => p_instance_code,
3826 p_process_flag => G_VALID,
3827 p_error_text => lv_error_text,
3828 p_batch_id => lv_batch_id,
3829 p_instance_id_col=> 'INSTANCE');
3830
3831 IF lv_return <> 0 THEN
3832 RAISE ex_logging_err;
3833 END IF;
3834
3835 -- Inserting all the errored out records into MSC_ERRORS:
3836
3837 lv_return := MSC_ST_UTIL.LOG_ERROR
3838 (p_table_name => 'MSD_ST_SHIPMENT_DATA',
3839 p_instance_code => p_instance_code,
3840 p_row => lv_column_names,
3841 p_severity => G_SEV_ERROR,
3842 p_error_text => lv_error_text,
3843 p_message_text => NULL,
3844 p_batch_id => lv_batch_id);
3845
3846 IF(lv_return <> 0) THEN
3847 msc_st_util.log_message(lv_error_text);
3848 END IF;
3849 COMMIT;
3850
3851 EXCEPTION
3852 WHEN ex_logging_err THEN
3853 ROLLBACK;
3854
3855 ERRBUF := lv_error_text;
3856 RETCODE := G_WARNING;
3857 msc_st_util.log_message(lv_error_text);
3858
3859 WHEN OTHERS THEN
3860 ROLLBACK;
3861
3862 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_SHIPMENT_DATA '||'('
3863 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
3864 msc_st_util.log_message(lv_error_text);
3865 ERRBUF := lv_error_text;
3866 RETCODE := G_WARNING;
3867
3868 END LOAD_SHIPMENT_DATA ;
3869
3870 /*==========================================================================+
3871 | DESCRIPTION : This function performs the validation and loads the data |
3872 | for business object mfg forecast |
3873 +==========================================================================*/
3874 PROCEDURE LOAD_MFG_FORECAST(ERRBUF OUT NOCOPY VARCHAR,
3875 RETCODE OUT NOCOPY NUMBER,
3876 p_instance_code IN VARCHAR,
3877 p_instance_id IN NUMBER,
3878 p_batch_id IN NUMBER)
3879
3880 IS
3881 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
3882 lb_rowid RowidTab;
3883 /* lb_rowid1 RowidTab; Bug3749959 */
3884 lv_sql_stmt VARCHAR2(4000);
3885 lv_batch_id msd_st_mfg_forecast.batch_id%TYPE;
3886 lv_my_company msc_companies.company_name%TYPE := GET_MY_COMPANY;
3887 lv_message_text msc_errors.error_text%TYPE;
3888 lv_error_text VARCHAR2(250);
3889 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
3890 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
3891 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
3892 lv_current_date DATE := msc_cl_pre_process.v_current_date;
3893 lv_return NUMBER := 0;
3894 ex_logging_err EXCEPTION;
3895 lv_column_names VARCHAR2(5000);
3896
3897 CURSOR c1(p_batch_id NUMBER)IS
3898 SELECT rowid
3899 FROM msd_st_mfg_forecast
3900 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
3901 AND sr_instance_code = p_instance_code
3902 AND batch_id = p_batch_id;
3903
3904 CURSOR instance_type IS
3905 SELECT instance_type
3906 FROM msc_apps_instances
3907 WHERE instance_id=p_instance_id;
3908 /*
3909 lv_other_desc varchar2(240) := NULL; --Adding this to insert level value - 'Others' -Bug 3749959
3910 lv_all_dcs_desc varchar2(240) := NULL; --Adding this to insert level value - 'All Demand Classes' -Bug 3749959
3911 Bug3749959 */
3912
3913 lv_instance_type msc_apps_instances.instance_type%TYPE;
3914
3915 /* lv_other_exist NUMBER :=0; --Bug 3749959
3916 lv_all_dcs_pk NUMBER :=0; --Bug 3749959
3917
3918 CURSOR c2(p_batch_id NUMBER)IS --This cursor is used to fetch all records which doesn't have any level value for demand class dimension. --Bug 3749959
3919 SELECT rowid
3920 FROM msd_st_mfg_forecast
3921 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
3922 AND nvl(DEMAND_CLASS_LVL_VAL,'-1') = '-1'
3923 AND sr_instance_code = p_instance_code
3924 AND batch_id = p_batch_id;
3925
3926 cursor c3 (p_instance varchar2) is -- This cursor is added to find whether the level value 'Others' exist at 'Demand Class' Level. --Bug 3749959
3927 select count(*) from MSD_LEVEL_VALUES
3928 where LEVEL_ID = 34
3929 and instance = p_instance
3930 and SR_LEVEL_PK = to_char(v_null_pk);
3931
3932 cursor c4 (p_instance_code varchar2) is -- This cursor is added to find whether the level value 'All Demand Classes' exist alreday or not. --Bug 3749959
3933 select local_id from msd_local_id_setup
3934 where char1 = p_instance_code
3935 -- and char2 = 'All Demand Classes'
3936 and level_id = 40;
3937 Bug3749959 */
3938
3939 BEGIN
3940
3941 lv_batch_id := p_batch_id;
3942 lv_column_names :=
3943 ' SR_INSTANCE_CODE ||''~''||'
3944 ||' FORECAST_SET ||''~''||'
3945 ||' FORECAST_DESIGNATOR ||''~''||'
3946 ||' CUSTOMER ||''~''||'
3947 ||' ITEM ||''~''||'
3948 ||' INV_ORG ||''~''||'
3949 ||' SALES_CHANNEL ||''~''||'
3950 ||' SHIP_TO_LOC ||''~''||'
3951 ||' USER_DEFINED_LEVEL1 ||''~''||'
3952 ||' USER_DEFINED1 ||''~''||'
3953 ||' USER_DEFINED_LEVEL2 ||''~''||'
3954 ||' USER_DEFINED2 ||''~''||'
3955 ||' BUCKET_TYPE ||''~''||'
3956 ||' FORECAST_DATE ||''~''||'
3957 ||' RATE_END_DATE ||''~''||'
3958 ||' ORIGINAL_QUANTITY ||''~''||'
3959 ||' CURRENT_QUANTITY ';
3960
3961 OPEN c1(lv_batch_id);
3962 FETCH c1 BULK COLLECT INTO lb_rowid;
3963 CLOSE c1;
3964
3965 v_sql_stmt := 04;
3966 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
3967 UPDATE msd_st_mfg_forecast
3968 SET st_transaction_id = msd_st_mfg_forecast_s.NEXTVAL,
3969 last_update_date = lv_current_date,
3970 last_updated_by = lv_current_user,
3971 creation_date = lv_current_date,
3972 created_by = lv_current_user
3973 WHERE rowid = lb_rowid(j);
3974
3975 -- Changes for Bug 3749959, STARTS.
3976 /*
3977 OPEN c2(lv_batch_id);
3978 FETCH c2 BULK COLLECT INTO lb_rowid1;
3979 CLOSE c2;
3980
3981 IF ( lb_rowid1.COUNT <> 0 ) THEN -- If records exist for which, demand class level values is not provided.
3982
3983 lv_other_desc := msd_sr_util.get_null_desc; --Calling fuction - msd_sr_util.get_null_desc, to fetch the level value 'Others'
3984 lv_all_dcs_desc := msd_sr_util.get_all_dcs_desc; --Calling fuction - msd_sr_util.get_all_dcs_desc, to fetch the level value 'All Demand Classes'
3985
3986 v_sql_stmt := 05;
3987 FORALL j IN lb_rowid1.FIRST..lb_rowid1.LAST -- Update the demand class level value column with 'Other' as Demand Class Level Value.
3988 UPDATE msd_st_mfg_forecast
3989 SET DEMAND_CLASS_LVL_VAL = lv_other_desc --Using the value fetched from function - msd_sr_util.get_null_desc
3990 WHERE rowid = lb_rowid1(j);
3991
3992
3993 OPEN c3(p_instance_id);
3994 FETCH c3 into lv_other_exist;
3995 CLOSE c3;
3996
3997 IF lv_other_exist = 0 THEN
3998
3999 INSERT INTO MSD_ST_LEVEL_VALUES --Inserting the level value 'Others' at 'Demand Class' level in MSD_ST_LEVEL_VALUES.
4000 (INSTANCE ,
4001 LEVEL_ID,
4002 LEVEL_VALUE,
4003 SR_LEVEL_PK,
4004 ATTRIBUTE1,
4005 ATTRIBUTE2,
4006 ATTRIBUTE3,
4007 ATTRIBUTE4,
4008 ATTRIBUTE5,
4009 LAST_UPDATE_DATE,
4010 LAST_UPDATED_BY,
4011 CREATION_DATE,
4012 CREATED_BY,
4013 LAST_UPDATE_LOGIN,
4014 REQUEST_ID,
4015 PROGRAM_APPLICATION_ID,
4016 PROGRAM_ID,
4017 PROGRAM_UPDATE_DATE )
4018 VALUES
4019 (p_instance_id,
4020 34,
4021 lv_other_desc, --Using the value fetched from function - msd_sr_util.get_null_desc
4022 to_char(v_null_pk),
4023 NULL,
4024 NULL,
4025 NULL,
4026 NULL,
4027 NULL,
4028 sysdate,
4029 -1,
4030 sysdate,
4031 -1,
4032 -1,
4033 -1,
4034 -1,
4035 -1,
4036 sysdate);
4037
4038 END IF;
4039
4040 OPEN c4(p_instance_code);
4041 FETCH c4 into lv_all_dcs_pk;
4042 CLOSE c4;
4043
4044 IF lv_all_dcs_pk = 0 THEN
4045
4046 lv_all_dcs_pk := msd_sr_util.get_all_dcs_pk; -- Fetching the SR_LEVEL_PK for 'ALL Demand Classes' level value from function - msd_sr_util.get_all_dcs_pk
4047
4048 INSERT INTO msd_local_id_setup --Inserting the level value 'All Demand Classes' in MSD_LOCAL_ID_SETUP.
4049 (local_id,
4050 instance_id,
4051 level_id,
4052 char1,
4053 char2,
4054 last_update_date,
4055 last_updated_by,
4056 creation_date,
4057 created_by )
4058 VALUES
4059 (lv_all_dcs_pk,
4060 p_instance_id,
4061 40,
4062 p_instance_code,
4063 lv_all_dcs_desc, --Using the value fetched from function - msd_sr_util.get_all_dcs_desc
4064 sysdate,
4065 -1,
4066 sysdate,
4067 -1);
4068
4069 -- lv_sr_level_pk := -6; -- Inserting 'All Demand Classes' records with sr_level_pk as -6
4070
4071
4072 INSERT INTO MSD_ST_LEVEL_VALUES --Inserting the level value 'All Demand Classes' in MSD_ST_LEVEL_VALUES.
4073 (INSTANCE ,
4074 LEVEL_ID,
4075 LEVEL_VALUE,
4076 SR_LEVEL_PK,
4077 ATTRIBUTE1,
4078 ATTRIBUTE2,
4079 ATTRIBUTE3,
4080 ATTRIBUTE4,
4081 ATTRIBUTE5,
4082 LAST_UPDATE_DATE,
4083 LAST_UPDATED_BY,
4084 CREATION_DATE,
4085 CREATED_BY,
4086 LAST_UPDATE_LOGIN,
4087 REQUEST_ID,
4088 PROGRAM_APPLICATION_ID,
4089 PROGRAM_ID,
4090 PROGRAM_UPDATE_DATE )
4091 VALUES
4092 (p_instance_id,
4093 40,
4094 lv_all_dcs_desc, --Using the value fetched from function - msd_sr_util.get_all_dcs_desc
4095 lv_all_dcs_pk,
4096 NULL,
4097 NULL,
4098 NULL,
4099 NULL,
4100 NULL,
4101 sysdate,
4102 -1,
4103 sysdate,
4104 -1,
4105 -1,
4106 -1,
4107 -1,
4108 -1,
4109 sysdate);
4110
4111
4112 --Inserting the level value 'Others' rolling to 'All Demand Classes' in MSD_ST_LEVEL_ASSOCIATIONS
4113
4114 INSERT INTO MSD_ST_LEVEL_ASSOCIATIONS
4115 (INSTANCE ,
4116 LEVEL_ID,
4117 SR_LEVEL_PK,
4118 PARENT_LEVEL_ID,
4119 SR_PARENT_LEVEL_PK,
4120 ATTRIBUTE1,
4121 ATTRIBUTE2,
4122 ATTRIBUTE3,
4123 ATTRIBUTE4,
4124 ATTRIBUTE5,
4125 LAST_UPDATE_DATE,
4126 LAST_UPDATED_BY,
4127 CREATION_DATE,
4128 CREATED_BY,
4129 LAST_UPDATE_LOGIN,
4130 REQUEST_ID,
4131 PROGRAM_APPLICATION_ID,
4132 PROGRAM_ID,
4133 PROGRAM_UPDATE_DATE )
4134 VALUES
4135 (p_instance_id,
4136 34,
4137 to_char(v_null_pk),
4138 40,
4139 lv_all_dcs_pk,
4140 NULL,
4141 NULL,
4142 NULL,
4143 NULL,
4144 NULL,
4145 sysdate,
4146 -1,
4147 sysdate,
4148 -1,
4149 -1,
4150 -1,
4151 -1,
4152 -1,
4153 sysdate);
4154
4155
4156 END IF;
4157
4158 END IF;
4159 Bug3749959 */
4160 -- Changes for Bug 3749959, ENDS.
4161
4162 -- Set the message
4163 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4164 (p_app_short_name => 'MSC',
4165 p_error_code => 'MSC_PP_INVALID_VALUE',
4166 p_message_text => lv_message_text,
4167 p_error_text => lv_error_text,
4168 p_token1 => 'COLUMN_NAME',
4169 p_token_value1 => 'ITEM');
4170
4171 IF lv_return <> 0 THEN
4172 RAISE ex_logging_err;
4173 END IF;
4174
4175 -- Derive sr_item_pk from msd_st_level_values and msd_level_values
4176
4177 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
4178 (p_table_name => 'MSD_ST_MFG_FORECAST',
4179 p_column_name => 'ITEM',
4180 p_pk_col_name => 'SR_ITEM_PK',
4181 p_level_id => 1,
4182 p_instance_code => p_instance_code,
4183 p_instance_id => p_instance_id,
4184 p_message_text => lv_message_text,
4185 p_batch_id => lv_batch_id,
4186 p_error_text => lv_error_text);
4187
4188 IF lv_return <> 0 THEN
4189 RAISE ex_logging_err;
4190 END IF;
4191 -- Set the message
4192 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4193 (p_app_short_name => 'MSC',
4194 p_error_code => 'MSC_PP_INVALID_VALUE',
4195 p_message_text => lv_message_text,
4196 p_error_text => lv_error_text,
4197 p_token1 => 'COLUMN_NAME',
4198 p_token_value1 => 'INV_ORG');
4199
4200 IF lv_return <> 0 THEN
4201 RAISE ex_logging_err;
4202 END IF;
4203
4204 -- Derive sr_inv_org_pk from msd_st_level_values and msd_level_values
4205
4206 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
4207 (p_table_name => 'MSD_ST_MFG_FORECAST',
4208 p_column_name => 'INV_ORG',
4209 p_pk_col_name => 'SR_INV_ORG_PK',
4210 p_level_id => 7,
4211 p_instance_code => p_instance_code,
4212 p_instance_id => p_instance_id,
4213 p_message_text => lv_message_text,
4214 p_batch_id => lv_batch_id,
4215 p_error_text => lv_error_text);
4216
4217 IF lv_return <> 0 THEN
4218 RAISE ex_logging_err;
4219 END IF;
4220
4221 -- Set the message
4222 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4223 (p_app_short_name => 'MSC',
4224 p_error_code => 'MSC_PP_INVALID_VALUE',
4225 p_message_text => lv_message_text,
4226 p_error_text => lv_error_text,
4227 p_token1 => 'COLUMN_NAME',
4228 p_token_value1 => 'CUSTOMER');
4229
4230 IF lv_return <> 0 THEN
4231 RAISE ex_logging_err;
4232 END IF;
4233
4234 -- Derive sr_customer_pk from msd_st_level_values and msd_level_values
4235
4236 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
4237 (p_table_name => 'MSD_ST_MFG_FORECAST',
4238 p_column_name => 'CUSTOMER',
4239 p_pk_col_name => 'SR_CUSTOMER_PK',
4240 p_level_id => 15,
4241 p_instance_code => p_instance_code,
4242 p_instance_id => p_instance_id,
4243 p_message_text => lv_message_text,
4244 p_batch_id => lv_batch_id,
4245 p_error_text => lv_error_text);
4246
4247 IF lv_return <> 0 THEN
4248 RAISE ex_logging_err;
4249 END IF;
4250
4251 -- Set the message
4252 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4253 (p_app_short_name => 'MSC',
4254 p_error_code => 'MSC_PP_INVALID_VALUE',
4255 p_message_text => lv_message_text,
4256 p_error_text => lv_error_text,
4257 p_token1 => 'COLUMN_NAME',
4258 p_token_value1 => 'SHIP_TO_LOC');
4259
4260 IF lv_return <> 0 THEN
4261 RAISE ex_logging_err;
4262 END IF;
4263 -- Derive sr_ship_to_loc_pk from msd_st_level_values and msd_level_values
4264
4265 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
4266 (p_table_name => 'MSD_ST_MFG_FORECAST',
4267 p_column_name => 'SHIP_TO_LOC',
4268 p_pk_col_name => 'SR_SHIP_TO_LOC_PK',
4269 p_level_id => 11,
4270 p_instance_code => p_instance_code,
4271 p_instance_id => p_instance_id,
4272 p_message_text => lv_message_text,
4273 p_batch_id => lv_batch_id,
4274 p_error_text => lv_error_text);
4275
4276 IF lv_return <> 0 THEN
4277 RAISE ex_logging_err;
4278 END IF;
4279
4280 -- Set the message
4281 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4282 (p_app_short_name => 'MSC',
4283 p_error_code => 'MSC_PP_INVALID_VALUE',
4284 p_message_text => lv_message_text,
4285 p_error_text => lv_error_text,
4286 p_token1 => 'COLUMN_NAME',
4287 p_token_value1 => 'SALES_CHANNEL');
4288
4289 IF lv_return <> 0 THEN
4290 RAISE ex_logging_err;
4291 END IF;
4292
4293 -- Derive sr_sales_channel_pk from msd_st_level_values and msd_level_values
4294
4295 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
4296 (p_table_name => 'MSD_ST_MFG_FORECAST',
4297 p_column_name => 'SALES_CHANNEL',
4298 p_pk_col_name => 'SR_SALES_CHANNEL_PK',
4299 p_level_id => 27,
4300 p_instance_code => p_instance_code,
4301 p_instance_id => p_instance_id,
4302 p_message_text => lv_message_text,
4303 p_batch_id => lv_batch_id,
4304 p_error_text => lv_error_text);
4305
4306 IF lv_return <> 0 THEN
4307 RAISE ex_logging_err;
4308 END IF;
4309
4310 -- Demand Class Changes for Mfg Forecast starts
4311 -- Set the message
4312 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4313 (p_app_short_name => 'MSC',
4314 p_error_code => 'MSC_PP_INVALID_VALUE',
4315 p_message_text => lv_message_text,
4316 p_error_text => lv_error_text,
4317 p_token1 => 'COLUMN_NAME',
4318 p_token_value1 => 'DEMAND_CLASS_LVL_VAL');
4319
4320 IF lv_return <> 0 THEN
4321 RAISE ex_logging_err;
4322 END IF;
4323
4324 -- Derive sr_sales_channel_pk from msd_st_level_values and msd_level_values
4325
4326 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
4327 (p_table_name => 'MSD_ST_MFG_FORECAST',
4328 p_column_name => 'DEMAND_CLASS_LVL_VAL',
4329 p_pk_col_name => 'SR_DEMAND_CLASS_PK',
4330 p_level_id => 34,
4331 p_instance_code => p_instance_code,
4332 p_instance_id => p_instance_id,
4333 p_message_text => lv_message_text,
4334 p_batch_id => lv_batch_id,
4335 p_error_text => lv_error_text);
4336
4337 IF lv_return <> 0 THEN
4338 RAISE ex_logging_err;
4339 END IF;
4340
4341 -- Demand Class Changes for Mfg Forecast ends
4342
4343 -- set the message, USER_DEFINED1 is invalid
4344
4345 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4346 (p_app_short_name => 'MSC',
4347 p_error_code => 'MSC_PP_INVALID_VALUE',
4348 p_message_text => lv_message_text,
4349 p_error_text => lv_error_text,
4350 p_token1 => 'COLUMN_NAME',
4351 p_token_value1 => 'USER_DEFINED1');
4352
4353 IF lv_return <> 0 THEN
4354 RAISE ex_logging_err;
4355 END IF;
4356
4357 -- Derive SR_USER_DEFINED2_LVL_PK
4358
4359 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
4360 (p_table_name => 'MSD_ST_MFG_FORECAST',
4361 p_level_val_col => 'USER_DEFINED1',
4362 p_level_name_col => 'USER_DEFINED_LEVEL1',
4363 p_level_pk_col => 'SR_USER_DEFINED1_PK',
4364 p_instance_code => p_instance_code,
4365 p_instance_id => p_instance_id,
4366 p_message_text => lv_message_text,
4367 p_batch_id => lv_batch_id,
4368 p_error_text => lv_error_text);
4369
4370 IF lv_return <> 0 THEN
4371 RAISE ex_logging_err;
4372 END IF;
4373
4374 -- set the message, USER_DEFINED2 is invalid
4375
4376 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4377 (p_app_short_name => 'MSC',
4378 p_error_code => 'MSC_PP_INVALID_VALUE',
4379 p_message_text => lv_message_text,
4380 p_error_text => lv_error_text,
4381 p_token1 => 'COLUMN_NAME',
4382 p_token_value1 => 'USER_DEFINED2');
4383
4384 IF lv_return <> 0 THEN
4385 RAISE ex_logging_err;
4386 END IF;
4387
4388 -- Derive SR_USER_DEFINED2_LVL_PK
4389
4390 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
4391 (p_table_name => 'MSD_ST_MFG_FORECAST',
4392 p_level_val_col => 'USER_DEFINED2',
4393 p_level_name_col => 'USER_DEFINED_LEVEL2',
4394 p_level_pk_col => 'SR_USER_DEFINED2_PK',
4395 p_instance_code => p_instance_code,
4396 p_instance_id => p_instance_id,
4397 p_message_text => lv_message_text,
4398 p_batch_id => lv_batch_id,
4399 p_error_text => lv_error_text);
4400
4401 IF lv_return <> 0 THEN
4402 RAISE ex_logging_err;
4403 END IF;
4404
4405 -- Set the message
4406 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4407 (p_app_short_name => 'MSC',
4408 p_error_code => 'MSC_PP_COL_VAL_NULL',
4409 p_message_text => lv_message_text,
4410 p_error_text => lv_error_text,
4411 p_token1 => 'COLUMN_NAME',
4412 p_token_value1 => 'FORECAST_DESIGNATOR');
4413
4414 IF lv_return <> 0 THEN
4415 RAISE ex_logging_err;
4416 END IF;
4417
4418 -- Error out the record if forecast_designator is NULL
4419 v_sql_stmt := 08;
4420 lv_sql_stmt :=
4421 'UPDATE msd_st_mfg_forecast'
4422 ||' SET process_flag = '||G_ERROR_FLG||','
4423 ||' error_text = '||''''||lv_message_text||''''
4424 ||' WHERE NVL(forecast_designator, '||''''||NULL_CHAR||''''||') '
4425 ||' = '||''''||NULL_CHAR||''''
4426 ||' AND batch_id = :lv_batch_id'
4427 ||' AND process_flag = '||G_IN_PROCESS
4428 ||' AND sr_instance_code = :p_instance_code';
4429
4430 IF lv_debug THEN
4431 msc_st_util.log_message(lv_sql_stmt);
4432 END IF;
4433 EXECUTE IMMEDIATE lv_sql_stmt
4434 USING lv_batch_id,
4435 p_instance_code;
4436
4437 -- Set the message
4438 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4439 (p_app_short_name => 'MSC',
4440 p_error_code => 'MSC_PP_COL_VAL_NULL',
4441 p_message_text => lv_message_text,
4442 p_error_text => lv_error_text,
4443 p_token1 => 'COLUMN_NAME',
4444 p_token_value1 => 'FORECAST_DATE');
4445
4446 IF lv_return <> 0 THEN
4447 RAISE ex_logging_err;
4448 END IF;
4449
4450 v_sql_stmt := 08;
4451 lv_sql_Stmt:=
4452 'UPDATE msd_st_mfg_forecast '
4453 ||' SET process_flag ='||G_ERROR_FLG||','
4454 ||' error_text = '||''''||lv_message_text||''''
4455 ||' WHERE NVL(forecast_date,(sysdate-36500)) = (sysdate-36500)'
4456 ||' AND process_flag ='|| G_IN_PROCESS
4457 ||' AND batch_id = :lv_batch_id'
4458 ||' AND sr_instance_code = :p_instance_code';
4459
4460 IF lv_debug THEN
4461 msc_st_util.log_message(lv_sql_stmt);
4462 END IF;
4463
4464 EXECUTE IMMEDIATE lv_sql_stmt
4465 USING lv_batch_id,
4466 p_instance_code ;
4467
4468 -- Set the message
4469 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4470 (p_app_short_name => 'MSC',
4471 p_error_code => 'MSC_PP_COL_VAL_NULL',
4472 p_message_text => lv_message_text,
4473 p_error_text => lv_error_text,
4474 p_token1 => 'COLUMN_NAME',
4475 p_token_value1 => 'ORIGINAL_QUANTITY');
4476
4477 IF lv_return <> 0 THEN
4478 RAISE ex_logging_err;
4479 END IF;
4480
4481 -- Original quantity should not be NULL
4482 lv_sql_stmt :=
4483 'UPDATE msd_st_mfg_forecast'
4484 ||' SET process_flag = '||G_ERROR_FLG||','
4485 ||' error_text = '||''''||lv_message_text||''''
4486 ||' WHERE NVL(original_quantity,'||NULL_VALUE||')= '||NULL_VALUE
4487 ||' AND process_flag = '||G_IN_PROCESS
4488 ||' AND batch_id = :lv_batch_id'
4489 ||' AND sr_instance_code = :p_instance_code';
4490
4491 IF lv_debug THEN
4492 msc_st_util.log_message(lv_sql_stmt);
4493 END IF;
4494 EXECUTE IMMEDIATE lv_sql_stmt
4495 USING lv_batch_id,
4496 p_instance_code;
4497
4498 -- Current quantity should be defaulted to original quantitty of NULL
4499
4500 v_sql_stmt := 08;
4501 lv_sql_stmt :=
4502 ' UPDATE msd_st_mfg_forecast'
4503 ||' SET current_quantity = original_quantity'
4504 ||' WHERE NVL(current_quantity,'||NULL_VALUE||')= '||NULL_VALUE
4505 ||' AND process_flag = '||G_IN_PROCESS
4506 ||' AND batch_id = :lv_batch_id'
4507 ||' AND sr_instance_code = :p_instance_code';
4508
4509 IF lv_debug THEN
4510 msc_st_util.log_message(lv_sql_stmt);
4511 END IF;
4512
4513 EXECUTE IMMEDIATE lv_sql_stmt
4514 USING lv_batch_id,
4515 p_instance_code;
4516
4517
4518 -- BUCKET_TYPE value should be 1,2 or 3 if NULL default it to 1(daily)
4519 v_sql_stmt := 08;
4520 lv_sql_stmt :=
4521 ' UPDATE msd_st_mfg_forecast'
4522 ||' SET bucket_type = '||G_BUCKET_TYPE
4523 ||' WHERE NVL(bucket_type,'||NULL_VALUE||') NOT IN(1,2,3)'
4524 ||' AND process_flag = '||G_IN_PROCESS
4525 ||' AND batch_id = :lv_batch_id'
4526 ||' AND sr_instance_code = :p_instance_code';
4527
4528 IF lv_debug THEN
4529 msc_st_util.log_message(lv_sql_stmt);
4530 END IF;
4531
4532 EXECUTE IMMEDIATE lv_sql_stmt
4533 USING lv_batch_id,
4534 p_instance_code;
4535
4536 OPEN instance_type;
4537 FETCH instance_type into lv_instance_type;
4538 CLOSE instance_type;
4539
4540
4541 IF (lv_instance_type = G_INS_OTHER) THEN
4542
4543 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4544 (p_app_short_name => 'MSC',
4545 p_error_code => 'MSC_PP_COL_REF_NOT_EXIST',
4546 p_message_text => lv_message_text,
4547 p_error_text => lv_error_text,
4548 p_token1 => 'COLUMN_NAMES',
4549 p_token_value1 => 'SR_INSTANCE_CODE AND'
4550 ||' INV_ORG AND ITEM AND ITEM.ATO_FORECAST_CONTROL'
4551 ||' AND ITEM.MRP_PLANNING_CODE',
4552 p_token2 => 'MASTER_TABLE',
4553 p_token_value2 => 'MSC_SYSTEM_ITEMS',
4554 p_token3 => 'CHILD_TABLE',
4555 p_token_value3 => 'MSD_ST_MFG_FORECAST');
4556
4557 IF lv_return <> 0 THEN
4558 RAISE ex_logging_err;
4559 END IF;
4560
4561 -- Validate item-org combination
4562 v_sql_stmt := 15;
4563
4564 UPDATE msd_st_mfg_forecast mmf
4565 SET process_flag = G_ERROR_FLG,
4566 error_text = lv_message_text
4567 WHERE NOT EXISTS(SELECT 1
4568 FROM msc_st_system_items msi
4569 WHERE msi.sr_instance_id = p_instance_id
4570 AND nvl(msi.company_name,lv_my_company) = lv_my_company
4571 AND msi.organization_id = mmf.sr_inv_org_pk
4572 AND msi.item_name = mmf.item
4573 AND ((v_plan_per_profile = 4) OR (msi.ato_forecast_control <> 3)) --forecast control - none
4574 AND ((msi.mrp_planning_code <> 6 ) OR (msi.pick_components_flag='Y' )) --Not planned item
4575 UNION
4576 SELECT 1
4577 FROM msc_system_items mls
4578 WHERE mls.sr_instance_id = p_instance_id
4579 AND mls.organization_id = mmf.sr_inv_org_pk
4580 AND mls.item_name = mmf.item
4581 AND mls.plan_id = -1
4582 AND ((v_plan_per_profile = 4) OR (mls.ato_forecast_control <> 3)) --forecast control - none
4583 AND ((mls.mrp_planning_code <> 6 ) OR (mls.pick_components_flag='Y' )) ) --Not planned item
4584 AND mmf.process_flag = G_IN_PROCESS
4585 AND mmf.sr_instance_code = p_instance_code
4586 AND mmf.batch_id = p_batch_id;
4587
4588 END IF;
4589
4590 --Call to customised validation.
4591 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
4592 (ERRBUF => lv_error_text,
4593 RETCODE => lv_return,
4594 pBatchID => lv_batch_id,
4595 pInstanceCode => p_instance_code,
4596 pEntityName => 'MSD_ST_MFG_FORECAST',
4597 pInstanceID => p_instance_id);
4598
4599 IF NVL(lv_return,0) <> 0 THEN
4600 RAISE ex_logging_err;
4601 END IF;
4602
4603 -- Set the process flag as Valid and populate instance_id
4604 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
4605 (p_table_name => 'MSD_ST_MFG_FORECAST',
4606 p_instance_id => p_instance_id,
4607 p_instance_code => p_instance_code,
4608 p_process_flag => G_VALID,
4609 p_error_text => lv_error_text,
4610 p_batch_id => lv_batch_id,
4611 p_instance_id_col=> 'INSTANCE');
4612
4613 IF lv_return <> 0 THEN
4614 RAISE ex_logging_err;
4615 END IF;
4616
4617
4618 -- Inserting all the errored out records into MSC_ERRORS:
4619
4620 lv_return := MSC_ST_UTIL.LOG_ERROR
4621 (p_table_name => 'MSD_ST_MFG_FORECAST',
4622 p_instance_code => p_instance_code,
4623 p_row => lv_column_names,
4624 p_severity => G_SEV_ERROR,
4625 p_error_text => lv_error_text,
4626 p_message_text => NULL,
4627 p_batch_id => lv_batch_id);
4628
4629 IF(lv_return <> 0) THEN
4630 msc_st_util.log_message(lv_error_text);
4631 END IF;
4632 COMMIT;
4633
4634 EXCEPTION
4635 WHEN ex_logging_err THEN
4636 ROLLBACK;
4637
4638 ERRBUF := lv_error_text;
4639 RETCODE := G_WARNING;
4640 msc_st_util.log_message(lv_error_text);
4641
4642 WHEN OTHERS THEN
4643 ROLLBACK;
4644
4645 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_MFG_FORECAST '||'('
4646 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
4647 msc_st_util.log_message(lv_error_text);
4648 ERRBUF := lv_error_text;
4649 RETCODE := G_WARNING;
4650
4651 END LOAD_MFG_FORECAST ;
4652
4653
4654 /*==========================================================================+
4655 | DESCRIPTION : This function insert records for msd_st_time |
4656 | for manufacturing calendar |
4657 +==========================================================================*/
4658 PROCEDURE LOAD_MFG_TIME (ERRBUF OUT NOCOPY VARCHAR,
4659 RETCODE OUT NOCOPY NUMBER,
4660 p_instance_id IN NUMBER,
4661 p_calendar_code IN VARCHAR)
4662 IS
4663 lv_sql_stmt VARCHAR2(4000);
4664 lv_error_text VARCHAR2(250);
4665 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
4666 lv_return NUMBER := 0;
4667 lv_cal_start_date DATE;
4668 lv_cal_end_date DATE;
4669
4670 Cursor C is
4671 select max(day),min(day)
4672 from msd_st_time
4673 where calendar_code=p_calendar_code
4674 and instance=p_instance_id;
4675
4676 BEGIN
4677
4678
4679 v_sql_stmt := 01;
4680 lv_sql_stmt :=
4681 ' INSERT INTO MSD_ST_TIME'
4682 ||' (INSTANCE , '
4683 ||' CALENDAR_TYPE, '
4684 ||' CALENDAR_CODE, '
4685 ||' SEQ_NUM, '
4686 ||' YEAR, '
4687 ||' YEAR_DESCRIPTION, '
4688 ||' YEAR_START_DATE, '
4689 ||' YEAR_END_DATE, '
4690 ||' QUARTER, '
4691 ||' QUARTER_DESCRIPTION, '
4692 ||' QUARTER_START_DATE,'
4693 ||' QUARTER_END_DATE,'
4694 ||' MONTH,'
4695 ||' MONTH_DESCRIPTION,'
4696 ||' MONTH_START_DATE,'
4697 ||' MONTH_END_DATE,'
4698 ||' WEEK ,'
4699 ||' WEEK_DESCRIPTION ,'
4700 ||' WEEK_START_DATE,'
4701 ||' WEEK_END_DATE,'
4702 ||' DAY,'
4703 ||' DAY_DESCRIPTION,'
4704 ||' LAST_UPDATE_DATE, '
4705 ||' LAST_UPDATED_BY, '
4706 ||' CREATION_DATE, '
4707 ||' CREATED_BY, '
4708 ||' LAST_UPDATE_LOGIN, '
4709 ||' REQUEST_ID, '
4710 ||' PROGRAM_APPLICATION_ID, '
4711 ||' PROGRAM_ID, '
4712 ||' PROGRAM_UPDATE_DATE ) '
4713 ||' SELECT'
4714 ||' mcd.sr_instance_id,'
4715 || G_MFG_CAL||','
4716 ||' mcd.calendar_code, '
4717 ||' mcd.seq_num, '
4718 ||' NULL,'
4719 ||' NULL,'
4720 ||' NULL,'
4721 ||' NULL,'
4722 ||' NULL,'
4723 ||' NULL,'
4724 ||' NULL,'
4725 ||' NULL,'
4726 ||' mps.period_name'||'||''-''||'||'to_char(mps.period_start_date,''YYYY''),'
4727 ||' mps.period_name'||'||''-''||'||'to_char(mps.period_start_date,''YYYY''),'
4728 ||' mps.period_start_date,'
4729 ||' DECODE(SIGN(mps.next_date-mps.period_start_date),1,(mps.next_date-1),'||'NULL'||'),'
4730 ||' ''Week''||'||'mcws.seq_num ,'
4731 ||' ''Week''||'||'mcws.seq_num ,'
4732 ||' mcws.week_start_date ,'
4733 ||' DECODE(SIGN(mcws.next_date-mcws.week_start_date),1,(mcws.next_date-1),'||'NULL'||'),'
4734 ||' mcd.calendar_date,'
4735 ||' mcd.calendar_date,'
4736 ||' mcd.last_update_date,'
4737 ||' mcd.last_updated_by,'
4738 ||' mcd.creation_date,'
4739 ||' mcd.created_by, '
4740 ||' mcd.last_update_login, '
4741 ||' mcd.request_id , '
4742 ||' mcd.program_application_id, '
4743 ||' mcd.program_id , '
4744 ||' mcd.program_update_date '
4745 ||' FROM msc_period_start_dates mps,'
4746 ||' msc_calendar_dates mcd,'
4747 ||' msc_cal_week_start_dates mcws'
4748 ||' WHERE mcd.sr_instance_id = :p_instance_id'
4749 ||' AND mcd.calendar_code = :p_calendar_code'
4750 ||' AND mcd.seq_num IS NOT NULL'
4751 ||' AND mcd.exception_set_id = -1'
4752 ||' AND mcws.calendar_code = mcd.calendar_code'
4753 ||' AND mcws.sr_instance_id = mcd.sr_instance_id'
4754 ||' AND mcws.exception_set_id = mcd.exception_set_id'
4755 ||' AND mcd.calendar_date BETWEEN mcws.week_start_date '
4756 ||' AND DECODE(SIGN(mcws.next_date- mcws.week_start_date),1,'
4757 ||' (mcws.next_date-1),'||'NULL'||')'
4758 ||' AND mps.calendar_code = mcd.calendar_code'
4759 ||' AND mps.sr_instance_id = mcd.sr_instance_id'
4760 ||' AND mps.exception_set_id = mcd.exception_set_id'
4761 ||' AND mcd.calendar_date BETWEEN mps.period_start_date '
4762 ||' AND DECODE(SIGN(mps.next_date- mps.period_start_date),1,'
4763 ||' (mps.next_date-1),'||'NULL'||')' ;
4764
4765 IF lv_debug THEN
4766 msc_st_util.log_message(lv_sql_stmt);
4767 END IF;
4768 EXECUTE IMMEDIATE lv_sql_stmt
4769 USING p_instance_id,
4770 p_calendar_code;
4771
4772 IF lv_debug THEN
4773 OPEN C;
4774 FETCH C into lv_cal_end_date,lv_cal_start_date;
4775 msc_st_util.log_message('The Year Start Date is '||lv_cal_start_date||' and the Year End Date is '||lv_cal_end_date||' for the calendar with calendar code '||p_calendar_code);
4776 CLOSE C;
4777 END IF;
4778
4779 EXCEPTION
4780 WHEN OTHERS THEN
4781 ROLLBACK;
4782
4783 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_MFG_TIME '||'('
4784 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
4785 msc_st_util.log_message(lv_error_text);
4786 ERRBUF := lv_error_text;
4787 RETCODE := G_WARNING;
4788
4789 END LOAD_MFG_TIME;
4790
4791 /*==========================================================================+
4792 | DESCRIPTION : This function performs the validation and loads the data |
4793 | for business object fiscal calendar |
4794 +==========================================================================*/
4795
4796 PROCEDURE LOAD_FISCAL_TIME (ERRBUF OUT NOCOPY VARCHAR,
4797 RETCODE OUT NOCOPY NUMBER,
4798 p_instance_code IN VARCHAR,
4799 p_instance_id IN NUMBER)
4800 IS
4801 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
4802 TYPE Fiscal_Month_Cursor IS REF CURSOR;
4803 Fiscal_Month_Cur Fiscal_Month_Cursor ;
4804
4805 lb_rowid RowidTab;
4806 lv_sql_stmt VARCHAR2(4000);
4807 lv_batch_id msd_st_time.batch_id%TYPE;
4808 lv_message_text msc_errors.error_text%TYPE;
4809 lv_error_text VARCHAR2(250);
4810 lv_from_date DATE ;
4811 lv_to_date DATE ;
4812 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
4813 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
4814 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
4815 lv_current_date DATE := msc_cl_pre_process.v_current_date;
4816 lv_return NUMBER := 0;
4817 lv_calendar_code varchar2(15);
4818 lv_SEQ_NUM NUMBER;
4819 lv_YEAR VARCHAR2(15);
4820 lv_YEAR_DESCRIPTION VARCHAR2(15);
4821 lv_YEAR_START_DATE DATE;
4822 lv_YEAR_END_DATE DATE;
4823 lv_QUARTER VARCHAR2(15);
4824 lv_QUARTER_DESCRIPTION VARCHAR2(15);
4825 lv_QUARTER_START_DATE DATE;
4826 lv_QUARTER_END_DATE DATE;
4827 lv_MONTH VARCHAR2(15);
4828 lv_MONTH_DESCRIPTION VARCHAR2(15);
4829 lv_MONTH_START_DATE DATE;
4830 lv_MONTH_END_DATE DATE;
4831 lv_instance_code VARCHAR2(3);
4832
4833 ex_logging_err EXCEPTION;
4834 lv_column_names VARCHAR2(5000);
4835
4836 CURSOR c1(p_batch_id NUMBER)IS
4837 SELECT rowid
4838 FROM msd_st_time
4839 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
4840 AND calendar_type = G_FISCAL_CAL
4841 AND sr_instance_code = p_instance_code
4842 AND batch_id = p_batch_id;
4843
4844 CURSOR c2 IS
4845 SELECT distinct calendar_code FROM msd_st_time
4846 WHERE calendar_type = G_FISCAL_CAL
4847 AND instance = p_instance_id
4848 AND process_flag = G_VALID;
4849
4850 BEGIN
4851
4852 lv_instance_code := p_instance_code;
4853
4854 lv_column_names :=
4855 ' SR_INSTANCE_CODE ||''~''||'
4856 ||' CALENDAR_CODE ||''~''||'
4857 ||' YEAR ||''~''||'
4858 ||' YEAR_DESCRIPTION ||''~''||'
4859 ||' YEAR_START_DATE ||''~''||'
4860 ||' YEAR_END_DATE ||''~''||'
4861 ||' QUARTER ||''~''||'
4862 ||' QUARTER_DESCRIPTION ||''~''||'
4863 ||' QUARTER_START_DATE ||''~''||'
4864 ||' QUARTER_END_DATE ||''~''||'
4865 ||' MONTH ||''~''||'
4866 ||' MONTH_DESCRIPTION ||''~''||'
4867 ||' MONTH_START_DATE ||''~''||'
4868 ||' MONTH_END_DATE ';
4869
4870 -- Check for the valid calendar_type - 3 or 4 (G_FISCAL_CAL or G_COMPOSITE_CAL).
4871
4872 -- set the message
4873
4874 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4875 (p_app_short_name => 'MSC',
4876 p_error_code => 'MSC_PP_INVALID_VALUE',
4877 p_message_text => lv_message_text,
4878 p_error_text => lv_error_text,
4879 p_token1 => 'COLUMN_NAME',
4880 p_token_value1 => 'CALENDAR_TYPE');
4881
4882 IF lv_return <> 0 THEN
4883 RAISE ex_logging_err;
4884 END IF;
4885
4886 v_sql_stmt := 05;
4887 lv_sql_stmt :=
4888 'UPDATE msd_st_time'
4889 ||' SET process_flag = '||G_ERROR_FLG||','
4890 ||' error_text = '||''''||lv_message_text||''''
4891 ||' WHERE calendar_type not in ('||G_COMPOSITE_CAL||','||G_FISCAL_CAL||')'
4892 ||' AND process_flag = '||G_IN_PROCESS
4893 ||' AND sr_instance_code = :p_instance_code';
4894
4895 IF lv_debug THEN
4896 msc_st_util.log_message(lv_sql_stmt);
4897 END IF;
4898 EXECUTE IMMEDIATE lv_sql_stmt
4899 USING p_instance_code;
4900
4901
4902
4903 -- Dividing records in batches based on batchsize
4904 LOOP
4905 v_sql_stmt := 02;
4906 SELECT msd_st_batch_id_s.NEXTVAL
4907 INTO lv_batch_id
4908 FROM DUAL;
4909
4910 v_sql_stmt := 03;
4911
4912 lv_sql_stmt :=
4913 'UPDATE msd_st_time'
4914 ||' SET batch_id = :lv_batch_id '
4915 ||' WHERE process_flag IN ('||G_IN_PROCESS||','||G_ERROR_FLG||')'
4916 ||' AND sr_instance_code = :lv_instance_code'
4917 ||' AND calendar_type ='||G_FISCAL_CAL
4918 ||' AND NVL(batch_id,'||NULL_VALUE||') = '||NULL_VALUE
4919 ||' AND rownum <= '||lv_batch_size;
4920
4921 IF lv_debug THEN
4922 msc_st_util.log_message(lv_sql_stmt);
4923 END IF;
4924
4925 EXECUTE IMMEDIATE lv_sql_stmt
4926 USING lv_batch_id,
4927 p_instance_code;
4928
4929 EXIT WHEN SQL%NOTFOUND ;
4930
4931 OPEN c1(lv_batch_id);
4932 FETCH c1 BULK COLLECT INTO lb_rowid;
4933 CLOSE c1;
4934
4935 v_sql_stmt := 04;
4936 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
4937 UPDATE msd_st_time
4938 SET st_transaction_id = msd_st_time_s.NEXTVAL,
4939 last_update_date = lv_current_date,
4940 last_updated_by = lv_current_user,
4941 creation_date = lv_current_date,
4942 created_by = lv_current_user
4943 WHERE rowid = lb_rowid(j);
4944
4945
4946
4947 -- set the message
4948
4949 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
4950 (p_app_short_name => 'MSC',
4951 p_error_code => 'MSC_PP_COL_VAL_NULL',
4952 p_message_text => lv_message_text,
4953 p_error_text => lv_error_text,
4954 p_token1 => 'COLUMN_NAME',
4955 p_token_value1 => 'YEAR OR '
4956 ||'YEAR_DESCRIPTION OR '
4957 ||'YEAR_START_DATE OR '
4958 ||'YEAR_END_DATE OR '
4959 ||'QUARTER OR '
4960 ||'QUARTER_DESCRIPTION OR '
4961 ||'QUARTER_START_DATE OR '
4962 ||'QUARTER_END_DATE OR '
4963 ||'MONTH OR '
4964 ||'MONTH_DESCRIPTION OR '
4965 ||'MONTH_ START DATE OR '
4966 ||'MONTH END DATE ');
4967
4968 IF lv_return <> 0 THEN
4969 RAISE ex_logging_err;
4970 END IF;
4971
4972 -- Error out the records if any of the details regarding Month, Year or
4973 -- Date is not provided.
4974
4975 v_sql_stmt := 06;
4976 lv_sql_stmt :=
4977 'UPDATE msd_st_time'
4978 ||' SET process_flag = '||G_ERROR_FLG||','
4979 ||' error_text = '||''''||lv_message_text||''''
4980 ||' WHERE calendar_type = '||G_FISCAL_CAL
4981 ||' AND ( year IS NULL'
4982 ||' OR year_description IS NULL'
4983 ||' OR year_start_date IS NULL'
4984 ||' OR year_end_date IS NULL'
4985 ||' OR quarter IS NULL'
4986 ||' OR quarter_description IS NULL'
4987 ||' OR quarter_start_date IS NULL'
4988 ||' OR quarter_end_date IS NULL'
4989 ||' OR month IS NULL'
4990 ||' OR month_description IS NULL'
4991 ||' OR month_start_date IS NULL'
4992 ||' OR month_end_date IS NULL)'
4993 ||' AND process_flag = '||G_IN_PROCESS
4994 ||' AND batch_id = :lv_batch_id'
4995 ||' AND sr_instance_code = :p_instance_code';
4996
4997 IF lv_debug THEN
4998 msc_st_util.log_message(lv_sql_stmt);
4999 END IF;
5000
5001 EXECUTE IMMEDIATE lv_sql_stmt
5002 USING lv_batch_id,
5003 p_instance_code;
5004
5005 -- set the message
5006
5007 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
5008 (p_app_short_name => 'MSC',
5009 p_error_code => 'MSC_PP_END_GT_ST_DATE',
5010 p_message_text => lv_message_text,
5011 p_error_text => lv_error_text );
5012
5013
5014 IF lv_return <> 0 THEN
5015 RAISE ex_logging_err;
5016 END IF;
5017
5018 -- All the start date should be less than end date
5019
5020 v_sql_stmt := 07;
5021 lv_sql_stmt :=
5022 'UPDATE msd_st_time'
5023 ||' SET process_flag = '||G_ERROR_FLG||','
5024 ||' error_text = '||''''||lv_message_text||''''
5025 ||' WHERE calendar_type = '||G_FISCAL_CAL
5026 ||' AND (year_start_date >= year_end_date'
5027 ||' OR quarter_start_date >= quarter_end_date'
5028 ||' OR month_start_date >= month_end_date)'
5029 ||' AND process_flag = '||G_IN_PROCESS
5030 ||' AND batch_id = :lv_batch_id'
5031 ||' AND sr_instance_code = :p_instance_code';
5032
5033 IF lv_debug THEN
5034 msc_st_util.log_message(lv_sql_stmt);
5035 END IF;
5036 EXECUTE IMMEDIATE lv_sql_stmt
5037 USING lv_batch_id,
5038 p_instance_code;
5039
5040 --Call to customised validation.
5041 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
5042 (ERRBUF => lv_error_text,
5043 RETCODE => lv_return,
5044 pBatchID => lv_batch_id,
5045 pInstanceCode => p_instance_code,
5046 pEntityName => 'MSD_ST_TIME',
5047 pInstanceID => p_instance_id);
5048
5049 IF NVL(lv_return,0) <> 0 THEN
5050 RAISE ex_logging_err;
5051 END IF;
5052 -- Set the process flag as Valid and populate instance_id
5053 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
5054 (p_table_name => 'MSD_ST_TIME',
5055 p_instance_id => p_instance_id,
5056 p_instance_code => p_instance_code,
5057 p_process_flag => G_VALID,
5058 p_error_text => lv_error_text,
5059 p_batch_id => lv_batch_id,
5060 p_instance_id_col=> 'INSTANCE');
5061
5062 IF lv_return <> 0 THEN
5063 RAISE ex_logging_err;
5064 END IF;
5065
5066 -- Inserting all the errored out records into MSC_ERRORS:
5067
5068 lv_return := MSC_ST_UTIL.LOG_ERROR
5069 (p_table_name => 'MSD_ST_TIME',
5070 p_instance_code => p_instance_code,
5071 p_row => lv_column_names,
5072 p_severity => G_SEV_ERROR,
5073 p_error_text => lv_error_text,
5074 p_message_text => NULL,
5075 p_batch_id => lv_batch_id);
5076
5077 IF(lv_return <> 0) THEN
5078 RAISE ex_logging_err;
5079 END IF;
5080 COMMIT;
5081
5082 END LOOP;
5083
5084
5085 FOR rec1 in c2
5086
5087 LOOP
5088
5089 v_sql_stmt := 08;
5090 lv_sql_stmt :=
5091 ' SELECT min(year_start_date),'
5092 ||' max(year_end_date)'
5093 ||' FROM msd_st_time'
5094 ||' WHERE calendar_code = :calendar_code'
5095 ||' AND calendar_type ='||G_FISCAL_CAL
5096 ||' AND instance = '||p_instance_id ;
5097
5098
5099 IF lv_debug THEN
5100 msc_st_util.log_message(lv_sql_stmt);
5101 END IF;
5102
5103 EXECUTE IMMEDIATE lv_sql_stmt
5104 INTO lv_from_date,
5105 lv_to_date
5106 USING rec1.calendar_code;
5107
5108
5109 IF lv_debug THEN
5110 msc_st_util.log_message( 'calendar'||rec1.calendar_code);
5111 msc_st_util.log_message('FROM DATE'||lv_from_date);
5112 msc_st_util.log_message('TO DATE '||lv_to_date);
5113 END IF;
5114
5115
5116 v_sql_stmt := 08;
5117 lv_sql_stmt := 'SELECT ' ||
5118 ' calendar_code, ' ||
5119 ' year, ' ||
5120 ' year_description, ' ||
5121 ' year_start_date, ' ||
5122 ' year_end_date, ' ||
5123 ' quarter, ' ||
5124 ' quarter_description, ' ||
5125 ' quarter_start_date, ' ||
5126 ' quarter_end_date, ' ||
5127 ' month, ' ||
5128 ' month_description, ' ||
5129 ' month_start_Date, ' ||
5130 ' month_end_date ' ||
5131 ' from msd_st_time' ||
5132 ' where calendar_code = NVL(''' ||rec1.calendar_code || ''', calendar_code)'||
5133 ' and calendar_type='||G_FISCAL_CAL||
5134 ' and instance= '||p_instance_id||
5135 ' order by month_start_date';
5136
5137 IF lv_debug THEN
5138 msc_st_util.log_message(lv_sql_stmt);
5139 END IF;
5140
5141 OPEN Fiscal_Month_Cur FOR lv_sql_stmt ;
5142
5143 LOOP
5144 FETCH Fiscal_Month_Cur
5145 INTO lv_calendar_code,
5146 lv_YEAR,
5147 lv_YEAR_DESCRIPTION,
5148 lv_YEAR_START_DATE,
5149 lv_YEAR_END_DATE,
5150 lv_QUARTER,
5151 lv_QUARTER_DESCRIPTION,
5152 lv_QUARTER_START_DATE,
5153 lv_QUARTER_END_DATE,
5154 lv_MONTH,
5155 lv_MONTH_DESCRIPTION,
5156 lv_MONTH_START_DATE,
5157 lv_MONTH_END_DATE;
5158
5159 EXIT WHEN Fiscal_Month_Cur%NOTFOUND;
5160
5161 MSD_TRANSLATE_TIME_DATA.Explode_Fiscal_Dates( errbuf => errbuf,
5162 retcode => retcode,
5163 p_dest_table => 'MSD_ST_TIME',
5164 p_instance_id => p_instance_id,
5165 p_calendar_type_id => G_FISCAL_CAL,
5166 p_calendar_code => lv_calendar_code,
5167 p_seq_num => null,
5168 p_year => lv_year,
5169 p_year_description => lv_year_description,
5170 p_year_start_date => lv_year_start_date,
5171 p_year_end_date => lv_year_end_date,
5172 p_quarter => lv_quarter,
5173 p_quarter_description => lv_quarter_description,
5174 p_quarter_start_date => lv_quarter_start_date,
5175 p_quarter_end_date => lv_quarter_end_date,
5176 p_month => lv_month,
5177 p_month_description => lv_month_description,
5178 p_month_start_date => lv_month_start_date,
5179 p_month_end_date => lv_month_end_date,
5180 p_from_date => lv_from_date,
5181 p_to_date => lv_to_date );
5182
5183 END LOOP ;
5184 CLOSE Fiscal_Month_Cur;
5185
5186 v_sql_stmt := 09;
5187 lv_sql_stmt:=
5188 ' DELETE from MSD_ST_TIME '
5189 ||' WHERE calendar_code = :calendar_code'
5190 ||' AND process_flag = '||G_VALID
5191 ||' AND calendar_type = '||G_FISCAL_CAL
5192 ||' AND sr_instance_code = :lv_instance_code ';
5193
5194 IF lv_debug THEN
5195 msc_st_util.log_message(lv_sql_stmt);
5196 END IF;
5197 EXECUTE IMMEDIATE lv_sql_stmt
5198 USING rec1.calendar_code,
5199 p_instance_code;
5200 COMMIT;
5201 END LOOP ;
5202
5203
5204 EXCEPTION
5205 WHEN ex_logging_err THEN
5206 ROLLBACK;
5207
5208 ERRBUF := lv_error_text;
5209 RETCODE := G_WARNING;
5210 msc_st_util.log_message(lv_error_text);
5211
5212 WHEN OTHERS THEN
5213 ROLLBACK;
5214
5215 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_FISCAL_TIME '||'('
5216 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
5217 msc_st_util.log_message(lv_error_text);
5218 ERRBUF := lv_error_text;
5219 RETCODE := G_WARNING;
5220
5221 END LOAD_FISCAL_TIME ;
5222
5223
5224 /*==========================================================================+
5225 | DESCRIPTION : This function performs the validation and loads the data |
5226 | for business object composite calendar |
5227 +==========================================================================*/
5228
5229 PROCEDURE LOAD_COMPOSITE_TIME (ERRBUF OUT NOCOPY VARCHAR,
5230 RETCODE OUT NOCOPY NUMBER,
5231 p_instance_code IN VARCHAR,
5232 p_instance_id IN NUMBER )
5233 IS
5234
5235 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
5236 TYPE Composite_Week_Cursor IS REF CURSOR;
5237 Composite_Week_Cur Composite_Week_Cursor ;
5238
5239 lb_rowid RowidTab;
5240 lv_sql_stmt VARCHAR2(4000);
5241 lv_batch_id msd_st_time.batch_id%TYPE;
5242 lv_message_text msc_errors.error_text%TYPE;
5243 lv_error_text VARCHAR2(250);
5244 lv_from_date DATE ;
5245 lv_to_date DATE ;
5246 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
5247 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
5248 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
5249 lv_current_date DATE := msc_cl_pre_process.v_current_date;
5250 lv_return NUMBER := 0;
5251
5252 lv_calendar_code varchar2(15);
5253 lv_SEQ_NUM NUMBER;
5254 lv_YEAR VARCHAR2(15);
5255 lv_YEAR_DESCRIPTION VARCHAR2(15);
5256 lv_YEAR_START_DATE DATE;
5257 lv_YEAR_END_DATE DATE;
5258 lv_QUARTER VARCHAR2(15);
5259 lv_QUARTER_DESCRIPTION VARCHAR2(15);
5260 lv_QUARTER_START_DATE DATE;
5261 lv_QUARTER_END_DATE DATE;
5262 lv_MONTH VARCHAR2(15);
5263 lv_MONTH_DESCRIPTION VARCHAR2(15);
5264 lv_MONTH_START_DATE DATE;
5265 lv_MONTH_END_DATE DATE;
5266 lv_WEEK VARCHAR2(15);
5267 lv_WEEK_DESCRIPTION VARCHAR2(15);
5268 lv_WEEK_START_DATE DATE;
5269 lv_WEEK_END_DATE DATE;
5270 lv_DAY DATE;
5271 lv_DAY_DESCRIPTION VARCHAR2(15);
5272 lv_instance_code VARCHAR2(3);
5273
5274 ex_logging_err EXCEPTION;
5275 lv_column_names VARCHAR2(5000);
5276
5277 CURSOR c1(p_batch_id NUMBER)IS
5278 SELECT rowid
5279 FROM msd_st_time
5280 WHERE process_flag IN (G_IN_PROCESS)
5281 AND calendar_type = G_COMPOSITE_CAL
5282 AND sr_instance_code = p_instance_code
5283 AND batch_id = p_batch_id;
5284
5285 CURSOR c2 IS
5286 SELECT distinct calendar_code FROM msd_st_time
5287 WHERE calendar_type = G_COMPOSITE_CAL
5288 AND instance = p_instance_id
5289 AND process_flag = G_VALID;
5290
5291 BEGIN
5292
5293 lv_instance_code := p_instance_code;
5294
5295 lv_column_names :=
5296 ' INSTANCE ||''~''||'
5297 ||' CALENDAR_CODE ||''~''||'
5298 ||' YEAR ||''~''||'
5299 ||' YEAR_DESCRIPTION ||''~''||'
5300 ||' YEAR_START_DATE ||''~''||'
5301 ||' YEAR_END_DATE ||''~''||'
5302 ||' QUARTER ||''~''||'
5303 ||' QUARTER_DESCRIPTION ||''~''||'
5304 ||' QUARTER_START_DATE ||''~''||'
5305 ||' QUARTER_END_DATE ||''~''||'
5306 ||' MONTH ||''~''||'
5307 ||' MONTH_DESCRIPTION ||''~''||'
5308 ||' MONTH_START_DATE ||''~''||'
5309 ||' MONTH_END_DATE ||''~''||'
5310 ||' WEEK ||''~''||'
5311 ||' WEEK_DESCRIPTION ||''~''||'
5312 ||' WEEK_START_DATE ||''~''||'
5313 ||' WEEK_END_DATE ||''~''||'
5314 ||' DAY ||''~''||'
5315 ||' DAY_DESCRIPTION ';
5316
5317
5318 -- Check for the valid calendar_type value - 3 or 4 ( G_FISCAL_CAL ,G_COMPOSITE_CAL).
5319
5320 -- set the message
5321
5322 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
5323 (p_app_short_name => 'MSC',
5324 p_error_code => 'MSC_PP_INVALID_VALUE',
5325 p_message_text => lv_message_text,
5326 p_error_text => lv_error_text,
5327 p_token1 => 'COLUMN_NAME',
5328 p_token_value1 => 'CALENDAR_TYPE');
5329
5330 IF lv_return <> 0 THEN
5331 RAISE ex_logging_err;
5332 END IF;
5333
5334 v_sql_stmt := 01;
5335 lv_sql_stmt :=
5336 'UPDATE msd_st_time'
5337 ||' SET process_flag = '||G_ERROR_FLG||','
5338 ||' error_text = '||''''||lv_message_text||''''
5339 ||' WHERE calendar_type not in ('||G_COMPOSITE_CAL||','||G_FISCAL_CAL||')'
5340 ||' AND process_flag = '||G_IN_PROCESS
5341 ||' AND sr_instance_code = :p_instance_code';
5342
5343 IF lv_debug THEN
5344 msc_st_util.log_message(lv_sql_stmt);
5345 END IF;
5346 EXECUTE IMMEDIATE lv_sql_stmt
5347 USING p_instance_code;
5348
5349
5350 -- Dividing records in batches based on batchsize
5351 LOOP
5352 v_sql_stmt := 02;
5353 SELECT msd_st_batch_id_s.NEXTVAL
5354 INTO lv_batch_id
5355 FROM DUAL;
5356
5357 v_sql_stmt := 03;
5358
5359 lv_sql_stmt :=
5360 'UPDATE msd_st_time'
5361 ||' SET batch_id = :lv_batch_id '
5362 ||' WHERE process_flag IN ('||G_IN_PROCESS||')'
5363 ||' AND sr_instance_code = :lv_instance_code'
5364 ||' AND calendar_type ='||G_COMPOSITE_CAL
5365 ||' AND NVL(batch_id,'||NULL_VALUE||') = '||NULL_VALUE
5366 ||' AND rownum <= '||lv_batch_size;
5367
5368 IF lv_debug THEN
5369 msc_st_util.log_message(lv_sql_stmt);
5370 END IF;
5371
5372 EXECUTE IMMEDIATE lv_sql_stmt
5373 USING lv_batch_id,
5374 p_instance_code;
5375
5376 EXIT WHEN SQL%NOTFOUND ;
5377
5378 OPEN c1(lv_batch_id);
5379 FETCH c1 BULK COLLECT INTO lb_rowid;
5380 CLOSE c1;
5381
5382 v_sql_stmt := 04;
5383 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
5384 UPDATE msd_st_time
5385 SET st_transaction_id = msd_st_time_s.NEXTVAL,
5386 last_update_date = lv_current_date,
5387 last_updated_by = lv_current_user,
5388 creation_date = lv_current_date,
5389 created_by = lv_current_user
5390 WHERE rowid = lb_rowid(j);
5391
5392
5393
5394 -- set the message
5395
5396 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
5397 (p_app_short_name => 'MSC',
5398 p_error_code => 'MSC_PP_COL_VAL_NULL',
5399 p_message_text => lv_message_text,
5400 p_error_text => lv_error_text,
5401 p_token1 => 'COLUMN_NAME',
5402 p_token_value1 => 'YEAR OR '
5403 ||'YEAR_DESCRIPTION OR '
5404 ||'YEAR_START_DATE OR '
5405 ||'YEAR_END_DATE OR '
5406 ||'QUARTER OR '
5407 ||'QUARTER_DESCRIPTION OR '
5408 ||'QUARTER_START_DATE OR '
5409 ||'QUARTER_END_DATE OR '
5410 ||'MONTH OR '
5411 ||'MONTH_DESCRIPTION OR '
5412 ||'MONTH_ START DATE OR '
5413 ||'MONTH END DATE OR '
5414 ||'WEEK OR '
5415 ||'WEEK_DESCRIPTION OR '
5416 ||'WEEK_START_DATE OR '
5417 ||'WEEK_END_DATE ');
5418
5419
5420
5421 IF lv_return <> 0 THEN
5422 RAISE ex_logging_err;
5423 END IF;
5424
5425 -- Error out the records if any of the details regarding Week, Quarter, Month, Year or
5426 -- Date is not provided.
5427
5428 v_sql_stmt := 05;
5429 lv_sql_stmt :=
5430 'UPDATE msd_st_time'
5431 ||' SET process_flag = '||G_ERROR_FLG||','
5432 ||' error_text = '||''''||lv_message_text||''''
5433 ||' WHERE calendar_type = '||G_COMPOSITE_CAL
5434 ||' AND ( year IS NULL'
5435 ||' OR year_description IS NULL'
5436 ||' OR year_start_date IS NULL'
5437 ||' OR year_end_date IS NULL'
5438 ||' OR quarter IS NULL'
5439 ||' OR quarter_description IS NULL'
5440 ||' OR quarter_start_date IS NULL'
5441 ||' OR quarter_end_date IS NULL'
5442 ||' OR month IS NULL'
5443 ||' OR month_description IS NULL'
5444 ||' OR month_start_date IS NULL'
5445 ||' OR month_end_date IS NULL'
5446 ||' OR week IS NULL'
5447 ||' OR week_description IS NULL'
5448 ||' OR week_start_date IS NULL'
5449 ||' OR week_end_date IS NULL )'
5450 ||' AND process_flag = '||G_IN_PROCESS
5451 ||' AND batch_id = :lv_batch_id'
5452 ||' AND sr_instance_code = :p_instance_code';
5453
5454 IF lv_debug THEN
5455 msc_st_util.log_message(lv_sql_stmt);
5456 END IF;
5457
5458 EXECUTE IMMEDIATE lv_sql_stmt
5459 USING lv_batch_id,
5460 p_instance_code;
5461
5462
5463
5464
5465
5466 -- set the message
5467
5468 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
5469 (p_app_short_name => 'MSC',
5470 p_error_code => 'MSC_PP_END_GT_ST_DATE',
5471 p_message_text => lv_message_text,
5472 p_error_text => lv_error_text );
5473
5474
5475 IF lv_return <> 0 THEN
5476 RAISE ex_logging_err;
5477 END IF;
5478
5479 -- All the start date should be less than end date
5480
5481 v_sql_stmt := 06;
5482 lv_sql_stmt :=
5483 'UPDATE msd_st_time'
5484 ||' SET process_flag = '||G_ERROR_FLG||','
5485 ||' error_text = '||''''||lv_message_text||''''
5486 ||' WHERE calendar_type = '||G_COMPOSITE_CAL
5487 ||' AND (year_start_date > year_end_date'
5488 ||' OR quarter_start_date > quarter_end_date'
5489 ||' OR month_start_date > month_end_date'
5490 ||' OR week_start_date > week_end_date)'
5491 ||' AND process_flag = '||G_IN_PROCESS
5492 ||' AND batch_id = :lv_batch_id'
5493 ||' AND sr_instance_code = :p_instance_code';
5494
5495 IF lv_debug THEN
5496 msc_st_util.log_message(lv_sql_stmt);
5497 END IF;
5498 EXECUTE IMMEDIATE lv_sql_stmt
5499 USING lv_batch_id,
5500 p_instance_code;
5501
5502
5503
5504
5505 --Call to customised validation.
5506 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
5507 (ERRBUF => lv_error_text,
5508 RETCODE => lv_return,
5509 pBatchID => lv_batch_id,
5510 pInstanceCode => p_instance_code,
5511 pEntityName => 'MSD_ST_TIME',
5512 pInstanceID => p_instance_id);
5513
5514 IF NVL(lv_return,0) <> 0 THEN
5515 RAISE ex_logging_err;
5516 END IF;
5517
5518
5519
5520 -- Set the process flag as Valid and populate instance_id
5521 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
5522 (p_table_name => 'MSD_ST_TIME',
5523 p_instance_id => p_instance_id,
5524 p_instance_code => p_instance_code,
5525 p_process_flag => G_VALID,
5526 p_error_text => lv_error_text,
5527 p_batch_id => lv_batch_id,
5528 p_instance_id_col=> 'INSTANCE');
5529
5530 IF lv_return <> 0 THEN
5531 RAISE ex_logging_err;
5532 END IF;
5533
5534
5535
5536 -- Inserting all the errored out records into MSC_ERRORS:
5537
5538 lv_return := MSC_ST_UTIL.LOG_ERROR
5539 (p_table_name => 'MSD_ST_TIME',
5540 p_instance_code => p_instance_code,
5541 p_row => lv_column_names,
5542 p_severity => G_SEV_ERROR,
5543 p_error_text => lv_error_text,
5544 p_message_text => NULL,
5545 p_batch_id => lv_batch_id);
5546
5547 IF(lv_return <> 0) THEN
5548 RAISE ex_logging_err;
5549 END IF;
5550 COMMIT;
5551
5552 END LOOP;
5553
5554
5555 FOR rec1 in c2
5556
5557 LOOP
5558
5559 v_sql_stmt := 08;
5560 lv_sql_stmt :=
5561 ' SELECT min(year_start_date),'
5562 ||' max(year_end_date)'
5563 ||' FROM msd_st_time'
5564 ||' WHERE calendar_code = :calendar_code'
5565 ||' AND calendar_type ='||G_COMPOSITE_CAL
5566 ||' AND instance = '||p_instance_id ;
5567
5568
5569 IF lv_debug THEN
5570 msc_st_util.log_message(lv_sql_stmt);
5571 END IF;
5572
5573 EXECUTE IMMEDIATE lv_sql_stmt
5574 INTO lv_from_date,
5575 lv_to_date
5576 USING rec1.calendar_code;
5577
5578
5579 IF lv_debug THEN
5580 msc_st_util.log_message( 'calendar'||rec1.calendar_code);
5581 msc_st_util.log_message('FROM DATE'||lv_from_date);
5582 msc_st_util.log_message('TO DATE '||lv_to_date);
5583 END IF;
5584
5585
5586 v_sql_stmt := 08;
5587 lv_sql_stmt := 'SELECT ' ||
5588 ' calendar_code, ' ||
5589 ' year, ' ||
5590 ' year_description, ' ||
5591 ' year_start_date, ' ||
5592 ' year_end_date, ' ||
5593 ' quarter, ' ||
5594 ' quarter_description, ' ||
5595 ' quarter_start_date, ' ||
5596 ' quarter_end_date, ' ||
5597 ' month, ' ||
5598 ' month_description, ' ||
5599 ' month_start_Date, ' ||
5600 ' month_end_date, ' ||
5601 ' week, '||
5602 ' week_description, '||
5603 ' week_start_date, '||
5604 ' week_end_date ' ||
5605 ' from msd_st_time' ||
5606 ' where calendar_code = NVL(''' ||rec1.calendar_code || ''', calendar_code)'||
5607 ' and calendar_type='||G_COMPOSITE_CAL ||
5608 ' and instance= '||p_instance_id||
5609 ' order by week_start_date';
5610
5611 IF lv_debug THEN
5612 msc_st_util.log_message(lv_sql_stmt);
5613 END IF;
5614
5615 OPEN Composite_Week_Cur FOR lv_sql_stmt ;
5616
5617 LOOP
5618 FETCH Composite_Week_Cur
5619 INTO lv_calendar_code,
5620 lv_YEAR,
5621 lv_YEAR_DESCRIPTION,
5622 lv_YEAR_START_DATE,
5623 lv_YEAR_END_DATE,
5624 lv_QUARTER,
5625 lv_QUARTER_DESCRIPTION,
5626 lv_QUARTER_START_DATE,
5627 lv_QUARTER_END_DATE,
5628 lv_MONTH,
5629 lv_MONTH_DESCRIPTION,
5630 lv_MONTH_START_DATE,
5631 lv_MONTH_END_DATE,
5632 lv_WEEK,
5633 lv_WEEK_DESCRIPTION,
5634 lv_WEEK_START_DATE,
5635 lv_WEEK_END_DATE;
5636
5637 EXIT WHEN Composite_Week_Cur%NOTFOUND;
5638
5639 MSC_ST_UTIL.Explode_Composite_Dates( errbuf => errbuf,
5640 retcode => retcode,
5641 p_dest_table => 'MSD_ST_TIME',
5642 p_instance_id => p_instance_id,
5643 p_calendar_type_id => G_COMPOSITE_CAL,
5644 p_calendar_code => lv_calendar_code,
5645 p_seq_num => null,
5646 p_year => lv_year,
5647 p_year_description => lv_year_description,
5648 p_year_start_date => lv_year_start_date,
5649 p_year_end_date => lv_year_end_date,
5650 p_quarter => lv_quarter,
5651 p_quarter_description => lv_quarter_description,
5652 p_quarter_start_date => lv_quarter_start_date,
5653 p_quarter_end_date => lv_quarter_end_date,
5654 p_month => lv_month,
5655 p_month_description => lv_month_description,
5656 p_month_start_date => lv_month_start_date,
5657 p_month_end_date => lv_month_end_date,
5658 p_week => lv_week,
5659 p_week_description => lv_week_description,
5660 p_week_start_date => lv_week_start_date,
5661 p_week_end_date => lv_week_end_date);
5662
5663
5664 END LOOP ;
5665 CLOSE Composite_Week_Cur;
5666
5667 v_sql_stmt := 09;
5668 lv_sql_stmt:=
5669 ' DELETE from MSD_ST_TIME '
5670 ||' WHERE calendar_code = :calendar_code'
5671 ||' AND process_flag = '||G_VALID
5672 ||' AND calendar_type = '||G_COMPOSITE_CAL
5673 ||' AND sr_instance_code = :lv_instance_code ';
5674
5675 IF lv_debug THEN
5676 msc_st_util.log_message(lv_sql_stmt);
5677 END IF;
5678 EXECUTE IMMEDIATE lv_sql_stmt
5679 USING rec1.calendar_code,
5680 p_instance_code;
5681 COMMIT;
5682 END LOOP ;
5683
5684
5685 EXCEPTION
5686 WHEN ex_logging_err THEN
5687 ROLLBACK;
5688
5689 ERRBUF := lv_error_text;
5690 RETCODE := G_WARNING;
5691 msc_st_util.log_message(lv_error_text);
5692
5693 WHEN OTHERS THEN
5694 ROLLBACK;
5695
5696 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_COMPOSITE_TIME '||'('
5697 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
5698 msc_st_util.log_message(lv_error_text);
5699 ERRBUF := lv_error_text;
5700 RETCODE := G_WARNING;
5701
5702 END LOAD_COMPOSITE_TIME ;
5703
5704
5705
5706 /*==========================================================================+
5707 | DESCRIPTION : This function performs the validation and loads the data |
5708 | for business object currency conversion |
5709 +==========================================================================*/
5710
5711 PROCEDURE LOAD_CURRENCY_CONV (ERRBUF OUT NOCOPY VARCHAR,
5712 RETCODE OUT NOCOPY NUMBER,
5713 p_instance_code IN VARCHAR,
5714 p_instance_id IN NUMBER,
5715 p_batch_id IN NUMBER)
5716
5717 IS
5718 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
5719 lb_rowid RowidTab;
5720 lv_sql_stmt VARCHAR2(4000);
5721 lv_batch_id msd_st_currency_conversions.batch_id%TYPE;
5722 lv_message_text msc_errors.error_text%TYPE;
5723 lv_error_text VARCHAR2(250);
5724 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
5725 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
5726 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
5727 lv_current_date DATE := msc_cl_pre_process.v_current_date;
5728 lv_return NUMBER := 0;
5729 ex_logging_err EXCEPTION;
5730 lv_column_names VARCHAR2(5000);
5731
5732 CURSOR c1(p_batch_id NUMBER)IS
5733 SELECT rowid
5734 FROM msd_st_currency_conversions
5735 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
5736 AND sr_instance_code = p_instance_code
5737 AND batch_id = p_batch_id;
5738
5739 BEGIN
5740
5741 lv_batch_id := p_batch_id;
5742
5743 lv_column_names :=
5744 ' SR_INSTANCE_CODE ||''~''||'
5745 ||' FROM_CURRENCY ||''~''||'
5746 ||' TO_CURRENCY ||''~''||'
5747 ||' CONVERSION_DATE ||''~''||'
5748 ||' CONVERSION_RATE ';
5749
5750 OPEN c1(lv_batch_id);
5751 FETCH c1 BULK COLLECT INTO lb_rowid;
5752 CLOSE c1;
5753
5754 v_sql_stmt := 04;
5755 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
5756 UPDATE msd_st_currency_conversions
5757 SET st_transaction_id = msd_st_currency_conversions_s.NEXTVAL,
5758 last_update_date = lv_current_date,
5759 last_updated_by = lv_current_user,
5760 creation_date = lv_current_date,
5761 created_by = lv_current_user
5762 WHERE rowid = lb_rowid(j);
5763
5764 -- set the message
5765
5766 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
5767 (p_app_short_name => 'MSC',
5768 p_error_code => 'MSC_PP_COL_VAL_NULL',
5769 p_message_text => lv_message_text,
5770 p_error_text => lv_error_text,
5771 p_token1 => 'COLUMN_NAME',
5772 p_token_value1 => 'FROM_CURRENCY OR'
5773 ||'TO_CURRENCY OR'
5774 ||'CONVERSION_DATE OR'
5775 ||'CONVERSION_RATE');
5776
5777 IF lv_return <> 0 THEN
5778 RAISE ex_logging_err;
5779 END IF;
5780
5781 -- error out if conversion rate, conversion dfate, from or to currency is null
5782 lv_sql_stmt :=
5783 'UPDATE msd_st_currency_conversions'
5784 ||' SET process_flag = '||G_ERROR_FLG||','
5785 ||' error_text = '||''''||lv_message_text||''''
5786 ||' WHERE (NVL(from_currency, '||''''||NULL_CHAR||''''||') '
5787 ||' = '||''''||NULL_CHAR||''''
5788 ||' OR NVL(to_currency, '||''''||NULL_CHAR||''''||') '
5789 ||' = '||''''||NULL_CHAR||''''
5790 ||' OR NVL(conversion_date,(sysdate-36500)) = (sysdate-36500)'
5791 ||' OR NVL(conversion_rate,'||NULL_VALUE||') = '||NULL_VALUE||')'
5792 ||' AND process_flag = '||G_IN_PROCESS
5793 ||' AND batch_id = :lv_batch_id'
5794 ||' AND sr_instance_code = :p_instance_code';
5795
5796 IF lv_debug THEN
5797 msc_st_util.log_message(lv_sql_stmt);
5798 END IF;
5799 EXECUTE IMMEDIATE lv_sql_stmt
5800 USING lv_batch_id,
5801 p_instance_code;
5802
5803 --Call to customised validation.
5804 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
5805 (ERRBUF => lv_error_text,
5806 RETCODE => lv_return,
5807 pBatchID => lv_batch_id,
5808 pInstanceCode => p_instance_code,
5809 pEntityName => 'MSD_ST_CURRENCY_CONVERSIONS',
5810 pInstanceID => p_instance_id);
5811
5812 IF NVL(lv_return,0) <> 0 THEN
5813 RAISE ex_logging_err;
5814 END IF;
5815
5816 -- Set the process flag as Valid and populate instance_id
5817 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
5818 (p_table_name => 'MSD_ST_CURRENCY_CONVERSIONS',
5819 p_instance_id => p_instance_id,
5820 p_instance_code => p_instance_code,
5821 p_process_flag => G_VALID,
5822 p_error_text => lv_error_text,
5823 p_batch_id => lv_batch_id,
5824 p_instance_id_col=> 'INSTANCE');
5825
5826 IF lv_return <> 0 THEN
5827 RAISE ex_logging_err;
5828 END IF;
5829
5830 -- Inserting all the errored out records into MSC_ERRORS:
5831
5832 lv_return := MSC_ST_UTIL.LOG_ERROR
5833 (p_table_name => 'MSD_ST_CURRENCY_CONVERSIONS',
5834 p_instance_code => p_instance_code,
5835 p_row => lv_column_names,
5836 p_severity => G_SEV_ERROR,
5837 p_error_text => lv_error_text,
5838 p_message_text => NULL,
5839 p_batch_id => lv_batch_id);
5840
5841 IF(lv_return <> 0) THEN
5842 msc_st_util.log_message(lv_error_text);
5843 END IF;
5844 COMMIT;
5845
5846 EXCEPTION
5847 WHEN ex_logging_err THEN
5848 ROLLBACK;
5849
5850 ERRBUF := lv_error_text;
5851 RETCODE := G_WARNING;
5852 msc_st_util.log_message(lv_error_text);
5853
5854 WHEN OTHERS THEN
5855 ROLLBACK;
5856
5857 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_CURRENCY_CONV '||'('
5858 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
5859 msc_st_util.log_message(lv_error_text);
5860 ERRBUF := lv_error_text;
5861 RETCODE := G_WARNING;
5862
5863 END LOAD_CURRENCY_CONV ;
5864
5865 /*==========================================================================+
5866 | DESCRIPTION : This function performs the validation and loads the data |
5867 | for business object Custom Stream(CS)Data |
5868 +==========================================================================*/
5869
5870 PROCEDURE LOAD_CS_DATA (ERRBUF OUT NOCOPY VARCHAR,
5871 RETCODE OUT NOCOPY NUMBER,
5872 p_instance_code IN VARCHAR,
5873 p_instance_id IN NUMBER,
5874 p_batch_id IN NUMBER)
5875 IS
5876 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
5877 lb_rowid RowidTab;
5878 lv_sql_stmt VARCHAR2(4000);
5879 lv_batch_id msd_st_cs_data.batch_id%TYPE;
5880 lv_message_text msc_errors.error_text%TYPE;
5881 lv_my_company msc_companies.company_name%TYPE := GET_MY_COMPANY;
5882 lv_error_text VARCHAR2(250);
5883 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
5884 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
5885 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
5886 lv_current_date DATE := msc_cl_pre_process.v_current_date;
5887 lv_return NUMBER := 0;
5888 ex_logging_err EXCEPTION;
5889 lv_column_names VARCHAR2(5000);
5890
5891 CURSOR c1(p_batch_id NUMBER)IS
5892 SELECT rowid
5893 FROM msd_st_cs_data
5894 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
5895 AND sr_instance_code = p_instance_code
5896 AND batch_id = p_batch_id;
5897
5898 CURSOR instance_type IS
5899 SELECT instance_type
5900 FROM msc_apps_instances
5901 WHERE instance_id=p_instance_id;
5902
5903 lv_instance_type msc_apps_instances.instance_type%TYPE;
5904
5905 BEGIN
5906
5907 lv_batch_id := p_batch_id;
5908
5909 lv_column_names :=
5910 ' SR_INSTANCE_CODE ||''~''||'
5911 ||' CS_DEFINITION_NAME ||''~''||'
5912 ||' CS_NAME ||''~''||'
5913 ||' DELETE_FLAG ||''~''||'
5914 ||' ATTRIBUTE_2_VAL ||''~''||'
5915 ||' ATTRIBUTE_4 ||''~''||'
5916 ||' ATTRIBUTE_6_VAL ||''~''||'
5917 ||' ATTRIBUTE_8 ||''~''||'
5918 ||' ATTRIBUTE_10_VAL ||''~''||'
5919 ||' ATTRIBUTE_12 ||''~''||'
5920 ||' ATTRIBUTE_14_VAL ||''~''||'
5921 ||' ATTRIBUTE_16 ||''~''||'
5922 ||' ATTRIBUTE_18_VAL ||''~''||'
5923 ||' ATTRIBUTE_20 ||''~''||'
5924 ||' ATTRIBUTE_22_VAL ||''~''||'
5925 ||' ATTRIBUTE_24 ||''~''||'
5926 ||' ATTRIBUTE_26_VAL ||''~''||'
5927 ||' ATTRIBUTE_28 ||''~''||'
5928 ||' ATTRIBUTE_30_VAL ||''~''||'
5929 ||' ATTRIBUTE_32 ||''~''||'
5930 ||' ATTRIBUTE_34 ||''~''||'
5931 ||' ATTRIBUTE_41 ||''~''||'
5932 ||' ATTRIBUTE_42 ||''~''||'
5933 ||' ATTRIBUTE_43 ||''~''||'
5934 ||' ATTRIBUTE_44 ||''~''||'
5935 ||' ATTRIBUTE_45 ';
5936
5937 OPEN c1(lv_batch_id);
5938 FETCH c1 BULK COLLECT INTO lb_rowid;
5939 CLOSE c1;
5940
5941 v_sql_stmt := 04;
5942 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
5943 UPDATE msd_st_cs_data
5944 SET st_transaction_id = cs_st_data_id,
5945 last_update_date = lv_current_date,
5946 last_updated_by = lv_current_user,
5947 creation_date = lv_current_date,
5948 created_by = lv_current_user
5949 WHERE rowid = lb_rowid(j);
5950
5951 /*
5952 Earlier sql statement :
5953 UPDATE msd_st_cs_data
5954 SET st_transaction_id = msd_st_cs_data_s.NEXTVAL,
5955 cs_st_data_id = msd_st_cs_data_s.CURRVAL, -- SEQUENCE
5956 last_update_date = lv_current_date,
5957 last_updated_by = lv_current_user,
5958 creation_date = lv_current_date,
5959 created_by = lv_current_user
5960 WHERE rowid = lb_rowid(j);
5961 */
5962 -- Derive the CS_DEFINITION_ID from msd_cs_definitions
5963
5964 v_sql_stmt := 05;
5965 lv_sql_stmt :=
5966 ' UPDATE msd_st_cs_data mscd'
5967 ||' SET cs_definition_id = NVL(( SELECT cs_definition_id'
5968 ||' FROM msd_cs_definitions mcd'
5969 ||' WHERE mscd.cs_definition_name = mcd.name),'||NULL_VALUE||')'
5970 ||' WHERE process_flag = '||G_IN_PROCESS
5971 ||' AND batch_id = :lv_batch_id'
5972 ||' AND sr_instance_code = :p_instance_code';
5973
5974 IF lv_debug THEN
5975 msc_st_util.log_message(lv_sql_stmt);
5976 END IF;
5977 EXECUTE IMMEDIATE lv_sql_stmt
5978 USING lv_batch_id,
5979 p_instance_code;
5980
5981
5982 -- Set the message
5983
5984 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
5985 (p_app_short_name => 'MSC',
5986 p_error_code => 'MSC_PP_INVALID_VALUE',
5987 p_message_text => lv_message_text,
5988 p_error_text => lv_error_text,
5989 p_token1 => 'COLUMN_NAME',
5990 p_token_value1 => 'CS_DEFINITION_NAME');
5991
5992 IF lv_return <> 0 THEN
5993 RAISE ex_logging_err;
5994 END IF;
5995
5996 -- Error out the records if the cs_definition_id is still null
5997 -- This indicates that this custom stream has not been defined via UI
5998
5999 v_sql_stmt := 06;
6000 lv_sql_stmt :=
6001 'UPDATE msd_st_cs_data'
6002 ||' SET process_flag = '||G_ERROR_FLG||','
6003 ||' error_text = '||''''||lv_message_text||''''
6004 ||' WHERE NVL(cs_definition_id,'||NULL_VALUE||') = '||NULL_VALUE
6005 ||' AND batch_id = :lv_batch_id'
6006 ||' AND process_flag = '||G_IN_PROCESS
6007 ||' AND sr_instance_code = :p_instance_code';
6008
6009 IF lv_debug THEN
6010 msc_st_util.log_message(lv_sql_stmt);
6011 END IF;
6012 EXECUTE IMMEDIATE lv_sql_stmt
6013 USING lv_batch_id,
6014 p_instance_code;
6015
6016
6017 -- This code is added for fix 3730302.
6018 -- Updating the two date columns REQUESTED_DATE and SCHEDULED_DATE for the 3 CMRO streams.
6019 /*
6020 UPDATE msd_st_cs_data
6021 SET attribute_45 = attribute_43
6022 WHERE cs_definition_name IN ('MSD_CMRO_FIRM_MTL_REQUIREMENT','MSD_CMRO_UNPLANNED_HISTORY','MSD_CMRO_PLANNED_HISTORY')
6023 AND batch_id = lv_batch_id
6024 AND process_flag = G_IN_PROCESS
6025 AND sr_instance_code = p_instance_code;
6026 */
6027
6028 -- Set the message
6029 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6030 (p_app_short_name => 'MSC',
6031 p_error_code => 'MSC_PP_COL_VAL_NULL',
6032 p_message_text => lv_message_text,
6033 p_error_text => lv_error_text,
6034 p_token1 => 'COLUMN_NAME',
6035 p_token_value1 => 'CS_NAME');
6036
6037 IF lv_return <> 0 THEN
6038 RAISE ex_logging_err;
6039 END IF;
6040
6041 v_sql_stmt := 07;
6042 lv_sql_stmt :=
6043 'UPDATE msd_st_cs_data'
6044 ||' SET process_flag = '||G_ERROR_FLG||','
6045 ||' error_text = '||''''||lv_message_text||''''
6046 ||' WHERE NVL(cs_name, '||''''||NULL_CHAR||''''||') '
6047 ||' = '||''''||NULL_CHAR||''''
6048 ||' AND batch_id = :lv_batch_id'
6049 ||' AND process_flag = '||G_IN_PROCESS
6050 ||' AND sr_instance_code = :p_instance_code';
6051
6052 IF lv_debug THEN
6053 msc_st_util.log_message(lv_sql_stmt);
6054 END IF;
6055 EXECUTE IMMEDIATE lv_sql_stmt
6056 USING lv_batch_id,
6057 p_instance_code;
6058
6059
6060
6061
6062 -- Set the message
6063
6064 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6065 (p_app_short_name => 'MSC',
6066 p_error_code => 'MSC_PP_INVALID_VALUE',
6067 p_message_text => lv_message_text,
6068 p_error_text => lv_error_text,
6069 p_token1 => 'COLUMN_NAME',
6070 p_token_value1 => 'PRODUCT LEVEL');
6071
6072 IF lv_return <> 0 THEN
6073 RAISE ex_logging_err;
6074 END IF;
6075
6076 -- Derive the level_id , error out if invalid level name
6077 --attribute_2 (prd_level_id)
6078
6079 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6080 (p_table_name => 'MSD_ST_CS_DATA',
6081 p_level_name_col => 'ATTRIBUTE_2_VAL',
6082 p_level_id_col => 'ATTRIBUTE_2',
6083 p_severity => G_SEV3_ERROR ,
6084 p_message_text => lv_message_text,
6085 p_instance_code => p_instance_code,
6086 p_batch_id => lv_batch_id,
6087 p_error_text => lv_error_text);
6088
6089 IF lv_return <> 0 THEN
6090 RAISE ex_logging_err;
6091 END IF;
6092
6093 -- set the message, attribute_4 is invalid
6094
6095 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6096 (p_app_short_name => 'MSC',
6097 p_error_code => 'MSC_PP_INVALID_VALUE',
6098 p_message_text => lv_message_text,
6099 p_error_text => lv_error_text,
6100 p_token1 => 'COLUMN_NAME',
6101 p_token_value1 => 'PRODUCT LEVEL VALUE');
6102
6103 IF lv_return <> 0 THEN
6104 RAISE ex_logging_err;
6105 END IF;
6106
6107 -- Derive SR_LEVEL_PK - attribute_3 from msd_level_values
6108 -- or msd_st_level_values
6109
6110 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6111 (p_table_name => 'MSD_ST_CS_DATA',
6112 p_level_val_col => 'ATTRIBUTE_4',
6113 p_level_name_col => 'ATTRIBUTE_2_VAL',
6114 p_level_pk_col => 'ATTRIBUTE_3',
6115 p_instance_code => p_instance_code,
6116 p_instance_id => p_instance_id,
6117 p_message_text => lv_message_text,
6118 p_batch_id => lv_batch_id,
6119 p_error_text => lv_error_text);
6120
6121 IF lv_return <> 0 THEN
6122 RAISE ex_logging_err;
6123 END IF;
6124
6125 -- Set the message
6126
6127 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6128 (p_app_short_name => 'MSC',
6129 p_error_code => 'MSC_PP_INVALID_VALUE',
6130 p_message_text => lv_message_text,
6131 p_error_text => lv_error_text,
6132 p_token1 => 'COLUMN_NAME',
6133 p_token_value1 => 'GEOGRAPHY LEVEL');
6134
6135 IF lv_return <> 0 THEN
6136 RAISE ex_logging_err;
6137 END IF;
6138
6139 -- Derive the level_id , error out if invalid level name
6140 -- Attribute_6 (geo_level_id)
6141
6142 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6143 (p_table_name => 'MSD_ST_CS_DATA',
6144 p_level_name_col => 'ATTRIBUTE_6_VAL',
6145 p_level_id_col => 'ATTRIBUTE_6',
6146 p_severity => G_SEV3_ERROR ,
6147 p_message_text => lv_message_text,
6148 p_instance_code => p_instance_code,
6149 p_batch_id => lv_batch_id,
6150 p_error_text => lv_error_text);
6151
6152 IF lv_return <> 0 THEN
6153 RAISE ex_logging_err;
6154 END IF;
6155
6156 -- set the message, attribute_8 is invalid
6157
6158 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6159 (p_app_short_name => 'MSC',
6160 p_error_code => 'MSC_PP_INVALID_VALUE',
6161 p_message_text => lv_message_text,
6162 p_error_text => lv_error_text,
6163 p_token1 => 'COLUMN_NAME',
6164 p_token_value1 => 'GEOGRAPHY LEVEL VALUE');
6165
6166 IF lv_return <> 0 THEN
6167 RAISE ex_logging_err;
6168 END IF;
6169
6170 -- Derive SR_LEVEL_PK - attribute_7 from msd_level_values
6171 -- or msd_st_level_values
6172
6173 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6174 (p_table_name => 'MSD_ST_CS_DATA',
6175 p_level_val_col => 'ATTRIBUTE_8',
6176 p_level_name_col => 'ATTRIBUTE_6_VAL',
6177 p_level_pk_col => 'ATTRIBUTE_7',
6178 p_instance_code => p_instance_code,
6179 p_instance_id => p_instance_id,
6180 p_message_text => lv_message_text,
6181 p_batch_id => lv_batch_id,
6182 p_error_text => lv_error_text);
6183
6184 IF lv_return <> 0 THEN
6185 RAISE ex_logging_err;
6186 END IF;
6187
6188
6189 -- Set the message
6190 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6191 (p_app_short_name => 'MSC',
6192 p_error_code => 'MSC_PP_INVALID_VALUE',
6193 p_message_text => lv_message_text,
6194 p_error_text => lv_error_text,
6195 p_token1 => 'COLUMN_NAME',
6196 p_token_value1 => 'SHIP FROM LOCATION LEVEL');
6197
6198 IF lv_return <> 0 THEN
6199 RAISE ex_logging_err;
6200 END IF;
6201
6202 -- Derive the level_id , error out if invalid level name
6203 -- attribute_10 (org_level_id)
6204
6205 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6206 (p_table_name => 'MSD_ST_CS_DATA',
6207 p_level_name_col => 'ATTRIBUTE_10_VAL',
6208 p_level_id_col => 'ATTRIBUTE_10',
6209 p_severity => G_SEV3_ERROR ,
6210 p_message_text => lv_message_text,
6211 p_instance_code => p_instance_code,
6212 p_batch_id => lv_batch_id,
6213 p_error_text => lv_error_text);
6214
6215 IF lv_return <> 0 THEN
6216 RAISE ex_logging_err;
6217 END IF;
6218
6219 -- set the message, attribute_12 is invalid
6220
6221 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6222 (p_app_short_name => 'MSC',
6223 p_error_code => 'MSC_PP_INVALID_VALUE',
6224 p_message_text => lv_message_text,
6225 p_error_text => lv_error_text,
6226 p_token1 => 'COLUMN_NAME',
6227 p_token_value1 => 'SHIP FROM LOCATION LEVEL VALUE');
6228
6229 IF lv_return <> 0 THEN
6230 RAISE ex_logging_err;
6231 END IF;
6232
6233 -- Derive SR_LEVEL_PK - attribute_11 from msd_level_values
6234 -- or msd_st_level_values
6235
6236 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6237 (p_table_name => 'MSD_ST_CS_DATA',
6238 p_level_val_col => 'ATTRIBUTE_12',
6239 p_level_name_col => 'ATTRIBUTE_10_VAL',
6240 p_level_pk_col => 'ATTRIBUTE_11',
6241 p_instance_code => p_instance_code,
6242 p_instance_id => p_instance_id,
6243 p_message_text => lv_message_text,
6244 p_batch_id => lv_batch_id,
6245 p_error_text => lv_error_text);
6246
6247 IF lv_return <> 0 THEN
6248 RAISE ex_logging_err;
6249 END IF;
6250
6251 /* -- Set the message
6252 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6253 (p_app_short_name => 'MSC',
6254 p_error_code => 'MSC_PP_INVALID_VALUE',
6255 p_message_text => lv_message_text,
6256 p_error_text => lv_error_text,
6257 p_token1 => 'COLUMN_NAME',
6258 p_token_value1 => 'PARENT ITEM LEVEL');
6259
6260 IF lv_return <> 0 THEN
6261 RAISE ex_logging_err;
6262 END IF;
6263
6264 -- Derive the level_id , error out if invalid level name
6265 --attribute_14 (cus_level_id)
6266
6267 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6268 (p_table_name => 'MSD_ST_CS_DATA',
6269 p_level_name_col => 'ATTRIBUTE_14_VAL',
6270 p_level_id_col => 'ATTRIBUTE_14',
6271 p_severity => G_SEV3_ERROR ,
6272 p_message_text => lv_message_text,
6273 p_instance_code => p_instance_code,
6274 p_batch_id => lv_batch_id,
6275 p_error_text => lv_error_text);
6276
6277 IF lv_return <> 0 THEN
6278 RAISE ex_logging_err;
6279 END IF;
6280 */
6281
6282 v_sql_stmt := 08;
6283 lv_sql_stmt :=
6284 ' UPDATE msd_st_cs_data mscd'
6285 ||' SET attribute_14 = 1'
6286 ||' WHERE attribute_16 is not null'
6287 ||' AND process_flag = '||G_IN_PROCESS
6288 ||' AND batch_id = :lv_batch_id'
6289 ||' AND sr_instance_code = :p_instance_code';
6290
6291 IF lv_debug THEN
6292 msc_st_util.log_message(lv_sql_stmt);
6293 END IF;
6294
6295 EXECUTE IMMEDIATE lv_sql_stmt
6296 USING lv_batch_id,
6297 p_instance_code;
6298
6299
6300 -- set the message, attribute_16 is invalid
6301
6302 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6303 (p_app_short_name => 'MSC',
6304 p_error_code => 'MSC_PP_INVALID_VALUE',
6305 p_message_text => lv_message_text,
6306 p_error_text => lv_error_text,
6307 p_token1 => 'COLUMN_NAME',
6308 p_token_value1 => 'PARENT ITEM NAME');
6309
6310 IF lv_return <> 0 THEN
6311 RAISE ex_logging_err;
6312 END IF;
6313
6314 -- Derive SR_LEVEL_PK - attribute_15 from msd_level_values
6315 -- or msd_st_level_values
6316
6317 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6318 (p_table_name => 'MSD_ST_CS_DATA',
6319 p_level_val_col => 'ATTRIBUTE_16',
6320 p_level_name_col => 'ATTRIBUTE_14_VAL',
6321 p_level_pk_col => 'ATTRIBUTE_15',
6322 p_instance_code => p_instance_code,
6323 p_instance_id => p_instance_id,
6324 p_message_text => lv_message_text,
6325 p_batch_id => lv_batch_id,
6326 p_error_text => lv_error_text);
6327
6328 IF lv_return <> 0 THEN
6329 RAISE ex_logging_err;
6330 END IF;
6331
6332
6333
6334 -- Set the message
6335 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6336 (p_app_short_name => 'MSC',
6337 p_error_code => 'MSC_PP_INVALID_VALUE',
6338 p_message_text => lv_message_text,
6339 p_error_text => lv_error_text,
6340 p_token1 => 'COLUMN_NAME',
6341 p_token_value1 => 'SALES REPRESANTATIVE LEVEL');
6342
6343 IF lv_return <> 0 THEN
6344 RAISE ex_logging_err;
6345 END IF;
6346
6347 -- Derive the level_id , error out if invalid level name
6348 --attribute_18 (rep_level_id)
6349
6350 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6351 (p_table_name => 'MSD_ST_CS_DATA',
6352 p_level_name_col => 'ATTRIBUTE_18_VAL',
6353 p_level_id_col => 'ATTRIBUTE_18',
6354 p_severity => G_SEV3_ERROR ,
6355 p_message_text => lv_message_text,
6356 p_instance_code => p_instance_code,
6357 p_batch_id => lv_batch_id,
6358 p_error_text => lv_error_text);
6359
6360 IF lv_return <> 0 THEN
6361 RAISE ex_logging_err;
6362 END IF;
6363
6364
6365 -- set the message, attribute_20 is invalid
6366
6367 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6368 (p_app_short_name => 'MSC',
6369 p_error_code => 'MSC_PP_INVALID_VALUE',
6370 p_message_text => lv_message_text,
6371 p_error_text => lv_error_text,
6372 p_token1 => 'COLUMN_NAME',
6373 p_token_value1 => 'SALES REPRESANTATIVE LEVEL VALUE');
6374
6375 IF lv_return <> 0 THEN
6376 RAISE ex_logging_err;
6377 END IF;
6378
6379 -- Derive SR_LEVEL_PK - attribute_19 from msd_level_values
6380 -- or msd_st_level_values
6381
6382 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6383 (p_table_name => 'MSD_ST_CS_DATA',
6384 p_level_val_col => 'ATTRIBUTE_20',
6385 p_level_name_col => 'ATTRIBUTE_18_VAL',
6386 p_level_pk_col => 'ATTRIBUTE_19',
6387 p_instance_code => p_instance_code,
6388 p_instance_id => p_instance_id,
6389 p_message_text => lv_message_text,
6390 p_batch_id => lv_batch_id,
6391 p_error_text => lv_error_text);
6392
6393 IF lv_return <> 0 THEN
6394 RAISE ex_logging_err;
6395 END IF;
6396
6397 -- Set the message
6398 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6399 (p_app_short_name => 'MSC',
6400 p_error_code => 'MSC_PP_INVALID_VALUE',
6401 p_message_text => lv_message_text,
6402 p_error_text => lv_error_text,
6403 p_token1 => 'COLUMN_NAME',
6404 p_token_value1 => 'SALES CHANNEL LEVEL');
6405
6406 IF lv_return <> 0 THEN
6407 RAISE ex_logging_err;
6408 END IF;
6409
6410
6411 -- Derive the level_id , error out if invalid level name
6412 --attribute_22 (chn_level_id)
6413
6414 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6415 (p_table_name => 'MSD_ST_CS_DATA',
6416 p_level_name_col => 'ATTRIBUTE_22_VAL',
6417 p_level_id_col => 'ATTRIBUTE_22',
6418 p_severity => G_SEV3_ERROR ,
6419 p_message_text => lv_message_text,
6420 p_instance_code => p_instance_code,
6421 p_batch_id => lv_batch_id,
6422 p_error_text => lv_error_text);
6423
6424 IF lv_return <> 0 THEN
6425 RAISE ex_logging_err;
6426 END IF;
6427
6428 -- set the message, attribute_24 is invalid
6429
6430 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6431 (p_app_short_name => 'MSC',
6432 p_error_code => 'MSC_PP_INVALID_VALUE',
6433 p_message_text => lv_message_text,
6434 p_error_text => lv_error_text,
6435 p_token1 => 'COLUMN_NAME',
6436 p_token_value1 => 'SALES CHANNEL LEVEL VALUE');
6437
6438 IF lv_return <> 0 THEN
6439 RAISE ex_logging_err;
6440 END IF;
6441
6442 -- Derive SR_LEVEL_PK - attribute_23 from msd_level_values
6443 -- or msd_st_level_values
6444
6445 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6446 (p_table_name => 'MSD_ST_CS_DATA',
6447 p_level_val_col => 'ATTRIBUTE_24',
6448 p_level_name_col => 'ATTRIBUTE_22_VAL',
6449 p_level_pk_col => 'ATTRIBUTE_23',
6450 p_instance_code => p_instance_code,
6451 p_instance_id => p_instance_id,
6452 p_message_text => lv_message_text,
6453 p_batch_id => lv_batch_id,
6454 p_error_text => lv_error_text);
6455
6456 IF lv_return <> 0 THEN
6457 RAISE ex_logging_err;
6458 END IF;
6459
6460 -- Set the message
6461 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6462 (p_app_short_name => 'MSC',
6463 p_error_code => 'MSC_PP_INVALID_VALUE',
6464 p_message_text => lv_message_text,
6465 p_error_text => lv_error_text,
6466 p_token1 => 'COLUMN_NAME',
6467 p_token_value1 => 'USER DEFINED DIMENION 1 LEVEL');
6468
6469 IF lv_return <> 0 THEN
6470 RAISE ex_logging_err;
6471 END IF;
6472
6473
6474 -- Derive the level_id , error out if invalid level name
6475 --attribute_26 (ud1_level_id)
6476
6477 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6478 (p_table_name => 'MSD_ST_CS_DATA',
6479 p_level_name_col => 'ATTRIBUTE_26_VAL',
6480 p_level_id_col => 'ATTRIBUTE_26',
6481 p_severity => G_SEV3_ERROR ,
6482 p_message_text => lv_message_text,
6483 p_instance_code => p_instance_code,
6484 p_batch_id => lv_batch_id,
6485 p_error_text => lv_error_text);
6486
6487 IF lv_return <> 0 THEN
6488 RAISE ex_logging_err;
6489 END IF;
6490
6491 -- set the message, attribute_28 is invalid
6492
6493 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6494 (p_app_short_name => 'MSC',
6495 p_error_code => 'MSC_PP_INVALID_VALUE',
6496 p_message_text => lv_message_text,
6497 p_error_text => lv_error_text,
6498 p_token1 => 'COLUMN_NAME',
6499 p_token_value1 => 'USER DEFINED DIMENION 1 LEVEL VALUE');
6500
6501 IF lv_return <> 0 THEN
6502 RAISE ex_logging_err;
6503 END IF;
6504
6505 -- Derive SR_LEVEL_PK - attribute_27 from msd_level_values
6506 -- or msd_st_level_values
6507
6508 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6509 (p_table_name => 'MSD_ST_CS_DATA',
6510 p_level_val_col => 'ATTRIBUTE_28',
6511 p_level_name_col => 'ATTRIBUTE_26_VAL',
6512 p_level_pk_col => 'ATTRIBUTE_27',
6513 p_instance_code => p_instance_code,
6514 p_instance_id => p_instance_id,
6515 p_message_text => lv_message_text,
6516 p_batch_id => lv_batch_id,
6517 p_error_text => lv_error_text);
6518
6519 IF lv_return <> 0 THEN
6520 RAISE ex_logging_err;
6521 END IF;
6522
6523 -- Set the message
6524 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6525 (p_app_short_name => 'MSC',
6526 p_error_code => 'MSC_PP_INVALID_VALUE',
6527 p_message_text => lv_message_text,
6528 p_error_text => lv_error_text,
6529 p_token1 => 'COLUMN_NAME',
6530 p_token_value1 => 'USER DEFINED DIMENION 2 LEVEL');
6531
6532 IF lv_return <> 0 THEN
6533 RAISE ex_logging_err;
6534 END IF;
6535
6536 -- Derive the level_id , error out if invalid level name
6537 --attribute_30 (ud2_level_id)
6538
6539 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6540 (p_table_name => 'MSD_ST_CS_DATA',
6541 p_level_name_col => 'ATTRIBUTE_30_VAL',
6542 p_level_id_col => 'ATTRIBUTE_30',
6543 p_severity => G_SEV3_ERROR,
6544 p_message_text => lv_message_text,
6545 p_instance_code => p_instance_code,
6546 p_batch_id => lv_batch_id,
6547 p_error_text => lv_error_text);
6548
6549 IF lv_return <> 0 THEN
6550 RAISE ex_logging_err;
6551 END IF;
6552
6553 -- set the message, attribute_32 is invalid
6554
6555 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6556 (p_app_short_name => 'MSC',
6557 p_error_code => 'MSC_PP_INVALID_VALUE',
6558 p_message_text => lv_message_text,
6559 p_error_text => lv_error_text,
6560 p_token1 => 'COLUMN_NAME',
6561 p_token_value1 => 'USER DEFINED DIMENION 2 LEVEL VALUE');
6562
6563 IF lv_return <> 0 THEN
6564 RAISE ex_logging_err;
6565 END IF;
6566
6567 -- Derive SR_LEVEL_PK - attribute_31 from msd_level_values
6568 -- or msd_st_level_values
6569
6570 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6571 (p_table_name => 'MSD_ST_CS_DATA',
6572 p_level_val_col => 'ATTRIBUTE_32',
6573 p_level_name_col => 'ATTRIBUTE_30_VAL',
6574 p_level_pk_col => 'ATTRIBUTE_31',
6575 p_instance_code => p_instance_code,
6576 p_instance_id => p_instance_id,
6577 p_message_text => lv_message_text,
6578 p_batch_id => lv_batch_id,
6579 p_error_text => lv_error_text);
6580
6581 IF lv_return <> 0 THEN
6582 RAISE ex_logging_err;
6583 END IF;
6584
6585 -- Demand Class Changes for Custom Stream data starts
6586 -- Set the message
6587 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6588 (p_app_short_name => 'MSC',
6589 p_error_code => 'MSC_PP_INVALID_VALUE',
6590 p_message_text => lv_message_text,
6591 p_error_text => lv_error_text,
6592 p_token1 => 'COLUMN_NAME',
6593 p_token_value1 => 'DEMAND CLASS LEVEL');
6594
6595 IF lv_return <> 0 THEN
6596 RAISE ex_logging_err;
6597 END IF;
6598
6599 -- Derive the level_id , error out if invalid level name
6600 -- attribute_50 (demand_class_level_id)
6601
6602 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6603 (p_table_name => 'MSD_ST_CS_DATA',
6604 p_level_name_col => 'ATTRIBUTE_50_VAL',
6605 p_level_id_col => 'ATTRIBUTE_50',
6606 p_severity => G_SEV3_ERROR ,
6607 p_message_text => lv_message_text,
6608 p_instance_code => p_instance_code,
6609 p_batch_id => lv_batch_id,
6610 p_error_text => lv_error_text);
6611
6612 IF lv_return <> 0 THEN
6613 RAISE ex_logging_err;
6614 END IF;
6615
6616 -- set the message, attribute_52 is invalid
6617
6618 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6619 (p_app_short_name => 'MSC',
6620 p_error_code => 'MSC_PP_INVALID_VALUE',
6621 p_message_text => lv_message_text,
6622 p_error_text => lv_error_text,
6623 p_token1 => 'COLUMN_NAME',
6624 p_token_value1 => 'DEMAND CLASS LEVEL VALUE');
6625
6626 IF lv_return <> 0 THEN
6627 RAISE ex_logging_err;
6628 END IF;
6629
6630 -- Derive SR_LEVEL_PK - attribute_51 from msd_level_values
6631 -- or msd_st_level_values
6632
6633 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6634 (p_table_name => 'MSD_ST_CS_DATA',
6635 p_level_val_col => 'ATTRIBUTE_52',
6636 p_level_name_col => 'ATTRIBUTE_50_VAL',
6637 p_level_pk_col => 'ATTRIBUTE_51',
6638 p_instance_code => p_instance_code,
6639 p_instance_id => p_instance_id,
6640 p_message_text => lv_message_text,
6641 p_batch_id => lv_batch_id,
6642 p_error_text => lv_error_text);
6643
6644 IF lv_return <> 0 THEN
6645 RAISE ex_logging_err;
6646 END IF;
6647
6648
6649 -- Demand Class Changes for Custom Stream data ends
6650
6651 OPEN instance_type;
6652 FETCH instance_type into lv_instance_type;
6653 CLOSE instance_type;
6654
6655
6656 IF (lv_instance_type = G_INS_OTHER) THEN
6657
6658 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6659 (p_app_short_name => 'MSC',
6660 p_error_code => 'MSC_PP_COL_REF_NOT_EXIST',
6661 p_message_text => lv_message_text,
6662 p_error_text => lv_error_text,
6663 p_token1 => 'COLUMN_NAMES',
6664 p_token_value1 => 'SR_INSTANCE_CODE AND'
6665 ||' INV_ORG AND ITEM AND ITEM.ATO_FORECAST_CONTROL'
6666 ||' AND ITEM.MRP_PLANNING_CODE',
6667 p_token2 => 'MASTER_TABLE',
6668 p_token_value2 => 'MSC_SYSTEM_ITEMS',
6669 p_token3 => 'CHILD_TABLE',
6670 p_token_value3 => 'MSD_ST_CS_DATA');
6671
6672 IF lv_return <> 0 THEN
6673 RAISE ex_logging_err;
6674 END IF;
6675
6676 -- Validate item-org combination
6677 v_sql_stmt := 15;
6678
6679 UPDATE msd_st_cs_data mcd
6680 SET process_flag = G_ERROR_FLG,
6681 error_text = lv_message_text
6682 WHERE NOT EXISTS(SELECT 1
6683 FROM msc_st_system_items msi
6684 WHERE msi.sr_instance_id = p_instance_id
6685 AND nvl(msi.company_name,lv_my_company) = lv_my_company
6686 AND msi.organization_id = mcd.attribute_11
6687 AND msi.item_name = mcd.attribute_4
6688 AND ((v_plan_per_profile = 4) OR (msi.ato_forecast_control <> 3)) --forecast control - none
6689 AND ((msi.mrp_planning_code <> 6 ) OR (msi.pick_components_flag='Y' )) --Not planned item
6690 UNION
6691 SELECT 1
6692 FROM msc_system_items mls
6693 WHERE mls.sr_instance_id = p_instance_id
6694 AND mls.organization_id = mcd.attribute_11
6695 AND mls.item_name = mcd.attribute_4
6696 AND mls.plan_id = -1
6697 AND ((v_plan_per_profile = 4) OR (mls.ato_forecast_control <> 3)) --forecast control - none
6698 AND ((mls.mrp_planning_code <> 6 ) OR (mls.pick_components_flag='Y' )) ) --Not planned item
6699 AND mcd.attribute_2 = 1
6700 AND mcd.attribute_10 = 7
6701 AND mcd.process_flag = G_IN_PROCESS
6702 AND mcd.sr_instance_code = p_instance_code
6703 AND mcd.batch_id = p_batch_id;
6704
6705 END IF;
6706
6707 --Call to customised validation.
6708 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
6709 (ERRBUF => lv_error_text,
6710 RETCODE => lv_return,
6711 pBatchID => null,
6712 pInstanceCode => p_instance_code,
6713 pEntityName => 'MSD_ST_CS_DATA',
6714 pInstanceID => p_instance_id);
6715
6716 IF lv_return <> 0 THEN
6717 RAISE ex_logging_err;
6718 END IF;
6719
6720 --Call to customised validation.
6721 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
6722 (ERRBUF => lv_error_text,
6723 RETCODE => lv_return,
6724 pBatchID => lv_batch_id,
6725 pInstanceCode => p_instance_code,
6726 pEntityName => 'MSD_ST_CS_DATA',
6727 pInstanceID => p_instance_id);
6728
6729 IF NVL(lv_return,0) <> 0 THEN
6730 RAISE ex_logging_err;
6731 END IF;
6732
6733 -- Set the process flag as Valid and populate instance_id
6734 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
6735 (p_table_name => 'MSD_ST_CS_DATA',
6736 p_instance_id => p_instance_id,
6737 p_instance_code => p_instance_code,
6738 p_process_flag => G_VALID,
6739 p_error_text => lv_error_text,
6740 p_batch_id => lv_batch_id,
6741 p_instance_id_col=> 'ATTRIBUTE_1');
6742
6743 IF lv_return <> 0 THEN
6744 RAISE ex_logging_err;
6745 END IF;
6746
6747 -- Inserting all the errored out records into MSC_ERRORS:
6748
6749 lv_return := MSC_ST_UTIL.LOG_ERROR
6750 (p_table_name => 'MSD_ST_CS_DATA',
6751 p_instance_code => p_instance_code,
6752 p_row => lv_column_names,
6753 p_severity => G_SEV_ERROR,
6754 p_error_text => lv_error_text,
6755 p_message_text => NULL,
6756 p_batch_id => lv_batch_id);
6757
6758 IF(lv_return <> 0) THEN
6759 msc_st_util.log_message(lv_error_text);
6760 END IF;
6761 COMMIT;
6762
6763 EXCEPTION
6764 WHEN ex_logging_err THEN
6765 ROLLBACK;
6766
6767 ERRBUF := lv_error_text;
6768 RETCODE := G_WARNING;
6769 msc_st_util.log_message(lv_error_text);
6770
6771 WHEN OTHERS THEN
6772 ROLLBACK;
6773
6774 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_CS_DATA'||'('
6775 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
6776 msc_st_util.log_message(lv_error_text);
6777 ERRBUF := lv_error_text;
6778 RETCODE := G_WARNING;
6779
6780 END LOAD_CS_DATA;
6781
6782 /*==========================================================================+
6783 | DESCRIPTION : This function performs the validation and loads the data |
6784 | for business object Price List |
6785 +==========================================================================*/
6786
6787 PROCEDURE LOAD_PRICE_LIST (ERRBUF OUT NOCOPY VARCHAR,
6788 RETCODE OUT NOCOPY NUMBER,
6789 p_instance_code IN VARCHAR,
6790 p_instance_id IN NUMBER,
6791 p_batch_id IN NUMBER)
6792
6793 IS
6794 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
6795 lb_rowid RowidTab;
6796 lv_sql_stmt VARCHAR2(4000);
6797 lv_batch_id msd_st_price_list.batch_id%TYPE;
6798 lv_message_text msc_errors.error_text%TYPE;
6799 lv_my_company msc_companies.company_name%TYPE := GET_MY_COMPANY;
6800 lv_error_text VARCHAR2(250);
6801 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
6802 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
6803 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
6804 lv_current_date DATE := msc_cl_pre_process.v_current_date;
6805 lv_return NUMBER := 0;
6806 ex_logging_err EXCEPTION;
6807 lv_column_names VARCHAR2(5000);
6808
6809 CURSOR c1(p_batch_id NUMBER)IS
6810 SELECT rowid
6811 FROM msd_st_price_list
6812 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
6813 AND sr_instance_code = p_instance_code
6814 AND batch_id = p_batch_id;
6815
6816 CURSOR instance_type IS
6817 SELECT instance_type
6818 FROM msc_apps_instances
6819 WHERE instance_id=p_instance_id;
6820
6821 lv_instance_type msc_apps_instances.instance_type%TYPE;
6822
6823 BEGIN
6824
6825 lv_batch_id := p_batch_id;
6826
6827 lv_column_names :=
6828 ' SR_INSTANCE_CODE ||''~''||'
6829 ||' ORGANIZATION_LVL ||''~''||'
6830 ||' SR_ORGANIZATION_LVL_VAL ||''~''||'
6831 ||' PRODUCT_LVL ||''~''||'
6832 ||' SR_PRODUCT_LVL_VAL ||''~''||'
6833 ||' SALESCHANNEL_LVL ||''~''||'
6834 ||' SR_SALESCHANNEL_LVL_VAL ||''~''||'
6835 ||' SALES_REP_LVL ||''~''||'
6836 ||' SR_SALES_REP_LVL_VAL ||''~''||'
6837 ||' GEOGRAPHY_LVL ||''~''||'
6838 ||' SR_GEOGRAPHY_LVL_VAL ||''~''||'
6839 ||' USER_DEFINED1_LVL ||''~''||'
6840 ||' SR_USER_DEFINED1_LVL_VAL||''~''||'
6841 ||' USER_DEFINED2_LVL ||''~''||'
6842 ||' SR_USER_DEFINED2_LVL_VAL||''~''||'
6843 ||' PRICE_LIST_NAME ||''~''||'
6844 ||' START_DATE ||''~''||'
6845 ||' END_DATE ||''~''||'
6846 ||' PRICE ||''~''||'
6847 ||' PRIORITY';
6848
6849 OPEN c1(lv_batch_id);
6850 FETCH c1 BULK COLLECT INTO lb_rowid;
6851 CLOSE c1;
6852
6853 v_sql_stmt := 04;
6854 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
6855 UPDATE msd_st_price_list
6856 SET st_transaction_id = msd_st_price_list_s.NEXTVAL,
6857 last_update_date = lv_current_date,
6858 last_updated_by = lv_current_user,
6859 creation_date = lv_current_date,
6860 created_by = lv_current_user
6861 WHERE rowid = lb_rowid(j);
6862
6863
6864 -- Set the message
6865
6866 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6867 (p_app_short_name => 'MSC',
6868 p_error_code => 'MSC_PP_INVALID_VALUE',
6869 p_message_text => lv_message_text,
6870 p_error_text => lv_error_text,
6871 p_token1 => 'COLUMN_NAME',
6872 p_token_value1 => 'ORGANIZATION_LVL');
6873
6874 IF lv_return <> 0 THEN
6875 RAISE ex_logging_err;
6876 END IF;
6877
6878 -- Derive the org_level_id , error out if invalid level name
6879
6880
6881 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6882 (p_table_name => 'MSD_ST_PRICE_LIST',
6883 p_level_name_col => 'ORGANIZATION_LVL',
6884 p_level_id_col => 'ORGANIZATION_LVL_ID',
6885 p_severity => G_SEV_ERROR, -- Against Bug#2413920
6886 p_message_text => lv_message_text,
6887 p_instance_code => p_instance_code,
6888 p_batch_id => lv_batch_id,
6889 p_error_text => lv_error_text);
6890
6891 IF lv_return <> 0 THEN
6892 RAISE ex_logging_err;
6893 END IF;
6894
6895 -- set the message, ORGANIZATION_LVL is invalid
6896
6897 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6898 (p_app_short_name => 'MSC',
6899 p_error_code => 'MSC_PP_INVALID_VALUE',
6900 p_message_text => lv_message_text,
6901 p_error_text => lv_error_text,
6902 p_token1 => 'COLUMN_NAME',
6903 p_token_value1 => 'SR_ORGANIZATION_LVL_VAL');
6904
6905 IF lv_return <> 0 THEN
6906 RAISE ex_logging_err;
6907 END IF;
6908
6909 -- Derive SR_ORGANIZATION_LVL_PK
6910
6911 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6912 (p_table_name => 'MSD_ST_PRICE_LIST',
6913 p_level_val_col => 'SR_ORGANIZATION_LVL_VAL',
6914 p_level_name_col => 'ORGANIZATION_LVL',
6915 p_level_pk_col => 'SR_ORGANIZATION_LVL_PK',
6916 p_instance_code => p_instance_code,
6917 p_instance_id => p_instance_id,
6918 p_message_text => lv_message_text,
6919 p_batch_id => lv_batch_id,
6920 p_severity => G_SEV_ERROR, -- Against Bug#2413920
6921 p_error_text => lv_error_text);
6922
6923 IF lv_return <> 0 THEN
6924 RAISE ex_logging_err;
6925 END IF;
6926
6927
6928 -- Set the message
6929
6930 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6931 (p_app_short_name => 'MSC',
6932 p_error_code => 'MSC_PP_INVALID_VALUE',
6933 p_message_text => lv_message_text,
6934 p_error_text => lv_error_text,
6935 p_token1 => 'COLUMN_NAME',
6936 p_token_value1 => 'PRODUCT_LVL');
6937
6938 IF lv_return <> 0 THEN
6939 RAISE ex_logging_err;
6940 END IF;
6941
6942 -- Derive the PRODUCT_LVL_ID, error out if invalid level name
6943
6944
6945 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
6946 (p_table_name => 'MSD_ST_PRICE_LIST',
6947 p_level_name_col => 'PRODUCT_LVL',
6948 p_level_id_col => 'PRODUCT_LVL_ID',
6949 p_severity => G_SEV_ERROR, -- Against Bug#2413920
6950 p_message_text => lv_message_text,
6951 p_instance_code => p_instance_code,
6952 p_batch_id => lv_batch_id,
6953 p_error_text => lv_error_text);
6954
6955 IF lv_return <> 0 THEN
6956 RAISE ex_logging_err;
6957 END IF;
6958
6959 -- set the message, PRODUCT_LVL is invalid
6960
6961 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6962 (p_app_short_name => 'MSC',
6963 p_error_code => 'MSC_PP_INVALID_VALUE',
6964 p_message_text => lv_message_text,
6965 p_error_text => lv_error_text,
6966 p_token1 => 'COLUMN_NAME',
6967 p_token_value1 => 'SR_PRODUCT_LVL_VAL');
6968
6969 IF lv_return <> 0 THEN
6970 RAISE ex_logging_err;
6971 END IF;
6972
6973 -- Derive SR_PRODUCT_LVL_PK
6974
6975 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
6976 (p_table_name => 'MSD_ST_PRICE_LIST',
6977 p_level_val_col => 'SR_PRODUCT_LVL_VAL',
6978 p_level_name_col => 'PRODUCT_LVL',
6979 p_level_pk_col => 'SR_PRODUCT_LVL_PK',
6980 p_instance_code => p_instance_code,
6981 p_instance_id => p_instance_id,
6982 p_message_text => lv_message_text,
6983 p_batch_id => lv_batch_id,
6984 p_severity => G_SEV_ERROR, -- Against Bug#2413920
6985 p_error_text => lv_error_text);
6986
6987 IF lv_return <> 0 THEN
6988 RAISE ex_logging_err;
6989 END IF;
6990
6991
6992 -- Set the message
6993
6994 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
6995 (p_app_short_name => 'MSC',
6996 p_error_code => 'MSC_PP_INVALID_VALUE',
6997 p_message_text => lv_message_text,
6998 p_error_text => lv_error_text,
6999 p_token1 => 'COLUMN_NAME',
7000 p_token_value1 => 'SALESCHANNEL_LVL');
7001
7002 IF lv_return <> 0 THEN
7003 RAISE ex_logging_err;
7004 END IF;
7005
7006 -- Derive the SALESCHANNEL_LVL_ID, error out if invalid level name
7007
7008
7009 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
7010 (p_table_name => 'MSD_ST_PRICE_LIST',
7011 p_level_name_col => 'SALESCHANNEL_LVL',
7012 p_level_id_col => 'SALESCHANNEL_LVL_ID',
7013 p_severity => G_SEV_ERROR, -- Against Bug#2413920
7014 p_message_text => lv_message_text,
7015 p_instance_code => p_instance_code,
7016 p_batch_id => lv_batch_id,
7017 p_error_text => lv_error_text);
7018
7019 IF lv_return <> 0 THEN
7020 RAISE ex_logging_err;
7021 END IF;
7022
7023 -- set the message, SALESCHANNEL_LVL is invalid
7024
7025 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7026 (p_app_short_name => 'MSC',
7027 p_error_code => 'MSC_PP_INVALID_VALUE',
7028 p_message_text => lv_message_text,
7029 p_error_text => lv_error_text,
7030 p_token1 => 'COLUMN_NAME',
7031 p_token_value1 => 'SR_SALESCHANNEL_LVL_VAL');
7032
7033 IF lv_return <> 0 THEN
7034 RAISE ex_logging_err;
7035 END IF;
7036
7037 -- Derive SR_SALESCHANNEL_LVL_PK
7038
7039 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
7040 (p_table_name => 'MSD_ST_PRICE_LIST',
7041 p_level_val_col => 'SR_SALESCHANNEL_LVL_VAL',
7042 p_level_name_col => 'SALESCHANNEL_LVL',
7043 p_level_pk_col => 'SR_SALESCHANNEL_LVL_PK',
7044 p_instance_code => p_instance_code,
7045 p_instance_id => p_instance_id,
7046 p_message_text => lv_message_text,
7047 p_batch_id => lv_batch_id,
7048 p_severity => G_SEV_ERROR, -- Against Bug#2413920
7049 p_error_text => lv_error_text);
7050
7051 IF lv_return <> 0 THEN
7052 RAISE ex_logging_err;
7053 END IF;
7054
7055 -- Set the message
7056
7057 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7058 (p_app_short_name => 'MSC',
7059 p_error_code => 'MSC_PP_INVALID_VALUE',
7060 p_message_text => lv_message_text,
7061 p_error_text => lv_error_text,
7062 p_token1 => 'COLUMN_NAME',
7063 p_token_value1 => 'SALES_REP_LVL');
7064
7065 IF lv_return <> 0 THEN
7066 RAISE ex_logging_err;
7067 END IF;
7068
7069 -- Derive the SALESREP_LVL_ID, error out if invalid level name
7070
7071
7072 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
7073 (p_table_name => 'MSD_ST_PRICE_LIST',
7074 p_level_name_col => 'SALES_REP_LVL',
7075 p_level_id_col => 'SALES_REP_LVL_ID',
7076 p_severity => G_SEV_ERROR, -- Against Bug#2413920
7077 p_message_text => lv_message_text,
7078 p_instance_code => p_instance_code,
7079 p_batch_id => lv_batch_id,
7080 p_error_text => lv_error_text);
7081
7082 IF lv_return <> 0 THEN
7083 RAISE ex_logging_err;
7084 END IF;
7085
7086 -- set the message, SALESREP_LVL is invalid
7087
7088 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7089 (p_app_short_name => 'MSC',
7090 p_error_code => 'MSC_PP_INVALID_VALUE',
7091 p_message_text => lv_message_text,
7092 p_error_text => lv_error_text,
7093 p_token1 => 'COLUMN_NAME',
7094 p_token_value1 => 'SR_SALES_REP_LVL_VAL');
7095
7096 IF lv_return <> 0 THEN
7097 RAISE ex_logging_err;
7098 END IF;
7099
7100 -- Derive SR_SALESREP_LVL_PK
7101
7102 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
7103 (p_table_name => 'MSD_ST_PRICE_LIST',
7104 p_level_val_col => 'SR_SALES_REP_LVL_VAL',
7105 p_level_name_col => 'SALES_REP_LVL',
7106 p_level_pk_col => 'SR_SALES_REP_LVL_PK',
7107 p_instance_code => p_instance_code,
7108 p_instance_id => p_instance_id,
7109 p_message_text => lv_message_text,
7110 p_batch_id => lv_batch_id,
7111 p_severity => G_SEV_ERROR, -- Against Bug#2413920
7112 p_error_text => lv_error_text);
7113
7114 IF lv_return <> 0 THEN
7115 RAISE ex_logging_err;
7116 END IF;
7117
7118 -- Set the message
7119
7120 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7121 (p_app_short_name => 'MSC',
7122 p_error_code => 'MSC_PP_INVALID_VALUE',
7123 p_message_text => lv_message_text,
7124 p_error_text => lv_error_text,
7125 p_token1 => 'COLUMN_NAME',
7126 p_token_value1 => 'GEOGRAPHY_LVL');
7127
7128 IF lv_return <> 0 THEN
7129 RAISE ex_logging_err;
7130 END IF;
7131
7132 -- Derive the GEOGRAPHY_LVL_ID, error out if invalid level name
7133
7134 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
7135 (p_table_name => 'MSD_ST_PRICE_LIST',
7136 p_level_name_col => 'GEOGRAPHY_LVL',
7137 p_level_id_col => 'GEOGRAPHY_LVL_ID',
7138 p_severity => G_SEV_ERROR, -- Against Bug#2413920
7139 p_message_text => lv_message_text,
7140 p_instance_code => p_instance_code,
7141 p_batch_id => lv_batch_id,
7142 p_error_text => lv_error_text);
7143
7144 IF lv_return <> 0 THEN
7145 RAISE ex_logging_err;
7146 END IF;
7147
7148 -- set the message, GEOGRAPHY_LVL is invalid
7149
7150 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7151 (p_app_short_name => 'MSC',
7152 p_error_code => 'MSC_PP_INVALID_VALUE',
7153 p_message_text => lv_message_text,
7154 p_error_text => lv_error_text,
7155 p_token1 => 'COLUMN_NAME',
7156 p_token_value1 => 'SR_GEOGRAPHY_LVL_VAL');
7157
7158 IF lv_return <> 0 THEN
7159 RAISE ex_logging_err;
7160 END IF;
7161
7162 -- Derive SR_GEOGRAPHY_LVL_PK
7163
7164 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
7165 (p_table_name => 'MSD_ST_PRICE_LIST',
7166 p_level_val_col => 'SR_GEOGRAPHY_LVL_VAL',
7167 p_level_name_col => 'GEOGRAPHY_LVL',
7168 p_level_pk_col => 'SR_GEOGRAPHY_LVL_PK',
7169 p_instance_code => p_instance_code,
7170 p_instance_id => p_instance_id,
7171 p_message_text => lv_message_text,
7172 p_batch_id => lv_batch_id,
7173 p_severity => G_SEV_ERROR, -- Against Bug#2413920
7174 p_error_text => lv_error_text);
7175
7176 IF lv_return <> 0 THEN
7177 RAISE ex_logging_err;
7178 END IF;
7179
7180 -- Set the message
7181
7182 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7183 (p_app_short_name => 'MSC',
7184 p_error_code => 'MSC_PP_INVALID_VALUE',
7185 p_message_text => lv_message_text,
7186 p_error_text => lv_error_text,
7187 p_token1 => 'COLUMN_NAME',
7188 p_token_value1 => 'USER_DEFINED1_LVL');
7189
7190 IF lv_return <> 0 THEN
7191 RAISE ex_logging_err;
7192 END IF;
7193
7194 -- Derive the USER_DEFINED1_LVL_ID, error out if invalid level name
7195
7196 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
7197 (p_table_name => 'MSD_ST_PRICE_LIST',
7198 p_level_name_col => 'USER_DEFINED1_LVL',
7199 p_level_id_col => 'USER_DEFINED1_LVL_ID',
7200 p_severity => G_SEV3_ERROR ,
7201 p_message_text => lv_message_text,
7202 p_instance_code => p_instance_code,
7203 p_batch_id => lv_batch_id,
7204 p_error_text => lv_error_text);
7205
7206 IF lv_return <> 0 THEN
7207 RAISE ex_logging_err;
7208 END IF;
7209
7210
7211 -- set the message, USER_DEFINED1_LVL is invalid
7212
7213 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7214 (p_app_short_name => 'MSC',
7215 p_error_code => 'MSC_PP_INVALID_VALUE',
7216 p_message_text => lv_message_text,
7217 p_error_text => lv_error_text,
7218 p_token1 => 'COLUMN_NAME',
7219 p_token_value1 => 'SR_USER_DEFINED1_LVL_VAL');
7220
7221 IF lv_return <> 0 THEN
7222 RAISE ex_logging_err;
7223 END IF;
7224
7225 -- Derive SR_USER_DEFINED1_LVL_PK
7226
7227 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
7228 (p_table_name => 'MSD_ST_PRICE_LIST',
7229 p_level_val_col => 'SR_USER_DEFINED1_LVL_VAL',
7230 p_level_name_col => 'USER_DEFINED1_LVL',
7231 p_level_pk_col => 'SR_USER_DEFINED1_LVL_PK',
7232 p_instance_code => p_instance_code,
7233 p_instance_id => p_instance_id,
7234 p_message_text => lv_message_text,
7235 p_batch_id => lv_batch_id,
7236 p_error_text => lv_error_text);
7237
7238 IF lv_return <> 0 THEN
7239 RAISE ex_logging_err;
7240 END IF;
7241
7242 -- Set the message
7243
7244 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7245 (p_app_short_name => 'MSC',
7246 p_error_code => 'MSC_PP_INVALID_VALUE',
7247 p_message_text => lv_message_text,
7248 p_error_text => lv_error_text,
7249 p_token1 => 'COLUMN_NAME',
7250 p_token_value1 => 'USER_DEFINED2_LVL');
7251
7252 IF lv_return <> 0 THEN
7253 RAISE ex_logging_err;
7254 END IF;
7255
7256 -- Derive the USER_DEFINED2_LVL_ID, error out if invalid level name
7257
7258 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
7259 (p_table_name => 'MSD_ST_PRICE_LIST',
7260 p_level_name_col => 'USER_DEFINED2_LVL',
7261 p_level_id_col => 'USER_DEFINED2_LVL_ID',
7262 p_severity => G_SEV3_ERROR ,
7263 p_message_text => lv_message_text,
7264 p_instance_code => p_instance_code,
7265 p_batch_id => lv_batch_id,
7266 p_error_text => lv_error_text);
7267
7268 IF lv_return <> 0 THEN
7269 RAISE ex_logging_err;
7270 END IF;
7271
7272
7273 -- set the message, USER_DEFINED2_LVL is invalid
7274
7275 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7276 (p_app_short_name => 'MSC',
7277 p_error_code => 'MSC_PP_INVALID_VALUE',
7278 p_message_text => lv_message_text,
7279 p_error_text => lv_error_text,
7280 p_token1 => 'COLUMN_NAME',
7281 p_token_value1 => 'SR_USER_DEFINED2_LVL_VAL');
7282
7283 IF lv_return <> 0 THEN
7284 RAISE ex_logging_err;
7285 END IF;
7286
7287 -- Derive SR_USER_DEFINED2_LVL_PK
7288
7289 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
7290 (p_table_name => 'MSD_ST_PRICE_LIST',
7291 p_level_val_col => 'SR_USER_DEFINED2_LVL_VAL',
7292 p_level_name_col => 'USER_DEFINED2_LVL',
7293 p_level_pk_col => 'SR_USER_DEFINED2_LVL_PK',
7294 p_instance_code => p_instance_code,
7295 p_instance_id => p_instance_id,
7296 p_message_text => lv_message_text,
7297 p_batch_id => lv_batch_id,
7298 p_error_text => lv_error_text);
7299
7300 IF lv_return <> 0 THEN
7301 RAISE ex_logging_err;
7302 END IF;
7303
7304
7305 -- Set the message
7306
7307 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7308 (p_app_short_name => 'MSC',
7309 p_error_code => 'MSC_PP_INVALID_VALUE',
7310 p_message_text => lv_message_text,
7311 p_error_text => lv_error_text,
7312 p_token1 => 'COLUMN_NAME',
7313 p_token_value1 => 'DEMAND_CLASS_LVL');
7314
7315 IF lv_return <> 0 THEN
7316 RAISE ex_logging_err;
7317 END IF;
7318
7319 -- Derive the DEMAND_CLASS_LVL_ID, error out if invalid level name
7320
7321 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
7322 (p_table_name => 'MSD_ST_PRICE_LIST',
7323 p_level_name_col => 'DEMAND_CLASS_LVL',
7324 p_level_id_col => 'DEMAND_CLASS_LVL_ID',
7325 p_severity => G_SEV3_ERROR, -- Against Bug#2413920
7326 p_message_text => lv_message_text,
7327 p_instance_code => p_instance_code,
7328 p_batch_id => lv_batch_id,
7329 p_error_text => lv_error_text);
7330
7331 IF lv_return <> 0 THEN
7332 RAISE ex_logging_err;
7333 END IF;
7334
7335 -- set the message, DEMAND_CLASS_LVL is invalid
7336
7337 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7338 (p_app_short_name => 'MSC',
7339 p_error_code => 'MSC_PP_INVALID_VALUE',
7340 p_message_text => lv_message_text,
7341 p_error_text => lv_error_text,
7342 p_token1 => 'COLUMN_NAME',
7343 p_token_value1 => 'SR_DEMAND_CLASS_LVL_VAL');
7344
7345 IF lv_return <> 0 THEN
7346 RAISE ex_logging_err;
7347 END IF;
7348
7349 -- Derive SR_DEMAND_CLASS_LVL_PK
7350
7351 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
7352 (p_table_name => 'MSD_ST_PRICE_LIST',
7353 p_level_val_col => 'SR_DEMAND_CLASS_LVL_VAL',
7354 p_level_name_col => 'DEMAND_CLASS_LVL',
7355 p_level_pk_col => 'SR_DEMAND_CLASS_LVL_PK',
7356 p_instance_code => p_instance_code,
7357 p_instance_id => p_instance_id,
7358 p_message_text => lv_message_text,
7359 p_batch_id => lv_batch_id,
7360 p_severity => G_SEV3_ERROR, -- Against Bug#2413920
7361 p_error_text => lv_error_text);
7362
7363 IF lv_return <> 0 THEN
7364 RAISE ex_logging_err;
7365 END IF;
7366
7367 -- Price List UOM Change starts
7368 -- Set the message
7369 /* Comment Start :The code below has been commented against Bug# 3796659 */
7370 /* lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7371 (p_app_short_name => 'MSC',
7372 p_error_code => 'MSC_PP_INVALID_VALUE',
7373 p_message_text => lv_message_text,
7374 p_error_text => lv_error_text,
7375 p_token1 => 'COLUMN_NAME',
7376 p_token_value1 => 'PRICE_LIST_UOM');
7377
7378 IF lv_return <> 0 THEN
7379 RAISE ex_logging_err;
7380 END IF;
7381
7382
7383
7384 UPDATE msd_st_price_list mspl
7385 SET process_flag = G_ERROR_FLG,
7386 error_text = lv_message_text
7387 WHERE NOT EXISTS(SELECT 1
7388 FROM msc_st_units_of_measure msum
7389 --WHERE msum.sr_instance_id = p_instance_id
7390 WHERE msum.sr_instance_code = p_instance_code
7391 AND msum.process_flag = G_VALID
7392 AND msum.uom_code = mspl.price_list_uom
7393 UNION
7394 SELECT 1
7395 FROM msc_units_of_measure mum
7396 WHERE mum.sr_instance_id = p_instance_id
7397 AND mum.uom_code = mspl.price_list_uom )
7398 AND mspl.process_flag = G_IN_PROCESS
7399 AND mspl.sr_instance_code = p_instance_code
7400 AND mspl.batch_id = p_batch_id;
7401 */
7402 /* Comment END :The code above has been commented against Bug# 3796659 */
7403 -- Price List UOM Change ends
7404
7405 OPEN instance_type;
7406 FETCH instance_type into lv_instance_type;
7407 CLOSE instance_type;
7408
7409 IF (lv_instance_type = G_INS_OTHER) THEN
7410
7411 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7412 (p_app_short_name => 'MSC',
7413 p_error_code => 'MSC_PP_COL_REF_NOT_EXIST',
7414 p_message_text => lv_message_text,
7415 p_error_text => lv_error_text,
7416 p_token1 => 'COLUMN_NAMES',
7417 p_token_value1 => 'SR_INSTANCE_CODE AND'
7418 ||' INV_ORG AND ITEM AND ITEM.ATO_FORECAST_CONTROL'
7419 ||' AND ITEM.MRP_PLANNING_CODE',
7420 p_token2 => 'MASTER_TABLE',
7421 p_token_value2 => 'MSC_SYSTEM_ITEMS',
7422 p_token3 => 'CHILD_TABLE',
7423 p_token_value3 => 'MSD_ST_PRICE_LIST');
7424
7425 IF lv_return <> 0 THEN
7426 RAISE ex_logging_err;
7427 END IF;
7428
7429 -- Validate item-org combination
7430 v_sql_stmt := 15;
7431
7432 UPDATE msd_st_price_list mpl
7433 SET process_flag = G_ERROR_FLG,
7434 error_text = lv_message_text
7435 WHERE NOT EXISTS(SELECT 1
7436 FROM msc_st_system_items msi
7437 WHERE msi.sr_instance_id = p_instance_id
7438 AND nvl(msi.company_name,lv_my_company) = lv_my_company
7439 AND msi.organization_id = mpl.sr_organization_lvl_pk
7440 AND msi.item_name = mpl.sr_product_lvl_val
7441 AND ((v_plan_per_profile = 4) OR (msi.ato_forecast_control <> 3)) --forecast control - none
7442 AND ((msi.mrp_planning_code <> 6 ) OR (msi.pick_components_flag='Y' )) --Not planned item
7443 UNION
7444 SELECT 1
7445 FROM msc_system_items mls
7446 WHERE mls.sr_instance_id = p_instance_id
7447 AND mls.organization_id = mpl.sr_organization_lvl_pk
7448 AND mls.item_name = mpl.sr_product_lvl_val
7449 AND mls.plan_id = -1
7450 AND ((v_plan_per_profile = 4) OR (mls.ato_forecast_control <> 3)) --forecast control - none
7451 AND ((mls.mrp_planning_code <> 6 ) OR (mls.pick_components_flag='Y' )) ) --Not planned item
7452 AND mpl.product_lvl_id = 1
7453 AND mpl.organization_lvl_id = 7
7454 AND mpl.process_flag = G_IN_PROCESS
7455 AND mpl.sr_instance_code = p_instance_code
7456 AND mpl.batch_id = p_batch_id;
7457
7458 END IF;
7459
7460 --Call to customised validation.
7461 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
7462 (ERRBUF => lv_error_text,
7463 RETCODE => lv_return,
7464 pBatchID => null,
7465 pInstanceCode => p_instance_code,
7466 pEntityName => 'MSD_ST_PRICE_LIST',
7467 pInstanceID => p_instance_id);
7468
7469 IF lv_return <> 0 THEN
7470 RAISE ex_logging_err;
7471 END IF;
7472
7473 -- Set the process flag as Valid and populate instance_id
7474 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
7475 (p_table_name => 'MSD_ST_PRICE_LIST',
7476 p_instance_id => p_instance_id,
7477 p_instance_code => p_instance_code,
7478 p_process_flag => G_VALID,
7479 p_error_text => lv_error_text,
7480 p_batch_id => lv_batch_id,
7481 p_instance_id_col=> 'INSTANCE');
7482
7483 IF lv_return <> 0 THEN
7484 RAISE ex_logging_err;
7485 END IF;
7486
7487 -- Inserting all the errored out records into MSC_ERRORS:
7488
7489 lv_return := MSC_ST_UTIL.LOG_ERROR
7490 (p_table_name => 'MSD_ST_PRICE_LIST',
7491 p_instance_code => p_instance_code,
7492 p_row => lv_column_names,
7493 p_severity => G_SEV_ERROR,
7494 p_error_text => lv_error_text,
7495 p_message_text => NULL,
7496 p_batch_id => lv_batch_id);
7497
7498 IF(lv_return <> 0) THEN
7499 msc_st_util.log_message(lv_error_text);
7500 END IF;
7501 COMMIT;
7502
7503 EXCEPTION
7504 WHEN ex_logging_err THEN
7505 ROLLBACK;
7506
7507 ERRBUF := lv_error_text;
7508 RETCODE := G_WARNING;
7509 msc_st_util.log_message(lv_error_text);
7510
7511 WHEN OTHERS THEN
7512 ROLLBACK;
7513
7514 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_PRICE_LIST'||'('
7515 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
7516 msc_st_util.log_message(lv_error_text);
7517 ERRBUF := lv_error_text;
7518 RETCODE := G_WARNING;
7519
7520 END LOAD_PRICE_LIST;
7521
7522 /*==========================================================================+
7523 | DESCRIPTION : This function performs the validation and loads the data |
7524 | for business object UOM conversion |
7525 +==========================================================================*/
7526
7527 PROCEDURE LOAD_UOM_CONV (ERRBUF OUT NOCOPY VARCHAR,
7528 RETCODE OUT NOCOPY NUMBER,
7529 p_instance_code IN VARCHAR,
7530 p_instance_id IN NUMBER,
7531 p_batch_id IN NUMBER)
7532
7533 IS
7534 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
7535 lb_rowid RowidTab;
7536 lv_sql_stmt VARCHAR2(4000);
7537 lv_batch_id msd_st_uom_conversions.batch_id%TYPE;
7538 lv_message_text msc_errors.error_text%TYPE;
7539 lv_error_text VARCHAR2(250);
7540 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
7541 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
7542 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
7543 lv_current_date DATE := msc_cl_pre_process.v_current_date;
7544 lv_return NUMBER := 0;
7545 ex_logging_err EXCEPTION;
7546 lv_column_names VARCHAR2(5000);
7547
7548 CURSOR c1(p_batch_id NUMBER)IS
7549 SELECT rowid
7550 FROM msd_st_uom_conversions
7551 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
7552 AND sr_instance_code = p_instance_code
7553 AND batch_id = p_batch_id;
7554
7555 BEGIN
7556
7557 lv_batch_id := p_batch_id;
7558
7559 lv_column_names :=
7560 ' SR_INSTANCE_CODE ||''~''||'
7561 ||' FROM_UOM_CLASS ||''~''||'
7562 ||' TO_UOM_CLASS ||''~''||'
7563 ||' FROM_UOM_CODE ||''~''||'
7564 ||' TO_UOM_CODE ||''~''||'
7565 ||' BASE_UOM_FLAG ||''~''||'
7566 ||' CONVERSION_RATE ||''~''||'
7567 ||' ITEM ';
7568
7569
7570 OPEN c1(lv_batch_id);
7571 FETCH c1 BULK COLLECT INTO lb_rowid;
7572 CLOSE c1;
7573
7574 v_sql_stmt := 04;
7575 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
7576 UPDATE msd_st_uom_conversions
7577 SET st_transaction_id = msd_st_uom_conversions_s.NEXTVAL,
7578 last_update_date = lv_current_date,
7579 last_updated_by = lv_current_user,
7580 creation_date = lv_current_date,
7581 created_by = lv_current_user
7582 WHERE rowid = lb_rowid(j);
7583
7584 -- set the message
7585
7586 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7587 (p_app_short_name => 'MSC',
7588 p_error_code => 'MSC_PP_COL_VAL_NULL',
7589 p_message_text => lv_message_text,
7590 p_error_text => lv_error_text,
7591 p_token1 => 'COLUMN_NAME',
7592 p_token_value1 => 'FROM_UOM_CLASS OR'
7593 ||' TO_UOM_CLASS OR'
7594 ||' FROM_UOM_CODE OR'
7595 ||' TO _UOM_CODE'
7596 ||' CONVERSION_RATE');
7597
7598 IF lv_return <> 0 THEN
7599 RAISE ex_logging_err;
7600 END IF;
7601
7602 -- error out if from or to uom class is null
7603 -- error out if from or to uom code is null
7604 -- error out if conversion rate is null
7605
7606 v_sql_stmt := 05;
7607
7608 lv_sql_stmt :=
7609 'UPDATE msd_st_uom_conversions'
7610 ||' SET process_flag = '||G_ERROR_FLG||','
7611 ||' error_text = '||''''||lv_message_text||''''
7612 ||' WHERE (NVL(from_uom_class, '||''''||NULL_CHAR||''''||') '
7613 ||' = '||''''||NULL_CHAR||''''
7614 ||' OR NVL(to_uom_class, '||''''||NULL_CHAR||''''||') '
7615 ||' = '||''''||NULL_CHAR||''''
7616 ||' OR NVL(from_uom_code, '||''''||NULL_CHAR||''''||') '
7617 ||' = '||''''||NULL_CHAR||''''
7618 ||' OR NVL(to_uom_code, '||''''||NULL_CHAR||''''||') '
7619 ||' = '||''''||NULL_CHAR||''''
7620 ||' OR NVL(conversion_rate,'||NULL_VALUE||') = '||NULL_VALUE||')'
7621 ||' AND process_flag = '||G_IN_PROCESS
7622 ||' AND batch_id = :lv_batch_id'
7623 ||' AND sr_instance_code = :p_instance_code';
7624
7625 IF lv_debug THEN
7626 msc_st_util.log_message(lv_sql_stmt);
7627 END IF;
7628 EXECUTE IMMEDIATE lv_sql_stmt
7629 USING lv_batch_id,
7630 p_instance_code;
7631
7632
7633 -- Set the message
7634 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7635 (p_app_short_name => 'MSC',
7636 p_error_code => 'MSC_PP_INVALID_VALUE',
7637 p_message_text => lv_message_text,
7638 p_error_text => lv_error_text,
7639 p_token1 => 'COLUMN_NAME',
7640 p_token_value1 => 'ITEM');
7641
7642 IF lv_return <> 0 THEN
7643 RAISE ex_logging_err;
7644 END IF;
7645
7646 -- Derive sr_item_pk from msd_st_level_values and msd_level_values
7647
7648 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
7649 (p_table_name => 'MSD_ST_UOM_CONVERSIONS',
7650 p_column_name => 'ITEM',
7651 p_pk_col_name => 'SR_ITEM_PK',
7652 p_instance_code => p_instance_code,
7653 p_level_id => 1,
7654 p_instance_id => p_instance_id,
7655 p_message_text => lv_message_text,
7656 p_batch_id => lv_batch_id,
7657 p_error_text => lv_error_text);
7658
7659 IF lv_return <> 0 THEN
7660 RAISE ex_logging_err;
7661 END IF;
7662
7663
7664
7665 --Call to customised validation.
7666 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
7667 (ERRBUF => lv_error_text,
7668 RETCODE => lv_return,
7669 pBatchID => lv_batch_id,
7670 pInstanceCode => p_instance_code,
7671 pEntityName => 'MSD_ST_UOM_CONVERSIONS',
7672 pInstanceID => p_instance_id);
7673
7674 IF NVL(lv_return,0) <> 0 THEN
7675 RAISE ex_logging_err;
7676 END IF;
7677
7678 -- Set the process flag as Valid and populate instance_id
7679 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
7680 (p_table_name => 'MSD_ST_UOM_CONVERSIONS',
7681 p_instance_id => p_instance_id,
7682 p_instance_code => p_instance_code,
7683 p_process_flag => G_VALID,
7684 p_error_text => lv_error_text,
7685 p_batch_id => lv_batch_id,
7686 p_instance_id_col=> 'INSTANCE');
7687
7688 IF lv_return <> 0 THEN
7689 RAISE ex_logging_err;
7690 END IF;
7691
7692 -- Inserting all the errored out records into MSC_ERRORS:
7693
7694 lv_return := MSC_ST_UTIL.LOG_ERROR
7695 (p_table_name => 'MSD_ST_UOM_CONVERSIONS',
7696 p_instance_code => p_instance_code,
7697 p_row => lv_column_names,
7698 p_severity => G_SEV_ERROR,
7699 p_error_text => lv_error_text,
7700 p_message_text => NULL,
7701 p_batch_id => lv_batch_id);
7702
7703 IF(lv_return <> 0) THEN
7704 msc_st_util.log_message(lv_error_text);
7705 END IF;
7706 COMMIT;
7707
7708 EXCEPTION
7709 WHEN ex_logging_err THEN
7710 ROLLBACK;
7711
7712 ERRBUF := lv_error_text;
7713 RETCODE := G_WARNING;
7714 msc_st_util.log_message(lv_error_text);
7715
7716 WHEN OTHERS THEN
7717 ROLLBACK;
7718
7719 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_UOM_CONV '||'('
7720 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
7721 msc_st_util.log_message(lv_error_text);
7722 ERRBUF := lv_error_text;
7723 RETCODE := G_WARNING;
7724
7725 END LOAD_UOM_CONV ;
7726
7727 /*==========================================================================+
7728 | DESCRIPTION : This function performs the validation and loads the data |
7729 | for setup parameters |
7730 +==========================================================================*/
7731
7732 PROCEDURE LOAD_SETUP_PARAMETER(ERRBUF OUT NOCOPY VARCHAR,
7733 RETCODE OUT NOCOPY NUMBER,
7734 p_instance_code IN VARCHAR,
7735 p_instance_id IN NUMBER)
7736 IS
7737 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
7738 lb_rowid RowidTab;
7739 lv_sql_stmt VARCHAR2(4000);
7740 lv_message_text msc_errors.error_text%TYPE;
7741 lv_error_text VARCHAR2(250);
7742 lv_return NUMBER := 0;
7743 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
7744 lv_current_date DATE := msc_cl_pre_process.v_current_date;
7745 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
7746 ex_logging_err EXCEPTION;
7747 lv_column_names VARCHAR2(5000);
7748
7749
7750
7751 CURSOR c1 IS
7752 SELECT rowid
7753 FROM msd_st_setup_parameters
7754 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
7755 AND sr_instance_code = p_instance_code ;
7756
7757
7758 CURSOR c2 IS
7759 SELECT instance,
7760 parameter_name,
7761 parameter_value
7762 FROM msd_st_setup_parameters
7763 WHERE instance = p_instance_id ;
7764
7765 BEGIN
7766
7767 lv_column_names :=
7768 ' SR_INSTANCE_CODE ||''~''||'
7769 ||' PARAMETER_NAME ||''~''||'
7770 ||' PARAMETER_VALUE ';
7771
7772 OPEN c1;
7773 FETCH c1 BULK COLLECT INTO lb_rowid;
7774 CLOSE c1;
7775
7776 v_sql_stmt := 04;
7777 FORALL j IN lb_rowid.FIRST..lb_rowid.LAST
7778 UPDATE msd_st_setup_parameters
7779 SET st_transaction_id = msd_st_setup_parameters_s.NEXTVAL,
7780 last_update_date = lv_current_date,
7781 last_updated_by = lv_current_user,
7782 creation_date = lv_current_date,
7783 created_by = lv_current_user
7784 WHERE rowid = lb_rowid(j);
7785
7786 -- set the message
7787
7788 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7789 (p_app_short_name => 'MSC',
7790 p_error_code => 'MSC_PP_COL_VAL_NULL',
7791 p_message_text => lv_message_text,
7792 p_error_text => lv_error_text,
7793 p_token1 => 'COLUMN_NAME',
7794 p_token_value1 => 'PARAMETER_NAME OR'
7795 ||' PARAMETER_VALUE');
7796
7797
7798 -- Parameter value and parameter_name should not be null
7799
7800 v_sql_stmt := 01;
7801 lv_sql_stmt :=
7802 ' UPDATE msd_st_setup_parameters'
7803 ||' SET process_flag = '||G_ERROR_FLG||','
7804 ||' error_text = '||''''||lv_message_text||''''
7805 ||' WHERE (NVL(parameter_name, '||''''||NULL_CHAR||''''||') '
7806 ||' = '||''''||NULL_CHAR||''''
7807 ||' OR NVL(parameter_value, '||''''||NULL_CHAR||''''||') '
7808 ||' = '||''''||NULL_CHAR||''''||')'
7809 ||' AND process_flag = '||G_IN_PROCESS
7810 ||' AND sr_instance_code = :p_instance_code';
7811
7812 IF lv_debug THEN
7813 msc_st_util.log_message(lv_sql_stmt);
7814 END IF;
7815 EXECUTE IMMEDIATE lv_sql_stmt
7816 USING p_instance_code;
7817
7818 -- Set the process flag as Valid and populate instance_id
7819 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
7820 (p_table_name => 'MSD_ST_SETUP_PARAMETERS',
7821 p_instance_id => p_instance_id,
7822 p_instance_code => p_instance_code,
7823 p_process_flag => G_VALID,
7824 p_error_text => lv_error_text,
7825 p_instance_id_col=> 'INSTANCE');
7826
7827 IF lv_return <> 0 THEN
7828 RAISE ex_logging_err;
7829 END IF;
7830
7831
7832 -- Update the msd_setup_parameters
7833 FOR c_rec IN c2 LOOP
7834
7835 BEGIN
7836
7837 UPDATE msd_setup_parameters
7838 SET parameter_value = c_rec.parameter_value
7839 WHERE parameter_name = c_rec.parameter_name
7840 AND instance_id = c_rec.instance ;
7841
7842 IF SQL%NOTFOUND THEN
7843
7844 DELETE FROM msd_setup_parameters
7845 WHERE PARAMETER_NAME = c_rec.parameter_name;
7846
7847 INSERT INTO MSD_SETUP_PARAMETERS
7848 ( INSTANCE_ID,
7849 PARAMETER_NAME,
7850 PARAMETER_VALUE )
7851 VALUES
7852 ( c_rec.instance,
7853 c_rec.parameter_name,
7854 c_rec.parameter_value );
7855 END IF ;
7856
7857 DELETE FROM MSD_ST_SETUP_PARAMETERS
7858 WHERE instance = c_rec.instance
7859 AND parameter_name = c_rec.parameter_name
7860 AND parameter_value = c_rec.parameter_value;
7861
7862 EXCEPTION
7863 WHEN OTHERS THEN
7864 msc_st_util.log_message(SQLERRM);
7865 END ;
7866 END LOOP;
7867
7868 -- Inserting all the errored out records into MSC_ERRORS:
7869
7870 lv_return := MSC_ST_UTIL.LOG_ERROR
7871 (p_table_name => 'MSD_ST_SETUP_PARAMETERS',
7872 p_instance_code => p_instance_code,
7873 p_row => lv_column_names,
7874 p_severity => G_SEV_ERROR,
7875 p_error_text => lv_error_text,
7876 p_message_text => NULL);
7877
7878 IF(lv_return <> 0) THEN
7879 msc_st_util.log_message(lv_error_text);
7880 END IF;
7881 COMMIT;
7882
7883 EXCEPTION
7884 WHEN ex_logging_err THEN
7885 ROLLBACK;
7886
7887 ERRBUF := lv_error_text;
7888 RETCODE := G_WARNING;
7889 msc_st_util.log_message(lv_error_text);
7890
7891 WHEN OTHERS THEN
7892 ROLLBACK;
7893
7894 lv_error_text := substr('MSD_CL_PRE_PROCESS.LOAD_SETUP_PARAMETER '||'('
7895 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
7896 msc_st_util.log_message(lv_error_text);
7897 ERRBUF := lv_error_text;
7898 RETCODE := G_WARNING;
7899
7900 END LOAD_SETUP_PARAMETER ;
7901
7902 /*==========================================================================+
7903 | DESCRIPTION : This function performs the validation and loads the data |
7904 | for item relationships. |
7905 +==========================================================================*/
7906 PROCEDURE LOAD_ITEM_RELATIONSHIP ( p_instance_code IN VARCHAR,
7907 p_instance_id IN NUMBER )
7908 IS
7909
7910 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
7911
7912 lb_rowid RowidTab;
7913 lv_sql_stmt VARCHAR2(4000);
7914 lv_batch_id msd_st_item_relationships.batch_id%TYPE;
7915 lv_message_text msc_errors.error_text%TYPE;
7916 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
7917 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
7918 lv_current_date DATE := msc_cl_pre_process.v_current_date;
7919 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
7920 lv_return NUMBER := 0;
7921 lv_error_text VARCHAR2(250);
7922 lv_instance_code VARCHAR2(3);
7923
7924 ex_logging_err EXCEPTION;
7925 lv_column_names VARCHAR2(5000);
7926
7927
7928
7929 CURSOR c1(p_batch_id NUMBER)IS
7930 SELECT rowid
7931 FROM msd_st_item_relationships
7932 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
7933 AND sr_instance_code = p_instance_code
7934 AND batch_id = p_batch_id;
7935
7936 BEGIN
7937 lv_instance_code := p_instance_code;
7938
7939 lv_column_names :=
7940 ' SR_INSTANCE_CODE ||''~''||'
7941 ||' INVENTORY_ITEM ||''~''||'
7942 ||' RELATED_ITEM ||''~''||'
7943 ||' RELATIONSHIP_TYPE ';
7944
7945 LOOP
7946 v_sql_stmt := 01;
7947 SELECT msd_st_batch_id_s.NEXTVAL
7948 INTO lv_batch_id
7949 FROM DUAL;
7950
7951 v_sql_stmt := 02;
7952
7953 lv_sql_stmt :=
7954 'UPDATE msd_st_item_relationships'
7955 ||' SET batch_id = :lv_batch_id '
7956 ||' WHERE process_flag IN ('||G_IN_PROCESS||','||G_ERROR_FLG||')'
7957 ||' AND sr_instance_code = :lv_instance_code'
7958 ||' AND NVL(batch_id,'||NULL_VALUE||') = '||NULL_VALUE
7959 ||' AND rownum <= '||lv_batch_size;
7960
7961 IF lv_debug THEN
7962 msc_st_util.log_message(lv_sql_stmt);
7963 END IF;
7964
7965 EXECUTE IMMEDIATE lv_sql_stmt
7966 USING lv_batch_id,
7967 p_instance_code;
7968
7969 EXIT WHEN SQL%NOTFOUND ;
7970
7971 OPEN c1(lv_batch_id);
7972 FETCH c1 BULK COLLECT INTO lb_rowid;
7973 CLOSE c1;
7974
7975 v_sql_stmt := 03;
7976 FORALL j IN 1..lb_rowid.COUNT
7977 UPDATE msd_st_item_relationships
7978 SET st_transaction_id = msd_st_item_relationships_s.NEXTVAL,
7979 last_update_date = lv_current_date,
7980 last_updated_by = lv_current_user,
7981 creation_date = lv_current_date,
7982 created_by = lv_current_user
7983 WHERE rowid = lb_rowid(j);
7984
7985
7986 -- Set the message
7987 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
7988 (p_app_short_name => 'MSC',
7989 p_error_code => 'MSC_PP_INVALID_VALUE',
7990 p_message_text => lv_message_text,
7991 p_error_text => lv_error_text,
7992 p_token1 => 'COLUMN_NAME',
7993 p_token_value1 => 'INVENTORY_ITEM');
7994
7995 IF lv_return <> 0 THEN
7996 RAISE ex_logging_err;
7997 END IF;
7998
7999 -- Derive INVENTORY_ITEM_ID from msd_st_level_values and msd_level_values
8000
8001 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
8002 (p_table_name => 'MSD_ST_ITEM_RELATIONSHIPS',
8003 p_column_name => 'INVENTORY_ITEM',
8004 p_pk_col_name => 'INVENTORY_ITEM_ID',
8005 p_level_id => 1,
8006 p_instance_code => p_instance_code,
8007 p_instance_id => p_instance_id,
8008 p_message_text => lv_message_text,
8009 p_batch_id => lv_batch_id,
8010 p_severity => G_SEV_ERROR, -- Against Bug#2415379
8011 p_error_text => lv_error_text);
8012
8013 IF lv_return <> 0 THEN
8014 RAISE ex_logging_err;
8015 END IF;
8016
8017 -- Set the message
8018 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
8019 (p_app_short_name => 'MSC',
8020 p_error_code => 'MSC_PP_INVALID_VALUE',
8021 p_message_text => lv_message_text,
8022 p_error_text => lv_error_text,
8023 p_token1 => 'COLUMN_NAME',
8024 p_token_value1 => 'RELATED_ITEM');
8025
8026 IF lv_return <> 0 THEN
8027 RAISE ex_logging_err;
8028 END IF;
8029
8030 -- Derive RELATED_ITEM_ID from msd_st_level_values and msd_level_values
8031
8032 lv_return := MSC_ST_UTIL.DERIVE_SR_PK
8033 (p_table_name => 'MSD_ST_ITEM_RELATIONSHIPS',
8034 p_column_name => 'RELATED_ITEM',
8035 p_pk_col_name => 'RELATED_ITEM_ID',
8036 p_level_id => 1,
8037 p_instance_code => p_instance_code,
8038 p_instance_id => p_instance_id,
8039 p_message_text => lv_message_text,
8040 p_batch_id => lv_batch_id,
8041 p_severity => G_SEV_ERROR, -- Against Bug#2415379
8042 p_error_text => lv_error_text);
8043
8044 IF lv_return <> 0 THEN
8045 RAISE ex_logging_err;
8046 END IF;
8047
8048 v_sql_stmt := 04;
8049 lv_sql_Stmt:=
8050 'UPDATE msd_st_item_relationships t1'
8051 ||' SET t1.relationship_type_id = 8 ' -- Relationship Type - Superseded
8052 ||' WHERE t1.process_flag ='|| G_IN_PROCESS
8053 ||' AND t1.batch_id = :lv_batch_id'
8054 ||' AND t1.sr_instance_code = :p_instance_code';
8055
8056 IF lv_debug THEN
8057 msc_st_util.log_message(lv_sql_stmt);
8058 END IF;
8059
8060 EXECUTE IMMEDIATE lv_sql_stmt
8061 USING lv_batch_id,
8062 p_instance_code ;
8063
8064
8065 --Commented the below piece of code, as User will not be entering the Relationship Type via Flat File.
8066 -- It is assumed that only Relation that exists, is of type - Superseded.
8067
8068 /*
8069 v_sql_stmt := 04;
8070 lv_sql_Stmt:=
8071 'UPDATE msd_st_item_relationships t1'
8072 ||' SET t1.relationship_type_id = ( select lookup_code '
8073 ||' from mfg_lookups t2 '
8074 ||' where t1.relationship_type = t2.meaning '
8075 ||' and t2.lookup_type =''MTL_RELATIONSHIP_TYPES'' )'
8076 ||' WHERE t1.process_flag ='|| G_IN_PROCESS
8077 ||' AND t1.batch_id = :lv_batch_id'
8078 ||' AND t1.sr_instance_code = :p_instance_code';
8079
8080 IF lv_debug THEN
8081 msc_st_util.log_message(lv_sql_stmt);
8082 END IF;
8083
8084 EXECUTE IMMEDIATE lv_sql_stmt
8085 USING lv_batch_id,
8086 p_instance_code ;
8087
8088 -- Set the message
8089 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
8090 (p_app_short_name => 'MSC',
8091 p_error_code => 'MSC_PP_COL_VAL_NULL',
8092 p_message_text => lv_message_text,
8093 p_error_text => lv_error_text,
8094 p_token1 => 'COLUMN_NAME',
8095 p_token_value1 => 'RELATIONSHIP_TYPE');
8096
8097 IF lv_return <> 0 THEN
8098 RAISE ex_logging_err;
8099 END IF;
8100
8101 --error out records if relationship_type is not valid.
8102 v_sql_stmt := 05;
8103
8104 lv_sql_Stmt:=
8105 'UPDATE msd_st_item_relationships '
8106 ||' SET process_flag ='||G_ERROR_FLG||','
8107 ||' error_text = '||''''||lv_message_text||''''
8108 ||' WHERE NVL(RELATIONSHIP_TYPE_ID,'||NULL_VALUE||') = '||NULL_VALUE
8109 ||' AND process_flag ='|| G_IN_PROCESS
8110 ||' AND batch_id = :lv_batch_id'
8111 ||' AND sr_instance_code = :p_instance_code';
8112
8113 IF lv_debug THEN
8114 msc_st_util.log_message(lv_sql_stmt);
8115 END IF;
8116
8117 EXECUTE IMMEDIATE lv_sql_stmt
8118 USING lv_batch_id,
8119 p_instance_code ;
8120 */
8121
8122
8123 --Call to customised validation.
8124 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
8125 (ERRBUF => lv_error_text,
8126 RETCODE => lv_return,
8127 pBatchID => lv_batch_id,
8128 pInstanceCode => p_instance_code,
8129 pEntityName => 'MSD_ST_ITEM_RELATIONSHIPS',
8130 pInstanceID => p_instance_id);
8131
8132 IF NVL(lv_return,0) <> 0 THEN
8133 RAISE ex_logging_err;
8134 END IF;
8135
8136 -- Set the process flag as Valid and populate instance_id
8137 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
8138 (p_table_name => 'MSD_ST_ITEM_RELATIONSHIPS',
8139 p_instance_id => p_instance_id,
8140 p_instance_code => p_instance_code,
8141 p_process_flag => G_VALID,
8142 p_error_text => lv_error_text,
8143 p_batch_id => lv_batch_id,
8144 p_instance_id_col=> 'INSTANCE_ID');
8145
8146 IF lv_return <> 0 THEN
8147 RAISE ex_logging_err;
8148 END IF;
8149
8150 -- Inserting all the errored out records into MSC_ERRORS:
8151
8152 lv_return := MSC_ST_UTIL.LOG_ERROR
8153 (p_table_name => 'MSD_ST_ITEM_RELATIONSHIPS',
8154 p_instance_code => p_instance_code,
8155 p_row => lv_column_names,
8156 p_severity => G_SEV_ERROR,
8157 p_error_text => lv_error_text,
8158 p_message_text => NULL,
8159 p_batch_id => lv_batch_id);
8160
8161 IF(lv_return <> 0) THEN
8162 RAISE ex_logging_err;
8163 END IF;
8164 COMMIT;
8165
8166 END LOOP;
8167
8168 EXCEPTION
8169 WHEN ex_logging_err THEN
8170 ROLLBACK;
8171
8172 msc_st_util.log_message(lv_error_text);
8173
8174 WHEN OTHERS THEN
8175 ROLLBACK;
8176
8177 lv_error_text := substr('LOAD_ITEM_RELATIONSHIP '||'('
8178 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
8179 msc_st_util.log_message(lv_error_text);
8180
8181 END LOAD_ITEM_RELATIONSHIP;
8182
8183 /*==========================================================================+
8184 | DESCRIPTION : This function performs the validation and loads the data |
8185 | for level org associations. |
8186 +==========================================================================*/
8187 PROCEDURE LOAD_LEVEL_ORG_ASSCNS ( p_instance_code IN VARCHAR,
8188 p_instance_id IN NUMBER )
8189 IS
8190
8191 TYPE RowidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
8192
8193 lb_rowid RowidTab;
8194 lv_sql_stmt VARCHAR2(4000);
8195 lv_batch_id msd_st_level_org_asscns.batch_id%TYPE;
8196 lv_message_text msc_errors.error_text%TYPE;
8197 lv_debug BOOLEAN := msc_cl_pre_process.v_debug;
8198 lv_current_user NUMBER := msc_cl_pre_process.v_current_user;
8199 lv_current_date DATE := msc_cl_pre_process.v_current_date;
8200 lv_batch_size NUMBER := msc_cl_pre_process.v_batch_size;
8201 lv_return NUMBER := 0;
8202 lv_error_text VARCHAR2(250);
8203 lv_instance_code VARCHAR2(3);
8204
8205 ex_logging_err EXCEPTION;
8206 lv_column_names VARCHAR2(5000);
8207
8208 lv_instance_type msc_apps_instances.instance_type%TYPE;
8209
8210 CURSOR instance_type IS
8211 SELECT instance_type
8212 FROM msc_apps_instances
8213 WHERE instance_id=p_instance_id;
8214
8215 CURSOR c1(p_batch_id NUMBER)IS
8216 SELECT rowid
8217 FROM msd_st_level_org_asscns
8218 WHERE process_flag IN (G_IN_PROCESS,G_ERROR_FLG)
8219 AND sr_instance_code = p_instance_code
8220 AND batch_id = p_batch_id;
8221
8222 BEGIN
8223
8224 lv_instance_code := p_instance_code;
8225
8226 lv_column_names :=
8227 ' SR_INSTANCE_CODE ||''~''||'
8228 ||' LEVEL_NAME ||''~''||'
8229 ||' LEVEL_VALUE ||''~''||'
8230 ||' ORG_LEVEL_NAME ||''~''||'
8231 ||' ORG_LEVEL_VALUE ';
8232
8233 LOOP
8234 v_sql_stmt := 01;
8235 SELECT msd_st_batch_id_s.NEXTVAL
8236 INTO lv_batch_id
8237 FROM DUAL;
8238
8239 v_sql_stmt := 02;
8240
8241 lv_sql_stmt :=
8242 'UPDATE msd_st_level_org_asscns'
8243 ||' SET batch_id = :lv_batch_id '
8244 ||' WHERE process_flag IN ('||G_IN_PROCESS||','||G_ERROR_FLG||')'
8245 ||' AND sr_instance_code = :lv_instance_code'
8246 ||' AND NVL(batch_id,'||NULL_VALUE||') = '||NULL_VALUE
8247 ||' AND rownum <= '||lv_batch_size;
8248
8249 IF lv_debug THEN
8250 msc_st_util.log_message(lv_sql_stmt);
8251 END IF;
8252
8253 EXECUTE IMMEDIATE lv_sql_stmt
8254 USING lv_batch_id,
8255 p_instance_code;
8256
8257 EXIT WHEN SQL%NOTFOUND ;
8258
8259 OPEN c1(lv_batch_id);
8260 FETCH c1 BULK COLLECT INTO lb_rowid;
8261 CLOSE c1;
8262
8263 v_sql_stmt := 03;
8264 FORALL j IN 1..lb_rowid.COUNT
8265 UPDATE msd_st_level_org_asscns
8266 SET st_transaction_id = msd_st_level_org_asscns_s.NEXTVAL,
8267 last_update_date = lv_current_date,
8268 last_updated_by = lv_current_user,
8269 creation_date = lv_current_date,
8270 created_by = lv_current_user
8271 WHERE rowid = lb_rowid(j);
8272
8273
8274 -- Set the message LEVEL_NAME is invalid
8275 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
8276 (p_app_short_name => 'MSC',
8277 p_error_code => 'MSC_PP_INVALID_VALUE',
8278 p_message_text => lv_message_text,
8279 p_error_text => lv_error_text,
8280 p_token1 => 'COLUMN_NAME',
8281 p_token_value1 => 'LEVEL_NAME');
8282
8283 IF lv_return <> 0 THEN
8284 RAISE ex_logging_err;
8285 END IF;
8286
8287 -- Derive the level_id , error out if invalid level name
8288 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
8289 (p_table_name => 'MSD_ST_LEVEL_ORG_ASSCNS',
8290 p_level_name_col => 'LEVEL_NAME',
8291 p_level_id_col => 'LEVEL_ID',
8292 p_severity => G_SEV_ERROR ,
8293 p_message_text => lv_message_text,
8294 p_instance_code => p_instance_code,
8295 p_batch_id => lv_batch_id,
8296 p_error_text => lv_error_text);
8297
8298
8299 -- Set the message ORG_LEVEL_NAME is invalid
8300 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
8301 (p_app_short_name => 'MSC',
8302 p_error_code => 'MSC_PP_INVALID_VALUE',
8303 p_message_text => lv_message_text,
8304 p_error_text => lv_error_text,
8305 p_token1 => 'COLUMN_NAME',
8306 p_token_value1 => 'ORG_LEVEL_NAME');
8307
8308 IF lv_return <> 0 THEN
8309 RAISE ex_logging_err;
8310 END IF;
8311
8312 -- Derive the level_id , error out if invalid org level name
8313 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_ID
8314 (p_table_name => 'MSD_ST_LEVEL_ORG_ASSCNS',
8315 p_level_name_col => 'ORG_LEVEL_NAME',
8316 p_level_id_col => 'ORG_LEVEL_ID',
8317 p_severity => G_SEV_ERROR ,
8318 p_message_text => lv_message_text,
8319 p_instance_code => p_instance_code,
8320 p_batch_id => lv_batch_id,
8321 p_error_text => lv_error_text);
8322
8323
8324 -- Set the message
8325 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
8326 (p_app_short_name => 'MSC',
8327 p_error_code => 'MSC_PP_INVALID_VALUE',
8328 p_message_text => lv_message_text,
8329 p_error_text => lv_error_text,
8330 p_token1 => 'COLUMN_NAME',
8331 p_token_value1 => 'LEVEL_NAME AND ORG_LEVEL_NAME');
8332
8333 IF lv_return <> 0 THEN
8334 RAISE ex_logging_err;
8335 END IF;
8336
8337 OPEN instance_type;
8338 FETCH instance_type into lv_instance_type;
8339 CLOSE instance_type;
8340
8341 IF (lv_instance_type = G_INS_OTHER) THEN
8342
8343 --Combinations for Level-Org other than the (Sales rep - OU) and (Ship to Loc - OU) is not valid.
8344 UPDATE msd_st_level_org_asscns mloa
8345 SET process_flag = G_ERROR_FLG,
8346 error_text = lv_message_text
8347 WHERE mloa.process_flag = G_IN_PROCESS
8348 AND mloa.sr_instance_code = p_instance_code
8349 AND mloa.batch_id = lv_batch_id
8350 AND ( mloa.org_level_id <> 8 OR mloa.level_id not in (18,11) );
8351
8352 ELSE
8353
8354 --Combinations for Level-Org other than the (Sales rep - OU) , (Ship to Loc - OU) and (Item - Org )is not valid.
8355 UPDATE msd_st_level_org_asscns mloa
8356 SET process_flag = G_ERROR_FLG,
8357 error_text = lv_message_text
8358 WHERE mloa.process_flag = G_IN_PROCESS
8359 AND mloa.sr_instance_code = p_instance_code
8360 AND mloa.batch_id = lv_batch_id
8361 AND ( mloa.org_level_id <> 8 OR mloa.level_id not in (18,11) )
8362 AND ( mloa.org_level_id <> 7 OR mloa.level_id <> 1 );
8363
8364
8365 END IF;
8366
8367 -- set the message, LEVEL_VALUE is invalid
8368 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
8369 (p_app_short_name => 'MSC',
8370 p_error_code => 'MSC_PP_INVALID_VALUE',
8371 p_message_text => lv_message_text,
8372 p_error_text => lv_error_text,
8373 p_token1 => 'COLUMN_NAME',
8374 p_token_value1 => 'LEVEL_VALUE');
8375
8376 IF lv_return <> 0 THEN
8377 RAISE ex_logging_err;
8378 END IF;
8379
8380 -- Derive SR_LEVEL_PK from msd_level_values or msd_st_level_values
8381
8382 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
8383 (p_table_name => 'MSD_ST_LEVEL_ORG_ASSCNS',
8384 p_level_val_col => 'LEVEL_VALUE',
8385 p_level_name_col => 'LEVEL_NAME',
8386 p_level_pk_col => 'SR_LEVEL_PK',
8387 p_instance_code => p_instance_code,
8388 p_instance_id => p_instance_id,
8389 p_message_text => lv_message_text,
8390 p_batch_id => lv_batch_id,
8391 p_error_text => lv_error_text);
8392
8393 IF lv_return <> 0 THEN
8394 RAISE ex_logging_err;
8395 END IF;
8396
8397 -- set the message, ORG_LEVEL_VALUE is invalid
8398 lv_return := MSC_ST_UTIL.GET_ERROR_MESSAGE
8399 (p_app_short_name => 'MSC',
8400 p_error_code => 'MSC_PP_INVALID_VALUE',
8401 p_message_text => lv_message_text,
8402 p_error_text => lv_error_text,
8403 p_token1 => 'COLUMN_NAME',
8404 p_token_value1 => 'ORG_LEVEL_VALUE');
8405
8406 IF lv_return <> 0 THEN
8407 RAISE ex_logging_err;
8408 END IF;
8409
8410 -- Derive ORG_SR_LEVEL_PK from msd_level_values or msd_st_level_values
8411
8412 lv_return := MSC_ST_UTIL.DERIVE_LEVEL_PK
8413 (p_table_name => 'MSD_ST_LEVEL_ORG_ASSCNS',
8414 p_level_val_col => 'ORG_LEVEL_VALUE',
8415 p_level_name_col => 'ORG_LEVEL_NAME',
8416 p_level_pk_col => 'ORG_SR_LEVEL_PK',
8417 p_instance_code => p_instance_code,
8418 p_instance_id => p_instance_id,
8419 p_message_text => lv_message_text,
8420 p_batch_id => lv_batch_id,
8421 p_error_text => lv_error_text);
8422
8423 IF lv_return <> 0 THEN
8424 RAISE ex_logging_err;
8425 END IF;
8426
8427 --Call to customised validation.
8428 MSC_CL_PRE_PROCESS_HOOK.ENTITY_VALIDATION
8429 (ERRBUF => lv_error_text,
8430 RETCODE => lv_return,
8431 pBatchID => lv_batch_id,
8432 pInstanceCode => p_instance_code,
8433 pEntityName => 'MSD_ST_LEVEL_ORG_ASSCNS',
8434 pInstanceID => p_instance_id);
8435
8436 IF NVL(lv_return,0) <> 0 THEN
8437 RAISE ex_logging_err;
8438 END IF;
8439
8440 -- Set the process flag as Valid and populate instance_id
8441 lv_return := MSC_ST_UTIL.SET_PROCESS_FLAG
8442 (p_table_name => 'MSD_ST_LEVEL_ORG_ASSCNS',
8443 p_instance_id => p_instance_id,
8444 p_instance_code => p_instance_code,
8445 p_process_flag => G_VALID,
8446 p_error_text => lv_error_text,
8447 p_batch_id => lv_batch_id,
8448 p_instance_id_col=> 'INSTANCE');
8449
8450 IF lv_return <> 0 THEN
8451 RAISE ex_logging_err;
8452 END IF;
8453
8454 -- Inserting all the errored out records into MSC_ERRORS:
8455
8456 lv_return := MSC_ST_UTIL.LOG_ERROR
8457 (p_table_name => 'MSD_ST_LEVEL_ORG_ASSCNS',
8458 p_instance_code => p_instance_code,
8459 p_row => lv_column_names,
8460 p_severity => G_SEV_ERROR,
8461 p_error_text => lv_error_text,
8462 p_message_text => NULL,
8463 p_batch_id => lv_batch_id);
8464
8465 IF(lv_return <> 0) THEN
8466 RAISE ex_logging_err;
8467 END IF;
8468
8469 COMMIT;
8470
8471 END LOOP;
8472
8473
8474 EXCEPTION
8475 WHEN ex_logging_err THEN
8476 ROLLBACK;
8477
8478 msc_st_util.log_message(lv_error_text);
8479
8480 WHEN OTHERS THEN
8481 ROLLBACK;
8482
8483 lv_error_text := substr('LOAD_LEVEL_ORG_ASSCNS '||'('
8484 ||v_sql_stmt||')'|| SQLERRM, 1, 240);
8485 msc_st_util.log_message(lv_error_text);
8486
8487 END LOAD_LEVEL_ORG_ASSCNS;
8488
8489 PROCEDURE LAUNCH_DELETE_DUPLICATES (ERRBUF OUT NOCOPY VARCHAR2,
8490 RETCODE OUT NOCOPY NUMBER,
8491 p_instance_id IN NUMBER)
8492 IS
8493 lv_error_text VARCHAR2(250);
8494 BEGIN
8495 v_sql_stmt := 01;
8496 delete from msd_st_level_values m1
8497 where rowid<>(select max(rowid) from msd_st_level_values m2
8498 where m2.level_id= m1.level_id and m2.instance = m1.instance
8499 and m2.sr_level_pk = m1.sr_level_pk )
8500 and m1.instance=p_instance_id ;
8501
8502 msc_st_util.log_message('****no of row deleted*****' || SQL%ROWCOUNT);
8503
8504 commit ;
8505
8506 v_sql_stmt := 02;
8507
8508 delete from msd_st_level_associations m1
8509 where rowid<> (select max(rowid)
8510 from msd_st_level_associations m2
8511 where m2.level_id= m1.level_id
8512 and m2.instance = m1.instance
8513 and m2.sr_level_pk = m1.sr_level_pk
8514 and m2.PARENT_LEVEL_ID=m1.PARENT_LEVEL_ID
8515 and m2.SR_PARENT_LEVEL_PK = m1.SR_PARENT_LEVEL_PK
8516 )
8517 and m1.instance=p_instance_id ;
8518
8519 msc_st_util.log_message('****no of row deleted*****' || SQL%ROWCOUNT);
8520
8521 commit ;
8522 EXCEPTION
8523 WHEN OTHERS THEN
8524 ROLLBACK;
8525
8526 lv_error_text := substr('LAUNCH_DELETE_DUPLICATES '||'('||v_sql_stmt||')'|| SQLERRM, 1, 240);
8527 msc_st_util.log_message(lv_error_text);
8528 END LAUNCH_DELETE_DUPLICATES;
8529
8530
8531
8532 /*==========================================================================+
8533 | DESCRIPTION : This procedure launches the Pull Program of DP |
8534 +==========================================================================*/
8535
8536 PROCEDURE LAUNCH_PULL_PROGRAM(ERRBUF OUT NOCOPY VARCHAR2,
8537 RETCODE OUT NOCOPY NUMBER,
8538 p_instance_id IN NUMBER,
8539 p_request_id IN NUMBER,
8540 p_launch_lvalue IN NUMBER DEFAULT SYS_NO,
8541 p_launch_booking IN NUMBER DEFAULT SYS_NO,
8542 p_launch_shipment IN NUMBER DEFAULT SYS_NO,
8543 p_launch_forecast IN NUMBER DEFAULT SYS_NO,
8544 p_launch_time IN NUMBER DEFAULT SYS_NO,
8545 p_launch_pricing IN NUMBER DEFAULT SYS_NO,
8546 p_launch_curr_conv IN NUMBER DEFAULT SYS_NO,
8547 p_launch_uom_conv IN NUMBER DEFAULT SYS_NO,
8548 p_launch_cs_data IN NUMBER DEFAULT SYS_NO,
8549 p_cs_refresh IN NUMBER DEFAULT SYS_NO)
8550 IS
8551
8552 CURSOR c1 IS
8553 SELECT distinct cs_name,cs_definition_id
8554 FROM msd_st_cs_data
8555 WHERE attribute_1 = to_char(p_instance_id)
8556 AND request_id = p_request_id; --Bug 3002566
8557
8558 lv_request_id NUMBER;
8559 lv_lval_request_id NUMBER:= 0;
8560 lv_cs_refresh VARCHAR2(10) := 'N';
8561 ex_launch_fail EXCEPTION ;
8562 lv_req_data VARCHAR2(10);
8563
8564 BEGIN
8565
8566 lv_req_data := nvl(fnd_conc_global.request_data,G_NEW_REQUEST);
8567
8568 -- If "Level Values' is already submitted as a sub-request then concurrent request
8569 -- would have been submitted for all the entities within this if clause.
8570
8571 IF lv_req_data <> G_DP_LV_REQ_DATA THEN
8572 IF (p_launch_lvalue = SYS_YES ) THEN
8573
8574 lv_request_id := fnd_request.submit_request('MSD', 'MSDPLV', NULL, NULL,TRUE,SYS_NO);
8575
8576 IF lv_request_id = 0 THEN
8577 RAISE ex_launch_fail;
8578 END IF;
8579 fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
8580 request_data => to_char(G_DP_LV_REQ_DATA));
8581 lv_req_data := 2;
8582 END IF;
8583
8584 IF (p_launch_booking = SYS_YES ) THEN
8585
8586 lv_request_id := fnd_request.submit_request('MSD', 'MSDPBD', NULL, NULL,FALSE);
8587 IF lv_request_id = 0 THEN
8588 RAISE ex_launch_fail;
8589 END IF;
8590 commit;
8591 END IF;
8592
8593 IF (p_launch_shipment = SYS_YES ) THEN
8594
8595 lv_request_id := fnd_request.submit_request('MSD', 'MSDPSD', NULL, NULL,FALSE);
8596 IF lv_request_id = 0 THEN
8597 RAISE ex_launch_fail;
8598 END IF;
8599 commit;
8600 END IF;
8601
8602
8603 IF (p_launch_forecast = SYS_YES ) THEN
8604
8605 lv_request_id := fnd_request.submit_request('MSD', 'MSDPMF', NULL, NULL,FALSE);
8606 IF lv_request_id = 0 THEN
8607 RAISE ex_launch_fail;
8608 END IF;
8609 commit;
8610 END IF;
8611
8612 IF (p_launch_time = SYS_YES ) THEN
8613
8614 lv_request_id := fnd_request.submit_request('MSD', 'MSDPTD', NULL, NULL,FALSE);
8615 IF lv_request_id = 0 THEN
8616 RAISE ex_launch_fail;
8617 END IF;
8618 commit;
8619 END IF;
8620
8621 IF (p_launch_pricing = SYS_YES ) THEN
8622
8623 lv_request_id := fnd_request.submit_request('MSD', 'MSDPPD', NULL, NULL,FALSE);
8624 IF lv_request_id = 0 THEN
8625 RAISE ex_launch_fail;
8626 END IF;
8627 commit;
8628 END IF;
8629
8630 IF (p_launch_curr_conv = SYS_YES ) THEN
8631
8632 lv_request_id := fnd_request.submit_request('MSD', 'MSDPCC', NULL, NULL,FALSE);
8633 IF lv_request_id = 0 THEN
8634 RAISE ex_launch_fail;
8635 END IF;
8636 commit;
8637 END IF;
8638
8639 IF (p_launch_uom_conv = SYS_YES ) THEN
8640
8641 lv_request_id := fnd_request.submit_request('MSD', 'MSDPUC', NULL, NULL,FALSE);
8642 IF lv_request_id = 0 THEN
8643 RAISE ex_launch_fail;
8644 END IF;
8645 END IF;
8646
8647 IF lv_req_data = G_DP_LV_REQ_DATA THEN
8648 RETURN;
8649 END IF;
8650 END IF;
8651
8652 IF (p_launch_cs_data = SYS_YES) THEN
8653
8654 IF nvl(p_request_id,-1) < 1 THEN -- If launched via Flat File Load, check the supplied parameter for CSData Refresh
8655 IF(p_cs_refresh = 1) THEN
8656 lv_cs_refresh := 'Y';
8657 END IF;
8658 ELSE
8659 lv_cs_refresh := 'Y'; -- If Launching CS data Pull Program via Self Service in legacy, Launching it with Complete Refresh.(Bug 3419291)
8660 END IF;
8661
8662 FOR c_rec IN c1 LOOP
8663
8664 lv_request_id :=
8665 fnd_request.submit_request('MSD', 'MSDCSCL', NULL, NULL,FALSE,
8666 'P', 'Y',
8667 c_rec.cs_definition_id,
8668 c_rec.cs_name,
8669 lv_cs_refresh,
8670 p_instance_id,
8671 NULL,
8672 NULL,
8673 NULL,
8674 NULL,
8675 NULL,
8676 NULL,
8677 NULL,
8678 NULL,
8679 NULL,
8680 NULL,
8681 NULL );
8682
8683
8684 END LOOP ;
8685
8686 END IF;
8687
8688 -- Only for level values sub-request, monitor needs to wait till the processing of
8689 -- level values. If the request data value is already set to 'DP Level Values -- sub-request', it is modified to 'DP custom stream sub-request', so that monitor -- continues with the processing.
8690
8691 IF lv_req_data = G_DP_LV_REQ_DATA THEN
8692 fnd_conc_global.set_req_globals(conc_status => 'RUNNING',
8693 request_data => to_char(G_DP_CS_REQ_DATA));
8694 END IF;
8695 EXCEPTION
8696 WHEN ex_launch_fail THEN
8697 FND_MESSAGE.SET_NAME('MSD', 'MSD_PP_LAUNCH_PULL_FAIL');
8698 ERRBUF := FND_MESSAGE.GET ;
8699 RETCODE := G_WARNING ;
8700
8701 WHEN OTHERS THEN
8702 FND_MESSAGE.SET_NAME('MSD', 'MSD_PP_LAUNCH_PULL_FAIL');
8703 ERRBUF := FND_MESSAGE.GET;
8704 RETCODE := G_WARNING ;
8705
8706 END LAUNCH_PULL_PROGRAM ;
8707
8708
8709 /*======================================================================================+
8710 | DESCRIPTION : This procedure is just a wrapper procedure for pre-processor monitor |
8711 ++=====================================================================================*/
8712 PROCEDURE LAUNCH_MONITOR( ERRBUF OUT NOCOPY VARCHAR2,
8713 RETCODE OUT NOCOPY NUMBER,
8714 p_instance_id IN NUMBER,
8715 p_timeout IN NUMBER DEFAULT 1440,
8716 p_batch_size IN NUMBER DEFAULT 1000,
8717 p_total_worker_num IN NUMBER DEFAULT 3,
8718 p_ascp_ins_dummy IN VARCHAR2 DEFAULT NULL,
8719 p_dummy1 IN VARCHAR2 DEFAULT NULL,
8720 p_dummy2 IN VARCHAR2 DEFAULT NULL,
8721 p_cal_enabled IN NUMBER DEFAULT SYS_NO,
8722 p_dmd_class_enabled IN NUMBER DEFAULT SYS_YES,
8723 p_tp_enabled IN NUMBER DEFAULT SYS_YES,
8724 p_list_price_enabled IN NUMBER DEFAULT SYS_NO,
8725 p_ctg_enabled IN NUMBER DEFAULT SYS_YES,
8726 p_item_enabled IN NUMBER DEFAULT SYS_YES,
8727 p_item_cat_enabled IN NUMBER DEFAULT SYS_YES,
8728 p_rollup_dummy IN VARCHAR2 DEFAULT NULL,
8729 p_item_rollup IN NUMBER DEFAULT SYS_YES,
8730 p_bom_enabled IN NUMBER DEFAULT SYS_YES,
8731 p_uom_enabled IN NUMBER DEFAULT SYS_YES,
8732 p_uom_conv_enabled IN NUMBER DEFAULT SYS_NO ,
8733 p_curr_conv_enabled IN NUMBER DEFAULT SYS_NO,
8734 p_setup_enabled IN NUMBER DEFAULT SYS_NO,
8735 p_fiscal_cal_enabled IN NUMBER DEFAULT SYS_NO,
8736 p_comp_cal_enabled IN NUMBER DEFAULT SYS_NO,
8737 p_level_value_enabled IN NUMBER DEFAULT SYS_NO,
8738 p_level_assoc_enabled IN NUMBER DEFAULT SYS_NO,
8739 p_booking_enabled IN NUMBER DEFAULT SYS_NO,
8740 p_shipment_enabled IN NUMBER DEFAULT SYS_NO,
8741 p_mfg_fct_enabled IN NUMBER DEFAULT SYS_NO,
8742 p_cs_data_enabled IN NUMBER DEFAULT SYS_NO,
8743 p_cs_dummy IN VARCHAR2 DEFAULT NULL,
8744 p_cs_refresh IN NUMBER DEFAULT SYS_NO,
8745 p_parent_request_id IN NUMBER DEFAULT -1,
8746 p_calling_module IN NUMBER DEFAULT G_DP)
8747
8748 IS
8749 lv_errbuf varchar2(4000):='';
8750 lv_retcode number;
8751
8752
8753
8754 BEGIN
8755
8756 MSC_CL_PRE_PROCESS.LAUNCH_MONITOR(
8757 ERRBUF => lv_errbuf,
8758 RETCODE => lv_retcode,
8759 p_instance_id => p_instance_id ,
8760 p_timeout => p_timeout ,
8761 p_batch_size => p_batch_size ,
8762 p_total_worker_num => p_total_worker_num ,
8763 p_cal_enabled => p_cal_enabled ,
8764 p_dmd_class_enabled => p_dmd_class_enabled ,
8765 p_tp_enabled => p_tp_enabled ,
8766 p_ctg_enabled => p_ctg_enabled ,
8767 p_item_enabled => p_item_enabled ,
8768 p_item_cat_enabled => p_item_cat_enabled ,
8769 p_item_rollup => p_item_rollup ,
8770 p_bom_enabled => p_bom_enabled ,
8771 p_uom_enabled => p_uom_enabled ,
8772 p_uom_conv_enabled => p_uom_conv_enabled ,
8773 p_curr_conv_enabled => p_curr_conv_enabled ,
8774 p_setup_enabled => p_setup_enabled ,
8775 p_fiscal_cal_enabled => p_fiscal_cal_enabled ,
8776 p_comp_cal_enabled => p_comp_cal_enabled ,
8777 p_level_value_enabled => p_level_value_enabled ,
8778 p_level_assoc_enabled => p_level_assoc_enabled ,
8779 p_booking_enabled => p_booking_enabled ,
8780 p_shipment_enabled => p_shipment_enabled ,
8781 p_mfg_fct_enabled => p_mfg_fct_enabled ,
8782 p_list_price_enabled => p_list_price_enabled ,
8783 p_cs_data_enabled => p_cs_data_enabled ,
8784 p_cs_refresh => p_cs_refresh ,
8785 p_parent_request_id => p_parent_request_id ,
8786 p_calling_module => p_calling_module);
8787
8788
8789
8790 ERRBUF := lv_errbuf;
8791 RETCODE := lv_retcode;
8792
8793
8794
8795 END;
8796
8797 END MSD_CL_PRE_PROCESS;