DBA Data[Home] [Help]

PACKAGE BODY: APPS.MSC_SCE_LOADS_PKG

Source


1 PACKAGE BODY msc_sce_loads_pkg AS
2 /* $Header: MSCXLDB.pls 120.20.12010000.2 2008/05/07 09:59:16 hbinjola ship $ */
3 
4   G_DAY_DESC               varchar2(80);
5   G_USER_IS_ADMIN          number;
6   SYS_YES         CONSTANT number := 1;
7   SYS_NO          CONSTANT number := 2;
8 
9   G_OVERWRITE_OF  varchar2(1) := nvl(fnd_profile.value('MSC_X_OVERWRITE_OF'),'N');
10   G_MSC_CP_DEBUG  VARCHAR2(10) := NVL(FND_PROFILE.VALUE('MSC_CP_DEBUG'), '0');
11    --Consigned CVMI Enh : Bug # 4562914
12   G_CVMI_PROFILE  VARCHAR2(1)  := NVL(FND_PROFILE.VALUE('MSC_X_CVMI_CA_MAND'), 'N') ;
13 
14 PROCEDURE get_user_id (
15   p_int_control_number IN NUMBER,
16   p_user_id OUT NOCOPY NUMBER
17 ) IS
18 BEGIN
19    SELECT usr.user_id
20      INTO p_user_id
21      FROM fnd_user usr,
22      ecx_doclogs ecx
23      WHERE usr.user_name = upper(ecx.username)
24      AND ecx.internal_control_number = p_int_control_number;
25 EXCEPTION
26    WHEN OTHERS THEN
27       p_user_id := -1;
28 END get_user_id;
29 
30 -- This procesure prints out debug information
31 PROCEDURE LOG_DEBUG(
32     p_debug_info IN VARCHAR2
33   )IS
34   BEGIN
35     IF ( g_msc_cp_debug= '1' OR g_msc_cp_debug = '2') THEN
36       FND_FILE.PUT_LINE(FND_FILE.LOG, p_debug_info);
37     END IF;
38      --dbms_output.put_line(p_debug_info); --ut
39   EXCEPTION
40   WHEN OTHERS THEN
41      RAISE;
42 END LOG_DEBUG;
43 
44 Function is_user_admin( pUSER_ID   in  number)
45 return number
46 IS
47 lv_admin     number;
48 BEGIN
49 
50     select 1
51       into lv_admin
52       from fnd_user_resp_groups  furg,
53            fnd_responsibility_vl  frv
54      where furg.USER_ID = pUSER_ID
55        and frv.RESPONSIBILITY_NAME like '%Supply Chain Collaboration Administrator%'
56        and frv.APPLICATION_ID = 724
57        and frv.APPLICATION_ID = furg.RESPONSIBILITY_APPLICATION_ID
58        and frv.RESPONSIBILITY_ID = furg.RESPONSIBILITY_ID
59        and trunc(nvl(furg.end_date,sysdate)) >= trunc(sysdate)
60        and rownum = 1;
61 
62        return lv_admin;
63 
64 EXCEPTION
65   when others then
66      return SYS_NO;
67 END is_user_admin;
68 
69 PROCEDURE update_errors (
70   p_header_id IN NUMBER,
71   p_language  IN VARCHAR2,
72   p_build_err IN NUMBER,
73   p_date_format IN VARCHAR2
74   , p_consumption_advice_exists OUT NOCOPY BOOLEAN -- bug 3551850
75 ) IS
76    l_err_msg                  VARCHAR2(2000);
77    l_row_status               NUMBER;
78   l_posting_party            VARCHAR2(255);
79   l_min                      NUMBER;
80   l_max                      NUMBER;
81   l_loops_reqd               NUMBER;
82   l_start_line               NUMBER;
83   l_end_line                 NUMBER;
84   l_log_message              VARCHAR2(4000);
85   t_line_id                  lineidList;
86   t_line_id1                 lineidList;
87   t_order_type               lineidList;
88   t_err_line_id              lineidList;
89   t_log_line_id              lineidList;
90   t_log_item_name            itemList;
91   t_log_order_type           otdescList;
92   t_log_err_msg              errmsgList;
93 
94   t_pub                      publisherList;
95   t_pub_site                 pubsiteList;
96   t_cust                     customerList;
97   t_cust_site                custsiteList;
98   t_supp                     supplierList;
99   t_supp_site                suppsiteList;
100   t_order_type_desc          otdescList;
101   t_key_date                 keydateList;
102   t_bucket_type              bktypeList;
103   t_item_id                  numlist;
104   t_order_number             ordernumlist;
105   t_rel_number               relnumlist;
106   t_line_number              linenumlist;
107   t_end_order_number         endordlist;
108   t_end_order_rel_number     endrellist;
109   t_end_order_line_number    endlinelist;
110   t_tmp_line_id              lineidlist;
111   t_tmp_ot                   lineidlist;
112 
113   t_del_pub_id               numlist;
114   t_del_pub_site_id          numlist;
115   t_del_cust_id              numlist;
116   t_del_cust_site_id         numlist;
117   t_del_item_id              numlist;
118   t_del_supp_id              numlist;
119   t_del_supp_site_id         numlist;
120 
121   CURSOR c_dates (
122     p_header_id IN NUMBER,
123     p_start_line IN NUMBER,
124     p_end_line IN NUMBER,
125     p_date_format IN VARCHAR2
126   ) IS
127      SELECT l.line_id
128        FROM   msc_supdem_lines_interface l
129        WHERE  l.parent_header_id = p_header_id
130        AND    l.line_id BETWEEN p_start_line AND p_end_line
131        AND    NVL(l.row_status, G_PROCESS) = G_PROCESS
132        AND    checkdates(p_header_id,l.line_id,p_date_format) = 1;
133 
134   CURSOR c_err_msg(
135     p_header_id  IN Number,
136     p_start_line IN Number,
137     p_end_line   IN Number
138   ) IS
139      select line_id,
140        nvl(item_name,
141 	   nvl(owner_item_name,
142 	       nvl(customer_item_name,
143 		   supplier_item_name))),
144        substrb(order_type,1,80) ,
145        err_msg
146        from   msc_supdem_lines_interface
147        where  parent_header_id = p_header_id and
148        line_id between p_start_line and p_end_line and
149        row_status = 4;
150 
151   cursor c_exec_keys
152     (
153      p_header_id number,
154      p_language varchar2
155      ) is
156 	select distinct upper(ln.publisher_company),
157 	  upper(ln.publisher_site),
158 	  upper(ln.customer_company),
159 	  upper(ln.customer_site),
160 	  upper(ln.supplier_company),
161 	  upper(ln.supplier_site),
162 	  upper(ln.order_type),
163 	  ln.inventory_item_id,
164 	  ln.order_identifier,
165 	  ln.release_number,
166 	  ln.line_number,
167 	  ln.pegging_order_identifier,
168 	  ln.ref_release_number,
169 	  ln.ref_line_number
170 	  from msc_supdem_lines_interface ln,
171 	  fnd_lookup_values flv
172 	  where ln.parent_header_id = p_header_id
173 	  and nvl(ln.row_status, G_PROCESS) = G_SUCCESS
174 	  and flv.language = p_language
175 	  and flv.lookup_type = 'MSC_X_ORDER_TYPE'
176 	  and upper(flv.meaning) = upper(ln.order_type)
177 	  and flv.lookup_code in (G_PURCHASE_ORDER,
178 				  G_SALES_ORDER,
179 				  G_ASN,
180 				  G_SHIP_RECEIPT,
181 				  G_REQUISITION,
182 				  G_PO_ACKNOWLEDGEMENT)
183 	  and upper(ln.sync_indicator) = 'R';
184 
185   cursor c_onhand_keys
186     (
187      p_header_id number,
188      p_language varchar2
189      ) is
190 	select distinct upper(ln.publisher_company),
191 	  upper(ln.publisher_site),
192 	  upper(ln.customer_company),
193 	  upper(ln.customer_site),
194 	  upper(ln.supplier_company),
195 	  upper(ln.supplier_site),
196 	  upper(ln.order_type),
197 	  ln.inventory_item_id
198 	  from msc_supdem_lines_interface ln,
199 	  fnd_lookup_values flv
200 	  where ln.parent_header_id = p_header_id
201 	  and nvl(ln.row_status, G_PROCESS) = G_SUCCESS
202 	  and flv.language = p_language
203 	  and flv.lookup_type = 'MSC_X_ORDER_TYPE'
204 	  and upper(flv.meaning) = upper(ln.order_type)
205 	  and flv.lookup_code in (G_ALLOC_ONHAND, g_unallocated_onhand)
206 	  and upper(ln.sync_indicator) = 'R';
207 
208   CURSOR c_work_order_keys
209     (
210      p_header_id NUMBER,
211      p_language VARCHAR2
212      ) IS
213         SELECT DISTINCT Upper(ln.publisher_company),
214           Upper(ln.publisher_site),
215           Upper(ln.customer_company),
216           Upper(ln.customer_site),
217           Upper(ln.order_type),
218           ln.inventory_item_id,
219           ln.order_identifier
220           FROM msc_supdem_lines_interface ln,
221           fnd_lookup_values flv
222           WHERE ln.parent_header_id = p_header_id
223           and nvl(ln.row_status, G_PROCESS) = G_SUCCESS
224           and flv.language = p_language
225           and flv.lookup_type = 'MSC_X_ORDER_TYPE'
226           and upper(flv.meaning) = upper(ln.order_type)
227           and flv.lookup_code = g_work_order
228           and upper(ln.sync_indicator) = 'R';
229 
230   cursor c_daily_keys
231     (
232      p_header_id number,
233      p_language varchar2,
234      p_date_format VARCHAR2
235      ) is
236 	select upper(ln.publisher_company),
237 	  upper(ln.publisher_site),
238 	  upper(ln.customer_company),
239 	  upper(ln.customer_site),
240 	  upper(ln.supplier_company),
241 	  upper(ln.supplier_site),
242 	  upper(ln.order_type),
243 	  ln.inventory_item_id,
244 	  trunc(to_date(ln.key_date,p_date_format)),
245 	  upper(ln.bucket_type)
246 	  from msc_supdem_lines_interface ln,
247 	  fnd_lookup_values flv,
248 	  fnd_lookup_values flv1
249 	  where ln.parent_header_id = p_header_id
250 	  and nvl(ln.row_status, G_PROCESS) = G_SUCCESS
251 	  and flv.language = p_language
252 	  and flv.lookup_type = 'MSC_X_ORDER_TYPE'
253 	  and upper(flv.meaning) = upper(ln.order_type)
254 	  and flv.lookup_code in (G_SALES_FORECAST,
255 				  G_ORDER_FORECAST,
256 				  G_SUPPLY_COMMIT,
257 				  G_HIST_SALES,
258 				  G_SELL_THRO_FCST,
259 				  G_SUPPLIER_CAP,
260 				  G_SAFETY_STOCK,
261 				  G_INTRANSIT,
262 				  g_replenishment,
263 				  g_proj_avai_bal)
264 	  and flv1.language = flv.language
265 	  and flv1.lookup_type = 'MSC_X_BUCKET_TYPE'
266 	  and flv1.lookup_code = G_DAY
267 	  and upper(flv1.meaning) = upper(ln.bucket_type)
268 	  and upper(ln.sync_indicator) = 'R'
269 	  union
270 	  select upper(ln.publisher_company),
271 	  upper(ln.publisher_site),
272 	  upper(ln.customer_company),
273 	  upper(ln.customer_site),
274 	  upper(ln.supplier_company),
275 	  upper(ln.supplier_site),
276 	  upper(ln.order_type),
277 	  ln.inventory_item_id,
278 	  trunc(to_date(ln.key_date,p_date_format)),
279 	  upper(ln.bucket_type)
280 	  from msc_supdem_lines_interface ln,
281 	  fnd_lookup_values flv
282 	  where ln.parent_header_id = p_header_id
283 	  and nvl(ln.row_status, G_PROCESS) = G_SUCCESS
284 	  and flv.language = p_language
285 	  and flv.lookup_type = 'MSC_X_ORDER_TYPE'
286 	  and upper(flv.meaning) = upper(ln.order_type)
287 	  and flv.lookup_code in (G_SALES_FORECAST,
288 				  G_ORDER_FORECAST,
289 				  G_SUPPLY_COMMIT,
290 				  G_HIST_SALES,
291 				  G_SELL_THRO_FCST,
292 				  G_SUPPLIER_CAP,
293 				  G_SAFETY_STOCK,
294 				  G_INTRANSIT,
295 				  g_replenishment,
296 				  g_proj_avai_bal)
297 	  and ln.bucket_type is null
298 	  and upper(ln.sync_indicator) = 'R';
299 
300   cursor c_weekly_keys
301     (
302      p_header_id number,
303      p_language varchar2,
304      p_date_format VARCHAR2
305      ) is
306 	select upper(ln.publisher_company),
307 	  upper(ln.publisher_site),
308 	  upper(ln.customer_company),
309 	  upper(ln.customer_site),
310 	  upper(ln.supplier_company),
311 	  upper(ln.supplier_site),
312 	  upper(ln.order_type),
313 	  ln.inventory_item_id,
314 	  trunc(to_date(ln.key_date,p_date_format)),
315 	  upper(ln.bucket_type)
316 	  from msc_supdem_lines_interface ln,
317 	  fnd_lookup_values flv,
318 	  fnd_lookup_values flv1
319 	  where ln.parent_header_id = p_header_id
320 	  and nvl(ln.row_status, G_PROCESS) = G_SUCCESS
321 	  and flv.language = p_language
322 	  and flv.lookup_type = 'MSC_X_ORDER_TYPE'
323 	  and upper(flv.meaning) = upper(ln.order_type)
324 	  and flv.lookup_code in (G_SALES_FORECAST,
325 				  G_ORDER_FORECAST,
326 				  G_SUPPLY_COMMIT,
327 				  G_HIST_SALES,
328 				  G_SELL_THRO_FCST,
329 				  G_SUPPLIER_CAP,
330 				  G_SAFETY_STOCK,
331 				  G_INTRANSIT,
332 				  g_replenishment,
333 				  g_proj_avai_bal)
334 	  and flv1.language = flv.language
335 	  and flv1.lookup_type = 'MSC_X_BUCKET_TYPE'
336 	  and flv1.lookup_code = G_WEEK
337 	  and upper(flv1.meaning) = upper(ln.bucket_type)
338 	  and upper(ln.sync_indicator) = 'R';
339 
340   cursor c_monthly_keys
341     (
342      p_header_id number,
343      p_language varchar2,
344      p_date_format VARCHAR2
345      ) is
346 	select upper(ln.publisher_company),
347 	  upper(ln.publisher_site),
348 	  upper(ln.customer_company),
349 	  upper(ln.customer_site),
350 	  upper(ln.supplier_company),
351 	  upper(ln.supplier_site),
352 	  upper(ln.order_type),
353 	  ln.inventory_item_id,
354 	  trunc(to_date(ln.key_date,p_date_format)),
355 	  upper(ln.bucket_type)
356 	  from msc_supdem_lines_interface ln,
357 	  fnd_lookup_values flv,
358 	  fnd_lookup_values flv1
359 	  where ln.parent_header_id = p_header_id
360 	  and nvl(ln.row_status, G_PROCESS) = G_SUCCESS
361 	  and flv.language = p_language
362 	  and flv.lookup_type = 'MSC_X_ORDER_TYPE'
363 	  and upper(flv.meaning) = upper(ln.order_type)
364 	  and flv.lookup_code in (G_SALES_FORECAST,
365 				  G_ORDER_FORECAST,
366 				  G_SUPPLY_COMMIT,
367 				  G_HIST_SALES,
368 				  G_SELL_THRO_FCST,
369 				  G_SUPPLIER_CAP,
370 				  G_SAFETY_STOCK,
371 				  G_INTRANSIT,
372 				  g_replenishment,
373 				  g_proj_avai_bal)
374 	  and flv1.language = flv.language
375 	  and flv1.lookup_type = 'MSC_X_BUCKET_TYPE'
376 	  and flv1.lookup_code = G_MONTH
377 	  and upper(flv1.meaning) = upper(ln.bucket_type)
378 	  and upper(ln.sync_indicator) = 'R';
379 
380    CURSOR key_dates(p_header_id IN number,
381 		    p_start_line IN number,
382 		    p_end_line IN number,
383 		    p_language IN varchar2)
384      IS
385 	SELECT ln.line_id, flv.lookup_code
386 	  FROM msc_supdem_lines_interface ln
387 	       , fnd_lookup_values flv
388 	  WHERE ln.parent_header_id = p_header_id
389 	  AND   ln.line_id BETWEEN p_start_line AND p_end_line
390 	  AND   Nvl(ln.row_status, g_process) = g_process
391 	  AND   flv.lookup_type = 'MSC_X_ORDER_TYPE'
392 	  AND   flv.language = p_language
393 	  AND   Upper(flv.meaning) = Upper(ln.order_type);
394 
395    --Added for bug 3103879
396   CURSOR c_delete_supply_commit (
397     p_header_id IN NUMBER,
398     p_language IN VARCHAR2
399   ) IS
400   SELECT DISTINCT c.company_id,
401     cs.company_site_id,
402     c1.company_id,
403     cs1.company_site_id,
404     ln.inventory_item_id
405     FROM msc_companies c,
406     msc_company_sites cs,
407     msc_companies c1,
408     msc_company_sites cs1,
409     fnd_lookup_values flv,
410     msc_supdem_lines_interface ln
411     WHERE ln.parent_header_id = p_header_id
412     AND ln.row_status = G_SUCCESS
413     AND Upper(c.company_name) = Upper(ln.publisher_company)
414     AND c.company_id = cs.company_id
415     AND Upper(cs.company_site_name) = Upper(ln.publisher_site)
416     AND Upper(c1.company_name) = Upper(ln.customer_company)
417     AND c1.company_id = cs1.company_id
418     AND Upper(cs1.company_site_name) = Upper(ln.customer_site)
419     AND flv.lookup_type = 'MSC_X_ORDER_TYPE'
420     AND Upper(flv.meaning) = Upper(ln.order_type)
421     AND flv.language = p_language
422     AND flv.lookup_code = g_supply_commit;
423 
424    --Added for bug 3304493
425   CURSOR c_delete_order_forecast (
426     p_header_id IN NUMBER,
427     p_language IN VARCHAR2
428   ) IS
429   SELECT DISTINCT c.company_id,
430                   cs.company_site_id,
431                   c1.company_id,
432                   cs1.company_site_id,
433                   ln.inventory_item_id
434    FROM msc_companies c,
435         msc_company_sites cs,
436         msc_companies c1,
437         msc_company_sites cs1,
438         fnd_lookup_values flv,
439         msc_supdem_lines_interface ln
440   WHERE ln.parent_header_id = p_header_id
441     AND ln.row_status = G_SUCCESS
442     AND Upper(c.company_name) = Upper(ln.publisher_company)
443     AND c.company_id = cs.company_id
444     AND Upper(cs.company_site_name) = Upper(ln.publisher_site)
445     AND Upper(c1.company_name) = Upper(ln.supplier_company)
446     AND c1.company_id = cs1.company_id
447     AND Upper(cs1.company_site_name) = Upper(ln.supplier_site)
448     AND flv.lookup_type = 'MSC_X_ORDER_TYPE'
449     AND Upper(flv.meaning) = Upper(ln.order_type)
450     AND flv.language = p_language
451     AND flv.lookup_code = G_ORDER_FORECAST;
452 
453   calendar_is_not_seeded number;
454 
455 BEGIN
456 /* BEGIN
457       select 1 into calendar_is_not_seeded
458 	from dual
459 	where exists ( select 'exists'
460 		       from msc_calendar_dates
461 		       where calendar_code = 'CP-Mon-70'
462 		       and exception_set_id = -1
463 		       and sr_instance_id = 0 );
464    EXCEPTION
465       WHEN OTHERS THEN
466 	 calendar_is_not_seeded := 0;
467    END;
468 
469    if calendar_is_not_seeded = 0 then
470       begin
471 	 select min(line_id) into l_min
472 	   from msc_supdem_lines_interface
473 	   where parent_header_id = p_header_id;
474       exception
475 	 when others then
476 	    return;
477       end;
478 
479       l_err_msg := get_message('MSC', 'MSC_X_CALENDAR_NOT_SEEDED', p_language);
480 
481       update msc_supdem_lines_interface
482 	set row_status = 4,
483         err_msg = substrb(l_err_msg,1,1000)
484 	where parent_header_id = p_header_id
485 	and line_id = l_min;
486 
487       update msc_supdem_lines_interface
488 	set row_status = 1
489 	where parent_header_id = p_header_id
490 	and line_id <> l_min;
491 
492    end if; */
493 
494     p_consumption_advice_exists := FALSE; -- bug 3551850
495 
496    BEGIN
497       SELECT min(line_id), max(line_id)
498 	INTO   l_min, l_max
499 	FROM   msc_supdem_lines_interface
500 	WHERE  parent_header_id = p_header_id;
501    EXCEPTION
502       WHEN NO_DATA_FOUND THEN
503 	 return;
504    END;
505 
506    IF l_min IS NULL OR l_max IS NULL THEN
507      RETURN;
508    END IF;
509 
510    l_loops_reqd := 1 + trunc((l_max - l_min)/G_BATCH_SIZE);
511 
512    FOR i IN 1..l_loops_reqd LOOP
513       l_start_line := l_min + ((i-1)*G_BATCH_SIZE);
514       IF ((l_min -1 + i*G_BATCH_SIZE) <= l_max) THEN
515 	 l_end_line := l_min -1 + i*G_BATCH_SIZE;
516        ELSE
517 	 l_end_line := l_max;
518       END IF;
519 
520 
521       --=========================================================================
522       -- select and validate the order type first
523       --=========================================================================
524 
525       SELECT line_id
526 	BULK COLLECT INTO t_line_id
527 	FROM   msc_supdem_lines_interface
528 	WHERE  parent_header_id = p_header_id AND
529 	line_id BETWEEN l_start_line and l_end_line;
530 
531 
532       IF t_line_id IS NOT NULL AND t_line_id.COUNT > 0 THEN
533 	 --======================================================================
534 	 -- Validation: Check if order type is valid
535 	 --======================================================================
536 
537 
538 	 l_err_msg := get_message('MSC', 'MSC_X_INVALID_ORDER_TYPE', p_language);
539 	 FORALL j IN t_line_id.FIRST..t_line_id.LAST
540 	   UPDATE msc_supdem_lines_interface ln
541 	   SET ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
542 	   WHERE ln.parent_header_id = p_header_id AND
543 	   ln.line_id = t_line_id(j) AND
544 	   NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
545 	   NOT EXISTS (SELECT l.lookup_code
546 		       FROM   fnd_lookup_values l
547 		       WHERE  l.lookup_type = 'MSC_X_ORDER_TYPE' AND
548 		       UPPER(l.meaning) = NVL(UPPER(ln.order_type), G_NULL_STRING) AND
549 		       l.language = p_language);
550 
551       END IF;
552 
553       --====================================================================================
554 
555       	SELECT flv.lookup_code,
556 	       ln.line_id
557 	BULK COLLECT into t_order_type, t_line_id
558 	FROM fnd_lookup_values flv,
559 	     msc_supdem_lines_interface ln
560 	WHERE flv.lookup_type = 'MSC_X_ORDER_TYPE' and
561 	      flv.language = p_language and
562 	      Upper(flv.meaning(+)) = Upper(ln.order_type) and
563 	      nvl(ln.row_status, G_PROCESS) = G_PROCESS and
564 	      ln.parent_header_id = p_header_id and
565 	      ln.line_id between l_start_line and l_end_line;
566 
567       l_log_message := substrb(get_message('MSC','MSC_X_API_NOW_PROCESSING',p_language),1,500)
568 	|| '... ' || to_char(l_start_line - l_min + 1) || ' ' ||
569 	substrb(get_message('MSC','MSC_X_API_THROUGH',p_language),1,40) ||
570 	' ' || to_char(l_end_line -l_min + 1);
571 
572       log_message(l_log_message);
573 
574       IF t_line_id IS NOT NULL AND t_line_id.COUNT > 0 THEN
575 	 --=============================================================
576 	 -- Independent Errors for sync indicator 'R' and 'D'
577 	 --
578 	 -- Validation: Check if the posting party exists
579 	 --=======================================================================
580 	 l_err_msg := get_message('MSC', 'MSC_X_INVALID_POSTING_PARTY', p_language);
581 	 FORALL j IN t_line_id.FIRST..t_line_id.LAST
582 	   UPDATE msc_supdem_lines_interface ln
583 	   SET ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
584 	   WHERE ln.parent_header_id = p_header_id AND
585 	   ln.line_id = t_line_id(j) AND
586 	   NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
587 	   NOT EXISTS (SELECT c.company_id
588 		       FROM msc_companies c
589  		       WHERE UPPER(c.company_name) = UPPER(NVL(ln.posting_party_name, G_NULL_STRING)));
590 
591 	 --=======================================================================
592 	 -- Validation: Check if the sync indicator is valid
593 	 --=======================================================================
594 	 l_err_msg := get_message('MSC', 'MSC_X_INVALID_SYNC_INDICATOR', p_language);
595 	 FORALL j IN t_line_id.FIRST..t_line_id.LAST
596 	   UPDATE msc_supdem_lines_interface ln
597 	   SET ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
598 	   WHERE ln.parent_header_id = p_header_id AND
599 	   ln.line_id = t_line_id(j) AND
600 	   NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
601 	   UPPER(NVL(ln.sync_indicator, G_NULL_STRING)) NOT IN ('R','D');
602 
603 	 --======================================================================
604 	 -- Validation: Check if atleast one item is provided in the flat-
605 	 -- file or XML document.
606 	 --======================================================================
607 	 l_err_msg := get_message('MSC', 'MSC_X_INVALID_NO_ITEM', p_language);
608 	 FORALL j IN t_line_id.FIRST..t_line_id.LAST
609 	   update msc_supdem_lines_interface ln
610 	   set    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
611 	   where ln.parent_header_id = p_header_id and
612 	   ln.line_id = t_line_id(j) and
613 	   NVL(ln.row_status, G_PROCESS) = G_PROCESS and
614 	   ln.item_name is NULL and
615 	   ln.owner_item_name is NULL and
616 	   ln.supplier_item_name is NULL and
617 	   ln.customer_item_name is NULL;
618 
619 	 --======================================================================
620 	 -- Validation: Check if order type is valid
621 	 --======================================================================
622 	 l_err_msg := get_message('MSC', 'MSC_X_INVALID_ORDER_TYPE', p_language);
623 	 FORALL j IN t_line_id.FIRST..t_line_id.LAST
624 	   UPDATE msc_supdem_lines_interface ln
625 	   SET ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
626 	   WHERE ln.parent_header_id = p_header_id AND
627 	   ln.line_id = t_line_id(j) AND
628 	   NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
629 	   t_order_type(j) is NULL;
630 
631 --	   NOT EXISTS (SELECT l.lookup_code
632 --		       FROM   fnd_lookup_values l
633 --		       WHERE  l.lookup_type = 'MSC_X_ORDER_TYPE' AND
634 --		       UPPER(l.meaning) = NVL(UPPER(ln.order_type), G_NULL_STRING) AND
635 --		       l.language = p_language);
636 
637     -- added the following code for bug 3551580
638 	 FOR j IN t_line_id.FIRST..t_line_id.LAST LOOP
639        IF (t_order_type(j) = G_CONS_ADVICE AND ( NOT p_consumption_advice_exists)) THEN
640          p_consumption_advice_exists := TRUE;
641 	   END IF;
642      END LOOP;
643 
644 	log_debug('Validated order type');
645 	log_debug('Profile :MSC: Order Number-CA Mandatory for CVMI = '||G_CVMI_PROFILE);
646 	--- Consigned CVMI Enhancements : Bug # 4247230
647       --================================================================================
648 	/* ADD  Validation: Check if Order Number is provided if profile option :
649 	 MSC: Order Number-CA Mandatory for CVMI is set to YES */
650       --================================================================================
651 
652    IF (Nvl(fnd_profile.value('MSC_X_CVMI_CA_MAND'),'N') = 'Y') THEN
653 
654        log_debug('Order number is Mandatory for Consumption Advice');
655 	l_err_msg := get_message('MSC', 'MSC_X_INVALID_ORDER_NUMBER', p_language);
656 
657 	 FORALL j IN t_line_id.FIRST..t_line_id.LAST
658 	   UPDATE msc_supdem_lines_interface ln
659 	   SET ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
660 	   WHERE ln.parent_header_id = p_header_id AND
661 	   ln.line_id = t_line_id(j) AND
662 	   NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
663 	   ln.order_identifier is NULL AND
664 	   t_order_type(j) = G_CONS_ADVICE ;
665 
666       log_debug('Validated order number');
667    END IF;
668 
669 	 --=======================================================================
670 	 -- Validation: Check if publisher company exists
671 	 --=======================================================================
672 	 IF p_build_err = 1 THEN
673 	    l_err_msg := get_message('MSC', 'MSC_X_INVALID_PUBLISHER', p_language);
674 	      FORALL j IN t_line_id.FIRST..t_line_id.LAST
675 	      UPDATE msc_supdem_lines_interface ln
676 	      SET ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
677 	      WHERE ln.parent_header_id = p_header_id AND
678 	      ln.line_id = t_line_id(j) AND
679 	      NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
680 	      ln.publisher_company IS NOT NULL AND
681 	      NOT EXISTS (SELECT c.company_id
682 			  FROM msc_companies c
683 			  WHERE UPPER(c.company_name) = UPPER(ln.publisher_company));
684 
685 	 --=============================================================================
686 	 -- Validate the company to be consistent if more than two feild has been given
687 	 --=============================================================================
688 	    l_err_msg := get_message('MSC', 'MSC_X_PUBLISH_UNMATCH', p_language); --change for export start
689 	      FORALL j IN t_line_id.FIRST..t_line_id.LAST
690 	      UPDATE msc_supdem_lines_interface ln
691 	      SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
692 	      WHERE  ln.parent_header_id = p_header_id AND
693 	      ln.line_id = t_line_id(j) AND
694 	      NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
695 	      ln.publisher_company <> NVL(DECODE(t_order_type(j),G_REQUISITION,ln.customer_company,
696 	       					       G_ORDER_FORECAST,ln.customer_company,
697 	      		     G_HIST_SALES,ln.posting_party_name,
698 	       					       G_SELL_THRO_FCST,ln.posting_party_name,
699 	       					       G_ALLOC_ONHAND,ln.customer_company,
700 	       					       G_PURCHASE_ORDER,ln.customer_company,
701 	       					       G_SHIP_RECEIPT,ln.customer_company,
702 	       					       G_SUPPLY_COMMIT,ln.supplier_company,
703 	       					       G_SUPPLIER_CAP,ln.supplier_company,
704 	       					       G_SAFETY_STOCK,ln.supplier_company,
705 	       					       G_SALES_ORDER,ln.supplier_company,
706 	       					       G_ASN,ln.supplier_company,
707 	       					       G_WORK_ORDER,ln.supplier_company,
708 	       					       G_REPLENISHMENT,ln.supplier_company,
709 	       					       G_PO_ACKNOWLEDGEMENT,ln.supplier_company,
710 	       					       G_SALES_FORECAST,ln.posting_party_name,
711 	       					       G_UNALLOCATED_ONHAND,nvl(customer_company, supplier_company),
712        G_CONS_ADVICE, nvl(customer_company, supplier_company)
713 	       					 ),publisher_company);
714 						/* sbala Add CA */
715 
716 
717          --=============================================================================
718          -- Validate the company sites to be consistent if more than two feild has been given
719          --=============================================================================
720             l_err_msg := get_message('MSC', 'MSC_X_PUBLISH_SITE_UNMATCH', p_language);
721               FORALL j IN t_line_id.FIRST..t_line_id.LAST
722               UPDATE msc_supdem_lines_interface ln
723               SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
724               WHERE  ln.parent_header_id = p_header_id AND
725 	      ln.line_id = t_line_id(j) AND
726 	      NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
727 	      ln.publisher_site <> NVL(DECODE(t_order_type(j),G_REQUISITION,ln.customer_site,
728 	      					       G_ORDER_FORECAST,ln.customer_site,
729 	    	       G_HIST_SALES,  decode(posting_party_name,customer_company,customer_site,supplier_company,supplier_site,null),
730 	      					       G_SELL_THRO_FCST,decode(posting_party_name,customer_company,customer_site,supplier_company,supplier_site,null),
731 	      					       G_ALLOC_ONHAND,ln.customer_site,
732 	       					       G_PURCHASE_ORDER,ln.customer_site,
733 	       					       G_SHIP_RECEIPT,ln.customer_site,
734 	       					       G_SUPPLY_COMMIT,ln.supplier_site,
735 	       					       G_SUPPLIER_CAP,ln.supplier_site,
736 	       					       G_SAFETY_STOCK,ln.supplier_site,
737 	       					       G_SALES_ORDER,ln.supplier_site,
738 	       					       G_ASN,ln.supplier_site,
739 	       					       G_WORK_ORDER,ln.supplier_site,
740 	       					       G_REPLENISHMENT,ln.supplier_site,
741 	       					       G_PO_ACKNOWLEDGEMENT,ln.supplier_site,
742 	       					       G_SALES_FORECAST, decode(posting_party_name,customer_company,customer_site,supplier_company,supplier_site,null),
743 	       					       G_UNALLOCATED_ONHAND,nvl(customer_site, supplier_site),
744              G_CONS_ADVICE, nvl(customer_site, supplier_site)
745 	       					 ),publisher_site);
746 
747 						/* sbala add CA */
748 	--==============================================================================
749 	-- Populate the Publisher Information
750 	--============================================================================
751 	      FORALL j IN t_line_id.FIRST..t_line_id.LAST
752 	      UPDATE msc_supdem_lines_interface ln
753 	      SET    ln.publisher_company = NVL(decode(t_order_type(j),
754               			                        G_SALES_FORECAST, ln.posting_party_name,
755                                 		        G_ORDER_FORECAST, ln.customer_company,
756                                         	        G_SUPPLY_COMMIT, ln.supplier_company,
757                                 		G_HIST_SALES, ln.posting_party_name,
758                                         		G_SELL_THRO_FCST, ln.posting_party_name,
759                                         		G_SUPPLIER_CAP, ln.supplier_company,
760                                         		G_SAFETY_STOCK, ln.supplier_company,
761                                         		G_ALLOC_ONHAND, ln.customer_company,
762                                         		G_UNALLOCATED_ONHAND,
763                                            		nvl(ln.customer_company, ln.supplier_company),
764                                         		G_PURCHASE_ORDER, ln.customer_company,
765                                         		G_SALES_ORDER, ln.supplier_company,
766                                         		G_ASN, ln.supplier_company,
767                                         		G_SHIP_RECEIPT, ln.customer_company,
768                                         		G_REPLENISHMENT, ln.supplier_company,
769                                         		G_REQUISITION, ln.customer_company,
770 	                                		G_PO_ACKNOWLEDGEMENT, ln.supplier_company,
771                                         		G_WORK_ORDER, ln.supplier_company),ln.publisher_company),
772 	             					ln.publisher_site = NVL(decode(t_order_type(j),
773                                         		G_SALES_FORECAST,
774                                            		decode(ln.posting_party_name,
775                                                   		ln.customer_company,
776                                                   		ln.customer_site,
777                                                   		ln.supplier_company,
778                                                   		ln.supplier_site,
779                                                   		null),
780                                         		G_ORDER_FORECAST, ln.customer_site,
781                                         		G_SUPPLY_COMMIT, ln.supplier_site,
782                                         		G_HIST_SALES,
783 					decode(ln.posting_party_name,
784                                 		ln.customer_company,
785                                        		ln.customer_site,
786                                        		ln.supplier_company,
787                                             		ln.supplier_site,
788                                            		null),
789 
790                                         		G_SELL_THRO_FCST,
791                                         		        decode(ln.posting_party_name,
792                                                                   ln.customer_company,
793                                                                   ln.customer_site,
794                                                                   ln.supplier_company,
795                                                                   ln.supplier_site,
796                                                                   null),
797                                         		G_SUPPLIER_CAP, ln.supplier_site,
798                                         		G_SAFETY_STOCK, ln.supplier_site,
799                                         		G_ALLOC_ONHAND, ln.customer_site,
800                                         		G_UNALLOCATED_ONHAND,
801                                            		nvl(ln.customer_site, ln.supplier_site),
802                                         		G_PURCHASE_ORDER, ln.customer_site,
803                                         		G_SALES_ORDER, ln.supplier_site,
804                                         		G_ASN, ln.supplier_site,
805                                         		G_SHIP_RECEIPT, ln.customer_site,
806                                         		G_REPLENISHMENT, ln.supplier_site,
807                                         		G_REQUISITION, ln.customer_site,
808 	                                		G_PO_ACKNOWLEDGEMENT, ln.supplier_site,
809                                         		G_WORK_ORDER, ln.supplier_site,
810 G_CONS_ADVICE, nvl(ln.customer_site,
811                   ln.supplier_site)),
812 			ln.publisher_site)
813 	      WHERE  ln.parent_header_id = p_header_id AND
814 	             ln.line_id = t_line_id(j) AND
815                      NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
816                      ln.publisher_company IS NOT NULL AND
817                      ln.publisher_site IS NOT NULL;
818 
819 	      --======================================================================
820 	      -- Validation: Check if Posting Party is one of the Trading partners
821               -- added for bug # 2565412
822 	      --======================================================================
823 	     if (G_USER_IS_ADMIN <> SYS_YES) then
824 		/* only for users who do not have SC Admin Responsibility */
825 		l_err_msg := get_message('MSC', 'MSC_X_INVALID_PUBLISHER', p_language);
826 	        FORALL j IN t_line_id.FIRST..t_line_id.LAST
827 		  UPDATE msc_supdem_lines_interface ln
828 		  SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000),
829 			 ln.row_status = G_FAILURE
830 		  WHERE  ln.parent_header_id = p_header_id AND
831 			 ln.line_id = t_line_id(j) AND
832 			 NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
833 			 not exists ( select 1
834 			                    from dual
835 			                   where upper(ln.posting_party_name) =
836 					   upper(nvl(ln.supplier_company,G_NULL_STRING))
837 				    union select 1
838 				            from dual
839 			                   where upper(ln.posting_party_name) =
840 					   upper(nvl(ln.customer_company,G_NULL_STRING))
841 				    union select 1
842 				            from dual
843 			                   where upper(ln.posting_party_name) =
844 					   upper(nvl(ln.publisher_company,G_NULL_STRING))
845 					   );
846 	     end if;
847 
848                     /* sbala ADD CA */
849 
850       --=============================================================================
851       -- Remove the extra Columns . Added for export/import
852       --=============================================================================
853 	     FORALL j IN t_line_id.FIRST..t_line_id.LAST
854 	     UPDATE msc_supdem_lines_interface ln
855 	     SET ln.customer_company = DECODE(t_order_type(j),
856                                        G_SALES_FORECAST,
857                                            DECODE(ln.posting_party_name,
858                                                   ln.customer_company,
859                                                   null,
860                                                   ln.customer_company),
861                                         G_ORDER_FORECAST, null,
862                                         G_HIST_SALES,
863 						DECODE(ln.posting_party_name,
864                                                   ln.customer_company,
865                                                   null,
866                                                   ln.customer_company),
867                                         G_SELL_THRO_FCST,
868 						DECODE(ln.posting_party_name,
869                                                   ln.customer_company,
870                                                   null,
871                                                   ln.customer_company),
872                                         G_ALLOC_ONHAND, null,
873                                         G_UNALLOCATED_ONHAND, null,
874                                         G_PURCHASE_ORDER, null,
875                                         G_SHIP_RECEIPT, null,
876                                         G_REQUISITION, null,
877 					G_SAFETY_STOCK, null,
878 					g_proj_avai_bal, NULL,
879                                         ln.customer_company),
880                    ln.customer_site = DECODE(t_order_type(j),
881                                         G_SALES_FORECAST,
882                                            DECODE(ln.posting_party_name,
883                                                   ln.customer_company,
884                                                   null,
885                                                   ln.customer_site),
886                                         G_ORDER_FORECAST, null,
887                                         G_HIST_SALES,
888 						DECODE(ln.posting_party_name,
889                                                   ln.customer_company,
890                                                   null,
891                                                   ln.customer_site),
892                                         G_SELL_THRO_FCST,
893 						DECODE(ln.posting_party_name,
894                                                   ln.customer_company,
895                                                   null,
896                                                   ln.customer_site),
897                                         G_ALLOC_ONHAND, null,
898                                         G_UNALLOCATED_ONHAND, null,
899 					G_CONS_ADVICE, null,
900                                         G_PURCHASE_ORDER, null,
901                                         G_SHIP_RECEIPT, null,
902                                         G_REQUISITION, null,
903 					G_SAFETY_STOCK, null,
904 					g_proj_avai_bal, NULL,
905                                         ln.customer_site),
906                    ln.supplier_company = DECODE(t_order_type(j),
907                                         G_SALES_FORECAST,
908                                           DECODE(ln.posting_party_name,
909                                                  ln.supplier_company,
910                                                  null,
911                                                  ln.supplier_company),
912 					G_HIST_SALES,
913 						DECODE(ln.posting_party_name,
914                                                  ln.supplier_company,
915                                                  null,
916                                                  ln.supplier_company),
917 					G_SELL_THRO_FCST,
918 						DECODE(ln.posting_party_name,
919                                                  ln.supplier_company,
920                                                  null,
921                                                  ln.supplier_company),
922                                         G_SUPPLY_COMMIT, null,
923                                         G_SUPPLIER_CAP, null,
924                                         G_SAFETY_STOCK, null,
925 					g_proj_avai_bal, NULL,
926                                         G_UNALLOCATED_ONHAND, null,
927 				        G_CONS_ADVICE, null,
928                                         G_SALES_ORDER, null,
929                                         G_ASN, null,
930                                         G_REPLENISHMENT, null,
931 					G_PO_ACKNOWLEDGEMENT, null,
932 					/* Added for work order support */
933 					G_WORK_ORDER, NULL,
934                                         ln.supplier_company),
935                    ln.supplier_site = DECODE(t_order_type(j),
936                                         G_SALES_FORECAST,
937                                           DECODE(ln.posting_party_name,
938                                                  ln.supplier_company,
939                                                  null,
940                                                  ln.supplier_site),
941 					G_HIST_SALES,
942 					  DECODE(ln.posting_party_name,
943                                                  ln.supplier_company,
944                                                  null,
945                                                  ln.supplier_site),
946 					G_SELL_THRO_FCST,
947 					  DECODE(ln.posting_party_name,
948                                                  ln.supplier_company,
949                                                  null,
950                                                  ln.supplier_site),
951                                         G_SUPPLY_COMMIT, null,
952                                         G_SUPPLIER_CAP, null,
953                                         G_SAFETY_STOCK, null,
954 					g_proj_avai_bal, NULL,
955                                         G_UNALLOCATED_ONHAND, null,
956 				        G_CONS_ADVICE, null,
957                                         G_SALES_ORDER, null,
958                                         G_ASN, null,
959                                         G_REPLENISHMENT, null,
960 					G_PO_ACKNOWLEDGEMENT, null,
961 					/* Added for work order support */
962 					G_WORK_ORDER, NULL,
963 					G_CONS_ADVICE, NULL,
964                                         ln.supplier_site)
965 	     WHERE ln.parent_header_id = p_header_id AND
966 	           ln.line_id = t_line_id(j) AND
967 	           NVL(ln.row_status, G_PROCESS) = G_PROCESS  AND
968                    ln.publisher_company IS NOT NULL AND
969                    ln.publisher_site IS NOT NULL;
970       END IF; --change for export end
971 
972 	/* sbala ADD CA */
973       --======================================================================
974       -- Validation: Check if bucket type is valid
975       --======================================================================
976       l_err_msg := get_message('MSC', 'MSC_X_INVALID_BUCKET_TYPE', p_language);
977       FORALL j IN t_line_id.FIRST..t_line_id.LAST
978         UPDATE msc_supdem_lines_interface ln
979         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
980         WHERE  ln.parent_header_id = p_header_id AND
981                ln.line_id = t_line_id(j) AND
982                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
983                ln.bucket_type IS NOT NULL AND
984                NOT EXISTS (SELECT l.lookup_code
985                            FROM   fnd_lookup_values l
986                            WHERE  l.lookup_type = 'MSC_X_BUCKET_TYPE' AND
987                                   UPPER(l.meaning) = NVL(UPPER(ln.bucket_type),
988                                                          G_NULL_STRING) AND
989 		 	          l.language = p_language);
990 
991       --======================================================================
992       -- Validation: Check if date formats are valid
993       --======================================================================
994       l_err_msg := get_message('MSC', 'MSC_X_INVALID_DATE_FORMAT', p_language);
995 
996       OPEN c_dates(p_header_id, l_start_line, l_end_line,p_date_format);
997       FETCH c_dates BULK COLLECT INTO t_err_line_id;
998       CLOSE c_dates;
999 
1000       IF t_err_line_id IS NOT NULL AND t_err_line_id.COUNT > 0 THEN
1001         FORALL j in t_err_line_id.FIRST..t_err_line_id.LAST
1002           UPDATE msc_supdem_lines_interface ln
1003           SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1004           WHERE  ln.parent_header_id = p_header_id AND
1005                  ln.line_id = t_err_line_id(j) AND
1006                  NVL(ln.row_status, G_PROCESS) = G_PROCESS;
1007       END IF;
1008 
1009 
1010       --=======================================================================
1011       -- End of independent errors for sync indicator D
1012       -- Set row status = G_FAILURE for records with sync indicator 'D'
1013       -- where err_msg is not null
1014       --=======================================================================
1015       forall j IN t_line_id.first..t_line_id.last
1016 	UPDATE msc_supdem_lines_interface ln
1017 	SET ln.row_status = g_failure
1018 	WHERE ln.err_msg IS NOT NULL
1019 	  AND Upper(ln.sync_indicator) = 'D'
1020 	  AND ln.parent_header_id = p_header_id
1021 	  AND ln.line_id = t_line_id(j);
1022 
1023       --=======================================================================
1024       -- Dependent validations for sync indicator D
1025       --
1026       --Validation: Item check for records with sync indicator 'D'
1027       --========================================================================
1028       l_err_msg := get_message('MSC', 'MSC_X_INVALID_ITEM', p_language);
1029       FORALL j IN t_line_id.FIRST..t_line_id.LAST
1030 	update msc_supdem_lines_interface ln
1031 	set    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1032 	where  ln.parent_header_id = p_header_id and
1033 	       ln.line_id = t_line_id(j) and
1034 	       NVL(ln.row_status, G_PROCESS) = G_PROCESS and
1035 	       ln.sync_indicator = 'D' and
1036 	       not exists (select i.inventory_item_id
1037 		  	   from   msc_items i
1038 			   where  i.item_name = ln.item_name
1039 			   UNION
1040 			   select msi.inventory_item_id
1041 			   from   msc_system_items msi
1042 			   where  msi.item_name = NVL(ln.owner_item_name,
1043                                                       NVL(ln.customer_item_name,
1044                                                            ln.supplier_item_name)) and
1045                                   msi.plan_id = -1
1046 			   UNION
1047 			   select mis.inventory_item_id
1048 			   from   msc_item_suppliers mis
1049 			   where  mis.supplier_item_name = NVL(ln.owner_item_name,
1050                                                              NVL(ln.customer_item_name,
1051                                                                ln.supplier_item_name)) and
1052                                   mis.plan_id = -1
1053 			   UNION
1054 			   select mic.inventory_item_id
1055 			   from   msc_item_customers mic
1056 			   where  mic.customer_item_name = NVL(ln.owner_item_name,
1057                                                              NVL(ln.customer_item_name,
1058                                                                ln.supplier_item_name)) and
1059 	                          mic.plan_id = -1 );
1060 
1061       --======================================================================
1062       -- Validation: Check if publisher site exists
1063       --======================================================================
1064       l_err_msg := get_message('MSC', 'MSC_X_INVALID_PUBLISHER_SITE', p_language);
1065       FORALL j IN t_line_id.FIRST..t_line_id.LAST
1066         UPDATE msc_supdem_lines_interface ln
1067         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1068         WHERE  ln.parent_header_id = p_header_id AND
1069 	       ln.line_id = t_line_id(j) AND
1070 	       Upper(ln.sync_indicator) = 'D' AND
1071                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1072                NOT EXISTS (SELECT cs.company_site_id
1073                          FROM   msc_company_sites cs,
1074                                 msc_companies c
1075                          WHERE  UPPER(c.company_name) = UPPER(ln.publisher_company) AND
1076                                 c.company_id = cs.company_id AND
1077 			        UPPER(cs.company_site_name) = UPPER(ln.publisher_site));
1078 
1079       --========================================================
1080       -- Validation: Check if customer company exists
1081       --========================================================
1082       l_err_msg := get_message('MSC', 'MSC_X_INVALID_CUSTOMER', p_language);
1083       FORALL j in t_line_id.FIRST..t_line_id.LAST
1084 	UPDATE msc_supdem_lines_interface ln
1085 	SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1086 	WHERE  ln.parent_header_id = p_header_id AND
1087                ln.line_id = t_line_id(j) AND
1088                Upper(ln.sync_indicator) = 'D' AND
1089 	       NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1090                ln.customer_company IS NOT NULL AND
1091                NOT EXISTS (SELECT c.company_id
1092 			   FROM   msc_companies c,
1093                                     msc_companies c1,
1094                                     msc_company_relationships r
1095                              WHERE  UPPER(c.company_name) = UPPER(ln.customer_company) and
1096                                     UPPER(c1.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) and
1097                                     r.subject_id = c1.company_id and
1098                                     r.object_id = c.company_id and
1099                                     r.relationship_type = 1);
1100 
1101       --========================================================
1102       -- Validation: Check if customer site exists
1103       --========================================================
1104       l_err_msg := get_message('MSC', 'MSC_X_INVALID_CUST_SITE', p_language);
1105       FORALL j in t_line_id.FIRST..t_line_id.LAST
1106 	UPDATE msc_supdem_lines_interface ln
1107 	SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1108 	WHERE  ln.parent_header_id = p_header_id AND
1109 	       ln.line_id = t_line_id(j) AND
1110 	       Upper(ln.sync_indicator) = 'D' AND
1111                  NVL(ln.row_status, G_PROCESS)  = G_PROCESS AND
1112                  ln.customer_company IS NOT NULL AND
1113                  NOT EXISTS (SELECT cs.company_site_id
1114                              FROM   msc_company_sites cs,
1115                                     msc_companies c
1116                              WHERE  UPPER(c.company_name) = UPPER(ln.customer_company) AND
1117                                     c.company_id = cs.company_id AND
1118                                     UPPER(cs.company_site_name) = UPPER(NVL(ln.customer_site,
1119                                                                         G_NULL_STRING)));
1120 
1121       --========================================================
1122       -- Validation: Check if supplier company exists
1123       --========================================================
1124       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SUPPLIER', p_language);
1125       FORALL j in t_line_id.FIRST..t_line_id.LAST
1126 	UPDATE msc_supdem_lines_interface ln
1127 	SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1128 	WHERE  ln.parent_header_id = p_header_id AND
1129 	       ln.line_id = t_line_id(j) AND
1130 	       Upper(ln.sync_indicator) = 'D' AND
1131                  NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1132                  ln.supplier_company IS NOT NULL AND
1133                  NOT EXISTS (SELECT c.company_id
1134                              FROM   msc_companies c,
1135                                     msc_companies c1,
1136                                     msc_company_relationships r
1137                              WHERE  UPPER(c.company_name) = UPPER(ln.supplier_company) and
1138                                     UPPER(c1.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) and
1139                                     r.subject_id = c1.company_id and
1140                                     r.object_id = c.company_id and
1141                                     r.relationship_type = 2);
1142 
1143       --========================================================
1144       -- Validation: Check if supplier site exists
1145       --========================================================
1146       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SUPP_SITE', p_language);
1147       FORALL j in t_line_id.FIRST..t_line_id.LAST
1148         UPDATE msc_supdem_lines_interface ln
1149         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1150         WHERE  ln.parent_header_id = p_header_id AND
1151 	       ln.line_id = t_line_id(j) AND
1152 	       Upper(ln.sync_indicator) = 'D' AND
1153                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1154                ln.supplier_company IS NOT NULL AND
1155                NOT EXISTS (SELECT cs.company_site_id
1156                            FROM   msc_company_sites cs,
1157                                   msc_companies c
1158                            WHERE  UPPER(c.company_name) = UPPER(ln.supplier_company) AND
1159                                   c.company_id = cs.company_id AND
1160                                   UPPER(cs.company_site_name) = UPPER(NVL(ln.supplier_site,
1161                                                                       G_NULL_STRING)));
1162 
1163       --============================================================================
1164       -- Populate the Key Date. This is required for c_delete in PROCEDURE validate
1165       -- Verify that the bucket end date is greater than the key date.
1166       --============================================================================
1167       OPEN key_dates(p_header_id, l_start_line, l_end_line, p_language);
1168       FETCH key_dates bulk collect INTO t_tmp_line_id, t_tmp_ot;
1169       CLOSE key_dates;
1170 
1171       IF t_tmp_line_id IS NOT NULL AND t_tmp_line_id.COUNT > 0 THEN
1172 	 forall j IN t_tmp_line_id.first..t_tmp_line_id.last
1173 
1174             UPDATE msc_supdem_lines_interface ln
1175            SET    ln.key_date = Decode(t_tmp_ot(j),
1176                                       G_WORK_ORDER,ln.wip_end_date,
1177                                       G_PURCHASE_ORDER,  -- jguo
1178                                           DECODE(ln.shipping_control,
1179                                                   1, ln.receipt_date,
1180                                           2, ln.ship_date,
1181                                           ln.receipt_date),
1182                                       G_SHIP_RECEIPT, ln.receipt_date,
1183                                       G_ORDER_FORECAST,-- jguo
1184                                           DECODE(ln.shipping_control,
1185                                                   1, ln.receipt_date,
1186                                           2, ln.ship_date,
1187                                           ln.receipt_date),
1188                                       G_REQUISITION, -- jguo
1189                                           DECODE(ln.shipping_control,
1190                                                   1, ln.receipt_date,
1191                                           2, ln.ship_date,
1192                                           ln.receipt_date),
1193                                       G_SELL_THRO_FCST, ln.ship_date,
1194                                       G_SUPPLIER_CAP, ln.ship_date,
1195                                       G_HIST_SALES, ln.new_schedule_date,
1196                                       G_SAFETY_STOCK, ln.new_schedule_date,
1197                                       G_ALLOC_ONHAND, ln.new_schedule_date,
1198                                        G_UNALLOCATED_ONHAND, ln.new_schedule_date,
1199                                        g_safety_stock, ln.new_schedule_date,
1200                                        g_proj_avai_bal, ln.new_schedule_date,
1201                                        G_CONS_ADVICE, ln.new_schedule_date,
1202                                       G_SUPPLY_COMMIT, -- jguo Nvl(ln.ship_date, ln.receipt_date),
1203                                           DECODE(ln.shipping_control,
1204                                               1, ln.receipt_date,
1205                                                   2, ln.ship_date,
1206                                               Nvl(ln.receipt_date, ln.ship_date)),
1207                                       G_ASN, -- jguo Nvl(ln.ship_date, ln.receipt_date),
1208                                           DECODE(ln.shipping_control,
1209                                               1, ln.receipt_date,
1210                                           2, ln.receipt_date,
1211                                               nvl(ln.receipt_date, ln.ship_date)),
1212                                       G_SALES_FORECAST, -- jguo Nvl(ln.ship_date, ln.receipt_date),
1213                                           DECODE(ln.shipping_control,
1214                                               1, ln.ship_date,
1215                                                   2, ln.ship_date,
1216                                           Nvl(ln.ship_date, ln.receipt_date)),
1217                                       G_SALES_ORDER, -- jguo Nvl(ln.ship_date, ln.receipt_date),
1218                                       DECODE(ln.shipping_control,
1219                                                   1, ln.receipt_date,
1220                                           2, ln.ship_date,
1221                                           Nvl(ln.receipt_date, ln.ship_date)), -- jguo
1222                                       NULL)
1223            WHERE  ln.parent_header_id = p_header_id
1224            AND    ln.line_id = t_tmp_line_id(j)
1225            AND    Upper(ln.sync_indicator) = 'D';
1226 
1227 
1228 
1229       END IF;
1230 
1231 
1232 	/* sbala ADD CA */
1233       --======================================================================
1234       -- Validation: Check if key date <= new schedule end date
1235       --======================================================================
1236       l_err_msg := get_message('MSC', 'MSC_X_INVALID_END_DATE', p_language);
1237       FORALL j IN t_line_id.FIRST..t_line_id.LAST
1238         UPDATE msc_supdem_lines_interface ln
1239         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1240         WHERE  ln.parent_header_id = p_header_id AND
1241 	       ln.line_id = t_line_id(j) AND
1242 	       Upper(ln.sync_indicator) = 'D' AND
1243                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1244                ln.key_date IS NOT NULL AND
1245                ln.new_schedule_end_date IS NOT NULL AND
1246                to_date(ln.new_schedule_end_date, p_date_format) <
1247 		 to_date(ln.key_date, p_date_format);
1248 
1249 
1250       --=======================================================================
1251       -- End of Validations for sync indicator 'D'
1252       --=======================================================================
1253       forall j IN t_line_id.first..t_line_id.last
1254 	UPDATE msc_supdem_lines_interface ln
1255 	SET ln.row_status = g_failure
1256 	WHERE ln.err_msg IS NOT NULL
1257 	  AND Upper(ln.sync_indicator) = 'D'
1258 	  AND ln.parent_header_id = p_header_id
1259 	  AND ln.line_id = t_line_id(j);
1260 
1261       forall j IN t_line_id.first..t_line_id.last
1262 	UPDATE msc_supdem_lines_interface ln
1263 	SET ln.row_status = g_success
1264 	WHERE ln.err_msg IS NULL
1265 	  AND Upper(ln.sync_indicator) = 'D'
1266 	  AND ln.parent_header_id = p_header_id
1267 	  AND ln.line_id = t_line_id(j);
1268 
1269       END IF;
1270 
1271       --=======================================================================
1272       -- Other Independent validations for sync indicator 'R'
1273       --=======================================================================
1274       --Perform remaining validations for records with sync indicator equal to 'R'
1275       SELECT line_id
1276 	BULK COLLECT INTO t_line_id
1277 	FROM msc_supdem_lines_interface
1278 	WHERE sync_indicator = 'R' AND
1279 	NVL(row_status, G_PROCESS) = G_PROCESS AND
1280 	parent_header_id = p_header_id AND
1281 	line_id BETWEEN l_start_line and l_end_line;
1282 
1283       IF t_line_id IS NOT NULL AND t_line_id.COUNT > 0 THEN
1284 	 --=======================================================================
1285 	 -- Validation: Check that exactly two parties are involved in the transaction
1286 	 --=======================================================================
1287 	 l_err_msg := get_message('MSC', 'MSC_X_INVALID_MULTIPLE_PARTIES', p_language);
1288 	 FORALL j IN t_line_id.FIRST..t_line_id.LAST
1289 	   UPDATE msc_supdem_lines_interface ln
1290 	   SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1291 	   WHERE  ln.parent_header_id = p_header_id AND
1292                   ln.line_id = t_line_id(j) AND
1293                   NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1294                   ln.publisher_company IS NOT NULL and
1295                   ln.supplier_company IS NOT NULL and
1296                   ln.customer_company IS NOT NULL;
1297 
1298 	 --========================================================
1299          -- Validation: Check if posted quantity is positive
1300          --========================================================
1301 	 l_err_msg := get_message('MSC', 'MSC_X_INVALID_QUANTITY', p_language);
1302 	 FORALL j in t_line_id.FIRST..t_line_id.LAST
1303 	   UPDATE msc_supdem_lines_interface ln
1304 	   SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1305 	   WHERE  ln.parent_header_id = p_header_id AND
1306                   ln.line_id = t_line_id(j) AND
1307                   nVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1308                   NVL(ln.quantity,-1) < 0;
1309 
1310 	 --========================================================
1311 	 -- Validation: Check if ship from company exists
1312 	 --========================================================
1313 	 l_err_msg := get_message('MSC', 'MSC_X_INVALID_SHIP_FROM_PARTY', p_language);
1314 	 FORALL j in t_line_id.FIRST..t_line_id.LAST
1315 	   UPDATE msc_supdem_lines_interface ln
1316 	   SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1317 	   WHERE  ln.parent_header_id = p_header_id AND
1318                   ln.line_id = t_line_id(j) AND
1319                   NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1320                   ln.ship_from_party_name IS NOT NULL AND
1321                   NOT EXISTS (SELECT c.company_id
1322 			      FROM   msc_companies c
1323 			      WHERE  UPPER(c.company_name) = UPPER(ln.ship_from_party_name));
1324 
1325 	 --========================================================
1326 	 -- Validation: Check if ship to company exists
1327 	 --========================================================
1328 	 l_err_msg := get_message('MSC', 'MSC_X_INVALID_SHIP_TO_PARTY', p_language);
1329 	 FORALL j in t_line_id.FIRST..t_line_id.LAST
1330 	   UPDATE msc_supdem_lines_interface ln
1331 	   SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1332 	   WHERE  ln.parent_header_id = p_header_id AND
1333 	          ln.line_id = t_line_id(j) AND
1334         	  NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1335 	          ln.ship_to_party_name IS NOT NULL AND
1336                   NOT EXISTS (SELECT c.company_id
1337                               FROM   msc_companies c
1338                               WHERE  UPPER(c.company_name) = UPPER(ln.ship_to_party_name));
1339 
1340 	--========================================================
1341         -- Validation: Check if end order publisher exists
1342         --========================================================
1343 	l_err_msg := get_message('MSC', 'MSC_X_INVALID_END_ORDER_PUB', p_language);
1344 	FORALL j in t_line_id.FIRST..t_line_id.LAST
1345 	  UPDATE msc_supdem_lines_interface ln
1346 	  SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1347 	  WHERE  ln.parent_header_id = p_header_id AND
1348                  ln.line_id = t_line_id(j) AND
1349                  NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1350                  ln.end_order_publisher_name IS NOT NULL AND
1351                  NOT EXISTS (SELECT c.company_id
1352                              FROM   msc_companies c
1353                              WHERE  UPPER(c.company_name) = UPPER(ln.end_order_publisher_name));
1354 
1355       --========================================================
1356       -- Validation: Check if end order type is valid
1357       --========================================================
1358       l_err_msg := get_message('MSC', 'MSC_X_INVALID_END_ORDER_TYPE', p_language);
1359       FORALL j in t_line_id.FIRST..t_line_id.LAST
1360         UPDATE msc_supdem_lines_interface ln
1361         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1362         WHERE  ln.parent_header_id = p_header_id AND
1363                ln.line_id = t_line_id(j) AND
1364                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1365                ln.pegging_order_identifier IS NOT NULL AND
1366                ln.end_order_type IS NULL;
1367 
1368       FORALL j in t_line_id.FIRST..t_line_id.LAST
1369         UPDATE msc_supdem_lines_interface ln
1370         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1371         WHERE  ln.parent_header_id = p_header_id AND
1372                ln.line_id = t_line_id(j) AND
1373                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1374                ln.end_order_type IS NOT NULL AND
1375                NOT EXISTS (SELECT l.lookup_code
1376                            FROM   fnd_lookup_values l
1377                            WHERE  l.lookup_type = 'MSC_X_ORDER_TYPE' AND
1378                                   UPPER(l.meaning) = NVL(UPPER(ln.end_order_type), G_NULL_STRING) AND
1379 		       	          l.language = p_language);
1380 
1381 
1382       --======================================================================
1383       -- Validation: Check if uom codes are valid. If no uom code is
1384       --                specified the default uom 'Ea' is used.
1385       --======================================================================
1386       l_err_msg := get_message('MSC', 'MSC_X_INVALID_UOM_CODE', p_language);
1387       FORALL j IN t_line_id.FIRST..t_line_id.LAST
1388         UPDATE msc_supdem_lines_interface ln
1389         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1390         WHERE  ln.parent_header_id = p_header_id AND
1391                ln.line_id = t_line_id(j) AND
1392                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1393                NOT EXISTS (SELECT u.uom_code
1394                            FROM   msc_units_of_measure u
1395                            WHERE  u.uom_code = NVL(ln.uom, G_UOM));
1396 
1397       --=======================================================================
1398       --End of independent errors for sync indicator R
1399       --=======================================================================
1400       forall j IN t_line_id.first..t_line_id.last
1401 	UPDATE msc_supdem_lines_interface ln
1402 	SET ln.row_status = g_failure
1403 	WHERE ln.err_msg IS NOT NULL
1404 	  AND Upper(ln.sync_indicator) = 'R'
1405 	  AND ln.parent_header_id = p_header_id
1406 	  AND ln.line_id = t_line_id(j);
1407 
1408       --=======================================================================
1409       -- Dependent validations for sync indicator R
1410       --=======================================================================
1411       --Performing MOE validations
1412       if p_build_err = 2 THEN
1413 	 SELECT flv.lookup_code,
1414 	        ln.line_id
1415 	   BULK COLLECT into t_order_type, t_line_id1
1416 	   FROM   fnd_lookup_values flv,
1417 	          msc_supdem_lines_interface ln
1418 	   WHERE  flv.lookup_type = 'MSC_X_ORDER_TYPE' and
1419                   flv.language = p_language and
1420                   flv.meaning = ln.order_type and
1421                   nvl(ln.row_status, G_PROCESS) = G_PROCESS and
1422                   ln.parent_header_id = p_header_id and
1423                   ln.line_id between l_start_line and l_end_line;
1424 
1425 	 IF t_line_id1 IS NOT NULL AND t_line_id1.COUNT > 0 THEN
1426 	    l_err_msg := get_message('MSC', 'MSC_X_INVALID_FEW_PARTIES', p_language);
1427 	    FORALL j in t_line_id1.FIRST..t_line_id1.LAST
1428 	      UPDATE msc_supdem_lines_interface ln
1429 	      SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1430 	      WHERE  ln.parent_header_id = p_header_id AND
1431                      ln.line_id = t_line_id1(j) AND
1432                      NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1433                      (ln.customer_company IS NULL OR
1434                      ln.supplier_company IS NULL) AND
1435                      t_order_type(j) NOT IN (g_unallocated_onhand, g_work_order, g_safety_stock, g_proj_avai_bal, G_CONS_ADVICE);
1436 
1437 	    FORALL j in t_line_id1.FIRST..t_line_id1.LAST
1438 	      UPDATE msc_supdem_lines_interface ln
1439 	      SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1440 	      WHERE  ln.parent_header_id = p_header_id AND
1441 	             ln.line_id = t_line_id1(j) AND
1442                      NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1443                      ln.customer_company IS NULL AND
1444                      ln.supplier_company IS NULL AND
1445 		     t_order_type(j) IN (g_unallocated_onhand, g_work_order, g_safety_stock, g_proj_avai_bal, G_CONS_ADVICE);
1446 
1447 	    l_err_msg := get_message('MSC', 'MSC_X_INVALID_PROXY_SF', p_language);
1448 	    FORALL j in t_line_id1.FIRST..t_line_id1.LAST
1449 	      UPDATE msc_supdem_lines_interface ln
1450 	      SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1451 	      WHERE  ln.parent_header_id = p_header_id AND
1452                      ln.line_id = t_line_id1(j) AND
1453                      NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1454                      ln.customer_company <> ln.posting_party_name AND
1455                      ln.supplier_company <> ln.posting_party_name AND
1456                      G_SALES_FORECAST = t_order_type(j);
1457 
1458 	    FORALL j in t_line_id1.FIRST..t_line_id1.LAST
1459 	      UPDATE msc_supdem_lines_interface ln
1460 	      SET    ln.publisher_company = decode(t_order_type(j),
1461                                         G_SALES_FORECAST, ln.posting_party_name,
1462                                         G_ORDER_FORECAST, ln.customer_company,
1463                                         G_SUPPLY_COMMIT, ln.supplier_company,
1464                                         G_HIST_SALES, ln.posting_party_name,
1465                                         G_SELL_THRO_FCST, ln.posting_party_name,
1466                                         G_SUPPLIER_CAP, ln.supplier_company,
1467                                         G_ALLOC_ONHAND, ln.customer_company,
1468                                         G_UNALLOCATED_ONHAND,
1469 						   nvl(ln.customer_company, ln.supplier_company),
1470 					g_safety_stock,
1471 						   nvl(ln.customer_company, ln.supplier_company),
1472 					g_proj_avai_bal,
1473 						   nvl(ln.customer_company, ln.supplier_company),
1474 					G_CONS_ADVICE, nvl(ln.customer_company,
1475 							   ln.supplier_company),
1476                                         G_PURCHASE_ORDER, ln.customer_company,
1477                                         G_SALES_ORDER, ln.supplier_company,
1478                                         G_ASN, ln.supplier_company,
1479                                         G_SHIP_RECEIPT, ln.customer_company,
1480                                         G_REPLENISHMENT, ln.supplier_company,
1481                                         G_REQUISITION, ln.customer_company,
1482 	                                G_PO_ACKNOWLEDGEMENT, ln.supplier_company,
1483                                         G_WORK_ORDER, ln.supplier_company),
1484 	             ln.publisher_site = decode(t_order_type(j),
1485                                         G_SALES_FORECAST,
1486                                            decode(ln.posting_party_name,
1487                                                   ln.customer_company,
1488                                                   ln.customer_site,
1489                                                   ln.supplier_company,
1490                                                   ln.supplier_site,
1491                                                   null),
1492                                         G_ORDER_FORECAST, ln.customer_site,
1493                                         G_SUPPLY_COMMIT, ln.supplier_site,
1494                                         G_HIST_SALES,
1495 						decode(ln.posting_party_name,
1496                                                   ln.customer_company,
1497                                                   ln.customer_site,
1498                                                   ln.supplier_company,
1499                                                   ln.supplier_site,
1500                                                   null),
1501                                         G_SELL_THRO_FCST,
1502                                           decode(ln.posting_party_name,
1503                                                   ln.customer_company,
1504                                                   ln.customer_site,
1505                                                   ln.supplier_company,
1506                                                   ln.supplier_site,
1507                                                   null),
1508                                         G_SUPPLIER_CAP, ln.supplier_site,
1509                                         G_ALLOC_ONHAND, ln.customer_site,
1510                                         G_UNALLOCATED_ONHAND,
1511 	                                      nvl(ln.customer_site, ln.supplier_site),
1512 	                                g_safety_stock,
1513 	                                      nvl(ln.customer_site, ln.supplier_site),
1514 	                                g_proj_avai_bal,
1515 	                                      nvl(ln.customer_site, ln.supplier_site),
1516 					G_CONS_ADVICE,
1517 					nvl(ln.customer_site, ln.supplier_site),
1518                                         G_PURCHASE_ORDER, ln.customer_site,
1519                                         G_SALES_ORDER, ln.supplier_site,
1520                                         G_ASN, ln.supplier_site,
1521                                         G_SHIP_RECEIPT, ln.customer_site,
1522                                         G_REPLENISHMENT, ln.supplier_site,
1523                                         G_REQUISITION, ln.customer_site,
1524 	                                G_PO_ACKNOWLEDGEMENT, ln.supplier_site,
1525                                         G_WORK_ORDER, ln.supplier_site)
1526 	      WHERE  ln.parent_header_id = p_header_id AND
1527 	             ln.line_id = t_line_id1(j) AND
1528                      NVL(ln.row_status, G_PROCESS) = G_PROCESS;
1529 
1530 	      --======================================================================
1531 	      -- Validation: Check if Posting Party is one of the Trading partners
1532 	      --======================================================================
1533 	     if (G_USER_IS_ADMIN <> SYS_YES) then
1534 		/* only for users who do not have SC Admin Responsibility */
1535 		l_err_msg := get_message('MSC', 'MSC_X_INVALID_PUBLISHER', p_language);
1536 		FORALL j IN t_line_id1.FIRST..t_line_id1.LAST
1537 		  UPDATE msc_supdem_lines_interface ln
1538 		  SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000),
1539 			 ln.row_status = G_FAILURE
1540 		  WHERE  ln.parent_header_id = p_header_id AND
1541 			 ln.line_id = t_line_id1(j) AND
1542 			 NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1543 			 not exists ( select 1
1544 			                    from dual
1545 			                   where upper(ln.posting_party_name) =
1546 					   upper(nvl(ln.supplier_company,G_NULL_STRING))
1547 				    union select 1
1548 				            from dual
1549 			                   where upper(ln.posting_party_name) =
1550 					   upper(nvl(ln.customer_company,G_NULL_STRING))
1551 				    union select 1
1552 				            from dual
1553 			                   where upper(ln.posting_party_name) =
1554 					   upper(nvl(ln.publisher_company,G_NULL_STRING))
1555 					   );
1556 	     end if;
1557 
1558 		/* sbala ADD CA */
1559 	    FORALL j in t_line_id1.FIRST..t_line_id1.LAST
1560 	      UPDATE msc_supdem_lines_interface ln
1561 	      SET    ln.customer_company = decode(t_order_type(j),
1562                                        G_SALES_FORECAST,
1563                                            decode(ln.posting_party_name,
1564                                                   ln.customer_company,
1565                                                   null,
1566                                                   ln.customer_company),
1567                                         G_ORDER_FORECAST, null,
1568                                         G_HIST_SALES,
1569 				           decode(ln.posting_party_name,
1570                                                   ln.customer_company,
1571                                                   null,
1572                                                   ln.customer_company),
1573                                         G_SELL_THRO_FCST,
1574 						decode(ln.posting_party_name,
1575                                                   ln.customer_company,
1576                                                   null,
1577                                                   ln.customer_company),
1578                                         G_ALLOC_ONHAND, null,
1579 					G_UNALLOCATED_ONHAND, null,
1580 					g_safety_stock, NULL,
1581 					g_proj_avai_bal, NULL,
1582 					G_CONS_ADVICE, NULL,
1583                                         G_PURCHASE_ORDER, null,
1584                                         G_SHIP_RECEIPT, null,
1585                                         G_REQUISITION, null,
1586                                         ln.customer_company),
1587 	             ln.customer_site = decode(t_order_type(j),
1588                                         G_SALES_FORECAST,
1589                                            decode(ln.posting_party_name,
1590                                                   ln.customer_company,
1591                                                   null,
1592                                                   ln.customer_site),
1593                                         G_ORDER_FORECAST, null,
1594                                         G_HIST_SALES,
1595 					   decode(ln.posting_party_name,
1596                                                   ln.customer_company,
1597                                                   null,
1598                                                   ln.customer_site),
1599                                         G_SELL_THRO_FCST,
1600 				          decode(ln.posting_party_name,
1601                                                   ln.customer_company,
1602                                                   null,
1603                                                   ln.customer_site),
1604                                         G_ALLOC_ONHAND, null,
1605                                         G_UNALLOCATED_ONHAND, null,
1606                                         g_safety_stock, NULL,
1607 					g_proj_avai_bal, NULL,
1608 					G_PURCHASE_ORDER, null,
1609                                         G_SHIP_RECEIPT, null,
1610                                         G_REQUISITION, null,
1611 					G_CONS_ADVICE, null,
1612                                         ln.customer_site),
1613                      ln.supplier_company = decode(t_order_type(j),
1614                                         G_SALES_FORECAST,
1615                                           decode(ln.posting_party_name,
1616                                                  ln.supplier_company,
1617                                                  null,
1618                                                  ln.supplier_company),
1619 				        G_HIST_SALES,
1620 				          decode(ln.posting_party_name,
1621                                                  ln.supplier_company,
1622                                                  null,
1623                                                  ln.supplier_company),
1624 					G_SELL_THRO_FCST,
1625 					  decode(ln.posting_party_name,
1626                                                  ln.supplier_company,
1627                                                  null,
1628                                                  ln.supplier_company),
1629                                         G_SUPPLY_COMMIT, null,
1630                                         G_SUPPLIER_CAP, null,
1631                                         G_UNALLOCATED_ONHAND, null,
1632 					g_safety_stock, NULL,
1633 					g_proj_avai_bal, NULL,
1634 					G_CONS_ADVICE, null,
1635                                         G_SALES_ORDER, null,
1636                                         G_ASN, null,
1637                                         G_REPLENISHMENT, null,
1638 					G_PO_ACKNOWLEDGEMENT, null,
1639                                         G_WORK_ORDER, null,
1640                                         ln.supplier_company),
1641                      ln.supplier_site = decode(t_order_type(j),
1642                                         G_SALES_FORECAST,
1643                                           decode(ln.posting_party_name,
1644                                                  ln.supplier_company,
1645                                                  null,
1646                                                  ln.supplier_site),
1647 					G_HIST_SALES,
1648 					  decode(ln.posting_party_name,
1649                                                  ln.supplier_company,
1650                                                  null,
1651                                                  ln.supplier_site),
1652 					G_SELL_THRO_FCST,
1653 					  decode(ln.posting_party_name,
1654                                                  ln.supplier_company,
1655                                                  null,
1656                                                  ln.supplier_site),
1657                                         G_SUPPLY_COMMIT, null,
1658                                         G_SUPPLIER_CAP, null,
1659                                         G_UNALLOCATED_ONHAND, null,
1660 					G_CONS_ADVICE, null,
1661 					g_safety_stock, NULL,
1662 					g_proj_avai_bal, NULL,
1663 					G_SALES_ORDER, null,
1664                                         G_ASN, null,
1665                                         G_REPLENISHMENT, null,
1666 					G_PO_ACKNOWLEDGEMENT, null,
1667                                         G_WORK_ORDER, null,
1668                                         ln.supplier_site)
1669 	      WHERE  ln.parent_header_id = p_header_id AND
1670                      ln.line_id = t_line_id1(j) AND
1671                      NVL(ln.row_status, G_PROCESS) = G_PROCESS;
1672  /* sbala ADD CA */
1673 
1674 	    l_err_msg := get_message('MSC', 'MSC_X_INVALID_PUBLISHER', p_language);
1675 	    FORALL j IN t_line_id1.FIRST..t_line_id1.LAST
1676 	      UPDATE msc_supdem_lines_interface ln
1677 	      SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000),
1678 	             ln.row_status = G_FAILURE
1679 	      WHERE  ln.parent_header_id = p_header_id AND
1680                      ln.line_id = t_line_id1(j) AND
1681                      NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1682                      ln.publisher_company IS NOT NULL AND
1683                      NOT EXISTS (SELECT c.company_id
1684                                  FROM   msc_companies c
1685                                  WHERE  UPPER(c.company_name) = UPPER(ln.publisher_company));
1686 
1687 	 end if; -- if t_line_id1
1688       end if; -- if MOE
1689 
1690   --======================================================================
1691   -- Validation: Check if publisher site exists
1692   --======================================================================
1693   l_err_msg := get_message('MSC', 'MSC_X_INVALID_PUBLISHER_SITE', p_language);
1694   FORALL j IN t_line_id.FIRST..t_line_id.LAST
1695     UPDATE msc_supdem_lines_interface ln
1696     SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1697     WHERE  ln.parent_header_id = p_header_id AND
1698 	   ln.line_id = t_line_id(j) AND
1699 	   NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1700                NOT EXISTS (SELECT cs.company_site_id
1701                          FROM   msc_company_sites cs,
1702                                 msc_companies c
1703                          WHERE  UPPER(c.company_name) = UPPER(ln.publisher_company) AND
1704                                 c.company_id = cs.company_id AND
1705                                 UPPER(cs.company_site_name) = UPPER(ln.publisher_site));
1706 
1707       --========================================================
1708       -- Validation: Check if either customer company or the
1709       -- supplier company is populated if the order type is NOT
1710       -- unallocated onhand or work order.
1711       --             Check if both customer and supplier company
1712       -- is null for unallocated onhand records.
1713       --========================================================
1714       l_err_msg := get_message('MSC', 'MSC_X_NULL_SUBSCRIBER', p_language);
1715       FORALL j in t_line_id.FIRST..t_line_id.LAST
1716 	UPDATE msc_supdem_lines_interface ln
1717 	SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1718 	WHERE  ln.parent_header_id = p_header_id AND
1719 	        ln.line_id = t_line_id(j) AND
1720                  NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1721                  ln.customer_company IS NULL AND
1722 		 ln.supplier_company IS NULL AND
1723 		 not exists (SELECT 1
1724                                           FROM   fnd_lookup_values flv
1725                                           WHERE  flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
1726                                                  UPPER(flv.meaning) = UPPER(ln.order_type) AND
1727 					         flv.language = p_language AND
1728 						 flv.lookup_code in (G_UNALLOCATED_ONHAND,G_CONS_ADVICE,g_work_order,g_safety_stock,g_proj_avai_bal));
1729  /* sbala ADD CA */
1730       l_err_msg := get_message('MSC', 'MSC_X_INVALID_MULT_PARTIES_UO', p_language);
1731       FORALL j IN t_line_id.FIRST..t_line_id.LAST
1732         UPDATE msc_supdem_lines_interface ln
1733         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1734         WHERE  ln.parent_header_id = p_header_id AND
1735                ln.line_id = t_line_id(j) AND
1736                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1737                (ln.supplier_company IS NOT NULL or
1738                ln.customer_company IS NOT NULL) and
1739                (G_UNALLOCATED_ONHAND = (SELECT flv.lookup_code
1740                                        FROM   fnd_lookup_values flv
1741                                        WHERE  flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
1742                                               UPPER(flv.meaning) = UPPER(ln.order_type) AND
1743 					      flv.language = p_language) OR
1744 	        G_CONS_ADVICE = (SELECT flv.lookup_code
1745                                        FROM   fnd_lookup_values flv
1746                        WHERE  flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
1747                 UPPER(flv.meaning) = UPPER(ln.order_type) AND
1748                        flv.language = p_language) OR
1749 		g_safety_stock = (SELECT flv.lookup_code
1750                                     FROM   fnd_lookup_values flv
1751                                     WHERE  flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
1752                                            UPPER(flv.meaning) = UPPER(ln.order_type) AND
1753 				           flv.language = p_language) OR
1754 		g_proj_avai_bal = (SELECT flv.lookup_code
1755                                      FROM   fnd_lookup_values flv
1756                                      WHERE  flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
1757                                             UPPER(flv.meaning) = UPPER(ln.order_type) AND
1758 				            flv.language = p_language));
1759 	        /* sbala ADD CA */
1760       --========================================================
1761       -- Validation: Check if customer company exists
1762       --========================================================
1763       l_err_msg := get_message('MSC', 'MSC_X_INVALID_CUSTOMER', p_language);
1764       FORALL j in t_line_id.FIRST..t_line_id.LAST
1765 	UPDATE msc_supdem_lines_interface ln
1766 	SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1767 	WHERE  ln.parent_header_id = p_header_id AND
1768                ln.line_id = t_line_id(j) AND
1769                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1770                ln.customer_company IS NOT NULL AND
1771                NOT EXISTS (SELECT c.company_id
1772 			   FROM   msc_companies c,
1773                                     msc_companies c1,
1774                                     msc_company_relationships r
1775                              WHERE  UPPER(c.company_name) = UPPER(ln.customer_company) and
1776 			            UPPER(c1.company_name) = UPPER(NVL(ln.publisher_company,
1777 								       ln.posting_party_name)) and
1778                                     r.subject_id = c1.company_id and
1779                                     r.object_id = c.company_id and
1780                                     r.relationship_type = 1);
1781 
1782       --========================================================
1783       -- Validation: Check if customer site exists
1784       --========================================================
1785       l_err_msg := get_message('MSC', 'MSC_X_INVALID_CUST_SITE', p_language);
1786       FORALL j in t_line_id.FIRST..t_line_id.LAST
1787 	UPDATE msc_supdem_lines_interface ln
1788 	SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1789 	WHERE  ln.parent_header_id = p_header_id AND
1790                  ln.line_id = t_line_id(j) AND
1791                  NVL(ln.row_status, G_PROCESS)  = G_PROCESS AND
1792                  ln.customer_company IS NOT NULL AND
1793                  NOT EXISTS (SELECT cs.company_site_id
1794                              FROM   msc_company_sites cs,
1795                                     msc_companies c
1796                              WHERE  UPPER(c.company_name) = UPPER(ln.customer_company) AND
1797                                     c.company_id = cs.company_id AND
1798                                     UPPER(cs.company_site_name) = UPPER(NVL(ln.customer_site,
1799                                                                         G_NULL_STRING)));
1800 
1801       --========================================================
1802       -- Validation: Check if supplier company exists
1803       --========================================================
1804       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SUPPLIER', p_language);
1805       FORALL j in t_line_id.FIRST..t_line_id.LAST
1806 	UPDATE msc_supdem_lines_interface ln
1807 	SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1808 	WHERE  ln.parent_header_id = p_header_id AND
1809                  ln.line_id = t_line_id(j) AND
1810                  NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1811                  ln.supplier_company IS NOT NULL AND
1812                  NOT EXISTS (SELECT c.company_id
1813                              FROM   msc_companies c,
1814                                     msc_companies c1,
1815                                     msc_company_relationships r
1816                              WHERE  UPPER(c.company_name) = UPPER(ln.supplier_company) and
1817                                     UPPER(c1.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) and
1818                                     r.subject_id = c1.company_id and
1819                                     r.object_id = c.company_id and
1820                                     r.relationship_type = 2);
1821 
1822       --========================================================
1823       -- Validation: Check if supplier site exists
1824       --========================================================
1825       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SUPP_SITE', p_language);
1826       FORALL j in t_line_id.FIRST..t_line_id.LAST
1827         UPDATE msc_supdem_lines_interface ln
1828         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1829         WHERE  ln.parent_header_id = p_header_id AND
1830                ln.line_id = t_line_id(j) AND
1831                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1832                ln.supplier_company IS NOT NULL AND
1833                NOT EXISTS (SELECT cs.company_site_id
1834                            FROM   msc_company_sites cs,
1835                                   msc_companies c
1836                            WHERE  UPPER(c.company_name) = UPPER(ln.supplier_company) AND
1837                                   c.company_id = cs.company_id AND
1838                                   UPPER(cs.company_site_name) = UPPER(NVL(ln.supplier_site,
1839                                                                       G_NULL_STRING)));
1840 
1841       --========================================================
1842       -- Validation: Check if ship from site exists
1843       --========================================================
1844       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SHIP_FROM_SITE', p_language);
1845       FORALL j in t_line_id.FIRST..t_line_id.LAST
1846         UPDATE msc_supdem_lines_interface ln
1847         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1848         WHERE  ln.parent_header_id = p_header_id AND
1849                ln.line_id = t_line_id(j) AND
1850                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1851                ln.ship_from_party_name IS NOT NULL AND
1852                NOT EXISTS (SELECT cs.company_site_id
1853                            FROM   msc_company_sites cs,
1854                                   msc_companies c
1855                            WHERE  UPPER(c.company_name) = UPPER(ln.ship_from_party_name) AND
1856                                   c.company_id = cs.company_id AND
1857                                   UPPER(cs.company_site_name) = UPPER(NVL(ln.ship_from_party_site, G_NULL_STRING)));
1858 
1859 
1860       --========================================================
1861       -- Validation: Check if ship to site exists
1862       --========================================================
1863       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SHIP_TO_SITE', p_language);
1864       FORALL j in t_line_id.FIRST..t_line_id.LAST
1865         UPDATE msc_supdem_lines_interface ln
1866         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1867         WHERE  ln.parent_header_id = p_header_id AND
1868                ln.line_id = t_line_id(j) AND
1869                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1870                ln.ship_to_party_name IS NOT NULL AND
1871                NOT EXISTS (SELECT cs.company_site_id
1872                            FROM   msc_company_sites cs,
1873                                   msc_companies c
1874                            WHERE  UPPER(c.company_name) = UPPER(ln.ship_to_party_name) AND
1875                                   c.company_id = cs.company_id AND
1876                                   UPPER(cs.company_site_name) = UPPER(NVL(ln.ship_to_party_site, G_NULL_STRING)));
1877 
1878      --========================================================
1879      -- Validation: Check if end order publisher site exists
1880      --========================================================
1881      l_err_msg := get_message('MSC', 'MSC_X_INV_END_ORD_PUB_SITE', p_language);
1882      FORALL j in t_line_id.FIRST..t_line_id.LAST
1883        UPDATE msc_supdem_lines_interface ln
1884        SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1885        WHERE  ln.parent_header_id = p_header_id AND
1886                ln.line_id = t_line_id(j) AND
1887                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
1888                ln.end_order_publisher_name IS NOT NULL AND
1889                NOT EXISTS (SELECT cs.company_site_id
1890                            FROM   msc_company_sites cs,
1891                                   msc_companies c
1892                            WHERE  UPPER(c.company_name) = UPPER(ln.end_order_publisher_name) AND
1893                                   c.company_id = cs.company_id AND
1894                                   UPPER(cs.company_site_name) = UPPER(NVL(ln.end_order_publisher_site, G_NULL_STRING)));
1895 
1896       --========================================================================
1897       --Validation: Item check for records with sync indicator 'R'
1898       --========================================================================
1899       l_err_msg := get_message('MSC', 'MSC_X_INVALID_ITEM', p_language);
1900       FORALL j IN t_line_id.FIRST..t_line_id.LAST
1901         update msc_supdem_lines_interface ln
1902         set    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
1903         where  ln.parent_header_id = p_header_id and
1904                ln.line_id = t_line_id(j) and
1905                NVL(ln.row_status, G_PROCESS) = G_PROCESS and
1906                ln.sync_indicator = 'R' and
1907                not exists ( select i.inventory_item_id
1908                             from   msc_items i
1909                             where  i.item_name = ln.item_name
1910                             UNION
1911                             select msi.inventory_item_id
1912                             from   msc_system_items msi,
1913                                    msc_trading_partners part,
1914                                    msc_trading_partner_maps map,
1915                                    msc_company_sites cs,
1916                                    msc_companies c
1917                             where  msi.plan_id = -1 and
1918                                    msi.item_name = nvl(ln.owner_item_name,
1919                                                        nvl(ln.customer_item_name,
1920                                                            ln.supplier_item_name)) and
1921                                    msi.organization_id = part.sr_tp_id and
1922                                    msi.sr_instance_id = part.sr_instance_id and
1923                                    part.partner_type = 3 and
1924                                    part.partner_id = map.tp_key and
1925                                    map.map_type = 2 and
1926                                    map.company_key = cs.company_site_id and
1927                                    UPPER(cs.company_site_name) = UPPER(decode(ln.owner_item_name,
1928                                                                  null,
1929                                                                  decode(ln.customer_item_name,
1930                                                                         null,
1931                                                                         nvl(ln.supplier_site,
1932                                                                             ln.publisher_site),
1933                                                                         nvl(ln.customer_site,
1934                                                                             ln.publisher_site)),
1935                                                                  ln.publisher_site)) and
1936                                    cs.company_id = c.company_id and
1937                                    UPPER(c.company_name) = UPPER(decode(ln.owner_item_name,
1938                                                            null,
1939                                                            decode(ln.customer_item_name,
1940                                                                   null,
1941                                                                   nvl(ln.supplier_company,
1942                                                                       ln.publisher_company),
1943                                                                   nvl(ln.customer_company,
1944                                                                       ln.publisher_company)),
1945                                                            ln.publisher_company)) and
1946                                    NVL(part.company_id,1) = c.company_id  and
1947                                    ln.item_name IS NULL
1948                              UNION
1949                              select mis.inventory_item_id
1950                              from   msc_item_suppliers mis,
1951                                     msc_trading_partners mtp,
1952                                     msc_trading_partner_maps map,
1953                                     msc_trading_partner_maps map1,
1954                                     msc_trading_partner_maps map2,
1955                                     msc_company_relationships r,
1956                                     msc_company_sites cs,
1957                                     msc_companies c,
1958                                     msc_company_sites cs1
1959                              where  mis.plan_id = -1 and
1960                                     mis.supplier_item_name = nvl(ln.owner_item_name,
1961                                                                  ln.supplier_item_name) and
1962                                     mis.organization_id = mtp.sr_tp_id and
1963                                     mis.sr_instance_id = mtp.sr_instance_id and
1964                                     mtp.partner_id = map2.tp_key and
1965                                     map2.map_type = 2 and
1966                                     map2.company_key = cs1.company_site_id and
1967                                     cs1.company_id = 1 and
1968                                     mis.supplier_id = map.tp_key and
1969                                     mis.supplier_site_id = map1.tp_key and
1970                                     map.map_type = 1 and
1971                                     map.company_key = r.relationship_id and
1972                                     r.subject_id = 1 and
1973                                     r.object_id = c.company_id and
1974                                     r.relationship_type = 2 and
1975                                     UPPER(c.company_name) = UPPER(decode(ln.owner_item_name, null,
1976                                                             nvl(ln.supplier_company,
1977                                                                 ln.publisher_company),
1978                                                             ln.publisher_company)) and
1979                                     map1.map_type = 3 and
1980                                     map1.company_key = cs.company_site_id and
1981                                     UPPER(cs.company_site_name) = UPPER(decode(ln.owner_item_name, null,
1982                                                             nvl(ln.supplier_site,
1983                                                                 ln.publisher_site),
1984                                                             ln.publisher_site)) and
1985                                     cs.company_id = c.company_id   AND
1986                                     ln.item_name IS NULL
1987                              UNION
1988                              select mic.inventory_item_id
1989                              from   msc_item_customers mic,
1990                                     msc_trading_partner_maps map,
1991                                     msc_trading_partner_maps map1,
1992                                     msc_company_relationships r,
1993                                     msc_company_sites cs,
1994                                     msc_companies c
1995                              where  mic.plan_id = -1 and
1996                                     mic.customer_item_name = nvl(ln.owner_item_name,
1997                                                                  ln.customer_item_name) and
1998                                     mic.customer_id = map.tp_key and
1999 				    --nvl(mic.customer_site_id, map1.tp_key) = map1.tp_key and
2000 				    mic.customer_site_id = map1.tp_key and
2001                                     map.map_type = 1 and
2002                                     map.company_key = r.relationship_id and
2003                                     r.subject_id = 1 and
2004                                     r.object_id = c.company_id and
2005                                     r.relationship_type = 1 and
2006                                     UPPER(c.company_name) = UPPER(decode(ln.owner_item_name, null,
2007                                                             nvl(ln.customer_company,
2008                                                                 ln.publisher_company),
2009                                                             ln.publisher_company)) and
2010                                     map1.map_type = 3 and
2011                                     map1.company_key = cs.company_site_id and
2012                                     UPPER(cs.company_site_name) = UPPER(decode(ln.owner_item_name, null,
2013                                                             nvl(ln.customer_site,    --bug #4292548
2014                                                                 ln.publisher_site),
2015                                                             ln.publisher_site)) and
2016                                     cs.company_id = c.company_id   AND
2017                                     ln.item_name IS NULL
2018 			       );
2019 
2020       --========================================================================
2021       --Validation: Item check in OEM org
2022       --========================================================================
2023 
2024        IF t_order_type IS NOT NULL AND t_order_type.COUNT > 0 THEN
2025 	      l_err_msg := get_message('MSC', 'MSC_X_INVALID_ITEM', p_language);
2026 	      FORALL j IN t_line_id.FIRST..t_line_id.LAST
2027 		update msc_supdem_lines_interface ln
2028 		set    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2029 		where  ln.parent_header_id = p_header_id and
2030 		       ln.line_id = t_line_id(j) and
2031 		       NVL(ln.row_status, G_PROCESS) = G_PROCESS and
2032 		       not exists ( select msi.inventory_item_id
2033 				    from   msc_system_items msi,
2034 					   msc_trading_partners part,
2035 					   msc_trading_partner_maps map,
2036 					   msc_company_sites cs,
2037 					   msc_companies c
2038 				    where  msi.plan_id = -1 and
2039 					   msi.item_name = ln.item_name and
2040 					   msi.organization_id = part.sr_tp_id and
2041 					   msi.sr_instance_id = part.sr_instance_id and
2042 					   part.partner_type = 3 and
2043 					   part.partner_id = map.tp_key and
2044 					   map.map_type = 2 and
2045 					   map.company_key = cs.company_site_id and
2046 					   UPPER(cs.company_site_name) = upper(ln.publisher_site) and
2047 					   cs.company_id = c.company_id and
2048 					   UPPER(c.company_name) = upper(ln.publisher_company) and
2049 					   c.company_id = 1 and
2050 					   NVL(part.company_id,1) = c.company_id
2051 				    union  select 1
2052 				     from  msc_companies c
2053 				     where  c.company_id <> 1 and G_CONS_ADVICE <> t_order_type(j) and
2054 				           UPPER(c.company_name) = upper(ln.publisher_company)
2055 				    /* For Consumption Advice, Item should be valid in the Org modelled as the customer (publisher) */
2056 				    union  select 1
2057 				     from msc_system_items msi,
2058 					msc_trading_partners part,
2059 					msc_trading_partner_maps map,
2060 					msc_company_sites cs,
2061 					msc_companies c
2062 				     where
2063 				       msi.plan_id = -1 and
2064 				       msi.item_name = ln.item_name and
2065 				       msi.organization_id = part.sr_tp_id and
2066 				       msi.sr_instance_id = part.sr_instance_id and
2067 				       part.partner_type = 3 and
2068 				       part.modeled_customer_site_id = map.tp_key and
2069 				       map.map_type = 3 and
2070 				       map.company_key = cs.company_site_id and
2071 				       UPPER(cs.company_site_name) = upper(ln.publisher_site) and
2072 				       cs.company_id = c.company_id and
2073 				       UPPER(c.company_name) = upper(ln.publisher_company) and
2074 				       c.company_id <> 1 and
2075 				       G_CONS_ADVICE = t_order_type(j) and
2076 				       msi.consigned_flag = 1 and -- bug 4744103
2077 				       msi.inventory_planning_code = 7 -- bug 4744108
2078 				       );
2079 END IF;
2080 	--=========================================================
2081 	-- If publisher is a modeled org in the OEM's company, they
2082         -- should not be allowed to publish unallocated onhand
2083         --=========================================================
2084         l_err_msg := get_message('MSC', 'MSC_X_INVALID_PUB_UO', p_language);
2085         FORALL j IN t_line_id.FIRST..t_line_id.LAST
2086           UPDATE msc_supdem_lines_interface ln
2087           SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2088           WHERE  ln.parent_header_id = p_header_id AND
2089                  ln.line_id = t_line_id(j) AND
2090                  NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2091                  (G_UNALLOCATED_ONHAND = (SELECT flv.lookup_code
2092                                           FROM   fnd_lookup_values flv
2093                                           WHERE  flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
2094                                                  UPPER(flv.meaning) = UPPER(ln.order_type) AND
2095 					         flv.language = p_language)) AND
2096                  exists (SELECT 'exists'
2097                          FROM   msc_companies c0,
2098                                 msc_company_sites s0,
2099                                 msc_trading_partners mtp,
2100                                 msc_trading_partners mtp1,
2101                                 msc_trading_partner_maps maps,
2102                                 msc_trading_partner_maps maps1,
2103                                 msc_trading_partner_maps maps2,
2104                                 msc_trading_partner_sites mtps,
2105                                 msc_company_sites cs,
2106                                 msc_companies c,
2107                                 msc_company_relationships rel
2108                          WHERE  rel.relationship_type = 2
2109                          AND    rel.subject_id = 1
2110                          AND    Upper(c0.company_name) = Upper(ln.publisher_company)
2111                          AND    rel.object_id = c0.company_id
2112                          AND    maps.company_key = rel.relationship_id
2113                          AND    maps.map_type = 1
2114                          AND    maps.tp_key = mtp.partner_id
2115                          AND    s0.company_id = c0.company_id
2116                          AND    Upper(s0.company_site_name) = Upper(ln.publisher_site)
2117                          AND    maps1.company_key = s0.company_site_id
2118                          AND    maps1.map_type = 3
2119                          AND    mtps.partner_site_id = maps1.tp_key
2120                          AND    mtps.partner_id = mtp.partner_id
2121                          AND    mtp1.partner_type = 3
2122 	                 AND    mtp1.modeled_supplier_id = mtp.partner_id
2123 	                 AND    mtp1.modeled_supplier_site_id = mtps.partner_site_id
2124                          AND    maps2.tp_key = mtp1.partner_id
2125                          AND    maps2.map_type = 2
2126                          AND    cs.company_site_id = maps2.company_key
2127                          AND    cs.company_id = c.company_id
2128 	                 AND    c.company_id = 1);
2129 
2130 	FORALL j IN t_line_id.FIRST..t_line_id.LAST
2131           UPDATE msc_supdem_lines_interface ln
2132           SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2133           WHERE  ln.parent_header_id = p_header_id AND
2134                  ln.line_id = t_line_id(j) AND
2135                  NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2136                  (G_UNALLOCATED_ONHAND = (SELECT flv.lookup_code
2137                                           FROM   fnd_lookup_values flv
2138                                           WHERE  flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
2139                                                  UPPER(flv.meaning) = UPPER(ln.order_type) AND
2140 					         flv.language = p_language)) AND
2141                  exists( select 'exist'
2142                          from   msc_companies c,
2143                                 msc_company_sites s,
2144                                 msc_trading_partner_maps m,
2145                                 msc_trading_partners t
2146                          where  upper(c.company_name) = upper(ln.publisher_company)
2147                          and    c.company_id = s.company_id
2148                          and    upper(s.company_site_name) = upper(ln.publisher_site)
2149                          and    m.company_key = s.company_site_id
2150                          and    m.map_type = 2
2151                          and    m.tp_key = t.partner_id
2152                          and    t.partner_type = 3
2153                          and    t.modeled_supplier_id is not null
2154                          and    t.modeled_supplier_site_id is not NULL);
2155 
2156 
2157       --======================================================================
2158       -- Validation: Check if wip completion date is populated if the order type is
2159       --             Work order
2160       --
2161       --             Check if wip completion date is populated if the order type is
2162       --             Work order
2163       --======================================================================
2164       l_err_msg := get_message('MSC','MSC_X_INVALID_WIP_DATE', p_language);
2165       forall j IN t_line_id.first..t_line_id.last
2166         UPDATE msc_supdem_lines_interface ln
2167         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2168         WHERE  ln.parent_header_id = p_header_id
2169         AND    ln.line_id = t_line_id(j)
2170         AND    Nvl(ln.row_status, g_process) = g_process
2171         AND    g_null_string = (SELECT Nvl(ln1.wip_end_date, g_null_string)
2172                                 FROM   msc_supdem_lines_interface ln1,
2173                                        fnd_lookup_values flv
2174                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
2175                                        ln1.line_id = ln.line_id and
2176                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
2177                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
2178                                        flv.language = p_language and
2179                                        flv.lookup_code = g_work_order);
2180 
2181       FORALL j in t_line_id.FIRST..t_line_id.LAST
2182         UPDATE msc_supdem_lines_interface ln
2183         SET    ln.key_date = ln.wip_end_date
2184         WHERE  ln.parent_header_id = p_header_id AND
2185                ln.line_id = t_line_id(j) AND
2186                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2187                UPPER(ln.order_type) = (SELECT UPPER(flv.meaning)
2188                                        FROM   fnd_lookup_values flv
2189                                        WHERE  flv.language = p_language AND
2190                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
2191                                               flv.lookup_code = g_work_order);
2192 
2193      l_err_msg := get_message('MSC','MSC_X_INVALID_WIP_ST_DATE', p_language);
2194        forall j IN t_line_id.first..t_line_id.last
2195         UPDATE msc_supdem_lines_interface ln
2196         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2197         WHERE  ln.parent_header_id = p_header_id
2198         AND    ln.line_id = t_line_id(j)
2199         AND    Nvl(ln.row_status, g_process) = g_process
2200         AND    ln.wip_start_date IS NOT NULL
2201         AND    to_date(ln.wip_start_date, p_date_format) >
2202 	  to_date(ln.wip_end_date, p_date_format);
2203 
2204       -- jguo: call API to validate receipt/ship date for TP as a cusotmer
2205          validate_rs_dates_customer(
2206            t_line_id -- IN lineidList
2207          , p_header_id -- IN NUMBER
2208          , p_language
2209          );
2210 
2211       -- jguo: call API to validate receipt/ship date for TP as a supplier
2212          validate_rs_dates_supplier(
2213            t_line_id -- IN lineidList
2214          , p_header_id -- IN NUMBER
2215          , p_language
2216          );
2217 
2218       --=================================================================================
2219       -- Validation: Check if new_schedule date (aka actual date) is populated if the
2220       --                order type is historical sales, safety stock, allocated onhand
2221       --=================================================================================
2222       l_err_msg := get_message('MSC', 'MSC_X_INVALID_ACT_DATE', p_language);
2223       FORALL j IN t_line_id.FIRST..t_line_id.LAST
2224         UPDATE msc_supdem_lines_interface ln
2225         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2226         WHERE  ln.parent_header_id = p_header_id AND
2227                ln.line_id = t_line_id(j) AND
2228                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2229                G_NULL_STRING = (SELECT NVL(ln1.new_schedule_date, G_NULL_STRING)
2230                                 FROM   msc_supdem_lines_interface ln1,
2231                                        fnd_lookup_values flv
2232                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
2233                                        ln1.line_id = ln.line_id and
2234                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
2235                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
2236                                        flv.language = p_language and
2237                                        flv.lookup_code IN (G_HIST_SALES,
2238                                                            G_SAFETY_STOCK,
2239                                                            G_ALLOC_ONHAND,
2240                                                            G_PROJ_AVAI_BAL));
2241       FORALL j in t_line_id.FIRST..t_line_id.LAST
2242         UPDATE msc_supdem_lines_interface ln
2243         SET    ln.key_date = ln.new_schedule_date,
2244                ln.key_end_date = ln.new_schedule_end_date
2245         WHERE  ln.parent_header_id = p_header_id AND
2246                ln.line_id = t_line_id(j) AND
2247                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2248                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
2249                                        FROM   fnd_lookup_values flv
2250                                        WHERE  flv.language = p_language AND
2251                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
2252                                               flv.lookup_code IN (G_CONS_ADVICE,
2253 								G_HIST_SALES,
2254                                                                   G_SAFETY_STOCK,
2255                                                                   G_ALLOC_ONHAND,
2256                                                                   G_PROJ_AVAI_BAL));
2257 -- jguo: change starts here
2258       --==============================================================================
2259       -- Validation: Check if either ship date or receipt date is
2260       --                populated if the order type is supply commit,
2261       --                sales order, ASN
2262       --==============================================================================
2263       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SHIP_RCPT_DATE', p_language);
2264       FORALL j IN t_line_id.FIRST..t_line_id.LAST
2265         UPDATE msc_supdem_lines_interface ln
2266         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2267         WHERE  ln.parent_header_id = p_header_id AND
2268                ln.line_id = t_line_id(j) AND
2269                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2270                G_NULL_STRING = (SELECT NVL(ln1.ship_date, G_NULL_STRING)
2271                                 FROM   msc_supdem_lines_interface ln1,
2272                                        fnd_lookup_values flv
2273                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
2274                                        ln1.line_id = ln.line_id and
2275                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
2276                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
2277                                        flv.language = p_language and
2278                                        flv.lookup_code IN (G_SUPPLY_COMMIT,
2279                                                            G_ASN,
2280                                                            G_SALES_FORECAST,
2281                                                            G_SALES_ORDER)) AND
2282                G_NULL_STRING = (SELECT NVL(ln1.receipt_date, G_NULL_STRING)
2283                                 FROM   msc_supdem_lines_interface ln1,
2284                                        fnd_lookup_values flv
2285                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
2286                                        ln1.line_id = ln.line_id and
2287                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
2288                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
2289                                        flv.language = p_language and
2290                                        flv.lookup_code IN (G_SUPPLY_COMMIT,
2291                                                            G_ASN,
2292                                                            G_SALES_FORECAST,
2293                                                            G_SALES_ORDER))
2294 
2295        	   AND EXISTS ( SELECT ln.customer_company
2296                         FROM msc_companies c
2297                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.customer_company, ln.publisher_company))
2298                         AND c.company_id = 1
2299                       )
2300                                                                        ;
2301 
2302       FORALL j in t_line_id.FIRST..t_line_id.LAST
2303         UPDATE msc_supdem_lines_interface ln
2304         SET    ln.key_date =  NVL(ln.receipt_date, ln.ship_date), -- jguo NVL(ln.ship_date, ln.receipt_date),
2305                ln.key_end_date = ln.new_schedule_end_date
2306         WHERE  ln.parent_header_id = p_header_id AND
2307                ln.line_id = t_line_id(j) AND
2308                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2309                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
2310                                        FROM   fnd_lookup_values flv
2311                                        WHERE  flv.language = p_language AND
2312                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
2313                                               flv.lookup_code IN (G_SUPPLY_COMMIT,
2314                                                                   G_ASN,
2315                                                                   ---G_SALES_FORECAST,
2316                                                                   G_SALES_ORDER))
2317        	   AND EXISTS ( SELECT ln.customer_company
2318                         FROM msc_companies c
2319                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.customer_company, ln.publisher_company))
2320                         AND c.company_id = 1
2321                       );
2322 
2323 
2324         FORALL j in t_line_id.FIRST..t_line_id.LAST
2325         UPDATE msc_supdem_lines_interface ln
2326         SET    ln.key_date =  NVL(ln.ship_date, ln.receipt_date),
2327                ln.key_end_date = ln.new_schedule_end_date
2328         WHERE  ln.parent_header_id = p_header_id AND
2329                ln.line_id = t_line_id(j) AND
2330                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2331                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
2332                                        FROM   fnd_lookup_values flv
2333                                        WHERE  flv.language = p_language AND
2334                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
2335                                               flv.lookup_code  = G_SALES_FORECAST)
2336          AND EXISTS ( SELECT ln.customer_company
2337                         FROM msc_companies c
2338                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.customer_company, ln.publisher_company))
2339                         AND c.company_id = 1
2340                       );
2341 -- jguo: change ends here
2342 
2343       --======================================================================
2344       -- Validation: Check if key date <= new schedule end date
2345       --======================================================================
2346       l_err_msg := get_message('MSC', 'MSC_X_INVALID_END_DATE', p_language);
2347       FORALL j IN t_line_id.FIRST..t_line_id.LAST
2348         UPDATE msc_supdem_lines_interface ln
2349         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2350         WHERE  ln.parent_header_id = p_header_id AND
2351                ln.line_id = t_line_id(j) AND
2352                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2353                ln.key_date IS NOT NULL AND
2354                ln.new_schedule_end_date IS NOT NULL AND
2355                to_date(ln.new_schedule_end_date, p_date_format) <
2356 		 to_date(ln.key_date, p_date_format);
2357 
2358       --=========================================================================
2359       -- Check if the ship date > the receipt date
2360       --=========================================================================
2361       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SHIP_DATE1', p_language);
2362       FORALL j IN t_line_id.FIRST..t_line_id.LAST
2363         UPDATE msc_supdem_lines_interface ln
2364         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2365         WHERE  ln.parent_header_id = p_header_id AND
2366                ln.line_id = t_line_id(j) AND
2367                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2368                ln.ship_date is not null AND
2369                ln.receipt_date is not null AND
2370                to_date(ln.ship_date, p_date_format) >
2371 		 to_date(ln.receipt_date, p_date_format);
2372 
2373 
2374       --=========================================================================
2375       -- Check if the SO has already been entered via iSP (PO-Ack validation)
2376       --=========================================================================
2377       l_err_msg := get_message('MSC', 'MSC_X_SO_EXISTS', p_language);
2378       FORALL j in t_line_id.FIRST..t_line_id.LAST
2379         UPDATE msc_supdem_lines_interface ln
2380         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2381         WHERE  ln.parent_header_id = p_header_id AND
2382                ln.line_id = t_line_id(j) AND
2383                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
2384                UPPER(ln.order_type) = (SELECT UPPER(flv.meaning)
2385                                        FROM   fnd_lookup_values flv
2386                                        WHERE  flv.language = p_language AND
2387                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
2388                                               flv.lookup_code IN (G_SALES_ORDER)) AND
2389                exists (SELECT 'exists'
2390                        FROM msc_sup_dem_entries sd
2391                        WHERE Upper(sd.publisher_name) = Upper(ln.publisher_company)
2392                        AND Upper(sd.publisher_site_name) = Upper(ln.publisher_site)
2393                        AND Upper(sd.customer_name) = Upper(ln.customer_company)
2394                        AND Upper(sd.customer_site_name) = Upper(ln.customer_site)
2395                        AND (sd.item_name = nvl(ln.item_name, nvl(ln.owner_item_name, nvl(ln.customer_item_name, ln.supplier_item_name))) OR
2396                             sd.owner_item_name = nvl(ln.owner_item_name, nvl(ln.item_name, nvl(ln.customer_item_name, ln.supplier_item_name))) OR
2397                             sd.customer_item_name = nvl(ln.customer_item_name, nvl(ln.item_name, nvl(ln.owner_item_name, ln.supplier_item_name))) OR
2398                             sd.supplier_item_name = nvl(ln.supplier_item_name, nvl(ln.item_name, nvl(ln.owner_item_name, ln.customer_item_name))))
2399                        AND Upper(sd.publisher_order_type_desc) = Upper(ln.order_type)
2400                        --AND Nvl(sd.order_number, g_null_string) = Nvl(ln.order_identifier, g_null_string)
2401                        --AND Nvl(sd.line_number, g_null_string) = Nvl(ln.line_number, g_null_string)
2402                        --AND Nvl(sd.release_number, g_null_string) = Nvl(ln.release_number, g_null_string)
2403                        AND Nvl(sd.end_order_number, g_null_string) = Nvl(ln.pegging_order_identifier, g_null_string)
2404                        AND Nvl(sd.end_order_line_number, g_null_string) = Nvl(ln.ref_line_number, g_null_string)
2405                        AND Nvl(sd.end_order_rel_number, g_null_string) = Nvl(ln.ref_release_number, g_null_string)
2406                        AND nvl(sd.ack_flag, 'N') = 'Y');
2407 
2408       --=========================================================================
2409       -- End of Dependent Validations
2410       -- Update row status in MSC_SUPDEM_LINES_INTERFACE to G_FAILURE (4) if
2411       -- the err_msg is not null
2412       --=========================================================================
2413       FORALL j in t_line_id.FIRST..t_line_id.LAST
2414         UPDATE msc_supdem_lines_interface ln
2415         SET    ln.row_status = G_FAILURE
2416         WHERE  ln.parent_header_id = p_header_id AND
2417                ln.line_id = t_line_id(j) AND
2418 	       NVL(ln.row_status, G_PROCESS) = g_process AND
2419 	       ln.err_msg IS NOT NULL;
2420 
2421       --=========================================================================
2422       -- Update row status in MSC_SUPDEM_LINES_INTERFACE to G_SUCCESS (3) if
2423       -- the err_msg is null
2424       --=========================================================================
2425       FORALL j in t_line_id.FIRST..t_line_id.LAST
2426         UPDATE msc_supdem_lines_interface ln
2427         SET    ln.row_status = G_SUCCESS
2428         WHERE  ln.parent_header_id = p_header_id AND
2429                ln.line_id = t_line_id(j) AND
2430                NVL(ln.row_status, G_PROCESS) = g_process AND
2431                Nvl(ln.err_msg, g_null_string) = g_null_string;
2432 
2433       --=========================================================================
2434       -- Post Validation steps
2435       -- Populate the item id column for validated records
2436       --=========================================================================
2437       FORALL j in t_line_id.FIRST..t_line_id.LAST
2438         update msc_supdem_lines_interface l
2439         set    l.inventory_item_id =
2440                            (select i.inventory_item_id
2441                             from   msc_items i,
2442                                    msc_supdem_lines_interface ln
2443                             where  i.item_name = ln.item_name and
2444                                    ln.parent_header_id = p_header_id AND
2445                                    ln.line_id = t_line_id(j) AND
2446                                    NVL(ln.row_status, G_PROCESS) = G_SUCCESS
2447                             UNION
2448                             select msi.inventory_item_id
2449                             from   msc_system_items msi,
2450                                    msc_trading_partners part,
2451                                    msc_trading_partner_maps map,
2452                                    msc_company_sites cs,
2453                                    msc_companies c,
2454                                    msc_supdem_lines_interface ln
2455                             where  msi.plan_id = -1 and
2456                                    ln.parent_header_id = p_header_id AND
2457                                    ln.line_id = t_line_id(j) AND
2458                                    NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
2459                                    msi.item_name = nvl(ln.owner_item_name,
2460                                                        nvl(ln.customer_item_name,
2461                                                            ln.supplier_item_name)) and
2462                                    msi.organization_id = part.sr_tp_id and
2463                                    msi.sr_instance_id = part.sr_instance_id and
2464                                    part.partner_type = 3 and
2465                                    part.partner_id = map.tp_key and
2466                                    map.map_type = 2 and
2467                                    map.company_key = cs.company_site_id and
2468                                    cs.company_site_name = decode(ln.owner_item_name,
2469                                                                  null,
2470                                                                  decode(ln.customer_item_name,
2471                                                                         null,
2472                                                                         nvl(ln.supplier_site,
2473                                                                             ln.publisher_site),
2474                                                                         nvl(ln.customer_site,
2475                                                                             ln.publisher_site)),
2476                                                                  ln.publisher_site) and
2477                                    cs.company_id = c.company_id and
2478                                    c.company_name = decode(ln.owner_item_name,
2479                                                            null,
2480                                                            decode(ln.customer_item_name,
2481                                                                   null,
2482                                                                   nvl(ln.supplier_company,
2483                                                                       ln.publisher_company),
2484                                                                   nvl(ln.customer_company,
2485                                                                       ln.publisher_company)),
2486                                                            ln.publisher_company) and
2487                                    NVL(part.company_id,1) = c.company_id  and
2488                                    ln.item_name IS NULL
2489                              UNION
2490                              select mis.inventory_item_id
2491                              from   msc_item_suppliers mis,
2492                                     msc_trading_partner_maps map,
2493                                     msc_trading_partner_maps map1,
2494                                     msc_company_relationships r,
2495                                     msc_company_sites cs,
2496                                     msc_companies c,
2497                                     msc_supdem_lines_interface ln
2498                              where  mis.plan_id = -1 and
2499                                     ln.parent_header_id = p_header_id AND
2500                                     ln.line_id = t_line_id(j) AND
2501                                     NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
2502                                     mis.supplier_item_name = nvl(ln.owner_item_name,
2503                                                                  ln.supplier_item_name) and
2504                                     mis.supplier_id = map.tp_key and
2505                                     mis.supplier_site_id = map1.tp_key and
2506                                     map.map_type = 1 and
2507                                     map.company_key = r.relationship_id and
2508                                     r.subject_id = 1 and
2509                                     r.object_id = c.company_id and
2510                                     r.relationship_type = 2 and
2511                                     c.company_name = decode(ln.owner_item_name, null,
2512                                                             nvl(ln.supplier_company,
2513                                                                 ln.publisher_company),
2514                                                             ln.publisher_company) and
2515                                     map1.map_type = 3 and
2516                                     map1.company_key = cs.company_site_id and
2517                                     cs.company_site_name = decode(ln.owner_item_name, null,
2518                                                             nvl(ln.supplier_site,
2519                                                                 ln.publisher_site),
2520                                                             ln.publisher_site) and
2521                                     cs.company_id = c.company_id   AND
2522                                     ln.item_name IS NULL
2523                              UNION
2524                              select mic.inventory_item_id
2525                              from   msc_item_customers mic,
2526                                     msc_trading_partner_maps map,
2527                                     msc_trading_partner_maps map1,
2528                                     msc_company_relationships r,
2529                                     msc_company_sites cs,
2530                                     msc_companies c,
2531                                     msc_supdem_lines_interface ln
2532                              where  mic.plan_id = -1 and
2533                                     ln.parent_header_id = p_header_id AND
2534                                     ln.line_id = t_line_id(j) AND
2535                                     NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
2536                                     mic.customer_item_name = nvl(ln.owner_item_name,
2537                                                                  ln.customer_item_name) and
2538                                     mic.customer_id = map.tp_key and
2539 				    --nvl(mic.customer_site_id, map1.tp_key) = map1.tp_key and
2540 				    mic.customer_site_id = map1.tp_key and
2541                                     map.map_type = 1 and
2542                                     map.company_key = r.relationship_id and
2543                                     r.subject_id = 1 and
2544                                     r.object_id = c.company_id and
2545                                     r.relationship_type = 1 and
2546                                     c.company_name = decode(ln.owner_item_name, null,
2547                                                             nvl(ln.customer_company,
2548                                                                 ln.publisher_company),
2549                                                             ln.publisher_company) and
2550                                     map1.map_type = 3 and
2551                                     map1.company_key = cs.company_site_id and
2552                                     cs.company_site_name = decode(ln.owner_item_name, null,
2553                                                             nvl(ln.customer_site,
2554                                                                 ln.publisher_site),
2555                                                             ln.publisher_site) and
2556                                     cs.company_id = c.company_id   AND
2557                                     ln.item_name IS NULL
2558                             )
2559         where  l.parent_header_id = p_header_id AND
2560                l.line_id = t_line_id(j) AND
2561                NVL(l.row_status, G_PROCESS) = G_SUCCESS;
2562 
2563     END IF; --End of sync indicator R validations
2564 
2565   END LOOP; --End of the main 'for' loop
2566 
2567   IF p_build_err <> 2 then
2568      OPEN c_exec_keys(p_header_id, p_language);
2569      FETCH c_exec_keys
2570        bulk collect INTO t_pub,
2571        t_pub_site,
2572        t_cust,
2573        t_cust_site,
2574        t_supp,
2575        t_supp_site,
2576        t_order_type_desc,
2577        t_item_id,
2578        t_order_number,
2579        t_rel_number,
2580        t_line_number,
2581        t_end_order_number,
2582        t_end_order_rel_number,
2583        t_end_order_line_number;
2584      CLOSE c_exec_keys;
2585 
2586      l_err_msg := get_message('MSC', 'MSC_X_DUPLICATE_KEYS_EXEC', p_language);
2587      IF t_pub IS NOT NULL AND t_pub.COUNT > 0 then
2588 	forall j IN t_pub.first..t_pub.LAST
2589 	  UPDATE msc_supdem_lines_interface ln
2590 	  SET ln.row_status = g_failure,
2591 	  ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2592 	  WHERE ln.line_id IN (SELECT DISTINCT ln1.line_id
2593              FROM msc_supdem_lines_interface ln1
2594              WHERE ln1.parent_header_id = p_header_id
2595              AND Upper(ln1.publisher_company) = t_pub(j)
2596              AND Upper(ln1.publisher_site) = t_pub_site(j)
2597              AND Nvl(Upper(ln1.supplier_company),-99) = Nvl(t_supp(j),-99)
2598              AND Nvl(Upper(ln1.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2599              AND Nvl(Upper(ln1.customer_company),-99) = Nvl(t_cust(j),-99)
2600              AND Nvl(Upper(ln1.customer_site),-99) = Nvl(t_cust_site(j),-99)
2601              AND Upper(ln1.order_type) = t_order_type_desc(j)
2602              AND ln1.inventory_item_id = t_item_id(j)
2603              AND Nvl(Upper(ln1.order_identifier),-99) = Nvl(t_order_number(j),-99)
2604              AND Nvl(Upper(ln1.release_number),-99) = Nvl(t_rel_number(j),-99)
2605              AND Nvl(Upper(ln1.line_number),-99) = Nvl(t_line_number(j),-99)
2606              AND Nvl(Upper(ln1.pegging_order_identifier),-99) = Nvl(t_end_order_number(j),-99)
2607              AND Nvl(Upper(ln1.ref_release_number),-99) = Nvl(t_end_order_rel_number(j),-99)
2608              AND Nvl(Upper(ln1.ref_line_number),-99) = Nvl(t_end_order_line_number(j),-99)
2609              AND 1 < (SELECT COUNT(*)
2610                       FROM msc_supdem_lines_interface ln2
2611                       WHERE ln2.parent_header_id = p_header_id
2612                       AND Upper(ln2.publisher_company) = t_pub(j)
2613                       AND Upper(ln2.publisher_site) = t_pub_site(j)
2614                       AND Nvl(Upper(ln2.supplier_company),-99) = Nvl(t_supp(j),-99)
2615                       AND Nvl(Upper(ln2.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2616                       AND Nvl(Upper(ln2.customer_company),-99) = Nvl(t_cust(j),-99)
2617                       AND Nvl(Upper(ln2.customer_site),-99) = Nvl(t_cust_site(j),-99)
2618                       AND Upper(ln2.order_type) = t_order_type_desc(j)
2619                       AND ln2.inventory_item_id = t_item_id(j)
2620                       AND Nvl(Upper(ln2.order_identifier),-99) = Nvl(t_order_number(j),-99)
2621                       AND Nvl(Upper(ln2.release_number),-99) = Nvl(t_rel_number(j),-99)
2622                       AND Nvl(Upper(ln2.line_number),-99) = Nvl(t_line_number(j),-99)
2623                       AND Nvl(Upper(ln2.pegging_order_identifier),-99) = Nvl(t_end_order_number(j),-99)
2624                       AND Nvl(Upper(ln2.ref_release_number),-99) = Nvl(t_end_order_rel_number(j),-99)
2625                       AND Nvl(Upper(ln2.ref_line_number),-99) = Nvl(t_end_order_line_number(j),-99)));
2626      END IF;
2627 
2628      OPEN c_work_order_keys(p_header_id, p_language);
2629      FETCH c_work_order_keys
2630        bulk collect INTO t_pub,
2631        t_pub_site,
2632        t_cust,
2633        t_cust_site,
2634        t_order_type_desc,
2635        t_item_id,
2636        t_order_number;
2637      CLOSE c_work_order_keys;
2638 
2639      l_err_msg := get_message('MSC', 'MSC_X_DUPLICATE_KEYS_WIP', p_language);
2640      IF t_pub IS NOT NULL AND t_pub.COUNT > 0 THEN
2641 	forall j IN t_pub.first..t_pub.last
2642 	  UPDATE msc_supdem_lines_interface ln
2643 	  SET ln.row_status = g_failure,
2644 	  ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2645 	  WHERE ln.line_id IN (SELECT DISTINCT ln1.line_id
2646              FROM msc_supdem_lines_interface ln1
2647              WHERE ln1.parent_header_id = p_header_id
2648              AND Upper(ln1.publisher_company) = t_pub(j)
2649              AND Upper(ln1.publisher_site) = t_pub_site(j)
2650              AND Nvl(Upper(ln1.customer_company),-99) = Nvl(t_cust(j),-99)
2651              AND Nvl(Upper(ln1.customer_site),-99) = Nvl(t_cust_site(j),-99)
2652              AND Upper(ln1.order_type) = t_order_type_desc(j)
2653              AND ln1.inventory_item_id = t_item_id(j)
2654              AND Nvl(ln1.order_identifier, '-99') = Nvl(t_order_number(j), '-99')
2655              AND 1 < (SELECT COUNT(*)
2656                       FROM msc_supdem_lines_interface ln2
2657                       WHERE ln2.parent_header_id = p_header_id
2658                       AND Upper(ln2.publisher_company) = t_pub(j)
2659                       AND Upper(ln2.publisher_site) = t_pub_site(j)
2660                       AND Nvl(Upper(ln2.customer_company),-99) = Nvl(t_cust(j),-99)
2661                       AND Nvl(Upper(ln2.customer_site),-99) = Nvl(t_cust_site(j),-99)
2662                       AND Upper(ln2.order_type) = t_order_type_desc(j)
2663                       AND ln2.inventory_item_id = t_item_id(j)
2664                       AND Nvl(ln2.order_identifier, '-99') = Nvl(t_order_number(j), '-99')));
2665      END IF;
2666 
2667      OPEN c_onhand_keys(p_header_id, p_language);
2668      FETCH c_onhand_keys
2669        bulk collect INTO t_pub,
2670        t_pub_site,
2671        t_cust,
2672        t_cust_site,
2673        t_supp,
2674        t_supp_site,
2675        t_order_type_desc,
2676        t_item_id;
2677      CLOSE c_onhand_keys;
2678 
2679      l_err_msg := get_message('MSC', 'MSC_X_DUPLICATE_KEY_PLANNING', p_language);
2680      IF t_pub IS NOT NULL AND t_pub.COUNT > 0 then
2681 	forall j IN t_pub.first..t_pub.LAST
2682 	  UPDATE msc_supdem_lines_interface ln
2683 	  SET ln.row_status = g_failure,
2684 	  ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2685 	  WHERE ln.line_id IN (SELECT DISTINCT ln1.line_id
2686              FROM msc_supdem_lines_interface ln1
2687              WHERE ln1.parent_header_id = p_header_id
2688              AND Upper(ln1.publisher_company) = t_pub(j)
2689              AND Upper(ln1.publisher_site) = t_pub_site(j)
2690              AND Nvl(Upper(ln1.supplier_company),-99) = Nvl(t_supp(j),-99)
2691              AND Nvl(Upper(ln1.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2692              AND Nvl(Upper(ln1.customer_company),-99) = Nvl(t_cust(j),-99)
2693              AND Nvl(Upper(ln1.customer_site),-99) = Nvl(t_cust_site(j),-99)
2694              AND Upper(ln1.order_type) = t_order_type_desc(j)
2695              AND ln1.inventory_item_id = t_item_id(j)
2696              AND 1 < (SELECT COUNT(*)
2697                  FROM msc_supdem_lines_interface ln2
2698                  WHERE ln2.parent_header_id = p_header_id
2699                  AND Upper(ln2.publisher_company) = t_pub(j)
2700                  AND Upper(ln2.publisher_site) = t_pub_site(j)
2701                  AND Nvl(Upper(ln2.supplier_company),-99) = Nvl(t_supp(j),-99)
2702                  AND Nvl(Upper(ln2.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2703                  AND Nvl(Upper(ln2.customer_company),-99) = Nvl(t_cust(j),-99)
2704                  AND Nvl(Upper(ln2.customer_site),-99) = Nvl(t_cust_site(j),-99)
2705                  AND Upper(ln2.order_type) = t_order_type_desc(j)
2706                  AND ln2.inventory_item_id = t_item_id(j)));
2707      END IF;
2708 
2709      OPEN c_daily_keys(p_header_id, p_language,p_date_format);
2710      FETCH c_daily_keys
2711        bulk collect INTO t_pub,
2712        t_pub_site,
2713        t_cust,
2714        t_cust_site,
2715        t_supp,
2716        t_supp_site,
2717        t_order_type_desc,
2718        t_item_id,
2719        t_key_date,
2720        t_bucket_type;
2721      CLOSE c_daily_keys;
2722 
2723      l_err_msg := get_message('MSC', 'MSC_X_DUPLICATE_KEY_PLANNING', p_language);
2724      IF t_pub IS NOT NULL AND t_pub.COUNT > 0 then
2725 	forall j IN t_pub.first..t_pub.LAST
2726 	  UPDATE msc_supdem_lines_interface ln
2727 	  SET ln.row_status = g_failure,
2728 	  ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2729 	  WHERE ln.line_id IN (SELECT DISTINCT ln1.line_id
2730              FROM msc_supdem_lines_interface ln1
2731              WHERE ln1.parent_header_id = p_header_id
2732              AND Upper(ln1.publisher_company) = t_pub(j)
2733              AND Upper(ln1.publisher_site) = t_pub_site(j)
2734              AND Nvl(Upper(ln1.supplier_company),-99) = Nvl(t_supp(j),-99)
2735              AND Nvl(Upper(ln1.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2736              AND Nvl(Upper(ln1.customer_company),-99) = Nvl(t_cust(j),-99)
2737              AND Nvl(Upper(ln1.customer_site),-99) = Nvl(t_cust_site(j),-99)
2738              AND Upper(ln1.order_type) = t_order_type_desc(j)
2739              AND ln1.inventory_item_id = t_item_id(j)
2740              AND Nvl(Upper(ln1.bucket_type),1) = Nvl(t_bucket_type(j),1)
2741              AND t_key_date(j) = trunc(to_date(ln1.key_date,p_date_format))
2742              AND 1 < (SELECT COUNT(*)
2743                  FROM msc_supdem_lines_interface ln2
2744                  WHERE ln2.parent_header_id = p_header_id
2745                  AND Upper(ln2.publisher_company) = t_pub(j)
2746                  AND Upper(ln2.publisher_site) = t_pub_site(j)
2747                  AND Nvl(Upper(ln2.supplier_company),-99) = Nvl(t_supp(j),-99)
2748                  AND Nvl(Upper(ln2.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2749                  AND Nvl(Upper(ln2.customer_company),-99) = Nvl(t_cust(j),-99)
2750                  AND Nvl(Upper(ln2.customer_site),-99) = Nvl(t_cust_site(j),-99)
2751                  AND Upper(ln2.order_type) = t_order_type_desc(j)
2752                  AND ln2.inventory_item_id = t_item_id(j)
2753                  AND Nvl(Upper(ln2.bucket_type),1) = Nvl(t_bucket_type(j),1)
2754                  AND t_key_date(j) = trunc(to_date(ln2.key_date,p_date_format))
2755 		 ));
2756      END IF;
2757 
2758      OPEN c_weekly_keys(p_header_id, p_language,p_date_format);
2759      FETCH c_weekly_keys
2760        bulk collect INTO t_pub,
2761        t_pub_site,
2762        t_cust,
2763        t_cust_site,
2764        t_supp,
2765        t_supp_site,
2766        t_order_type_desc,
2767        t_item_id,
2768        t_key_date,
2769        t_bucket_type;
2770      CLOSE c_weekly_keys;
2771 
2772      l_err_msg := get_message('MSC', 'MSC_X_DUPLICATE_KEY_PLANNING', p_language);
2773      IF t_pub IS NOT NULL AND t_pub.COUNT > 0 then
2774 	forall j IN t_pub.first..t_pub.LAST
2775 	  UPDATE msc_supdem_lines_interface ln
2776 	  SET ln.row_status = g_failure,
2777 	  ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2778 	  WHERE ln.line_id IN (SELECT DISTINCT ln1.line_id
2779              FROM msc_supdem_lines_interface ln1
2780              WHERE ln1.parent_header_id = p_header_id
2781              AND Upper(ln1.publisher_company) = t_pub(j)
2782              AND Upper(ln1.publisher_site) = t_pub_site(j)
2783              AND Nvl(Upper(ln1.supplier_company),-99) = Nvl(t_supp(j),-99)
2784              AND Nvl(Upper(ln1.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2785              AND Nvl(Upper(ln1.customer_company),-99) = Nvl(t_cust(j),-99)
2786              AND Nvl(Upper(ln1.customer_site),-99) = Nvl(t_cust_site(j),-99)
2787              AND Upper(ln1.order_type) = t_order_type_desc(j)
2788              AND ln1.inventory_item_id = t_item_id(j)
2789              AND Upper(ln1.bucket_type) = t_bucket_type(j)
2790              AND t_key_date(j) = trunc(to_date(ln1.key_date,p_date_format))
2791              AND 1 < (SELECT COUNT(*)
2792                  FROM msc_supdem_lines_interface ln2
2793                  WHERE ln2.parent_header_id = p_header_id
2794                  AND Upper(ln2.publisher_company) = t_pub(j)
2795                  AND Upper(ln2.publisher_site) = t_pub_site(j)
2796                  AND Nvl(Upper(ln2.supplier_company),-99) = Nvl(t_supp(j),-99)
2797                  AND Nvl(Upper(ln2.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2798                  AND Nvl(Upper(ln2.customer_company),-99) = Nvl(t_cust(j),-99)
2799                  AND Nvl(Upper(ln2.customer_site),-99) = Nvl(t_cust_site(j),-99)
2800                  AND Upper(ln2.order_type) = t_order_type_desc(j)
2801                  AND ln2.inventory_item_id = t_item_id(j)
2802                  AND Upper(ln2.bucket_type) = t_bucket_type(j)
2803                  AND t_key_date(j) = trunc(to_date(ln2.key_date,p_date_format))
2804 		 ));
2805      END IF;
2806 
2807      OPEN c_monthly_keys(p_header_id, p_language,p_date_format);
2808      FETCH c_monthly_keys
2809        bulk collect INTO t_pub,
2810        t_pub_site,
2811        t_cust,
2812        t_cust_site,
2813        t_supp,
2814        t_supp_site,
2815        t_order_type_desc,
2816        t_item_id,
2817        t_key_date,
2818        t_bucket_type;
2819      CLOSE c_monthly_keys;
2820 
2821      l_err_msg := get_message('MSC', 'MSC_X_DUPLICATE_KEY_PLANNING', p_language);
2822      IF t_pub IS NOT NULL AND t_pub.COUNT > 0 then
2823 	forall j IN t_pub.first..t_pub.LAST
2824 	  UPDATE msc_supdem_lines_interface ln
2825 	  SET ln.row_status = g_failure,
2826 	  ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
2827 	  WHERE ln.line_id IN (SELECT DISTINCT ln1.line_id
2828              FROM msc_supdem_lines_interface ln1
2829              WHERE ln1.parent_header_id = p_header_id
2830              AND Upper(ln1.publisher_company) = t_pub(j)
2831              AND Upper(ln1.publisher_site) = t_pub_site(j)
2832              AND Nvl(Upper(ln1.supplier_company),-99) = Nvl(t_supp(j),-99)
2833              AND Nvl(Upper(ln1.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2834              AND Nvl(Upper(ln1.customer_company),-99) = Nvl(t_cust(j),-99)
2835              AND Nvl(Upper(ln1.customer_site),-99) = Nvl(t_cust_site(j),-99)
2836              AND Upper(ln1.order_type) = t_order_type_desc(j)
2837              AND ln1.inventory_item_id = t_item_id(j)
2838              AND Upper(ln1.bucket_type) = t_bucket_type(j)
2839              AND t_key_date(j) = trunc(to_date(ln1.key_date,p_date_format))
2840              AND 1 < (SELECT COUNT(*)
2841                  FROM msc_supdem_lines_interface ln2
2842                  WHERE ln2.parent_header_id = p_header_id
2843                  AND Upper(ln2.publisher_company) = t_pub(j)
2844                  AND Upper(ln2.publisher_site) = t_pub_site(j)
2845                  AND Nvl(Upper(ln2.supplier_company),-99) = Nvl(t_supp(j),-99)
2846                  AND Nvl(Upper(ln2.supplier_site),-99) = Nvl(t_supp_site(j),-99)
2847                  AND Nvl(Upper(ln2.customer_company),-99) = Nvl(t_cust(j),-99)
2848                  AND Nvl(Upper(ln2.customer_site),-99) = Nvl(t_cust_site(j),-99)
2849                  AND Upper(ln2.order_type) = t_order_type_desc(j)
2850                  AND ln2.inventory_item_id = t_item_id(j)
2851                  AND Upper(ln2.bucket_type) = t_bucket_type(j)
2852                  AND t_key_date(j) = trunc(to_date(ln2.key_date,p_date_format))
2853 		 ));
2854      END IF;
2855 
2856   END IF; /* if p_build_err <> 2 */
2857 
2858   --Added for bug 3103879
2859   log_debug('MSC_X_OVERWRITE_SC := ' || fnd_profile.value('MSC_X_OVERWRITE_SC'));
2860   IF (Nvl(fnd_profile.value('MSC_X_OVERWRITE_SC'),'N') = 'Y') THEN
2861      OPEN c_delete_supply_commit(p_header_id, p_language);
2862      FETCH c_delete_supply_commit
2863        bulk collect INTO t_del_pub_id,
2864        t_del_pub_site_id,
2865        t_del_cust_id,
2866        t_del_cust_site_id,
2867        t_del_item_id;
2868      CLOSE c_delete_supply_commit;
2869      IF t_del_pub_id IS NOT NULL AND t_del_pub_id.COUNT > 0 THEN
2870 	forall j IN t_del_pub_id.first..t_del_pub_id.last
2871 	  DELETE FROM msc_sup_dem_entries sd
2872 	  WHERE sd.publisher_id = t_del_pub_id(j)
2873 	  AND sd.publisher_site_id = t_del_pub_site_id(j)
2874 	  AND sd.customer_id = t_del_cust_id(j)
2875 	  AND sd.customer_site_id = t_del_cust_site_id(j)
2876 	  AND sd.inventory_item_id = t_del_item_id(j)
2877 	  AND sd.publisher_order_type = g_supply_commit;
2878      END IF;
2879   END IF;
2880 
2881   --Added for bug 3304493
2882   log_debug('MSC_X_OVERWRITE_OF := ' || G_OVERWRITE_OF);
2883   --log_debug('MSC_X_OVERWRITE_OF := ' || G_OVERWRITE_OF);
2884   IF (G_OVERWRITE_OF = 'Y') THEN
2885      OPEN c_delete_order_forecast(p_header_id, p_language);
2886      FETCH c_delete_order_forecast
2887        bulk collect INTO t_del_pub_id,
2888        t_del_pub_site_id,
2889        t_del_supp_id,
2890        t_del_supp_site_id,
2891        t_del_item_id;
2892      CLOSE c_delete_order_forecast;
2893      IF t_del_pub_id IS NOT NULL AND t_del_pub_id.COUNT > 0 THEN
2894 	forall j IN t_del_pub_id.first..t_del_pub_id.last
2895 	  DELETE FROM msc_sup_dem_entries sd
2896 	  WHERE sd.publisher_id = t_del_pub_id(j)
2897 	  AND sd.publisher_site_id = t_del_pub_site_id(j)
2898 	  AND sd.supplier_id = t_del_supp_id(j)
2899 	  AND sd.supplier_site_id = t_del_supp_site_id(j)
2900 	  AND sd.inventory_item_id = t_del_item_id(j)
2901 	  AND sd.publisher_order_type = G_ORDER_FORECAST;
2902      END IF;
2903   END IF;
2904 
2905   --===========================================================================
2906   -- Print error messages to the log file
2907   --===========================================================================
2908 
2909   FOR i IN 1..l_loops_reqd LOOP
2910      l_start_line := l_min + ((i-1)*G_BATCH_SIZE);
2911      IF ((l_min -1 + i*G_BATCH_SIZE) <= l_max) THEN
2912 	l_end_line := l_min -1 + i*G_BATCH_SIZE;
2913       ELSE
2914 	l_end_line := l_max;
2915      END IF;
2916 
2917      --=========================================================================
2918      -- Writing error messages to the log file
2919      --=========================================================================
2920      open c_err_msg(p_header_id, l_start_line, l_end_line);
2921      fetch c_err_msg bulk collect
2922        into  t_log_line_id,
2923              t_log_item_name,
2924              t_log_order_type,
2925              t_log_err_msg;
2926      close c_err_msg;
2927 
2928      if t_log_line_id is not null and t_log_line_id.COUNT > 0 then
2929 	for j in t_log_line_id.FIRST..t_log_line_id.LAST loop
2930 	   l_log_message :=
2931                substrb(get_message('MSC','MSC_X_UI_VOD_ORD_LINE_NUM',p_language),1,500) ||
2932                ': ' || to_char(t_log_line_id(j) - l_min + 1) || ', ' ||
2933                substrb(get_message('MSC','MSC_X_UI_ITEM',p_language),1,500) ||
2934                ': ' || t_log_item_name(j) || ', ' ||
2935                substrb(get_message('MSC','MSC_X_UI_SDD_ORDER_TYPE',p_language),1,500) ||
2936                  ': ' || t_log_order_type(j) || ', ' ||
2937                substrb(get_message('MSC','MSC_X_UI_LSD_ERROR', p_language),1,500) ||
2938                ': ' || t_log_err_msg(j) || fnd_global.local_chr(10) ;
2939 
2940 	   log_message(l_log_message);
2941 	end loop;
2942      end if;
2943 
2944   END LOOP;
2945 
2946 END update_errors;
2947 
2948 
2949 FUNCTION checkdates (
2950   p_header_id IN NUMBER,
2951   p_line_id   IN NUMBER,
2952   p_date_format IN VARCHAR2
2953 ) RETURN NUMBER IS
2954   DATE_FORMAT_ERROR EXCEPTION;
2955   PRAGMA EXCEPTION_INIT(DATE_FORMAT_ERROR, -1861);
2956   x_date1 DATE;
2957   x_date2 DATE;
2958   x_date3 DATE;
2959   x_date4 DATE;
2960   x_date5 DATE;
2961   x_date6 DATE;
2962   x_date7 DATE;
2963   /* Added for work order support */
2964   x_date8 DATE;
2965   x_date9 DATE;
2966 BEGIN
2967  SELECT DECODE(ln.new_schedule_date, NULL, SYSDATE,
2968                to_date(ln.new_schedule_date, p_date_format)),
2969         DECODE(ln.new_schedule_end_date, NULL, SYSDATE,
2970                to_date(ln.new_schedule_end_date, p_date_format)),
2971         DECODE(ln.receipt_date, NULL, SYSDATE,
2972                to_date(ln.receipt_date, p_date_format)),
2973         DECODE(ln.ship_date, NULL, SYSDATE,
2974                to_date(ln.ship_date, p_date_format)),
2975         DECODE(ln.new_order_placement_date, NULL, SYSDATE,
2976                to_date(ln.new_order_placement_date, p_date_format)),
2977         DECODE(ln.request_date, NULL, SYSDATE,
2978                to_date(ln.request_date, p_date_format)),
2979         DECODE(ln.original_promised_date, NULL, SYSDATE,
2980                to_date(ln.original_promised_date, p_date_format)),
2981         DECODE(ln.wip_start_date, NULL, SYSDATE,
2982                to_date(ln.wip_start_date, p_date_format)),
2983         DECODE(ln.wip_end_date, NULL, SYSDATE,
2984                to_date(ln.wip_end_date, p_date_format))
2985  INTO   x_date1,
2986         x_date2,
2987         x_date3,
2988         x_date4,
2989         x_date5,
2990         x_date6,
2991         x_date7,
2992         x_date8,
2993         x_date9
2994  FROM   msc_supdem_lines_interface ln
2995  WHERE  ln.parent_header_id = p_header_id and
2996         ln.line_id = p_line_id;
2997 
2998  return 0;
2999 
3000 EXCEPTION
3001   WHEN DATE_FORMAT_ERROR THEN
3002     return 1;
3003   WHEN OTHERS THEN
3004     return 1;
3005 END CHECKDATES;
3006 
3007 
3008 FUNCTION get_message (
3009   p_app  IN VARCHAR2,
3010   p_name IN VARCHAR2,
3011   p_lang IN VARCHAR2
3012 ) RETURN VARCHAR2 IS
3013   msg VARCHAR2(2000) := NULL;
3014   CURSOR c1(app_name VARCHAR2, msg_name VARCHAR2, lang VARCHAR2) IS
3015   SELECT m.message_text
3016   FROM   fnd_new_messages m,
3017          fnd_application a
3018   WHERE  m.message_name = msg_name AND
3019          m.language_code = lang AND
3020          a.application_short_name = app_name AND
3021          m.application_id = a.application_id;
3022 BEGIN
3023   OPEN c1(p_app, p_name, p_lang);
3024   FETCH c1 INTO msg;
3025   IF (c1%NOTFOUND) then
3026     msg := p_name;
3027   END IF;
3028   CLOSE c1;
3029   RETURN msg;
3030 END get_message;
3031 
3032 
3033 
3034 PROCEDURE send_ntf (
3035   p_header_id IN NUMBER,
3036   p_file_name IN VARCHAR2,
3037   p_status    IN NUMBER,
3038   p_user_name IN VARCHAR2,
3039   p_event_key IN VARCHAR2
3040 ) IS
3041   parameter_list WF_PARAMETER_LIST_T;
3042   event_name VARCHAR2(50):= 'oracle.apps.msc.txn.loads';
3043   msg_txt  VARCHAR2(2000) := NULL;
3044   full_language VARCHAR2(80) := NULL;
3045   language VARCHAR2(10);
3046   msg_name VARCHAR2(40) := NULL;
3047   date_format VARCHAR2(80);
3048   mailDate VARCHAR2(80);
3049 BEGIN
3050   log_debug('In send_ntf');
3051   --language := fnd_preference.get(UPPER(p_user_name),'WF','LANGUAGE');
3052 
3053 /*  BUG #3845796 :Using Applications Session Language in preference to ICX_LANGUAGE profile value */
3054 
3055         language := USERENV('LANG');
3056 	IF(language is null) THEN
3057 
3058 	full_language := fnd_profile.value('ICX_LANGUAGE');
3059 
3060     IF full_language IS NOT NULL THEN
3061       SELECT language_code
3062       INTO   language
3063       FROM   fnd_languages
3064       WHERE  nls_language = full_language;
3065     ELSE
3066       language := 'US';
3067     END IF;
3068     END IF;
3069 /*
3070   if language is null then
3071     language := 'US';
3072   end if;
3073 */
3074    date_format := NVL(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD/MM/YYYY');
3075    mailDate := to_char(sysdate, date_format) ;
3076 
3077   IF p_status = G_SUCCESS THEN
3078     msg_txt := get_message('MSC', 'MSC_X_LOADS_SUCCESS', language);
3079     msg_name := 'LOADS_SUCCESS_NTF';
3080   ELSIF p_status = G_FAILURE THEN
3081     msg_txt := build_error_string(p_header_id, language);
3082     msg_name := 'LOADS_ERROR_NTF';
3083   END IF;
3084 
3085   wf_event.AddParameterToList(p_name => 'USER_NAME',
3086                               p_value => p_user_name,
3087                               p_parameterlist => parameter_list);
3088   wf_event.AddParameterToList(p_name => 'MESG',
3089                               p_value => msg_name,
3090                               p_parameterlist => parameter_list);
3091   wf_event.AddParameterToList(p_name => 'MESG_BODY',
3092                               p_value => msg_txt,
3093                               p_parameterlist => parameter_list);
3094   wf_event.AddParameterToList(p_name => 'HEADER_ID',
3095                               p_value => p_header_id,
3096                               p_parameterlist => parameter_list);
3097   wf_event.AddParameterToList(p_name => 'CREATION_DATE',
3098                               p_value => mailDate,
3099                               p_parameterlist => parameter_list);
3100   wf_event.AddParameterToList(p_name => 'FILENAME',
3101                               p_value => p_file_name,
3102                               p_parameterlist => parameter_list);
3103   wf_event.raise(p_event_name => event_name,
3104                  p_event_key => p_event_key,
3105                  p_parameters => parameter_list);
3106 END send_ntf;
3107 
3108 
3109 
3110 FUNCTION build_error_string (
3111   p_header_id IN NUMBER,
3112   p_lang IN VARCHAR2
3113 ) RETURN VARCHAR2 IS
3114 
3115   CURSOR errors (header_id NUMBER) IS
3116   SELECT line_id,
3117          nvl(item_name, nvl(owner_item_name, nvl(supplier_item_name, customer_item_name))),
3118          substrb(err_msg,1,240),
3119          substrb(order_type,1,240),
3120          order_identifier,
3121          release_number,
3122          line_number
3123   FROM   msc_supdem_lines_interface
3124   WHERE  parent_header_id = header_id AND
3125          row_status = G_FAILURE;
3126 
3127   err_buf             VARCHAR2(2000) := NULL;
3128   line_id             NUMBER;
3129   min_line_id         NUMBER;
3130   err_msg             VARCHAR2(240);
3131   item_name           VARCHAR2(240);
3132   order_type          VARCHAR2(240);
3133   order_number        VARCHAR2(240);
3134   release_number      VARCHAR2(20);
3135   line_number         VARCHAR2(20);
3136 BEGIN
3137   SELECT min(line_id)
3138   INTO   min_line_id
3139   FROM   msc_supdem_lines_interface
3140   WHERE  parent_header_id = p_header_id;
3141 
3142   OPEN errors(p_header_id);
3143   LOOP
3144     FETCH errors
3145     INTO  line_id,
3146           item_name,
3147           err_msg,
3148           order_type,
3149           order_number,
3150           release_number,
3151           line_number;
3152     EXIT WHEN errors%NOTFOUND OR lengthb(err_buf) > 1500;
3153     err_buf := err_buf || fnd_global.local_chr(10) ||
3154                substrb(get_message('MSC','MSC_X_UI_VOD_ORD_LINE_NUM',p_lang),1,40) ||
3155                ': ' || to_char(line_id - min_line_id + 1) || ', ' ||
3156                substrb(get_message('MSC','MSC_X_UI_ITEM',p_lang),1,40) ||
3157                ': ' || item_name || ', ' ;
3158 
3159     IF order_type IS NOT NULL THEN
3160       err_buf := err_buf || substrb(get_message('MSC','MSC_X_UI_SDD_ORDER_TYPE',p_lang),1,40) ||
3161                  ': ' || order_type || ', ';
3162     END IF;
3163 
3164     IF order_number IS NOT NULL THEN
3165       err_buf := err_buf || substrb(get_message('MSC','MSC_X_UI_SDD_TH_ORDER', p_lang),1,40) ||
3166                  ': ' || order_number || ', ';
3167     END IF;
3168 
3169     IF release_number IS NOT NULL THEN
3170       err_buf := err_buf || substrb(get_message('MSC','MSC_X_UI_VOD_ORD_REL_NUM', p_lang),1,40) ||
3171                  ': ' || release_number || ', ';
3172     END IF;
3173 
3174     IF line_number IS NOT NULL THEN
3175       err_buf := err_buf || substrb(get_message('MSC','MSC_X_UI_VOD_EX_ORD_LINE', p_lang),1,40) ||
3176                  ': ' || line_number || ', ';
3177     END IF;
3178 
3179     err_buf := err_buf || substrb(get_message('MSC','MSC_X_UI_LSD_ERROR', p_lang),1,40) ||
3180                ': ' || err_msg ;
3181     IF (lengthb(err_buf) > 1500) THEN
3182        err_buf := err_buf || fnd_global.local_chr(10) || substrb(get_message('MSC','MSC_X_API_ERRORS_STOPPED', p_lang),1,(2000 - lengthb(err_buf)));
3183     END IF;
3184   END LOOP;
3185   CLOSE errors;
3186   RETURN err_buf;
3187 END build_error_string;
3188 
3189 
3190 
3191 PROCEDURE validate (
3192 
3193   p_err_msg   OUT NOCOPY VARCHAR2,
3194   p_status    OUT NOCOPY NUMBER,
3195   p_header_id IN NUMBER,
3196   p_build_err IN NUMBER
3197 ) IS
3198 
3199 -- Added fix for bug 2408610 (Sync'd up delete and replace behavior)
3200 
3201 	/* sbala ADD CA */
3202    CURSOR c_delete
3203      (
3204       p_header_id NUMBER,
3205       p_language VARCHAR2,
3206       p_start_line NUMBER,
3207       p_end_line NUMBER,
3208       p_date_format VARCHAR2
3209       ) IS
3210 	 select sd.transaction_id
3211 	   from msc_supdem_lines_interface ln,
3212 	   msc_companies c,
3213 	   msc_company_sites s ,
3214 	   fnd_lookup_values flv,
3215 	   msc_sup_dem_entries sd
3216 	   where  ln.parent_header_id = p_header_id and
3217 	   ln.line_id between p_start_line and p_end_line and
3218 	   NVL(ln.row_status, G_PROCESS) = G_SUCCESS and
3219 	   UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) and
3220 	   s.company_id = c.company_id and
3221 	   UPPER(s.company_site_name) = UPPER(ln.publisher_site) and
3222 	   flv.lookup_type = 'MSC_X_ORDER_TYPE' and
3223 	   flv.language = p_language and
3224 	   UPPER(flv.meaning) = UPPER(ln.order_type) and
3225 	   UPPER(ln.sync_indicator) = 'D' and
3226 	   sd.publisher_id = c.company_id and
3227 	   sd.publisher_site_id = s.company_site_id AND
3228 
3229 	   upper(nvl(sd.supplier_name,G_NULL_STRING)) = upper(nvl(ln.supplier_company,
3230 								  nvl(sd.supplier_name,G_NULL_STRING))) and
3231 	   upper(nvl(sd.supplier_site_name,G_NULL_STRING)) = upper(nvl(ln.supplier_site,
3232 								       nvl(sd.supplier_site_name,G_NULL_STRING))) and
3233 	   upper(nvl(sd.customer_name,G_NULL_STRING)) = upper(nvl(ln.customer_company,
3234 								  nvl(sd.customer_name,G_NULL_STRING))) and
3235 	   upper(nvl(sd.customer_site_name,G_NULL_STRING)) = upper(nvl(ln.customer_site,
3236 								       nvl(sd.customer_site_name,G_NULL_STRING))) and
3237 	   (
3238 	    sd.item_name = NVL(ln.item_name,
3239 			       Nvl(ln.owner_item_name,
3240 				   Nvl(ln.customer_item_name, ln.supplier_item_name))) or
3241 	    sd.owner_item_name = NVL(ln.owner_item_name,
3242 				     Nvl(ln.item_name,
3243 					 Nvl(ln.customer_item_name,ln.supplier_item_name))) or
3244 	    sd.customer_item_name = NVL(ln.customer_item_name,
3245 					Nvl(ln.item_name,
3246 					    Nvl(ln.owner_item_name, ln.supplier_item_name)))  or
3247 	    sd.supplier_item_name = NVL(ln.supplier_item_name,
3248 					Nvl(ln.item_name,
3249 					    Nvl(ln.owner_item_name, ln.customer_item_name)))
3250 	    ) and
3251 	   sd.publisher_order_type = flv.lookup_code and
3252 	   sd.publisher_order_type in (G_SALES_FORECAST,
3253 			       G_ORDER_FORECAST,
3254 			       G_SUPPLY_COMMIT,
3255 			       G_HIST_SALES,
3256 			       G_SELL_THRO_FCST,
3257 			       G_SUPPLIER_CAP,
3258 			       G_SAFETY_STOCK,
3259 			       G_INTRANSIT,
3260 			       g_replenishment,
3261 			       g_alloc_onhand,
3262 			       g_unallocated_onhand,
3263 			      g_proj_avai_bal,        --Consigned CVMI Enh : Bug # 4247230
3264 	          decode(G_CVMI_PROFILE  , 'N' , G_CONS_ADVICE , null , G_CONS_ADVICE , -1  ))
3265 	   and upper(nvl(sd.bucket_type_desc, G_NULL_STRING)) = upper(nvl(ln.bucket_type, Nvl(sd.bucket_type_desc,G_NULL_STRING)))
3266 	   and sd.key_date between Decode(ln.key_date,NULL,sd.key_date, trunc(to_date(ln.key_date, p_date_format)))
3267 		  and decode(ln.new_schedule_end_date, NULL, sd.key_date,trunc(to_date(ln.new_schedule_end_date, p_date_format)))
3268 	   AND Nvl(sd.last_update_login,-1) <> G_DELETED
3269 	   UNION
3270 	   select sd.transaction_id
3271 	   from msc_supdem_lines_interface ln,
3272 	   msc_companies c,
3273 	   msc_company_sites s ,
3274 	   fnd_lookup_values flv,
3275 	   msc_sup_dem_entries sd
3276 	   where  ln.parent_header_id = p_header_id and
3277 	   ln.line_id between p_start_line and p_end_line and
3278 	   NVL(ln.row_status, G_PROCESS) = G_SUCCESS and
3279 	   UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) and
3280 	   s.company_id = c.company_id and
3281 	   UPPER(s.company_site_name) = UPPER(ln.publisher_site) and
3282 	   flv.lookup_type = 'MSC_X_ORDER_TYPE' and
3283 	   flv.language = p_language and
3284          ---  flv.meaning = 'Consumption Advice' and
3285 	   UPPER(flv.meaning) = UPPER(ln.order_type) and
3286 	   UPPER(ln.sync_indicator) = 'D' and
3287 	   sd.publisher_id = c.company_id and
3288 	   sd.publisher_site_id = s.company_site_id and
3289 	   upper(nvl(sd.supplier_name,G_NULL_STRING)) = upper(nvl(ln.supplier_company,
3290 								  nvl(sd.supplier_name,G_NULL_STRING))) and
3291 	   upper(nvl(sd.supplier_site_name,G_NULL_STRING)) = upper(nvl(ln.supplier_site,
3292 								       nvl(sd.supplier_site_name,G_NULL_STRING))) and
3293 	   upper(nvl(sd.customer_name,G_NULL_STRING)) = upper(nvl(ln.customer_company,
3294 								  nvl(sd.customer_name,G_NULL_STRING))) and
3295 	   upper(nvl(sd.customer_site_name,G_NULL_STRING)) = upper(nvl(ln.customer_site,
3296 								       nvl(sd.customer_site_name,G_NULL_STRING))) and
3297 	   (
3298 	    sd.item_name = NVL(ln.item_name,
3299 			       Nvl(ln.owner_item_name,
3300 				   Nvl(ln.customer_item_name, ln.supplier_item_name))) or
3301 	    sd.owner_item_name = NVL(ln.owner_item_name,
3302 				     Nvl(ln.item_name,
3303 					 Nvl(ln.customer_item_name,ln.supplier_item_name))) or
3304 	    sd.customer_item_name = NVL(ln.customer_item_name,
3305 					Nvl(ln.item_name,
3306 					    Nvl(ln.owner_item_name, ln.supplier_item_name)))  or
3307 	    sd.supplier_item_name = NVL(ln.supplier_item_name,
3308 					Nvl(ln.item_name,
3309 					    Nvl(ln.owner_item_name, ln.customer_item_name)))
3310 	    ) and
3311 	   sd.publisher_order_type = flv.lookup_code and
3312 	   sd.publisher_order_type = G_WORK_ORDER
3313 	   and sd.key_date = decode(ln.key_date, NULL,sd.key_date, Trunc(To_date(ln.key_date, p_date_format)))
3314 	   and NVL(sd.order_number, G_NULL_STRING) = NVL(ln.order_identifier,Nvl(sd.order_number,G_NULL_STRING))
3315 	   AND Nvl(sd.last_update_login,-1) <> G_DELETED
3316 	   UNION
3317 	   select sd.transaction_id
3318 	   from msc_supdem_lines_interface ln,
3319 	   msc_companies c,
3320 	   msc_company_sites s ,
3321 	   fnd_lookup_values flv,
3322 	   msc_sup_dem_entries sd
3323 	   where  ln.parent_header_id = p_header_id and
3324 	   ln.line_id between p_start_line and p_end_line and
3325 	   NVL(ln.row_status, G_PROCESS) = G_SUCCESS and
3326 	   UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) and
3327 	   s.company_id = c.company_id and
3328 	   UPPER(s.company_site_name) = UPPER(ln.publisher_site) and
3329 	   flv.lookup_type = 'MSC_X_ORDER_TYPE' and
3330 	   flv.language = p_language and
3331 	   UPPER(flv.meaning) = UPPER(ln.order_type) and
3332 	   UPPER(ln.sync_indicator) = 'D' and
3333 	   sd.publisher_id = c.company_id and
3334 	   sd.publisher_site_id = s.company_site_id and
3335 	   upper(nvl(sd.supplier_name,G_NULL_STRING)) = upper(nvl(ln.supplier_company,
3336 								  nvl(sd.supplier_name,G_NULL_STRING))) and
3337 	   upper(nvl(sd.supplier_site_name,G_NULL_STRING)) = upper(nvl(ln.supplier_site,
3338 								       nvl(sd.supplier_site_name,G_NULL_STRING))) and
3339 	   upper(nvl(sd.customer_name,G_NULL_STRING)) = upper(nvl(ln.customer_company,
3340 								  nvl(sd.customer_name,G_NULL_STRING))) and
3341 	   upper(nvl(sd.customer_site_name,G_NULL_STRING)) = upper(nvl(ln.customer_site,
3342 								       nvl(sd.customer_site_name,G_NULL_STRING))) and
3343 	   (
3344 	    sd.item_name = NVL(ln.item_name,
3345 			       Nvl(ln.owner_item_name,
3346 				   Nvl(ln.customer_item_name, ln.supplier_item_name))) or
3347 	    sd.owner_item_name = NVL(ln.owner_item_name,
3348 				     Nvl(ln.item_name,
3349 					 Nvl(ln.customer_item_name,ln.supplier_item_name))) or
3350 	    sd.customer_item_name = NVL(ln.customer_item_name,
3351 					Nvl(ln.item_name,
3352 					    Nvl(ln.owner_item_name, ln.supplier_item_name)))  or
3353 	    sd.supplier_item_name = NVL(ln.supplier_item_name,
3354 					Nvl(ln.item_name,
3355 					    Nvl(ln.owner_item_name, ln.customer_item_name)))
3356 	    ) and
3357 	   sd.publisher_order_type = flv.lookup_code and
3358 	   sd.publisher_order_type IN (G_PURCHASE_ORDER,
3359 				 G_SALES_ORDER,
3360 				 G_ASN,
3361 				 G_SHIP_RECEIPT,
3362 				 G_REQUISITION,
3363 				 G_PO_ACKNOWLEDGEMENT,
3364 		decode(G_CVMI_PROFILE  , 'Y' , G_CONS_ADVICE , -1 )) AND  --Consigned CVMI Enh
3365 	   NVL(sd.order_number, G_NULL_STRING) = Decode(sd.publisher_order_type,
3366 						 g_purchase_order,
3367 						 nvl(ln.order_identifier,G_NULL_STRING),
3368 						 G_SALES_ORDER,
3369 						 nvl(ln.order_identifier,G_NULL_STRING),
3370 						 G_ASN,
3371 						 nvl(ln.order_identifier,G_NULL_STRING),
3372 						 G_SHIP_RECEIPT,
3373 						 nvl(ln.order_identifier,G_NULL_STRING),
3374 						 G_REQUISITION,
3375 						 nvl(ln.order_identifier, G_NULL_STRING),
3376 						 G_PO_ACKNOWLEDGEMENT,
3377 						 nvl(ln.order_identifier, g_null_string),
3378 						 G_CONS_ADVICE,
3379 						 nvl(ln.order_identifier,G_NULL_STRING),
3380 						 G_NULL_STRING) AND
3381 	   NVL(sd.line_number, G_NULL_STRING) = Decode(sd.publisher_order_type,
3382 						g_purchase_order,
3383 						nvl(ln.line_number, g_null_string),
3384 						G_SALES_ORDER,
3385 						nvl(ln.line_number, g_null_string),
3386 						G_ASN,
3387 						nvl(ln.line_number, g_null_string),
3388 						G_SHIP_RECEIPT,
3389 						Nvl(ln.line_number, g_null_string),
3390 						G_REQUISITION,
3391 						Nvl(ln.line_number, g_null_string),
3392 						G_PO_ACKNOWLEDGEMENT,
3393 						Nvl(ln.line_number, g_null_string),
3394 						G_CONS_ADVICE,
3395 						nvl(ln.line_number, g_null_string),
3396 						G_NULL_STRING) AND
3397 	   NVL(sd.release_number, G_NULL_STRING) = Decode(sd.publisher_order_type,
3398 						 g_purchase_order,
3399 						 Nvl(ln.release_number, g_null_string),
3400 						 G_SALES_ORDER,
3401 						 Nvl(ln.release_number, g_null_string),
3402 						 G_ASN,
3403 						 Nvl(ln.release_number, g_null_string),
3404 						 G_SHIP_RECEIPT,
3405 						 Nvl(ln.release_number, g_null_string),
3406 						 G_REQUISITION,
3407 						 Nvl(ln.release_number, g_null_string),
3408 						 G_PO_ACKNOWLEDGEMENT,
3409 						 Nvl(ln.release_number, g_null_string),
3410 						 G_CONS_ADVICE,
3411 						 Nvl(ln.release_number, g_null_string),
3412 						 G_NULL_STRING) AND
3413 	   NVL(sd.end_order_number, G_NULL_STRING) = Decode(sd.publisher_order_type,
3414 						   g_purchase_order,
3415 						   Nvl(ln.pegging_order_identifier, g_null_string),
3416 						   G_SALES_ORDER,
3417 						   Nvl(ln.pegging_order_identifier, g_null_string),
3418 						   G_ASN,
3419 						   Nvl(ln.pegging_order_identifier, g_null_string),
3420 						   G_SHIP_RECEIPT,
3421 						   Nvl(ln.pegging_order_identifier, g_null_string),
3422 						   G_REQUISITION,
3423 						   Nvl(ln.pegging_order_identifier, g_null_string),
3424 						   G_PO_ACKNOWLEDGEMENT,
3425 						  Nvl(ln.pegging_order_identifier, g_null_string),
3426 						   G_CONS_ADVICE,
3427 						   Nvl(ln.pegging_order_identifier, g_null_string),
3428 						   G_NULL_STRING) AND
3429 	   NVL(sd.end_order_rel_number, G_NULL_STRING) = Decode(sd.publisher_order_type,
3430 						       g_purchase_order,
3431 						       Nvl(ln.ref_release_number, g_null_string),
3432 						       G_SALES_ORDER,
3433 						       Nvl(ln.ref_release_number, g_null_string),
3434 						       G_ASN,
3435 						       Nvl(ln.ref_release_number, g_null_string),
3436 						       G_SHIP_RECEIPT,
3437 						       Nvl(ln.ref_release_number, g_null_string),
3438 						       G_REQUISITION,
3439 						       Nvl(ln.ref_release_number, g_null_string),
3440 						       G_PO_ACKNOWLEDGEMENT,
3441 						       Nvl(ln.ref_release_number, g_null_string),
3442 						       G_CONS_ADVICE,
3443 						       Nvl(ln.ref_release_number, g_null_string),
3444 						       G_NULL_STRING) AND
3445 	   NVL(sd.end_order_line_number, G_NULL_STRING) = Decode(sd.publisher_order_type,
3446 							g_purchase_order,
3447 							Nvl(ln.ref_line_number, g_null_string),
3448 							G_SALES_ORDER,
3449 							Nvl(ln.ref_line_number, g_null_string),
3450 							G_ASN,
3451 							Nvl(ln.ref_line_number, g_null_string),
3452 							G_SHIP_RECEIPT,
3453 							Nvl(ln.ref_line_number, g_null_string),
3454 							G_REQUISITION,
3455 							Nvl(ln.ref_line_number, g_null_string),
3456 							G_PO_ACKNOWLEDGEMENT,
3457 							Nvl(ln.ref_line_number, g_null_string),
3458 							 G_CONS_ADVICE,
3459 							 Nvl(ln.ref_line_number, g_null_string),
3460 							G_NULL_STRING) and
3461 	   Nvl(sd.last_update_login,-1) <> G_DELETED;
3462 
3463   /* Added for work order support */
3464 
3465   CURSOR c_work_order_without_cust(
3466     p_header_id  NUMBER,
3467     p_language   VARCHAR2,
3468     p_start_line NUMBER,
3469     p_end_line   NUMBER,
3470     p_date_format VARCHAR2
3471   ) IS
3472   SELECT ln.line_id ,
3473          c.company_name,
3474          c.company_id,
3475          s.company_site_name,
3476          s.company_site_id,
3477          ln.publisher_address,
3478          ln.customer_company,
3479          ln.customer_company,
3480          ln.customer_site,
3481          ln.customer_site,
3482          ln.customer_address,
3483          c.company_name,
3484          c.company_id,
3485          s.company_site_name,
3486          s.company_site_id,
3487          ln.supplier_address,
3488          ln.ship_from_party_name,
3489          ln.ship_from_party_site,
3490          ln.ship_from_party_address,
3491          ln.ship_to_party_name,
3492          ln.ship_to_party_site,
3493          ln.ship_to_party_address,
3494          ln.ship_to_address,
3495          ln.end_order_publisher_name,
3496          ln.end_order_publisher_site,
3497          flv1.lookup_code,
3498          flv1.meaning,
3499          null,
3500          --ln.end_order_type,
3501          --ln.bucket_type,
3502          flv.meaning,
3503          flv.lookup_code,
3504          ln.inventory_item_id,
3505          ln.order_identifier,
3506          ln.line_number,
3507          ln.release_number,
3508          null,
3509          null,
3510          null,
3511 /*
3512          ln.pegging_order_identifier,
3513          ln.ref_line_number,
3514          ln.ref_release_number,
3515 */
3516          DECODE(ln.key_date, NULL, NULL,
3517                 to_date(ln.key_date, p_date_format)),
3518          DECODE(ln.new_schedule_date, NULL, NULL,
3519                 to_date(ln.new_schedule_date, p_date_format)),
3520          DECODE(ln.ship_date, NULL, NULL,
3521                 to_date(ln.ship_date, p_date_format)),
3522          DECODE(ln.receipt_date, NULL, NULL,
3523                 to_date(ln.receipt_date, p_date_format)),
3524          DECODE(ln.new_order_placement_date, NULL, NULL,
3525                 to_date(ln.new_order_placement_date, p_date_format)),
3526          DECODE(ln.original_promised_date, NULL, NULL,
3527                 to_date(ln.original_promised_date, p_date_format)),
3528          DECODE(ln.request_date,NULL,NULL,
3529                 to_date(ln.request_date,p_date_format)),
3530          Decode(ln.wip_start_date, NULL, NULL,
3531                 to_date(ln.wip_start_date,p_date_format)),
3532          Decode(ln.wip_end_date, NULL, NULL,
3533                 to_date(ln.wip_end_date,p_date_format)),
3534          round(ln.quantity, 6),
3535          ln.uom,
3536          ln.comments,
3537          ln.carrier_code,
3538          ln.bill_of_lading_number,
3539          ln.tracking_number,
3540          ln.vehicle_number,
3541          ln.container_type,
3542          round(ln.container_qty, 6),
3543          ln.serial_number,
3544          ln.attachment_url,
3545          ln.version,
3546          ln.designator,
3547          ln.context,
3548          ln.attribute1,
3549          ln.attribute2,
3550          ln.attribute3,
3551          ln.attribute4,
3552          ln.attribute5,
3553          ln.attribute6,
3554          ln.attribute7,
3555          ln.attribute8,
3556          ln.attribute9,
3557          ln.attribute10,
3558          ln.attribute11,
3559          ln.attribute12,
3560          ln.attribute13,
3561          ln.attribute14,
3562          ln.attribute15,
3563          ln.posting_party_name
3564   FROM   msc_supdem_lines_interface ln,
3565          fnd_lookup_values flv,
3566          fnd_lookup_values flv1,
3567          msc_companies c,
3568          msc_company_sites s
3569   WHERE  ln.parent_header_id = p_header_id AND
3570          ln.line_id between p_start_line and p_end_line AND
3571          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
3572          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
3573          s.company_id = c.company_id AND
3574          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
3575          ln.customer_company IS NULL and
3576          flv.lookup_type = 'MSC_X_BUCKET_TYPE' AND
3577          flv.language = p_language AND
3578 	 flv.lookup_code = g_day and
3579 	 flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
3580 	 flv1.language = p_language AND
3581 	 UPPER(flv1.meaning) = UPPER(ln.order_type) AND
3582 	 flv1.lookup_code = G_WORK_ORDER AND
3583 	 UPPER(ln.sync_indicator) = 'R';
3584 
3585 	 CURSOR c_work_order_with_cust(
3586 	    p_header_id  NUMBER,
3587 	    p_language   VARCHAR2,
3588 	    p_start_line NUMBER,
3589 	    p_end_line   NUMBER,
3590 	    p_date_format VARCHAR2
3591 	  ) IS
3592 	  SELECT ln.line_id ,
3593 		 c.company_name,
3594 		 c.company_id,
3595 		 s.company_site_name,
3596 		 s.company_site_id,
3597 		 ln.publisher_address,
3598 		 c1.company_name,
3599 		 c1.company_id,
3600 		 s1.company_site_name,
3601 		 s1.company_site_id,
3602 		 ln.customer_address,
3603 		 c.company_name,
3604 		 c.company_id,
3605 		 s.company_site_name,
3606 		 s.company_site_id,
3607 		 ln.supplier_address,
3608 		 ln.ship_from_party_name,
3609 		 ln.ship_from_party_site,
3610 		 ln.ship_from_party_address,
3611 		 ln.ship_to_party_name,
3612 		 ln.ship_to_party_site,
3613 		 ln.ship_to_party_address,
3614 		 ln.ship_to_address,
3615 		 ln.end_order_publisher_name,
3616 		 ln.end_order_publisher_site,
3617 		 flv1.lookup_code,
3618 		 flv1.meaning,
3619 		 null,
3620 		 --ln.end_order_type,
3621 		 --ln.bucket_type,
3622 		 flv.meaning,
3623 		 flv.lookup_code,
3624 		 ln.inventory_item_id,
3625 		 ln.order_identifier,
3626 		 ln.line_number,
3627 		 ln.release_number,
3628 		 null,
3629 		 null,
3630 			  null,
3631 	/*
3632 		 ln.pegging_order_identifier,
3633 		 ln.ref_line_number,
3634 		 ln.ref_release_number,
3635 	*/
3636 		 DECODE(ln.key_date, NULL, NULL,
3637 			to_date(ln.key_date, p_date_format)),
3638 		 DECODE(ln.new_schedule_date, NULL, NULL,
3639 			to_date(ln.new_schedule_date, p_date_format)),
3640 		 DECODE(ln.ship_date, NULL, NULL,
3641 			to_date(ln.ship_date, p_date_format)),
3642 		 DECODE(ln.receipt_date, NULL, NULL,
3643 			to_date(ln.receipt_date, p_date_format)),
3644 		 DECODE(ln.new_order_placement_date, NULL, NULL,
3645 			to_date(ln.new_order_placement_date, p_date_format)),
3646 		 DECODE(ln.original_promised_date, NULL, NULL,
3647 			to_date(ln.original_promised_date, p_date_format)),
3648 		 DECODE(ln.request_date,NULL,NULL,
3649 			to_date(ln.request_date,p_date_format)),
3650 		 Decode(ln.wip_start_date, NULL, NULL,
3651 			to_date(ln.wip_start_date,p_date_format)),
3652 		 Decode(ln.wip_end_date, NULL, NULL,
3653 			to_date(ln.wip_end_date,p_date_format)),
3654 		 round(ln.quantity, 6),
3655 		 ln.uom,
3656 		 ln.comments,
3657 		 ln.carrier_code,
3658 		 ln.bill_of_lading_number,
3659 		 ln.tracking_number,
3660 		 ln.vehicle_number,
3661 		 ln.container_type,
3662 		 round(ln.container_qty, 6),
3663 		 ln.serial_number,
3664 		 ln.attachment_url,
3665 		 ln.version,
3666 		 ln.designator,
3667 		 ln.context,
3668 		 ln.attribute1,
3669 		 ln.attribute2,
3670 		 ln.attribute3,
3671 		 ln.attribute4,
3672 		 ln.attribute5,
3673 		 ln.attribute6,
3674 		 ln.attribute7,
3675 		 ln.attribute8,
3676 		 ln.attribute9,
3677 		 ln.attribute10,
3678 		 ln.attribute11,
3679 		 ln.attribute12,
3680 		 ln.attribute13,
3681 		 ln.attribute14,
3682 		 ln.attribute15,
3683 		 ln.posting_party_name
3684 	  FROM   msc_supdem_lines_interface ln,
3685 		 fnd_lookup_values flv,
3686 		 fnd_lookup_values flv1,
3687 		 msc_companies c,
3688 		 msc_company_sites s,
3689 		 msc_companies c1,
3690 		 msc_company_sites s1,
3691 		 msc_company_relationships r
3692 	  WHERE  ln.parent_header_id = p_header_id AND
3693 		 ln.line_id between p_start_line and p_end_line AND
3694 		 NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
3695 		 UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
3696 		 s.company_id = c.company_id AND
3697 		 UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
3698 		 ln.customer_company IS NOT NULL AND
3699 		 UPPER(c1.company_name) = UPPER(ln.customer_company) AND
3700 		 r.subject_id = c.company_id AND
3701 		 r.object_id = c1.company_id AND
3702 		 r.relationship_type = 1 AND
3703 		 s1.company_id = c1.company_id AND
3704 		 UPPER(s1.company_site_name) = UPPER(ln.customer_site) AND
3705 		 flv.lookup_type = 'MSC_X_BUCKET_TYPE' AND
3706 		 flv.language = p_language AND
3707 		 flv.lookup_code = g_day and
3708          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
3709          flv1.language = p_language AND
3710          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
3711          flv1.lookup_code = G_WORK_ORDER AND
3712          UPPER(ln.sync_indicator) = 'R';
3713 
3714   CURSOR c_unallocated_onhand(
3715     p_header_id  NUMBER,
3716     p_language   VARCHAR2,
3717     p_start_line NUMBER,
3718     p_end_line   NUMBER,
3719     p_date_format VARCHAR2
3720   ) IS
3721   SELECT ln.line_id ,
3722          c.company_name,
3723          c.company_id,
3724          s.company_site_name,
3725          s.company_site_id,
3726          ln.publisher_address,
3727          ln.customer_company,
3728          ln.customer_company,
3729          ln.customer_site,
3730          ln.customer_site,
3731          ln.customer_address,
3732          ln.supplier_company,
3733          ln.supplier_company,
3734          ln.supplier_site,
3735          ln.supplier_site,
3736          ln.supplier_address,
3737          ln.ship_from_party_name,
3738          ln.ship_from_party_site,
3739          ln.ship_from_party_address,
3740          ln.ship_to_party_name,
3741          ln.ship_to_party_site,
3742          ln.ship_to_party_address,
3743          ln.ship_to_address,
3744          ln.end_order_publisher_name,
3745          ln.end_order_publisher_site,
3746          flv1.lookup_code,
3747          flv1.meaning,
3748          ln.end_order_type,
3749 	 decode(lookup_code, G_CONS_ADVICE,NVL(ln.bucket_type,G_DAY_DESC),
3750                       NULL),
3751          NULL,
3752          ln.inventory_item_id,
3753          ln.order_identifier,
3754          ln.line_number,
3755          ln.release_number,
3756          ln.pegging_order_identifier,
3757          ln.ref_line_number,
3758          ln.ref_release_number,
3759 	 /* for bug# 3271374, populate the new_schedule_date as key_date for unallocated OH */
3760          DECODE(ln.new_schedule_date, NULL, NULL,
3761                 to_date(ln.new_schedule_date, p_date_format)),
3762          DECODE(ln.new_schedule_date, NULL, NULL,
3763                 to_date(ln.new_schedule_date, p_date_format)),
3764          DECODE(ln.ship_date, NULL, NULL,
3765                 to_date(ln.ship_date, p_date_format)),
3766          DECODE(ln.receipt_date, NULL, NULL,
3767                 to_date(ln.receipt_date, p_date_format)),
3768          DECODE(ln.new_order_placement_date, NULL, NULL,
3769                 to_date(ln.new_order_placement_date, p_date_format)),
3770          DECODE(ln.original_promised_date, NULL, NULL,
3771                 to_date(ln.original_promised_date, p_date_format)),
3772          DECODE(ln.request_date,NULL,NULL,
3773                 to_date(ln.request_date,p_date_format)),
3774          NULL,
3775          NULL,
3776          round(ln.quantity, 6),
3777          ln.uom,
3778          ln.comments,
3779          ln.carrier_code,
3780          ln.bill_of_lading_number,
3781          ln.tracking_number,
3782          ln.vehicle_number,
3783          ln.container_type,
3784          round(ln.container_qty, 6),
3785          ln.serial_number,
3786          ln.attachment_url,
3787          ln.version,
3788          ln.designator,
3789          ln.context,
3790          ln.attribute1,
3791          ln.attribute2,
3792          ln.attribute3,
3793          ln.attribute4,
3794          ln.attribute5,
3795          ln.attribute6,
3796          ln.attribute7,
3797          ln.attribute8,
3798          ln.attribute9,
3799          ln.attribute10,
3800          ln.attribute11,
3801          ln.attribute12,
3802          ln.attribute13,
3803          ln.attribute14,
3804          ln.attribute15,
3805          ln.posting_party_name
3806   FROM   msc_supdem_lines_interface ln,
3807          fnd_lookup_values flv1,
3808          msc_companies c,
3809          msc_company_sites s
3810   WHERE  ln.parent_header_id = p_header_id AND
3811          ln.line_id between p_start_line and p_end_line AND
3812          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
3813          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
3814          s.company_id = c.company_id AND
3815          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
3816          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
3817          flv1.language = p_language AND
3818          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
3819          flv1.lookup_code IN (g_unallocated_onhand,
3820 				G_CONS_ADVICE) AND
3821          UPPER(ln.sync_indicator) = 'R';
3822 
3823   CURSOR c_bktless_key (
3824     p_header_id  NUMBER,
3825     p_language   VARCHAR2,
3826     p_start_line NUMBER,
3827     p_end_line   NUMBER,
3828     p_date_format VARCHAR2
3829   ) IS
3830   SELECT ln.line_id ,
3831          c.company_name,
3832          c.company_id,
3833          s.company_site_name,
3834          s.company_site_id,
3835          ln.publisher_address,
3836          decode(ln.customer_company, NULL, c.company_name, c1.company_name),
3837          decode(ln.customer_company, NULL, c.company_id, c1.company_id),
3838          decode(ln.customer_site, NULL, s.company_site_name, s1.company_site_name),
3839          decode(ln.customer_site, NULL, s.company_site_id, s1.company_site_id),
3840          ln.customer_address,
3841          decode(ln.supplier_company, NULL, c.company_name, c1.company_name),
3842          decode(ln.supplier_company, NULL, c.company_id, c1.company_id),
3843          decode(ln.supplier_site, NULL, s.company_site_name, s1.company_site_name),
3844          decode(ln.supplier_site, NULL, s.company_site_id, s1.company_site_id),
3845          ln.supplier_address,
3846          ln.ship_from_party_name,
3847          ln.ship_from_party_site,
3848          ln.ship_from_party_address,
3849          ln.ship_to_party_name,
3850          ln.ship_to_party_site,
3851          ln.ship_to_party_address,
3852          ln.ship_to_address,
3853          ln.end_order_publisher_name,
3854          ln.end_order_publisher_site,
3855          flv1.lookup_code,
3856          flv1.meaning,
3857          ln.end_order_type,
3858          ln.bucket_type,
3859          --Fix for bug 2606288 (Default bucket type to day for planning order types)
3860          Decode(flv1.lookup_code,
3861 		g_purchase_order, to_number(NULL),
3862 		G_SALES_ORDER, to_number(NULL),
3863 		G_ASN, to_number(NULL),
3864 		G_SHIP_RECEIPT, to_number(NULL),
3865 		G_REQUISITION, to_number(NULL),
3866 		G_PO_ACKNOWLEDGEMENT, to_number(NULL),
3867 		G_DAY),
3868          ln.inventory_item_id,
3869          ln.order_identifier,
3870          ln.line_number,
3871          ln.release_number,
3872          ln.pegging_order_identifier,
3873          ln.ref_line_number,
3874          ln.ref_release_number,
3875          DECODE(ln.key_date, NULL,to_date(NULL),
3876                 to_date(ln.key_date, p_date_format)),
3877          DECODE(ln.new_schedule_date, NULL,to_date(NULL),
3878                 to_date(ln.new_schedule_date, p_date_format)),
3879          DECODE(ln.ship_date, NULL,to_date(NULL),
3880                 to_date(ln.ship_date, p_date_format)),
3881          DECODE(ln.receipt_date, NULL,to_date(NULL),
3882                 to_date(ln.receipt_date, p_date_format)),
3883          DECODE(ln.new_order_placement_date, NULL,to_date(NULL),
3884                 to_date(ln.new_order_placement_date, p_date_format)),
3885          DECODE(ln.original_promised_date, NULL,to_date(NULL),
3886                 to_date(ln.original_promised_date, p_date_format)),
3887          DECODE(ln.request_date,NULL,to_date(NULL),
3888                 to_date(ln.request_date,p_date_format)),
3889          NULL,
3890          NULL,
3891          round(ln.quantity, 6),
3892          ln.uom,
3893          ln.comments,
3894          ln.carrier_code,
3895          ln.bill_of_lading_number,
3896          ln.tracking_number,
3897          ln.vehicle_number,
3898          ln.container_type,
3899          round(ln.container_qty, 6),
3900          ln.serial_number,
3901          ln.attachment_url,
3902          ln.version,
3903          ln.designator,
3904          ln.context,
3905          ln.attribute1,
3906          ln.attribute2,
3907          ln.attribute3,
3908          ln.attribute4,
3909          ln.attribute5,
3910          ln.attribute6,
3911          ln.attribute7,
3912          ln.attribute8,
3913          ln.attribute9,
3914          ln.attribute10,
3915          ln.attribute11,
3916          ln.attribute12,
3917          ln.attribute13,
3918          ln.attribute14,
3919          ln.attribute15,
3920          ln.posting_party_name
3921   FROM   msc_supdem_lines_interface ln,
3922          fnd_lookup_values flv1,
3923          msc_companies c,
3924          msc_company_sites s,
3925          msc_companies c1,
3926          msc_company_sites s1,
3927          msc_company_relationships r
3928   WHERE  ln.parent_header_id = p_header_id AND
3929          ln.line_id between p_start_line and p_end_line AND
3930          ln.bucket_type IS NULL AND
3931          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
3932          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
3933          s.company_id = c.company_id AND
3934          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
3935          UPPER(c1.company_name) = UPPER(NVL(ln.customer_company, ln.supplier_company)) AND
3936          r.subject_id = c.company_id AND
3937          r.object_id = c1.company_id AND
3938          r.relationship_type = DECODE(ln.customer_company,NULL,2,1) AND
3939          s1.company_id = c1.company_id AND
3940          UPPER(s1.company_site_name) = UPPER(NVL(ln.customer_site, ln.supplier_site)) AND
3941          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
3942 	 flv1.language = p_language AND
3943 	 /* Added for work order support */
3944          flv1.lookup_code <> G_WORK_ORDER AND
3945          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
3946 	 UPPER(ln.sync_indicator) = 'R'
3947   UNION
3948   SELECT ln.line_id ,
3949          c.company_name,
3950          c.company_id,
3951          s.company_site_name,
3952          s.company_site_id,
3953          ln.publisher_address,
3954 	 ln.customer_company,
3955 	 to_number(NULL),
3956 	 ln.customer_site,
3957 	 to_number(NULL),
3958          ln.customer_address,
3959          ln.supplier_company,
3960          to_number(NULL),
3961          ln.supplier_site,
3962          to_number(NULL),
3963          ln.supplier_address,
3964          ln.ship_from_party_name,
3965          ln.ship_from_party_site,
3966          ln.ship_from_party_address,
3967          ln.ship_to_party_name,
3968          ln.ship_to_party_site,
3969          ln.ship_to_party_address,
3970          ln.ship_to_address,
3971          ln.end_order_publisher_name,
3972          ln.end_order_publisher_site,
3973          flv1.lookup_code,
3974          flv1.meaning,
3975          ln.end_order_type,
3976          ln.bucket_type,
3977          --Fix for bug 2606288 (Default bucket type to day for planning order types)
3978          Decode(flv1.lookup_code,
3979 		g_purchase_order, to_number(NULL),
3980 		G_SALES_ORDER, to_number(NULL),
3981 		G_ASN, to_number(NULL),
3982 		G_SHIP_RECEIPT, to_number(NULL),
3983 		G_REQUISITION, to_number(NULL),
3984 		G_PO_ACKNOWLEDGEMENT, to_number(NULL),
3985 		G_DAY),
3986          ln.inventory_item_id,
3987          ln.order_identifier,
3988          ln.line_number,
3989          ln.release_number,
3990          ln.pegging_order_identifier,
3991          ln.ref_line_number,
3992          ln.ref_release_number,
3993          DECODE(ln.key_date, NULL, to_date(NULL),
3994                 to_date(ln.key_date, p_date_format)),
3995          DECODE(ln.new_schedule_date, NULL, to_date(NULL),
3996                 to_date(ln.new_schedule_date, p_date_format)),
3997          DECODE(ln.ship_date, NULL, to_date(NULL),
3998                 to_date(ln.ship_date, p_date_format)),
3999          DECODE(ln.receipt_date, NULL, to_date(NULL),
4000                 to_date(ln.receipt_date, p_date_format)),
4001          DECODE(ln.new_order_placement_date, NULL, to_date(NULL),
4002                 to_date(ln.new_order_placement_date, p_date_format)),
4003          DECODE(ln.original_promised_date, NULL, to_date(NULL),
4004                 to_date(ln.original_promised_date, p_date_format)),
4005          DECODE(ln.request_date,NULL,to_date(NULL),
4006                 to_date(ln.request_date,p_date_format)),
4007          NULL,
4008          NULL,
4009          round(ln.quantity, 6),
4010          ln.uom,
4011          ln.comments,
4012          ln.carrier_code,
4013          ln.bill_of_lading_number,
4014          ln.tracking_number,
4015          ln.vehicle_number,
4016          ln.container_type,
4017          round(ln.container_qty, 6),
4018          ln.serial_number,
4019          ln.attachment_url,
4020          ln.version,
4021          ln.designator,
4022          ln.context,
4023          ln.attribute1,
4024          ln.attribute2,
4025          ln.attribute3,
4026          ln.attribute4,
4027          ln.attribute5,
4028          ln.attribute6,
4029          ln.attribute7,
4030          ln.attribute8,
4031          ln.attribute9,
4032          ln.attribute10,
4033          ln.attribute11,
4034          ln.attribute12,
4035          ln.attribute13,
4036          ln.attribute14,
4037          ln.attribute15,
4038          ln.posting_party_name
4039   FROM   msc_supdem_lines_interface ln,
4040          fnd_lookup_values flv1,
4041          msc_companies c,
4042          msc_company_sites s
4043   WHERE  ln.parent_header_id = p_header_id AND
4044          ln.line_id between p_start_line and p_end_line AND
4045          ln.bucket_type IS NULL AND
4046          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
4047          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
4048          s.company_id = c.company_id AND
4049          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
4050          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
4051 	 flv1.language = p_language AND
4052          flv1.lookup_code in (g_safety_stock, g_proj_avai_bal) AND
4053          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
4054 	 UPPER(ln.sync_indicator) = 'R';
4055 
4056   CURSOR c_daily_bkt_key (
4057     p_header_id  NUMBER,
4058     p_language   VARCHAR2,
4059     p_start_line NUMBER,
4060     p_end_line   NUMBER,
4061     p_date_format VARCHAR2
4062   ) IS
4063   SELECT DISTINCT ln.line_id,
4064          c.company_name,
4065          c.company_id,
4066          s.company_site_name,
4067          s.company_site_id,
4068          ln.publisher_address,
4069          decode(ln.customer_company, NULL, c.company_name, c1.company_name),
4070          decode(ln.customer_company, NULL, c.company_id, c1.company_id),
4071          decode(ln.customer_site, NULL, s.company_site_name, s1.company_site_name),
4072          decode(ln.customer_site, NULL, s.company_site_id, s1.company_site_id),
4073          ln.customer_address,
4074          decode(ln.supplier_company, NULL, c.company_name, c1.company_name),
4075          decode(ln.supplier_company, NULL, c.company_id, c1.company_id),
4076          decode(ln.supplier_site, NULL, s.company_site_name, s1.company_site_name),
4077          decode(ln.supplier_site, NULL, s.company_site_id, s1.company_site_id),
4078          ln.supplier_address,
4079          ln.ship_from_party_name,
4080          ln.ship_from_party_site,
4081          ln.ship_from_party_address,
4082          ln.ship_to_party_name,
4083          ln.ship_to_party_site,
4084          ln.ship_to_party_address,
4085          ln.ship_to_address,
4086          ln.end_order_publisher_name,
4087          ln.end_order_publisher_site,
4088          flv1.lookup_code,
4089          flv1.meaning,
4090          ln.end_order_type,
4091          ln.bucket_type,
4092          flv.lookup_code,
4093          ln.inventory_item_id,
4094          ln.order_identifier,
4095          ln.line_number,
4096          ln.release_number,
4097          ln.pegging_order_identifier,
4098          ln.ref_line_number,
4099          ln.ref_release_number,
4100          mlb.bucket_date,
4101          DECODE(flv1.lookup_code, /* sbala ADD CA */
4102                 G_HIST_SALES, mlb.bucket_date,
4103                 G_SAFETY_STOCK, mlb.bucket_date,
4104                 G_ALLOC_ONHAND, mlb.bucket_date,
4105                 G_UNALLOCATED_ONHAND, mlb.bucket_date,
4106 	        G_CONS_ADVICE, mlb.bucket_date,
4107 		g_proj_avai_bal, mlb.bucket_date,
4108                 DECODE(ln.new_schedule_date, NULL, NULL,
4109                        trunc(to_date(ln.new_schedule_date, p_date_format)))),
4110          DECODE(flv1.lookup_code,
4111                 G_SELL_THRO_FCST, mlb.bucket_date,
4112                 G_SUPPLIER_CAP, mlb.bucket_date,
4113                 G_PROJ_SS, mlb.bucket_date,
4114                 G_PROJ_ALLOC_AVAIL, mlb.bucket_date,
4115                 G_PROJ_UNALLOC_AVAIL, mlb.bucket_date,
4116                 G_SUPPLY_COMMIT,  -- SBALACHANGE
4117 		  DECODE(ln.shipping_control,
4118 			 1, trunc(to_date(ln.ship_date,p_date_format)),
4119 			 2, mlb.bucket_date,
4120 		 decode(ln.ship_date, null, null, decode(ln.receipt_date, null,
4121                                                 mlb.bucket_date,
4122                          trunc(to_date(ln.ship_date, p_date_format))))),
4123                 G_ASN,
4124 		  DECODE(ln.shipping_control,
4125 			 1, trunc(to_date(ln.ship_date,p_date_format)),
4126                          2, trunc(to_date(ln.ship_date,p_date_format)),
4127 	decode(ln.ship_date, null, to_date(null), decode(ln.receipt_date, null,
4128 						mlb.bucket_date,
4129 		trunc(to_date(ln.ship_date,p_date_format))))),
4130                 G_SALES_FORECAST,
4131                   DECODE(ln.shipping_control,
4132 			 1, mlb.bucket_date,
4133 			 2, mlb.bucket_date,
4134 			 decode(ln.ship_date, null, to_date(null), mlb.bucket_date)),
4135                 G_SALES_ORDER,
4136 		  DECODE(ln.shipping_control,
4137 			 1, trunc(to_date(ln.ship_date,p_date_format)),
4138 			 2, mlb.bucket_date,
4139 	        decode(ln.ship_date, null, to_date(null), decode(ln.receipt_date, null,
4140                                                 mlb.bucket_date,
4141                                 trunc(to_date(ln.ship_date,p_date_format))))),
4142                 G_PURCHASE_ORDER,
4143 		  DECODE(ln.shipping_control,
4144 			 1, trunc(to_date(ln.ship_date,p_date_format)),
4145 			 2, mlb.bucket_date,
4146 			 to_date(null)),
4147                 G_SHIP_RECEIPT, to_date(null),
4148                 G_ORDER_FORECAST,
4149 		  DECODE(ln.shipping_control,
4150 			 1, trunc(to_date(ln.ship_date,p_date_format)),
4151 			 2, mlb.bucket_date,
4152 			 to_date(null)),
4153                 G_REQUISITION,
4154 		  DECODE(ln.shipping_control,
4155 			 1, trunc(to_date(ln.ship_date,p_date_format)),
4156 			 2, mlb.bucket_date,
4157 			 to_date(null)),
4158                 DECODE(ln.ship_date, NULL, to_date(null),
4159                        trunc(to_date(ln.ship_date, p_date_format)))),
4160          DECODE(flv1.lookup_code,
4161                 G_ORDER_FORECAST,
4162 		 DECODE(ln.shipping_control,
4163 			1, mlb.bucket_date,
4164 			2, trunc(to_date(ln.receipt_date, p_date_format)),
4165 			mlb.bucket_date),
4166                 G_PURCHASE_ORDER,
4167 		  DECODE(ln.shipping_control,
4168 			1, mlb.bucket_date,
4169 			2, trunc(to_date(ln.receipt_date, p_date_format)),
4170 			mlb.bucket_date),
4171                 G_SHIP_RECEIPT, mlb.bucket_date,
4172                 G_REQUISITION,
4173 	       	  DECODE(ln.shipping_control,
4174 			1, mlb.bucket_date,
4175 			2, trunc(to_date(ln.receipt_date, p_date_format)),
4176 		        mlb.bucket_date),
4177                 G_SUPPLY_COMMIT,
4178 		  DECODE(ln.shipping_control,
4179 		        1, mlb.bucket_date,
4180 			2, trunc(to_date(ln.receipt_date, p_date_format)),
4181 	               decode(ln.receipt_date, null, to_date(null), mlb.bucket_date)),
4182                 G_ASN,
4183 		DECODE(ln.shipping_control,
4184 	               1, mlb.bucket_date,
4185 		       2, mlb.bucket_date,
4186 		decode(ln.receipt_date, null, to_date(null), mlb.bucket_date)),
4187                 G_SALES_FORECAST,
4188 		DECODE(ln.shipping_control,
4189 		       1, trunc(to_date(ln.receipt_date, p_date_format)),
4190 	               2, trunc(to_date(ln.receipt_date, p_date_format)),
4191 	decode(ln.receipt_date, null, to_date(null), decode(ln.ship_date, null, mlb.bucket_date, to_date(null)))),
4192                 G_SALES_ORDER,
4193 		DECODE(ln.shipping_control,
4194 		1, mlb.bucket_date,
4195 		2, trunc(to_date(ln.receipt_date, p_date_format)),
4196 		decode(ln.receipt_date, null, to_date(null), mlb.bucket_date)),
4197                 DECODE(ln.receipt_date, NULL, to_date(NULL),
4198                        trunc(to_date(ln.receipt_date, p_date_format)))),
4199          DECODE(ln.new_order_placement_date, NULL, to_date(NULL),
4200                 trunc(to_date(ln.new_order_placement_date, p_date_format))),
4201          DECODE(ln.original_promised_date, NULL, to_date(NULL),
4202                 trunc(to_date(ln.original_promised_date, p_date_format))),
4203          DECODE(ln.request_date, NULL, to_date(NULL),
4204                 trunc(to_date(ln.request_date, p_date_format))),
4205          NULL,
4206          NULL,
4207          round(ln.quantity, 6),
4208          ln.uom,
4209          ln.comments,
4210          ln.carrier_code,
4211          ln.bill_of_lading_number,
4212          ln.tracking_number,
4213          ln.vehicle_number,
4214          ln.container_type,
4215          round(ln.container_qty, 6),
4216          ln.serial_number,
4217          ln.attachment_url,
4218          ln.version,
4219          ln.designator,
4220          ln.context,
4221          ln.attribute1,
4222          ln.attribute2,
4223          ln.attribute3,
4224          ln.attribute4,
4225          ln.attribute5,
4226          ln.attribute6,
4227          ln.attribute7,
4228          ln.attribute8,
4229          ln.attribute9,
4230          ln.attribute10,
4231          ln.attribute11,
4232          ln.attribute12,
4233          ln.attribute13,
4234          ln.attribute14,
4235          ln.attribute15,
4236          ln.posting_party_name
4237   FROM   msc_supdem_lines_interface ln,
4238 	 MSC_LOAD_BUCKETS_TEMP  mlb,
4239          fnd_lookup_values flv,
4240          fnd_lookup_values flv1,
4241          msc_companies c,
4242          msc_company_sites s,
4243          msc_companies c1,
4244          msc_company_sites s1,
4245          msc_company_relationships r
4246   WHERE  ln.parent_header_id = p_header_id AND
4247          ln.line_id between p_start_line and p_end_line AND
4248          flv.lookup_type = 'MSC_X_BUCKET_TYPE' AND
4249          UPPER(flv.meaning) = NVL(UPPER(ln.bucket_type), G_NULL_STRING) AND
4250          flv.language = p_language AND
4251          flv.lookup_code = G_DAY AND
4252          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
4253          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
4254          s.company_id = c.company_id AND
4255          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
4256          UPPER(c1.company_name) = UPPER(NVL(ln.customer_company, ln.supplier_company)) AND
4257          r.subject_id = c.company_id AND
4258          r.object_id = c1.company_id AND
4259          r.relationship_type = DECODE(ln.customer_company,NULL,2,1) AND
4260          s1.company_id = c1.company_id AND
4261 	 UPPER(s1.company_site_name) = UPPER(NVL(ln.customer_site, ln.supplier_site)) AND
4262          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
4263          flv1.language = p_language AND
4264          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
4265          /* Added for work order support */
4266          flv1.lookup_code <> g_work_order
4267 	 AND mlb.parent_header_id = ln.parent_header_id
4268 	 AND mlb.line_id = ln.line_id
4269          AND UPPER(ln.sync_indicator) = 'R'
4270   UNION
4271   SELECT DISTINCT ln.line_id,
4272          c.company_name,
4273          c.company_id,
4274          s.company_site_name,
4275          s.company_site_id,
4276          ln.publisher_address,
4277          ln.customer_company,
4278          to_number(NULL),
4279          ln.customer_site,
4280          to_number(NULL),
4281          ln.customer_address,
4282          ln.supplier_company,
4283          to_number(NULL),
4284          ln.supplier_site,
4285          to_number(NULL),
4286          ln.supplier_address,
4287          ln.ship_from_party_name,
4288          ln.ship_from_party_site,
4289          ln.ship_from_party_address,
4290          ln.ship_to_party_name,
4291          ln.ship_to_party_site,
4292          ln.ship_to_party_address,
4293          ln.ship_to_address,
4294          ln.end_order_publisher_name,
4295          ln.end_order_publisher_site,
4296          flv1.lookup_code,
4297          flv1.meaning,
4298          ln.end_order_type,
4299          ln.bucket_type,
4300          flv.lookup_code,
4301          ln.inventory_item_id,
4302          ln.order_identifier,
4303          ln.line_number,
4304          ln.release_number,
4305          ln.pegging_order_identifier,
4306          ln.ref_line_number,
4307          ln.ref_release_number,
4308          mlb.bucket_date,
4309          DECODE(flv1.lookup_code, /* sbala ADD CA */
4310                 G_HIST_SALES, mlb.bucket_date,
4311                 G_SAFETY_STOCK, mlb.bucket_date,
4312                 G_ALLOC_ONHAND, mlb.bucket_date,
4313                 G_UNALLOCATED_ONHAND, mlb.bucket_date,
4314 	        G_CONS_ADVICE, mlb.bucket_date,
4315 		g_proj_avai_bal, mlb.bucket_date,
4316                 DECODE(ln.new_schedule_date, NULL, to_date(NULL),
4317                        trunc(to_date(ln.new_schedule_date, p_date_format)))),
4318          DECODE(flv1.lookup_code,
4319                 G_SELL_THRO_FCST, mlb.bucket_date,
4320                 G_SUPPLIER_CAP, mlb.bucket_date,
4321                 G_PROJ_SS, mlb.bucket_date,
4322                 G_PROJ_ALLOC_AVAIL, mlb.bucket_date,
4323                 G_PROJ_UNALLOC_AVAIL, mlb.bucket_date,
4324                 G_SUPPLY_COMMIT, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
4325                 G_ASN, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
4326                 G_SALES_FORECAST, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
4327                 G_SALES_ORDER, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
4328                 G_PURCHASE_ORDER, to_date(NULL),
4329                 G_SHIP_RECEIPT, to_date(NULL),
4330                 G_ORDER_FORECAST, to_date(NULL),
4331                 G_REQUISITION, to_date(NULL),
4332                 DECODE(ln.ship_date, NULL, to_date(NULL),
4333                        trunc(to_date(ln.ship_date, p_date_format)))),
4334          DECODE(flv1.lookup_code,
4335                 G_ORDER_FORECAST, mlb.bucket_date,
4336                 G_PURCHASE_ORDER, mlb.bucket_date,
4337                 G_SHIP_RECEIPT, mlb.bucket_date,
4338                 G_REQUISITION, mlb.bucket_date,
4339                 G_SUPPLY_COMMIT, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
4340                 G_ASN, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
4341                 G_SALES_FORECAST, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
4342                 G_SALES_ORDER, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
4343                 DECODE(ln.receipt_date, NULL, to_date(NULL), trunc(to_date(ln.receipt_date, p_date_format)))),
4344          DECODE(ln.new_order_placement_date, NULL, to_date(NULL), trunc(to_date(ln.new_order_placement_date, p_date_format))),
4345          DECODE(ln.original_promised_date, NULL, to_date(NULL), trunc(to_date(ln.original_promised_date, p_date_format))),
4346          DECODE(ln.request_date, NULL, to_date(NULL), trunc(to_date(ln.request_date, p_date_format))),
4347          NULL,
4348          NULL,
4349          round(ln.quantity, 6),
4350          ln.uom,
4351          ln.comments,
4352          ln.carrier_code,
4353          ln.bill_of_lading_number,
4354          ln.tracking_number,
4355          ln.vehicle_number,
4356          ln.container_type,
4357          round(ln.container_qty, 6),
4358          ln.serial_number,
4359          ln.attachment_url,
4360          ln.version,
4361          ln.designator,
4362          ln.context,
4363          ln.attribute1,
4364          ln.attribute2,
4365          ln.attribute3,
4366          ln.attribute4,
4367          ln.attribute5,
4368          ln.attribute6,
4369          ln.attribute7,
4370          ln.attribute8,
4371          ln.attribute9,
4372          ln.attribute10,
4373          ln.attribute11,
4374          ln.attribute12,
4375          ln.attribute13,
4376          ln.attribute14,
4377          ln.attribute15,
4378          ln.posting_party_name
4379   FROM   msc_supdem_lines_interface ln,
4380 	 MSC_LOAD_BUCKETS_TEMP  mlb,
4381          fnd_lookup_values flv,
4382          fnd_lookup_values flv1,
4383          msc_companies c,
4384          msc_company_sites s
4385   WHERE  ln.parent_header_id = p_header_id AND
4386          ln.line_id between p_start_line and p_end_line AND
4387          flv.lookup_type = 'MSC_X_BUCKET_TYPE' AND
4388          UPPER(flv.meaning) = NVL(UPPER(ln.bucket_type), G_NULL_STRING) AND
4389          flv.language = p_language AND
4390          flv.lookup_code = G_DAY AND
4391          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
4392          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
4393          s.company_id = c.company_id AND
4394          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
4395          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
4396          flv1.language = p_language AND
4397          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
4398          flv1.lookup_code in (g_safety_stock, g_proj_avai_bal)
4399 	 AND mlb.parent_header_id = ln.parent_header_id
4400 	 AND mlb.line_id = ln.line_id
4401          AND UPPER(ln.sync_indicator) = 'R';
4402 
4403   CURSOR c_weekly_bkt_key (
4404     p_header_id  NUMBER,
4405     p_language   VARCHAR2,
4406     p_start_line NUMBER,
4407     p_end_line   NUMBER,
4408     p_date_format VARCHAR2
4409   ) IS
4410   SELECT ln.line_id ,
4411          c.company_name,
4412          c.company_id,
4413          s.company_site_name,
4414          s.company_site_id,
4415          ln.publisher_address,
4416          decode(ln.customer_company, NULL, c.company_name, c1.company_name),
4417          decode(ln.customer_company, NULL, c.company_id, c1.company_id),
4418          decode(ln.customer_site, NULL, s.company_site_name, s1.company_site_name),
4419          decode(ln.customer_site, NULL, s.company_site_id, s1.company_site_id),
4420          ln.customer_address,
4421          decode(ln.supplier_company, NULL, c.company_name, c1.company_name),
4422          decode(ln.supplier_company, NULL, c.company_id, c1.company_id),
4423          decode(ln.supplier_site, NULL, s.company_site_name, s1.company_site_name),
4424          decode(ln.supplier_site, NULL, s.company_site_id, s1.company_site_id),
4425          ln.supplier_address,
4426          ln.ship_from_party_name,
4427          ln.ship_from_party_site,
4428          ln.ship_from_party_address,
4429          ln.ship_to_party_name,
4430          ln.ship_to_party_site,
4431          ln.ship_to_party_address,
4432          ln.ship_to_address,
4433          ln.end_order_publisher_name,
4434          ln.end_order_publisher_site,
4435          flv1.lookup_code,
4436          flv1.meaning,
4437          ln.end_order_type,
4438          ln.bucket_type,
4439          flv.lookup_code,
4440          ln.inventory_item_id,
4441          ln.order_identifier,
4442          ln.line_number,
4443          ln.release_number,
4444          ln.pegging_order_identifier,
4445          ln.ref_line_number,
4446          ln.ref_release_number,
4447 	 mlb.bucket_date,   /* sbala ADD CA */
4448          DECODE(flv1.lookup_code,
4449                 G_HIST_SALES, mlb.bucket_date,
4450                 G_SAFETY_STOCK, mlb.bucket_date,
4451                 G_ALLOC_ONHAND, mlb.bucket_date,
4452                 G_UNALLOCATED_ONHAND, mlb.bucket_date,
4453 	        G_CONS_ADVICE, mlb.bucket_date,
4454 		g_proj_avai_bal, mlb.bucket_date,
4455                 DECODE(ln.new_schedule_date, NULL, to_date(NULL),
4456                        trunc(to_date(ln.new_schedule_date, p_date_format)))),
4457          DECODE(flv1.lookup_code,
4458                 G_SELL_THRO_FCST, mlb.bucket_date,
4459                 G_SUPPLIER_CAP, mlb.bucket_date,
4460                 G_PROJ_SS, mlb.bucket_date,
4461                 G_PROJ_ALLOC_AVAIL, mlb.bucket_date,
4462                 G_PROJ_UNALLOC_AVAIL, mlb.bucket_date,
4463                 G_SUPPLY_COMMIT,
4464 		DECODE(ln.shipping_control,
4465 	           1, trunc(to_date(ln.ship_date, p_date_format)),
4466 	           2, mlb.bucket_date,
4467 		   decode(ln.ship_date, null, to_date(NULL), decode(ln.receipt_date, null,
4468                                                 mlb.bucket_date,
4469                                trunc(to_date(ln.ship_date, p_date_format))))),
4470                 G_ASN,
4471 		DECODE(ln.shipping_control,
4472 		  1, trunc(to_date(ln.ship_date, p_date_format)),
4473 	          2, trunc(to_date(ln.ship_date, p_date_format)),
4474 		decode(ln.ship_date, null, to_date(NULL), decode(ln.receipt_date, null,
4475                                                 mlb.bucket_date,
4476                             trunc(to_date(ln.ship_date, p_date_format))))),
4477                 G_SALES_FORECAST,
4478 		DECODE(ln.shipping_control,
4479 		1, mlb.bucket_date,
4480                 2, mlb.bucket_date,
4481 	        decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date)),
4482                 G_SALES_ORDER,
4483 		DECODE(ln.shipping_control,
4484                 1, trunc(to_date(ln.ship_date, p_date_format)),
4485                 2, mlb.bucket_date,
4486 	         decode(ln.ship_date, null, to_date(NULL), decode(ln.receipt_date, null,
4487                                                 mlb.bucket_date,
4488                                 trunc(to_date(ln.ship_date, p_date_format))))),
4489                 G_PURCHASE_ORDER,
4490 	        decode(ln.shipping_control,
4491                 1, trunc(to_date(ln.ship_date, p_date_format)),
4492                 2, mlb.bucket_date,
4493                 to_date(NULL)),
4494                 G_SHIP_RECEIPT, to_date(NULL),
4495                 G_ORDER_FORECAST,
4496 		decode(ln.shipping_control,
4497                 1, trunc(to_date(ln.ship_date, p_date_format)),
4498                 2, mlb.bucket_date,
4499                 to_date(NULL)),
4500                 G_REQUISITION,
4501                 decode(ln.shipping_control,
4502                 1, trunc(to_date(ln.ship_date, p_date_format)),
4503                 2, mlb.bucket_date,
4504                 to_date(NULL)),
4505                 DECODE(ln.ship_date, NULL, to_date(NULL),
4506                        trunc(to_date(ln.ship_date, p_date_format)))),
4507          DECODE(flv1.lookup_code,
4508                 G_ORDER_FORECAST,
4509 		DECODE(ln.shipping_control,
4510 		1, mlb.bucket_date,
4511                 2,trunc(to_date(ln.receipt_date, p_date_format)),
4512                 mlb.bucket_date),
4513                 G_PURCHASE_ORDER,
4514 		DECODE(ln.shipping_control,
4515                 1, mlb.bucket_date,
4516                 2, trunc(to_date(ln.receipt_date, p_date_format)),
4517                 mlb.bucket_date),
4518                 G_SHIP_RECEIPT, mlb.bucket_date,
4519                 G_REQUISITION,
4520                 DECODE(ln.shipping_control,
4521                 1, mlb.bucket_date,
4522                 2, trunc(to_date(ln.receipt_date, p_date_format)),
4523                 mlb.bucket_date),
4524                 G_SUPPLY_COMMIT,
4525 		DECODE(ln.shipping_control,
4526 		1, mlb.bucket_date,
4527 		2, trunc(to_date(ln.receipt_date, p_date_format)),
4528 	        decode(ln.receipt_date, null, to_date(NULL), mlb.bucket_date)),
4529                 G_ASN,
4530                 DECODE(ln.shipping_control,
4531 		1, mlb.bucket_date,
4532                 2, mlb.bucket_date,
4533                 decode(ln.receipt_date, null, to_date(NULL), mlb.bucket_date)),
4534                 G_SALES_FORECAST,
4535 		DECODE(ln.shipping_control,
4536 	        1, trunc(to_date(ln.receipt_date, p_date_format)),
4537                 2, trunc(to_date(ln.receipt_date, p_date_format)),
4538                 decode(ln.receipt_date, null, to_date(NULL),
4539 		decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL)))),
4540                 G_SALES_ORDER,
4541 		DECODE(ln.shipping_control,
4542                 1, mlb.bucket_date,
4543                 2, trunc(to_date(ln.receipt_date, p_date_format)),
4544 	        decode(ln.receipt_date, null, to_date(NULL), mlb.bucket_date)),
4545                 DECODE(ln.receipt_date, NULL, to_date(NULL), trunc(to_date(ln.receipt_date, p_date_format)))),
4546          DECODE(ln.new_order_placement_date, NULL, to_date(NULL), trunc(to_date(ln.new_order_placement_date, p_date_format))),
4547          DECODE(ln.original_promised_date, NULL, to_date(NULL), trunc(to_date(ln.original_promised_date, p_date_format))),
4548          DECODE(ln.request_date, NULL, to_date(NULL), trunc(to_date(ln.request_date, p_date_format))),
4549          NULL,
4550          NULL,
4551          round(ln.quantity, 6),
4552          ln.uom,
4553          ln.comments,
4554          ln.carrier_code,
4555          ln.bill_of_lading_number,
4556          ln.tracking_number,
4557          ln.vehicle_number,
4558          ln.container_type,
4559          round(ln.container_qty, 6),
4560          ln.serial_number,
4561          ln.attachment_url,
4562          ln.version,
4563          ln.designator,
4564          ln.context,
4565          ln.attribute1,
4566          ln.attribute2,
4567          ln.attribute3,
4568          ln.attribute4,
4569          ln.attribute5,
4570          ln.attribute6,
4571          ln.attribute7,
4572          ln.attribute8,
4573          ln.attribute9,
4574          ln.attribute10,
4575          ln.attribute11,
4576          ln.attribute12,
4577          ln.attribute13,
4578          ln.attribute14,
4579          ln.attribute15,
4580          ln.posting_party_name
4581   FROM   msc_supdem_lines_interface ln,
4582 	 MSC_LOAD_BUCKETS_TEMP  mlb,
4583          fnd_lookup_values flv,
4584          fnd_lookup_values flv1,
4585          msc_companies c,
4586          msc_company_sites s,
4587          msc_companies c1,
4588          msc_company_sites s1,
4589          msc_company_relationships r
4590   WHERE  ln.parent_header_id = p_header_id AND
4591          ln.line_id between p_start_line and p_end_line AND
4592          flv.lookup_type = 'MSC_X_BUCKET_TYPE' AND
4593          UPPER(flv.meaning) = NVL(UPPER(ln.bucket_type), G_NULL_STRING) AND
4594          flv.language = p_language AND
4595          flv.lookup_code = G_WEEK AND
4596          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
4597          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
4598          s.company_id = c.company_id AND
4599          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
4600          UPPER(c1.company_name) = UPPER(NVL(ln.customer_company, ln.supplier_company)) AND
4601          r.subject_id = c.company_id AND
4602          r.object_id = c1.company_id AND
4603          r.relationship_type = DECODE(ln.customer_company,NULL,2,1) AND
4604          s1.company_id = c1.company_id AND
4605          UPPER(s1.company_site_name) = UPPER(NVL(ln.customer_site, ln.supplier_site)) AND
4606          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
4607          flv1.language = p_language AND
4608          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
4609          /* Added for work order support */
4610          flv1.lookup_code <> g_work_order
4611 	 AND mlb.parent_header_id = ln.parent_header_id
4612 	 AND mlb.line_id = ln.line_id
4613          AND UPPER(ln.sync_indicator) = 'R'
4614   UNION
4615   SELECT ln.line_id ,
4616          c.company_name,
4617          c.company_id,
4618          s.company_site_name,
4619          s.company_site_id,
4620          ln.publisher_address,
4621          ln.customer_company,
4622          to_number(NULL),
4623          ln.customer_site,
4624          to_number(NULL),
4625          ln.customer_address,
4626          ln.supplier_company,
4627          to_number(NULL),
4628          ln.supplier_site,
4629          to_number(NULL),
4630          ln.supplier_address,
4631          ln.ship_from_party_name,
4632          ln.ship_from_party_site,
4633          ln.ship_from_party_address,
4634          ln.ship_to_party_name,
4635          ln.ship_to_party_site,
4636          ln.ship_to_party_address,
4637          ln.ship_to_address,
4638          ln.end_order_publisher_name,
4639          ln.end_order_publisher_site,
4640          flv1.lookup_code,
4641          flv1.meaning,
4642          ln.end_order_type,
4643          ln.bucket_type,
4644          flv.lookup_code,
4645          ln.inventory_item_id,
4646          ln.order_identifier,
4647          ln.line_number,
4648          ln.release_number,
4649          ln.pegging_order_identifier,
4650          ln.ref_line_number,
4651          ln.ref_release_number,
4652 	 mlb.bucket_date,  /* sbala ADD CA */
4653          DECODE(flv1.lookup_code,
4654                 G_HIST_SALES, mlb.bucket_date,
4655                 G_SAFETY_STOCK, mlb.bucket_date,
4656                 G_ALLOC_ONHAND, mlb.bucket_date,
4657                 G_UNALLOCATED_ONHAND, mlb.bucket_date,
4658 	        G_CONS_ADVICE, mlb.bucket_date,
4659 		g_proj_avai_bal, mlb.bucket_date,
4660                 DECODE(ln.new_schedule_date, NULL, to_date(NULL),
4661                        trunc(to_date(ln.new_schedule_date, p_date_format)))),
4662          DECODE(flv1.lookup_code,
4663                 G_SELL_THRO_FCST, mlb.bucket_date,
4664                 G_SUPPLIER_CAP, mlb.bucket_date,
4665                 G_PROJ_SS, mlb.bucket_date,
4666                 G_PROJ_ALLOC_AVAIL, mlb.bucket_date,
4667                 G_PROJ_UNALLOC_AVAIL, mlb.bucket_date,
4668                 G_SUPPLY_COMMIT, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
4669                 G_ASN, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
4670                 G_SALES_FORECAST, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
4671                 G_SALES_ORDER, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
4672                 G_PURCHASE_ORDER, to_date(NULL),
4673                 G_SHIP_RECEIPT, to_date(NULL),
4674                 G_ORDER_FORECAST, to_date(NULL),
4675                 G_REQUISITION, to_date(NULL),
4676                 DECODE(ln.ship_date, NULL, to_date(NULL),
4677                        trunc(to_date(ln.ship_date, p_date_format)))),
4678          DECODE(flv1.lookup_code,
4679                 G_ORDER_FORECAST, mlb.bucket_date,
4680                 G_PURCHASE_ORDER, mlb.bucket_date,
4681                 G_SHIP_RECEIPT, mlb.bucket_date,
4682                 G_REQUISITION, mlb.bucket_date,
4683                 G_SUPPLY_COMMIT, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
4684                 G_ASN, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
4685                 G_SALES_FORECAST, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
4686                 G_SALES_ORDER, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
4687                 DECODE(ln.receipt_date, NULL, to_date(NULL), trunc(to_date(ln.receipt_date, p_date_format)))),
4688          DECODE(ln.new_order_placement_date, NULL, to_date(NULL), trunc(to_date(ln.new_order_placement_date, p_date_format))),
4689          DECODE(ln.original_promised_date, NULL, to_date(NULL), trunc(to_date(ln.original_promised_date, p_date_format))),
4690          DECODE(ln.request_date, NULL, to_date(NULL), trunc(to_date(ln.request_date, p_date_format))),
4691          NULL,
4692          NULL,
4693          round(ln.quantity, 6),
4694          ln.uom,
4695          ln.comments,
4696          ln.carrier_code,
4697          ln.bill_of_lading_number,
4698          ln.tracking_number,
4699          ln.vehicle_number,
4700          ln.container_type,
4701          round(ln.container_qty, 6),
4702          ln.serial_number,
4703          ln.attachment_url,
4704          ln.version,
4705          ln.designator,
4706          ln.context,
4707          ln.attribute1,
4708          ln.attribute2,
4709          ln.attribute3,
4710          ln.attribute4,
4711          ln.attribute5,
4712          ln.attribute6,
4713          ln.attribute7,
4714          ln.attribute8,
4715          ln.attribute9,
4716          ln.attribute10,
4717          ln.attribute11,
4718          ln.attribute12,
4719          ln.attribute13,
4720          ln.attribute14,
4721          ln.attribute15,
4722          ln.posting_party_name
4723   FROM   msc_supdem_lines_interface ln,
4724 	 MSC_LOAD_BUCKETS_TEMP  mlb,
4725          fnd_lookup_values flv,
4726          fnd_lookup_values flv1,
4727          msc_companies c,
4728          msc_company_sites s
4729   WHERE  ln.parent_header_id = p_header_id AND
4730          ln.line_id between p_start_line and p_end_line AND
4731          flv.lookup_type = 'MSC_X_BUCKET_TYPE' AND
4732          UPPER(flv.meaning) = NVL(UPPER(ln.bucket_type), G_NULL_STRING) AND
4733          flv.language = p_language AND
4734          flv.lookup_code = G_WEEK AND
4735          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
4736          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
4737          s.company_id = c.company_id AND
4738          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
4739          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
4740          flv1.language = p_language AND
4741          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
4742          flv1.lookup_code IN (g_safety_stock, g_proj_avai_bal)
4743 	 AND mlb.parent_header_id = ln.parent_header_id
4744 	 AND mlb.line_id = ln.line_id
4745 	 AND UPPER(ln.sync_indicator) = 'R';
4746 
4747   CURSOR c_monthly_bkt_key (
4748     p_header_id  NUMBER,
4749     p_language   VARCHAR2,
4750     p_start_line NUMBER,
4751     p_end_line   NUMBER,
4752     p_date_format VARCHAR2
4753   ) IS
4754   SELECT ln.line_id ,
4755          c.company_name,
4756          c.company_id,
4757          s.company_site_name,
4758          s.company_site_id,
4759          ln.publisher_address,
4760          decode(ln.customer_company, NULL, c.company_name, c1.company_name),
4761          decode(ln.customer_company, NULL, c.company_id, c1.company_id),
4762          decode(ln.customer_site, NULL, s.company_site_name, s1.company_site_name),
4763          decode(ln.customer_site, NULL, s.company_site_id, s1.company_site_id),
4764          ln.customer_address,
4765          decode(ln.supplier_company, NULL, c.company_name, c1.company_name),
4766          decode(ln.supplier_company, NULL, c.company_id, c1.company_id),
4767          decode(ln.supplier_site, NULL, s.company_site_name, s1.company_site_name),
4768          decode(ln.supplier_site, NULL, s.company_site_id, s1.company_site_id),
4769          ln.supplier_address,
4770          ln.ship_from_party_name,
4771          ln.ship_from_party_site,
4772          ln.ship_from_party_address,
4773          ln.ship_to_party_name,
4774          ln.ship_to_party_site,
4775          ln.ship_to_party_address,
4776          ln.ship_to_address,
4777          ln.end_order_publisher_name,
4778          ln.end_order_publisher_site,
4779          flv1.lookup_code,
4780          flv1.meaning,
4781          ln.end_order_type,
4782          ln.bucket_type,
4783          flv.lookup_code,
4784          ln.inventory_item_id,
4785          ln.order_identifier,
4786          ln.line_number,
4787          ln.release_number,
4788          ln.pegging_order_identifier,
4789          ln.ref_line_number,
4790          ln.ref_release_number,
4791 	 mlb.bucket_date,  /* sbala ADD CA */
4792          DECODE(flv1.lookup_code,
4793                 G_HIST_SALES, mlb.bucket_date,
4794                 G_SAFETY_STOCK, mlb.bucket_date,
4795                 G_ALLOC_ONHAND, mlb.bucket_date,
4796                 G_UNALLOCATED_ONHAND, mlb.bucket_date,
4797 	        G_CONS_ADVICE, mlb.bucket_date,
4798 		g_proj_avai_bal, mlb.bucket_date,
4799                 DECODE(ln.new_schedule_date, NULL, to_date(NULL),
4800                        trunc(to_date(ln.new_schedule_date, p_date_format)))),
4801          DECODE(flv1.lookup_code,
4802                 G_SELL_THRO_FCST, mlb.bucket_date,
4803                 G_SUPPLIER_CAP, mlb.bucket_date,
4804                 G_PROJ_SS, mlb.bucket_date,
4805                 G_PROJ_ALLOC_AVAIL, mlb.bucket_date,
4806                 G_PROJ_UNALLOC_AVAIL, mlb.bucket_date,
4807                 G_SUPPLY_COMMIT,
4808 		DECODE(ln.shipping_control,
4809 		1, trunc(to_date(ln.ship_date, p_date_format)),
4810                 2, mlb.bucket_date,
4811                 decode(ln.ship_date, null, to_date(NULL), decode(ln.receipt_date, null,
4812                                                 mlb.bucket_date,
4813                              trunc(to_date(ln.ship_date, p_date_format))))),
4814                 G_ASN,
4815 		DECODE(ln.shipping_control,
4816 		1,  trunc(to_date(ln.ship_date, p_date_format)),
4817                 2,   trunc(to_date(ln.ship_date, p_date_format)),
4818                 decode(ln.ship_date, null, to_date(NULL), decode(ln.receipt_date, null,
4819                                                 mlb.bucket_date,
4820                              trunc(to_date(ln.ship_date, p_date_format))))),
4821                 G_SALES_FORECAST,
4822                 DECODE(ln.shipping_control,
4823                 1, mlb.bucket_date,
4824                 2, mlb.bucket_date,
4825                 decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date)),
4826                 G_SALES_ORDER,
4827 		DECODE(ln.shipping_control,
4828 		1,  trunc(to_date(ln.ship_date, p_date_format)),
4829 	        2, mlb.bucket_date,
4830 		decode(ln.ship_date, null, to_date(NULL), decode(ln.receipt_date, null,
4831                                                 mlb.bucket_date,
4832                           trunc(to_date(ln.ship_date, p_date_format))))),
4833                 G_PURCHASE_ORDER,
4834                 DECODE(ln.shipping_control,
4835 		1,  trunc(to_date(ln.ship_date, p_date_format)),
4836                 2, mlb.bucket_date,
4837                 to_date(NULL)),
4838                 G_SHIP_RECEIPT, to_date(NULL),
4839                 G_ORDER_FORECAST,
4840                 DECODE(ln.shipping_control,
4841 		1, trunc(to_date(ln.ship_date, p_date_format)),
4842                 2, mlb.bucket_date,
4843 		to_date(NULL)),
4844                 G_REQUISITION,
4845 		DECODE(ln.shipping_control,
4846 		1, trunc(to_date(ln.ship_date, p_date_format)),
4847 		2, mlb.bucket_date,
4848 		to_date(NULL)),
4849                 DECODE(ln.ship_date, NULL, to_date(NULL),
4850                        trunc(to_date(ln.ship_date, p_date_format)))),
4851          DECODE(flv1.lookup_code,
4852                 G_ORDER_FORECAST,
4853 		DECODE(ln.shipping_control,
4854 		1, mlb.bucket_date,
4855 		2,  trunc(to_date(ln.receipt_date, p_date_format)),
4856 		mlb.bucket_date),
4857                 G_PURCHASE_ORDER,
4858 		DECODE(ln.shipping_control,
4859                 1, mlb.bucket_date,
4860                 2, trunc(to_date(ln.receipt_date, p_date_format)),
4861                 mlb.bucket_date),
4862                 G_SHIP_RECEIPT, mlb.bucket_date,
4863                 G_REQUISITION,
4864 		DECODE(ln.shipping_control,
4865                 1, mlb.bucket_date,
4866                 2,  trunc(to_date(ln.receipt_date, p_date_format)),
4867                 mlb.bucket_date),
4868                 G_SUPPLY_COMMIT,
4869 		DECODE(ln.shipping_control,
4870 		1, mlb.bucket_date,
4871                 2,  trunc(to_date(ln.receipt_date, p_date_format)),
4872 		decode(ln.receipt_date, null, to_date(NULL), mlb.bucket_date)),
4873                 G_ASN,
4874 		DECODE(ln.shipping_control,
4875 		1, mlb.bucket_date,
4876 		2, mlb.bucket_date,
4877 		decode(ln.receipt_date, null, to_date(NULL), mlb.bucket_date)),
4878                 G_SALES_FORECAST,
4879 		DECODE(ln.shipping_control,
4880 		1,  trunc(to_date(ln.receipt_date, p_date_format)),
4881 		2,  trunc(to_date(ln.receipt_date, p_date_format)),
4882 		decode(ln.receipt_date, null, to_date(NULL),
4883 		decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL)))),
4884                 G_SALES_ORDER,
4885 		DECODE(ln.shipping_control,
4886 		1, mlb.bucket_date,
4887 		2,  trunc(to_date(ln.receipt_date, p_date_format)),
4888 		decode(ln.receipt_date, null, to_date(NULL), mlb.bucket_date)),
4889                 DECODE(ln.receipt_date, NULL, to_date(NULL), trunc(to_date(ln.receipt_date, p_date_format)))),
4890          DECODE(ln.new_order_placement_date, NULL, to_date(NULL), trunc(to_date(ln.new_order_placement_date, p_date_format))),
4891          DECODE(ln.original_promised_date, NULL, to_date(NULL), trunc(to_date(ln.original_promised_date, p_date_format))),
4892          DECODE(ln.request_date, NULL, to_date(NULL), trunc(to_date(ln.request_date, p_date_format))),
4893          NULL,
4894          NULL,
4895          round(ln.quantity, 6),
4896          ln.uom,
4897          ln.comments,
4898          ln.carrier_code,
4899          ln.bill_of_lading_number,
4900          ln.tracking_number,
4901          ln.vehicle_number,
4902          ln.container_type,
4903          round(ln.container_qty, 6),
4904          ln.serial_number,
4905          ln.attachment_url,
4906          ln.version,
4907          ln.designator,
4908          ln.context,
4909          ln.attribute1,
4910          ln.attribute2,
4911          ln.attribute3,
4912          ln.attribute4,
4913          ln.attribute5,
4914          ln.attribute6,
4915          ln.attribute7,
4916          ln.attribute8,
4917          ln.attribute9,
4918          ln.attribute10,
4919          ln.attribute11,
4920          ln.attribute12,
4921          ln.attribute13,
4922          ln.attribute14,
4923          ln.attribute15,
4924          ln.posting_party_name
4925   FROM   msc_supdem_lines_interface ln,
4926          MSC_LOAD_BUCKETS_TEMP mlb,
4927          fnd_lookup_values flv,
4928          fnd_lookup_values flv1,
4929          msc_companies c,
4930          msc_company_sites s,
4931          msc_companies c1,
4932          msc_company_sites s1,
4933          msc_company_relationships r
4934   WHERE  ln.parent_header_id = p_header_id AND
4935          ln.line_id between p_start_line and p_end_line AND
4936          flv.lookup_type = 'MSC_X_BUCKET_TYPE' AND
4937          UPPER(flv.meaning) = NVL(UPPER(ln.bucket_type), G_NULL_STRING) AND
4938          flv.language = p_language AND
4939          flv.lookup_code = G_MONTH AND
4940          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
4941          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
4942          s.company_id = c.company_id AND
4943          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
4944          UPPER(c1.company_name) = UPPER(NVL(ln.customer_company, ln.supplier_company)) AND
4945          r.subject_id = c.company_id AND
4946          r.object_id = c1.company_id AND
4947          r.relationship_type = DECODE(ln.customer_company,NULL,2,1) AND
4948          s1.company_id = c1.company_id AND
4949          UPPER(s1.company_site_name) = UPPER(NVL(ln.customer_site, ln.supplier_site)) AND
4950          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
4951          flv1.language = p_language AND
4952          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
4953          /* Added for work order support */
4954          flv1.lookup_code <> g_work_order
4955 	 AND mlb.parent_header_id = ln.parent_header_id
4956 	 AND mlb.line_id = ln.line_id
4957          AND UPPER(ln.sync_indicator) = 'R'
4958   UNION
4959   SELECT ln.line_id ,
4960          c.company_name,
4961          c.company_id,
4962          s.company_site_name,
4963          s.company_site_id,
4964          ln.publisher_address,
4965          ln.customer_company,
4966          to_number(null),
4967          ln.customer_site,
4968          to_number(null),
4969          ln.customer_address,
4970          ln.supplier_company,
4971          to_number(null),
4972          ln.supplier_site,
4973          to_number(null),
4974          ln.supplier_address,
4975          ln.ship_from_party_name,
4976          ln.ship_from_party_site,
4977          ln.ship_from_party_address,
4978          ln.ship_to_party_name,
4979          ln.ship_to_party_site,
4980          ln.ship_to_party_address,
4981          ln.ship_to_address,
4982          ln.end_order_publisher_name,
4983          ln.end_order_publisher_site,
4984          flv1.lookup_code,
4985          flv1.meaning,
4986          ln.end_order_type,
4987          ln.bucket_type,
4988          flv.lookup_code,
4989          ln.inventory_item_id,
4990          ln.order_identifier,
4991          ln.line_number,
4992          ln.release_number,
4993          ln.pegging_order_identifier,
4994          ln.ref_line_number,
4995          ln.ref_release_number,
4996 	 mlb.bucket_date,  /* sbala ADD CA */
4997          DECODE(flv1.lookup_code,
4998                 G_HIST_SALES, mlb.bucket_date,
4999                 G_SAFETY_STOCK, mlb.bucket_date,
5000                 G_ALLOC_ONHAND, mlb.bucket_date,
5001                 G_UNALLOCATED_ONHAND, mlb.bucket_date,
5002 		G_CONS_ADVICE,mlb.bucket_date,
5003 		g_proj_avai_bal, mlb.bucket_date,
5004                 DECODE(ln.new_schedule_date, NULL, to_date(NULL),
5005                        trunc(to_date(ln.new_schedule_date, p_date_format)))),
5006          DECODE(flv1.lookup_code,
5007                 G_SELL_THRO_FCST, mlb.bucket_date,
5008                 G_SUPPLIER_CAP, mlb.bucket_date,
5009                 G_PROJ_SS, mlb.bucket_date,
5010                 G_PROJ_ALLOC_AVAIL, mlb.bucket_date,
5011                 G_PROJ_UNALLOC_AVAIL, mlb.bucket_date,
5012                 G_SUPPLY_COMMIT, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
5013                 G_ASN, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
5014                 G_SALES_FORECAST, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
5015                 G_SALES_ORDER, decode(ln.ship_date, null, to_date(NULL), mlb.bucket_date),
5016                 G_PURCHASE_ORDER, to_date(NULL),
5017                 G_SHIP_RECEIPT, to_date(NULL),
5018                 G_ORDER_FORECAST, to_date(NULL),
5019                 G_REQUISITION, to_date(NULL),
5020                 DECODE(ln.ship_date, NULL, to_date(NULL), trunc(to_date(ln.ship_date, p_date_format)))),
5021          DECODE(flv1.lookup_code,
5022                 G_ORDER_FORECAST, mlb.bucket_date,
5023                 G_PURCHASE_ORDER, mlb.bucket_date,
5024                 G_SHIP_RECEIPT, mlb.bucket_date,
5025                 G_REQUISITION, mlb.bucket_date,
5026                 G_SUPPLY_COMMIT, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
5027                 G_ASN, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
5028                 G_SALES_FORECAST, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
5029                 G_SALES_ORDER, decode(ln.receipt_date, null, to_date(NULL), decode(ln.ship_date, null, mlb.bucket_date, to_date(NULL))),
5030                 DECODE(ln.receipt_date, NULL, to_date(NULL), trunc(to_date(ln.receipt_date, p_date_format)))),
5031          DECODE(ln.new_order_placement_date, NULL, to_date(NULL), trunc(to_date(ln.new_order_placement_date, p_date_format))),
5032          DECODE(ln.original_promised_date, NULL, to_date(NULL), trunc(to_date(ln.original_promised_date, p_date_format))),
5033          DECODE(ln.request_date, NULL, to_date(NULL), trunc(to_date(ln.request_date, p_date_format))),
5034          NULL,
5035          NULL,
5036          round(ln.quantity, 6),
5037          ln.uom,
5038          ln.comments,
5039          ln.carrier_code,
5040          ln.bill_of_lading_number,
5041          ln.tracking_number,
5042          ln.vehicle_number,
5043          ln.container_type,
5044          round(ln.container_qty, 6),
5045          ln.serial_number,
5046          ln.attachment_url,
5047          ln.version,
5048          ln.designator,
5049          ln.context,
5050          ln.attribute1,
5051          ln.attribute2,
5052          ln.attribute3,
5053          ln.attribute4,
5054          ln.attribute5,
5055          ln.attribute6,
5056          ln.attribute7,
5057          ln.attribute8,
5058          ln.attribute9,
5059          ln.attribute10,
5060          ln.attribute11,
5061          ln.attribute12,
5062          ln.attribute13,
5063          ln.attribute14,
5064          ln.attribute15,
5065          ln.posting_party_name
5066   FROM   msc_supdem_lines_interface ln,
5067          MSC_LOAD_BUCKETS_TEMP mlb,
5068          fnd_lookup_values flv,
5069          fnd_lookup_values flv1,
5070          msc_companies c,
5071          msc_company_sites s
5072   WHERE  ln.parent_header_id = p_header_id AND
5073          ln.line_id between p_start_line and p_end_line AND
5074          flv.lookup_type = 'MSC_X_BUCKET_TYPE' AND
5075          UPPER(flv.meaning) = NVL(UPPER(ln.bucket_type), G_NULL_STRING) AND
5076          flv.language = p_language AND
5077          flv.lookup_code = G_MONTH AND
5078          NVL(ln.row_status, G_PROCESS) = G_SUCCESS AND
5079          UPPER(c.company_name) = UPPER(NVL(ln.publisher_company, ln.posting_party_name)) AND
5080          s.company_id = c.company_id AND
5081          UPPER(s.company_site_name) = UPPER(ln.publisher_site) AND
5082          flv1.lookup_type = 'MSC_X_ORDER_TYPE' AND
5083          flv1.language = p_language AND
5084          UPPER(flv1.meaning) = UPPER(ln.order_type) AND
5085          flv1.lookup_code in (g_safety_stock, g_proj_avai_bal)
5086 	 AND mlb.parent_header_id = ln.parent_header_id
5087 	 AND mlb.line_id = ln.line_id
5088 	 AND UPPER(ln.sync_indicator) = 'R';
5089 
5090   CURSOR c_moe_reqs(
5091     p_header_id in number
5092   ) IS
5093   select sd.inventory_item_id,
5094          sd.primary_quantity,
5095          to_char(sd.receipt_date,NVL(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD/MM/YYYY')),
5096          nvl(sd.customer_id, sd.publisher_id),
5097          nvl(sd.customer_site_id, sd.publisher_site_id),
5098          nvl(sd.supplier_id, sd.publisher_id),
5099          nvl(sd.supplier_site_id, sd.publisher_site_id),
5100          sd.primary_uom
5101   from   msc_sup_dem_entries sd
5102   where  sd.ref_header_id = p_header_id and
5103     sd.publisher_order_type = G_REQUISITION;
5104 
5105   CURSOR c_sc_admins
5106     (
5107      p_header_id IN NUMBER
5108      ) IS
5109    SELECT DISTINCT u.user_name
5110      , u.user_id
5111      FROM fnd_user u,
5112      fnd_user_resp_groups g,
5113      fnd_responsibility r,
5114      msc_company_users cu,
5115      msc_companies c,
5116      msc_supdem_lines_interface ln
5117      WHERE ln.parent_header_id = p_header_id
5118      AND ln.publisher_company = c.company_name
5119      AND cu.company_id = c.company_id
5120      AND cu.user_id = u.user_id
5121      AND g.user_id = u.user_id
5122      AND g.responsibility_id = r.responsibility_id
5123      AND r.responsibility_key = 'MSCX_SC_ADMIN_FULL';
5124 
5125    CURSOR  c_bucket_data ( p_language    VARCHAR2,
5126                            p_header_id   NUMBER,
5127 			   l_date_format VARCHAR2,
5128 			   p_bucket_type NUMBER)
5129        IS
5130    SELECT ln.parent_header_id,
5131 	  ln.line_id,
5132           to_char(trunc(to_date(ln.key_date,l_date_format)),'J') from_date,
5133 	  to_char(trunc(to_date(nvl(ln.key_end_date,key_date),l_date_format)),'J') to_date
5134     FROM  msc_supdem_lines_interface ln,
5135 	  fnd_lookup_values flv,
5136 	  fnd_lookup_values flv1
5137    WHERE  ln.key_date is not null
5138      and  ln.parent_header_id = p_header_id
5139      and  nvl(ln.row_status, G_PROCESS) = G_SUCCESS
5140      and  flv.language = p_language
5141      and  flv.lookup_type = 'MSC_X_ORDER_TYPE'
5142      and  upper(flv.meaning) = upper(ln.order_type)
5143      and  flv.lookup_code <> g_work_order
5144      and  flv1.language = flv.language
5145      and  flv1.lookup_type = 'MSC_X_BUCKET_TYPE'
5146      and  flv1.lookup_code = p_bucket_type
5147      and  UPPER(flv1.meaning) = NVL(UPPER(ln.bucket_type), G_NULL_STRING)
5148      and  upper(ln.sync_indicator) = 'R'
5149    order  by parent_header_id,line_id;
5150 
5151   /* Local variables */
5152   l_sync_ind                 VARCHAR2(1);
5153   l_posting_party_name       VARCHAR2(255);
5154   l_resp_id                  NUMBER;
5155   l_app_id                   NUMBER;
5156   l_user_id                  NUMBER;
5157   l_user_name                VARCHAR2(100);
5158   l_language                 VARCHAR2(30);
5159   l_language_code            VARCHAR2(4);
5160   l_posting_party_id         NUMBER;
5161   l_header_status            NUMBER;
5162   l_error_count              NUMBER;
5163   l_event_key                VARCHAR2(30);
5164   l_min                      NUMBER;
5165   l_max                      NUMBER;
5166   l_loops_reqd               NUMBER;
5167   l_start_line               NUMBER;
5168   l_end_line                 NUMBER;
5169   l_conversion_found         BOOLEAN;
5170   l_conversion_rate          NUMBER;
5171   l_file_name                VARCHAR2(255);
5172   l_comp_avg_dmd             NUMBER;
5173   l_date_format              VARCHAR2(80);
5174 
5175   /* Variables added for moe requisitions cursor */
5176   l_item_id                  NUMBER;
5177   l_quantity                 NUMBER;
5178   l_rec_date                 VARCHAR2(40);
5179   l_cust_id                  NUMBER;
5180   l_cust_site_id             NUMBER;
5181   l_sup_id                   NUMBER;
5182   l_sup_site_id              NUMBER;
5183   l_uom                      VARCHAR2(3);
5184   l_err_msg                  VARCHAR2(1000);
5185 
5186   /* Collection variables */
5187   t_line_id                  lineidList;
5188   t_pub                      publisherList;
5189   t_pub_id                   publishidList;
5190   t_pub_site                 pubsiteList;
5191   t_pub_site_id              pubsiteidList;
5192   t_pub_addr                 pubaddrList;
5193   t_cust                     customerList;
5194   t_cust_id                  custidList;
5195   t_cust_site                custsiteList;
5196   t_cust_site_id             custsiteidList;
5197   t_cust_addr                custaddrList;
5198   t_supp                     supplierList;
5199   t_supp_id                  suppidList;
5200   t_supp_site                suppsiteList;
5201   t_supp_site_id             suppsiteidList;
5202   t_supp_addr                suppaddrList;
5203   t_shipfrom                 shipfromList;
5204   t_shipfrom_id              shipfromidList := shipfromidList();
5205   t_shipfrom_site            shipfromsiteList;
5206   t_shipfrom_site_id         shipfromsidList := shipfromsidList();
5207   t_shipfrom_addr            shipfromaddrList;
5208   t_shipto                   shiptoList;
5209   t_shipto_id                shiptoidList := shiptoidList();
5210   t_shipto_site              shiptositeList;
5211   t_shipto_site_id           shiptosidList := shiptosidList();
5212   t_shipto_party_addr        shiptopaddrList;
5213   t_shipto_addr              shiptoaddrList;
5214   t_end_order_pub            endordpubList;
5215   t_end_ord_pub_id           endordpubidList := endordpubidList();
5216   t_end_ord_pub_site         endordpubsiteList;
5217   t_end_ord_pub_site_id      endordpubsidList := endordpubsidList();
5218   t_order_type               ordertypeList;
5219   t_ot_desc                  otdescList;
5220   t_end_order_type           endordertypeList := endordertypeList();
5221   t_end_ot_desc              endotdescList;
5222   t_bkt_type_desc            bktypedescList;
5223   t_bkt_type                 bktypeList;
5224   t_item_name                itemList;
5225   t_owner_item_name          itemList;
5226   t_cust_item_name           itemList;
5227   t_supp_item_name           itemList;
5228   t_item_id                  itemidList;
5229   t_item_desc                itemdescList;
5230   t_pri_uom                  uomList;
5231   t_pri_qty                  qtyList := qtyList();
5232   t_category                 categoryList;
5233   t_ref_item_name            itemList;
5234   t_ref_item_desc            itemdescList;
5235   t_ref_uom                  uomList;
5236   t_ord_num                  ordernumList;
5237   t_rel_num                  relnumList;
5238   t_line_num                 linenumList;
5239   t_end_ord                  endordList;
5240   t_end_line                 endlineList;
5241   t_end_rel                  endrelList;
5242   t_key_date                 keydateList;
5243   t_key_end_date             keydatelist;
5244   t_new_sched_date           newschedList;
5245   t_ship_date                shipdateList;
5246   t_receipt_date             receiptdateList;
5247   t_new_ord_plac_date        newordplaceList;
5248   t_orig_prom_date           origpromList;
5249   t_req_date                 reqdateList;
5250   /* Added for work order support */
5251   t_wip_st_date              wipstdatelist;
5252   t_wip_end_date             wipenddatelist;
5253   t_quantity                 qtyList;
5254   t_uom                      uomList;
5255   t_comments                 commentList;
5256   t_carrier_code             carrierList;
5257   t_bill_of_lading           billofladList;
5258   t_tracking_number          trackingList;
5259   t_vehicle_number           vehicleList;
5260   t_container_type           containerList;
5261   t_container_qty            contqtyList;
5262   t_serial_number            serialnumList;
5263   t_attach_url               attachurlList;
5264   t_version                  versionList;
5265   t_designator               designatorList;
5266   t_context         contextList;
5267   t_attribute1         attributeList;
5268   t_attribute2               attributeList;
5269   t_attribute3               attributeList;
5270   t_attribute4               attributeList;
5271   t_attribute5               attributeList;
5272   t_attribute6               attributeList;
5273   t_attribute7               attributeList;
5274   t_attribute8               attributeList;
5275   t_attribute9               attributeList;
5276   t_attribute10              attributeList;
5277   t_attribute11              attributeList;
5278   t_attribute12              attributeList;
5279   t_attribute13              attributeList;
5280   t_attribute14              attributeList;
5281   t_attribute15              attributeList;
5282   t_posting_party_name       postingpartyList;
5283   t_posting_party_id         numList := numList();
5284   t_user_name                usernameList;
5285   t_user_id                  numList;
5286   t_event_key                eventkeyList := eventkeyList();
5287   t_transaction_id           transactionIdList;
5288 
5289   /* variables added for Bucketing changes */
5290   t_header_id_lst            headeridList;
5291   t_line_id_lst              lineidList;
5292   t_key_date_lst             numList;
5293   t_ket_end_date_lst         numList;
5294 
5295   lv_bucket_index            number;
5296   lv_new_date                number;
5297 
5298   l_consumption_advice_exists BOOLEAN; -- bug 3551850
5299 
5300 BEGIN
5301 
5302   ---------------------------------------------------------------
5303   --- Call custom validations code to perform custom validations
5304   ---------------------------------------------------------------
5305 
5306   msc_custom_validation_pkg.call_validations_pre(p_header_id);
5307 
5308   log_debug('In validate');
5309   --========================================================
5310   --Get the user's language
5311   --========================================================
5312   BEGIN
5313     SELECT distinct u.user_name,
5314            l.created_by
5315     INTO   l_user_name,
5316            l_user_id
5317     FROM   fnd_user u,
5318            msc_supdem_lines_interface l
5319     WHERE  u.user_id = l.created_by and
5320            l.parent_header_id = p_header_id;
5321 
5322 /*  BUG #3845796 :Using Applications Session Language in preference to ICX_LANGUAGE profile value */
5323 
5324     l_language_code := USERENV('LANG');
5325     G_USER_IS_ADMIN := is_user_admin(l_user_id);
5326 
5327     IF(l_language_code is null) THEN
5328        l_language := fnd_profile.value('ICX_LANGUAGE');
5329 
5330     IF l_language IS NOT NULL THEN
5331       SELECT language_code
5332       INTO   l_language_code
5333       FROM   fnd_languages
5334       WHERE  nls_language = l_language;
5335     ELSE
5336       l_language_code := 'US';
5337     END IF;
5338    END IF;
5339 
5340   EXCEPTION
5341     WHEN NO_DATA_FOUND THEN
5342       l_language_code := 'US';
5343   END;
5344 
5345 	execute immediate
5346 		'select meaning from FND_LOOKUP_VALUES '
5347 		|| ' where LOOKUP_TYPE = ''MSC_X_BUCKET_TYPE'' '
5348 		|| ' and   LOOKUP_CODE = 1 '
5349 		|| ' and   LANGUAGE = :l_language_code '
5350 		into  G_DAY_DESC
5351 		USING  l_language_code;
5352 
5353   IF p_build_err = 1 THEN
5354     l_date_format := NVL(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD/MM/YYYY HH24:MI:SS');
5355   ELSE
5356     l_date_format := 'DD/MM/YYYY HH24:MI:SS';
5357   END IF;
5358 
5359   --==========================================================
5360   --Get the file name. In case of XML or MOE default correctly
5361   --==========================================================
5362   BEGIN
5363     SELECT file_name
5364     INTO   l_file_name
5365     FROM   msc_files
5366     WHERE  plan_id = -1 AND
5367            header_id = p_header_id;
5368   EXCEPTION
5369     WHEN OTHERS THEN
5370       l_file_name := substrb(get_message('MSC','MSC_X_XML_FILE', l_language_code),1,240);
5371   END;
5372 
5373   log_debug('File name:' || l_file_name);
5374 
5375   BEGIN
5376     SELECT min(line_id), max(line_id)
5377     INTO   l_min, l_max
5378     FROM   msc_supdem_lines_interface
5379     WHERE  parent_header_id = p_header_id;
5380   EXCEPTION
5381     WHEN NO_DATA_FOUND THEN
5382        p_status := 0;
5383        p_err_msg := NULL;
5384        return;
5385   END;
5386 
5387   l_loops_reqd := 1 + trunc((l_max - l_min)/G_BATCH_SIZE);
5388 
5389   --==========================================================
5390   --Insert/update/delete records into/from the transaction
5391   --table in batches of 500
5392   --==========================================================
5393   IF l_loops_reqd IS NOT NULL THEN
5394 
5395      --==========================================================
5396      --Perform validations on the data
5397      --==========================================================
5398      -- bug 3551850 update_errors(p_header_id, l_language_code, p_build_err,l_date_format);
5399      update_errors(p_header_id, l_language_code, p_build_err,l_date_format, l_consumption_advice_exists);
5400 
5401      --==========================================================
5402      --Insert/update/delete records into/from the transaction
5403      --table in batches of 500
5404      --==========================================================
5405      FOR i IN 1..l_loops_reqd LOOP
5406 	l_start_line := l_min + (i-1)*G_BATCH_SIZE;
5407 	IF ((l_min -1 + i*G_BATCH_SIZE) <= l_max) THEN
5408 	   l_end_line := l_min -1 + i*G_BATCH_SIZE;
5409 	 ELSE
5410 	   l_end_line := l_max;
5411 	END IF;
5412 	log_debug('Loop: ' || i);
5413 
5414 	--==========================================================
5415 	-- Records with Sync indicator D
5416 	--==========================================================
5417 	log_debug('Opening c_delete');
5418         log_debug('Date format = ' || l_date_format);
5419 	OPEN c_delete(p_header_id, l_language_code, l_start_line, l_end_line,l_date_format);
5420 	FETCH c_delete BULK COLLECT INTO t_transaction_id;
5421 	CLOSE c_delete;
5422 
5423 
5424 	log_debug('Count = ' || t_transaction_id.COUNT);
5425 	log_debug('-- p_header_id :'||p_header_id);
5426 	log_debug('-- l_start_line :'||l_start_line);
5427 	log_debug('-- l_end_line :'||l_end_line);
5428 	log_debug('-- l_language_code :'||l_language_code);
5429 
5430 	if (t_transaction_id is not null) and  (t_transaction_id.COUNT > 0) then
5431 	   log_debug('RecordS fetched: ' || t_transaction_id.COUNT);
5432            BEGIN
5433 	      FORALL i IN t_transaction_id.FIRST..t_transaction_id.LAST
5434 		UPDATE msc_sup_dem_entries msde
5435 		SET    msde.quantity = 0,
5436 		msde.tp_quantity = 0,
5437 		msde.primary_quantity = 0,
5438 		msde.ref_header_id = p_header_id,
5439 		msde.last_refresh_number = msc_cl_refresh_s.nextval,
5440 		msde.last_update_login = G_DELETED
5441 		WHERE  msde.transaction_id  = t_transaction_id(i);
5442 
5443 	      -- Disable all the corresponding serial Details
5444 	      FORALL i IN t_transaction_id.FIRST..t_transaction_id.LAST
5445 		UPDATE  msc_serial_numbers msn
5446 		SET     msn.disable_date = sysdate
5447 		WHERE  msn.serial_txn_id = t_transaction_id(i) AND
5448 		NVL(msn.disable_date,sysdate+1) > sysdate ;
5449 	   END;
5450 	   --COMMIT;
5451 	end if;
5452 
5453 	log_debug('After c_delete');
5454 
5455     /* Added for work order support */
5456 
5457     OPEN c_work_order_without_cust(
5458           p_header_id,
5459           l_language_code,
5460           l_start_line,
5461           l_end_line,
5462           l_date_format);
5463     FETCH c_work_order_without_cust bulk collect INTO
5464               t_line_id,
5465               t_pub,
5466               t_pub_id,
5467               t_pub_site,
5468               t_pub_site_id,
5469               t_pub_addr,
5470               t_cust,
5471               t_cust_id,
5472               t_cust_site,
5473               t_cust_site_id,
5474               t_cust_addr,
5475               t_supp,
5476               t_supp_id,
5477               t_supp_site,
5478               t_supp_site_id,
5479               t_supp_addr,
5480               t_shipfrom,
5481               t_shipfrom_site,
5482               t_shipfrom_addr,
5483               t_shipto,
5484               t_shipto_site,
5485               t_shipto_party_addr,
5486               t_shipto_addr,
5487               t_end_order_pub,
5488               t_end_ord_pub_site,
5489               t_order_type,
5490               t_ot_desc,
5491               t_end_ot_desc,
5492               t_bkt_type_desc,
5493               t_bkt_type,
5494               t_item_id,
5495               t_ord_num,
5496               t_line_num,
5497               t_rel_num,
5498               t_end_ord,
5499               t_end_line,
5500               t_end_rel,
5501               t_key_date,
5502               t_new_sched_date,
5503               t_ship_date,
5504               t_receipt_date,
5505               t_new_ord_plac_date,
5506               t_orig_prom_date,
5507               t_req_date,
5508               /* Added for work order support */
5509               t_wip_st_date,
5510               t_wip_end_date,
5511               t_quantity,
5512               t_uom,
5513               t_comments,
5514               t_carrier_code,
5515               t_bill_of_lading,
5516               t_tracking_number,
5517               t_vehicle_number,
5518               t_container_type,
5519               t_container_qty,
5520               t_serial_number,
5521               t_attach_url,
5522               t_version,
5523               t_designator,
5524               t_context,
5525               t_attribute1,
5526               t_attribute2,
5527               t_attribute3,
5528               t_attribute4,
5529               t_attribute5,
5530               t_attribute6,
5531               t_attribute7,
5532               t_attribute8,
5533               t_attribute9,
5534               t_attribute10,
5535               t_attribute11,
5536               t_attribute12,
5537               t_attribute13,
5538               t_attribute14,
5539               t_attribute15,
5540               t_posting_party_name;
5541     CLOSE c_work_order_without_cust;
5542 
5543     if (t_line_id is not null) and (t_line_id.COUNT > 0) then
5544     log_debug('Records fetched: ' || t_line_id.COUNT);
5545       get_optional_info(
5546         p_header_id,
5547         l_language_code,
5548         t_line_id,
5549         t_end_order_pub,
5550         t_end_ord_pub_site,
5551         t_shipfrom,
5552         t_shipfrom_site,
5553         t_shipto,
5554         t_shipto_site,
5555         t_end_ot_desc,
5556         t_posting_party_name,
5557         t_cust_id,
5558         t_cust_site_id,
5559         t_supp_id,
5560         t_supp_site_id,
5561         t_item_id,
5562         t_order_type,
5563         t_ship_date,
5564         t_receipt_date,
5565         t_end_order_type,
5566         t_end_ord_pub_id,
5567         t_end_ord_pub_site_id,
5568         t_shipfrom_id,
5569         t_shipfrom_site_id,
5570         t_shipto_id,
5571         t_shipto_site_id,
5572         t_posting_party_id,
5573         t_cust,
5574         t_cust_site,
5575         t_key_date
5576       );
5577 
5578       replace_supdem_entries (
5579         p_header_id,
5580         t_line_id,
5581         t_pub,
5582         t_pub_id,
5583         t_pub_site,
5584         t_pub_site_id,
5585         t_pub_addr,
5586         t_cust,
5587 	t_cust_id,
5588 	t_cust_site,
5589         t_cust_site_id,
5590         t_cust_addr,
5591         t_supp,
5592         t_supp_id,
5593         t_supp_site,
5594         t_supp_site_id,
5595         t_supp_addr,
5596         t_shipfrom,
5597         t_shipfrom_id,
5598         t_shipfrom_site,
5599         t_shipfrom_site_id,
5600         t_shipfrom_addr,
5601         t_shipto,
5602         t_shipto_id,
5603         t_shipto_site,
5604         t_shipto_site_id,
5605         t_shipto_party_addr,
5606         t_shipto_addr,
5607         t_end_order_pub,
5608         t_end_ord_pub_id,
5609         t_end_ord_pub_site,
5610         t_end_ord_pub_site_id,
5611         t_order_type,
5612         t_ot_desc,
5613         t_end_order_type,
5614         t_end_ot_desc,
5615         t_bkt_type_desc,
5616         t_bkt_type,
5617         t_item_id,
5618         t_ord_num,
5619         t_line_num,
5620         t_rel_num,
5621         t_end_ord,
5622         t_end_line,
5623         t_end_rel,
5624         t_key_date,
5625         t_new_sched_date,
5626         t_ship_date,
5627         t_receipt_date,
5628         t_new_ord_plac_date,
5629         t_orig_prom_date,
5630         t_req_date,
5631         /* Added for work order support */
5632         t_wip_st_date,
5633         t_wip_end_date,
5634         t_uom,
5635         t_quantity,
5636         t_comments,
5637         t_carrier_code,
5638         t_bill_of_lading,
5639         t_tracking_number,
5640         t_vehicle_number,
5641         t_container_type,
5642         t_container_qty,
5643         t_serial_number,
5644         t_attach_url,
5645         t_version,
5646         t_designator,
5647         t_context,
5648         t_attribute1,
5649         t_attribute2,
5650         t_attribute3,
5651         t_attribute4,
5652         t_attribute5,
5653         t_attribute6,
5654         t_attribute7,
5655         t_attribute8,
5656         t_attribute9,
5657         t_attribute10,
5658         t_attribute11,
5659         t_attribute12,
5660         t_attribute13,
5661         t_attribute14,
5662         t_attribute15,
5663         t_posting_party_name,
5664         t_posting_party_id,
5665         l_user_id,
5666         l_language_code
5667       );
5668 
5669     end if;
5670 
5671     OPEN c_work_order_with_cust(
5672           p_header_id,
5673           l_language_code,
5674           l_start_line,
5675           l_end_line,
5676           l_date_format);
5677     FETCH c_work_order_with_cust bulk collect INTO
5678               t_line_id,
5679               t_pub,
5680               t_pub_id,
5681               t_pub_site,
5682               t_pub_site_id,
5683               t_pub_addr,
5684               t_cust,
5685               t_cust_id,
5686               t_cust_site,
5687               t_cust_site_id,
5688               t_cust_addr,
5689               t_supp,
5690               t_supp_id,
5691               t_supp_site,
5692               t_supp_site_id,
5693               t_supp_addr,
5694               t_shipfrom,
5695               t_shipfrom_site,
5696               t_shipfrom_addr,
5697               t_shipto,
5698               t_shipto_site,
5699               t_shipto_party_addr,
5700               t_shipto_addr,
5701               t_end_order_pub,
5702               t_end_ord_pub_site,
5703               t_order_type,
5704               t_ot_desc,
5705               t_end_ot_desc,
5706               t_bkt_type_desc,
5707               t_bkt_type,
5708               t_item_id,
5709               t_ord_num,
5710               t_line_num,
5711               t_rel_num,
5712               t_end_ord,
5713               t_end_line,
5714               t_end_rel,
5715               t_key_date,
5716               t_new_sched_date,
5717               t_ship_date,
5718               t_receipt_date,
5719               t_new_ord_plac_date,
5720               t_orig_prom_date,
5721               t_req_date,
5722               /* Added for work order support */
5723               t_wip_st_date,
5724               t_wip_end_date,
5725               t_quantity,
5726               t_uom,
5727               t_comments,
5728               t_carrier_code,
5729               t_bill_of_lading,
5730               t_tracking_number,
5731               t_vehicle_number,
5732               t_container_type,
5733               t_container_qty,
5734               t_serial_number,
5735               t_attach_url,
5736               t_version,
5737               t_designator,
5738               t_context,
5739               t_attribute1,
5740               t_attribute2,
5741               t_attribute3,
5742               t_attribute4,
5743               t_attribute5,
5744               t_attribute6,
5745               t_attribute7,
5746               t_attribute8,
5747               t_attribute9,
5748               t_attribute10,
5749               t_attribute11,
5750               t_attribute12,
5751               t_attribute13,
5752               t_attribute14,
5753               t_attribute15,
5754               t_posting_party_name;
5755     CLOSE c_work_order_with_cust;
5756 
5757     if (t_line_id is not null) and (t_line_id.COUNT > 0) then
5758     log_debug('Records fetched: ' || t_line_id.COUNT);
5759       get_optional_info(
5760         p_header_id,
5761         l_language_code,
5762         t_line_id,
5763         t_end_order_pub,
5764         t_end_ord_pub_site,
5765         t_shipfrom,
5766         t_shipfrom_site,
5767         t_shipto,
5768         t_shipto_site,
5769         t_end_ot_desc,
5770         t_posting_party_name,
5771         t_cust_id,
5772         t_cust_site_id,
5773         t_supp_id,
5774         t_supp_site_id,
5775         t_item_id,
5776         t_order_type,
5777         t_ship_date,
5778         t_receipt_date,
5779         t_end_order_type,
5780         t_end_ord_pub_id,
5781         t_end_ord_pub_site_id,
5782         t_shipfrom_id,
5783         t_shipfrom_site_id,
5784         t_shipto_id,
5785         t_shipto_site_id,
5786         t_posting_party_id,
5787         t_cust,
5788         t_cust_site,
5789 	t_key_date
5790       );
5791 
5792       replace_supdem_entries (
5793         p_header_id,
5794         t_line_id,
5795         t_pub,
5796         t_pub_id,
5797         t_pub_site,
5798         t_pub_site_id,
5799         t_pub_addr,
5800         t_cust,
5801         t_cust_id,
5802         t_cust_site,
5803         t_cust_site_id,
5804         t_cust_addr,
5805         t_supp,
5806         t_supp_id,
5807         t_supp_site,
5808         t_supp_site_id,
5809         t_supp_addr,
5810         t_shipfrom,
5811         t_shipfrom_id,
5812         t_shipfrom_site,
5813         t_shipfrom_site_id,
5814         t_shipfrom_addr,
5815         t_shipto,
5816         t_shipto_id,
5817         t_shipto_site,
5818         t_shipto_site_id,
5819         t_shipto_party_addr,
5820         t_shipto_addr,
5821         t_end_order_pub,
5822         t_end_ord_pub_id,
5823         t_end_ord_pub_site,
5824         t_end_ord_pub_site_id,
5825         t_order_type,
5826         t_ot_desc,
5827         t_end_order_type,
5828         t_end_ot_desc,
5829         t_bkt_type_desc,
5830         t_bkt_type,
5831         t_item_id,
5832         t_ord_num,
5833         t_line_num,
5834         t_rel_num,
5835 	t_end_ord,
5836         t_end_line,
5837         t_end_rel,
5838         t_key_date,
5839         t_new_sched_date,
5840         t_ship_date,
5841         t_receipt_date,
5842         t_new_ord_plac_date,
5843         t_orig_prom_date,
5844         t_req_date,
5845         /* Added for work order support */
5846         t_wip_st_date,
5847         t_wip_end_date,
5848         t_uom,
5849         t_quantity,
5850         t_comments,
5851         t_carrier_code,
5852         t_bill_of_lading,
5853         t_tracking_number,
5854         t_vehicle_number,
5855         t_container_type,
5856         t_container_qty,
5857         t_serial_number,
5858         t_attach_url,
5859         t_version,
5860         t_designator,
5861         t_context,
5862         t_attribute1,
5863         t_attribute2,
5864         t_attribute3,
5865         t_attribute4,
5866         t_attribute5,
5867         t_attribute6,
5868         t_attribute7,
5869         t_attribute8,
5870         t_attribute9,
5871         t_attribute10,
5872         t_attribute11,
5873         t_attribute12,
5874         t_attribute13,
5875         t_attribute14,
5876         t_attribute15,
5877         t_posting_party_name,
5878         t_posting_party_id,
5879         l_user_id,
5880         l_language_code
5881       );
5882 
5883     end if;
5884 
5885     --==========================================================
5886     -- Valid unallocated onhand records. This order type is
5887     -- handled specially because neither the customer nor the
5888     -- supplier fields are populated.
5889     --==========================================================
5890   log_debug('Opening c_unallocated_onhand');
5891     OPEN c_unallocated_onhand(
5892           p_header_id,
5893           l_language_code,
5894           l_start_line,
5895           l_end_line,
5896           l_date_format);
5897 	    FETCH c_unallocated_onhand BULK COLLECT INTO
5898 		      t_line_id,
5899 		      t_pub,
5900 		      t_pub_id,
5901 		      t_pub_site,
5902 		      t_pub_site_id,
5903 		      t_pub_addr,
5904 		      t_cust,
5905 		      t_cust_id,
5906 		      t_cust_site,
5907 		      t_cust_site_id,
5908 		      t_cust_addr,
5909 		      t_supp,
5910 		      t_supp_id,
5911 		      t_supp_site,
5912 		      t_supp_site_id,
5913 		      t_supp_addr,
5914 		      t_shipfrom,
5915 		      t_shipfrom_site,
5916               t_shipfrom_addr,
5917               t_shipto,
5918               t_shipto_site,
5919               t_shipto_party_addr,
5920               t_shipto_addr,
5921               t_end_order_pub,
5922               t_end_ord_pub_site,
5923               t_order_type,
5924               t_ot_desc,
5925               t_end_ot_desc,
5926               t_bkt_type_desc,
5927               t_bkt_type,
5928               t_item_id,
5929               t_ord_num,
5930               t_line_num,
5931               t_rel_num,
5932               t_end_ord,
5933               t_end_line,
5934               t_end_rel,
5935               t_key_date,
5936               t_new_sched_date,
5937               t_ship_date,
5938               t_receipt_date,
5939               t_new_ord_plac_date,
5940               t_orig_prom_date,
5941               t_req_date,
5942               /* Added for work order support */
5943               t_wip_st_date,
5944               t_wip_end_date,
5945               t_quantity,
5946               t_uom,
5947               t_comments,
5948               t_carrier_code,
5949               t_bill_of_lading,
5950               t_tracking_number,
5951               t_vehicle_number,
5952               t_container_type,
5953               t_container_qty,
5954               t_serial_number,
5955               t_attach_url,
5956               t_version,
5957               t_designator,
5958               t_context,
5959               t_attribute1,
5960               t_attribute2,
5961               t_attribute3,
5962               t_attribute4,
5963               t_attribute5,
5964               t_attribute6,
5965               t_attribute7,
5966               t_attribute8,
5967               t_attribute9,
5968               t_attribute10,
5969               t_attribute11,
5970               t_attribute12,
5971               t_attribute13,
5972               t_attribute14,
5973               t_attribute15,
5974               t_posting_party_name;
5975     CLOSE c_unallocated_onhand;
5976 
5977     if (t_line_id is not null) and (t_line_id.COUNT > 0) then
5978     log_debug('Records fetched: ' || t_line_id.COUNT);
5979       get_optional_info(
5980         p_header_id,
5981         l_language_code,
5982         t_line_id,
5983         t_end_order_pub,
5984         t_end_ord_pub_site,
5985         t_shipfrom,
5986         t_shipfrom_site,
5987         t_shipto,
5988         t_shipto_site,
5989         t_end_ot_desc,
5990         t_posting_party_name,
5991         t_cust_id,
5992         t_cust_site_id,
5993         t_supp_id,
5994         t_supp_site_id,
5995         t_item_id,
5996         t_order_type,
5997         t_ship_date,
5998         t_receipt_date,
5999         t_end_order_type,
6000         t_end_ord_pub_id,
6001         t_end_ord_pub_site_id,
6002         t_shipfrom_id,
6003         t_shipfrom_site_id,
6004         t_shipto_id,
6005         t_shipto_site_id,
6006 	t_posting_party_id,
6007 	t_cust,
6008         t_cust_site,
6009         t_key_date
6010       );
6011 
6012       replace_supdem_entries (
6013         p_header_id,
6014         t_line_id,
6015         t_pub,
6016         t_pub_id,
6017         t_pub_site,
6018         t_pub_site_id,
6019         t_pub_addr,
6020         t_cust,
6021         t_cust_id,
6022         t_cust_site,
6023         t_cust_site_id,
6024         t_cust_addr,
6025         t_supp,
6026         t_supp_id,
6027         t_supp_site,
6028         t_supp_site_id,
6029         t_supp_addr,
6030         t_shipfrom,
6031         t_shipfrom_id,
6032         t_shipfrom_site,
6033         t_shipfrom_site_id,
6034         t_shipfrom_addr,
6035         t_shipto,
6036         t_shipto_id,
6037         t_shipto_site,
6038         t_shipto_site_id,
6039         t_shipto_party_addr,
6040         t_shipto_addr,
6041         t_end_order_pub,
6042         t_end_ord_pub_id,
6043         t_end_ord_pub_site,
6044         t_end_ord_pub_site_id,
6045         t_order_type,
6046         t_ot_desc,
6047         t_end_order_type,
6048         t_end_ot_desc,
6049         t_bkt_type_desc,
6050         t_bkt_type,
6051         t_item_id,
6052         t_ord_num,
6053         t_line_num,
6054         t_rel_num,
6055         t_end_ord,
6056         t_end_line,
6057         t_end_rel,
6058         t_key_date,
6059         t_new_sched_date,
6060         t_ship_date,
6061         t_receipt_date,
6062         t_new_ord_plac_date,
6063         t_orig_prom_date,
6064         t_req_date,
6065 	/* Added for work order support */
6066         t_wip_st_date,
6067         t_wip_end_date,
6068         t_uom,
6069         t_quantity,
6070         t_comments,
6071         t_carrier_code,
6072         t_bill_of_lading,
6073         t_tracking_number,
6074         t_vehicle_number,
6075         t_container_type,
6076         t_container_qty,
6077         t_serial_number,
6078         t_attach_url,
6079         t_version,
6080         t_designator,
6081         t_context,
6082         t_attribute1,
6083         t_attribute2,
6084         t_attribute3,
6085         t_attribute4,
6086         t_attribute5,
6087         t_attribute6,
6088         t_attribute7,
6089         t_attribute8,
6090         t_attribute9,
6091         t_attribute10,
6092         t_attribute11,
6093         t_attribute12,
6094         t_attribute13,
6095         t_attribute14,
6096         t_attribute15,
6097         t_posting_party_name,
6098         t_posting_party_id,
6099         l_user_id,
6100         l_language_code
6101       );
6102 
6103     end if;
6104 
6105     log_debug('Opening c_bktless_key');
6106     OPEN c_bktless_key (
6107           p_header_id,
6108           l_language_code,
6109           l_start_line,
6110           l_end_line,
6111           l_date_format);
6112     FETCH c_bktless_key BULK COLLECT INTO
6113               t_line_id,
6114               t_pub,
6115               t_pub_id,
6116               t_pub_site,
6117               t_pub_site_id,
6118               t_pub_addr,
6119               t_cust,
6120               t_cust_id,
6121               t_cust_site,
6122               t_cust_site_id,
6123               t_cust_addr,
6124               t_supp,
6125               t_supp_id,
6126               t_supp_site,
6127               t_supp_site_id,
6128               t_supp_addr,
6129               t_shipfrom,
6130               t_shipfrom_site,
6131               t_shipfrom_addr,
6132               t_shipto,
6133               t_shipto_site,
6134               t_shipto_party_addr,
6135               t_shipto_addr,
6136               t_end_order_pub,
6137               t_end_ord_pub_site,
6138               t_order_type,
6139               t_ot_desc,
6140               t_end_ot_desc,
6141               t_bkt_type_desc,
6142               t_bkt_type,
6143               t_item_id,
6144               t_ord_num,
6145               t_line_num,
6146               t_rel_num,
6147               t_end_ord,
6148               t_end_line,
6149               t_end_rel,
6150               t_key_date,
6151               t_new_sched_date,
6152               t_ship_date,
6153               t_receipt_date,
6154               t_new_ord_plac_date,
6155               t_orig_prom_date,
6156               t_req_date,
6157               t_wip_st_date,
6158               t_wip_end_date,
6159               t_quantity,
6160               t_uom,
6161               t_comments,
6162               t_carrier_code,
6163               t_bill_of_lading,
6164               t_tracking_number,
6165               t_vehicle_number,
6166               t_container_type,
6167               t_container_qty,
6168               t_serial_number,
6169               t_attach_url,
6170               t_version,
6171               t_designator,
6172          t_context,
6173          t_attribute1,
6174               t_attribute2,
6175               t_attribute3,
6176               t_attribute4,
6177               t_attribute5,
6178               t_attribute6,
6179               t_attribute7,
6180               t_attribute8,
6181               t_attribute9,
6182               t_attribute10,
6183               t_attribute11,
6184               t_attribute12,
6185               t_attribute13,
6186               t_attribute14,
6187               t_attribute15,
6188               t_posting_party_name;
6189     CLOSE c_bktless_key;
6190 
6191     if (t_line_id is not null) and (t_line_id.COUNT > 0) then
6192  log_debug('Records fetched: ' || t_line_id.COUNT);
6193       get_optional_info(
6194         p_header_id,
6195         l_language_code,
6196         t_line_id,
6197         t_end_order_pub,
6198         t_end_ord_pub_site,
6199         t_shipfrom,
6200         t_shipfrom_site,
6201         t_shipto,
6202         t_shipto_site,
6203         t_end_ot_desc,
6204         t_posting_party_name,
6205         t_cust_id,
6206         t_cust_site_id,
6207         t_supp_id,
6208         t_supp_site_id,
6209         t_item_id,
6210         t_order_type,
6211         t_ship_date,
6212         t_receipt_date,
6213         t_end_order_type,
6214         t_end_ord_pub_id,
6215         t_end_ord_pub_site_id,
6216         t_shipfrom_id,
6217         t_shipfrom_site_id,
6218         t_shipto_id,
6219         t_shipto_site_id,
6220         t_posting_party_id,
6221         t_cust,
6222         t_cust_site,
6223         t_key_date
6224 	);
6225 
6226     log_debug('Calling replace_supdem_entries');
6227       replace_supdem_entries (
6228         p_header_id,
6229         t_line_id,
6230         t_pub,
6231         t_pub_id,
6232         t_pub_site,
6233         t_pub_site_id,
6234         t_pub_addr,
6235         t_cust,
6236         t_cust_id,
6237         t_cust_site,
6238         t_cust_site_id,
6239         t_cust_addr,
6240         t_supp,
6241         t_supp_id,
6242         t_supp_site,
6243         t_supp_site_id,
6244         t_supp_addr,
6245         t_shipfrom,
6246         t_shipfrom_id,
6247         t_shipfrom_site,
6248         t_shipfrom_site_id,
6249         t_shipfrom_addr,
6250         t_shipto,
6251         t_shipto_id,
6252         t_shipto_site,
6253         t_shipto_site_id,
6254         t_shipto_party_addr,
6255         t_shipto_addr,
6256         t_end_order_pub,
6257         t_end_ord_pub_id,
6258         t_end_ord_pub_site,
6259         t_end_ord_pub_site_id,
6260         t_order_type,
6261         t_ot_desc,
6262         t_end_order_type,
6263         t_end_ot_desc,
6264         t_bkt_type_desc,
6265         t_bkt_type,
6266         t_item_id,
6267         t_ord_num,
6268         t_line_num,
6269         t_rel_num,
6270         t_end_ord,
6271         t_end_line,
6272         t_end_rel,
6273         t_key_date,
6274         t_new_sched_date,
6275         t_ship_date,
6276         t_receipt_date,
6277         t_new_ord_plac_date,
6278         t_orig_prom_date,
6279         t_req_date,
6280 	/* Added for work order support */
6281         t_wip_st_date,
6282         t_wip_end_date,
6283         t_uom,
6284         t_quantity,
6285         t_comments,
6286         t_carrier_code,
6287         t_bill_of_lading,
6288         t_tracking_number,
6289         t_vehicle_number,
6290         t_container_type,
6291         t_container_qty,
6292         t_serial_number,
6293         t_attach_url,
6294         t_version,
6295         t_designator,
6296       t_context,
6297    t_attribute1,
6298         t_attribute2,
6299         t_attribute3,
6300         t_attribute4,
6301         t_attribute5,
6302         t_attribute6,
6303         t_attribute7,
6304         t_attribute8,
6305         t_attribute9,
6306         t_attribute10,
6307         t_attribute11,
6308         t_attribute12,
6309         t_attribute13,
6310         t_attribute14,
6311         t_attribute15,
6312         t_posting_party_name,
6313         t_posting_party_id,
6314         l_user_id,
6315         l_language_code
6316       );
6317    log_debug('After replace');
6318     end if;
6319 
6320      /* for Daily buckets data     */
6321      OPEN  c_bucket_data( l_language_code ,
6322                           p_header_id,
6323 			  l_date_format,
6324 			  G_DAY);
6325      FETCH c_bucket_data
6326       BULK COLLECT INTO
6327            t_header_id_lst,
6328 	   t_line_id_lst,
6329 	   t_key_date_lst,
6330 	   t_ket_end_date_lst;
6331      CLOSE c_bucket_data;
6332 
6333      if (t_line_id_lst.COUNT > 0 ) then
6334 	     FOR i in 1..t_line_id_lst.COUNT LOOP
6335 
6336 	       lv_bucket_index := 0;
6337 
6338 		       LOOP
6339 
6340 			   lv_new_date := t_key_date_lst(i) + lv_bucket_index;
6341 
6342 			   EXIT WHEN lv_new_date > t_ket_end_date_lst(i);
6343 
6344 			   insert into MSC_LOAD_BUCKETS_TEMP
6345 			     (PARENT_HEADER_ID,
6346 			      LINE_ID,
6347 			      BUCKET_DATE,
6348 			      BUCKET_TYPE)
6349 			      values ( t_header_id_lst(i),
6350 				       t_line_id_lst(i),
6351 				       to_date(lv_new_date,'J'),
6352 				       1);
6353 
6354 			   lv_bucket_index := lv_bucket_index + 1;
6355 
6356 		       END LOOP;
6357 
6358 	     END LOOP;
6359      end if;
6360 
6361   log_debug('Opening c_daily_bkt_key');
6362     OPEN c_daily_bkt_key (
6363           p_header_id,
6364           l_language_code,
6365           l_start_line,
6366           l_end_line,
6367           l_date_format);
6368     FETCH c_daily_bkt_key BULK COLLECT INTO
6369               t_line_id,
6370               t_pub,
6371               t_pub_id,
6372               t_pub_site,
6373               t_pub_site_id,
6374               t_pub_addr,
6375               t_cust,
6376               t_cust_id,
6377               t_cust_site,
6378               t_cust_site_id,
6379               t_cust_addr,
6380               t_supp,
6381               t_supp_id,
6382               t_supp_site,
6383               t_supp_site_id,
6384               t_supp_addr,
6385               t_shipfrom,
6386               t_shipfrom_site,
6387               t_shipfrom_addr,
6388               t_shipto,
6389               t_shipto_site,
6390               t_shipto_party_addr,
6391               t_shipto_addr,
6392               t_end_order_pub,
6393               t_end_ord_pub_site,
6394               t_order_type,
6395               t_ot_desc,
6396               t_end_ot_desc,
6397               t_bkt_type_desc,
6398               t_bkt_type,
6399               t_item_id,
6400               t_ord_num,
6401               t_line_num,
6402               t_rel_num,
6403               t_end_ord,
6404               t_end_line,
6405               t_end_rel,
6406               t_key_date,
6407               t_new_sched_date,
6408               t_ship_date,
6409               t_receipt_date,
6410               t_new_ord_plac_date,
6411               t_orig_prom_date,
6412               t_req_date,
6413               /* Added for work order support */
6414               t_wip_st_date,
6415               t_wip_end_date,
6416               t_quantity,
6417               t_uom,
6418               t_comments,
6419               t_carrier_code,
6420               t_bill_of_lading,
6421               t_tracking_number,
6422               t_vehicle_number,
6423               t_container_type,
6424               t_container_qty,
6425               t_serial_number,
6426               t_attach_url,
6427               t_version,
6428               t_designator,
6429               t_context,
6430               t_attribute1,
6431               t_attribute2,
6432               t_attribute3,
6433               t_attribute4,
6434               t_attribute5,
6435               t_attribute6,
6436               t_attribute7,
6437               t_attribute8,
6438               t_attribute9,
6439               t_attribute10,
6440               t_attribute11,
6441               t_attribute12,
6442               t_attribute13,
6443               t_attribute14,
6444               t_attribute15,
6445               t_posting_party_name;
6446 
6447     CLOSE c_daily_bkt_key;
6448 
6449     commit;
6450 
6451     if (t_line_id is not null) and (t_line_id.COUNT > 0) then
6452     log_debug('Records fetched: ' || t_line_id.COUNT);
6453       get_optional_info(
6454         p_header_id,
6455         l_language_code,
6456         t_line_id,
6457         t_end_order_pub,
6458         t_end_ord_pub_site,
6459         t_shipfrom,
6460         t_shipfrom_site,
6461         t_shipto,
6462         t_shipto_site,
6463         t_end_ot_desc,
6464         t_posting_party_name,
6465         t_cust_id,
6466         t_cust_site_id,
6467         t_supp_id,
6468         t_supp_site_id,
6469         t_item_id,
6470         t_order_type,
6471         t_ship_date,
6472         t_receipt_date,
6473         t_end_order_type,
6474         t_end_ord_pub_id,
6475         t_end_ord_pub_site_id,
6476         t_shipfrom_id,
6477         t_shipfrom_site_id,
6478         t_shipto_id,
6479         t_shipto_site_id,
6480 	t_posting_party_id,
6481 	t_cust,
6482         t_cust_site,
6483         t_key_date
6484       );
6485 
6486       replace_supdem_entries (
6487         p_header_id,
6488         t_line_id,
6489         t_pub,
6490         t_pub_id,
6491         t_pub_site,
6492         t_pub_site_id,
6493         t_pub_addr,
6494         t_cust,
6495         t_cust_id,
6496         t_cust_site,
6497         t_cust_site_id,
6498         t_cust_addr,
6499         t_supp,
6500         t_supp_id,
6501         t_supp_site,
6502         t_supp_site_id,
6503         t_supp_addr,
6504         t_shipfrom,
6505         t_shipfrom_id,
6506         t_shipfrom_site,
6507         t_shipfrom_site_id,
6508         t_shipfrom_addr,
6509         t_shipto,
6510         t_shipto_id,
6511         t_shipto_site,
6512         t_shipto_site_id,
6513         t_shipto_party_addr,
6514         t_shipto_addr,
6515         t_end_order_pub,
6516         t_end_ord_pub_id,
6517         t_end_ord_pub_site,
6518         t_end_ord_pub_site_id,
6519         t_order_type,
6520         t_ot_desc,
6521         t_end_order_type,
6522         t_end_ot_desc,
6523         t_bkt_type_desc,
6524         t_bkt_type,
6525         t_item_id,
6526         t_ord_num,
6527         t_line_num,
6528         t_rel_num,
6529         t_end_ord,
6530         t_end_line,
6531         t_end_rel,
6532         t_key_date,
6533         t_new_sched_date,
6534         t_ship_date,
6535         t_receipt_date,
6536         t_new_ord_plac_date,
6537         t_orig_prom_date,
6538         t_req_date,
6539 	/* Added for work order support */
6540         t_wip_st_date,
6541         t_wip_end_date,
6542         t_uom,
6543         t_quantity,
6544         t_comments,
6545         t_carrier_code,
6546         t_bill_of_lading,
6547         t_tracking_number,
6548         t_vehicle_number,
6549         t_container_type,
6550         t_container_qty,
6551         t_serial_number,
6552         t_attach_url,
6553         t_version,
6554         t_designator,
6555         t_context,
6556         t_attribute1,
6557         t_attribute2,
6558         t_attribute3,
6559         t_attribute4,
6560         t_attribute5,
6561         t_attribute6,
6562         t_attribute7,
6563         t_attribute8,
6564         t_attribute9,
6565         t_attribute10,
6566         t_attribute11,
6567         t_attribute12,
6568         t_attribute13,
6569         t_attribute14,
6570         t_attribute15,
6571         t_posting_party_name,
6572         t_posting_party_id,
6573         l_user_id,
6574         l_language_code
6575       );
6576 
6577     end if;
6578 
6579      /* for weekly buckets data     */
6580      OPEN  c_bucket_data( l_language_code ,
6581                           p_header_id,
6582 			  l_date_format,
6583 			  G_WEEK);
6584      FETCH c_bucket_data
6585       BULK COLLECT INTO
6586            t_header_id_lst,
6587 	   t_line_id_lst,
6588 	   t_key_date_lst,
6589 	   t_ket_end_date_lst;
6590      CLOSE c_bucket_data;
6591 
6592      if (t_line_id_lst.COUNT > 0 ) then
6593 	     FOR i in 1..t_line_id_lst.COUNT LOOP
6594 
6595 	       lv_bucket_index := 0;
6596 
6597 		       LOOP
6598 
6599 			   lv_new_date := t_key_date_lst(i) + (7 * lv_bucket_index);
6600 
6601 			   EXIT WHEN lv_new_date > t_ket_end_date_lst(i);
6602 
6603 			   insert into MSC_LOAD_BUCKETS_TEMP
6604 			     (PARENT_HEADER_ID,
6605 			      LINE_ID,
6606 			      BUCKET_DATE,
6607 			      BUCKET_TYPE)
6608 			      values ( t_header_id_lst(i),
6609 				       t_line_id_lst(i),
6610 				       to_date(lv_new_date,'J'),
6611 				       2);
6612 
6613 			   lv_bucket_index := lv_bucket_index + 1;
6614 
6615 		       END LOOP;
6616 
6617 	     END LOOP;
6618      end if;
6619 
6620   log_debug('Opening c_weekly_bkt_key');
6621     OPEN c_weekly_bkt_key (
6622           p_header_id,
6623           l_language_code,
6624           l_start_line,
6625           l_end_line,
6626           l_date_format);
6627     FETCH c_weekly_bkt_key BULK COLLECT INTO
6628               t_line_id,
6629               t_pub,
6630               t_pub_id,
6631               t_pub_site,
6632               t_pub_site_id,
6633               t_pub_addr,
6634               t_cust,
6635               t_cust_id,
6636               t_cust_site,
6637               t_cust_site_id,
6638               t_cust_addr,
6639               t_supp,
6640               t_supp_id,
6641               t_supp_site,
6642               t_supp_site_id,
6643               t_supp_addr,
6644               t_shipfrom,
6645               t_shipfrom_site,
6646               t_shipfrom_addr,
6647               t_shipto,
6648               t_shipto_site,
6649               t_shipto_party_addr,
6650               t_shipto_addr,
6651               t_end_order_pub,
6652               t_end_ord_pub_site,
6653               t_order_type,
6654               t_ot_desc,
6655               t_end_ot_desc,
6656               t_bkt_type_desc,
6657               t_bkt_type,
6658               t_item_id,
6659               t_ord_num,
6660               t_line_num,
6661               t_rel_num,
6662               t_end_ord,
6663               t_end_line,
6664               t_end_rel,
6665               t_key_date,
6666               t_new_sched_date,
6667               t_ship_date,
6668               t_receipt_date,
6669               t_new_ord_plac_date,
6670               t_orig_prom_date,
6671               t_req_date,
6672               /* Added for work order support */
6673               t_wip_st_date,
6674               t_wip_end_date,
6675               t_quantity,
6676               t_uom,
6677               t_comments,
6678               t_carrier_code,
6679               t_bill_of_lading,
6680               t_tracking_number,
6681               t_vehicle_number,
6682               t_container_type,
6683               t_container_qty,
6684               t_serial_number,
6685               t_attach_url,
6686               t_version,
6687               t_designator,
6688               t_context,
6689               t_attribute1,
6690               t_attribute2,
6691               t_attribute3,
6692               t_attribute4,
6693               t_attribute5,
6694               t_attribute6,
6695               t_attribute7,
6696               t_attribute8,
6697               t_attribute9,
6698               t_attribute10,
6699               t_attribute11,
6700               t_attribute12,
6701               t_attribute13,
6702               t_attribute14,
6703               t_attribute15,
6704               t_posting_party_name;
6705     CLOSE c_weekly_bkt_key;
6706 
6707     commit;
6708 
6709     if (t_line_id is not null) and (t_line_id.COUNT > 0) then
6710     log_debug('Records fetched: ' || t_line_id.COUNT);
6711       get_optional_info(
6712         p_header_id,
6713         l_language_code,
6714         t_line_id,
6715         t_end_order_pub,
6716         t_end_ord_pub_site,
6717         t_shipfrom,
6718         t_shipfrom_site,
6719         t_shipto,
6720         t_shipto_site,
6721         t_end_ot_desc,
6722         t_posting_party_name,
6723         t_cust_id,
6724         t_cust_site_id,
6725         t_supp_id,
6726         t_supp_site_id,
6727         t_item_id,
6728         t_order_type,
6729         t_ship_date,
6730         t_receipt_date,
6731         t_end_order_type,
6732         t_end_ord_pub_id,
6733         t_end_ord_pub_site_id,
6734         t_shipfrom_id,
6735         t_shipfrom_site_id,
6736         t_shipto_id,
6737         t_shipto_site_id,
6738 	t_posting_party_id,
6739 	t_cust,
6740         t_cust_site,
6741         t_key_date
6742       );
6743 
6744       replace_supdem_entries (
6745         p_header_id,
6746         t_line_id,
6747         t_pub,
6748         t_pub_id,
6749         t_pub_site,
6750         t_pub_site_id,
6751         t_pub_addr,
6752         t_cust,
6753         t_cust_id,
6754         t_cust_site,
6755         t_cust_site_id,
6756         t_cust_addr,
6757         t_supp,
6758         t_supp_id,
6759         t_supp_site,
6760         t_supp_site_id,
6761         t_supp_addr,
6762         t_shipfrom,
6763         t_shipfrom_id,
6764         t_shipfrom_site,
6765         t_shipfrom_site_id,
6766         t_shipfrom_addr,
6767         t_shipto,
6768         t_shipto_id,
6769         t_shipto_site,
6770         t_shipto_site_id,
6771         t_shipto_party_addr,
6772         t_shipto_addr,
6773         t_end_order_pub,
6774         t_end_ord_pub_id,
6775         t_end_ord_pub_site,
6776         t_end_ord_pub_site_id,
6777         t_order_type,
6778         t_ot_desc,
6779         t_end_order_type,
6780         t_end_ot_desc,
6781         t_bkt_type_desc,
6782         t_bkt_type,
6783         t_item_id,
6784         t_ord_num,
6785         t_line_num,
6786         t_rel_num,
6787         t_end_ord,
6788         t_end_line,
6789         t_end_rel,
6790         t_key_date,
6791         t_new_sched_date,
6792         t_ship_date,
6793         t_receipt_date,
6794         t_new_ord_plac_date,
6795         t_orig_prom_date,
6796         t_req_date,
6797 	/* Added for work order support */
6798         t_wip_st_date,
6799         t_wip_end_date,
6800         t_uom,
6801         t_quantity,
6802         t_comments,
6803         t_carrier_code,
6804         t_bill_of_lading,
6805         t_tracking_number,
6806         t_vehicle_number,
6807         t_container_type,
6808         t_container_qty,
6809         t_serial_number,
6810         t_attach_url,
6811         t_version,
6812         t_designator,
6813         t_context,
6814         t_attribute1,
6815         t_attribute2,
6816         t_attribute3,
6817         t_attribute4,
6818         t_attribute5,
6819         t_attribute6,
6820         t_attribute7,
6821         t_attribute8,
6822         t_attribute9,
6823         t_attribute10,
6824         t_attribute11,
6825         t_attribute12,
6826         t_attribute13,
6827         t_attribute14,
6828         t_attribute15,
6829         t_posting_party_name,
6830         t_posting_party_id,
6831         l_user_id,
6832         l_language_code
6833       );
6834 
6835     end if;
6836 
6837      /* for Monthly buckets data     */
6838      OPEN  c_bucket_data( l_language_code ,
6839                           p_header_id,
6840 			  l_date_format,
6841 			  G_MONTH);
6842      FETCH c_bucket_data
6843       BULK COLLECT INTO
6844            t_header_id_lst,
6845 	   t_line_id_lst,
6846 	   t_key_date_lst,
6847 	   t_ket_end_date_lst;
6848      CLOSE c_bucket_data;
6849 
6850      if (t_line_id_lst.COUNT > 0 ) then
6851 	     FOR i in 1..t_line_id_lst.COUNT LOOP
6852 
6853 	       lv_bucket_index := 0;
6854 
6855 		       LOOP
6856 
6857 			   lv_new_date := to_char(add_months(to_date(t_key_date_lst(i),'J') , lv_bucket_index) ,'J') ;
6858 
6859 			   EXIT WHEN lv_new_date > t_ket_end_date_lst(i);
6860 
6861 			   insert into MSC_LOAD_BUCKETS_TEMP
6862 			     (PARENT_HEADER_ID,
6863 			      LINE_ID,
6864 			      BUCKET_DATE,
6865 			      BUCKET_TYPE)
6866 			      values ( t_header_id_lst(i),
6867 				       t_line_id_lst(i),
6868 				       to_date(lv_new_date,'J') ,
6869 				       3);
6870 
6871 			   lv_bucket_index := lv_bucket_index + 1;
6872 
6873 		       END LOOP;
6874 
6875 	     END LOOP;
6876     end if;
6877 
6878   log_debug('Opening c_monthly_bkt_key');
6879     OPEN c_monthly_bkt_key (
6880           p_header_id,
6881           l_language_code,
6882           l_start_line,
6883           l_end_line,
6884           l_date_format);
6885 	    FETCH c_monthly_bkt_key BULK COLLECT INTO
6886 		      t_line_id,
6887 		      t_pub,
6888 		      t_pub_id,
6889 		      t_pub_site,
6890 		      t_pub_site_id,
6891 		      t_pub_addr,
6892 		      t_cust,
6893 		      t_cust_id,
6894 		      t_cust_site,
6895 		      t_cust_site_id,
6896 		      t_cust_addr,
6897 		      t_supp,
6898 		      t_supp_id,
6899 		      t_supp_site,
6900 		      t_supp_site_id,
6901 		      t_supp_addr,
6902 		      t_shipfrom,
6903 		      t_shipfrom_site,
6904 		      t_shipfrom_addr,
6905 		      t_shipto,
6906 		      t_shipto_site,
6907 		      t_shipto_party_addr,
6908 		      t_shipto_addr,
6909 		      t_end_order_pub,
6910 		      t_end_ord_pub_site,
6911 		      t_order_type,
6912               t_ot_desc,
6913               t_end_ot_desc,
6914               t_bkt_type_desc,
6915               t_bkt_type,
6916               t_item_id,
6917               t_ord_num,
6918               t_line_num,
6919               t_rel_num,
6920               t_end_ord,
6921               t_end_line,
6922               t_end_rel,
6923               t_key_date,
6924               t_new_sched_date,
6925               t_ship_date,
6926               t_receipt_date,
6927               t_new_ord_plac_date,
6928               t_orig_prom_date,
6929               t_req_date,
6930               /* Added for work order support */
6931               t_wip_st_date,
6932               t_wip_end_date,
6933               t_quantity,
6934               t_uom,
6935               t_comments,
6936               t_carrier_code,
6937               t_bill_of_lading,
6938               t_tracking_number,
6939               t_vehicle_number,
6940               t_container_type,
6941               t_container_qty,
6942               t_serial_number,
6943               t_attach_url,
6944               t_version,
6945               t_designator,
6946               t_context,
6947               t_attribute1,
6948               t_attribute2,
6949               t_attribute3,
6950               t_attribute4,
6951               t_attribute5,
6952               t_attribute6,
6953               t_attribute7,
6954               t_attribute8,
6955               t_attribute9,
6956               t_attribute10,
6957               t_attribute11,
6958               t_attribute12,
6959               t_attribute13,
6960               t_attribute14,
6961               t_attribute15,
6962               t_posting_party_name;
6963     CLOSE c_monthly_bkt_key;
6964 
6965     commit;
6966 
6967     if (t_line_id is not null) and (t_line_id.COUNT > 0) then
6968     log_debug('Records fetched: ' || t_line_id.COUNT);
6969       get_optional_info(
6970         p_header_id,
6971         l_language_code,
6972         t_line_id,
6973         t_end_order_pub,
6974         t_end_ord_pub_site,
6975         t_shipfrom,
6976         t_shipfrom_site,
6977         t_shipto,
6978         t_shipto_site,
6979         t_end_ot_desc,
6980         t_posting_party_name,
6981         t_cust_id,
6982         t_cust_site_id,
6983         t_supp_id,
6984         t_supp_site_id,
6985         t_item_id,
6986         t_order_type,
6987         t_ship_date,
6988         t_receipt_date,
6989         t_end_order_type,
6990         t_end_ord_pub_id,
6991         t_end_ord_pub_site_id,
6992         t_shipfrom_id,
6993         t_shipfrom_site_id,
6994         t_shipto_id,
6995         t_shipto_site_id,
6996         t_posting_party_id,
6997         t_cust,
6998         t_cust_site,
6999         t_key_date
7000 	);
7001 
7002       replace_supdem_entries (
7003         p_header_id,
7004         t_line_id,
7005         t_pub,
7006         t_pub_id,
7007         t_pub_site,
7008         t_pub_site_id,
7009         t_pub_addr,
7010         t_cust,
7011         t_cust_id,
7012         t_cust_site,
7013         t_cust_site_id,
7014         t_cust_addr,
7015         t_supp,
7016         t_supp_id,
7017         t_supp_site,
7018         t_supp_site_id,
7019         t_supp_addr,
7020         t_shipfrom,
7021         t_shipfrom_id,
7022         t_shipfrom_site,
7023         t_shipfrom_site_id,
7024         t_shipfrom_addr,
7025         t_shipto,
7026         t_shipto_id,
7027         t_shipto_site,
7028         t_shipto_site_id,
7029         t_shipto_party_addr,
7030         t_shipto_addr,
7031         t_end_order_pub,
7032         t_end_ord_pub_id,
7033         t_end_ord_pub_site,
7034         t_end_ord_pub_site_id,
7035         t_order_type,
7036         t_ot_desc,
7037         t_end_order_type,
7038         t_end_ot_desc,
7039         t_bkt_type_desc,
7040         t_bkt_type,
7041         t_item_id,
7042         t_ord_num,
7043         t_line_num,
7044         t_rel_num,
7045         t_end_ord,
7046         t_end_line,
7047         t_end_rel,
7048         t_key_date,
7049         t_new_sched_date,
7050         t_ship_date,
7051         t_receipt_date,
7052         t_new_ord_plac_date,
7053         t_orig_prom_date,
7054         t_req_date,
7055 	/* Added for work order support */
7056         t_wip_st_date,
7057         t_wip_end_date,
7058         t_uom,
7059         t_quantity,
7060         t_comments,
7061         t_carrier_code,
7062         t_bill_of_lading,
7063         t_tracking_number,
7064         t_vehicle_number,
7065         t_container_type,
7066         t_container_qty,
7067         t_serial_number,
7068         t_attach_url,
7069         t_version,
7070         t_designator,
7071         t_context,
7072         t_attribute1,
7073         t_attribute2,
7074         t_attribute3,
7075         t_attribute4,
7076         t_attribute5,
7077         t_attribute6,
7078         t_attribute7,
7079         t_attribute8,
7080         t_attribute9,
7081         t_attribute10,
7082         t_attribute11,
7083         t_attribute12,
7084         t_attribute13,
7085         t_attribute14,
7086         t_attribute15,
7087         t_posting_party_name,
7088         t_posting_party_id,
7089         l_user_id,
7090         l_language_code
7091       );
7092 
7093     end if;
7094      END LOOP;
7095   END IF;
7096 
7097   --After all lines in the flat file have been processed.
7098   COMMIT;
7099   --============================================================================
7100   --Raise event that launches the workflow process that sends the error message
7101   --============================================================================
7102   BEGIN
7103      SELECT 1 INTO l_error_count
7104        FROM dual
7105        WHERE exists(
7106           SELECT 'exists'
7107           FROM   msc_supdem_lines_interface
7108           WHERE  parent_header_id = p_header_id AND
7109           row_status IN (G_PROCESS,G_FAILURE)
7110           );
7111   EXCEPTION
7112      WHEN OTHERS THEN
7113 	l_error_count := 0;
7114   END;
7115 
7116 
7117   --dbms_output.enable(1000000);
7118   -- if the data was uploaded using flat-file loads or manual order entry
7119   if l_user_id <> -1 then
7120      l_event_key := 'LOADS' || '-' || p_header_id || '-' || l_user_id;
7121      if l_error_count > 0 THEN
7122 	p_status := 1;
7123 	if p_build_err = 2 then
7124 	   SELECT err_msg INTO p_err_msg
7125 	     FROM   msc_supdem_lines_interface
7126 	     WHERE  parent_header_id = p_header_id;
7127 	 else
7128 	   send_ntf(p_header_id, l_file_name, G_FAILURE, l_user_name, l_event_key);
7129 	end if;
7130       else
7131 	p_status := 0;
7132 	if p_build_err = 2 then
7133 	   OPEN c_moe_reqs(p_header_id);
7134 	   LOOP
7135 	      FETCH c_moe_reqs
7136 		INTO l_item_id,
7137 		l_quantity,
7138 		l_rec_date,
7139 		l_cust_id,
7140 		l_cust_site_id,
7141 		l_sup_id,
7142 		l_sup_site_id,
7143 		l_uom;
7144 	      EXIT WHEN c_moe_reqs%NOTFOUND;
7145 	      log_debug('Calling API to move reqs to ERP');
7146 	      log_debug('Item id := ' || l_item_id);
7147 	      log_debug('Cust id := ' || l_cust_id);
7148 	      log_debug('Cust site id := ' || l_cust_site_id);
7149 	      log_debug('Supplier id := ' || l_sup_id);
7150 	      log_debug('Supp site id := ' || l_sup_site_id);
7151 
7152 	      MSC_X_REPLENISH.CREATE_REQUISITION(
7153                    l_item_id,
7154                    l_quantity,
7155                    l_rec_date,
7156                    l_cust_id,
7157                    l_cust_site_id,
7158                    l_sup_id,
7159                    l_sup_site_id,
7160                    l_uom,
7161                    l_err_msg
7162                    );
7163 	   END LOOP;
7164 	   CLOSE c_moe_reqs;
7165 
7166 	   p_err_msg := nvl(l_err_msg, 'MSC_X_VALID_SUCCESS');
7167 
7168 	   --p_err_msg := 'MSC_X_VALID_SUCCESS';
7169 	 else
7170 		 send_ntf(p_header_id, l_file_name, G_SUCCESS, l_user_name, l_event_key);
7171 	end if;
7172      end if;
7173    ELSE
7174 	--For files uploaded via XML the notifications are sent to the users
7175 	--having the Supply Chain Administrator responsibility
7176 	OPEN c_sc_admins(p_header_id);
7177 	FETCH c_sc_admins bulk collect INTO
7178 	  t_user_name,
7179 	  t_user_id;
7180 	CLOSE c_sc_admins;
7181 
7182 	IF t_user_name IS NOT NULL AND t_user_name.COUNT > 0 THEN
7183 	   FOR j IN t_user_name.first..t_user_name.last LOOP
7184 	      t_event_key.extend;
7185 	      t_event_key(j) := 'LOADS' || '-' || p_header_id || '-' || t_user_id(j);
7186 	      IF l_error_count > 0 THEN
7187 		 send_ntf(p_header_id, l_file_name, G_FAILURE, t_user_name(j), t_event_key(j));
7188 	       ELSE
7189 		 send_ntf(p_header_id, l_file_name, G_SUCCESS, t_user_name(j), t_event_key(j));
7190 	      END IF;
7191 	   END LOOP;
7192 	END IF;
7193 
7194   END IF;
7195 
7196 
7197   --============================================================================================
7198   -- Starting post processing steps
7199   --============================================================================================
7200   IF (l_consumption_advice_exists) THEN
7201     LOG_MESSAGE('Creating Sales orders for Consumption Advice');
7202     begin
7203 	  MSC_X_CVMI_REPLENISH.vmi_release_api_load(p_header_id);
7204     exception
7205       when others then
7206 	  LOG_MESSAGE('Error in Sales orders for Consumption Advice: '||SQLERRM);
7207     end;
7208   END IF;
7209 
7210   log_message('Performing Consumption');
7211   POST_PROCESS(p_header_id);
7212 
7213 
7214   /*****************************************
7215   Not needed since average daily demand is calculated in
7216   the VMI engine from 11.5.10
7217   log_message('Calculating average demand');
7218   BEGIN
7219     select 1
7220     into   l_comp_avg_dmd
7221     from   dual
7222     where  exists (
7223            select 'exists'
7224            from   msc_supdem_lines_interface ln,
7225                   fnd_lookup_values flv
7226            where  ln.parent_header_id = p_header_id
7227            and    ln.row_status = G_SUCCESS
7228            and    flv.lookup_type = 'MSC_X_ORDER_TYPE'
7229            and    flv.lookup_code = 2
7230            and    UPPER(flv.meaning) = UPPER(ln.order_type)
7231            );
7232     log_debug('l_comp_avg_dmd := ' || l_comp_avg_dmd);
7233   EXCEPTION
7234     WHEN OTHERS THEN
7235       l_comp_avg_dmd := 0;
7236   END;
7237 
7238   IF l_comp_avg_dmd = 1 THEN
7239     BEGIN
7240       MSC_X_PLANNING.CALCULATE_AVERAGE_DEMAND;
7241     EXCEPTION
7242       WHEN OTHERS THEN
7243         LOG_MESSAGE('Error in MSC_X_PLANNING.CALCULATE_AVERAGE_DEMAND');
7244         LOG_MESSAGE(SQLERRM);
7245     END;
7246   END IF;
7247 
7248 
7249   ***************/
7250   /* Delete the work orders that have been deleted */
7251   BEGIN
7252     delete from msc_sup_dem_entries sd
7253     where sd.plan_id = -1
7254     and   sd.publisher_order_type = G_WORK_ORDER
7255     and   sd.last_update_login = G_DELETED;
7256 
7257   EXCEPTION
7258     WHEN OTHERS THEN
7259       LOG_MESSAGE(SQLERRM);
7260   END;
7261 
7262   -- launch SCEM engine
7263   LOG_MESSAGE('Check to see if need to launch SCEM engine ...');
7264   DECLARE
7265     l_order_type_flag NUMBER;
7266     l_msc_x_auto_scem_mode NUMBER;
7267     l_msc_x_configuration NUMBER;
7268   BEGIN
7269     l_order_type_flag := 0;
7270     l_msc_x_auto_scem_mode := FND_PROFILE.VALUE('MSC_X_AUTO_SCEM_MODE');
7271     l_msc_x_configuration := FND_PROFILE.VALUE('MSC_X_CONFIGURATION');
7272     BEGIN
7273       select 1
7274       into   l_order_type_flag
7275       from   dual
7276       where  exists (
7277            select 'exists'
7278            from   msc_supdem_lines_interface ln,
7279                   fnd_lookup_values flv
7280            where  ln.parent_header_id = p_header_id
7281            and    ln.row_status = G_SUCCESS
7282            and    flv.lookup_type = 'MSC_X_ORDER_TYPE'
7283            and    flv.lookup_code IN (2, 3)
7284            and    UPPER(flv.meaning) = UPPER(ln.order_type)
7285            );
7286     EXCEPTION
7287       WHEN OTHERS THEN
7288       l_order_type_flag := 0;
7289     END;
7290 
7291     log_debug('flag/profile: ' || l_order_type_flag
7292                || '-' || l_msc_x_auto_scem_mode || '-' || l_msc_x_configuration);
7293 
7294      IF ( l_order_type_flag = 1 ) THEN
7295       IF ( ( l_msc_x_auto_scem_mode = 1
7296            OR l_msc_x_auto_scem_mode = 3
7297            ) -- LOAD or ALL
7298          AND (l_msc_x_configuration = 2 OR l_msc_x_configuration = 3) -- APS+CP or CP
7299       ) THEN
7300         LOG_MESSAGE('About to Launching SCEM engine ...');
7301         MSC_X_CP_FLOW.Start_SCEM_Engine_WF;
7302         LOG_MESSAGE('After launching SCEM engine ...');
7303       END IF;
7304     END IF;
7305 
7306  EXCEPTION
7307    WHEN OTHERS THEN
7308         LOG_MESSAGE('Error in MSC_X_CP_FLOW.Start_SCEM_Engine_WF');
7309         LOG_MESSAGE(SQLERRM);
7310  END;
7311 
7312   --==================================================================
7313   -- Load the Serial Number data
7314   --===================================================================
7315   serial_validation(p_header_id,l_language_code);
7316 
7317 
7318   -----------------------------------------------------------------------
7319   --- Call the custom validations code to perform custom validations
7320   ----------------------------------------------------------------------
7321 
7322 	msc_custom_validation_pkg.call_validations_post(p_header_id);
7323 
7324 -- added exception handler
7325 EXCEPTION
7326    WHEN OTHERS THEN
7327       LOG_MESSAGE('Error in msc_sce_loads_pkg.validate');
7328       LOG_MESSAGE(SQLERRM);
7329 
7330 END validate;
7331 
7332 
7333 
7334 PROCEDURE get_optional_info
7335   (
7336     p_header_id           IN     Number,
7337     p_language_code       IN     Varchar2,
7338     t_line_id             IN     lineidList,
7339     t_end_order_pub       IN     endordpubList,
7340     t_end_ord_pub_site    IN     endordpubsiteList,
7341     t_shipfrom            IN     shipfromList,
7342     t_shipfrom_site       IN     shipfromsiteList,
7343     t_shipto              IN     shiptoList,
7344     t_shipto_site         IN     shiptositeList,
7345     t_end_ot_desc         IN     endotdescList,
7346     t_posting_party_name  IN     postingpartyList,
7347     t_cust_id             IN OUT NOCOPY custidList,
7348     t_cust_site_id        IN OUT NOCOPY custsiteidList,
7349     t_supp_id             IN     suppidList,
7350     t_supp_site_id        IN     suppsiteidList,
7351     t_item_id             IN     itemidList,
7352     t_order_type          IN     ordertypeList,
7353     t_ship_date           IN OUT NOCOPY shipdateList,
7354     t_receipt_date        IN OUT NOCOPY receiptdateList,
7355     t_end_order_type      IN OUT NOCOPY endordertypeList,
7356     t_end_ord_pub_id      IN OUT NOCOPY endordpubidList,
7357     t_end_ord_pub_site_id IN OUT NOCOPY endordpubsidList,
7358     t_shipfrom_id         IN OUT NOCOPY shipfromidList,
7359     t_shipfrom_site_id    IN OUT NOCOPY shipfromsidList,
7360     t_shipto_id           IN OUT NOCOPY shiptoidList,
7361     t_shipto_site_id      IN OUT NOCOPY shiptosidList,
7362     t_posting_party_id    IN OUT NOCOPY numlist,
7363     t_cust                IN OUT NOCOPY customerList,
7364     t_cust_site           IN OUT NOCOPY custsitelist,
7365     t_key_date		  IN OUT NOCOPY keydateList
7366   ) IS
7367 
7368   l_conversion_found         BOOLEAN;
7369   l_conversion_rate          NUMBER;
7370 
7371 BEGIN
7372    log_debug('In get_optional_info');
7373   IF t_line_id is not null and t_line_id.COUNT > 0 then
7374   log_debug('Lines fetched by cursor := ' || t_line_id.COUNT);
7375 
7376      FOR j in t_line_id.FIRST..t_line_id.LAST LOOP
7377 
7378       --=============================================================
7379       -- Figure out modeled org for work orders
7380       --=============================================================
7381       IF (t_order_type(j) = g_work_order) AND (t_supp_id(j) <> 1) AND (t_cust_id(j) is null) AND (t_cust_site_id(j) is null) THEN
7382          BEGIN
7383            SELECT c.company_name,
7384                   c.company_id,
7385                   cs.company_site_name,
7386                   cs.company_site_id
7387            INTO   t_cust(j),
7388                   t_cust_id(j),
7389                   t_cust_site(j),
7390                   t_cust_site_id(j)
7391            FROM   msc_trading_partners mtp,
7392                   msc_trading_partners mtp1,
7393                   msc_trading_partner_maps maps,
7394                   msc_trading_partner_maps maps1,
7395                   msc_trading_partner_maps maps2,
7396                   msc_trading_partner_sites mtps,
7397                   msc_company_sites cs,
7398                   msc_companies c,
7399                   msc_company_relationships rel
7400            WHERE  rel.relationship_type = 2
7401            AND    rel.subject_id = 1
7402            AND    rel.object_id = t_supp_id(j)
7403            AND    maps.company_key = rel.relationship_id
7404            AND    maps.map_type = 1
7405            AND    maps.tp_key = mtp.partner_id
7406            AND    maps1.company_key = t_supp_site_id(j)
7407            AND    maps1.map_type = 3
7408            AND    mtps.partner_site_id = maps1.tp_key
7409            AND    mtps.partner_id = mtp.partner_id
7410            AND    mtp1.partner_type = 3
7411            AND    mtp1.modeled_supplier_id = mtp.partner_id
7412            AND    mtp1.modeled_supplier_site_id = mtps.partner_site_id
7413            AND    maps2.tp_key = mtp1.partner_id
7414            AND    maps2.map_type = 2
7415            AND    cs.company_site_id = maps2.company_key
7416            AND    cs.company_id = c.company_id
7417            AND    c.company_id = 1;
7418 	 EXCEPTION
7419            WHEN OTHERS THEN
7420               t_cust(j)                 := null;
7421               t_cust_id(j)              := null;
7422               t_cust_site(j)            := null;
7423               t_cust_site_id(j)         := null;
7424          END;
7425       END IF;
7426 
7427 
7428 
7429      if(t_cust_id(j) = 1) /* Customer is OEM */ then
7430 
7431 
7432       --=============================================================
7433       --  Obtain the ship date
7434       --=============================================================
7435       if t_ship_date(j) is null and t_order_type(j) in (G_SALES_FORECAST, G_SUPPLY_COMMIT,
7436         G_SALES_ORDER, G_ASN, G_PO_ACKNOWLEDGEMENT, G_ORDER_FORECAST, G_PURCHASE_ORDER, G_SHIP_RECEIPT,
7437         G_REQUISITION) then
7438         t_ship_date(j) := msc_x_util.update_ship_rcpt_dates(
7439                             t_cust_id(j),
7440                             t_cust_site_id(j),
7441                             t_supp_id(j),
7442                             t_supp_site_id(j),
7443                             t_order_type(j),
7444                             t_item_id(j),
7445                             null,
7446                             t_receipt_date(j)
7447                           );
7448 
7449 	if(t_order_type(j) = G_SALES_FORECAST) then
7450 
7451 	 t_key_date(j)  := t_ship_date(j);
7452 
7453 	end if;
7454 
7455       end if;
7456 
7457 
7458       --=============================================================
7459       --  Obtain the receipt date
7460       --=============================================================
7461       if t_receipt_date(j) is null and t_order_type(j) in (G_SALES_FORECAST, G_SUPPLY_COMMIT,
7462         G_SALES_ORDER, G_ASN, G_PO_ACKNOWLEDGEMENT) then
7463         t_receipt_date(j) := msc_x_util.update_ship_rcpt_dates(
7464                             t_cust_id(j),
7465                             t_cust_site_id(j),
7466                             t_supp_id(j),
7467                             t_supp_site_id(j),
7468                             t_order_type(j),
7469                             t_item_id(j),
7470                             t_ship_date(j),
7471                             null
7472                           );
7473 
7474 	if(t_order_type(j) <> G_SALES_FORECAST) then
7475 	    t_key_date(j) := t_receipt_date(j);
7476 	end if;
7477 
7478       end if;
7479 
7480 
7481       end if; /* Customer is OEM */
7482 
7483 
7484       --=============================================================
7485       --  Obtain end order type
7486       --=============================================================
7487 
7488       t_end_order_type.EXTEND;
7489       IF (j > 1) AND (nvl(t_end_ot_desc(j),-1) = nvl(t_end_ot_desc(j-1),-1)) THEN
7490         t_end_order_type(j) := t_end_order_type(j-1);
7491       ELSIF t_end_ot_desc(j) is null THEN
7492         t_end_order_type(j) := null;
7493       ELSE
7494         SELECT flv.lookup_code
7495         INTO   t_end_order_type(j)
7496         FROM   fnd_lookup_values flv,
7497                msc_supdem_lines_interface ln
7498         WHERE  flv.lookup_type = 'MSC_X_ORDER_TYPE' and
7499                flv.language = p_language_code and
7500                UPPER(flv.meaning) = UPPER(ln.end_order_type) and
7501                ln.parent_header_id = p_header_id and
7502                ln.line_id = t_line_id(j);
7503       END IF;
7504 
7505       --=============================================================
7506       --Obtain end order publisher id
7507       --=============================================================
7508 
7509       t_end_ord_pub_id.EXTEND;
7510       IF (j > 1) AND (nvl(t_end_order_pub(j),-1) = nvl(t_end_order_pub(j-1),-1)) THEN
7511         t_end_ord_pub_id(j) := t_end_ord_pub_id(j-1);
7512       ELSE
7513        BEGIN
7514         SELECT c.company_id
7515         INTO   t_end_ord_pub_id(j)
7516         FROM   msc_companies c,
7517                msc_supdem_lines_interface l
7518         WHERE  UPPER(c.company_name) = UPPER(l.end_order_publisher_name) AND
7519                l.parent_header_id = p_header_id and
7520                l.line_id = t_line_id(j);
7521        EXCEPTION
7522         WHEN OTHERS THEN
7523          t_end_ord_pub_id(j) := null;
7524        END;
7525       END IF;
7526 
7527       --=============================================================
7528       --Obtain ship from party's id
7529       --=============================================================
7530 
7531       t_shipfrom_id.EXTEND;
7532       IF (j > 1) AND (nvl(t_shipfrom(j),-1) = nvl(t_shipfrom(j-1),-1)) THEN
7533         t_shipfrom_id(j) := t_shipfrom_id(j-1);
7534       ELSE
7535        BEGIN
7536         SELECT c.company_id
7537         INTO   t_shipfrom_id(j)
7538         FROM   msc_companies c,
7539                msc_supdem_lines_interface l
7540         WHERE  UPPER(c.company_name) = UPPER(l.ship_from_party_name) AND
7541                l.parent_header_id = p_header_id and
7542                l.line_id = t_line_id(j);
7543        EXCEPTION
7544         WHEN OTHERS THEN
7545          t_shipfrom_id(j) := null;
7546        END;
7547       END IF;
7548 
7549       --=============================================================
7550       --Obtain ship to party id
7551       --=============================================================
7552 
7553       t_shipto_id.EXTEND;
7554       IF (j > 1) AND (nvl(t_shipto(j),-1) = nvl(t_shipto(j-1),-1)) THEN
7555         t_shipto_id(j) := t_shipto_id(j-1);
7556       ELSE
7557        BEGIN
7558         SELECT c.company_id
7559         INTO t_shipto_id(j)
7560         FROM   msc_companies c,
7561                msc_supdem_lines_interface l
7562         WHERE  UPPER(c.company_name) = UPPER(l.ship_to_party_name) AND
7563                l.parent_header_id = p_header_id and
7564                l.line_id = t_line_id(j);
7565        EXCEPTION
7566         WHEN OTHERS THEN
7567          t_shipto_id(j) := null;
7568        END;
7569       END IF;
7570 
7571       --=============================================================
7572       --Obtain end order publisher's site id
7573       --=============================================================
7574       t_end_ord_pub_site_id.EXTEND;
7575       IF (j > 1) AND (nvl(t_end_ord_pub_site(j),-1) = nvl(t_end_ord_pub_site(j-1),-1)) THEN
7576          t_end_ord_pub_site_id(j) := t_end_ord_pub_site_id(j-1);
7577       ELSE
7578        BEGIN
7579         SELECT s.company_site_id
7580         INTO   t_end_ord_pub_site_id(j)
7581         FROM   msc_company_sites s,
7582                msc_supdem_lines_interface l
7583         WHERE  s.company_id = t_end_ord_pub_id(j) AND
7584                UPPER(s.company_site_name) = UPPER(l.end_order_publisher_site) AND
7585                l.parent_header_id = p_header_id and
7586                l.line_id = t_line_id(j);
7587        EXCEPTION
7588         WHEN OTHERS THEN
7589           t_end_ord_pub_site_id(j) := null;
7590        END;
7591       END IF;
7592 
7593 
7594       --=============================================================
7595       --Obtain ship from party's site id
7596       --=============================================================
7597 
7598       t_shipfrom_site_id.EXTEND;
7599       IF (j > 1) AND (nvl(t_shipfrom_site(j),-1) = nvl(t_shipfrom_site(j-1),-1)) THEN
7600          t_shipfrom_site_id(j) := t_shipfrom_site_id(j-1);
7601       ELSE
7602        BEGIN
7603          SELECT s.company_site_id
7604          INTO   t_shipfrom_site_id(j)
7605          FROM   msc_company_sites s,
7606                 msc_supdem_lines_interface l
7607          WHERE  s.company_id = t_shipfrom_id(j) AND
7608                 UPPER(s.company_site_name) = UPPER(l.ship_from_party_site) AND
7609                 l.parent_header_id = p_header_id and
7610                 l.line_id = t_line_id(j);
7611        EXCEPTION
7612          WHEN OTHERS THEN
7613            t_shipfrom_site_id(j) := null;
7614        END;
7615       END IF;
7616 
7617       --=============================================================
7618       --Obtain ship to party's site id
7619       --=============================================================
7620 
7621       t_shipto_site_id.EXTEND;
7622 
7623       IF (j > 1) AND (nvl(t_shipto_site(j),-1) = nvl(t_shipto_site(j-1),-1)) THEN
7624         t_shipto_site_id(j) := t_shipto_site_id(j-1);
7625       ELSE
7626        BEGIN
7627         SELECT s.company_site_id
7628         INTO   t_shipto_site_id(j)
7629         FROM   msc_company_sites s,
7630                msc_supdem_lines_interface l
7631         WHERE  s.company_id = t_shipto_id(j) AND
7632                UPPER(s.company_site_name) = UPPER(l.ship_to_party_site) AND
7633                l.parent_header_id = p_header_id and
7634                l.line_id = t_line_id(j);
7635        EXCEPTION
7636          WHEN OTHERS THEN
7637            t_shipto_site_id(j) := null;
7638        END;
7639       END IF;
7640 
7641       t_posting_party_id.EXTEND;
7642 
7643       IF (j > 1) AND (nvl(t_posting_party_name(j),-1) = nvl(t_posting_party_name(j-1),-1)) THEN
7644         t_posting_party_id(j) := t_posting_party_id(j-1);
7645       ELSE
7646         SELECT c.company_id
7647         INTO   t_posting_party_id(j)
7648         FROM   msc_companies c
7649         WHERE  c.company_name = t_posting_party_name(j);
7650 	--Bug 5116681: there is no need no check the upper as posting party gets itself populated thru msc_companies table.
7651       END IF;
7652 
7653     END LOOP;
7654 
7655   END IF;
7656 
7657 -- added exception handler
7658 EXCEPTION
7659    WHEN OTHERS THEN
7660       LOG_MESSAGE('Error in msc_sce_loads_pkg.get_optional_info');
7661       LOG_MESSAGE(SQLERRM);
7662 
7663 END get_optional_info;
7664 
7665 PROCEDURE replace_supdem_entries (
7666     p_header_id            IN Number,
7667     t_line_id              IN lineidList,
7668     t_pub                  IN publisherList,
7669     t_pub_id               IN publishidList,
7670     t_pub_site             IN pubsiteList,
7671     t_pub_site_id          IN pubsiteidList,
7672     t_pub_addr             IN pubaddrList,
7673     t_cust                 IN customerList,
7674     t_cust_id              IN custidList,
7675     t_cust_site            IN custsiteList,
7676     t_cust_site_id         IN custsiteidList,
7677     t_cust_addr            IN custaddrList,
7678     t_supp                 IN supplierList,
7679     t_supp_id              IN suppidList,
7680     t_supp_site            IN suppsiteList,
7681     t_supp_site_id         IN suppsiteidList,
7682     t_supp_addr            IN suppaddrList,
7683     t_shipfrom             IN shipfromList,
7684     t_shipfrom_id          IN shipfromidList,
7685     t_shipfrom_site        IN shipfromsiteList,
7686     t_shipfrom_site_id     IN shipfromsidList,
7687     t_shipfrom_addr        IN shipfromaddrList,
7688     t_shipto               IN shiptoList,
7689     t_shipto_id            IN shiptoidList,
7690     t_shipto_site          IN shiptositeList,
7691     t_shipto_site_id       IN shiptosidList,
7692     t_shipto_party_addr    IN shiptopaddrList,
7693     t_shipto_addr          IN shiptoaddrList,
7694     t_end_order_pub        IN endordpubList,
7695     t_end_ord_pub_id       IN endordpubidList,
7696     t_end_ord_pub_site     IN endordpubsiteList,
7697     t_end_ord_pub_site_id  IN endordpubsidList,
7698     t_order_type           IN ordertypeList,
7699     t_ot_desc              IN otdescList,
7700     t_end_order_type       IN endordertypeList,
7701     t_end_ot_desc          IN endotdescList,
7702     t_bkt_type_desc        IN bktypedescList,
7703     t_bkt_type             IN bktypeList,
7704     t_item_id              IN itemidList,
7705     t_ord_num              IN ordernumList,
7706     t_line_num             IN linenumList,
7707     t_rel_num              IN relnumList,
7708     t_end_ord              IN endordList,
7709     t_end_line             IN endlineList,
7710     t_end_rel              IN endrelList,
7711     t_key_date             IN keydateList,
7712     t_new_sched_date       IN newschedList,
7713     t_ship_date            IN shipdateList,
7714     t_receipt_date         IN receiptdateList,
7715     t_new_ord_plac_date    IN newordplaceList,
7716     t_orig_prom_date       IN origpromList,
7717     t_req_date             IN reqdateList,
7718     /* Added for work order support */
7719     t_wip_st_date          IN wipstdatelist,
7720     t_wip_end_date         IN wipenddatelist,
7721     t_uom                  IN uomList,
7722     t_quantity             IN qtyList,
7723     t_comments             IN commentList,
7724     t_carrier_code         IN carrierList,
7725     t_bill_of_lading       IN billofladList,
7726     t_tracking_number      IN trackingList,
7727     t_vehicle_number       IN vehicleList,
7728     t_container_type       IN containerList,
7729     t_container_qty        IN contqtyList,
7730     t_serial_number        IN serialnumList,
7731     t_attach_url           IN attachurlList,
7732     t_version              IN versionList,
7733     t_designator           IN designatorList,
7734     t_context        IN contextList,
7735     t_attribute1     IN attributeList,
7736     t_attribute2     IN attributeList,
7737     t_attribute3     IN attributeList,
7738     t_attribute4     IN attributeList,
7739     t_attribute5     IN attributeList,
7740     t_attribute6     IN attributeList,
7741     t_attribute7     IN attributeList,
7742     t_attribute8     IN attributeList,
7743     t_attribute9     IN attributeList,
7744     t_attribute10    IN attributeList,
7745     t_attribute11    IN attributeList,
7746     t_attribute12    IN attributeList,
7747     t_attribute13    IN attributeList,
7748     t_attribute14    IN attributeList,
7749     t_attribute15    IN attributeList,
7750     --p_posting_party_name   IN VARCHAR2,
7751     --p_posting_party_id     IN NUMBER,
7752     t_posting_party_name   IN postingpartyList,
7753     t_posting_party_id     IN numList,
7754     p_user_id              IN NUMBER,
7755     p_language_code        IN VARCHAR2
7756   ) IS
7757 
7758   CURSOR publisher_is_supplier_c(
7759     p_item_id      in number,
7760     p_cust_site_id in number,
7761     p_pub_id       in number,
7762     p_pub_site_id  in number
7763   ) IS
7764   select mis.supplier_item_name,
7765          nvl(mis.description,itm1.description) ,
7766          nvl(mis.uom_code,msi.uom_code),
7767          msi.base_item_id,
7768          itm.item_name,
7769 	 msi.planner_code
7770   from   msc_item_suppliers mis,
7771          msc_system_items msi,
7772 	 msc_items itm,
7773 	 msc_items itm1,
7774          msc_trading_partner_maps map,
7775          msc_trading_partner_maps map1,
7776          msc_trading_partner_maps map2,
7777          msc_trading_partners mtp,
7778          msc_company_relationships r
7779   where  itm.inventory_item_id (+)= msi.base_item_id and
7780          msi.organization_id = mis.organization_id and
7781          msi.sr_instance_id = mis.sr_instance_id and
7782          msi.inventory_item_id = mis.inventory_item_id and
7783          msi.plan_id = mis.plan_id and
7784          mis.plan_id = -1 and
7785          mis.inventory_item_id = p_item_id and
7786          mis.plan_id = -1 and
7787          mis.organization_id = mtp.sr_tp_id and
7788          mis.sr_instance_id = mtp.sr_instance_id and
7789 	 itm1.inventory_item_id(+) = mis.inventory_item_id and
7790          mtp.partner_id = map2.tp_key and
7791          mtp.partner_type = 3 and
7792          map2.company_key = p_cust_site_id and
7793          map2.map_type = 2 and
7794          mis.supplier_id = map.tp_key and
7795          --Nvl(mis.supplier_site_id, map1.tp_key) = map1.tp_key and
7796          mis.supplier_site_id = map1.tp_key and
7797          map.map_type = 1 and
7798          map.company_key = r.relationship_id and
7799          r.relationship_type = 2 and
7800          r.subject_id = 1 and
7801          r.object_id = p_pub_id and
7802          map1.map_type = 3 and
7803          map1.company_key = p_pub_site_id
7804   order by mis.using_organization_id desc;
7805 
7806   CURSOR supplier_item_c (
7807     p_item_id      in number,
7808     p_cust_site_id in number,
7809     p_pub_id       in number,
7810     p_pub_site_id  in number,
7811     p_supp_id      in number,
7812     p_supp_site_id in number
7813   ) IS
7814   select mis.supplier_item_name,
7815          nvl(mis.description,itm.description),
7816          mis.uom_code
7817   from   msc_item_suppliers mis,
7818          msc_items          itm,
7819          msc_trading_partner_maps map,
7820          msc_trading_partner_maps map1,
7821          msc_trading_partner_maps map2,
7822          msc_trading_partners mtp,
7823          msc_company_relationships r
7824   where  mis.inventory_item_id = p_item_id and
7825          mis.plan_id = -1 and
7826          mis.organization_id = mtp.sr_tp_id and
7827          mis.sr_instance_id = mtp.sr_instance_id and
7828 	 itm.inventory_item_id(+) = mis.inventory_item_id and
7829          mtp.partner_id = map2.tp_key and
7830          mtp.partner_type = 3 and
7831          map2.company_key = nvl(p_cust_site_id, p_pub_site_id) and
7832          map2.map_type = 2 and
7833          mis.supplier_id = map.tp_key and
7834          --Nvl(mis.supplier_site_id, map1.tp_key) = map1.tp_key and
7835          mis.supplier_site_id = map1.tp_key and
7836          map.map_type = 1 and
7837          map.company_key = r.relationship_id and
7838          r.relationship_type = 2 and
7839          r.subject_id = 1 and
7840          r.object_id = nvl(p_supp_id, p_pub_id) and
7841          map1.map_type = 3 and
7842          map1.company_key = nvl(p_supp_site_id, p_pub_site_id)
7843   order by mis.using_organization_id desc;
7844 
7845   CURSOR c_vmi_item
7846      (
7847       p_supplier IN VARCHAR2,
7848       p_supplier_site IN VARCHAR2,
7849       p_customer_site IN VARCHAR2,
7850       p_item_id IN NUMBER
7851       ) IS
7852 	 SELECT mis.vmi_flag,
7853 	   mis.enable_vmi_auto_replenish_flag
7854 	   FROM msc_trading_partners mtp,
7855 	   msc_trading_partner_sites mtps,
7856 	   msc_trading_partners mtp1,
7857 	   msc_item_suppliers mis
7858 	   WHERE Upper(mtp.partner_name) = Upper(p_supplier)
7859 	   AND mtp.partner_type = 1
7860 	   AND mtps.partner_id = mtp.partner_id
7861 	   AND Upper(mtps.tp_site_code) = Upper(p_supplier_site)
7862 	   AND Upper(mtp1.organization_code) = Upper(p_customer_site)
7863 	   AND mtp1.partner_type = 3
7864 	   AND mis.plan_id = -1
7865 	   AND mis.organization_id = mtp1.sr_tp_id
7866 	   AND mis.sr_instance_id = mtp1.sr_instance_id
7867 	   AND mis.supplier_id = mtp.partner_id
7868 	   AND Nvl(mis.supplier_site_id, -99) = Decode(mis.supplier_site_id, NULL, -99, mtps.partner_site_id)
7869 	   AND mis.inventory_item_id = p_item_id
7870 	   ORDER BY mis.using_organization_id DESC;
7871 
7872   -- jguo: added cursor below
7873   CURSOR c_shipping_control_meaning
7874     ( p_shipping_control_code IN NUMBER
7875     ) IS
7876     SELECT meaning,to_number(lookup_code)
7877     FROM fnd_lookup_values
7878     WHERE lookup_type = 'MSC_X_SHIPPING_CONTROL'
7879     AND language = p_language_code
7880     AND lookup_code = p_shipping_control_code
7881     ;
7882   l_conversion_found         BOOLEAN;
7883   l_conversion_rate          NUMBER;
7884   l_item_name                VARCHAR2(240);
7885   l_base_item_id 	     NUMBER;
7886   l_base_item_name           VARCHAR2(240);
7887   l_desc                     VARCHAR2(240);
7888   l_uom                      VARCHAR2(3);
7889   l_vmi_flag                 NUMBER;
7890   l_vmi_auto_replenish_flag  VARCHAR2(100);
7891 
7892   l_planner_code           VARCHAR2(240);--Bug 4424426
7893 
7894 
7895   t_insert_id                lineidList        := lineidList();
7896   t_ins_line_id              lineidList        := lineidList();
7897   t_ins_pub                  publisherList     := publisherList();
7898   t_ins_pub_id               publishidList     := publishidList();
7899   t_ins_pub_site             pubsiteList       := pubsiteList();
7900   t_ins_pub_site_id          pubsiteidList     := pubsiteidList();
7901   t_ins_pub_addr             pubaddrList       := pubaddrList();
7902   t_ins_cust                 customerList      := customerList();
7903   t_ins_cust_id              custidList        := custidList();
7904   t_ins_cust_site            custsiteList      := custsiteList();
7905   t_ins_cust_site_id         custsiteidList    := custsiteidList();
7906   t_ins_cust_addr            custaddrList      := custaddrList();
7907   t_ins_supp                 supplierList      := supplierList();
7908   t_ins_supp_id              suppidList        := suppidList();
7909   t_ins_supp_site            suppsiteList      := suppsiteList();
7910   t_ins_supp_site_id         suppsiteidList    := suppsiteidList();
7911   t_ins_supp_addr            suppaddrList      := suppaddrList();
7912   t_ins_shipfrom             shipfromList      := shipfromList();
7913   t_ins_shipfrom_id          shipfromidList    := shipfromidList();
7914   t_ins_shipfrom_site        shipfromsiteList  := shipfromsiteList();
7915   t_ins_shipfrom_site_id     shipfromsidList   := shipfromsidList();
7916   t_ins_shipfrom_addr        shipfromaddrList  := shipfromaddrList();
7917   t_ins_shipto               shiptoList        := shiptoList();
7918   t_ins_shipto_id            shiptoidList      := shiptoidList();
7919   t_ins_shipto_site          shiptositeList    := shiptositeList();
7920   t_ins_shipto_site_id       shiptosidList     := shiptosidList();
7921   t_ins_shipto_party_addr    shiptopaddrList   := shiptopaddrList();
7922   t_ins_shipto_addr          shiptoaddrList    := shiptoaddrList();
7923   t_ins_end_order_pub        endordpubList     := endordpubList();
7924   t_ins_end_ord_pub_id       endordpubidList   := endordpubidList();
7925   t_ins_end_ord_pub_site     endordpubsiteList := endordpubsiteList();
7926   t_ins_end_ord_pub_site_id  endordpubsidList  := endordpubsidList();
7927   t_ins_order_type           ordertypeList     := ordertypeList();
7928   t_ins_ot_desc              otdescList        := otdescList();
7929   t_ins_end_order_type       endordertypeList  := endordertypeList();
7930   t_ins_end_ot_desc          endotdescList     := endotdescList();
7931   t_ins_bkt_type_desc        bktypedescList    := bktypedescList();
7932   t_ins_bkt_type             bktypeList        := bktypeList();
7933   t_ins_item_id              itemidList        := itemidList();
7934   t_ins_base_item_id         itemidList        := itemidList();
7935   t_ins_pri_uom              uomList           := uomList();
7936   t_ins_pri_qty              qtyList           := qtyList();
7937   t_ins_ref_uom              uomList           := uomList();
7938   t_ins_ord_num              ordernumList      := ordernumList();
7939   t_ins_rel_num              relnumList        := relnumList();
7940   t_ins_line_num             linenumList       := linenumList();
7941   t_ins_end_ord              endordList        := endordList();
7942   t_ins_end_line             endlineList       := endlineList();
7943   t_ins_end_rel              endrelList        := endrelList();
7944   t_ins_key_date             keydateList       := keydateList();
7945   t_ins_new_sched_date       newschedList      := newschedList();
7946   t_ins_ship_date            shipdateList      := shipdateList();
7947   t_ins_receipt_date         receiptdateList   := receiptdateList();
7948   t_ins_new_ord_plac_date    newordplaceList   := newordplaceList();
7949   t_ins_orig_prom_date       origpromList      := origpromList();
7950   t_ins_req_date             reqdateList       := reqdateList();
7951   /* Added for work order support */
7952   t_ins_wip_st_date          wipstdatelist     := wipstdatelist();
7953   t_ins_wip_end_date         wipenddatelist    := wipenddatelist();
7954   t_ins_uom                  uomList           := uomList();
7955   t_ins_quantity             qtyList           := qtyList();
7956   t_ins_tp_quantity          qtyList           := qtyList();
7957   t_ins_comments             commentList       := commentList();
7958   t_ins_carrier_code         carrierList       := carrierList();
7959   t_ins_bill_of_lading       billofladList     := billofladList();
7960   t_ins_tracking_number      trackingList      := trackingList();
7961   t_ins_vehicle_number       vehicleList       := vehicleList();
7962   t_ins_container_type       containerList     := containerList();
7963   t_ins_container_qty        contqtyList       := contqtyList();
7964   t_ins_serial_number        serialnumList     := serialnumList();
7965   t_ins_attach_url           attachurlList     := attachurlList();
7966   t_ins_item_desc            itemdescList      := itemdescList();
7967   t_ins_cust_item_desc       itemdescList      := itemdescList();
7968   t_ins_supp_item_desc       itemdescList      := itemdescList();
7969   t_ins_owner_item_desc      itemdescList      := itemdescList();
7970   t_ins_item_name            itemList          := itemList();
7971   t_ins_cust_item_name       itemList          := itemList();
7972   t_ins_supp_item_name       itemList          := itemList();
7973   t_ins_owner_item_name      itemList          := itemList();
7974   t_ins_base_item_name       itemList          := itemList();
7975   t_ins_version              versionList       := versionList();
7976   t_ins_designator           designatorList    := designatorList();
7977   t_ins_context           contextList       := contextList();
7978   t_ins_attribute1           attributeList     := attributeList();
7979   t_ins_attribute2           attributeList     := attributeList();
7980   t_ins_attribute3           attributeList     := attributeList();
7981   t_ins_attribute4           attributeList     := attributeList();
7982   t_ins_attribute5           attributeList     := attributeList();
7983   t_ins_attribute6           attributeList     := attributeList();
7984   t_ins_attribute7           attributeList     := attributeList();
7985   t_ins_attribute8           attributeList     := attributeList();
7986   t_ins_attribute9           attributeList     := attributeList();
7987   t_ins_attribute10          attributeList     := attributeList();
7988   t_ins_attribute11          attributeList     := attributeList();
7989   t_ins_attribute12          attributeList     := attributeList();
7990   t_ins_attribute13          attributeList     := attributeList();
7991   t_ins_attribute14          attributeList     := attributeList();
7992   t_ins_attribute15          attributeList     := attributeList();
7993   t_ins_posting_party_name   postingpartyList  := postingpartyList();
7994   t_ins_posting_party_id     numList           := numList();
7995   t_ins_vmi_flag             numlist           := numlist();
7996   t_ins_shipping_control     shipCtrlList          := shipCtrlList();
7997   t_ins_shipping_control_code     numlist          := numlist();
7998    t_ins_planner_code     plannerCode          := plannerCode();--Bug 4424426
7999 
8000 BEGIN
8001 log_debug('In replace_supdem_entries');
8002   if t_line_id is not null and t_line_id.COUNT > 0 then
8003 log_debug('Records fetched :' || t_line_id.COUNT);
8004   BEGIN
8005   log_debug('At 1');
8006       FORALL j in t_line_id.FIRST..t_line_id.LAST
8007         UPDATE msc_sup_dem_entries
8008         SET    number1 = primary_quantity
8009 	WHERE ROWID IN
8010 	      (SELECT ROWID FROM MSC_SUP_DEM_ENTRIES
8011 		WHERE  plan_id = G_PLAN_ID AND
8012                sr_instance_id = G_SR_INSTANCE_ID AND
8013                (nvl(quantity,0) <> 0 OR (Nvl(quantity,0) = 0 AND t_order_type(j) IN (G_ORDER_FORECAST, G_SUPPLY_COMMIT))) AND
8014                publisher_id = t_pub_id(j) AND
8015                publisher_site_id = t_pub_site_id(j) AND
8016                NVL(customer_id, G_NULL_STRING) = NVL(t_cust_id(j), G_NULL_STRING) AND
8017                NVL(customer_site_id, G_NULL_STRING) = NVL(t_cust_site_id(j), G_NULL_STRING) AND
8018                NVL(supplier_id, G_NULL_STRING) = NVL(t_supp_id(j), G_NULL_STRING) AND
8019                NVL(supplier_site_id, G_NULL_STRING) = NVL(t_supp_site_id(j), G_NULL_STRING) AND
8020                publisher_order_type = t_order_type(j) AND
8021                inventory_item_id = t_item_id(j) AND
8022                publisher_order_type IN (G_SALES_FORECAST,
8023 				    G_ORDER_FORECAST,
8024 				    G_SUPPLY_COMMIT,
8025 				    G_HIST_SALES,
8026 				    G_SELL_THRO_FCST,
8027 				    G_SUPPLIER_CAP,
8028 				    G_SAFETY_STOCK,
8029 				    G_INTRANSIT,
8030 				    g_replenishment,
8031 				    G_PROJ_AVAI_BAL) AND
8032                NVL(key_date, sysdate) = NVL(t_key_date(j), sysdate) AND
8033                NVL(bucket_type, G_NULL_STRING) = NVL(t_bkt_type(j), G_NULL_STRING)
8034 	 UNION ALL
8035 	       SELECT ROWID FROM MSC_SUP_DEM_ENTRIES
8036 		WHERE  plan_id = G_PLAN_ID AND
8037                sr_instance_id = G_SR_INSTANCE_ID AND
8038                (nvl(quantity,0) <> 0 OR (Nvl(quantity,0) = 0 AND t_order_type(j) IN (G_ORDER_FORECAST, G_SUPPLY_COMMIT))) AND
8039                publisher_id = t_pub_id(j) AND
8040                publisher_site_id = t_pub_site_id(j) AND
8041                NVL(customer_id, G_NULL_STRING) = NVL(t_cust_id(j), G_NULL_STRING) AND
8042                NVL(customer_site_id, G_NULL_STRING) = NVL(t_cust_site_id(j), G_NULL_STRING) AND
8043                NVL(supplier_id, G_NULL_STRING) = NVL(t_supp_id(j), G_NULL_STRING) AND
8044                NVL(supplier_site_id, G_NULL_STRING) = NVL(t_supp_site_id(j), G_NULL_STRING) AND
8045                publisher_order_type = t_order_type(j) AND
8046                inventory_item_id = t_item_id(j) AND
8047                publisher_order_type IN (G_PURCHASE_ORDER,
8048 				    G_SALES_ORDER,
8049 				    G_ASN,
8050 				    G_SHIP_RECEIPT,
8051 				    G_REQUISITION,
8052 				    G_PO_ACKNOWLEDGEMENT,
8053 				    G_ALLOC_ONHAND,
8054 				    g_unallocated_onhand,
8055                                     G_CONS_ADVICE) AND
8056                NVL(order_number, G_NULL_STRING) = NVL(t_ord_num(j), G_NULL_STRING) AND
8057                NVL(line_number, G_NULL_STRING) = NVL(t_line_num(j), G_NULL_STRING) AND
8058                NVL(release_number, G_NULL_STRING) = NVL(t_rel_num(j), G_NULL_STRING) AND
8059                NVL(end_order_number, G_NULL_STRING) = NVL(t_end_ord(j), G_NULL_STRING) AND
8060                NVL(end_order_rel_number, G_NULL_STRING) = NVL(t_end_rel(j), G_NULL_STRING) AND
8061 	       NVL(end_order_line_number, G_NULL_STRING) = NVL(t_end_line(j), G_NULL_STRING)
8062 	 UNION ALL
8063 	      SELECT ROWID FROM MSC_SUP_DEM_ENTRIES
8064 		WHERE  plan_id = G_PLAN_ID AND
8065                sr_instance_id = G_SR_INSTANCE_ID AND
8066                (nvl(quantity,0) <> 0 OR (Nvl(quantity,0) = 0 AND t_order_type(j) IN (G_ORDER_FORECAST, G_SUPPLY_COMMIT))) AND
8067                publisher_id = t_pub_id(j) AND
8068                publisher_site_id = t_pub_site_id(j) AND
8069                NVL(customer_id, G_NULL_STRING) = NVL(t_cust_id(j), G_NULL_STRING) AND
8070                NVL(customer_site_id, G_NULL_STRING) = NVL(t_cust_site_id(j), G_NULL_STRING) AND
8071                NVL(supplier_id, G_NULL_STRING) = NVL(t_supp_id(j), G_NULL_STRING) AND
8072                NVL(supplier_site_id, G_NULL_STRING) = NVL(t_supp_site_id(j), G_NULL_STRING) AND
8073                publisher_order_type = t_order_type(j) AND
8074                inventory_item_id = t_item_id(j) AND
8075 	       publisher_order_type = G_WORK_ORDER AND
8076                NVL(order_number, G_NULL_STRING) = NVL(t_ord_num(j), G_NULL_STRING)
8077 		 );
8078 
8079   log_debug('At 2');
8080       FORALL j in t_line_id.FIRST..t_line_id.LAST
8081         UPDATE msc_sup_dem_entries
8082         SET    last_refresh_number = msc_cl_refresh_s.nextval,
8083                ref_header_id = p_header_id,
8084                ref_line_id = t_line_id(j),
8085                quantity = round(nvl(t_quantity(j),0),6),
8086                tp_quantity = get_quantity(t_quantity(j), nvl(t_uom(j),'Ea'), tp_uom_code, inventory_item_id),
8087                primary_quantity = get_quantity(t_quantity(j), nvl(t_uom(j),'Ea'), primary_uom, inventory_item_id),
8088                comments = t_comments(j),
8089                key_date = t_key_date(j),
8090                -- added the following line for bug 3596556
8091                need_by_date = DECODE(t_order_type(j), G_PURCHASE_ORDER, t_key_date(j), NULL),
8092                new_schedule_date = t_new_sched_date(j),
8093                ship_date = t_ship_date(j),
8094                receipt_date = t_receipt_date(j),
8095                new_order_placement_date = t_new_ord_plac_date(j),
8096                original_promised_date = t_orig_prom_date(j),
8097                request_date = t_req_date(j),
8098                posting_party_id = t_posting_party_id(j),
8099                carrier_code = t_carrier_code(j),
8100                vehicle_number = t_vehicle_number(j),
8101                container_type = t_container_type(j),
8102                container_qty = t_container_qty(j),
8103                tracking_number = t_tracking_number(j),
8104   	       end_order_publisher_id = t_end_ord_pub_id(j),
8105                ship_to_address = t_shipto_addr(j),
8106                ship_from_party_id = t_shipfrom_id(j),
8107                ship_to_party_id = t_shipto_id(j),
8108                ship_to_party_site_id = t_shipto_site_id(j),
8109                ship_to_party_name = t_shipto(j),
8110                ship_to_party_site_name = t_shipto_site(j),
8111                ship_from_party_site_id = t_shipfrom_site_id(j),
8112                ship_from_party_name = t_shipfrom(j),
8113                ship_from_party_site_name = t_shipfrom_site(j),
8114                end_order_publisher_site_id = t_end_ord_pub_site_id(j),
8115                end_order_publisher_site_name = t_end_ord_pub_site(j),
8116                end_order_publisher_name = t_end_order_pub(j),
8117                order_number = t_ord_num(j),
8118                release_number = t_rel_num(j),
8119                line_number = t_line_num(j),
8120                end_order_number = t_end_ord(j),
8121                end_order_rel_number = t_end_rel(j),
8122                end_order_line_number = t_end_line(j),
8123                ship_from_address = t_shipfrom_addr(j),
8124                publisher_address = t_pub_addr(j),
8125                customer_address = t_cust_addr(j),
8126                supplier_address = t_supp_addr(j),
8127                bill_of_lading_number = t_bill_of_lading(j),
8128                serial_number = t_serial_number(j),
8129                attachment_url = t_attach_url(j),
8130                version = t_version(j),
8131                designator = t_designator(j),
8132                context = t_context(j),
8133  	       attribute1 = t_attribute1(j),
8134                attribute2 = t_attribute2(j),
8135                attribute3 = t_attribute3(j),
8136                attribute4 = t_attribute4(j),
8137                attribute5 = t_attribute5(j),
8138                attribute6 = t_attribute6(j),
8139                attribute7 = t_attribute7(j),
8140                attribute8 = t_attribute8(j),
8141                attribute9 = t_attribute9(j),
8142                attribute10 = t_attribute10(j),
8143                attribute11 = t_attribute11(j),
8144                attribute12 = t_attribute12(j),
8145                attribute13 = t_attribute13(j),
8146                attribute14 = t_attribute14(j),
8147                attribute15 = t_attribute15(j),
8148                posting_party_name = t_posting_party_name(j),
8149                uom_code = nvl(t_uom(j),'Ea'),
8150                last_update_date = sysdate,
8151                last_updated_by = p_user_id
8152         WHERE  ROWID IN
8153 	(SELECT ROWID FROM MSC_SUP_DEM_ENTRIES
8154 	  WHERE plan_id = G_PLAN_ID AND
8155                sr_instance_id = G_SR_INSTANCE_ID AND
8156                (nvl(quantity,0) <> 0 OR (Nvl(quantity,0) = 0 AND t_order_type(j) IN (G_ORDER_FORECAST, G_SUPPLY_COMMIT))) AND
8157                publisher_id = t_pub_id(j) AND
8158                publisher_site_id = t_pub_site_id(j) AND
8159                NVL(customer_id, G_NULL_STRING) = NVL(t_cust_id(j), G_NULL_STRING) AND
8160                NVL(customer_site_id, G_NULL_STRING) = NVL(t_cust_site_id(j), G_NULL_STRING) AND
8161                NVL(supplier_id, G_NULL_STRING) = NVL(t_supp_id(j), G_NULL_STRING) AND
8162                NVL(supplier_site_id, G_NULL_STRING) = NVL(t_supp_site_id(j), G_NULL_STRING) AND
8163                publisher_order_type = t_order_type(j) AND
8164                inventory_item_id = t_item_id(j) AND
8165                publisher_order_type IN (G_SALES_FORECAST,
8166 				        G_ORDER_FORECAST,
8167 				        G_SUPPLY_COMMIT,
8168 				        G_HIST_SALES,
8169 				        G_SELL_THRO_FCST,
8170 				        G_SUPPLIER_CAP,
8171 				        G_SAFETY_STOCK,
8172 				        G_INTRANSIT,
8173 				        g_replenishment,
8174 				        G_PROJ_AVAI_BAL) AND
8175                NVL(key_date, sysdate) = NVL(t_key_date(j), sysdate) AND
8176                NVL(bucket_type, G_NULL_STRING) = NVL(t_bkt_type(j), G_NULL_STRING)
8177        UNION ALL
8178 	SELECT ROWID FROM MSC_SUP_DEM_ENTRIES
8179 	  WHERE plan_id = G_PLAN_ID AND
8180                sr_instance_id = G_SR_INSTANCE_ID AND
8181                (nvl(quantity,0) <> 0 OR (Nvl(quantity,0) = 0 AND t_order_type(j) IN (G_ORDER_FORECAST, G_SUPPLY_COMMIT))) AND
8182                publisher_id = t_pub_id(j) AND
8183                publisher_site_id = t_pub_site_id(j) AND
8184                NVL(customer_id, G_NULL_STRING) = NVL(t_cust_id(j), G_NULL_STRING) AND
8185                NVL(customer_site_id, G_NULL_STRING) = NVL(t_cust_site_id(j), G_NULL_STRING) AND
8186                NVL(supplier_id, G_NULL_STRING) = NVL(t_supp_id(j), G_NULL_STRING) AND
8187                NVL(supplier_site_id, G_NULL_STRING) = NVL(t_supp_site_id(j), G_NULL_STRING) AND
8188                publisher_order_type = t_order_type(j) AND
8189                inventory_item_id = t_item_id(j) AND
8190                publisher_order_type IN (G_PURCHASE_ORDER,
8191 				        G_SALES_ORDER,
8192 				        G_ASN,
8193 				        G_SHIP_RECEIPT,
8194 				        G_REQUISITION,
8195 				        G_PO_ACKNOWLEDGEMENT,
8196 			decode(G_CVMI_PROFILE  , 'Y' , G_CONS_ADVICE , -1 )) AND
8197 			--Consigned CVMI Enh
8198                NVL(order_number, G_NULL_STRING) = NVL(t_ord_num(j), G_NULL_STRING) AND
8199                NVL(line_number, G_NULL_STRING) = NVL(t_line_num(j), G_NULL_STRING) AND
8200                NVL(release_number, G_NULL_STRING) = NVL(t_rel_num(j), G_NULL_STRING) AND
8201                NVL(end_order_number, G_NULL_STRING) = NVL(t_end_ord(j), G_NULL_STRING) AND
8202                NVL(end_order_rel_number, G_NULL_STRING) = NVL(t_end_rel(j), G_NULL_STRING) AND
8203 	       NVL(end_order_line_number, G_NULL_STRING) = NVL(t_end_line(j), G_NULL_STRING)
8204        UNION ALL
8205 	SELECT ROWID FROM MSC_SUP_DEM_ENTRIES
8206 	  WHERE plan_id = G_PLAN_ID AND
8207                sr_instance_id = G_SR_INSTANCE_ID AND
8208                (nvl(quantity,0) <> 0 OR (Nvl(quantity,0) = 0 AND t_order_type(j) IN (G_ORDER_FORECAST, G_SUPPLY_COMMIT))) AND
8209                publisher_id = t_pub_id(j) AND
8210                publisher_site_id = t_pub_site_id(j) AND
8211                NVL(customer_id, G_NULL_STRING) = NVL(t_cust_id(j), G_NULL_STRING) AND
8212                NVL(customer_site_id, G_NULL_STRING) = NVL(t_cust_site_id(j), G_NULL_STRING) AND
8213                NVL(supplier_id, G_NULL_STRING) = NVL(t_supp_id(j), G_NULL_STRING) AND
8214                NVL(supplier_site_id, G_NULL_STRING) = NVL(t_supp_site_id(j), G_NULL_STRING) AND
8215                publisher_order_type = t_order_type(j) AND
8216                inventory_item_id = t_item_id(j) AND
8217 	       publisher_order_type = G_WORK_ORDER AND
8218                NVL(order_number, G_NULL_STRING) = NVL(t_ord_num(j), G_NULL_STRING)
8219        UNION ALL
8220 	SELECT ROWID FROM MSC_SUP_DEM_ENTRIES
8221 	  WHERE plan_id = G_PLAN_ID AND
8222                sr_instance_id = G_SR_INSTANCE_ID AND
8223                (nvl(quantity,0) <> 0 OR (Nvl(quantity,0) = 0 AND t_order_type(j) IN (G_ORDER_FORECAST, G_SUPPLY_COMMIT))) AND
8224                publisher_id = t_pub_id(j) AND
8225                publisher_site_id = t_pub_site_id(j) AND
8226                NVL(customer_id, G_NULL_STRING) = NVL(t_cust_id(j), G_NULL_STRING) AND
8227                NVL(customer_site_id, G_NULL_STRING) = NVL(t_cust_site_id(j), G_NULL_STRING) AND
8228                NVL(supplier_id, G_NULL_STRING) = NVL(t_supp_id(j), G_NULL_STRING) AND
8229                NVL(supplier_site_id, G_NULL_STRING) = NVL(t_supp_site_id(j), G_NULL_STRING) AND
8230                publisher_order_type = t_order_type(j) AND
8231                inventory_item_id = t_item_id(j) AND
8232                publisher_order_type IN (G_ALLOC_ONHAND,
8233 				        G_UNALLOCATED_ONHAND)
8234 	       );
8235   END;
8236 	 /* sbala ADD CA */
8237 
8238   --log_debug('At 3');
8239       FOR j in t_line_id.FIRST..t_line_id.LAST LOOP
8240 	 IF SQL%BULK_ROWCOUNT(j) = 0 THEN
8241 	log_debug('j := ' ||  j);
8242             t_insert_id.EXTEND;
8243             t_ins_line_id.EXTEND;
8244             t_ins_pub.EXTEND;
8245             t_ins_pub_id.EXTEND;
8246             t_ins_pub_site.EXTEND;
8247             t_ins_pub_site_id.EXTEND;
8248             t_ins_pub_addr.EXTEND;
8249             t_ins_cust.EXTEND;
8250             t_ins_cust_id.EXTEND;
8251             t_ins_cust_site.EXTEND;
8252             t_ins_cust_site_id.EXTEND;
8253             t_ins_cust_addr.EXTEND;
8254             t_ins_supp.EXTEND;
8255             t_ins_supp_id.EXTEND;
8256             t_ins_supp_site.EXTEND;
8257             t_ins_supp_site_id.EXTEND;
8258             t_ins_supp_addr.EXTEND;
8259             t_ins_shipfrom.EXTEND;
8260             t_ins_shipfrom_id.EXTEND;
8261             t_ins_shipfrom_site.EXTEND;
8262             t_ins_shipfrom_site_id.EXTEND;
8263             t_ins_shipfrom_addr.EXTEND;
8264             t_ins_shipto.EXTEND;
8265             t_ins_shipto_id.EXTEND;
8266             t_ins_shipto_site.EXTEND;
8267             t_ins_shipto_site_id.EXTEND;
8268             t_ins_shipto_party_addr.EXTEND;
8269             t_ins_shipto_addr.EXTEND;
8270             t_ins_end_order_pub.EXTEND;
8271             t_ins_end_ord_pub_id.EXTEND;
8272             t_ins_end_ord_pub_site.EXTEND;
8273             t_ins_end_ord_pub_site_id.EXTEND;
8274             t_ins_order_type.EXTEND;
8275             t_ins_ot_desc.EXTEND;
8276             t_ins_end_order_type.EXTEND;
8277             t_ins_end_ot_desc.EXTEND;
8278             t_ins_bkt_type_desc.EXTEND;
8279             t_ins_bkt_type.EXTEND;
8280             t_ins_item_id.EXTEND;
8281             t_ins_base_item_id.EXTEND;
8282             t_ins_pri_uom.EXTEND;
8283             t_ins_pri_qty.EXTEND;
8284             t_ins_ref_uom.EXTEND;
8285             t_ins_ord_num.EXTEND;
8286             t_ins_rel_num.EXTEND;
8287             t_ins_line_num.EXTEND;
8288             t_ins_end_ord.EXTEND;
8289             t_ins_end_line.EXTEND;
8290             t_ins_end_rel.EXTEND;
8291             t_ins_key_date.EXTEND;
8292             t_ins_new_sched_date.EXTEND;
8293             t_ins_ship_date.EXTEND;
8294             t_ins_receipt_date.EXTEND;
8295             t_ins_new_ord_plac_date.EXTEND;
8296             t_ins_orig_prom_date.EXTEND;
8297             t_ins_req_date.EXTEND;
8298 	    t_ins_wip_st_date.extend;
8299             t_ins_wip_end_date.extend;
8300             t_ins_uom.EXTEND;
8301             t_ins_quantity.EXTEND;
8302             t_ins_tp_quantity.EXTEND;
8303             t_ins_comments.EXTEND;
8304             t_ins_carrier_code.EXTEND;
8305             t_ins_bill_of_lading.EXTEND;
8306             t_ins_tracking_number.EXTEND;
8307             t_ins_vehicle_number.EXTEND;
8308             t_ins_container_type.EXTEND;
8309             t_ins_container_qty.EXTEND;
8310             t_ins_serial_number.EXTEND;
8311             t_ins_attach_url.EXTEND;
8312             t_ins_item_desc.EXTEND;
8313             t_ins_cust_item_desc.EXTEND;
8314             t_ins_supp_item_desc.EXTEND;
8315             t_ins_owner_item_desc.EXTEND;
8316             t_ins_item_name.EXTEND;
8317             t_ins_cust_item_name.EXTEND;
8318             t_ins_supp_item_name.EXTEND;
8319             t_ins_owner_item_name.EXTEND;
8320             t_ins_base_item_name.EXTEND;
8321             t_ins_version.EXTEND;
8322             t_ins_designator.EXTEND;
8323             t_ins_context.EXTEND;
8324 	    t_ins_attribute1.EXTEND;
8325 	    t_ins_attribute2.EXTEND;
8326 	    t_ins_attribute3.EXTEND;
8327 	    t_ins_attribute4.EXTEND;
8328 	    t_ins_attribute5.EXTEND;
8329 	    t_ins_attribute6.EXTEND;
8330 	    t_ins_attribute7.EXTEND;
8331 	    t_ins_attribute8.EXTEND;
8332 	    t_ins_attribute9.EXTEND;
8333             t_ins_attribute10.EXTEND;
8334 	    t_ins_attribute11.EXTEND;
8335 	    t_ins_attribute12.EXTEND;
8336 	    t_ins_attribute13.EXTEND;
8337 	    t_ins_attribute14.EXTEND;
8338 	    t_ins_attribute15.EXTEND;
8339             t_ins_posting_party_name.EXTEND;
8340             t_ins_posting_party_id.EXTEND;
8341 	    t_ins_vmi_flag.extend;
8342 	    t_ins_shipping_control.extend;
8343  	    t_ins_shipping_control_code.extend;
8344 	    t_ins_planner_code.extend; --Bug 4424426
8345 
8346             t_insert_id(t_insert_id.COUNT)                := j;
8347             t_ins_line_id(t_insert_id.COUNT)              := t_line_id(j);
8348             t_ins_pub(t_insert_id.COUNT)                  := t_pub(j);
8349             t_ins_pub_id(t_insert_id.COUNT)               := t_pub_id(j);
8350             t_ins_pub_site(t_insert_id.COUNT)             := t_pub_site(j);
8351             t_ins_pub_site_id(t_insert_id.COUNT)          := t_pub_site_id(j);
8352             t_ins_pub_addr(t_insert_id.COUNT)             := t_pub_addr(j);
8353             t_ins_cust(t_insert_id.COUNT)                 := t_cust(j);
8354             t_ins_cust_id(t_insert_id.COUNT)              := t_cust_id(j);
8355             t_ins_cust_site(t_insert_id.COUNT)            := t_cust_site(j);
8356             t_ins_cust_site_id(t_insert_id.COUNT)         := t_cust_site_id(j);
8357             t_ins_cust_addr(t_insert_id.COUNT)            := t_cust_addr(j);
8358             t_ins_supp(t_insert_id.COUNT)                 := t_supp(j);
8359             t_ins_supp_id(t_insert_id.COUNT)              := t_supp_id(j);
8360             t_ins_supp_site(t_insert_id.COUNT)            := t_supp_site(j);
8361             t_ins_supp_site_id(t_insert_id.COUNT)         := t_supp_site_id(j);
8362             t_ins_supp_addr(t_insert_id.COUNT)            := t_supp_addr(j);
8363             t_ins_shipfrom(t_insert_id.COUNT)             := t_shipfrom(j);
8364             t_ins_shipfrom_id(t_insert_id.COUNT)          := t_shipfrom_id(j);
8365             t_ins_shipfrom_site(t_insert_id.COUNT)        := t_shipfrom_site(j);
8366             t_ins_shipfrom_site_id(t_insert_id.COUNT)     := t_shipfrom_site_id(j);
8367             t_ins_shipfrom_addr(t_insert_id.COUNT)        := t_shipfrom_addr(j);
8368             t_ins_shipto(t_insert_id.COUNT)               := t_shipto(j);
8369             t_ins_shipto_id(t_insert_id.COUNT)            := t_shipto_id(j);
8370             t_ins_shipto_site(t_insert_id.COUNT)          := t_shipto_site(j);
8371             t_ins_shipto_site_id(t_insert_id.COUNT)       := t_shipto_site_id(j);
8372             t_ins_shipto_party_addr(t_insert_id.COUNT)    := t_shipto_party_addr(j);
8373             t_ins_shipto_addr(t_insert_id.COUNT)          := t_shipto_addr(j);
8374             t_ins_end_order_pub(t_insert_id.COUNT)        := t_end_order_pub(j);
8375             t_ins_end_ord_pub_id(t_insert_id.COUNT)       := t_end_ord_pub_id(j);
8376             t_ins_end_ord_pub_site(t_insert_id.COUNT)     := t_end_ord_pub_site(j);
8377             t_ins_end_ord_pub_site_id(t_insert_id.COUNT)  := t_end_ord_pub_site_id(j);
8378             t_ins_order_type(t_insert_id.COUNT)           := t_order_type(j);
8379             t_ins_ot_desc(t_insert_id.COUNT)              := t_ot_desc(j);
8380             t_ins_end_order_type(t_insert_id.COUNT)       := t_end_order_type(j);
8381             t_ins_end_ot_desc(t_insert_id.COUNT)          := t_end_ot_desc(j);
8382             t_ins_bkt_type_desc(t_insert_id.COUNT)        := t_bkt_type_desc(j);
8383             t_ins_bkt_type(t_insert_id.COUNT)             := t_bkt_type(j);
8384 	    log_debug('Bkt Type = ' || t_ins_bkt_type(t_insert_id.COUNT));
8385             t_ins_item_id(t_insert_id.COUNT)              := t_item_id(j);
8386             t_ins_ord_num(t_insert_id.COUNT)              := t_ord_num(j);
8387             t_ins_rel_num(t_insert_id.COUNT)              := t_rel_num(j);
8388             t_ins_line_num(t_insert_id.COUNT)             := t_line_num(j);
8389             t_ins_end_ord(t_insert_id.COUNT)              := t_end_ord(j);
8390             t_ins_end_line(t_insert_id.COUNT)             := t_end_line(j);
8391             t_ins_end_rel(t_insert_id.COUNT)              := t_end_rel(j);
8392             t_ins_key_date(t_insert_id.COUNT)             := t_key_date(j);
8393             t_ins_new_sched_date(t_insert_id.COUNT)       := t_new_sched_date(j);
8394             t_ins_ship_date(t_insert_id.COUNT)            := t_ship_date(j);
8395             t_ins_receipt_date(t_insert_id.COUNT)         := t_receipt_date(j);
8396             t_ins_new_ord_plac_date(t_insert_id.COUNT)    := t_new_ord_plac_date(j);
8397             t_ins_orig_prom_date(t_insert_id.COUNT)       := t_orig_prom_date(j);
8398             t_ins_req_date(t_insert_id.COUNT)             := t_req_date(j);
8399 	    /* Added for work order support */
8400             t_ins_wip_st_date(t_insert_id.COUNT)          := t_wip_st_date(j);
8401             t_ins_wip_end_date(t_insert_id.COUNT)         := t_wip_end_date(j);
8402             t_ins_uom(t_insert_id.COUNT)                  := nvl(t_uom(j),'Ea');
8403             t_ins_quantity(t_insert_id.COUNT)             := t_quantity(j);
8404             t_ins_comments(t_insert_id.COUNT)             := t_comments(j);
8405             t_ins_carrier_code(t_insert_id.COUNT)         := t_carrier_code(j);
8406             t_ins_bill_of_lading(t_insert_id.COUNT)       := t_bill_of_lading(j);
8407             t_ins_tracking_number(t_insert_id.COUNT)      := t_tracking_number(j);
8408             t_ins_vehicle_number(t_insert_id.COUNT)       := t_vehicle_number(j);
8409             t_ins_container_type(t_insert_id.COUNT)       := t_container_type(j);
8410             t_ins_container_qty(t_insert_id.COUNT)        := t_container_qty(j);
8411             t_ins_serial_number(t_insert_id.COUNT)        := t_serial_number(j);
8412             t_ins_attach_url(t_insert_id.COUNT)           := t_attach_url(j);
8413             t_ins_version(t_insert_id.COUNT)              := t_version(j);
8414             t_ins_designator(t_insert_id.COUNT)           := t_designator(j);
8415             t_ins_context(t_insert_id.COUNT)              := t_context(j);
8416             t_ins_attribute1(t_insert_id.COUNT)           := t_attribute1(j);
8417             t_ins_attribute2(t_insert_id.COUNT)           := t_attribute2(j);
8418             t_ins_attribute3(t_insert_id.COUNT)           := t_attribute3(j);
8419             t_ins_attribute4(t_insert_id.COUNT)           := t_attribute4(j);
8420             t_ins_attribute5(t_insert_id.COUNT)           := t_attribute5(j);
8421             t_ins_attribute6(t_insert_id.COUNT)           := t_attribute6(j);
8422             t_ins_attribute7(t_insert_id.COUNT)           := t_attribute7(j);
8423             t_ins_attribute8(t_insert_id.COUNT)           := t_attribute8(j);
8424             t_ins_attribute9(t_insert_id.COUNT)           := t_attribute9(j);
8425             t_ins_attribute10(t_insert_id.COUNT)          := t_attribute10(j);
8426             t_ins_attribute11(t_insert_id.COUNT)          := t_attribute11(j);
8427             t_ins_attribute12(t_insert_id.COUNT)          := t_attribute12(j);
8428             t_ins_attribute13(t_insert_id.COUNT)          := t_attribute13(j);
8429             t_ins_attribute14(t_insert_id.COUNT)          := t_attribute14(j);
8430             t_ins_attribute15(t_insert_id.COUNT)          := t_attribute15(j);
8431             t_ins_posting_party_name(t_insert_id.COUNT)   := t_posting_party_name(j);
8432             t_ins_posting_party_id(t_insert_id.COUNT)     := t_posting_party_id(j);
8433 
8434 	    --===========================================================
8435 	    -- Determine if item is VMI enabled for requisitions,
8436 	    -- purchase orders, allocated onhand, shipment receipts,
8437 	    -- and ASN's
8438 	    --===========================================================
8439 	log_debug('At 4');
8440 	    l_vmi_flag := 0;
8441 	    l_vmi_auto_replenish_flag := 'N';
8442 	    IF (t_ins_order_type(t_insert_id.COUNT) in (g_purchase_order,
8443 					g_requisition,
8444 					g_alloc_onhand,
8445 					g_ship_receipt,
8446 					G_ASN)) THEN
8447 	       OPEN c_vmi_item(t_supp(j),
8448 			       t_supp_site(j),
8449 			       t_cust_site(j),
8450 			       t_item_id(j));
8451 	       FETCH c_vmi_item
8452 		 INTO l_vmi_flag,
8453 		 l_vmi_auto_replenish_flag;
8454 
8455 	       CLOSE c_vmi_item;
8456 
8457 	       IF (l_vmi_flag = 1)THEN
8458 		  t_ins_vmi_flag(t_insert_id.COUNT) := 1;
8459 		ELSE
8460 		  t_ins_vmi_flag(t_insert_id.COUNT) := NULL;
8461 	       END IF;
8462 	     ELSE
8463 	       t_ins_vmi_flag(t_insert_id.COUNT) := NULL;
8464 	    END IF;
8465 
8466 	log_debug('At 5');
8467             --==========================================================================
8468             -- Obtain master item information
8469             --==========================================================================
8470             select item_name,
8471                    description
8472             into   l_item_name,
8473                    l_desc
8474             from   msc_items
8475             where  inventory_item_id = t_item_id(j);
8476 
8477             t_ins_item_desc(t_insert_id.COUNT) := l_desc;
8478             t_ins_item_name(t_insert_id.COUNT) := l_item_name;
8479 
8480             --==========================================================================
8481             -- Obtain owner item information
8482             --==========================================================================
8483             BEGIN
8484                  select msi.item_name,
8485                        msi.description,
8486                        msi.uom_code,
8487                        msi.base_item_id,
8488                        itm.item_name,
8489 		       msi.planner_code--Bug 4424426
8490                 into   l_item_name,
8491                        l_desc,
8492                        l_uom,
8493                        l_base_item_id,
8494                        l_base_item_name,
8495 		       l_planner_code--Bug 4424426
8496                 from   msc_system_items msi,
8497                        msc_items itm,
8498                        msc_trading_partners part,
8499                        msc_trading_partner_maps map
8500                 where  msi.inventory_item_id = t_item_id(j) and
8501                        msi.organization_id = part.sr_tp_id and
8502                        msi.sr_instance_id = part.sr_instance_id and
8503                        msi.plan_id = -1 and
8504                        itm.inventory_item_id (+)= msi.base_item_id and
8505                        part.partner_id = map.tp_key and
8506                        map.map_type = 2 and
8507                        map.company_key = t_pub_site_id(j) and
8508                        nvl(part.company_id,1) = t_pub_id(j);
8509             EXCEPTION
8510               WHEN NO_DATA_FOUND THEN
8511 		   open publisher_is_supplier_c(
8512 			  t_item_id(j),
8513                         t_cust_site_id(j),
8514                         t_pub_id(j),
8515                         t_pub_site_id(j)
8516                       );
8517                  fetch publisher_is_supplier_c
8518                  into  l_item_name,
8519                        l_desc,
8520                        l_uom,
8521                        l_base_item_id,
8522                        l_base_item_name,
8523 		       l_planner_code;--Bug 4424426
8524 
8525                  if publisher_is_supplier_c%NOTFOUND then
8526                    close publisher_is_supplier_c;
8527                    BEGIN
8528                       select distinct mic.customer_item_name,
8529                              mic.description,
8530                              mic.uom_code,
8531                              to_number(null),
8532                              to_char(null),
8533 			     mic.planner_code--Bug 4424426
8534                       into   l_item_name,
8535                              l_desc,
8536                              l_uom,
8537                              l_base_item_id,
8538                              l_base_item_name,
8539 			     l_planner_code--Bug 4424426
8540                       from   msc_item_customers mic,
8541                              msc_trading_partner_maps map,
8542                              msc_trading_partner_maps map1,
8543                              msc_company_relationships r
8544                       where  mic.inventory_item_id = t_item_id(j) and
8545                              mic.plan_id = -1 and
8546                              mic.customer_id = map.tp_key and
8547 			     --NVL(mic.customer_site_id, map1.tp_key) = map1.tp_key and
8548 			     mic.customer_site_id = map1.tp_key and
8549                              map.map_type = 1 and
8550                              map.company_key = r.relationship_id and
8551                              r.relationship_type = 1 and
8552                              r.subject_id = 1 and
8553                              r.object_id = t_pub_id(j) and
8554                              map1.map_type = 3 and
8555                              map1.company_key = t_pub_site_id(j);
8556                     EXCEPTION
8557                       WHEN NO_DATA_FOUND THEN
8558                         l_item_name := null;
8559                         l_base_item_id := null;
8560                         l_base_item_name := null;
8561 			l_planner_code := null;--Bug 4424426
8562                         l_desc      := null;
8563                         --l_uom       := nvl(t_uom(j),'Ea');
8564                         begin
8565 			   select msi.uom_code,
8566 	                          msi.base_item_id,
8567                                   itm.item_name
8568 			   into   l_uom,
8569 				  l_base_item_id,
8570 				  l_base_item_name
8571 			   from   msc_system_items msi,
8572 	                          msc_items itm,
8573 			          msc_trading_partners part,
8574                                   msc_trading_partner_maps map
8575                            where  itm.inventory_item_id (+)=
8576 					msi.base_item_id and
8577                                   msi.inventory_item_id = t_item_id(j) and
8578                                   msi.organization_id = part.sr_tp_id and
8579                                   msi.sr_instance_id = part.sr_instance_id and
8580                                   msi.plan_id = -1 and
8581                                   part.partner_id = map.tp_key and
8582                                   map.map_type = 2 and
8583 			          map.company_key = Decode(t_supp_id(j),
8584 						      t_pub_id(j), t_cust_site_id(j),
8585 						      t_supp_site_id(j)) and
8586 			          nvl(part.company_id,1) = Decode(t_supp_id(j),
8587 							     t_pub_id(j), t_cust_id(j),
8588 							     t_supp_id(j));
8589 			exception
8590 			   when others then
8591 			      l_uom := 'Ea';
8592 			end;
8593                     END;
8594                  else
8595                    close publisher_is_supplier_c;
8596                  end if;
8597             END;
8598             t_ins_owner_item_name(t_insert_id.COUNT) := l_item_name;
8599             t_ins_owner_item_desc(t_insert_id.COUNT) := l_desc;
8600             t_ins_pri_uom(t_insert_id.COUNT)         := l_uom; --NVL(l_uom, nvl(t_uom(j),'Ea'));
8601 
8602             t_ins_base_item_name(t_insert_id.COUNT) := l_base_item_name;
8603             t_ins_base_item_id(t_insert_id.COUNT) := l_base_item_id;
8604 
8605 	     t_ins_planner_code(t_insert_id.COUNT) := l_planner_code; --Bug 4424426
8606 
8607 	     log_debug('Planner Code = ' || l_planner_code);--Bug 4424426
8608 
8609 
8610             if t_ins_order_type(t_insert_id.COUNT) NOT IN (G_UNALLOCATED_ONHAND, g_safety_stock, g_proj_avai_bal) then
8611               --==================================================================================
8612               --Obtain customer item information
8613               --==================================================================================
8614               BEGIN
8615                 select msi.item_name,
8616                        msi.description,
8617                        msi.uom_code
8618                 into   l_item_name,
8619                        l_desc,
8620                        l_uom
8621                 from   msc_system_items msi,
8622                        msc_trading_partners part,
8623                        msc_trading_partner_maps map
8624                 where  msi.plan_id = -1 and
8625                        msi.inventory_item_id = t_item_id(j) and
8626                        msi.organization_id = part.sr_tp_id and
8627                        msi.sr_instance_id = part.sr_instance_id and
8628                        part.partner_id = map.tp_key and
8629                        map.map_type = 2 and
8630                        map.company_key = nvl(t_cust_site_id(j), t_pub_site_id(j))  and
8631                        nvl(part.company_id,1) = nvl(t_cust_id(j), t_pub_id(j));
8632               EXCEPTION
8633                 WHEN NO_DATA_FOUND THEN
8634                   BEGIN
8635                     select distinct mic.customer_item_name,
8636                            mic.description,
8637                            mic.uom_code
8638                     into   l_item_name,
8639                            l_desc,
8640                            l_uom
8641                     from   msc_item_customers mic,
8642                            msc_trading_partner_maps map,
8643                            msc_trading_partner_maps map1,
8644                            msc_company_relationships r
8645                     where  mic.inventory_item_id = t_item_id(j) and
8646                            mic.plan_id = -1 and
8647                            mic.customer_id = map.tp_key and
8648 		           --NVL(mic.customer_site_id, map1.tp_key) = map1.tp_key and
8649 		           mic.customer_site_id = map1.tp_key and
8650                            map.map_type = 1 and
8651                            map.company_key = r.relationship_id and
8652                            r.relationship_type = 1 and
8653                            r.subject_id = 1 and
8654                            r.object_id = nvl(t_cust_id(j), t_pub_id(j)) and
8655                            map1.map_type = 3 and
8656                            map1.company_key = nvl(t_cust_site_id(j), t_pub_site_id(j));
8657                   EXCEPTION
8658                     WHEN NO_DATA_FOUND THEN
8659                       l_item_name := null;
8660                       l_desc := null;
8661                       l_uom := null;
8662                   END;
8663               END;
8664               t_ins_cust_item_name(t_insert_id.COUNT) := l_item_name;
8665               t_ins_cust_item_desc(t_insert_id.COUNT) := l_desc;
8666 
8667               if t_cust_id(j) <> t_pub_id(j) then
8668                  --t_ins_ref_uom(t_insert_id.COUNT) := NVL(l_uom, t_uom(j));
8669                  t_ins_ref_uom(t_insert_id.COUNT) := NVL(l_uom, t_ins_pri_uom(t_insert_id.COUNT));
8670               end if;
8671 
8672               --=============================================================================
8673               -- Obtain supplier item information
8674               --=============================================================================
8675               BEGIN
8676                 select msi.item_name,
8677                        msi.description,
8678                        msi.uom_code
8679                 into   l_item_name,
8680                        l_desc,
8681                        l_uom
8682                 from   msc_system_items msi,
8683                        msc_trading_partners part,
8684                        msc_trading_partner_maps map
8685                 where  msi.plan_id = -1 and
8686                        msi.inventory_item_id = t_item_id(j) and
8687                        msi.organization_id = part.sr_tp_id and
8688                        msi.sr_instance_id = part.sr_instance_id and
8689                        part.partner_id = map.tp_key and
8690                        map.map_type = 2 and
8691                        map.company_key = nvl(t_supp_site_id(j), t_pub_site_id(j)) and
8692                        nvl(part.company_id,1) = nvl(t_supp_id(j), t_pub_id(j)) ;
8693               EXCEPTION
8694                 WHEN NO_DATA_FOUND THEN
8695                   OPEN supplier_item_c (
8696                          t_item_id(j),
8697                          t_cust_site_id(j),
8698                          t_pub_id(j),
8699                          t_pub_site_id(j),
8700                          t_supp_id(j),
8701                          t_supp_site_id(j)
8702                        );
8703                   FETCH supplier_item_c
8704                   INTO  l_item_name,
8705                         l_desc,
8706                         l_uom;
8707 
8708                   IF supplier_item_c%NOTFOUND then
8709                     l_item_name := null;
8710                     l_desc := null;
8711                     l_uom := null;
8712                   END IF;
8713 
8714                   CLOSE supplier_item_c;
8715               END;
8716               t_ins_supp_item_name(t_insert_id.COUNT) := l_item_name;
8717               t_ins_supp_item_desc(t_insert_id.COUNT) := l_desc;
8718 
8719               if t_supp_id(j) <> t_pub_id(j) then
8720                  --t_ins_ref_uom(t_insert_id.COUNT) := NVL(l_uom, t_uom(j));
8721                  t_ins_ref_uom(t_insert_id.COUNT) := NVL(l_uom, t_ins_pri_uom(t_insert_id.COUNT));
8722               end if;
8723 
8724             END IF; --if t_ins_order_type <> Unalloc
8725 
8726             --================================================================
8727             --Obtain the tp uom, primary quantity and tp quantity
8728             --================================================================
8729 
8730             msc_x_util.get_uom_conversion_rates(t_uom(j),
8731                                                 t_ins_pri_uom(t_insert_id.COUNT),
8732                                                 t_item_id(j),
8733                                                 l_conversion_found,
8734                                                 l_conversion_rate);
8735             IF l_conversion_found THEN
8736               t_ins_pri_qty(t_insert_id.COUNT) := round(t_quantity(j)*l_conversion_rate, 6);
8737             ELSE
8738               t_ins_pri_qty(t_insert_id.COUNT) := round(t_quantity(j), 6);
8739             END IF;
8740 
8741             IF t_ins_order_type(t_insert_id.COUNT) NOT IN (g_unallocated_onhand, g_safety_stock, g_proj_avai_bal) THEN
8742               msc_x_util.get_uom_conversion_rates(t_uom(j),
8743                                                 t_ins_ref_uom(t_insert_id.COUNT),
8744                                                 t_item_id(j),
8745                                                 l_conversion_found,
8746                                                 l_conversion_rate);
8747               IF l_conversion_found THEN
8748                 t_ins_tp_quantity(t_insert_id.COUNT) := round(t_quantity(j)*l_conversion_rate, 6);
8749               ELSE
8750                 t_ins_tp_quantity(t_insert_id.COUNT) := round(t_quantity(j), 6);
8751               END IF;
8752 
8753             END IF; --t_ins_order_type <> Unalloc
8754 
8755        -- jguo: added code starts here
8756 
8757        IF t_ins_order_type(t_insert_id.COUNT) IN ( G_PURCHASE_ORDER
8758                                                  , G_ORDER_FORECAST
8759                                                  , G_REQUISITION
8760                                                  , G_SUPPLY_COMMIT
8761                                                  , G_NEGOTIATED_CAPACITY
8762                                                  , G_PO_ACKNOWLEDGEMENT
8763                                                  , G_SALES_ORDER
8764                                                  , G_SHIP_RECEIPT
8765                                                  , G_ASN
8766                                                  ) THEN
8767 		  IF ((t_ins_supp_id (t_insert_id.COUNT) = 1) OR -- if OEM is supplier or supplier=publisher
8768 				(t_ins_supp_id (t_insert_id.COUNT) = t_ins_pub_id (t_insert_id.COUNT))) THEN --- Bug #6274985
8769         OPEN c_shipping_control_meaning (
8770 		     MSC_X_UTIL.GET_SHIPPING_CONTROL_ID
8771              ( NVL(t_ins_cust_id(t_insert_id.COUNT), t_ins_pub_id(t_insert_id.COUNT))
8772              , NVL(t_ins_cust_site_id(t_insert_id.COUNT), t_ins_pub_site_id(t_insert_id.COUNT))
8773              , NVL(t_ins_supp_id(t_insert_id.COUNT), t_ins_pub_id(t_insert_id.COUNT))
8774              , NVL(t_ins_supp_site_id(t_insert_id.COUNT), t_ins_pub_site_id(t_insert_id.COUNT))
8775              )
8776            );
8777            FETCH c_shipping_control_meaning INTO t_ins_shipping_control(t_insert_id.COUNT),
8778 						 t_ins_shipping_control_code(t_insert_id.COUNT);
8779            CLOSE c_shipping_control_meaning;
8780          END IF;
8781        END IF;
8782 
8783       -- jguo: added code ends here
8784 
8785           END IF;
8786         END LOOP;
8787       end if;
8788 
8789       log_debug('Before Insert');
8790       if t_insert_id IS NOT NULL and t_insert_id.COUNT > 0 THEN
8791 	 log_debug('At 6' || ' t_insert_id.COUNT := ' || t_insert_id.COUNT);
8792         FORALL i in t_insert_id.FIRST..t_insert_id.LAST
8793 
8794           INSERT INTO msc_sup_dem_entries (
8795            ref_header_id,
8796            ref_line_id,
8797            transaction_id,
8798            plan_id,
8799            sr_instance_id,
8800            publisher_name,
8801            publisher_id,
8802            publisher_site_name,
8803            publisher_site_id,
8804            publisher_address,
8805            customer_name,
8806            customer_id,
8807            customer_site_name,
8808            customer_site_id,
8809            customer_address,
8810            supplier_name,
8811            supplier_id,
8812            supplier_site_name,
8813            supplier_site_id,
8814            supplier_address,
8815            ship_from_party_name,
8816            ship_from_party_id,
8817            ship_from_party_site_name,
8818            ship_from_party_site_id,
8819            ship_from_address,
8820            ship_to_party_name,
8821            ship_to_party_id,
8822            ship_to_party_site_name,
8823            ship_to_party_site_id,
8824            ship_to_address,
8825            end_order_publisher_name,
8826            end_order_publisher_id,
8827            end_order_publisher_site_name,
8828            end_order_publisher_site_id,
8829            publisher_order_type,
8830            publisher_order_type_desc,
8831            end_order_type,
8832 	   end_order_type_desc,
8833            tp_order_type_desc,
8834            bucket_type_desc,
8835            bucket_type,
8836            inventory_item_id,
8837            primary_uom,
8838            primary_quantity,
8839            tp_uom_code,
8840            order_number,
8841            release_number,
8842            line_number,
8843            end_order_number,
8844            end_order_line_number,
8845            end_order_rel_number,
8846            key_date,
8847            need_by_date, -- bug 3596556
8848            new_schedule_date,
8849            ship_date,
8850            receipt_date,
8851            new_order_placement_date,
8852            original_promised_date,
8853 	   request_date,
8854 	   /* Added for work order support */
8855            wip_start_date,
8856            wip_end_date,
8857            uom_code,
8858            quantity,
8859            tp_quantity,
8860            comments,
8861            carrier_code,
8862            bill_of_lading_number,
8863            tracking_number,
8864            vehicle_number,
8865            container_type,
8866            container_qty,
8867            serial_number,
8868            attachment_url,
8869            last_refresh_number,
8870            posting_party_name,
8871            posting_party_id,
8872            created_by,
8873            creation_date,
8874            last_updated_by,
8875            last_update_date,
8876            item_name,
8877            owner_item_name,
8878            customer_item_name,
8879            supplier_item_name,
8880            item_description,
8881            customer_item_description,
8882            supplier_item_description,
8883            owner_item_description,
8884            version,
8885            designator,
8886 	   context,
8887 	   vmi_flag,
8888            attribute1,
8889            attribute2,
8890            attribute3,
8891            attribute4,
8892            attribute5,
8893            attribute6,
8894            attribute7,
8895            attribute8,
8896            attribute9,
8897            attribute10,
8898            attribute11,
8899            attribute12,
8900            attribute13,
8901            attribute14,
8902            attribute15,
8903 	   base_item_id,
8904            base_item_name
8905            , shipping_control
8906            , shipping_control_code
8907 	   ,planner_code--Bug 4424426
8908           ) VALUES (
8909            p_header_id,
8910            t_ins_line_id(i),
8911            msc_sup_dem_entries_s.nextval,
8912            G_PLAN_ID,
8913            G_SR_INSTANCE_ID,
8914            t_ins_pub(i),
8915            t_ins_pub_id(i),
8916            t_ins_pub_site(i),
8917            t_ins_pub_site_id(i),
8918            t_ins_pub_addr(i),
8919            t_ins_cust(i),
8920            t_ins_cust_id(i),
8921            t_ins_cust_site(i),
8922            t_ins_cust_site_id(i),
8923            t_ins_cust_addr(i),
8924            t_ins_supp(i),
8925            t_ins_supp_id(i),
8926            t_ins_supp_site(i),
8927            t_ins_supp_site_id(i),
8928            t_ins_supp_addr(i),
8929            t_ins_shipfrom(i),
8930            t_ins_shipfrom_id(i),
8931            t_ins_shipfrom_site(i),
8932            t_ins_shipfrom_site_id(i),
8933            t_ins_shipfrom_addr(i),
8934            t_ins_shipto(i),
8935            t_ins_shipto_id(i),
8936            t_ins_shipto_site(i),
8937            t_ins_shipto_site_id(i),
8938            t_ins_shipto_addr(i),
8939            t_ins_end_order_pub(i),
8940            t_ins_end_ord_pub_id(i),
8941            t_ins_end_ord_pub_site(i),
8942            t_ins_end_ord_pub_site_id(i),
8943            t_ins_order_type(i),
8944            t_ins_ot_desc(i),
8945            t_ins_end_order_type(i),
8946         t_ins_end_ot_desc(i),
8947            t_ins_end_ot_desc(i),
8948            t_ins_bkt_type_desc(i),
8949            t_ins_bkt_type(i),
8950            t_ins_item_id(i),
8951            t_ins_pri_uom(i),
8952            t_ins_pri_qty(i),
8953            t_ins_ref_uom(i),
8954            t_ins_ord_num(i),
8955            t_ins_rel_num(i),
8956            t_ins_line_num(i),
8957            t_ins_end_ord(i),
8958            t_ins_end_line(i),
8959            t_ins_end_rel(i),
8960            t_ins_key_date(i),
8961            DECODE(t_ins_order_type(i), G_PURCHASE_ORDER, t_ins_key_date(i), NULL), -- need_by_date bug 3596556
8962            t_ins_new_sched_date(i),
8963            t_ins_ship_date(i),
8964            t_ins_receipt_date(i),
8965            t_ins_new_ord_plac_date(i),
8966            t_ins_orig_prom_date(i),
8967 	   t_ins_req_date(i),
8968 	   /* Added for Work order support */
8969            Nvl(t_ins_wip_st_date(i), t_ins_wip_end_date(i)),
8970            t_ins_wip_end_date(i),
8971            t_ins_uom(i),
8972            nvl(t_ins_quantity(i),0),
8973            t_ins_tp_quantity(i),
8974            t_ins_comments(i),
8975            t_ins_carrier_code(i),
8976            t_ins_bill_of_lading(i),
8977            t_ins_tracking_number(i),
8978            t_ins_vehicle_number(i),
8979            t_ins_container_type(i),
8980            t_ins_container_qty(i),
8981            t_ins_serial_number(i),
8982            t_ins_attach_url(i),
8983            msc_cl_refresh_s.nextval,
8984            t_posting_party_name(i),
8985            t_posting_party_id(i),
8986            p_user_id,
8987            sysdate,
8988            p_user_id,
8989            sysdate,
8990            t_ins_item_name(i),
8991            t_ins_owner_item_name(i),
8992            t_ins_cust_item_name(i),
8993            t_ins_supp_item_name(i),
8994            nvl(t_ins_item_desc(i), t_ins_owner_item_desc(i)),
8995            t_ins_cust_item_desc(i),
8996            t_ins_supp_item_desc(i),
8997            t_ins_owner_item_desc(i),
8998            t_ins_version(i),
8999            t_ins_designator(i),
9000 	   t_ins_context(i),
9001 	   t_ins_vmi_flag(i),
9002 	   t_ins_attribute1(i),
9003            t_ins_attribute2(i),
9004            t_ins_attribute3(i),
9005            t_ins_attribute4(i),
9006            t_ins_attribute5(i),
9007            t_ins_attribute6(i),
9008            t_ins_attribute7(i),
9009            t_ins_attribute8(i),
9010            t_ins_attribute9(i),
9011            t_ins_attribute10(i),
9012            t_ins_attribute11(i),
9013            t_ins_attribute12(i),
9014            t_ins_attribute13(i),
9015            t_ins_attribute14(i),
9016            t_ins_attribute15(i),
9017            t_ins_base_item_id(i),
9018 	   t_ins_base_item_name(i)
9019            , t_ins_shipping_control(i)
9020            , t_ins_shipping_control_code(i)
9021 	   , t_ins_planner_code(i)--Bug 4424426
9022           );
9023     end if;
9024 
9025     --commit;
9026 
9027 END replace_supdem_entries;
9028 
9029 
9030 PROCEDURE change_date_format (
9031   p_string IN OUT NOCOPY VARCHAR2
9032 ) IS
9033  tmpDate DATE;
9034 BEGIN
9035   SELECT to_date(p_string, 'YYYYMMDD HH24MISS')
9036   INTO   tmpDate
9037   FROM   dual;
9038 
9039   SELECT to_char(tmpDate, 'DD/MM/YYYY HH24:MI:SS')
9040   INTO   p_string
9041   FROM   dual;
9042 
9043 EXCEPTION when others then
9044    LOG_MESSAGE('Error in msc_sce_loads_pkg.change_date_format');
9045    LOG_MESSAGE(SQLERRM);
9046 
9047 END change_date_format;
9048 
9049 
9050 PROCEDURE LOG_MESSAGE(
9051     p_string IN VARCHAR2
9052 ) IS
9053 BEGIN
9054   IF fnd_global.conc_request_id > 0 THEN
9055     FND_FILE.PUT_LINE(FND_FILE.LOG, p_string);
9056   ELSE
9057     --DBMS_OUTPUT.PUT_LINE( p_string);
9058     null;
9059   END IF;
9060 END LOG_MESSAGE;
9061 
9062 
9063 PROCEDURE POST_PROCESS(
9064   p_header_id IN NUMBER
9065 ) IS
9066 
9067   t_pri_qty           qtyList;
9068   t_tp_qty            qtyList;
9069   t_number1           qtyList;
9070   t_item_id           itemidList;
9071   t_end_order_num     endordList;
9072   t_end_ord_rel_num   endrelList;
9073   t_end_ord_line_num  endlineList;
9074   t_end_order_num1    endordList;
9075   t_end_ord_rel_num1  endrelList;
9076   t_end_ord_line_num1 endlineList;
9077   t_extract_date      keydateList;
9078   t_pub_id            publishidList;
9079   t_pub_site_id       pubsiteidList;
9080   t_supp_id           suppidList;
9081   t_supp_site_id      suppsiteList;
9082   t_cust_id           custidList;
9083   t_cust_site_id      custsiteidList;
9084   t_last_update_date  lastupdatedateList;  --Fix for bug 5599903
9085   t_last_updated_by   lastupdatedbyList;
9086   t_sync_id           syncList; --- Fix for bug 6147298
9087   t_del_qty           delqtyList; --- Fix for bug 6147298
9088 
9089   --=====================================
9090   --All the ASN's pegged to PO's
9091   --=====================================
9092   cursor c_asn_pegged_to_po(
9093     p_header_id IN NUMBER
9094   ) IS
9095   select sd1.primary_quantity,
9096          sd1.tp_quantity,
9097          sd1.number1,
9098          sd1.inventory_item_id,
9099          sd1.publisher_id,
9100          sd1.publisher_site_id,
9101          sd1.customer_id,
9102          sd1.customer_site_id,
9103          sd1.end_order_number,
9104          sd1.end_order_rel_number,
9105          sd1.end_order_line_number,
9106 	 sd1.last_update_date,  --Fix for bug 5599903
9107 	 sd1.last_updated_by,
9108 	 ln.sync_indicator, --Fix for bug 6147298
9109          ln.quantity
9110   from   msc_sup_dem_entries sd1,
9111 	 msc_supdem_lines_interface ln
9112   where  sd1.ref_header_id = p_header_id and
9113          sd1.plan_id = -1 and
9114          sd1.publisher_order_type = 15  and --ASN
9115          sd1.end_order_type = 13 and  --PO
9116 	 ln.parent_header_id = p_header_id and
9117 	 sd1.item_name = ln.item_name and
9118          sd1.end_order_number = ln.pegging_order_identifier and
9119          nvl(sd1.end_order_rel_number, -99) = nvl(ln.ref_release_number, -99) and
9120          nvl(sd1.end_order_line_number, -99) = nvl(ln.ref_line_number, -99) and
9121 	 nvl(sd1.order_number, -99) = nvl(ln.order_identifier, -99) and
9122          nvl(sd1.release_number, -99) = nvl(ln.release_number, -99) and
9123          nvl(sd1.line_number, -99) = nvl(ln.line_number, -99); --- Fix for bug 6147298
9124 
9125 
9126   --=====================================
9127   --All the ASN's pegged to SO's
9128   --=====================================
9129   cursor c_asn_pegged_to_so(
9130     p_header_id IN NUMBER
9131   ) IS
9132   select sd1.primary_quantity,
9133          sd1.tp_quantity,
9134          sd1.number1,
9135          sd1.inventory_item_id,
9136          sd1.publisher_id,
9137          sd1.publisher_site_id,
9138          sd1.customer_id,
9139          sd1.customer_site_id,
9140          sd1.end_order_number,
9141          sd1.end_order_rel_number,
9142          sd1.end_order_line_number,
9143          sd2.end_order_number,
9144          sd2.end_order_rel_number,
9145          sd2.end_order_line_number
9146   from   msc_sup_dem_entries sd1,
9147          msc_sup_dem_entries sd2
9148   where  sd1.ref_header_id = p_header_id and
9149          sd1.plan_id = -1 and
9150          sd1.publisher_order_type = 15  and --ASN
9151          sd1.end_order_type = 14 and  --SO pegged to the ASN
9152          sd2.plan_id = sd1.plan_id and
9153          sd2.publisher_order_type = 14 and
9154          sd2.end_order_type = 13 and --PO pegged to the SO
9155          sd2.inventory_item_id = sd1.inventory_item_id and
9156          sd2.publisher_id = sd1.publisher_id and
9157          sd2.publisher_site_id = sd1.publisher_site_id and
9158          sd2.customer_id = sd1.customer_id and
9159          sd2.customer_site_id = sd1.customer_site_id and
9160          sd2.order_number = sd1.end_order_number and
9161          nvl(sd2.release_number, -99) = nvl(sd1.end_order_rel_number, -99) and
9162          nvl(sd2.line_number, -99) = nvl(sd1.end_order_line_number,-99);
9163 
9164   --=====================================
9165   --All the Receipt's pegged to ASN's
9166   --=====================================
9167   CURSOR c_receipts_pegged_to_asn(
9168     p_header_id IN Number
9169   ) IS
9170   select sd1.inventory_item_id,
9171          sd1.publisher_id,
9172          sd1.publisher_site_id,
9173          sd1.supplier_id,
9174          sd1.supplier_site_id,
9175          sd1.end_order_number,
9176          sd1.end_order_rel_number,
9177          sd1.end_order_line_number
9178   from   msc_sup_dem_entries sd1
9179   where  sd1.ref_header_id = p_header_id and
9180          sd1.plan_id = -1 and
9181          sd1.publisher_order_type = 16 and --Shipment Receipt
9182          sd1.end_order_type = 15; --ASN
9183 
9184   --=====================================
9185   --All the Receipt's pegged to PO's
9186   --=====================================
9187   CURSOR c_receipts_pegged_to_po(
9188     p_header_id IN Number
9189   ) IS
9190   select sd1.inventory_item_id,
9191          sd1.publisher_id,
9192          sd1.publisher_site_id,
9193          sd1.supplier_id,
9194          sd1.supplier_site_id,
9195          sd1.end_order_number,
9196          sd1.end_order_rel_number,
9197          sd1.end_order_line_number
9198   from   msc_sup_dem_entries sd1
9199   where  sd1.ref_header_id = p_header_id and
9200          sd1.plan_id = -1 and
9201          sd1.publisher_order_type = 16 and --Shipment Receipt
9202          sd1.end_order_type = 13; --PO
9203 
9204   CURSOR c_receipts_pegged_to_po1(
9205     p_header_id IN Number
9206   ) IS
9207   select sd1.inventory_item_id,
9208          sd1.publisher_id,
9209          sd1.publisher_site_id,
9210          sd1.supplier_id,
9211          sd1.supplier_site_id,
9212          sd2.order_number,
9213          sd2.release_number,
9214          sd2.line_number
9215   from   msc_sup_dem_entries sd1,
9216          msc_sup_dem_entries sd2
9217   where  sd1.ref_header_id = p_header_id and
9218          sd1.plan_id = -1 and
9219          sd1.publisher_order_type = 16 and
9220          sd1.end_order_type = 13 and
9221          sd2.plan_id = sd1.plan_id and
9222          sd2.inventory_item_id = sd1.inventory_item_id and
9223          sd2.publisher_id = sd1.supplier_id and
9224          sd2.publisher_site_id = sd1.supplier_site_id and
9225          sd2.customer_id = sd1.publisher_id and
9226          sd2.customer_site_id = sd1.publisher_site_id and
9227          sd2.publisher_order_type = 14 and
9228          sd2.end_order_type = 13 and
9229          sd2.end_order_number = sd1.end_order_number and
9230          nvl(sd2.end_order_rel_number, -99) = nvl(sd1.end_order_rel_number, -99) and
9231          nvl(sd2.end_order_line_number, -99) = nvl(sd1.end_order_line_number, -99);
9232 
9233   --=====================================
9234   --All the Onhand records
9235   --=====================================
9236   CURSOR c_onhand_records(
9237     p_header_id IN Number
9238   ) IS
9239   select sd1.inventory_item_id,
9240          sd1.publisher_id,
9241          sd1.publisher_site_id,
9242          sd1.new_schedule_date
9243   from   msc_sup_dem_entries sd1
9244   where  sd1.ref_header_id = p_header_id and
9245          sd1.plan_id = -1 and
9246          sd1.publisher_order_type in (9,10); --Allocated + Unallocated onhand
9247 
9248 BEGIN
9249   --==================================
9250   --ASN's pegged to PO's
9251   --==================================
9252   --dbms_output.put_line('Opening c_asn_pegged_to_po');
9253   open c_asn_pegged_to_po(p_header_id);
9254   fetch c_asn_pegged_to_po
9255   bulk collect into  t_pri_qty,
9256         t_tp_qty,
9257         t_number1,
9258         t_item_id,
9259         t_pub_id,
9260         t_pub_site_id,
9261         t_cust_id,
9262         t_cust_site_id,
9263         t_end_order_num,
9264         t_end_ord_rel_num,
9265         t_end_ord_line_num,
9266 	t_last_update_date,
9267 	t_last_updated_by, --Fix for bug 5599903
9268 	t_sync_id,
9269         t_del_qty; --Fix for bug 6147298
9270 
9271   close c_asn_pegged_to_po;
9272 
9273   --dbms_output.put_line('Records fetched := ' || t_pri_qty.COUNT);
9274 
9275   --==================================
9276   --Consume PO quantity
9277   --==================================
9278   if (t_pri_qty is not null) and (t_pri_qty.COUNT > 0 ) THEN
9279 
9280    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9281     update msc_sup_dem_entries sd
9282     set    sd.number1 = DECODE(t_sync_id(j),'R',sd.primary_quantity,'D',sd.number1) --Fix for bug 6147298
9283     where  sd.publisher_order_type = 13 and --PO
9284            sd.plan_id = -1 and
9285            sd.inventory_item_id = t_item_id(j) and
9286            sd.publisher_id = t_cust_id(j) and
9287            sd.publisher_site_id = t_cust_site_id(j) and
9288            sd.supplier_id = t_pub_id(j) and
9289            sd.supplier_site_id = t_pub_site_id(j) and
9290            sd.order_number = t_end_order_num(j) and
9291            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num(j),-99) and
9292            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num(j), -99) and
9293            sd.quantity > 0;
9294 
9295    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9296     update msc_sup_dem_entries sd
9297     set    sd.primary_quantity = DECODE(t_sync_id(j),'R',round(sd.primary_quantity - decode(t_number1(j),NULL,t_tp_qty(j),Decode(t_pri_qty(j),0, -t_number1(j), t_tp_qty(j) - (t_number1(j)/Decode(t_pri_qty(j),0,1,t_pri_qty(j)))*t_tp_qty(j))), 6),
9298 				'D',round(sd.primary_quantity + t_del_qty(j),6)),
9299            sd.tp_quantity = DECODE(t_sync_id(j),'R',round(sd.tp_quantity - decode(t_number1(j),NULL,t_pri_qty(j),t_pri_qty(j)-t_number1(j)), 6),'D',round(sd.tp_quantity + t_del_qty(j),6)) --Fix for bug 6147298
9300     where  sd.publisher_order_type = 13 and --PO
9301            sd.plan_id = -1 and
9302            sd.inventory_item_id = t_item_id(j) and
9303            sd.publisher_id = t_cust_id(j) and
9304            sd.publisher_site_id = t_cust_site_id(j) and
9305            sd.supplier_id = t_pub_id(j) and
9306            sd.supplier_site_id = t_pub_site_id(j) and
9307            sd.order_number = t_end_order_num(j) and
9308            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num(j),-99) and
9309            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num(j), -99) and
9310            sd.quantity > 0;
9311 
9312    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9313     update msc_sup_dem_entries sd
9314     set    sd.quantity = get_quantity(sd.primary_quantity, sd.primary_uom, sd.uom_code, sd.inventory_item_id),
9315 	   sd.last_updated_by = t_last_updated_by(j),
9316 	   sd.last_update_date = t_last_update_date(j)   --Fix for bug 5599903
9317     where  sd.publisher_order_type = 13 and --PO
9318            sd.plan_id = -1 and
9319            sd.inventory_item_id = t_item_id(j) and
9320            sd.publisher_id = t_cust_id(j) and
9321            sd.publisher_site_id = t_cust_site_id(j) and
9322            sd.supplier_id = t_pub_id(j) and
9323            sd.supplier_site_id = t_pub_site_id(j) and
9324            sd.order_number = t_end_order_num(j) and
9325            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num(j),-99) and
9326            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num(j), -99) and
9327            sd.quantity > 0;
9328 
9329 
9330 
9331    --==================================
9332    --Consume SO quantity
9333    --==================================
9334    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9335     update msc_sup_dem_entries sd
9336     set    sd.number1 = sd.primary_quantity
9337     where  sd.publisher_order_type = 14 and --SO
9338            sd.plan_id = -1 and
9339            sd.inventory_item_id = t_item_id(j) and
9340            sd.publisher_id = t_pub_id(j) and
9341            sd.publisher_site_id = t_pub_site_id(j) and
9342            sd.customer_id = t_cust_id(j) and
9343            sd.customer_site_id = t_cust_site_id(j) and
9344            sd.end_order_number = t_end_order_num(j) and
9345            nvl(sd.end_order_rel_number, -99) = nvl(t_end_ord_rel_num(j),-99) and
9346            nvl(sd.end_order_line_number, -99) = nvl(t_end_ord_line_num(j), -99) and
9347            sd.quantity > 0;
9348 
9349 
9350    FORALL j in t_pri_qty.FIRST..t_pri_qty.last
9351     update msc_sup_dem_entries sd
9352     set    sd.primary_quantity = round(sd.primary_quantity - decode(t_number1(j),NULL,t_pri_qty(j),t_pri_qty(j)-t_number1(j)), 6),
9353            sd.tp_quantity = round(sd.tp_quantity - decode(t_number1(j), NULL, t_tp_qty(j), Decode(t_pri_qty(j),0,-t_number1(j),t_tp_qty(j) - (t_number1(j)/Decode(t_pri_qty(j),0,1,t_pri_qty(j)))*t_tp_qty(j))), 6)
9354     where  sd.publisher_order_type = 14 and --SO
9355            sd.plan_id = -1 and
9356            sd.inventory_item_id = t_item_id(j) and
9357            sd.publisher_id = t_pub_id(j) and
9358            sd.publisher_site_id = t_pub_site_id(j) and
9359            sd.customer_id = t_cust_id(j) and
9360            sd.customer_site_id = t_cust_site_id(j) and
9361            sd.end_order_number = t_end_order_num(j) and
9362            nvl(sd.end_order_rel_number, -99) = nvl(t_end_ord_rel_num(j),-99) and
9363            nvl(sd.end_order_line_number, -99) = nvl(t_end_ord_line_num(j), -99) and
9364            sd.quantity > 0;
9365 
9366    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9367     update msc_sup_dem_entries sd
9368     set    sd.quantity = get_quantity(sd.primary_quantity, sd.primary_uom, sd.uom_code, sd.inventory_item_id)
9369     where  sd.publisher_order_type = 14 and --SO
9370            sd.plan_id = -1 and
9371            sd.inventory_item_id = t_item_id(j) and
9372            sd.publisher_id = t_pub_id(j) and
9373            sd.publisher_site_id = t_pub_site_id(j) and
9374            sd.customer_id = t_cust_id(j) and
9375            sd.customer_site_id = t_cust_site_id(j) and
9376            sd.end_order_number = t_end_order_num(j) and
9377            nvl(sd.end_order_rel_number, -99) = nvl(t_end_ord_rel_num(j),-99) and
9378            nvl(sd.end_order_line_number, -99) = nvl(t_end_ord_line_num(j), -99) and
9379            sd.quantity > 0;
9380 
9381 
9382   end if;
9383 
9384   --==================================
9385   --Open ASN's pegged to SO's
9386   --==================================
9387   --dbms_output.put_line('Opening c_asn_pegged_to_so');
9388   open c_asn_pegged_to_so(p_header_id);
9389   fetch c_asn_pegged_to_so
9390   bulk collect into  t_pri_qty,
9391         t_tp_qty,
9392         t_number1,
9393         t_item_id,
9394         t_pub_id,
9395         t_pub_site_id,
9396         t_cust_id,
9397         t_cust_site_id,
9398         t_end_order_num,
9399         t_end_ord_rel_num,
9400         t_end_ord_line_num,
9401         t_end_order_num1,
9402         t_end_ord_rel_num1,
9403         t_end_ord_line_num1;
9404   close c_asn_pegged_to_so;
9405 
9406   --dbms_output.put_line('Records fetched := ' || t_pri_qty.COUNT);
9407 
9408   --==================================
9409   --Consume SO quantity
9410   --==================================
9411   if (t_pri_qty is not NULL) and (t_pri_qty.COUNT > 0) then
9412    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9413     update msc_sup_dem_entries sd
9414     set    sd.number1 = sd.primary_quantity
9415     where  sd.inventory_item_id = t_item_id(j) and
9416            sd.plan_id = -1 and
9417            sd.publisher_order_type = 14 and --SO
9418            sd.publisher_id = t_pub_id(j) and
9419            sd.publisher_site_id = t_pub_site_id(j) and
9420            sd.customer_id = t_cust_id(j) and
9421            sd.customer_site_id = t_cust_site_id(j) and
9422            sd.order_number = t_end_order_num(j) and
9423            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num(j),-99) and
9424            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num(j), -99) and
9425 	   sd.quantity > 0;
9426 
9427    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9428     update msc_sup_dem_entries sd
9429     set    sd.primary_quantity = round(sd.primary_quantity - decode(t_number1(j),NULL,t_pri_qty(j),t_pri_qty(j)-t_number1(j)), 6),
9430            sd.tp_quantity = round(sd.tp_quantity - decode(t_number1(j), NULL, t_tp_qty(j), Decode(t_pri_qty(j),0, -t_number1(j), t_tp_qty(j) - (t_number1(j)/Decode(t_pri_qty(j),0,1,t_pri_qty(j)))*t_tp_qty(j))), 6)
9431     where  sd.inventory_item_id = t_item_id(j) and
9432            sd.plan_id = -1 and
9433            sd.publisher_order_type = 14 and --SO
9434            sd.publisher_id = t_pub_id(j) and
9435            sd.publisher_site_id = t_pub_site_id(j) and
9436            sd.customer_id = t_cust_id(j) and
9437            sd.customer_site_id = t_cust_site_id(j) and
9438            sd.order_number = t_end_order_num(j) and
9439            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num(j),-99) and
9440            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num(j), -99) and
9441            sd.quantity > 0;
9442 
9443    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9444     update msc_sup_dem_entries sd
9445     set    sd.quantity = get_quantity(sd.primary_quantity, sd.primary_uom, sd.uom_code, sd.inventory_item_id)
9446     where  sd.inventory_item_id = t_item_id(j) and
9447            sd.plan_id = -1 and
9448            sd.publisher_order_type = 14 and --SO
9449            sd.publisher_id = t_pub_id(j) and
9450            sd.publisher_site_id = t_pub_site_id(j) and
9451            sd.customer_id = t_cust_id(j) and
9452            sd.customer_site_id = t_cust_site_id(j) and
9453            sd.order_number = t_end_order_num(j) and
9454            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num(j),-99) and
9455            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num(j), -99) and
9456            sd.quantity > 0;
9457 
9458 
9459 
9460    --==================================
9461    --Consume PO quantity
9462    --==================================
9463    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9464     update msc_sup_dem_entries sd
9465     set    sd.number1 = sd.primary_quantity
9466     where  sd.inventory_item_id = t_item_id(j) and
9467            sd.plan_id = -1 and
9468            sd.publisher_order_type = 13 and --PO
9469            sd.publisher_id = t_cust_id(j) and
9470            sd.publisher_site_id = t_cust_site_id(j) and
9471            sd.supplier_id = t_pub_id(j) and
9472            sd.supplier_site_id = t_pub_site_id(j) and
9473            sd.order_number = t_end_order_num1(j) and
9474            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num1(j),-99) and
9475            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num1(j), -99) and
9476            sd.quantity > 0;
9477 
9478    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9479     update msc_sup_dem_entries sd
9480     set    sd.primary_quantity = round(sd.primary_quantity - decode(t_number1(j),NULL,t_tp_qty(j), Decode(t_pri_qty(j),0,-t_number1(j), t_tp_qty(j)-(t_number1(j)/Decode(t_pri_qty(j),0,1,t_pri_qty(j)))*t_tp_qty(j))), 6),
9481            sd.tp_quantity = round(sd.tp_quantity - decode(t_number1(j), NULL, t_pri_qty(j), t_pri_qty(j)-t_number1(j)), 6)
9482     where  sd.inventory_item_id = t_item_id(j) and
9483            sd.plan_id = -1 and
9484            sd.publisher_order_type = 13 and --PO
9485            sd.publisher_id = t_cust_id(j) and
9486            sd.publisher_site_id = t_cust_site_id(j) and
9487            sd.supplier_id = t_pub_id(j) and
9488            sd.supplier_site_id = t_pub_site_id(j) and
9489            sd.order_number = t_end_order_num1(j) and
9490            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num1(j),-99) and
9491            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num1(j), -99) and
9492            sd.quantity > 0;
9493 
9494    FORALL j in t_pri_qty.FIRST..t_pri_qty.LAST
9495     update msc_sup_dem_entries sd
9496     set    sd.quantity = get_quantity(sd.primary_quantity, sd.primary_uom, sd.uom_code, sd.inventory_item_id),
9497     	   sd.last_updated_by = t_last_updated_by(j),
9498 	   sd.last_update_date = t_last_update_date(j) --Fix for bug 5599903
9499     where  sd.inventory_item_id = t_item_id(j) and
9500            sd.plan_id = -1 and
9501            sd.publisher_order_type = 13 and --PO
9502            sd.publisher_id = t_cust_id(j) and
9503            sd.publisher_site_id = t_cust_site_id(j) and
9504            sd.supplier_id = t_pub_id(j) and
9505            sd.supplier_site_id = t_pub_site_id(j) and
9506            sd.order_number = t_end_order_num1(j) and
9507            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num1(j),-99) and
9508            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num1(j), -99) and
9509            sd.quantity > 0;
9510 
9511   end if;
9512 
9513   --==================================
9514   --Open Receipt's pegged to ASN's
9515   --==================================
9516   OPEN c_receipts_pegged_to_asn(p_header_id);
9517   FETCH c_receipts_pegged_to_asn
9518   BULK COLLECT INTO t_item_id,
9519          t_pub_id,
9520          t_pub_site_id,
9521          t_supp_id,
9522          t_supp_site_id,
9523          t_end_order_num,
9524          t_end_ord_rel_num,
9525          t_end_ord_line_num;
9526   CLOSE c_receipts_pegged_to_asn;
9527 
9528   --==================================
9529   --Consume ASN quantity
9530   --==================================
9531   if (t_item_id is not null ) and (t_item_id.COUNT > 0) then
9532    FORALL j in t_item_id.FIRST..t_item_id.LAST
9533     update msc_sup_dem_entries sd
9534     set    sd.quantity = 0,
9535            sd.primary_quantity = 0,
9536            sd.tp_quantity = 0,
9537            sd.last_update_login = -99
9538     where  sd.inventory_item_id = t_item_id(j) and
9539            sd.plan_id = -1 and
9540            sd.publisher_order_type = 15 and --ASN
9541            sd.publisher_id = t_supp_id(j) and
9542            sd.publisher_site_id = t_supp_site_id(j) and
9543            sd.customer_id = t_pub_id(j) and
9544            sd.customer_site_id = t_pub_site_id(j) and
9545            sd.order_number = t_end_order_num(j) and
9546            nvl(sd.release_number,-99) = nvl(t_end_ord_rel_num(j),-99) and
9547            nvl(sd.line_number,-99) = nvl(t_end_ord_line_num(j), -99);
9548   end if;
9549 
9550   --==================================
9551   --Open Receipt's pegged to PO's
9552   --==================================
9553   OPEN c_receipts_pegged_to_po(p_header_id);
9554   FETCH c_receipts_pegged_to_po
9555   BULK COLLECT INTO
9556          t_item_id,
9557          t_pub_id,
9558          t_pub_site_id,
9559          t_supp_id,
9560          t_supp_site_id,
9561          t_end_order_num,
9562          t_end_ord_rel_num,
9563          t_end_ord_line_num;
9564   CLOSE c_receipts_pegged_to_po;
9565 
9566   --Update ASN's pegged to the PO
9567   if (t_item_id is not null ) and (t_item_id.COUNT > 0) then
9568    FORALL j in t_item_id.FIRST..t_item_id.LAST
9569     update msc_sup_dem_entries sd
9570     set    sd.quantity = 0,
9571            sd.primary_quantity = 0,
9572            sd.tp_quantity = 0,
9573            sd.last_update_login = -99
9574     where  sd.inventory_item_id = t_item_id(j) and
9575            sd.plan_id = -1 and
9576            sd.publisher_order_type = 15 and --ASN
9577            sd.end_order_type = 13 and  --PO
9578            sd.publisher_id = t_supp_id(j) and
9579            sd.publisher_site_id = t_supp_site_id(j) and
9580            sd.customer_id = t_pub_id(j) and
9581            sd.customer_site_id = t_pub_site_id(j) and
9582            sd.end_order_number = t_end_order_num(j) and
9583            nvl(sd.end_order_rel_number,-99) = nvl(t_end_ord_rel_num(j),-99) and
9584            nvl(sd.end_order_line_number,-99) = nvl(t_end_ord_line_num(j), -99) and
9585            sd.quantity > 0;
9586   end if;
9587 
9588   --Update ASN's pegged to the SO
9589   OPEN c_receipts_pegged_to_po1(p_header_id);
9590   FETCH c_receipts_pegged_to_po1
9591   BULK COLLECT INTO  t_item_id,
9592          t_pub_id,
9593          t_pub_site_id,
9594          t_supp_id,
9595          t_supp_site_id,
9596          t_end_order_num,
9597          t_end_ord_rel_num,
9598          t_end_ord_line_num;
9599   CLOSE c_receipts_pegged_to_po1;
9600   if (t_item_id IS NOT NULL) and (t_item_id.COUNT > 0) then
9601   FORALL j in t_item_id.FIRST..t_item_id.LAST
9602     UPDATE msc_sup_dem_entries sd
9603     SET    sd.quantity = 0,
9604            sd.primary_quantity = 0,
9605            sd.tp_quantity = 0,
9606            sd.last_update_login = -99
9607     WHERE  sd.publisher_order_type = 15 and  --ASN
9608            sd.plan_id = -1 and
9609            sd.inventory_item_id = t_item_id(j) and
9610            sd.end_order_type = 14 and  --SO
9611            sd.publisher_id = t_supp_id(j) and
9612            sd.publisher_site_id = t_supp_site_id(j) and
9613            sd.customer_id = t_pub_id(j) and
9614            sd.customer_site_id = t_pub_site_id(j) and
9615            sd.end_order_number = t_end_order_num(j) and
9616            nvl(sd.end_order_rel_number, -99) = nvl(t_end_ord_rel_num(j), -99) and
9617            nvl(sd.end_order_line_number, -99) = nvl(t_end_ord_line_num(j), -99)and
9618            sd.quantity > 0;
9619   end if;
9620 
9621 
9622   --=====================================
9623   --Logic to delete receipts
9624   --=====================================
9625   OPEN c_onhand_records(p_header_id);
9626   FETCH c_onhand_records
9627   BULK COLLECT INTO t_item_id,
9628         t_pub_id,
9629         t_pub_site_id,
9630         t_extract_date;
9631   CLOSE c_onhand_records;
9632 
9633   if (t_item_id is not NULL) and (t_item_id.COUNT > 0) then
9634    FORALL j in t_item_id.FIRST..t_item_id.LAST
9635     update msc_sup_dem_entries sd
9636     set    sd.quantity = 0,
9637            sd.primary_quantity = 0,
9638            sd.tp_quantity = 0,
9639            sd.last_update_login = -99
9640     where  sd.inventory_item_id = t_item_id(j) and
9641            sd.publisher_order_type = 16 and
9642            sd.plan_id = -1 and
9643            sd.publisher_id = t_pub_id(j) and
9644            sd.publisher_site_id = t_pub_site_id(j) and
9645            sd.quantity > 0 and
9646            sd.new_schedule_date <= t_extract_date(j); --Fix for bug 2308128
9647   end if;
9648 
9649   COMMIT;
9650 
9651 END POST_PROCESS;
9652 
9653 
9654 PROCEDURE update_qty_from_ui(
9655   p_item_id IN number,
9656   p_qty     IN number,
9657   p_uom     IN varchar2,
9658   p_pri_uom IN varchar2,
9659   p_tp_uom  IN varchar2,
9660   p_pri_qty OUT NOCOPY number,
9661   p_tp_qty  OUT NOCOPY number
9662 ) IS
9663   l_conv_found boolean := NULL;
9664   l_conv_rate1 number;
9665   l_conv_rate2 number;
9666 BEGIN
9667   IF p_pri_uom <> p_uom THEN
9668     msc_x_util.get_uom_conversion_rates(
9669       p_uom,
9670       p_pri_uom,
9671       p_item_id,
9672       l_conv_found,
9673       l_conv_rate1
9674     );
9675     IF NOT l_conv_found THEN
9676       l_conv_rate1 := 1;
9677       p_pri_qty := round(p_qty,6);
9678     ELSE
9679       p_pri_qty := round(l_conv_rate1*p_qty, 6);
9680     END IF;
9681   ELSE
9682     p_pri_qty := round(p_qty,6);
9683   END IF;
9684 
9685   IF p_tp_uom <> p_uom THEN
9686     msc_x_util.get_uom_conversion_rates(
9687       p_uom,
9688       p_tp_uom,
9689       p_item_id,
9690       l_conv_found,
9691       l_conv_rate2
9692     );
9693     IF NOT l_conv_found THEN
9694       l_conv_rate2 := 1;
9695       p_tp_qty := round(p_qty, 6);
9696     ELSE
9697       p_tp_qty := round(l_conv_rate2*p_qty, 6);
9698     END IF;
9699   ELSE
9700     p_tp_qty := round(p_qty, 6);
9701   END IF;
9702 
9703 END update_qty_from_ui;
9704 
9705 
9706 FUNCTION GET_QUANTITY(
9707  p_qty IN NUMBER,
9708  p_uom IN VARCHAR2,
9709  p_uom1 IN VARCHAR2,
9710  p_item_id IN NUMBER
9711 ) RETURN NUMBER IS
9712  p_qty1 number;
9713  l_conv_found boolean;
9714  l_conv_rate number;
9715 BEGIN
9716   IF p_uom <> p_uom1 THEN
9717     msc_x_util.get_uom_conversion_rates(
9718       p_uom,
9719       p_uom1,
9720       p_item_id,
9721       l_conv_found,
9722       l_conv_rate
9723     );
9724     IF NOT l_conv_found THEN
9725       l_conv_rate := 1;
9726       p_qty1 := p_qty;
9727     ELSE
9728       p_qty1 := l_conv_rate*p_qty;
9729     END IF;
9730   ELSE
9731     p_qty1 := p_qty;
9732   END IF;
9733   return round(p_qty1,6);
9734 END GET_QUANTITY;
9735 
9736 PROCEDURE serial_validation(
9737         p_header_id IN NUMBER,
9738    p_language  IN VARCHAR2
9739 ) IS
9740 
9741   l_err_msg                  VARCHAR2(240);
9742   l_min             NUMBER;
9743   l_max             NUMBER;
9744   l_log_message              VARCHAR2(4000);
9745   l_start_line         NUMBER;
9746   l_end_line           NUMBER;
9747   l_loops_reqd               NUMBER;
9748   t_serial_txn_id            serialTxnId;
9749   t_serial_number            serialNumber;
9750   t_disable_date             disableDate;
9751   t_plan_id                  planid;
9752   t_attachment_url           attachmentUrl;
9753   t_sync_indicator           syncIndicator;
9754   t_row_status               rowStatus;
9755   t_err_msg                  errMsg;
9756   t_user_defined1            userDefined;
9757   t_user_defined2            userDefined;
9758   t_user_defined3            userDefined;
9759   t_user_defined4            userDefined;
9760   t_user_defined5            userDefined;
9761   t_user_defined6            userDefined;
9762   t_user_defined7            userDefined;
9763   t_user_defined8            userDefined;
9764   t_user_defined9            userDefined;
9765   t_user_defined10           userDefined;
9766   t_creation_date            creationDate;
9767   t_created_by               createdBy;
9768   t_last_update_date         lastUpdateDate;
9769   t_last_updated_by          lastUpdatedBy;
9770   t_last_update_login        lastUpdateLogin;
9771   t_context                  context;
9772   t_attribute1               attribute;
9773   t_attribute2               attribute;
9774   t_attribute3               attribute;
9775   t_attribute4               attribute;
9776   t_attribute5               attribute;
9777   t_attribute6               attribute;
9778   t_attribute7               attribute;
9779   t_attribute8               attribute;
9780   t_attribute9               attribute;
9781   t_attribute10              attribute;
9782   t_attribute11              attribute;
9783   t_attribute12              attribute;
9784   t_attribute13              attribute;
9785   t_attribute14              attribute;
9786   t_attribute15              attribute;
9787   t_line_id                  serialLineId;
9788   t_line_id1           serialLineId;
9789 
9790   t_log_line_id        serialLineId;
9791   t_log_item_name            itemList;
9792   t_log_order_type           serialOrderType;
9793   t_log_err_msg              serialErrMsg;
9794   t_log_serial_number        serialNumber;
9795 
9796 
9797   lv_dummy1                      varchar2(32)                := '';
9798   lv_dummy2                      varchar2(32)                := '';
9799   v_applsys_schema               varchar2(32)                ;
9800   v_retval         boolean                     ;
9801 
9802   CURSOR c_err_msg(
9803     p_header_id  IN Number,
9804     p_start_line IN Number,
9805     p_end_line   IN Number
9806   ) IS
9807   select line_id, nvl(master_item_name,publisher_item_name), order_type,serial_number, err_msg
9808   from   msc_st_serial_numbers
9809   where  parent_header_id = p_header_id and
9810          row_status = G_FAILURE    AND
9811          line_id BETWEEN p_start_line and p_end_line;
9812 
9813 
9814   BEGIN
9815     BEGIN
9816        SELECT min(line_id),max(line_id)
9817        INTO   l_min,l_max
9818        FROM   msc_st_serial_numbers
9819        WHERE  parent_header_id = p_header_id;
9820     EXCEPTION
9821        WHEN NO_DATA_FOUND THEN
9822          l_min := 0;
9823     END;
9824 
9825 
9826 
9827     v_retval := FND_INSTALLATION.GET_APP_INFO(
9828                    'FND', lv_dummy1,lv_dummy2, v_applsys_schema);
9829 
9830 
9831 
9832     --==============================================================================================================
9833     -- create index on publisher_company,publisher_order_type,publisher_item_name,master_item_name,publisher_site_id
9834     --===============================================================================================================
9835     create_index(v_applsys_schema);
9836 
9837 
9838     l_loops_reqd := 1 + trunc((l_max - l_min)/G_BATCH_SIZE);
9839 
9840     IF l_loops_reqd IS NOT NULL THEN
9841     FOR i IN 1..l_loops_reqd LOOP
9842       l_start_line := l_min + ((i-1)*G_BATCH_SIZE);
9843       IF ((l_min - 1 + i*G_BATCH_SIZE) <= l_max) THEN
9844         l_end_line := l_min - 1 + i*G_BATCH_SIZE;
9845       ELSE
9846         l_end_line := l_max;
9847       END IF;
9848 
9849 
9850 
9851     l_log_message := substrb(get_message('MSC','MSC_X_API_NOW_PROCESSING',p_language),1,500)
9852                      || '... ' || to_char(l_start_line - l_min + 1) || ' ' ||
9853                      substrb(get_message('MSC','MSC_X_API_THROUGH',p_language),1,500) ||
9854                      ' ' || to_char(l_end_line - l_min + 1);
9855     log_message(l_log_message);
9856 
9857 
9858     SELECT  /*+ parallel(mssn,5) */
9859            line_id
9860     BULK   COLLECT INTO t_line_id
9861     FROM   msc_st_serial_numbers
9862     WHERE  parent_header_id = p_header_id    AND
9863             line_id BETWEEN l_start_line and l_end_line;
9864 
9865 
9866 
9867     IF t_line_id IS NOT NULL AND t_line_id.COUNT > 0 THEN
9868     --================================================
9869     -- Validation 1: Check for valid sync indicator
9870     --=================================================
9871     l_err_msg := get_message('MSC', 'MSC_X_INVALID_SYNC_INDICATOR', p_language);
9872     FORALL j IN t_line_id.FIRST..t_line_id.LAST
9873     UPDATE /*+ parallel(mssn,5) */
9874            msc_st_serial_numbers mssn
9875     SET    mssn.err_msg      = substrb(l_err_msg,1,1000),
9876            mssn.row_status   = G_FAILURE
9877     WHERE  mssn.parent_header_id = p_header_id AND
9878            mssn.line_id = t_line_id(j) AND
9879            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
9880          UPPER(NVL(mssn.sync_indicator, G_NULL_STRING)) NOT IN ('R','D');
9881 
9882     --========================================================
9883     --Validation 2: Check for the order type
9884     --======================================================
9885     l_err_msg := get_message('MSC', 'MSC_X_INVALID_ORDER_TYPE', p_language);
9886     FORALL j IN t_line_id.FIRST..t_line_id.LAST
9887     UPDATE /*+ parallel(mssn,5) */
9888            msc_st_serial_numbers mssn
9889     SET    mssn.err_msg = --DECODE(mssn.err_msg, NULL, l_err_msg ,
9890                            --      mssn.err_msg || ' ' || l_err_msg ),
9891                           substrb(l_err_msg,1,1000),
9892            mssn.row_status   = G_FAILURE
9893     WHERE  mssn.parent_header_id = p_header_id AND
9894            mssn.line_id = t_line_id(j) AND
9895            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
9896            NOT EXISTS (SELECT /*+ parallel(l,5) */
9897                               l.lookup_code
9898                          FROM fnd_lookup_values l
9899                         WHERE l.lookup_type = 'MSC_X_ORDER_TYPE' AND
9900                               UPPER(l.meaning) = NVL(UPPER(mssn.order_type), G_NULL_STRING) AND
9901                               l.language = p_language       AND
9902                               l.lookup_code = G_UNALLOCATED_ONHAND);
9903 
9904     --======================================================================
9905     -- Validation 3: Check for the number of item name is 0
9906     --======================================================================
9907     l_err_msg := get_message('MSC', 'MSC_X_INVALID_NO_ITEM', p_language);
9908     FORALL j IN t_line_id.FIRST..t_line_id.LAST
9909     UPDATE /*+ parallel(mssn,5) */
9910            msc_st_serial_numbers mssn
9911     SET    mssn.err_msg = --DECODE(mssn.err_msg, NULL, l_err_msg,
9912                            --      mssn.err_msg || ' ' || l_err_msg ),
9913                            substrb(l_err_msg,1,1000),
9914            mssn.row_status   = G_FAILURE
9915     WHERE  mssn.parent_header_id = p_header_id AND
9916            mssn.line_id = t_line_id(j) AND
9917            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
9918            mssn.master_item_name IS NULL     AND
9919            mssn.publisher_item_name IS NULL;
9920 
9921 
9922     --===============================================================
9923     -- Validation 4: Check for serial number
9924     --==============================================================
9925     l_err_msg := get_message('MSC', 'MSC_X_NO_SERIAL_NUMBER',p_language);
9926     FORALL j IN t_line_id.FIRST..t_line_id.LAST
9927     UPDATE /*+ parallel(mssn,5) */
9928            msc_st_serial_numbers mssn
9929     SET    mssn.err_msg = --DECODE(mssn.err_msg, NULL, l_err_msg ,
9930                            --      mssn.err_msg || ' ' || l_err_msg),
9931                           substrb(l_err_msg,1,1000),
9932            mssn.row_status   = G_FAILURE
9933     WHERE  mssn.parent_header_id = p_header_id AND
9934            mssn.line_id = t_line_id(j) AND
9935            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
9936            mssn.serial_number IS NULL;
9937 
9938 
9939     --=============================================================
9940     -- Derive the publisher id
9941     --=============================================================
9942     FORALL j IN t_line_id.FIRST..t_line_id.LAST
9943     UPDATE /*+ parallel(mssn,5) */
9944            msc_st_serial_numbers mssn
9945     SET mssn.publisher_id = (SELECT /*+ parallel(mc,5)  */
9946                                    mc.company_id
9947                               FROM msc_companies mc
9948                               WHERE UPPER(mssn.publisher_company) = UPPER(mc.company_name)
9949                             )
9950     WHERE  mssn.parent_header_id = p_header_id AND
9951            mssn.line_id = t_line_id(j) AND
9952            NVL(mssn.row_status, G_PROCESS) = G_PROCESS;
9953 
9954     --==============================================================
9955     -- Validation 5: Check for existence of publisher company
9956     --==============================================================
9957     l_err_msg := get_message('MSC', 'MSC_X_INVALID_PUBLISHER', p_language);
9958     FORALL j IN t_line_id.FIRST..t_line_id.LAST
9959     UPDATE /*+ parallel(mssn,5) */
9960            msc_st_serial_numbers mssn
9961     SET    mssn.err_msg = --DECODE(mssn.err_msg, NULL, l_err_msg,
9962                            --      mssn.err_msg || ' ' || l_err_msg),
9963                           substrb(l_err_msg,1,1000),
9964            mssn.row_status   = G_FAILURE
9965     WHERE  mssn.parent_header_id = p_header_id AND
9966            mssn.line_id = t_line_id(j) AND
9967            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
9968            mssn.publisher_id IS NULL;
9969 
9970 
9971 
9972     --=============================================================
9973     --Derive the publisher site id
9974     --==========================================================
9975     FORALL j IN t_line_id.FIRST..t_line_id.LAST
9976     UPDATE /*+ parallel(mssn,5) */
9977            msc_st_serial_numbers mssn
9978     SET mssn.publisher_site_id = (SELECT /*+ parallel(mcs,5) */
9979                                    mcs.company_site_id
9980                               FROM msc_company_sites mcs
9981                               WHERE mssn.publisher_id=mcs.company_id      AND
9982                                     UPPER(mssn.publisher_site) = UPPER(mcs.company_site_name)
9983                             )
9984     WHERE  mssn.parent_header_id = p_header_id AND
9985            mssn.line_id = t_line_id(j) AND
9986            NVL(mssn.row_status, G_PROCESS) = G_PROCESS;
9987 
9988 
9989     --============================================================
9990     -- Validation 6: Check for existence of publisher site
9991     --============================================================
9992     l_err_msg := get_message('MSC', 'MSC_X_INVALID_PUBLISHER_SITE', p_language);
9993     FORALL j IN t_line_id.FIRST..t_line_id.LAST
9994     UPDATE /*+ parallel(mssn,5) */
9995            msc_st_serial_numbers mssn
9996     SET    mssn.err_msg = --DECODE(mssn.err_msg, NULL, l_err_msg,
9997                            --      mssn.err_msg || ' ' || l_err_msg ),
9998                           substrb(l_err_msg,1,1000),
9999            mssn.row_status   = G_FAILURE
10000     WHERE  mssn.parent_header_id = p_header_id AND
10001            mssn.line_id = t_line_id(j) AND
10002            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
10003            mssn.publisher_site_id IS NULL;
10004 
10005 
10006 
10007     --======================================================
10008     -- Derive the inventory_item_id
10009     --====================================================
10010     FORALL j IN t_line_id.FIRST..t_line_id.LAST
10011     UPDATE /*+ parallel(mssn,5) */
10012            msc_st_serial_numbers mssn
10013     SET mssn.inventory_item_id = (SELECT /*+ parallel(mi,5) */
10014                                          mi.inventory_item_id
10015                                    FROM  msc_items mi
10016                                   WHERE mi.item_name = mssn.master_item_name     AND
10017                                         mssn.master_item_name IS NOT NULL
10018 
10019                                  UNION ALL
10020                                    SELECT msi.inventory_item_id
10021                                      FROM msc_system_items msi,
10022                                           msc_trading_partners mtp,
10023                                           msc_trading_partner_maps mtpm,
10024                                           msc_company_sites mcs,
10025                                           msc_companies mc
10026                                     WHERE msi.plan_id = -1    AND
10027                                           mssn.parent_header_id = p_header_id AND
10028                                           mssn.line_id = t_line_id(j) AND
10029                                           NVL(mssn.row_status, G_PROCESS) = G_PROCESS    AND
10030                                           msi.item_name = mssn.publisher_item_name    AND
10031                                           msi.organization_id = mtp.sr_tp_id     AND
10032                                           msi.sr_instance_id = mtp.sr_instance_id     AND
10033                                           mtp.partner_type = 3    AND
10034                                           mtp.partner_id = mtpm.tp_key     AND
10035                                           mtpm.map_type = 2     AND
10036                                           mtpm.company_key = mcs.company_site_id     AND
10037                                           mcs.company_site_name = mssn.publisher_site    AND
10038                                           mcs.company_id = mc.company_id    AND
10039                                           mc.company_name = mssn.publisher_company    AND
10040                                           NVL(mtp.company_id,1) = mc.company_id     AND
10041                                           mssn.publisher_item_name IS NOT NULL     AND
10042                                           mssn.master_item_name IS NULL
10043 
10044                                  UNION ALL
10045                                    SELECT mis.inventory_item_id
10046                                      FROM msc_item_suppliers mis,
10047                                     	  msc_trading_partner_maps map,
10048                                     	  msc_trading_partner_maps map1,
10049                                     	  msc_company_relationships r,
10050                                     	  msc_company_sites cs,
10051                                     	  msc_companies c
10052                                     WHERE mis.plan_id = -1 and
10053                                     	  mssn.parent_header_id = p_header_id AND
10054                                     	  mssn.line_id = t_line_id(j) AND
10055                                     	  NVL(mssn.row_status, G_PROCESS) = G_PROCESS AND
10056                                     	  mis.supplier_item_name = mssn.publisher_item_name  AND
10057                                     	  mis.supplier_id = map.tp_key and
10058 					  --nvl(mis.supplier_site_id, map1.tp_key) = map1.tp_key and
10059 					  mis.supplier_site_id = map1.tp_key and
10060                                           map.map_type = 1 and
10061                                           map.company_key = r.relationship_id and
10062                                           r.subject_id = 1 and
10063                                           r.object_id = c.company_id and
10064                                           r.relationship_type = 2 and
10065                                           c.company_name = mssn.publisher_company  AND
10066                                     	  map1.map_type = 3 and
10067                                     	  map1.company_key = cs.company_site_id and
10068                                     	  cs.company_site_name = mssn.publisher_site  AND
10069                                     	  cs.company_id = c.company_id  and
10070 				    	  mssn.publisher_item_name IS NOT NULL  AND
10071                                           mssn.master_item_name IS NULL
10072 
10073                                  UNION ALL
10074                                    SELECT mic.inventory_item_id
10075                              	     FROM msc_item_customers mic,
10076                                     	  msc_trading_partner_maps map,
10077                                     	  msc_trading_partner_maps map1,
10078                                     	  msc_company_relationships r,
10079                                     	  msc_company_sites cs,
10080                                     	  msc_companies c
10081                                     WHERE mic.plan_id = -1 and
10082                                     	  mssn.parent_header_id = p_header_id AND
10083                                     	  mssn.line_id = t_line_id(j) AND
10084                                     	  NVL(mssn.row_status, G_PROCESS) = G_PROCESS AND
10085                                     	  mic.customer_item_name = mssn.publisher_item_name  AND
10086                                           mic.customer_id = map.tp_key and
10087 					  --nvl(mic.customer_site_id, map1.tp_key) = map1.tp_key and
10088 					  mic.customer_site_id = map1.tp_key and
10089                                     	  map.map_type = 1 and
10090                                     	  map.company_key = r.relationship_id and
10091                                     	  r.subject_id = 1 and
10092                                     	  r.object_id = c.company_id and
10093                                     	  r.relationship_type = 1 and
10094                                     	  c.company_name = mssn.publisher_company  AND
10095                                     	  map1.map_type = 3 and
10096                                     	  map1.company_key = cs.company_site_id and
10097                                     	  cs.company_site_name = mssn.publisher_site  AND
10098                                     	  cs.company_id = c.company_id   and
10099 				          mssn.publisher_item_name IS NOT NULL  AND
10100                                           mssn.master_item_name IS NULL
10101                                    )
10102     WHERE  mssn.parent_header_id = p_header_id AND
10103            mssn.line_id = t_line_id(j) AND
10104            NVL(mssn.row_status, G_PROCESS) = G_PROCESS;
10105 
10106     --============================================================
10107     -- Check if inventory_item_id exist
10108     --=======================================================
10109     l_err_msg := get_message('MSC', 'MSC_X_INVALID_ITEM', p_language);
10110     FORALL j IN t_line_id.FIRST..t_line_id.LAST
10111     UPDATE /*+ parallel(mssn,5) */
10112            msc_st_serial_numbers mssn
10113     SET    mssn.err_msg = --DECODE(mssn.err_msg, NULL, l_err_msg ,
10114                            --      mssn.err_msg || ' ' || l_err_msg),
10115                            substrb(l_err_msg,1,1000),
10116            mssn.row_status   = G_FAILURE
10117     WHERE  mssn.parent_header_id = p_header_id AND
10118            mssn.line_id = t_line_id(j) AND
10119            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
10120            mssn.inventory_item_id IS NULL;
10121 
10122     --=======================================================
10123     -- Validation 7: check for the serial_number_flag if the profile is
10124     --========================================================
10125     IF NVL(FND_PROFILE.VALUE('MSC_DEFAULT_SERIAL_CONTROL'),'Y') ='Y' THEN
10126     l_err_msg := get_message('MSC', 'MSC_X_INVALID_SERIAL_FLAG', p_language);
10127     FORALL j IN t_line_id.FIRST..t_line_id.LAST
10128     UPDATE /*+ parallel(mssn,5) */
10129            msc_st_serial_numbers mssn
10130     SET    mssn.err_msg = --DECODE(mssn.err_msg, NULL, l_err_msg ,
10131                            --      mssn.err_msg || ' ' || l_err_msg),
10132                           substrb(l_err_msg,1,1000),
10133            mssn.row_status   = G_FAILURE
10134     WHERE  mssn.parent_header_id = p_header_id AND
10135            mssn.line_id = t_line_id(j) AND
10136            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
10137            NOT EXISTS (SELECT msi.serial_number_control_code
10138                         FROM  msc_system_items msi,
10139                               msc_trading_partners mtp,
10140                               msc_trading_partner_maps mtpm
10141                         WHERE msi.plan_id = -1        AND
10142                               msi.inventory_item_id = mssn.inventory_item_id       AND
10143                               msi.sr_instance_id = mtp.sr_instance_id       AND
10144                               msi.organization_id = mtp.sr_tp_id        AND
10145                               mtp.partner_type = 3       AND
10146                               mtp.partner_id = mtpm.tp_key       AND
10147                               mtpm.map_type = 2       AND
10148                               mtpm.company_key = mssn.publisher_site_id       AND
10149                               msi.serial_number_control_code = G_SERIAL_ITEM
10150                       );
10151     END IF;
10152     --==========================================================
10153     -- Derive transaction id
10154     --===============================================================
10155     FORALL j IN t_line_id.FIRST..t_line_id.LAST
10156     UPDATE /*+ parallel(mssn,5) */
10157            msc_st_serial_numbers mssn
10158     SET    mssn.serial_txn_id =  (SELECT /*+ parallel(msde,5) */
10159                                          msde.transaction_id
10160                                     FROM msc_sup_dem_entries msde
10161                                    WHERE msde.plan_id = -1       AND
10162                                          msde.publisher_id = mssn.publisher_id      AND
10163                                          msde.publisher_site_id = mssn.publisher_site_id      AND
10164                                          msde.inventory_item_id = mssn.inventory_item_id      AND
10165                                          msde.publisher_order_type = (SELECT /*+ parallel(flv,5) */
10166                                                                              flv.lookup_code
10167                                                                         FROM fnd_lookup_values flv
10168                                                                        WHERE flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
10169                                                                              UPPER(flv.meaning) = NVL(UPPER(mssn.order_type), G_NULL_STRING) AND
10170                                                                              flv.language = p_language)
10171                                   )
10172     WHERE  mssn.parent_header_id = p_header_id AND
10173            mssn.line_id = t_line_id(j) AND
10174            NVL(mssn.row_status, G_PROCESS) = G_PROCESS ;
10175 
10176     --========================================================
10177     -- Validation 8: Check if the serial_txn_id exist
10178     --=======================================================
10179     l_err_msg := get_message('MSC', 'MSC_X_ONHAND_NOT_FOUND', p_language);
10180     FORALL j IN t_line_id.FIRST..t_line_id.LAST
10181     UPDATE /*+ parallel(mssn,5) */
10182            msc_st_serial_numbers mssn
10183     SET    mssn.err_msg = --DECODE(mssn.err_msg, NULL, l_err_msg,
10184                            --      mssn.err_msg || ' ' || l_err_msg ),
10185                            substrb(l_err_msg,1,1000),
10186            mssn.row_status   = G_FAILURE
10187     WHERE  mssn.parent_header_id = p_header_id AND
10188            mssn.line_id = t_line_id(j) AND
10189            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
10190            mssn.serial_txn_id IS NULL;
10191 
10192 
10193     --========================================================
10194     -- Validation 9: Check if the record exists for the
10195     --                    sync_indicator 'D'
10196     --========================================================
10197     l_err_msg := get_message('MSC', 'MSC_X_SERIAL_DATA_NOT_FOUND', p_language);
10198     FORALL j IN t_line_id.FIRST..t_line_id.LAST
10199     UPDATE /*+ parallel(mssn,5) */
10200            msc_st_serial_numbers mssn
10201     SET    mssn.err_msg = -- DECODE(mssn.err_msg, NULL, l_err_msg,
10202                             --     mssn.err_msg || ' ' || l_err_msg),
10203                            substrb(l_err_msg,1,1000),
10204            mssn.row_status   = G_FAILURE
10205     WHERE  mssn.parent_header_id = p_header_id AND
10206            mssn.line_id = t_line_id(j) AND
10207            NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
10208            UPPER(NVL(mssn.sync_indicator, G_NULL_STRING))='D'      AND
10209            NOT EXISTS (SELECT /*+ parallel(msn,5) */
10210                               msn.serial_txn_id
10211                          FROM msc_serial_numbers msn
10212                         WHERE msn.serial_txn_id = mssn.serial_txn_id      AND
10213                               msn.serial_number = mssn.serial_number
10214                        );
10215 
10216     --======================================================
10217     -- Delete the record if the sync_indicator is 'D;
10218     --=====================================================
10219     FORALL j IN t_line_id.FIRST..t_line_id.LAST
10220     UPDATE /*+ parallel(msn,5) */
10221            msc_serial_numbers msn
10222     SET msn.disable_date = sysdate
10223     WHERE (msn.serial_txn_id,msn.serial_number) IN
10224                                                   (SELECT /*+ parallel(mssn,5) */
10225                                                           mssn.serial_txn_id,mssn.serial_number
10226                                                      FROM msc_st_serial_numbers mssn
10227                                                     WHERE mssn.parent_header_id = p_header_id AND
10228                              mssn.line_id = t_line_id(j) AND
10229                              NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
10230                                                           UPPER(NVL(mssn.sync_indicator, G_NULL_STRING))='D'
10231                                                    )    AND
10232            NVL(msn.disable_date,sysdate+1) > sysdate ;
10233 
10234 
10235     --=========================================================
10236      -- Delete the previous record if the sync_indicator is 'R'
10237      --=========================================================
10238      FORALL j IN t_line_id.FIRST..t_line_id.LAST
10239      DELETE FROM msc_serial_numbers msn
10240      WHERE  msn.serial_txn_id = (SELECT /*+ parallel(mssn,5) */
10241                                        mssn.serial_txn_id
10242                                   FROM msc_st_serial_numbers mssn
10243                                  WHERE mssn.parent_header_id = p_header_id AND
10244                          mssn.line_id = t_line_id(j) AND
10245                          NVL(mssn.row_status, G_PROCESS) = G_PROCESS   AND
10246                                        UPPER(NVL(mssn.sync_indicator, G_NULL_STRING))='R'
10247                                )      AND
10248             NVL(msn.disable_date,sysdate+1) > sysdate   AND
10249        msn.parent_header_id <> p_header_id ;
10250 
10251     END IF;  --End of validation
10252 
10253 
10254      SELECT /*+ parallel(mssn,5) */
10255      mssn.line_id,
10256      mssn.serial_txn_id,
10257      mssn.serial_number,
10258      mssn.attachment_url,
10259      mssn.sync_indicator,
10260      mssn.row_status,
10261      mssn.user_defined1,
10262      mssn.user_defined2,
10263      mssn.user_defined3,
10264      mssn.user_defined4,
10265      mssn.user_defined5,
10266      mssn.user_defined6,
10267      mssn.user_defined7,
10268      mssn.user_defined8,
10269      mssn.user_defined9,
10270      mssn.user_defined10,
10271      mssn.creation_date,
10272      mssn.created_by,
10273      mssn.last_update_date,
10274      mssn.last_updated_by,
10275      mssn.last_update_login,
10276      mssn.context,
10277      mssn.attribute1,
10278      mssn.attribute2,
10279      mssn.attribute3,
10280      mssn.attribute4,
10281      mssn.attribute5,
10282      mssn.attribute6,
10283      mssn.attribute7,
10284      mssn.attribute8,
10285      mssn.attribute9,
10286      mssn.attribute10,
10287      mssn.attribute11,
10288      mssn.attribute12,
10289      mssn.attribute13,
10290      mssn.attribute14,
10291      mssn.attribute15
10292      BULK COLLECT INTO
10293      t_line_id1,
10294      t_serial_txn_id,
10295      t_serial_number,
10296      t_attachment_url,
10297      t_sync_indicator,
10298      t_row_status,
10299      t_user_defined1,
10300      t_user_defined2,
10301      t_user_defined3,
10302      t_user_defined4,
10303      t_user_defined5,
10304      t_user_defined6,
10305      t_user_defined7,
10306      t_user_defined8,
10307      t_user_defined9,
10308      t_user_defined10,
10309      t_creation_date,
10310      t_created_by,
10311      t_last_update_date,
10312      t_last_updated_by,
10313      t_last_update_login,
10314      t_context,
10315      t_attribute1,
10316      t_attribute2,
10317      t_attribute3,
10318      t_attribute4,
10319      t_attribute5,
10320      t_attribute6,
10321      t_attribute7,
10322      t_attribute8,
10323      t_attribute9,
10324      t_attribute10,
10325      t_attribute11,
10326      t_attribute12,
10327      t_attribute13,
10328      t_attribute14,
10329      t_attribute15
10330      FROM msc_st_serial_numbers mssn
10331      WHERE mssn.parent_header_id = p_header_id   AND
10332          NVL(mssn.row_status, G_PROCESS) = G_PROCESS AND
10333            UPPER(NVL(mssn.sync_indicator, G_NULL_STRING))='R'  AND
10334          mssn.line_id BETWEEN l_start_line and l_end_line;
10335 
10336 
10337      --====================================================
10338      -- Insert the record if the sync_indicator is 'R'
10339      --===================================================
10340 
10341      IF t_serial_number IS NOT NULL AND  t_serial_number.COUNT > 0 THEN
10342      FORALL i IN t_serial_number.FIRST..t_serial_number.LAST
10343      INSERT /*+ parallel(msn,5)  */
10344      INTO msc_serial_numbers msn
10345      (
10346      serial_txn_id,
10347      serial_number,
10348      plan_id,
10349      attachment_url,
10350      user_defined1,
10351      user_defined2,
10352      user_defined3,
10353      user_defined4,
10354      user_defined5,
10355      user_defined6,
10356      user_defined7,
10357      user_defined8,
10358      user_defined9,
10359      user_defined10,
10360      parent_header_id,
10361      line_id,
10362      creation_date,
10363      created_by,
10364      last_update_date,
10365      last_updated_by,
10366      last_update_login,
10367      context,
10368      attribute1,
10369      attribute2,
10370      attribute3,
10371      attribute4,
10372      attribute5,
10373      attribute6,
10374      attribute7,
10375      attribute8,
10376      attribute9,
10377      attribute10,
10378      attribute11,
10379      attribute12,
10380      attribute13,
10381      attribute14,
10382      attribute15
10383      )
10384      VALUES (
10385      t_serial_txn_id(i),
10386      t_serial_number(i),
10387      -1,
10388      t_attachment_url(i),
10389      t_user_defined1(i),
10390      t_user_defined2(i),
10391      t_user_defined3(i),
10392      t_user_defined4(i),
10393      t_user_defined5(i),
10394      t_user_defined6(i),
10395      t_user_defined7(i),
10396      t_user_defined8(i),
10397      t_user_defined9(i),
10398      t_user_defined10(i),
10399      p_header_id,
10400      t_line_id(i),
10401      t_creation_date(i),
10402      t_created_by(i),
10403      t_last_update_date(i),
10404      t_last_updated_by(i),
10405      t_last_update_login(i),
10406      t_context(i),
10407      t_attribute1(i),
10408      t_attribute2(i),
10409      t_attribute3(i),
10410      t_attribute4(i),
10411      t_attribute5(i),
10412      t_attribute6(i),
10413      t_attribute7(i),
10414      t_attribute8(i),
10415      t_attribute9(i),
10416      t_attribute10(i),
10417      t_attribute11(i),
10418      t_attribute12(i),
10419      t_attribute13(i),
10420      t_attribute14(i),
10421      t_attribute15(i)
10422      );
10423      END IF;
10424      COMMIT;
10425 
10426 
10427 
10428 
10429 
10430     --=========================================================================
10431     -- Writing error messages to the log file
10432     --=========================================================================
10433     open c_err_msg(p_header_id, l_start_line, l_end_line);
10434     fetch c_err_msg bulk collect
10435     into  t_log_line_id,
10436           t_log_item_name,
10437           t_log_order_type,
10438           t_log_serial_number,
10439           t_log_err_msg;
10440     close c_err_msg;
10441 
10442     if t_log_line_id is not null and t_log_line_id.COUNT > 0 then
10443       for j in t_log_line_id.FIRST..t_log_line_id.LAST loop
10444         l_log_message :=
10445                substrb(get_message('MSC','MSC_X_UI_VOD_ORD_LINE_NUM',p_language),1,100) ||
10446                ': ' || to_char(t_log_line_id(j) - l_min + 1) || ', ' ||
10447                substrb(get_message('MSC','MSC_X_UI_ITEM',p_language),1,100) ||
10448                ': ' || t_log_item_name(j) || ', ' ||
10449                substrb(get_message('MSC','MSC_X_UI_SDD_ORDER_TYPE',p_language),1,100) ||
10450                  ': ' || t_log_order_type(j) || ', ' ||
10451                substrb(get_message('MSC','MSC_X_UI_SERIAL_NUMBER',p_language),1,100) ||
10452                  ': ' || t_log_serial_number(j) || ', '||
10453                substrb(get_message('MSC','MSC_X_UI_LSD_ERROR', p_language),1,100) ||
10454                ': ' || t_log_err_msg(j) || fnd_global.local_chr(10) ;
10455 
10456         log_message(l_log_message);
10457       END LOOP;
10458     END IF;
10459 
10460   END LOOP;
10461   END IF;
10462 
10463     --=====================================================
10464     -- drop index
10465     --==================================================
10466     drop_index(v_applsys_schema);
10467 
10468     --=====================================================
10469     -- Delete all the record which has not errored out
10470     --=====================================================
10471     DELETE FROM msc_st_serial_numbers mssn
10472     WHERE NVL(mssn.row_status, G_PROCESS) = G_PROCESS    AND
10473         mssn.parent_header_id = p_header_id ;
10474 
10475 
10476 END serial_validation;
10477 
10478 
10479 PROCEDURE create_index (v_applsys_schema IN VARCHAR2) IS
10480 BEGIN
10481             ad_ddl.do_ddl( applsys_schema => v_applsys_schema,
10482                            application_short_name => 'MSC',
10483                            statement_type => AD_DDL.CREATE_INDEX,
10484                            statement =>
10485                                      'create index MSC_ST_SERIAL_NUMBER_N1'
10486                                    ||' on MSC_ST_SERIAL_NUMBERS '
10487                                    ||'(publisher_company,publisher_site,publisher_item_name,master_item_name,order_type) '
10488                                    ||' STORAGE (INITIAL 100K NEXT 1M PCTINCREASE 0) ',
10489                            object_name =>'MSC_ST_SERIAL_NUMBER_N1'
10490                          );
10491 EXCEPTION
10492    WHEN OTHERS THEN
10493       log_message('Error creating Index MSC_ST_SERIAL_NUMBER_N1. Error:'||substr(SQLERRM,1,240));
10494 END create_index;
10495 
10496 
10497 PROCEDURE drop_index(v_applsys_schema IN VARCHAR2) IS
10498 BEGIN
10499             ad_ddl.do_ddl( applsys_schema => v_applsys_schema,
10500                            application_short_name => 'MSC',
10501                            statement_type => AD_DDL.DROP_INDEX,
10502                            statement =>
10503                                      'drop index MSC_ST_SERIAL_NUMBER_N1',
10504                            object_name =>'MSC_ST_SERIAL_NUMBER_N1'
10505                          );
10506 EXCEPTION
10507    WHEN OTHERS THEN
10508        log_message('Error deleting Index MSC_ST_SERIAL_NUMBER_N1. Error:'||substr(SQLERRM,1,240));
10509 END drop_index;
10510 
10511 -- jguo: API to validate receipt/ship date for TP as a supplier
10512 PROCEDURE validate_rs_dates_supplier(
10513            t_line_id IN lineidList
10514          , p_header_id IN NUMBER
10515          , p_language IN VARCHAR2
10516          ) IS
10517 
10518   l_err_msg VARCHAR2(200);
10519 
10520 BEGIN
10521 
10522       --======================================================================
10523       -- Validation: Check if receipt date is populated if the order type is
10524       --                PO, Receipt, Order forecast and Requisition
10525       --======================================================================
10526       l_err_msg := get_message('MSC', 'MSC_X_INVALID_RCPT_DATE', p_language);
10527       --dbms_output.put_line( 'In ' || l_err_msg);
10528       FORALL j IN t_line_id.FIRST..t_line_id.LAST
10529         UPDATE msc_supdem_lines_interface ln
10530         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
10531         WHERE  ln.parent_header_id = p_header_id AND
10532                ln.line_id = t_line_id(j) AND
10533                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10534                G_NULL_STRING = (SELECT NVL(ln1.receipt_date, G_NULL_STRING)
10535                                 FROM   msc_supdem_lines_interface ln1,
10536                                        fnd_lookup_values flv
10537                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
10538                                        ln1.line_id = ln.line_id and
10539                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
10540                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
10541                                        flv.language = p_language and
10542                                        flv.lookup_code IN (G_PURCHASE_ORDER,
10543                                                            G_SHIP_RECEIPT,
10544                                                            G_ORDER_FORECAST,
10545                                                            G_REQUISITION,
10546 							   G_REPLENISHMENT)) -- bug #4070061
10547        	   AND EXISTS ( SELECT ln.customer_company
10548                         FROM msc_companies c
10549                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.customer_company, ln.publisher_company))
10550                         AND c.company_id = 1
10551                       )
10552                                                            ;
10553 
10554       FORALL j in t_line_id.FIRST..t_line_id.LAST
10555         UPDATE msc_supdem_lines_interface ln
10556         SET    ln.key_date = ln.receipt_date,
10557                ln.key_end_date = ln.new_schedule_end_date
10558         WHERE  ln.parent_header_id = p_header_id AND
10559                ln.line_id = t_line_id(j) AND
10560                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10561                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
10562                                        FROM   fnd_lookup_values flv
10563                                        WHERE  flv.language = p_language AND
10564                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
10565                                               flv.lookup_code IN (G_PURCHASE_ORDER,
10566                                                            G_SHIP_RECEIPT,
10567                                                            G_ORDER_FORECAST,
10568                                                            G_REQUISITION,
10569 							   G_REPLENISHMENT))  -- bug #4070061
10570        	   AND EXISTS ( SELECT ln.customer_company
10571                         FROM msc_companies c
10572                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.customer_company, ln.publisher_company))
10573                         AND c.company_id = 1
10574                       )
10575                                                            ;
10576 
10577       --======================================================================
10578       -- Validation: Check if ship date is populated if the order type is
10579       --                Sales Forecast, Sell through forecast, supplier capacity,
10580       --                projected safety stock and projected available balances.
10581       --======================================================================
10582       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SHIP_DATE', p_language);
10583       FORALL j IN t_line_id.FIRST..t_line_id.LAST
10584         UPDATE msc_supdem_lines_interface ln
10585         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
10586         WHERE  ln.parent_header_id = p_header_id AND
10587                ln.line_id = t_line_id(j) AND
10588                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10589                G_NULL_STRING = (SELECT NVL(ln1.ship_date, G_NULL_STRING)
10590                                 FROM   msc_supdem_lines_interface ln1,
10591                                        fnd_lookup_values flv
10592                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
10593                                        ln1.line_id = ln.line_id and
10594                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
10595                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
10596                                        flv.language = p_language and
10597                                        flv.lookup_code IN (G_SELL_THRO_FCST,
10598                                                            G_SUPPLIER_CAP,
10599                                                            G_PROJ_SS,
10600                                                            G_PROJ_ALLOC_AVAIL,
10601                                                            G_PROJ_UNALLOC_AVAIL))
10602        	   AND EXISTS ( SELECT ln.customer_company
10603                         FROM msc_companies c
10604                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.customer_company, ln.publisher_company))
10605                         AND c.company_id = 1
10606                       )
10607                                                            ;
10608 
10609       FORALL j in t_line_id.FIRST..t_line_id.LAST
10610         UPDATE msc_supdem_lines_interface ln
10611         SET    ln.key_date = ln.ship_date,
10612                ln.key_end_date = ln.new_schedule_end_date
10613         WHERE  ln.parent_header_id = p_header_id AND
10614                ln.line_id = t_line_id(j) AND
10615                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10616                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
10617                                        FROM   fnd_lookup_values flv
10618                                        WHERE  flv.language = p_language AND
10619                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
10620                                               flv.lookup_code IN (G_SELL_THRO_FCST,
10621                                                                   G_SUPPLIER_CAP,
10622                                                                   G_PROJ_SS,
10623                                                                   G_PROJ_ALLOC_AVAIL,
10624                                                                   G_PROJ_UNALLOC_AVAIL))
10625        	   AND EXISTS ( SELECT ln.customer_company
10626                         FROM msc_companies c
10627                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.customer_company, ln.publisher_company))
10628                         AND c.company_id = 1
10629                       )
10630                                                                   ;
10631 
10632   --==============================================================================
10633       -----bug #4070061 -------
10634       -- Validation: Check if either ship date or receipt date is
10635       --                populated if the order type = POA
10636      --==============================================================================
10637       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SHIP_RCPT_DATE', p_language);
10638       FORALL j IN t_line_id.FIRST..t_line_id.LAST
10639         UPDATE msc_supdem_lines_interface ln
10640         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
10641         WHERE  ln.parent_header_id = p_header_id AND
10642                ln.line_id = t_line_id(j) AND
10643                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10644                G_NULL_STRING = (SELECT NVL(ln1.ship_date, G_NULL_STRING)
10645                                 FROM   msc_supdem_lines_interface ln1,
10646                                        fnd_lookup_values flv
10647                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
10648                                        ln1.line_id = ln.line_id and
10649                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
10650                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
10651                                        flv.language = p_language and
10652                                        flv.lookup_code = G_PO_ACKNOWLEDGEMENT) AND
10653                G_NULL_STRING = (SELECT NVL(ln1.receipt_date, G_NULL_STRING)
10654                                 FROM   msc_supdem_lines_interface ln1,
10655                                        fnd_lookup_values flv
10656                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
10657                                        ln1.line_id = ln.line_id and
10658                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
10659                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
10660                                        flv.language = p_language and
10661                                        flv.lookup_code = G_PO_ACKNOWLEDGEMENT)
10662        	   AND EXISTS ( SELECT ln.customer_company
10663                         FROM msc_companies c
10664                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.customer_company, ln.publisher_company))
10665                         AND c.company_id = 1
10666                       );
10667 
10668 -----------------------------------------------------------------------------------------------------------
10669       ---for order type = POA : if receipt_date is entered via loads , then set key_date = receipt_date
10670       ---else receipt_date gets derived from ship_date in get_optional_info procedure
10671       ---and key_date is populated there
10672 -----------------------------------------------------------------------------------------------------------
10673 
10674  FORALL j in t_line_id.FIRST..t_line_id.LAST
10675          UPDATE msc_supdem_lines_interface ln
10676         SET    ln.key_date = ln.receipt_date,
10677                ln.key_end_date = ln.new_schedule_end_date
10678         WHERE  ln.parent_header_id = p_header_id AND
10679                ln.line_id = t_line_id(j) AND
10680 	       ln.receipt_date is not null AND
10681                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10682                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
10683                                        FROM   fnd_lookup_values flv
10684                                        WHERE  flv.language = p_language AND
10685                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
10686                                               flv.lookup_code = G_PO_ACKNOWLEDGEMENT)
10687        	   AND EXISTS ( SELECT ln.customer_company
10688                         FROM msc_companies c
10689                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.customer_company, ln.publisher_company))
10690                         AND c.company_id = 1
10691                       ) ;
10692 
10693 EXCEPTION
10694    WHEN OTHERS THEN
10695        log_message('Error when validating receipt/ship date (validate_rs_dates_supplier). Error:'||substr(SQLERRM,1,240));
10696 END validate_rs_dates_supplier;
10697 
10698 -- jguo: API to validate receipt/ship date for TP as a customer
10699 PROCEDURE validate_rs_dates_customer(
10700            t_line_id IN lineidList
10701          , p_header_id IN NUMBER
10702          , p_language IN VARCHAR2
10703          ) IS
10704 
10705   l_err_msg VARCHAR2(200);
10706 
10707 BEGIN
10708 
10709       --======================================================================
10710       -- Validation: Check if receipt date is populated if the order type is
10711       --                PO, Receipt, Order forecast and Requisition
10712       --======================================================================
10713       l_err_msg := get_message('MSC', 'MSC_X_INVALID_RCPT_DATE', p_language);
10714       --dbms_output.put_line( 'In ' || l_err_msg);
10715       FORALL j IN t_line_id.FIRST..t_line_id.LAST
10716         UPDATE msc_supdem_lines_interface ln
10717         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
10718         WHERE  ln.parent_header_id = p_header_id AND
10719                ln.line_id = t_line_id(j) AND
10720                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10721                G_NULL_STRING = (SELECT NVL(ln1.receipt_date, G_NULL_STRING)
10722                                 FROM   msc_supdem_lines_interface ln1,
10723                                        fnd_lookup_values flv
10724                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
10725                                        ln1.line_id = ln.line_id and
10726                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
10727                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
10728                                        flv.language = p_language and
10729                                        flv.lookup_code IN (G_PURCHASE_ORDER,
10730                                                            -- G_SHIP_RECEIPT,
10731                                                            G_ORDER_FORECAST,
10732                                                            G_REQUISITION
10733                                                            , G_SUPPLY_COMMIT
10734                                                            , G_NEGOTIATED_CAPACITY
10735                                                            , G_PO_ACKNOWLEDGEMENT
10736                                                            , G_SALES_ORDER
10737                                                            ))
10738             AND MSC_X_UTIL.GET_SHIPPING_CONTROL
10739             ( NVL(ln.customer_company, ln.publisher_company)
10740             , NVL(ln.customer_site, ln.publisher_site)
10741             , NVL(ln.supplier_company, ln.publisher_company)
10742             , NVL(ln.supplier_site, ln.publisher_site)
10743             ) = 1 -- supplier
10744        	   AND EXISTS ( SELECT ln.customer_company
10745                         FROM msc_companies c
10746                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.supplier_company, ln.publisher_company))
10747                         AND c.company_id = 1
10748                       )
10749             ;
10750 
10751       FORALL j IN t_line_id.FIRST..t_line_id.LAST
10752         UPDATE msc_supdem_lines_interface ln
10753         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
10754         WHERE  ln.parent_header_id = p_header_id AND
10755                ln.line_id = t_line_id(j) AND
10756                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10757                G_NULL_STRING = (SELECT NVL(ln1.receipt_date, G_NULL_STRING)
10758                                 FROM   msc_supdem_lines_interface ln1,
10759                                        fnd_lookup_values flv
10760                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
10761                                        ln1.line_id = ln.line_id and
10762                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
10763                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
10764                                        flv.language = p_language and
10765                                        flv.lookup_code IN ( G_SHIP_RECEIPT
10766                                                           , G_ASN
10767                                                           ))
10768        	   AND EXISTS ( SELECT ln.customer_company
10769                         FROM msc_companies c
10770                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.supplier_company, ln.publisher_company))
10771                         AND c.company_id = 1
10772                       )
10773              ;
10774 
10775 
10776       FORALL j in t_line_id.FIRST..t_line_id.LAST
10777         UPDATE msc_supdem_lines_interface ln
10778         SET    ln.key_date = ln.receipt_date,
10779                ln.key_end_date = ln.new_schedule_end_date
10780                , ln.shipping_control = MSC_X_UTIL.GET_SHIPPING_CONTROL
10781                                         ( NVL(ln.customer_company, ln.publisher_company)
10782                                         , NVL(ln.customer_site, ln.publisher_site)
10783                                         , NVL(ln.supplier_company, ln.publisher_company)
10784                                         , NVL(ln.supplier_site, ln.publisher_site)
10785             )
10786         WHERE  ln.parent_header_id = p_header_id AND
10787                ln.line_id = t_line_id(j) AND
10788                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10789                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
10790                                        FROM   fnd_lookup_values flv
10791                                        WHERE  flv.language = p_language AND
10792                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
10793                                        flv.lookup_code IN (G_PURCHASE_ORDER,
10794                                                            -- G_SHIP_RECEIPT,
10795                                                            G_ORDER_FORECAST,
10796                                                            G_REQUISITION
10797                                                            , G_SUPPLY_COMMIT
10798                                                            , G_NEGOTIATED_CAPACITY
10799                                                            , G_PO_ACKNOWLEDGEMENT
10800                                                            , G_SALES_ORDER
10801                                                            ))
10802              AND MSC_X_UTIL.GET_SHIPPING_CONTROL
10803             ( NVL(ln.customer_company, ln.publisher_company)
10804             , NVL(ln.customer_site, ln.publisher_site)
10805             , NVL(ln.supplier_company, ln.publisher_company)
10806             , NVL(ln.supplier_site, ln.publisher_site)
10807             ) = 1 -- supplier
10808        	   AND EXISTS ( SELECT ln.customer_company
10809                         FROM msc_companies c
10810                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.supplier_company, ln.publisher_company))
10811                         AND c.company_id = 1
10812                       )
10813             ;
10814 
10815       FORALL j in t_line_id.FIRST..t_line_id.LAST
10816         UPDATE msc_supdem_lines_interface ln
10817         SET    ln.key_date = ln.receipt_date,
10818                ln.key_end_date = ln.new_schedule_end_date
10819                   , ln.shipping_control = MSC_X_UTIL.GET_SHIPPING_CONTROL
10820                                         ( NVL(ln.customer_company, ln.publisher_company)
10821                                         , NVL(ln.customer_site, ln.publisher_site)
10822                                         , NVL(ln.supplier_company, ln.publisher_company)
10823                                         , NVL(ln.supplier_site, ln.publisher_site)
10824             )
10825         WHERE  ln.parent_header_id = p_header_id AND
10826                ln.line_id = t_line_id(j) AND
10827                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10828                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
10829                                        FROM   fnd_lookup_values flv
10830                                        WHERE  flv.language = p_language AND
10831                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
10832                                        flv.lookup_code IN ( G_SHIP_RECEIPT
10833                                                           , G_ASN
10834                                                           ))
10835        	   AND EXISTS ( SELECT ln.customer_company
10836                         FROM msc_companies c
10837                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.supplier_company, ln.publisher_company))
10838                         AND c.company_id = 1
10839                       )
10840             ;
10841 
10842       --======================================================================
10843       -- Validation: Check if ship date is populated if the order type is
10844       --                Sales Forecast, Sell through forecast, supplier capacity,
10845       --                projected safety stock and projected available balances.
10846       --======================================================================
10847       l_err_msg := get_message('MSC', 'MSC_X_INVALID_SHIP_DATE', p_language);
10848       FORALL j IN t_line_id.FIRST..t_line_id.LAST
10849         UPDATE msc_supdem_lines_interface ln
10850         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
10851         WHERE  ln.parent_header_id = p_header_id AND
10852                ln.line_id = t_line_id(j) AND
10853                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10854                G_NULL_STRING = (SELECT NVL(ln1.ship_date, G_NULL_STRING)
10855                                 FROM   msc_supdem_lines_interface ln1,
10856                                        fnd_lookup_values flv
10857                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
10858                                        ln1.line_id = ln.line_id and
10859                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
10860                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
10861                                        flv.language = p_language and
10862                                        flv.lookup_code IN ( -- G_SELL_THRO_FCST,
10863                                                            -- G_SUPPLIER_CAP,
10864                                                            -- G_PROJ_SS,
10865                                                            -- G_PROJ_ALLOC_AVAIL,
10866                                                            -- G_PROJ_UNALLOC_AVAIL
10867                                                              G_PURCHASE_ORDER
10868                                                            , G_ORDER_FORECAST
10869                                                            , G_SUPPLY_COMMIT
10870                                                            , G_NEGOTIATED_CAPACITY
10871                                                            , G_PO_ACKNOWLEDGEMENT
10872                                                            , G_REQUISITION
10873                                                            , G_SALES_ORDER
10874                                                            ))
10875              AND MSC_X_UTIL.GET_SHIPPING_CONTROL
10876             ( NVL(ln.customer_company, ln.publisher_company)
10877             , NVL(ln.customer_site, ln.publisher_site)
10878             , NVL(ln.supplier_company, ln.publisher_company)
10879             , NVL(ln.supplier_site, ln.publisher_site)
10880             ) = 2 -- customer
10881        	   AND EXISTS ( SELECT ln.customer_company
10882                         FROM msc_companies c
10883                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.supplier_company, ln.publisher_company))
10884                         AND c.company_id = 1
10885                       )
10886             ;
10887 
10888       FORALL j IN t_line_id.FIRST..t_line_id.LAST
10889         UPDATE msc_supdem_lines_interface ln
10890         SET    ln.err_msg = substrb(ln.err_msg || ' ' || l_err_msg,1,1000)
10891         WHERE  ln.parent_header_id = p_header_id AND
10892                ln.line_id = t_line_id(j) AND
10893                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10894                G_NULL_STRING = (SELECT NVL(ln1.ship_date, G_NULL_STRING)
10895                                 FROM   msc_supdem_lines_interface ln1,
10896                                        fnd_lookup_values flv
10897                                 WHERE  ln1.parent_header_id = ln.parent_header_id and
10898                                        ln1.line_id = ln.line_id and
10899                                        UPPER(flv.meaning) = UPPER(ln1.order_type) and
10900                                        flv.lookup_type = 'MSC_X_ORDER_TYPE' and
10901                                        flv.language = p_language and
10902                                        flv.lookup_code IN ( G_SALES_FORECAST
10903                                                           , G_SELL_THRO_FCST
10904                                                            ))
10905        	   AND EXISTS ( SELECT ln.customer_company
10906                         FROM msc_companies c
10907                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.supplier_company, ln.publisher_company))
10908                         AND c.company_id = 1
10909                       )
10910             ;
10911 
10912       FORALL j in t_line_id.FIRST..t_line_id.LAST
10913         UPDATE msc_supdem_lines_interface ln
10914         SET    ln.key_date = ln.ship_date,
10915                ln.key_end_date = ln.new_schedule_end_date
10916                , ln.shipping_control = MSC_X_UTIL.GET_SHIPPING_CONTROL
10917                                         ( NVL(ln.customer_company, ln.publisher_company)
10918                                         , NVL(ln.customer_site, ln.publisher_site)
10919                                         , NVL(ln.supplier_company, ln.publisher_company)
10920                                         , NVL(ln.supplier_site, ln.publisher_site)
10921             )
10922         WHERE  ln.parent_header_id = p_header_id AND
10923                ln.line_id = t_line_id(j) AND
10924                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10925                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
10926                                        FROM   fnd_lookup_values flv
10927                                        WHERE  flv.language = p_language AND
10928                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
10929                                        flv.lookup_code IN ( -- G_SELL_THRO_FCST,
10930                                                            -- G_SUPPLIER_CAP,
10931                                                            -- G_PROJ_SS,
10932                                                            -- G_PROJ_ALLOC_AVAIL,
10933                                                            -- G_PROJ_UNALLOC_AVAIL
10934                                                              G_PURCHASE_ORDER
10935                                                            , G_ORDER_FORECAST
10936                                                            , G_SUPPLY_COMMIT
10937                                                            , G_NEGOTIATED_CAPACITY
10938                                                            , G_PO_ACKNOWLEDGEMENT
10939                                                            , G_REQUISITION
10940                                                            , G_SALES_ORDER
10941                                                            ))
10942              AND MSC_X_UTIL.GET_SHIPPING_CONTROL
10943             ( NVL(ln.customer_company, ln.publisher_company)
10944             , NVL(ln.customer_site, ln.publisher_site)
10945             , NVL(ln.supplier_company, ln.publisher_company)
10946             , NVL(ln.supplier_site, ln.publisher_site)
10947             ) = 2 -- customer
10948        	   AND EXISTS ( SELECT ln.customer_company
10949                         FROM msc_companies c
10950                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.supplier_company, ln.publisher_company))
10951                         AND c.company_id = 1
10952                       )
10953             ;
10954 
10955       FORALL j in t_line_id.FIRST..t_line_id.LAST
10956         UPDATE msc_supdem_lines_interface ln
10957         SET    ln.key_date = ln.ship_date,
10958                ln.key_end_date = ln.new_schedule_end_date
10959                 , ln.shipping_control = MSC_X_UTIL.GET_SHIPPING_CONTROL
10960                                         ( NVL(ln.customer_company, ln.publisher_company)
10961                                         , NVL(ln.customer_site, ln.publisher_site)
10962                                         , NVL(ln.supplier_company, ln.publisher_company)
10963                                         , NVL(ln.supplier_site, ln.publisher_site)
10964             )
10965         WHERE  ln.parent_header_id = p_header_id AND
10966                ln.line_id = t_line_id(j) AND
10967                NVL(ln.row_status, G_PROCESS) = G_PROCESS AND
10968                UPPER(ln.order_type) IN (SELECT UPPER(flv.meaning)
10969                                        FROM   fnd_lookup_values flv
10970                                        WHERE  flv.language = p_language AND
10971                                               flv.lookup_type = 'MSC_X_ORDER_TYPE' AND
10972                                        flv.lookup_code IN ( G_SALES_FORECAST
10973                                                           , G_SELL_THRO_FCST
10974                                                            ))
10975        	   AND EXISTS ( SELECT ln.customer_company
10976                         FROM msc_companies c
10977                         WHERE UPPER(c.company_name) = UPPER(NVL(ln.supplier_company, ln.publisher_company))
10978                         AND c.company_id = 1
10979                       )
10980             ;
10981 
10982 
10983 EXCEPTION
10984    WHEN OTHERS THEN
10985        log_message('Error when validating receipt/ship date (validate_rs_dates_customer). Error:'||substr(SQLERRM,1,240));
10986 END validate_rs_dates_customer;
10987 
10988 END msc_sce_loads_pkg;