[Home] [Help]
PACKAGE BODY: APPS.RLM_VALIDATEDEMAND_SV
Source
1 PACKAGE BODY RLM_VALIDATEDEMAND_SV as
2 /* $Header: RLMDPVDB.pls 120.15.12010000.3 2009/08/07 09:27:30 sunilku ship $*/
3 /*=========================RLM_VALIDATEDEMAND_SV ===========================*/
4
5 --
6 l_DEBUG NUMBER := NVL(fnd_profile.value('RLM_DEBUG_MODE'),-1);
7 --
8 /*===========================================================================
9
10 PROCEDURE InitializeGroup
11
12 ===========================================================================*/
13
14 PROCEDURE InitializeGroup(x_header_id IN NUMBER,
15 x_Group_ref IN OUT NOCOPY t_Cursor_ref,
16 p_caller IN VARCHAR2 DEFAULT NULL)
17 IS
18
19 BEGIN
20 --
21 IF (l_debug <> -1) THEN
22 rlm_core_sv.dpush(C_SDEBUG,'InitializeGroup');
23 rlm_core_sv.dlog(C_DEBUG,'x_header_id',x_header_id);
24 rlm_core_sv.dlog(C_DEBUG,'g_header_rec.schedule_type',
25 g_header_rec.schedule_type);
26 rlm_core_sv.dlog(C_DEBUG,'p_caller',p_caller);
27 END IF;
28 --
29
30 IF g_header_rec.schedule_type <> 'SEQUENCED' AND nvl(p_caller,'NULL') <> 'Header' THEN
31 --
32 IF (l_debug <> -1) THEN
33 rlm_core_sv.dlog(C_DEBUG,'p_caller',p_caller);
34 END IF;
35 --
36 OPEN x_Group_ref FOR
37 SELECT 'N',
38 ril.schedule_item_num,
39 null,
40 null,
41 null,
42 null,
43 null,
44 null
45 FROM rlm_interface_headers rih,
46 rlm_interface_lines_all ril
47 WHERE ril.header_id = rih.header_id
48 AND rih.header_id = x_header_id
49 AND rih.org_id = ril.org_id
50 GROUP BY schedule_item_num;
51 --
52 ELSE
53 --
54 /*2313139*/
55
56 IF g_header_rec.schedule_source <> 'MANUAL' THEN
57 --
58 OPEN x_Group_ref FOR
59 SELECT 'S',
60 null,
61 ril.cust_ship_from_org_ext,
62 ril.cust_ship_to_ext,
63 ril.customer_item_ext,
64 null,
65 null,
66 null
67 FROM rlm_interface_headers rih,
68 rlm_interface_lines_all ril
69 WHERE ril.header_id = rih.header_id
70 AND rih.header_id = x_header_id
71 AND rih.org_id = ril.org_id
72 GROUP BY cust_ship_from_org_ext, cust_ship_to_ext,
73 customer_item_ext;
74 --
75 ELSE
76 --
77 OPEN x_Group_ref FOR
78 SELECT 'S',
79 null,
80 null,
81 null,
82 null,
83 ril.customer_item_id,
84 ril.ship_from_org_id,
85 ril.ship_to_address_id
86 FROM rlm_interface_headers rih,
87 rlm_interface_lines_all ril
88 WHERE ril.header_id = rih.header_id
89 AND rih.header_id = x_header_id
90 AND rih.org_id = ril.org_id
91 GROUP BY customer_item_id,
92 ship_from_org_id,
93 ship_to_address_id;
94
95 END IF;
96 --
97 /*2313139*/
98 END IF;
99 --
100 IF (l_debug <> -1) THEN
101 rlm_core_sv.dpop(C_SDEBUG);
102 END IF;
103 --
104 EXCEPTION
105 --
106 WHEN OTHERS THEN
107 --
108 IF (l_debug <> -1) THEN
109 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
110 END IF;
111 --
112 raise;
113 --
114 END InitializeGroup;
115
116 /*===========================================================================
117
118 FUNCTION FetchGroup
119
120 ===========================================================================*/
121 FUNCTION FetchGroup(x_Group_ref IN OUT NOCOPY t_Cursor_ref,
122 x_Group_rec IN OUT NOCOPY t_Group_rec)
123 RETURN BOOLEAN
124 IS
125
126 BEGIN
127 --
128 IF (l_debug <> -1) THEN
129 rlm_core_sv.dpush(C_SDEBUG,'FetchGroup');
130 END IF;
131 --
132 FETCH x_Group_ref INTO
133 x_Group_rec.group_type,
134 x_Group_rec.schedule_item_num,
135 x_Group_rec.cust_ship_from_org_ext,
136 x_Group_rec.cust_ship_to_ext,
137 x_Group_rec.customer_item_ext,
138 x_Group_rec.customer_item_id,
139 x_group_rec.ship_from_org_id,
140 x_group_rec.ship_to_address_id;
141 --
142 IF x_Group_ref%NOTFOUND THEN
143 --
144 IF (l_debug <> -1) THEN
145 rlm_core_sv.dpop(C_SDEBUG, 'false');
146 END IF;
147 --
148 RETURN(FALSE);
149 --
150 ELSE
151 --
152 IF (l_debug <> -1) THEN
153 rlm_core_sv.dlog(C_DEBUG,'group_type',x_Group_rec.group_type);
154 rlm_core_sv.dlog(C_DEBUG,'schedule_item_num',x_Group_rec.schedule_item_num);
155 rlm_core_sv.dpop(C_SDEBUG, 'true');
156 END IF;
157 --
158 RETURN(TRUE);
159 --
160 END IF;
161 --
162 EXCEPTION
163 --
164 WHEN OTHERS THEN
165 --
166 IF (l_debug <> -1) THEN
167 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
168 END IF;
169 --
170 raise;
171 --
172 END FetchGroup;
173
174 /*===========================================================================
175
176 PROCEDURE NAME: CheckHeaderECETpLocCode
177
178 ===========================================================================*/
179
180 PROCEDURE CheckHeaderECETpLocCode(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE,
181 x_ReturnStatus OUT NOCOPY NUMBER)
182 IS
183 --
184 v_progress VARCHAR2(10) := '010';
185 v_Group_ref t_Cursor_ref;
186 v_Group_rec t_Group_rec;
187 v_shiptocustomerid NUMBER;
188 v_prevshiptocustomerid NUMBER;
189 e_NullHeaderLocCode EXCEPTION;
190 e_InvalidTPLocCode EXCEPTION;
191 v_ReturnStatus VARCHAR2(10);
192 v_MsgCount NUMBER;
193 v_MsgData VARCHAR2(2000);
194 v_Customer VARCHAR2(35);
195 v_ShipToLoc VARCHAR2(35);
196 v_shipToAddressId NUMBER;
197 e_InvalidCustomerExt EXCEPTION;
198 e_NullCustomerExt EXCEPTION;
199 e_NullShipToExt EXCEPTION;
200 v_first BOOLEAN;
201 p_caller VARCHAR2(3);
202 --
203 BEGIN
204 --
205 IF (l_debug <> -1) THEN
206 rlm_core_sv.dpush(C_SDEBUG,'CheckHeaderECETpLocCode');
207 rlm_core_sv.dlog(C_DEBUG,'x_header_rec', x_header_rec.header_id);
208 END IF;
209 --
210 IF x_header_rec.customer_id is NULL THEN
211 --
212 v_first := TRUE;
213 --
214 IF x_header_rec.ece_tp_location_code_ext IS NULL THEN
215 --
216 InitializeGroup(x_header_rec.header_id, v_Group_ref, 'Header');
217 --
218 v_progress := '020';
219 --
220 IF (l_debug <> -1) THEN
221 rlm_core_sv.dlog(C_DEBUG,'start of loop to check related ship to');
222 END IF;
223 --
224 WHILE FetchGroup(v_Group_ref, v_Group_rec) LOOP
225 --
226 IF x_header_rec.customer_ext IS NOT NULL THEN
227 --
228 IF (l_debug <> -1) THEN
229 rlm_core_sv.dlog(C_DEBUG,'customer_ext ',x_header_rec.customer_ext);
230 END IF;
231 --
232 v_Customer := x_header_rec.customer_ext;
233 --
234 ELSIF x_header_rec.ece_tp_translator_code IS NOT NULL THEN
235 --
236 IF (l_debug <> -1) THEN
237 rlm_core_sv.dlog(C_DEBUG,'ece_tp_translator_code',
238 x_header_rec.ece_tp_translator_code);
239 END IF;
240 --
241 v_Customer := x_header_rec.ece_tp_translator_code;
242 --
243 ELSE
244 --
245 raise e_NullCustomerExt;
246 --
247 END IF;
248 --
249 IF v_group_rec.cust_ship_to_ext is NULL THEN
250 --
251 raise e_NullShipToExt;
252 --
253 END IF;
254 --
255 IF (l_debug <> -1) THEN
256 rlm_core_sv.dlog(C_DEBUG,'cust_ship_to_ext',
257 v_group_rec.cust_ship_to_ext);
258 END IF;
259 --
260 ece_trading_partners_pub.get_tp_address(1, NULL, NULL, NULL,
261 NULL, v_ReturnStatus, v_MsgCount,
262 v_MsgData,
263 v_customer,
264 v_Group_rec.cust_ship_to_ext,
265 'CUSTOMER',
266 v_shipToCustomerId,
267 v_shipToAddressId);
268 --
269 IF (l_debug <> -1) THEN
270 rlm_core_sv.dlog(C_DEBUG,'customer_id ', v_shipToCustomerId);
271 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ', v_shipToAddressId);
272 END IF;
273 --
274 IF v_shipToCustomerId is NULL THEN
275 --
276 SELECT DISTINCT ACCT_SITE.CUST_ACCOUNT_ID
277 INTO v_shipToCustomerId
278 FROM HZ_CUST_ACCT_SITES ACCT_SITE ,
279 ECE_TP_HEADERS eth
280 WHERE ACCT_SITE.tp_header_id = eth.tp_header_id
281 AND ACCT_SITE.ece_tp_location_code = v_Group_rec.cust_ship_to_ext
282 AND eth.TP_REFERENCE_EXT1 = v_Customer;
283 --
284 END IF;
285
286 IF v_shipToCustomerId IS NULL THEN
287 --
288 raise e_invalidTPLocCode;
289 --
290 END IF;
291 --
292 IF v_shipToCustomerId <> v_prevShiptoCustomerId and NOT v_first THEN
293 --
294 raise e_NullHeaderLocCode;
295 --
296 END IF;
297 --
298 v_prevShiptoCustomerId := v_shipToCustomerId;
299 --
300 v_first := FALSE;
301 --
302 END LOOP; /* while loop */
303 --
304 CLOSE v_Group_ref;
305 --
306 END IF;
307 --
308 x_header_rec.customer_id := v_shipToCustomerId;
309 --
310 END IF;
311 --
312 x_returnStatus := rlm_core_sv.k_PROC_SUCCESS;
313 --
314 IF (l_debug <> -1) THEN
315 rlm_core_sv.dpop(C_SDEBUG);
316 END IF;
317
318 EXCEPTION
319 WHEN e_NullCustomerExt THEN
320 --
321 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
322 g_Schedule_PS := rlm_core_sv.k_PS_ERROR;
323 --
324 rlm_message_sv.app_error(
325 x_ExceptionLevel => rlm_message_sv.k_error_level,
326 x_MessageName => 'RLM_CUSTOMER_NULL',
327 x_InterfaceHeaderId => x_header_rec.header_id,
328 x_ValidationType => 'CUSTOMER');
329 --
330 IF (l_debug <> -1) THEN
331 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
332 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUSTOMER_NULL');
333 END IF;
334 --
335 WHEN e_NullHeaderLocCode THEN
336 --
337 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
338 x_returnStatus := rlm_core_sv.k_PROC_ERROR;
339 --
340 rlm_message_sv.app_error(
341 x_ExceptionLevel => rlm_message_sv.k_error_level,
342 x_MessageName => 'RLM_SCH_NULL_LOC_CODE_CR',
343 x_InterfaceHeaderId => x_Header_Rec.header_id,
344 x_Token1 => 'TRANSLATOR_CODE',
345 x_value1 => x_header_rec.ece_tp_translator_code,
346 x_ValidationType => 'CUSTOMER');
347 --
348 IF (l_debug <> -1) THEN
349 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: RLM_SCH_NULL_LOC_CODE_CR ',v_Progress);
350 rlm_core_sv.dpop(C_SDEBUG);
351 END IF;
352 --
353 WHEN NO_DATA_FOUND OR e_InvalidTPLocCode THEN
354 --
355 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
356 g_Schedule_PS := rlm_core_sv.k_PS_ERROR;
357 x_returnStatus := rlm_core_sv.k_PROC_ERROR;
358 --
359 IF x_header_rec.ece_tp_translator_code IS NOT NULL THEN
360 --
361 rlm_message_sv.app_error(
362 x_ExceptionLevel => rlm_message_sv.k_error_level,
363 x_MessageName => 'RLM_TP_TRANSL_SHIPTO_INVALID',
364 x_InterfaceHeaderId => x_header_rec.header_id,
365 x_token1=>'TP_TRANSLATOR',
366 x_value1=>x_header_rec.ece_tp_translator_code,
367 x_token2=>'SHIP_TO',
368 x_value2=>v_group_rec.cust_ship_to_ext,
369 x_ValidationType => 'CUSTOMER');
370 --
371 IF (l_debug <> -1) THEN
372 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
373 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_TP_TRANSL_SHIPTO_INVALID');
374 END IF;
375 --
376 ELSE
377 --
378 rlm_message_sv.app_error(
379 x_ExceptionLevel => rlm_message_sv.k_error_level,
380 x_MessageName => 'RLM_CUST_SHIP_TO_INVALID',
381 x_InterfaceHeaderId => x_header_rec.header_id,
382 x_token1=>'CUSTOMER_EXT',
383 x_value1=>x_header_rec.customer_ext,
384 x_token2=>'SHIP_TO',
385 x_value2=>v_group_rec.cust_ship_to_ext,
386 x_ValidationType => 'CUSTOMER');
387 --
388 IF (l_debug <> -1) THEN
389 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
390 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUST_SHIP_TO_INVALID');
391 END IF;
392 --
393 END IF;
394 --
395 WHEN e_NullShipToExt THEN
396 --
397 g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
398 x_returnStatus := rlm_core_sv.k_PROC_ERROR;
399 --
400 g_Schedule_PS := rlm_core_sv.k_PS_ERROR;
401 --
402 rlm_message_sv.app_error(
403 x_ExceptionLevel => rlm_message_sv.k_error_level,
404 x_MessageName => 'RLM_SHIPTO_NULL',
405 x_InterfaceHeaderId => x_header_rec.header_id,
406 x_token1=>'CUSTOMER_EXT',
407 x_value1=>v_Customer,
408 x_ValidationType => 'CUSTOMER');
409 --
410 IF (l_debug <> -1) THEN
411 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: RLM_SHIPTO_NULL ',v_Progress);
412 rlm_core_sv.dpop(C_SDEBUG);
413 END IF;
414 --
415 WHEN OTHERS THEN
416 --
417 g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
418 x_returnStatus := rlm_core_sv.k_PROC_ERROR;
419 rlm_message_sv.sql_error('rlm_validatedemand_sv.CheckHeaderECETpLocCode', v_Progress);
420 --
421 IF (l_debug <> -1) THEN
422 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
423 END IF;
424 --
425 END CheckHeaderECETpLocCode;
426
427 /*===========================================================================
428
429 PROCEDURE NAME: GroupValidateDemand
430
431 ===========================================================================*/
432
433 PROCEDURE GroupValidateDemand(x_Header_Id IN RLM_INTERFACE_HEADERS.HEADER_ID%TYPE,
434 x_Procedure_Status OUT NOCOPY NUMBER)
435 IS
436 --
437 v_progress VARCHAR2(10) := '010';
438 x_ReturnStatus NUMBER;
439 v_Group_ref t_Cursor_ref;
440 v_Group_rec t_Group_rec;
441 curr_rec NUMBER;
442 v_bill_to_customer_id NUMBER Default NULL;
443 v_first_time BOOLEAN DEFAULT TRUE;
444 e_no_record_found EXCEPTION;
445 e_error_found EXCEPTION;
446 setupterms_APIFailed EXCEPTION;
447 --
448 e_InactiveBlanket EXCEPTION;
449 --
450 BEGIN
451 --
452 IF (l_debug <> -1) THEN
453 rlm_core_sv.dpush(C_SDEBUG,'GroupValidateDemand');
454 rlm_core_sv.dlog(C_DEBUG,'x_header_id',x_header_id);
455 END IF;
456 --
457 -- we start with a schedule process status of an error
458 -- if we find any one of the lines to be a success then we will
459 -- update the status to success in UpdateInterfaceLines.
460 -- This value of g_schedule_PS will be used to update the header PS
461 -- IF no success record found then g_schedule_PS will remain as an ERROR
462 --
463 g_schedule_PS := rlm_core_sv.k_PS_ERROR;
464 g_line_PS := rlm_core_sv.k_PS_AVAILABLE;
465 --
466 rlm_message_sv.initialize_dependency('VALIDATE_DEMAND');
467 --
468 IF NOT BuildHeaderRec(x_header_id) THEN
469 --
470 RAISE e_no_record_found;
471 --
472 END IF;
473 --
474 ApplyHeaderDefaults(g_header_rec);
475 --
476 v_progress := '020';
477 --
478 RLM_TPA_SV.ValidScheduleHeader(g_header_rec);
479 --
480 v_progress := '025';
481 --
482 CheckHeaderECETpLocCode(g_header_rec, x_ReturnStatus);
483 --
484 IF x_ReturnStatus = rlm_core_sv.k_PROC_ERROR THEN
485 raise e_error_found;
486 END IF;
487 --
488 InitializeGroup(x_header_id, v_Group_ref);
489 --
490 v_progress := '030';
491 --
492 IF (l_debug <> -1) THEN
493 rlm_core_sv.dlog(C_DEBUG,'start of loop');
494 END IF;
495 --
496 WHILE FetchGroup(v_Group_ref, v_Group_rec) LOOP
497 --
498 BEGIN
499 --
500 v_progress := '040';
501 --
502 IF (l_debug <> -1) THEN
503 rlm_core_sv.dlog(C_DEBUG,'v_Group_rec.group_type',
504 v_Group_rec.group_type);
505 rlm_core_sv.dlog(C_DEBUG,'v_Group_rec.schedule_item_num',
506 v_Group_rec.schedule_item_num);
507 END IF;
508 --
509 PopulateLinesTab(v_Group_rec);
510 --
511 v_progress := '060';
512 --
513 -- THis record is used to store the first record which is derived and
514 -- validated for the entire line and then the values are assigned to
515 -- the entire grouping of lines in assign_line_values
516 v_progress := '070';
517 --
518 IF (l_debug <> -1) THEN
519 rlm_core_sv.dlog (C_DEBUG,'before Group Validate loop/ COUNT',
520 g_lines_tab.COUNT );
521 END IF;
522 --
523 v_first_time := TRUE;
524 --
525 --Bug 5098241
526 v_Group_rec.setup_terms_rec := NULL;
527
528 FOR i IN 1..g_lines_tab.COUNT LOOP
529 -- performance related changes have to go in here.
530 -- instead of all the lines validations we need to
531 -- change the loop to be inside each of the following.
532 -- sub types e.g in DeriveCustomerID loop through all
533 -- the values and derive only when the values change or else default
534 --
535 curr_rec := i;
536 --
537 IF (l_debug <> -1) THEN
538 rlm_core_sv.dlog (C_DEBUG,'Processing line' , g_lines_tab(i).line_id);
539 rlm_core_sv.dlog(C_DEBUG, 'Index i', i);
540 END IF;
541
542 --perf code some ids are derived per group only once
543
544 IF(i=1) THEN
545 --
546 DeriveCustomerID(g_header_rec,g_lines_tab(i)) ;
547 DeriveShipToID(g_header_rec, g_lines_tab(i));
548 DeriveShipFromOrg(g_header_rec, g_lines_tab(i));
549 RLM_TPA_SV.ValidateCustomerItem(g_header_rec, g_lines_tab(i));
550
551 --
552 ELSE
553 --
554 IF(NVL(g_lines_tab(i).cust_ship_to_ext,1) = NVL(g_lines_tab(1).cust_ship_to_ext,1)) THEN
555 --
556 IF (l_debug <> -1) THEN
557 rlm_core_sv.dlog(C_DEBUG, 'Line in same group, so copy IDs from first line');
558 END IF;
559 --
560 g_lines_tab(i).ship_to_address_id := NVL(g_lines_tab(1).ship_to_address_id, g_lines_tab(i).ship_to_address_id);
561 --
562 -- CR change
563 g_lines_tab(i).ship_to_customer_id := NVL(g_lines_tab(1).ship_to_customer_id, g_lines_tab(i).ship_to_customer_id);
564 --
565 g_lines_tab(i).ship_to_org_id := NVL(g_lines_tab(1).ship_to_org_id,g_lines_tab(i).ship_to_org_id);
566
567 g_lines_tab(i).ship_to_site_use_id := NVL(g_lines_tab(1).ship_to_site_use_id,g_lines_tab(i).ship_to_site_use_id);
568
569 g_lines_tab(i).customer_item_id:= NVL(g_lines_tab(1).customer_item_id,g_lines_tab(i).customer_item_id);
570 --
571 ELSE
572 --
573 IF (l_debug <> -1) THEN
574 rlm_core_sv.dlog(C_DEBUG, 'Line in different group, so derive IDs again');
575 END IF;
576 --
577 DeriveCustomerID(g_header_rec,g_lines_tab(i)) ;
578 DeriveShipToID(g_header_rec, g_lines_tab(i));
579 RLM_TPA_SV.ValidateCustomerItem(g_header_rec, g_lines_tab(i));
580 --
581 END IF;
582
583 g_lines_tab(i).ship_from_org_id := NVL(g_lines_tab(1).ship_from_org_id,
584 g_lines_tab(i).ship_from_org_id);
585 --
586 END IF;
587
588 --
589 DeriveIntrmdShipToID(g_header_rec, g_lines_tab(i));
590 --
591 RLM_TPA_SV.SetLineTPAttCategory( g_header_rec,
592 g_lines_tab(i),
593 v_Group_rec);
594 --
595 IF (l_debug <> -1) THEN
596 rlm_core_sv.dlog (C_DEBUG,'after DeriveIDs/before CallSetups');
597 END IF;
598 --
599 v_progress := '080';
600 --
601 IF (i=1) THEN /* Call setup terms once for each group */
602 --
603 IF NOT CallSetups(v_Group_rec, g_header_rec, g_lines_tab(i)) THEN
604 --
605 IF (l_debug <> -1) THEN
606 rlm_core_sv.dlog (C_DEBUG,'Setup API failed for line ', g_lines_tab(i).line_id);
607 END IF;
608 --
609 g_lines_tab(i).process_status := rlm_core_sv.k_PS_ERROR;
610 --RAISE setupterms_APIFailed; --continue processing other lines
611 --
612 END IF;
613 --
614 ELSE
615
616 IF(NVL(g_lines_tab(i).ship_to_address_id,1) <> NVL(g_lines_tab(1).ship_to_address_id,1)) THEN
617
618 IF NOT CallSetups(v_Group_rec, g_header_rec, g_lines_tab(i)) THEN
619 --
620 IF (l_debug <> -1) THEN
621 rlm_core_sv.dlog (C_DEBUG,'Setup API failed for line ', g_lines_tab(i).line_id);
622 END IF;
623 --
624 g_lines_tab(i).process_status := rlm_core_sv.k_PS_ERROR;
625 --RAISE setupterms_APIFailed; --continue processing other lines
626 --
627 END IF;
628 --
629 END IF;
630 --
631 END IF;
632
633 --global_atp
634 IF g_lines_tab(i).ship_from_org_id IS NULL THEN
635 --
636 g_lines_tab(i).ship_from_org_id := v_Group_rec.setup_terms_rec.ship_from_org_id;
637 --
638 END IF;
639 --
640 DeriveBillToId(g_header_rec,
641 g_lines_tab(i),
642 v_Group_rec.setup_terms_rec.cum_org_level_code);
643 --
644 DeriveOrgDependentIDs (v_Group_rec.setup_terms_rec,
645 g_header_rec, g_lines_tab(i));
646
647 /** Bugfix 6185706 commented the performance changes
648 --perf changes
649 IF(i=1) THEN
650 --
651 RLM_TPA_SV.DeriveInventoryItemId(g_header_rec, g_lines_tab(i));
652 --
653 ELSE
654 --
655 IF(NVL(g_lines_tab(i).ship_to_address_id,1) <> NVL(g_lines_tab(1).ship_to_address_id,1)) THEN
656 --
657 RLM_TPA_SV.DeriveInventoryItemId(g_header_rec, g_lines_tab(i));
658 --
659 ELSE
660 --
661 g_lines_tab(i).inventory_item_id := NVL(g_lines_tab(1).inventory_item_id,g_lines_tab(i).inventory_item_id);
662 --
663 END IF;
664 --
665 END IF;
666
667 --perf changes
668 --
669 **/
670 v_progress := '80';
671 --
672 IF v_first_time
673 AND g_lines_tab(i).Item_Detail_Type in ('0','1','2')
674 THEN
675 --
676 -- All the lines within a group have the same PO and Cust_rec_year
677 -- This procedure needs to be called once per group.
678 --
679 RLM_TPA_SV.CheckCUMKeyPO(v_group_rec,
680 g_header_rec,
681 g_lines_tab(i));
682 --
683 v_first_time := FALSE;
684 --
685 END IF;
686 --
687 IF (l_debug <> -1) THEN
688 rlm_core_sv.dlog (C_DEBUG,'process_status',g_lines_tab(i).process_status);
689 END IF;
690 --
691 RLM_TPA_SV.ValidateLineDetails(v_Group_rec.setup_terms_rec,
692 g_header_rec,
693 g_lines_tab(i),
694 k_ORIGINAL);
695 --
696 v_progress := '100';
697 --
698 -- For blanket orders
699 --
700 IF (i=1) THEN
701 --
702 IF v_Group_rec.setup_terms_rec.blanket_number IS NOT NULL THEN
703 --
704 DeriveBlanketPO(g_lines_tab(i).cust_po_number, v_Group_rec, x_header_id);
705 --
706 END IF;
707 --
708 ELSE
709 --
710 IF g_lines_tab(i).blanket_number IS NOT NULL AND
711 g_lines_tab(i).blanket_number <> g_lines_tab(1).blanket_number THEN
712 --
713 DeriveBlanketPO(g_lines_tab(i).cust_po_number, v_Group_rec, x_header_id);
714 --
715 END IF;
716 --
717 END IF;
718 --
719 END LOOP; /* for loop */
720 --
721 --
722 -- Blanket Order should be validated after all IDs have been derived
723 --
724 IF v_Group_rec.setup_terms_rec.blanket_number IS NOT NULL THEN
725 --
726 IF NOT ValidateBlanket(v_Group_rec, g_Header_rec) THEN
727 --
728 IF (l_debug <> -1) THEN
729 rlm_core_sv.dlog(C_DEBUG, 'ValidateBlanket failed');
730 END IF;
731 --
732 g_lines_tab(1).process_status := rlm_core_sv.k_PS_ERROR;
733 RAISE e_InactiveBlanket;
734 --
735 END IF;
736 --
737 END IF;
738 --
739 RLM_TPA_SV.UpdateInterfaceLines(g_header_rec);
740 --
741 --commit;
742 --
743 -- We need to reset_dependency so that the next group does not face the
744 -- same dependency problem
745 --
746 rlm_message_sv.reset_dependency;
747 --
748 -- bug 4570658
749 --
750 g_lines_tab.DELETE;
751
752 EXCEPTION
753 --
754 WHEN setupterms_APIFailed THEN
755 --
756 IF (l_debug <> -1) THEN
757 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
758 END IF;
759 /* update error status for the entire group */
760 RLM_TPA_SV.UpdateInterfaceLines(g_header_rec);
761 --
762 WHEN e_InactiveBlanket THEN
763 --
764 IF (l_debug <> -1) THEN
765 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
766 END IF;
767 --
768 RLM_TPA_SV.UpdateInterfaceLines(g_header_rec);
769 --
770 WHEN OTHERS THEN
771 --
772 IF (l_debug <> -1) THEN
773 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
774 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: LOOP '||SUBSTR(SQLERRM,1,200));
775 rlm_core_sv.dlog (C_DEBUG,'g_lines_tab(curr_rec).process_status',
776 g_lines_tab(curr_rec).process_status);
777 END IF;
778 --
779 g_lines_tab(curr_rec).process_status := rlm_core_sv.k_PS_ERROR;
780 --
781 IF (l_debug <> -1) THEN
782 rlm_core_sv.dlog (C_DEBUG,'g_lines_tab(curr_rec).process_status',
783 g_lines_tab(curr_rec).process_status);
784 END IF;
785 --
786 /* update error status for the entire group */
787 RLM_TPA_SV.UpdateInterfaceLines(g_header_rec);
788 --
789 END;
790 --
791 END LOOP; /* while loop */
792 --
793 CLOSE v_Group_ref;
794 --
795 --bug 1560271
796 --
797 IF g_header_rec.process_status = rlm_core_sv.k_PS_ERROR THEN
798 g_schedule_PS := rlm_core_sv.k_PS_ERROR;
799 END IF;
800 --
801 UpdateInterfaceHeaders;
802 --
803 --commit;
804 --
805 x_procedure_status := rlm_core_sv.k_PROC_SUCCESS;
806 --
807 FOR i IN 1..rlm_message_sv.g_message_tab.COUNT LOOP
808 --
809 IF (l_debug <> -1) THEN
810 rlm_core_sv.dlog(C_DEBUG,'Message: ',
811 rlm_message_sv.g_message_tab(i).message_name);
812 END IF;
813 --
814 END LOOP;
815 --
816 --commit;
817 --
818 IF (l_debug <> -1) THEN
819 rlm_core_sv.dpop(C_SDEBUG);
820 END IF;
821 --
822 EXCEPTION
823 --
824 WHEN e_error_found THEN
825 --
826 x_procedure_status := rlm_core_sv.k_PROC_ERROR;
827 --
828 IF (l_debug <> -1) THEN
829 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
830 rlm_core_sv.dpop(C_SDEBUG);
831 END IF;
832 --
833 --added by asutar
834 UpdateInterfaceHeaders;
835 --commit;
836 --
837 WHEN NO_DATA_FOUND THEN
838 --
839 x_procedure_status := rlm_core_sv.k_PROC_ERROR;
840 --
841 IF (l_debug <> -1) THEN
842 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
843 rlm_core_sv.dpop(C_SDEBUG);
844 END IF;
845 --
846 --added by asutar
847 UpdateInterfaceHeaders;
848 --commit;
849 --
850 WHEN e_no_record_found THEN
851 --
852 x_procedure_status := rlm_core_sv.k_PROC_ERROR;
853 --
854 IF (l_debug <> -1) THEN
855 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
856 rlm_core_sv.dpop(C_SDEBUG);
857 END IF;
858 --
859 --added by asutar
860 UpdateInterfaceHeaders;
861 --commit;
862 --
863 WHEN OTHERS THEN
864 --
865 x_procedure_status := rlm_core_sv.k_PROC_ERROR;
866 rlm_message_sv.sql_error('rlm_validatedemand_sv.GroupValidateDemand', v_Progress);
867 --
868 IF (l_debug <> -1) THEN
869 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
870 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
871 END IF;
872 --
873 --added by asutar
874 UpdateInterfaceHeaders;
875 --commit;
876 raise;
877 --
878 END GroupValidateDemand;
879
880 /*===========================================================================
881
882 PROCEDURE NAME: ValidateLineDetails
883
884 ===========================================================================*/
885 PROCEDURE ValidateLineDetails(
886 x_setup_terms_rec IN rlm_setup_terms_sv.setup_terms_rec_typ,
887 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
888 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE,
889 x_line_source IN VARCHAR2)
890 IS
891 --
892 v_progress VARCHAR2(3) := '010';
893 x_ForecastDesignator VARCHAR2(30);
894 --
895 BEGIN
896 --
897 IF rlm_message_sv.check_dependency('VALIDATE_LINES') THEN
898 --
899 IF (l_debug <> -1) THEN
900 rlm_core_sv.dpush(C_SDEBUG,'ValidateLineDetails');
901 END IF;
902 --
903 IF x_line_source = k_ORIGINAL THEN
904 --
905 RLM_TPA_SV.ValidItemDetailType(x_header_rec, x_lines_rec);
906 --
907 RLM_TPA_SV.ValidItemDetailSubtype(x_header_rec, x_lines_rec);
908 --
909 RLM_TPA_SV.ValidQtyTypeCode(x_setup_terms_rec, x_header_rec, x_lines_rec);
910 --
911 RLM_TPA_SV.ValidItemDetailQty(x_header_rec, x_lines_rec);
912 --
913 RLM_TPA_SV.ValidDateTypeCode(x_header_rec, x_lines_rec);
914 --
915 RLM_TPA_SV.ValidDateRange(x_header_rec, x_lines_rec);
916 --
917 RLM_TPA_SV.ValidateUOM(x_header_rec, x_lines_rec);
918 --
919 --bug 1811536
920 --RLM_TPA_SV.ValidPlanningProdSeqNum(x_setup_terms_rec,x_header_rec, x_lines_rec);
921 --
922 RLM_TPA_SV.ValidLineScheduleType(x_header_rec, x_lines_rec);
923 --
924 --performance changes
925 --ValidForecastDesig(x_setup_terms_rec,x_header_rec, x_lines_rec,x_ForecastDesignator);
926 --
927 END IF;
928 --
929 -- Call to ValidOrderHeaderId should be made only if blankets are not setup.
930 --
931 IF x_setup_terms_rec.blanket_number IS NULL THEN
932 --
933 RLM_TPA_SV.ValidOrderHeaderId(x_setup_terms_rec, x_header_rec, x_lines_rec);
934 x_lines_rec.blanket_number := x_setup_terms_rec.blanket_number;
935 --
936 ELSE
937 --
938 x_lines_rec.blanket_number := x_setup_terms_rec.blanket_number;
939 x_lines_rec.order_header_id := x_setup_terms_rec.header_id;
940 --
941 END IF;
942 --
943 ValidateDateTypeATP(x_lines_rec);
944 ValidateCriticalKeys(x_setup_terms_rec, x_header_rec, x_lines_rec);
945 --
946 --CheckCUMKeyPO(x_setup_terms_rec, x_header_rec, x_lines_rec);
947 --
948 v_progress := '060';
949 --
950 IF (l_debug <> -1) THEN
951 rlm_core_sv.dpop(C_SDEBUG);
952 END IF;
953 --
954 END IF;
955 --
956 EXCEPTION
957 WHEN OTHERS THEN
958 --
959 --x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
960 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidateLineDetails',
961 v_Progress);
962 --
963 IF (l_debug <> -1) THEN
964 rlm_core_sv.dlog(C_DEBUG,'process_status',x_lines_rec.process_status);
965 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
966 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
967 END IF;
968 --
969 raise;
970 --
971 END ValidateLineDetails;
972
973 /*===========================================================================
974
975 PROCEDURE NAME: GetOrderNumber
976
977 ===========================================================================*/
978
979 FUNCTION GetOrderNumber(x_order_header_id IN NUMBER)
980 RETURN NUMBER
981 IS
982 v_ord_num NUMBER;
983 BEGIN
984 --
985 SELECT order_number
986 INTO v_ord_num
987 FROM oe_order_headers_all
988 WHERE header_id = x_order_header_id;
989 --
990 RETURN v_ord_num;
991 --
992 EXCEPTION
993 --
994 WHEN NO_DATA_FOUND THEN
995 RETURN null;
996 --
997 WHEN OTHERS THEN
998 raise;
999 --
1000 END GetOrderNumber;
1001 /*===========================================================================
1002
1003 PROCEDURE NAME: ValidOrderHeaderId
1004
1005 ===========================================================================*/
1006
1007 PROCEDURE ValidOrderHeaderId(
1008 x_setup_terms_rec IN rlm_setup_terms_sv.setup_terms_rec_typ,
1009 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
1010 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
1011 IS
1012 e_NoOrderDefined EXCEPTION;
1013 e_OrderClosed EXCEPTION;
1014 e_OrderIDMismatch EXCEPTION;
1015 e_SalesOrderMissing EXCEPTION;
1016 e_SetupOrderMissing EXCEPTION;
1017 w_CustOrderInvalid EXCEPTION;
1018 x_Exists NUMBER := 0;
1019 v_Progress VARCHAR2(3) := '010';
1020 v_OpenFlag VARCHAR2(1) ;
1021 v_OrderNumber NUMBER ;
1022
1023 BEGIN
1024
1025 IF rlm_message_sv.check_dependency('ORDER_HEADER') THEN
1026 --
1027 IF (l_debug <> -1) THEN
1028 rlm_core_sv.dpush(C_SDEBUG,'ValidOrderHeaderId');
1029 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.Order_header_Id',
1030 x_lines_rec.Order_header_Id);
1031 END IF;
1032 --
1033 IF x_lines_rec.cust_order_num_ext IS NULL THEN
1034 --{
1035 IF (l_debug <> -1) THEN
1036 rlm_core_sv.dlog('Order Number on Schedule is Null ');
1037 rlm_core_sv.dlog('Order Header Id Null. Using default Setup.');
1038 END IF;
1039 --
1040 IF x_setup_terms_rec.header_id IS NOT NULL THEN
1041 --{
1042 x_lines_rec.Order_header_id := x_setup_terms_rec.header_id;
1043 --
1044 IF (l_debug <> -1) THEN
1045 rlm_core_sv.dlog(C_DEBUG,'Order_header_Id',x_lines_rec.Order_header_Id);
1046 END IF;
1047 --
1048 SELECT open_flag, order_number
1049 INTO v_OpenFlag, v_OrderNumber
1050 FROM oe_order_headers_all
1051 WHERE header_id = x_lines_rec.Order_header_id;
1052 --
1053 IF (l_debug <> -1) THEN
1054 rlm_core_sv.dlog(C_DEBUG,'v_OpenFlag',v_OpenFlag);
1055 rlm_core_sv.dlog(C_DEBUG, 'v_OrderNumber', v_OrderNumber);
1056 END IF;
1057 --
1058 IF v_OpenFlag = 'N' then
1059 --
1060 raise e_OrderClosed;
1061 --
1062 END IF;
1063 --}
1064 ELSE
1065 --
1066 raise e_SalesOrderMissing;
1067 --
1068 END IF;
1069 --}
1070 ELSE
1071 --{
1072 BEGIN
1073 --{
1074 IF (l_debug <> -1) THEN
1075 rlm_core_sv.dlog('Order Number on schedule not Null ');
1076 rlm_core_sv.dlog(C_DEBUG,'cust_order_num_ext',
1077 x_lines_rec.cust_order_num_ext);
1078 END IF;
1079 --
1080 IF x_setup_terms_rec.header_id IS NOT NULL THEN
1081 --{
1082 SELECT order_number, open_flag
1083 INTO v_Ordernumber, v_OpenFlag
1084 FROM oe_order_headers_all
1085 WHERE header_id = x_setup_terms_rec.header_id;
1086 --
1087 IF (l_debug <> -1) THEN
1088 rlm_core_sv.dlog('From setup terms');
1089 rlm_core_sv.dlog(C_DEBUG,'v_Ordernumber', v_Ordernumber);
1090 rlm_core_sv.dlog(C_DEBUG,'v_OpenFlag', v_OpenFlag);
1091 END IF;
1092 --
1093 BEGIN
1094 --{
1095 IF to_number(x_lines_rec.cust_order_num_ext) <> v_Ordernumber THEN
1096 --
1097 IF (l_debug <> -1) THEN
1098 rlm_core_sv.dlog('Order Mismatch found, between setup terms and order number on schedule');
1099 END IF;
1100 --
1101 raise e_OrderIDMismatch;
1102 --
1103 END IF;
1104 --
1105 IF v_OpenFlag = 'N' THEN
1106 --
1107 IF (l_debug <> -1) THEN
1108 rlm_core_sv.dlog(C_DEBUG, 'Order is closed');
1109 END IF;
1110 --
1111 RAISE e_OrderClosed;
1112 --
1113 END IF;
1114 --
1115 EXCEPTION
1116 --
1117 WHEN e_OrderIDMismatch THEN
1118 --
1119 raise e_OrderIDMismatch;
1120 --
1121 WHEN e_OrderClosed THEN
1122 --
1123 RAISE e_OrderClosed;
1124 --
1125 WHEN OTHERS THEN
1126 --
1127 raise invalid_number;
1128 --
1129 --}
1130 END;
1131 --
1132 x_lines_rec.Order_header_id := x_setup_terms_rec.header_id;
1133 --
1134 IF (l_debug <> -1) THEN
1135 rlm_core_sv.dlog(C_DEBUG,'Order_header_Id',
1136 x_lines_rec.Order_header_Id);
1137 END IF;
1138 --}
1139 ELSE
1140 --
1141 raise e_SetupOrderMissing;
1142 --
1143 END IF;
1144 --
1145 EXCEPTION
1146 --
1147 WHEN NO_DATA_FOUND THEN
1148 --
1149 IF (l_debug <> -1) THEN
1150 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: e_SetupOrderMissing');
1151 END IF;
1152 --
1153 raise e_SetupOrderMissing;
1154 --
1155 WHEN INVALID_NUMBER THEN
1156 --
1157 rlm_message_sv.app_error(
1158 x_ExceptionLevel => rlm_message_sv.k_warn_level,
1159 x_MessageName => 'RLM_WARN_ORDER_INVALID_NUMBER',
1160 x_InterfaceHeaderId => x_lines_rec.header_id,
1161 x_InterfaceLineId => x_lines_rec.line_id,
1162 x_token1=>'CUST_ORDER_NUM_EXT',
1163 x_value1=>x_lines_rec.cust_order_num_ext,
1164 x_ValidationType => 'ORDER_HEADER');
1165 --
1166 IF (l_debug <> -1) THEN
1167 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: INVALID_NUMBER');
1168 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: RLM_WARN_ORDER_INVALID_NUMBER');
1169 END IF;
1170 --
1171 WHEN e_SetupOrderMissing THEN
1172 --
1173 raise;
1174 --
1175 WHEN OTHERS THEN
1176 --
1177 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1178 --
1179 IF (l_debug <> -1) THEN
1180 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: ValidOrderHeader'||SUBSTR(SQLERRM,1,200));
1181 END IF;
1182 --
1183 raise ;
1184 --}
1185 END;
1186 --}
1187 END IF;
1188 --
1189 IF (l_debug <> -1) THEN
1190 rlm_core_sv.dlog(C_DEBUG,'Order_header_Id',x_lines_rec.Order_header_Id);
1191 END IF;
1192 --
1193 IF (l_debug <> -1) THEN
1194 rlm_core_sv.dpop(C_SDEBUG);
1195 END IF;
1196 --
1197 END IF;
1198
1199 EXCEPTION
1200 --
1201 WHEN NO_DATA_FOUND THEN
1202 --
1203 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1204 --
1205 rlm_message_sv.app_error(
1206 x_ExceptionLevel => rlm_message_sv.k_error_level,
1207 x_MessageName => 'RLM_SALES_ORDER_MISSING',
1208 x_InterfaceHeaderId => x_lines_rec.header_id,
1209 x_InterfaceLineId => x_lines_rec.line_id,
1210 x_ValidationType => 'ORDER_HEADER');
1211 --
1212 IF (l_debug <> -1) THEN
1213 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SALES_ORDER_MISSING');
1214 END IF;
1215 --
1216 WHEN e_SalesOrderMissing THEN
1217 --
1218 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1219 --
1220 rlm_message_sv.app_error(
1221 x_ExceptionLevel => rlm_message_sv.k_error_level,
1222 x_MessageName => 'RLM_SALES_ORDER_MISSING',
1223 x_InterfaceHeaderId => x_lines_rec.header_id,
1224 x_InterfaceLineId => x_lines_rec.line_id,
1225 x_ValidationType => 'ORDER_HEADER');
1226 --
1227 IF (l_debug <> -1) THEN
1228 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SALES_ORDER_MISSING');
1229 END IF;
1230 --
1231 WHEN e_SetupOrderMissing THEN
1232 --
1233 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1234 --
1235 rlm_message_sv.app_error(
1236 x_ExceptionLevel => rlm_message_sv.k_error_level,
1237 x_MessageName => 'RLM_SETUP_ORDER_MISSING',
1238 x_InterfaceHeaderId => x_lines_rec.header_id,
1239 x_InterfaceLineId => x_lines_rec.line_id,
1240 x_ValidationType => 'ORDER_HEADER');
1241 --
1242 IF (l_debug <> -1) THEN
1243 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SETUP_ORDER_MISSING');
1244 END IF;
1245 --
1246 WHEN e_NoOrderDefined THEN
1247 --
1248 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1249 --
1250 --
1251 -- Fetch relevant Cust_Order_num_ext for given header Id for error message
1252 rlm_message_sv.app_error(
1253 x_ExceptionLevel => rlm_message_sv.k_error_level,
1254 x_MessageName => 'RLM_SALES_ORDER_UNDEFINED',
1255 x_InterfaceHeaderId => x_lines_rec.header_id,
1256 x_InterfaceLineId => x_lines_rec.line_id,
1257 x_token1=>'CUST_ORDER_NUM_EXT',
1258 x_value1=>x_lines_rec.cust_order_num_ext,
1259 x_ValidationType => 'ORDER_HEADER');
1260 --
1261 IF (l_debug <> -1) THEN
1262 rlm_core_sv.dlog(C_DEBUG,'Order_header_Id',x_lines_rec.Order_header_Id);
1263 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SALES_ORDER_UNDEFINED');
1264 END IF;
1265 --
1266 WHEN e_OrderClosed THEN
1267 --
1268 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1269 --
1270 rlm_message_sv.app_error(
1271 x_ExceptionLevel => rlm_message_sv.k_error_level,
1272 x_MessageName => 'RLM_SALES_ORDER_CLOSED',
1273 x_InterfaceHeaderId => x_lines_rec.header_id,
1274 x_InterfaceLineId => x_lines_rec.line_id,
1275 x_token1=>'CUST_ORDER_NUM_EXT',
1276 x_value1=>v_OrderNumber,
1277 x_ValidationType => 'ORDER_HEADER');
1278 --
1279 IF (l_debug <> -1) THEN
1280 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SALES_ORDER_CLOSED');
1281 END IF;
1282 --
1283 WHEN e_OrderIDMismatch THEN
1284 --
1285 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1286 --
1287 rlm_message_sv.app_error(
1288 x_ExceptionLevel => rlm_message_sv.k_error_level,
1289 x_MessageName => 'RLM_ORDER_ID_MISMATCH',
1290 x_InterfaceHeaderId => x_lines_rec.header_id,
1291 x_InterfaceLineId => x_lines_rec.line_id,
1292 x_token1=>'SCH_ORDER_NUM',
1293 x_value1=>GetOrderNumber(x_lines_rec.order_header_id),
1294 x_token2=>'SETUP_ORDER_NUM',
1295 x_value2=>GetOrderNumber(x_setup_terms_rec.header_id),
1296 x_ValidationType => 'ORDER_HEADER');
1297
1298 IF (l_debug <> -1) THEN
1299 rlm_core_sv.dlog(C_DEBUG,'Order_header_Id',x_lines_rec.Order_header_Id);
1300 rlm_core_sv.dlog(C_DEBUG,'x_setup_terms_rec.header_id',x_setup_terms_rec.header_id);
1301 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_ORDER_ID_MISMATCH');
1302 END IF;
1303
1304 WHEN OTHERS THEN
1305 --
1306 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1307 --
1308 rlm_message_sv.sql_error('rlm_validateDemand_sv.ValidOrderHeaderId',
1309 v_Progress);
1310 --
1311 IF (l_debug <> -1) THEN
1312 rlm_core_sv.dlog(C_DEBUG,'process_status',x_lines_rec.process_status);
1313 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
1314 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
1315 END IF;
1316 --
1317 raise;
1318 --
1319 END ValidOrderHeaderId;
1320
1321 /*===========================================================================
1322
1323 PROCEDURE NAME: ValidateUOM
1324
1325 ===========================================================================*/
1326 PROCEDURE ValidateUOM(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
1327 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
1328 IS
1329 v_Progress VARCHAR(3) := '010';
1330 v_Primary_UOM_Code VARCHAR(3);
1331 v_Primary_UOM_Class VARCHAR(10);
1332 v_UOM_Class VARCHAR(10);
1333 v_Cust_UOM_Class VARCHAR(10);
1334 v_Cust_UOM_Code VARCHAR(10);
1335 v_Count NUMBER;
1336 e_UOMInactive EXCEPTION;
1337 e_PrimaryCodeMissing EXCEPTION;
1338 e_NoConvPrimary EXCEPTION;
1339 e_NoConvCustItemUOM EXCEPTION;
1340 e_CustUOMDiff EXCEPTION;
1341 x_Success NUMBER := 1;
1342
1343 CURSOR c_uom IS
1344 SELECT 1
1345 FROM MTL_UNITS_OF_MEASURE_vl
1346 WHERE UOM_CODE = x_lines_rec.uom_code;
1347
1348 -- Bug 4176961
1349 CURSOR c_primary_uom IS
1350 SELECT PRIMARY_UOM_CODE
1351 FROM MTL_SYSTEM_ITEMS
1352 WHERE INVENTORY_ITEM_ID = x_lines_rec.INVENTORY_ITEM_ID
1353 AND ORGANIZATION_ID = x_lines_rec.ship_from_org_id;
1354
1355 BEGIN
1356 IF rlm_message_sv.check_dependency('UOM_CODE') THEN
1357 --
1358 IF (l_debug <> -1) THEN
1359 rlm_core_sv.dpush(C_SDEBUG,'ValidateUOM');
1360 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.uom_code',x_lines_rec.UOM_CODE);
1361 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.INVENTORY_ITEM_ID',x_lines_rec.INVENTORY_ITEM_ID);
1362 --global_atp
1363 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.ship_from_org_id',x_lines_rec.ship_from_org_id);
1364 END IF;
1365 --
1366 OPEN c_uom ;
1367 --
1368 FETCH c_uom INTO x_success;
1369 --
1370 IF c_uom%NOTFOUND THEN
1371 --
1372 CLOSE c_uom;
1373 RAISE e_UOMInactive;
1374 --
1375 END IF;
1376 CLOSE c_uom; --4570658
1377 --
1378 -- Bug 4176961
1379 --
1380 OPEN c_primary_uom;
1381 --
1382 FETCH c_primary_uom iNTO v_Primary_UOM_Code;
1383 --
1384 x_lines_rec.primary_uom_code := v_Primary_UOM_Code;
1385 --
1386 IF (l_debug <> -1) THEN
1387 rlm_core_sv.dlog(C_DEBUG,'v_Primary_UOM_Code',v_Primary_UOM_Code);
1388 END IF;
1389 --
1390 v_Progress := '020';
1391 IF v_Primary_UOM_Code IS NULL THEN
1392 raise e_PrimaryCodeMissing;
1393 END IF;
1394 --
1395 -- Bug 4176961
1396 --
1397 IF v_Primary_UOM_Code <> x_lines_rec.UOM_Code THEN
1398 g_convert_uom := TRUE;
1399 END IF;
1400 IF (l_debug <> -1) THEN
1401 rlm_core_sv.dlog(C_DEBUG,'g_convert_uom',g_convert_uom);
1402 END IF;
1403 --
1404
1405 /* THIS CHECK IS NOT NEEDED AS OE ACCEPTS ANY UOM SENT IN
1406 SO WE DO NOT NEED TO verify that a conversion is available or not
1407 -- check if the primary UOM_Code is different
1408
1409 IF v_Primary_UOM_Code <> x_lines_rec.UOM_Code THEN
1410 SELECT Count(*)
1411 INTO v_Count
1412 FROM MTL_UOM_CONVERSIONS a, MTL_UOM_CONVERSIONS b
1413 WHERE a.UOM_CODE = v_Primary_UOM_Code
1414 AND b.UOM_CODE = x_lines_rec.UOM_Code
1415 AND a.UOM_CLASS = b.UOM_CLASS ;
1416 --
1417 IF (l_debug <> -1) THEN
1418 rlm_core_sv.dlog(C_DEBUG,'v_Count',v_Count);
1419 END IF;
1420 --
1421 IF v_Count < 1 THEN
1422 raise e_NoConvPrimary;
1423 END IF;
1424 END IF;
1425 */
1426 --
1427 IF (l_debug <> -1) THEN
1428 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
1429 rlm_core_sv.dpop(C_SDEBUG);
1430 END IF;
1431 --
1432 END IF;
1433
1434 EXCEPTION
1435 WHEN e_UOMInactive THEN
1436 --
1437 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1438 --
1439 rlm_message_sv.app_error(
1440 x_ExceptionLevel => rlm_message_sv.k_error_level,
1441 x_MessageName => 'RLM_UOM_INACTIVE',
1442 x_InterfaceHeaderId => x_lines_rec.header_id,
1443 x_InterfaceLineId => x_lines_rec.line_id,
1444 x_token1=>'UOM_CODE',
1445 x_value1=>x_lines_rec.uom_code,
1446 x_ValidationType => 'UOM_CODE');
1447 --
1448 IF (l_debug <> -1) THEN
1449 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_UOM_INACTIVE ');
1450 END IF;
1451 --
1452 WHEN NO_DATA_FOUND THEN
1453 --
1454 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1455 --
1456 rlm_message_sv.app_error(
1457 x_ExceptionLevel => rlm_message_sv.k_error_level,
1458 x_MessageName => 'RLM_UOM_INVALID',
1459 x_InterfaceHeaderId => x_lines_rec.header_id,
1460 x_InterfaceLineId => x_lines_rec.line_id,
1461 x_token1=>'UOM_CODE',
1462 x_value1=>x_lines_rec.uom_code,
1463 x_ValidationType => 'UOM_CODE');
1464 --
1465 IF (l_debug <> -1) THEN
1466 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_UOM_INVALID ');
1467 END IF;
1468 --
1469 WHEN e_PrimaryCodeMissing THEN
1470 --
1471 rlm_message_sv.app_error(
1472 x_ExceptionLevel => rlm_message_sv.k_warn_level,
1473 x_MessageName => 'RLM_WARN_NO_PRIMARY_UOM',
1474 x_InterfaceHeaderId => x_lines_rec.header_id,
1475 x_InterfaceLineId => x_lines_rec.line_id,
1476 x_ValidationType => 'UOM_CODE');
1477 --
1478 IF (l_debug <> -1) THEN
1479 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_WARN_NO_PRIMARY_UOM');
1480 END IF;
1481 --
1482 WHEN OTHERS THEN
1483 --
1484 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1485 --
1486 rlm_message_sv.sql_error('rlm_validateDemand_sv.ValidateUOM', v_Progress);
1487 --
1488 IF (l_debug <> -1) THEN
1489 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
1490 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
1491 END IF;
1492 --
1493 raise;
1494 --
1495 END ValidateUOM;
1496 /*===========================================================================
1497
1498 PROCEDURE NAME: ValidDateRange
1499
1500 ===========================================================================*/
1501 PROCEDURE ValidDateRange(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
1502 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
1503 IS
1504 --
1505 v_progress VARCHAR2(3) := '010';
1506 e_DateRangeInv EXCEPTION;
1507 e_StartHorizonInv EXCEPTION;
1508 e_EndHorizonInv EXCEPTION;
1509 e_StartDateInv EXCEPTION;
1510 --
1511 BEGIN
1512 --
1513 IF rlm_message_sv.check_dependency('DATE_RANGE') THEN
1514 --
1515 IF (l_debug <> -1) THEN
1516 rlm_core_sv.dpush(C_SDEBUG,'ValidDateRange');
1517 rlm_core_sv.dlog(C_DEBUG,'Horizon Start Date',
1518 x_header_rec.sched_horizon_start_date);
1519 rlm_core_sv.dlog(C_DEBUG,'Horizon End Date',
1520 x_header_rec.sched_horizon_end_date);
1521 rlm_core_sv.dlog(C_DEBUG,'Start_Date_Time',
1522 x_lines_rec.start_date_time);
1523 rlm_core_sv.dlog(C_DEBUG,'End_Date_Time',
1524 x_lines_rec.end_date_time);
1525 END IF;
1526 --
1527 IF (x_lines_rec.end_date_time is NOT NULL) AND
1528 (x_lines_rec.end_date_time < x_lines_rec.start_date_time)
1529 THEN
1530 raise e_DateRangeInv;
1531 END IF;
1532 --
1533 v_progress := '020';
1534 --
1535 IF (x_lines_rec.start_date_time is NOT NULL) THEN
1536 --
1537 IF (x_lines_rec.start_date_time >=
1538 (TRUNC(x_header_rec.sched_horizon_end_date) + 1)) THEN
1539 --
1540 v_progress := '030';
1541 raise e_EndHorizonInv;
1542 --
1543 END IF;
1544 --
1545 ELSE
1546 --
1547 v_progress := '040';
1548 raise e_StartDateInv;
1549 --
1550 END IF;
1551 --
1552 IF (l_debug <> -1) THEN
1553 rlm_core_sv.dpop(C_SDEBUG);
1554 END IF;
1555 --
1556 END IF;
1557 --
1558 EXCEPTION
1559 WHEN e_EndHorizonInv THEN
1560 --
1561 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1562 --
1563 rlm_message_sv.app_error(
1564 x_ExceptionLevel => rlm_message_sv.k_error_level,
1565 x_MessageName => 'RLM_END_HORIZON_INVALID',
1566 x_InterfaceHeaderId => x_lines_rec.header_id,
1567 x_InterfaceLineId => x_lines_rec.line_id,
1568 x_token1=>'START_DATE_TIME',
1569 x_value1=>x_lines_rec.start_date_time,
1570 x_token2=>'END_HORIZON_DATE',
1571 x_value2=>x_header_rec.sched_horizon_end_date,
1572 x_ValidationType => 'DATE_RANGE');
1573 --
1574 IF (l_debug <> -1) THEN
1575 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_END_HORIZON_INVALID');
1576 END IF;
1577 --
1578 WHEN e_StartDateInv THEN
1579 --
1580 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1581 --
1582 rlm_message_sv.app_error(
1583 x_ExceptionLevel => rlm_message_sv.k_error_level,
1584 x_MessageName => 'RLM_START_DATE_NULL',
1585 x_InterfaceHeaderId => x_lines_rec.header_id,
1586 x_InterfaceLineId => x_lines_rec.line_id,
1587 x_ValidationType => 'DATE_RANGE');
1588 --
1589 IF (l_debug <> -1) THEN
1590 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_START_DATE_NULL');
1591 END IF;
1592 --
1593 WHEN e_DateRangeInv THEN
1594 --
1595 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1596 rlm_message_sv.app_error(x_MessageName => 'RLM_DATE_RANGE_INVALID',
1597 x_InterfaceHeaderId => x_lines_rec.header_id,
1598 x_InterfaceLineId => x_lines_rec.line_id,
1599 x_token1=>'START_DATE_TIME',
1600 x_value1=>x_lines_rec.start_date_time,
1601 x_token2=>'END_DATE_TIME',
1602 x_value2=>x_lines_rec.end_date_time,
1603 x_ValidationType => 'DATE_RANGE');
1604 --
1605 IF (l_debug <> -1) THEN
1606 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_DATE_RANGE_INVALID');
1607 END IF;
1608 --
1609 WHEN OTHERS THEN
1610 --
1611 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1612 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidDateRange',v_Progress);
1613 --
1614 IF (l_debug <> -1) THEN
1615 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
1616 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
1617 END IF;
1618 --
1619 raise;
1620 --
1621 END ValidDateRange;
1622 /*===========================================================================
1623
1624 PROCEDURE NAME: ValidDateTypeCode
1625
1626 ===========================================================================*/
1627 PROCEDURE ValidDateTypeCode(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
1628 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
1629 IS
1630 --
1631 v_progress VARCHAR2(3) := '010';
1632 e_DateTypeInv EXCEPTION;
1633 --
1634 BEGIN
1635 --
1636 IF rlm_message_sv.check_dependency('DATE_TYPE_CODE') THEN
1637 --
1638 IF (l_debug <> -1) THEN
1639 rlm_core_sv.dpush(C_SDEBUG,'ValidDateTypeCode');
1640 END IF;
1641 --
1642 -- Allow custom date type values
1643 IF NOT x_lines_rec.item_detail_type in ('3','4','5') Then
1644 IF NOT RLM_TPA_SV.ValidLookup('RLM_DATE_TYPE_CODE', x_lines_rec.date_type_code,
1645 Sysdate) THEN
1646 --
1647 v_progress := '020';
1648 raise e_DateTypeInv;
1649 --
1650 END IF;
1651 END IF;
1652 --
1653 IF (l_debug <> -1) THEN
1654 rlm_core_sv.dpop(C_SDEBUG);
1655 END IF;
1656 --
1657 END IF;
1658 --
1659 EXCEPTION
1660 WHEN e_DateTypeInv THEN
1661 --
1662 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1663 --
1664 rlm_message_sv.app_error(
1665 x_ExceptionLevel => rlm_message_sv.k_error_level,
1666 x_MessageName => 'RLM_ITEM_DTL_DATE_TYPE_INVALID',
1667 x_InterfaceHeaderId => x_lines_rec.header_id,
1668 x_InterfaceLineId => x_lines_rec.line_id,
1669 x_token1=>'DATE_TYPE_CODE',
1670 x_value1=>x_lines_rec.date_type_code,
1671 x_ValidationType => 'DATE_TYPE_CODE');
1672 --
1673 IF (l_debug <> -1) THEN
1674 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_ITEM_DTL_DATE_TYPE_INVALID');
1675 END IF;
1676 --
1677 WHEN OTHERS THEN
1678 --
1679 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1680 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidDateTypeCode: ',
1681 v_Progress);
1682 --
1683 IF (l_debug <> -1) THEN
1684 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
1685 END IF;
1686 --
1687 raise;
1688 --
1689 END ValidDateTypeCode;
1690
1691 /*===========================================================================
1692
1693 PROCEDURE NAME: ValidItemDetailQty
1694
1695 ===========================================================================*/
1696 PROCEDURE ValidItemDetailQty(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
1697 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
1698 IS
1699 --
1700 v_progress VARCHAR2(3) := '010';
1701 e_QtyInvalid EXCEPTION;
1702 --
1703 BEGIN
1704 --
1705 IF rlm_message_sv.check_dependency('ITEM_DETAIL_QUANTITY') THEN
1706 --
1707 IF (l_debug <> -1) THEN
1708 rlm_core_sv.dpush(C_SDEBUG,'ValidItemDetailQty');
1709 rlm_core_sv.dlog(C_DEBUG,'item_detail_quantity',
1710 x_lines_rec.item_detail_quantity);
1711 rlm_core_sv.dlog(C_DEBUG,'Item_detail_Type',x_lines_rec.item_detail_type);
1712 END IF;
1713 --
1714 -- allow null quantities on ATH segments (bug 1892891)
1715 --
1716 /*
1717 IF (x_lines_rec.item_detail_type IN ('0','1','2','3','4','6')) AND
1718 ((x_lines_rec.item_detail_quantity is NULL)
1719 OR (x_lines_rec.item_detail_quantity < 0)) THEN
1720 */
1721 IF ((x_lines_rec.item_detail_type IN ('0','1','2','3','4','6') AND
1722 (x_lines_rec.item_detail_quantity < 0)) OR
1723 (x_lines_rec.item_detail_type IN ('0','1','2','4','6') AND
1724 (x_lines_rec.item_detail_quantity is NULL))) THEN
1725 --
1726 v_progress := '020';
1727 raise e_QtyInvalid;
1728 --
1729 END IF;
1730 --
1731 v_progress := '030';
1732 --
1733 IF (l_debug <> -1) THEN
1734 rlm_core_sv.dpop(C_SDEBUG);
1735 END IF;
1736 --
1737 END IF;
1738 --
1739 EXCEPTION
1740 WHEN e_QtyInvalid THEN
1741 --
1742 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1743 --
1744 rlm_message_sv.app_error(
1745 x_ExceptionLevel => rlm_message_sv.k_error_level,
1746 x_MessageName => 'RLM_ITEM_DETAIL_QTY_INVALID',
1747 x_InterfaceHeaderId => x_lines_rec.header_id,
1748 x_InterfaceLineId => x_lines_rec.line_id,
1749 x_token1=>'ITEM_DETAIL_QUANTITY',
1750 x_value1=>x_lines_rec.item_detail_quantity,
1751 x_ValidationType => 'ITEM_DETAIL_QUANTITY');
1752 --
1753 IF (l_debug <> -1) THEN
1754 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_ITEM_DETAIL_QTY_INVALID');
1755 END IF;
1756 --
1757 WHEN OTHERS THEN
1758 --
1759 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1760 --
1761 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidItemDetailQty: ',
1762 v_Progress);
1763 --
1764 IF (l_debug <> -1) THEN
1765 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
1766 END IF;
1767 --
1768 raise;
1769 --
1770 END ValidItemDetailQty;
1771
1772 /*===========================================================================
1773
1774 PROCEDURE NAME: ValidQtyTypeCode
1775
1776 ===========================================================================*/
1777 PROCEDURE ValidQtyTypeCode(
1778 x_setup_terms_rec IN rlm_setup_terms_sv.setup_terms_rec_typ,
1779 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
1780 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
1781 IS
1782 --
1783 v_progress VARCHAR2(3) := '010';
1784 e_NoCum EXCEPTION;
1785 e_QtyTypeInv EXCEPTION;
1786 e_SeqCumQty EXCEPTION;
1787 v_Count NUMBER;
1788 --
1789 BEGIN
1790 --
1791 IF (l_debug <> -1) THEN
1792 rlm_core_sv.dpush(C_SDEBUG,'ValidQtyTypeCode');
1793 END IF;
1794 --
1795 IF rlm_message_sv.check_dependency('QUANTITY_TYPE_CODE') THEN
1796 --
1797 IF (l_debug <> -1) THEN
1798 rlm_core_sv.dlog(C_DEBUG,'Qty_Type_Code',x_lines_rec.qty_type_code);
1799 rlm_core_sv.dlog(C_DEBUG,'Item_Detail_Type',x_lines_rec.item_detail_type);
1800 rlm_core_sv.dlog(C_DEBUG,'schedule_type',x_header_rec.schedule_type);
1801 END IF;
1802 --
1803
1804 -- Allow custom qty type codes
1805 IF NOT x_lines_rec.item_detail_type in ('3','4','5') Then
1806 IF NOT RLM_TPA_SV.ValidLookup( 'RLM_QTY_TYPE_CODE',
1807 x_lines_rec.qty_type_code,
1808 Sysdate) THEN
1809 raise e_QtyTypeInv;
1810 END IF;
1811 END IF;
1812 --
1813 IF x_lines_rec.item_detail_type IN (0,1,2) AND
1814 x_lines_rec.qty_type_code = 'CUMULATIVE' THEN
1815 --
1816 IF x_header_rec.schedule_type = 'SEQUENCED' THEN
1817 raise e_SeqCumQty;
1818 ELSIF x_setup_terms_rec.cum_control_code = 'NO_CUM' THEN
1819 raise e_NOCum;
1820 END IF;
1821 --
1822 END IF;
1823 --
1824 v_progress := '060';
1825 --
1826 END IF;
1827 --
1828 -- Need to assign the primary quantity with the item detail qty
1829 -- if the primary quantity is populated i.e comes in from the edi
1830 -- schedule then we do use that quantity or else use the quantity from
1831 -- the item detail qty
1832 --
1833 --IF x_lines_rec.primary_quantity is NULL THEN
1834 --
1835 x_lines_rec.primary_quantity := nvl(x_lines_rec.item_detail_quantity,0);
1836 --
1837 --END IF;
1838 --
1839 IF (l_debug <> -1) THEN
1840 rlm_core_sv.dpop(C_SDEBUG);
1841 END IF;
1842 --
1843 EXCEPTION
1844 --
1845 WHEN e_NoCum THEN
1846 --
1847 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1848 --
1849 rlm_message_sv.app_error(
1850 x_ExceptionLevel => rlm_message_sv.k_error_level,
1851 x_MessageName => 'RLM_CUM_QTY_TYPE_INVALID',
1852 x_InterfaceHeaderId => x_lines_rec.header_id,
1853 x_InterfaceLineId => x_lines_rec.line_id,
1854 x_token1=>'QUANTITY_TYPE_CODE',
1855 x_value1=>x_lines_rec.qty_type_code,
1856 x_ValidationType => 'QUANTITY_TYPE_CODE');
1857 --
1858 IF (l_debug <> -1) THEN
1859 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: RLM_CUM_CONTROL_CODE_INVALID');
1860 rlm_core_sv.dpop(C_SDEBUG);
1861 END IF;
1862 --
1863 WHEN e_QtyTypeInv THEN
1864 --
1865 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1866 --
1867 rlm_message_sv.app_error(
1868 x_ExceptionLevel => rlm_message_sv.k_error_level,
1869 x_MessageName => 'RLM_ITEM_QTY_TYPE_INVALID',
1870 x_InterfaceHeaderId => x_lines_rec.header_id,
1871 x_InterfaceLineId => x_lines_rec.line_id,
1872 x_token1=>'QUANTITY_TYPE_CODE',
1873 x_value1=>x_lines_rec.qty_type_code,
1874 x_ValidationType => 'QUANTITY_TYPE_CODE');
1875 --
1876 IF (l_debug <> -1) THEN
1877 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_ITEM_DTL_TYPE_INVALID');
1878 END IF;
1879 --
1880 WHEN e_SeqCumQty THEN
1881 --
1882 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1883 --
1884 rlm_message_sv.app_error(
1885 x_ExceptionLevel => rlm_message_sv.k_error_level,
1886 x_MessageName => 'RLM_SEQUENCED_CUMULATIVE_QTY',
1887 x_InterfaceHeaderId => x_lines_rec.header_id,
1888 x_InterfaceLineId => x_lines_rec.line_id,
1889 x_ValidationType => 'QUANTITY_TYPE_CODE');
1890 --
1891 IF (l_debug <> -1) THEN
1892 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SEQUENCED_CUMULATIVE_QTY');
1893 END IF;
1894 --
1895 WHEN OTHERS THEN
1896 --
1897 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1898 --
1899 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidQtyTypeCode',
1900 v_Progress);
1901 --
1902 IF (l_debug <> -1) THEN
1903 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
1904 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
1905 END IF;
1906 --
1907 raise;
1908 --
1909 END ValidQtyTypeCode;
1910
1911 /*===========================================================================
1912
1913 PROCEDURE NAME: ValidItemDetailSubtype
1914
1915 ===========================================================================*/
1916 PROCEDURE ValidItemDetailSubtype(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
1917 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
1918 IS
1919 --
1920 v_progress VARCHAR2(3) := '010';
1921 e_DetailSubTypeInv EXCEPTION;
1922 v_status BOOLEAN;
1923 --
1924 BEGIN
1925 --
1926 IF rlm_message_sv.check_dependency('ITEM_DETAIL_SUBTYPE') THEN
1927 --
1928 IF (l_debug <> -1) THEN
1929 rlm_core_sv.dpush(C_SDEBUG,'ValidItemDetailSubtype');
1930 END IF;
1931 --
1932 IF x_lines_rec.item_detail_type IN ('0','1','2','6') THEN
1933 v_Status := RLM_TPA_SV.ValidLookup( 'RLM_DEMAND_SUBTYPE',
1934 x_lines_rec.ITEM_DETAIL_SUBTYPE,
1935 Sysdate);
1936
1937 /*
1938 -- allow custom item detail subtypes
1939 ELSIF x_lines_rec.item_detail_type = '3' THEN
1940 v_Status := RLM_TPA_SV.ValidLookup( 'RLM_AUTH_SUBTYPE',
1941 x_lines_rec.ITEM_DETAIL_SUBTYPE,
1942 Sysdate);
1943 ELSIF x_lines_rec.item_detail_type = '4' THEN
1944 v_Status := RLM_TPA_SV.ValidLookup( 'RLM_SHP_RCV_SUBTYPE',
1945 x_lines_rec.ITEM_DETAIL_SUBTYPE,
1946 Sysdate);
1947 ELSE
1948 v_Status := RLM_TPA_SV.ValidLookup( 'RLM_INFO_SUBTYPE',
1949 x_lines_rec.ITEM_DETAIL_SUBTYPE,
1950 Sysdate);
1951 */
1952
1953 END IF;
1954 --
1955 IF NOT v_Status THEN
1956 raise e_DetailSubTypeInv;
1957 END IF;
1958 --
1959 v_progress := '060';
1960 --
1961 IF (l_debug <> -1) THEN
1962 rlm_core_sv.dpop(C_SDEBUG);
1963 END IF;
1964 --
1965 END IF;
1966 --
1967 EXCEPTION
1968 --
1969 WHEN e_DetailSubTypeInv THEN
1970 --
1971 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1972 rlm_message_sv.app_error(
1973 x_ExceptionLevel => rlm_message_sv.k_error_level,
1974 x_MessageName => 'RLM_DETAIL_SUBTYPE_INVALID',
1975 x_InterfaceHeaderId => x_lines_rec.header_id,
1976 x_InterfaceLineId => x_lines_rec.line_id,
1977 x_token1=>'ITEM_DETAIL_SUBTYPE',
1978 x_value1=>x_lines_rec.item_detail_subtype,
1979 x_token2=>'ITEM_DETAIL_TYPE',
1980 x_value2=>x_lines_rec.item_detail_type,
1981 x_ValidationType => 'ITEM_DETAIL_SUBTYPE');
1982 --
1983 IF (l_debug <> -1) THEN
1984 rlm_core_sv.dlog(C_DEBUG,'RLM_DETAIL_SUBTYPE_INVALID',
1985 x_lines_rec.item_detail_subtype);
1986 rlm_core_sv.dpop(C_SDEBUG);
1987 END IF;
1988 --
1989 WHEN OTHERS THEN
1990 --
1991 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
1992 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidItemDetailSubtype: ',
1993 v_Progress);
1994 --
1995 IF (l_debug <> -1) THEN
1996 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
1997 END IF;
1998 --
1999 raise;
2000 --
2001 END ValidItemDetailSubtype;
2002
2003 /*===========================================================================
2004
2005 PROCEDURE NAME: ValidItemDetailType
2006
2007 ===========================================================================*/
2008 PROCEDURE ValidItemDetailType(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
2009 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
2010 IS
2011 --
2012 v_progress VARCHAR2(3) := '010';
2013 e_ItemDetailTypeInvalid EXCEPTION;
2014 --
2015 BEGIN
2016 --
2017 IF rlm_message_sv.check_dependency('ITEM_DETAIL_TYPE') THEN
2018 --
2019 IF (l_debug <> -1) THEN
2020 rlm_core_sv.dpush(C_SDEBUG,'ValidItemDetailType');
2021 END IF;
2022 --
2023 IF NOT RLM_TPA_SV.ValidLookup( 'RLM_DETAIL_TYPE_CODE',
2024 x_lines_rec.item_detail_type,
2025 Sysdate)
2026 THEN
2027 raise e_ItemDetailTypeInvalid;
2028 END IF;
2029
2030 v_progress := '060';
2031 --
2032 IF (l_debug <> -1) THEN
2033 rlm_core_sv.dpop(C_SDEBUG);
2034 END IF;
2035 --
2036 END IF;
2037 --
2038 EXCEPTION
2039 --
2040 WHEN e_ItemDetailTypeInvalid THEN
2041 --
2042 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
2043 rlm_message_sv.app_error(
2044 x_ExceptionLevel => rlm_message_sv.k_error_level,
2045 x_MessageName => 'RLM_ITEM_DETAIL_TYPE_INVALID',
2046 x_InterfaceHeaderId => x_lines_rec.header_id,
2047 x_InterfaceLineId => x_lines_rec.line_id,
2048 x_token1=>'ITEM_DETAIL_TYPE',
2049 x_value1=>x_lines_rec.item_detail_type,
2050 x_ValidationType => 'ITEM_DETAIL_TYPE');
2051 --
2052 IF (l_debug <> -1) THEN
2053 rlm_core_sv.dlog(C_DEBUG,'RLM_ITEM_DETAIL_TYPE_INVALID',
2054 x_lines_rec.item_detail_type);
2055 rlm_core_sv.dpop(C_SDEBUG);
2056 END IF;
2057 --
2058 WHEN OTHERS THEN
2059 --
2060 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
2061 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidItemDetailType: ',
2062 v_Progress);
2063 --
2064 IF (l_debug <> -1) THEN
2065 rlm_core_sv.dlog(C_DEBUG,'OTHERS',x_lines_rec.item_detail_type);
2066 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
2067 END IF;
2068 --
2069 raise;
2070 --
2071 END ValidItemDetailType;
2072
2073 /*===========================================================================
2074
2075 PROCEDURE NAME: ValidateCriticalKeys
2076
2077 ===========================================================================*/
2078 PROCEDURE ValidateCriticalKeys(
2079 x_setup_terms_rec IN RLM_SETUP_TERMS_SV.setup_terms_rec_typ,
2080 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
2081 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
2082 IS
2083 --
2084 v_progress VARCHAR2(3) := '010';
2085 x_critical_key_rec rlm_core_sv.t_match_rec;
2086 x_key_description VARCHAR2(100);
2087 e_CriticalKeyMissing EXCEPTION;
2088 --
2089 BEGIN
2090 --
2091 IF (l_debug <> -1) THEN
2092 rlm_core_sv.dpush(C_SDEBUG,'ValidateCriticalKeys');
2093 END IF;
2094 --
2095 IF rlm_message_sv.check_dependency('CRITICAL_KEYS') THEN
2096 --
2097 IF (l_debug <> -1) THEN
2098 rlm_core_sv.dlog(C_DEBUG,'critical_attribute_key',
2099 x_setup_terms_rec.critical_attribute_key);
2100 END IF;
2101 --
2102 rlm_core_sv.Populate_Match_Keys(x_critical_key_rec,
2103 nvl(x_setup_terms_rec.critical_attribute_key,'0'));
2104
2105 -- Check whether Critical key attribute key missing
2106 -- May have to change code due to NLS requirements
2107 -- The current description of lookup type RLM_OPTIONAL_MATCH_ATTRIBUTES
2108 -- needs to be corrected before we can use lookup codes for description
2109
2110 IF ((x_critical_key_rec.cust_production_line = 'Y') AND
2111 (x_lines_rec.cust_production_line IS NULL ) )
2112 THEN
2113 x_key_description := 'Production Line';
2114 raise e_CriticalKeyMissing;
2115 END IF;
2116 --
2117 IF ((x_critical_key_rec.customer_dock_code = 'Y') AND
2118 (x_lines_rec.customer_dock_code IS NULL ) )
2119 THEN
2120 x_key_description := 'Dock Code';
2121 raise e_CriticalKeyMissing;
2122 END IF;
2123 --
2124 IF ((x_critical_key_rec.request_date = 'Y') AND
2125 (x_lines_rec.request_date IS NULL ) )
2126 THEN
2127 x_key_description := 'Request Date';
2128 raise e_CriticalKeyMissing;
2129 END IF;
2130 --
2131 IF ((x_critical_key_rec.schedule_date = 'Y') AND
2132 (x_lines_rec.schedule_date IS NULL ) )
2133 THEN
2134 x_key_description := 'Schedule Date';
2135 raise e_CriticalKeyMissing;
2136 END IF;
2137 --
2138 IF ((x_critical_key_rec.cust_po_number = 'Y') AND
2139 (x_lines_rec.cust_po_number IS NULL ) )
2140 THEN
2141 x_key_description := 'PO Number';
2142 raise e_CriticalKeyMissing;
2143 END IF;
2144 --
2145 IF ((x_critical_key_rec.customer_item_revision = 'Y') AND
2146 (x_lines_rec.customer_item_revision IS NULL ) )
2147 THEN
2148 x_key_description := 'Item Revision';
2149 raise e_CriticalKeyMissing;
2150 END IF;
2151 --
2152 IF ((x_critical_key_rec.customer_job = 'Y') AND
2153 (x_lines_rec.customer_job IS NULL ) )
2154 THEN
2155 x_key_description := 'Customer Job';
2156 raise e_CriticalKeyMissing;
2157 END IF;
2158 --
2159 IF ((x_critical_key_rec.cust_model_serial_number = 'Y') AND
2160 (x_lines_rec.cust_model_serial_number IS NULL ) )
2161 THEN
2162 x_key_description := 'Model Serial Number';
2163 raise e_CriticalKeyMissing;
2164 END IF;
2165 --
2166 IF ((x_critical_key_rec.industry_attribute1 = 'Y') AND
2167 (x_lines_rec.industry_attribute1 IS NULL ) )
2168 THEN
2169 x_key_description := 'Record Year';
2170 raise e_CriticalKeyMissing;
2171 END IF;
2172 --
2173 -- Begin of changes for Bug 2183405
2174
2175 IF ((x_critical_key_rec.industry_attribute2 = 'Y') AND
2176 (nvl(x_lines_rec.industry_attribute2,to_char(x_lines_rec.start_date_time,'RRRR/MM/DD HH24:MI:SS')) IS NULL ))
2177 THEN
2178 x_key_description := 'Customer Request date';
2179 raise e_CriticalKeyMissing;
2180 END IF;
2181 --
2182 IF ((x_critical_key_rec.cust_production_seq_num = 'Y') AND
2183 (x_lines_rec.cust_production_seq_num IS NULL))
2184 THEN
2185 x_key_description := 'Customer Production Sequence Number' ;
2186 raise e_CriticalKeyMissing;
2187 END IF ;
2188 -- end of changes for Bug 2183405
2189
2190 IF ((x_critical_key_rec.industry_attribute4 = 'Y') AND
2191 (x_lines_rec.industry_attribute4 IS NULL ) )
2192 THEN
2193 x_key_description := 'Pull Signal Reference Number';
2194 raise e_CriticalKeyMissing;
2195 END IF;
2196 --
2197 IF ((x_critical_key_rec.industry_attribute5 = 'Y') AND
2198 (x_lines_rec.industry_attribute5 IS NULL ) )
2199 THEN
2200 x_key_description := 'Pull Signal Starting Serial Number';
2201 raise e_CriticalKeyMissing;
2202 END IF;
2203 --
2204 IF ((x_critical_key_rec.industry_attribute6 = 'Y') AND
2205 (x_lines_rec.industry_attribute6 IS NULL ) )
2206 THEN
2207 x_key_description := 'Pull Signal Ending Serial Number';
2208 raise e_CriticalKeyMissing;
2209 END IF;
2210 --
2211 IF ((x_critical_key_rec.industry_attribute8 = 'Y') AND
2212 (x_lines_rec.industry_attribute8 IS NULL ) )
2213 THEN
2214 x_key_description := 'Industry Attribute8';
2215 raise e_CriticalKeyMissing;
2216 END IF;
2217 --
2218 IF ((x_critical_key_rec.industry_attribute9 = 'Y') AND
2219 (x_lines_rec.industry_attribute9 IS NULL ) )
2220 THEN
2221 x_key_description := 'Industry Attribute9';
2222 raise e_CriticalKeyMissing;
2223 END IF;
2224 --
2225 IF ((x_critical_key_rec.industry_attribute10 = 'Y') AND
2226 (x_lines_rec.industry_attribute10 IS NULL ) )
2227 THEN
2228 x_key_description := 'Industry Attribute10';
2229 raise e_CriticalKeyMissing;
2230 END IF;
2231 --
2232 IF ((x_critical_key_rec.industry_attribute11 = 'Y') AND
2233 (x_lines_rec.industry_attribute11 IS NULL ) )
2234 THEN
2235 x_key_description := 'Industry Attribute11';
2236 raise e_CriticalKeyMissing;
2237 END IF;
2238 --
2239 IF ((x_critical_key_rec.industry_attribute12 = 'Y') AND
2240 (x_lines_rec.industry_attribute12 IS NULL ) )
2241 THEN
2242 x_key_description := 'Industry Attribute12';
2243 raise e_CriticalKeyMissing;
2244 END IF;
2245 --
2246 IF ((x_critical_key_rec.industry_attribute13 = 'Y') AND
2247 (x_lines_rec.industry_attribute13 IS NULL ) )
2248 THEN
2249 x_key_description := 'Industry Attribute13';
2250 raise e_CriticalKeyMissing;
2251 END IF;
2252 --
2253 IF ((x_critical_key_rec.industry_attribute14 = 'Y') AND
2254 (x_lines_rec.industry_attribute14 IS NULL ) )
2255 THEN
2256 x_key_description := 'Industry Attribute14';
2257 raise e_CriticalKeyMissing;
2258 END IF;
2259 --
2260 /* Commented as the industry attribute is copied later
2261 IF ((x_critical_key_rec.industry_attribute15 = 'Y') AND
2262 (x_lines_rec.industry_attribute15 IS NULL ) )
2263 THEN
2264 x_key_description := 'Industry Attribute15';
2265 raise e_CriticalKeyMissing;
2266 END IF;
2267 --
2268 */
2269 --
2270 IF ((x_critical_key_rec.attribute1 = 'Y') AND
2271 (x_lines_rec.attribute1 IS NULL ) )
2272 THEN
2273 x_key_description := 'Descriptive Flexfield Attribute1';
2274 raise e_CriticalKeyMissing;
2275 END IF;
2276 --
2277 IF ((x_critical_key_rec.attribute2 = 'Y') AND
2278 (x_lines_rec.attribute2 IS NULL ) )
2279 THEN
2280 x_key_description := 'Descriptive Flexfield Attribute2';
2281 raise e_CriticalKeyMissing;
2282 END IF;
2283 --
2284 IF ((x_critical_key_rec.attribute4 = 'Y') AND
2285 (x_lines_rec.attribute4 IS NULL ) )
2286 THEN
2287 x_key_description := 'Descriptive Flexfield Attribute4';
2288 raise e_CriticalKeyMissing;
2289 END IF;
2290 --
2291 IF ((x_critical_key_rec.attribute5 = 'Y') AND
2292 (x_lines_rec.attribute5 IS NULL ) )
2293 THEN
2294 x_key_description := 'Descriptive Flexfield Attribute5';
2295 raise e_CriticalKeyMissing;
2296 END IF;
2297 --
2298 IF ((x_critical_key_rec.attribute6 = 'Y') AND
2299 (x_lines_rec.attribute6 IS NULL ) )
2300 THEN
2301 x_key_description := 'Descriptive Flexfield Attribute6';
2302 raise e_CriticalKeyMissing;
2303 END IF;
2304 --
2305 IF ((x_critical_key_rec.attribute8 = 'Y') AND
2306 (x_lines_rec.attribute8 IS NULL ) )
2307 THEN
2308 x_key_description := 'Descriptive Flexfield Attribute8';
2309 END IF;
2310 --
2311 IF ((x_critical_key_rec.attribute9 = 'Y') AND
2312 (x_lines_rec.attribute9 IS NULL ) )
2313 THEN
2314 x_key_description := 'Descriptive Flexfield Attribute9';
2315 raise e_CriticalKeyMissing;
2316 END IF;
2317 --
2318 IF ((x_critical_key_rec.attribute10 = 'Y') AND
2319 (x_lines_rec.attribute10 IS NULL ) )
2320 THEN
2321 x_key_description := 'Descriptive Flexfield Attribute10';
2322 raise e_CriticalKeyMissing;
2323 END IF;
2324 --
2325 IF ((x_critical_key_rec.attribute11 = 'Y') AND
2326 (x_lines_rec.attribute11 IS NULL ) )
2327 THEN
2328 x_key_description := 'Descriptive Flexfield Attribute11';
2329 raise e_CriticalKeyMissing;
2330 END IF;
2331 --
2332 IF ((x_critical_key_rec.attribute12 = 'Y') AND
2333 (x_lines_rec.attribute12 IS NULL ) )
2334 THEN
2335 x_key_description := 'Descriptive Flexfield Attribute12';
2336 raise e_CriticalKeyMissing;
2337 END IF;
2338 --
2339 IF ((x_critical_key_rec.attribute13 = 'Y') AND
2340 (x_lines_rec.attribute13 IS NULL ) )
2341 THEN
2342 x_key_description := 'Descriptive Flexfield Attribute13';
2343 raise e_CriticalKeyMissing;
2344 END IF;
2345 --
2346 IF ((x_critical_key_rec.attribute14 = 'Y') AND
2347 (x_lines_rec.attribute14 IS NULL ) )
2348 THEN
2349 x_key_description := 'Descriptive Flexfield Attribute14';
2350 raise e_CriticalKeyMissing;
2351 END IF;
2352 --
2353 IF ((x_critical_key_rec.attribute15 = 'Y') AND
2354 (x_lines_rec.attribute15 IS NULL ) )
2355 THEN
2356 x_key_description := 'Descriptive Flexfield Attribute15';
2357 raise e_CriticalKeyMissing;
2358 END IF;
2359 --
2360 v_progress := '060';
2361 --
2362 END IF;
2363 --
2364 IF (l_debug <> -1) THEN
2365 rlm_core_sv.dpop(C_SDEBUG);
2366 END IF;
2367 --
2368 EXCEPTION
2369 WHEN e_CriticalKeyMissing THEN
2370 --
2371 rlm_message_sv.app_error(
2372 x_ExceptionLevel => rlm_message_sv.k_warn_level,
2373 x_MessageName => 'RLM_CRITICAL_KEY_NULL',
2374 x_InterfaceHeaderId => x_lines_rec.header_id,
2375 x_InterfaceLineId => x_lines_rec.line_id,
2376 x_token1=>'DESCRIPTION',
2377 x_value1=>x_key_description,
2378 x_ValidationType => 'CRITICAL_KEYS');
2379 --
2380 IF (l_debug <> -1) THEN
2381 rlm_core_sv.dlog(C_DEBUG,'Missing key description',x_key_description);
2382 rlm_core_sv.dpop(C_SDEBUG,'WARNING: RLM_CRITICAL_KEY_NULL');
2383 END IF;
2384 --
2385 WHEN OTHERS THEN
2386 --
2387 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
2388 --
2389 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidateCriticalKeys:',
2390 v_Progress);
2391 --
2392 IF (l_debug <> -1) THEN
2393 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
2394 END IF;
2395 --
2396 raise;
2397 --
2398 END ValidateCriticalKeys;
2399
2400 /*===========================================================================
2401
2402 PROCEDURE POPULATE_MATCH_KEY
2403 ( To be moved later to common package to be accessed both by
2404 Validate and Reconcile )
2405
2406 ===========================================================================
2407 PROCEDURE PopulateMatchKeys(x_match_rec IN OUT NOCOPY t_match_rec,
2408 x_match_key IN VARCHAR2)
2409 IS
2410
2411 x_progress VARCHAR2(3) := '010';
2412 BEGIN
2413 --
2414 IF (l_debug <> -1) THEN
2415 rlm_core_sv.dpush(C_SDEBUG,'POPULATE_MATCH_KEY');
2416 rlm_core_sv.dlog(C_DEBUG,'x_match_key',x_match_key);
2417 END IF;
2418 --
2419 --
2420 SELECT DECODE(INSTR(x_match_key,'A'),0,'N','Y'),
2421 DECODE(INSTR(x_match_key,'B'),0,'N','Y'),
2422 DECODE(INSTR(x_match_key,'C'),0,'N','Y'),
2423 DECODE(INSTR(x_match_key,'D'),0,'N','Y'),
2424 DECODE(INSTR(x_match_key,'E'),0,'N','Y'),
2425 DECODE(INSTR(x_match_key,'F'),0,'N','Y'),
2426 DECODE(INSTR(x_match_key,'G'),0,'N','Y'),
2427 DECODE(INSTR(x_match_key,'H'),0,'N','Y'),
2428 DECODE(INSTR(x_match_key,'I'),0,'N','Y'),
2429 DECODE(INSTR(x_match_key,'J'),0,'N','Y'),
2430 DECODE(INSTR(x_match_key,'K'),0,'N','Y'),
2431 DECODE(INSTR(x_match_key,'L'),0,'N','Y'),
2432 DECODE(INSTR(x_match_key,'M'),0,'N','Y'),
2433 DECODE(INSTR(x_match_key,'N'),0,'N','Y'),
2434 DECODE(INSTR(x_match_key,'O'),0,'N','Y'),
2435 DECODE(INSTR(x_match_key,'P'),0,'N','Y'),
2436 DECODE(INSTR(x_match_key,'Q'),0,'N','Y'),
2437 DECODE(INSTR(x_match_key,'R'),0,'N','Y'),
2438 DECODE(INSTR(x_match_key,'S'),0,'N','Y'),
2439 DECODE(INSTR(x_match_key,'T'),0,'N','Y'),
2440 DECODE(INSTR(x_match_key,'U'),0,'N','Y'),
2441 DECODE(INSTR(x_match_key,'V'),0,'N','Y'),
2442 DECODE(INSTR(x_match_key,'W'),0,'N','Y'),
2443 DECODE(INSTR(x_match_key,'X'),0,'N','Y'),
2444 DECODE(INSTR(x_match_key,'Y'),0,'N','Y'),
2445 DECODE(INSTR(x_match_key,'Z'),0,'N','Y'),
2446 DECODE(INSTR(x_match_key,'1'),0,'N','Y'),
2447 DECODE(INSTR(x_match_key,'2'),0,'N','Y'),
2448 DECODE(INSTR(x_match_key,'3'),0,'N','Y'),
2449 DECODE(INSTR(x_match_key,'4'),0,'N','Y'),
2450 DECODE(INSTR(x_match_key,'5'),0,'N','Y'),
2451 DECODE(INSTR(x_match_key,'6'),0,'N','Y'),
2452 DECODE(INSTR(x_match_key,'7'),0,'N','Y'),
2453 DECODE(INSTR(x_match_key,'8'),0,'N','Y'),
2454 DECODE(INSTR(x_match_key,'9'),0,'N','Y')
2455 INTO
2456 x_match_rec.cust_production_line,
2457 x_match_rec.customer_dock_code,
2458 x_match_rec.request_date,
2459 x_match_rec.schedule_date,
2460 x_match_rec.cust_po_number,
2461 x_match_rec.customer_item_revision,
2462 x_match_rec.customer_job,
2463 x_match_rec.cust_model_serial_number,
2464 x_match_rec.industry_attribute1,
2465 x_match_rec.industry_attribute2,
2466 x_match_rec.industry_attribute4,
2467 x_match_rec.industry_attribute5,
2468 x_match_rec.industry_attribute6,
2469 x_match_rec.industry_attribute9,
2470 x_match_rec.industry_attribute10,
2471 x_match_rec.industry_attribute11,
2472 x_match_rec.industry_attribute12,
2473 x_match_rec.industry_attribute13,
2474 x_match_rec.industry_attribute14,
2475 x_match_rec.industry_attribute15,
2476 x_match_rec.attribute1,
2477 x_match_rec.attribute2,
2478 x_match_rec.attribute3,
2479 x_match_rec.attribute4,
2480 x_match_rec.attribute5,
2481 x_match_rec.attribute6,
2482 x_match_rec.attribute7,
2483 x_match_rec.attribute8,
2484 x_match_rec.attribute9,
2485 x_match_rec.attribute10,
2486 x_match_rec.attribute11,
2487 x_match_rec.attribute12,
2488 x_match_rec.attribute13,
2489 x_match_rec.attribute14,
2490 x_match_rec.attribute15
2491 FROM dual;
2492
2493 IF (l_debug <> -1) THEN
2494 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.cust_production_line',
2495 x_match_rec.cust_production_line);
2496 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.customer_dock_code',
2497 x_match_rec.customer_dock_code);
2498 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.request_date',
2499 x_match_rec.request_date);
2500 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.schedule_date',
2501 x_match_rec.schedule_date);
2502 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.cust_po_number',
2503 x_match_rec.cust_po_number);
2504 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.customer_item_revision',
2505 x_match_rec.customer_item_revision);
2506 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.customer_job',
2507 x_match_rec.customer_job);
2508 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.cust_model_serial_number',
2509 x_match_rec.cust_model_serial_number);
2510 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute1',
2511 x_match_rec.industry_attribute1);
2512 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute2',
2513 x_match_rec.industry_attribute2);
2514 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute4',
2515 x_match_rec.industry_attribute4);
2516 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute5',
2517 x_match_rec.industry_attribute5);
2518 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute6',
2519 x_match_rec.industry_attribute6);
2520 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute9',
2521 x_match_rec.industry_attribute9);
2522 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute10',
2523 x_match_rec.industry_attribute10);
2524 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute11',
2525 x_match_rec.industry_attribute11);
2526 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute12',
2527 x_match_rec.industry_attribute12);
2528 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute13',
2529 x_match_rec.industry_attribute13);
2530 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute14',
2531 x_match_rec.industry_attribute14);
2532 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.industry_attribute15',
2533 x_match_rec.industry_attribute15);
2534 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute1',x_match_rec.attribute1);
2535 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute2',x_match_rec.attribute2);
2536 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute3',x_match_rec.attribute3);
2537 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute4',x_match_rec.attribute4);
2538 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute5',x_match_rec.attribute5);
2539 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute6',x_match_rec.attribute6);
2540 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute7',x_match_rec.attribute7);
2541 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute8',x_match_rec.attribute8);
2542 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute9',x_match_rec.attribute9);
2543 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute10',x_match_rec.attribute10);
2544 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute11',x_match_rec.attribute11);
2545 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute12',x_match_rec.attribute12);
2546 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute13',x_match_rec.attribute13);
2547 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute14',x_match_rec.attribute14);
2548 rlm_core_sv.dlog(C_DEBUG,'x_match_rec.attribute15',x_match_rec.attribute15);
2549 rlm_core_sv.dpop(C_SDEBUG);
2550 END IF;
2551
2552 EXCEPTION
2553 WHEN OTHERS THEN
2554 rlm_message_sv.sql_error('rlm_validate_sv.PopulateMatchKeys',x_progress);
2555 --
2556 IF (l_debug <> -1) THEN
2557 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
2558 END IF;
2559 --
2560 raise;
2561
2562 END PopulateMatchKeys;
2563 */
2564
2565 /*===========================================================================
2566
2567 PROCEDURE NAME: PopulateLinesTab
2568
2569 ===========================================================================*/
2570 PROCEDURE PopulateLinesTab(v_Group_rec IN t_Group_rec)
2571 IS
2572 --
2573 v_lines_rec RLM_INTERFACE_LINES%ROWTYPE;
2574 v_Progress VARCHAR2(30) := '010';
2575 v_temp VARCHAR2(30);
2576 v_Count NUMBER := 1;
2577 TYPE c_lines_typ IS REF CURSOR;
2578 c_lines c_lines_typ;
2579 --
2580 BEGIN
2581 --
2582 IF (l_debug <> -1) THEN
2583 rlm_core_sv.dpush(C_SDEBUG,'PopulateLinesTab');
2584 rlm_core_sv.dlog(C_DEBUG,'schedule_item_num',v_Group_rec.schedule_item_num);
2585 rlm_core_sv.dlog(C_DEBUG,'header_id',g_header_rec.header_id);
2586 rlm_core_sv.dlog(C_DEBUG,'cust_ship_from_org_ext',
2587 v_Group_rec.cust_ship_from_org_ext);
2588 rlm_core_sv.dlog(C_DEBUG,'cust_ship_to_ext',v_Group_rec.cust_ship_to_ext);
2589 rlm_core_sv.dlog(C_DEBUG,'cust_production_seq_num',
2590 v_Group_rec.cust_production_seq_num);
2591 END IF;
2592 --
2593 g_lines_tab.DELETE;
2594 --
2595 v_Progress := '020';
2596 --
2597 IF v_Group_rec.group_type = 'N' THEN
2598 --
2599 OPEN c_lines FOR
2600 SELECT *
2601 FROM RLM_INTERFACE_LINES_ALL --bug 4907839
2602 WHERE schedule_item_num = v_Group_rec.schedule_item_num
2603 AND header_id = g_header_rec.header_id
2604 AND process_status = rlm_core_sv.k_PS_AVAILABLE
2605 --ORDER BY item_detail_type desc
2606 FOR UPDATE NOWAIT;
2607 --
2608 ELSE
2609 --
2610 IF (g_header_rec.schedule_source <> 'MANUAL') THEN
2611 --
2612 IF (v_Group_rec.cust_ship_from_org_ext IS NOT NULL AND v_Group_rec.cust_ship_to_ext IS NOT NULL) THEN
2613 --
2614 OPEN c_lines FOR
2615 SELECT *
2616 FROM RLM_INTERFACE_LINES_ALL --Bug 4907839
2617 WHERE header_id = g_header_rec.header_id
2618 AND cust_ship_from_org_ext =
2619 v_Group_rec.cust_ship_from_org_ext
2620 AND cust_ship_to_ext =
2621 v_Group_rec.cust_ship_to_ext
2622 AND customer_item_ext = v_Group_rec.customer_item_ext
2623 AND process_status = rlm_core_sv.k_PS_AVAILABLE
2624 --ORDER BY item_detail_type desc
2625 FOR UPDATE NOWAIT;
2626 --
2627 ELSE
2628 --
2629 OPEN c_lines FOR
2630 SELECT *
2631 FROM RLM_INTERFACE_LINES_ALL --bug 4907839
2632 WHERE header_id = g_header_rec.header_id
2633 AND nvl(cust_ship_from_org_ext,k_VNULL) =
2634 nvl(v_Group_rec.cust_ship_from_org_ext,k_VNULL)
2635 AND nvl(cust_ship_to_ext,k_VNULL) =
2636 nvl(v_Group_rec.cust_ship_to_ext,k_VNULL)
2637 AND customer_item_ext = v_Group_rec.customer_item_ext
2638 AND process_status = rlm_core_sv.k_PS_AVAILABLE
2639 --ORDER BY item_detail_type desc
2640 FOR UPDATE NOWAIT;
2641 --
2642 END IF;
2643
2644 ELSE
2645 --
2646 OPEN c_lines FOR
2647 SELECT *
2648 FROM RLM_INTERFACE_LINES
2649 WHERE header_id = g_header_rec.header_id
2650 AND customer_item_id = v_Group_rec.customer_item_id
2651 AND ship_from_org_id = v_Group_rec.ship_from_org_id
2652 AND ship_to_address_id = v_Group_rec.ship_to_address_id
2653 AND process_status = rlm_core_sv.k_PS_AVAILABLE
2654 --ORDER BY item_detail_type desc
2655 FOR UPDATE NOWAIT;
2656 --
2657 END IF;
2658 --
2659 END IF;
2660 --
2661 v_Count := 1;
2662 --
2663 LOOP
2664 FETCH c_lines INTO v_lines_rec ;
2665 --
2666 EXIT WHEN c_lines%NOTFOUND ;
2667 --
2668 v_Progress := '030';
2669 --
2670 IF (l_debug <> -1) THEN
2671 rlm_core_sv.dlog(C_DEBUG,'inserted line_id',v_lines_rec.line_id);
2672 END IF;
2673 --
2674 g_lines_tab(v_Count) := v_lines_rec;
2675 g_lines_tab(v_Count).process_status := rlm_core_sv.k_PS_AVAILABLE;
2676 v_Count := v_Count + 1;
2677 v_Progress := '040';
2678 --
2679 END LOOP;
2680 --
2681 CLOSE c_lines;
2682 --
2683 IF (l_debug <> -1) THEN
2684 rlm_core_sv.dpop(C_SDEBUG);
2685 END IF;
2686 --
2687 EXCEPTION
2688 --
2689 WHEN OTHERS THEN
2690 --
2691 g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
2692 rlm_message_sv.sql_error('rlm_validatedemand_sv.PopulateLinesTab',
2693 v_Progress);
2694 --
2695 IF (l_debug <> -1) THEN
2696 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
2697 END IF;
2698 --
2699 raise;
2700 --
2701 END PopulateLinesTab;
2702
2703 /*===========================================================================
2704
2705 PROCEDURE NAME: BuildHeaderRec
2706
2707 ===========================================================================*/
2708 FUNCTION BuildHeaderRec(x_header_id IN rlm_interface_headers.header_id%TYPE)
2709 RETURN BOOLEAN
2710 IS
2711 --
2712 v_Progress VARCHAR2(30) := '010';
2713 --
2714 BEGIN
2715 --
2716 IF (l_debug <> -1) THEN
2717 rlm_core_sv.dpush(C_SDEBUG,'BuildHeaderRec');
2718 rlm_core_sv.dlog(C_DEBUG,'x_header_id',x_header_id);
2719 END IF;
2720 --
2721 SELECT *
2722 INTO g_header_rec
2723 FROM rlm_interface_headers
2724 WHERE header_id = x_header_id
2725 FOR UPDATE NOWAIT;
2726 --
2727 IF (l_debug <> -1) THEN
2728 rlm_core_sv.dlog(C_DEBUG,'No of headers selected',SQL%ROWCOUNT);
2729 rlm_core_sv.dpop(C_SDEBUG);
2730 END IF;
2731 --
2732 RETURN TRUE;
2733 --
2734 EXCEPTION
2735 --
2736 WHEN NO_DATA_FOUND THEN
2737 --
2738 IF (l_debug <> -1) THEN
2739 rlm_core_sv.dlog(C_DEBUG,'x_header_id',x_header_id);
2740 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: NO_DATA_FOUND');
2741 END IF;
2742 --
2743 RETURN FALSE;
2744 --
2745 WHEN OTHERS THEN
2746 --
2747 rlm_message_sv.sql_error('rlm_validatedemand_sv.BuildHeaderRec',v_Progress);
2748 --
2749 IF (l_debug <> -1) THEN
2750 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
2751 END IF;
2752 --
2753 RETURN FALSE; /* should we raise here */
2754 --
2755 END BuildHeaderRec;
2756
2757 /*===========================================================================
2758
2759 PROCEDURE NAME: ApplyHeaderDefaults
2760
2761 ===========================================================================*/
2762 PROCEDURE ApplyHeaderDefaults(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE)
2763 IS
2764 --
2765 v_progress VARCHAR2(3) := '010';
2766 --
2767 BEGIN
2768 --
2769 IF (l_debug <> -1) THEN
2770 rlm_core_sv.dpush(C_SDEBUG,'ApplyHeaderDefaults');
2771 END IF;
2772 --
2773 IF x_header_rec.sched_horizon_start_date IS NULL THEN
2774 --
2775 x_header_rec.sched_horizon_start_date := GetDateFromTable('START');
2776 v_progress := '020';
2777 --
2778 IF (l_debug <> -1) THEN
2779 rlm_core_sv.dlog(C_DEBUG,'Horizon start date',
2780 x_header_rec.sched_horizon_start_date);
2781 END IF;
2782 --
2783 END IF;
2784 --
2785 IF x_header_rec.sched_horizon_end_date IS NULL THEN
2786 --
2787 x_header_rec.sched_horizon_end_date := GetDateFromTable('END');
2788 v_progress := '030';
2789 --
2790 IF (l_debug <> -1) THEN
2791 rlm_core_sv.dlog(C_DEBUG,'Horizon end date',
2792 x_header_rec.sched_horizon_end_date);
2793 END IF;
2794 --
2795 ELSE
2796 --
2797 v_progress := '040';
2798 --
2799 IF (l_debug <> -1) THEN
2800 rlm_core_sv.dlog(C_DEBUG,'no defaulting needed');
2801 END IF;
2802 --
2803 END IF;
2804 --
2805 v_progress := '050';
2806 --
2807 RLM_TPA_SV.SetHdrTPAttCategory(x_header_rec);
2808 --
2809 IF (l_debug <> -1) THEN
2810 rlm_core_sv.dpop(C_SDEBUG);
2811 END IF;
2812 --
2813 EXCEPTION
2814 --
2815 WHEN OTHERS THEN
2816 --
2817 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
2818 rlm_message_sv.sql_error('rlm_validatedemand_sv.ApplyHeaderDefaults',
2819 v_Progress);
2820 --
2821 IF (l_debug <> -1) THEN
2822 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
2823 END IF;
2824 --
2825 raise;
2826 --
2827 END ApplyHeaderDefaults;
2828
2829 /*===========================================================================
2830
2831 FUNCTION NAME: GetDateFromTable
2832 This function will return the date based on the criteria specified
2833 If criteria = 'START' THEN
2834 return the date which is least for the schedule item num
2835 If criteria = 'END' THEN
2836 return the date which is greatest for the schedule item num
2837
2838 ===========================================================================*/
2839 FUNCTION GetDateFromTable(p_date_criteria VARCHAR2)
2840 RETURN DATE
2841 IS
2842 --
2843 v_progress VARCHAR2(3) := '010';
2844 v_Start_Date DATE;
2845 v_End_Date_d DATE ;
2846 v_End_Date_w DATE ;
2847 v_End_Date_m DATE ;
2848 v_End_Date_f DATE ;
2849 v_End_Date DATE ;
2850 v_SundayDate VARCHAR2(30) := '05/01/1997';
2851 --
2852 BEGIN
2853 --
2854 IF (l_debug <> -1) THEN
2855 rlm_core_sv.dpush(C_SDEBUG,'GetDateFromTable');
2856 rlm_core_sv.dlog(C_DEBUG,'p_date_criteria',p_date_criteria);
2857 END IF;
2858 --
2859 IF p_date_criteria = 'START' THEN
2860 --
2861 SELECT MIN(start_date_time)
2862 INTO v_start_date
2863 FROM rlm_interface_lines
2864 WHERE header_id = g_header_rec.header_id;
2865 --
2866 IF (l_debug <> -1) THEN
2867 rlm_core_sv.dlog(C_DEBUG,'v_Start_Date',v_Start_Date);
2868 rlm_core_sv.dpop(C_SDEBUG);
2869 END IF;
2870 --
2871 RETURN(v_Start_Date);
2872 --
2873 ELSIF p_date_criteria = 'END' THEN
2874 --{
2875 SELECT MAX(end_date_time)
2876 INTO v_end_date_f
2877 FROM rlm_interface_lines
2878 WHERE header_id = g_header_rec.header_id
2879 AND item_detail_type IN (0,1,2,6) --Bug 5478817
2880 AND item_detail_subtype = rlm_ship_delivery_pattern_sv.g_FLEXIBLE;
2881 --
2882 IF (l_debug <> -1) THEN
2883 rlm_core_sv.dlog(C_DEBUG,'v_End_Date_f',v_End_Date_f);
2884 END IF;
2885 --
2886 SELECT MAX(start_date_time)
2887 INTO v_End_Date_d
2888 FROM rlm_interface_lines
2889 WHERE header_id = g_header_rec.header_id
2890 AND item_detail_type IN (0,1,2,6) --Bug 5478817
2891 AND item_detail_subtype = rlm_ship_delivery_pattern_sv.g_DAY;
2892 --
2893 IF (l_debug <> -1) THEN
2894 rlm_core_sv.dlog(C_DEBUG,'v_End_Date_d',v_End_Date_d);
2895 END IF;
2896 --
2897 SELECT MAX(start_date_time)
2898 INTO v_End_Date_w
2899 FROM rlm_interface_lines
2900 WHERE header_id = g_header_rec.header_id
2901 AND item_detail_type IN (0,1,2,6) --Bug 5478817
2902 AND item_detail_subtype = rlm_ship_delivery_pattern_sv.g_WEEK;
2903 --
2904 IF (l_debug <> -1) THEN
2905 rlm_core_sv.dlog(C_DEBUG, 'v_End_Date_w', v_End_Date_w);
2906 END IF;
2907 --
2908 SELECT MAX(start_date_time)
2909 INTO v_End_Date_m
2910 FROM rlm_interface_lines
2911 WHERE header_id = g_header_rec.header_id
2912 AND item_detail_type IN (0,1,2,6) --Bug 5478817
2913 AND item_detail_subtype = rlm_ship_delivery_pattern_sv.g_MONTH;
2914 --
2915 IF (l_debug <> -1) THEN
2916 rlm_core_sv.dlog(C_DEBUG, 'v_End_Date_m', v_End_Date_m);
2917 END IF;
2918 --
2919 SELECT NEXT_DAY(v_End_Date_w,
2920 to_char(to_date(v_SundayDate, 'DD/MM/RRRR'), 'DY'))
2921 INTO v_End_Date_w
2922 FROM DUAL;
2923 --
2924 IF (l_debug <> -1) THEN
2925 rlm_core_sv.dlog(C_DEBUG,'Sunday after v_End_Date_w',v_End_Date_w);
2926 END IF;
2927 --
2928 SELECT LAST_DAY(v_End_Date_m)
2929 INTO v_End_Date_m
2930 FROM DUAL;
2931 --
2932 IF (l_debug <> -1) THEN
2933 rlm_core_sv.dlog(C_DEBUG, 'Last day of the month of v_End_Date_m',
2934 v_End_Date_m);
2935 END IF;
2936 --
2937 -- Compare each of the end dates to figure out the horiz. end date
2938 --
2939 IF v_End_Date_f IS NOT NULL AND v_End_date_m IS NOT NULL THEN
2940 v_End_Date := GREATEST(v_End_Date_f, v_End_date_m);
2941 ELSE
2942 v_End_Date := NVL(v_End_Date_f, v_End_date_m);
2943 END IF;
2944 --
2945 IF v_End_Date IS NOT NULL THEN
2946 --
2947 IF v_End_Date_w IS NOT NULL THEN
2948 v_End_Date := GREATEST(v_End_Date, v_End_Date_w);
2949 ELSIF v_End_date_d IS NOT NULL THEN
2950 v_End_Date := GREATEST(v_End_Date, v_End_Date_d);
2951 END IF;
2952 --
2953 ELSE
2954 --
2955 IF v_End_Date_w IS NOT NULL AND v_End_date_d IS NOT NULL THEN
2956 v_End_Date := GREATEST(v_End_Date_w, v_End_date_d);
2957 ELSE
2958 v_End_Date := NVL(v_End_Date_w, v_End_Date_d);
2959 END IF;
2960 --
2961 END IF;
2962 --
2963 IF (l_debug <> -1) THEN
2964 rlm_core_sv.dlog(C_DEBUG,'v_End_Date',v_End_Date);
2965 rlm_core_sv.dpop(C_SDEBUG);
2966 END IF;
2967 --
2968 RETURN(v_End_Date);
2969 --}
2970 END IF;
2971 --
2972 IF (l_debug <> -1) THEN
2973 rlm_core_sv.dpop(C_SDEBUG);
2974 END IF;
2975 --
2976 EXCEPTION
2977 --
2978 WHEN OTHERS THEN
2979 --
2980 g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
2981 rlm_message_sv.sql_error('rlm_validatedemand_sv.GetDateFromTable', v_Progress);
2982 --
2983 IF (l_debug <> -1) THEN
2984 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
2985 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
2986 END IF;
2987 --
2988 raise;
2989 --
2990 END GetDateFromTable;
2991
2992 /*===========================================================================
2993
2994 PROCEDURE NAME: ValidScheduleHeader
2995
2996 ===========================================================================*/
2997 PROCEDURE ValidScheduleHeader(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE)
2998 IS
2999 --
3000 v_progress VARCHAR2(3) := '010';
3001 --
3002 BEGIN
3003 --
3004 IF (l_debug <> -1) THEN
3005 rlm_core_sv.dpush(C_SDEBUG,'ValidScheduleHeader');
3006 END IF;
3007 --
3008 RLM_TPA_SV.ValidScheduleType(x_header_rec);
3009 v_progress := '020';
3010 RLM_TPA_SV.ValidSchedulePurpose(x_header_rec);
3011 v_progress := '030';
3012 RLM_TPA_SV.ValidHorizonDates(x_header_rec);
3013 v_progress := '040';
3014 RLM_TPA_SV.ValidScheduleReferenceNum(x_header_rec);
3015 v_progress := '060';
3016 RLM_TPA_SV.ValidScheduleSource(x_header_rec);
3017 v_progress := '070';
3018 RLM_TPA_SV.ValidNumberLines(x_header_rec);
3019 --
3020 IF (l_debug <> -1) THEN
3021 rlm_core_sv.dpop(C_SDEBUG);
3022 END IF;
3023 --
3024 EXCEPTION
3025 --
3026 WHEN OTHERS THEN
3027 --
3028 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3029 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidScheduleHeader', v_Progress);
3030 --
3031 IF (l_debug <> -1) THEN
3032 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
3033 END IF;
3034 --
3035 raise;
3036 --
3037 END ValidScheduleHeader;
3038
3039 /*===========================================================================
3040
3041 PROCEDURE NAME: ValidNumberLines
3042
3043 ===========================================================================*/
3044 PROCEDURE ValidNumberLines(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE)
3045 IS
3046 --
3047 v_progress VARCHAR2(3) := '010';
3048 e_no_lines EXCEPTION;
3049 v_Count NUMBER;
3050 --
3051 BEGIN
3052 --
3053 IF (l_debug <> -1) THEN
3054 rlm_core_sv.dpush(C_SDEBUG,'ValidNumberLines');
3055 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.header_id',x_header_rec.header_id);
3056 END IF;
3057 --
3058 SELECT count(*)
3059 INTO v_Count
3060 FROM rlm_interface_lines
3061 where header_id = x_header_rec.header_id;
3062 --
3063 IF (l_debug <> -1) THEN
3064 rlm_core_sv.dlog(C_DEBUG,'ValidNumberLines ', v_Count);
3065 END IF;
3066 --
3067 IF v_count = 0 THEN
3068 raise e_no_lines;
3069 END IF;
3070 --
3071 IF (l_debug <> -1) THEN
3072 rlm_core_sv.dpop(C_SDEBUG);
3073 END IF;
3074 --
3075 EXCEPTION
3076 --
3077 WHEN e_no_lines THEN
3078 --
3079 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3080 --
3081 rlm_message_sv.app_error(
3082 x_ExceptionLevel => rlm_message_sv.k_error_level,
3083 x_MessageName => 'RLM_NO_LINES_ON_SCHEDULE',
3084 x_InterfaceHeaderId => x_header_rec.header_id);
3085 --
3086 IF (l_debug <> -1) THEN
3087 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: RLM_NO_LINES_ON_SCHEDULE');
3088 END IF;
3089 --
3090 WHEN OTHERS THEN
3091 --
3092 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3093 --
3094 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidNumberLines',
3095 v_Progress);
3096 --
3097 IF (l_debug <> -1) THEN
3098 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
3099 END IF;
3100 --
3101 raise;
3102 --
3103 END ValidNumberLines;
3104
3105 /*===========================================================================
3106
3107 PROCEDURE NAME: ValidScheduleSource
3108
3109 ===========================================================================*/
3110
3111
3112 PROCEDURE ValidScheduleSource(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE)
3113 IS
3114 --
3115 v_progress VARCHAR2(3) := '010';
3116 v_Chk_Date DATE;
3117 e_SchSrcInv EXCEPTION;
3118 e_OldManualSch EXCEPTION;
3119 -- Bug 4995267:
3120 TYPE c_typ IS REF CURSOR;
3121 c c_typ;
3122 v_edi_num2 VARCHAR2(15);
3123 v_edi_num3 VARCHAR2(15);
3124 v_ref_num VARCHAR2(35);
3125 v_purpose NUMBER;
3126 v_status NUMBER;
3127 v_new_purpose NUMBER;
3128 v_purpose_code VARCHAR2(30);
3129 v_gen_date DATE;
3130 v_creation_date DATE;
3131 e_HighGenDateProcessed EXCEPTION;
3132 e_HighEdiProcessed EXCEPTION;
3133 e_HighRefProcessed EXCEPTION;
3134 e_HighPurProcessed EXCEPTION;
3135 e_HighCrDateProcessed EXCEPTION;
3136 --
3137 CURSOR c_processed_stype IS
3138 SELECT sched_generation_date,
3139 edi_control_num_2,
3140 edi_control_num_3,
3141 schedule_reference_num,
3142 process_status,
3143 schedule_purpose,
3144 DECODE(schedule_purpose, 'ADD', 1, 'CONFIRMATION', 2, 'ORIGINAL', 3, 'REPLACE', 4,
3145 'REPLACE_ALL', 5, 'CANCELLATION', 6, 'CHANGE', 7, 'DELETE', 8),
3146 creation_date
3147 FROM rlm_schedule_headers
3148 WHERE ece_tp_translator_code = x_header_rec.ece_tp_translator_code
3149 AND ece_tp_location_code_ext = x_header_rec.ece_tp_location_code_ext
3150 AND schedule_type = x_header_rec.schedule_type
3151 AND interface_header_id <> x_header_rec.header_id
3152 AND schedule_source <> 'MANUAL'
3153 AND process_status IN (5,7)
3154 ORDER BY sched_generation_date DESC,
3155 edi_control_num_2 DESC,
3156 edi_control_num_3 DESC,
3157 schedule_reference_num DESC,
3158 DECODE(schedule_purpose, 'ADD', 1, 'CONFIRMATION', 2, 'ORIGINAL', 3,
3159 'REPLACE', 4, 'REPLACE_ALL', 5, 'CANCELLATION', 6, 'CHANGE', 7, 'DELETE', 8) DESC,
3160 creation_date DESC;
3161 --
3162 BEGIN
3163 --
3164 IF (l_debug <> -1) THEN
3165 rlm_core_sv.dpush(C_SDEBUG,'ValidScheduleSource');
3166 END IF;
3167 --
3168 IF RLM_MESSAGE_SV.CHECK_DEPENDENCY('SCHEDULE_SOURCE') THEN
3169 --
3170 IF (l_debug <> -1) THEN
3171 rlm_core_sv.dlog(C_DEBUG,'schedule_source',
3172 x_header_rec.schedule_source);
3173 END IF;
3174 --
3175 IF (x_header_rec.schedule_source IS NULL ) THEN
3176 --
3177 raise e_SchSrcInv;
3178 --
3179 ELSIF (x_header_rec.schedule_source <> 'MANUAL' ) THEN
3180 --{
3181 --
3182 --
3183 -- Bug 4995267: Query rlm_schedule_headers table for schedules. Then, compare each attribute
3184 -- (one-by-one) according to the ORDER BY clause (RLMDPWPB). If at any point of
3185 -- attribute comparison, we find a schedule whose attributes are greater than the one
3186 -- currently being processed, DSP should stop indicating that the processing is out of order.
3187 --
3188 IF (l_debug <> -1) THEN
3189 --
3190 rlm_core_sv.dlog(C_DEBUG,'----- Checking the schedules in the archive tables -----');
3191 rlm_core_sv.dlog(C_DEBUG,'RLM_DP_SV.g_order_by_schedule_type', RLM_DP_SV.g_order_by_schedule_type);
3192 --
3193 END IF;
3194 --
3195 OPEN c_processed_stype;
3196 FETCH c_processed_stype INTO v_gen_date, v_edi_num2, v_edi_num3, v_ref_num, v_status, v_purpose_code, v_purpose, v_creation_date;
3197 CLOSE c_processed_stype;
3198 --
3199 --
3200 IF (l_debug <> -1) THEN
3201 rlm_core_sv.dlog(C_DEBUG,'--- Archive schedule info ---');
3202 rlm_core_sv.dlog(C_DEBUG,'v_gen_date',
3203 to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'));
3204 rlm_core_sv.dlog(C_DEBUG,'v_edi_num2',v_edi_num2);
3205 rlm_core_sv.dlog(C_DEBUG,'v_edi_num3',v_edi_num3);
3206 rlm_core_sv.dlog(C_DEBUG,'v_ref_num',v_ref_num);
3207 rlm_core_sv.dlog(C_DEBUG,'v_status',v_status);
3208 rlm_core_sv.dlog(C_DEBUG,'v_purpose_code',v_purpose_code);
3209 rlm_core_sv.dlog(C_DEBUG,'v_creation_date',
3210 to_char(v_creation_date,'DD-MON-YYYY HH24:MI:SS'));
3211 rlm_core_sv.dlog(C_DEBUG,'--- Incoming schedule info ---');
3212 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.sched_generation_date',
3213 to_char(x_header_rec.sched_generation_date,'DD-MON-YYYY HH24:MI:SS'));
3214 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.edi_control_num_2', x_header_rec.edi_control_num_2);
3215 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.edi_control_num_3', x_header_rec.edi_control_num_3);
3216 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.schedule_reference_num', x_header_rec.schedule_reference_num);
3217 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.schedule_purpose', x_header_rec.schedule_purpose);
3218 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.x_header_rec.creation_date',
3219 to_char(x_header_rec.creation_date,'DD-MON-YYYY HH24:MI:SS'));
3220 END IF;
3221 --
3222 IF ( v_gen_date IS NOT NULL) THEN
3223 --{
3224 --
3225 IF (v_gen_date > x_header_rec.sched_generation_date) THEN
3226 --
3227 raise e_HighGenDateProcessed;
3228 --
3229 ELSIF ( v_gen_date = x_header_rec.sched_generation_date ) THEN
3230 --
3231 IF ( v_edi_num2 > x_header_rec.edi_control_num_2 ) THEN
3232 --
3233 IF (l_debug <> -1) THEN
3234 rlm_core_sv.dlog(C_DEBUG,'Higher EDI Control Number2');
3235 END IF;
3236 --
3237 raise e_HighEdiProcessed;
3238 --
3239 ELSIF ( (v_edi_num2 = x_header_rec.edi_control_num_2) OR
3240 (v_edi_num2 IS NULL AND x_header_rec.edi_control_num_2 IS NULL) ) THEN
3241 --
3242 IF ( v_edi_num3 > x_header_rec.edi_control_num_3 ) THEN
3243 --
3244 IF (l_debug <> -1) THEN
3245 rlm_core_sv.dlog(C_DEBUG,'Higher EDI Control Number3');
3246 END IF;
3247 --
3248 raise e_HighEdiProcessed;
3249 --
3250 ELSIF ( (v_edi_num3 = x_header_rec.edi_control_num_3) OR
3251 (v_edi_num3 IS NULL AND x_header_rec.edi_control_num_3 IS NULL) ) THEN
3252 --
3253 IF ( v_ref_num > x_header_rec.schedule_reference_num ) THEN
3254 --
3255 raise e_HighRefProcessed;
3256 --
3257 ELSIF ( v_ref_num = x_header_rec.schedule_reference_num ) THEN
3258 --
3259 OPEN c FOR
3260 SELECT DECODE(schedule_purpose, 'ADD', 1,
3261 'CONFIRMATION', 2, 'ORIGINAL', 3,'REPLACE', 4,
3262 'REPLACE_ALL', 5, 'CANCELLATION', 6,'CHANGE', 7, 'DELETE', 8)
3263 FROM rlm_interface_headers
3264 WHERE header_id = x_header_rec.header_id;
3265 FETCH c into v_new_purpose;
3266 CLOSE c;
3267 --
3268 IF (l_debug <> -1) THEN
3269 rlm_core_sv.dlog(C_DEBUG,'v_purpose',v_purpose);
3270 rlm_core_sv.dlog(C_DEBUG,'v_new_purpose',v_new_purpose);
3271 END IF;
3272 --
3273 IF ( v_purpose > v_new_purpose ) THEN
3274 --
3275 raise e_HighPurProcessed;
3276 --
3277 ELSIF ( v_purpose = v_new_purpose ) THEN
3278 --
3279 IF ( v_creation_date > x_header_rec.creation_date ) THEN
3280 --
3281 raise e_HighCrDateProcessed;
3282 --
3283 END IF;
3284 --
3285 END IF; /* Sch Purpose Check */
3286 --
3287 END IF; /* Sch Ref Num Check */
3288 --
3289 END IF; /* Edi Num3 Check */
3290 --
3291 END IF; /* Edi Num2 Check*/
3292 --
3293 END IF; /* Sch Gen Date Check */
3294 --
3295 --}
3296 END IF; /* v_Gen_Date Null Check */
3297 -- Bug 4995267: End
3298 --
3299 --}
3300 END IF;
3301 --
3302 IF (l_debug <> -1) THEN
3303 rlm_core_sv.dlog(C_DEBUG,'ValidScheduleSource valid');
3304 END IF;
3305 --
3306 ELSE
3307 --
3308 IF (l_debug <> -1) THEN
3309 rlm_core_sv.dlog(C_DEBUG,'ValidScheduleSource not required because of dep');
3310 END IF;
3311 --
3312 END IF;
3313 --
3314 IF (l_debug <> -1) THEN
3315 rlm_core_sv.dpop(C_SDEBUG);
3316 END IF;
3317 --
3318 EXCEPTION
3319 --
3320 WHEN e_SchSrcInv THEN
3321 --
3322 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3323 --
3324 rlm_message_sv.app_error(
3325 x_ExceptionLevel => rlm_message_sv.k_error_level,
3326 x_MessageName => 'RLM_SCHEDULE_SOURCE_INVALID',
3327 x_InterfaceHeaderId => x_header_rec.header_id,
3328 x_ValidationType => 'SCHEDULE_SOURCE');
3329 --
3330 IF (l_debug <> -1) THEN
3331 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: RLM_SCHEDULE_SOURCE_INVALID');
3332 END IF;
3333 --
3334 -- Bug 4995267: Start
3335 WHEN e_HighGenDateProcessed THEN
3336 --
3337 IF (l_debug <> -1) THEN
3338 rlm_core_sv.dlog(C_DEBUG,'Schedule with Higher Schedule Generation Date already processed');
3339 END IF;
3340 --
3341 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3342 rlm_message_sv.app_error(
3343 x_ExceptionLevel => rlm_message_sv.k_error_level,
3344 x_MessageName => 'RLM_HIGH_GEN_DATE_PROCESSED',
3345 x_InterfaceHeaderId => x_header_rec.header_id,
3346 x_token1=> 'REF_NUM',
3347 x_value1=> v_ref_num,
3348 x_token2=> 'STATUS',
3349 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
3350 x_token3=> 'ECE_TP_LOC_CD_EXT',
3351 x_value3=> x_header_rec.ece_tp_location_code_ext,
3352 x_token4=> 'ECE_TP_TRANS_CD',
3353 x_value4=> x_header_rec.ece_tp_translator_code,
3354 x_token5=> 'GEN_DATE',
3355 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
3356 x_ValidationType => 'SCHEDULE_PURPOSE');
3357 --
3358 IF (l_debug <> -1) THEN
3359 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_HIGH_GEN_DATE_PROCESSED');
3360 END IF;
3361 --
3362 WHEN e_HighEdiProcessed THEN
3363 --
3364 IF (l_debug <> -1) THEN
3365 rlm_core_sv.dlog(C_DEBUG,'Schedule with Higher EDI control num already processed');
3366 END IF;
3367 --
3368 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3369 rlm_message_sv.app_error(
3370 x_ExceptionLevel => rlm_message_sv.k_error_level,
3371 x_MessageName => 'RLM_HIGH_EDI_PROCESSED',
3372 x_InterfaceHeaderId => x_header_rec.header_id,
3373 x_token1=> 'REF_NUM',
3374 x_value1=> v_ref_num,
3375 x_token2=> 'STATUS',
3376 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
3377 x_token3=> 'ECE_TP_LOC_CD_EXT',
3378 x_value3=> x_header_rec.ece_tp_location_code_ext,
3379 x_token4=> 'ECE_TP_TRANS_CD',
3380 x_value4=> x_header_rec.ece_tp_translator_code,
3381 x_token5=> 'GEN_DATE',
3382 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
3383 x_token6=> 'EDI_NUM',
3384 x_value6=> v_edi_num2 || '-' || v_edi_num3,
3385 x_ValidationType => 'SCHEDULE_PURPOSE');
3386 --
3387 IF (l_debug <> -1) THEN
3388 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_HIGH_EDI_PROCESSED');
3389 END IF;
3390 --
3391 WHEN e_HighRefProcessed THEN
3392 --
3393 --
3394 IF (l_debug <> -1) THEN
3395 rlm_core_sv.dlog(C_DEBUG,'Schedule with Higher Schedule Reference num already processed');
3396 END IF;
3397 --
3398 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3399 rlm_message_sv.app_error(
3400 x_ExceptionLevel => rlm_message_sv.k_error_level,
3401 x_MessageName => 'RLM_HIGH_REF_PROCESSED',
3402 x_InterfaceHeaderId => x_header_rec.header_id,
3403 x_token1=> 'REF_NUM',
3404 x_value1=> v_ref_num,
3405 x_token2=> 'STATUS',
3406 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
3407 x_token3=> 'ECE_TP_LOC_CD_EXT',
3408 x_value3=> x_header_rec.ece_tp_location_code_ext,
3409 x_token4=> 'ECE_TP_TRANS_CD',
3410 x_value4=> x_header_rec.ece_tp_translator_code,
3411 x_token5=> 'GEN_DATE',
3412 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
3413 x_token6=> 'EDI_NUM',
3414 x_value6=> v_edi_num2 || '-' || v_edi_num3,
3415 x_ValidationType => 'SCHEDULE_PURPOSE');
3416 --
3417 IF (l_debug <> -1) THEN
3418 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_HIGH_REF_PROCESSED');
3419 END IF;
3420 --
3421 --
3422 WHEN e_HighPurProcessed THEN
3423 --
3424 IF (l_debug <> -1) THEN
3425 rlm_core_sv.dlog(C_DEBUG,'Schedule with Higher Schedule Purpose Code already processed');
3426 END IF;
3427 --
3428 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3429 rlm_message_sv.app_error(
3430 x_ExceptionLevel => rlm_message_sv.k_error_level,
3431 x_MessageName => 'RLM_HIGH_PUR_PROCESSED',
3432 x_InterfaceHeaderId => x_header_rec.header_id,
3433 x_token1=> 'REF_NUM',
3434 x_value1=> v_ref_num,
3435 x_token2=> 'STATUS',
3436 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
3437 x_token3=> 'ECE_TP_LOC_CD_EXT',
3438 x_value3=> x_header_rec.ece_tp_location_code_ext,
3439 x_token4=> 'ECE_TP_TRANS_CD',
3440 x_value4=> x_header_rec.ece_tp_translator_code,
3441 x_token5=> 'GEN_DATE',
3442 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
3443 x_token6=> 'EDI_NUM',
3444 x_value6=> v_edi_num2 || '-' || v_edi_num3,
3445 x_token7=> 'PURPOSE',
3446 x_value7=> v_purpose_code,
3447 x_ValidationType => 'SCHEDULE_PURPOSE');
3448 --
3449 IF (l_debug <> -1) THEN
3450 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_HIGH_PUR_PROCESSED');
3451 END IF;
3452 --
3453 WHEN e_HighCrDateProcessed THEN
3454 --
3455 IF (l_debug <> -1) THEN
3456 rlm_core_sv.dlog(C_DEBUG,'Schedule with HIGHER Creation Date already processed');
3457 END IF;
3458 --
3459 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3460 rlm_message_sv.app_error(
3461 x_ExceptionLevel => rlm_message_sv.k_error_level,
3462 x_MessageName => 'RLM_HIGH_CR_DATE_PROCESSED',
3463 x_InterfaceHeaderId => x_header_rec.header_id,
3464 x_token1=> 'REF_NUM',
3465 x_value1=> v_ref_num,
3466 x_token2=> 'STATUS',
3467 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
3468 x_token3=> 'ECE_TP_LOC_CD_EXT',
3469 x_value3=> x_header_rec.ece_tp_location_code_ext,
3470 x_token4=> 'ECE_TP_TRANS_CD',
3471 x_value4=> x_header_rec.ece_tp_translator_code,
3472 x_token5=> 'GEN_DATE',
3473 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
3474 x_token6=> 'EDI_NUM',
3475 x_value6=> v_edi_num2 || '-' || v_edi_num3,
3476 x_token7=> 'PURPOSE',
3477 x_value7=> v_purpose_code,
3478 x_token8=> 'CR_DATE',
3479 x_value8=> to_char(v_creation_date,'DD-MON-YYYY HH24:MI:SS'),
3480 x_ValidationType => 'SCHEDULE_PURPOSE');
3481 --
3482 IF (l_debug <> -1) THEN
3483 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_HIGH_CR_DATE_PROCESSED');
3484 END IF;
3485 --
3486 -- Bug 4995267: End
3487 WHEN OTHERS THEN
3488 --
3489 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3490 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidScheduleSource',
3491 v_Progress);
3492 --
3493 IF (l_debug <> -1) THEN
3494 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
3495 END IF;
3496 --
3497 raise;
3498 --
3499 END ValidScheduleSource;
3500
3501 /*===========================================================================
3502
3503 PROCEDURE NAME: ValidHorizonDates
3504
3505 ===========================================================================*/
3506 PROCEDURE ValidHorizonDates(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE)
3507 IS
3508 --
3509 v_progress VARCHAR2(3) := '010';
3510 e_horizon_dates_invalid EXCEPTION;
3511 --
3512 BEGIN
3513 --
3514 IF (l_debug <> -1) THEN
3515 rlm_core_sv.dpush(C_SDEBUG,'ValidHorizonDates');
3516 END IF;
3517 --
3518 IF RLM_MESSAGE_SV.CHECK_DEPENDENCY('HORIZON_DATES') THEN
3519 --
3520 IF (l_debug <> -1) THEN
3521 rlm_core_sv.dlog(C_DEBUG,'SCHED_HORIZON_START_DATE',
3522 x_header_rec.SCHED_HORIZON_START_DATE);
3523 rlm_core_sv.dlog(C_DEBUG,'SCHED_HORIZON_END_DATE',
3524 x_header_rec.SCHED_HORIZON_END_DATE);
3525 END IF;
3526 --
3527 IF (x_header_rec.SCHED_HORIZON_START_DATE >
3528 x_header_rec.SCHED_HORIZON_END_DATE) THEN
3529 --
3530 raise e_horizon_dates_invalid;
3531 --
3532 END IF;
3533 --
3534 IF (l_debug <> -1) THEN
3535 rlm_core_sv.dlog(C_DEBUG,'ValidHorizonDates valid');
3536 END IF;
3537 --
3538 END IF;
3539 --
3540 IF (l_debug <> -1) THEN
3541 rlm_core_sv.dpop(C_SDEBUG);
3542 END IF;
3543 --
3544 EXCEPTION
3545 --
3546 WHEN e_horizon_dates_invalid THEN
3547 --
3548 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3549 rlm_message_sv.app_error(
3550 x_ExceptionLevel => rlm_message_sv.k_error_level,
3551 x_MessageName => 'RLM_HORIZON_DATES_INVALID',
3552 x_InterfaceHeaderId => x_header_rec.header_id,
3553 x_token1=>'SCHED_HORIZON_START_DATE',
3554 x_value1=>x_header_rec.sched_horizon_start_date,
3555 x_token2=>'SCHED_HORIZON_END_DATE',
3556 x_value2=>x_header_rec.sched_horizon_end_date,
3557 x_ValidationType => 'HORIZON_DATES');
3558 --
3559 IF (l_debug <> -1) THEN
3560 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: RLM_HORIZON_DATES_INVALID');
3561 END IF;
3562 --
3563 WHEN OTHERS THEN
3564 --
3565 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3566 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidHorizonDates',
3567 v_Progress);
3568 --
3569 IF (l_debug <> -1) THEN
3570 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
3571 END IF;
3572 --
3573 raise;
3574 --
3575 END ValidHorizonDates;
3576
3577 /*===========================================================================
3578
3579 PROCEDURE NAME: ValidScheduleReferenceNum
3580
3581 ===========================================================================*/
3582 PROCEDURE ValidScheduleReferenceNum(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE)
3583 IS
3584 --
3585 v_progress VARCHAR2(3) := '010';
3586 e_SchRefInv EXCEPTION;
3587 --
3588 BEGIN
3589 --
3590 IF (l_debug <> -1) THEN
3591 rlm_core_sv.dpush(C_SDEBUG,'ValidScheduleReferenceNum');
3592 END IF;
3593 --
3594 IF RLM_MESSAGE_SV.CHECK_DEPENDENCY('SCHEDULE_REF_NUM') THEN
3595 --
3596 IF (l_debug <> -1) THEN
3597 rlm_core_sv.dlog(C_DEBUG,'schedule_reference_num',
3598 x_header_rec.schedule_reference_num);
3599 END IF;
3600 --
3601 IF x_header_rec.schedule_reference_num IS NULL THEN
3602 --
3603 RAISE e_SchRefInv;
3604 --
3605 END IF;
3606 --
3607 END IF;
3608 --
3609 IF (l_debug <> -1) THEN
3610 rlm_core_sv.dpop(C_SDEBUG);
3611 END IF;
3612 --
3613 EXCEPTION
3614 --
3615 WHEN e_SchRefInv THEN
3616 --
3617 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3618 rlm_message_sv.app_error(
3619 x_ExceptionLevel => rlm_message_sv.k_error_level,
3620 x_MessageName => 'RLM_SCHEDULE_REFERENCE_MISS',
3621 x_InterfaceHeaderId => x_header_rec.header_id,
3622 x_ValidationType => 'SCHEDULE_REF_NUM');
3623 --
3624 IF (l_debug <> -1) THEN
3625 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: RLM_SCHEDULE_REFERENCE_MISS');
3626 END IF;
3627 --
3628 WHEN OTHERS THEN
3629 --
3630 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3631 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidScheduleReferenceNum',
3632 v_Progress);
3633 --
3634 IF (l_debug <> -1) THEN
3635 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
3636 END IF;
3637 --
3638 raise;
3639 --
3640 END ValidScheduleReferenceNum;
3641
3642 /*===========================================================================
3643
3644 PROCEDURE NAME: ValidScheduleType
3645
3646 ===========================================================================*/
3647 PROCEDURE ValidScheduleType(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE)
3648 IS
3649 --
3650 v_progress VARCHAR2(3) := '010';
3651 e_SchTypeInv EXCEPTION;
3652 --
3653 BEGIN
3654 --
3655 IF (l_debug <> -1) THEN
3656 rlm_core_sv.dpush(C_SDEBUG,'ValidScheduleType');
3657 END IF;
3658 --
3659 IF RLM_MESSAGE_SV.CHECK_DEPENDENCY('SCHEDULE_TYPE') THEN
3660 --
3661 IF (l_debug <> -1) THEN
3662 rlm_core_sv.dlog(C_DEBUG,'ScheduleType',x_header_rec.schedule_type);
3663 END IF;
3664 --
3665 IF NOT (RLM_TPA_SV.ValidLookup('RLM_SCHEDULE_TYPE',
3666 x_header_rec.schedule_type,
3667 x_header_rec.sched_generation_date)) THEN
3668 --
3669 RAISE e_SchTypeInv;
3670 --
3671 END IF;
3672 --
3673 END IF;
3674 --
3675 IF (l_debug <> -1) THEN
3676 rlm_core_sv.dpop(C_SDEBUG);
3677 END IF;
3678 --
3679 EXCEPTION
3680 --
3681 WHEN e_SchTypeInv THEN
3682 --
3683 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3684 rlm_message_sv.app_error(
3685 x_ExceptionLevel => rlm_message_sv.k_error_level,
3686 x_MessageName => 'RLM_SCHEDULE_TYPE_INVALID',
3687 x_InterfaceHeaderId => x_header_rec.header_id,
3688 x_token1=>'SCHEDULE_TYPE',
3689 x_value1=>x_header_rec.schedule_type,
3690 x_token2=>'SCHED_GENERATION_DATE',
3691 x_value2=>x_header_rec.sched_generation_date,
3692 x_ValidationType => 'SCHEDULE_TYPE');
3693 --
3694 IF (l_debug <> -1) THEN
3695 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: RLM_SCHEDULE_TYPE_INVALID');
3696 END IF;
3697 --
3698 WHEN OTHERS THEN
3699 --
3700 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3701 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidScheduleType: ',
3702 v_Progress);
3703 --
3704 IF (l_debug <> -1) THEN
3705 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
3706 END IF;
3707 --
3708 raise;
3709 --
3710 END ValidScheduleType;
3711
3712 /*===========================================================================
3713
3714 PROCEDURE NAME: ValidLookup
3715
3716 ===========================================================================*/
3717 FUNCTION ValidLookup(p_lookup_type IN VARCHAR2,
3718 p_lookup_code IN VARCHAR2,
3719 p_date IN DATE)
3720 RETURN BOOLEAN
3721 IS
3722 --
3723 v_progress VARCHAR2(3) := '010';
3724 --
3725 CURSOR c
3726 IS SELECT 1
3727 FROM fnd_lookups
3728 WHERE lookup_type = p_lookup_type
3729 AND lookup_code = p_lookup_code
3730 AND p_date between nvl(start_date_active,to_date('01/01/1900','dd/mm/yyyy'))
3731 AND nvl(end_date_active, to_date('31/12/4712','dd/mm/yyyy'));
3732 --
3733 v_dummy VARCHAR2(1);
3734 --
3735 BEGIN
3736 --
3737 IF (l_debug <> -1) THEN
3738 rlm_core_sv.dpush(C_SDEBUG,'ValidLookup');
3739 rlm_core_sv.dlog(C_DEBUG,'Lookup type ' || p_lookup_type );
3740 rlm_core_sv.dlog(C_DEBUG,'Lookup code ' || p_lookup_code );
3741 rlm_core_sv.dlog(C_DEBUG,'date ' || p_date );
3742 END IF;
3743 --
3744 OPEN c;
3745 --
3746 FETCH c INTO v_dummy ;
3747 --
3748 v_progress := '020';
3749 --
3750 IF c%NOTFOUND THEN
3751 --
3752 v_progress := '030';
3753 --
3754 IF (l_debug <> -1) THEN
3755 rlm_core_sv.dlog(C_DEBUG,'Lookup ' || p_lookup_code || ' not valid');
3756 rlm_core_sv.dpop(C_SDEBUG);
3757 END IF;
3758 --
3759 RETURN FALSE;
3760 --
3761 END IF;
3762 --
3763 CLOSE c;
3764 --
3765 v_progress := '040';
3766 --
3767 IF (l_debug <> -1) THEN
3768 rlm_core_sv.dpop(C_SDEBUG);
3769 END IF;
3770 --
3771 RETURN TRUE;
3772 --
3773 EXCEPTION
3774 --
3775 WHEN OTHERS THEN
3776 --
3777 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidLookup: ',v_Progress);
3778 --
3779 IF (l_debug <> -1) THEN
3780 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
3781 END IF;
3782 --
3783 raise;
3784 --
3785 END ValidLookup;
3786
3787 /*===========================================================================
3788
3789 PROCEDURE NAME: ValidSchedulePurpose
3790
3791 ===========================================================================*/
3792 PROCEDURE ValidSchedulePurpose(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE)
3793 IS
3794 --
3795 v_progress VARCHAR2(3) := '010';
3796 e_SchPurposeInv EXCEPTION;
3797 v_sch_pur NUMBER;
3798 v_edi_count NUMBER;
3799 v_sched_ref VARCHAR2(35);
3800 TYPE c_typ IS REF CURSOR;
3801 c c_typ;
3802 --
3803 -- Bug 4995267:
3804 v_edi_num2 VARCHAR2(15);
3805 v_edi_num3 VARCHAR2(15);
3806 v_ref_num VARCHAR2(35);
3807 v_status NUMBER;
3808 v_purpose NUMBER;
3809 v_new_purpose NUMBER;
3810 v_purpose_code VARCHAR2(30);
3811 v_gen_date DATE;
3812 v_creation_date DATE;
3813 e_LowGenDatePending EXCEPTION;
3814 e_LowEdiPending EXCEPTION;
3815 e_LowRefPending EXCEPTION;
3816 e_LowPurPending EXCEPTION;
3817 e_LowCrDatePending EXCEPTION;
3818 --
3819 CURSOR c_pending_stype IS
3820 SELECT sched_generation_date,
3821 edi_control_num_2,
3822 edi_control_num_3,
3823 schedule_reference_num,
3824 process_status,
3825 schedule_purpose,
3826 DECODE(schedule_purpose, 'ADD', 1, 'CONFIRMATION', 2, 'ORIGINAL', 3, 'REPLACE', 4,
3827 'REPLACE_ALL', 5, 'CANCELLATION', 6, 'CHANGE', 7, 'DELETE', 8),
3828 creation_date
3829 FROM rlm_interface_headers
3830 WHERE ece_tp_translator_code = x_header_rec.ece_tp_translator_code
3831 AND ece_tp_location_code_ext = x_header_rec.ece_tp_location_code_ext
3832 AND schedule_type = x_header_rec.schedule_type
3833 AND header_id <> x_header_rec.header_id
3834 AND schedule_source <> 'MANUAL'
3835 ORDER BY sched_generation_date,
3836 edi_control_num_2,
3837 edi_control_num_3,
3838 schedule_reference_num ,
3839 DECODE(schedule_purpose, 'ADD', 1, 'CONFIRMATION', 2, 'ORIGINAL', 3,
3840 'REPLACE', 4, 'REPLACE_ALL', 5, 'CANCELLATION', 6, 'CHANGE', 7, 'DELETE', 8),
3841 creation_date;
3842 -- Bug 4995267:
3843 --
3844 BEGIN
3845 --
3846 IF (l_debug <> -1) THEN
3847 rlm_core_sv.dpush(C_SDEBUG,'ValidSchedulePurpose');
3848 END IF;
3849 --
3850 IF RLM_MESSAGE_SV.CHECK_DEPENDENCY('SCHEDULE_PURPOSE') THEN
3851 --
3852 IF (l_debug <> -1) THEN
3853 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.schedule_purpose',
3854 x_header_rec.schedule_purpose);
3855 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.ece_tp_translator_code',
3856 x_header_rec.ece_tp_translator_code );
3857 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.ece_tp_location_code_ext',
3858 x_header_rec.ece_tp_location_code_ext );
3859 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.schedule_purpose',
3860 x_header_rec.schedule_purpose );
3861 END IF;
3862 --
3863 IF NOT (RLM_TPA_SV.ValidLookup('RLM_SCHEDULE_PURPOSE',
3864 x_header_rec.schedule_purpose,
3865 x_header_rec.sched_generation_date)) THEN
3866 --
3867 RAISE e_SchPurposeInv;
3868 --
3869 ELSIF (x_header_rec.edi_control_num_2 IS NULL AND
3870 x_header_rec.edi_control_num_3 IS NULL ) THEN
3871 --
3872 IF x_header_rec.schedule_purpose IN (k_CANCEL, k_CHANGE, k_DELETE)THEN
3873 --
3874 SELECT count(*)
3875 INTO v_sch_pur
3876 FROM rlm_interface_headers
3877 WHERE ece_tp_translator_code = x_header_rec.ece_tp_translator_code
3878 AND ece_tp_location_code_ext=x_header_rec.ece_tp_location_code_ext
3879 AND schedule_type=x_header_rec.schedule_type
3880 AND sched_generation_date = x_header_rec.sched_generation_date
3881 AND schedule_reference_num = x_header_rec.schedule_reference_num
3882 AND schedule_purpose IN (
3883 DECODE (x_header_rec.schedule_purpose, k_CANCEL, k_DELETE,
3884 k_DELETE, k_CANCEL, k_CHANGE, k_DELETE),
3885 DECODE (x_header_rec.schedule_purpose, k_CANCEL,
3886 k_CHANGE, k_DELETE, k_CHANGE, k_CHANGE, k_CANCEL),
3887 k_ORIGINAL, k_REPLACE, k_REPLACE_ALL, k_ADD);
3888 --
3889 IF (l_debug <> -1) THEN
3890 rlm_core_sv.dlog(C_DEBUG,'v_sch_pur', v_sch_pur);
3891 END IF;
3892 --
3893 IF (v_sch_pur > 0 ) THEN
3894 --
3895 IF (l_debug <> -1) THEN
3896 rlm_core_sv.dlog(C_DEBUG,'Null EDI control values and purpose in
3897 CANCEL, CHANGE, DELETE');
3898 END IF;
3899 --
3900 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
3901 rlm_message_sv.app_error(
3902 x_ExceptionLevel => rlm_message_sv.k_error_level,
3903 x_MessageName => 'RLM_PUR_PROCESSING_ORDER_V',
3904 x_InterfaceHeaderId => x_header_rec.header_id,
3905 x_token1=>'SCHEDULE_REF_NUM',
3906 x_value1=>x_header_rec.schedule_reference_num,
3907 x_token2=>'ECE_TP_TRANS_CD',
3908 x_value2=>x_header_rec.ece_tp_translator_code,
3909 x_token3=>'ECE_TP_LOC_CD_EXT',
3910 x_value3=>x_header_rec.ece_tp_location_code_ext,
3911 x_token4=>'SCHED_GENERATION_DATE',
3912 x_value4=>x_header_rec.sched_generation_date,
3913 x_ValidationType => 'SCHEDULE_PURPOSE');
3914 --
3915 IF (l_debug <> -1) THEN
3916 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: PURPOSE ORDER VIOLATION');
3917 END IF;
3918 --
3919 END IF;
3920 --
3921 END IF;
3922 --
3923 ELSE -- When x_header_rec.edi_control_num_2 IS NOT NULL OR x_header_rec.edi_control_num_3 IS NOT NULL
3924 --{
3925 /* Bug 4995267: First query rlm_interface_headers table for schedules, irrespective of their
3926 process_status and start comparing each attribute (one-by-one) as indicated
3927 in the ORDER BY clause (RLMDPWPB). If at any point of attribute comparison,
3928 we find a schedule whose attributes are less than the one currently being
3929 processed, DSP should stop indicating that the processing is out of order. */
3930 --
3931 IF (x_header_rec.schedule_source <> 'MANUAL' ) THEN
3932 --
3933 IF (l_debug <> -1) THEN
3934 --
3935 rlm_core_sv.dlog(C_DEBUG,'----- Checking the schedules in the interface tables -----');
3936 rlm_core_sv.dlog(C_DEBUG,'RLM_DP_SV.g_order_by_schedule_type', RLM_DP_SV.g_order_by_schedule_type);
3937 --
3938 END IF;
3939 --
3940 --
3941 OPEN c_pending_stype;
3942 FETCH c_pending_stype INTO v_Gen_Date, v_edi_num2, v_edi_num3, v_ref_num, v_status, v_purpose_code, v_purpose, v_creation_date;
3943 CLOSE c_pending_stype;
3944 --
3945 --
3946 IF (l_debug <> -1) THEN
3947 rlm_core_sv.dlog(C_DEBUG,'--- Interface schedule info ---');
3948 rlm_core_sv.dlog(C_DEBUG,'v_gen_date',
3949 to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'));
3950 rlm_core_sv.dlog(C_DEBUG,'v_edi_num2',v_edi_num2);
3951 rlm_core_sv.dlog(C_DEBUG,'v_edi_num3',v_edi_num3);
3952 rlm_core_sv.dlog(C_DEBUG,'v_ref_num',v_ref_num);
3953 rlm_core_sv.dlog(C_DEBUG,'v_purpose_code',v_purpose_code);
3954 rlm_core_sv.dlog(C_DEBUG,'v_creation_date',
3955 to_char(v_creation_date,'DD-MON-YYYY HH24:MI:SS'));
3956 rlm_core_sv.dlog(C_DEBUG,'--- Incoming schedule info ---');
3957 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.sched_generation_date',
3958 to_char(x_header_rec.sched_generation_date,'DD-MON-YYYY HH24:MI:SS'));
3959 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.edi_control_num_2', x_header_rec.edi_control_num_2);
3960 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.edi_control_num_3', x_header_rec.edi_control_num_3);
3961 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.schedule_reference_num', x_header_rec.schedule_reference_num);
3962 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.schedule_purpose', x_header_rec.schedule_purpose);
3963 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.x_header_rec.creation_date',
3964 to_char(x_header_rec.creation_date,'DD-MON-YYYY HH24:MI:SS'));
3965 END IF;
3966 --
3967 IF ( v_gen_date IS NOT NULL) THEN
3968 --
3969 IF (v_gen_date < x_header_rec.sched_generation_date) THEN
3970 --
3971 raise e_LowGenDatePending;
3972 --
3973 ELSIF ( v_gen_date = x_header_rec.sched_generation_date ) THEN
3974 --
3975 IF ( v_edi_num2 < x_header_rec.edi_control_num_2 ) THEN
3976 --
3977 IF (l_debug <> -1) THEN
3978 rlm_core_sv.dlog(C_DEBUG,'Lower EDI Control Number2');
3979 END IF;
3980 --
3981 raise e_LowEdiPending;
3982 --
3983 ELSIF ( (v_edi_num2 = x_header_rec.edi_control_num_2) OR
3984 (v_edi_num2 IS NULL AND x_header_rec.edi_control_num_2 IS NULL) ) THEN
3985 --
3986 IF ( v_edi_num3 < x_header_rec.edi_control_num_3 ) THEN
3987 --
3988 IF (l_debug <> -1) THEN
3989 rlm_core_sv.dlog(C_DEBUG,'Lower EDI Control Number3');
3990 END IF;
3991 --
3992 raise e_LowEdiPending;
3993 --
3994 ELSIF ( (v_edi_num3 = x_header_rec.edi_control_num_3) OR
3995 (v_edi_num3 IS NULL AND x_header_rec.edi_control_num_3 IS NULL) ) THEN
3996 --
3997 IF ( v_ref_num < x_header_rec.schedule_reference_num ) THEN
3998 --
3999 raise e_LowRefPending;
4000 --
4001 ELSIF ( v_ref_num = x_header_rec.schedule_reference_num ) THEN
4002 --
4003 OPEN c FOR
4004 SELECT DECODE(schedule_purpose, 'ADD',1,
4005 'CONFIRMATION', 2, 'ORIGINAL', 3,'REPLACE', 4,
4006 'REPLACE_ALL', 5, 'CANCELLATION', 6,'CHANGE', 7, 'DELETE', 8)
4007 FROM rlm_interface_headers
4008 WHERE header_id = x_header_rec.header_id;
4009 FETCH c into v_new_purpose;
4010 CLOSE c;
4011 --
4012 IF (l_debug <> -1) THEN
4013 rlm_core_sv.dlog(C_DEBUG,'v_purpose',v_purpose);
4014 rlm_core_sv.dlog(C_DEBUG,'v_new_purpose',v_new_purpose);
4015 END IF;
4016 --
4017 IF ( v_purpose < v_new_purpose ) THEN
4018 --
4019 raise e_LowPurPending;
4020 --
4021 ELSIF ( v_purpose = v_new_purpose ) THEN
4022 --
4023 IF ( v_creation_date < x_header_rec.creation_date ) THEN
4024 --
4025 raise e_LowCrDatePending;
4026 --
4027 END IF;
4028 --
4029 END IF; /* Sch Purpose Check */
4030 --
4031 END IF; /* Sch Ref Num Check */
4032 --
4033 END IF; /* Edi Num3 Check */
4034 --
4035 END IF; /* Edi Num2 Check */
4036 --
4037 END IF; /* Sch Gen Date Check */
4038 --
4039 END IF; /* v_Gen_Date Null Check */
4040 --
4041 END IF; /* Manual check */
4042 --
4043 --}
4044 END IF;
4045 --
4046 END IF;
4047 --
4048 IF (l_debug <> -1) THEN
4049 rlm_core_sv.dpop(C_SDEBUG);
4050 END IF;
4051 --
4052 EXCEPTION
4053 --
4054 WHEN e_SchPurposeInv THEN
4055 --
4056 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
4057 rlm_message_sv.app_error(
4058 x_ExceptionLevel => rlm_message_sv.k_error_level,
4059 x_MessageName => 'RLM_SCHEDULE_PURPOSE_INVALID',
4060 x_InterfaceHeaderId => x_header_rec.header_id,
4061 x_token1=>'SCHEDULE_PURPOSE',
4062 x_value1=>x_header_rec.schedule_purpose,
4063 x_token2=>'SCHED_GENERATION_DATE',
4064 x_value2=>x_header_rec.sched_generation_date,
4065 x_ValidationType => 'SCHEDULE_PURPOSE');
4066 --
4067 IF (l_debug <> -1) THEN
4068 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: RLM_SCHEDULE_PURPOSE_INVALID');
4069 END IF;
4070 --
4071 -- Bug 4995267: Start
4072 WHEN e_LowGenDatePending THEN
4073 --
4074 IF (l_debug <> -1) THEN
4075 rlm_core_sv.dlog(C_DEBUG,'Schedule with lower Schedule Generation Date is not yet processed');
4076 END IF;
4077 --
4078 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
4079 rlm_message_sv.app_error(
4080 x_ExceptionLevel => rlm_message_sv.k_error_level,
4081 x_MessageName => 'RLM_LOW_GEN_DATE_PENDING',
4082 x_InterfaceHeaderId => x_header_rec.header_id,
4083 x_token1=> 'REF_NUM',
4084 x_value1=> v_ref_num,
4085 x_token2=> 'STATUS',
4086 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
4087 x_token3=> 'ECE_TP_LOC_CD_EXT',
4088 x_value3=> x_header_rec.ece_tp_location_code_ext,
4089 x_token4=> 'ECE_TP_TRANS_CD',
4090 x_value4=> x_header_rec.ece_tp_translator_code,
4091 x_token5=> 'GEN_DATE',
4092 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
4093 x_ValidationType => 'SCHEDULE_PURPOSE');
4094 --
4095 IF (l_debug <> -1) THEN
4096 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_LOW_GEN_DATE_PENDING');
4097 END IF;
4098 --
4099 WHEN e_LowEdiPending THEN
4100 --
4101 IF (l_debug <> -1) THEN
4102 rlm_core_sv.dlog(C_DEBUG,'Schedule with lower EDI control num is not yet processed');
4103 END IF;
4104 --
4105 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
4106 rlm_message_sv.app_error(
4107 x_ExceptionLevel => rlm_message_sv.k_error_level,
4108 x_MessageName => 'RLM_LOW_EDI_PENDING',
4109 x_InterfaceHeaderId => x_header_rec.header_id,
4110 x_token1=> 'REF_NUM',
4111 x_value1=> v_ref_num,
4112 x_token2=> 'STATUS',
4113 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
4114 x_token3=> 'ECE_TP_LOC_CD_EXT',
4115 x_value3=> x_header_rec.ece_tp_location_code_ext,
4116 x_token4=> 'ECE_TP_TRANS_CD',
4117 x_value4=> x_header_rec.ece_tp_translator_code,
4118 x_token5=> 'GEN_DATE',
4119 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
4120 x_token6=> 'EDI_NUM',
4121 x_value6=> v_edi_num2 || '-' || v_edi_num3,
4122 x_ValidationType => 'SCHEDULE_PURPOSE');
4123 --
4124 IF (l_debug <> -1) THEN
4125 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_LOW_EDI_PENDING');
4126 END IF;
4127 --
4128 WHEN e_LowRefPending THEN
4129 --
4130 --
4131 IF (l_debug <> -1) THEN
4132 rlm_core_sv.dlog(C_DEBUG,'Schedule with lower Schedule Reference num is not yet processed');
4133 END IF;
4134 --
4135 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
4136 rlm_message_sv.app_error(
4137 x_ExceptionLevel => rlm_message_sv.k_error_level,
4138 x_MessageName => 'RLM_LOW_REF_PENDING',
4139 x_InterfaceHeaderId => x_header_rec.header_id,
4140 x_token1=> 'REF_NUM',
4141 x_value1=> v_ref_num,
4142 x_token2=> 'STATUS',
4143 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
4144 x_token3=> 'ECE_TP_LOC_CD_EXT',
4145 x_value3=> x_header_rec.ece_tp_location_code_ext,
4146 x_token4=> 'ECE_TP_TRANS_CD',
4147 x_value4=> x_header_rec.ece_tp_translator_code,
4148 x_token5=> 'GEN_DATE',
4149 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
4150 x_token6=> 'EDI_NUM',
4151 x_value6=> v_edi_num2 || '-' || v_edi_num3,
4152 x_ValidationType => 'SCHEDULE_PURPOSE');
4153 --
4154 IF (l_debug <> -1) THEN
4155 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_LOW_REF_PENDING');
4156 END IF;
4157 --
4158 WHEN e_LowPurPending THEN
4159 --
4160 IF (l_debug <> -1) THEN
4161 rlm_core_sv.dlog(C_DEBUG,'Schedule with lower Schedule Purpose Code is not yet processed');
4162 END IF;
4163 --
4164 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
4165 rlm_message_sv.app_error(
4166 x_ExceptionLevel => rlm_message_sv.k_error_level,
4167 x_MessageName => 'RLM_LOW_PUR_PENDING',
4168 x_InterfaceHeaderId => x_header_rec.header_id,
4169 x_token1=> 'REF_NUM',
4170 x_value1=> v_ref_num,
4171 x_token2=> 'STATUS',
4172 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
4173 x_token3=> 'ECE_TP_LOC_CD_EXT',
4174 x_value3=> x_header_rec.ece_tp_location_code_ext,
4175 x_token4=> 'ECE_TP_TRANS_CD',
4176 x_value4=> x_header_rec.ece_tp_translator_code,
4177 x_token5=> 'GEN_DATE',
4178 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
4179 x_token6=> 'EDI_NUM',
4180 x_value6=> v_edi_num2 || '-' || v_edi_num3,
4181 x_token7=> 'PURPOSE',
4182 x_value7=> v_purpose_code,
4183 x_ValidationType => 'SCHEDULE_PURPOSE');
4184 --
4185 IF (l_debug <> -1) THEN
4186 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_LOW_PUR_PENDING');
4187 END IF;
4188 --
4189 WHEN e_LowCrDatePending THEN
4190 --
4191 IF (l_debug <> -1) THEN
4192 rlm_core_sv.dlog(C_DEBUG,'Schedule with lower Creation Date is not yet processed');
4193 END IF;
4194 --
4195 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
4196 rlm_message_sv.app_error(
4197 x_ExceptionLevel => rlm_message_sv.k_error_level,
4198 x_MessageName => 'RLM_LOW_CR_DATE_PENDING',
4199 x_InterfaceHeaderId => x_header_rec.header_id,
4200 x_token1=> 'REF_NUM',
4201 x_value1=> v_ref_num,
4202 x_token2=> 'STATUS',
4203 x_value2=> rlm_core_sv.get_proc_status_meaning(v_status),
4204 x_token3=> 'ECE_TP_LOC_CD_EXT',
4205 x_value3=> x_header_rec.ece_tp_location_code_ext,
4206 x_token4=> 'ECE_TP_TRANS_CD',
4207 x_value4=> x_header_rec.ece_tp_translator_code,
4208 x_token5=> 'GEN_DATE',
4209 x_value5=> to_char(v_gen_date,'DD-MON-YYYY HH24:MI:SS'),
4210 x_token6=> 'EDI_NUM',
4211 x_value6=> v_edi_num2 || '-' || v_edi_num3,
4212 x_token7=> 'PURPOSE',
4213 x_value7=> v_purpose_code,
4214 x_token8=> 'CR_DATE',
4215 x_value8=> to_char(v_creation_date,'DD-MON-YYYY HH24:MI:SS'),
4216 x_ValidationType => 'SCHEDULE_PURPOSE');
4217 --
4218 IF (l_debug <> -1) THEN
4219 rlm_core_sv.dpop(C_DEBUG,'EXCEPTION: RLM_LOW_CR_DATE_PENDING');
4220 END IF;
4221 --
4222 -- Bug 4995267: End
4223 WHEN OTHERS THEN
4224 --
4225 x_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
4226 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidSchedulePurpose: ',
4227 v_Progress);
4228 --
4229 IF (l_debug <> -1) THEN
4230 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
4231 END IF;
4232 --
4233 raise;
4234 --
4235 END ValidSchedulePurpose;
4236
4237 /*===========================================================================
4238
4239 PROCEDURE NAME: DeriveOrgDependentIDs
4240
4241 ===========================================================================*/
4242 PROCEDURE DeriveOrgDependentIDs(
4243 x_setup_terms_rec IN RLM_SETUP_TERMS_SV.setup_terms_rec_typ,
4244 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
4245 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
4246 IS
4247 --
4248 v_progress VARCHAR2(3) := '010';
4249 --
4250 BEGIN
4251 --
4252 IF (l_debug <> -1) THEN
4253 rlm_core_sv.dpush(C_SDEBUG,'DeriveOrgDependentIDs');
4254 END IF;
4255 --
4256 --undo performance changes for bug 6185706
4257 RLM_TPA_SV.DeriveInventoryItemId(x_header_rec, x_lines_rec);
4258 DerivePurchaseOrder(x_setup_terms_rec, x_header_rec, x_lines_rec);
4259 --derive_price_list; -- TODO
4260 --
4261 IF (l_debug <> -1) THEN
4262 rlm_core_sv.dpop(C_SDEBUG);
4263 END IF;
4264 --
4265 EXCEPTION
4266 --
4267 WHEN OTHERS THEN
4268 --
4269 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4270 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveOrgDependentIDs: ',
4271 v_Progress);
4272 --
4273 IF (l_debug <> -1) THEN
4274 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
4275 END IF;
4276 --
4277 raise;
4278 --
4279 END DeriveOrgDependentIDs;
4280
4281 /*===========================================================================
4282
4283 PROCEDURE NAME: DeriveIDs
4284
4285 ===========================================================================*/
4286 PROCEDURE DeriveIDs( x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE,
4287 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
4288 IS
4289
4290 v_progress VARCHAR2(3) := '010';
4291 v_bill_to_customer_id NUMBER default NULL;
4292
4293 -- Need to change all the DeriveIDs to accept records
4294 --
4295 BEGIN
4296 --
4297 IF (l_debug <> -1) THEN
4298 rlm_core_sv.dpush(C_SDEBUG,'DeriveIDs');
4299 END IF;
4300 --
4301 DeriveCustomerID(x_header_rec,x_lines_rec) ;
4302 DeriveShipToID(x_header_rec, x_lines_rec);
4303 --DeriveBillToID(x_header_rec, x_lines_rec);
4304 --
4305 --rlm_core_sv.dlog(C_DEBUG,'BILLTOID', x_lines_rec.bill_to_address_id);
4306
4307 -- validate the relationship of customer id of bill_to and ship_to
4308 --
4309 DeriveIntrmdShipToID(x_header_rec, x_lines_rec);
4310 RLM_TPA_SV.ValidateCustomerItem(x_header_rec, x_lines_rec);
4311 DeriveShipFromOrg(x_header_rec, x_lines_rec);
4312 --
4313 IF (l_debug <> -1) THEN
4314 rlm_core_sv.dpop(C_SDEBUG);
4315 END IF;
4316 --
4317 EXCEPTION
4318 --
4319 WHEN OTHERS THEN
4320 --
4321 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4322 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveIDs', v_Progress);
4323 --
4324 IF (l_debug <> -1) THEN
4325 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
4326 END IF;
4327 --
4328 raise;
4329 --
4330 END DeriveIDs;
4331
4332 /*===========================================================================
4333
4334 PROCEDURE NAME: DeriveInventoryItemId
4335
4336 ===========================================================================*/
4337 PROCEDURE DeriveInventoryItemId(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
4338 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
4339 IS
4340 --
4341 v_progress VARCHAR2(3) := '010';
4342 v_CustomerId NUMBER;
4343 v_CustomerCategoryCode VARCHAR2(30);
4344 v_AddressId NUMBER;
4345 v_CustomerItemNumber VARCHAR2(50);
4346 v_BillCustomerItemId NUMBER;
4347 v_BillInventoryItemId NUMBER;
4348 v_ItemDefinitionLevel VARCHAR2(1);
4349 v_CustomerItemDesc VARCHAR2(240);
4350 v_ModelCustomerItemId NUMBER;
4351 v_CommodityCodeId NUMBER;
4352 v_MasterContainerItemId NUMBER;
4353 v_ContainerItemOrgId NUMBER;
4354 v_DetailContainerItemId NUMBER;
4355 v_MinFillPercentage NUMBER;
4356 v_DepPlanRequiredFlag VARCHAR2(1);
4357 v_DepPlanPriorBldFlag VARCHAR2(1);
4358 v_DemandTolerancePositive NUMBER;
4359 v_DemandToleranceNegative NUMBER;
4360 v_InventoryItemIdFromSup NUMBER;
4361 v_InventoryItemIdFromSeg NUMBER;
4362 v_AttributeCategory VARCHAR2(30);
4363 v_Attribute1 VARCHAR2(150);
4364 v_Attribute2 VARCHAR2(150);
4365 v_Attribute3 VARCHAR2(150);
4366 v_Attribute4 VARCHAR2(150);
4367 v_Attribute5 VARCHAR2(150);
4368 v_Attribute6 VARCHAR2(150);
4369 v_Attribute7 VARCHAR2(150);
4370 v_Attribute8 VARCHAR2(150);
4371 v_Attribute9 VARCHAR2(150);
4372 v_Attribute10 VARCHAR2(150);
4373 v_Attribute11 VARCHAR2(150);
4374 v_Attribute12 VARCHAR2(150);
4375 v_Attribute13 VARCHAR2(150);
4376 v_Attribute14 VARCHAR2(150);
4377 v_Attribute15 VARCHAR2(150);
4378 v_MasterOrganizationId NUMBER;
4379 v_BillMasterOrganizationId NUMBER;
4380 v_PreferenceNumber NUMBER;
4381 v_ErrorCode VARCHAR2(9);
4382 v_ErrorFlag VARCHAR2(1);
4383 v_ErrorMessage VARCHAR2(2000);
4384 e_NullCustItemId EXCEPTION;
4385 e_SuppItemInvalid EXCEPTION;
4386 e_InvalidItem EXCEPTION;
4387 -- global_atp
4388 e_ATPSequenced EXCEPTION;
4389 v_Active NUMBER := 0;
4390 v_customer_item_id NUMBER;
4391 v_CustOrderEnabledFlag VARCHAR2(1);
4392 v_dummy_id NUMBER;
4393 e_NotCustOrderEnabled EXCEPTION;
4394 v_ship_to_address_id NUMBER;
4395 --
4396 CURSOR c_CustOrderEnabled(p_InvItemId NUMBER, p_ShipFromOrgId NUMBER) IS
4397 SELECT customer_order_enabled_flag
4398 FROM mtl_system_items
4399 WHERE inventory_item_id = p_InvItemId AND
4400 organization_id = p_ShipFromOrgId;
4401 --
4402 BEGIN
4403 --
4404 IF (l_debug <> -1) THEN
4405 rlm_core_sv.dpush(C_SDEBUG,'DeriveInventoryItemId');
4406 rlm_core_sv.dlog(C_DEBUG,'inventory_item_id ',x_lines_rec.inventory_item_id);
4407 END IF;
4408 --
4409
4410 IF rlm_message_sv.check_dependency('INVENTORY_ITEM') THEN
4411 --
4412 -- The original customer item id needs to be stored. This value
4413 -- can be lost if inv api returns false
4414 v_customer_item_id := x_lines_rec.customer_item_id;
4415
4416 IF x_lines_rec.inventory_item_id IS NULL THEN
4417 --
4418 IF (l_debug <> -1) THEN
4419 rlm_core_sv.dlog(C_DEBUG,'inventory item derived from inv API');
4420 rlm_core_sv.dlog(C_DEBUG,'customer_item_id id ' ,
4421 x_lines_rec.customer_item_id);
4422 rlm_core_sv.dlog(C_DEBUG,'ship_from_org ' ,
4423 x_lines_rec.ship_from_org_id);
4424 END IF;
4425 --
4426 -- get_inv_item_id from inventory API
4427 -- where customer_item_id = x_lines_rec.customer_item_id
4428 -- and master_organization_id = x_lines_rec.ship_from_org_id
4429 IF (x_header_rec.customer_id is not NULL) THEN
4430 --
4431 IF (l_debug <> -1) THEN
4432 rlm_core_sv.dlog(C_DEBUG, 'Calling inv_customer_item_grp.fetch_attributes ');
4433 rlm_core_sv.dlog(C_DEBUG, 'x_lines_rec.ship_to_address_id',
4434 x_lines_rec.ship_to_address_id);
4435 rlm_core_sv.dlog(C_DEBUG, 'x_lines_rec.ship_to_customer_id',
4436 x_lines_rec.ship_to_customer_id);
4437 rlm_core_sv.dlog(C_DEBUG, 'x_lines_rec.Ship_From_Org_Id',
4438 x_lines_rec.Ship_From_Org_Id);
4439 rlm_core_sv.dlog(C_DEBUG, 'x_lines_rec.customer_item_id',
4440 x_lines_rec.customer_item_id);
4441 END IF;
4442 --
4443 IF (x_header_rec.customer_id <> nvl(x_lines_rec.ship_to_customer_id, x_header_rec.customer_id)) THEN
4444 --
4445 v_ship_to_address_id := NULL;
4446 --
4447 ELSE
4448 --
4449 v_ship_to_address_id := x_lines_rec.SHIP_TO_ADDRESS_ID;
4450 --
4451 END IF;
4452 --
4453 IF (l_debug <> -1) THEN
4454 rlm_core_sv.dlog(C_DEBUG, 'v_ship_to_address_id ',
4455 v_ship_to_address_id);
4456 END IF;
4457 --
4458 inv_customer_item_grp.fetch_attributes(
4459 --x_lines_rec.SHIP_TO_ADDRESS_ID,
4460 v_ship_to_address_id,
4461 NULL, x_header_rec.customer_id,
4462 x_lines_rec.Customer_Item_Ext,
4463 x_lines_rec.Ship_From_Org_Id,
4464 x_lines_rec.Customer_Item_Id,NULL,
4465 --x_lines_rec.Customer_Item_Id,
4466 v_dummy_id,
4467 v_CustomerId, v_CustomerCategoryCode,
4468 v_AddressId, v_CustomerItemNumber,
4469 v_ItemDefinitionLevel,
4470 v_CustomerItemDesc,
4471 v_ModelCustomerItemId,
4472 v_CommodityCodeId,
4473 v_MasterContainerItemId,
4474 v_ContainerItemOrgId,
4475 v_DetailContainerItemId,
4476 v_MinFillPercentage,
4477 v_DepPlanRequiredFlag,
4478 v_DepPlanPriorBldFlag,
4479 v_DemandTolerancePositive,
4480 v_DemandToleranceNegative,
4481 v_AttributeCategory,
4482 v_Attribute1, v_Attribute2,
4483 v_Attribute3, v_Attribute4,
4484 v_Attribute5, v_Attribute6,
4485 v_Attribute7, v_Attribute8,
4486 v_Attribute9, v_Attribute10,
4487 v_Attribute11, v_Attribute12,
4488 v_Attribute13, v_Attribute14,
4489 v_Attribute15,
4490 x_lines_rec.INVENTORY_ITEM_ID,
4491 v_MasterOrganizationId,
4492 v_PreferenceNumber, v_ErrorCode,
4493 v_ErrorFlag, v_ErrorMessage);
4494 --
4495 IF (l_debug <> -1) THEN
4496 rlm_core_sv.dlog(C_DEBUG,'v_ErrorMessage', v_ErrorMessage);
4497 rlm_core_sv.dlog(C_DEBUG,'v_ErrorCode', v_ErrorCode);
4498 rlm_core_sv.dlog(C_DEBUG, 'Inventory Item ID from Inventory API',
4499 x_lines_rec.inventory_item_id);
4500 END IF;
4501 --
4502 IF v_ErrorFlag = 'Y' THEN
4503 --
4504 raise e_InvalidItem;
4505 --
4506 ELSIF x_lines_rec.Customer_Item_Id is NULL THEN
4507 --
4508 raise e_NullCustItemId;
4509 --
4510 END IF;
4511 --
4512 OPEN c_CustOrderEnabled(x_lines_rec.inventory_item_id,
4513 x_lines_rec.ship_from_org_id);
4514 FETCH c_CustOrderEnabled INTO v_CustOrderEnabledFlag;
4515 CLOSE c_CustOrderEnabled;
4516 --
4517 IF (l_debug <> -1) THEN
4518 rlm_core_sv.dlog(C_DEBUG, 'customer_order_enabled_flag',
4519 v_CustOrderEnabledFlag);
4520 END IF;
4521 --
4522 IF NVL(v_CustOrderEnabledFlag, 'N') <> 'Y' THEN
4523 RAISE e_NotCustOrderEnabled;
4524 END IF;
4525 --
4526 END IF;
4527 --
4528 IF x_lines_rec.supplier_item_ext IS NOT NULL THEN
4529 --
4530 v_progress := '020';
4531 --
4532 BEGIN
4533 --
4534 SELECT inventory_item_id
4535 INTO v_InventoryItemidFromSup
4536 FROM mtl_item_flexfields
4537 WHERE item_number = x_lines_rec.supplier_item_ext
4538 AND organization_id = x_lines_rec.ship_from_org_id
4539 AND customer_order_enabled_flag = 'Y';
4540 --
4541 -- Check if this is the same as derived from customer item
4542 --
4543 IF(v_InventoryItemIdFromSup <> x_lines_rec.inventory_item_id) THEN
4544
4545 rlm_message_sv.app_error(
4546 x_ExceptionLevel => rlm_message_sv.k_warn_level,
4547 x_MessageName => 'RLM_SUPPLIER_ITEM_MISMATCH',
4548 x_InterfaceHeaderId => x_lines_rec.header_id,
4549 x_InterfaceLineId => x_lines_rec.line_id,
4550 x_token1=>'SUPPLIER_ITEM',
4551 x_value1=>x_lines_rec.supplier_item_ext);
4552 --
4553 IF (l_debug <> -1) THEN
4554 rlm_core_sv.dlog('WARNING: RLM_SUPPLIER_ITEM_MISMATCH');
4555 END IF;
4556 --
4557 END IF;
4558
4559 EXCEPTION
4560 WHEN NO_DATA_FOUND THEN
4561 --
4562 rlm_message_sv.app_error(
4563 x_ExceptionLevel => rlm_message_sv.k_warn_level,
4564 x_MessageName => 'RLM_INVALID_SUPPLIER_ITEM',
4565 x_InterfaceHeaderId => x_lines_rec.header_id,
4566 x_InterfaceLineId => x_lines_rec.line_id,
4567 x_token1=>'SUPPLIER_ITEM',
4568 x_value1=>x_lines_rec.supplier_item_ext);
4569 --
4570 IF (l_debug <> -1) THEN
4571 rlm_core_sv.dlog('WARNING: RLM_INVALID_SUPPLIER_ITEM');
4572 END IF;
4573 --
4574 END;
4575 --
4576 ELSIF (x_lines_rec.inventory_item_segment1 IS NOT NULL AND
4577 x_lines_rec.inventory_item_segment2 IS NOT NULL AND
4578 x_lines_rec.inventory_item_segment3 IS NOT NULL AND
4579 x_lines_rec.inventory_item_segment4 IS NOT NULL AND
4580 x_lines_rec.inventory_item_segment5 IS NOT NULL AND
4581 x_lines_rec.inventory_item_segment6 IS NOT NULL AND
4582 x_lines_rec.inventory_item_segment7 IS NOT NULL AND
4583 x_lines_rec.inventory_item_segment8 IS NOT NULL AND
4584 x_lines_rec.inventory_item_segment9 IS NOT NULL AND
4585 x_lines_rec.inventory_item_segment10 IS NOT NULL AND
4586 x_lines_rec.inventory_item_segment11 IS NOT NULL AND
4587 x_lines_rec.inventory_item_segment12 IS NOT NULL AND
4588 x_lines_rec.inventory_item_segment13 IS NOT NULL AND
4589 x_lines_rec.inventory_item_segment14 IS NOT NULL AND
4590 x_lines_rec.inventory_item_segment15 IS NOT NULL AND
4591 x_lines_rec.inventory_item_segment16 IS NOT NULL AND
4592 x_lines_rec.inventory_item_segment17 IS NOT NULL AND
4593 x_lines_rec.inventory_item_segment18 IS NOT NULL AND
4594 x_lines_rec.inventory_item_segment19 IS NOT NULL AND
4595 x_lines_rec.inventory_item_segment20 IS NOT NULL)
4596 THEN
4597 -- derive inv item based on the segments
4598 IF (l_debug <> -1) THEN
4599 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment1 ',
4600 x_lines_rec.inventory_item_segment1);
4601 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment2 ',
4602 x_lines_rec.inventory_item_segment2);
4603 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment3 ',
4604 x_lines_rec.inventory_item_segment3);
4605 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment4 ',
4606 x_lines_rec.inventory_item_segment4);
4607 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment5 ',
4608 x_lines_rec.inventory_item_segment5);
4609 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment6 ',
4610 x_lines_rec.inventory_item_segment6);
4611 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment7 ',
4612 x_lines_rec.inventory_item_segment7);
4613 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment8 ',
4614 x_lines_rec.inventory_item_segment8);
4615 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment9 ',
4616 x_lines_rec.inventory_item_segment9);
4617 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment10 ',
4618 x_lines_rec.inventory_item_segment10);
4619 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment11',
4620 x_lines_rec.inventory_item_segment11);
4621 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment12 ',
4622 x_lines_rec.inventory_item_segment12);
4623 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment13 ',
4624 x_lines_rec.inventory_item_segment13);
4625 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment14 ',
4626 x_lines_rec.inventory_item_segment14);
4627 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment15 ',
4628 x_lines_rec.inventory_item_segment15);
4629 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment16 ',
4630 x_lines_rec.inventory_item_segment16);
4631 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment17 ',
4632 x_lines_rec.inventory_item_segment17);
4633 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment18 ',
4634 x_lines_rec.inventory_item_segment18);
4635 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment19 ',
4636 x_lines_rec.inventory_item_segment19);
4637 rlm_core_sv.dlog(C_DEBUG,'inventory_item_segment20 ',
4638 x_lines_rec.inventory_item_segment20);
4639 END IF;
4640 --
4641 BEGIN
4642 --
4643 SELECT inventory_item_id
4644 INTO v_InventoryItemIdFromSeg
4645 FROM mtl_system_items
4646 WHERE segment1 = x_lines_rec.inventory_item_segment1
4647 AND segment2 = x_lines_rec.inventory_item_segment2
4648 AND segment3 = x_lines_rec.inventory_item_segment3
4649 AND segment4 = x_lines_rec.inventory_item_segment4
4650 AND segment5 = x_lines_rec.inventory_item_segment5
4651 AND segment6 = x_lines_rec.inventory_item_segment6
4652 AND segment7 = x_lines_rec.inventory_item_segment7
4653 AND segment8 = x_lines_rec.inventory_item_segment8
4654 AND segment9 = x_lines_rec.inventory_item_segment9
4655 AND segment10 = x_lines_rec.inventory_item_segment10
4656 AND segment11 = x_lines_rec.inventory_item_segment11
4657 AND segment12 = x_lines_rec.inventory_item_segment12
4658 AND segment13 = x_lines_rec.inventory_item_segment13
4659 AND segment14 = x_lines_rec.inventory_item_segment14
4660 AND segment15 = x_lines_rec.inventory_item_segment15
4661 AND segment16 = x_lines_rec.inventory_item_segment16
4662 AND segment17 = x_lines_rec.inventory_item_segment17
4663 AND segment18 = x_lines_rec.inventory_item_segment18
4664 AND segment19 = x_lines_rec.inventory_item_segment19
4665 AND segment20 = x_lines_rec.inventory_item_segment20
4666 AND customer_order_enabled_flag = 'Y';
4667 --
4668 v_progress := '040';
4669
4670 --check if this is the same as derived from customer item
4671
4672 IF(v_InventoryItemIdFromSeg <> x_lines_rec.inventory_item_id) THEN
4673
4674 rlm_message_sv.app_error(
4675 x_ExceptionLevel => rlm_message_sv.k_warn_level,
4676 x_MessageName => 'RLM_INV_ITEM_SEG_MISMATCH',
4677 x_InterfaceHeaderId => x_lines_rec.header_id,
4678 x_InterfaceLineId => x_lines_rec.line_id);
4679 --
4680 IF (l_debug <> -1) THEN
4681 rlm_core_sv.dlog('WARNING: RLM_INVENTORY_ITEM_SEG_MISMATCH');
4682 END IF;
4683 --
4684 END IF;
4685
4686 EXCEPTION
4687 WHEN NO_DATA_FOUND THEN
4688 --
4689 rlm_message_sv.app_error(
4690 x_ExceptionLevel => rlm_message_sv.k_warn_level,
4691 x_MessageName => 'RLM_INVALID_INVENTORY_ITEM_SEG',
4692 x_InterfaceHeaderId => x_lines_rec.header_id,
4693 x_InterfaceLineId => x_lines_rec.line_id);
4694 --
4695 IF (l_debug <> -1) THEN
4696 rlm_core_sv.dlog('WARNING: RLM_INVALID_INVENTORY_ITEM_SEGMENTS');
4697 END IF;
4698 --
4699
4700 END;
4701 --
4702 END IF; --checks for supplier and inv item segments
4703 --
4704 END IF; --inventory_item_id
4705 --
4706 IF (l_debug <> -1) THEN
4707 rlm_core_sv.dlog(C_DEBUG,'inventory_item_id is ' ||
4708 x_lines_rec.inventory_item_id);
4709 END IF;
4710 --
4711 END IF;
4712 --
4713 -- global_atp
4714 -- Validate: ATP items in sequenced schedule should be rejected
4715 IF RLM_MANAGE_DEMAND_SV.IsATPItem(x_lines_rec.ship_from_org_id,
4716 x_lines_rec.inventory_item_id) THEN
4717 --
4718 IF x_header_rec.schedule_type = 'SEQUENCED' THEN
4719 --
4720 RAISE e_ATPSequenced;
4721 --
4722 END IF;
4723 --
4724 END IF;
4725 --
4726 IF (l_debug <> -1) THEN
4727 rlm_core_sv.dpop(C_SDEBUG);
4728 END IF;
4729 --
4730 EXCEPTION
4731 --
4732 WHEN e_ATPSequenced THEN
4733 --
4734 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4735 --
4736 rlm_message_sv.app_error(
4737 x_ExceptionLevel => rlm_message_sv.k_error_level,
4738 x_MessageName => 'RLM_ATP_SEQUENCED',
4739 x_InterfaceHeaderId => x_lines_rec.header_id,
4740 x_InterfaceLineId => x_lines_rec.line_id,
4741 x_ValidationType => 'INVENTORY_ITEM');
4742 --
4743 IF (l_debug <> -1) THEN
4744 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: RLM_ATP_SEQUENCED');
4745 END IF;
4746 --
4747 WHEN e_NullCustItemId THEN
4748 --
4749 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4750 --
4751 rlm_message_sv.app_error(
4752 x_ExceptionLevel => rlm_message_sv.k_error_level,
4753 x_MessageName => 'RLM_NULL_CUSTOMER_ITEM_ID',
4754 x_InterfaceHeaderId => x_lines_rec.header_id,
4755 x_InterfaceLineId => x_lines_rec.line_id,
4756 x_token1=> 'CUSTEXT',
4757 x_value1=> x_lines_rec.customer_item_ext,
4758 x_ValidationType => 'INVENTORY_ITEM');
4759 --
4760 IF (l_debug <> -1) THEN
4761 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
4762 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: RLM_NULL_CUSTOMER_ITEM_ID');
4763 END IF;
4764 --
4765 WHEN e_SuppItemInvalid THEN
4766 --
4767 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4768 rlm_message_sv.app_error(
4769 x_ExceptionLevel => rlm_message_sv.k_error_level,
4770 x_MessageName => 'RLM_SUPPLIER_ITEM_INVALID',
4771 x_InterfaceHeaderId => x_lines_rec.header_id,
4772 x_InterfaceLineId => x_lines_rec.line_id,
4773 x_token1=>'SUPPLIER_ITEM_EXT',
4774 x_value1=>x_lines_rec.supplier_item_ext,
4775 x_ValidationType => 'INVENTORY_ITEM');
4776 --
4777 IF (l_debug <> -1) THEN
4778 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
4779 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SUPPLIER_ITEM_INVALID');
4780 END IF;
4781 --
4782 WHEN e_InvalidItem THEN
4783 --
4784 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4785 --
4786 rlm_message_sv.app_error(
4787 x_ExceptionLevel => rlm_message_sv.k_error_level,
4788 x_MessageName => 'RLM_INVENTORY_ITEM_INACTIVE',
4789 x_InterfaceHeaderId => x_lines_rec.header_id,
4790 x_InterfaceLineId => x_lines_rec.line_id,
4791 x_token1=> 'CUSTOMER_ITEM',
4792 x_value1=> RLM_CORE_SV.get_item_number(v_customer_item_id),
4793 x_ValidationType => 'INVENTORY_ITEM');
4794 --
4795 IF (l_debug <> -1) THEN
4796 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
4797 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_INVENTORY_ITEM_INACTIVE');
4798 END IF;
4799 --
4800 WHEN e_NotCustOrderEnabled THEN
4801 --
4802 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4803 --
4804 rlm_message_sv.app_error(
4805 x_ExceptionLevel => rlm_message_sv.k_error_level,
4806 x_MessageName => 'RLM_ITEM_NOT_CUST_ORDERABLE',
4807 x_InterfaceHeaderId => x_lines_rec.header_id,
4808 x_InterfaceLineId => x_lines_rec.line_id,
4809 x_GroupInfo => TRUE,
4810 x_token1=>'CUSTOMER_ITEM',
4811 x_value1=>v_CustomerItemNumber,
4812 x_token2=>'SHIP_FROM_ORG',
4813 x_value2=>RLM_CORE_SV.get_ship_from(x_lines_rec.ship_from_org_id),
4814 x_ValidationType => 'INVENTORY_ITEM');
4815 --
4816 IF (l_debug <> -1) THEN
4817 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION:RLM_ITEM_NOT_CUST_ORDERABLE');
4818 END IF;
4819 --
4820 WHEN NO_DATA_FOUND THEN
4821 --
4822 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4823 --
4824 rlm_message_sv.app_error(
4825 x_ExceptionLevel => rlm_message_sv.k_error_level,
4826 x_MessageName => 'RLM_INVITEM_NOT_DERIVED',
4827 x_InterfaceHeaderId => x_lines_rec.header_id,
4828 x_InterfaceLineId => x_lines_rec.line_id,
4829 x_ValidationType => 'INVENTORY_ITEM');
4830 --
4831 IF (l_debug <> -1) THEN
4832 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
4833 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_INVITEM_NOT_DERIVED');
4834 END IF;
4835 --
4836 WHEN OTHERS THEN
4837 --
4838 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4839 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveInventoryItemId',
4840 v_Progress);
4841 --
4842 IF (l_debug <> -1) THEN
4843 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
4844 END IF;
4845 --
4846 raise;
4847 --
4848 END DeriveInventoryItemId;
4849
4850 /*===========================================================================
4851
4852 PROCEDURE NAME: ValidateCustomerItem
4853
4854 ===========================================================================*/
4855 PROCEDURE ValidateCustomerItem(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
4856 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
4857 IS
4858 --
4859 v_progress VARCHAR2(3) := '010';
4860
4861 BEGIN
4862 --
4863 IF (l_debug <> -1) THEN
4864 rlm_core_sv.dpush(C_SDEBUG,'ValidateCustomerItem');
4865 rlm_core_sv.dlog(C_DEBUG,'customer item ext', x_lines_rec.customer_item_ext);
4866 rlm_core_sv.dlog(C_DEBUG,'customer_item_id', x_lines_rec.customer_item_id);
4867 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id',x_lines_rec.ship_to_address_id);
4868 END IF;
4869 --
4870 IF rlm_message_sv.check_dependency('CUSTOMER_ITEM') THEN
4871 --
4872 IF x_lines_rec.customer_item_id IS NULL THEN
4873 --
4874 BEGIN
4875 --
4876 IF (l_debug <> -1) THEN
4877 rlm_core_sv.dlog(C_DEBUG, 'Check if item is defined at address level in Inventory');
4878 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.customer_id', x_header_rec.customer_id);
4879 rlm_core_sv.dlog(C_DEBUG, 'x_lines_rec.ship_to_address_id', x_lines_rec.ship_to_address_id);
4880 END IF;
4881 --
4882 SELECT customer_item_id
4883 INTO x_lines_rec.customer_item_id
4884 FROM mtl_customer_items
4885 WHERE customer_item_number = x_lines_rec.customer_item_ext
4886 AND customer_id = x_header_rec.customer_id
4887 AND address_id = x_lines_rec.ship_to_address_id
4888 AND item_definition_level = '3'
4889 AND inactive_flag = 'N';
4890 --
4891 IF (l_debug <> -1) THEN
4892 rlm_core_sv.dlog(C_DEBUG,'Address level, customer item ID', x_lines_rec.customer_item_id);
4893 END IF;
4894 --
4895 EXCEPTION
4896 --
4897 WHEN NO_DATA_FOUND THEN
4898 --
4899 IF (l_debug <> -1) THEN
4900 rlm_core_sv.dlog(C_DEBUG, 'Check if item is defined at address-category level in Inventory');
4901 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.customer_id', x_header_rec.customer_id);
4902 END IF;
4903 --
4904 BEGIN
4905 --
4906 -- Following query is changed as per TCA obsolescence project.
4907 SELECT mci.customer_item_id
4908 INTO x_lines_rec.customer_item_id
4909 FROM mtl_customer_items mci
4910 WHERE mci.customer_item_number = x_lines_rec.customer_item_ext
4911 AND mci.customer_id = x_header_rec.customer_id
4912 AND x_lines_rec.ship_to_address_id IN
4913 (select cust_acct_site_id from hz_cust_acct_sites
4914 where customer_category_code = mci.customer_category_code
4915 and cust_account_id = mci.customer_id)
4916 AND mci.item_definition_level = '2'
4917 AND mci.inactive_flag = 'N';
4918 --
4919 IF (l_debug <> -1) THEN
4920 rlm_core_sv.dlog(C_DEBUG,'Address-Cat level, customer item ID', x_lines_rec.customer_item_id);
4921 END IF;
4922 --
4923 EXCEPTION
4924 --
4925 WHEN NO_DATA_FOUND THEN
4926 --
4927 IF (l_debug <> -1) THEN
4928 rlm_core_sv.dlog(C_DEBUG,'Check if item is defined at customer level in Inventory');
4929 END IF;
4930 --
4931 SELECT customer_item_id
4932 INTO x_lines_rec.customer_item_id
4933 FROM mtl_customer_items
4934 WHERE customer_item_number = x_lines_rec.customer_item_ext
4935 AND address_id IS NULL
4936 AND customer_id = x_header_rec.customer_id
4937 AND item_definition_level = '1'
4938 AND inactive_flag = 'N';
4939 --
4940 IF (l_debug <> -1) THEN
4941 rlm_core_sv.dlog(C_DEBUG,'Customer Level, customer item ID', x_lines_rec.customer_item_id);
4942 END IF;
4943 --
4944 END;
4945 --
4946 END;
4947 --
4948 END IF;
4949 --
4950 END IF;
4951 --
4952 IF (l_debug <> -1) THEN
4953 rlm_core_sv.dpop(C_SDEBUG);
4954 END IF;
4955 --
4956 EXCEPTION
4957 --
4958 WHEN NO_DATA_FOUND THEN
4959 --
4960 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4961 --
4962 -- bug 5197388
4963 --
4964 rlm_message_sv.app_error(
4965 x_ExceptionLevel => rlm_message_sv.k_error_level,
4966 x_MessageName => 'RLM_CUSTOMER_ITEM_NOT_DERIVED',
4967 x_InterfaceHeaderId => x_lines_rec.header_id,
4968 x_InterfaceLineId => x_lines_rec.line_id,
4969 x_token1=>'CUSTOMER_ITEM',
4970 x_value1=>x_lines_rec.customer_item_ext,
4971 x_token2=>'CUSTOMER',
4972 x_value2=>nvl(rlm_core_sv.get_customer_name(x_header_rec.customer_id), x_header_rec.cust_name_ext ),
4973 x_ValidationType => 'CUSTOMER_ITEM');
4974 --
4975 IF (l_debug <> -1) THEN
4976 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
4977 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUSTOMER_ITEM_NOT_DERIVED');
4978 END IF;
4979 --
4980 WHEN OTHERS THEN
4981 --
4982 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
4983 rlm_message_sv.sql_error('rlm_validatedemand_sv.ValidateCustomerItem',
4984 v_Progress);
4985 --
4986 IF (l_debug <> -1) THEN
4987 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
4988 END IF;
4989 --
4990 raise;
4991 --
4992 END ValidateCustomerItem;
4993
4994 /*===========================================================================
4995
4996 PROCEDURE NAME: DerivePurchaseOrder
4997
4998 ===========================================================================*/
4999
5000 PROCEDURE DerivePurchaseOrder(
5001 x_setup_terms_rec IN rlm_setup_terms_sv.setup_terms_rec_typ,
5002 x_header_rec IN rlm_interface_headers%ROWTYPE,
5003 x_lines_rec IN OUT NOCOPY rlm_interface_lines%ROWTYPE)
5004 IS
5005 --
5006 l_org_code VARCHAR2(30);
5007 v_progress VARCHAR2(3) := '010';
5008 v_OE_Purchase_Order VARCHAR2(50);
5009 v_Agreement_id NUMBER;
5010 v_Agreement_Name VARCHAR2(240);
5011 v_fut_Agreement_id NUMBER;
5012 v_fut_Agreement_Name VARCHAR2(240);
5013 v_start_date DATE;
5014 v_end_date DATE;
5015 x_Price_list_id NUMBER;
5016 v_Price_list_name VARCHAR2(240);
5017 --DeriveARPriceList BOOLEAN := FALSE;
5018 e_SetupAgreementInv EXCEPTION;
5019 e_POAgreementDiff EXCEPTION;
5020 e_POWithoutAgreement EXCEPTION;
5021 e_POAgreementInv EXCEPTION;
5022 e_CustMissingPriceList EXCEPTION;
5023 e_POAgreementInactive EXCEPTION;
5024 e_PriceListInactive EXCEPTION;
5025 --
5026 BEGIN
5027 --
5028 IF (l_debug <> -1) THEN
5029 rlm_core_sv.dpush(C_SDEBUG,'DerivePurchaseOrder');
5030 rlm_core_sv.dlog(C_DEBUG,'item_detail_type', x_lines_rec.item_detail_type);
5031 END IF;
5032 --
5033 IF rlm_message_sv.check_dependency('PURCHASE_ORDER') THEN
5034 --
5035 IF x_lines_rec.item_detail_type in ('0','1','2') THEN
5036 --
5037 v_Agreement_id := x_setup_terms_rec.agreement_id;
5038 v_Agreement_Name := x_setup_terms_rec.agreement_name;
5039 v_fut_Agreement_id := x_setup_terms_rec.future_agreement_id;
5040 v_fut_Agreement_Name := x_setup_terms_rec.future_agreement_name;
5041 x_Price_list_id := x_setup_terms_rec.price_list_id;
5042 --
5043 IF (l_debug <> -1) THEN
5044 rlm_core_sv.dlog(C_DEBUG,'x_setup_terms_rec.agreement_name',v_Agreement_Name);
5045 rlm_core_sv.dlog(C_DEBUG,'x_setup_terms_rec.agreement_id',v_Agreement_Id);
5046 rlm_core_sv.dlog(C_DEBUG,'x_setup_terms_rec.fut_agreement_id',v_fut_Agreement_Id);
5047 rlm_core_sv.dlog(C_DEBUG,'x_setup_terms_rec.Price_list_id',x_Price_list_id);
5048 rlm_core_sv.dlog(C_DEBUG,'PO on schedule - cust_po_number',
5049 x_lines_rec.cust_po_number);
5050 END IF;
5051 --
5052 IF (x_Price_list_id IS NULL) THEN
5053 --
5054 x_lines_rec.price_list_id := x_Price_list_id;
5055 --
5056 IF (l_debug <> -1) THEN
5057 rlm_core_sv.dlog(C_DEBUG, ' Null price list x_lines_rec.price_list_id', x_lines_rec.price_list_id);
5058 END IF;
5059 --
5060 END IF;
5061 --
5062 IF (v_Agreement_id is NULL) THEN --Changed from Agreement_name to agreement_id
5063 --
5064 x_lines_rec.agreement_id := NULL;
5065 --
5066 IF (l_debug <> -1) THEN
5067 rlm_core_sv.dlog(C_DEBUG, 'Null agreement on setup terms x_lines_rec.agreement_id', x_lines_rec.agreement_id);
5068 END IF;
5069 --
5070 END IF;
5071 --
5072 ---Replaced Agreement_id with Agreement_name
5073 IF v_agreement_id is NOT NULL THEN
5074 --
5075 v_progress := '020';
5076 --
5077 BEGIN
5078 --
5079 v_start_date := x_lines_rec.start_date_time;
5080
5081 SELECT oea.price_list_id, oea.purchase_order_num
5082 INTO x_lines_rec.price_list_id,
5083 v_OE_Purchase_Order
5084 FROM oe_agreements oea
5085 WHERE oea.agreement_id = v_agreement_id
5086 AND v_start_date between nvl(oea.start_date_active, to_date('01/01/1900','dd/mm/yyyy'))
5087 and nvl(oea.end_date_active, to_date('31/12/4712','dd/mm/yyyy'));
5088 --
5089 x_lines_rec.agreement_id := v_agreement_id;
5090 --
5091 IF (l_debug <> -1) THEN
5092 rlm_core_sv.dlog(C_DEBUG,'current agreement Purchase Order',
5093 v_OE_Purchase_Order);
5094 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.Price_List_Id',
5095 x_lines_rec.Price_List_Id);
5096 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.agreement_id',
5097 x_lines_rec.agreement_id);
5098 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.cust_po_number',
5099 x_lines_rec.cust_po_number);
5100 END IF;
5101 --
5102 EXCEPTION
5103 --
5104 WHEN NO_DATA_FOUND THEN
5105 --
5106 IF (l_debug <> -1) THEN
5107 rlm_core_sv.dlog(C_DEBUG,'Start date time does not fall
5108 within the current agreement effective dates');
5109 END IF;
5110 --
5111 v_progress := '030';
5112 BEGIN
5113 --
5114 SELECT oea.price_list_id, oea.purchase_order_num
5115 INTO x_lines_rec.price_list_id,
5116 v_OE_Purchase_Order
5117 FROM oe_agreements oea
5118 WHERE agreement_id = v_fut_agreement_id
5119 AND v_start_date between nvl(oea.start_date_active, to_date('01/01/1900','dd/mm/yyyy') )
5120 and nvl(oea.end_date_active, to_date('31/12/4712','dd/mm/yyyy'));
5121 --
5122 x_lines_rec.agreement_id := v_fut_agreement_id;
5123 --
5124
5125 IF (l_debug <> -1) THEN
5126 rlm_core_sv.dlog(C_DEBUG,' future agreement Purchase_Order',
5127 v_OE_Purchase_Order);
5128 rlm_core_sv.dlog(C_DEBUG,' future agreement Price List',
5129 x_lines_rec.Price_List_Id);
5130 rlm_core_sv.dlog(C_DEBUG,'PO number on schedule ',
5131 x_lines_rec.cust_po_number);
5132 END IF;
5133 --
5134 EXCEPTION
5135 --
5136 WHEN NO_DATA_FOUND THEN
5137 --
5138 IF (l_debug <> -1) THEN
5139
5140 rlm_core_sv.dlog(C_DEBUG,'WARNING: No Agreement_id found for future and current agreements ');
5141 rlm_core_sv.dlog(C_DEBUG,' agreement Purchase_Order',
5142 v_OE_Purchase_Order);
5143 rlm_core_sv.dlog(C_DEBUG,' Price List',
5144 x_lines_rec.Price_List_Id);
5145 rlm_core_sv.dlog(C_DEBUG,'PO number on schedule ',
5146 x_lines_rec.cust_po_number);
5147 END IF;
5148 --
5149 rlm_message_sv.app_error(
5150 x_ExceptionLevel => rlm_message_sv.k_warn_level,
5151 x_MessageName => 'RLM_SETUP_AGREEMENT_INVALID',
5152 x_InterfaceHeaderId => x_lines_rec.header_id,
5153 x_InterfaceLineId => x_lines_rec.line_id,
5154 x_token1=>'CURRENT_AGR',
5155 x_value1=>v_Agreement_Name,
5156 x_token2=>'FUTURE_AGR',
5157 x_value2=>v_fut_Agreement_Name,
5158 x_ValidationType => 'PURCHASE_ORDER');
5159 --
5160 IF (l_debug <> -1) THEN
5161 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5162 rlm_core_sv.dlog(C_SDEBUG,'RLM_SETUP_AGREEMENT_INVALID');
5163 END IF;
5164 --
5165 WHEN OTHERS THEN
5166 --
5167 IF (l_debug <> -1) THEN
5168 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION:'
5169 ||SUBSTR(SQLERRM,1,200));
5170 END IF;
5171 --
5172 raise ;
5173 --
5174 END;
5175 --
5176 WHEN OTHERS THEN
5177 --
5178 IF (l_debug <> -1) THEN
5179 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
5180 END IF;
5181 --
5182 raise ;
5183 --
5184 END;
5185 --
5186 v_start_date := null;
5187 v_progress := '030';
5188 IF x_lines_rec.cust_po_number IS NOT NULL AND
5189 x_lines_rec.cust_po_number <> v_OE_Purchase_Order THEN
5190 --
5191 raise e_POAgreementDiff;
5192 --
5193 END IF;
5194 --
5195 ELSE
5196 IF x_Price_list_id is NOT NULL THEN
5197 --
5198 IF (l_debug <> -1) THEN
5199 rlm_core_sv.dlog(C_DEBUG,'x_Price_List_Id',
5200 x_Price_List_Id);
5201 END IF;
5202 --
5203 x_lines_rec.PRICE_LIST_ID := x_Price_List_Id;
5204 --
5205 IF (l_debug <> -1) THEN
5206 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.cust_po_number',
5207 x_lines_rec.cust_po_number);
5208 END IF;
5209 --
5210 IF x_lines_rec.cust_po_number is NOT NULL THEN
5211 v_Progress := '015';
5212 --perf raise e_POWithoutAgreement;
5213 END IF;
5214 --
5215 /* ELSE took out this portion for bug 1490685
5216 IF x_lines_rec.cust_po_number is NOT NULL THEN
5217 v_Progress := '020';
5218 --
5219 IF (l_debug <> -1) THEN
5220 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.cust_po_number',
5221 x_lines_rec.cust_po_number);
5222 END IF;
5223 --
5224 BEGIN
5225 SELECT oea.agreement_id, oea.name,
5226 oea.price_list_id,oea.start_date_active,
5227 oea.end_date_active
5228 INTO x_lines_rec.agreement_id, v_agreement_name,
5229 x_lines_rec.price_list_id, v_start_date, v_end_date
5230 FROM oe_agreements oea
5231 WHERE purchase_order_num = x_lines_rec.cust_po_number
5232 AND x_lines_rec.start_date_time
5233 BETWEEN oea.start_date_active AND
5234 nvl(oea.end_date_active,
5235 to_date('31/12/4712','dd/mm/yyyy'))
5236 AND revision = (Select MAX(oem.revision)
5237 FROM oe_agreements oem
5238 WHERE oem.purchase_order_num =
5239 x_lines_rec.cust_po_number);
5240 --
5241 IF (l_debug <> -1) THEN
5242 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.price_list_id',
5243 x_lines_rec.price_list_id);
5244 END IF;
5245 --
5246 IF x_lines_rec.start_date_time > v_end_date OR
5247 x_lines_rec.start_date_time < v_start_date THEN
5248 --
5249 rlm_message_sv.app_error(
5250 x_ExceptionLevel => rlm_message_sv.k_warn_level,
5251 x_MessageName => 'RLM_AGREEMENT_INACTIVE',
5252 x_InterfaceHeaderId => x_lines_rec.header_id,
5253 x_InterfaceLineId => x_lines_rec.line_id,
5254 x_token1=>'PURCHASE_ORDER',
5255 x_value1=>x_lines_rec.cust_po_number,
5256 x_token2=>'AGREEMENT_NAME',
5257 x_value2=>v_agreement_name,
5258 x_ValidationType => 'PURCHASE_ORDER');
5259 --
5260 IF (l_debug <> -1) THEN
5261 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5262 END IF;
5263 --
5264 END IF;
5265 --
5266 EXCEPTION
5267 WHEN NO_DATA_FOUND THEN
5268 --
5269 IF (l_debug <> -1) THEN
5270 rlm_core_sv.dlog(C_DEBUG,'WARNING:
5271 Cannot Derive agreement from Purchase Order on line');
5272 END IF;
5273 --
5274 --DeriveARPriceList := TRUE;
5275 rlm_message_sv.app_error(
5276 x_ExceptionLevel => rlm_message_sv.k_warn_level,
5277 x_MessageName => 'RLM_WARN_PO_AGREEMENT_ID',
5278 x_InterfaceHeaderId => x_lines_rec.header_id,
5279 x_InterfaceLineId => x_lines_rec.line_id,
5280 x_token1=>'PURCHASE_ORDER',
5281 x_value1=>x_lines_rec.cust_po_number,
5282 x_ValidationType => 'PURCHASE_ORDER');
5283 --
5284 IF (l_debug <> -1) THEN
5285 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5286 rlm_core_sv.dlog(C_SDEBUG,'RLM_WARN_PO_AGREEMENT_ID');
5287 END IF;
5288 --
5289 WHEN OTHERS THEN
5290 rlm_message_sv.sql_error(
5291 'rlm_validateDemand_sv.DerivePurchaseOrder',v_Progress);
5292 --
5293 IF (l_debug <> -1) THEN
5294 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION:'||SUBSTR(SQLERRM,1,200));
5295 END IF;
5296 --
5297 raise ;
5298 END;
5299 END IF; */
5300
5301 END IF;/* Price List Id is not NULL */
5302 END IF; /* Agreement name not null */
5303 --
5304 v_progress := '051';
5305 --
5306 IF (l_debug <> -1) THEN
5307 rlm_core_sv.dlog(C_DEBUG,'CustomerId',x_header_rec.customer_id);
5308 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.cust_po_number',
5309 x_lines_rec.cust_po_number);
5310 rlm_core_sv.dlog(C_DEBUG,'x_Price_List_Id',x_Price_List_Id);
5311 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.agreement_id',
5312 x_lines_rec.agreement_id);
5313 END IF;
5314 --
5315 /*
5316 IF DeriveARPriceList THEN
5317 v_progress := '055';
5318 BEGIN
5319 --
5320 IF (l_debug <> -1) THEN
5321 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.customer_id',
5322 x_header_rec.customer_id);
5323 END IF;
5324 --
5325 -- Following query is changed as per TCA obsolescence project.
5326 SELECT CUST_ACCT.PRICE_LIST_ID
5327 INTO x_lines_rec.PRICE_LIST_ID
5328 FROM HZ_CUST_ACCOUNTS CUST_ACCT
5329 WHERE CUST_ACCT.CUST_ACCOUNT_ID = x_header_rec.customer_id;
5330 EXCEPTION
5331 WHEN NO_DATA_FOUND THEN
5332 --
5333 IF (l_debug <> -1) THEN
5334 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: NO_DATA_FOUND');
5335 END IF;
5336 --
5337 raise e_CustMissingPriceList;
5338 --
5339 WHEN OTHERS THEN
5340 --
5341 IF (l_debug <> -1) THEN
5342 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION:'||SUBSTR(SQLERRM,1,200));
5343 END IF;
5344 --
5345 raise ;
5346 END;
5347 END IF;
5348 */
5349 --
5350 IF x_lines_rec.price_list_id is NOT NULL THEN
5351 --
5352 v_progress := '060';
5353 --
5354 IF (l_debug <> -1) THEN
5355 rlm_core_sv.dlog(C_DEBUG,'Price list id',x_lines_rec.price_list_id);
5356 END IF;
5357 --
5358 BEGIN
5359 --
5360 SELECT oep.name
5361 INTO v_Price_list_name
5362 FROM qp_list_headers oep
5363 WHERE oep.LIST_HEADER_ID = x_lines_rec.price_list_id
5364 AND x_lines_rec.start_date_time BETWEEN
5365 nvl(oep.start_date_active,
5366 to_date('01/01/1900','dd/mm/yyyy')) AND
5367 nvl(oep.end_date_active,to_date('31/12/4712','dd/mm/yyyy'));
5368 --
5369 IF (l_debug <> -1) THEN
5370 rlm_core_sv.dlog(C_DEBUG, 'Price list name', v_Price_list_name);
5371 END IF;
5372 --
5373 EXCEPTION
5374 WHEN NO_DATA_FOUND THEN
5375 raise e_PriceListInactive;
5376 END;
5377 --
5378 END IF; /* checking effective dates for price lists */
5379 --
5380 END IF; /* Item detail type in (0,1,2)*/
5381 --
5382 v_progress := '070';
5383 --
5384 END IF;
5385 --
5386 IF (l_debug <> -1) THEN
5387 rlm_core_sv.dpop(C_SDEBUG);
5388 END IF;
5389 --
5390 EXCEPTION
5391 --
5392 WHEN e_PriceListInactive THEN
5393 -- Waning message
5394 rlm_message_sv.app_error(
5395 x_ExceptionLevel => rlm_message_sv.k_warn_level,
5396 x_MessageName => 'RLM_PRICE_LIST_INACTIVE',
5397 x_InterfaceHeaderId => x_lines_rec.header_id,
5398 x_InterfaceLineId => x_lines_rec.line_id,
5399 x_token1=>'PRICE_LIST',
5400 x_value1=>v_Price_list_name,
5401 x_token2=>'START_DATE',
5402 x_value2=>x_lines_rec.start_date_time,
5403 x_ValidationType => 'PURCHASE_ORDER');
5404 --
5405 IF (l_debug <> -1) THEN
5406 rlm_core_sv.dpop(C_SDEBUG,'RLM_PRICE_LIST_INACTIVE');
5407 END IF;
5408 --
5409 WHEN e_POAgreementDiff THEN
5410 -- Waning message
5411 rlm_message_sv.app_error(
5412 x_ExceptionLevel => rlm_message_sv.k_warn_level,
5413 x_MessageName => 'RLM_WARN_SETUP_PO_MISMATCH',
5414 x_InterfaceHeaderId => x_lines_rec.header_id,
5415 x_InterfaceLineId => x_lines_rec.line_id,
5416 x_token1=>'PRICING_CONTRACT',
5417 x_value1=>v_Agreement_Name,
5418 x_token2=>'PURCHASE_ORDER',
5419 x_value2=>x_lines_rec.cust_po_number,
5420 x_token3=>'SETUP_PURCHASE_ORDER',
5421 x_value3=>v_OE_Purchase_Order,
5422 x_ValidationType => 'PURCHASE_ORDER');
5423 --
5424 IF (l_debug <> -1) THEN
5425 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5426 rlm_core_sv.dpop(C_SDEBUG,'RLM_SETUP_PO_MISMATCH');
5427 END IF;
5428 --
5429 WHEN e_POAgreementInv THEN
5430 -- Waning message
5431 rlm_message_sv.app_error(
5432 x_ExceptionLevel => rlm_message_sv.k_warn_level,
5433 x_MessageName => 'RLM_WARN_PO_AGREEMENT_ID',
5434 x_InterfaceHeaderId => x_lines_rec.header_id,
5435 x_InterfaceLineId => x_lines_rec.line_id,
5436 x_token1=>'PURCHASE_ORDER',
5437 x_value1=>x_lines_rec.cust_po_number,
5438 x_ValidationType => 'PURCHASE_ORDER');
5439 --
5440 IF (l_debug <> -1) THEN
5441 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5442 rlm_core_sv.dpop(C_SDEBUG,'RLM_WARN_PO_AGREEMENT_ID');
5443 END IF;
5444 --
5445 WHEN e_POWithoutAgreement THEN
5446 -- Warning message
5447 rlm_message_sv.app_error(
5448 x_ExceptionLevel => rlm_message_sv.k_warn_level,
5449 x_MessageName => 'RLM_WARN_PO_WITHOUT_AGREEMENT',
5450 x_InterfaceHeaderId => x_lines_rec.header_id,
5451 x_InterfaceLineId => x_lines_rec.line_id,
5452 x_token1=>'PURCHASE_ORDER',
5453 x_value1=>x_lines_rec.cust_po_number,
5454 x_ValidationType => 'PURCHASE_ORDER');
5455 --
5456 IF (l_debug <> -1) THEN
5457 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5458 rlm_core_sv.dpop(C_SDEBUG,'RLM_WARN_PO_WITHOUT_AGREEMENT');
5459 END IF;
5460 --
5461 WHEN e_CustMissingPriceList THEN
5462 --
5463 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
5464 --
5465 rlm_message_sv.app_error(
5466 x_ExceptionLevel => rlm_message_sv.k_error_level,
5467 x_MessageName => 'RLM_CUST_WITHOUT_PRICELIST',
5468 x_InterfaceHeaderId => x_lines_rec.header_id,
5469 x_InterfaceLineId => x_lines_rec.line_id,
5470 x_token1=> 'CUSTEXT',
5471 x_value1=> nvl(x_header_rec.customer_ext,
5472 x_header_rec.ece_tp_translator_code),
5473 x_ValidationType => 'PURCHASE_ORDER');
5474 --
5475 IF (l_debug <> -1) THEN
5476 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5477 rlm_core_sv.dpop(C_SDEBUG,'RLM_CUST_WITHOUT_PRICELIST');
5478 END IF;
5479 --
5480 WHEN OTHERS THEN
5481 --
5482 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
5483 rlm_message_sv.sql_error('rlm_validatedemand_sv.DerivePurchaseOrder',
5484 v_Progress);
5485 --
5486 IF (l_debug <> -1) THEN
5487 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
5488 END IF;
5489 --
5490 raise;
5491 --
5492 END DerivePurchaseOrder;
5493
5494 /*===========================================================================
5495
5496 PROCEDURE NAME: DeriveCustomerID
5497
5498 ===========================================================================*/
5499 PROCEDURE DeriveCustomerID(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE,
5500 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
5501 IS
5502
5503 v_progress VARCHAR2(3) := '010';
5504 --
5505 v_ReturnStatus VARCHAR2(10);
5506 v_MsgCount NUMBER;
5507 v_MsgData VARCHAR2(2000);
5508 v_Customer VARCHAR2(35);
5509 v_ShipToLoc VARCHAR2(35);
5510 v_shipToAddressId NUMBER;
5511 v_tmp_ship NUMBER;
5512 e_InvalidCustomerExt EXCEPTION;
5513 e_NullCustomerExt EXCEPTION;
5514 e_NullShipToExt EXCEPTION;
5515 --
5516 BEGIN
5517 --
5518 IF (l_debug <> -1) THEN
5519 rlm_core_sv.dpush(C_SDEBUG,'DeriveCustomerID');
5520 END IF;
5521 --
5522 --
5523 v_progress := '020';
5524 --
5525 -- if customer_id is not null then we do not need to derive the cust id
5526 -- again as it has already been allocated before
5527 -- Choose the Customer based on customer_ext or ece_tp_translator_code
5528
5529 IF x_header_rec.customer_id IS NULL THEN
5530 --
5531 IF x_header_rec.customer_ext IS NOT NULL THEN
5532 --
5533 IF (l_debug <> -1) THEN
5534 rlm_core_sv.dlog(C_DEBUG,'customer_ext ',x_header_rec.customer_ext);
5535 END IF;
5536 --
5537 v_Customer := x_header_rec.customer_ext;
5538 --
5539 ELSIF x_header_rec.ece_tp_translator_code IS NOT NULL THEN
5540 --
5541 IF (l_debug <> -1) THEN
5542 rlm_core_sv.dlog(C_DEBUG,'ece_tp_translator_code',
5543 x_header_rec.ece_tp_translator_code);
5544 END IF;
5545 --
5546 v_Customer := x_header_rec.ece_tp_translator_code;
5547 --
5548 END IF;
5549 -- CR Changes
5550 -- Choose the Ship To Location based on
5551 -- ece_tp_location_code_ext first. If this is null, look for
5552 -- line level cust_ship_to_ext
5553
5554 IF x_header_rec.ece_tp_location_code_ext IS NOT NULL THEN
5555 --
5556 IF (l_debug <> -1) THEN
5557 rlm_core_sv.dlog(C_DEBUG,'ece_tp_location_code_ext',
5558 x_header_rec.ece_tp_location_code_ext); END IF;
5559 --
5560 v_ShipToLoc := x_header_rec.ece_tp_location_code_ext;
5561 --
5562 ELSIF x_lines_rec.cust_ship_to_ext IS NOT NULL THEN
5563 --
5564 IF (l_debug <> -1) THEN
5565 rlm_core_sv.dlog(C_DEBUG,'cust_ship_to_ext ',
5566 x_lines_rec.cust_ship_to_ext);
5567 END IF;
5568 --
5569 v_ShipToLoc := x_lines_rec.cust_ship_to_ext;
5570 -- g_LineLevelShipTo := TRUE;
5571 --
5572 END IF;
5573
5574 IF v_Customer IS NOT NULL THEN
5575 --
5576 v_progress := '030';
5577 --
5578 IF (l_debug <> -1) THEN
5579 rlm_core_sv.dlog(C_DEBUG,'v_Customer ', v_Customer);
5580 rlm_core_sv.dlog(C_DEBUG,'v_ShipToLoc ', v_ShipToLoc);
5581 END IF;
5582 --
5583 ece_trading_partners_pub.get_tp_address(1, NULL, NULL, NULL,
5584 NULL, v_ReturnStatus, v_MsgCount,
5585 v_MsgData,
5586 v_Customer,
5587 v_ShipToLoc,
5588 'CUSTOMER',
5589 x_header_rec.customer_id,
5590 v_shipToAddressId);
5591 --
5592 IF (l_debug <> -1) THEN
5593 rlm_core_sv.dlog(C_DEBUG,'customer_id ',x_header_rec.customer_id);
5594 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ',
5595 v_shipToAddressId);
5596 END IF;
5597 --
5598 IF x_header_rec.customer_id IS NULL THEN
5599 IF v_ShipToLoc IS NOT NULL THEN
5600 BEGIN
5601 v_progress := '060';
5602 --
5603 IF (l_debug <> -1) THEN
5604 rlm_core_sv.dlog(C_DEBUG,'v_Customer ', v_Customer);
5605 rlm_core_sv.dlog(C_DEBUG,'v_ShipToLoc ', v_ShipToLoc);
5606 END IF;
5607 --
5608 -- Following query is changed as per TCA obsolescence project.
5609 SELECT DISTINCT ACCT_SITE.CUST_ACCOUNT_ID
5610 INTO x_header_rec.customer_id
5611 FROM HZ_CUST_ACCT_SITES ACCT_SITE ,
5612 ece_tp_headers eth
5613 WHERE ACCT_SITE.tp_header_id = eth.tp_header_id
5614 AND ACCT_SITE.ece_tp_location_code = v_ShipToLoc
5615 AND eth.TP_REFERENCE_EXT1 = v_Customer;
5616 --
5617 IF (l_debug <> -1) THEN
5618 rlm_core_sv.dlog(C_DEBUG,'customer_id ',
5619 x_header_rec.customer_id);
5620 END IF;
5621 --
5622 IF x_header_rec.ece_tp_location_code_ext IS NULL THEN
5623 g_LineLevelShipTo := TRUE;
5624 END IF;
5625 --
5626 EXCEPTION
5627 WHEN NO_DATA_FOUND THEN
5628 raise e_InvalidCustomerExt;
5629 WHEN OTHERS THEN
5630 raise;
5631 END;
5632 ELSE
5633 raise e_NullShipToExt;
5634 END IF; /*If v_ShipToLoc Not Null */
5635 END IF; /*If customer_id NULL */
5636 --
5637 ELSE
5638 raise e_NullCustomerExt;
5639 END IF; /*If v_Customer Not Null */
5640 ELSE
5641 --{
5642 IF (l_debug <> -1) THEN
5643 rlm_core_sv.dlog(C_DEBUG,'customer_id ', x_header_rec.customer_id);
5644 END IF;
5645 --}
5646 END IF;
5647 --
5648 IF FND_GLOBAL.CONC_REQUEST_ID = -1 THEN
5649 ec_debug.disable_debug;
5650 END IF;
5651 --
5652 v_progress := '080';
5653 --
5654 IF (l_debug <> -1) THEN
5655 rlm_core_sv.dpop(C_SDEBUG);
5656 END IF;
5657 --
5658 EXCEPTION
5659 --
5660 WHEN NO_DATA_FOUND THEN
5661 -- Warning
5662 /*
5663 rlm_message_sv.app_error(
5664 x_ExceptionLevel => rlm_message_sv.k_warn_level,
5665 x_MessageName => 'RLM_PRIMARYADDRESS_NOT_DERIVED',
5666 x_InterfaceHeaderId => x_lines_rec.header_id,
5667 x_InterfaceLineId => x_lines_rec.line_id,
5668 x_ValidationType => 'CUSTOMER');
5669
5670 rlm_core_sv.dpop(C_SDEBUG,'WARNING: RLM_PRIMARYADDRESS_NOT_DERIVED');
5671 */
5672 --
5673 IF (l_debug <> -1) THEN
5674 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5675 rlm_core_sv.dpop(C_SDEBUG);
5676 END IF;
5677 --
5678 WHEN e_NullCustomerExt THEN
5679 --
5680 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
5681 g_Schedule_PS := rlm_core_sv.k_PS_ERROR;
5682 --
5683 rlm_message_sv.app_error(
5684 x_ExceptionLevel => rlm_message_sv.k_error_level,
5685 x_MessageName => 'RLM_CUSTOMER_NULL',
5686 x_InterfaceHeaderId => x_lines_rec.header_id,
5687 x_InterfaceLineId => x_lines_rec.line_id,
5688 x_ValidationType => 'CUSTOMER');
5689 --
5690 IF (l_debug <> -1) THEN
5691 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5692 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUSTOMER_NULL');
5693 END IF;
5694 --
5695 WHEN e_NullShipToExt THEN
5696 --
5697 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
5698 g_Schedule_PS := rlm_core_sv.k_PS_ERROR;
5699 --
5700 rlm_message_sv.app_error(
5701 x_ExceptionLevel => rlm_message_sv.k_error_level,
5702 x_MessageName => 'RLM_SHIPTO_NULL',
5703 x_InterfaceHeaderId => x_lines_rec.header_id,
5704 x_InterfaceLineId => x_lines_rec.line_id,
5705 x_token1=>'CUSTOMER_EXT',
5706 x_value1=>v_Customer,
5707 x_ValidationType => 'CUSTOMER');
5708 --
5709 IF (l_debug <> -1) THEN
5710 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5711 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_NULL');
5712 END IF;
5713 --
5714 WHEN e_InvalidCustomerExt THEN
5715 --
5716 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
5717 g_Schedule_PS := rlm_core_sv.k_PS_ERROR;
5718 --
5719 IF x_header_rec.customer_ext IS NOT NULL THEN
5720 --
5721 IF x_lines_rec.cust_ship_to_ext IS NOT NULL THEN
5722 --
5723 rlm_message_sv.app_error(
5724 x_ExceptionLevel => rlm_message_sv.k_error_level,
5725 x_MessageName => 'RLM_CUST_SHIP_TO_INVALID',
5726 x_InterfaceHeaderId => x_lines_rec.header_id,
5727 x_InterfaceLineId => x_lines_rec.line_id,
5728 x_token1=>'CUSTOMER_EXT',
5729 x_value1=>x_header_rec.customer_ext,
5730 x_token2=>'SHIP_TO',
5731 x_value2=>x_lines_rec.cust_ship_to_ext,
5732 x_ValidationType => 'CUSTOMER');
5733 --
5734 IF (l_debug <> -1) THEN
5735 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5736 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUST_SHIP_TO_INVALID');
5737 END IF;
5738 --
5739 ELSIF x_header_rec.ece_tp_location_code_ext IS NOT NULL THEN
5740 --
5741 rlm_message_sv.app_error(
5742 x_ExceptionLevel => rlm_message_sv.k_error_level,
5743 x_MessageName => 'RLM_CUST_TPLOC_INVALID',
5744 x_InterfaceHeaderId => x_lines_rec.header_id,
5745 x_InterfaceLineId => x_lines_rec.line_id,
5746 x_token1=>'CUSTOMER_EXT',
5747 x_value1=>x_header_rec.customer_ext,
5748 x_token2=>'TP_LOCATION',
5749 x_value2=>x_header_rec.ece_tp_location_code_ext,
5750 x_ValidationType => 'CUSTOMER');
5751 --
5752 IF (l_debug <> -1) THEN
5753 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5754 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUST_TPLOC_INVALID');
5755 END IF;
5756 --
5757 END IF;
5758 --
5759 ELSIF x_header_rec.ece_tp_translator_code IS NOT NULL THEN
5760 --
5761 IF x_lines_rec.cust_ship_to_ext IS NOT NULL THEN
5762 --
5763 rlm_message_sv.app_error(
5764 x_ExceptionLevel => rlm_message_sv.k_error_level,
5765 x_MessageName => 'RLM_TP_TRANSL_SHIPTO_INVALID',
5766 x_InterfaceHeaderId => x_lines_rec.header_id,
5767 x_InterfaceLineId => x_lines_rec.line_id,
5768 x_token1=>'TP_TRANSLATOR',
5769 x_value1=>x_header_rec.ece_tp_translator_code,
5770 x_token2=>'SHIP_TO',
5771 x_value2=>x_lines_rec.cust_ship_to_ext,
5772 x_ValidationType => 'CUSTOMER');
5773 --
5774 IF (l_debug <> -1) THEN
5775 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5776 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_TP_TRANSL_SHIPTO_INVALID');
5777 END IF;
5778 --
5779 ELSIF x_header_rec.ece_tp_location_code_ext IS NOT NULL THEN
5780 --
5781 rlm_message_sv.app_error(
5782 x_ExceptionLevel => rlm_message_sv.k_error_level,
5783 x_MessageName => 'RLM_TP_TRANSL_LOC_CODE_INVALID',
5784 x_InterfaceHeaderId => x_lines_rec.header_id,
5785 x_InterfaceLineId => x_lines_rec.line_id,
5786 x_token1=>'TP_TRANSLATOR',
5787 x_value1=>x_header_rec.ece_tp_translator_code,
5788 x_token2=>'TP_LOCATION',
5789 x_value2=>x_header_rec.ece_tp_location_code_ext,
5790 x_ValidationType => 'CUSTOMER');
5791 --
5792 IF (l_debug <> -1) THEN
5793 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5794 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_TP_TRANSL_LOC_CODE_INVALID');
5795 END IF;
5796 --
5797 END IF;
5798 --
5799 END IF;
5800 --
5801 WHEN OTHERS THEN
5802 --
5803 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
5804 g_Schedule_PS := rlm_core_sv.k_PS_ERROR;
5805 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveCustomerID',
5806 v_Progress);
5807 --
5808 IF (l_debug <> -1) THEN
5809 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
5810 END IF;
5811 --
5812 raise;
5813 --
5814 END DeriveCustomerID;
5815
5816 /*===========================================================================
5817
5818 PROCEDURE NAME: DeriveShipFromOrg
5819
5820 ===========================================================================*/
5821 PROCEDURE DeriveShipFromOrg(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
5822 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
5823 IS
5824 --
5825 l_org_code VARCHAR2(30);
5826 v_progress VARCHAR2(3) := '010';
5827 e_NoDataFound EXCEPTION;
5828 e_ManyRows EXCEPTION;
5829 --
5830 BEGIN
5831 --
5832 IF (l_debug <> -1) THEN
5833 rlm_core_sv.dpush(C_SDEBUG,'DeriveShipFromOrg');
5834 rlm_core_sv.dlog(C_DEBUG,'cust_ship_from_org_ext',
5835 x_lines_rec.cust_ship_from_org_ext);
5836 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id ', x_lines_rec.ship_from_org_id);
5837 END IF;
5838 --
5839 IF rlm_message_sv.check_dependency('SHIP_FROM_ORG') THEN
5840 --
5841 IF x_lines_rec.ship_from_org_id IS NULL THEN
5842 --
5843 IF x_lines_rec.cust_ship_from_org_ext IS NOT NULL THEN
5844 --
5845 v_progress := '020';
5846 --
5847 IF (l_debug <> -1) THEN
5848 rlm_core_sv.dlog(C_DEBUG,'cust_ship_from_org_ext ',
5849 x_lines_rec.cust_ship_from_org_ext);
5850 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ',
5851 x_lines_rec.ship_to_address_id);
5852 END IF;
5853 --
5854 BEGIN
5855 --
5856 IF (l_debug <> -1) THEN
5857 rlm_core_sv.dlog(C_DEBUG,'Customer Address Level');
5858 END IF;
5859 --
5860 SELECT ship_from_org_id
5861 INTO x_lines_rec.ship_from_org_id
5862 FROM rlm_cust_shipto_terms t
5863 WHERE customer_id = x_header_rec.customer_id
5864 AND address_id = nvl(x_lines_rec.ship_to_address_id,address_id)
5865 AND cust_assign_supplier_cd =
5866 x_lines_rec.cust_ship_from_org_ext;
5867 --
5868 v_progress := '030';
5869 --
5870 IF (l_debug <> -1) THEN
5871 rlm_core_sv.dlog(C_DEBUG,'organization id ' ||
5872 x_lines_rec.ship_from_org_id);
5873 END IF;
5874 --
5875 EXCEPTION
5876 --
5877 WHEN NO_DATA_FOUND THEN
5878 --
5879 BEGIN
5880 --
5881 IF (l_debug <> -1) THEN
5882 rlm_core_sv.dlog(C_DEBUG,'Customer Level');
5883 END IF;
5884 --
5885 SELECT ship_from_org_id
5886 INTO x_lines_rec.ship_from_org_id
5887 FROM rlm_cust_shipto_terms t
5888 WHERE customer_id = x_header_rec.customer_id AND
5889 address_id IS NULL AND
5890 cust_assign_supplier_cd =
5891 x_lines_rec.cust_ship_from_org_ext;
5892 --
5893 v_progress := '040';
5894 --
5895 IF (l_debug <> -1) THEN
5896 rlm_core_sv.dlog(C_DEBUG,'organization id ' ||
5897 x_lines_rec.ship_from_org_id);
5898 END IF;
5899 --
5900 EXCEPTION
5901 WHEN NO_DATA_FOUND THEN
5902 raise e_NoDataFound;
5903 WHEN TOO_MANY_ROWS THEN
5904 --
5905 IF (l_debug <> -1) THEN
5906 rlm_core_sv.dlog(C_DEBUG,'organization id ' ||
5907 x_lines_rec.ship_from_org_id);
5908 END IF;
5909 --
5910 raise e_ManyRows;
5911 END;
5912 --
5913 WHEN TOO_MANY_ROWS THEN
5914 --
5915 IF (l_debug <> -1) THEN
5916 rlm_core_sv.dlog(C_DEBUG,'organization id ' ||
5917 x_lines_rec.ship_from_org_id);
5918 END IF;
5919 --
5920 raise e_ManyRows;
5921 --
5922 WHEN OTHERS THEN
5923 --
5924 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveShipFromOrg',
5925 v_Progress);
5926 --
5927 IF (l_debug <> -1) THEN
5928 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
5929 END IF;
5930 --
5931 raise;
5932 END;
5933 --
5934 END IF;
5935
5936 --
5937 ELSE
5938 --
5939 IF (l_debug <> -1) THEN
5940 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id ',x_lines_rec.ship_from_org_id);
5941 END IF;
5942 --
5943 END IF;
5944 --
5945 v_progress := '060';
5946 --
5947 END IF;
5948 --
5949 IF (l_debug <> -1) THEN
5950 rlm_core_sv.dpop(C_SDEBUG);
5951 END IF;
5952 --
5953 EXCEPTION
5954 --
5955 WHEN NO_DATA_FOUND or e_NoDataFound THEN
5956 --
5957 --2859506. ATP items should send null values for ship from org ext
5958 IF x_lines_rec.cust_ship_from_org_ext IS NOT NULL THEN
5959 --
5960 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
5961 --Bug Fix 2892076 added call to procedure app_error
5962
5963 rlm_message_sv.app_error(
5964 x_ExceptionLevel => rlm_message_sv.k_error_level,
5965 x_MessageName => 'RLM_SHIPFROM_NOT_DERIVED',
5966 x_InterfaceHeaderId => x_lines_rec.header_id,
5967 x_InterfaceLineId => x_lines_rec.line_id,
5968 x_token1=>'SHIP_FROM_ORG_EXT',
5969 x_value1=>x_lines_rec.cust_ship_from_org_ext,
5970 x_ValidationType => 'SHIP_FROM_ORG');
5971 --
5972 IF (l_debug <> -1) THEN
5973 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
5974 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPFROM_NOT_DERIVED');
5975 END IF;
5976 --
5977 --raise; /* Bug 4395540 */
5978 --BUG 5098241 commented the raise
5979 --
5980 ELSE
5981 -- global_atp to be derived by Setup API later
5982 x_lines_rec.ship_from_org_id := NULL;
5983 --
5984 IF (l_debug <> -1) THEN
5985 rlm_core_sv.dpop(C_SDEBUG,'Null ship from org id ');
5986 END IF;
5987 END IF;
5988 --
5989 WHEN e_ManyRows THEN
5990 --
5991 -- global_atp to be derived by Setup API later
5992 x_lines_rec.ship_from_org_id := NULL;
5993 --
5994 IF (l_debug <> -1) THEN
5995 rlm_core_sv.dpop(C_SDEBUG,'In too many rows use default SF');
5996 END IF;
5997 --
5998 WHEN OTHERS THEN
5999 --
6000 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6001 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveShipFromOrg', v_Progress);
6002 --
6003 IF (l_debug <> -1) THEN
6004 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
6005 END IF;
6006 --
6007 raise;
6008 --
6009 END DeriveShipFromOrg;
6010
6011 /*===========================================================================
6012
6013 PROCEDURE NAME: derive_intmd_shipto_id
6014
6015 ===========================================================================*/
6016 PROCEDURE DeriveIntrmdShipToID(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
6017 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
6018 IS
6019 --
6020 CURSOR c_IntrmdShipToID_ext IS --Added cursor as part of Bugfix 8672453
6021 SELECT ACCT_SITE.CUST_ACCT_SITE_ID,
6022 ACCT_SITE.STATUS, SITE_USES.STATUS,
6023 SITE_USES.site_use_id
6024 FROM HZ_CUST_ACCT_SITES ACCT_SITE,
6025 HZ_CUST_SITE_USES_ALL SITE_USES
6026 WHERE acct_site.ece_tp_location_code =
6027 x_lines_rec.cust_intrmd_ship_to_ext
6028 AND acct_site.cust_acct_site_id = site_uses.cust_acct_site_id
6029 AND site_uses.site_use_code = 'SHIP_TO'
6030 AND acct_site.org_id = site_uses.org_id
6031 AND cust_account_id IN
6032 (SELECT to_number(x_header_rec.customer_id) from dual
6033 UNION
6034 SELECT cust_account_id
6035 FROM hz_cust_acct_relate_all
6036 WHERE related_cust_account_id = x_header_rec.customer_id
6037 AND ship_to_flag = 'Y'
6038 AND status = 'A'
6039 AND org_id = x_header_rec.org_id
6040 AND oe_sys_parameters.value('CUSTOMER_RELATIONSHIPS_FLAG') IN ('Y', 'A'))
6041 ORDER BY site_uses.status; --To query first Active and then Inactive records
6042
6043 CURSOR c_IntrmdShipToID IS --Added cursor as part of Bugfix 8672453
6044 SELECT hcas.status, cust_account_id, hcsu.status,
6045 hcsu.site_use_id
6046 FROM hz_cust_acct_sites_all hcas, hz_cust_site_uses_all hcsu
6047 WHERE hcas.cust_acct_site_id = x_lines_rec.intrmd_ship_to_id
6048 AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id
6049 AND hcsu.site_use_code = 'SHIP_TO'
6050 AND hcas.org_id = hcsu.org_id
6051 ORDER BY hcsu.status; --To query first Active and then Inactive records
6052
6053 v_progress VARCHAR2(3) := '010';
6054 v_int_shp_to_cust_id NUMBER;
6055 e_InvalidIntmdShipTo EXCEPTION;
6056 e_invalidIntmdShiptoId EXCEPTION;
6057 e_InactiveIntmdShipTo EXCEPTION;
6058 e_IntrmdSiteUseInv EXCEPTION;
6059 e_InactiveIntShipSiteUse EXCEPTION;
6060 e_InactiveIntShipTo EXCEPTION;
6061 v_addStatus VARCHAR2(1) := 'I';
6062 v_siteUseStatus VARCHAR2(1) := 'I';
6063 --
6064 BEGIN
6065 --
6066 IF (l_debug <> -1) THEN
6067 rlm_core_sv.dpush(C_SDEBUG,'DeriveIntrmdShipToID');
6068 rlm_core_sv.dlog(C_DEBUG,'Cust_Intrmd_Ship_To_Ext',
6069 x_lines_rec.cust_intrmd_ship_to_ext);
6070 rlm_core_sv.dlog(C_DEBUG,'IntrmdShipToID',x_lines_rec.intrmd_ship_to_id);
6071 END IF;
6072 --
6073 -- IF rlm_message_sv.check_dependency('SHIPTO') THEN
6074 --
6075 IF x_lines_rec.intrmd_ship_to_id IS NULL AND
6076 x_lines_rec.cust_intrmd_ship_to_ext IS NOT NULL THEN
6077 --{
6078 v_progress := '020';
6079 --
6080 IF (l_debug <> -1) THEN
6081 rlm_core_sv.dlog(C_DEBUG,'cust_intrmd_ship_to_ext ',
6082 x_lines_rec.cust_intrmd_ship_to_ext);
6083 END IF;
6084 --
6085 BEGIN
6086 --
6087 -- Following query is changed as per TCA obsolescence project.
6088 -- R12 Perf Bug 4129291 : Use HCSU also in query below
6089 --Bugfix 8672453 Start
6090 OPEN c_IntrmdShipToID_ext;
6091 --
6092 FETCH c_IntrmdShipToID_ext INTO x_lines_rec.intrmd_ship_to_id,
6093 v_addStatus,v_siteUseStatus,
6094 x_lines_rec.intrmd_st_site_use_id;
6095 --
6096 IF c_IntrmdShipToID_ext%NOTFOUND THEN
6097 --
6098 IF (l_debug <> -1) THEN
6099 rlm_core_sv.dlog(C_DEBUG,'No Intermediate ShipTo Locations found');
6100 END IF;
6101 raise NO_DATA_FOUND;
6102 --
6103 END IF;
6104 --
6105 CLOSE c_IntrmdShipToID_ext;
6106 --Bugfix 8672453 End
6107 --
6108 IF (l_debug <> -1) THEN
6109 rlm_core_sv.dlog(C_DEBUG, 'intrmd_ship_to_id ', x_lines_rec.intrmd_ship_to_id);
6110 rlm_core_sv.dlog(C_DEBUG, 'Intrmd ST Site Use ID', x_lines_rec.intrmd_st_site_use_id);
6111 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6112 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6113 END IF;
6114 --
6115 END;
6116 --
6117 IF v_addStatus = 'I' THEN
6118 raise e_InactiveIntShipTo;
6119 END IF;
6120 --
6121 IF v_siteUseStatus = 'I' THEN
6122 RAISE e_InactiveIntShipSiteUse;
6123 END IF;
6124 --}
6125 ELSIF x_lines_rec.intrmd_ship_to_id IS NOT NULL THEN
6126 --intrmd_ship_to_address_id is not null
6127 --{
6128 BEGIN
6129 --
6130 -- Following query is changed as per TCA obsolescence project.
6131 -- R12 Perf. Bug 4129291 : Use HCSU in query below
6132 --
6133 --Bugfix 8672453 Start
6134 OPEN c_IntrmdShipToID;
6135 --
6136 FETCH c_IntrmdShipToID INTO v_addStatus,
6137 v_int_shp_to_cust_id, v_siteUseStatus,
6138 x_lines_rec.intrmd_st_site_use_id;
6139 --
6140 IF c_IntrmdShipToID%NOTFOUND THEN
6141 --
6142 IF (l_debug <> -1) THEN
6143 rlm_core_sv.dlog(C_DEBUG,'Invalid Intermediate ShipTo Location');
6144 END IF;
6145 raise e_InvalidIntmdShipto;
6146 --
6147 END IF;
6148 --
6149 CLOSE c_IntrmdShipToID;
6150 --Bugfix 8672453 End
6151
6152 --
6153 IF (l_debug <> -1) THEN
6154 rlm_core_sv.dlog(C_DEBUG, 'intermdiate ship-to customer id', v_int_shp_to_cust_id);
6155 rlm_core_sv.dlog(C_DEBUG,'customer_id', x_header_rec.customer_id);
6156 rlm_core_sv.dlog(C_DEBUG, 'Intrmd ST Site Use ID', x_lines_rec.intrmd_st_site_use_id);
6157 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6158 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6159 END IF;
6160 --
6161 IF v_addStatus = 'I' THEN
6162 raise e_InactiveIntmdShipTo;
6163 END IF;
6164 --
6165 IF v_siteUseStatus = 'I' THEN
6166 RAISE e_InactiveIntShipSiteUse;
6167 END IF;
6168 --
6169 IF NOT CustomerRelationship(x_header_rec.customer_id,
6170 v_int_shp_to_cust_id,
6171 x_header_rec.header_id,
6172 'SHIP_TO') THEN
6173 --
6174 IF (l_debug <> -1) THEN
6175 rlm_core_sv.dlog(C_DEBUG,'Invalid customer relationship');
6176 END IF;
6177 --
6178 raise e_invalidIntmdShiptoId;
6179 --
6180 END IF;
6181 --
6182 END;
6183 --}
6184 END IF;
6185 --
6186 x_lines_rec.INTMED_SHIP_TO_ORG_ID := x_lines_rec.intrmd_st_site_use_id;
6187 --
6188 /*
6189 * R12 Perf Bug 4129291
6190 * We do not need this segment of code below since the status
6191 * of site use record is included in queries above
6192 *
6193 IF x_lines_rec.intrmd_ship_to_id IS NOT NULL THEN
6194 --{
6195 BEGIN
6196 --
6197 -- Following query is changed as per TCA obsolescence project.
6198 SELECT site_use_id ,
6199 status
6200 INTO x_lines_rec.intrmd_st_site_use_id,
6201 v_status
6202 FROM HZ_CUST_SITE_USES
6203 WHERE CUST_ACCT_SITE_ID = x_lines_rec.INTRMD_SHIP_TO_ID
6204 AND site_use_code = 'SHIP_TO';
6205 --
6206 IF (l_debug <> -1) THEN
6207 rlm_core_sv.dlog(C_DEBUG,'intrmd_st_site_use_id ',
6208 x_lines_rec.intrmd_st_site_use_id);
6209 rlm_core_sv.dlog(C_DEBUG,'intrmd_site_use_id status', v_status);
6210 END IF;
6211 --
6212 x_lines_rec.INTMED_SHIP_TO_ORG_ID := x_lines_rec.intrmd_st_site_use_id;
6213 v_progress := '030';
6214 --
6215 IF v_status = 'I' THEN
6216 raise e_InactiveIntShipSiteUse;
6217 END IF;
6218 --
6219 EXCEPTION
6220 --
6221 WHEN NO_DATA_FOUND THEN
6222 raise e_IntrmdSiteUseInv;
6223 END;
6224 --}
6225 END IF;
6226 */
6227 --
6228 -- END IF;
6229 --
6230 IF (l_debug <> -1) THEN
6231 rlm_core_sv.dpop(C_SDEBUG);
6232 END IF;
6233 --
6234 EXCEPTION
6235 --
6236 WHEN NO_DATA_FOUND THEN
6237 --
6238 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6239 rlm_message_sv.app_error(
6240 x_ExceptionLevel => rlm_message_sv.k_error_level,
6241 x_MessageName => 'RLM_INTRMD_SHIPTO_ID_INVALID',
6242 x_InterfaceHeaderId => x_lines_rec.header_id,
6243 x_InterfaceLineId => x_lines_rec.line_id,
6244 x_token1=>'INTRMD_SHIP_TO_EXT',
6245 x_value1=>x_lines_rec.cust_intrmd_ship_to_ext,
6246 x_ValidationType => 'INTRMD_SHIP_TO');
6247 --
6248 IF (l_debug <> -1) THEN
6249 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6250 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_INTRMD_SHIPTO_ID_INVALID');
6251 END IF;
6252 --
6253 WHEN e_invalidIntmdShiptoId THEN
6254 --
6255 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6256 --
6257 IF (l_debug <> -1) THEN
6258 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6259 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_INTRMD_SHIP_TO_ID_RELATED');
6260 END IF;
6261 --
6262 WHEN e_IntrmdSiteUseInv THEN
6263 -- Warning
6264 rlm_message_sv.app_error(
6265 x_ExceptionLevel => rlm_message_sv.k_warn_level,
6266 x_MessageName => 'RLM_INTRMD_SHIPTO_SITEUSE',
6267 x_InterfaceHeaderId => x_lines_rec.header_id,
6268 x_InterfaceLineId => x_lines_rec.line_id,
6269 x_token1=>'INTRMD_SHIP_TO_EXT',
6270 x_value1=>x_lines_rec.cust_intrmd_ship_to_ext,
6271 x_ValidationType => 'INTRMD_SHIP_TO');
6272 --
6273 IF (l_debug <> -1) THEN
6274 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6275 rlm_core_sv.dpop(C_SDEBUG,'WARNING: RLM_INTRMD_SHIPTO_SITEUSE');
6276 END IF;
6277 --
6278 WHEN e_InactiveIntShipTo THEN
6279 -- Warning
6280 rlm_message_sv.app_error(
6281 x_ExceptionLevel => rlm_message_sv.k_warn_level,
6282 x_MessageName => 'RLM_INTSHIP_INACTIVE',
6283 x_InterfaceHeaderId => x_lines_rec.header_id,
6284 x_InterfaceLineId => x_lines_rec.line_id,
6285 x_token1=>'INTRMD_SHIP_TO_EXT',
6286 x_value1=>x_lines_rec.cust_intrmd_ship_to_ext,
6287 x_ValidationType => 'INTRMD_SHIP_TO');
6288 --
6289 IF (l_debug <> -1) THEN
6290 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6291 rlm_core_sv.dpop(C_SDEBUG,'WARNING: RLM_INTSHIP_INACTIVE');
6292 END IF;
6293 --
6294 WHEN e_InactiveIntShipSiteUse THEN
6295 -- Warning
6296 rlm_message_sv.app_error(
6297 x_ExceptionLevel => rlm_message_sv.k_warn_level,
6298 x_MessageName => 'RLM_INTSHIP_SITE_USE_INACTIVE',
6299 x_InterfaceHeaderId => x_lines_rec.header_id,
6300 x_InterfaceLineId => x_lines_rec.line_id,
6301 x_token1=>'INTRMD_SHIP_TO_EXT',
6302 x_value1=>x_lines_rec.cust_intrmd_ship_to_ext,
6303 x_ValidationType => 'INTRMD_SHIP_TO');
6304 --
6305 IF (l_debug <> -1) THEN
6306 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6307 rlm_core_sv.dpop(C_SDEBUG,'WARNING: RLM_INTSHIP_SITE_USE_INACTIVE');
6308 END IF;
6309 --
6310 WHEN OTHERS THEN
6311 --
6312 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6313 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveIntrmdShipToID',
6314 v_Progress);
6315 --
6316 IF (l_debug <> -1) THEN
6317 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
6318 END IF;
6319 --
6320 raise;
6321 --
6322 END DeriveIntrmdShipToID;
6323
6324 /*===========================================================================
6325
6326 PROCEDURE NAME: DeriveBillToID
6327
6328 ===========================================================================*/
6329 PROCEDURE DeriveBillToID(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
6330 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE,
6331 x_cum_org_level_code IN rlm_cust_shipto_terms.cum_org_level_code%TYPE)
6332 IS
6333 --
6334 CURSOR c_BillToID_ext IS --Added cursor as part of Bugfix 8672453
6335 SELECT ACCT_SITE.CUST_ACCT_SITE_ID,
6336 ACCT_SITE.STATUS, SITE_USE.STATUS,
6337 SITE_USE.site_use_id
6338 FROM HZ_CUST_ACCT_SITES ACCT_SITE, HZ_CUST_SITE_USES_ALL SITE_USE
6339 WHERE acct_site.ece_tp_location_code = x_lines_rec.cust_bill_to_ext
6340 AND ACCT_SITE.CUST_ACCOUNT_ID = x_header_rec.customer_id
6341 AND site_use_code = 'BILL_TO'
6342 AND ACCT_SITE.cust_acct_site_id = SITE_USE.cust_acct_site_id
6343 AND ACCT_SITE.org_id = SITE_USE.org_id
6344 ORDER BY SITE_USE.status; --To query first Active and then Inactive records
6345
6346 CURSOR c_BillToID_cust_rel IS --Added cursor as part of Bugfix 8672453
6347 SELECT ACCT_SITE.CUST_ACCT_SITE_ID,
6348 ACCT_SITE.status,
6349 ACCT_SITE.CUST_ACCOUNT_ID, SITE_USE.STATUS,
6350 SITE_USE.site_use_id
6351 FROM HZ_CUST_ACCT_SITES ACCT_SITE, HZ_CUST_SITE_USES_ALL SITE_USE
6352 WHERE ACCT_SITE.ece_tp_location_code = x_lines_rec.cust_bill_to_ext
6353 AND ACCT_SITE.cust_acct_site_id = SITE_USE.cust_acct_site_id
6354 AND SITE_USE.site_use_code = 'BILL_TO'
6355 AND ACCT_SITE.org_id = SITE_USE.org_id
6356 AND ACCT_SITE.CUST_ACCOUNT_ID in
6357 (SELECT DISTINCT cust_account_id
6358 FROM HZ_CUST_ACCT_RELATE_ALL
6359 WHERE related_cust_account_id = x_header_rec.customer_id
6360 AND status='A'
6361 AND bill_to_flag = 'Y'
6362 AND oe_sys_parameters.value('CUSTOMER_RELATIONSHIPS_FLAG', x_header_rec.org_id) IN ('Y', 'A')
6363 AND org_id = x_header_rec.org_id)
6364 ORDER BY SITE_USE.status; --To query first Active and then Inactive records
6365
6366 CURSOR c_BillToID_org_level IS --Added cursor as part of Bugfix 8672453
6367 SELECT site_use_id, status
6368 FROM HZ_CUST_SITE_USES
6369 WHERE CUST_ACCT_SITE_ID = x_lines_rec.ship_to_address_id
6370 AND site_use_code = 'SHIP_TO'
6371 ORDER BY status; --To query first Active and then Inactive records
6372
6373 CURSOR c_BillToID IS --Added cursor as part of Bugfix 8672453
6374 SELECT ACCT_SITE.STATUS, ACCT_SITE.CUST_ACCOUNT_ID,
6375 SITE_USE.STATUS, SITE_USE.site_use_id
6376 FROM HZ_CUST_ACCT_SITES ACCT_SITE, HZ_CUST_SITE_USES_ALL SITE_USE
6377 WHERE ACCT_SITE.CUST_ACCT_SITE_ID = x_lines_rec.bill_to_address_id
6378 AND ACCT_SITE.cust_acct_site_id = SITE_USE.cust_acct_site_id
6379 AND SITE_USE.site_use_code = 'BILL_TO'
6380 AND ACCT_SITE.org_id = SITE_USE.org_id
6381 ORDER BY SITE_USE.status; --To query first Active and then Inactive records
6382
6383 v_progress VARCHAR2(3) := '010';
6384 v_count NUMBER;
6385 v_status VARCHAR2(1) := 'I';
6386 v_bill_to_customer_id NUMBER DEFAULT NULL;
6387 v_ship_to_customer_id NUMBER;
6388 v_tp_loc VARCHAR2(30);
6389 e_InvalidBillTo EXCEPTION;
6390 e_InvalidBillToID EXCEPTION;
6391 e_InactiveBillTo EXCEPTION;
6392 e_NoBillTo EXCEPTION;
6393 e_BillToSiteUseInv EXCEPTION;
6394 e_InactiveBillSiteUse EXCEPTION;
6395 e_bad_location EXCEPTION;
6396 e_related_cust EXCEPTION;
6397 v_addStatus VARCHAR2(1) := 'I';
6398 v_siteUseStatus VARCHAR2(1) := 'I';
6399 --
6400 BEGIN
6401 --
6402 IF (l_debug <> -1) THEN
6403 rlm_core_sv.dpush(C_SDEBUG,'DeriveBillToID');
6404 rlm_core_sv.dlog(C_DEBUG, 'x_lines_rec.bill_to_address_id',
6405 x_lines_rec.bill_to_address_id);
6406 rlm_core_sv.dlog(C_DEBUG,'x_cum_org_level_code',
6407 x_cum_org_level_code);
6408 END IF;
6409 --
6410 -- R12 Perf Bug 4129291 : Modified queries to use both hz_cust_acct_sites and
6411 -- hz_cust_site_uses, so DSP determines the status of address record and site use
6412 -- record in one DB query.
6413 --
6414 IF rlm_message_sv.check_dependency('BILL_TO') THEN
6415 --
6416 IF x_lines_rec.bill_to_address_id IS NULL THEN
6417 --{
6418 IF x_lines_rec.cust_bill_to_ext IS NOT NULL THEN
6419 --{
6420 BEGIN
6421 --{
6422 v_progress := '030';
6423 --
6424 IF (l_debug <> -1) THEN
6425 rlm_core_sv.dlog(C_DEBUG,'cust_bill_to_ext ', x_lines_rec.cust_bill_to_ext);
6426 END IF;
6427 --
6428 --if the bill_to does not exist for the customer, try customer
6429 -- relationship
6430 --
6431 BEGIN
6432 --{
6433 -- Following query is changed as per TCA obsolescence project.
6434 --Bugfix 8672453 Start
6435 OPEN c_BillToID_ext;
6436 --
6437 FETCH c_BillToID_ext INTO x_lines_rec.intrmd_ship_to_id,
6438 v_addStatus,v_siteUseStatus,
6439 x_lines_rec.intrmd_st_site_use_id;
6440 --
6441 IF c_BillToID_ext%NOTFOUND THEN
6442 --
6443 IF (l_debug <> -1) THEN
6444 rlm_core_sv.dlog(C_DEBUG,'No BillTo Locations found');
6445 rlm_core_sv.dlog(C_DEBUG,'e_related_cust');
6446 END IF;
6447 --
6448 OPEN c_BillToID_cust_rel;
6449 --
6450 FETCH c_BillToID_cust_rel INTO x_lines_rec.bill_to_address_id,
6451 v_addStatus,
6452 v_bill_to_customer_id, v_siteUseStatus,
6453 x_lines_rec.bill_to_site_use_id;
6454 --
6455 IF c_BillToID_cust_rel%NOTFOUND THEN
6456 --
6457 IF (l_debug <> -1) THEN
6458 rlm_core_sv.dlog(C_DEBUG,'No Customer Relation record found');
6459 END IF;
6460 raise NO_DATA_FOUND;
6461 --
6462 END IF;
6463 --
6464 IF (l_debug <> -1) THEN
6465 rlm_core_sv.dlog(C_DEBUG,'bill_to_address_id ', x_lines_rec.bill_to_address_id);
6466 rlm_core_sv.dlog(C_DEBUG,'bill to Address status ', v_addStatus);
6467 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6468 rlm_core_sv.dlog(C_DEBUG,'v_bill_to_customer_id', v_bill_to_customer_id);
6469 END IF;
6470 --
6471 IF v_addStatus = 'I' THEN
6472 raise e_InactiveBillTo;
6473 END IF;
6474 --
6475 IF v_siteUseStatus = 'I' THEN
6476 RAISE e_InactiveBillSiteUse;
6477 END IF;
6478 --
6479 CLOSE c_BillToID_cust_rel;
6480 --
6481 END IF;
6482 --
6483 IF (l_debug <> -1) THEN
6484 rlm_core_sv.dlog(C_DEBUG,'bill_to_address_id ', x_lines_rec.bill_to_address_id);
6485 rlm_core_sv.dlog(C_DEBUG, 'bill_to_site_use_id', x_lines_rec.bill_to_site_use_id);
6486 rlm_core_sv.dlog(C_DEBUG,'bill to Address status ', v_addStatus);
6487 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6488 END IF;
6489 --
6490 IF v_addStatus = 'I' THEN
6491 raise e_InactiveBillTo;
6492 END IF;
6493 --
6494 IF v_siteUseStatus = 'I' THEN
6495 RAISE e_InactiveBillSiteUse;
6496 END IF;
6497 --
6498 CLOSE c_BillToID_ext;
6499 --Bugfix 8672453 End
6500
6501 END;
6502 --}
6503 END;
6504 --
6505 x_lines_rec.invoice_to_org_id := x_lines_rec.bill_to_site_use_id;
6506 --
6507 --}
6508 ELSE -- CUST_BILL_TO_EXT is null
6509 --{
6510 IF x_cum_org_level_code = 'BILL_TO_SHIP_FROM' THEN
6511 --{
6512 v_progress := '040';
6513 --
6514 IF (l_debug <> -1) THEN
6515 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ',
6516 x_lines_rec.ship_to_address_id);
6517 END IF;
6518 --
6519 -- If the bill_to_ext is null then we use the bill_to
6520 -- defined in HZ_CUST_ACCT_SITES for the SHIP_TO
6521 -- the bill_To_site_use as from the HZ_CUST_ACCT_SITES where
6522 -- address_useage is ship to
6523 --
6524 -- Following query is changed as per TCA obsolescence project.
6525 BEGIN
6526 --Bugfix 8672453 Start
6527 OPEN c_BillToID_org_level;
6528 --
6529 FETCH c_BillToID_org_level INTO x_lines_rec.bill_to_site_use_id, v_status;
6530 --
6531 IF c_BillToID_org_level%NOTFOUND THEN
6532 --
6533 IF (l_debug <> -1) THEN
6534 rlm_core_sv.dlog(C_DEBUG,'Invalid BillTo Location(Org level)');
6535 END IF;
6536 raise e_InvalidBillTo;
6537 --
6538 END IF;
6539 --
6540 CLOSE c_BillToID_org_level;
6541 --Bugfix 8672453 End
6542
6543 IF (l_debug <> -1) THEN
6544 rlm_core_sv.dlog(C_DEBUG,'bill site use status ', v_siteUseStatus );
6545 rlm_core_sv.dlog(C_DEBUG,'bill site use id ', x_lines_rec.bill_to_site_use_id );
6546 END IF;
6547 --
6548 x_lines_rec.invoice_to_org_id := x_lines_rec.bill_to_site_use_id;
6549 --
6550 IF (l_debug <> -1) THEN
6551 rlm_core_sv.dlog(C_DEBUG,'invoice_to_org_id ', x_lines_rec.invoice_to_org_id );
6552 END IF;
6553 --
6554 IF x_lines_rec.bill_to_site_use_id is NOT NULL AND v_status = 'A'THEN
6555 --
6556 -- Following query is changed as per TCA obsolescence project.
6557 SELECT CUST_ACCT_SITE_ID, status
6558 INTO x_lines_rec.bill_to_address_id, v_status
6559 FROM HZ_CUST_SITE_USES_ALL
6560 WHERE SITE_USE_ID = x_lines_rec.bill_to_site_use_id;
6561 --
6562 ELSE
6563 --
6564 IF x_lines_rec.bill_to_site_use_id is NULL THEN
6565 raise e_NoBillTo;
6566 ELSIF v_status = 'I' THEN
6567 raise e_InactiveBillSiteUse;
6568 END IF;
6569 --
6570 END IF;
6571 --
6572 EXCEPTION
6573 --
6574 WHEN e_NoBillTo THEN
6575 raise e_InvalidBillTo;
6576 --}
6577 END;
6578 --
6579 IF (l_debug <> -1) THEN
6580 rlm_core_sv.dlog(C_DEBUG,'bill_to_address_id ', x_lines_rec.bill_to_address_id);
6581 END IF;
6582 --}
6583 END IF;
6584 --}
6585 END IF;
6586 --}
6587 ELSE
6588 --{
6589 -- x_lines_rec.bill_to_address_id is NOT NULL
6590 --
6591 BEGIN
6592 --{
6593 -- Following query is changed as per TCA obsolescence project.
6594 --Bugfix 8672453 Start
6595 OPEN c_BillToID;
6596 --
6597 FETCH c_BillToID INTO v_addStatus, v_bill_to_customer_id,
6598 v_siteUseStatus, x_lines_rec.bill_to_site_use_id;
6599 --
6600 IF c_BillToID%NOTFOUND THEN
6601 --
6602 IF (l_debug <> -1) THEN
6603 rlm_core_sv.dlog(C_DEBUG,'Invalid BillTo Location');
6604 END IF;
6605 raise NO_DATA_FOUND;
6606 --
6607 END IF;
6608 --
6609 CLOSE c_BillToID;
6610 --Bugfix 8672453 End
6611 --
6612 IF (l_debug <> -1) THEN
6613 rlm_core_sv.dlog(C_DEBUG,'bill_to_address_id', x_lines_rec.bill_to_address_id);
6614 rlm_core_sv.dlog(C_DEBUG,'v_bill_to_customer_id',v_bill_to_customer_id);
6615 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6616 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6617 rlm_core_sv.dlog(C_DEBUG, 'Site Use ID', x_lines_rec.bill_to_site_use_id);
6618 END IF;
6619 --
6620 IF v_addStatus = 'I' THEN
6621 raise e_InactiveBillTo;
6622 END IF;
6623 --
6624 IF v_siteUseStatus = 'I' THEN
6625 RAISE e_InactiveBillSiteUse;
6626 END IF;
6627 --
6628 IF NOT CustomerRelationship(x_header_rec.customer_id,
6629 v_bill_to_customer_id,
6630 x_header_rec.header_id,
6631 'BILL_TO') THEN
6632 --
6633 raise e_InvalidBillToId;
6634 --
6635 END IF;
6636 --
6637 x_lines_rec.invoice_to_org_id := x_lines_rec.bill_to_site_use_id;
6638 --
6639 IF (l_debug <> -1) THEN
6640 rlm_core_sv.dlog(C_DEBUG, 'Invoice To Org ID', x_lines_rec.invoice_to_org_id);
6641 END IF;
6642 --}
6643 END;
6644 --}
6645 END IF;
6646 --}
6647 END IF;
6648 --
6649 IF (l_debug <> -1) THEN
6650 rlm_core_sv.dpop(C_SDEBUG);
6651 END IF;
6652 --
6653 EXCEPTION
6654 --
6655 WHEN NO_DATA_FOUND THEN
6656 --
6657 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6658 rlm_message_sv.app_error(
6659 x_ExceptionLevel => rlm_message_sv.k_error_level,
6660 x_MessageName => 'RLM_BILLTO_INVALID',
6661 x_InterfaceHeaderId => x_lines_rec.header_id,
6662 x_InterfaceLineId => x_lines_rec.line_id,
6663 x_token1=>'BILL_TO_EXT',
6664 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6665 x_header_rec.ece_tp_location_code_ext),
6666 x_ValidationType => 'BILL_TO');
6667 --
6668 IF (l_debug <> -1) THEN
6669 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6670 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_INVALID');
6671 END IF;
6672 --
6673 WHEN e_BillToSiteUseInv THEN
6674 --
6675 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6676 rlm_message_sv.app_error(
6677 x_ExceptionLevel => rlm_message_sv.k_error_level,
6678 x_MessageName => 'RLM_BILLTO_SITEUSE',
6679 x_InterfaceHeaderId => x_lines_rec.header_id,
6680 x_InterfaceLineId => x_lines_rec.line_id,
6681 x_token1=>'BILL_TO_EXT',
6682 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6683 x_header_rec.ece_tp_location_code_ext),
6684 x_ValidationType => 'BILL_TO');
6685 --
6686 IF (l_debug <> -1) THEN
6687 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6688 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_SITEUSE');
6689 END IF;
6690 --
6691 WHEN e_InvalidBillTo THEN
6692 --
6693 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6694 rlm_message_sv.app_error(
6695 x_MessageName => 'RLM_BILLTO_ID_NOT_DERIVED',
6696 x_InterfaceHeaderId => x_lines_rec.header_id,
6697 x_InterfaceLineId => x_lines_rec.line_id,
6698 x_token1=>'TP_LOCATION',
6699 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6700 x_header_rec.ece_tp_location_code_ext),
6701 x_ValidationType => 'BILL_TO');
6702 --
6703 IF (l_debug <> -1) THEN
6704 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6705 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_ID_NOT_DERIVED');
6706 END IF;
6707 --
6708 WHEN e_bad_location THEN
6709 --
6710 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6711 rlm_message_sv.app_error(
6712 x_MessageName => 'RLM_BILLTO_ID_NOT_DERIVED',
6713 x_InterfaceHeaderId => x_lines_rec.header_id,
6714 x_InterfaceLineId => x_lines_rec.line_id,
6715 x_token1=>'TP_LOCATION',
6716 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6717 x_header_rec.ece_tp_location_code_ext),
6718 x_ValidationType => 'BILL_TO');
6719 --
6720 IF (l_debug <> -1) THEN
6721 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6722 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_ID_NOT_DERIVED');
6723 END IF;
6724 --
6725 WHEN e_InactiveBillTo THEN
6726 --
6727 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6728 --
6729 rlm_message_sv.app_error(
6730 x_ExceptionLevel => rlm_message_sv.k_error_level,
6731 x_MessageName => 'RLM_BILLTO_INACTIVE',
6732 x_InterfaceHeaderId => x_lines_rec.header_id,
6733 x_InterfaceLineId => x_lines_rec.line_id,
6734 x_token1=>'TP_LOCATION',
6735 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6736 x_header_rec.ece_tp_location_code_ext),
6737 x_ValidationType => 'BILL_TO');
6738 --
6739 IF (l_debug <> -1) THEN
6740 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6741 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_ID_NOT_ACTIVE');
6742 END IF;
6743 --
6744 WHEN e_InvalidBilltoId THEN
6745 --
6746 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6747 --
6748 rlm_message_sv.app_error(
6749 x_ExceptionLevel => rlm_message_sv.k_error_level,
6750 x_MessageName => 'RLM_BILL_TO_ID_NO_RELATED',
6751 x_InterfaceHeaderId => x_lines_rec.header_id,
6752 x_InterfaceLineId => x_lines_rec.line_id,
6753 x_token1=>'CUSTOMER',
6754 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6755 x_header_rec.ece_tp_location_code_ext),
6756 x_ValidationType => 'BILL_TO');
6757 --
6758 IF (l_debug <> -1) THEN
6759 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6760 rlm_core_sv.dlog(C_DEBUG,'Customer Relationships: Bill to address id passed does not belong to the Customer nor its related customers');
6761 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_ID_NOT_RELATED');
6762 END IF;
6763 --
6764 WHEN e_InactiveBillSiteUse THEN
6765 --
6766 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6767 rlm_message_sv.app_error(
6768 x_ExceptionLevel => rlm_message_sv.k_error_level,
6769 x_MessageName => 'RLM_BILLTO_SITE_USE_INACTIVE',
6770 x_InterfaceHeaderId => x_lines_rec.header_id,
6771 x_InterfaceLineId => x_lines_rec.line_id,
6772 x_token1=>'TP_LOCATION',
6773 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6774 x_header_rec.ece_tp_location_code_ext),
6775 x_ValidationType => 'BILL_TO');
6776 --
6777 IF (l_debug <> -1) THEN
6778 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6779 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_SITE_USE_INACTIVE');
6780 END IF;
6781 --
6782 WHEN OTHERS THEN
6783 --
6784 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6785 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveBillToID',v_Progress);
6786 --
6787 IF (l_debug <> -1) THEN
6788 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
6789 END IF;
6790 --
6791 raise;
6792 --
6793 END DeriveBillToID;
6794
6795 /*===========================================================================
6796
6797 PROCEDURE NAME: DeriveShipToID
6798
6799 ===========================================================================*/
6800 PROCEDURE DeriveShipToID(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE,
6801 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
6802 IS
6803 --
6804 CURSOR c_ShipToID_line_ext IS --Added cursor as part of Bugfix 8672453
6805 SELECT hz.cust_acct_site_id, hz.status, cust_account_id,
6806 hcsu.status, site_use_id
6807 FROM hz_cust_acct_sites hz, hz_cust_site_uses_all hcsu
6808 WHERE hz.ece_tp_location_code = x_lines_rec.cust_ship_to_ext
6809 AND hz.cust_acct_site_id = hcsu.cust_acct_site_id
6810 AND site_use_code = 'SHIP_TO'
6811 AND hz.org_id = hcsu.org_id
6812 AND hz.cust_account_id IN
6813 (SELECT to_number(x_header_rec.customer_id) from dual
6814 UNION
6815 SELECT cust_account_id
6816 FROM hz_cust_acct_relate_all
6817 WHERE related_cust_account_id = x_header_rec.customer_id
6818 AND ship_to_flag = 'Y'
6819 AND status = 'A'
6820 AND org_id = x_header_rec.org_id
6821 AND oe_sys_parameters.value('CUSTOMER_RELATIONSHIPS_FLAG')
6822 IN ('Y', 'A'))
6823 ORDER BY hcsu.status; --To query first Active and then Inactive records
6824
6825 CURSOR c_ShipToID_header_ext IS --Added cursor as part of Bugfix 8672453
6826 SELECT hcas.cust_acct_site_id, hcas.status, hcsu.status,
6827 hcsu.site_use_id
6828 FROM hz_cust_acct_sites hcas, hz_cust_site_uses_all hcsu
6829 WHERE ece_tp_location_code = x_header_rec.ece_tp_location_code_ext
6830 AND hcas.cust_account_id = x_header_rec.customer_id
6831 AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id
6832 AND site_use_code = 'SHIP_TO'
6833 AND hcas.org_id = hcsu.org_id
6834 ORDER BY hcsu.status; --To query first Active and then Inactive records
6835
6836 CURSOR c_ShipToID IS --Added cursor as part of Bugfix 8672453
6837 SELECT hcas.status, cust_account_id, hcsu.status, hcsu.site_use_id
6838 FROM hz_cust_acct_sites_all hcas, hz_cust_site_uses_all hcsu
6839 WHERE hcas.cust_acct_site_id = x_lines_rec.ship_to_address_id
6840 AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id
6841 AND hcsu.site_use_code = 'SHIP_TO'
6842 AND hcas.org_id = hcsu.org_id
6843 ORDER BY hcsu.status; --To query first Active and then Inactive records
6844
6845 v_progress VARCHAR2(3) := '010';
6846 v_addStatus VARCHAR2(1);
6847 v_siteUseStatus VARCHAR2(1);
6848 v_ship_to_customer_id NUMBER;
6849 e_InvalidShipTo EXCEPTION;
6850 e_InvalidShipToId EXCEPTION;
6851 e_InactiveShipTo EXCEPTION;
6852 e_ShipToSiteUseInv EXCEPTION;
6853 e_InactiveShipSiteUse EXCEPTION;
6854 e_InvalidCustomerId EXCEPTION;
6855 --
6856 BEGIN
6857 --
6858 IF (l_debug <> -1) THEN
6859 rlm_core_sv.dpush(C_SDEBUG, 'DeriveShipToID');
6860 rlm_core_sv.dlog(C_DEBUG, 'ship_to_address_id ',
6861 x_lines_rec.ship_to_address_id);
6862 rlm_core_sv.dlog(C_DEBUG, 'ece_tp_location_code_ext',
6863 x_header_rec.ece_tp_location_code_ext);
6864 rlm_core_sv.dlog(C_DEBUG, 'cust_ship_to_ext',
6865 x_lines_rec.cust_ship_to_ext);
6866 rlm_core_sv.dlog(C_DEBUG, 'ece_primary_address_id',
6867 x_header_rec.ece_primary_address_id);
6868
6869 END IF;
6870 --
6871 IF rlm_message_sv.check_dependency('SHIPTO') THEN
6872 --
6873 IF x_lines_rec.ship_to_address_id IS NULL THEN
6874 --{
6875 IF x_lines_rec.cust_ship_to_ext IS NOT NULL THEN
6876 --{
6877 v_progress := '030';
6878 --
6879 IF (l_debug <> -1) THEN
6880 rlm_core_sv.dlog(C_DEBUG,'Using Ship-To-Ext to derive Id ',
6881 x_lines_rec.cust_ship_to_ext);
6882 END IF;
6883 --
6884 -- Following query is changed as per TCA obsolescence project.
6885 -- CR Changes
6886 -- R12 Perf. Bug 4129291 : Use HCSU also in query below
6887 --
6888 --Bugfix 8672453 Start
6889 OPEN c_ShipToID_line_ext;
6890 --
6891 FETCH c_ShipToID_line_ext INTO x_lines_rec.ship_to_address_id, v_addStatus,
6892 x_lines_rec.ship_to_customer_id, v_siteUseStatus,
6893 x_lines_rec.ship_to_site_use_id;
6894 --
6895 IF c_ShipToID_line_ext%NOTFOUND THEN
6896 --
6897 IF (l_debug <> -1) THEN
6898 rlm_core_sv.dlog(C_DEBUG,'No ShipTo Locations found');
6899 END IF;
6900 raise NO_DATA_FOUND;
6901 --
6902 END IF;
6903 --
6904 CLOSE c_ShipToID_line_ext;
6905 --Bugfix 8672453 End
6906 --
6907 IF (l_debug <> -1) THEN
6908 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ', x_lines_rec.ship_to_address_id);
6909 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.ship_to_customer_id ', x_lines_rec.ship_to_customer_id);
6910 rlm_core_sv.dlog(C_DEBUG,'customer_id ', x_header_rec.customer_id);
6911 rlm_core_sv.dlog(C_DEBUG, 'x_lines_rec.ship_to_site_use_id', x_lines_rec.ship_to_site_use_id);
6912 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6913 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6914 END IF;
6915 --
6916 IF v_addStatus = 'I' THEN
6917 raise e_InactiveShipTo;
6918 END IF;
6919 --
6920 IF v_siteUseStatus = 'I' THEN
6921 RAISE e_InactiveShipSiteUse;
6922 END IF;
6923 --
6924 /* IF x_header_rec.customer_id <> x_lines_rec.ship_to_customer_id
6925 AND g_LineLevelShipTo THEN
6926 --
6927 IF (l_debug <> -1) THEN
6928 rlm_core_sv.dlog(C_DEBUG,'ship to customer id <> header customer id');
6929 END IF;
6930 --
6931 raise e_InvalidCustomerId;
6932 --
6933 END IF; */
6934 --}
6935 --performance
6936
6937 ELSIF x_header_rec.ece_tp_location_code_ext IS NOT NULL THEN
6938 --{
6939 v_progress := '035';
6940 --
6941 IF (l_debug <> -1) THEN
6942 rlm_core_sv.dlog(C_DEBUG,'Using TP Location Code to derive ID ',
6943 x_header_rec.ece_tp_location_code_ext);
6944 END IF;
6945 --
6946 BEGIN
6947 --
6948 -- Following query is changed as per TCA obsolescence project.
6949 -- R12 Perf Bug 4129291 : Use HCSU in query below
6950 --
6951 --Bugfix 8672453 Start
6952 OPEN c_ShipToID_header_ext;
6953 --
6954 FETCH c_ShipToID_header_ext INTO x_lines_rec.ship_to_address_id, v_addStatus, v_siteUseStatus,
6955 x_lines_rec.ship_to_site_use_id;
6956 --
6957 IF c_ShipToID_header_ext%NOTFOUND THEN
6958 --
6959 IF (l_debug <> -1) THEN
6960 rlm_core_sv.dlog(C_DEBUG,'Invalid ShipTo Location(Header)');
6961 END IF;
6962 raise e_InvalidShipTo;
6963 --
6964 END IF;
6965 --
6966 CLOSE c_ShipToID_header_ext;
6967 --Bugfix 8672453 End
6968 --
6969 IF (l_debug <> -1) THEN
6970 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ', x_lines_rec.ship_to_address_id);
6971 rlm_core_sv.dlog(C_DEBUG,'ship_to_site_use_id', x_lines_rec.ship_to_site_use_id);
6972 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6973 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6974 END IF;
6975 --
6976 IF v_addStatus = 'I' THEN
6977 raise e_InactiveShipTo;
6978 END IF;
6979 --
6980 IF v_siteUseStatus = 'I' THEN
6981 RAISE e_InactiveShipSiteUse;
6982 END IF;
6983 --
6984 END;
6985 --}
6986 ELSE
6987 --{
6988 v_progress := '040';
6989 --
6990 IF (x_header_rec.customer_id IS NOT NULL AND
6991 x_header_rec.ece_primary_address_id IS NULL) THEN
6992 --{
6993 -- Following query is changed as per TCA obsolescence project.
6994 SELECT rasu.cust_acct_site_id, rad.status, rasu.status,
6995 rasu.site_use_id
6996 INTO x_header_rec.ece_primary_address_id, v_addStatus, v_siteUseStatus,
6997 x_lines_rec.ship_to_site_use_id
6998 FROM hz_cust_acct_sites rad,
6999 hz_cust_site_uses_all rasu
7000 WHERE rad.cust_acct_site_id = rasu.cust_acct_site_id
7001 AND rasu.site_use_code = 'SHIP_TO'
7002 AND rasu.primary_flag = 'Y'
7003 AND rad.cust_account_id = x_header_rec.customer_id
7004 AND rad.status = 'A'
7005 AND rad.org_id = rasu.org_id;
7006 --
7007 IF (l_debug <> -1) THEN
7008 rlm_core_sv.dlog(C_DEBUG,'customer_id ',x_header_rec.customer_id);
7009 rlm_core_sv.dlog(C_DEBUG,'ece_primary_address_id ',
7010 x_header_rec.ece_primary_address_id);
7011 END IF;
7012 --}
7013 END IF;
7014 --
7015 x_lines_rec.ship_to_address_id := x_header_rec.ece_primary_address_id;
7016 --
7017 IF (l_debug <> -1) THEN
7018 rlm_core_sv.dlog(C_DEBUG, 'Using ECE primary address as ship-to');
7019 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ',
7020 x_lines_rec.ship_to_address_id);
7021 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
7022 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
7023 END IF;
7024 --}
7025 END IF;
7026 --
7027 IF v_addStatus = 'I' THEN
7028 raise e_InactiveShipTo;
7029 END IF;
7030 --
7031 IF v_siteUseStatus = 'I' THEN
7032 RAISE e_InactiveShipSiteUse;
7033 END IF;
7034 --
7035 --}
7036 ELSE --ship_to_address_id is not null
7037 --{
7038 /* check if the address_id is inactive */
7039 BEGIN
7040 --
7041 --Bugfix 8672453 Start
7042 OPEN c_ShipToID;
7043 --
7044 FETCH c_ShipToID INTO v_addStatus, x_lines_rec.ship_to_customer_id, v_siteUseStatus,
7045 x_lines_rec.ship_to_site_use_id;
7046 --
7047 IF c_ShipToID%NOTFOUND THEN
7048 --
7049 IF (l_debug <> -1) THEN
7050 rlm_core_sv.dlog(C_DEBUG,'Invalid ShipTo Location');
7051 END IF;
7052 raise e_InvalidShipto;
7053 --
7054 END IF;
7055 --
7056 CLOSE c_ShipToID;
7057 --Bugfix 8672453 End
7058
7059 -- Following query is changed as per TCA obsolescence project.
7060 --
7061 IF (l_debug <> -1) THEN
7062 rlm_core_sv.dlog(C_DEBUG, 'ship-to customer id',
7063 x_lines_rec.ship_to_customer_id);
7064 rlm_core_sv.dlog(C_DEBUG, 'Ship To Site Use ID',
7065 x_lines_rec.ship_to_site_use_id);
7066 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
7067 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
7068 END IF;
7069 --
7070 IF v_addStatus = 'I' THEN
7071 raise e_InactiveShipTo;
7072 END IF;
7073 --
7074 IF v_siteUseStatus = 'I' THEN
7075 RAISE e_InactiveShipSiteUse;
7076 END IF;
7077 --
7078 IF (l_debug <> -1) THEN
7079 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.ship_to_customer_id', x_lines_rec.ship_to_customer_id);
7080 END IF;
7081 --
7082 IF NOT CustomerRelationship(x_header_rec.customer_id,
7083 x_lines_rec.ship_to_customer_id,
7084 x_header_rec.header_id,
7085 'SHIP_TO') THEN
7086 --
7087 IF (l_debug <> -1) THEN
7088 rlm_core_sv.dlog(C_DEBUG,'Invalid customer relationship');
7089 END IF;
7090 --
7091 raise e_InvalidShipToID;
7092 --
7093 END IF;
7094 --
7095 END;
7096 --}
7097 END IF;
7098 --
7099 x_lines_rec.ship_to_org_id := x_lines_rec.ship_to_site_use_id;
7100 --
7101 /*
7102 * R12 Perf Bug 4129291
7103 * This segment of code is not required any longer, since the check on status
7104 * of site use record has been included in queries above
7105 *
7106 BEGIN
7107 --{
7108 v_progress := '050';
7109 --
7110 -- Following query is changed as per TCA obsolescence project.
7111 SELECT site_use_id , status
7112 INTO x_lines_rec.ship_to_site_use_id, v_status
7113 FROM HZ_CUST_SITE_USES
7114 WHERE CUST_ACCT_SITE_ID = x_lines_rec.ship_to_address_id
7115 AND site_use_code = 'SHIP_TO';
7116 --
7117 x_lines_rec.ship_to_org_id := x_lines_rec.ship_to_site_use_id;
7118 --
7119 IF (l_debug <> -1) THEN
7120 rlm_core_sv.dlog(C_DEBUG,'site use id status ', v_status );
7121 rlm_core_sv.dlog(C_DEBUG,'ship_to_site_use_id ',
7122 x_lines_rec.ship_to_site_use_id);
7123 END IF;
7124 --
7125 IF v_status = 'I' THEN
7126 --
7127 raise e_InactiveShipSiteUse;
7128 --
7129 END IF;
7130 --
7131 EXCEPTION
7132 --
7133 WHEN NO_DATA_FOUND THEN
7134 raise e_ShipToSiteUseInv;
7135 --}
7136 END; */
7137 --}
7138 END IF;
7139 --
7140 IF (l_debug <> -1) THEN
7141 rlm_core_sv.dpop(C_SDEBUG);
7142 END IF;
7143 --
7144 EXCEPTION
7145 --
7146 WHEN NO_DATA_FOUND THEN
7147 --
7148 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7149 --
7150 rlm_message_sv.app_error(
7151 x_ExceptionLevel => rlm_message_sv.k_error_level,
7152 x_MessageName => 'RLM_SHIPTO_ID_NOT_DERIVED',
7153 x_InterfaceHeaderId => x_lines_rec.header_id,
7154 x_InterfaceLineId => x_lines_rec.line_id,
7155 x_token1=>'TP_LOCATION',
7156 x_value1=> nvl(x_lines_rec.cust_ship_to_ext,
7157 x_header_rec.ece_tp_location_code_ext),
7158 x_ValidationType => 'SHIP_TO');
7159 --
7160 IF (l_debug <> -1) THEN
7161 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7162 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_NOT_DERIVED');
7163 END IF;
7164 --
7165 WHEN e_ShipToSiteUseInv THEN
7166 --
7167 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7168 rlm_message_sv.app_error(
7169 x_ExceptionLevel => rlm_message_sv.k_error_level,
7170 x_MessageName => 'RLM_SHIPTO_SITEUSE',
7171 x_InterfaceHeaderId => x_lines_rec.header_id,
7172 x_InterfaceLineId => x_lines_rec.line_id,
7173 x_token1=>'SHIP_TO_EXT',
7174 x_value1=> nvl(x_lines_rec.cust_ship_to_ext,
7175 x_header_rec.ece_tp_location_code_ext),
7176 x_ValidationType => 'SHIP_TO');
7177 --
7178 IF (l_debug <> -1) THEN
7179 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7180 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_SITEUSE');
7181 END IF;
7182 --
7183 WHEN e_InvalidShipTo THEN
7184 --
7185 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7186 --
7187 rlm_message_sv.app_error(
7188 x_ExceptionLevel => rlm_message_sv.k_error_level,
7189 x_MessageName => 'RLM_SHIPTO_ID_NOT_DERIVED',
7190 x_InterfaceHeaderId => x_lines_rec.header_id,
7191 x_InterfaceLineId => x_lines_rec.line_id,
7192 x_token1=>'TP_LOCATION',
7193 x_value1=> nvl(x_lines_rec.cust_ship_to_ext,
7194 x_header_rec.ece_tp_location_code_ext),
7195 x_ValidationType => 'SHIP_TO');
7196 --
7197 IF (l_debug <> -1) THEN
7198 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7199 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_ID_NOT_DERIVED');
7200 END IF;
7201 --
7202 WHEN e_InvalidShipToID THEN
7203 --
7204 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7205 --
7206 IF (l_debug <> -1) THEN
7207 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7208 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIP_TO_ID_NOT_RELATED');
7209 END IF;
7210 --
7211 WHEN e_InactiveShipTo THEN
7212 --
7213 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7214 --
7215 rlm_message_sv.app_error(
7216 x_ExceptionLevel => rlm_message_sv.k_error_level,
7217 x_MessageName => 'RLM_SHIPTO_INACTIVE',
7218 x_InterfaceHeaderId => x_lines_rec.header_id,
7219 x_InterfaceLineId => x_lines_rec.line_id,
7220 x_token1=>'TP_LOCATION',
7221 x_value1=> nvl(x_lines_rec.cust_ship_to_ext,
7222 x_header_rec.ece_tp_location_code_ext),
7223 x_ValidationType => 'SHIP_TO');
7224 --
7225 IF (l_debug <> -1) THEN
7226 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7227 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_INACTIVE');
7228 END IF;
7229 --
7230 WHEN e_InactiveShipSiteUse THEN
7231 --
7232 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7233 --
7234 rlm_message_sv.app_error(
7235 x_ExceptionLevel => rlm_message_sv.k_error_level,
7236 x_MessageName => 'RLM_SHIPTO_SITE_USE_INACTIVE',
7237 x_InterfaceHeaderId => x_lines_rec.header_id,
7238 x_InterfaceLineId => x_lines_rec.line_id,
7239 x_token1=>'TP_LOCATION',
7240 x_value1=>x_header_rec.ece_tp_location_code_ext,
7241 x_ValidationType => 'SHIP_TO');
7242 --
7243 IF (l_debug <> -1) THEN
7244 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7245 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_SITE_USE_INACTIVE');
7246 END IF;
7247 --
7248 WHEN e_InvalidCustomerId THEN
7249 --
7250 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7251 --
7252 rlm_message_sv.app_error(
7253 x_ExceptionLevel => rlm_message_sv.k_error_level,
7254 x_MessageName => 'RLM_INVALID_CUSTOMER',
7255 x_InterfaceHeaderId => x_lines_rec.header_id,
7256 x_InterfaceLineId => x_lines_rec.line_id,
7257 x_token1=>'TP_LOCATION',
7258 x_value1=>x_header_rec.ece_tp_location_code_ext,
7259 x_ValidationType => 'SHIP_TO');
7260 --
7261 IF (l_debug <> -1) THEN
7262 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7263 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_INVALID_CUSTOMER');
7264 END IF;
7265 --
7266 WHEN OTHERS THEN
7267 --
7268 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7269 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveShipToID',
7270 v_Progress);
7271 --
7272 IF (l_debug <> -1) THEN
7273 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
7274 END IF;
7275 raise;
7276 --
7277 END DeriveShipToID;
7278
7279 /*====================================================================
7280
7281 PROCEDURE validateWithCumRec
7282
7283 ====================================================================*/
7284 PROCEDURE validateWithCumRec(
7285 x_cum_key_record IN rlm_cum_sv.cum_key_attrib_rec_type,
7286 x_group_rec IN t_group_rec,
7287 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7288 IS
7289
7290 e_CumRecYearMissing EXCEPTION;
7291 e_CumKeyPOMissing EXCEPTION;
7292 e_NoCumRec EXCEPTION; -- 4307505
7293 v_cum_key_record rlm_cum_sv.cum_key_attrib_rec_type;
7294 v_cum_record RLM_CUM_SV.cum_rec_type; -- 4307505
7295
7296 BEGIN
7297 --
7298 IF (l_debug <> -1) THEN
7299 rlm_core_sv.dpush(C_SDEBUG,'validateWithCumRec');
7300 END IF;
7301 --
7302 IF (x_lines_rec.cust_po_number IS NULL) AND
7303 x_Group_rec.setup_terms_rec.CUM_CONTROL_CODE IN
7304 ('CUM_BY_PO_ONLY','CUM_BY_DATE_PO') THEN
7305 --
7306 raise e_CumKeyPOMissing;
7307 --
7308 END IF;
7309 --
7310 IF (x_lines_rec.industry_attribute1 IS NULL) AND
7311 x_Group_rec.setup_terms_rec.CUM_CONTROL_CODE = 'CUM_BY_DATE_RECORD_YEAR'
7312 THEN
7313 --
7314 raise e_CumRecYearMissing;
7315 --
7316 END IF;
7317 --
7318 -- 4307505 [ done only if the Intrasit calc basis is customer cum
7319 IF (x_Group_rec.setup_terms_rec.intransit_calc_basis = 'CUSTOMER_CUM' ) THEN
7320 --{ it.basis cust.cum
7321 --
7322 v_cum_record.cum_key_id := NULL;
7323 v_cum_key_record := x_cum_key_record;
7324 --
7325 IF (l_debug <> -1) THEN
7326 rlm_core_sv.dlog(C_DEBUG,'customer_item_id',
7327 v_cum_key_record.customer_item_id);
7328 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id',
7329 v_cum_key_record.ship_from_org_id);
7330 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id',
7331 v_cum_key_record.ship_to_address_id);
7332 END IF;
7333 --
7334 v_cum_key_record.create_cum_key_flag := 'N';
7335 RLM_TPA_SV.CalculateCUMKey(v_cum_key_record, v_cum_record);
7336 --
7337 IF v_cum_record.cum_key_id IS NULL THEN
7338 --
7339 IF (l_debug <> -1) THEN
7340 rlm_core_sv.dlog(C_DEBUG,'error: rlm_nocum_rec');
7341 END IF;
7342 --
7343 raise e_NoCumRec;
7344 --
7345 END IF;
7346 --
7347 END IF;
7348 -- } end.if. it.basis cust.cum
7349 --
7350 IF (l_debug <> -1) THEN
7351 rlm_core_sv.dpop(C_SDEBUG,'validateWithCumRec');
7352 END IF;
7353 --
7354 EXCEPTION
7355 WHEN e_CumRecYearMissing THEN
7356 --
7357 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7358 rlm_message_sv.app_error(
7359 x_ExceptionLevel => rlm_message_sv.k_error_level,
7360 x_MessageName => 'RLM_CUM_RECORD_YEAR_MISSING',
7361 x_InterfaceHeaderId => x_lines_rec.header_id,
7362 x_InterfaceLineId => x_lines_rec.line_id,
7363 x_ValidationType => 'CUM_KEY_PO');
7364 --
7365 IF (l_debug <> -1) THEN
7366 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUM_RECORD_YEAR_MISSING');
7367 END IF;
7368 --
7369 WHEN e_CumKeyPOMissing THEN
7370 --
7371 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7372 rlm_message_sv.app_error(
7373 x_ExceptionLevel => rlm_message_sv.k_error_level,
7374 x_MessageName => 'RLM_CUM_KEY_PO_MISSING',
7375 x_InterfaceHeaderId => x_lines_rec.header_id,
7376 x_InterfaceLineId => x_lines_rec.line_id,
7377 x_ValidationType => 'CUM_KEY_PO');
7378 --
7379 IF (l_debug <> -1) THEN
7380 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUM_KEY_PO_MISSING');
7381 END IF;
7382 --
7383 -- 4307505
7384 WHEN e_NoCumRec THEN
7385 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7386 rlm_message_sv.app_error(
7387 x_ExceptionLevel => rlm_message_sv.k_error_level,
7388 x_MessageName => 'RLM_NOACT_CUMKEY_CSTCUM_INTRST',
7389 x_InterfaceHeaderId => x_lines_rec.header_id,
7390 x_InterfaceLineId => x_lines_rec.line_id,
7391 x_Token1 => 'SHIP_TO',
7392 x_Value1 =>
7393 rlm_core_sv.get_ship_to(x_lines_rec.ship_to_address_id),
7394 x_Token2 => 'CITEM',
7395 x_Value2 =>
7396 rlm_core_sv.get_item_number(x_lines_rec.customer_item_id));
7397 --
7398 IF (l_debug <> -1) THEN
7399 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_NOACT_CUMKEY_CSTCUM_INTRST');
7400 END IF;
7401 --
7402 END validateWithCumRec;
7403
7404 /*===============================================================
7405
7406 PROCEDURE validateWithoutCumRec
7407
7408 ===============================================================*/
7409
7410 PROCEDURE validateWithoutCumRec(
7411 x_customer_id IN NUMBER,
7412 x_group_rec IN t_group_rec,
7413 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7414
7415 IS
7416
7417 v_cum_record RLM_CUM_SV.cum_rec_type;
7418 v_cum_key_record rlm_cum_sv.cum_key_attrib_rec_type;
7419 e_NoCumRec EXCEPTION;
7420 e_NoPoCumRec EXCEPTION;
7421
7422 BEGIN
7423 --
7424 IF (l_debug <> -1) THEN
7425 rlm_core_sv.dpush(C_SDEBUG,'validateWithoutCumRec');
7426 END IF;
7427 --
7428 IF x_Group_rec.setup_terms_rec.cum_control_code = 'CUM_BY_PO_ONLY' THEN
7429 --bug 4307505
7430 rlm_message_sv.app_error(
7431 x_ExceptionLevel => rlm_message_sv.k_warn_level,
7432 x_MessageName => 'RLM_CUMPO_STUP_NO_RECORD',
7433 x_InterfaceHeaderId => x_lines_rec.header_id,
7434 x_InterfaceLineId => x_lines_rec.line_id);
7435 --
7436 END IF;
7437 --
7438 --give a warning
7439 --
7440 IF (l_debug <> -1) THEN
7441 rlm_core_sv.dlog(C_DEBUG,'warning: RLM_CUM_STUP_NO_RECORD');
7442 END IF;
7443 --
7444 rlm_message_sv.app_error(
7445 x_ExceptionLevel => rlm_message_sv.k_warn_level,
7446 x_MessageName => 'RLM_CUM_STUP_NO_RECORD',
7447 x_InterfaceHeaderId => x_lines_rec.header_id,
7448 x_InterfaceLineId => x_lines_rec.line_id);
7449 --
7450 v_cum_key_record.customer_id := x_customer_id;
7451 --
7452 v_cum_key_record.customer_item_id := x_lines_rec.customer_item_id;
7453 --
7454 v_cum_key_record.ship_from_org_id := x_lines_rec.ship_from_org_id;
7455 --
7456 v_cum_key_record.intrmd_ship_to_address_id :=
7457 x_lines_rec.intrmd_ship_to_id;
7458 --
7459 v_cum_key_record.ship_to_address_id := x_lines_rec.ship_to_address_id ;
7460 --
7461 v_cum_key_record.bill_to_address_id := x_lines_rec.bill_to_address_id ;
7462 --
7463 v_cum_key_record.purchase_order_number :=
7464 x_lines_rec.cust_po_number;
7465 --
7466 v_cum_key_record.cust_record_year := x_lines_rec.industry_attribute1;
7467 --
7468 IF (l_debug <> -1) THEN
7469 rlm_core_sv.dlog(C_DEBUG,'customer_item_id',
7470 v_cum_key_record.customer_item_id);
7471 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id',
7472 v_cum_key_record.ship_from_org_id);
7473 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id',
7474 v_cum_key_record.ship_to_address_id);
7475 END IF;
7476 --
7477 v_cum_record.cum_key_id := NULL;
7478 v_cum_record.msg_name := NULL;
7479 --
7480 rlm_cum_sv.GetLatestCum(v_cum_key_record,
7481 x_Group_rec.setup_terms_rec,
7482 v_cum_record,
7483 rlm_cum_sv.k_CalledByVD);
7484 --
7485 IF v_cum_record.cum_key_id IS NULL THEN
7486 --
7487 IF (l_debug <> -1) THEN
7488 rlm_core_sv.dlog(C_DEBUG,'error: rlm_nocum_rec');
7489 END IF;
7490 --
7491 raise e_NoCumRec;
7492 --
7493 ELSE
7494 --
7495 IF v_cum_record.msg_name = 'RLM_CUM_START_FUTURE' THEN
7496 --
7497 rlm_message_sv.app_error(
7498 x_ExceptionLevel => rlm_message_sv.k_warn_level,
7499 x_MessageName => 'RLM_CUM_START_FUTURE',
7500 x_InterfaceHeaderId => x_lines_rec.header_id,
7501 x_InterfaceLineId => x_lines_rec.line_id,
7502 x_token1=>'ITEM',
7503 x_value1=>
7504 rlm_core_sv.get_item_number(x_lines_rec.customer_item_id),
7505 x_token2=>'SDATE',
7506 x_value2=>v_cum_record.cum_start_date);
7507 --
7508 END IF;
7509 --
7510 END IF;
7511 --
7512 IF (l_debug <> -1) THEN
7513 rlm_core_sv.dpop(C_SDEBUG,'validateWithoutCumRec');
7514 END IF;
7515 --
7516 EXCEPTION
7517
7518 WHEN e_NoCumRec THEN
7519 --
7520 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7521 rlm_message_sv.app_error(
7522 x_ExceptionLevel => rlm_message_sv.k_error_level,
7523 x_MessageName => 'RLM_NO_ACTIVE_CUM',
7524 x_InterfaceHeaderId => x_lines_rec.header_id,
7525 x_InterfaceLineId => x_lines_rec.line_id);
7526 --
7527 IF (l_debug <> -1) THEN
7528 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_NO_ACTIVE_CUM');
7529 END IF;
7530 --
7531 END validateWithoutCumRec;
7532
7533
7534 /*===========================================================================
7535
7536 PROCEDURE NAME: CheckCUMKeyPO
7537
7538 ===========================================================================*/
7539
7540 PROCEDURE CheckCUMKeyPO(
7541 x_group_rec IN RLM_VALIDATEDEMAND_SV.t_group_rec,
7542 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
7543 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7544 IS
7545 --
7546 v_Progress VARCHAR2(3) := '010';
7547 x_Success NUMBER := 0;
7548 v_cum_record RLM_CUM_SV.cum_rec_type;
7549 v_exist VARCHAR2(30);
7550 v_cum_key_record rlm_cum_sv.cum_key_attrib_rec_type;
7551
7552 CURSOR c_cum
7553 IS
7554 SELECT nvl(customer_item_id, x_lines_rec.customer_item_id),
7555 nvl(inventory_item_id, x_lines_rec.inventory_item_id),
7556 nvl(ship_from_org_id, x_lines_rec.ship_from_org_id),
7557 nvl(intrmd_ship_to_id, x_lines_rec.intrmd_ship_to_id),
7558 nvl(ship_to_address_id, x_lines_rec.ship_to_address_id),
7559 nvl(bill_to_address_id, x_lines_rec.bill_to_address_id),
7560 cust_po_number ,
7561 start_date_time,
7562 industry_attribute1 -- cust_record_year
7563 FROM rlm_interface_lines
7564 WHERE header_id = x_header_rec.header_id
7565 AND schedule_item_num = x_group_rec.schedule_item_num
7566 AND item_detail_type = '4'
7567 AND item_detail_subtype = 'CUM';
7568
7569
7570 BEGIN
7571 --
7572 IF (l_debug <> -1) THEN
7573 rlm_core_sv.dpush(C_SDEBUG,'CheckCUMKeyPO');
7574 rlm_core_sv.dlog(C_DEBUG,'calc_cum_flag',
7575 x_Group_rec.setup_terms_rec.calc_cum_flag);
7576 rlm_core_sv.dlog(C_DEBUG,'intransit calc basis',x_Group_rec.setup_terms_rec.intransit_calc_basis);
7577 END IF;
7578 --
7579 IF rlm_message_sv.check_dependency('CUM_KEY_PO') THEN
7580 --
7581 IF x_Group_rec.setup_terms_rec.calc_cum_flag = 'Y' THEN
7582
7583 --calc_cum_flag = Y does not mean cum processing
7584 --find out if there are any cum info provided
7585 --
7586 IF NVL(x_Group_rec.setup_terms_rec.cum_control_code,'NO_CUM') IN
7587 ('CUM_BY_DATE_PO','CUM_BY_DATE_RECORD_YEAR'
7588 ,'CUM_BY_DATE_ONLY','CUM_BY_PO_ONLY')
7589 THEN --{
7590 --
7591 IF (l_debug <> -1) THEN
7592 rlm_core_sv.dlog(C_DEBUG,'schedule_item_num',
7593 x_group_rec.schedule_item_num );
7594 END IF;
7595 --
7596 v_Progress := 20;
7597 --
7598 --for each group find out if there is a cum info line (item detail
7599 -- type 4). If there are no cum line sent, verify that there is
7600 -- a cum_key defined
7601 --
7602 BEGIN
7603
7604 OPEN c_cum;
7605
7606 FETCH c_cum into
7607 v_cum_key_record.customer_item_id,
7608 v_cum_key_record.inventory_item_id,
7609 v_cum_key_record.ship_from_org_id,
7610 v_cum_key_record.intrmd_ship_to_address_id,
7611 v_cum_key_record.ship_to_address_id,
7612 v_cum_key_record.bill_to_address_id,
7613 v_cum_key_record.purchase_order_number,
7614 v_cum_key_record.cum_start_date,
7615 v_cum_key_record.cust_record_year;
7616
7617 IF c_cum%NOTFOUND THEN
7618 --
7619 raise no_data_found;
7620 --
7621 END IF;
7622
7623 -- 4307505 : passing customer id in addition
7624 v_cum_key_record.customer_id := x_header_rec.customer_id;
7625 validateWithCumRec( v_cum_key_record, x_group_rec , x_lines_rec );
7626 --
7627 EXCEPTION
7628 WHEN NO_DATA_FOUND THEN
7629 --
7630 validateWithoutCumRec(x_header_rec.customer_id,
7631 x_group_rec ,
7632 x_lines_rec);
7633 WHEN TOO_MANY_ROWS THEN
7634 --
7635 IF (l_debug <> -1) THEN
7636 rlm_core_sv.dlog(C_DEBUG,'error:RLM_MULTIPLE_ITM_CUM_DTL_FOUND') ;
7637 END IF;
7638 --
7639 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7640 rlm_message_sv.app_error(
7641 x_ExceptionLevel => rlm_message_sv.k_error_level,
7642 x_MessageName => 'RLM_MULTIPLE_ITM_CUM_DTL_FOUND',
7643 x_InterfaceHeaderId => x_lines_rec.header_id,
7644 x_InterfaceLineId => x_lines_rec.line_id,
7645 x_Token1 => 'SHIP_FROM',
7646 x_Value1 =>
7647 rlm_core_sv.get_ship_from(x_lines_rec.ship_from_org_id),
7648 x_Token2 => 'SHIP_TO',
7649 x_Value2 =>
7650 rlm_core_sv.get_ship_to(x_lines_rec.ship_to_address_id),
7651 x_Token3 => 'CITEM',
7652 x_Value3 =>
7653 rlm_core_sv.get_item_number(x_lines_rec.customer_item_id));
7654 --
7655 IF (l_debug <> -1) THEN
7656 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7657 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: e_TooManyRows');
7658 END IF;
7659 --
7660 END;
7661 --
7662 END IF;--}
7663 --
7664 END IF;
7665
7666 IF x_Group_rec.setup_terms_rec.intransit_calc_basis= 'CUSTOMER_CUM' THEN --
7667 BEGIN
7668 --
7669 IF c_cum%ISOPEN THEN
7670 --
7671 IF c_cum%NOTFOUND THEN
7672 --
7673 raise no_data_found;
7674 --
7675 END IF;
7676 --
7677 ELSE
7678 --
7679 OPEN c_cum;
7680 FETCH c_cum into
7681 v_cum_key_record.customer_item_id,
7682 v_cum_key_record.inventory_item_id,
7683 v_cum_key_record.ship_from_org_id,
7684 v_cum_key_record.intrmd_ship_to_address_id,
7685 v_cum_key_record.ship_to_address_id,
7686 v_cum_key_record.bill_to_address_id,
7687 v_cum_key_record.purchase_order_number,
7688 v_cum_key_record.cum_start_date,
7689 v_cum_key_record.cust_record_year;
7690
7691 IF c_cum%NOTFOUND THEN
7692 --
7693 raise no_data_found;
7694 --
7695 END IF;
7696 --
7697 END IF;
7698 --
7699 EXCEPTION
7700 --
7701 When NO_DATA_FOUND then
7702 --
7703 -- 4307505 : changed this from Error to Warning
7704 rlm_message_sv.app_error(
7705 x_ExceptionLevel => rlm_message_sv.k_warn_level, -- 4307505
7706 x_MessageName => 'RLM_NO_CUM_INTRST_CUST_CUM',
7707 x_InterfaceHeaderId => x_lines_rec.header_id,
7708 x_InterfaceLineId => x_lines_rec.line_id,
7709 x_Token1 => 'SHIP_TO',
7710 x_Value1 =>
7711 rlm_core_sv.get_ship_to(x_lines_rec.ship_to_address_id),
7712 x_Token2 => 'CITEM',
7713 x_Value2 =>
7714 rlm_core_sv.get_item_number(x_lines_rec.customer_item_id));
7715 --
7716 IF (l_debug <> -1) THEN
7717 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7718 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: No CUM Line for Intransit Basis Customer CUM');
7719 END IF;
7720 --
7721 END;
7722 --
7723 END IF;
7724 --
7725 END IF;
7726 --
7727 IF c_cum%ISOPEN THEN
7728 CLOSE c_cum; --bug 4570658
7729 END IF;
7730
7731 IF (l_debug <> -1) THEN
7732 rlm_core_sv.dpop(C_SDEBUG);
7733 END IF;
7734 --
7735 EXCEPTION
7736 --
7737 WHEN OTHERS THEN
7738 --
7739 IF c_cum%ISOPEN THEN
7740 CLOSE c_cum; --bug 4570658
7741 END IF;
7742
7743 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7744 rlm_message_sv.sql_error('rlm_validateDemand_sv.CheckCUMKeyPO', v_Progress);
7745 --
7746 IF (l_debug <> -1) THEN
7747 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7748 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
7749 END IF;
7750 --
7751 raise;
7752 --
7753 END CheckCUMKeyPO;
7754
7755
7756 /*===========================================================================
7757
7758 PROCEDURE NAME: ValidPlanningProdSeqNum
7759
7760 ===========================================================================*/
7761 PROCEDURE ValidPlanningProdSeqNum(
7762 x_setup_terms_rec IN rlm_setup_terms_sv.setup_terms_rec_typ,
7763 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
7764 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7765 IS
7766 v_Progress VARCHAR(3) := '010';
7767 e_ProdSeqMissing EXCEPTION;
7768 e_MatchProdSeq EXCEPTION;
7769
7770 BEGIN
7771 --
7772 IF (l_debug <> -1) THEN
7773 rlm_core_sv.dpush(C_SDEBUG,'ValidPlanningProdSeqNum');
7774 END IF;
7775 --
7776 IF rlm_message_sv.check_dependency('PROD_SEQ_NUM') THEN
7777 --
7778 IF (l_debug <> -1) THEN
7779 rlm_core_sv.dlog(C_DEBUG,'ScheduleType',x_header_rec.schedule_type);
7780 rlm_core_sv.dlog(C_DEBUG,'Planning_Prod_Seq',
7781 x_lines_rec.CUST_PRODUCTION_SEQ_NUM);
7782 END IF;
7783 --
7784 IF (x_header_rec.schedule_type = 'SEQUENCED') THEN
7785 --
7786 IF (x_lines_rec.CUST_PRODUCTION_SEQ_NUM IS NULL AND
7787 x_lines_rec.item_detail_type IN ('0', '1', '2', '6')) THEN
7788 --
7789 raise e_ProdSeqMissing;
7790 --
7791 ELSE
7792 --
7793 IF INSTR(x_setup_terms_rec.match_within_key,'$') = 0 THEN
7794 /* Mandatory to set match within in case of a sequenced schedule*/
7795 raise e_MatchProdSeq;
7796 END IF ;
7797 --
7798 END IF;
7799 --
7800 END IF;
7801 --
7802 END IF;
7803 --
7804 IF (l_debug <> -1) THEN
7805 rlm_core_sv.dpop(C_SDEBUG);
7806 END IF;
7807 --
7808 EXCEPTION
7809 --
7810 WHEN e_ProdSeqMissing THEN
7811 --
7812 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7813 --
7814 rlm_message_sv.app_error(
7815 x_ExceptionLevel => rlm_message_sv.k_error_level,
7816 x_MessageName => 'RLM_PLANNING_PROD_SEQ_MISSING',
7817 x_InterfaceHeaderId => x_lines_rec.header_id,
7818 x_InterfaceLineId => x_lines_rec.line_id,
7819 x_ValidationType => 'PROD_SEQ_NUM');
7820 --
7821 IF (l_debug <> -1) THEN
7822 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_PLANNING_PROD_SEQ_MISSING');
7823 END IF;
7824 --
7825 WHEN e_MatchProdSeq THEN
7826 --
7827 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7828 --
7829 rlm_message_sv.app_error(
7830 x_ExceptionLevel => rlm_message_sv.k_error_level,
7831 x_MessageName => 'RLM_MATCH_WITHIN_PLN_PROD_SEQ',
7832 x_InterfaceHeaderId => x_lines_rec.header_id,
7833 x_InterfaceLineId => x_lines_rec.line_id,
7834 x_ValidationType => 'PROD_SEQ_NUM');
7835 --
7836 IF (l_debug <> -1) THEN
7837 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_MATCH_WITHIN_PLN_PROD_SEQ');
7838 END IF;
7839 --
7840 WHEN OTHERS THEN
7841 --
7842 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7843 rlm_message_sv.sql_error('rlm_validateDemand_sv.ValidPlanningProdSeqNum',
7844 v_Progress);
7845 --
7846 IF (l_debug <> -1) THEN
7847 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
7848 END IF;
7849 --
7850 raise;
7851 --
7852 END ValidPlanningProdSeqNum;
7853
7854 /*===========================================================================
7855
7856 PROCEDURE NAME: ValidLineScheduleType
7857
7858 ===========================================================================*/
7859 PROCEDURE ValidLineScheduleType(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
7860 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7861 IS
7862 v_Progress VARCHAR(3) := '010';
7863 e_SchedTypeInv EXCEPTION;
7864
7865 BEGIN
7866 --
7867 IF (l_debug <> -1) THEN
7868 rlm_core_sv.dpush(C_SDEBUG,'ValidLineScheduleType');
7869 END IF;
7870 --
7871 IF rlm_message_sv.check_dependency('LINE_SCHEDULE_TYPE') THEN
7872 --
7873 IF (l_debug <> -1) THEN
7874 rlm_core_sv.dlog(C_DEBUG,'Schedule_Type',x_header_rec.Schedule_type );
7875 END IF;
7876 --
7877 IF x_lines_rec.Subline_Assigned_Id_Ext IS NOT NULL AND
7878 x_lines_rec.Subline_Config_Code_Ext IS NOT NULL AND
7879 x_lines_rec.Subline_Cust_Item_Ext IS NOT NULL AND
7880 x_lines_rec.Subline_Cust_Item_Id IS NOT NULL AND
7881 x_lines_rec.Subline_Model_Num_Ext IS NOT NULL AND
7882 x_lines_rec.Subline_Quantity IS NOT NULL AND
7883 x_lines_rec.Subline_UOM_CODE IS NOT NULL AND
7884 x_header_rec.Schedule_type <> 'SEQUENCED' THEN
7885 --
7886 raise e_SchedTypeInv;
7887 --
7888 END IF;
7889 --
7890 END IF;
7891 --
7892 IF (l_debug <> -1) THEN
7893 rlm_core_sv.dpop(C_SDEBUG);
7894 END IF;
7895 --
7896 EXCEPTION
7897 --
7898 WHEN e_SchedTypeInv THEN
7899 --
7900 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7901 rlm_message_sv.app_error(
7902 x_ExceptionLevel => rlm_message_sv.k_error_level,
7903 x_MessageName => 'RLM_LINE_SCHEDULE_TYPE_INVALID',
7904 x_InterfaceHeaderId => x_lines_rec.header_id,
7905 x_InterfaceLineId => x_lines_rec.line_id,
7906 x_token1=>'SCHEDULE_TYPE',
7907 x_value1=>x_header_rec.Schedule_type,
7908 x_ValidationType => 'LINE_SCHEDULE_TYPE');
7909 --
7910 IF (l_debug <> -1) THEN
7911 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_LINE_SCHEDULE_TYPE_INVALID');
7912 END IF;
7913 --
7914 WHEN OTHERS THEN
7915 --
7916 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7917 rlm_message_sv.sql_error('rlm_validateDemand_sv.ValidLineScheduleType: ',
7918 v_Progress);
7919 --
7920 IF (l_debug <> -1) THEN
7921 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
7922 END IF;
7923 --
7924 END ValidLineScheduleType;
7925
7926 /*===========================================================================
7927
7928 PROCEDURE NAME: UpdateInterfaceLines
7929
7930 ===========================================================================*/
7931 PROCEDURE UpdateInterfaceLines(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE)
7932 IS
7933 --
7934 v_Progress VARCHAR(3) := '010';
7935 IsGroupError BOOLEAN := FALSE;
7936 --
7937 header_id_tab g_number_tbl_type;
7938 line_id_tab g_number_tbl_type;
7939 AGREEMENT_ID_TAB AGREEMENT_ID_T;
7940 ATO_DATA_TYPE_TAB ATO_DATA_TYPE_T;
7941 BILL_TO_ADDRESS_1_EXT_TAB BILL_TO_ADDRESS_1_EXT_T;
7942 BILL_TO_ADDRESS_2_EXT_TAB BILL_TO_ADDRESS_2_EXT_T;
7943 BILL_TO_ADDRESS_3_EXT_TAB BILL_TO_ADDRESS_3_EXT_T;
7944 BILL_TO_ADDRESS_4_EXT_TAB BILL_TO_ADDRESS_4_EXT_T;
7945 BILL_TO_ADDRESS_ID_TAB BILL_TO_ADDRESS_ID_T;
7946 INVOICE_TO_ORG_ID_TAB INVOICE_TO_ORG_ID_T;
7947 BILL_TO_CITY_EXT_TAB BILL_TO_CITY_EXT_T;
7948 BILL_TO_COUNTRY_EXT_TAB BILL_TO_COUNTRY_EXT_T;
7949 BILL_TO_COUNTY_EXT_TAB BILL_TO_COUNTY_EXT_T;
7950 BILL_TO_NAME_EXT_TAB BILL_TO_NAME_EXT_T;
7951 BILL_TO_POSTAL_CD_EXT_TAB BILL_TO_POSTAL_CD_EXT_T;
7952 BILL_TO_PROVINCE_EXT_TAB BILL_TO_PROVINCE_EXT_T;
7953 BILL_TO_SITE_USE_ID_TAB BILL_TO_SITE_USE_ID_T;
7954 BILL_TO_STATE_EXT_TAB BILL_TO_STATE_EXT_T;
7955 CARRIER_ID_CODE_EXT_TAB CARRIER_ID_CODE_EXT_T;
7956 CARRIER_QUALIFIER_EXT_TAB CARRIER_QUALIFIER_EXT_T;
7957 COMMODITY_EXT_TAB COMMODITY_EXT_T;
7958 COUNTRY_OF_ORIGIN_EXT_TAB COUNTRY_OF_ORIGIN_EXT_T;
7959 CUST_ASSEMBLY_EXT_TAB CUST_ASSEMBLY_EXT_T;
7960 CUST_ASSIGNED_ID_EXT_TAB CUST_ASSIGNED_ID_EXT_T;
7961 CUST_BILL_TO_EXT_TAB CUST_BILL_TO_EXT_T;
7962 CUST_CONTRACT_NUM_EXT_TAB CUST_CONTRACT_NUM_EXT_T;
7963 CUSTOMER_DOCK_CODE_TAB CUSTOMER_DOCK_CODE_T;
7964 CUST_INTRMD_SHIP_TO_EXT_TAB CUST_INTRMD_SHIP_TO_EXT_T;
7965 CUST_ITEM_PRICE_EXT_TAB CUST_ITEM_PRICE_EXT_T;
7966 CUST_ITEM_PRICE_UOM_EXT_TAB CUST_ITEM_PRICE_UOM_EXT_T;
7967 CUSTOMER_ITEM_REVISION_TAB CUSTOMER_ITEM_REVISION_T;
7968 CUSTOMER_JOB_TAB CUSTOMER_JOB_T;
7969 CUST_MANUFACTURER_EXT_TAB CUST_MANUFACTURER_EXT_T;
7970 CUST_MODEL_NUMBER_EXT_TAB CUST_MODEL_NUMBER_EXT_T;
7971 CUST_MODEL_SERIAL_NUMBER_TAB CUST_MODEL_SERIAL_NUMBER_T;
7972 CUST_ORDER_NUM_EXT_TAB CUST_ORDER_NUM_EXT_T;
7973 CUST_PROCESS_NUM_EXT_TAB CUST_PROCESS_NUM_EXT_T;
7974 CUST_SET_NUM_EXT_TAB CUST_SET_NUM_EXT_T;
7975 CUST_SHIP_FROM_ORG_EXT_TAB CUST_SHIP_FROM_ORG_EXT_T;
7976 CUST_SHIP_TO_EXT_TAB CUST_SHIP_TO_EXT_T;
7977 CUST_UOM_EXT_TAB CUST_UOM_EXT_T;
7978 CUSTOMER_ITEM_EXT_TAB CUSTOMER_ITEM_EXT_T;
7979 CUSTOMER_ITEM_ID_TAB CUSTOMER_ITEM_ID_T;
7980 REQUEST_DATE_TAB REQUEST_DATE_T;
7981 SCHEDULE_DATE_TAB SCHEDULE_DATE_T;
7982 DATE_TYPE_CODE_TAB DATE_TYPE_CODE_T;
7983 DATE_TYPE_CODE_EXT_TAB DATE_TYPE_CODE_EXT_T;
7984 DELIVERY_LEAD_TIME_TAB DELIVERY_LEAD_TIME_T;
7985 END_DATE_TIME_TAB END_DATE_TIME_T;
7986 EQUIPMENT_CODE_EXT_TAB EQUIPMENT_CODE_EXT_T;
7987 EQUIPMENT_NUMBER_EXT_TAB EQUIPMENT_NUMBER_EXT_T;
7988 HANDLING_CODE_EXT_TAB HANDLING_CODE_EXT_T;
7989 HAZARD_CODE_EXT_TAB HAZARD_CODE_EXT_T;
7990 HAZARD_CODE_QUAL_EXT_TAB HAZARD_CODE_QUAL_EXT_T;
7991 HAZARD_DESCRIPTION_EXT_TAB HAZARD_DESCRIPTION_EXT_T;
7992 IMPORT_LICENSE_DATE_EXT_TAB IMPORT_LICENSE_DATE_EXT_T;
7993 IMPORT_LICENSE_EXT_TAB IMPORT_LICENSE_EXT_T;
7994 INDUSTRY_ATTRIBUTE1_TAB INDUSTRY_ATTRIBUTE1_T;
7995 INDUSTRY_ATTRIBUTE10_TAB INDUSTRY_ATTRIBUTE10_T;
7996 INDUSTRY_ATTRIBUTE11_TAB INDUSTRY_ATTRIBUTE11_T;
7997 INDUSTRY_ATTRIBUTE12_TAB INDUSTRY_ATTRIBUTE12_T;
7998 INDUSTRY_ATTRIBUTE13_TAB INDUSTRY_ATTRIBUTE13_T;
7999 INDUSTRY_ATTRIBUTE14_TAB INDUSTRY_ATTRIBUTE14_T;
8000 INDUSTRY_ATTRIBUTE15_TAB INDUSTRY_ATTRIBUTE15_T;
8001 INDUSTRY_ATTRIBUTE2_TAB INDUSTRY_ATTRIBUTE2_T;
8002 INDUSTRY_ATTRIBUTE3_TAB INDUSTRY_ATTRIBUTE3_T;
8003 INDUSTRY_ATTRIBUTE4_TAB INDUSTRY_ATTRIBUTE4_T;
8004 INDUSTRY_ATTRIBUTE5_TAB INDUSTRY_ATTRIBUTE5_T;
8005 INDUSTRY_ATTRIBUTE6_TAB INDUSTRY_ATTRIBUTE6_T;
8006 INDUSTRY_ATTRIBUTE7_TAB INDUSTRY_ATTRIBUTE7_T;
8007 INDUSTRY_ATTRIBUTE8_TAB INDUSTRY_ATTRIBUTE8_T;
8008 INDUSTRY_ATTRIBUTE9_TAB INDUSTRY_ATTRIBUTE9_T;
8009 INDUSTRY_CONTEXT_TAB INDUSTRY_CONTEXT_T;
8010 INTRMD_SHIP_TO_ID_TAB INTRMD_SHIP_TO_ID_T;
8011 SHIP_TO_ORG_ID_TAB SHIP_TO_ORG_ID_T;
8012 INTRMD_ST_ADDRESS_1_EXT_TAB INTRMD_ST_ADDRESS_1_EXT_T;
8013 INTRMD_ST_ADDRESS_2_EXT_TAB INTRMD_ST_ADDRESS_2_EXT_T;
8014 INTRMD_ST_ADDRESS_3_EXT_TAB INTRMD_ST_ADDRESS_3_EXT_T;
8015 INTRMD_ST_ADDRESS_4_EXT_TAB INTRMD_ST_ADDRESS_4_EXT_T;
8016 INTRMD_ST_CITY_EXT_TAB INTRMD_ST_CITY_EXT_T;
8017 INTRMD_ST_COUNTRY_EXT_TAB INTRMD_ST_COUNTRY_EXT_T;
8018 INTRMD_ST_COUNTY_EXT_TAB INTRMD_ST_COUNTY_EXT_T;
8019 INTRMD_ST_NAME_EXT_TAB INTRMD_ST_NAME_EXT_T;
8020 INTRMD_ST_POSTAL_CD_EXT_TAB INTRMD_ST_POSTAL_CD_EXT_T;
8021 INTRMD_ST_PROVINCE_EXT_TAB INTRMD_ST_PROVINCE_EXT_T;
8022 INTRMD_ST_STATE_EXT_TAB INTRMD_ST_STATE_EXT_T;
8023 INTRMD_ST_SITE_USE_ID_TAB INTRMD_ST_SITE_USE_ID_T;
8024 INVENTORY_ITEM_ID_TAB INVENTORY_ITEM_ID_T;
8025 INVENTORY_ITEM_SEGMENT1_TAB INVENTORY_ITEM_SEGMENT1_T;
8026 INVENTORY_ITEM_SEGMENT10_TAB INVENTORY_ITEM_SEGMENT10_T;
8027 INVENTORY_ITEM_SEGMENT11_TAB INVENTORY_ITEM_SEGMENT11_T;
8028 INVENTORY_ITEM_SEGMENT12_TAB INVENTORY_ITEM_SEGMENT12_T;
8029 INVENTORY_ITEM_SEGMENT13_TAB INVENTORY_ITEM_SEGMENT13_T;
8030 INVENTORY_ITEM_SEGMENT14_TAB INVENTORY_ITEM_SEGMENT14_T;
8031 INVENTORY_ITEM_SEGMENT15_TAB INVENTORY_ITEM_SEGMENT15_T;
8032 INVENTORY_ITEM_SEGMENT16_TAB INVENTORY_ITEM_SEGMENT16_T;
8033 INVENTORY_ITEM_SEGMENT17_TAB INVENTORY_ITEM_SEGMENT17_T;
8034 INVENTORY_ITEM_SEGMENT18_TAB INVENTORY_ITEM_SEGMENT18_T;
8035 INVENTORY_ITEM_SEGMENT19_TAB INVENTORY_ITEM_SEGMENT19_T;
8036 INVENTORY_ITEM_SEGMENT2_TAB INVENTORY_ITEM_SEGMENT2_T;
8037 INVENTORY_ITEM_SEGMENT20_TAB INVENTORY_ITEM_SEGMENT20_T;
8038 INVENTORY_ITEM_SEGMENT3_TAB INVENTORY_ITEM_SEGMENT3_T;
8039 INVENTORY_ITEM_SEGMENT4_TAB INVENTORY_ITEM_SEGMENT4_T;
8040 INVENTORY_ITEM_SEGMENT5_TAB INVENTORY_ITEM_SEGMENT5_T;
8041 INVENTORY_ITEM_SEGMENT6_TAB INVENTORY_ITEM_SEGMENT6_T;
8042 INVENTORY_ITEM_SEGMENT7_TAB INVENTORY_ITEM_SEGMENT7_T;
8043 INVENTORY_ITEM_SEGMENT8_TAB INVENTORY_ITEM_SEGMENT8_T;
8044 INVENTORY_ITEM_SEGMENT9_TAB INVENTORY_ITEM_SEGMENT9_T;
8045 ITEM_CONTACT_CODE_1_TAB ITEM_CONTACT_CODE_1_T;
8046 ITEM_CONTACT_CODE_2_TAB ITEM_CONTACT_CODE_2_T;
8047 ITEM_CONTACT_VALUE_1_TAB ITEM_CONTACT_VALUE_1_T;
8048 ITEM_CONTACT_VALUE_2_TAB ITEM_CONTACT_VALUE_2_T;
8049 ITEM_DESCRIPTION_EXT_TAB ITEM_DESCRIPTION_EXT_T;
8050 ITEM_DETAIL_QUANTITY_TAB ITEM_DETAIL_QUANTITY_T;
8051 ITEM_DETAIL_REF_CODE_1_TAB ITEM_DETAIL_REF_CODE_1_T;
8052 ITEM_DETAIL_REF_CODE_2_TAB ITEM_DETAIL_REF_CODE_2_T;
8053 ITEM_DETAIL_REF_CODE_3_TAB ITEM_DETAIL_REF_CODE_3_T;
8054 ITEM_DETAIL_REF_VALUE_1_TAB ITEM_DETAIL_REF_VALUE_1_T;
8055 ITEM_DETAIL_REF_VALUE_2_TAB ITEM_DETAIL_REF_VALUE_2_T;
8056 ITEM_DETAIL_REF_VALUE_3_TAB ITEM_DETAIL_REF_VALUE_3_T;
8057 ITEM_DETAIL_SUBTYPE_TAB ITEM_DETAIL_SUBTYPE_T;
8058 ITEM_DETAIL_SUBTYPE_EXT_TAB ITEM_DETAIL_SUBTYPE_EXT_T;
8059 ITEM_DETAIL_TYPE_TAB ITEM_DETAIL_TYPE_T;
8060 ITEM_DETAIL_TYPE_EXT_TAB ITEM_DETAIL_TYPE_EXT_T;
8061 ITEM_ENG_CNG_LVL_EXT_TAB ITEM_ENG_CNG_LVL_EXT_T;
8062 ITEM_MEASUREMENTS_EXT_TAB ITEM_MEASUREMENTS_EXT_T;
8063 ITEM_NOTE_TEXT_TAB ITEM_NOTE_TEXT_T;
8064 ITEM_REF_CODE_1_TAB ITEM_REF_CODE_1_T;
8065 ITEM_REF_CODE_2_TAB ITEM_REF_CODE_2_T;
8066 ITEM_REF_CODE_3_TAB ITEM_REF_CODE_3_T;
8067 ITEM_REF_VALUE_1_TAB ITEM_REF_VALUE_1_T;
8068 ITEM_REF_VALUE_2_TAB ITEM_REF_VALUE_2_T;
8069 ITEM_REF_VALUE_3_TAB ITEM_REF_VALUE_3_T;
8070 ITEM_RELEASE_STATUS_EXT_TAB ITEM_RELEASE_STATUS_EXT_T;
8071 LADING_QUANTITY_EXT_TAB LADING_QUANTITY_EXT_T;
8072 LETTER_CREDIT_EXPDT_EXT_TAB LETTER_CREDIT_EXPDT_EXT_T;
8073 LETTER_CREDIT_EXT_TAB LETTER_CREDIT_EXT_T;
8074 LINE_REFERENCE_TAB LINE_REFERENCE_T;
8075 LINK_TO_LINE_REF_TAB LINK_TO_LINE_REF_T;
8076 ORDER_HEADER_ID_TAB ORDER_HEADER_ID_T;
8077 OTHER_NAME_CODE_1_TAB OTHER_NAME_CODE_1_T;
8078 OTHER_NAME_CODE_2_TAB OTHER_NAME_CODE_2_T;
8079 OTHER_NAME_VALUE_1_TAB OTHER_NAME_VALUE_1_T;
8080 OTHER_NAME_VALUE_2_TAB OTHER_NAME_VALUE_2_T;
8081 PACK_SIZE_EXT_TAB PACK_SIZE_EXT_T;
8082 PACK_UNITS_PER_PACK_EXT_TAB PACK_UNITS_PER_PACK_EXT_T;
8083 PACK_UOM_CODE_EXT_TAB PACK_UOM_CODE_EXT_T;
8084 PACKAGING_CODE_EXT_TAB PACKAGING_CODE_EXT_T;
8085 PARENT_LINK_LINE_REF_TAB PARENT_LINK_LINE_REF_T;
8086 CUST_PRODUCTION_SEQ_NUM_TAB CUST_PRODUCTION_SEQ_NUM_T;
8087 PRICE_LIST_ID_TAB PRICE_LIST_ID_T;
8088 PRIMARY_QUANTITY_TAB PRIMARY_QUANTITY_T;
8089 PRIMARY_UOM_CODE_TAB PRIMARY_UOM_CODE_T;
8090 PRIME_CONTRCTR_PART_EXT_TAB PRIME_CONTRCTR_PART_EXT_T;
8091 PROCESS_STATUS_TAB PROCESS_STATUS_T;
8092 CUST_PO_RELEASE_NUM_TAB CUST_PO_RELEASE_NUM_T;
8093 CUST_PO_DATE_TAB CUST_PO_DATE_T;
8094 CUST_PO_LINE_NUM_TAB CUST_PO_LINE_NUM_T;
8095 CUST_PO_NUMBER_TAB CUST_PO_NUMBER_T;
8096 QTY_TYPE_CODE_TAB QTY_TYPE_CODE_T;
8097 QTY_TYPE_CODE_EXT_TAB QTY_TYPE_CODE_EXT_T;
8098 RETURN_CONTAINER_EXT_TAB RETURN_CONTAINER_EXT_T;
8099 SCHEDULE_LINE_ID_TAB SCHEDULE_LINE_ID_T;
8100 ROUTING_DESC_EXT_TAB ROUTING_DESC_EXT_T;
8101 ROUTING_SEQ_CODE_EXT_TAB ROUTING_SEQ_CODE_EXT_T;
8102 SCHEDULE_ITEM_NUM_TAB SCHEDULE_ITEM_NUM_T;
8103 SHIP_DEL_PATTERN_EXT_TAB SHIP_DEL_PATTERN_EXT_T;
8104 SHIP_DEL_TIME_CODE_EXT_TAB SHIP_DEL_TIME_CODE_EXT_T;
8105 SHIP_DEL_RULE_NAME_TAB SHIP_DEL_RULE_NAME_T;
8106 SHIP_FROM_ADDRESS_1_EXT_TAB SHIP_FROM_ADDRESS_1_EXT_T;
8107 SHIP_FROM_ADDRESS_2_EXT_TAB SHIP_FROM_ADDRESS_2_EXT_T;
8108 SHIP_FROM_ADDRESS_3_EXT_TAB SHIP_FROM_ADDRESS_3_EXT_T;
8109 SHIP_FROM_ADDRESS_4_EXT_TAB SHIP_FROM_ADDRESS_4_EXT_T;
8110 SHIP_FROM_CITY_EXT_TAB SHIP_FROM_CITY_EXT_T;
8111 SHIP_FROM_COUNTRY_EXT_TAB SHIP_FROM_COUNTRY_EXT_T;
8112 SHIP_FROM_COUNTY_EXT_TAB SHIP_FROM_COUNTY_EXT_T;
8113 SHIP_FROM_NAME_EXT_TAB SHIP_FROM_NAME_EXT_T;
8114 SHIP_FROM_ORG_ID_TAB SHIP_FROM_ORG_ID_T;
8115 SHIP_FROM_POSTAL_CD_EXT_TAB SHIP_FROM_POSTAL_CD_EXT_T;
8116 SHIP_FROM_PROVINCE_EXT_TAB SHIP_FROM_PROVINCE_EXT_T;
8117 SHIP_FROM_STATE_EXT_TAB SHIP_FROM_STATE_EXT_T;
8118 SHIP_LABEL_INFO_LINE_1_TAB SHIP_LABEL_INFO_LINE_1_T;
8119 SHIP_LABEL_INFO_LINE_10_TAB SHIP_LABEL_INFO_LINE_10_T;
8120 SHIP_LABEL_INFO_LINE_2_TAB SHIP_LABEL_INFO_LINE_2_T;
8121 SHIP_LABEL_INFO_LINE_3_TAB SHIP_LABEL_INFO_LINE_3_T;
8122 SHIP_LABEL_INFO_LINE_4_TAB SHIP_LABEL_INFO_LINE_4_T;
8123 SHIP_LABEL_INFO_LINE_5_TAB SHIP_LABEL_INFO_LINE_5_T;
8124 SHIP_LABEL_INFO_LINE_6_TAB SHIP_LABEL_INFO_LINE_6_T;
8125 SHIP_LABEL_INFO_LINE_7_TAB SHIP_LABEL_INFO_LINE_7_T;
8126 SHIP_LABEL_INFO_LINE_8_TAB SHIP_LABEL_INFO_LINE_8_T;
8127 SHIP_LABEL_INFO_LINE_9_TAB SHIP_LABEL_INFO_LINE_9_T;
8128 SHIP_TO_ADDRESS_1_EXT_TAB SHIP_TO_ADDRESS_1_EXT_T;
8129 SHIP_TO_ADDRESS_2_EXT_TAB SHIP_TO_ADDRESS_2_EXT_T;
8130 SHIP_TO_ADDRESS_3_EXT_TAB SHIP_TO_ADDRESS_3_EXT_T;
8131 SHIP_TO_ADDRESS_4_EXT_TAB SHIP_TO_ADDRESS_4_EXT_T;
8132 SHIP_TO_ADDRESS_ID_TAB SHIP_TO_ADDRESS_ID_T;
8133 DELIVER_TO_ORG_ID_TAB DELIVER_TO_ORG_ID_T;
8134 SHIP_TO_CITY_EXT_TAB SHIP_TO_CITY_EXT_T;
8135 SHIP_TO_COUNTRY_EXT_TAB SHIP_TO_COUNTRY_EXT_T;
8136 SHIP_TO_COUNTY_EXT_TAB SHIP_TO_COUNTY_EXT_T;
8137 SHIP_TO_NAME_EXT_TAB SHIP_TO_NAME_EXT_T;
8138 SHIP_TO_POSTAL_CD_EXT_TAB SHIP_TO_POSTAL_CD_EXT_T;
8139 SHIP_TO_PROVINCE_EXT_TAB SHIP_TO_PROVINCE_EXT_T;
8140 SHIP_TO_SITE_USE_ID_TAB SHIP_TO_SITE_USE_ID_T;
8141 SHIP_TO_STATE_EXT_TAB SHIP_TO_STATE_EXT_T;
8142 START_DATE_TIME_TAB START_DATE_TIME_T;
8143 SUBLINE_ASSIGNED_ID_EXT_TAB SUBLINE_ASSIGNED_ID_EXT_T;
8144 SUBLINE_CONFIG_CODE_EXT_TAB SUBLINE_CONFIG_CODE_EXT_T;
8145 SUBLINE_CUST_ITEM_EXT_TAB SUBLINE_CUST_ITEM_EXT_T;
8146 SUBLINE_CUST_ITEM_ID_TAB SUBLINE_CUST_ITEM_ID_T;
8147 SUBLINE_MODEL_NUM_EXT_TAB SUBLINE_MODEL_NUM_EXT_T;
8148 SUBLINE_QUANTITY_TAB SUBLINE_QUANTITY_T;
8149 SUBLINE_UOM_CODE_TAB SUBLINE_UOM_CODE_T;
8150 SUPPLIER_ITEM_EXT_TAB SUPPLIER_ITEM_EXT_T;
8151 TRANSIT_TIME_EXT_TAB TRANSIT_TIME_EXT_T;
8152 TRANSIT_TIME_QUAL_EXT_TAB TRANSIT_TIME_QUAL_EXT_T;
8153 TRANSPORT_LOC_QUAL_EXT_TAB TRANSPORT_LOC_QUAL_EXT_T;
8154 TRANSPORT_LOCATION_EXT_TAB TRANSPORT_LOCATION_EXT_T;
8155 TRANSPORT_METHOD_EXT_TAB TRANSPORT_METHOD_EXT_T;
8156 UOM_CODE_TAB UOM_CODE_T;
8157 WEIGHT_EXT_TAB WEIGHT_EXT_T;
8158 WEIGHT_QUALIFIER_EXT_TAB WEIGHT_QUALIFIER_EXT_T;
8159 WEIGHT_UOM_EXT_TAB WEIGHT_UOM_EXT_T;
8160 FBO_CONFIGURATION_KEY_1_TAB FBO_CONFIGURATION_KEY_1_T;
8161 FBO_CONFIGURATION_KEY_2_TAB FBO_CONFIGURATION_KEY_2_T;
8162 FBO_CONFIGURATION_KEY_3_TAB FBO_CONFIGURATION_KEY_3_T;
8163 FBO_CONFIGURATION_KEY_4_TAB FBO_CONFIGURATION_KEY_4_T;
8164 FBO_CONFIGURATION_KEY_5_TAB FBO_CONFIGURATION_KEY_5_T;
8165 MATCH_KEY_ACROSS_TAB MATCH_KEY_ACROSS_T;
8166 MATCH_KEY_WITHIN_TAB MATCH_KEY_WITHIN_T;
8167 CRITICAL_KEY_ATTRIBUTES_TAB CRITICAL_KEY_ATTRIBUTES_T;
8168 ATTRIBUTE_CATEGORY_TAB ATTRIBUTE_CATEGORY_T;
8169 ATTRIBUTE1_TAB ATTRIBUTE1_T;
8170 ATTRIBUTE2_TAB ATTRIBUTE2_T;
8171 ATTRIBUTE3_TAB ATTRIBUTE3_T;
8172 ATTRIBUTE4_TAB ATTRIBUTE4_T;
8173 ATTRIBUTE5_TAB ATTRIBUTE5_T;
8174 ATTRIBUTE6_TAB ATTRIBUTE6_T;
8175 ATTRIBUTE7_TAB ATTRIBUTE7_T;
8176 ATTRIBUTE8_TAB ATTRIBUTE8_T;
8177 ATTRIBUTE9_TAB ATTRIBUTE9_T;
8178 ATTRIBUTE10_TAB ATTRIBUTE10_T;
8179 ATTRIBUTE11_TAB ATTRIBUTE11_T;
8180 ATTRIBUTE12_TAB ATTRIBUTE12_T;
8181 ATTRIBUTE13_TAB ATTRIBUTE13_T;
8182 ATTRIBUTE14_TAB ATTRIBUTE14_T;
8183 ATTRIBUTE15_TAB ATTRIBUTE15_T;
8184 BLANKET_NUMBER_TAB BLANKET_NUMBER_T;
8185 INTMED_SHIP_TO_ORG_ID_TAB INTMED_SHIP_TO_ORG_ID_T;
8186 SHIP_TO_CUSTOMER_ID_TAB SHIP_TO_CUSTOMER_ID_T;
8187 --
8188 v_last_update_date DATE := sysdate;
8189 v_last_updated_by NUMBER := fnd_global.user_id;
8190 v_last_update_login NUMBER := fnd_global.login_id;
8191 v_request_id NUMBER := fnd_global.conc_REQUEST_ID;
8192 v_program_application_id NUMBER := fnd_global.PROG_APPL_ID;
8193 v_program_id NUMBER := fnd_global.conc_program_id;
8194 v_program_update_date DATE := sysdate;
8195 --
8196 BEGIN
8197 --
8198 IF (l_debug <> -1) THEN
8199 rlm_core_sv.dpush(C_SDEBUG,'UpdateInterfaceLines');
8200 rlm_core_sv.dlog(C_DEBUG,'Number of Interface lines in g_lines_tab ',g_lines_tab.COUNT);
8201 END IF;
8202 --
8203 g_line_PS := rlm_core_sv.k_PS_AVAILABLE;
8204
8205 FOR i IN 1..g_lines_tab.COUNT LOOP
8206 --
8207 IF g_lines_tab(i).process_status = rlm_core_sv.k_PS_AVAILABLE THEN
8208 --
8209 IF (l_debug <> -1) THEN
8210 rlm_core_sv.dlog(C_DEBUG,'line_id',g_lines_tab(i).line_id);
8211 rlm_core_sv.dlog(C_DEBUG,'Process Status AVAILABLE ');
8212 END IF;
8213 --
8214 ELSIF g_lines_tab(i).process_status = rlm_core_sv.k_PS_ERROR THEN
8215 --
8216 g_line_PS := rlm_core_sv.k_PS_ERROR;
8217 IsGroupError := TRUE;
8218 --
8219 IF (l_debug <> -1) THEN
8220 rlm_core_sv.dlog(C_DEBUG,'line_id',g_lines_tab(i).line_id);
8221 rlm_core_sv.dlog(C_DEBUG,'Process Status ERROR ');
8222 END IF;
8223 --
8224 END IF;
8225 --
8226 IF (l_debug <> -1) THEN
8227 rlm_core_sv.dlog(C_DEBUG,'customer_item_id ',
8228 g_lines_tab(i).customer_item_id);
8229 END IF;
8230 --
8231 -- assign values for industry attribute fields
8232 --
8233 g_lines_tab(i).industry_attribute2 := to_char(g_lines_tab(i).start_date_time,'RRRR/MM/DD HH24:MI:SS');
8234 g_lines_tab(i).industry_attribute3 := g_header_rec.schedule_reference_num;
8235 g_lines_tab(i).industry_attribute15 := g_lines_tab(i).ship_from_org_id;
8236 --
8237 --assign tables to values
8238 header_id_tab(i) := g_lines_tab(i).header_id;
8239 line_id_tab(i) := g_lines_tab(i).line_id;
8240 AGREEMENT_ID_TAB(i) := g_lines_tab(i).AGREEMENT_ID;
8241 ATO_DATA_TYPE_TAB(i) := g_lines_tab(i).ATO_DATA_TYPE;
8242 BILL_TO_ADDRESS_1_EXT_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_1_EXT;
8243 BILL_TO_ADDRESS_2_EXT_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_2_EXT;
8244 BILL_TO_ADDRESS_3_EXT_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_3_EXT;
8245 BILL_TO_ADDRESS_4_EXT_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_4_EXT;
8246 BILL_TO_ADDRESS_ID_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_ID;
8247 INVOICE_TO_ORG_ID_TAB(i) := g_lines_tab(i).INVOICE_TO_ORG_ID ;
8248 BILL_TO_CITY_EXT_TAB(i) := g_lines_tab(i).BILL_TO_CITY_EXT;
8249 BILL_TO_COUNTRY_EXT_TAB(i) := g_lines_tab(i).BILL_TO_COUNTRY_EXT;
8250 BILL_TO_COUNTY_EXT_TAB(i) := g_lines_tab(i).BILL_TO_COUNTY_EXT;
8251 BILL_TO_NAME_EXT_TAB(i) := g_lines_tab(i).BILL_TO_NAME_EXT;
8252 BILL_TO_POSTAL_CD_EXT_TAB(i) := g_lines_tab(i).BILL_TO_POSTAL_CD_EXT;
8253 BILL_TO_PROVINCE_EXT_TAB(i) := g_lines_tab(i).BILL_TO_PROVINCE_EXT;
8254 BILL_TO_SITE_USE_ID_TAB(i) := g_lines_tab(i).BILL_TO_SITE_USE_ID;
8255 BILL_TO_STATE_EXT_TAB(i) := g_lines_tab(i).BILL_TO_STATE_EXT;
8256 CARRIER_ID_CODE_EXT_TAB(i) := g_lines_tab(i).CARRIER_ID_CODE_EXT;
8257 CARRIER_QUALIFIER_EXT_TAB(i) := g_lines_tab(i).CARRIER_QUALIFIER_EXT;
8258 COMMODITY_EXT_TAB(i) := g_lines_tab(i).COMMODITY_EXT;
8259 COUNTRY_OF_ORIGIN_EXT_TAB(i) := g_lines_tab(i).COUNTRY_OF_ORIGIN_EXT;
8260 CUST_ASSEMBLY_EXT_TAB(i) := g_lines_tab(i).CUST_ASSEMBLY_EXT;
8261 CUST_ASSIGNED_ID_EXT_TAB(i) := g_lines_tab(i).CUST_ASSIGNED_ID_EXT;
8262 CUST_BILL_TO_EXT_TAB(i) := g_lines_tab(i).CUST_BILL_TO_EXT;
8263 CUST_CONTRACT_NUM_EXT_TAB(i) := g_lines_tab(i).CUST_CONTRACT_NUM_EXT;
8264 CUSTOMER_DOCK_CODE_TAB(i) := g_lines_tab(i).CUSTOMER_DOCK_CODE;
8265 CUST_INTRMD_SHIP_TO_EXT_TAB(i) := g_lines_tab(i).CUST_INTRMD_SHIP_TO_EXT;
8266 CUST_ITEM_PRICE_EXT_TAB(i) := g_lines_tab(i).CUST_ITEM_PRICE_EXT;
8267 CUST_ITEM_PRICE_UOM_EXT_TAB(i) := g_lines_tab(i).CUST_ITEM_PRICE_UOM_EXT;
8268 CUSTOMER_ITEM_REVISION_TAB(i) := g_lines_tab(i).CUSTOMER_ITEM_REVISION;
8269 CUSTOMER_JOB_TAB(i) := g_lines_tab(i).CUSTOMER_JOB;
8270 CUST_MANUFACTURER_EXT_TAB(i) := g_lines_tab(i).CUST_MANUFACTURER_EXT;
8271 CUST_MODEL_NUMBER_EXT_TAB(i) := g_lines_tab(i).CUST_MODEL_NUMBER_EXT;
8272 CUST_MODEL_SERIAL_NUMBER_TAB(i) := g_lines_tab(i).CUST_MODEL_SERIAL_NUMBER;
8273 CUST_ORDER_NUM_EXT_TAB(i) := g_lines_tab(i).CUST_ORDER_NUM_EXT;
8274 CUST_PROCESS_NUM_EXT_TAB(i) := g_lines_tab(i).CUST_PROCESS_NUM_EXT;
8275 CUST_SET_NUM_EXT_TAB(i) := g_lines_tab(i).CUST_SET_NUM_EXT;
8276 CUST_SHIP_FROM_ORG_EXT_TAB(i) := g_lines_tab(i).CUST_SHIP_FROM_ORG_EXT;
8277 CUST_SHIP_TO_EXT_TAB(i) := g_lines_tab(i).CUST_SHIP_TO_EXT;
8278 CUST_UOM_EXT_TAB(i) := g_lines_tab(i).CUST_UOM_EXT;
8279 CUSTOMER_ITEM_EXT_TAB(i) := g_lines_tab(i).CUSTOMER_ITEM_EXT;
8280 CUSTOMER_ITEM_ID_TAB(i) := g_lines_tab(i).CUSTOMER_ITEM_ID;
8281 REQUEST_DATE_TAB(i) := g_lines_tab(i).REQUEST_DATE;
8282 SCHEDULE_DATE_TAB(i) := g_lines_tab(i).SCHEDULE_DATE;
8283 DATE_TYPE_CODE_TAB(i) := g_lines_tab(i).DATE_TYPE_CODE;
8284 DATE_TYPE_CODE_EXT_TAB(i) := g_lines_tab(i).DATE_TYPE_CODE_EXT;
8285 DELIVERY_LEAD_TIME_TAB(i) := g_lines_tab(i).DELIVERY_LEAD_TIME;
8286 END_DATE_TIME_TAB(i) := g_lines_tab(i).END_DATE_TIME;
8287 EQUIPMENT_CODE_EXT_TAB(i) := g_lines_tab(i).EQUIPMENT_CODE_EXT;
8288 EQUIPMENT_NUMBER_EXT_TAB(i) := g_lines_tab(i).EQUIPMENT_NUMBER_EXT;
8289 HANDLING_CODE_EXT_TAB(i) := g_lines_tab(i).HANDLING_CODE_EXT;
8290 HAZARD_CODE_EXT_TAB(i) := g_lines_tab(i).HAZARD_CODE_EXT;
8291 HAZARD_CODE_QUAL_EXT_TAB(i) := g_lines_tab(i).HAZARD_CODE_QUAL_EXT;
8292 HAZARD_DESCRIPTION_EXT_TAB(i) := g_lines_tab(i).HAZARD_DESCRIPTION_EXT;
8293 IMPORT_LICENSE_DATE_EXT_TAB(i) := g_lines_tab(i).IMPORT_LICENSE_DATE_EXT;
8294 IMPORT_LICENSE_EXT_TAB(i) := g_lines_tab(i).IMPORT_LICENSE_EXT;
8295 INDUSTRY_ATTRIBUTE1_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE1;
8296 INDUSTRY_ATTRIBUTE10_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE10;
8297 INDUSTRY_ATTRIBUTE11_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE11;
8298 INDUSTRY_ATTRIBUTE12_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE12;
8299 INDUSTRY_ATTRIBUTE13_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE13;
8300 INDUSTRY_ATTRIBUTE14_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE14;
8301 INDUSTRY_ATTRIBUTE15_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE15;
8302 INDUSTRY_ATTRIBUTE2_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE2;
8303 INDUSTRY_ATTRIBUTE3_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE3;
8304 INDUSTRY_ATTRIBUTE4_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE4;
8305 INDUSTRY_ATTRIBUTE5_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE5;
8306 INDUSTRY_ATTRIBUTE6_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE6;
8307 INDUSTRY_ATTRIBUTE7_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE7;
8308 INDUSTRY_ATTRIBUTE8_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE8;
8309 INDUSTRY_ATTRIBUTE9_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE9;
8310 INDUSTRY_CONTEXT_TAB(i) := g_lines_tab(i).INDUSTRY_CONTEXT;
8311 INTRMD_SHIP_TO_ID_TAB(i) := g_lines_tab(i).INTRMD_SHIP_TO_ID;
8312 SHIP_TO_ORG_ID_TAB(i) := g_lines_tab(i).SHIP_TO_ORG_ID ;
8313 INTRMD_ST_ADDRESS_1_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_ADDRESS_1_EXT;
8314 INTRMD_ST_ADDRESS_2_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_ADDRESS_2_EXT;
8315 INTRMD_ST_ADDRESS_3_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_ADDRESS_3_EXT;
8316 INTRMD_ST_ADDRESS_4_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_ADDRESS_4_EXT;
8317 INTRMD_ST_CITY_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_CITY_EXT;
8318 INTRMD_ST_COUNTRY_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_COUNTRY_EXT;
8319 INTRMD_ST_COUNTY_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_COUNTY_EXT;
8320 INTRMD_ST_NAME_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_NAME_EXT;
8321 INTRMD_ST_POSTAL_CD_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_POSTAL_CD_EXT;
8322 INTRMD_ST_PROVINCE_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_PROVINCE_EXT;
8323 INTRMD_ST_STATE_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_STATE_EXT;
8324 INTRMD_ST_SITE_USE_ID_TAB(i) := g_lines_tab(i).INTRMD_ST_SITE_USE_ID;
8325 INVENTORY_ITEM_ID_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_ID;
8326 INVENTORY_ITEM_SEGMENT1_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT1;
8327 INVENTORY_ITEM_SEGMENT10_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT10;
8328 INVENTORY_ITEM_SEGMENT11_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT11;
8329 INVENTORY_ITEM_SEGMENT12_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT12;
8330 INVENTORY_ITEM_SEGMENT13_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT13;
8331 INVENTORY_ITEM_SEGMENT14_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT14;
8332 INVENTORY_ITEM_SEGMENT15_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT15;
8333 INVENTORY_ITEM_SEGMENT16_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT16;
8334 INVENTORY_ITEM_SEGMENT17_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT17;
8335 INVENTORY_ITEM_SEGMENT18_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT18;
8336 INVENTORY_ITEM_SEGMENT19_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT19;
8337 INVENTORY_ITEM_SEGMENT2_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT2;
8338 INVENTORY_ITEM_SEGMENT20_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT20;
8339 INVENTORY_ITEM_SEGMENT3_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT3;
8340 INVENTORY_ITEM_SEGMENT4_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT4;
8341 INVENTORY_ITEM_SEGMENT5_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT5;
8342 INVENTORY_ITEM_SEGMENT6_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT6;
8343 INVENTORY_ITEM_SEGMENT7_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT7;
8344 INVENTORY_ITEM_SEGMENT8_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT8;
8345 INVENTORY_ITEM_SEGMENT9_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT9;
8346 ITEM_CONTACT_CODE_1_TAB(i) := g_lines_tab(i).ITEM_CONTACT_CODE_1;
8347 ITEM_CONTACT_CODE_2_TAB(i) := g_lines_tab(i).ITEM_CONTACT_CODE_2;
8348 ITEM_CONTACT_VALUE_1_TAB(i) := g_lines_tab(i).ITEM_CONTACT_VALUE_1;
8349 ITEM_CONTACT_VALUE_2_TAB(i) := g_lines_tab(i).ITEM_CONTACT_VALUE_2;
8350 ITEM_DESCRIPTION_EXT_TAB(i) := g_lines_tab(i).ITEM_DESCRIPTION_EXT;
8351 ITEM_DETAIL_QUANTITY_TAB(i) := g_lines_tab(i).ITEM_DETAIL_QUANTITY;
8352 ITEM_DETAIL_REF_CODE_1_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_CODE_1;
8353 ITEM_DETAIL_REF_CODE_2_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_CODE_2;
8354 ITEM_DETAIL_REF_CODE_3_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_CODE_3;
8355 ITEM_DETAIL_REF_VALUE_1_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_VALUE_1;
8356 ITEM_DETAIL_REF_VALUE_2_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_VALUE_2;
8357 ITEM_DETAIL_REF_VALUE_3_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_VALUE_3;
8358 ITEM_DETAIL_SUBTYPE_TAB(i) := g_lines_tab(i).ITEM_DETAIL_SUBTYPE;
8359 ITEM_DETAIL_SUBTYPE_EXT_TAB(i) := g_lines_tab(i).ITEM_DETAIL_SUBTYPE_EXT;
8360 ITEM_DETAIL_TYPE_TAB(i) := g_lines_tab(i).ITEM_DETAIL_TYPE;
8361 ITEM_DETAIL_TYPE_EXT_TAB(i) := g_lines_tab(i).ITEM_DETAIL_TYPE_EXT;
8362 ITEM_ENG_CNG_LVL_EXT_TAB(i) := g_lines_tab(i).ITEM_ENG_CNG_LVL_EXT;
8363 ITEM_MEASUREMENTS_EXT_TAB(i) := g_lines_tab(i).ITEM_MEASUREMENTS_EXT;
8364 ITEM_NOTE_TEXT_TAB(i) := g_lines_tab(i).ITEM_NOTE_TEXT;
8365 ITEM_REF_CODE_1_TAB(i) := g_lines_tab(i).ITEM_REF_CODE_1;
8366 ITEM_REF_CODE_2_TAB(i) := g_lines_tab(i).ITEM_REF_CODE_2;
8367 ITEM_REF_CODE_3_TAB(i) := g_lines_tab(i).ITEM_REF_CODE_3;
8368 ITEM_REF_VALUE_1_TAB(i) := g_lines_tab(i).ITEM_REF_VALUE_1;
8369 ITEM_REF_VALUE_2_TAB(i) := g_lines_tab(i).ITEM_REF_VALUE_2;
8370 ITEM_REF_VALUE_3_TAB(i) := g_lines_tab(i).ITEM_REF_VALUE_3;
8371 ITEM_RELEASE_STATUS_EXT_TAB(i) := g_lines_tab(i).ITEM_RELEASE_STATUS_EXT;
8372 LADING_QUANTITY_EXT_TAB(i) := g_lines_tab(i).LADING_QUANTITY_EXT;
8373 LETTER_CREDIT_EXPDT_EXT_TAB(i) := g_lines_tab(i).LETTER_CREDIT_EXPDT_EXT;
8374 LETTER_CREDIT_EXT_TAB(i) := g_lines_tab(i).LETTER_CREDIT_EXT;
8375 LINE_REFERENCE_TAB(i) := g_lines_tab(i).LINE_REFERENCE;
8376 LINK_TO_LINE_REF_TAB(i) := g_lines_tab(i).LINK_TO_LINE_REF;
8377 ORDER_HEADER_ID_TAB(i) := g_lines_tab(i).ORDER_HEADER_ID;
8378 OTHER_NAME_CODE_1_TAB(i) := g_lines_tab(i).OTHER_NAME_CODE_1;
8379 OTHER_NAME_CODE_2_TAB(i) := g_lines_tab(i).OTHER_NAME_CODE_2;
8380 OTHER_NAME_VALUE_1_TAB(i) := g_lines_tab(i).OTHER_NAME_VALUE_1;
8381 OTHER_NAME_VALUE_2_TAB(i) := g_lines_tab(i).OTHER_NAME_VALUE_2;
8382 PACK_SIZE_EXT_TAB(i) := g_lines_tab(i).PACK_SIZE_EXT;
8383 PACK_UNITS_PER_PACK_EXT_TAB(i) := g_lines_tab(i).PACK_UNITS_PER_PACK_EXT;
8384 PACK_UOM_CODE_EXT_TAB(i) := g_lines_tab(i).PACK_UOM_CODE_EXT;
8385 PACKAGING_CODE_EXT_TAB(i) := g_lines_tab(i).PACKAGING_CODE_EXT;
8386 PARENT_LINK_LINE_REF_TAB(i) := g_lines_tab(i).PARENT_LINK_LINE_REF;
8387 CUST_PRODUCTION_SEQ_NUM_TAB(i) := g_lines_tab(i).CUST_PRODUCTION_SEQ_NUM;
8388 PRICE_LIST_ID_TAB(i) := g_lines_tab(i).PRICE_LIST_ID;
8389 PRIMARY_QUANTITY_TAB(i) := g_lines_tab(i).PRIMARY_QUANTITY;
8390 PRIMARY_UOM_CODE_TAB(i) := g_lines_tab(i).PRIMARY_UOM_CODE;
8391 PRIME_CONTRCTR_PART_EXT_TAB(i) := g_lines_tab(i).PRIME_CONTRCTR_PART_EXT;
8392 PROCESS_STATUS_TAB(i) := g_lines_tab(i).PROCESS_STATUS;
8393 CUST_PO_RELEASE_NUM_TAB(i) := g_lines_tab(i).CUST_PO_RELEASE_NUM;
8394 CUST_PO_DATE_TAB(i) := g_lines_tab(i).CUST_PO_DATE;
8395 CUST_PO_LINE_NUM_TAB(i) := g_lines_tab(i).CUST_PO_LINE_NUM;
8396 CUST_PO_NUMBER_TAB(i) := g_lines_tab(i).CUST_PO_NUMBER;
8397 QTY_TYPE_CODE_TAB(i) := g_lines_tab(i).QTY_TYPE_CODE;
8398 QTY_TYPE_CODE_EXT_TAB(i) := g_lines_tab(i).QTY_TYPE_CODE_EXT;
8399 RETURN_CONTAINER_EXT_TAB(i) := g_lines_tab(i).RETURN_CONTAINER_EXT;
8400 SCHEDULE_LINE_ID_TAB(i) := g_lines_tab(i).SCHEDULE_LINE_ID;
8401 ROUTING_DESC_EXT_TAB(i) := g_lines_tab(i).ROUTING_DESC_EXT;
8402 ROUTING_SEQ_CODE_EXT_TAB(i) := g_lines_tab(i).ROUTING_SEQ_CODE_EXT;
8403 SCHEDULE_ITEM_NUM_TAB(i) := g_lines_tab(i).SCHEDULE_ITEM_NUM;
8404 SHIP_DEL_PATTERN_EXT_TAB(i) := g_lines_tab(i).SHIP_DEL_PATTERN_EXT;
8405 SHIP_DEL_TIME_CODE_EXT_TAB(i) := g_lines_tab(i).SHIP_DEL_TIME_CODE_EXT;
8406 SHIP_DEL_RULE_NAME_TAB(i) := g_lines_tab(i).SHIP_DEL_RULE_NAME;
8407 SHIP_FROM_ADDRESS_1_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_ADDRESS_1_EXT;
8408 SHIP_FROM_ADDRESS_2_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_ADDRESS_2_EXT;
8409 SHIP_FROM_ADDRESS_3_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_ADDRESS_3_EXT;
8410 SHIP_FROM_ADDRESS_4_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_ADDRESS_4_EXT;
8411 SHIP_FROM_CITY_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_CITY_EXT;
8412 SHIP_FROM_COUNTRY_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_COUNTRY_EXT;
8413 SHIP_FROM_COUNTY_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_COUNTY_EXT;
8414 SHIP_FROM_NAME_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_NAME_EXT;
8415 SHIP_FROM_ORG_ID_TAB(i) := g_lines_tab(i).SHIP_FROM_ORG_ID;
8416 SHIP_FROM_POSTAL_CD_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_POSTAL_CD_EXT;
8417 SHIP_FROM_PROVINCE_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_PROVINCE_EXT;
8418 SHIP_FROM_STATE_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_STATE_EXT;
8419 SHIP_LABEL_INFO_LINE_1_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_1;
8420 SHIP_LABEL_INFO_LINE_10_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_10;
8421 SHIP_LABEL_INFO_LINE_2_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_2;
8422 SHIP_LABEL_INFO_LINE_3_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_3;
8423 SHIP_LABEL_INFO_LINE_4_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_4;
8424 SHIP_LABEL_INFO_LINE_5_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_5;
8425 SHIP_LABEL_INFO_LINE_6_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_6;
8426 SHIP_LABEL_INFO_LINE_7_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_7;
8427 SHIP_LABEL_INFO_LINE_8_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_8;
8428 SHIP_LABEL_INFO_LINE_9_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_9;
8429 SHIP_TO_ADDRESS_1_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_1_EXT;
8430 SHIP_TO_ADDRESS_2_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_2_EXT;
8431 SHIP_TO_ADDRESS_3_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_3_EXT;
8432 SHIP_TO_ADDRESS_4_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_4_EXT;
8433 SHIP_TO_ADDRESS_ID_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_ID;
8434 DELIVER_TO_ORG_ID_TAB(i) := g_lines_tab(i).DELIVER_TO_ORG_ID ;
8435 SHIP_TO_CITY_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_CITY_EXT;
8436 SHIP_TO_COUNTRY_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_COUNTRY_EXT;
8437 SHIP_TO_COUNTY_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_COUNTY_EXT;
8438 SHIP_TO_NAME_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_NAME_EXT;
8439 SHIP_TO_POSTAL_CD_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_POSTAL_CD_EXT;
8440 SHIP_TO_PROVINCE_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_PROVINCE_EXT;
8441 SHIP_TO_SITE_USE_ID_TAB(i) := g_lines_tab(i).SHIP_TO_SITE_USE_ID;
8442 SHIP_TO_STATE_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_STATE_EXT;
8443 START_DATE_TIME_TAB(i) := g_lines_tab(i).START_DATE_TIME;
8444 SUBLINE_ASSIGNED_ID_EXT_TAB(i) := g_lines_tab(i).SUBLINE_ASSIGNED_ID_EXT;
8445 SUBLINE_CONFIG_CODE_EXT_TAB(i) := g_lines_tab(i).SUBLINE_CONFIG_CODE_EXT;
8446 SUBLINE_CUST_ITEM_EXT_TAB(i) := g_lines_tab(i).SUBLINE_CUST_ITEM_EXT;
8447 SUBLINE_CUST_ITEM_ID_TAB(i) := g_lines_tab(i).SUBLINE_CUST_ITEM_ID;
8448 SUBLINE_MODEL_NUM_EXT_TAB(i) := g_lines_tab(i).SUBLINE_MODEL_NUM_EXT;
8449 SUBLINE_QUANTITY_TAB(i) := g_lines_tab(i).SUBLINE_QUANTITY;
8450 SUBLINE_UOM_CODE_TAB(i) := g_lines_tab(i).SUBLINE_UOM_CODE;
8451 SUPPLIER_ITEM_EXT_TAB(i) := g_lines_tab(i).SUPPLIER_ITEM_EXT;
8452 TRANSIT_TIME_EXT_TAB(i) := g_lines_tab(i).TRANSIT_TIME_EXT;
8453 TRANSIT_TIME_QUAL_EXT_TAB(i) := g_lines_tab(i).TRANSIT_TIME_QUAL_EXT;
8454 TRANSPORT_LOC_QUAL_EXT_TAB(i) := g_lines_tab(i).TRANSPORT_LOC_QUAL_EXT;
8455 TRANSPORT_LOCATION_EXT_TAB(i) := g_lines_tab(i).TRANSPORT_LOCATION_EXT;
8456 TRANSPORT_METHOD_EXT_TAB(i) := g_lines_tab(i).TRANSPORT_METHOD_EXT;
8457 UOM_CODE_TAB(i) := g_lines_tab(i).UOM_CODE;
8458 WEIGHT_EXT_TAB(i) := g_lines_tab(i).WEIGHT_EXT;
8459 WEIGHT_QUALIFIER_EXT_TAB(i) := g_lines_tab(i).WEIGHT_QUALIFIER_EXT;
8460 WEIGHT_UOM_EXT_TAB(i) := g_lines_tab(i).WEIGHT_UOM_EXT;
8461 FBO_CONFIGURATION_KEY_1_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_1;
8462 FBO_CONFIGURATION_KEY_2_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_2;
8463 FBO_CONFIGURATION_KEY_3_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_3;
8464 FBO_CONFIGURATION_KEY_4_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_4;
8465 FBO_CONFIGURATION_KEY_5_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_5;
8466 MATCH_KEY_ACROSS_TAB(i) := g_lines_tab(i).MATCH_KEY_ACROSS;
8467 MATCH_KEY_WITHIN_TAB(i) := g_lines_tab(i).MATCH_KEY_WITHIN;
8468 CRITICAL_KEY_ATTRIBUTES_TAB(i) := g_lines_tab(i).CRITICAL_KEY_ATTRIBUTES;
8469 ATTRIBUTE_CATEGORY_TAB(i) := g_lines_tab(i).ATTRIBUTE_CATEGORY;
8470 ATTRIBUTE1_TAB(i) := g_lines_tab(i).ATTRIBUTE1;
8471 ATTRIBUTE2_TAB(i) := g_lines_tab(i).ATTRIBUTE2;
8472 ATTRIBUTE3_TAB(i) := g_lines_tab(i).ATTRIBUTE3;
8473 ATTRIBUTE4_TAB(i) := g_lines_tab(i).ATTRIBUTE4;
8474 ATTRIBUTE5_TAB(i) := g_lines_tab(i).ATTRIBUTE5;
8475 ATTRIBUTE6_TAB(i) := g_lines_tab(i).ATTRIBUTE6;
8476 ATTRIBUTE7_TAB(i) := g_lines_tab(i).ATTRIBUTE7;
8477 ATTRIBUTE8_TAB(i) := g_lines_tab(i).ATTRIBUTE8;
8478 ATTRIBUTE9_TAB(i) := g_lines_tab(i).ATTRIBUTE9;
8479 ATTRIBUTE10_TAB(i) := g_lines_tab(i).ATTRIBUTE10;
8480 ATTRIBUTE11_TAB(i) := g_lines_tab(i).ATTRIBUTE11;
8481 ATTRIBUTE12_TAB(i) := g_lines_tab(i).ATTRIBUTE12;
8482 ATTRIBUTE13_TAB(i) := g_lines_tab(i).ATTRIBUTE13;
8483 ATTRIBUTE14_TAB(i) := g_lines_tab(i).ATTRIBUTE14;
8484 ATTRIBUTE15_TAB(i) := g_lines_tab(i).ATTRIBUTE15;
8485 BLANKET_NUMBER_TAB(i) := g_lines_tab(i).BLANKET_NUMBER;
8486 INTMED_SHIP_TO_ORG_ID_TAB(i) := g_lines_tab(i).INTMED_SHIP_TO_ORG_ID;
8487 SHIP_TO_CUSTOMER_ID_TAB(i) := g_lines_tab(i).SHIP_TO_CUSTOMER_ID;
8488 --
8489 END LOOP;
8490
8491 FOR i IN 1..g_lines_tab.COUNT LOOP
8492 --
8493 process_status_tab(i) := g_line_PS;
8494 --
8495 END LOOP;
8496
8497 /* oracle 9i compatible bulk update
8498 FORALL i in 1..g_lines_tab.COUNT
8499
8500 UPDATE rlm_interface_lines
8501 SET ROW = g_lines_tab(i)
8502 WHERE header_id = header_id_tab(i)
8503 AND line_id = line_id_tab(i);
8504
8505 */
8506
8507 --bulk update
8508 FORALL i in 1..g_lines_tab.COUNT
8509 UPDATE rlm_interface_lines
8510 SET
8511 AGREEMENT_ID = AGREEMENT_ID_TAB(i),
8512 ATO_DATA_TYPE = ATO_DATA_TYPE_TAB(i),
8513 BILL_TO_ADDRESS_1_EXT = BILL_TO_ADDRESS_1_EXT_TAB(i),
8514 BILL_TO_ADDRESS_2_EXT = BILL_TO_ADDRESS_2_EXT_TAB(i),
8515 BILL_TO_ADDRESS_3_EXT = BILL_TO_ADDRESS_3_EXT_TAB(i),
8516 BILL_TO_ADDRESS_4_EXT = BILL_TO_ADDRESS_4_EXT_TAB(i),
8517 BILL_TO_ADDRESS_ID = BILL_TO_ADDRESS_ID_TAB(i),
8518 INVOICE_TO_ORG_ID = INVOICE_TO_ORG_ID_TAB(i),
8519 BILL_TO_CITY_EXT = BILL_TO_CITY_EXT_TAB(i),
8520 BILL_TO_COUNTRY_EXT = BILL_TO_COUNTRY_EXT_TAB(i),
8521 BILL_TO_COUNTY_EXT = BILL_TO_COUNTY_EXT_TAB(i),
8522 BILL_TO_NAME_EXT = BILL_TO_NAME_EXT_TAB(i),
8523 BILL_TO_POSTAL_CD_EXT = BILL_TO_POSTAL_CD_EXT_TAB(i),
8524 BILL_TO_PROVINCE_EXT = BILL_TO_PROVINCE_EXT_TAB(i),
8525 BILL_TO_SITE_USE_ID = BILL_TO_SITE_USE_ID_TAB(i),
8526 BILL_TO_STATE_EXT = BILL_TO_STATE_EXT_TAB(i),
8527 CARRIER_ID_CODE_EXT = CARRIER_ID_CODE_EXT_TAB(i),
8528 CARRIER_QUALIFIER_EXT = CARRIER_QUALIFIER_EXT_TAB(i),
8529 COMMODITY_EXT = COMMODITY_EXT_TAB(i),
8530 COUNTRY_OF_ORIGIN_EXT = COUNTRY_OF_ORIGIN_EXT_TAB(i),
8531 CUST_ASSEMBLY_EXT = CUST_ASSEMBLY_EXT_TAB(i),
8532 CUST_ASSIGNED_ID_EXT = CUST_ASSIGNED_ID_EXT_TAB(i),
8533 CUST_BILL_TO_EXT = CUST_BILL_TO_EXT_TAB(i),
8534 CUST_CONTRACT_NUM_EXT = CUST_CONTRACT_NUM_EXT_TAB(i),
8535 CUSTOMER_DOCK_CODE = CUSTOMER_DOCK_CODE_TAB(i),
8536 CUST_INTRMD_SHIP_TO_EXT = CUST_INTRMD_SHIP_TO_EXT_TAB(i),
8537 CUST_ITEM_PRICE_EXT = CUST_ITEM_PRICE_EXT_TAB(i),
8538 CUST_ITEM_PRICE_UOM_EXT = CUST_ITEM_PRICE_UOM_EXT_TAB(i),
8539 CUSTOMER_ITEM_REVISION = CUSTOMER_ITEM_REVISION_TAB(i),
8540 CUSTOMER_JOB = CUSTOMER_JOB_TAB(i),
8541 CUST_MANUFACTURER_EXT = CUST_MANUFACTURER_EXT_TAB(i),
8542 CUST_MODEL_NUMBER_EXT = CUST_MODEL_NUMBER_EXT_TAB(i),
8543 CUST_MODEL_SERIAL_NUMBER = CUST_MODEL_SERIAL_NUMBER_TAB(i),
8544 CUST_ORDER_NUM_EXT = CUST_ORDER_NUM_EXT_TAB(i),
8545 CUST_PROCESS_NUM_EXT = CUST_PROCESS_NUM_EXT_TAB(i),
8546 CUST_SET_NUM_EXT = CUST_SET_NUM_EXT_TAB(i),
8547 CUST_SHIP_FROM_ORG_EXT = CUST_SHIP_FROM_ORG_EXT_TAB(i),
8548 CUST_SHIP_TO_EXT = CUST_SHIP_TO_EXT_TAB(i),
8549 CUST_UOM_EXT = CUST_UOM_EXT_TAB(i),
8550 CUSTOMER_ITEM_EXT = CUSTOMER_ITEM_EXT_TAB(i),
8551 CUSTOMER_ITEM_ID = CUSTOMER_ITEM_ID_TAB(i),
8552 REQUEST_DATE = REQUEST_DATE_TAB(i),
8553 SCHEDULE_DATE = SCHEDULE_DATE_TAB(i),
8554 DATE_TYPE_CODE = DATE_TYPE_CODE_TAB(i),
8555 DATE_TYPE_CODE_EXT = DATE_TYPE_CODE_EXT_TAB(i),
8556 DELIVERY_LEAD_TIME = DELIVERY_LEAD_TIME_TAB(i),
8557 END_DATE_TIME = END_DATE_TIME_TAB(i),
8558 EQUIPMENT_CODE_EXT = EQUIPMENT_CODE_EXT_TAB(i),
8559 EQUIPMENT_NUMBER_EXT = EQUIPMENT_NUMBER_EXT_TAB(i),
8560 HANDLING_CODE_EXT = HANDLING_CODE_EXT_TAB(i),
8561 HAZARD_CODE_EXT = HAZARD_CODE_EXT_TAB(i),
8562 HAZARD_CODE_QUAL_EXT = HAZARD_CODE_QUAL_EXT_TAB(i),
8563 HAZARD_DESCRIPTION_EXT = HAZARD_DESCRIPTION_EXT_TAB(i),
8564 IMPORT_LICENSE_DATE_EXT = IMPORT_LICENSE_DATE_EXT_TAB(i),
8565 IMPORT_LICENSE_EXT = IMPORT_LICENSE_EXT_TAB(i),
8566 INDUSTRY_ATTRIBUTE1 = INDUSTRY_ATTRIBUTE1_TAB(i),
8567 INDUSTRY_ATTRIBUTE10 = INDUSTRY_ATTRIBUTE10_TAB(i),
8568 INDUSTRY_ATTRIBUTE11 = INDUSTRY_ATTRIBUTE11_TAB(i),
8569 INDUSTRY_ATTRIBUTE12 = INDUSTRY_ATTRIBUTE12_TAB(i),
8570 INDUSTRY_ATTRIBUTE13 = INDUSTRY_ATTRIBUTE13_TAB(i),
8571 INDUSTRY_ATTRIBUTE14 = INDUSTRY_ATTRIBUTE14_TAB(i),
8572 INDUSTRY_ATTRIBUTE15 = INDUSTRY_ATTRIBUTE15_TAB(i),
8573 INDUSTRY_ATTRIBUTE2 = INDUSTRY_ATTRIBUTE2_TAB(i),
8574 INDUSTRY_ATTRIBUTE3 = INDUSTRY_ATTRIBUTE3_TAB(i),
8575 INDUSTRY_ATTRIBUTE4 = INDUSTRY_ATTRIBUTE4_TAB(i),
8576 INDUSTRY_ATTRIBUTE5 = INDUSTRY_ATTRIBUTE5_TAB(i),
8577 INDUSTRY_ATTRIBUTE6 = INDUSTRY_ATTRIBUTE6_TAB(i),
8578 INDUSTRY_ATTRIBUTE7 = INDUSTRY_ATTRIBUTE7_TAB(i),
8579 INDUSTRY_ATTRIBUTE8 = INDUSTRY_ATTRIBUTE8_TAB(i),
8580 INDUSTRY_ATTRIBUTE9 = INDUSTRY_ATTRIBUTE9_TAB(i),
8581 INDUSTRY_CONTEXT = INDUSTRY_CONTEXT_TAB(i),
8582 INTRMD_SHIP_TO_ID = INTRMD_SHIP_TO_ID_TAB(i),
8583 SHIP_TO_ORG_ID = SHIP_TO_ORG_ID_TAB(i),
8584 INTRMD_ST_ADDRESS_1_EXT = INTRMD_ST_ADDRESS_1_EXT_TAB(i),
8585 INTRMD_ST_ADDRESS_2_EXT = INTRMD_ST_ADDRESS_2_EXT_TAB(i),
8586 INTRMD_ST_ADDRESS_3_EXT = INTRMD_ST_ADDRESS_3_EXT_TAB(i),
8587 INTRMD_ST_ADDRESS_4_EXT = INTRMD_ST_ADDRESS_4_EXT_TAB(i),
8588 INTRMD_ST_CITY_EXT = INTRMD_ST_CITY_EXT_TAB(i),
8589 INTRMD_ST_COUNTRY_EXT = INTRMD_ST_COUNTRY_EXT_TAB(i),
8590 INTRMD_ST_COUNTY_EXT = INTRMD_ST_COUNTY_EXT_TAB(i),
8591 INTRMD_ST_NAME_EXT = INTRMD_ST_NAME_EXT_TAB(i),
8592 INTRMD_ST_POSTAL_CD_EXT = INTRMD_ST_POSTAL_CD_EXT_TAB(i),
8593 INTRMD_ST_PROVINCE_EXT = INTRMD_ST_PROVINCE_EXT_TAB(i),
8594 INTRMD_ST_STATE_EXT = INTRMD_ST_STATE_EXT_TAB(i),
8595 INTRMD_ST_SITE_USE_ID = INTRMD_ST_SITE_USE_ID_TAB(i),
8596 INVENTORY_ITEM_ID = INVENTORY_ITEM_ID_TAB(i),
8597 INVENTORY_ITEM_SEGMENT1 = INVENTORY_ITEM_SEGMENT1_TAB(i),
8598 INVENTORY_ITEM_SEGMENT10 = INVENTORY_ITEM_SEGMENT10_TAB(i),
8599 INVENTORY_ITEM_SEGMENT11 = INVENTORY_ITEM_SEGMENT11_TAB(i),
8600 INVENTORY_ITEM_SEGMENT12 = INVENTORY_ITEM_SEGMENT12_TAB(i),
8601 INVENTORY_ITEM_SEGMENT13 = INVENTORY_ITEM_SEGMENT13_TAB(i),
8602 INVENTORY_ITEM_SEGMENT14 = INVENTORY_ITEM_SEGMENT14_TAB(i),
8603 INVENTORY_ITEM_SEGMENT15 = INVENTORY_ITEM_SEGMENT15_TAB(i),
8604 INVENTORY_ITEM_SEGMENT16 = INVENTORY_ITEM_SEGMENT16_TAB(i),
8605 INVENTORY_ITEM_SEGMENT17 = INVENTORY_ITEM_SEGMENT17_TAB(i),
8606 INVENTORY_ITEM_SEGMENT18 = INVENTORY_ITEM_SEGMENT18_TAB(i),
8607 INVENTORY_ITEM_SEGMENT19 = INVENTORY_ITEM_SEGMENT19_TAB(i),
8608 INVENTORY_ITEM_SEGMENT2 = INVENTORY_ITEM_SEGMENT2_TAB(i),
8609 INVENTORY_ITEM_SEGMENT20 = INVENTORY_ITEM_SEGMENT20_TAB(i),
8610 INVENTORY_ITEM_SEGMENT3 = INVENTORY_ITEM_SEGMENT3_TAB(i),
8611 INVENTORY_ITEM_SEGMENT4 = INVENTORY_ITEM_SEGMENT4_TAB(i),
8612 INVENTORY_ITEM_SEGMENT5 = INVENTORY_ITEM_SEGMENT5_TAB(i),
8613 INVENTORY_ITEM_SEGMENT6 = INVENTORY_ITEM_SEGMENT6_TAB(i),
8614 INVENTORY_ITEM_SEGMENT7 = INVENTORY_ITEM_SEGMENT7_TAB(i),
8615 INVENTORY_ITEM_SEGMENT8 = INVENTORY_ITEM_SEGMENT8_TAB(i),
8616 INVENTORY_ITEM_SEGMENT9 = INVENTORY_ITEM_SEGMENT9_TAB(i),
8617 ITEM_CONTACT_CODE_1 = ITEM_CONTACT_CODE_1_TAB(i),
8618 ITEM_CONTACT_CODE_2 = ITEM_CONTACT_CODE_2_TAB(i),
8619 ITEM_CONTACT_VALUE_1 = ITEM_CONTACT_VALUE_1_TAB(i),
8620 ITEM_CONTACT_VALUE_2 = ITEM_CONTACT_VALUE_2_TAB(i),
8621 ITEM_DESCRIPTION_EXT = ITEM_DESCRIPTION_EXT_TAB(i),
8622 ITEM_DETAIL_QUANTITY = ITEM_DETAIL_QUANTITY_TAB(i),
8623 ITEM_DETAIL_REF_CODE_1 = ITEM_DETAIL_REF_CODE_1_TAB(i),
8624 ITEM_DETAIL_REF_CODE_2 = ITEM_DETAIL_REF_CODE_2_TAB(i),
8625 ITEM_DETAIL_REF_CODE_3 = ITEM_DETAIL_REF_CODE_3_TAB(i),
8626 ITEM_DETAIL_REF_VALUE_1 = ITEM_DETAIL_REF_VALUE_1_TAB(i),
8627 ITEM_DETAIL_REF_VALUE_2 = ITEM_DETAIL_REF_VALUE_2_TAB(i),
8628 ITEM_DETAIL_REF_VALUE_3 = ITEM_DETAIL_REF_VALUE_3_TAB(i),
8629 ITEM_DETAIL_SUBTYPE = ITEM_DETAIL_SUBTYPE_TAB(i),
8630 ITEM_DETAIL_SUBTYPE_EXT = ITEM_DETAIL_SUBTYPE_EXT_TAB(i),
8631 ITEM_DETAIL_TYPE = ITEM_DETAIL_TYPE_TAB(i),
8632 ITEM_DETAIL_TYPE_EXT = ITEM_DETAIL_TYPE_EXT_TAB(i),
8633 ITEM_ENG_CNG_LVL_EXT = ITEM_ENG_CNG_LVL_EXT_TAB(i),
8634 ITEM_MEASUREMENTS_EXT = ITEM_MEASUREMENTS_EXT_TAB(i),
8635 ITEM_NOTE_TEXT = ITEM_NOTE_TEXT_TAB(i),
8636 ITEM_REF_CODE_1 = ITEM_REF_CODE_1_TAB(i),
8637 ITEM_REF_CODE_2 = ITEM_REF_CODE_2_TAB(i),
8638 ITEM_REF_CODE_3 = ITEM_REF_CODE_3_TAB(i),
8639 ITEM_REF_VALUE_1 = ITEM_REF_VALUE_1_TAB(i),
8640 ITEM_REF_VALUE_2 = ITEM_REF_VALUE_2_TAB(i),
8641 ITEM_REF_VALUE_3 = ITEM_REF_VALUE_3_TAB(i),
8642 ITEM_RELEASE_STATUS_EXT = ITEM_RELEASE_STATUS_EXT_TAB(i),
8643 LADING_QUANTITY_EXT = LADING_QUANTITY_EXT_TAB(i),
8644 LETTER_CREDIT_EXPDT_EXT = LETTER_CREDIT_EXPDT_EXT_TAB(i),
8645 LETTER_CREDIT_EXT = LETTER_CREDIT_EXT_TAB(i),
8646 LINE_REFERENCE = LINE_REFERENCE_TAB(i),
8647 LINK_TO_LINE_REF = LINK_TO_LINE_REF_TAB(i),
8648 ORDER_HEADER_ID = ORDER_HEADER_ID_TAB(i),
8649 OTHER_NAME_CODE_1 = OTHER_NAME_CODE_1_TAB(i),
8650 OTHER_NAME_CODE_2 = OTHER_NAME_CODE_2_TAB(i),
8651 OTHER_NAME_VALUE_1 = OTHER_NAME_VALUE_1_TAB(i),
8652 OTHER_NAME_VALUE_2 = OTHER_NAME_VALUE_2_TAB(i),
8653 PACK_SIZE_EXT = PACK_SIZE_EXT_TAB(i),
8654 PACK_UNITS_PER_PACK_EXT = PACK_UNITS_PER_PACK_EXT_TAB(i),
8655 PACK_UOM_CODE_EXT = PACK_UOM_CODE_EXT_TAB(i),
8656 PACKAGING_CODE_EXT = PACKAGING_CODE_EXT_TAB(i),
8657 PARENT_LINK_LINE_REF = PARENT_LINK_LINE_REF_TAB(i),
8658 CUST_PRODUCTION_SEQ_NUM = CUST_PRODUCTION_SEQ_NUM_TAB(i),
8659 PRICE_LIST_ID = PRICE_LIST_ID_TAB(i),
8660 PRIMARY_QUANTITY = PRIMARY_QUANTITY_TAB(i),
8661 PRIMARY_UOM_CODE = PRIMARY_UOM_CODE_TAB(i),
8662 PRIME_CONTRCTR_PART_EXT = PRIME_CONTRCTR_PART_EXT_TAB(i),
8663 PROCESS_STATUS = PROCESS_STATUS_TAB(i),
8664 CUST_PO_RELEASE_NUM = CUST_PO_RELEASE_NUM_TAB(i),
8665 CUST_PO_DATE = CUST_PO_DATE_TAB(i),
8666 CUST_PO_LINE_NUM = CUST_PO_LINE_NUM_TAB(i),
8667 CUST_PO_NUMBER = CUST_PO_NUMBER_TAB(i),
8668 QTY_TYPE_CODE = QTY_TYPE_CODE_TAB(i),
8669 QTY_TYPE_CODE_EXT = QTY_TYPE_CODE_EXT_TAB(i),
8670 RETURN_CONTAINER_EXT = RETURN_CONTAINER_EXT_TAB(i),
8671 SCHEDULE_LINE_ID = SCHEDULE_LINE_ID_TAB(i),
8672 ROUTING_DESC_EXT = ROUTING_DESC_EXT_TAB(i),
8673 ROUTING_SEQ_CODE_EXT = ROUTING_SEQ_CODE_EXT_TAB(i),
8674 SCHEDULE_ITEM_NUM = SCHEDULE_ITEM_NUM_TAB(i),
8675 SHIP_DEL_PATTERN_EXT = SHIP_DEL_PATTERN_EXT_TAB(i),
8676 SHIP_DEL_TIME_CODE_EXT = SHIP_DEL_TIME_CODE_EXT_TAB(i),
8677 SHIP_DEL_RULE_NAME = SHIP_DEL_RULE_NAME_TAB(i),
8678 SHIP_FROM_ADDRESS_1_EXT = SHIP_FROM_ADDRESS_1_EXT_TAB(i),
8679 SHIP_FROM_ADDRESS_2_EXT = SHIP_FROM_ADDRESS_2_EXT_TAB(i),
8680 SHIP_FROM_ADDRESS_3_EXT = SHIP_FROM_ADDRESS_3_EXT_TAB(i),
8681 SHIP_FROM_ADDRESS_4_EXT = SHIP_FROM_ADDRESS_4_EXT_TAB(i),
8682 SHIP_FROM_CITY_EXT = SHIP_FROM_CITY_EXT_TAB(i),
8683 SHIP_FROM_COUNTRY_EXT = SHIP_FROM_COUNTRY_EXT_TAB(i),
8684 SHIP_FROM_COUNTY_EXT = SHIP_FROM_COUNTY_EXT_TAB(i),
8685 SHIP_FROM_NAME_EXT = SHIP_FROM_NAME_EXT_TAB(i),
8686 SHIP_FROM_ORG_ID = SHIP_FROM_ORG_ID_TAB(i),
8687 SHIP_FROM_POSTAL_CD_EXT = SHIP_FROM_POSTAL_CD_EXT_TAB(i),
8688 SHIP_FROM_PROVINCE_EXT = SHIP_FROM_PROVINCE_EXT_TAB(i),
8689 SHIP_FROM_STATE_EXT = SHIP_FROM_STATE_EXT_TAB(i),
8690 SHIP_LABEL_INFO_LINE_1 = SHIP_LABEL_INFO_LINE_1_TAB(i),
8691 SHIP_LABEL_INFO_LINE_10 = SHIP_LABEL_INFO_LINE_10_TAB(i),
8692 SHIP_LABEL_INFO_LINE_2 = SHIP_LABEL_INFO_LINE_2_TAB(i),
8693 SHIP_LABEL_INFO_LINE_3 = SHIP_LABEL_INFO_LINE_3_TAB(i),
8694 SHIP_LABEL_INFO_LINE_4 = SHIP_LABEL_INFO_LINE_4_TAB(i),
8695 SHIP_LABEL_INFO_LINE_5 = SHIP_LABEL_INFO_LINE_5_TAB(i),
8696 SHIP_LABEL_INFO_LINE_6 = SHIP_LABEL_INFO_LINE_6_TAB(i),
8697 SHIP_LABEL_INFO_LINE_7 = SHIP_LABEL_INFO_LINE_7_TAB(i),
8698 SHIP_LABEL_INFO_LINE_8 = SHIP_LABEL_INFO_LINE_8_TAB(i),
8699 SHIP_LABEL_INFO_LINE_9 = SHIP_LABEL_INFO_LINE_9_TAB(i),
8700 SHIP_TO_ADDRESS_1_EXT = SHIP_TO_ADDRESS_1_EXT_TAB(i),
8701 SHIP_TO_ADDRESS_2_EXT = SHIP_TO_ADDRESS_2_EXT_TAB(i),
8702 SHIP_TO_ADDRESS_3_EXT = SHIP_TO_ADDRESS_3_EXT_TAB(i),
8703 SHIP_TO_ADDRESS_4_EXT = SHIP_TO_ADDRESS_4_EXT_TAB(i),
8704 SHIP_TO_ADDRESS_ID = SHIP_TO_ADDRESS_ID_TAB(i),
8705 DELIVER_TO_ORG_ID = DELIVER_TO_ORG_ID_TAB(i),
8706 SHIP_TO_CITY_EXT = SHIP_TO_CITY_EXT_TAB(i),
8707 SHIP_TO_COUNTRY_EXT = SHIP_TO_COUNTRY_EXT_TAB(i),
8708 SHIP_TO_COUNTY_EXT = SHIP_TO_COUNTY_EXT_TAB(i),
8709 SHIP_TO_NAME_EXT = SHIP_TO_NAME_EXT_TAB(i),
8710 SHIP_TO_POSTAL_CD_EXT = SHIP_TO_POSTAL_CD_EXT_TAB(i),
8711 SHIP_TO_PROVINCE_EXT = SHIP_TO_PROVINCE_EXT_TAB(i),
8712 SHIP_TO_SITE_USE_ID = SHIP_TO_SITE_USE_ID_TAB(i),
8713 SHIP_TO_STATE_EXT = SHIP_TO_STATE_EXT_TAB(i),
8714 START_DATE_TIME = START_DATE_TIME_TAB(i),
8715 SUBLINE_ASSIGNED_ID_EXT = SUBLINE_ASSIGNED_ID_EXT_TAB(i),
8716 SUBLINE_CONFIG_CODE_EXT = SUBLINE_CONFIG_CODE_EXT_TAB(i),
8717 SUBLINE_CUST_ITEM_EXT = SUBLINE_CUST_ITEM_EXT_TAB(i),
8718 SUBLINE_CUST_ITEM_ID = SUBLINE_CUST_ITEM_ID_TAB(i),
8719 SUBLINE_MODEL_NUM_EXT = SUBLINE_MODEL_NUM_EXT_TAB(i),
8720 SUBLINE_QUANTITY = SUBLINE_QUANTITY_TAB(i),
8721 SUBLINE_UOM_CODE = SUBLINE_UOM_CODE_TAB(i),
8722 SUPPLIER_ITEM_EXT = SUPPLIER_ITEM_EXT_TAB(i),
8723 TRANSIT_TIME_EXT = TRANSIT_TIME_EXT_TAB(i),
8724 TRANSIT_TIME_QUAL_EXT = TRANSIT_TIME_QUAL_EXT_TAB(i),
8725 TRANSPORT_LOC_QUAL_EXT = TRANSPORT_LOC_QUAL_EXT_TAB(i),
8726 TRANSPORT_LOCATION_EXT = TRANSPORT_LOCATION_EXT_TAB(i),
8727 TRANSPORT_METHOD_EXT = TRANSPORT_METHOD_EXT_TAB(i),
8728 UOM_CODE = UOM_CODE_TAB(i),
8729 WEIGHT_EXT = WEIGHT_EXT_TAB(i),
8730 WEIGHT_QUALIFIER_EXT = WEIGHT_QUALIFIER_EXT_TAB(i),
8731 WEIGHT_UOM_EXT = WEIGHT_UOM_EXT_TAB(i),
8732 FBO_CONFIGURATION_KEY_1 = FBO_CONFIGURATION_KEY_1_TAB(i),
8733 FBO_CONFIGURATION_KEY_2 = FBO_CONFIGURATION_KEY_2_TAB(i),
8734 FBO_CONFIGURATION_KEY_3 = FBO_CONFIGURATION_KEY_3_TAB(i),
8735 FBO_CONFIGURATION_KEY_4 = FBO_CONFIGURATION_KEY_4_TAB(i),
8736 FBO_CONFIGURATION_KEY_5 = FBO_CONFIGURATION_KEY_5_TAB(i),
8737 MATCH_KEY_ACROSS = MATCH_KEY_ACROSS_TAB(i),
8738 MATCH_KEY_WITHIN = MATCH_KEY_WITHIN_TAB(i),
8739 CRITICAL_KEY_ATTRIBUTES = CRITICAL_KEY_ATTRIBUTES_TAB(i),
8740 ATTRIBUTE_CATEGORY = ATTRIBUTE_CATEGORY_TAB(i),
8741 ATTRIBUTE1 = ATTRIBUTE1_TAB(i),
8742 ATTRIBUTE2 = ATTRIBUTE2_TAB(i),
8743 ATTRIBUTE3 = ATTRIBUTE3_TAB(i),
8744 ATTRIBUTE4 = ATTRIBUTE4_TAB(i),
8745 ATTRIBUTE5 = ATTRIBUTE5_TAB(i),
8746 ATTRIBUTE6 = ATTRIBUTE6_TAB(i),
8747 ATTRIBUTE7 = ATTRIBUTE7_TAB(i),
8748 ATTRIBUTE8 = ATTRIBUTE8_TAB(i),
8749 ATTRIBUTE9 = ATTRIBUTE9_TAB(i),
8750 ATTRIBUTE10 = ATTRIBUTE10_TAB(i),
8751 ATTRIBUTE11 = ATTRIBUTE11_TAB(i),
8752 ATTRIBUTE12 = ATTRIBUTE12_TAB(i),
8753 ATTRIBUTE13 = ATTRIBUTE13_TAB(i),
8754 ATTRIBUTE14 = ATTRIBUTE14_TAB(i),
8755 ATTRIBUTE15 = ATTRIBUTE15_TAB(i),
8756 BLANKET_NUMBER = BLANKET_NUMBER_TAB(i),
8757 INTMED_SHIP_TO_ORG_ID = INTMED_SHIP_TO_ORG_ID_TAB(i),
8758 LAST_UPDATE_DATE = v_last_update_date,
8759 LAST_UPDATED_BY = v_last_updated_by,
8760 LAST_UPDATE_LOGIN = v_last_update_login,
8761 REQUEST_ID = v_request_id,
8762 PROGRAM_APPLICATION_ID = v_program_application_id,
8763 PROGRAM_ID = v_program_id,
8764 PROGRAM_UPDATE_DATE = v_program_update_date,
8765 SHIP_TO_CUSTOMER_ID = SHIP_TO_CUSTOMER_ID_TAB(i)
8766 WHERE header_id = header_id_tab(i)
8767 AND line_id = line_id_tab(i);
8768 -- bulk update
8769 --
8770 IF (l_debug <> -1) THEN
8771 rlm_core_sv.dlog(C_DEBUG,'Number of Interface lines updated',SQL%ROWCOUNT);
8772 rlm_core_sv.dlog(C_DEBUG,'Number of Interface lines in g_lines_tab ',g_lines_tab.COUNT);
8773 END IF;
8774 --
8775 --
8776 IF g_lines_tab.COUNT >= 1 AND IsGroupError THEN
8777 --
8778 IF (l_debug <> -1) THEN
8779 rlm_core_sv.dlog(C_DEBUG,'Current group failed validation');
8780 END IF;
8781 --
8782 END IF;
8783 --
8784 --
8785 IF NOT IsGroupError THEN
8786 --
8787 IF (l_debug <> -1) THEN
8788 rlm_core_sv.dlog('Current group passed validation, so set g_schedule_PS to PS_available');
8789 END IF;
8790 --
8791 g_schedule_PS := rlm_core_sv.k_PS_AVAILABLE;
8792 --
8793 END IF;
8794 --
8795 IF (l_debug <> -1) THEN
8796 rlm_core_sv.dpop(C_SDEBUG);
8797 END IF;
8798 --
8799 EXCEPTION
8800 --
8801 WHEN OTHERS THEN
8802 --
8803 rlm_message_sv.sql_error('rlm_validateDemand_sv.UpdateInterfaceLines',
8804 v_Progress);
8805 --
8806 IF (l_debug <> -1) THEN
8807 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
8808 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
8809 END IF;
8810 raise;
8811 --
8812 END UpdateInterfaceLines;
8813
8814 /*===========================================================================
8815
8816 PROCEDURE NAME: UpdateInterfaceHeaders
8817
8818 ===========================================================================*/
8819 PROCEDURE UpdateInterfaceHeaders
8820 IS
8821 v_Progress VARCHAR(3) := '010';
8822
8823 BEGIN
8824 --
8825 IF (l_debug <> -1) THEN
8826 rlm_core_sv.dpush(C_SDEBUG,'UpdateInterfaceHeaders');
8827 rlm_core_sv.dlog(C_DEBUG, 'g_schedule_PS', g_schedule_PS);
8828 rlm_core_sv.dlog(C_DEBUG, 'g_line_PS', g_line_PS);
8829 END IF;
8830 --
8831 IF (g_schedule_PS = rlm_core_sv.k_PS_AVAILABLE
8832 AND g_line_PS = rlm_core_sv.k_PS_ERROR ) THEN
8833 --
8834 g_schedule_PS := rlm_core_sv.k_PS_PARTIAL_PROCESSED;
8835 --
8836 IF (l_debug <> -1) THEN
8837 rlm_core_sv.dlog(C_DEBUG,'Process Status PARTIAL_PROCESSED');
8838 END IF;
8839 --
8840 ELSIF (g_schedule_PS = rlm_core_sv.k_PS_ERROR
8841 AND g_line_PS = rlm_core_sv.k_PS_ERROR ) THEN
8842 --
8843 g_schedule_PS := rlm_core_sv.k_PS_ERROR;
8844 --
8845 IF (l_debug <> -1) THEN
8846 rlm_core_sv.dlog(C_DEBUG,'Process Status ERROR');
8847 END IF;
8848 --
8849 ELSIF (g_schedule_PS = rlm_core_sv.k_PS_AVAILABLE
8850 AND g_line_PS = rlm_core_sv.k_PS_AVAILABLE ) THEN
8851 --
8852 g_schedule_PS := rlm_core_sv.k_PS_AVAILABLE;
8853 --
8854 IF (l_debug <> -1) THEN
8855 rlm_core_sv.dlog(C_DEBUG,'Process Status AVAILABLE');
8856 END IF;
8857 --
8858 END IF;
8859
8860 UPDATE rlm_interface_headers SET
8861 CUST_ADDRESS_1_EXT = g_header_rec.CUST_ADDRESS_1_EXT ,
8862 CUST_ADDRESS_2_EXT = g_header_rec. CUST_ADDRESS_2_EXT ,
8863 CUST_ADDRESS_3_EXT = g_header_rec.CUST_ADDRESS_3_EXT ,
8864 CUST_ADDRESS_4_EXT = g_header_rec.CUST_ADDRESS_4_EXT ,
8865 CUST_CITY_EXT = g_header_rec.CUST_CITY_EXT ,
8866 CUST_COUNTRY_EXT = g_header_rec.CUST_COUNTRY_EXT ,
8867 CUST_COUNTY_EXT = g_header_rec.CUST_COUNTY_EXT ,
8868 CUSTOMER_EXT = g_header_rec.CUSTOMER_EXT ,
8869 CUST_NAME_EXT = g_header_rec.CUST_NAME_EXT ,
8870 CUST_POSTAL_CD_EXT = g_header_rec.CUST_POSTAL_CD_EXT ,
8871 CUST_PROVINCE_EXT = g_header_rec.CUST_PROVINCE_EXT ,
8872 CUST_STATE_EXT = g_header_rec.CUST_STATE_EXT ,
8873 CUSTOMER_ID = g_header_rec.CUSTOMER_ID ,
8874 ECE_PRIMARY_ADDRESS_ID = g_header_rec.ECE_PRIMARY_ADDRESS_ID ,
8875 ECE_TP_LOCATION_CODE_EXT = g_header_rec.ECE_TP_LOCATION_CODE_EXT ,
8876 ECE_TP_TRANSLATOR_CODE = g_header_rec.ECE_TP_TRANSLATOR_CODE ,
8877 EDI_CONTROL_NUM_1 = g_header_rec.EDI_CONTROL_NUM_1 ,
8878 EDI_CONTROL_NUM_2 = g_header_rec.EDI_CONTROL_NUM_2 ,
8879 EDI_CONTROL_NUM_3 = g_header_rec.EDI_CONTROL_NUM_3 ,
8880 EDI_TEST_INDICATOR = g_header_rec.EDI_TEST_INDICATOR ,
8881 HEADER_CONTACT_CODE_1 = g_header_rec.HEADER_CONTACT_CODE_1 ,
8882 HEADER_CONTACT_CODE_2 = g_header_rec.HEADER_CONTACT_CODE_2 ,
8883 HEADER_CONTACT_VALUE_1 = g_header_rec.HEADER_CONTACT_VALUE_1 ,
8884 HEADER_CONTACT_VALUE_2 = g_header_rec.HEADER_CONTACT_VALUE_2 ,
8885 HEADER_NOTE_TEXT = g_header_rec.HEADER_NOTE_TEXT ,
8886 HEADER_REF_CODE_1 = g_header_rec.HEADER_REF_CODE_1 ,
8887 HEADER_REF_CODE_2 = g_header_rec.HEADER_REF_CODE_2 ,
8888 HEADER_REF_CODE_3 = g_header_rec.HEADER_REF_CODE_3 ,
8889 HEADER_REF_VALUE_1 = g_header_rec.HEADER_REF_VALUE_1 ,
8890 HEADER_REF_VALUE_2 = g_header_rec.HEADER_REF_VALUE_2 ,
8891 HEADER_REF_VALUE_3 = g_header_rec.HEADER_REF_VALUE_3 ,
8892 PROCESS_STATUS = g_schedule_PS,
8893 SCHEDULE_HEADER_ID = g_header_rec.SCHEDULE_HEADER_ID ,
8894 SCHEDULE_TYPE = g_header_rec.SCHEDULE_TYPE ,
8895 SCHEDULE_TYPE_EXT = g_header_rec.SCHEDULE_TYPE_EXT ,
8896 SCHED_GENERATION_DATE = g_header_rec.SCHED_GENERATION_DATE ,
8897 SCHED_HORIZON_END_DATE = g_header_rec.SCHED_HORIZON_END_DATE ,
8898 SCHED_HORIZON_START_DATE = g_header_rec.SCHED_HORIZON_START_DATE ,
8899 SCHEDULE_PURPOSE = g_header_rec.SCHEDULE_PURPOSE ,
8900 SCHEDULE_PURPOSE_EXT = g_header_rec.SCHEDULE_PURPOSE_EXT ,
8901 SCHEDULE_REFERENCE_NUM = g_header_rec.SCHEDULE_REFERENCE_NUM ,
8902 SCHEDULE_SOURCE = g_header_rec.SCHEDULE_SOURCE ,
8903 LAST_UPDATE_DATE = sysdate,
8904 LAST_UPDATED_BY = fnd_global.user_id ,
8905 CREATION_DATE = g_header_rec.CREATION_DATE ,
8906 CREATED_BY = g_header_rec.CREATED_BY ,
8907 ATTRIBUTE_CATEGORY = g_header_rec.ATTRIBUTE_CATEGORY ,
8908 ATTRIBUTE1 = g_header_rec.ATTRIBUTE1 ,
8909 ATTRIBUTE2 = g_header_rec.ATTRIBUTE2 ,
8910 ATTRIBUTE3 = g_header_rec.ATTRIBUTE3 ,
8911 ATTRIBUTE4 = g_header_rec.ATTRIBUTE4 ,
8912 ATTRIBUTE5 = g_header_rec.ATTRIBUTE5 ,
8913 ATTRIBUTE6 = g_header_rec.ATTRIBUTE6 ,
8914 ATTRIBUTE7 = g_header_rec.ATTRIBUTE7 ,
8915 ATTRIBUTE8 = g_header_rec.ATTRIBUTE8 ,
8916 ATTRIBUTE9 = g_header_rec.ATTRIBUTE9 ,
8917 ATTRIBUTE10 = g_header_rec.ATTRIBUTE10 ,
8918 ATTRIBUTE11 = g_header_rec.ATTRIBUTE11 ,
8919 ATTRIBUTE12 = g_header_rec.ATTRIBUTE12 ,
8920 ATTRIBUTE13 = g_header_rec.ATTRIBUTE13 ,
8921 ATTRIBUTE14 = g_header_rec.ATTRIBUTE14 ,
8922 ATTRIBUTE15 = g_header_rec.ATTRIBUTE15 ,
8923 LAST_UPDATE_LOGIN = fnd_global.login_id ,
8924 REQUEST_ID = fnd_global.conc_REQUEST_ID ,
8925 PROGRAM_APPLICATION_ID = fnd_global.PROG_APPL_ID ,
8926 PROGRAM_ID = fnd_global.conc_PROGRAM_ID ,
8927 PROGRAM_UPDATE_DATE = sysdate
8928 WHERE header_id = g_header_rec.header_id;
8929
8930 --
8931 IF (l_debug <> -1) THEN
8932 rlm_core_sv.dlog(C_DEBUG,'Number of Interface header updated',SQL%ROWCOUNT);
8933 rlm_core_sv.dpop(C_SDEBUG);
8934 END IF;
8935
8936 EXCEPTION
8937 WHEN OTHERS THEN
8938 --
8939 rollback;
8940 rlm_message_sv.sql_error('rlm_validateDemand_sv.UpdateInterfaceHeaders: ',
8941 v_Progress);
8942 --
8943 IF (l_debug <> -1) THEN
8944 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
8945 END IF;
8946 raise;
8947 --
8948 END UpdateInterfaceHeaders;
8949
8950 /*===========================================================================
8951
8952 FUNCTION NAME: PostValidation
8953
8954 ===========================================================================*/
8955 PROCEDURE PostValidation
8956 IS
8957 v_Status BOOLEAN := TRUE;
8958 v_Progress VARCHAR(3) := '010';
8959 e_ArchiveAPIFailed EXCEPTION;
8960
8961 BEGIN
8962 --
8963 IF (l_debug <> -1) THEN
8964 rlm_core_sv.dpush(C_SDEBUG,'PostValidation');
8965 rlm_core_sv.dlog(C_DEBUG,'Header_id',g_Header_Rec.header_id);
8966 END IF;
8967 --
8968 v_Status := rlm_ad_sv.Archive_Demand(g_Header_Rec.header_id);
8969 --
8970 v_Progress := '020';
8971 --
8972 IF NOT v_Status THEN
8973 raise e_ArchiveAPIFailed;
8974 END IF;
8975 --
8976 IF (l_debug <> -1) THEN
8977 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
8978 rlm_core_sv.dpop(C_SDEBUG);
8979 END IF;
8980 --
8981 EXCEPTION
8982 WHEN e_ArchiveAPIFailed THEN
8983 --
8984 g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
8985 rlm_message_sv.app_error(
8986 x_ExceptionLevel => rlm_message_sv.k_error_level,
8987 x_MessageName => 'RLM_ARCHIVE_API_ERROR',
8988 x_InterfaceHeaderId => g_Header_Rec.header_id,
8989 x_Token1 => 'ERROR',
8990 x_value1 => sqlerrm,
8991 x_ValidationType => 'ARCHIVE');
8992 --
8993 IF (l_debug <> -1) THEN
8994 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: RLM_ARCHIVE_API_ERROR ',v_Progress);
8995 rlm_core_sv.dpop(C_SDEBUG);
8996 END IF;
8997 --
8998 WHEN OTHERS THEN
8999 --
9000 g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
9001 rlm_message_sv.sql_error('rlm_validateDemand_sv.PostValidation: ',
9002 v_Progress);
9003 --
9004 IF (l_debug <> -1) THEN
9005 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9006 END IF;
9007 raise;
9008 --
9009 END PostValidation;
9010
9011 /*===========================================================================
9012
9013 PROCEDURE CallSetups
9014
9015 ===========================================================================*/
9016 FUNCTION CallSetups( x_Group_rec IN OUT NOCOPY t_Group_rec,
9017 x_header_rec IN rlm_interface_headers%ROWTYPE,
9018 x_lines_rec IN rlm_interface_lines%ROWTYPE)
9019 RETURN BOOLEAN
9020 IS
9021
9022 v_SetupTerms_rec rlm_setup_terms_sv.setup_terms_rec_typ;
9023 v_TermsLevel VARCHAR2(30) := NULL;
9024 v_ReturnStatus BOOLEAN;
9025 v_ReturnMsg VARCHAR2(3000);
9026 e_NoSetupTerms EXCEPTION;
9027 --e_skip_callsetup EXCEPTION; --Commented as part of Bugfix 8693697
9028
9029 BEGIN
9030 --
9031 IF (l_debug <> -1) THEN
9032 rlm_core_sv.dpush(C_SDEBUG,'CallSetups');
9033 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.ship_from_org_id',
9034 x_lines_rec.ship_from_org_id);
9035 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.cust_ship_from_org_ext',
9036 x_lines_rec.cust_ship_from_org_ext);
9037 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.customer_id',
9038 x_header_rec.customer_id);
9039 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.ship_to_address_id',
9040 x_lines_rec.ship_to_address_id);
9041 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.customer_item_id',
9042 x_lines_rec.customer_item_id);
9043 END IF;
9044 --
9045 -- NOTE: call setupAPI to poulate setup info in the group rec:
9046 -- schedule precedence,match within/across strings
9047 -- firm disposition code and offset days, order header id
9048 --
9049 -- Bug 5098241
9050 -- For ATP item we expect the ship_from_org_id and
9051 -- cust_ship_from_org_ext to be null. If ship_from_org_id is null
9052 -- and cust_ship_from_org_ext is not null, then this means that for
9053 -- a non-ATP item, we have failed to derive the ship_from_org_id
9054 -- and for this reason we won't be able to get the setup terms.
9055 --
9056 --Commented as part of Bugfix 8693697
9057 /* IF (x_lines_rec.cust_ship_from_org_ext IS NOT NULL)
9058 AND (x_lines_rec.ship_from_org_id IS NULL)
9059 THEN
9060 RAISE e_skip_callsetup;
9061 END IF;*/ --Bugfix 8693697 End
9062
9063 RLM_TPA_SV.get_setup_terms(x_lines_rec.ship_from_org_id,
9064 x_header_rec.customer_id,
9065 x_lines_rec.ship_to_address_id,
9066 x_lines_rec.customer_item_id,
9067 v_TermsLevel,
9068 v_SetupTerms_rec,
9069 v_ReturnMsg, -- For Patch for Nov17 freeze
9070 v_ReturnStatus);
9071 --
9072 IF (l_debug <> -1) THEN
9073 rlm_core_sv.dlog(C_DEBUG, 'v_TermsLevel', v_TermsLevel);
9074 rlm_core_sv.dlog(C_DEBUG, 'v_ReturnStatus', v_ReturnStatus);
9075 rlm_core_sv.dlog(C_DEBUG,'v_SetupTerms_rec.schedule_hierarchy_code',
9076 v_SetupTerms_rec.schedule_hierarchy_code);
9077 rlm_core_sv.dlog(C_DEBUG,'v_SetupTerms_rec.header_id',
9078 v_SetupTerms_rec.header_id);
9079 rlm_core_sv.dlog(C_DEBUG, 'v_SetupTerms_rec.blanket_number',
9080 v_SetupTerms_rec.blanket_number);
9081 END IF;
9082 --
9083 IF v_ReturnStatus THEN
9084 --
9085 x_Group_rec.setup_terms_rec := v_SetupTerms_rec;
9086 --
9087 ELSE
9088 --
9089 IF (l_debug <> -1) THEN
9090 rlm_core_sv.dlog(C_DEBUG,'setups failed');
9091 END IF;
9092 --
9093 RAISE e_NoSetupTerms;
9094 --
9095 END IF;
9096 --
9097 IF (l_debug <> -1) THEN
9098 rlm_core_sv.dpop(C_SDEBUG);
9099 END IF;
9100 --
9101 RETURN TRUE;
9102 --
9103 EXCEPTION
9104 --
9105 -- bug 5098241
9106 --Commented as part of Bugfix 8693697
9107 /* WHEN e_skip_callsetup THEN
9108 --
9109
9110 IF (l_debug <> -1) THEN
9111 rlm_core_sv.dlog(C_SDEBUG,'SetupAPI failed');
9112 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: e_skip_callsetup');
9113 END IF;
9114 --
9115 RETURN FALSE;*/ --Bugfix 8693697 End
9116 --
9117 WHEN e_NoSetupTerms THEN
9118 --
9119 --g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
9120 IF(v_SetupTerms_rec.msg_name = 'RLM_SETUP_CUST_INACTIVE_RECORD') THEN
9121 --
9122 rlm_message_sv.get_msg_text(
9123 x_message_name => v_SetupTerms_rec.msg_name,
9124 x_text => v_ReturnMsg,
9125 x_token1 => 'CUSTOMER',
9126 x_value1 => rlm_core_sv.get_customer_name(x_header_rec.customer_id),
9127 x_token2 => 'SHIPFROM',
9128 x_value2 => rlm_core_sv.get_ship_from(x_lines_rec.ship_from_org_id),
9129 x_token3 => 'SHIPTO',
9130 x_value3 => RLM_CORE_SV.get_ship_to(x_lines_rec.ship_to_address_id),
9131 x_token4 => 'ITEM',
9132 x_value4 => RLM_CORE_SV.get_item_number(x_lines_rec.customer_item_id)
9133 );
9134 --
9135 END IF;
9136
9137 rlm_message_sv.app_error(
9138 x_ExceptionLevel => rlm_message_sv.k_error_level,
9139 x_MessageName => 'RLM_SETUPAPI_FAILED',
9140 x_ChildMessageName => v_SetupTerms_rec.msg_name,
9141 x_InterfaceHeaderId => x_lines_rec.header_id,
9142 x_InterfaceLineId => x_lines_rec.line_id,
9143 x_Token1 => 'ERROR',
9144 x_value1 => v_ReturnMsg,
9145 x_ValidationType => 'SETUPS');
9146 --
9147 IF (l_debug <> -1) THEN
9148 rlm_core_sv.dlog(C_SDEBUG,'SetupAPI failed');
9149 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SETUPAPI_FAILED');
9150 END IF;
9151 --
9152 RETURN FALSE;
9153 --
9154 WHEN OTHERS THEN
9155 --
9156 --g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
9157 --
9158 IF (l_debug <> -1) THEN
9159 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9160 END IF;
9161 --
9162 raise; /* should we do a raise here */
9163 --
9164 END CallSetups;
9165
9166 /*=============================================================================
9167 PROCEDURE NAME: ValidForecastDesig
9168
9169 ==============================================================================*/
9170 PROCEDURE ValidForecastDesig(
9171 x_setup_terms_rec IN RLM_SETUP_TERMS_SV.setup_terms_rec_typ,
9172 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
9173 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE,
9174 x_ForecastDesignator IN OUT NOCOPY VARCHAR2)
9175 IS
9176 --
9177 v_progress VARCHAR2(3) := '010';
9178 IsMRPForecastFence BOOLEAN := FALSE;
9179 v_mrp_cnt NUMBER := 0;
9180 --
9181 BEGIN
9182 --
9183 IF (l_debug <> -1) THEN
9184 rlm_core_sv.dpush(C_SDEBUG, 'ValidForecastDesig');
9185 rlm_core_sv.dlog(C_DEBUG, 'schedule type',x_header_rec.schedule_type);
9186 rlm_core_sv.dlog(C_DEBUG, 'pln_mrp_forecast_day_from',
9187 x_setup_terms_rec.pln_mrp_forecast_day_from);
9188 rlm_core_sv.dlog(C_DEBUG, 'shp_mrp_forecast_day_from',
9189 x_setup_terms_rec.shp_mrp_forecast_day_from);
9190 rlm_core_sv.dlog(C_DEBUG, 'seq_mrp_forecast_day_from',
9191 x_setup_terms_rec.seq_mrp_forecast_day_from);
9192 END IF;
9193 --
9194 IF rlm_message_sv.check_dependency('FORECASTDESIGNATOR') THEN
9195 --
9196 IF x_header_rec.schedule_type = k_PLANNING AND
9197 (x_setup_terms_rec.pln_mrp_forecast_day_from IS NOT NULL AND
9198 x_setup_terms_rec.pln_mrp_forecast_day_from <> 0) THEN
9199 --
9200 IsMRPForecastFence := TRUE;
9201 --
9202 ELSIF x_header_rec.schedule_type = k_SHIPPING AND
9203 (x_setup_terms_rec.shp_mrp_forecast_day_from IS NOT NULL AND
9204 x_setup_terms_rec.shp_mrp_forecast_day_from <> 0) THEN
9205 --
9206 IsMRPForecastFence := TRUE;
9207 --
9208 ELSIF x_header_rec.schedule_type = k_SEQUENCED AND
9209 (x_setup_terms_rec.seq_mrp_forecast_day_from IS NOT NULL AND
9210 x_setup_terms_rec.seq_mrp_forecast_day_from <> 0) THEN
9211 --
9212 IsMRPForecastFence := TRUE;
9213 --
9214 END IF;
9215
9216 IF NOT IsMRPForecastFence THEN
9217 --
9218 -- We need to check whether any lines have been interfaced with the item detail
9219 -- type 6 since the forecast designator needs to be validated even in that instance
9220 --
9221 SELECT COUNT(*)
9222 INTO v_mrp_cnt
9223 FROM rlm_interface_lines
9224 WHERE item_detail_type = '6'
9225 AND header_id = x_header_rec.header_id
9226 AND line_id = x_lines_rec.line_id;
9227 --
9228 IF (l_debug <> -1) THEN
9229 rlm_core_sv.dlog(C_DEBUG,'number of lines interfaced as MRP forecast ',v_mrp_cnt);
9230 END IF;
9231 --
9232 IF v_mrp_cnt > 0 THEN
9233 --
9234 IsMRPForecastFence := TRUE;
9235 --
9236 END IF;
9237 --
9238 END IF;
9239 --
9240 IF IsMRPForecastFence THEN
9241 --
9242 rlm_tpa_sv.GetDesignator(
9243 NULL,
9244 NULL,
9245 x_header_rec.Customer_id,
9246 x_lines_rec.Ship_From_Org_Id,
9247 x_lines_rec.ship_to_site_use_id ,
9248 x_lines_rec.bill_to_site_use_id,
9249 x_lines_rec.bill_to_address_Id,
9250 x_ForecastDesignator);
9251 --
9252 IF (l_debug <> -1) THEN
9253 rlm_core_sv.dlog(C_DEBUG,'x_ForecastDesignator',x_ForecastDesignator);
9254 END IF;
9255 --
9256 IF x_ForecastDesignator is NULL THEN
9257 --
9258 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
9259 rlm_message_sv.app_error(
9260 x_ExceptionLevel => rlm_message_sv.k_error_level,
9261 x_MessageName => 'RLM_NO_FORECAST_DESIG',
9262 x_InterfaceHeaderId => x_lines_rec.header_id,
9263 x_InterfaceLineId => x_lines_rec.line_id,
9264 x_token1=>'CUST',
9265 x_value1=>
9266 rlm_core_sv.get_customer_name(x_header_rec.customer_id),
9267 x_ValidationType => 'FORECASTDESIGNATOR');
9268 --
9269 END IF;
9270 --
9271 END IF;
9272 --
9273 END IF;
9274 --
9275 IF (l_debug <> -1) THEN
9276 rlm_core_sv.dpop(C_SDEBUG);
9277 END IF;
9278 --
9279 EXCEPTION
9280 --
9281 WHEN OTHERS THEN
9282 --
9283 IF (l_debug <> -1) THEN
9284 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9285 END IF;
9286 --
9287 raise;
9288 END ValidForecastDesig;
9289
9290 /*===========================================================================
9291
9292 FUNCTION NAME: PrintTable
9293
9294 ===========================================================================*/
9295 PROCEDURE PrintTable(v_LinesTab IN t_Lines_Tab,
9296 i IN NUMBER)
9297 IS
9298 BEGIN
9299 --
9300 IF (l_debug <> -1) THEN
9301 rlm_core_sv.dpush(C_SDEBUG,'PrintTable');
9302 rlm_core_sv.dlog(C_DEBUG,'v_LinesTab.COUNT',v_LinesTab.COUNT);
9303 END IF;
9304 --
9305 IF i is not NULL THEN
9306 --
9307 IF (l_debug <> -1) THEN
9308 rlm_core_sv.dlog(C_DEBUG,'process_status',v_LinesTab(i).process_status);
9309 rlm_core_sv.dlog(C_DEBUG,'cust_ship_from_org_ext',v_LinesTab(i).cust_ship_from_org_ext);
9310 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id',v_LinesTab(i).ship_from_org_id);
9311 rlm_core_sv.dlog(C_DEBUG,'cust_ship_to_ext',v_LinesTab(i).cust_ship_to_ext);
9312 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id',v_LinesTab(i).ship_to_address_id);
9313 rlm_core_sv.dlog(C_DEBUG,'supplier_item_ext',v_LinesTab(i).supplier_item_ext);
9314 rlm_core_sv.dlog(C_DEBUG,'Customer_Item_Ext',v_LinesTab(i).Customer_Item_Ext);
9315 rlm_core_sv.dlog(C_DEBUG,'Customer_Item_Id',v_LinesTab(i).Customer_Item_Id);
9316 rlm_core_sv.dlog(C_DEBUG,'INVENTORY_ITEM_ID',v_LinesTab(i).INVENTORY_ITEM_ID);
9317 rlm_core_sv.dlog(C_DEBUG,'CUST_BILL_TO_EXT',v_LinesTab(i).CUST_BILL_TO_EXT);
9318 rlm_core_sv.dlog(C_DEBUG,'BILL_TO_ADDRESS_ID',v_LinesTab(i).BILL_TO_ADDRESS_ID);
9319 rlm_core_sv.dlog(C_DEBUG,'CUST_INTRMD_SHIP_TO_EXT',v_LinesTab(i).CUST_INTRMD_SHIP_TO_EXT);
9320 rlm_core_sv.dlog(C_DEBUG,'INTRMD_SHIP_TO_ID',v_LinesTab(i).INTRMD_SHIP_TO_ID);
9321 rlm_core_sv.dlog(C_DEBUG,'ITEM_DETAIL_TYPE',v_LinesTab(i).ITEM_DETAIL_TYPE);
9322 rlm_core_sv.dlog(C_DEBUG,'ITEM_DETAIL_SUBTYPE',v_LinesTab(i).ITEM_DETAIL_SUBTYPE);
9323 rlm_core_sv.dlog(C_DEBUG,'order_header_id',v_LinesTab(i).order_header_id);
9324 rlm_core_sv.dlog(C_DEBUG,'ship_del_rule_name',v_LinesTab(i).ship_del_rule_name);
9325 END IF;
9326 --
9327 ELSE
9328 --
9329 For i IN 1..v_LinesTab.COUNT LOOP
9330 --
9331 IF (l_debug <> -1) THEN
9332 rlm_core_sv.dlog(C_DEBUG,'process_status',v_LinesTab(i).process_status);
9333 rlm_core_sv.dlog(C_DEBUG,'cust_ship_from_org_ext',v_LinesTab(i).cust_ship_from_org_ext);
9334 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id',v_LinesTab(i).ship_from_org_id);
9335 rlm_core_sv.dlog(C_DEBUG,'cust_ship_to_ext',v_LinesTab(i).cust_ship_to_ext);
9336 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id',v_LinesTab(i).ship_to_address_id);
9337 rlm_core_sv.dlog(C_DEBUG,'supplier_item_ext',v_LinesTab(i).supplier_item_ext);
9338 rlm_core_sv.dlog(C_DEBUG,'Customer_Item_Ext',v_LinesTab(i).Customer_Item_Ext);
9339 rlm_core_sv.dlog(C_DEBUG,'Customer_Item_Id',v_LinesTab(i).Customer_Item_Id);
9340 rlm_core_sv.dlog(C_DEBUG,'INVENTORY_ITEM_ID',v_LinesTab(i).INVENTORY_ITEM_ID);
9341 rlm_core_sv.dlog(C_DEBUG,'CUST_BILL_TO_EXT',v_LinesTab(i).CUST_BILL_TO_EXT);
9342 rlm_core_sv.dlog(C_DEBUG,'BILL_TO_ADDRESS_ID',v_LinesTab(i).BILL_TO_ADDRESS_ID);
9343 rlm_core_sv.dlog(C_DEBUG,'CUST_INTRMD_SHIP_TO_EXT',v_LinesTab(i).CUST_INTRMD_SHIP_TO_EXT);
9344 rlm_core_sv.dlog(C_DEBUG,'INTRMD_SHIP_TO_ID',v_LinesTab(i).INTRMD_SHIP_TO_ID);
9345 rlm_core_sv.dlog(C_DEBUG,'ITEM_DETAIL_TYPE',v_LinesTab(i).ITEM_DETAIL_TYPE);
9346 rlm_core_sv.dlog(C_DEBUG,'ITEM_DETAIL_SUBTYPE',v_LinesTab(i).ITEM_DETAIL_SUBTYPE);
9347 rlm_core_sv.dlog(C_DEBUG,'order_header_id',v_LinesTab(i).order_header_id);
9348 rlm_core_sv.dlog(C_DEBUG,'ship_del_rule_name',v_LinesTab(i).ship_del_rule_name);
9349 END IF;
9350 --
9351 END LOOP;
9352 --
9353 END IF;
9354 --
9355 IF (l_debug <> -1) THEN
9356 rlm_core_sv.dpop(C_SDEBUG);
9357 END IF;
9358 --
9359 EXCEPTION
9360 WHEN OTHERS THEN
9361 --
9362 IF (l_debug <> -1) THEN
9363 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9364 END IF;
9365 --
9366 raise;
9367 END PrintTable;
9368
9369
9370 /*===========================================================================
9371
9372 FUNCTION NAME: GetTPContext
9373
9374 ===========================================================================*/
9375 PROCEDURE GetTPContext(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
9376 x_lines_rec IN RLM_INTERFACE_LINES%ROWTYPE,
9377 x_customer_number OUT NOCOPY VARCHAR2,
9378 x_ship_to_ece_locn_code OUT NOCOPY VARCHAR2,
9379 x_bill_to_ece_locn_code OUT NOCOPY VARCHAR2,
9380 x_inter_ship_to_ece_locn_code OUT NOCOPY VARCHAR2,
9381 x_tp_group_code OUT NOCOPY VARCHAR2)
9382 IS
9383 v_Progress VARCHAR2(3) := '010';
9384
9385 BEGIN
9386 --
9387 IF (l_debug <> -1) THEN
9388 rlm_core_sv.dpush(C_SDEBUG,'GetTPContext');
9389 END IF;
9390 --
9391 IF x_header_rec.ECE_TP_LOCATION_CODE_EXT is NOT NULL THEN
9392 -- Following query is changed as per TCA obsolescence project.
9393 SELECT ETG.TP_GROUP_CODE
9394 INTO x_tp_group_code
9395 FROM ECE_TP_GROUP ETG,
9396 ECE_TP_HEADERS ETH,
9397 HZ_CUST_ACCT_SITES ACCT_SITE
9398 WHERE ETG.TP_GROUP_ID = ETH.TP_GROUP_ID
9399 and ETH.TP_HEADER_ID = ACCT_SITE.TP_HEADER_ID
9400 and ACCT_SITE.CUST_ACCOUNT_ID = x_header_rec.CUSTOMER_ID
9401 and ACCT_SITE.ECE_TP_LOCATION_CODE = x_header_rec.ECE_TP_LOCATION_CODE_EXT;
9402 ELSE
9403 x_tp_group_code := x_header_rec.ECE_TP_TRANSLATOR_CODE;
9404 END IF;
9405 --
9406 x_ship_to_ece_locn_code := x_header_rec.ECE_TP_LOCATION_CODE_EXT;
9407
9408 IF x_ship_to_ece_locn_code is NULL THEN
9409 x_ship_to_ece_locn_code := x_lines_rec.cust_ship_to_ext;
9410 END IF;
9411
9412 x_bill_to_ece_locn_code := x_lines_rec.cust_bill_to_ext;
9413 x_inter_ship_to_ece_locn_code := x_lines_rec.cust_intrmd_ship_to_ext;
9414
9415 IF x_header_rec.customer_id is NOT NULL THEN
9416 -- Following query is changed as per TCA obsolescence project.
9417 SELECT ACCOUNT_NUMBER
9418 INTO x_customer_number
9419 FROM HZ_CUST_ACCOUNTS CUST_ACCT
9420 WHERE CUST_ACCT.CUST_ACCOUNT_ID = x_header_rec.Customer_Id;
9421 END IF;
9422 --
9423 IF (l_debug <> -1) THEN
9424 rlm_core_sv.dlog(C_DEBUG,'customer_id', x_customer_number);
9425 rlm_core_sv.dlog(C_DEBUG,'x_ship_to_ece_locn_code', x_ship_to_ece_locn_code);
9426 rlm_core_sv.dlog(C_DEBUG,'x_inter_ship_to_ece_locn_code', x_inter_ship_to_ece_locn_code);
9427 rlm_core_sv.dlog(C_DEBUG,'x_bill_to_ece_loc_code', x_bill_to_ece_locn_code);
9428 rlm_core_sv.dlog(C_DEBUG,'x_tp_group_code', x_tp_group_code);
9429 rlm_core_sv.dpop(C_SDEBUG);
9430 END IF;
9431 --
9432 EXCEPTION
9433 WHEN NO_DATA_FOUND THEN
9434 --
9435 x_customer_number := NULL;
9436 --
9437 IF (l_debug <> -1) THEN
9438 rlm_core_sv.dlog(C_DEBUG, 'No data found for' , x_header_rec.customer_id);
9439 rlm_core_sv.dpop(C_SDEBUG);
9440 END IF;
9441
9442 WHEN OTHERS THEN
9443 rlm_message_sv.sql_error('rlm_validatedemand_sv.GetTPContext', v_Progress);
9444 --
9445 IF (l_debug <> -1) THEN
9446 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9447 END IF;
9448 --
9449 raise;
9450
9451 END GetTPContext;
9452
9453 /*===========================================================================
9454
9455 FUNCTION NAME: GetHdrTPContext
9456
9457 ===========================================================================*/
9458 PROCEDURE GetHdrTPContext(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
9459 x_customer_number OUT NOCOPY VARCHAR2,
9460 x_ship_to_ece_locn_code OUT NOCOPY VARCHAR2,
9461 x_bill_to_ece_locn_code OUT NOCOPY VARCHAR2,
9462 x_inter_ship_to_ece_locn_code OUT NOCOPY VARCHAR2,
9463 x_tp_group_code OUT NOCOPY VARCHAR2)
9464 IS
9465 v_Progress VARCHAR2(3) := '010';
9466
9467 BEGIN
9468 --
9469 IF (l_debug <> -1) THEN
9470 rlm_core_sv.dpush(C_SDEBUG,'GetHdrTPContext');
9471 END IF;
9472 --
9473 IF x_header_rec.ECE_TP_LOCATION_CODE_EXT is NOT NULL THEN
9474 -- Following query is changed as per TCA obsolescence project.
9475 SELECT ETG.TP_GROUP_CODE
9476 INTO x_tp_group_code
9477 FROM ECE_TP_GROUP ETG,
9478 ECE_TP_HEADERS ETH,
9479 HZ_CUST_ACCT_SITES ACCT_SITE
9480 WHERE ETG.TP_GROUP_ID = ETH.TP_GROUP_ID
9481 and ETH.TP_HEADER_ID = ACCT_SITE.TP_HEADER_ID
9482 and ACCT_SITE.ECE_TP_LOCATION_CODE = x_header_rec.ECE_TP_LOCATION_CODE_EXT;
9483 ELSE
9484 x_tp_group_code := x_header_rec.ECE_TP_TRANSLATOR_CODE;
9485 END IF;
9486 --
9487
9488 x_ship_to_ece_locn_code := x_header_rec.ECE_TP_LOCATION_CODE_EXT;
9489 x_bill_to_ece_locn_code := NULL;
9490 x_inter_ship_to_ece_locn_code := NULL;
9491
9492 IF x_header_rec.customer_id is NOT NULL THEN
9493 -- Following query is changed as per TCA obsolescence project.
9494 SELECT ACCOUNT_NUMBER
9495 INTO x_customer_number
9496 FROM HZ_CUST_ACCOUNTS CUST_ACCT
9497 WHERE CUST_ACCT.CUST_ACCOUNT_ID = x_header_rec.Customer_Id;
9498 END IF;
9499 --
9500 IF (l_debug <> -1) THEN
9501 rlm_core_sv.dlog(C_DEBUG,'customer_id', x_customer_number);
9502 rlm_core_sv.dlog(C_DEBUG,'x_ship_to_ece_locn_code', x_ship_to_ece_locn_code);
9503 rlm_core_sv.dlog(C_DEBUG,'x_inter_ship_to_ece_locn_code', x_inter_ship_to_ece_locn_code);
9504 rlm_core_sv.dlog(C_DEBUG,'x_bill_to_ece_loc_code', x_bill_to_ece_locn_code);
9505 rlm_core_sv.dlog(C_DEBUG,'x_tp_group_code', x_tp_group_code);
9506 rlm_core_sv.dpop(C_SDEBUG);
9507 END IF;
9508 --
9509 EXCEPTION
9510 WHEN NO_DATA_FOUND THEN
9511 --
9512 x_customer_number := NULL;
9513 --
9514 IF (l_debug <> -1) THEN
9515 rlm_core_sv.dlog(C_DEBUG, 'No data found for' , x_header_rec.customer_id);
9516 rlm_core_sv.dpop(C_SDEBUG);
9517 END IF;
9518
9519 WHEN OTHERS THEN
9520 rlm_message_sv.sql_error('rlm_validatedemand_sv.GetHdrTPContext', v_Progress);
9521 --
9522 IF (l_debug <> -1) THEN
9523 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9524 END IF;
9525 --
9526 raise;
9527
9528 END GetHdrTPContext;
9529
9530 /*=============================================================================
9531 PROCEDURE NAME: SetTPAttCategory
9532 ==============================================================================*/
9533 PROCEDURE SetTPAttCategory (
9534 x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE,
9535 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE,
9536 x_group_rec IN OUT NOCOPY RLM_VALIDATEDEMAND_SV.t_Group_rec) IS
9537 BEGIN
9538 --
9539 IF (l_debug <> -1) THEN
9540 rlm_core_sv.dpush(C_SDEBUG,'SetTPAttCategory');
9541 END IF;
9542 --
9543 x_header_rec.tp_attribute_category := x_header_rec.ece_tp_translator_code;
9544 x_lines_rec.tp_attribute_category := x_header_rec.ece_tp_translator_code;
9545 --
9546 IF (l_debug <> -1) THEN
9547 rlm_core_sv.dpop(C_SDEBUG);
9548 END IF;
9549 --
9550 EXCEPTION
9551 WHEN OTHERS THEN
9552 --
9553 IF (l_debug <> -1) THEN
9554 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9555 END IF;
9556 --
9557 END SetTPAttCategory;
9558
9559 /*=============================================================================
9560 PROCEDURE NAME: SetHdrTPAttCategory
9561 ==============================================================================*/
9562 PROCEDURE SetHdrTPAttCategory (
9563 x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE) IS
9564 BEGIN
9565 --
9566 IF (l_debug <> -1) THEN
9567 rlm_core_sv.dpush(C_SDEBUG,'SetHdrTPAttCategory');
9568 END IF;
9569 --
9570 --x_header_rec.tp_attribute_category := NVL(x_header_rec.ece_tp_translator_code, x_header_rec.customer_ext);
9571 --
9572 IF (l_debug <> -1) THEN
9573 rlm_core_sv.dpop(C_SDEBUG);
9574 END IF;
9575 --
9576 EXCEPTION
9577 WHEN OTHERS THEN
9578 --
9579 IF (l_debug <> -1) THEN
9580 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9581 END IF;
9582
9583 END SetHdrTPAttCategory;
9584
9585 /*=============================================================================
9586 PROCEDURE NAME: SetLineTPAttCategory
9587 ==============================================================================*/
9588 PROCEDURE SetLineTPAttCategory (
9589 x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE,
9590 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE,
9591 x_group_rec IN OUT NOCOPY RLM_VALIDATEDEMAND_SV.t_Group_rec) IS
9592 BEGIN
9593 --
9594 IF (l_debug <> -1) THEN
9595 rlm_core_sv.dpush(C_SDEBUG,'SetLineTPAttCategory');
9596 END IF;
9597 --
9598 --x_header_rec.tp_attribute_category := NVL(x_header_rec.ece_tp_translator_code, x_header_rec.customer_ext);
9599 --x_lines_rec.tp_attribute_category := NVL(x_header_rec.ece_tp_translator_code, x_header_rec.customer_ext);
9600 --
9601 IF (l_debug <> -1) THEN
9602 rlm_core_sv.dpop(C_SDEBUG);
9603 END IF;
9604 --
9605 EXCEPTION
9606 WHEN OTHERS THEN
9607 --
9608 IF (l_debug <> -1) THEN
9609 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9610 END IF;
9611
9612 END SetLineTPAttCategory;
9613
9614 /*===========================================================================
9615 FUNCTION NAME: CustomerRelationship
9616 ===========================================================================*/
9617
9618 FUNCTION CustomerRelationship(x_RelatedCustomerId IN NUMBER,
9619 x_customer_id IN NUMBER,
9620 x_header_id IN NUMBER,
9621 x_site_use_code IN VARCHAR2 DEFAULT 'BILL_TO')
9622 RETURN BOOLEAN
9623 IS
9624
9625 v_Progress VARCHAR2(3) := '010';
9626 v_Temp VARCHAR2(10);
9627 v_parameter VARCHAR2(1);
9628 e_no_om_cr EXCEPTION;
9629
9630 BEGIN
9631 IF (l_debug <> -1) THEN
9632 rlm_core_sv.dpush(C_SDEBUG,'CustomerRelationship');
9633 rlm_core_sv.dlog(C_DEBUG,'x_RelatedCustomerId',x_RelatedCustomerId);
9634 rlm_core_sv.dlog(C_DEBUG,'x_customer_id',x_customer_id);
9635 rlm_core_sv.dlog(C_DEBUG,'x_site_use_code',x_site_use_code);
9636 END IF;
9637 --
9638
9639 IF x_RelatedCustomerId <> x_customer_id THEN
9640 --
9641 IF x_site_use_code = 'BILL_TO' THEN
9642 --
9643 rlm_core_sv.dlog(C_DEBUG,'x_site_use_code',x_site_use_code);
9644 --
9645 SELECT 'exists'
9646 INTO v_Temp
9647 FROM HZ_CUST_ACCT_RELATE
9648 WHERE cust_account_id = x_customer_id
9649 AND related_cust_account_id = x_RelatedCustomerId
9650 AND bill_to_flag = 'Y'
9651 AND status='A';
9652 --
9653 ELSE
9654 --
9655 SELECT 'exists'
9656 INTO v_Temp
9657 FROM HZ_CUST_ACCT_RELATE
9658 WHERE cust_account_id = x_customer_id
9659 AND related_cust_account_id = x_RelatedCustomerId
9660 AND ship_to_flag = 'Y'
9661 AND status='A';
9662 --
9663 END IF;
9664 --
9665 -- Use Customer relationship only if the OM profile option is set.
9666 --
9667 v_parameter := OE_Sys_Parameters.value('CUSTOMER_RELATIONSHIPS_FLAG',
9668 MO_GLOBAL.get_current_org_id);
9669 --
9670 IF (l_debug <> -1) THEN
9671 rlm_core_sv.dlog(C_DEBUG,'v_parameter',v_parameter);
9672 END IF;
9673 --
9674 IF NVL(v_parameter,'N') NOT IN ('Y','A') THEN
9675 --
9676 raise e_no_om_cr;
9677 --
9678 END IF;
9679 --
9680 END IF;
9681 --
9682 IF (l_debug <> -1) THEN
9683 rlm_core_sv.dpop(C_SDEBUG);
9684 END IF;
9685 --
9686 RETURN(TRUE);
9687
9688 EXCEPTION
9689 --
9690 WHEN NO_DATA_FOUND THEN
9691 --
9692 IF (l_debug <> -1) THEN
9693 rlm_core_sv.dlog(C_DEBUG,'NO_DATA_FOUND');
9694 END IF;
9695 --
9696 rlm_message_sv.app_error(
9697 x_ExceptionLevel => rlm_message_sv.k_error_level,
9698 x_MessageName => 'RLM_CUSTOMER_RELATIONSHIP',
9699 x_InterfaceHeaderId => x_header_id,
9700 x_token1=>'CUSTOMER1',
9701 x_value1 => rlm_core_sv.get_customer_name(x_RelatedCustomerId),
9702 x_token2=>'CUSTOMER2',
9703 x_value2 => rlm_core_sv.get_customer_name(x_customer_id)
9704 );
9705 --
9706 IF (l_debug <> -1) THEN
9707 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUSTOMER_RELATIONSHIP');
9708 END IF;
9709 --
9710 RETURN(FALSE);
9711 --
9712 WHEN e_no_om_cr THEN
9713 --
9714 rlm_message_sv.app_error(x_ExceptionLevel => rlm_message_sv.k_error_level,
9715 x_MessageName => 'RLM_OM_CUSTOMER_RELATIONSHIP',
9716 x_InterfaceHeaderId => x_header_id);
9717 --
9718 IF (l_debug <> -1) THEN
9719 rlm_core_sv.dlog(C_DEBUG,'e_no_om_cr');
9720 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_OM_CUSTOMER_RELATIONSHIP');
9721 END IF;
9722 --
9723 RETURN(FALSE);
9724 --
9725 WHEN OTHERS THEN
9726 --
9727 rlm_message_sv.sql_error('RLM_VALIDATEDEMAND_SV.CustomerRelationship',
9728 v_Progress);
9729 --
9730 IF (l_debug <> -1) THEN
9731 rlm_core_sv.dlog (C_DEBUG,'SQL Error: ',substr(sqlerrm,1,300));
9732 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
9733 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: OTHER - sql error');
9734 END IF;
9735 --
9736 raise;
9737 --
9738 END CustomerRelationship;
9739
9740
9741 /*===========================================================================
9742
9743 PROCEDURE NAME: ValidateDateTypeATP
9744
9745 ===========================================================================*/
9746 PROCEDURE ValidateDateTypeATP(
9747 x_line IN RLM_INTERFACE_LINES%ROWTYPE)
9748 IS
9749 --global_atp
9750 v_order_date_type_code VARCHAR2(30);
9751 v_order_number NUMBER;
9752 BEGIN
9753 --
9754 IF (l_debug <> -1) THEN
9755 rlm_core_sv.dpush(C_SDEBUG, 'ValidateDateTypeATP');
9756 END IF;
9757 --
9758 IF RLM_MANAGE_DEMAND_SV.IsATPItem(x_line.ship_from_org_id,
9759 x_line.inventory_item_id) THEN
9760
9761 IF x_line.item_detail_type IN ('0','1','2') THEN
9762 --
9763 BEGIN
9764 SELECT DECODE(order_date_type_code, 'ARRIVAL', 'DELIVER', 'SHIP'),
9765 order_number
9766 INTO v_order_date_type_code, v_order_number
9767 FROM oe_order_headers_all
9768 WHERE header_id = x_line.order_header_id;
9769 EXCEPTION
9770 WHEN NO_DATA_FOUND THEN
9771 RAISE;
9772 WHEN OTHERS THEN
9773 RAISE;
9774 END;
9775 --
9776 IF (l_debug <> -1) THEN
9777 rlm_core_sv.dlog(C_DEBUG, 'OM Date Type', v_order_date_type_code);
9778 rlm_core_sv.dlog(C_DEBUG, 'RLM Date Type', x_line.date_type_code);
9779 END IF;
9780 --
9781 IF v_order_date_type_code <> x_line.date_type_code THEN
9782 --
9783 IF (l_debug <> -1) THEN
9784 rlm_core_sv.dlog(C_DEBUG, 'RLM line date type does not match OM date type');
9785 END IF;
9786 --
9787 rlm_message_sv.app_error(
9788 x_ExceptionLevel => rlm_message_sv.k_warn_level,
9789 x_MessageName => 'RLM_MISMATCH_DATE_TYPE',
9790 x_InterfaceHeaderId => x_line.header_id,
9791 x_InterfaceLineId => x_line.line_id,
9792 x_token1=> 'RLM_DATE_TYPE',
9793 x_value1=> rlm_core_sv.get_lookup_meaning(
9794 'RLM_DATE_TYPE_CODE',
9795 x_line.date_type_code),
9796 x_token2=> 'OM_DATE_TYPE',
9797 x_value2=> OE_Id_To_Value.Order_Date_Type(v_order_date_type_code),
9798 x_token3=> 'ORDER',
9799 x_value3=> TO_CHAR(v_order_number),
9800 x_token4=> 'SF',
9801 x_value4=> rlm_core_sv.get_ship_from(x_line.ship_from_org_id),
9802 x_token5=> 'ST',
9803 x_value5=> rlm_core_sv.get_ship_to(x_line.ship_to_address_id),
9804 x_token6=> 'CI',
9805 x_value6=> rlm_core_sv.get_item_number(x_line.customer_item_id));
9806
9807 g_warned := TRUE;
9808 --
9809 END IF;
9810 --
9811 END IF;
9812 --
9813 END IF;
9814 --
9815 IF (l_debug <> -1) THEN
9816 rlm_core_sv.dpop(C_SDEBUG);
9817 END IF;
9818 --
9819 EXCEPTION
9820 WHEN NO_DATA_FOUND THEN
9821 --
9822 IF (l_debug <> -1) THEN
9823 rlm_core_sv.dpop(C_SDEBUG, 'No sales order found');
9824 END IF;
9825
9826 WHEN OTHERS THEN
9827 --
9828 IF (l_debug <> -1) THEN
9829 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9830 END IF;
9831
9832 END ValidateDateTypeATP;
9833
9834
9835 --
9836 -- Blanket Order Procedures
9837 --
9838 /*=======================================================================================
9839
9840 PROCEDURE DeriveBlanketPO
9841
9842 ========================================================================================*/
9843 PROCEDURE DeriveBlanketPO(x_cust_po_num IN RLM_INTERFACE_LINES.cust_po_number%TYPE,
9844 x_Group_rec IN t_Group_rec,
9845 x_header_id IN RLM_INTERFACE_HEADERS.HEADER_ID%TYPE)
9846 IS
9847 --
9848 v_blanket_po VARCHAR2(240);
9849 v_blanket_num NUMBER;
9850 e_POMisMatch EXCEPTION;
9851 --
9852 BEGIN
9853 --
9854 IF (l_debug <> -1) THEN
9855 rlm_core_sv.dpush(C_SDEBUG, 'DeriveBlanketPO');
9856 END IF;
9857 --
9858 SELECT cust_po_number
9859 INTO v_blanket_po
9860 FROM oe_blanket_headers
9861 WHERE order_number = x_Group_rec.setup_terms_rec.blanket_number;
9862 --
9863 IF (l_debug <> -1) THEN
9864 rlm_core_sv.dlog(C_DEBUG, 'Blanket Number', x_Group_rec.setup_terms_rec.blanket_number);
9865 rlm_core_sv.dlog(C_DEBUG, 'Blanket PO number', v_blanket_po);
9866 rlm_core_sv.dlog(C_DEBUG, 'Schedule PO', x_cust_po_num);
9867 END IF;
9868 --
9869 IF (x_cust_po_num IS NOT NULL AND v_blanket_po IS NOT NULL) THEN
9870 --
9871 IF (v_blanket_po <> x_cust_po_num) THEN
9872 --
9873 RAISE e_POMisMatch;
9874 --
9875 END IF;
9876 --
9877 END IF;
9878 --
9879 IF (l_debug <> -1) THEN
9880 rlm_core_sv.dpop(C_SDEBUG);
9881 END IF;
9882 --
9883 EXCEPTION
9884 --
9885 WHEN e_POMisMatch THEN
9886 --
9887 rlm_message_sv.app_error(
9888 x_ExceptionLevel => rlm_message_sv.k_warn_level,
9889 x_MessageName => 'RLM_BLKT_PO_MISMATCH',
9890 x_InterfaceHeaderId => x_header_id,
9891 x_token1=>'SCHED_PO',
9892 x_value1=>x_cust_po_num,
9893 x_token2=>'BLKT_PO',
9894 x_value2=>v_blanket_po,
9895 x_ValidationType => 'PURCHASE_ORDER');
9896 --
9897 IF (l_debug <> -1) THEN
9898 rlm_core_sv.dlog(C_DEBUG, 'WARNING: Mismatch between PO on schedule and blanket order');
9899 rlm_core_sv.dpop(C_SDEBUG, 'RLM_BLKT_PO_MISMATCH');
9900 END IF;
9901 --
9902 WHEN NO_DATA_FOUND THEN
9903 --
9904 rlm_message_sv.app_error(
9905 x_ExceptionLevel => rlm_message_sv.k_warn_level,
9906 x_MessageName => 'RLM_BLANKET_UNDEFINED',
9907 x_InterfaceHeaderId => x_header_id,
9908 x_token1=>'BLANKET_NUM',
9909 x_value1=>x_Group_rec.setup_terms_rec.blanket_number,
9910 x_ValidationType => 'PURCHASE_ORDER');
9911 --
9912 IF (l_debug <> -1) THEN
9913 rlm_core_sv.dlog(C_DEBUG, 'Blanket Order not defined');
9914 rlm_core_sv.dpop(C_SDEBUG, 'RLM_BLANKET_UNDEFINED');
9915 END IF;
9916 --
9917 WHEN OTHERS THEN
9918 --
9919 IF (l_debug <> -1) THEN
9920 rlm_core_sv.dlog(C_DEBUG, 'when others of DeriveBlanketPO');
9921 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9922 END IF;
9923 --
9924 RAISE;
9925 --
9926 END DeriveBlanketPO;
9927
9928
9929 /*===========================================================================
9930
9931 FUNCTION ValidateBlanket
9932
9933 ===========================================================================*/
9934 FUNCTION ValidateBlanket(x_Group_rec IN t_Group_rec,
9935 x_Sched_rec IN RLM_INTERFACE_HEADERS%ROWTYPE)
9936 RETURN BOOLEAN
9937 IS
9938 --
9939 l_reqdate DATE;
9940 h_reqdate DATE;
9941 v_startdate DATE;
9942 v_enddate DATE;
9943 v_onholdflag VARCHAR2(1);
9944 e_BlktStartDate EXCEPTION;
9945 e_BlktEndDate EXCEPTION;
9946 e_BlktOnHold EXCEPTION;
9947 --
9948 BEGIN
9949 --
9950 IF (l_debug <> -1) THEN
9951 rlm_core_sv.dpush(C_SDEBUG, 'ValidateBlanket');
9952 rlm_core_sv.dlog(C_DEBUG, 'Header_id', x_Sched_rec.header_id);
9953 rlm_core_sv.dlog(C_DEBUG, 'Schedule source', x_Sched_rec.schedule_source);
9954 rlm_core_sv.dlog(C_DEBUG, 'Schedule Type', x_Sched_rec.schedule_type);
9955 END IF;
9956 --
9957 IF x_Sched_rec.schedule_type <> 'SEQUENCED' THEN
9958 --
9959 IF (l_debug <> -1) THEN
9960 rlm_core_sv.dlog(C_DEBUG, 'Non-sequenced schedule');
9961 rlm_core_sv.dlog(C_DEBUG, 'Schedule Item Number', x_Group_rec.schedule_item_num);
9962 END IF;
9963 --
9964 SELECT MIN(start_date_time), MAX(start_date_time)
9965 INTO l_reqdate, h_reqdate
9966 FROM rlm_interface_lines
9967 WHERE header_id = x_Sched_rec.header_id AND
9968 schedule_item_num = x_Group_rec.schedule_item_num AND
9969 item_detail_type IN (k_FIRM, k_FORECAST, k_PAST_DUE_FIRM);
9970 --
9971 ELSE
9972 --
9973 IF x_Sched_rec.schedule_source <> 'MANUAL' THEN
9974 --
9975 IF (l_debug <> -1) THEN
9976 rlm_core_sv.dlog(C_DEBUG, 'EDI Sequenced Schedule');
9977 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.cust_ship_from_org_ext', x_Group_rec.cust_ship_from_org_ext);
9978 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.cust_ship_to_ext', x_Group_rec.cust_ship_to_ext);
9979 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.customer_item_ext', x_Group_rec.customer_item_ext);
9980 END IF;
9981 --
9982 SELECT MIN(start_date_time), MAX(start_date_time)
9983 INTO l_reqdate, h_reqdate
9984 FROM rlm_interface_lines
9985 WHERE header_id = x_Sched_rec.header_id AND
9986 cust_ship_from_org_ext = x_Group_rec.cust_ship_from_org_ext AND
9987 cust_ship_to_ext = x_Group_rec.cust_ship_to_ext AND
9988 customer_item_ext = x_Group_rec.customer_item_ext AND
9989 item_detail_type IN (k_FIRM, k_FORECAST, k_PAST_DUE_FIRM);
9990 --
9991 ELSE
9992 --
9993 IF (l_debug <> -1) THEN
9994 rlm_core_sv.dlog(C_DEBUG, 'Manual Sequenced Schedule');
9995 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.ship_from_org_id', x_Group_rec.ship_from_org_id);
9996 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.ship_to_address_id', x_Group_rec.ship_to_address_id);
9997 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.customer_item_id', x_Group_rec.customer_item_id);
9998 END IF;
9999 --
10000 SELECT MIN(start_date_time), MAX(start_date_time)
10001 INTO l_reqdate, h_reqdate
10002 FROM rlm_interface_lines
10003 WHERE header_id = x_Sched_rec.header_id AND
10004 ship_from_org_id = x_Group_rec.ship_from_org_id AND
10005 ship_to_address_id = x_Group_rec.ship_to_address_id AND
10006 customer_item_id = x_Group_rec.customer_item_id AND
10007 item_detail_type IN (k_FIRM, k_FORECAST, k_PAST_DUE_FIRM);
10008 --
10009 END IF;
10010 --
10011 END IF;
10012 --
10013 IF (l_debug <> -1) THEN
10014 rlm_core_sv.dlog(C_DEBUG, 'Lowest request date in current group', l_reqdate);
10015 rlm_core_sv.dlog(C_DEBUG, 'Highest request date in current group', h_reqdate);
10016 END IF;
10017 --
10018 SELECT start_date_active, end_date_active, on_hold_flag
10019 INTO v_startdate, v_enddate, v_onholdflag
10020 FROM oe_blanket_headers_ext
10021 WHERE order_number = x_Group_rec.setup_terms_rec.blanket_number;
10022 --
10023 IF (l_debug <> -1) THEN
10024 rlm_core_sv.dlog(C_DEBUG, 'Blanket Number',x_Group_rec.setup_terms_rec.blanket_number);
10025 rlm_core_sv.dlog(C_DEBUG, 'Blanket Effectivity Start Date', v_startdate);
10026 rlm_core_sv.dlog(C_DEBUG, 'Blanket Effectivity End Date', v_enddate);
10027 rlm_core_sv.dlog(C_DEBUG, 'On Hold Flag', v_onholdflag);
10028 END IF;
10029 --
10030 IF v_onholdflag = 'Y' THEN
10031 --
10032 RAISE e_BlktOnHold;
10033 --
10034 END IF;
10035 --
10036 IF (l_reqdate < v_startdate) THEN
10037 --
10038 RAISE e_BlktStartDate;
10039 --
10040 END IF;
10041 --
10042 IF (v_enddate is NOT NULL) THEN
10043 --
10044 IF (h_reqdate > v_enddate) THEN
10045 --
10046 RAISE e_BlktEndDate;
10047 --
10048 END IF;
10049 --
10050 END IF;
10051 --
10052 IF (l_debug <> -1) THEN
10053 rlm_core_sv.dpop(C_SDEBUG, 'TRUE');
10054 END IF;
10055 --
10056 RETURN TRUE;
10057 --
10058 EXCEPTION
10059 --
10060 WHEN e_BlktOnHold THEN
10061 --
10062 rlm_message_sv.app_error(
10063 x_ExceptionLevel => rlm_message_sv.k_error_level,
10064 x_MessageName => 'RLM_BLANKET_ON_HOLD',
10065 x_InterfaceHeaderId => x_Sched_rec.header_id,
10066 x_InterfaceLineId => NULL,
10067 x_token1=>'BLANKET_NUMBER',
10068 x_value1=>x_Group_rec.setup_terms_rec.blanket_number);
10069 --
10070 IF (l_debug <> -1) THEN
10071 rlm_core_sv.dlog(C_DEBUG, 'Blanket Order on hold');
10072 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
10073 END IF;
10074 --
10075 RETURN FALSE;
10076 --
10077 WHEN e_BlktStartDate THEN
10078 --
10079 rlm_message_sv.app_error(
10080 x_ExceptionLevel => rlm_message_sv.k_error_level,
10081 x_MessageName => 'RLM_STARTDATE_BEFORE_BLANKET',
10082 x_InterfaceHeaderId => x_Sched_rec.header_id,
10083 x_InterfaceLineId => NULL,
10084 x_token1=>'REQDATE',
10085 x_value1=>to_char(l_reqdate, 'MM/DD/YYYY HH24:MI:SS'),
10086 x_token2=>'BLKT_START_DATE',
10087 x_value2=>to_char(v_startdate, 'MM/DD/YYYY HH24:MI:SS'),
10088 x_token3=>'BLANKET_NUM',
10089 x_value3=>x_Group_rec.setup_terms_rec.blanket_number);
10090 --
10091 IF (l_debug <> -1) THEN
10092 rlm_core_sv.dlog(C_DEBUG, 'Lowest request date before effectivity start');
10093 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
10094 END IF;
10095 --
10096 RETURN FALSE;
10097 --
10098 WHEN e_BlktEndDate THEN
10099 --
10100 rlm_message_sv.app_error(
10101 x_ExceptionLevel => rlm_message_sv.k_error_level,
10102 x_MessageName => 'RLM_ENDDATE_AFTER_BLANKET',
10103 x_InterfaceHeaderId => x_Sched_rec.header_id,
10104 x_InterfaceLineId => NULL,
10105 x_token1=>'REQDATE',
10106 x_value1=>to_char(h_reqdate, 'MM/DD/YYYY HH24:MI:SS'),
10107 x_token2=>'BLKT_END_DATE',
10108 x_value2=>to_char(v_enddate, 'MM/DD/YYYY HH24:MI:SS'),
10109 x_token3=>'BLANKET_NUM',
10110 x_value3=>x_Group_rec.setup_terms_rec.blanket_number);
10111 --
10112 IF (l_debug <> -1) THEN
10113 rlm_core_sv.dlog(C_DEBUG, 'Highest request date after effectivity start');
10114 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
10115 END IF;
10116 --
10117 RETURN FALSE;
10118 --
10119 WHEN NO_DATA_FOUND THEN
10120 --
10121 rlm_message_sv.app_error(
10122 x_ExceptionLevel => rlm_message_sv.k_warn_level,
10123 x_MessageName => 'RLM_BLANKET_UNDEFINED',
10124 x_InterfaceHeaderId => x_Sched_rec.header_id,
10125 x_token1=>'BLANKET_NUM',
10126 x_value1=>x_Group_rec.setup_terms_rec.blanket_number);
10127 --
10128 IF (l_debug <> -1) THEN
10129 rlm_core_sv.dlog(C_DEBUG, 'Blanket Order not defined');
10130 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
10131 END IF;
10132 --
10133 RETURN FALSE;
10134 --
10135 WHEN OTHERS THEN
10136 --
10137 IF (l_debug <> -1) THEN
10138 rlm_core_sv.dlog(C_DEBUG, 'When others of ValidateBlanket');
10139 rlm_core_sv.dlog(C_DEBUG, 'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
10140 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
10141 END IF;
10142 --
10143 RETURN FALSE;
10144
10145 END ValidateBlanket;
10146
10147 -- End of package
10148 END RLM_VALIDATEDEMAND_SV;