[Home] [Help]
PACKAGE BODY: APPS.RLM_VALIDATEDEMAND_SV
Source
1 PACKAGE BODY RLM_VALIDATEDEMAND_SV as
2 /* $Header: RLMDPVDB.pls 120.13.12000000.3 2007/07/09 05:51:59 brana 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 v_progress VARCHAR2(3) := '010';
6021 v_int_shp_to_cust_id NUMBER;
6022 e_InvalidIntmdShipTo EXCEPTION;
6023 e_invalidIntmdShiptoId EXCEPTION;
6024 e_InactiveIntmdShipTo EXCEPTION;
6025 e_IntrmdSiteUseInv EXCEPTION;
6026 e_InactiveIntShipSiteUse EXCEPTION;
6027 e_InactiveIntShipTo EXCEPTION;
6028 v_addStatus VARCHAR2(1) := 'I';
6029 v_siteUseStatus VARCHAR2(1) := 'I';
6030 --
6031 BEGIN
6032 --
6033 IF (l_debug <> -1) THEN
6034 rlm_core_sv.dpush(C_SDEBUG,'DeriveIntrmdShipToID');
6035 rlm_core_sv.dlog(C_DEBUG,'Cust_Intrmd_Ship_To_Ext',
6036 x_lines_rec.cust_intrmd_ship_to_ext);
6037 rlm_core_sv.dlog(C_DEBUG,'IntrmdShipToID',x_lines_rec.intrmd_ship_to_id);
6038 END IF;
6039 --
6040 -- IF rlm_message_sv.check_dependency('SHIPTO') THEN
6041 --
6042 IF x_lines_rec.intrmd_ship_to_id IS NULL AND
6043 x_lines_rec.cust_intrmd_ship_to_ext IS NOT NULL THEN
6044 --{
6045 v_progress := '020';
6046 --
6047 IF (l_debug <> -1) THEN
6048 rlm_core_sv.dlog(C_DEBUG,'cust_intrmd_ship_to_ext ',
6049 x_lines_rec.cust_intrmd_ship_to_ext);
6050 END IF;
6051 --
6052 BEGIN
6053 --
6054 -- Following query is changed as per TCA obsolescence project.
6055 -- R12 Perf Bug 4129291 : Use HCSU also in query below
6056 --
6057 SELECT ACCT_SITE.CUST_ACCT_SITE_ID,
6058 ACCT_SITE.STATUS, SITE_USES.STATUS,
6059 SITE_USES.site_use_id
6060 INTO x_lines_rec.intrmd_ship_to_id ,
6061 v_addStatus, v_siteUseStatus,
6062 x_lines_rec.intrmd_st_site_use_id
6063 FROM HZ_CUST_ACCT_SITES ACCT_SITE,
6064 HZ_CUST_SITE_USES_ALL SITE_USES
6065 WHERE acct_site.ece_tp_location_code =
6066 x_lines_rec.cust_intrmd_ship_to_ext
6067 AND acct_site.cust_acct_site_id = site_uses.cust_acct_site_id
6068 AND site_uses.site_use_code = 'SHIP_TO'
6069 AND acct_site.org_id = site_uses.org_id
6070 AND cust_account_id IN
6071 (SELECT to_number(x_header_rec.customer_id) from dual
6072 UNION
6073 SELECT cust_account_id
6074 FROM hz_cust_acct_relate_all
6075 WHERE related_cust_account_id = x_header_rec.customer_id
6076 AND ship_to_flag = 'Y'
6077 AND status = 'A'
6078 AND org_id = x_header_rec.org_id
6079 AND oe_sys_parameters.value('CUSTOMER_RELATIONSHIPS_FLAG') IN ('Y', 'A'));
6080 --
6081 IF (l_debug <> -1) THEN
6082 rlm_core_sv.dlog(C_DEBUG,'intrmd_ship_to_id ',
6083 x_lines_rec.intrmd_ship_to_id);
6084 rlm_core_sv.dlog(C_DEBUG, 'Intrmd ST Site Use ID',
6085 x_lines_rec.intrmd_st_site_use_id);
6086 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6087 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6088 END IF;
6089 --
6090 EXCEPTION
6091 -- The code is removed because above same query was written.
6092 WHEN NO_DATA_FOUND THEN
6093 raise NO_DATA_FOUND;
6094 --
6095 --
6096 END;
6097 --
6098 IF v_addStatus = 'I' THEN
6099 raise e_InactiveIntShipTo;
6100 END IF;
6101 --
6102 IF v_siteUseStatus = 'I' THEN
6103 RAISE e_InactiveIntShipSiteUse;
6104 END IF;
6105 --}
6106 ELSIF x_lines_rec.intrmd_ship_to_id IS NOT NULL THEN
6107 --intrmd_ship_to_address_id is not null
6108 --{
6109 BEGIN
6110 --
6111 -- Following query is changed as per TCA obsolescence project.
6112 -- R12 Perf. Bug 4129291 : Use HCSU in query below
6113 --
6114 SELECT hcas.status, cust_account_id, hcsu.status,
6115 hcsu.site_use_id
6116 INTO v_addStatus, v_int_shp_to_cust_id, v_siteUseStatus,
6117 x_lines_rec.intrmd_st_site_use_id
6118 FROM hz_cust_acct_sites_all hcas, hz_cust_site_uses_all hcsu
6119 WHERE hcas.cust_acct_site_id = x_lines_rec.intrmd_ship_to_id
6120 AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id
6121 AND hcsu.site_use_code = 'SHIP_TO'
6122 AND hcas.org_id = hcsu.org_id;
6123 --
6124 IF (l_debug <> -1) THEN
6125 rlm_core_sv.dlog(C_DEBUG, 'intermdiate ship-to customer id',
6126 v_int_shp_to_cust_id);
6127 rlm_core_sv.dlog(C_DEBUG,'customer_id', x_header_rec.customer_id);
6128 rlm_core_sv.dlog(C_DEBUG, 'Intrmd ST Site Use ID',
6129 x_lines_rec.intrmd_st_site_use_id);
6130 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6131 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6132 END IF;
6133 --
6134 IF v_addStatus = 'I' THEN
6135 raise e_InactiveIntmdShipTo;
6136 END IF;
6137 --
6138 IF v_siteUseStatus = 'I' THEN
6139 RAISE e_InactiveIntShipSiteUse;
6140 END IF;
6141 --
6142 IF NOT CustomerRelationship(x_header_rec.customer_id,
6143 v_int_shp_to_cust_id,
6144 x_header_rec.header_id,
6145 'SHIP_TO') THEN
6146 --
6147 IF (l_debug <> -1) THEN
6148 rlm_core_sv.dlog(C_DEBUG,'Invalid customer relationship');
6149 END IF;
6150 --
6151 raise e_invalidIntmdShiptoId;
6152 --
6153 END IF;
6154 --
6155 EXCEPTION
6156 --
6157 WHEN NO_DATA_FOUND THEN
6158 raise e_InvalidIntmdShipto;
6159 END;
6160 --}
6161 END IF;
6162 --
6163 x_lines_rec.INTMED_SHIP_TO_ORG_ID := x_lines_rec.intrmd_st_site_use_id;
6164 --
6165 /*
6166 * R12 Perf Bug 4129291
6167 * We do not need this segment of code below since the status
6168 * of site use record is included in queries above
6169 *
6170 IF x_lines_rec.intrmd_ship_to_id IS NOT NULL THEN
6171 --{
6172 BEGIN
6173 --
6174 -- Following query is changed as per TCA obsolescence project.
6175 SELECT site_use_id ,
6176 status
6177 INTO x_lines_rec.intrmd_st_site_use_id,
6178 v_status
6179 FROM HZ_CUST_SITE_USES
6180 WHERE CUST_ACCT_SITE_ID = x_lines_rec.INTRMD_SHIP_TO_ID
6181 AND site_use_code = 'SHIP_TO';
6182 --
6183 IF (l_debug <> -1) THEN
6184 rlm_core_sv.dlog(C_DEBUG,'intrmd_st_site_use_id ',
6185 x_lines_rec.intrmd_st_site_use_id);
6186 rlm_core_sv.dlog(C_DEBUG,'intrmd_site_use_id status', v_status);
6187 END IF;
6188 --
6189 x_lines_rec.INTMED_SHIP_TO_ORG_ID := x_lines_rec.intrmd_st_site_use_id;
6190 v_progress := '030';
6191 --
6192 IF v_status = 'I' THEN
6193 raise e_InactiveIntShipSiteUse;
6194 END IF;
6195 --
6196 EXCEPTION
6197 --
6198 WHEN NO_DATA_FOUND THEN
6199 raise e_IntrmdSiteUseInv;
6200 END;
6201 --}
6202 END IF;
6203 */
6204 --
6205 -- END IF;
6206 --
6207 IF (l_debug <> -1) THEN
6208 rlm_core_sv.dpop(C_SDEBUG);
6209 END IF;
6210 --
6211 EXCEPTION
6212 --
6213 WHEN NO_DATA_FOUND THEN
6214 --
6215 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6216 rlm_message_sv.app_error(
6217 x_ExceptionLevel => rlm_message_sv.k_error_level,
6218 x_MessageName => 'RLM_INTRMD_SHIPTO_ID_INVALID',
6219 x_InterfaceHeaderId => x_lines_rec.header_id,
6220 x_InterfaceLineId => x_lines_rec.line_id,
6221 x_token1=>'INTRMD_SHIP_TO_EXT',
6222 x_value1=>x_lines_rec.cust_intrmd_ship_to_ext,
6223 x_ValidationType => 'INTRMD_SHIP_TO');
6224 --
6225 IF (l_debug <> -1) THEN
6226 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6227 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_INTRMD_SHIPTO_ID_INVALID');
6228 END IF;
6229 --
6230 WHEN e_invalidIntmdShiptoId THEN
6231 --
6232 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6233 --
6234 IF (l_debug <> -1) THEN
6235 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6236 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_INTRMD_SHIP_TO_ID_RELATED');
6237 END IF;
6238 --
6239 WHEN e_IntrmdSiteUseInv THEN
6240 -- Warning
6241 rlm_message_sv.app_error(
6242 x_ExceptionLevel => rlm_message_sv.k_warn_level,
6243 x_MessageName => 'RLM_INTRMD_SHIPTO_SITEUSE',
6244 x_InterfaceHeaderId => x_lines_rec.header_id,
6245 x_InterfaceLineId => x_lines_rec.line_id,
6246 x_token1=>'INTRMD_SHIP_TO_EXT',
6247 x_value1=>x_lines_rec.cust_intrmd_ship_to_ext,
6248 x_ValidationType => 'INTRMD_SHIP_TO');
6249 --
6250 IF (l_debug <> -1) THEN
6251 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6252 rlm_core_sv.dpop(C_SDEBUG,'WARNING: RLM_INTRMD_SHIPTO_SITEUSE');
6253 END IF;
6254 --
6255 WHEN e_InactiveIntShipTo THEN
6256 -- Warning
6257 rlm_message_sv.app_error(
6258 x_ExceptionLevel => rlm_message_sv.k_warn_level,
6259 x_MessageName => 'RLM_INTSHIP_INACTIVE',
6260 x_InterfaceHeaderId => x_lines_rec.header_id,
6261 x_InterfaceLineId => x_lines_rec.line_id,
6262 x_token1=>'INTRMD_SHIP_TO_EXT',
6263 x_value1=>x_lines_rec.cust_intrmd_ship_to_ext,
6264 x_ValidationType => 'INTRMD_SHIP_TO');
6265 --
6266 IF (l_debug <> -1) THEN
6267 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6268 rlm_core_sv.dpop(C_SDEBUG,'WARNING: RLM_INTSHIP_INACTIVE');
6269 END IF;
6270 --
6271 WHEN e_InactiveIntShipSiteUse THEN
6272 -- Warning
6273 rlm_message_sv.app_error(
6274 x_ExceptionLevel => rlm_message_sv.k_warn_level,
6275 x_MessageName => 'RLM_INTSHIP_SITE_USE_INACTIVE',
6276 x_InterfaceHeaderId => x_lines_rec.header_id,
6277 x_InterfaceLineId => x_lines_rec.line_id,
6278 x_token1=>'INTRMD_SHIP_TO_EXT',
6279 x_value1=>x_lines_rec.cust_intrmd_ship_to_ext,
6280 x_ValidationType => 'INTRMD_SHIP_TO');
6281 --
6282 IF (l_debug <> -1) THEN
6283 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6284 rlm_core_sv.dpop(C_SDEBUG,'WARNING: RLM_INTSHIP_SITE_USE_INACTIVE');
6285 END IF;
6286 --
6287 WHEN OTHERS THEN
6288 --
6289 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6290 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveIntrmdShipToID',
6291 v_Progress);
6292 --
6293 IF (l_debug <> -1) THEN
6294 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
6295 END IF;
6296 --
6297 raise;
6298 --
6299 END DeriveIntrmdShipToID;
6300
6301 /*===========================================================================
6302
6303 PROCEDURE NAME: DeriveBillToID
6304
6305 ===========================================================================*/
6306 PROCEDURE DeriveBillToID(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
6307 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE,
6308 x_cum_org_level_code IN rlm_cust_shipto_terms.cum_org_level_code%TYPE)
6309 IS
6310 --
6311 v_progress VARCHAR2(3) := '010';
6312 v_count NUMBER;
6313 v_status VARCHAR2(1) := 'I';
6314 v_bill_to_customer_id NUMBER DEFAULT NULL;
6315 v_ship_to_customer_id NUMBER;
6316 v_tp_loc VARCHAR2(30);
6317 e_InvalidBillTo EXCEPTION;
6318 e_InvalidBillToID EXCEPTION;
6319 e_InactiveBillTo EXCEPTION;
6320 e_NoBillTo EXCEPTION;
6321 e_BillToSiteUseInv EXCEPTION;
6322 e_InactiveBillSiteUse EXCEPTION;
6323 e_bad_location EXCEPTION;
6324 e_related_cust EXCEPTION;
6325 v_addStatus VARCHAR2(1) := 'I';
6326 v_siteUseStatus VARCHAR2(1) := 'I';
6327 --
6328 BEGIN
6329 --
6330 IF (l_debug <> -1) THEN
6331 rlm_core_sv.dpush(C_SDEBUG,'DeriveBillToID');
6332 rlm_core_sv.dlog(C_DEBUG, 'x_lines_rec.bill_to_address_id',
6333 x_lines_rec.bill_to_address_id);
6334 rlm_core_sv.dlog(C_DEBUG,'x_cum_org_level_code',
6335 x_cum_org_level_code);
6336 END IF;
6337 --
6338 -- R12 Perf Bug 4129291 : Modified queries to use both hz_cust_acct_sites and
6339 -- hz_cust_site_uses, so DSP determines the status of address record and site use
6340 -- record in one DB query.
6341 --
6342 IF rlm_message_sv.check_dependency('BILL_TO') THEN
6343 --
6344 IF x_lines_rec.bill_to_address_id IS NULL THEN
6345 --{
6346 IF x_lines_rec.cust_bill_to_ext IS NOT NULL THEN
6347 --{
6348 BEGIN
6349 --{
6350 v_progress := '030';
6351 --
6352 IF (l_debug <> -1) THEN
6353 rlm_core_sv.dlog(C_DEBUG,'cust_bill_to_ext ',
6354 x_lines_rec.cust_bill_to_ext);
6355 END IF;
6356 --
6357 --if the bill_to does not exist for the customer, try customer
6358 -- relationship
6359 --
6360 BEGIN
6361 --{
6362 -- Following query is changed as per TCA obsolescence project.
6363 SELECT ACCT_SITE.CUST_ACCT_SITE_ID,
6364 ACCT_SITE.STATUS, SITE_USE.STATUS,
6365 SITE_USE.site_use_id
6366 INTO x_lines_rec.bill_to_address_id ,
6367 v_addStatus, v_siteUseStatus,
6368 x_lines_rec.bill_to_site_use_id
6369 FROM HZ_CUST_ACCT_SITES ACCT_SITE, HZ_CUST_SITE_USES_ALL SITE_USE
6370 WHERE acct_site.ece_tp_location_code = x_lines_rec.cust_bill_to_ext
6371 AND ACCT_SITE.CUST_ACCOUNT_ID = x_header_rec.customer_id
6372 AND site_use_code = 'BILL_TO'
6373 AND ACCT_SITE.cust_acct_site_id = SITE_USE.cust_acct_site_id
6374 AND ACCT_SITE.org_id = SITE_USE.org_id;
6375 --
6376 EXCEPTION
6377 --
6378 WHEN NO_DATA_FOUND THEN
6379 --
6380 IF (l_debug <> -1) THEN
6381 rlm_core_sv.dlog(C_DEBUG,'e_related_cust');
6382 END IF;
6383 --
6384 raise e_related_cust;
6385 --}
6386 END;
6387 --
6388 IF (l_debug <> -1) THEN
6389 rlm_core_sv.dlog(C_DEBUG,'bill_to_address_id ',
6390 x_lines_rec.bill_to_address_id);
6391 rlm_core_sv.dlog(C_DEBUG, 'bill_to_site_use_id',
6392 x_lines_rec.bill_to_site_use_id);
6393 rlm_core_sv.dlog(C_DEBUG,'bill to Address status ', v_addStatus);
6394 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6395 END IF;
6396 --
6397 IF v_addStatus = 'I' THEN
6398 raise e_InactiveBillTo;
6399 END IF;
6400 --
6401 IF v_siteUseStatus = 'I' THEN
6402 RAISE e_InactiveBillSiteUse;
6403 END IF;
6404 --
6405 EXCEPTION
6406 --
6407 WHEN e_InactiveBillTo THEN
6408 RAISE e_InactiveBillTo;
6409 --
6410 WHEN e_InactiveBillSiteUse THEN
6411 RAISE e_InactiveBillSiteUse;
6412 --
6413 WHEN e_related_cust THEN
6414 --
6415 IF (l_debug <> -1) THEN
6416 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ',
6417 x_lines_rec.ship_to_address_id);
6418 END IF;
6419 --
6420 BEGIN
6421 --{
6422 -- Following query is changed as per TCA obsolescence project.
6423 SELECT ACCT_SITE.CUST_ACCT_SITE_ID,
6424 ACCT_SITE.status,
6425 ACCT_SITE.CUST_ACCOUNT_ID, SITE_USE.STATUS,
6426 SITE_USE.site_use_id
6427 INTO x_lines_rec.bill_to_address_id,
6428 v_addStatus,
6429 v_bill_to_customer_id, v_siteUseStatus,
6430 x_lines_rec.bill_to_site_use_id
6431 FROM HZ_CUST_ACCT_SITES ACCT_SITE, HZ_CUST_SITE_USES_ALL SITE_USE
6432 WHERE ACCT_SITE.ece_tp_location_code = x_lines_rec.cust_bill_to_ext
6433 AND ACCT_SITE.cust_acct_site_id = SITE_USE.cust_acct_site_id
6434 AND SITE_USE.site_use_code = 'BILL_TO'
6435 AND ACCT_SITE.org_id = SITE_USE.org_id
6436 AND ACCT_SITE.CUST_ACCOUNT_ID in
6437 (SELECT DISTINCT cust_account_id
6438 FROM HZ_CUST_ACCT_RELATE_ALL
6439 WHERE related_cust_account_id = x_header_rec.customer_id
6440 AND status='A'
6441 AND bill_to_flag = 'Y'
6442 AND oe_sys_parameters.value('CUSTOMER_RELATIONSHIPS_FLAG', x_header_rec.org_id) IN ('Y', 'A')
6443 AND org_id = x_header_rec.org_id
6444 );
6445 --
6446 IF (l_debug <> -1) THEN
6447 rlm_core_sv.dlog(C_DEBUG,'bill_to_address_id ',
6448 x_lines_rec.bill_to_address_id);
6449 rlm_core_sv.dlog(C_DEBUG,'bill to Address status ', v_addStatus);
6450 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6451 rlm_core_sv.dlog(C_DEBUG,'v_bill_to_customer_id',
6452 v_bill_to_customer_id);
6453 END IF;
6454 --
6455 IF v_addStatus = 'I' THEN
6456 raise e_InactiveBillTo;
6457 END IF;
6458 --
6459 IF v_siteUseStatus = 'I' THEN
6460 RAISE e_InactiveBillSiteUse;
6461 END IF;
6462 --
6463 EXCEPTION
6464 --
6465 WHEN e_InactiveBillTo THEN
6466 RAISE e_InactiveBillTo;
6467 --
6468 WHEN e_InactiveBillSiteUse THEN
6469 RAISE e_InactiveBillSiteUse;
6470 --
6471 WHEN TOO_MANY_ROWS THEN
6472 --
6473 IF (l_debug <> -1) THEN
6474 rlm_core_sv.dlog(C_DEBUG,'Too many rows');
6475 END IF;
6476 -- raising no_data_found, would give the message
6477 -- RLM_BILLTO_INVALID
6478 raise NO_DATA_FOUND;
6479 --}
6480 END;
6481 --}
6482 END;
6483 --
6484 x_lines_rec.invoice_to_org_id := x_lines_rec.bill_to_site_use_id;
6485 --
6486 --}
6487 ELSE -- CUST_BILL_TO_EXT is null
6488 --{
6489 IF x_cum_org_level_code = 'BILL_TO_SHIP_FROM' THEN
6490 --{
6491 v_progress := '040';
6492 --
6493 IF (l_debug <> -1) THEN
6494 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ',
6495 x_lines_rec.ship_to_address_id);
6496 END IF;
6497 --
6498 -- If the bill_to_ext is null then we use the bill_to
6499 -- defined in HZ_CUST_ACCT_SITES for the SHIP_TO
6500 -- the bill_To_site_use as from the HZ_CUST_ACCT_SITES where
6501 -- address_useage is ship to
6502 --
6503 -- Following query is changed as per TCA obsolescence project.
6504 BEGIN
6505 --{
6506 SELECT site_use_id, status
6507 INTO x_lines_rec.bill_to_site_use_id, v_status
6508 FROM HZ_CUST_SITE_USES
6509 WHERE CUST_ACCT_SITE_ID = x_lines_rec.ship_to_address_id
6510 AND site_use_code = 'SHIP_TO';
6511 --
6512 IF (l_debug <> -1) THEN
6513 rlm_core_sv.dlog(C_DEBUG,'bill site use status ', v_siteUseStatus );
6514 rlm_core_sv.dlog(C_DEBUG,'bill site use id ',
6515 x_lines_rec.bill_to_site_use_id );
6516 END IF;
6517 --
6518 x_lines_rec.invoice_to_org_id := x_lines_rec.bill_to_site_use_id;
6519 --
6520 IF (l_debug <> -1) THEN
6521 rlm_core_sv.dlog(C_DEBUG,'invoice_to_org_id ',
6522 x_lines_rec.invoice_to_org_id );
6523 END IF;
6524 --
6525 IF x_lines_rec.bill_to_site_use_id is NOT NULL
6526 AND v_status = 'A'THEN
6527 --
6528 -- Following query is changed as per TCA obsolescence project.
6529 SELECT CUST_ACCT_SITE_ID,
6530 status
6531 INTO x_lines_rec.bill_to_address_id,
6532 v_status
6533 FROM HZ_CUST_SITE_USES_ALL
6534 WHERE SITE_USE_ID = x_lines_rec.bill_to_site_use_id;
6535 --
6536 ELSE
6537 --
6538 IF x_lines_rec.bill_to_site_use_id is NULL THEN
6539 raise e_NoBillTo;
6540 ELSIF v_status = 'I' THEN
6541 raise e_InactiveBillSiteUse;
6542 END IF;
6543 --
6544 END IF;
6545 --
6546 EXCEPTION
6547 --
6548 WHEN e_NoBillTo THEN
6549 raise e_InvalidBillTo;
6550 --}
6551 END;
6552 --
6553 IF (l_debug <> -1) THEN
6554 rlm_core_sv.dlog(C_DEBUG,'bill_to_address_id ',
6555 x_lines_rec.bill_to_address_id);
6556 END IF;
6557 --}
6558 END IF;
6559 --}
6560 END IF;
6561 --}
6562 ELSE
6563 --{
6564 -- x_lines_rec.bill_to_address_id is NOT NULL
6565 --
6566 BEGIN
6567 --{
6568 -- Following query is changed as per TCA obsolescence project.
6569 SELECT ACCT_SITE.STATUS, ACCT_SITE.CUST_ACCOUNT_ID,
6570 SITE_USE.STATUS, SITE_USE.site_use_id
6571 INTO v_addStatus, v_bill_to_customer_id,
6572 v_siteUseStatus, x_lines_rec.bill_to_site_use_id
6573 FROM HZ_CUST_ACCT_SITES ACCT_SITE, HZ_CUST_SITE_USES_ALL SITE_USE
6574 WHERE ACCT_SITE.CUST_ACCT_SITE_ID = x_lines_rec.bill_to_address_id
6575 AND ACCT_SITE.cust_acct_site_id = SITE_USE.cust_acct_site_id
6576 AND SITE_USE.site_use_code = 'BILL_TO'
6577 AND ACCT_SITE.org_id = SITE_USE.org_id;
6578 --
6579 IF (l_debug <> -1) THEN
6580 rlm_core_sv.dlog(C_DEBUG,'bill_to_address_id',
6581 x_lines_rec.bill_to_address_id);
6582 rlm_core_sv.dlog(C_DEBUG,'v_bill_to_customer_id',v_bill_to_customer_id);
6583 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6584 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6585 rlm_core_sv.dlog(C_DEBUG, 'Site Use ID', x_lines_rec.bill_to_site_use_id);
6586 END IF;
6587 --
6588 IF v_addStatus = 'I' THEN
6589 raise e_InactiveBillTo;
6590 END IF;
6591 --
6592 IF v_siteUseStatus = 'I' THEN
6593 RAISE e_InactiveBillSiteUse;
6594 END IF;
6595 --
6596 IF NOT CustomerRelationship(x_header_rec.customer_id,
6597 v_bill_to_customer_id,
6598 x_header_rec.header_id,
6599 'BILL_TO') THEN
6600 --
6601 raise e_InvalidBillToId;
6602 --
6603 END IF;
6604 --
6605 x_lines_rec.invoice_to_org_id := x_lines_rec.bill_to_site_use_id;
6606 --
6607 IF (l_debug <> -1) THEN
6608 rlm_core_sv.dlog(C_DEBUG, 'Invoice To Org ID', x_lines_rec.invoice_to_org_id);
6609 END IF;
6610 --}
6611 END;
6612 --}
6613 END IF;
6614 --}
6615 END IF;
6616 --
6617 IF (l_debug <> -1) THEN
6618 rlm_core_sv.dpop(C_SDEBUG);
6619 END IF;
6620 --
6621 EXCEPTION
6622 --
6623 WHEN NO_DATA_FOUND THEN
6624 --
6625 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6626 rlm_message_sv.app_error(
6627 x_ExceptionLevel => rlm_message_sv.k_error_level,
6628 x_MessageName => 'RLM_BILLTO_INVALID',
6629 x_InterfaceHeaderId => x_lines_rec.header_id,
6630 x_InterfaceLineId => x_lines_rec.line_id,
6631 x_token1=>'BILL_TO_EXT',
6632 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6633 x_header_rec.ece_tp_location_code_ext),
6634 x_ValidationType => 'BILL_TO');
6635 --
6636 IF (l_debug <> -1) THEN
6637 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6638 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_INVALID');
6639 END IF;
6640 --
6641 WHEN e_BillToSiteUseInv THEN
6642 --
6643 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6644 rlm_message_sv.app_error(
6645 x_ExceptionLevel => rlm_message_sv.k_error_level,
6646 x_MessageName => 'RLM_BILLTO_SITEUSE',
6647 x_InterfaceHeaderId => x_lines_rec.header_id,
6648 x_InterfaceLineId => x_lines_rec.line_id,
6649 x_token1=>'BILL_TO_EXT',
6650 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6651 x_header_rec.ece_tp_location_code_ext),
6652 x_ValidationType => 'BILL_TO');
6653 --
6654 IF (l_debug <> -1) THEN
6655 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6656 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_SITEUSE');
6657 END IF;
6658 --
6659 WHEN e_InvalidBillTo THEN
6660 --
6661 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6662 rlm_message_sv.app_error(
6663 x_MessageName => 'RLM_BILLTO_ID_NOT_DERIVED',
6664 x_InterfaceHeaderId => x_lines_rec.header_id,
6665 x_InterfaceLineId => x_lines_rec.line_id,
6666 x_token1=>'TP_LOCATION',
6667 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6668 x_header_rec.ece_tp_location_code_ext),
6669 x_ValidationType => 'BILL_TO');
6670 --
6671 IF (l_debug <> -1) THEN
6672 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6673 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_ID_NOT_DERIVED');
6674 END IF;
6675 --
6676 WHEN e_bad_location THEN
6677 --
6678 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6679 rlm_message_sv.app_error(
6680 x_MessageName => 'RLM_BILLTO_ID_NOT_DERIVED',
6681 x_InterfaceHeaderId => x_lines_rec.header_id,
6682 x_InterfaceLineId => x_lines_rec.line_id,
6683 x_token1=>'TP_LOCATION',
6684 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6685 x_header_rec.ece_tp_location_code_ext),
6686 x_ValidationType => 'BILL_TO');
6687 --
6688 IF (l_debug <> -1) THEN
6689 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6690 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_ID_NOT_DERIVED');
6691 END IF;
6692 --
6693 WHEN e_InactiveBillTo THEN
6694 --
6695 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6696 --
6697 rlm_message_sv.app_error(
6698 x_ExceptionLevel => rlm_message_sv.k_error_level,
6699 x_MessageName => 'RLM_BILLTO_INACTIVE',
6700 x_InterfaceHeaderId => x_lines_rec.header_id,
6701 x_InterfaceLineId => x_lines_rec.line_id,
6702 x_token1=>'TP_LOCATION',
6703 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6704 x_header_rec.ece_tp_location_code_ext),
6705 x_ValidationType => 'BILL_TO');
6706 --
6707 IF (l_debug <> -1) THEN
6708 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6709 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_ID_NOT_ACTIVE');
6710 END IF;
6711 --
6712 WHEN e_InvalidBilltoId THEN
6713 --
6714 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6715 --
6716 rlm_message_sv.app_error(
6717 x_ExceptionLevel => rlm_message_sv.k_error_level,
6718 x_MessageName => 'RLM_BILL_TO_ID_NO_RELATED',
6719 x_InterfaceHeaderId => x_lines_rec.header_id,
6720 x_InterfaceLineId => x_lines_rec.line_id,
6721 x_token1=>'CUSTOMER',
6722 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6723 x_header_rec.ece_tp_location_code_ext),
6724 x_ValidationType => 'BILL_TO');
6725 --
6726 IF (l_debug <> -1) THEN
6727 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6728 rlm_core_sv.dlog(C_DEBUG,'Customer Relationships: Bill to address id passed does not belong to the Customer nor its related customers');
6729 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_ID_NOT_RELATED');
6730 END IF;
6731 --
6732 WHEN e_InactiveBillSiteUse THEN
6733 --
6734 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6735 rlm_message_sv.app_error(
6736 x_ExceptionLevel => rlm_message_sv.k_error_level,
6737 x_MessageName => 'RLM_BILLTO_SITE_USE_INACTIVE',
6738 x_InterfaceHeaderId => x_lines_rec.header_id,
6739 x_InterfaceLineId => x_lines_rec.line_id,
6740 x_token1=>'TP_LOCATION',
6741 x_value1=> nvl(x_lines_rec.cust_bill_to_ext,
6742 x_header_rec.ece_tp_location_code_ext),
6743 x_ValidationType => 'BILL_TO');
6744 --
6745 IF (l_debug <> -1) THEN
6746 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
6747 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_BILLTO_SITE_USE_INACTIVE');
6748 END IF;
6749 --
6750 WHEN OTHERS THEN
6751 --
6752 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
6753 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveBillToID',v_Progress);
6754 --
6755 IF (l_debug <> -1) THEN
6756 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
6757 END IF;
6758 --
6759 raise;
6760 --
6761 END DeriveBillToID;
6762
6763 /*===========================================================================
6764
6765 PROCEDURE NAME: DeriveShipToID
6766
6767 ===========================================================================*/
6768 PROCEDURE DeriveShipToID(x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE,
6769 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
6770 IS
6771 --
6772 v_progress VARCHAR2(3) := '010';
6773 v_addStatus VARCHAR2(1);
6774 v_siteUseStatus VARCHAR2(1);
6775 v_ship_to_customer_id NUMBER;
6776 e_InvalidShipTo EXCEPTION;
6777 e_InvalidShipToId EXCEPTION;
6778 e_InactiveShipTo EXCEPTION;
6779 e_ShipToSiteUseInv EXCEPTION;
6780 e_InactiveShipSiteUse EXCEPTION;
6781 e_InvalidCustomerId EXCEPTION;
6782 --
6783 BEGIN
6784 --
6785 IF (l_debug <> -1) THEN
6786 rlm_core_sv.dpush(C_SDEBUG, 'DeriveShipToID');
6787 rlm_core_sv.dlog(C_DEBUG, 'ship_to_address_id ',
6788 x_lines_rec.ship_to_address_id);
6789 rlm_core_sv.dlog(C_DEBUG, 'ece_tp_location_code_ext',
6790 x_header_rec.ece_tp_location_code_ext);
6791 rlm_core_sv.dlog(C_DEBUG, 'cust_ship_to_ext',
6792 x_lines_rec.cust_ship_to_ext);
6793 rlm_core_sv.dlog(C_DEBUG, 'ece_primary_address_id',
6794 x_header_rec.ece_primary_address_id);
6795
6796 END IF;
6797 --
6798 IF rlm_message_sv.check_dependency('SHIPTO') THEN
6799 --
6800 IF x_lines_rec.ship_to_address_id IS NULL THEN
6801 --{
6802 IF x_lines_rec.cust_ship_to_ext IS NOT NULL THEN
6803 --{
6804 v_progress := '030';
6805 --
6806 IF (l_debug <> -1) THEN
6807 rlm_core_sv.dlog(C_DEBUG,'Using Ship-To-Ext to derive Id ',
6808 x_lines_rec.cust_ship_to_ext);
6809 END IF;
6810 --
6811 -- Following query is changed as per TCA obsolescence project.
6812 -- CR Changes
6813 -- R12 Perf. Bug 4129291 : Use HCSU also in query below
6814 --
6815 SELECT hz.cust_acct_site_id, hz.status, cust_account_id,
6816 hcsu.status, site_use_id
6817 INTO x_lines_rec.ship_to_address_id, v_addStatus,
6818 x_lines_rec.ship_to_customer_id, v_siteUseStatus,
6819 x_lines_rec.ship_to_site_use_id
6820 FROM hz_cust_acct_sites hz, hz_cust_site_uses_all hcsu
6821 WHERE hz.ece_tp_location_code = x_lines_rec.cust_ship_to_ext
6822 AND hz.cust_acct_site_id = hcsu.cust_acct_site_id
6823 AND site_use_code = 'SHIP_TO'
6824 AND hz.org_id = hcsu.org_id
6825 AND hz.cust_account_id IN
6826 (SELECT to_number(x_header_rec.customer_id) from dual
6827 UNION
6828 SELECT cust_account_id
6829 FROM hz_cust_acct_relate_all
6830 WHERE related_cust_account_id = x_header_rec.customer_id
6831 AND ship_to_flag = 'Y'
6832 AND status = 'A'
6833 AND org_id = x_header_rec.org_id
6834 AND oe_sys_parameters.value('CUSTOMER_RELATIONSHIPS_FLAG')
6835 IN ('Y', 'A'));
6836 --
6837 IF (l_debug <> -1) THEN
6838 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ',
6839 x_lines_rec.ship_to_address_id);
6840 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.ship_to_customer_id ',
6841 x_lines_rec.ship_to_customer_id);
6842 rlm_core_sv.dlog(C_DEBUG,'customer_id ',
6843 x_header_rec.customer_id);
6844 rlm_core_sv.dlog(C_DEBUG, 'x_lines_rec.ship_to_site_use_id',
6845 x_lines_rec.ship_to_site_use_id);
6846 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6847 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6848 END IF;
6849 --
6850 IF v_addStatus = 'I' THEN
6851 raise e_InactiveShipTo;
6852 END IF;
6853 --
6854 IF v_siteUseStatus = 'I' THEN
6855 RAISE e_InactiveShipSiteUse;
6856 END IF;
6857 --
6858 /* IF x_header_rec.customer_id <> x_lines_rec.ship_to_customer_id
6859 AND g_LineLevelShipTo THEN
6860 --
6861 IF (l_debug <> -1) THEN
6862 rlm_core_sv.dlog(C_DEBUG,'ship to customer id <> header customer id');
6863 END IF;
6864 --
6865 raise e_InvalidCustomerId;
6866 --
6867 END IF; */
6868 --}
6869 --performance
6870
6871 ELSIF x_header_rec.ece_tp_location_code_ext IS NOT NULL THEN
6872 --{
6873 v_progress := '035';
6874 --
6875 IF (l_debug <> -1) THEN
6876 rlm_core_sv.dlog(C_DEBUG,'Using TP Location Code to derive ID ',
6877 x_header_rec.ece_tp_location_code_ext);
6878 END IF;
6879 --
6880 BEGIN
6881 --
6882 -- Following query is changed as per TCA obsolescence project.
6883 -- R12 Perf Bug 4129291 : Use HCSU in query below
6884 --
6885 SELECT hcas.cust_acct_site_id, hcas.status, hcsu.status,
6886 hcsu.site_use_id
6887 INTO x_lines_rec.ship_to_address_id, v_addStatus, v_siteUseStatus,
6888 x_lines_rec.ship_to_site_use_id
6889 FROM hz_cust_acct_sites hcas, hz_cust_site_uses_all hcsu
6890 WHERE ece_tp_location_code = x_header_rec.ece_tp_location_code_ext
6891 AND hcas.cust_account_id = x_header_rec.customer_id
6892 AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id
6893 AND site_use_code = 'SHIP_TO'
6894 AND hcas.org_id = hcsu.org_id;
6895 --
6896 IF (l_debug <> -1) THEN
6897 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ',
6898 x_lines_rec.ship_to_address_id);
6899 rlm_core_sv.dlog(C_DEBUG,'ship_to_site_use_id',
6900 x_lines_rec.ship_to_site_use_id);
6901 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6902 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6903 END IF;
6904 --
6905 IF v_addStatus = 'I' THEN
6906 raise e_InactiveShipTo;
6907 END IF;
6908 --
6909 IF v_siteUseStatus = 'I' THEN
6910 RAISE e_InactiveShipSiteUse;
6911 END IF;
6912 --
6913 EXCEPTION
6914 --
6915 WHEN NO_DATA_FOUND THEN
6916 raise e_InvalidShipTo;
6917 END;
6918 --}
6919 ELSE
6920 --{
6921 v_progress := '040';
6922 --
6923 IF (x_header_rec.customer_id IS NOT NULL AND
6924 x_header_rec.ece_primary_address_id IS NULL) THEN
6925 --{
6926 -- Following query is changed as per TCA obsolescence project.
6927 SELECT rasu.cust_acct_site_id, rad.status, rasu.status,
6928 rasu.site_use_id
6929 INTO x_header_rec.ece_primary_address_id, v_addStatus, v_siteUseStatus,
6930 x_lines_rec.ship_to_site_use_id
6931 FROM hz_cust_acct_sites rad,
6932 hz_cust_site_uses_all rasu
6933 WHERE rad.cust_acct_site_id = rasu.cust_acct_site_id
6934 AND rasu.site_use_code = 'SHIP_TO'
6935 AND rasu.primary_flag = 'Y'
6936 AND rad.cust_account_id = x_header_rec.customer_id
6937 AND rad.status = 'A'
6938 AND rad.org_id = rasu.org_id;
6939 --
6940 IF (l_debug <> -1) THEN
6941 rlm_core_sv.dlog(C_DEBUG,'customer_id ',x_header_rec.customer_id);
6942 rlm_core_sv.dlog(C_DEBUG,'ece_primary_address_id ',
6943 x_header_rec.ece_primary_address_id);
6944 END IF;
6945 --}
6946 END IF;
6947 --
6948 x_lines_rec.ship_to_address_id := x_header_rec.ece_primary_address_id;
6949 --
6950 IF (l_debug <> -1) THEN
6951 rlm_core_sv.dlog(C_DEBUG, 'Using ECE primary address as ship-to');
6952 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id ',
6953 x_lines_rec.ship_to_address_id);
6954 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6955 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6956 END IF;
6957 --}
6958 END IF;
6959 --
6960 IF v_addStatus = 'I' THEN
6961 raise e_InactiveShipTo;
6962 END IF;
6963 --
6964 IF v_siteUseStatus = 'I' THEN
6965 RAISE e_InactiveShipSiteUse;
6966 END IF;
6967 --
6968 --}
6969 ELSE --ship_to_address_id is not null
6970 --{
6971 /* check if the address_id is inactive */
6972 BEGIN
6973 --
6974 -- Following query is changed as per TCA obsolescence project.
6975 SELECT hcas.status, cust_account_id, hcsu.status, hcsu.site_use_id
6976 INTO v_addStatus, x_lines_rec.ship_to_customer_id, v_siteUseStatus,
6977 x_lines_rec.ship_to_site_use_id
6978 FROM hz_cust_acct_sites_all hcas, hz_cust_site_uses_all hcsu
6979 WHERE hcas.cust_acct_site_id = x_lines_rec.ship_to_address_id
6980 AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id
6981 AND hcsu.site_use_code = 'SHIP_TO'
6982 AND hcas.org_id = hcsu.org_id;
6983 --
6984 IF (l_debug <> -1) THEN
6985 rlm_core_sv.dlog(C_DEBUG, 'ship-to customer id',
6986 x_lines_rec.ship_to_customer_id);
6987 rlm_core_sv.dlog(C_DEBUG, 'Ship To Site Use ID',
6988 x_lines_rec.ship_to_site_use_id);
6989 rlm_core_sv.dlog(C_DEBUG, 'Address Status', v_addStatus);
6990 rlm_core_sv.dlog(C_DEBUG, 'Site Use Status', v_siteUseStatus);
6991 END IF;
6992 --
6993 IF v_addStatus = 'I' THEN
6994 raise e_InactiveShipTo;
6995 END IF;
6996 --
6997 IF v_siteUseStatus = 'I' THEN
6998 RAISE e_InactiveShipSiteUse;
6999 END IF;
7000 --
7001 IF (l_debug <> -1) THEN
7002 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.ship_to_customer_id', x_lines_rec.ship_to_customer_id);
7003 END IF;
7004 --
7005 IF NOT CustomerRelationship(x_header_rec.customer_id,
7006 x_lines_rec.ship_to_customer_id,
7007 x_header_rec.header_id,
7008 'SHIP_TO') THEN
7009 --
7010 IF (l_debug <> -1) THEN
7011 rlm_core_sv.dlog(C_DEBUG,'Invalid customer relationship');
7012 END IF;
7013 --
7014 raise e_InvalidShipToID;
7015 --
7016 END IF;
7017 --
7018 EXCEPTION
7019 WHEN NO_DATA_FOUND THEN
7020 raise e_InvalidShipto;
7021 END;
7022 --}
7023 END IF;
7024 --
7025 x_lines_rec.ship_to_org_id := x_lines_rec.ship_to_site_use_id;
7026 --
7027 /*
7028 * R12 Perf Bug 4129291
7029 * This segment of code is not required any longer, since the check on status
7030 * of site use record has been included in queries above
7031 *
7032 BEGIN
7033 --{
7034 v_progress := '050';
7035 --
7036 -- Following query is changed as per TCA obsolescence project.
7037 SELECT site_use_id , status
7038 INTO x_lines_rec.ship_to_site_use_id, v_status
7039 FROM HZ_CUST_SITE_USES
7040 WHERE CUST_ACCT_SITE_ID = x_lines_rec.ship_to_address_id
7041 AND site_use_code = 'SHIP_TO';
7042 --
7043 x_lines_rec.ship_to_org_id := x_lines_rec.ship_to_site_use_id;
7044 --
7045 IF (l_debug <> -1) THEN
7046 rlm_core_sv.dlog(C_DEBUG,'site use id status ', v_status );
7047 rlm_core_sv.dlog(C_DEBUG,'ship_to_site_use_id ',
7048 x_lines_rec.ship_to_site_use_id);
7049 END IF;
7050 --
7051 IF v_status = 'I' THEN
7052 --
7053 raise e_InactiveShipSiteUse;
7054 --
7055 END IF;
7056 --
7057 EXCEPTION
7058 --
7059 WHEN NO_DATA_FOUND THEN
7060 raise e_ShipToSiteUseInv;
7061 --}
7062 END; */
7063 --}
7064 END IF;
7065 --
7066 IF (l_debug <> -1) THEN
7067 rlm_core_sv.dpop(C_SDEBUG);
7068 END IF;
7069 --
7070 EXCEPTION
7071 --
7072 WHEN NO_DATA_FOUND THEN
7073 --
7074 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7075 --
7076 rlm_message_sv.app_error(
7077 x_ExceptionLevel => rlm_message_sv.k_error_level,
7078 x_MessageName => 'RLM_SHIPTO_ID_NOT_DERIVED',
7079 x_InterfaceHeaderId => x_lines_rec.header_id,
7080 x_InterfaceLineId => x_lines_rec.line_id,
7081 x_token1=>'TP_LOCATION',
7082 x_value1=> nvl(x_lines_rec.cust_ship_to_ext,
7083 x_header_rec.ece_tp_location_code_ext),
7084 x_ValidationType => 'SHIP_TO');
7085 --
7086 IF (l_debug <> -1) THEN
7087 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7088 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_NOT_DERIVED');
7089 END IF;
7090 --
7091 WHEN e_ShipToSiteUseInv THEN
7092 --
7093 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7094 rlm_message_sv.app_error(
7095 x_ExceptionLevel => rlm_message_sv.k_error_level,
7096 x_MessageName => 'RLM_SHIPTO_SITEUSE',
7097 x_InterfaceHeaderId => x_lines_rec.header_id,
7098 x_InterfaceLineId => x_lines_rec.line_id,
7099 x_token1=>'SHIP_TO_EXT',
7100 x_value1=> nvl(x_lines_rec.cust_ship_to_ext,
7101 x_header_rec.ece_tp_location_code_ext),
7102 x_ValidationType => 'SHIP_TO');
7103 --
7104 IF (l_debug <> -1) THEN
7105 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7106 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_SITEUSE');
7107 END IF;
7108 --
7109 WHEN e_InvalidShipTo THEN
7110 --
7111 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7112 --
7113 rlm_message_sv.app_error(
7114 x_ExceptionLevel => rlm_message_sv.k_error_level,
7115 x_MessageName => 'RLM_SHIPTO_ID_NOT_DERIVED',
7116 x_InterfaceHeaderId => x_lines_rec.header_id,
7117 x_InterfaceLineId => x_lines_rec.line_id,
7118 x_token1=>'TP_LOCATION',
7119 x_value1=> nvl(x_lines_rec.cust_ship_to_ext,
7120 x_header_rec.ece_tp_location_code_ext),
7121 x_ValidationType => 'SHIP_TO');
7122 --
7123 IF (l_debug <> -1) THEN
7124 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7125 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_ID_NOT_DERIVED');
7126 END IF;
7127 --
7128 WHEN e_InvalidShipToID THEN
7129 --
7130 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7131 --
7132 IF (l_debug <> -1) THEN
7133 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7134 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIP_TO_ID_NOT_RELATED');
7135 END IF;
7136 --
7137 WHEN e_InactiveShipTo THEN
7138 --
7139 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7140 --
7141 rlm_message_sv.app_error(
7142 x_ExceptionLevel => rlm_message_sv.k_error_level,
7143 x_MessageName => 'RLM_SHIPTO_INACTIVE',
7144 x_InterfaceHeaderId => x_lines_rec.header_id,
7145 x_InterfaceLineId => x_lines_rec.line_id,
7146 x_token1=>'TP_LOCATION',
7147 x_value1=> nvl(x_lines_rec.cust_ship_to_ext,
7148 x_header_rec.ece_tp_location_code_ext),
7149 x_ValidationType => 'SHIP_TO');
7150 --
7151 IF (l_debug <> -1) THEN
7152 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7153 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_INACTIVE');
7154 END IF;
7155 --
7156 WHEN e_InactiveShipSiteUse THEN
7157 --
7158 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7159 --
7160 rlm_message_sv.app_error(
7161 x_ExceptionLevel => rlm_message_sv.k_error_level,
7162 x_MessageName => 'RLM_SHIPTO_SITE_USE_INACTIVE',
7163 x_InterfaceHeaderId => x_lines_rec.header_id,
7164 x_InterfaceLineId => x_lines_rec.line_id,
7165 x_token1=>'TP_LOCATION',
7166 x_value1=>x_header_rec.ece_tp_location_code_ext,
7167 x_ValidationType => 'SHIP_TO');
7168 --
7169 IF (l_debug <> -1) THEN
7170 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7171 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SHIPTO_SITE_USE_INACTIVE');
7172 END IF;
7173 --
7174 WHEN e_InvalidCustomerId THEN
7175 --
7176 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7177 --
7178 rlm_message_sv.app_error(
7179 x_ExceptionLevel => rlm_message_sv.k_error_level,
7180 x_MessageName => 'RLM_INVALID_CUSTOMER',
7181 x_InterfaceHeaderId => x_lines_rec.header_id,
7182 x_InterfaceLineId => x_lines_rec.line_id,
7183 x_token1=>'TP_LOCATION',
7184 x_value1=>x_header_rec.ece_tp_location_code_ext,
7185 x_ValidationType => 'SHIP_TO');
7186 --
7187 IF (l_debug <> -1) THEN
7188 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7189 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_INVALID_CUSTOMER');
7190 END IF;
7191 --
7192 WHEN OTHERS THEN
7193 --
7194 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7195 rlm_message_sv.sql_error('rlm_validatedemand_sv.DeriveShipToID',
7196 v_Progress);
7197 --
7198 IF (l_debug <> -1) THEN
7199 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
7200 END IF;
7201 raise;
7202 --
7203 END DeriveShipToID;
7204
7205 /*====================================================================
7206
7207 PROCEDURE validateWithCumRec
7208
7209 ====================================================================*/
7210 PROCEDURE validateWithCumRec(
7211 x_cum_key_record IN rlm_cum_sv.cum_key_attrib_rec_type,
7212 x_group_rec IN t_group_rec,
7213 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7214 IS
7215
7216 e_CumRecYearMissing EXCEPTION;
7217 e_CumKeyPOMissing EXCEPTION;
7218 e_NoCumRec EXCEPTION; -- 4307505
7219 v_cum_key_record rlm_cum_sv.cum_key_attrib_rec_type;
7220 v_cum_record RLM_CUM_SV.cum_rec_type; -- 4307505
7221
7222 BEGIN
7223 --
7224 IF (l_debug <> -1) THEN
7225 rlm_core_sv.dpush(C_SDEBUG,'validateWithCumRec');
7226 END IF;
7227 --
7228 IF (x_lines_rec.cust_po_number IS NULL) AND
7229 x_Group_rec.setup_terms_rec.CUM_CONTROL_CODE IN
7230 ('CUM_BY_PO_ONLY','CUM_BY_DATE_PO') THEN
7231 --
7232 raise e_CumKeyPOMissing;
7233 --
7234 END IF;
7235 --
7236 IF (x_lines_rec.industry_attribute1 IS NULL) AND
7237 x_Group_rec.setup_terms_rec.CUM_CONTROL_CODE = 'CUM_BY_DATE_RECORD_YEAR'
7238 THEN
7239 --
7240 raise e_CumRecYearMissing;
7241 --
7242 END IF;
7243 --
7244 -- 4307505 [ done only if the Intrasit calc basis is customer cum
7245 IF (x_Group_rec.setup_terms_rec.intransit_calc_basis = 'CUSTOMER_CUM' ) THEN
7246 --{ it.basis cust.cum
7247 --
7248 v_cum_record.cum_key_id := NULL;
7249 v_cum_key_record := x_cum_key_record;
7250 --
7251 IF (l_debug <> -1) THEN
7252 rlm_core_sv.dlog(C_DEBUG,'customer_item_id',
7253 v_cum_key_record.customer_item_id);
7254 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id',
7255 v_cum_key_record.ship_from_org_id);
7256 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id',
7257 v_cum_key_record.ship_to_address_id);
7258 END IF;
7259 --
7260 v_cum_key_record.create_cum_key_flag := 'N';
7261 RLM_TPA_SV.CalculateCUMKey(v_cum_key_record, v_cum_record);
7262 --
7263 IF v_cum_record.cum_key_id IS NULL THEN
7264 --
7265 IF (l_debug <> -1) THEN
7266 rlm_core_sv.dlog(C_DEBUG,'error: rlm_nocum_rec');
7267 END IF;
7268 --
7269 raise e_NoCumRec;
7270 --
7271 END IF;
7272 --
7273 END IF;
7274 -- } end.if. it.basis cust.cum
7275 --
7276 IF (l_debug <> -1) THEN
7277 rlm_core_sv.dpop(C_SDEBUG,'validateWithCumRec');
7278 END IF;
7279 --
7280 EXCEPTION
7281 WHEN e_CumRecYearMissing THEN
7282 --
7283 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7284 rlm_message_sv.app_error(
7285 x_ExceptionLevel => rlm_message_sv.k_error_level,
7286 x_MessageName => 'RLM_CUM_RECORD_YEAR_MISSING',
7287 x_InterfaceHeaderId => x_lines_rec.header_id,
7288 x_InterfaceLineId => x_lines_rec.line_id,
7289 x_ValidationType => 'CUM_KEY_PO');
7290 --
7291 IF (l_debug <> -1) THEN
7292 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUM_RECORD_YEAR_MISSING');
7293 END IF;
7294 --
7295 WHEN e_CumKeyPOMissing THEN
7296 --
7297 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7298 rlm_message_sv.app_error(
7299 x_ExceptionLevel => rlm_message_sv.k_error_level,
7300 x_MessageName => 'RLM_CUM_KEY_PO_MISSING',
7301 x_InterfaceHeaderId => x_lines_rec.header_id,
7302 x_InterfaceLineId => x_lines_rec.line_id,
7303 x_ValidationType => 'CUM_KEY_PO');
7304 --
7305 IF (l_debug <> -1) THEN
7306 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUM_KEY_PO_MISSING');
7307 END IF;
7308 --
7309 -- 4307505
7310 WHEN e_NoCumRec THEN
7311 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7312 rlm_message_sv.app_error(
7313 x_ExceptionLevel => rlm_message_sv.k_error_level,
7314 x_MessageName => 'RLM_NOACT_CUMKEY_CSTCUM_INTRST',
7315 x_InterfaceHeaderId => x_lines_rec.header_id,
7316 x_InterfaceLineId => x_lines_rec.line_id,
7317 x_Token1 => 'SHIP_TO',
7318 x_Value1 =>
7319 rlm_core_sv.get_ship_to(x_lines_rec.ship_to_address_id),
7320 x_Token2 => 'CITEM',
7321 x_Value2 =>
7322 rlm_core_sv.get_item_number(x_lines_rec.customer_item_id));
7323 --
7324 IF (l_debug <> -1) THEN
7325 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_NOACT_CUMKEY_CSTCUM_INTRST');
7326 END IF;
7327 --
7328 END validateWithCumRec;
7329
7330 /*===============================================================
7331
7332 PROCEDURE validateWithoutCumRec
7333
7334 ===============================================================*/
7335
7336 PROCEDURE validateWithoutCumRec(
7337 x_customer_id IN NUMBER,
7338 x_group_rec IN t_group_rec,
7339 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7340
7341 IS
7342
7343 v_cum_record RLM_CUM_SV.cum_rec_type;
7344 v_cum_key_record rlm_cum_sv.cum_key_attrib_rec_type;
7345 e_NoCumRec EXCEPTION;
7346 e_NoPoCumRec EXCEPTION;
7347
7348 BEGIN
7349 --
7350 IF (l_debug <> -1) THEN
7351 rlm_core_sv.dpush(C_SDEBUG,'validateWithoutCumRec');
7352 END IF;
7353 --
7354 IF x_Group_rec.setup_terms_rec.cum_control_code = 'CUM_BY_PO_ONLY' THEN
7355 --bug 4307505
7356 rlm_message_sv.app_error(
7357 x_ExceptionLevel => rlm_message_sv.k_warn_level,
7358 x_MessageName => 'RLM_CUMPO_STUP_NO_RECORD',
7359 x_InterfaceHeaderId => x_lines_rec.header_id,
7360 x_InterfaceLineId => x_lines_rec.line_id);
7361 --
7362 END IF;
7363 --
7364 --give a warning
7365 --
7366 IF (l_debug <> -1) THEN
7367 rlm_core_sv.dlog(C_DEBUG,'warning: RLM_CUM_STUP_NO_RECORD');
7368 END IF;
7369 --
7370 rlm_message_sv.app_error(
7371 x_ExceptionLevel => rlm_message_sv.k_warn_level,
7372 x_MessageName => 'RLM_CUM_STUP_NO_RECORD',
7373 x_InterfaceHeaderId => x_lines_rec.header_id,
7374 x_InterfaceLineId => x_lines_rec.line_id);
7375 --
7376 v_cum_key_record.customer_id := x_customer_id;
7377 --
7378 v_cum_key_record.customer_item_id := x_lines_rec.customer_item_id;
7379 --
7380 v_cum_key_record.ship_from_org_id := x_lines_rec.ship_from_org_id;
7381 --
7382 v_cum_key_record.intrmd_ship_to_address_id :=
7383 x_lines_rec.intrmd_ship_to_id;
7384 --
7385 v_cum_key_record.ship_to_address_id := x_lines_rec.ship_to_address_id ;
7386 --
7387 v_cum_key_record.bill_to_address_id := x_lines_rec.bill_to_address_id ;
7388 --
7389 v_cum_key_record.purchase_order_number :=
7390 x_lines_rec.cust_po_number;
7391 --
7392 v_cum_key_record.cust_record_year := x_lines_rec.industry_attribute1;
7393 --
7394 IF (l_debug <> -1) THEN
7395 rlm_core_sv.dlog(C_DEBUG,'customer_item_id',
7396 v_cum_key_record.customer_item_id);
7397 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id',
7398 v_cum_key_record.ship_from_org_id);
7399 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id',
7400 v_cum_key_record.ship_to_address_id);
7401 END IF;
7402 --
7403 v_cum_record.cum_key_id := NULL;
7404 v_cum_record.msg_name := NULL;
7405 --
7406 rlm_cum_sv.GetLatestCum(v_cum_key_record,
7407 x_Group_rec.setup_terms_rec,
7408 v_cum_record,
7409 rlm_cum_sv.k_CalledByVD);
7410 --
7411 IF v_cum_record.cum_key_id IS NULL THEN
7412 --
7413 IF (l_debug <> -1) THEN
7414 rlm_core_sv.dlog(C_DEBUG,'error: rlm_nocum_rec');
7415 END IF;
7416 --
7417 raise e_NoCumRec;
7418 --
7419 ELSE
7420 --
7421 IF v_cum_record.msg_name = 'RLM_CUM_START_FUTURE' THEN
7422 --
7423 rlm_message_sv.app_error(
7424 x_ExceptionLevel => rlm_message_sv.k_warn_level,
7425 x_MessageName => 'RLM_CUM_START_FUTURE',
7426 x_InterfaceHeaderId => x_lines_rec.header_id,
7427 x_InterfaceLineId => x_lines_rec.line_id,
7428 x_token1=>'ITEM',
7429 x_value1=>
7430 rlm_core_sv.get_item_number(x_lines_rec.customer_item_id),
7431 x_token2=>'SDATE',
7432 x_value2=>v_cum_record.cum_start_date);
7433 --
7434 END IF;
7435 --
7436 END IF;
7437 --
7438 IF (l_debug <> -1) THEN
7439 rlm_core_sv.dpop(C_SDEBUG,'validateWithoutCumRec');
7440 END IF;
7441 --
7442 EXCEPTION
7443
7444 WHEN e_NoCumRec THEN
7445 --
7446 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7447 rlm_message_sv.app_error(
7448 x_ExceptionLevel => rlm_message_sv.k_error_level,
7449 x_MessageName => 'RLM_NO_ACTIVE_CUM',
7450 x_InterfaceHeaderId => x_lines_rec.header_id,
7451 x_InterfaceLineId => x_lines_rec.line_id);
7452 --
7453 IF (l_debug <> -1) THEN
7454 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_NO_ACTIVE_CUM');
7455 END IF;
7456 --
7457 END validateWithoutCumRec;
7458
7459
7460 /*===========================================================================
7461
7462 PROCEDURE NAME: CheckCUMKeyPO
7463
7464 ===========================================================================*/
7465
7466 PROCEDURE CheckCUMKeyPO(
7467 x_group_rec IN RLM_VALIDATEDEMAND_SV.t_group_rec,
7468 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
7469 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7470 IS
7471 --
7472 v_Progress VARCHAR2(3) := '010';
7473 x_Success NUMBER := 0;
7474 v_cum_record RLM_CUM_SV.cum_rec_type;
7475 v_exist VARCHAR2(30);
7476 v_cum_key_record rlm_cum_sv.cum_key_attrib_rec_type;
7477
7478 CURSOR c_cum
7479 IS
7480 SELECT nvl(customer_item_id, x_lines_rec.customer_item_id),
7481 nvl(inventory_item_id, x_lines_rec.inventory_item_id),
7482 nvl(ship_from_org_id, x_lines_rec.ship_from_org_id),
7483 nvl(intrmd_ship_to_id, x_lines_rec.intrmd_ship_to_id),
7484 nvl(ship_to_address_id, x_lines_rec.ship_to_address_id),
7485 nvl(bill_to_address_id, x_lines_rec.bill_to_address_id),
7486 cust_po_number ,
7487 start_date_time,
7488 industry_attribute1 -- cust_record_year
7489 FROM rlm_interface_lines
7490 WHERE header_id = x_header_rec.header_id
7491 AND schedule_item_num = x_group_rec.schedule_item_num
7492 AND item_detail_type = '4'
7493 AND item_detail_subtype = 'CUM';
7494
7495
7496 BEGIN
7497 --
7498 IF (l_debug <> -1) THEN
7499 rlm_core_sv.dpush(C_SDEBUG,'CheckCUMKeyPO');
7500 rlm_core_sv.dlog(C_DEBUG,'calc_cum_flag',
7501 x_Group_rec.setup_terms_rec.calc_cum_flag);
7502 rlm_core_sv.dlog(C_DEBUG,'intransit calc basis',x_Group_rec.setup_terms_rec.intransit_calc_basis);
7503 END IF;
7504 --
7505 IF rlm_message_sv.check_dependency('CUM_KEY_PO') THEN
7506 --
7507 IF x_Group_rec.setup_terms_rec.calc_cum_flag = 'Y' THEN
7508
7509 --calc_cum_flag = Y does not mean cum processing
7510 --find out if there are any cum info provided
7511 --
7512 IF NVL(x_Group_rec.setup_terms_rec.cum_control_code,'NO_CUM') IN
7513 ('CUM_BY_DATE_PO','CUM_BY_DATE_RECORD_YEAR'
7514 ,'CUM_BY_DATE_ONLY','CUM_BY_PO_ONLY')
7515 THEN --{
7516 --
7517 IF (l_debug <> -1) THEN
7518 rlm_core_sv.dlog(C_DEBUG,'schedule_item_num',
7519 x_group_rec.schedule_item_num );
7520 END IF;
7521 --
7522 v_Progress := 20;
7523 --
7524 --for each group find out if there is a cum info line (item detail
7525 -- type 4). If there are no cum line sent, verify that there is
7526 -- a cum_key defined
7527 --
7528 BEGIN
7529
7530 OPEN c_cum;
7531
7532 FETCH c_cum into
7533 v_cum_key_record.customer_item_id,
7534 v_cum_key_record.inventory_item_id,
7535 v_cum_key_record.ship_from_org_id,
7536 v_cum_key_record.intrmd_ship_to_address_id,
7537 v_cum_key_record.ship_to_address_id,
7538 v_cum_key_record.bill_to_address_id,
7539 v_cum_key_record.purchase_order_number,
7540 v_cum_key_record.cum_start_date,
7541 v_cum_key_record.cust_record_year;
7542
7543 IF c_cum%NOTFOUND THEN
7544 --
7545 raise no_data_found;
7546 --
7547 END IF;
7548
7549 -- 4307505 : passing customer id in addition
7550 v_cum_key_record.customer_id := x_header_rec.customer_id;
7551 validateWithCumRec( v_cum_key_record, x_group_rec , x_lines_rec );
7552 --
7553 EXCEPTION
7554 WHEN NO_DATA_FOUND THEN
7555 --
7556 validateWithoutCumRec(x_header_rec.customer_id,
7557 x_group_rec ,
7558 x_lines_rec);
7559 WHEN TOO_MANY_ROWS THEN
7560 --
7561 IF (l_debug <> -1) THEN
7562 rlm_core_sv.dlog(C_DEBUG,'error:RLM_MULTIPLE_ITM_CUM_DTL_FOUND') ;
7563 END IF;
7564 --
7565 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7566 rlm_message_sv.app_error(
7567 x_ExceptionLevel => rlm_message_sv.k_error_level,
7568 x_MessageName => 'RLM_MULTIPLE_ITM_CUM_DTL_FOUND',
7569 x_InterfaceHeaderId => x_lines_rec.header_id,
7570 x_InterfaceLineId => x_lines_rec.line_id,
7571 x_Token1 => 'SHIP_FROM',
7572 x_Value1 =>
7573 rlm_core_sv.get_ship_from(x_lines_rec.ship_from_org_id),
7574 x_Token2 => 'SHIP_TO',
7575 x_Value2 =>
7576 rlm_core_sv.get_ship_to(x_lines_rec.ship_to_address_id),
7577 x_Token3 => 'CITEM',
7578 x_Value3 =>
7579 rlm_core_sv.get_item_number(x_lines_rec.customer_item_id));
7580 --
7581 IF (l_debug <> -1) THEN
7582 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7583 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: e_TooManyRows');
7584 END IF;
7585 --
7586 END;
7587 --
7588 END IF;--}
7589 --
7590 END IF;
7591
7592 IF x_Group_rec.setup_terms_rec.intransit_calc_basis= 'CUSTOMER_CUM' THEN --
7593 BEGIN
7594 --
7595 IF c_cum%ISOPEN THEN
7596 --
7597 IF c_cum%NOTFOUND THEN
7598 --
7599 raise no_data_found;
7600 --
7601 END IF;
7602 --
7603 ELSE
7604 --
7605 OPEN c_cum;
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 END IF;
7624 --
7625 EXCEPTION
7626 --
7627 When NO_DATA_FOUND then
7628 --
7629 -- 4307505 : changed this from Error to Warning
7630 rlm_message_sv.app_error(
7631 x_ExceptionLevel => rlm_message_sv.k_warn_level, -- 4307505
7632 x_MessageName => 'RLM_NO_CUM_INTRST_CUST_CUM',
7633 x_InterfaceHeaderId => x_lines_rec.header_id,
7634 x_InterfaceLineId => x_lines_rec.line_id,
7635 x_Token1 => 'SHIP_TO',
7636 x_Value1 =>
7637 rlm_core_sv.get_ship_to(x_lines_rec.ship_to_address_id),
7638 x_Token2 => 'CITEM',
7639 x_Value2 =>
7640 rlm_core_sv.get_item_number(x_lines_rec.customer_item_id));
7641 --
7642 IF (l_debug <> -1) THEN
7643 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7644 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: No CUM Line for Intransit Basis Customer CUM');
7645 END IF;
7646 --
7647 END;
7648 --
7649 END IF;
7650 --
7651 END IF;
7652 --
7653 IF c_cum%ISOPEN THEN
7654 CLOSE c_cum; --bug 4570658
7655 END IF;
7656
7657 IF (l_debug <> -1) THEN
7658 rlm_core_sv.dpop(C_SDEBUG);
7659 END IF;
7660 --
7661 EXCEPTION
7662 --
7663 WHEN OTHERS THEN
7664 --
7665 IF c_cum%ISOPEN THEN
7666 CLOSE c_cum; --bug 4570658
7667 END IF;
7668
7669 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7670 rlm_message_sv.sql_error('rlm_validateDemand_sv.CheckCUMKeyPO', v_Progress);
7671 --
7672 IF (l_debug <> -1) THEN
7673 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
7674 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
7675 END IF;
7676 --
7677 raise;
7678 --
7679 END CheckCUMKeyPO;
7680
7681
7682 /*===========================================================================
7683
7684 PROCEDURE NAME: ValidPlanningProdSeqNum
7685
7686 ===========================================================================*/
7687 PROCEDURE ValidPlanningProdSeqNum(
7688 x_setup_terms_rec IN rlm_setup_terms_sv.setup_terms_rec_typ,
7689 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
7690 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7691 IS
7692 v_Progress VARCHAR(3) := '010';
7693 e_ProdSeqMissing EXCEPTION;
7694 e_MatchProdSeq EXCEPTION;
7695
7696 BEGIN
7697 --
7698 IF (l_debug <> -1) THEN
7699 rlm_core_sv.dpush(C_SDEBUG,'ValidPlanningProdSeqNum');
7700 END IF;
7701 --
7702 IF rlm_message_sv.check_dependency('PROD_SEQ_NUM') THEN
7703 --
7704 IF (l_debug <> -1) THEN
7705 rlm_core_sv.dlog(C_DEBUG,'ScheduleType',x_header_rec.schedule_type);
7706 rlm_core_sv.dlog(C_DEBUG,'Planning_Prod_Seq',
7707 x_lines_rec.CUST_PRODUCTION_SEQ_NUM);
7708 END IF;
7709 --
7710 IF (x_header_rec.schedule_type = 'SEQUENCED') THEN
7711 --
7712 IF (x_lines_rec.CUST_PRODUCTION_SEQ_NUM IS NULL AND
7713 x_lines_rec.item_detail_type IN ('0', '1', '2', '6')) THEN
7714 --
7715 raise e_ProdSeqMissing;
7716 --
7717 ELSE
7718 --
7719 IF INSTR(x_setup_terms_rec.match_within_key,'$') = 0 THEN
7720 /* Mandatory to set match within in case of a sequenced schedule*/
7721 raise e_MatchProdSeq;
7722 END IF ;
7723 --
7724 END IF;
7725 --
7726 END IF;
7727 --
7728 END IF;
7729 --
7730 IF (l_debug <> -1) THEN
7731 rlm_core_sv.dpop(C_SDEBUG);
7732 END IF;
7733 --
7734 EXCEPTION
7735 --
7736 WHEN e_ProdSeqMissing THEN
7737 --
7738 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7739 --
7740 rlm_message_sv.app_error(
7741 x_ExceptionLevel => rlm_message_sv.k_error_level,
7742 x_MessageName => 'RLM_PLANNING_PROD_SEQ_MISSING',
7743 x_InterfaceHeaderId => x_lines_rec.header_id,
7744 x_InterfaceLineId => x_lines_rec.line_id,
7745 x_ValidationType => 'PROD_SEQ_NUM');
7746 --
7747 IF (l_debug <> -1) THEN
7748 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_PLANNING_PROD_SEQ_MISSING');
7749 END IF;
7750 --
7751 WHEN e_MatchProdSeq THEN
7752 --
7753 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7754 --
7755 rlm_message_sv.app_error(
7756 x_ExceptionLevel => rlm_message_sv.k_error_level,
7757 x_MessageName => 'RLM_MATCH_WITHIN_PLN_PROD_SEQ',
7758 x_InterfaceHeaderId => x_lines_rec.header_id,
7759 x_InterfaceLineId => x_lines_rec.line_id,
7760 x_ValidationType => 'PROD_SEQ_NUM');
7761 --
7762 IF (l_debug <> -1) THEN
7763 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_MATCH_WITHIN_PLN_PROD_SEQ');
7764 END IF;
7765 --
7766 WHEN OTHERS THEN
7767 --
7768 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7769 rlm_message_sv.sql_error('rlm_validateDemand_sv.ValidPlanningProdSeqNum',
7770 v_Progress);
7771 --
7772 IF (l_debug <> -1) THEN
7773 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
7774 END IF;
7775 --
7776 raise;
7777 --
7778 END ValidPlanningProdSeqNum;
7779
7780 /*===========================================================================
7781
7782 PROCEDURE NAME: ValidLineScheduleType
7783
7784 ===========================================================================*/
7785 PROCEDURE ValidLineScheduleType(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
7786 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE)
7787 IS
7788 v_Progress VARCHAR(3) := '010';
7789 e_SchedTypeInv EXCEPTION;
7790
7791 BEGIN
7792 --
7793 IF (l_debug <> -1) THEN
7794 rlm_core_sv.dpush(C_SDEBUG,'ValidLineScheduleType');
7795 END IF;
7796 --
7797 IF rlm_message_sv.check_dependency('LINE_SCHEDULE_TYPE') THEN
7798 --
7799 IF (l_debug <> -1) THEN
7800 rlm_core_sv.dlog(C_DEBUG,'Schedule_Type',x_header_rec.Schedule_type );
7801 END IF;
7802 --
7803 IF x_lines_rec.Subline_Assigned_Id_Ext IS NOT NULL AND
7804 x_lines_rec.Subline_Config_Code_Ext IS NOT NULL AND
7805 x_lines_rec.Subline_Cust_Item_Ext IS NOT NULL AND
7806 x_lines_rec.Subline_Cust_Item_Id IS NOT NULL AND
7807 x_lines_rec.Subline_Model_Num_Ext IS NOT NULL AND
7808 x_lines_rec.Subline_Quantity IS NOT NULL AND
7809 x_lines_rec.Subline_UOM_CODE IS NOT NULL AND
7810 x_header_rec.Schedule_type <> 'SEQUENCED' THEN
7811 --
7812 raise e_SchedTypeInv;
7813 --
7814 END IF;
7815 --
7816 END IF;
7817 --
7818 IF (l_debug <> -1) THEN
7819 rlm_core_sv.dpop(C_SDEBUG);
7820 END IF;
7821 --
7822 EXCEPTION
7823 --
7824 WHEN e_SchedTypeInv THEN
7825 --
7826 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
7827 rlm_message_sv.app_error(
7828 x_ExceptionLevel => rlm_message_sv.k_error_level,
7829 x_MessageName => 'RLM_LINE_SCHEDULE_TYPE_INVALID',
7830 x_InterfaceHeaderId => x_lines_rec.header_id,
7831 x_InterfaceLineId => x_lines_rec.line_id,
7832 x_token1=>'SCHEDULE_TYPE',
7833 x_value1=>x_header_rec.Schedule_type,
7834 x_ValidationType => 'LINE_SCHEDULE_TYPE');
7835 --
7836 IF (l_debug <> -1) THEN
7837 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_LINE_SCHEDULE_TYPE_INVALID');
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.ValidLineScheduleType: ',
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 END ValidLineScheduleType;
7851
7852 /*===========================================================================
7853
7854 PROCEDURE NAME: UpdateInterfaceLines
7855
7856 ===========================================================================*/
7857 PROCEDURE UpdateInterfaceLines(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE)
7858 IS
7859 --
7860 v_Progress VARCHAR(3) := '010';
7861 IsGroupError BOOLEAN := FALSE;
7862 --
7863 header_id_tab g_number_tbl_type;
7864 line_id_tab g_number_tbl_type;
7865 AGREEMENT_ID_TAB AGREEMENT_ID_T;
7866 ATO_DATA_TYPE_TAB ATO_DATA_TYPE_T;
7867 BILL_TO_ADDRESS_1_EXT_TAB BILL_TO_ADDRESS_1_EXT_T;
7868 BILL_TO_ADDRESS_2_EXT_TAB BILL_TO_ADDRESS_2_EXT_T;
7869 BILL_TO_ADDRESS_3_EXT_TAB BILL_TO_ADDRESS_3_EXT_T;
7870 BILL_TO_ADDRESS_4_EXT_TAB BILL_TO_ADDRESS_4_EXT_T;
7871 BILL_TO_ADDRESS_ID_TAB BILL_TO_ADDRESS_ID_T;
7872 INVOICE_TO_ORG_ID_TAB INVOICE_TO_ORG_ID_T;
7873 BILL_TO_CITY_EXT_TAB BILL_TO_CITY_EXT_T;
7874 BILL_TO_COUNTRY_EXT_TAB BILL_TO_COUNTRY_EXT_T;
7875 BILL_TO_COUNTY_EXT_TAB BILL_TO_COUNTY_EXT_T;
7876 BILL_TO_NAME_EXT_TAB BILL_TO_NAME_EXT_T;
7877 BILL_TO_POSTAL_CD_EXT_TAB BILL_TO_POSTAL_CD_EXT_T;
7878 BILL_TO_PROVINCE_EXT_TAB BILL_TO_PROVINCE_EXT_T;
7879 BILL_TO_SITE_USE_ID_TAB BILL_TO_SITE_USE_ID_T;
7880 BILL_TO_STATE_EXT_TAB BILL_TO_STATE_EXT_T;
7881 CARRIER_ID_CODE_EXT_TAB CARRIER_ID_CODE_EXT_T;
7882 CARRIER_QUALIFIER_EXT_TAB CARRIER_QUALIFIER_EXT_T;
7883 COMMODITY_EXT_TAB COMMODITY_EXT_T;
7884 COUNTRY_OF_ORIGIN_EXT_TAB COUNTRY_OF_ORIGIN_EXT_T;
7885 CUST_ASSEMBLY_EXT_TAB CUST_ASSEMBLY_EXT_T;
7886 CUST_ASSIGNED_ID_EXT_TAB CUST_ASSIGNED_ID_EXT_T;
7887 CUST_BILL_TO_EXT_TAB CUST_BILL_TO_EXT_T;
7888 CUST_CONTRACT_NUM_EXT_TAB CUST_CONTRACT_NUM_EXT_T;
7889 CUSTOMER_DOCK_CODE_TAB CUSTOMER_DOCK_CODE_T;
7890 CUST_INTRMD_SHIP_TO_EXT_TAB CUST_INTRMD_SHIP_TO_EXT_T;
7891 CUST_ITEM_PRICE_EXT_TAB CUST_ITEM_PRICE_EXT_T;
7892 CUST_ITEM_PRICE_UOM_EXT_TAB CUST_ITEM_PRICE_UOM_EXT_T;
7893 CUSTOMER_ITEM_REVISION_TAB CUSTOMER_ITEM_REVISION_T;
7894 CUSTOMER_JOB_TAB CUSTOMER_JOB_T;
7895 CUST_MANUFACTURER_EXT_TAB CUST_MANUFACTURER_EXT_T;
7896 CUST_MODEL_NUMBER_EXT_TAB CUST_MODEL_NUMBER_EXT_T;
7897 CUST_MODEL_SERIAL_NUMBER_TAB CUST_MODEL_SERIAL_NUMBER_T;
7898 CUST_ORDER_NUM_EXT_TAB CUST_ORDER_NUM_EXT_T;
7899 CUST_PROCESS_NUM_EXT_TAB CUST_PROCESS_NUM_EXT_T;
7900 CUST_SET_NUM_EXT_TAB CUST_SET_NUM_EXT_T;
7901 CUST_SHIP_FROM_ORG_EXT_TAB CUST_SHIP_FROM_ORG_EXT_T;
7902 CUST_SHIP_TO_EXT_TAB CUST_SHIP_TO_EXT_T;
7903 CUST_UOM_EXT_TAB CUST_UOM_EXT_T;
7904 CUSTOMER_ITEM_EXT_TAB CUSTOMER_ITEM_EXT_T;
7905 CUSTOMER_ITEM_ID_TAB CUSTOMER_ITEM_ID_T;
7906 REQUEST_DATE_TAB REQUEST_DATE_T;
7907 SCHEDULE_DATE_TAB SCHEDULE_DATE_T;
7908 DATE_TYPE_CODE_TAB DATE_TYPE_CODE_T;
7909 DATE_TYPE_CODE_EXT_TAB DATE_TYPE_CODE_EXT_T;
7910 DELIVERY_LEAD_TIME_TAB DELIVERY_LEAD_TIME_T;
7911 END_DATE_TIME_TAB END_DATE_TIME_T;
7912 EQUIPMENT_CODE_EXT_TAB EQUIPMENT_CODE_EXT_T;
7913 EQUIPMENT_NUMBER_EXT_TAB EQUIPMENT_NUMBER_EXT_T;
7914 HANDLING_CODE_EXT_TAB HANDLING_CODE_EXT_T;
7915 HAZARD_CODE_EXT_TAB HAZARD_CODE_EXT_T;
7916 HAZARD_CODE_QUAL_EXT_TAB HAZARD_CODE_QUAL_EXT_T;
7917 HAZARD_DESCRIPTION_EXT_TAB HAZARD_DESCRIPTION_EXT_T;
7918 IMPORT_LICENSE_DATE_EXT_TAB IMPORT_LICENSE_DATE_EXT_T;
7919 IMPORT_LICENSE_EXT_TAB IMPORT_LICENSE_EXT_T;
7920 INDUSTRY_ATTRIBUTE1_TAB INDUSTRY_ATTRIBUTE1_T;
7921 INDUSTRY_ATTRIBUTE10_TAB INDUSTRY_ATTRIBUTE10_T;
7922 INDUSTRY_ATTRIBUTE11_TAB INDUSTRY_ATTRIBUTE11_T;
7923 INDUSTRY_ATTRIBUTE12_TAB INDUSTRY_ATTRIBUTE12_T;
7924 INDUSTRY_ATTRIBUTE13_TAB INDUSTRY_ATTRIBUTE13_T;
7925 INDUSTRY_ATTRIBUTE14_TAB INDUSTRY_ATTRIBUTE14_T;
7926 INDUSTRY_ATTRIBUTE15_TAB INDUSTRY_ATTRIBUTE15_T;
7927 INDUSTRY_ATTRIBUTE2_TAB INDUSTRY_ATTRIBUTE2_T;
7928 INDUSTRY_ATTRIBUTE3_TAB INDUSTRY_ATTRIBUTE3_T;
7929 INDUSTRY_ATTRIBUTE4_TAB INDUSTRY_ATTRIBUTE4_T;
7930 INDUSTRY_ATTRIBUTE5_TAB INDUSTRY_ATTRIBUTE5_T;
7931 INDUSTRY_ATTRIBUTE6_TAB INDUSTRY_ATTRIBUTE6_T;
7932 INDUSTRY_ATTRIBUTE7_TAB INDUSTRY_ATTRIBUTE7_T;
7933 INDUSTRY_ATTRIBUTE8_TAB INDUSTRY_ATTRIBUTE8_T;
7934 INDUSTRY_ATTRIBUTE9_TAB INDUSTRY_ATTRIBUTE9_T;
7935 INDUSTRY_CONTEXT_TAB INDUSTRY_CONTEXT_T;
7936 INTRMD_SHIP_TO_ID_TAB INTRMD_SHIP_TO_ID_T;
7937 SHIP_TO_ORG_ID_TAB SHIP_TO_ORG_ID_T;
7938 INTRMD_ST_ADDRESS_1_EXT_TAB INTRMD_ST_ADDRESS_1_EXT_T;
7939 INTRMD_ST_ADDRESS_2_EXT_TAB INTRMD_ST_ADDRESS_2_EXT_T;
7940 INTRMD_ST_ADDRESS_3_EXT_TAB INTRMD_ST_ADDRESS_3_EXT_T;
7941 INTRMD_ST_ADDRESS_4_EXT_TAB INTRMD_ST_ADDRESS_4_EXT_T;
7942 INTRMD_ST_CITY_EXT_TAB INTRMD_ST_CITY_EXT_T;
7943 INTRMD_ST_COUNTRY_EXT_TAB INTRMD_ST_COUNTRY_EXT_T;
7944 INTRMD_ST_COUNTY_EXT_TAB INTRMD_ST_COUNTY_EXT_T;
7945 INTRMD_ST_NAME_EXT_TAB INTRMD_ST_NAME_EXT_T;
7946 INTRMD_ST_POSTAL_CD_EXT_TAB INTRMD_ST_POSTAL_CD_EXT_T;
7947 INTRMD_ST_PROVINCE_EXT_TAB INTRMD_ST_PROVINCE_EXT_T;
7948 INTRMD_ST_STATE_EXT_TAB INTRMD_ST_STATE_EXT_T;
7949 INTRMD_ST_SITE_USE_ID_TAB INTRMD_ST_SITE_USE_ID_T;
7950 INVENTORY_ITEM_ID_TAB INVENTORY_ITEM_ID_T;
7951 INVENTORY_ITEM_SEGMENT1_TAB INVENTORY_ITEM_SEGMENT1_T;
7952 INVENTORY_ITEM_SEGMENT10_TAB INVENTORY_ITEM_SEGMENT10_T;
7953 INVENTORY_ITEM_SEGMENT11_TAB INVENTORY_ITEM_SEGMENT11_T;
7954 INVENTORY_ITEM_SEGMENT12_TAB INVENTORY_ITEM_SEGMENT12_T;
7955 INVENTORY_ITEM_SEGMENT13_TAB INVENTORY_ITEM_SEGMENT13_T;
7956 INVENTORY_ITEM_SEGMENT14_TAB INVENTORY_ITEM_SEGMENT14_T;
7957 INVENTORY_ITEM_SEGMENT15_TAB INVENTORY_ITEM_SEGMENT15_T;
7958 INVENTORY_ITEM_SEGMENT16_TAB INVENTORY_ITEM_SEGMENT16_T;
7959 INVENTORY_ITEM_SEGMENT17_TAB INVENTORY_ITEM_SEGMENT17_T;
7960 INVENTORY_ITEM_SEGMENT18_TAB INVENTORY_ITEM_SEGMENT18_T;
7961 INVENTORY_ITEM_SEGMENT19_TAB INVENTORY_ITEM_SEGMENT19_T;
7962 INVENTORY_ITEM_SEGMENT2_TAB INVENTORY_ITEM_SEGMENT2_T;
7963 INVENTORY_ITEM_SEGMENT20_TAB INVENTORY_ITEM_SEGMENT20_T;
7964 INVENTORY_ITEM_SEGMENT3_TAB INVENTORY_ITEM_SEGMENT3_T;
7965 INVENTORY_ITEM_SEGMENT4_TAB INVENTORY_ITEM_SEGMENT4_T;
7966 INVENTORY_ITEM_SEGMENT5_TAB INVENTORY_ITEM_SEGMENT5_T;
7967 INVENTORY_ITEM_SEGMENT6_TAB INVENTORY_ITEM_SEGMENT6_T;
7968 INVENTORY_ITEM_SEGMENT7_TAB INVENTORY_ITEM_SEGMENT7_T;
7969 INVENTORY_ITEM_SEGMENT8_TAB INVENTORY_ITEM_SEGMENT8_T;
7970 INVENTORY_ITEM_SEGMENT9_TAB INVENTORY_ITEM_SEGMENT9_T;
7971 ITEM_CONTACT_CODE_1_TAB ITEM_CONTACT_CODE_1_T;
7972 ITEM_CONTACT_CODE_2_TAB ITEM_CONTACT_CODE_2_T;
7973 ITEM_CONTACT_VALUE_1_TAB ITEM_CONTACT_VALUE_1_T;
7974 ITEM_CONTACT_VALUE_2_TAB ITEM_CONTACT_VALUE_2_T;
7975 ITEM_DESCRIPTION_EXT_TAB ITEM_DESCRIPTION_EXT_T;
7976 ITEM_DETAIL_QUANTITY_TAB ITEM_DETAIL_QUANTITY_T;
7977 ITEM_DETAIL_REF_CODE_1_TAB ITEM_DETAIL_REF_CODE_1_T;
7978 ITEM_DETAIL_REF_CODE_2_TAB ITEM_DETAIL_REF_CODE_2_T;
7979 ITEM_DETAIL_REF_CODE_3_TAB ITEM_DETAIL_REF_CODE_3_T;
7980 ITEM_DETAIL_REF_VALUE_1_TAB ITEM_DETAIL_REF_VALUE_1_T;
7981 ITEM_DETAIL_REF_VALUE_2_TAB ITEM_DETAIL_REF_VALUE_2_T;
7982 ITEM_DETAIL_REF_VALUE_3_TAB ITEM_DETAIL_REF_VALUE_3_T;
7983 ITEM_DETAIL_SUBTYPE_TAB ITEM_DETAIL_SUBTYPE_T;
7984 ITEM_DETAIL_SUBTYPE_EXT_TAB ITEM_DETAIL_SUBTYPE_EXT_T;
7985 ITEM_DETAIL_TYPE_TAB ITEM_DETAIL_TYPE_T;
7986 ITEM_DETAIL_TYPE_EXT_TAB ITEM_DETAIL_TYPE_EXT_T;
7987 ITEM_ENG_CNG_LVL_EXT_TAB ITEM_ENG_CNG_LVL_EXT_T;
7988 ITEM_MEASUREMENTS_EXT_TAB ITEM_MEASUREMENTS_EXT_T;
7989 ITEM_NOTE_TEXT_TAB ITEM_NOTE_TEXT_T;
7990 ITEM_REF_CODE_1_TAB ITEM_REF_CODE_1_T;
7991 ITEM_REF_CODE_2_TAB ITEM_REF_CODE_2_T;
7992 ITEM_REF_CODE_3_TAB ITEM_REF_CODE_3_T;
7993 ITEM_REF_VALUE_1_TAB ITEM_REF_VALUE_1_T;
7994 ITEM_REF_VALUE_2_TAB ITEM_REF_VALUE_2_T;
7995 ITEM_REF_VALUE_3_TAB ITEM_REF_VALUE_3_T;
7996 ITEM_RELEASE_STATUS_EXT_TAB ITEM_RELEASE_STATUS_EXT_T;
7997 LADING_QUANTITY_EXT_TAB LADING_QUANTITY_EXT_T;
7998 LETTER_CREDIT_EXPDT_EXT_TAB LETTER_CREDIT_EXPDT_EXT_T;
7999 LETTER_CREDIT_EXT_TAB LETTER_CREDIT_EXT_T;
8000 LINE_REFERENCE_TAB LINE_REFERENCE_T;
8001 LINK_TO_LINE_REF_TAB LINK_TO_LINE_REF_T;
8002 ORDER_HEADER_ID_TAB ORDER_HEADER_ID_T;
8003 OTHER_NAME_CODE_1_TAB OTHER_NAME_CODE_1_T;
8004 OTHER_NAME_CODE_2_TAB OTHER_NAME_CODE_2_T;
8005 OTHER_NAME_VALUE_1_TAB OTHER_NAME_VALUE_1_T;
8006 OTHER_NAME_VALUE_2_TAB OTHER_NAME_VALUE_2_T;
8007 PACK_SIZE_EXT_TAB PACK_SIZE_EXT_T;
8008 PACK_UNITS_PER_PACK_EXT_TAB PACK_UNITS_PER_PACK_EXT_T;
8009 PACK_UOM_CODE_EXT_TAB PACK_UOM_CODE_EXT_T;
8010 PACKAGING_CODE_EXT_TAB PACKAGING_CODE_EXT_T;
8011 PARENT_LINK_LINE_REF_TAB PARENT_LINK_LINE_REF_T;
8012 CUST_PRODUCTION_SEQ_NUM_TAB CUST_PRODUCTION_SEQ_NUM_T;
8013 PRICE_LIST_ID_TAB PRICE_LIST_ID_T;
8014 PRIMARY_QUANTITY_TAB PRIMARY_QUANTITY_T;
8015 PRIMARY_UOM_CODE_TAB PRIMARY_UOM_CODE_T;
8016 PRIME_CONTRCTR_PART_EXT_TAB PRIME_CONTRCTR_PART_EXT_T;
8017 PROCESS_STATUS_TAB PROCESS_STATUS_T;
8018 CUST_PO_RELEASE_NUM_TAB CUST_PO_RELEASE_NUM_T;
8019 CUST_PO_DATE_TAB CUST_PO_DATE_T;
8020 CUST_PO_LINE_NUM_TAB CUST_PO_LINE_NUM_T;
8021 CUST_PO_NUMBER_TAB CUST_PO_NUMBER_T;
8022 QTY_TYPE_CODE_TAB QTY_TYPE_CODE_T;
8023 QTY_TYPE_CODE_EXT_TAB QTY_TYPE_CODE_EXT_T;
8024 RETURN_CONTAINER_EXT_TAB RETURN_CONTAINER_EXT_T;
8025 SCHEDULE_LINE_ID_TAB SCHEDULE_LINE_ID_T;
8026 ROUTING_DESC_EXT_TAB ROUTING_DESC_EXT_T;
8027 ROUTING_SEQ_CODE_EXT_TAB ROUTING_SEQ_CODE_EXT_T;
8028 SCHEDULE_ITEM_NUM_TAB SCHEDULE_ITEM_NUM_T;
8029 SHIP_DEL_PATTERN_EXT_TAB SHIP_DEL_PATTERN_EXT_T;
8030 SHIP_DEL_TIME_CODE_EXT_TAB SHIP_DEL_TIME_CODE_EXT_T;
8031 SHIP_DEL_RULE_NAME_TAB SHIP_DEL_RULE_NAME_T;
8032 SHIP_FROM_ADDRESS_1_EXT_TAB SHIP_FROM_ADDRESS_1_EXT_T;
8033 SHIP_FROM_ADDRESS_2_EXT_TAB SHIP_FROM_ADDRESS_2_EXT_T;
8034 SHIP_FROM_ADDRESS_3_EXT_TAB SHIP_FROM_ADDRESS_3_EXT_T;
8035 SHIP_FROM_ADDRESS_4_EXT_TAB SHIP_FROM_ADDRESS_4_EXT_T;
8036 SHIP_FROM_CITY_EXT_TAB SHIP_FROM_CITY_EXT_T;
8037 SHIP_FROM_COUNTRY_EXT_TAB SHIP_FROM_COUNTRY_EXT_T;
8038 SHIP_FROM_COUNTY_EXT_TAB SHIP_FROM_COUNTY_EXT_T;
8039 SHIP_FROM_NAME_EXT_TAB SHIP_FROM_NAME_EXT_T;
8040 SHIP_FROM_ORG_ID_TAB SHIP_FROM_ORG_ID_T;
8041 SHIP_FROM_POSTAL_CD_EXT_TAB SHIP_FROM_POSTAL_CD_EXT_T;
8042 SHIP_FROM_PROVINCE_EXT_TAB SHIP_FROM_PROVINCE_EXT_T;
8043 SHIP_FROM_STATE_EXT_TAB SHIP_FROM_STATE_EXT_T;
8044 SHIP_LABEL_INFO_LINE_1_TAB SHIP_LABEL_INFO_LINE_1_T;
8045 SHIP_LABEL_INFO_LINE_10_TAB SHIP_LABEL_INFO_LINE_10_T;
8046 SHIP_LABEL_INFO_LINE_2_TAB SHIP_LABEL_INFO_LINE_2_T;
8047 SHIP_LABEL_INFO_LINE_3_TAB SHIP_LABEL_INFO_LINE_3_T;
8048 SHIP_LABEL_INFO_LINE_4_TAB SHIP_LABEL_INFO_LINE_4_T;
8049 SHIP_LABEL_INFO_LINE_5_TAB SHIP_LABEL_INFO_LINE_5_T;
8050 SHIP_LABEL_INFO_LINE_6_TAB SHIP_LABEL_INFO_LINE_6_T;
8051 SHIP_LABEL_INFO_LINE_7_TAB SHIP_LABEL_INFO_LINE_7_T;
8052 SHIP_LABEL_INFO_LINE_8_TAB SHIP_LABEL_INFO_LINE_8_T;
8053 SHIP_LABEL_INFO_LINE_9_TAB SHIP_LABEL_INFO_LINE_9_T;
8054 SHIP_TO_ADDRESS_1_EXT_TAB SHIP_TO_ADDRESS_1_EXT_T;
8055 SHIP_TO_ADDRESS_2_EXT_TAB SHIP_TO_ADDRESS_2_EXT_T;
8056 SHIP_TO_ADDRESS_3_EXT_TAB SHIP_TO_ADDRESS_3_EXT_T;
8057 SHIP_TO_ADDRESS_4_EXT_TAB SHIP_TO_ADDRESS_4_EXT_T;
8058 SHIP_TO_ADDRESS_ID_TAB SHIP_TO_ADDRESS_ID_T;
8059 DELIVER_TO_ORG_ID_TAB DELIVER_TO_ORG_ID_T;
8060 SHIP_TO_CITY_EXT_TAB SHIP_TO_CITY_EXT_T;
8061 SHIP_TO_COUNTRY_EXT_TAB SHIP_TO_COUNTRY_EXT_T;
8062 SHIP_TO_COUNTY_EXT_TAB SHIP_TO_COUNTY_EXT_T;
8063 SHIP_TO_NAME_EXT_TAB SHIP_TO_NAME_EXT_T;
8064 SHIP_TO_POSTAL_CD_EXT_TAB SHIP_TO_POSTAL_CD_EXT_T;
8065 SHIP_TO_PROVINCE_EXT_TAB SHIP_TO_PROVINCE_EXT_T;
8066 SHIP_TO_SITE_USE_ID_TAB SHIP_TO_SITE_USE_ID_T;
8067 SHIP_TO_STATE_EXT_TAB SHIP_TO_STATE_EXT_T;
8068 START_DATE_TIME_TAB START_DATE_TIME_T;
8069 SUBLINE_ASSIGNED_ID_EXT_TAB SUBLINE_ASSIGNED_ID_EXT_T;
8070 SUBLINE_CONFIG_CODE_EXT_TAB SUBLINE_CONFIG_CODE_EXT_T;
8071 SUBLINE_CUST_ITEM_EXT_TAB SUBLINE_CUST_ITEM_EXT_T;
8072 SUBLINE_CUST_ITEM_ID_TAB SUBLINE_CUST_ITEM_ID_T;
8073 SUBLINE_MODEL_NUM_EXT_TAB SUBLINE_MODEL_NUM_EXT_T;
8074 SUBLINE_QUANTITY_TAB SUBLINE_QUANTITY_T;
8075 SUBLINE_UOM_CODE_TAB SUBLINE_UOM_CODE_T;
8076 SUPPLIER_ITEM_EXT_TAB SUPPLIER_ITEM_EXT_T;
8077 TRANSIT_TIME_EXT_TAB TRANSIT_TIME_EXT_T;
8078 TRANSIT_TIME_QUAL_EXT_TAB TRANSIT_TIME_QUAL_EXT_T;
8079 TRANSPORT_LOC_QUAL_EXT_TAB TRANSPORT_LOC_QUAL_EXT_T;
8080 TRANSPORT_LOCATION_EXT_TAB TRANSPORT_LOCATION_EXT_T;
8081 TRANSPORT_METHOD_EXT_TAB TRANSPORT_METHOD_EXT_T;
8082 UOM_CODE_TAB UOM_CODE_T;
8083 WEIGHT_EXT_TAB WEIGHT_EXT_T;
8084 WEIGHT_QUALIFIER_EXT_TAB WEIGHT_QUALIFIER_EXT_T;
8085 WEIGHT_UOM_EXT_TAB WEIGHT_UOM_EXT_T;
8086 FBO_CONFIGURATION_KEY_1_TAB FBO_CONFIGURATION_KEY_1_T;
8087 FBO_CONFIGURATION_KEY_2_TAB FBO_CONFIGURATION_KEY_2_T;
8088 FBO_CONFIGURATION_KEY_3_TAB FBO_CONFIGURATION_KEY_3_T;
8089 FBO_CONFIGURATION_KEY_4_TAB FBO_CONFIGURATION_KEY_4_T;
8090 FBO_CONFIGURATION_KEY_5_TAB FBO_CONFIGURATION_KEY_5_T;
8091 MATCH_KEY_ACROSS_TAB MATCH_KEY_ACROSS_T;
8092 MATCH_KEY_WITHIN_TAB MATCH_KEY_WITHIN_T;
8093 CRITICAL_KEY_ATTRIBUTES_TAB CRITICAL_KEY_ATTRIBUTES_T;
8094 ATTRIBUTE_CATEGORY_TAB ATTRIBUTE_CATEGORY_T;
8095 ATTRIBUTE1_TAB ATTRIBUTE1_T;
8096 ATTRIBUTE2_TAB ATTRIBUTE2_T;
8097 ATTRIBUTE3_TAB ATTRIBUTE3_T;
8098 ATTRIBUTE4_TAB ATTRIBUTE4_T;
8099 ATTRIBUTE5_TAB ATTRIBUTE5_T;
8100 ATTRIBUTE6_TAB ATTRIBUTE6_T;
8101 ATTRIBUTE7_TAB ATTRIBUTE7_T;
8102 ATTRIBUTE8_TAB ATTRIBUTE8_T;
8103 ATTRIBUTE9_TAB ATTRIBUTE9_T;
8104 ATTRIBUTE10_TAB ATTRIBUTE10_T;
8105 ATTRIBUTE11_TAB ATTRIBUTE11_T;
8106 ATTRIBUTE12_TAB ATTRIBUTE12_T;
8107 ATTRIBUTE13_TAB ATTRIBUTE13_T;
8108 ATTRIBUTE14_TAB ATTRIBUTE14_T;
8109 ATTRIBUTE15_TAB ATTRIBUTE15_T;
8110 BLANKET_NUMBER_TAB BLANKET_NUMBER_T;
8111 INTMED_SHIP_TO_ORG_ID_TAB INTMED_SHIP_TO_ORG_ID_T;
8112 SHIP_TO_CUSTOMER_ID_TAB SHIP_TO_CUSTOMER_ID_T;
8113 --
8114 v_last_update_date DATE := sysdate;
8115 v_last_updated_by NUMBER := fnd_global.user_id;
8116 v_last_update_login NUMBER := fnd_global.login_id;
8117 v_request_id NUMBER := fnd_global.conc_REQUEST_ID;
8118 v_program_application_id NUMBER := fnd_global.PROG_APPL_ID;
8119 v_program_id NUMBER := fnd_global.conc_program_id;
8120 v_program_update_date DATE := sysdate;
8121 --
8122 BEGIN
8123 --
8124 IF (l_debug <> -1) THEN
8125 rlm_core_sv.dpush(C_SDEBUG,'UpdateInterfaceLines');
8126 rlm_core_sv.dlog(C_DEBUG,'Number of Interface lines in g_lines_tab ',g_lines_tab.COUNT);
8127 END IF;
8128 --
8129 g_line_PS := rlm_core_sv.k_PS_AVAILABLE;
8130
8131 FOR i IN 1..g_lines_tab.COUNT LOOP
8132 --
8133 IF g_lines_tab(i).process_status = rlm_core_sv.k_PS_AVAILABLE THEN
8134 --
8135 IF (l_debug <> -1) THEN
8136 rlm_core_sv.dlog(C_DEBUG,'line_id',g_lines_tab(i).line_id);
8137 rlm_core_sv.dlog(C_DEBUG,'Process Status AVAILABLE ');
8138 END IF;
8139 --
8140 ELSIF g_lines_tab(i).process_status = rlm_core_sv.k_PS_ERROR THEN
8141 --
8142 g_line_PS := rlm_core_sv.k_PS_ERROR;
8143 IsGroupError := TRUE;
8144 --
8145 IF (l_debug <> -1) THEN
8146 rlm_core_sv.dlog(C_DEBUG,'line_id',g_lines_tab(i).line_id);
8147 rlm_core_sv.dlog(C_DEBUG,'Process Status ERROR ');
8148 END IF;
8149 --
8150 END IF;
8151 --
8152 IF (l_debug <> -1) THEN
8153 rlm_core_sv.dlog(C_DEBUG,'customer_item_id ',
8154 g_lines_tab(i).customer_item_id);
8155 END IF;
8156 --
8157 -- assign values for industry attribute fields
8158 --
8159 g_lines_tab(i).industry_attribute2 := to_char(g_lines_tab(i).start_date_time,'RRRR/MM/DD HH24:MI:SS');
8160 g_lines_tab(i).industry_attribute3 := g_header_rec.schedule_reference_num;
8161 g_lines_tab(i).industry_attribute15 := g_lines_tab(i).ship_from_org_id;
8162 --
8163 --assign tables to values
8164 header_id_tab(i) := g_lines_tab(i).header_id;
8165 line_id_tab(i) := g_lines_tab(i).line_id;
8166 AGREEMENT_ID_TAB(i) := g_lines_tab(i).AGREEMENT_ID;
8167 ATO_DATA_TYPE_TAB(i) := g_lines_tab(i).ATO_DATA_TYPE;
8168 BILL_TO_ADDRESS_1_EXT_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_1_EXT;
8169 BILL_TO_ADDRESS_2_EXT_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_2_EXT;
8170 BILL_TO_ADDRESS_3_EXT_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_3_EXT;
8171 BILL_TO_ADDRESS_4_EXT_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_4_EXT;
8172 BILL_TO_ADDRESS_ID_TAB(i) := g_lines_tab(i).BILL_TO_ADDRESS_ID;
8173 INVOICE_TO_ORG_ID_TAB(i) := g_lines_tab(i).INVOICE_TO_ORG_ID ;
8174 BILL_TO_CITY_EXT_TAB(i) := g_lines_tab(i).BILL_TO_CITY_EXT;
8175 BILL_TO_COUNTRY_EXT_TAB(i) := g_lines_tab(i).BILL_TO_COUNTRY_EXT;
8176 BILL_TO_COUNTY_EXT_TAB(i) := g_lines_tab(i).BILL_TO_COUNTY_EXT;
8177 BILL_TO_NAME_EXT_TAB(i) := g_lines_tab(i).BILL_TO_NAME_EXT;
8178 BILL_TO_POSTAL_CD_EXT_TAB(i) := g_lines_tab(i).BILL_TO_POSTAL_CD_EXT;
8179 BILL_TO_PROVINCE_EXT_TAB(i) := g_lines_tab(i).BILL_TO_PROVINCE_EXT;
8180 BILL_TO_SITE_USE_ID_TAB(i) := g_lines_tab(i).BILL_TO_SITE_USE_ID;
8181 BILL_TO_STATE_EXT_TAB(i) := g_lines_tab(i).BILL_TO_STATE_EXT;
8182 CARRIER_ID_CODE_EXT_TAB(i) := g_lines_tab(i).CARRIER_ID_CODE_EXT;
8183 CARRIER_QUALIFIER_EXT_TAB(i) := g_lines_tab(i).CARRIER_QUALIFIER_EXT;
8184 COMMODITY_EXT_TAB(i) := g_lines_tab(i).COMMODITY_EXT;
8185 COUNTRY_OF_ORIGIN_EXT_TAB(i) := g_lines_tab(i).COUNTRY_OF_ORIGIN_EXT;
8186 CUST_ASSEMBLY_EXT_TAB(i) := g_lines_tab(i).CUST_ASSEMBLY_EXT;
8187 CUST_ASSIGNED_ID_EXT_TAB(i) := g_lines_tab(i).CUST_ASSIGNED_ID_EXT;
8188 CUST_BILL_TO_EXT_TAB(i) := g_lines_tab(i).CUST_BILL_TO_EXT;
8189 CUST_CONTRACT_NUM_EXT_TAB(i) := g_lines_tab(i).CUST_CONTRACT_NUM_EXT;
8190 CUSTOMER_DOCK_CODE_TAB(i) := g_lines_tab(i).CUSTOMER_DOCK_CODE;
8191 CUST_INTRMD_SHIP_TO_EXT_TAB(i) := g_lines_tab(i).CUST_INTRMD_SHIP_TO_EXT;
8192 CUST_ITEM_PRICE_EXT_TAB(i) := g_lines_tab(i).CUST_ITEM_PRICE_EXT;
8193 CUST_ITEM_PRICE_UOM_EXT_TAB(i) := g_lines_tab(i).CUST_ITEM_PRICE_UOM_EXT;
8194 CUSTOMER_ITEM_REVISION_TAB(i) := g_lines_tab(i).CUSTOMER_ITEM_REVISION;
8195 CUSTOMER_JOB_TAB(i) := g_lines_tab(i).CUSTOMER_JOB;
8196 CUST_MANUFACTURER_EXT_TAB(i) := g_lines_tab(i).CUST_MANUFACTURER_EXT;
8197 CUST_MODEL_NUMBER_EXT_TAB(i) := g_lines_tab(i).CUST_MODEL_NUMBER_EXT;
8198 CUST_MODEL_SERIAL_NUMBER_TAB(i) := g_lines_tab(i).CUST_MODEL_SERIAL_NUMBER;
8199 CUST_ORDER_NUM_EXT_TAB(i) := g_lines_tab(i).CUST_ORDER_NUM_EXT;
8200 CUST_PROCESS_NUM_EXT_TAB(i) := g_lines_tab(i).CUST_PROCESS_NUM_EXT;
8201 CUST_SET_NUM_EXT_TAB(i) := g_lines_tab(i).CUST_SET_NUM_EXT;
8202 CUST_SHIP_FROM_ORG_EXT_TAB(i) := g_lines_tab(i).CUST_SHIP_FROM_ORG_EXT;
8203 CUST_SHIP_TO_EXT_TAB(i) := g_lines_tab(i).CUST_SHIP_TO_EXT;
8204 CUST_UOM_EXT_TAB(i) := g_lines_tab(i).CUST_UOM_EXT;
8205 CUSTOMER_ITEM_EXT_TAB(i) := g_lines_tab(i).CUSTOMER_ITEM_EXT;
8206 CUSTOMER_ITEM_ID_TAB(i) := g_lines_tab(i).CUSTOMER_ITEM_ID;
8207 REQUEST_DATE_TAB(i) := g_lines_tab(i).REQUEST_DATE;
8208 SCHEDULE_DATE_TAB(i) := g_lines_tab(i).SCHEDULE_DATE;
8209 DATE_TYPE_CODE_TAB(i) := g_lines_tab(i).DATE_TYPE_CODE;
8210 DATE_TYPE_CODE_EXT_TAB(i) := g_lines_tab(i).DATE_TYPE_CODE_EXT;
8211 DELIVERY_LEAD_TIME_TAB(i) := g_lines_tab(i).DELIVERY_LEAD_TIME;
8212 END_DATE_TIME_TAB(i) := g_lines_tab(i).END_DATE_TIME;
8213 EQUIPMENT_CODE_EXT_TAB(i) := g_lines_tab(i).EQUIPMENT_CODE_EXT;
8214 EQUIPMENT_NUMBER_EXT_TAB(i) := g_lines_tab(i).EQUIPMENT_NUMBER_EXT;
8215 HANDLING_CODE_EXT_TAB(i) := g_lines_tab(i).HANDLING_CODE_EXT;
8216 HAZARD_CODE_EXT_TAB(i) := g_lines_tab(i).HAZARD_CODE_EXT;
8217 HAZARD_CODE_QUAL_EXT_TAB(i) := g_lines_tab(i).HAZARD_CODE_QUAL_EXT;
8218 HAZARD_DESCRIPTION_EXT_TAB(i) := g_lines_tab(i).HAZARD_DESCRIPTION_EXT;
8219 IMPORT_LICENSE_DATE_EXT_TAB(i) := g_lines_tab(i).IMPORT_LICENSE_DATE_EXT;
8220 IMPORT_LICENSE_EXT_TAB(i) := g_lines_tab(i).IMPORT_LICENSE_EXT;
8221 INDUSTRY_ATTRIBUTE1_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE1;
8222 INDUSTRY_ATTRIBUTE10_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE10;
8223 INDUSTRY_ATTRIBUTE11_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE11;
8224 INDUSTRY_ATTRIBUTE12_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE12;
8225 INDUSTRY_ATTRIBUTE13_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE13;
8226 INDUSTRY_ATTRIBUTE14_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE14;
8227 INDUSTRY_ATTRIBUTE15_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE15;
8228 INDUSTRY_ATTRIBUTE2_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE2;
8229 INDUSTRY_ATTRIBUTE3_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE3;
8230 INDUSTRY_ATTRIBUTE4_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE4;
8231 INDUSTRY_ATTRIBUTE5_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE5;
8232 INDUSTRY_ATTRIBUTE6_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE6;
8233 INDUSTRY_ATTRIBUTE7_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE7;
8234 INDUSTRY_ATTRIBUTE8_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE8;
8235 INDUSTRY_ATTRIBUTE9_TAB(i) := g_lines_tab(i).INDUSTRY_ATTRIBUTE9;
8236 INDUSTRY_CONTEXT_TAB(i) := g_lines_tab(i).INDUSTRY_CONTEXT;
8237 INTRMD_SHIP_TO_ID_TAB(i) := g_lines_tab(i).INTRMD_SHIP_TO_ID;
8238 SHIP_TO_ORG_ID_TAB(i) := g_lines_tab(i).SHIP_TO_ORG_ID ;
8239 INTRMD_ST_ADDRESS_1_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_ADDRESS_1_EXT;
8240 INTRMD_ST_ADDRESS_2_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_ADDRESS_2_EXT;
8241 INTRMD_ST_ADDRESS_3_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_ADDRESS_3_EXT;
8242 INTRMD_ST_ADDRESS_4_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_ADDRESS_4_EXT;
8243 INTRMD_ST_CITY_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_CITY_EXT;
8244 INTRMD_ST_COUNTRY_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_COUNTRY_EXT;
8245 INTRMD_ST_COUNTY_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_COUNTY_EXT;
8246 INTRMD_ST_NAME_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_NAME_EXT;
8247 INTRMD_ST_POSTAL_CD_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_POSTAL_CD_EXT;
8248 INTRMD_ST_PROVINCE_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_PROVINCE_EXT;
8249 INTRMD_ST_STATE_EXT_TAB(i) := g_lines_tab(i).INTRMD_ST_STATE_EXT;
8250 INTRMD_ST_SITE_USE_ID_TAB(i) := g_lines_tab(i).INTRMD_ST_SITE_USE_ID;
8251 INVENTORY_ITEM_ID_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_ID;
8252 INVENTORY_ITEM_SEGMENT1_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT1;
8253 INVENTORY_ITEM_SEGMENT10_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT10;
8254 INVENTORY_ITEM_SEGMENT11_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT11;
8255 INVENTORY_ITEM_SEGMENT12_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT12;
8256 INVENTORY_ITEM_SEGMENT13_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT13;
8257 INVENTORY_ITEM_SEGMENT14_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT14;
8258 INVENTORY_ITEM_SEGMENT15_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT15;
8259 INVENTORY_ITEM_SEGMENT16_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT16;
8260 INVENTORY_ITEM_SEGMENT17_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT17;
8261 INVENTORY_ITEM_SEGMENT18_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT18;
8262 INVENTORY_ITEM_SEGMENT19_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT19;
8263 INVENTORY_ITEM_SEGMENT2_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT2;
8264 INVENTORY_ITEM_SEGMENT20_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT20;
8265 INVENTORY_ITEM_SEGMENT3_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT3;
8266 INVENTORY_ITEM_SEGMENT4_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT4;
8267 INVENTORY_ITEM_SEGMENT5_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT5;
8268 INVENTORY_ITEM_SEGMENT6_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT6;
8269 INVENTORY_ITEM_SEGMENT7_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT7;
8270 INVENTORY_ITEM_SEGMENT8_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT8;
8271 INVENTORY_ITEM_SEGMENT9_TAB(i) := g_lines_tab(i).INVENTORY_ITEM_SEGMENT9;
8272 ITEM_CONTACT_CODE_1_TAB(i) := g_lines_tab(i).ITEM_CONTACT_CODE_1;
8273 ITEM_CONTACT_CODE_2_TAB(i) := g_lines_tab(i).ITEM_CONTACT_CODE_2;
8274 ITEM_CONTACT_VALUE_1_TAB(i) := g_lines_tab(i).ITEM_CONTACT_VALUE_1;
8275 ITEM_CONTACT_VALUE_2_TAB(i) := g_lines_tab(i).ITEM_CONTACT_VALUE_2;
8276 ITEM_DESCRIPTION_EXT_TAB(i) := g_lines_tab(i).ITEM_DESCRIPTION_EXT;
8277 ITEM_DETAIL_QUANTITY_TAB(i) := g_lines_tab(i).ITEM_DETAIL_QUANTITY;
8278 ITEM_DETAIL_REF_CODE_1_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_CODE_1;
8279 ITEM_DETAIL_REF_CODE_2_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_CODE_2;
8280 ITEM_DETAIL_REF_CODE_3_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_CODE_3;
8281 ITEM_DETAIL_REF_VALUE_1_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_VALUE_1;
8282 ITEM_DETAIL_REF_VALUE_2_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_VALUE_2;
8283 ITEM_DETAIL_REF_VALUE_3_TAB(i) := g_lines_tab(i).ITEM_DETAIL_REF_VALUE_3;
8284 ITEM_DETAIL_SUBTYPE_TAB(i) := g_lines_tab(i).ITEM_DETAIL_SUBTYPE;
8285 ITEM_DETAIL_SUBTYPE_EXT_TAB(i) := g_lines_tab(i).ITEM_DETAIL_SUBTYPE_EXT;
8286 ITEM_DETAIL_TYPE_TAB(i) := g_lines_tab(i).ITEM_DETAIL_TYPE;
8287 ITEM_DETAIL_TYPE_EXT_TAB(i) := g_lines_tab(i).ITEM_DETAIL_TYPE_EXT;
8288 ITEM_ENG_CNG_LVL_EXT_TAB(i) := g_lines_tab(i).ITEM_ENG_CNG_LVL_EXT;
8289 ITEM_MEASUREMENTS_EXT_TAB(i) := g_lines_tab(i).ITEM_MEASUREMENTS_EXT;
8290 ITEM_NOTE_TEXT_TAB(i) := g_lines_tab(i).ITEM_NOTE_TEXT;
8291 ITEM_REF_CODE_1_TAB(i) := g_lines_tab(i).ITEM_REF_CODE_1;
8292 ITEM_REF_CODE_2_TAB(i) := g_lines_tab(i).ITEM_REF_CODE_2;
8293 ITEM_REF_CODE_3_TAB(i) := g_lines_tab(i).ITEM_REF_CODE_3;
8294 ITEM_REF_VALUE_1_TAB(i) := g_lines_tab(i).ITEM_REF_VALUE_1;
8295 ITEM_REF_VALUE_2_TAB(i) := g_lines_tab(i).ITEM_REF_VALUE_2;
8296 ITEM_REF_VALUE_3_TAB(i) := g_lines_tab(i).ITEM_REF_VALUE_3;
8297 ITEM_RELEASE_STATUS_EXT_TAB(i) := g_lines_tab(i).ITEM_RELEASE_STATUS_EXT;
8298 LADING_QUANTITY_EXT_TAB(i) := g_lines_tab(i).LADING_QUANTITY_EXT;
8299 LETTER_CREDIT_EXPDT_EXT_TAB(i) := g_lines_tab(i).LETTER_CREDIT_EXPDT_EXT;
8300 LETTER_CREDIT_EXT_TAB(i) := g_lines_tab(i).LETTER_CREDIT_EXT;
8301 LINE_REFERENCE_TAB(i) := g_lines_tab(i).LINE_REFERENCE;
8302 LINK_TO_LINE_REF_TAB(i) := g_lines_tab(i).LINK_TO_LINE_REF;
8303 ORDER_HEADER_ID_TAB(i) := g_lines_tab(i).ORDER_HEADER_ID;
8304 OTHER_NAME_CODE_1_TAB(i) := g_lines_tab(i).OTHER_NAME_CODE_1;
8305 OTHER_NAME_CODE_2_TAB(i) := g_lines_tab(i).OTHER_NAME_CODE_2;
8306 OTHER_NAME_VALUE_1_TAB(i) := g_lines_tab(i).OTHER_NAME_VALUE_1;
8307 OTHER_NAME_VALUE_2_TAB(i) := g_lines_tab(i).OTHER_NAME_VALUE_2;
8308 PACK_SIZE_EXT_TAB(i) := g_lines_tab(i).PACK_SIZE_EXT;
8309 PACK_UNITS_PER_PACK_EXT_TAB(i) := g_lines_tab(i).PACK_UNITS_PER_PACK_EXT;
8310 PACK_UOM_CODE_EXT_TAB(i) := g_lines_tab(i).PACK_UOM_CODE_EXT;
8311 PACKAGING_CODE_EXT_TAB(i) := g_lines_tab(i).PACKAGING_CODE_EXT;
8312 PARENT_LINK_LINE_REF_TAB(i) := g_lines_tab(i).PARENT_LINK_LINE_REF;
8313 CUST_PRODUCTION_SEQ_NUM_TAB(i) := g_lines_tab(i).CUST_PRODUCTION_SEQ_NUM;
8314 PRICE_LIST_ID_TAB(i) := g_lines_tab(i).PRICE_LIST_ID;
8315 PRIMARY_QUANTITY_TAB(i) := g_lines_tab(i).PRIMARY_QUANTITY;
8316 PRIMARY_UOM_CODE_TAB(i) := g_lines_tab(i).PRIMARY_UOM_CODE;
8317 PRIME_CONTRCTR_PART_EXT_TAB(i) := g_lines_tab(i).PRIME_CONTRCTR_PART_EXT;
8318 PROCESS_STATUS_TAB(i) := g_lines_tab(i).PROCESS_STATUS;
8319 CUST_PO_RELEASE_NUM_TAB(i) := g_lines_tab(i).CUST_PO_RELEASE_NUM;
8320 CUST_PO_DATE_TAB(i) := g_lines_tab(i).CUST_PO_DATE;
8321 CUST_PO_LINE_NUM_TAB(i) := g_lines_tab(i).CUST_PO_LINE_NUM;
8322 CUST_PO_NUMBER_TAB(i) := g_lines_tab(i).CUST_PO_NUMBER;
8323 QTY_TYPE_CODE_TAB(i) := g_lines_tab(i).QTY_TYPE_CODE;
8324 QTY_TYPE_CODE_EXT_TAB(i) := g_lines_tab(i).QTY_TYPE_CODE_EXT;
8325 RETURN_CONTAINER_EXT_TAB(i) := g_lines_tab(i).RETURN_CONTAINER_EXT;
8326 SCHEDULE_LINE_ID_TAB(i) := g_lines_tab(i).SCHEDULE_LINE_ID;
8327 ROUTING_DESC_EXT_TAB(i) := g_lines_tab(i).ROUTING_DESC_EXT;
8328 ROUTING_SEQ_CODE_EXT_TAB(i) := g_lines_tab(i).ROUTING_SEQ_CODE_EXT;
8329 SCHEDULE_ITEM_NUM_TAB(i) := g_lines_tab(i).SCHEDULE_ITEM_NUM;
8330 SHIP_DEL_PATTERN_EXT_TAB(i) := g_lines_tab(i).SHIP_DEL_PATTERN_EXT;
8331 SHIP_DEL_TIME_CODE_EXT_TAB(i) := g_lines_tab(i).SHIP_DEL_TIME_CODE_EXT;
8332 SHIP_DEL_RULE_NAME_TAB(i) := g_lines_tab(i).SHIP_DEL_RULE_NAME;
8333 SHIP_FROM_ADDRESS_1_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_ADDRESS_1_EXT;
8334 SHIP_FROM_ADDRESS_2_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_ADDRESS_2_EXT;
8335 SHIP_FROM_ADDRESS_3_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_ADDRESS_3_EXT;
8336 SHIP_FROM_ADDRESS_4_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_ADDRESS_4_EXT;
8337 SHIP_FROM_CITY_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_CITY_EXT;
8338 SHIP_FROM_COUNTRY_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_COUNTRY_EXT;
8339 SHIP_FROM_COUNTY_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_COUNTY_EXT;
8340 SHIP_FROM_NAME_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_NAME_EXT;
8341 SHIP_FROM_ORG_ID_TAB(i) := g_lines_tab(i).SHIP_FROM_ORG_ID;
8342 SHIP_FROM_POSTAL_CD_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_POSTAL_CD_EXT;
8343 SHIP_FROM_PROVINCE_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_PROVINCE_EXT;
8344 SHIP_FROM_STATE_EXT_TAB(i) := g_lines_tab(i).SHIP_FROM_STATE_EXT;
8345 SHIP_LABEL_INFO_LINE_1_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_1;
8346 SHIP_LABEL_INFO_LINE_10_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_10;
8347 SHIP_LABEL_INFO_LINE_2_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_2;
8348 SHIP_LABEL_INFO_LINE_3_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_3;
8349 SHIP_LABEL_INFO_LINE_4_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_4;
8350 SHIP_LABEL_INFO_LINE_5_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_5;
8351 SHIP_LABEL_INFO_LINE_6_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_6;
8352 SHIP_LABEL_INFO_LINE_7_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_7;
8353 SHIP_LABEL_INFO_LINE_8_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_8;
8354 SHIP_LABEL_INFO_LINE_9_TAB(i) := g_lines_tab(i).SHIP_LABEL_INFO_LINE_9;
8355 SHIP_TO_ADDRESS_1_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_1_EXT;
8356 SHIP_TO_ADDRESS_2_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_2_EXT;
8357 SHIP_TO_ADDRESS_3_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_3_EXT;
8358 SHIP_TO_ADDRESS_4_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_4_EXT;
8359 SHIP_TO_ADDRESS_ID_TAB(i) := g_lines_tab(i).SHIP_TO_ADDRESS_ID;
8360 DELIVER_TO_ORG_ID_TAB(i) := g_lines_tab(i).DELIVER_TO_ORG_ID ;
8361 SHIP_TO_CITY_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_CITY_EXT;
8362 SHIP_TO_COUNTRY_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_COUNTRY_EXT;
8363 SHIP_TO_COUNTY_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_COUNTY_EXT;
8364 SHIP_TO_NAME_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_NAME_EXT;
8365 SHIP_TO_POSTAL_CD_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_POSTAL_CD_EXT;
8366 SHIP_TO_PROVINCE_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_PROVINCE_EXT;
8367 SHIP_TO_SITE_USE_ID_TAB(i) := g_lines_tab(i).SHIP_TO_SITE_USE_ID;
8368 SHIP_TO_STATE_EXT_TAB(i) := g_lines_tab(i).SHIP_TO_STATE_EXT;
8369 START_DATE_TIME_TAB(i) := g_lines_tab(i).START_DATE_TIME;
8370 SUBLINE_ASSIGNED_ID_EXT_TAB(i) := g_lines_tab(i).SUBLINE_ASSIGNED_ID_EXT;
8371 SUBLINE_CONFIG_CODE_EXT_TAB(i) := g_lines_tab(i).SUBLINE_CONFIG_CODE_EXT;
8372 SUBLINE_CUST_ITEM_EXT_TAB(i) := g_lines_tab(i).SUBLINE_CUST_ITEM_EXT;
8373 SUBLINE_CUST_ITEM_ID_TAB(i) := g_lines_tab(i).SUBLINE_CUST_ITEM_ID;
8374 SUBLINE_MODEL_NUM_EXT_TAB(i) := g_lines_tab(i).SUBLINE_MODEL_NUM_EXT;
8375 SUBLINE_QUANTITY_TAB(i) := g_lines_tab(i).SUBLINE_QUANTITY;
8376 SUBLINE_UOM_CODE_TAB(i) := g_lines_tab(i).SUBLINE_UOM_CODE;
8377 SUPPLIER_ITEM_EXT_TAB(i) := g_lines_tab(i).SUPPLIER_ITEM_EXT;
8378 TRANSIT_TIME_EXT_TAB(i) := g_lines_tab(i).TRANSIT_TIME_EXT;
8379 TRANSIT_TIME_QUAL_EXT_TAB(i) := g_lines_tab(i).TRANSIT_TIME_QUAL_EXT;
8380 TRANSPORT_LOC_QUAL_EXT_TAB(i) := g_lines_tab(i).TRANSPORT_LOC_QUAL_EXT;
8381 TRANSPORT_LOCATION_EXT_TAB(i) := g_lines_tab(i).TRANSPORT_LOCATION_EXT;
8382 TRANSPORT_METHOD_EXT_TAB(i) := g_lines_tab(i).TRANSPORT_METHOD_EXT;
8383 UOM_CODE_TAB(i) := g_lines_tab(i).UOM_CODE;
8384 WEIGHT_EXT_TAB(i) := g_lines_tab(i).WEIGHT_EXT;
8385 WEIGHT_QUALIFIER_EXT_TAB(i) := g_lines_tab(i).WEIGHT_QUALIFIER_EXT;
8386 WEIGHT_UOM_EXT_TAB(i) := g_lines_tab(i).WEIGHT_UOM_EXT;
8387 FBO_CONFIGURATION_KEY_1_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_1;
8388 FBO_CONFIGURATION_KEY_2_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_2;
8389 FBO_CONFIGURATION_KEY_3_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_3;
8390 FBO_CONFIGURATION_KEY_4_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_4;
8391 FBO_CONFIGURATION_KEY_5_TAB(i) := g_lines_tab(i).FBO_CONFIGURATION_KEY_5;
8392 MATCH_KEY_ACROSS_TAB(i) := g_lines_tab(i).MATCH_KEY_ACROSS;
8393 MATCH_KEY_WITHIN_TAB(i) := g_lines_tab(i).MATCH_KEY_WITHIN;
8394 CRITICAL_KEY_ATTRIBUTES_TAB(i) := g_lines_tab(i).CRITICAL_KEY_ATTRIBUTES;
8395 ATTRIBUTE_CATEGORY_TAB(i) := g_lines_tab(i).ATTRIBUTE_CATEGORY;
8396 ATTRIBUTE1_TAB(i) := g_lines_tab(i).ATTRIBUTE1;
8397 ATTRIBUTE2_TAB(i) := g_lines_tab(i).ATTRIBUTE2;
8398 ATTRIBUTE3_TAB(i) := g_lines_tab(i).ATTRIBUTE3;
8399 ATTRIBUTE4_TAB(i) := g_lines_tab(i).ATTRIBUTE4;
8400 ATTRIBUTE5_TAB(i) := g_lines_tab(i).ATTRIBUTE5;
8401 ATTRIBUTE6_TAB(i) := g_lines_tab(i).ATTRIBUTE6;
8402 ATTRIBUTE7_TAB(i) := g_lines_tab(i).ATTRIBUTE7;
8403 ATTRIBUTE8_TAB(i) := g_lines_tab(i).ATTRIBUTE8;
8404 ATTRIBUTE9_TAB(i) := g_lines_tab(i).ATTRIBUTE9;
8405 ATTRIBUTE10_TAB(i) := g_lines_tab(i).ATTRIBUTE10;
8406 ATTRIBUTE11_TAB(i) := g_lines_tab(i).ATTRIBUTE11;
8407 ATTRIBUTE12_TAB(i) := g_lines_tab(i).ATTRIBUTE12;
8408 ATTRIBUTE13_TAB(i) := g_lines_tab(i).ATTRIBUTE13;
8409 ATTRIBUTE14_TAB(i) := g_lines_tab(i).ATTRIBUTE14;
8410 ATTRIBUTE15_TAB(i) := g_lines_tab(i).ATTRIBUTE15;
8411 BLANKET_NUMBER_TAB(i) := g_lines_tab(i).BLANKET_NUMBER;
8412 INTMED_SHIP_TO_ORG_ID_TAB(i) := g_lines_tab(i).INTMED_SHIP_TO_ORG_ID;
8413 SHIP_TO_CUSTOMER_ID_TAB(i) := g_lines_tab(i).SHIP_TO_CUSTOMER_ID;
8414 --
8415 END LOOP;
8416
8417 FOR i IN 1..g_lines_tab.COUNT LOOP
8418 --
8419 process_status_tab(i) := g_line_PS;
8420 --
8421 END LOOP;
8422
8423 /* oracle 9i compatible bulk update
8424 FORALL i in 1..g_lines_tab.COUNT
8425
8426 UPDATE rlm_interface_lines
8427 SET ROW = g_lines_tab(i)
8428 WHERE header_id = header_id_tab(i)
8429 AND line_id = line_id_tab(i);
8430
8431 */
8432
8433 --bulk update
8434 FORALL i in 1..g_lines_tab.COUNT
8435 UPDATE rlm_interface_lines
8436 SET
8437 AGREEMENT_ID = AGREEMENT_ID_TAB(i),
8438 ATO_DATA_TYPE = ATO_DATA_TYPE_TAB(i),
8439 BILL_TO_ADDRESS_1_EXT = BILL_TO_ADDRESS_1_EXT_TAB(i),
8440 BILL_TO_ADDRESS_2_EXT = BILL_TO_ADDRESS_2_EXT_TAB(i),
8441 BILL_TO_ADDRESS_3_EXT = BILL_TO_ADDRESS_3_EXT_TAB(i),
8442 BILL_TO_ADDRESS_4_EXT = BILL_TO_ADDRESS_4_EXT_TAB(i),
8443 BILL_TO_ADDRESS_ID = BILL_TO_ADDRESS_ID_TAB(i),
8444 INVOICE_TO_ORG_ID = INVOICE_TO_ORG_ID_TAB(i),
8445 BILL_TO_CITY_EXT = BILL_TO_CITY_EXT_TAB(i),
8446 BILL_TO_COUNTRY_EXT = BILL_TO_COUNTRY_EXT_TAB(i),
8447 BILL_TO_COUNTY_EXT = BILL_TO_COUNTY_EXT_TAB(i),
8448 BILL_TO_NAME_EXT = BILL_TO_NAME_EXT_TAB(i),
8449 BILL_TO_POSTAL_CD_EXT = BILL_TO_POSTAL_CD_EXT_TAB(i),
8450 BILL_TO_PROVINCE_EXT = BILL_TO_PROVINCE_EXT_TAB(i),
8451 BILL_TO_SITE_USE_ID = BILL_TO_SITE_USE_ID_TAB(i),
8452 BILL_TO_STATE_EXT = BILL_TO_STATE_EXT_TAB(i),
8453 CARRIER_ID_CODE_EXT = CARRIER_ID_CODE_EXT_TAB(i),
8454 CARRIER_QUALIFIER_EXT = CARRIER_QUALIFIER_EXT_TAB(i),
8455 COMMODITY_EXT = COMMODITY_EXT_TAB(i),
8456 COUNTRY_OF_ORIGIN_EXT = COUNTRY_OF_ORIGIN_EXT_TAB(i),
8457 CUST_ASSEMBLY_EXT = CUST_ASSEMBLY_EXT_TAB(i),
8458 CUST_ASSIGNED_ID_EXT = CUST_ASSIGNED_ID_EXT_TAB(i),
8459 CUST_BILL_TO_EXT = CUST_BILL_TO_EXT_TAB(i),
8460 CUST_CONTRACT_NUM_EXT = CUST_CONTRACT_NUM_EXT_TAB(i),
8461 CUSTOMER_DOCK_CODE = CUSTOMER_DOCK_CODE_TAB(i),
8462 CUST_INTRMD_SHIP_TO_EXT = CUST_INTRMD_SHIP_TO_EXT_TAB(i),
8463 CUST_ITEM_PRICE_EXT = CUST_ITEM_PRICE_EXT_TAB(i),
8464 CUST_ITEM_PRICE_UOM_EXT = CUST_ITEM_PRICE_UOM_EXT_TAB(i),
8465 CUSTOMER_ITEM_REVISION = CUSTOMER_ITEM_REVISION_TAB(i),
8466 CUSTOMER_JOB = CUSTOMER_JOB_TAB(i),
8467 CUST_MANUFACTURER_EXT = CUST_MANUFACTURER_EXT_TAB(i),
8468 CUST_MODEL_NUMBER_EXT = CUST_MODEL_NUMBER_EXT_TAB(i),
8469 CUST_MODEL_SERIAL_NUMBER = CUST_MODEL_SERIAL_NUMBER_TAB(i),
8470 CUST_ORDER_NUM_EXT = CUST_ORDER_NUM_EXT_TAB(i),
8471 CUST_PROCESS_NUM_EXT = CUST_PROCESS_NUM_EXT_TAB(i),
8472 CUST_SET_NUM_EXT = CUST_SET_NUM_EXT_TAB(i),
8473 CUST_SHIP_FROM_ORG_EXT = CUST_SHIP_FROM_ORG_EXT_TAB(i),
8474 CUST_SHIP_TO_EXT = CUST_SHIP_TO_EXT_TAB(i),
8475 CUST_UOM_EXT = CUST_UOM_EXT_TAB(i),
8476 CUSTOMER_ITEM_EXT = CUSTOMER_ITEM_EXT_TAB(i),
8477 CUSTOMER_ITEM_ID = CUSTOMER_ITEM_ID_TAB(i),
8478 REQUEST_DATE = REQUEST_DATE_TAB(i),
8479 SCHEDULE_DATE = SCHEDULE_DATE_TAB(i),
8480 DATE_TYPE_CODE = DATE_TYPE_CODE_TAB(i),
8481 DATE_TYPE_CODE_EXT = DATE_TYPE_CODE_EXT_TAB(i),
8482 DELIVERY_LEAD_TIME = DELIVERY_LEAD_TIME_TAB(i),
8483 END_DATE_TIME = END_DATE_TIME_TAB(i),
8484 EQUIPMENT_CODE_EXT = EQUIPMENT_CODE_EXT_TAB(i),
8485 EQUIPMENT_NUMBER_EXT = EQUIPMENT_NUMBER_EXT_TAB(i),
8486 HANDLING_CODE_EXT = HANDLING_CODE_EXT_TAB(i),
8487 HAZARD_CODE_EXT = HAZARD_CODE_EXT_TAB(i),
8488 HAZARD_CODE_QUAL_EXT = HAZARD_CODE_QUAL_EXT_TAB(i),
8489 HAZARD_DESCRIPTION_EXT = HAZARD_DESCRIPTION_EXT_TAB(i),
8490 IMPORT_LICENSE_DATE_EXT = IMPORT_LICENSE_DATE_EXT_TAB(i),
8491 IMPORT_LICENSE_EXT = IMPORT_LICENSE_EXT_TAB(i),
8492 INDUSTRY_ATTRIBUTE1 = INDUSTRY_ATTRIBUTE1_TAB(i),
8493 INDUSTRY_ATTRIBUTE10 = INDUSTRY_ATTRIBUTE10_TAB(i),
8494 INDUSTRY_ATTRIBUTE11 = INDUSTRY_ATTRIBUTE11_TAB(i),
8495 INDUSTRY_ATTRIBUTE12 = INDUSTRY_ATTRIBUTE12_TAB(i),
8496 INDUSTRY_ATTRIBUTE13 = INDUSTRY_ATTRIBUTE13_TAB(i),
8497 INDUSTRY_ATTRIBUTE14 = INDUSTRY_ATTRIBUTE14_TAB(i),
8498 INDUSTRY_ATTRIBUTE15 = INDUSTRY_ATTRIBUTE15_TAB(i),
8499 INDUSTRY_ATTRIBUTE2 = INDUSTRY_ATTRIBUTE2_TAB(i),
8500 INDUSTRY_ATTRIBUTE3 = INDUSTRY_ATTRIBUTE3_TAB(i),
8501 INDUSTRY_ATTRIBUTE4 = INDUSTRY_ATTRIBUTE4_TAB(i),
8502 INDUSTRY_ATTRIBUTE5 = INDUSTRY_ATTRIBUTE5_TAB(i),
8503 INDUSTRY_ATTRIBUTE6 = INDUSTRY_ATTRIBUTE6_TAB(i),
8504 INDUSTRY_ATTRIBUTE7 = INDUSTRY_ATTRIBUTE7_TAB(i),
8505 INDUSTRY_ATTRIBUTE8 = INDUSTRY_ATTRIBUTE8_TAB(i),
8506 INDUSTRY_ATTRIBUTE9 = INDUSTRY_ATTRIBUTE9_TAB(i),
8507 INDUSTRY_CONTEXT = INDUSTRY_CONTEXT_TAB(i),
8508 INTRMD_SHIP_TO_ID = INTRMD_SHIP_TO_ID_TAB(i),
8509 SHIP_TO_ORG_ID = SHIP_TO_ORG_ID_TAB(i),
8510 INTRMD_ST_ADDRESS_1_EXT = INTRMD_ST_ADDRESS_1_EXT_TAB(i),
8511 INTRMD_ST_ADDRESS_2_EXT = INTRMD_ST_ADDRESS_2_EXT_TAB(i),
8512 INTRMD_ST_ADDRESS_3_EXT = INTRMD_ST_ADDRESS_3_EXT_TAB(i),
8513 INTRMD_ST_ADDRESS_4_EXT = INTRMD_ST_ADDRESS_4_EXT_TAB(i),
8514 INTRMD_ST_CITY_EXT = INTRMD_ST_CITY_EXT_TAB(i),
8515 INTRMD_ST_COUNTRY_EXT = INTRMD_ST_COUNTRY_EXT_TAB(i),
8516 INTRMD_ST_COUNTY_EXT = INTRMD_ST_COUNTY_EXT_TAB(i),
8517 INTRMD_ST_NAME_EXT = INTRMD_ST_NAME_EXT_TAB(i),
8518 INTRMD_ST_POSTAL_CD_EXT = INTRMD_ST_POSTAL_CD_EXT_TAB(i),
8519 INTRMD_ST_PROVINCE_EXT = INTRMD_ST_PROVINCE_EXT_TAB(i),
8520 INTRMD_ST_STATE_EXT = INTRMD_ST_STATE_EXT_TAB(i),
8521 INTRMD_ST_SITE_USE_ID = INTRMD_ST_SITE_USE_ID_TAB(i),
8522 INVENTORY_ITEM_ID = INVENTORY_ITEM_ID_TAB(i),
8523 INVENTORY_ITEM_SEGMENT1 = INVENTORY_ITEM_SEGMENT1_TAB(i),
8524 INVENTORY_ITEM_SEGMENT10 = INVENTORY_ITEM_SEGMENT10_TAB(i),
8525 INVENTORY_ITEM_SEGMENT11 = INVENTORY_ITEM_SEGMENT11_TAB(i),
8526 INVENTORY_ITEM_SEGMENT12 = INVENTORY_ITEM_SEGMENT12_TAB(i),
8527 INVENTORY_ITEM_SEGMENT13 = INVENTORY_ITEM_SEGMENT13_TAB(i),
8528 INVENTORY_ITEM_SEGMENT14 = INVENTORY_ITEM_SEGMENT14_TAB(i),
8529 INVENTORY_ITEM_SEGMENT15 = INVENTORY_ITEM_SEGMENT15_TAB(i),
8530 INVENTORY_ITEM_SEGMENT16 = INVENTORY_ITEM_SEGMENT16_TAB(i),
8531 INVENTORY_ITEM_SEGMENT17 = INVENTORY_ITEM_SEGMENT17_TAB(i),
8532 INVENTORY_ITEM_SEGMENT18 = INVENTORY_ITEM_SEGMENT18_TAB(i),
8533 INVENTORY_ITEM_SEGMENT19 = INVENTORY_ITEM_SEGMENT19_TAB(i),
8534 INVENTORY_ITEM_SEGMENT2 = INVENTORY_ITEM_SEGMENT2_TAB(i),
8535 INVENTORY_ITEM_SEGMENT20 = INVENTORY_ITEM_SEGMENT20_TAB(i),
8536 INVENTORY_ITEM_SEGMENT3 = INVENTORY_ITEM_SEGMENT3_TAB(i),
8537 INVENTORY_ITEM_SEGMENT4 = INVENTORY_ITEM_SEGMENT4_TAB(i),
8538 INVENTORY_ITEM_SEGMENT5 = INVENTORY_ITEM_SEGMENT5_TAB(i),
8539 INVENTORY_ITEM_SEGMENT6 = INVENTORY_ITEM_SEGMENT6_TAB(i),
8540 INVENTORY_ITEM_SEGMENT7 = INVENTORY_ITEM_SEGMENT7_TAB(i),
8541 INVENTORY_ITEM_SEGMENT8 = INVENTORY_ITEM_SEGMENT8_TAB(i),
8542 INVENTORY_ITEM_SEGMENT9 = INVENTORY_ITEM_SEGMENT9_TAB(i),
8543 ITEM_CONTACT_CODE_1 = ITEM_CONTACT_CODE_1_TAB(i),
8544 ITEM_CONTACT_CODE_2 = ITEM_CONTACT_CODE_2_TAB(i),
8545 ITEM_CONTACT_VALUE_1 = ITEM_CONTACT_VALUE_1_TAB(i),
8546 ITEM_CONTACT_VALUE_2 = ITEM_CONTACT_VALUE_2_TAB(i),
8547 ITEM_DESCRIPTION_EXT = ITEM_DESCRIPTION_EXT_TAB(i),
8548 ITEM_DETAIL_QUANTITY = ITEM_DETAIL_QUANTITY_TAB(i),
8549 ITEM_DETAIL_REF_CODE_1 = ITEM_DETAIL_REF_CODE_1_TAB(i),
8550 ITEM_DETAIL_REF_CODE_2 = ITEM_DETAIL_REF_CODE_2_TAB(i),
8551 ITEM_DETAIL_REF_CODE_3 = ITEM_DETAIL_REF_CODE_3_TAB(i),
8552 ITEM_DETAIL_REF_VALUE_1 = ITEM_DETAIL_REF_VALUE_1_TAB(i),
8553 ITEM_DETAIL_REF_VALUE_2 = ITEM_DETAIL_REF_VALUE_2_TAB(i),
8554 ITEM_DETAIL_REF_VALUE_3 = ITEM_DETAIL_REF_VALUE_3_TAB(i),
8555 ITEM_DETAIL_SUBTYPE = ITEM_DETAIL_SUBTYPE_TAB(i),
8556 ITEM_DETAIL_SUBTYPE_EXT = ITEM_DETAIL_SUBTYPE_EXT_TAB(i),
8557 ITEM_DETAIL_TYPE = ITEM_DETAIL_TYPE_TAB(i),
8558 ITEM_DETAIL_TYPE_EXT = ITEM_DETAIL_TYPE_EXT_TAB(i),
8559 ITEM_ENG_CNG_LVL_EXT = ITEM_ENG_CNG_LVL_EXT_TAB(i),
8560 ITEM_MEASUREMENTS_EXT = ITEM_MEASUREMENTS_EXT_TAB(i),
8561 ITEM_NOTE_TEXT = ITEM_NOTE_TEXT_TAB(i),
8562 ITEM_REF_CODE_1 = ITEM_REF_CODE_1_TAB(i),
8563 ITEM_REF_CODE_2 = ITEM_REF_CODE_2_TAB(i),
8564 ITEM_REF_CODE_3 = ITEM_REF_CODE_3_TAB(i),
8565 ITEM_REF_VALUE_1 = ITEM_REF_VALUE_1_TAB(i),
8566 ITEM_REF_VALUE_2 = ITEM_REF_VALUE_2_TAB(i),
8567 ITEM_REF_VALUE_3 = ITEM_REF_VALUE_3_TAB(i),
8568 ITEM_RELEASE_STATUS_EXT = ITEM_RELEASE_STATUS_EXT_TAB(i),
8569 LADING_QUANTITY_EXT = LADING_QUANTITY_EXT_TAB(i),
8570 LETTER_CREDIT_EXPDT_EXT = LETTER_CREDIT_EXPDT_EXT_TAB(i),
8571 LETTER_CREDIT_EXT = LETTER_CREDIT_EXT_TAB(i),
8572 LINE_REFERENCE = LINE_REFERENCE_TAB(i),
8573 LINK_TO_LINE_REF = LINK_TO_LINE_REF_TAB(i),
8574 ORDER_HEADER_ID = ORDER_HEADER_ID_TAB(i),
8575 OTHER_NAME_CODE_1 = OTHER_NAME_CODE_1_TAB(i),
8576 OTHER_NAME_CODE_2 = OTHER_NAME_CODE_2_TAB(i),
8577 OTHER_NAME_VALUE_1 = OTHER_NAME_VALUE_1_TAB(i),
8578 OTHER_NAME_VALUE_2 = OTHER_NAME_VALUE_2_TAB(i),
8579 PACK_SIZE_EXT = PACK_SIZE_EXT_TAB(i),
8580 PACK_UNITS_PER_PACK_EXT = PACK_UNITS_PER_PACK_EXT_TAB(i),
8581 PACK_UOM_CODE_EXT = PACK_UOM_CODE_EXT_TAB(i),
8582 PACKAGING_CODE_EXT = PACKAGING_CODE_EXT_TAB(i),
8583 PARENT_LINK_LINE_REF = PARENT_LINK_LINE_REF_TAB(i),
8584 CUST_PRODUCTION_SEQ_NUM = CUST_PRODUCTION_SEQ_NUM_TAB(i),
8585 PRICE_LIST_ID = PRICE_LIST_ID_TAB(i),
8586 PRIMARY_QUANTITY = PRIMARY_QUANTITY_TAB(i),
8587 PRIMARY_UOM_CODE = PRIMARY_UOM_CODE_TAB(i),
8588 PRIME_CONTRCTR_PART_EXT = PRIME_CONTRCTR_PART_EXT_TAB(i),
8589 PROCESS_STATUS = PROCESS_STATUS_TAB(i),
8590 CUST_PO_RELEASE_NUM = CUST_PO_RELEASE_NUM_TAB(i),
8591 CUST_PO_DATE = CUST_PO_DATE_TAB(i),
8592 CUST_PO_LINE_NUM = CUST_PO_LINE_NUM_TAB(i),
8593 CUST_PO_NUMBER = CUST_PO_NUMBER_TAB(i),
8594 QTY_TYPE_CODE = QTY_TYPE_CODE_TAB(i),
8595 QTY_TYPE_CODE_EXT = QTY_TYPE_CODE_EXT_TAB(i),
8596 RETURN_CONTAINER_EXT = RETURN_CONTAINER_EXT_TAB(i),
8597 SCHEDULE_LINE_ID = SCHEDULE_LINE_ID_TAB(i),
8598 ROUTING_DESC_EXT = ROUTING_DESC_EXT_TAB(i),
8599 ROUTING_SEQ_CODE_EXT = ROUTING_SEQ_CODE_EXT_TAB(i),
8600 SCHEDULE_ITEM_NUM = SCHEDULE_ITEM_NUM_TAB(i),
8601 SHIP_DEL_PATTERN_EXT = SHIP_DEL_PATTERN_EXT_TAB(i),
8602 SHIP_DEL_TIME_CODE_EXT = SHIP_DEL_TIME_CODE_EXT_TAB(i),
8603 SHIP_DEL_RULE_NAME = SHIP_DEL_RULE_NAME_TAB(i),
8604 SHIP_FROM_ADDRESS_1_EXT = SHIP_FROM_ADDRESS_1_EXT_TAB(i),
8605 SHIP_FROM_ADDRESS_2_EXT = SHIP_FROM_ADDRESS_2_EXT_TAB(i),
8606 SHIP_FROM_ADDRESS_3_EXT = SHIP_FROM_ADDRESS_3_EXT_TAB(i),
8607 SHIP_FROM_ADDRESS_4_EXT = SHIP_FROM_ADDRESS_4_EXT_TAB(i),
8608 SHIP_FROM_CITY_EXT = SHIP_FROM_CITY_EXT_TAB(i),
8609 SHIP_FROM_COUNTRY_EXT = SHIP_FROM_COUNTRY_EXT_TAB(i),
8610 SHIP_FROM_COUNTY_EXT = SHIP_FROM_COUNTY_EXT_TAB(i),
8611 SHIP_FROM_NAME_EXT = SHIP_FROM_NAME_EXT_TAB(i),
8612 SHIP_FROM_ORG_ID = SHIP_FROM_ORG_ID_TAB(i),
8613 SHIP_FROM_POSTAL_CD_EXT = SHIP_FROM_POSTAL_CD_EXT_TAB(i),
8614 SHIP_FROM_PROVINCE_EXT = SHIP_FROM_PROVINCE_EXT_TAB(i),
8615 SHIP_FROM_STATE_EXT = SHIP_FROM_STATE_EXT_TAB(i),
8616 SHIP_LABEL_INFO_LINE_1 = SHIP_LABEL_INFO_LINE_1_TAB(i),
8617 SHIP_LABEL_INFO_LINE_10 = SHIP_LABEL_INFO_LINE_10_TAB(i),
8618 SHIP_LABEL_INFO_LINE_2 = SHIP_LABEL_INFO_LINE_2_TAB(i),
8619 SHIP_LABEL_INFO_LINE_3 = SHIP_LABEL_INFO_LINE_3_TAB(i),
8620 SHIP_LABEL_INFO_LINE_4 = SHIP_LABEL_INFO_LINE_4_TAB(i),
8621 SHIP_LABEL_INFO_LINE_5 = SHIP_LABEL_INFO_LINE_5_TAB(i),
8622 SHIP_LABEL_INFO_LINE_6 = SHIP_LABEL_INFO_LINE_6_TAB(i),
8623 SHIP_LABEL_INFO_LINE_7 = SHIP_LABEL_INFO_LINE_7_TAB(i),
8624 SHIP_LABEL_INFO_LINE_8 = SHIP_LABEL_INFO_LINE_8_TAB(i),
8625 SHIP_LABEL_INFO_LINE_9 = SHIP_LABEL_INFO_LINE_9_TAB(i),
8626 SHIP_TO_ADDRESS_1_EXT = SHIP_TO_ADDRESS_1_EXT_TAB(i),
8627 SHIP_TO_ADDRESS_2_EXT = SHIP_TO_ADDRESS_2_EXT_TAB(i),
8628 SHIP_TO_ADDRESS_3_EXT = SHIP_TO_ADDRESS_3_EXT_TAB(i),
8629 SHIP_TO_ADDRESS_4_EXT = SHIP_TO_ADDRESS_4_EXT_TAB(i),
8630 SHIP_TO_ADDRESS_ID = SHIP_TO_ADDRESS_ID_TAB(i),
8631 DELIVER_TO_ORG_ID = DELIVER_TO_ORG_ID_TAB(i),
8632 SHIP_TO_CITY_EXT = SHIP_TO_CITY_EXT_TAB(i),
8633 SHIP_TO_COUNTRY_EXT = SHIP_TO_COUNTRY_EXT_TAB(i),
8634 SHIP_TO_COUNTY_EXT = SHIP_TO_COUNTY_EXT_TAB(i),
8635 SHIP_TO_NAME_EXT = SHIP_TO_NAME_EXT_TAB(i),
8636 SHIP_TO_POSTAL_CD_EXT = SHIP_TO_POSTAL_CD_EXT_TAB(i),
8637 SHIP_TO_PROVINCE_EXT = SHIP_TO_PROVINCE_EXT_TAB(i),
8638 SHIP_TO_SITE_USE_ID = SHIP_TO_SITE_USE_ID_TAB(i),
8639 SHIP_TO_STATE_EXT = SHIP_TO_STATE_EXT_TAB(i),
8640 START_DATE_TIME = START_DATE_TIME_TAB(i),
8641 SUBLINE_ASSIGNED_ID_EXT = SUBLINE_ASSIGNED_ID_EXT_TAB(i),
8642 SUBLINE_CONFIG_CODE_EXT = SUBLINE_CONFIG_CODE_EXT_TAB(i),
8643 SUBLINE_CUST_ITEM_EXT = SUBLINE_CUST_ITEM_EXT_TAB(i),
8644 SUBLINE_CUST_ITEM_ID = SUBLINE_CUST_ITEM_ID_TAB(i),
8645 SUBLINE_MODEL_NUM_EXT = SUBLINE_MODEL_NUM_EXT_TAB(i),
8646 SUBLINE_QUANTITY = SUBLINE_QUANTITY_TAB(i),
8647 SUBLINE_UOM_CODE = SUBLINE_UOM_CODE_TAB(i),
8648 SUPPLIER_ITEM_EXT = SUPPLIER_ITEM_EXT_TAB(i),
8649 TRANSIT_TIME_EXT = TRANSIT_TIME_EXT_TAB(i),
8650 TRANSIT_TIME_QUAL_EXT = TRANSIT_TIME_QUAL_EXT_TAB(i),
8651 TRANSPORT_LOC_QUAL_EXT = TRANSPORT_LOC_QUAL_EXT_TAB(i),
8652 TRANSPORT_LOCATION_EXT = TRANSPORT_LOCATION_EXT_TAB(i),
8653 TRANSPORT_METHOD_EXT = TRANSPORT_METHOD_EXT_TAB(i),
8654 UOM_CODE = UOM_CODE_TAB(i),
8655 WEIGHT_EXT = WEIGHT_EXT_TAB(i),
8656 WEIGHT_QUALIFIER_EXT = WEIGHT_QUALIFIER_EXT_TAB(i),
8657 WEIGHT_UOM_EXT = WEIGHT_UOM_EXT_TAB(i),
8658 FBO_CONFIGURATION_KEY_1 = FBO_CONFIGURATION_KEY_1_TAB(i),
8659 FBO_CONFIGURATION_KEY_2 = FBO_CONFIGURATION_KEY_2_TAB(i),
8660 FBO_CONFIGURATION_KEY_3 = FBO_CONFIGURATION_KEY_3_TAB(i),
8661 FBO_CONFIGURATION_KEY_4 = FBO_CONFIGURATION_KEY_4_TAB(i),
8662 FBO_CONFIGURATION_KEY_5 = FBO_CONFIGURATION_KEY_5_TAB(i),
8663 MATCH_KEY_ACROSS = MATCH_KEY_ACROSS_TAB(i),
8664 MATCH_KEY_WITHIN = MATCH_KEY_WITHIN_TAB(i),
8665 CRITICAL_KEY_ATTRIBUTES = CRITICAL_KEY_ATTRIBUTES_TAB(i),
8666 ATTRIBUTE_CATEGORY = ATTRIBUTE_CATEGORY_TAB(i),
8667 ATTRIBUTE1 = ATTRIBUTE1_TAB(i),
8668 ATTRIBUTE2 = ATTRIBUTE2_TAB(i),
8669 ATTRIBUTE3 = ATTRIBUTE3_TAB(i),
8670 ATTRIBUTE4 = ATTRIBUTE4_TAB(i),
8671 ATTRIBUTE5 = ATTRIBUTE5_TAB(i),
8672 ATTRIBUTE6 = ATTRIBUTE6_TAB(i),
8673 ATTRIBUTE7 = ATTRIBUTE7_TAB(i),
8674 ATTRIBUTE8 = ATTRIBUTE8_TAB(i),
8675 ATTRIBUTE9 = ATTRIBUTE9_TAB(i),
8676 ATTRIBUTE10 = ATTRIBUTE10_TAB(i),
8677 ATTRIBUTE11 = ATTRIBUTE11_TAB(i),
8678 ATTRIBUTE12 = ATTRIBUTE12_TAB(i),
8679 ATTRIBUTE13 = ATTRIBUTE13_TAB(i),
8680 ATTRIBUTE14 = ATTRIBUTE14_TAB(i),
8681 ATTRIBUTE15 = ATTRIBUTE15_TAB(i),
8682 BLANKET_NUMBER = BLANKET_NUMBER_TAB(i),
8683 INTMED_SHIP_TO_ORG_ID = INTMED_SHIP_TO_ORG_ID_TAB(i),
8684 LAST_UPDATE_DATE = v_last_update_date,
8685 LAST_UPDATED_BY = v_last_updated_by,
8686 LAST_UPDATE_LOGIN = v_last_update_login,
8687 REQUEST_ID = v_request_id,
8688 PROGRAM_APPLICATION_ID = v_program_application_id,
8689 PROGRAM_ID = v_program_id,
8690 PROGRAM_UPDATE_DATE = v_program_update_date,
8691 SHIP_TO_CUSTOMER_ID = SHIP_TO_CUSTOMER_ID_TAB(i)
8692 WHERE header_id = header_id_tab(i)
8693 AND line_id = line_id_tab(i);
8694 -- bulk update
8695 --
8696 IF (l_debug <> -1) THEN
8697 rlm_core_sv.dlog(C_DEBUG,'Number of Interface lines updated',SQL%ROWCOUNT);
8698 rlm_core_sv.dlog(C_DEBUG,'Number of Interface lines in g_lines_tab ',g_lines_tab.COUNT);
8699 END IF;
8700 --
8701 --
8702 IF g_lines_tab.COUNT >= 1 AND IsGroupError THEN
8703 --
8704 IF (l_debug <> -1) THEN
8705 rlm_core_sv.dlog(C_DEBUG,'Current group failed validation');
8706 END IF;
8707 --
8708 END IF;
8709 --
8710 --
8711 IF NOT IsGroupError THEN
8712 --
8713 IF (l_debug <> -1) THEN
8714 rlm_core_sv.dlog('Current group passed validation, so set g_schedule_PS to PS_available');
8715 END IF;
8716 --
8717 g_schedule_PS := rlm_core_sv.k_PS_AVAILABLE;
8718 --
8719 END IF;
8720 --
8721 IF (l_debug <> -1) THEN
8722 rlm_core_sv.dpop(C_SDEBUG);
8723 END IF;
8724 --
8725 EXCEPTION
8726 --
8727 WHEN OTHERS THEN
8728 --
8729 rlm_message_sv.sql_error('rlm_validateDemand_sv.UpdateInterfaceLines',
8730 v_Progress);
8731 --
8732 IF (l_debug <> -1) THEN
8733 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
8734 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
8735 END IF;
8736 raise;
8737 --
8738 END UpdateInterfaceLines;
8739
8740 /*===========================================================================
8741
8742 PROCEDURE NAME: UpdateInterfaceHeaders
8743
8744 ===========================================================================*/
8745 PROCEDURE UpdateInterfaceHeaders
8746 IS
8747 v_Progress VARCHAR(3) := '010';
8748
8749 BEGIN
8750 --
8751 IF (l_debug <> -1) THEN
8752 rlm_core_sv.dpush(C_SDEBUG,'UpdateInterfaceHeaders');
8753 rlm_core_sv.dlog(C_DEBUG, 'g_schedule_PS', g_schedule_PS);
8754 rlm_core_sv.dlog(C_DEBUG, 'g_line_PS', g_line_PS);
8755 END IF;
8756 --
8757 IF (g_schedule_PS = rlm_core_sv.k_PS_AVAILABLE
8758 AND g_line_PS = rlm_core_sv.k_PS_ERROR ) THEN
8759 --
8760 g_schedule_PS := rlm_core_sv.k_PS_PARTIAL_PROCESSED;
8761 --
8762 IF (l_debug <> -1) THEN
8763 rlm_core_sv.dlog(C_DEBUG,'Process Status PARTIAL_PROCESSED');
8764 END IF;
8765 --
8766 ELSIF (g_schedule_PS = rlm_core_sv.k_PS_ERROR
8767 AND g_line_PS = rlm_core_sv.k_PS_ERROR ) THEN
8768 --
8769 g_schedule_PS := rlm_core_sv.k_PS_ERROR;
8770 --
8771 IF (l_debug <> -1) THEN
8772 rlm_core_sv.dlog(C_DEBUG,'Process Status ERROR');
8773 END IF;
8774 --
8775 ELSIF (g_schedule_PS = rlm_core_sv.k_PS_AVAILABLE
8776 AND g_line_PS = rlm_core_sv.k_PS_AVAILABLE ) THEN
8777 --
8778 g_schedule_PS := rlm_core_sv.k_PS_AVAILABLE;
8779 --
8780 IF (l_debug <> -1) THEN
8781 rlm_core_sv.dlog(C_DEBUG,'Process Status AVAILABLE');
8782 END IF;
8783 --
8784 END IF;
8785
8786 UPDATE rlm_interface_headers SET
8787 CUST_ADDRESS_1_EXT = g_header_rec.CUST_ADDRESS_1_EXT ,
8788 CUST_ADDRESS_2_EXT = g_header_rec. CUST_ADDRESS_2_EXT ,
8789 CUST_ADDRESS_3_EXT = g_header_rec.CUST_ADDRESS_3_EXT ,
8790 CUST_ADDRESS_4_EXT = g_header_rec.CUST_ADDRESS_4_EXT ,
8791 CUST_CITY_EXT = g_header_rec.CUST_CITY_EXT ,
8792 CUST_COUNTRY_EXT = g_header_rec.CUST_COUNTRY_EXT ,
8793 CUST_COUNTY_EXT = g_header_rec.CUST_COUNTY_EXT ,
8794 CUSTOMER_EXT = g_header_rec.CUSTOMER_EXT ,
8795 CUST_NAME_EXT = g_header_rec.CUST_NAME_EXT ,
8796 CUST_POSTAL_CD_EXT = g_header_rec.CUST_POSTAL_CD_EXT ,
8797 CUST_PROVINCE_EXT = g_header_rec.CUST_PROVINCE_EXT ,
8798 CUST_STATE_EXT = g_header_rec.CUST_STATE_EXT ,
8799 CUSTOMER_ID = g_header_rec.CUSTOMER_ID ,
8800 ECE_PRIMARY_ADDRESS_ID = g_header_rec.ECE_PRIMARY_ADDRESS_ID ,
8801 ECE_TP_LOCATION_CODE_EXT = g_header_rec.ECE_TP_LOCATION_CODE_EXT ,
8802 ECE_TP_TRANSLATOR_CODE = g_header_rec.ECE_TP_TRANSLATOR_CODE ,
8803 EDI_CONTROL_NUM_1 = g_header_rec.EDI_CONTROL_NUM_1 ,
8804 EDI_CONTROL_NUM_2 = g_header_rec.EDI_CONTROL_NUM_2 ,
8805 EDI_CONTROL_NUM_3 = g_header_rec.EDI_CONTROL_NUM_3 ,
8806 EDI_TEST_INDICATOR = g_header_rec.EDI_TEST_INDICATOR ,
8807 HEADER_CONTACT_CODE_1 = g_header_rec.HEADER_CONTACT_CODE_1 ,
8808 HEADER_CONTACT_CODE_2 = g_header_rec.HEADER_CONTACT_CODE_2 ,
8809 HEADER_CONTACT_VALUE_1 = g_header_rec.HEADER_CONTACT_VALUE_1 ,
8810 HEADER_CONTACT_VALUE_2 = g_header_rec.HEADER_CONTACT_VALUE_2 ,
8811 HEADER_NOTE_TEXT = g_header_rec.HEADER_NOTE_TEXT ,
8812 HEADER_REF_CODE_1 = g_header_rec.HEADER_REF_CODE_1 ,
8813 HEADER_REF_CODE_2 = g_header_rec.HEADER_REF_CODE_2 ,
8814 HEADER_REF_CODE_3 = g_header_rec.HEADER_REF_CODE_3 ,
8815 HEADER_REF_VALUE_1 = g_header_rec.HEADER_REF_VALUE_1 ,
8816 HEADER_REF_VALUE_2 = g_header_rec.HEADER_REF_VALUE_2 ,
8817 HEADER_REF_VALUE_3 = g_header_rec.HEADER_REF_VALUE_3 ,
8818 PROCESS_STATUS = g_schedule_PS,
8819 SCHEDULE_HEADER_ID = g_header_rec.SCHEDULE_HEADER_ID ,
8820 SCHEDULE_TYPE = g_header_rec.SCHEDULE_TYPE ,
8821 SCHEDULE_TYPE_EXT = g_header_rec.SCHEDULE_TYPE_EXT ,
8822 SCHED_GENERATION_DATE = g_header_rec.SCHED_GENERATION_DATE ,
8823 SCHED_HORIZON_END_DATE = g_header_rec.SCHED_HORIZON_END_DATE ,
8824 SCHED_HORIZON_START_DATE = g_header_rec.SCHED_HORIZON_START_DATE ,
8825 SCHEDULE_PURPOSE = g_header_rec.SCHEDULE_PURPOSE ,
8826 SCHEDULE_PURPOSE_EXT = g_header_rec.SCHEDULE_PURPOSE_EXT ,
8827 SCHEDULE_REFERENCE_NUM = g_header_rec.SCHEDULE_REFERENCE_NUM ,
8828 SCHEDULE_SOURCE = g_header_rec.SCHEDULE_SOURCE ,
8829 LAST_UPDATE_DATE = sysdate,
8830 LAST_UPDATED_BY = fnd_global.user_id ,
8831 CREATION_DATE = g_header_rec.CREATION_DATE ,
8832 CREATED_BY = g_header_rec.CREATED_BY ,
8833 ATTRIBUTE_CATEGORY = g_header_rec.ATTRIBUTE_CATEGORY ,
8834 ATTRIBUTE1 = g_header_rec.ATTRIBUTE1 ,
8835 ATTRIBUTE2 = g_header_rec.ATTRIBUTE2 ,
8836 ATTRIBUTE3 = g_header_rec.ATTRIBUTE3 ,
8837 ATTRIBUTE4 = g_header_rec.ATTRIBUTE4 ,
8838 ATTRIBUTE5 = g_header_rec.ATTRIBUTE5 ,
8839 ATTRIBUTE6 = g_header_rec.ATTRIBUTE6 ,
8840 ATTRIBUTE7 = g_header_rec.ATTRIBUTE7 ,
8841 ATTRIBUTE8 = g_header_rec.ATTRIBUTE8 ,
8842 ATTRIBUTE9 = g_header_rec.ATTRIBUTE9 ,
8843 ATTRIBUTE10 = g_header_rec.ATTRIBUTE10 ,
8844 ATTRIBUTE11 = g_header_rec.ATTRIBUTE11 ,
8845 ATTRIBUTE12 = g_header_rec.ATTRIBUTE12 ,
8846 ATTRIBUTE13 = g_header_rec.ATTRIBUTE13 ,
8847 ATTRIBUTE14 = g_header_rec.ATTRIBUTE14 ,
8848 ATTRIBUTE15 = g_header_rec.ATTRIBUTE15 ,
8849 LAST_UPDATE_LOGIN = fnd_global.login_id ,
8850 REQUEST_ID = fnd_global.conc_REQUEST_ID ,
8851 PROGRAM_APPLICATION_ID = fnd_global.PROG_APPL_ID ,
8852 PROGRAM_ID = fnd_global.conc_PROGRAM_ID ,
8853 PROGRAM_UPDATE_DATE = sysdate
8854 WHERE header_id = g_header_rec.header_id;
8855
8856 --
8857 IF (l_debug <> -1) THEN
8858 rlm_core_sv.dlog(C_DEBUG,'Number of Interface header updated',SQL%ROWCOUNT);
8859 rlm_core_sv.dpop(C_SDEBUG);
8860 END IF;
8861
8862 EXCEPTION
8863 WHEN OTHERS THEN
8864 --
8865 rollback;
8866 rlm_message_sv.sql_error('rlm_validateDemand_sv.UpdateInterfaceHeaders: ',
8867 v_Progress);
8868 --
8869 IF (l_debug <> -1) THEN
8870 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
8871 END IF;
8872 raise;
8873 --
8874 END UpdateInterfaceHeaders;
8875
8876 /*===========================================================================
8877
8878 FUNCTION NAME: PostValidation
8879
8880 ===========================================================================*/
8881 PROCEDURE PostValidation
8882 IS
8883 v_Status BOOLEAN := TRUE;
8884 v_Progress VARCHAR(3) := '010';
8885 e_ArchiveAPIFailed EXCEPTION;
8886
8887 BEGIN
8888 --
8889 IF (l_debug <> -1) THEN
8890 rlm_core_sv.dpush(C_SDEBUG,'PostValidation');
8891 rlm_core_sv.dlog(C_DEBUG,'Header_id',g_Header_Rec.header_id);
8892 END IF;
8893 --
8894 v_Status := rlm_ad_sv.Archive_Demand(g_Header_Rec.header_id);
8895 --
8896 v_Progress := '020';
8897 --
8898 IF NOT v_Status THEN
8899 raise e_ArchiveAPIFailed;
8900 END IF;
8901 --
8902 IF (l_debug <> -1) THEN
8903 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
8904 rlm_core_sv.dpop(C_SDEBUG);
8905 END IF;
8906 --
8907 EXCEPTION
8908 WHEN e_ArchiveAPIFailed THEN
8909 --
8910 g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
8911 rlm_message_sv.app_error(
8912 x_ExceptionLevel => rlm_message_sv.k_error_level,
8913 x_MessageName => 'RLM_ARCHIVE_API_ERROR',
8914 x_InterfaceHeaderId => g_Header_Rec.header_id,
8915 x_Token1 => 'ERROR',
8916 x_value1 => sqlerrm,
8917 x_ValidationType => 'ARCHIVE');
8918 --
8919 IF (l_debug <> -1) THEN
8920 rlm_core_sv.dlog(C_DEBUG,'EXCEPTION: RLM_ARCHIVE_API_ERROR ',v_Progress);
8921 rlm_core_sv.dpop(C_SDEBUG);
8922 END IF;
8923 --
8924 WHEN OTHERS THEN
8925 --
8926 g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
8927 rlm_message_sv.sql_error('rlm_validateDemand_sv.PostValidation: ',
8928 v_Progress);
8929 --
8930 IF (l_debug <> -1) THEN
8931 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
8932 END IF;
8933 raise;
8934 --
8935 END PostValidation;
8936
8937 /*===========================================================================
8938
8939 PROCEDURE CallSetups
8940
8941 ===========================================================================*/
8942 FUNCTION CallSetups( x_Group_rec IN OUT NOCOPY t_Group_rec,
8943 x_header_rec IN rlm_interface_headers%ROWTYPE,
8944 x_lines_rec IN rlm_interface_lines%ROWTYPE)
8945 RETURN BOOLEAN
8946 IS
8947
8948 v_SetupTerms_rec rlm_setup_terms_sv.setup_terms_rec_typ;
8949 v_TermsLevel VARCHAR2(30) := NULL;
8950 v_ReturnStatus BOOLEAN;
8951 v_ReturnMsg VARCHAR2(3000);
8952 e_NoSetupTerms EXCEPTION;
8953 e_skip_callsetup EXCEPTION;
8954
8955 BEGIN
8956 --
8957 IF (l_debug <> -1) THEN
8958 rlm_core_sv.dpush(C_SDEBUG,'CallSetups');
8959 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.ship_from_org_id',
8960 x_lines_rec.ship_from_org_id);
8961 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.cust_ship_from_org_ext',
8962 x_lines_rec.cust_ship_from_org_ext);
8963 rlm_core_sv.dlog(C_DEBUG,'x_header_rec.customer_id',
8964 x_header_rec.customer_id);
8965 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.ship_to_address_id',
8966 x_lines_rec.ship_to_address_id);
8967 rlm_core_sv.dlog(C_DEBUG,'x_lines_rec.customer_item_id',
8968 x_lines_rec.customer_item_id);
8969 END IF;
8970 --
8971 -- NOTE: call setupAPI to poulate setup info in the group rec:
8972 -- schedule precedence,match within/across strings
8973 -- firm disposition code and offset days, order header id
8974 --
8975 -- Bug 5098241
8976 -- For ATP item we expect the ship_from_org_id and
8977 -- cust_ship_from_org_ext to be null. If ship_from_org_id is null
8978 -- and cust_ship_from_org_ext is not null, then this means that for
8979 -- a non-ATP item, we have failed to derive the ship_from_org_id
8980 -- and for this reason we won't be able to get the setup terms.
8981 --
8982 IF (x_lines_rec.cust_ship_from_org_ext IS NOT NULL)
8983 AND (x_lines_rec.ship_from_org_id IS NULL)
8984 THEN
8985 RAISE e_skip_callsetup;
8986 END IF;
8987
8988 RLM_TPA_SV.get_setup_terms(x_lines_rec.ship_from_org_id,
8989 x_header_rec.customer_id,
8990 x_lines_rec.ship_to_address_id,
8991 x_lines_rec.customer_item_id,
8992 v_TermsLevel,
8993 v_SetupTerms_rec,
8994 v_ReturnMsg, -- For Patch for Nov17 freeze
8995 v_ReturnStatus);
8996 --
8997 IF (l_debug <> -1) THEN
8998 rlm_core_sv.dlog(C_DEBUG, 'v_TermsLevel', v_TermsLevel);
8999 rlm_core_sv.dlog(C_DEBUG, 'v_ReturnStatus', v_ReturnStatus);
9000 rlm_core_sv.dlog(C_DEBUG,'v_SetupTerms_rec.schedule_hierarchy_code',
9001 v_SetupTerms_rec.schedule_hierarchy_code);
9002 rlm_core_sv.dlog(C_DEBUG,'v_SetupTerms_rec.header_id',
9003 v_SetupTerms_rec.header_id);
9004 rlm_core_sv.dlog(C_DEBUG, 'v_SetupTerms_rec.blanket_number',
9005 v_SetupTerms_rec.blanket_number);
9006 END IF;
9007 --
9008 IF v_ReturnStatus THEN
9009 --
9010 x_Group_rec.setup_terms_rec := v_SetupTerms_rec;
9011 --
9012 ELSE
9013 --
9014 IF (l_debug <> -1) THEN
9015 rlm_core_sv.dlog(C_DEBUG,'setups failed');
9016 END IF;
9017 --
9018 RAISE e_NoSetupTerms;
9019 --
9020 END IF;
9021 --
9022 IF (l_debug <> -1) THEN
9023 rlm_core_sv.dpop(C_SDEBUG);
9024 END IF;
9025 --
9026 RETURN TRUE;
9027 --
9028 EXCEPTION
9029 --
9030 -- bug 5098241
9031 WHEN e_skip_callsetup THEN
9032 --
9033
9034 IF (l_debug <> -1) THEN
9035 rlm_core_sv.dlog(C_SDEBUG,'SetupAPI failed');
9036 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: e_skip_callsetup');
9037 END IF;
9038 --
9039 RETURN FALSE;
9040 --
9041 WHEN e_NoSetupTerms THEN
9042 --
9043 --g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
9044 IF(v_SetupTerms_rec.msg_name = 'RLM_SETUP_CUST_INACTIVE_RECORD') THEN
9045 --
9046 rlm_message_sv.get_msg_text(
9047 x_message_name => v_SetupTerms_rec.msg_name,
9048 x_text => v_ReturnMsg,
9049 x_token1 => 'CUSTOMER',
9050 x_value1 => rlm_core_sv.get_customer_name(x_header_rec.customer_id),
9051 x_token2 => 'SHIPFROM',
9052 x_value2 => rlm_core_sv.get_ship_from(x_lines_rec.ship_from_org_id),
9053 x_token3 => 'SHIPTO',
9054 x_value3 => RLM_CORE_SV.get_ship_to(x_lines_rec.ship_to_address_id),
9055 x_token4 => 'ITEM',
9056 x_value4 => RLM_CORE_SV.get_item_number(x_lines_rec.customer_item_id)
9057 );
9058 --
9059 END IF;
9060
9061 rlm_message_sv.app_error(
9062 x_ExceptionLevel => rlm_message_sv.k_error_level,
9063 x_MessageName => 'RLM_SETUPAPI_FAILED',
9064 x_ChildMessageName => v_SetupTerms_rec.msg_name,
9065 x_InterfaceHeaderId => x_lines_rec.header_id,
9066 x_InterfaceLineId => x_lines_rec.line_id,
9067 x_Token1 => 'ERROR',
9068 x_value1 => v_ReturnMsg,
9069 x_ValidationType => 'SETUPS');
9070 --
9071 IF (l_debug <> -1) THEN
9072 rlm_core_sv.dlog(C_SDEBUG,'SetupAPI failed');
9073 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_SETUPAPI_FAILED');
9074 END IF;
9075 --
9076 RETURN FALSE;
9077 --
9078 WHEN OTHERS THEN
9079 --
9080 --g_header_rec.process_status := rlm_core_sv.k_PS_ERROR;
9081 --
9082 IF (l_debug <> -1) THEN
9083 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9084 END IF;
9085 --
9086 raise; /* should we do a raise here */
9087 --
9088 END CallSetups;
9089
9090 /*=============================================================================
9091 PROCEDURE NAME: ValidForecastDesig
9092
9093 ==============================================================================*/
9094 PROCEDURE ValidForecastDesig(
9095 x_setup_terms_rec IN RLM_SETUP_TERMS_SV.setup_terms_rec_typ,
9096 x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
9097 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE,
9098 x_ForecastDesignator IN OUT NOCOPY VARCHAR2)
9099 IS
9100 --
9101 v_progress VARCHAR2(3) := '010';
9102 IsMRPForecastFence BOOLEAN := FALSE;
9103 v_mrp_cnt NUMBER := 0;
9104 --
9105 BEGIN
9106 --
9107 IF (l_debug <> -1) THEN
9108 rlm_core_sv.dpush(C_SDEBUG, 'ValidForecastDesig');
9109 rlm_core_sv.dlog(C_DEBUG, 'schedule type',x_header_rec.schedule_type);
9110 rlm_core_sv.dlog(C_DEBUG, 'pln_mrp_forecast_day_from',
9111 x_setup_terms_rec.pln_mrp_forecast_day_from);
9112 rlm_core_sv.dlog(C_DEBUG, 'shp_mrp_forecast_day_from',
9113 x_setup_terms_rec.shp_mrp_forecast_day_from);
9114 rlm_core_sv.dlog(C_DEBUG, 'seq_mrp_forecast_day_from',
9115 x_setup_terms_rec.seq_mrp_forecast_day_from);
9116 END IF;
9117 --
9118 IF rlm_message_sv.check_dependency('FORECASTDESIGNATOR') THEN
9119 --
9120 IF x_header_rec.schedule_type = k_PLANNING AND
9121 (x_setup_terms_rec.pln_mrp_forecast_day_from IS NOT NULL AND
9122 x_setup_terms_rec.pln_mrp_forecast_day_from <> 0) THEN
9123 --
9124 IsMRPForecastFence := TRUE;
9125 --
9126 ELSIF x_header_rec.schedule_type = k_SHIPPING AND
9127 (x_setup_terms_rec.shp_mrp_forecast_day_from IS NOT NULL AND
9128 x_setup_terms_rec.shp_mrp_forecast_day_from <> 0) THEN
9129 --
9130 IsMRPForecastFence := TRUE;
9131 --
9132 ELSIF x_header_rec.schedule_type = k_SEQUENCED AND
9133 (x_setup_terms_rec.seq_mrp_forecast_day_from IS NOT NULL AND
9134 x_setup_terms_rec.seq_mrp_forecast_day_from <> 0) THEN
9135 --
9136 IsMRPForecastFence := TRUE;
9137 --
9138 END IF;
9139
9140 IF NOT IsMRPForecastFence THEN
9141 --
9142 -- We need to check whether any lines have been interfaced with the item detail
9143 -- type 6 since the forecast designator needs to be validated even in that instance
9144 --
9145 SELECT COUNT(*)
9146 INTO v_mrp_cnt
9147 FROM rlm_interface_lines
9148 WHERE item_detail_type = '6'
9149 AND header_id = x_header_rec.header_id
9150 AND line_id = x_lines_rec.line_id;
9151 --
9152 IF (l_debug <> -1) THEN
9153 rlm_core_sv.dlog(C_DEBUG,'number of lines interfaced as MRP forecast ',v_mrp_cnt);
9154 END IF;
9155 --
9156 IF v_mrp_cnt > 0 THEN
9157 --
9158 IsMRPForecastFence := TRUE;
9159 --
9160 END IF;
9161 --
9162 END IF;
9163 --
9164 IF IsMRPForecastFence THEN
9165 --
9166 rlm_tpa_sv.GetDesignator(
9167 NULL,
9168 NULL,
9169 x_header_rec.Customer_id,
9170 x_lines_rec.Ship_From_Org_Id,
9171 x_lines_rec.ship_to_site_use_id ,
9172 x_lines_rec.bill_to_site_use_id,
9173 x_lines_rec.bill_to_address_Id,
9174 x_ForecastDesignator);
9175 --
9176 IF (l_debug <> -1) THEN
9177 rlm_core_sv.dlog(C_DEBUG,'x_ForecastDesignator',x_ForecastDesignator);
9178 END IF;
9179 --
9180 IF x_ForecastDesignator is NULL THEN
9181 --
9182 x_lines_rec.process_status := rlm_core_sv.k_PS_ERROR;
9183 rlm_message_sv.app_error(
9184 x_ExceptionLevel => rlm_message_sv.k_error_level,
9185 x_MessageName => 'RLM_NO_FORECAST_DESIG',
9186 x_InterfaceHeaderId => x_lines_rec.header_id,
9187 x_InterfaceLineId => x_lines_rec.line_id,
9188 x_token1=>'CUST',
9189 x_value1=>
9190 rlm_core_sv.get_customer_name(x_header_rec.customer_id),
9191 x_ValidationType => 'FORECASTDESIGNATOR');
9192 --
9193 END IF;
9194 --
9195 END IF;
9196 --
9197 END IF;
9198 --
9199 IF (l_debug <> -1) THEN
9200 rlm_core_sv.dpop(C_SDEBUG);
9201 END IF;
9202 --
9203 EXCEPTION
9204 --
9205 WHEN OTHERS THEN
9206 --
9207 IF (l_debug <> -1) THEN
9208 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9209 END IF;
9210 --
9211 raise;
9212 END ValidForecastDesig;
9213
9214 /*===========================================================================
9215
9216 FUNCTION NAME: PrintTable
9217
9218 ===========================================================================*/
9219 PROCEDURE PrintTable(v_LinesTab IN t_Lines_Tab,
9220 i IN NUMBER)
9221 IS
9222 BEGIN
9223 --
9224 IF (l_debug <> -1) THEN
9225 rlm_core_sv.dpush(C_SDEBUG,'PrintTable');
9226 rlm_core_sv.dlog(C_DEBUG,'v_LinesTab.COUNT',v_LinesTab.COUNT);
9227 END IF;
9228 --
9229 IF i is not NULL THEN
9230 --
9231 IF (l_debug <> -1) THEN
9232 rlm_core_sv.dlog(C_DEBUG,'process_status',v_LinesTab(i).process_status);
9233 rlm_core_sv.dlog(C_DEBUG,'cust_ship_from_org_ext',v_LinesTab(i).cust_ship_from_org_ext);
9234 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id',v_LinesTab(i).ship_from_org_id);
9235 rlm_core_sv.dlog(C_DEBUG,'cust_ship_to_ext',v_LinesTab(i).cust_ship_to_ext);
9236 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id',v_LinesTab(i).ship_to_address_id);
9237 rlm_core_sv.dlog(C_DEBUG,'supplier_item_ext',v_LinesTab(i).supplier_item_ext);
9238 rlm_core_sv.dlog(C_DEBUG,'Customer_Item_Ext',v_LinesTab(i).Customer_Item_Ext);
9239 rlm_core_sv.dlog(C_DEBUG,'Customer_Item_Id',v_LinesTab(i).Customer_Item_Id);
9240 rlm_core_sv.dlog(C_DEBUG,'INVENTORY_ITEM_ID',v_LinesTab(i).INVENTORY_ITEM_ID);
9241 rlm_core_sv.dlog(C_DEBUG,'CUST_BILL_TO_EXT',v_LinesTab(i).CUST_BILL_TO_EXT);
9242 rlm_core_sv.dlog(C_DEBUG,'BILL_TO_ADDRESS_ID',v_LinesTab(i).BILL_TO_ADDRESS_ID);
9243 rlm_core_sv.dlog(C_DEBUG,'CUST_INTRMD_SHIP_TO_EXT',v_LinesTab(i).CUST_INTRMD_SHIP_TO_EXT);
9244 rlm_core_sv.dlog(C_DEBUG,'INTRMD_SHIP_TO_ID',v_LinesTab(i).INTRMD_SHIP_TO_ID);
9245 rlm_core_sv.dlog(C_DEBUG,'ITEM_DETAIL_TYPE',v_LinesTab(i).ITEM_DETAIL_TYPE);
9246 rlm_core_sv.dlog(C_DEBUG,'ITEM_DETAIL_SUBTYPE',v_LinesTab(i).ITEM_DETAIL_SUBTYPE);
9247 rlm_core_sv.dlog(C_DEBUG,'order_header_id',v_LinesTab(i).order_header_id);
9248 rlm_core_sv.dlog(C_DEBUG,'ship_del_rule_name',v_LinesTab(i).ship_del_rule_name);
9249 END IF;
9250 --
9251 ELSE
9252 --
9253 For i IN 1..v_LinesTab.COUNT LOOP
9254 --
9255 IF (l_debug <> -1) THEN
9256 rlm_core_sv.dlog(C_DEBUG,'process_status',v_LinesTab(i).process_status);
9257 rlm_core_sv.dlog(C_DEBUG,'cust_ship_from_org_ext',v_LinesTab(i).cust_ship_from_org_ext);
9258 rlm_core_sv.dlog(C_DEBUG,'ship_from_org_id',v_LinesTab(i).ship_from_org_id);
9259 rlm_core_sv.dlog(C_DEBUG,'cust_ship_to_ext',v_LinesTab(i).cust_ship_to_ext);
9260 rlm_core_sv.dlog(C_DEBUG,'ship_to_address_id',v_LinesTab(i).ship_to_address_id);
9261 rlm_core_sv.dlog(C_DEBUG,'supplier_item_ext',v_LinesTab(i).supplier_item_ext);
9262 rlm_core_sv.dlog(C_DEBUG,'Customer_Item_Ext',v_LinesTab(i).Customer_Item_Ext);
9263 rlm_core_sv.dlog(C_DEBUG,'Customer_Item_Id',v_LinesTab(i).Customer_Item_Id);
9264 rlm_core_sv.dlog(C_DEBUG,'INVENTORY_ITEM_ID',v_LinesTab(i).INVENTORY_ITEM_ID);
9265 rlm_core_sv.dlog(C_DEBUG,'CUST_BILL_TO_EXT',v_LinesTab(i).CUST_BILL_TO_EXT);
9266 rlm_core_sv.dlog(C_DEBUG,'BILL_TO_ADDRESS_ID',v_LinesTab(i).BILL_TO_ADDRESS_ID);
9267 rlm_core_sv.dlog(C_DEBUG,'CUST_INTRMD_SHIP_TO_EXT',v_LinesTab(i).CUST_INTRMD_SHIP_TO_EXT);
9268 rlm_core_sv.dlog(C_DEBUG,'INTRMD_SHIP_TO_ID',v_LinesTab(i).INTRMD_SHIP_TO_ID);
9269 rlm_core_sv.dlog(C_DEBUG,'ITEM_DETAIL_TYPE',v_LinesTab(i).ITEM_DETAIL_TYPE);
9270 rlm_core_sv.dlog(C_DEBUG,'ITEM_DETAIL_SUBTYPE',v_LinesTab(i).ITEM_DETAIL_SUBTYPE);
9271 rlm_core_sv.dlog(C_DEBUG,'order_header_id',v_LinesTab(i).order_header_id);
9272 rlm_core_sv.dlog(C_DEBUG,'ship_del_rule_name',v_LinesTab(i).ship_del_rule_name);
9273 END IF;
9274 --
9275 END LOOP;
9276 --
9277 END IF;
9278 --
9279 IF (l_debug <> -1) THEN
9280 rlm_core_sv.dpop(C_SDEBUG);
9281 END IF;
9282 --
9283 EXCEPTION
9284 WHEN OTHERS THEN
9285 --
9286 IF (l_debug <> -1) THEN
9287 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9288 END IF;
9289 --
9290 raise;
9291 END PrintTable;
9292
9293
9294 /*===========================================================================
9295
9296 FUNCTION NAME: GetTPContext
9297
9298 ===========================================================================*/
9299 PROCEDURE GetTPContext(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
9300 x_lines_rec IN RLM_INTERFACE_LINES%ROWTYPE,
9301 x_customer_number OUT NOCOPY VARCHAR2,
9302 x_ship_to_ece_locn_code OUT NOCOPY VARCHAR2,
9303 x_bill_to_ece_locn_code OUT NOCOPY VARCHAR2,
9304 x_inter_ship_to_ece_locn_code OUT NOCOPY VARCHAR2,
9305 x_tp_group_code OUT NOCOPY VARCHAR2)
9306 IS
9307 v_Progress VARCHAR2(3) := '010';
9308
9309 BEGIN
9310 --
9311 IF (l_debug <> -1) THEN
9312 rlm_core_sv.dpush(C_SDEBUG,'GetTPContext');
9313 END IF;
9314 --
9315 IF x_header_rec.ECE_TP_LOCATION_CODE_EXT is NOT NULL THEN
9316 -- Following query is changed as per TCA obsolescence project.
9317 SELECT ETG.TP_GROUP_CODE
9318 INTO x_tp_group_code
9319 FROM ECE_TP_GROUP ETG,
9320 ECE_TP_HEADERS ETH,
9321 HZ_CUST_ACCT_SITES ACCT_SITE
9322 WHERE ETG.TP_GROUP_ID = ETH.TP_GROUP_ID
9323 and ETH.TP_HEADER_ID = ACCT_SITE.TP_HEADER_ID
9324 and ACCT_SITE.CUST_ACCOUNT_ID = x_header_rec.CUSTOMER_ID
9325 and ACCT_SITE.ECE_TP_LOCATION_CODE = x_header_rec.ECE_TP_LOCATION_CODE_EXT;
9326 ELSE
9327 x_tp_group_code := x_header_rec.ECE_TP_TRANSLATOR_CODE;
9328 END IF;
9329 --
9330 x_ship_to_ece_locn_code := x_header_rec.ECE_TP_LOCATION_CODE_EXT;
9331
9332 IF x_ship_to_ece_locn_code is NULL THEN
9333 x_ship_to_ece_locn_code := x_lines_rec.cust_ship_to_ext;
9334 END IF;
9335
9336 x_bill_to_ece_locn_code := x_lines_rec.cust_bill_to_ext;
9337 x_inter_ship_to_ece_locn_code := x_lines_rec.cust_intrmd_ship_to_ext;
9338
9339 IF x_header_rec.customer_id is NOT NULL THEN
9340 -- Following query is changed as per TCA obsolescence project.
9341 SELECT ACCOUNT_NUMBER
9342 INTO x_customer_number
9343 FROM HZ_CUST_ACCOUNTS CUST_ACCT
9344 WHERE CUST_ACCT.CUST_ACCOUNT_ID = x_header_rec.Customer_Id;
9345 END IF;
9346 --
9347 IF (l_debug <> -1) THEN
9348 rlm_core_sv.dlog(C_DEBUG,'customer_id', x_customer_number);
9349 rlm_core_sv.dlog(C_DEBUG,'x_ship_to_ece_locn_code', x_ship_to_ece_locn_code);
9350 rlm_core_sv.dlog(C_DEBUG,'x_inter_ship_to_ece_locn_code', x_inter_ship_to_ece_locn_code);
9351 rlm_core_sv.dlog(C_DEBUG,'x_bill_to_ece_loc_code', x_bill_to_ece_locn_code);
9352 rlm_core_sv.dlog(C_DEBUG,'x_tp_group_code', x_tp_group_code);
9353 rlm_core_sv.dpop(C_SDEBUG);
9354 END IF;
9355 --
9356 EXCEPTION
9357 WHEN NO_DATA_FOUND THEN
9358 --
9359 x_customer_number := NULL;
9360 --
9361 IF (l_debug <> -1) THEN
9362 rlm_core_sv.dlog(C_DEBUG, 'No data found for' , x_header_rec.customer_id);
9363 rlm_core_sv.dpop(C_SDEBUG);
9364 END IF;
9365
9366 WHEN OTHERS THEN
9367 rlm_message_sv.sql_error('rlm_validatedemand_sv.GetTPContext', v_Progress);
9368 --
9369 IF (l_debug <> -1) THEN
9370 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9371 END IF;
9372 --
9373 raise;
9374
9375 END GetTPContext;
9376
9377 /*===========================================================================
9378
9379 FUNCTION NAME: GetHdrTPContext
9380
9381 ===========================================================================*/
9382 PROCEDURE GetHdrTPContext(x_header_rec IN RLM_INTERFACE_HEADERS%ROWTYPE,
9383 x_customer_number OUT NOCOPY VARCHAR2,
9384 x_ship_to_ece_locn_code OUT NOCOPY VARCHAR2,
9385 x_bill_to_ece_locn_code OUT NOCOPY VARCHAR2,
9386 x_inter_ship_to_ece_locn_code OUT NOCOPY VARCHAR2,
9387 x_tp_group_code OUT NOCOPY VARCHAR2)
9388 IS
9389 v_Progress VARCHAR2(3) := '010';
9390
9391 BEGIN
9392 --
9393 IF (l_debug <> -1) THEN
9394 rlm_core_sv.dpush(C_SDEBUG,'GetHdrTPContext');
9395 END IF;
9396 --
9397 IF x_header_rec.ECE_TP_LOCATION_CODE_EXT is NOT NULL THEN
9398 -- Following query is changed as per TCA obsolescence project.
9399 SELECT ETG.TP_GROUP_CODE
9400 INTO x_tp_group_code
9401 FROM ECE_TP_GROUP ETG,
9402 ECE_TP_HEADERS ETH,
9403 HZ_CUST_ACCT_SITES ACCT_SITE
9404 WHERE ETG.TP_GROUP_ID = ETH.TP_GROUP_ID
9405 and ETH.TP_HEADER_ID = ACCT_SITE.TP_HEADER_ID
9406 and ACCT_SITE.ECE_TP_LOCATION_CODE = x_header_rec.ECE_TP_LOCATION_CODE_EXT;
9407 ELSE
9408 x_tp_group_code := x_header_rec.ECE_TP_TRANSLATOR_CODE;
9409 END IF;
9410 --
9411
9412 x_ship_to_ece_locn_code := x_header_rec.ECE_TP_LOCATION_CODE_EXT;
9413 x_bill_to_ece_locn_code := NULL;
9414 x_inter_ship_to_ece_locn_code := NULL;
9415
9416 IF x_header_rec.customer_id is NOT NULL THEN
9417 -- Following query is changed as per TCA obsolescence project.
9418 SELECT ACCOUNT_NUMBER
9419 INTO x_customer_number
9420 FROM HZ_CUST_ACCOUNTS CUST_ACCT
9421 WHERE CUST_ACCT.CUST_ACCOUNT_ID = x_header_rec.Customer_Id;
9422 END IF;
9423 --
9424 IF (l_debug <> -1) THEN
9425 rlm_core_sv.dlog(C_DEBUG,'customer_id', x_customer_number);
9426 rlm_core_sv.dlog(C_DEBUG,'x_ship_to_ece_locn_code', x_ship_to_ece_locn_code);
9427 rlm_core_sv.dlog(C_DEBUG,'x_inter_ship_to_ece_locn_code', x_inter_ship_to_ece_locn_code);
9428 rlm_core_sv.dlog(C_DEBUG,'x_bill_to_ece_loc_code', x_bill_to_ece_locn_code);
9429 rlm_core_sv.dlog(C_DEBUG,'x_tp_group_code', x_tp_group_code);
9430 rlm_core_sv.dpop(C_SDEBUG);
9431 END IF;
9432 --
9433 EXCEPTION
9434 WHEN NO_DATA_FOUND THEN
9435 --
9436 x_customer_number := NULL;
9437 --
9438 IF (l_debug <> -1) THEN
9439 rlm_core_sv.dlog(C_DEBUG, 'No data found for' , x_header_rec.customer_id);
9440 rlm_core_sv.dpop(C_SDEBUG);
9441 END IF;
9442
9443 WHEN OTHERS THEN
9444 rlm_message_sv.sql_error('rlm_validatedemand_sv.GetHdrTPContext', v_Progress);
9445 --
9446 IF (l_debug <> -1) THEN
9447 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9448 END IF;
9449 --
9450 raise;
9451
9452 END GetHdrTPContext;
9453
9454 /*=============================================================================
9455 PROCEDURE NAME: SetTPAttCategory
9456 ==============================================================================*/
9457 PROCEDURE SetTPAttCategory (
9458 x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE,
9459 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE,
9460 x_group_rec IN OUT NOCOPY RLM_VALIDATEDEMAND_SV.t_Group_rec) IS
9461 BEGIN
9462 --
9463 IF (l_debug <> -1) THEN
9464 rlm_core_sv.dpush(C_SDEBUG,'SetTPAttCategory');
9465 END IF;
9466 --
9467 x_header_rec.tp_attribute_category := x_header_rec.ece_tp_translator_code;
9468 x_lines_rec.tp_attribute_category := x_header_rec.ece_tp_translator_code;
9469 --
9470 IF (l_debug <> -1) THEN
9471 rlm_core_sv.dpop(C_SDEBUG);
9472 END IF;
9473 --
9474 EXCEPTION
9475 WHEN OTHERS THEN
9476 --
9477 IF (l_debug <> -1) THEN
9478 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9479 END IF;
9480 --
9481 END SetTPAttCategory;
9482
9483 /*=============================================================================
9484 PROCEDURE NAME: SetHdrTPAttCategory
9485 ==============================================================================*/
9486 PROCEDURE SetHdrTPAttCategory (
9487 x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE) IS
9488 BEGIN
9489 --
9490 IF (l_debug <> -1) THEN
9491 rlm_core_sv.dpush(C_SDEBUG,'SetHdrTPAttCategory');
9492 END IF;
9493 --
9494 --x_header_rec.tp_attribute_category := NVL(x_header_rec.ece_tp_translator_code, x_header_rec.customer_ext);
9495 --
9496 IF (l_debug <> -1) THEN
9497 rlm_core_sv.dpop(C_SDEBUG);
9498 END IF;
9499 --
9500 EXCEPTION
9501 WHEN OTHERS THEN
9502 --
9503 IF (l_debug <> -1) THEN
9504 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9505 END IF;
9506
9507 END SetHdrTPAttCategory;
9508
9509 /*=============================================================================
9510 PROCEDURE NAME: SetLineTPAttCategory
9511 ==============================================================================*/
9512 PROCEDURE SetLineTPAttCategory (
9513 x_header_rec IN OUT NOCOPY RLM_INTERFACE_HEADERS%ROWTYPE,
9514 x_lines_rec IN OUT NOCOPY RLM_INTERFACE_LINES%ROWTYPE,
9515 x_group_rec IN OUT NOCOPY RLM_VALIDATEDEMAND_SV.t_Group_rec) IS
9516 BEGIN
9517 --
9518 IF (l_debug <> -1) THEN
9519 rlm_core_sv.dpush(C_SDEBUG,'SetLineTPAttCategory');
9520 END IF;
9521 --
9522 --x_header_rec.tp_attribute_category := NVL(x_header_rec.ece_tp_translator_code, x_header_rec.customer_ext);
9523 --x_lines_rec.tp_attribute_category := NVL(x_header_rec.ece_tp_translator_code, x_header_rec.customer_ext);
9524 --
9525 IF (l_debug <> -1) THEN
9526 rlm_core_sv.dpop(C_SDEBUG);
9527 END IF;
9528 --
9529 EXCEPTION
9530 WHEN OTHERS THEN
9531 --
9532 IF (l_debug <> -1) THEN
9533 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9534 END IF;
9535
9536 END SetLineTPAttCategory;
9537
9538 /*===========================================================================
9539 FUNCTION NAME: CustomerRelationship
9540 ===========================================================================*/
9541
9542 FUNCTION CustomerRelationship(x_RelatedCustomerId IN NUMBER,
9543 x_customer_id IN NUMBER,
9544 x_header_id IN NUMBER,
9545 x_site_use_code IN VARCHAR2 DEFAULT 'BILL_TO')
9546 RETURN BOOLEAN
9547 IS
9548
9549 v_Progress VARCHAR2(3) := '010';
9550 v_Temp VARCHAR2(10);
9551 v_parameter VARCHAR2(1);
9552 e_no_om_cr EXCEPTION;
9553
9554 BEGIN
9555 IF (l_debug <> -1) THEN
9556 rlm_core_sv.dpush(C_SDEBUG,'CustomerRelationship');
9557 rlm_core_sv.dlog(C_DEBUG,'x_RelatedCustomerId',x_RelatedCustomerId);
9558 rlm_core_sv.dlog(C_DEBUG,'x_customer_id',x_customer_id);
9559 rlm_core_sv.dlog(C_DEBUG,'x_site_use_code',x_site_use_code);
9560 END IF;
9561 --
9562
9563 IF x_RelatedCustomerId <> x_customer_id THEN
9564 --
9565 IF x_site_use_code = 'BILL_TO' THEN
9566 --
9567 rlm_core_sv.dlog(C_DEBUG,'x_site_use_code',x_site_use_code);
9568 --
9569 SELECT 'exists'
9570 INTO v_Temp
9571 FROM HZ_CUST_ACCT_RELATE
9572 WHERE cust_account_id = x_customer_id
9573 AND related_cust_account_id = x_RelatedCustomerId
9574 AND bill_to_flag = 'Y'
9575 AND status='A';
9576 --
9577 ELSE
9578 --
9579 SELECT 'exists'
9580 INTO v_Temp
9581 FROM HZ_CUST_ACCT_RELATE
9582 WHERE cust_account_id = x_customer_id
9583 AND related_cust_account_id = x_RelatedCustomerId
9584 AND ship_to_flag = 'Y'
9585 AND status='A';
9586 --
9587 END IF;
9588 --
9589 -- Use Customer relationship only if the OM profile option is set.
9590 --
9591 v_parameter := OE_Sys_Parameters.value('CUSTOMER_RELATIONSHIPS_FLAG',
9592 MO_GLOBAL.get_current_org_id);
9593 --
9594 IF (l_debug <> -1) THEN
9595 rlm_core_sv.dlog(C_DEBUG,'v_parameter',v_parameter);
9596 END IF;
9597 --
9598 IF NVL(v_parameter,'N') NOT IN ('Y','A') THEN
9599 --
9600 raise e_no_om_cr;
9601 --
9602 END IF;
9603 --
9604 END IF;
9605 --
9606 IF (l_debug <> -1) THEN
9607 rlm_core_sv.dpop(C_SDEBUG);
9608 END IF;
9609 --
9610 RETURN(TRUE);
9611
9612 EXCEPTION
9613 --
9614 WHEN NO_DATA_FOUND THEN
9615 --
9616 IF (l_debug <> -1) THEN
9617 rlm_core_sv.dlog(C_DEBUG,'NO_DATA_FOUND');
9618 END IF;
9619 --
9620 rlm_message_sv.app_error(
9621 x_ExceptionLevel => rlm_message_sv.k_error_level,
9622 x_MessageName => 'RLM_CUSTOMER_RELATIONSHIP',
9623 x_InterfaceHeaderId => x_header_id,
9624 x_token1=>'CUSTOMER1',
9625 x_value1 => rlm_core_sv.get_customer_name(x_RelatedCustomerId),
9626 x_token2=>'CUSTOMER2',
9627 x_value2 => rlm_core_sv.get_customer_name(x_customer_id)
9628 );
9629 --
9630 IF (l_debug <> -1) THEN
9631 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_CUSTOMER_RELATIONSHIP');
9632 END IF;
9633 --
9634 RETURN(FALSE);
9635 --
9636 WHEN e_no_om_cr THEN
9637 --
9638 rlm_message_sv.app_error(x_ExceptionLevel => rlm_message_sv.k_error_level,
9639 x_MessageName => 'RLM_OM_CUSTOMER_RELATIONSHIP',
9640 x_InterfaceHeaderId => x_header_id);
9641 --
9642 IF (l_debug <> -1) THEN
9643 rlm_core_sv.dlog(C_DEBUG,'e_no_om_cr');
9644 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: RLM_OM_CUSTOMER_RELATIONSHIP');
9645 END IF;
9646 --
9647 RETURN(FALSE);
9648 --
9649 WHEN OTHERS THEN
9650 --
9651 rlm_message_sv.sql_error('RLM_VALIDATEDEMAND_SV.CustomerRelationship',
9652 v_Progress);
9653 --
9654 IF (l_debug <> -1) THEN
9655 rlm_core_sv.dlog (C_DEBUG,'SQL Error: ',substr(sqlerrm,1,300));
9656 rlm_core_sv.dlog(C_DEBUG,'progress',v_Progress);
9657 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: OTHER - sql error');
9658 END IF;
9659 --
9660 raise;
9661 --
9662 END CustomerRelationship;
9663
9664
9665 /*===========================================================================
9666
9667 PROCEDURE NAME: ValidateDateTypeATP
9668
9669 ===========================================================================*/
9670 PROCEDURE ValidateDateTypeATP(
9671 x_line IN RLM_INTERFACE_LINES%ROWTYPE)
9672 IS
9673 --global_atp
9674 v_order_date_type_code VARCHAR2(30);
9675 v_order_number NUMBER;
9676 BEGIN
9677 --
9678 IF (l_debug <> -1) THEN
9679 rlm_core_sv.dpush(C_SDEBUG, 'ValidateDateTypeATP');
9680 END IF;
9681 --
9682 IF RLM_MANAGE_DEMAND_SV.IsATPItem(x_line.ship_from_org_id,
9683 x_line.inventory_item_id) THEN
9684
9685 IF x_line.item_detail_type IN ('0','1','2') THEN
9686 --
9687 BEGIN
9688 SELECT DECODE(order_date_type_code, 'ARRIVAL', 'DELIVER', 'SHIP'),
9689 order_number
9690 INTO v_order_date_type_code, v_order_number
9691 FROM oe_order_headers_all
9692 WHERE header_id = x_line.order_header_id;
9693 EXCEPTION
9694 WHEN NO_DATA_FOUND THEN
9695 RAISE;
9696 WHEN OTHERS THEN
9697 RAISE;
9698 END;
9699 --
9700 IF (l_debug <> -1) THEN
9701 rlm_core_sv.dlog(C_DEBUG, 'OM Date Type', v_order_date_type_code);
9702 rlm_core_sv.dlog(C_DEBUG, 'RLM Date Type', x_line.date_type_code);
9703 END IF;
9704 --
9705 IF v_order_date_type_code <> x_line.date_type_code THEN
9706 --
9707 IF (l_debug <> -1) THEN
9708 rlm_core_sv.dlog(C_DEBUG, 'RLM line date type does not match OM date type');
9709 END IF;
9710 --
9711 rlm_message_sv.app_error(
9712 x_ExceptionLevel => rlm_message_sv.k_warn_level,
9713 x_MessageName => 'RLM_MISMATCH_DATE_TYPE',
9714 x_InterfaceHeaderId => x_line.header_id,
9715 x_InterfaceLineId => x_line.line_id,
9716 x_token1=> 'RLM_DATE_TYPE',
9717 x_value1=> rlm_core_sv.get_lookup_meaning(
9718 'RLM_DATE_TYPE_CODE',
9719 x_line.date_type_code),
9720 x_token2=> 'OM_DATE_TYPE',
9721 x_value2=> OE_Id_To_Value.Order_Date_Type(v_order_date_type_code),
9722 x_token3=> 'ORDER',
9723 x_value3=> TO_CHAR(v_order_number),
9724 x_token4=> 'SF',
9725 x_value4=> rlm_core_sv.get_ship_from(x_line.ship_from_org_id),
9726 x_token5=> 'ST',
9727 x_value5=> rlm_core_sv.get_ship_to(x_line.ship_to_address_id),
9728 x_token6=> 'CI',
9729 x_value6=> rlm_core_sv.get_item_number(x_line.customer_item_id));
9730
9731 g_warned := TRUE;
9732 --
9733 END IF;
9734 --
9735 END IF;
9736 --
9737 END IF;
9738 --
9739 IF (l_debug <> -1) THEN
9740 rlm_core_sv.dpop(C_SDEBUG);
9741 END IF;
9742 --
9743 EXCEPTION
9744 WHEN NO_DATA_FOUND THEN
9745 --
9746 IF (l_debug <> -1) THEN
9747 rlm_core_sv.dpop(C_SDEBUG, 'No sales order found');
9748 END IF;
9749
9750 WHEN OTHERS THEN
9751 --
9752 IF (l_debug <> -1) THEN
9753 rlm_core_sv.dpop(C_SDEBUG,'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9754 END IF;
9755
9756 END ValidateDateTypeATP;
9757
9758
9759 --
9760 -- Blanket Order Procedures
9761 --
9762 /*=======================================================================================
9763
9764 PROCEDURE DeriveBlanketPO
9765
9766 ========================================================================================*/
9767 PROCEDURE DeriveBlanketPO(x_cust_po_num IN RLM_INTERFACE_LINES.cust_po_number%TYPE,
9768 x_Group_rec IN t_Group_rec,
9769 x_header_id IN RLM_INTERFACE_HEADERS.HEADER_ID%TYPE)
9770 IS
9771 --
9772 v_blanket_po VARCHAR2(240);
9773 v_blanket_num NUMBER;
9774 e_POMisMatch EXCEPTION;
9775 --
9776 BEGIN
9777 --
9778 IF (l_debug <> -1) THEN
9779 rlm_core_sv.dpush(C_SDEBUG, 'DeriveBlanketPO');
9780 END IF;
9781 --
9782 SELECT cust_po_number
9783 INTO v_blanket_po
9784 FROM oe_blanket_headers
9785 WHERE order_number = x_Group_rec.setup_terms_rec.blanket_number;
9786 --
9787 IF (l_debug <> -1) THEN
9788 rlm_core_sv.dlog(C_DEBUG, 'Blanket Number', x_Group_rec.setup_terms_rec.blanket_number);
9789 rlm_core_sv.dlog(C_DEBUG, 'Blanket PO number', v_blanket_po);
9790 rlm_core_sv.dlog(C_DEBUG, 'Schedule PO', x_cust_po_num);
9791 END IF;
9792 --
9793 IF (x_cust_po_num IS NOT NULL AND v_blanket_po IS NOT NULL) THEN
9794 --
9795 IF (v_blanket_po <> x_cust_po_num) THEN
9796 --
9797 RAISE e_POMisMatch;
9798 --
9799 END IF;
9800 --
9801 END IF;
9802 --
9803 IF (l_debug <> -1) THEN
9804 rlm_core_sv.dpop(C_SDEBUG);
9805 END IF;
9806 --
9807 EXCEPTION
9808 --
9809 WHEN e_POMisMatch THEN
9810 --
9811 rlm_message_sv.app_error(
9812 x_ExceptionLevel => rlm_message_sv.k_warn_level,
9813 x_MessageName => 'RLM_BLKT_PO_MISMATCH',
9814 x_InterfaceHeaderId => x_header_id,
9815 x_token1=>'SCHED_PO',
9816 x_value1=>x_cust_po_num,
9817 x_token2=>'BLKT_PO',
9818 x_value2=>v_blanket_po,
9819 x_ValidationType => 'PURCHASE_ORDER');
9820 --
9821 IF (l_debug <> -1) THEN
9822 rlm_core_sv.dlog(C_DEBUG, 'WARNING: Mismatch between PO on schedule and blanket order');
9823 rlm_core_sv.dpop(C_SDEBUG, 'RLM_BLKT_PO_MISMATCH');
9824 END IF;
9825 --
9826 WHEN NO_DATA_FOUND THEN
9827 --
9828 rlm_message_sv.app_error(
9829 x_ExceptionLevel => rlm_message_sv.k_warn_level,
9830 x_MessageName => 'RLM_BLANKET_UNDEFINED',
9831 x_InterfaceHeaderId => x_header_id,
9832 x_token1=>'BLANKET_NUM',
9833 x_value1=>x_Group_rec.setup_terms_rec.blanket_number,
9834 x_ValidationType => 'PURCHASE_ORDER');
9835 --
9836 IF (l_debug <> -1) THEN
9837 rlm_core_sv.dlog(C_DEBUG, 'Blanket Order not defined');
9838 rlm_core_sv.dpop(C_SDEBUG, 'RLM_BLANKET_UNDEFINED');
9839 END IF;
9840 --
9841 WHEN OTHERS THEN
9842 --
9843 IF (l_debug <> -1) THEN
9844 rlm_core_sv.dlog(C_DEBUG, 'when others of DeriveBlanketPO');
9845 rlm_core_sv.dpop(C_SDEBUG, 'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
9846 END IF;
9847 --
9848 RAISE;
9849 --
9850 END DeriveBlanketPO;
9851
9852
9853 /*===========================================================================
9854
9855 FUNCTION ValidateBlanket
9856
9857 ===========================================================================*/
9858 FUNCTION ValidateBlanket(x_Group_rec IN t_Group_rec,
9859 x_Sched_rec IN RLM_INTERFACE_HEADERS%ROWTYPE)
9860 RETURN BOOLEAN
9861 IS
9862 --
9863 l_reqdate DATE;
9864 h_reqdate DATE;
9865 v_startdate DATE;
9866 v_enddate DATE;
9867 v_onholdflag VARCHAR2(1);
9868 e_BlktStartDate EXCEPTION;
9869 e_BlktEndDate EXCEPTION;
9870 e_BlktOnHold EXCEPTION;
9871 --
9872 BEGIN
9873 --
9874 IF (l_debug <> -1) THEN
9875 rlm_core_sv.dpush(C_SDEBUG, 'ValidateBlanket');
9876 rlm_core_sv.dlog(C_DEBUG, 'Header_id', x_Sched_rec.header_id);
9877 rlm_core_sv.dlog(C_DEBUG, 'Schedule source', x_Sched_rec.schedule_source);
9878 rlm_core_sv.dlog(C_DEBUG, 'Schedule Type', x_Sched_rec.schedule_type);
9879 END IF;
9880 --
9881 IF x_Sched_rec.schedule_type <> 'SEQUENCED' THEN
9882 --
9883 IF (l_debug <> -1) THEN
9884 rlm_core_sv.dlog(C_DEBUG, 'Non-sequenced schedule');
9885 rlm_core_sv.dlog(C_DEBUG, 'Schedule Item Number', x_Group_rec.schedule_item_num);
9886 END IF;
9887 --
9888 SELECT MIN(start_date_time), MAX(start_date_time)
9889 INTO l_reqdate, h_reqdate
9890 FROM rlm_interface_lines
9891 WHERE header_id = x_Sched_rec.header_id AND
9892 schedule_item_num = x_Group_rec.schedule_item_num AND
9893 item_detail_type IN (k_FIRM, k_FORECAST, k_PAST_DUE_FIRM);
9894 --
9895 ELSE
9896 --
9897 IF x_Sched_rec.schedule_source <> 'MANUAL' THEN
9898 --
9899 IF (l_debug <> -1) THEN
9900 rlm_core_sv.dlog(C_DEBUG, 'EDI Sequenced Schedule');
9901 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.cust_ship_from_org_ext', x_Group_rec.cust_ship_from_org_ext);
9902 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.cust_ship_to_ext', x_Group_rec.cust_ship_to_ext);
9903 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.customer_item_ext', x_Group_rec.customer_item_ext);
9904 END IF;
9905 --
9906 SELECT MIN(start_date_time), MAX(start_date_time)
9907 INTO l_reqdate, h_reqdate
9908 FROM rlm_interface_lines
9909 WHERE header_id = x_Sched_rec.header_id AND
9910 cust_ship_from_org_ext = x_Group_rec.cust_ship_from_org_ext AND
9911 cust_ship_to_ext = x_Group_rec.cust_ship_to_ext AND
9912 customer_item_ext = x_Group_rec.customer_item_ext AND
9913 item_detail_type IN (k_FIRM, k_FORECAST, k_PAST_DUE_FIRM);
9914 --
9915 ELSE
9916 --
9917 IF (l_debug <> -1) THEN
9918 rlm_core_sv.dlog(C_DEBUG, 'Manual Sequenced Schedule');
9919 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.ship_from_org_id', x_Group_rec.ship_from_org_id);
9920 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.ship_to_address_id', x_Group_rec.ship_to_address_id);
9921 rlm_core_sv.dlog(C_DEBUG, 'x_Group_rec.customer_item_id', x_Group_rec.customer_item_id);
9922 END IF;
9923 --
9924 SELECT MIN(start_date_time), MAX(start_date_time)
9925 INTO l_reqdate, h_reqdate
9926 FROM rlm_interface_lines
9927 WHERE header_id = x_Sched_rec.header_id AND
9928 ship_from_org_id = x_Group_rec.ship_from_org_id AND
9929 ship_to_address_id = x_Group_rec.ship_to_address_id AND
9930 customer_item_id = x_Group_rec.customer_item_id AND
9931 item_detail_type IN (k_FIRM, k_FORECAST, k_PAST_DUE_FIRM);
9932 --
9933 END IF;
9934 --
9935 END IF;
9936 --
9937 IF (l_debug <> -1) THEN
9938 rlm_core_sv.dlog(C_DEBUG, 'Lowest request date in current group', l_reqdate);
9939 rlm_core_sv.dlog(C_DEBUG, 'Highest request date in current group', h_reqdate);
9940 END IF;
9941 --
9942 SELECT start_date_active, end_date_active, on_hold_flag
9943 INTO v_startdate, v_enddate, v_onholdflag
9944 FROM oe_blanket_headers_ext
9945 WHERE order_number = x_Group_rec.setup_terms_rec.blanket_number;
9946 --
9947 IF (l_debug <> -1) THEN
9948 rlm_core_sv.dlog(C_DEBUG, 'Blanket Number',x_Group_rec.setup_terms_rec.blanket_number);
9949 rlm_core_sv.dlog(C_DEBUG, 'Blanket Effectivity Start Date', v_startdate);
9950 rlm_core_sv.dlog(C_DEBUG, 'Blanket Effectivity End Date', v_enddate);
9951 rlm_core_sv.dlog(C_DEBUG, 'On Hold Flag', v_onholdflag);
9952 END IF;
9953 --
9954 IF v_onholdflag = 'Y' THEN
9955 --
9956 RAISE e_BlktOnHold;
9957 --
9958 END IF;
9959 --
9960 IF (l_reqdate < v_startdate) THEN
9961 --
9962 RAISE e_BlktStartDate;
9963 --
9964 END IF;
9965 --
9966 IF (v_enddate is NOT NULL) THEN
9967 --
9968 IF (h_reqdate > v_enddate) THEN
9969 --
9970 RAISE e_BlktEndDate;
9971 --
9972 END IF;
9973 --
9974 END IF;
9975 --
9976 IF (l_debug <> -1) THEN
9977 rlm_core_sv.dpop(C_SDEBUG, 'TRUE');
9978 END IF;
9979 --
9980 RETURN TRUE;
9981 --
9982 EXCEPTION
9983 --
9984 WHEN e_BlktOnHold THEN
9985 --
9986 rlm_message_sv.app_error(
9987 x_ExceptionLevel => rlm_message_sv.k_error_level,
9988 x_MessageName => 'RLM_BLANKET_ON_HOLD',
9989 x_InterfaceHeaderId => x_Sched_rec.header_id,
9990 x_InterfaceLineId => NULL,
9991 x_token1=>'BLANKET_NUMBER',
9992 x_value1=>x_Group_rec.setup_terms_rec.blanket_number);
9993 --
9994 IF (l_debug <> -1) THEN
9995 rlm_core_sv.dlog(C_DEBUG, 'Blanket Order on hold');
9996 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
9997 END IF;
9998 --
9999 RETURN FALSE;
10000 --
10001 WHEN e_BlktStartDate THEN
10002 --
10003 rlm_message_sv.app_error(
10004 x_ExceptionLevel => rlm_message_sv.k_error_level,
10005 x_MessageName => 'RLM_STARTDATE_BEFORE_BLANKET',
10006 x_InterfaceHeaderId => x_Sched_rec.header_id,
10007 x_InterfaceLineId => NULL,
10008 x_token1=>'REQDATE',
10009 x_value1=>to_char(l_reqdate, 'MM/DD/YYYY HH24:MI:SS'),
10010 x_token2=>'BLKT_START_DATE',
10011 x_value2=>to_char(v_startdate, 'MM/DD/YYYY HH24:MI:SS'),
10012 x_token3=>'BLANKET_NUM',
10013 x_value3=>x_Group_rec.setup_terms_rec.blanket_number);
10014 --
10015 IF (l_debug <> -1) THEN
10016 rlm_core_sv.dlog(C_DEBUG, 'Lowest request date before effectivity start');
10017 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
10018 END IF;
10019 --
10020 RETURN FALSE;
10021 --
10022 WHEN e_BlktEndDate THEN
10023 --
10024 rlm_message_sv.app_error(
10025 x_ExceptionLevel => rlm_message_sv.k_error_level,
10026 x_MessageName => 'RLM_ENDDATE_AFTER_BLANKET',
10027 x_InterfaceHeaderId => x_Sched_rec.header_id,
10028 x_InterfaceLineId => NULL,
10029 x_token1=>'REQDATE',
10030 x_value1=>to_char(h_reqdate, 'MM/DD/YYYY HH24:MI:SS'),
10031 x_token2=>'BLKT_END_DATE',
10032 x_value2=>to_char(v_enddate, 'MM/DD/YYYY HH24:MI:SS'),
10033 x_token3=>'BLANKET_NUM',
10034 x_value3=>x_Group_rec.setup_terms_rec.blanket_number);
10035 --
10036 IF (l_debug <> -1) THEN
10037 rlm_core_sv.dlog(C_DEBUG, 'Highest request date after effectivity start');
10038 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
10039 END IF;
10040 --
10041 RETURN FALSE;
10042 --
10043 WHEN NO_DATA_FOUND THEN
10044 --
10045 rlm_message_sv.app_error(
10046 x_ExceptionLevel => rlm_message_sv.k_warn_level,
10047 x_MessageName => 'RLM_BLANKET_UNDEFINED',
10048 x_InterfaceHeaderId => x_Sched_rec.header_id,
10049 x_token1=>'BLANKET_NUM',
10050 x_value1=>x_Group_rec.setup_terms_rec.blanket_number);
10051 --
10052 IF (l_debug <> -1) THEN
10053 rlm_core_sv.dlog(C_DEBUG, 'Blanket Order not defined');
10054 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
10055 END IF;
10056 --
10057 RETURN FALSE;
10058 --
10059 WHEN OTHERS THEN
10060 --
10061 IF (l_debug <> -1) THEN
10062 rlm_core_sv.dlog(C_DEBUG, 'When others of ValidateBlanket');
10063 rlm_core_sv.dlog(C_DEBUG, 'EXCEPTION: '||SUBSTR(SQLERRM,1,200));
10064 rlm_core_sv.dpop(C_SDEBUG, 'FALSE');
10065 END IF;
10066 --
10067 RETURN FALSE;
10068
10069 END ValidateBlanket;
10070
10071 -- End of package
10072 END RLM_VALIDATEDEMAND_SV;