[Home] [Help]
PACKAGE BODY: APPS.OE_INVOICE_PUB
Source
1 PACKAGE BODY OE_Invoice_PUB AS
2 /* $Header: OEXPINVB.pls 120.53.12010000.7 2009/02/03 12:34:31 aambasth ship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OE_Invoice_PUB';
7 G_ITEMTYPE VARCHAR2(8);
8
9 --bug5336639 start
10 G_CURRENT_LINE_ID NUMBER := null;
11 G_IS_CURR_LINE_INVOICEABLE BOOLEAN := null;
12 --bug5336639 end
13
14 inv_num VARCHAR2(40);
15 -- 3757279
16 TYPE Prf_Rec_Type IS RECORD
17 ( concat_segment varchar2(240) := NULL
18 , prf_value varchar2(240) := NULL
19 );
20
21 TYPE Prf_Tbl_Type IS TABLE OF Prf_Rec_Type
22 INDEX BY BINARY_INTEGER;
23
24 Prf_Tbl Prf_Tbl_Type;
25
26 TABLE_SIZE binary_integer := 2147483646; /*Size of the above Table*/
27
28 FUNCTION find(p_concat_segment IN VARCHAR2)
29 RETURN binary_integer
30 IS
31 l_tab_index BINARY_INTEGER;
32 l_found BOOLEAN;
33 l_hash_value NUMBER;
34
35 BEGIN
36 l_tab_index := dbms_utility.get_hash_value(p_concat_segment,1,TABLE_SIZE);
37 oe_debug_pub.add('Find: hash_value:'||l_tab_index,1);
38 IF Prf_Tbl.EXISTS(l_tab_index) THEN
39 IF Prf_Tbl(l_tab_index).concat_segment = p_concat_segment THEN
40 RETURN l_tab_index;
41 ELSE
42 l_hash_value := l_tab_index;
43 l_found := FALSE;
44 WHILE (l_tab_index < TABLE_SIZE)
45 AND NOT l_found LOOP
46 IF Prf_Tbl.EXISTS(l_tab_index) THEN
47 IF Prf_Tbl(l_tab_index).concat_segment = p_concat_segment THEN
48 l_found := TRUE;
49 ELSE
50 l_tab_index := l_tab_index + 1;
51 END IF;
52 ELSE
53 RETURN (TABLE_SIZE+1);
54 END IF;
55 END LOOP;
56 IF NOT l_found THEN
57 l_tab_index := 1;
58 WHILE (l_tab_index < l_hash_value)
59 AND NOT l_found LOOP
60 IF Prf_Tbl.EXISTS(l_tab_index) THEN
61 IF Prf_Tbl(l_tab_index).concat_segment = p_concat_segment THEN
62 l_found := TRUE;
63 ELSE
64 l_tab_index := l_tab_index + 1;
65 END IF;
66 ELSE
67 RETURN (TABLE_SIZE+1);
68 END IF;
69 END LOOP;
70 END IF;
71 IF NOT l_found THEN
72 RETURN (TABLE_SIZE+1);
73 END IF;
74 END IF;
75 ELSE
76 RETURN (TABLE_SIZE+1);
77 END IF;
78 RETURN l_tab_index;
79 EXCEPTION
80 WHEN OTHERS THEN
81 RETURN TABLE_SIZE+1;
82 END find;
83
84 PROCEDURE put(p_concat_segment IN VARCHAR2,
85 p_user_id IN NUMBER,
86 p_resp_id IN NUMBER,
87 p_appl_id IN NUMBER,
88 x_prof_value OUT NOCOPY VARCHAR2)
89 IS
90 l_tab_index BINARY_INTEGER;
91 l_stored BOOLEAN :=FALSE;
92 l_prof_value VARCHAR2(240);
93 l_hash_value NUMBER;
94 BEGIN
95 l_tab_index := dbms_utility.get_hash_value(p_concat_segment,1,TABLE_SIZE);
96 --l_prof_value := FND_PROFILE.VALUE_SPECIFIC('AR_ALLOW_TAX_CODE_OVERRIDE',p_user_id,p_resp_id,p_appl_id);
97 l_prof_value := FND_PROFILE.VALUE_SPECIFIC('ZX_ALLOW_TAX_CLASSIF_OVERRIDE',p_user_id,p_resp_id,p_appl_id);
98 oe_debug_pub.add('Put:hash_value:'||l_tab_index,1);
99 IF Prf_Tbl.EXISTS(l_tab_index) THEN
100 IF Prf_Tbl(l_tab_index).concat_segment = p_concat_segment THEN
101 Prf_Tbl(l_tab_index).prf_value := l_prof_value;
102 l_stored := TRUE;
103 ELSE
104 l_hash_value := l_tab_index;
105 WHILE l_tab_index < TABLE_SIZE
106 AND NOT l_stored LOOP
107 IF Prf_Tbl.EXISTS(l_tab_index) THEN
108 IF Prf_Tbl(l_tab_index).concat_segment = p_concat_segment THEN
109 Prf_Tbl(l_tab_index).prf_value := l_prof_value;
110 l_stored := TRUE;
111 ELSE
112 l_tab_index := l_tab_index +1;
113 END IF;
114 ELSE
115 Prf_Tbl(l_tab_index).prf_value := l_prof_value;
116 Prf_Tbl(l_tab_index).concat_segment := p_concat_segment;
117 l_stored := TRUE;
118 END IF;
119 END LOOP;
120 IF NOT l_stored THEN
121 l_tab_index := 1;
122 WHILE l_tab_index < l_hash_value
123 AND NOT l_stored LOOP
124 IF Prf_Tbl.EXISTS(l_tab_index) THEN
125 IF Prf_Tbl(l_tab_index).concat_segment = p_concat_segment THEN
126 Prf_Tbl(l_tab_index).prf_value := l_prof_value;
127 l_stored := TRUE;
128 ELSE
129 l_tab_index := l_tab_index +1;
130 END IF;
131 ELSE
132 Prf_Tbl(l_tab_index).prf_value := l_prof_value;
133 Prf_Tbl(l_tab_index).concat_segment := p_concat_segment;
134 l_stored := TRUE;
135 END IF;
136 END LOOP;
137 END IF;
138 END IF;
139 ELSE
140 Prf_Tbl(l_tab_index).prf_value := l_prof_value;
141 Prf_Tbl(l_tab_index).concat_segment := p_concat_segment;
142 l_stored := TRUE;
143 END IF;
144 x_prof_value := l_prof_value;
145 EXCEPTION
146 WHEN OTHERS THEN
147 NULL;
148 END put;
149 -- 3757279
150
151 FUNCTION Invoice_Balance(
152 P_CUSTOMER_TRX_ID IN NUMBER )
153 RETURN NUMBER
154 IS
155 v_balance NUMBER := NULL ;
156 BEGIN
157 IF ( P_CUSTOMER_TRX_ID IS NOT NULL )
158 THEN
159 SELECT NVL(SUM(AMOUNT_DUE_REMAINING),0)
160 INTO v_balance
161 FROM AR_PAYMENT_SCHEDULES
162 WHERE CUSTOMER_TRX_ID = P_CUSTOMER_TRX_ID;
163 END IF;
164 RETURN(v_balance);
165 EXCEPTION
166 WHEN NO_DATA_FOUND THEN
167 return(NULL);
168 END; -- INVOICE_BALANCE
169
170
171
172 /*
173 * This procedure is added for bug# 7231974
174 * This proc is exact copy of OE_LINE_FULLFILL.UPDATE_SERVICE_DATES(). Therefore, any changes in oe_line_fullfill.update_service_dates()
175 * should be imported to this proc as well.
176 * This proc is called in case of SERVICE lines, with ORDER reference type, with VARIABLE type accounting rule, with ACCOUNTING_RULE_DURATION field being null
177 * and service_start_date and service_end_Date being null.
178 *
179 */
180 PROCEDURE Update_Service_Dates
181 (
182 p_line_rec IN OUT NOCOPY OE_Order_Pub.Line_Rec_Type
183 )
184 IS
185 l_return_status VARCHAR2(1);
186 l_line_rec OE_Order_Pub.Line_Rec_Type;
187 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
188 BEGIN
189
190 IF l_debug_level > 0 THEN
191 oe_debug_pub.add('entering oe_invoice_pub . update_service_dates() '
192 ||' p_line_rec.line_id = ' || P_LINE_REC.LINE_ID
193 ||' p_line_rec.service_start_date = '||TO_CHAR(P_LINE_REC.SERVICE_START_DATE, 'YYYY/MM/DD' )
194 ||' p_line_rec.service_end_date = '|| TO_CHAR ( P_LINE_REC.SERVICE_END_DATE , 'YYYY/MM/DD' )
195 ) ;
196 END IF;
197
198 IF p_line_rec.service_start_date IS NULL OR p_line_rec.service_start_date = FND_API.G_MISS_DATE THEN
199 l_line_rec := p_line_rec;
200 l_line_rec.service_start_date := NULL;
201 l_line_rec.service_reference_type_code := 'GET_SVC_START';
202 OE_SERVICE_UTIL.Get_Service_Duration(
203 p_x_line_rec => l_line_rec,
204 x_return_status => l_return_status
205 );
206
207 oe_debug_pub.add(' l_line_rec.service_start_date = '|| l_line_rec.service_start_date);
208 oe_debug_pub.add(' l_return_status = '||l_return_status);
209
210 p_line_rec.service_start_date := l_line_rec.service_start_date;
211
212 IF p_line_rec.service_start_date IS NOT NULL THEN
213 p_line_rec.service_end_date := NULL;
214 OE_SERVICE_UTIL.Get_Service_Duration(
215 p_x_line_rec => p_line_rec,
216 x_return_status => l_return_status
217 );
218 oe_debug_pub.add(' l_return_status == '||l_return_status);
219 END IF;
220
221 ELSIF p_line_rec.service_end_date IS NULL OR p_line_rec.service_end_date = FND_API.G_MISS_DATE THEN
222
223 OE_SERVICE_UTIL.Get_Service_Duration(
224 p_x_line_rec => p_line_rec,
225 x_return_status => l_return_status
226 );
227 oe_debug_pub.add(' l_return_status == > '||l_return_status);
228 END IF;
229
230 IF l_debug_level > 0 THEN
231 oe_debug_pub.add('exiting oe_invoice_pub . update_service_dates() '
232 ||' p_line_rec.line_id = ' || P_LINE_REC.LINE_ID
233 ||' p_line_rec.service_start_date = '||TO_CHAR(P_LINE_REC.SERVICE_START_DATE, 'YYYY/MM/DD' )
234 ||' p_line_rec.service_end_date = '|| TO_CHAR ( P_LINE_REC.SERVICE_END_DATE , 'YYYY/MM/DD' )
235 ) ;
236 END IF;
237
238 END Update_Service_Dates;
239
240
241
242 FUNCTION Return_Line
243 (p_line_rec IN OE_Order_Pub.Line_Rec_Type
244 )
245 RETURN BOOLEAN
246 IS
247 --
248 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
249 --
250 l_header_id NUMBER;
251 l_line_id NUMBER;
252
253 BEGIN
254 IF l_debug_level > 0 THEN
255 oe_debug_pub.add( 'ENTER RETURN_LINE ' , 1 ) ;
256 END IF;
257 IF p_line_rec.line_category_code = 'RETURN' THEN
258 IF l_debug_level > 0 THEN
259 oe_debug_pub.add( 'EXIT , THIS IS A RETURN LINE' , 1 ) ;
260 END IF;
261 RETURN TRUE;
262 ELSE
263 IF l_debug_level > 0 THEN
264 oe_debug_pub.add( 'EXIT , THIS IS A REGULAR LINE' , 1 ) ;
265 END IF;
266 RETURN FALSE;
267 END IF;
268 EXCEPTION
269 WHEN OTHERS THEN
270 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
271 IF l_debug_level > 0 THEN
272 oe_debug_pub.add( 'RETURN_LINE: WHEN OTHERS EXCEPTION ' , 1 ) ;
273 END IF;
274 OE_MSG_PUB.Add_Exc_Msg
275 ( G_PKG_NAME
276 , 'Return_Line'
277 );
278 END IF;
279 END Return_Line;
280
281 Procedure Update_line_flow_status
282 ( p_line_id IN NUMBER
283 , p_flow_status_code IN VARCHAR2
284 ) IS
285 --
286 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
287 --
288 Begin
289 IF l_debug_level > 0 THEN
290 oe_debug_pub.add( 'Inside Update Line Flow Status');
291 oe_debug_pub.add( 'line id : ' || p_line_id);
292 oe_debug_pub.add( 'flow status code : ' || p_flow_status_code);
293 END IF;
294 Update oe_order_lines_all
295 Set flow_status_code = p_flow_status_code
296 Where line_id = p_line_id;
297 End Update_line_flow_status;
298
299 Procedure Update_header_flow_status
300 ( p_header_id IN NUMBER
301 , p_flow_status_code IN VARCHAR2
302 ) IS
303 --
304 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
305 --
306 Begin
307 IF l_debug_level > 0 THEN
308 oe_debug_pub.add( 'Inside Update Header Flow Status');
309 END IF;
310 Update oe_order_headers_all
311 Set flow_status_code = p_flow_status_code
312 Where header_id = p_header_id;
313 End Update_header_flow_status;
314
315
316 FUNCTION Shipping_info_Available
317 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
318 )
319 RETURN BOOLEAN
320 IS
321 l_count NUMBER;
322 --
323 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
324 --
325 BEGIN
326 IF l_debug_level > 0 THEN
327 oe_debug_pub.add( 'ENTER SHIPPING_INFO_AVAILABLE ' , 1 ) ;
328 END IF;
329 -- Fix for bug 2196494
330 IF (p_line_rec.shippable_flag = 'Y' OR p_line_rec.item_type_code in ('MODEL','CLASS','KIT'))
331 AND p_line_rec.line_category_code <> 'RETURN'
332 AND p_line_rec.source_type_code <> 'EXTERNAL' THEN
333
334 /* Modified the condition clause for bug 4003538 */
335 IF (nvl(p_line_rec.shipped_quantity,0) = 0 AND
336 p_line_rec.model_remnant_flag = 'Y' AND
337 p_line_rec.item_type_code in ('MODEL','CLASS','KIT')) THEN
338 IF l_debug_level > 0 THEN
339 oe_debug_pub.add('Exit Shipping_info_Available (4) Remnant Model',1);
340 END IF;
341 RETURN TRUE;
342 -- If line is shipped, shipped quantity will be filled in otherwise it will be null
343 ELSIF p_line_rec.shipped_quantity IS NULL THEN -- Changed IF to ELSIF
344 IF l_debug_level > 0 THEN
345 oe_debug_pub.add('Exit Shipping_info_Available (1) non shippable', 1);
346 END IF;
347 RETURN FALSE;
348 ELSE
349 IF l_debug_level > 0 THEN
350 oe_debug_pub.add('Exit Shipping_info_Available (2)-shippable', 1);
351 END IF;
352 RETURN TRUE;
353 END IF;
354 ELSE
355 IF l_debug_level > 0 THEN
356 oe_debug_pub.add( 'EXIT SHIPPING_INFO_AVAILABLE ( 3 ) ' , 1 ) ;
357 END IF;
358 RETURN FALSE;
359 END IF;
360 EXCEPTION
361 WHEN OTHERS THEN
362 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
363 THEN
364 IF l_debug_level > 0 THEN
365 oe_debug_pub.add( 'SHIPPPING_INFO_AVAILABLE: WHEN OTHERS EXCEPTION ' , 1 ) ;
366 END IF;
367 OE_MSG_PUB.Add_Exc_Msg
368 ( G_PKG_NAME
369 , 'Shippping_info_Available'
370 );
371 END IF;
372 END Shipping_info_Available;
373
374 FUNCTION Line_Invoiceable
375 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
376 )
377 RETURN BOOLEAN
378 IS
379 l_invoiceable_item_flag VARCHAR2(1);
380 l_invoice_enabled_flag VARCHAR2(1);
381 l_serviceable_product_flag VARCHAR2(1);
382 l_order_line_id NUMBER;
383 l_return_status VARCHAR2(1);
384 l_service_reference_line_id NUMBER;
385 l_cancelled_delivery_detail NUMBER;
386 --bug5336639
387 l_master_organization_id NUMBER;
388 --
389 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
390 --
391 BEGIN
392 IF l_debug_level > 0 THEN
393 oe_debug_pub.add( 'ENTERING LINE_INVOICEABLE' , 1 ) ;
394 END IF;
395
396 --bug5336639
397 IF G_CURRENT_LINE_ID = p_line_rec.line_id THEN
398
399 IF l_debug_level > 0 THEN
400 oe_debug_pub.add('Returning the cached value..');
401 IF G_IS_CURR_LINE_INVOICEABLE THEN
402 oe_debug_pub.add('This line is invoiceable');
403 ELSE
404 oe_debug_pub.add('This line is not invoiceable');
405 END IF;
406 END IF;
407
408 RETURN G_IS_CURR_LINE_INVOICEABLE;
409 END IF;
410
411 /* For internal orders source_document_type_id is 10 */
412 IF p_line_rec.source_document_type_id = 10 THEN
413 IF l_debug_level > 0 THEN
414 oe_debug_pub.add( 'INTERNAL ORDER , NOT INVOICEABLE' , 1 ) ;
415 END IF;
416 --bug5336639 start
417 G_CURRENT_LINE_ID := p_line_rec.line_id;
418 G_IS_CURR_LINE_INVOICEABLE := FALSE;
419 --bug5336639 end;
420 RETURN FALSE;
421 END IF;
422
423 -- Begin 4172500
424 IF p_line_rec.shippable_flag = 'Y' AND nvl(p_line_rec.shipped_quantity,0) = 0 THEN
425 BEGIN
426
427 SELECT COUNT(*)
428 INTO l_cancelled_delivery_detail
429 FROM WSH_DELIVERY_DETAILS
430 WHERE SOURCE_LINE_ID = p_line_rec.line_id
431 AND SOURCE_CODE='OE'
432 AND RELEASED_STATUS = 'D';
433 IF NVL(l_cancelled_delivery_detail,0) > 0 THEN
434 IF l_debug_level > 0 THEN
435 oe_debug_pub.add('This line not eligible for invoice since shipping within tolerance'||p_line_rec.line_id,1);
436 END IF;
437 --bug5336639 start
438 G_CURRENT_LINE_ID := p_line_rec.line_id;
439 G_IS_CURR_LINE_INVOICEABLE := FALSE;
440 --bug5336639 end;
441 RETURN FALSE;
442 END IF;
443 EXCEPTION WHEN OTHERS THEN
444 IF l_debug_level > 0 THEN
445 oe_debug_pub.add('In Others',1);
446 END IF;
447 NULL;
448 END;
449 END IF;
450 -- End 4172500
451
452 --bug5336639
453 l_master_organization_id := oe_sys_parameters.value('MASTER_ORGANIZATION_ID', p_line_rec.org_id);
454
455 BEGIN
456 SELECT INVOICEABLE_ITEM_FLAG, INVOICE_ENABLED_FLAG
457 INTO l_invoiceable_item_flag, l_invoice_enabled_flag
458 FROM mtl_system_items
459 WHERE inventory_item_id = p_line_rec.inventory_item_id
460 AND organization_id = nvl(p_line_rec.ship_from_org_id,l_master_organization_id); --bug5336639
461
462 EXCEPTION
463 WHEN NO_DATA_FOUND THEN
464 IF l_debug_level > 0 THEN
465 oe_debug_pub.add( 'ITEM DEFINITION DOES NOT EXISTS IN THE SHIP FROM ORG' );
466 END IF;
467 RAISE NO_DATA_FOUND;
468 END;
469 /* If the service reference context is ORDER, then the service_reference
470 line_id is the line_id of the parent. However, if the service ref
471 context is Customer Product then we need to first retrieve the
472 original order line id */
473
474 IF p_line_rec.item_type_code = 'SERVICE' AND
475 p_line_rec.service_reference_type_code='CUSTOMER_PRODUCT' AND
476 p_line_rec.service_reference_line_id IS NOT NULL THEN
477 IF l_debug_level > 0 THEN
478 oe_debug_pub.add( 'LINE IS A CUSTOMER PRODUCT' ) ;
479 END IF;
480 /* Commenting for bug# 5032978
481 OE_SERVICE_UTIL.Get_Cust_Product_Line_Id
482 ( x_return_status => l_return_status
483 , p_reference_line_id => p_line_rec.service_reference_line_id
484 , p_customer_id => p_line_rec.sold_to_org_id
485 , x_cust_product_line_id => l_order_line_id
486 );
487 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
488 IF l_debug_level > 0 THEN
489 oe_debug_pub.add( 'SERVICE LINE ID IS ' || L_ORDER_LINE_ID ) ;
490 END IF;
491 l_service_reference_line_id := l_order_line_id;
492 ELSE
493 IF l_debug_level > 0 THEN
494 oe_debug_pub.add( 'NOT ABLE TO RETRIEVE CUST PRODUCT LINE ID' ) ;
495 END IF;
496 FND_MESSAGE.SET_NAME('ONT','ONT_NO_CUST_PROD_LINE');
497 OE_MSG_PUB.ADD;
498 RAISE NO_DATA_FOUND;
499 END IF;
500 end commenting for bug# 5032978 */
501 l_service_reference_line_id := NULL;
502
503 ELSE
504 l_service_reference_line_id := p_line_rec.service_reference_line_id;
505 END IF;
506 IF p_line_rec.item_type_code = 'SERVICE' AND l_service_reference_line_id IS NOT NULL THEN
507 BEGIN
508 /*Bug3261460*/
509 SELECT msi.SERVICEABLE_PRODUCT_FLAG
510 INTO l_serviceable_product_flag
511 FROM oe_order_lines_all ol, mtl_system_items msi
512 WHERE ol.line_id = l_service_reference_line_id
513 AND ol.inventory_item_id = msi.inventory_item_id
514 AND msi.organization_id = nvl(ol.ship_from_org_id, oe_sys_parameters.value('MASTER_ORGANIZATION_ID', ol.org_id));
515 EXCEPTION
516 WHEN NO_DATA_FOUND THEN
517 IF l_debug_level > 0 THEN
518 oe_debug_pub.add( 'IN NO DATA FOUND WHEN TRYING TO GET SERVICEABLE PRODUCT FLAG' ,5);
519 END IF;
520 l_serviceable_product_flag := 'Y';
521 WHEN OTHERS THEN
522 IF l_debug_level > 0 THEN
523 oe_debug_pub.add( 'UNABLE TO DEFINE SERVICEABLE PRODUCT '||SQLERRM , 1 ) ;
524 END IF;
525 RAISE NO_DATA_FOUND;
526 END;
527 ELSE
528 l_serviceable_product_flag := 'Y';
529 END IF;
530
531 IF (l_invoiceable_item_flag = 'N') OR
532 (l_invoice_enabled_flag = 'N') OR
533 (p_line_rec.item_type_code = 'SERVICE' AND l_serviceable_product_flag = 'N') THEN
534 IF l_debug_level > 0 THEN
535 oe_debug_pub.add( 'ITEM NOT INVOICEABLE ( 2 ) ' , 1 ) ;
536 END IF;
537 --bug5336639 start
538 G_CURRENT_LINE_ID := p_line_rec.line_id;
539 G_IS_CURR_LINE_INVOICEABLE := FALSE;
540 --bug5336639 end;
541 RETURN FALSE;
542 END IF;
543
544 IF p_line_rec.item_type_code = 'INCLUDED' THEN
545 IF l_debug_level > 0 THEN
546 oe_debug_pub.add( 'INCLUDED ITEM , NOT INVOICEABLE ( 3 ) ' , 1 ) ;
547 END IF;
548 --bug5336639 start
549 G_CURRENT_LINE_ID := p_line_rec.line_id;
550 G_IS_CURR_LINE_INVOICEABLE := FALSE;
551 --bug5336639 end;
552 RETURN FALSE;
553 END IF;
554
555 IF p_line_rec.item_type_code = 'CONFIG' THEN -- for bug# 5224264
556 IF l_debug_level > 0 THEN
557 oe_debug_pub.add( 'CONFIG ITEM , NOT INVOICEABLE ( 3 ) ' , 1 ) ;
558 END IF;
559 --bug5336639 start
560 G_CURRENT_LINE_ID := p_line_rec.line_id;
561 G_IS_CURR_LINE_INVOICEABLE := FALSE;
562 --bug5336639 end;
563 RETURN FALSE;
564 END IF;
565
566 IF Return_Line(p_line_rec) THEN
567 IF OE_LINE_UTIL.Get_Return_Item_Type_Code(p_line_rec) = 'CONFIG' OR
568 OE_LINE_UTIL.Get_Return_Item_Type_Code(p_line_rec) = 'INCLUDED' THEN
569 IF l_debug_level > 0 THEN
570 oe_debug_pub.add( 'ITEM NOT INVOICEABLE ( 4 ) ' , 1 ) ;
571 END IF;
572 --bug5336639 start
573 G_CURRENT_LINE_ID := p_line_rec.line_id;
574 G_IS_CURR_LINE_INVOICEABLE := FALSE;
575 --bug5336639 end;
576 RETURN FALSE;
577 END IF;
578
579 --Added for bug # 6945716 start
580 IF p_line_rec.line_category_code = 'RETURN'
581 AND(NVL(FND_PROFILE.VALUE('ONT_GENERATE_CREDIT_REJECTED_RETURNS'), 'N')='N'
582 AND NVL(p_line_rec.shipped_quantity,0) = 0
583 AND NVL(p_line_rec.fulfilled_quantity,0) = 0 ) THEN
584
585 IF l_debug_level > 0 THEN
586 oe_debug_pub.add( 'ITEM was Completely rejected, DO NOT Invoice ' , 1 ) ;
587 END IF;
588
589 RETURN FALSE;
590 END IF;
591 --Added for bug # 6945716 end
592 END IF;
593 IF l_debug_level > 0 THEN
594 oe_debug_pub.add( 'THIS LINE IS INVOICEABLE ( 5 ) ' , 5 ) ;
595 END IF;
596 --bug5336639 start
597 G_CURRENT_LINE_ID := p_line_rec.line_id;
598 G_IS_CURR_LINE_INVOICEABLE := TRUE;
599 --bug5336639 end;
600 RETURN TRUE;
601
602 EXCEPTION
603 WHEN NO_DATA_FOUND THEN
604 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
605 --RAISE FND_API.G_EXC_ERROR;
606 WHEN OTHERS THEN
607 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
608 THEN
609 IF l_debug_level > 0 THEN
610 oe_debug_pub.add( 'LINE_INVOICEABLE: WHEN OTHERS EXCEPTION '||SQLERRM , 1 ) ;
611 END IF;
612 OE_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME ,'Line_Invoiceable');
613 END IF;
614 END Line_Invoiceable;
615
616 PROCEDURE Check_Invoicing_Holds
617 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
618 , p_itemtype IN VARCHAR2
619 , x_return_status OUT NOCOPY VARCHAR2
620 )
621 IS
622 l_hold_result_out VARCHAR2(30);
623 l_hold_return_status VARCHAR2(30);
624 l_hold_msg_count NUMBER;
625 l_hold_msg_data VARCHAR2(240);
626 --
627 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
628 --
629 BEGIN
630
631 -- We should honor invoice specific and generic holds
632 -- call to check_hold api to check for holds
633 IF l_debug_level > 0 THEN
634 oe_debug_pub.add( 'ENTER CHECK_INVOICING_HOLDS ' , 5 ) ;
635 END IF;
636 -- Check for Generic and invoice activity specific holds
637 -- IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
638 OE_HOLDS_PUB.CHECK_HOLDS(p_api_version => 1.0,
639 p_line_id => p_line_rec.line_id,
640 p_wf_item => OE_GLOBALS.G_WFI_LIN,
641 p_wf_activity => 'INVOICE_INTERFACE',
642 x_result_out => l_hold_result_out,
643 x_return_status => l_hold_return_status,
644 x_msg_count => l_hold_msg_count,
645 x_msg_data => l_hold_msg_data);
646 IF ( l_hold_return_status = FND_API.G_RET_STS_SUCCESS AND
647 l_hold_result_out = FND_API.G_TRUE )
648 THEN
649 FND_MESSAGE.SET_NAME('ONT','OE_INVOICING_HOLD');
650 OE_MSG_PUB.ADD;
651 x_return_status := FND_API.G_RET_STS_ERROR;
652 IF l_debug_level > 0 THEN
653 oe_debug_pub.add( 'A Line level Invoicing hold or generic hold found ( 1 ) , Return status : '||X_RETURN_STATUS , 1 ) ;
654 END IF;
655 RETURN;
656 ELSE
657 x_return_status := FND_API.G_RET_STS_SUCCESS;
658 END IF;
659 -- ELSIF p_itemtype = 'OEOH' THEN
660 OE_HOLDS_PUB.CHECK_HOLDS(p_api_version => 1.0,
661 p_line_id => p_line_rec.line_id,
662 p_wf_item => OE_GLOBALS.G_WFI_HDR,
663 p_wf_activity => 'HEADER_INVOICE_INTERFACE',
664 x_result_out => l_hold_result_out,
665 x_return_status => l_hold_return_status,
666 x_msg_count => l_hold_msg_count,
667 x_msg_data => l_hold_msg_data);
668
669 IF ( l_hold_return_status = FND_API.G_RET_STS_SUCCESS AND
670 l_hold_result_out = FND_API.G_TRUE )
671 THEN
672 FND_MESSAGE.SET_NAME('ONT','OE_INVOICING_HOLD');
673 OE_MSG_PUB.ADD;
674 x_return_status := FND_API.G_RET_STS_ERROR;
675 IF l_debug_level > 0 THEN
676 oe_debug_pub.add( 'A Header level Invoicing hold or generic hold found ( 2 ) , Return status '||X_RETURN_STATUS , 1 ) ;
677 END IF;
678 RETURN;
679 ELSE
680 x_return_status := FND_API.G_RET_STS_SUCCESS;
681 END IF;
682 -- END IF;
683 IF l_debug_level > 0 THEN
684 oe_debug_pub.add( 'NO HOLDS FOUND FOR THIS LINE ( 3 ) , RETURN STATUS '||X_RETURN_STATUS , 1 ) ;
685 END IF;
686 EXCEPTION
687 WHEN OTHERS THEN
688 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
689 IF FND_MSG_PUB.Check_Msg_Level
690 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
691 THEN
692 IF l_debug_level > 0 THEN
693 oe_debug_pub.add( 'Check_Invoicing_Holds: WHEN OTHERS EXCEPTION '||SQLERRM , 1 ) ;
694 END IF;
695 OE_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME ,'Check_Invoicing_Holds');
696 END IF;
697 END Check_Invoicing_Holds;
698
699 FUNCTION Show_Detail_Discounts
700 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
701 ) RETURN BOOLEAN IS
702 l_price_adj_tbl OE_Header_Adj_Util.Line_Adjustments_Tab_Type;
703 --
704 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
705 --
706 l_header_id NUMBER;
707 l_line_id NUMBER;
708 BEGIN
709 IF l_debug_level > 0 THEN
710 oe_debug_pub.add( 'ENTER SHOW_DETAIL_DISCOUNTS ( ) ' , 5 ) ;
711 END IF;
712 -- We should not depend on list price, selling price to determine if
713 -- there are any discounts. There is bug in pricing now.
714 -- Eventhough the discounts are not actually inserted into oe_price_adj table,
715 -- Selling price is adjusted to discounted price)
716 -- To avoid this look at adj table to see if there are any adjustments
717 -- IF p_line_rec.unit_list_price <> p_line_rec.unit_selling_price AND
718 IF (oe_sys_parameters.value('OE_DISCOUNT_DETAILS_ON_INVOICE',p_line_rec.org_id) = 'Y') THEN --moac
719 -- 3661895 The IF will be true only for return retrobilled RMA, all others will go through else
720 -- RT{
721 IF (p_line_rec.line_category_code = 'RETURN'
722 and p_line_rec.reference_line_id IS NOT NULL
723 and p_line_rec.retrobill_request_id IS NOT NULL) THEN
724
725 OE_RETROBILL_PVT.Get_Line_Adjustments
726 (p_line_rec => p_line_rec
727 ,x_line_adjustments => l_price_adj_tbl);
728 ELSE
729
730 OE_Header_Adj_Util.Get_Line_Adjustments
731 (p_header_id => p_line_rec.header_id
732 ,p_line_id => p_line_rec.line_id
733 ,x_line_adjustments => l_price_adj_tbl);
734 END IF;
735 -- RT}
736 IF l_debug_level > 0 THEN
737 oe_debug_pub.add( 'HEADER_ID : '||P_LINE_REC.HEADER_ID , 5 ) ;
738 oe_debug_pub.add( 'LINE_ID : '||P_LINE_REC.LINE_ID , 5 ) ;
739 oe_debug_pub.add( 'COUNT IS : '||L_PRICE_ADJ_TBL.COUNT , 5 ) ;
740 END IF;
741 IF l_price_adj_tbl.COUNT <> 0 THEN
742 IF l_debug_level > 0 THEN
743 oe_debug_pub.add( 'SHOW DETAIL DISCOUNTS IS ON' , 1 ) ;
744 END IF;
745 RETURN TRUE;
746 ELSE
747 IF l_debug_level > 0 THEN
748 oe_debug_pub.add( 'SHOW DETAIL DISCOUNTS IS OFF ( 1 ) ' , 1 ) ;
749 END IF;
750 RETURN FALSE;
751 END IF;
752 ELSE
753 IF l_debug_level > 0 THEN
754 oe_debug_pub.add( 'SHOW DETAIL DISCOUNTS IS OFF ( 2 ) ' , 1 ) ;
755 END IF;
756 RETURN FALSE;
757 END IF;
758 END Show_Detail_Discounts;
759
760 PROCEDURE Rounded_Amount
761 ( p_currency_code IN VARCHAR2
762 , p_unrounded_amount IN NUMBER
763 , x_rounded_amount OUT NOCOPY NUMBER
764 )
765 IS
766 l_precision NUMBER;
767 l_ext_precision NUMBER;
768 l_min_acct_unit NUMBER;
769 --
770 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
771 --
772 BEGIN
773
774 IF l_debug_level > 0 THEN
775 oe_debug_pub.add( 'ENTERING ROUNDED_AMOUNT ( ) ' , 5 ) ;
776 END IF;
777 FND_CURRENCY.GET_INFO(Currency_Code => p_currency_code,
778 precision => l_precision,
779 ext_precision => l_ext_precision,
780 min_acct_unit => l_min_acct_unit);
781
782 IF (l_min_acct_unit = 0 OR l_min_acct_unit IS NULL) THEN
783 x_rounded_amount := ROUND(p_unrounded_amount, l_precision);
784 ELSE
785 x_rounded_amount := ROUND(p_unrounded_amount/l_min_acct_unit)*l_min_acct_unit;
786 END IF;
787 IF l_debug_level > 0 THEN
788 oe_debug_pub.add( 'EXITING ROUNDED AMOUNT ( ) WITH AMOUNT : '||X_ROUNDED_AMOUNT , 5 ) ;
789 END IF;
790 END Rounded_Amount;
791
792 PROCEDURE Return_Credit_Info
793 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
794 , x_credit_memo_type_id OUT NOCOPY NUMBER
795 , x_credit_creation_sign OUT NOCOPY VARCHAR2
796 )
797 IS
798 l_inv_cust_trx_type_id NUMBER;
799 --
800 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
801 --
802 BEGIN
803 IF l_debug_level > 0 THEN
804 oe_debug_pub.add( ' ENTER RETURN CREDIT INFO ( ) ' , 5 ) ;
805 END IF;
806 --Hierarchy of retrieval:
807 --1)Get cust_trx_type_id from referenced line.
808 --2)Get cust_trx_type_id from referenced order.
809 --3)Get cust_trx_type_id from that line.
810 --4)Get cust_trx_type_id from that order.
811 --5)Get cust_trx_type_id from PROFILE OPTION.
812 IF p_line_rec.return_context = 'INVOICE' THEN
813 IF l_debug_level > 0 THEN
814 oe_debug_pub.add( ' RETURN TYPE IS INVOICE ' , 5 ) ;
815 END IF;
816 OE_DEBUG_PUB.DUMPDEBUG;
817 -- Introducing this pl/sql block #3349781
818 BEGIN
819 SELECT nvl(ctt.credit_memo_type_id, 0),
820 ctt_credit.creation_sign
821 INTO x_credit_memo_type_id, x_credit_creation_sign
822 FROM ra_customer_trx_lines_all ctl,
823 ra_customer_trx_all ct,
824 ra_cust_trx_types_all ctt,
825 ra_cust_trx_types_all ctt_credit
826 WHERE ctl.customer_trx_line_id = p_line_rec.reference_customer_trx_line_id
827 AND ct.customer_trx_id = ctl.customer_trx_id
828 AND ctt.cust_trx_type_id = ct.cust_trx_type_id
829 AND ctt_credit.cust_trx_type_id = ctt.credit_memo_type_id
830 AND NVL(ctt.org_id, -3114) = NVL(ctl.org_id, -3114)
831 /* DECODE(ctt.cust_trx_type_id,
832 1, -3113,
833 2, -3113,
834 7, -3113,
835 8, -3113,
836 NVL(ctl.org_id, -3114)) Commented for the bug 3027150 */
837 AND NVL(ctt_credit.org_id, -3114) = NVL(ctl.org_id, -3114);
838 /* DECODE(ctt_credit.cust_trx_type_id,
839 1, -3113,
840 2, -3113,
841 7, -3113,
842 8, -3113,
843 NVL(ctl.org_id, -3114)); Commented for the bug 3027150 */
844 -- cust_trx_type_id 1,2,7,8 (for Invoice, Credit Memo, PA Invoice, PA Credit memo) are seeded with org_id -3113
845 EXCEPTION WHEN NO_DATA_FOUND THEN
846 OE_DEBUG_PUB.add('Unable to derive credit memo type id from referenced order line, verify setup',1);
847 x_credit_memo_type_id:= 0;
848 x_credit_creation_sign := NULL;
849 NULL;
850 END;
851
852 IF l_debug_level > 0 THEN
853 oe_debug_pub.add( 'CREDIT_MEMO_TYPE_ID FROM INVOICE : '||X_CREDIT_MEMO_TYPE_ID , 5 ) ;
854 END IF;
855 ELSIF p_line_rec.return_context in ('PO', 'ORDER', 'SERIAL') THEN
856 IF l_debug_level > 0 THEN
857 oe_debug_pub.add( ' RETURN TYPE IS PO/ORDER/SERIAL' , 5 ) ;
858 END IF;
859 OE_DEBUG_PUB.DUMPDEBUG;
860 -- Get cust_trx_type_id from line type
861 --Bug2293944 Get information from the reference line or reference order.
862 SELECT NVL(lt.cust_trx_type_id, 0)
863 INTO l_inv_cust_trx_type_id
864 FROM oe_line_types_v lt
865 WHERE lt.line_type_id = (SELECT line_type_id
866 FROM oe_order_lines_all /* MOAC SQL CHANGE */
867 WHERE line_id = p_line_rec.reference_line_id);
868 IF l_debug_level > 0 THEN
869 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM REFERENCE LINE TYPE : '||L_INV_CUST_TRX_TYPE_ID , 5 ) ;
870 END IF;
871 IF l_inv_cust_trx_type_id = 0 THEN
872 SELECT NVL(ot.cust_trx_type_id,0)
873 INTO l_inv_cust_trx_type_id
874 FROM oe_order_types_v ot,
875 oe_order_headers_all oh /* MOAC SQL CHANGE */
876 WHERE ot.order_type_id = oh.order_type_id
877 AND oh.header_id = (SELECT header_id
878 FROM oe_order_lines_all /* MOAC SQL CHANGE */
879 WHERE line_id = p_line_rec.reference_line_id);
880 END IF;
881 IF l_debug_level > 0 THEN
882 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM REFERENCE ORDER TYPE : '||L_INV_CUST_TRX_TYPE_ID , 5 ) ;
883 END IF;
884 ELSE
885 IF l_debug_level > 0 THEN
886 oe_debug_pub.add( 'RETURN TYPE : '||P_LINE_REC.RETURN_CONTEXT , 5 ) ;
887 END IF;
888 x_credit_memo_type_id:= 0;
889 x_credit_creation_sign := NULL;
890 END IF;
891 IF (l_inv_cust_trx_type_id = 0 or x_credit_memo_type_id = 0)THEN
892 --use cache instead of SQL for bug 4200055
893 IF ( p_line_rec.line_type_id is not null
894 AND p_line_rec.line_type_id <> FND_API.G_MISS_NUM ) THEN
895 if (OE_Order_Cache.g_line_type_rec.line_type_id <> p_line_rec.Line_Type_id) THEN
896 OE_Order_Cache.Load_Line_type(p_line_rec.Line_Type_id) ;
897 end if ;
898 if (OE_Order_Cache.g_line_type_rec.line_type_id = p_line_rec.Line_Type_id )
899 then
900 l_inv_cust_trx_type_id := nvl(OE_Order_Cache.g_line_type_rec.cust_trx_type_id,0);
901 else
902 l_inv_cust_trx_type_id := 0 ;
903 end if ;
904 ELSE
905 l_inv_cust_trx_type_id := 0 ;
906 END IF ;
907 /*SELECT NVL(lt.cust_trx_type_id,0)
908 INTO l_inv_cust_trx_type_id
909 FROM oe_line_types_v lt
910 WHERE lt.line_type_id = p_line_rec.line_type_id; */
911 -- end bug 4200055
912 IF l_debug_level > 0 THEN
913 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM LINE TYPE : '||L_INV_CUST_TRX_TYPE_ID , 5 ) ;
914 END IF;
915 IF l_inv_cust_trx_type_id = 0 THEN
916 -- Get cust_trx_type_id from order type
917 SELECT NVL(ot.cust_trx_type_id, 0)
918 INTO l_inv_cust_trx_type_id
919 FROM oe_order_types_v ot,
920 oe_order_headers_all oh /* MOAC SQL CHANGE */
921 WHERE ot.order_type_id = oh.order_type_id
922 AND oh.header_id = p_line_rec.header_id;
923 END IF;
924 IF l_debug_level > 0 THEN
925 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM ORDER TYPE : '||L_INV_CUST_TRX_TYPE_ID , 5 ) ;
926 END IF;
927 END IF;
928 IF l_inv_cust_trx_type_id <> 0 THEN -- cust_trx_type_id exists at line/order type
929 IF l_debug_level > 0 THEN
930 oe_debug_pub.add( 'CUST_TRX_TYPE_ID FROM LINE/ORDER TYPE: '||L_INV_CUST_TRX_TYPE_ID , 5 ) ;
931 END IF;
932 -- Introducing this pl/sql block #3349781
933 BEGIN
934 SELECT NVL(ctt.credit_memo_type_id, 0),
935 ctt_credit.creation_sign
936 INTO x_credit_memo_type_id, x_credit_creation_sign
937 FROM ra_cust_trx_types_all ctt,
938 ra_cust_trx_types_all ctt_credit
939 WHERE ctt.cust_trx_type_id = l_inv_cust_trx_type_id
940 AND ctt_credit.cust_trx_type_id = ctt.credit_memo_type_id
941 AND NVL(ctt.org_id, -3114) = NVL(p_line_rec.org_id, -3114)
942 /* DECODE(ctt.cust_trx_type_id,
943 1, -3113,
944 2, -3113,
945 7, -3113,
946 8, -3113,
947 NVL(p_line_rec.org_id, -3114)) Commented for the bug 3027150 */
948 AND NVL(ctt_credit.org_id, -3114) = NVL(p_line_rec.org_id, -3114);
949 /* DECODE(ctt_credit.cust_trx_type_id,
950 1, -3113,
951 2, -3113,
952 7, -3113,
953 8, -3113,
954 NVL(p_line_rec.org_id, -3114)); Commented for the bug 3027150 */
955 EXCEPTION WHEN NO_DATA_FOUND THEN
956 OE_DEBUG_PUB.add('Unable to derive credit memo type id from order line, verify setup',1);
957 x_credit_memo_type_id:= 0;
958 x_credit_creation_sign := NULL;
959 NULL;
960 END;
961
962 IF l_debug_level > 0 THEN
963 oe_debug_pub.add( 'CREDIT MEMO TYPE : '||X_CREDIT_MEMO_TYPE_ID , 5 ) ;
964 END IF;
965 -- cust_trx_type_id 1,2,7,8 (for Invoice, Credit Memo, PA Invoice, PA Credit memo) are seeded with org_id -3113
966 END IF;
967 IF l_inv_cust_trx_type_id = 0 OR x_credit_memo_type_id = 0 THEN
968 -- no cust_trx_type_id at line/order type
969 IF l_debug_level > 0 THEN
970 oe_debug_pub.add( 'NO CUST TRX TYPE AT ORDER OR LINE TYPE LEVEL' , 5 ) ;
971 END IF;
972 x_credit_memo_type_id := 0;
973 x_credit_creation_sign := NULL;
974 END IF;
975
976 IF l_debug_level > 0 THEN
977 oe_debug_pub.add( 'CREDIT MEMO TYPE ID : '||X_CREDIT_MEMO_TYPE_ID , 5 ) ;
978 END IF;
979 IF l_debug_level > 0 THEN
980 oe_debug_pub.add( 'CREATION_SIGN : '||X_CREDIT_CREATION_SIGN , 5 ) ;
981 oe_debug_pub.add( ' EXITING RETURN_CREDIT_INFO ( ) ' , 1 ) ;
982 END IF;
983 EXCEPTION
984 WHEN NO_DATA_FOUND THEN
985 IF l_debug_level > 0 THEN
986 oe_debug_pub.add( 'EXCEPTION. EXITING RETURN_CREDIT_INFO ( 1 ) '||SQLERRM , 1 ) ;
987 END IF;
988 x_credit_memo_type_id := 0;
989 x_credit_creation_sign := NULL;
990 WHEN TOO_MANY_ROWS THEN
991 IF l_debug_level > 0 THEN
992 oe_debug_pub.add( 'EXCEPTION. EXITING RETURN_CREDIT_INFO ( 2 ) '||SQLERRM , 1 ) ;
993 END IF;
994 x_credit_memo_type_id := 0;
995 x_credit_creation_sign := NULL;
996 WHEN OTHERS THEN
997 IF l_debug_level > 0 THEN
998 oe_debug_pub.add( 'EXCEPTION. EXITING RETURN_CREDIT_INFO ( 3 ) '||SQLERRM , 1 ) ;
999 END IF;
1000 x_credit_memo_type_id := 0;
1001 x_credit_creation_sign := NULL;
1002 END Return_Credit_Info;
1003
1004 FUNCTION Get_Credit_Creation_Sign
1005 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
1006 , p_cust_trx_type_id IN NUMBER)
1007 RETURN VARCHAR2 IS
1008 l_creation_sign VARCHAR2(30):= NULL;
1009 --
1010 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1011 --
1012 BEGIN
1013 IF l_debug_level > 0 THEN
1014 oe_debug_pub.add( 'ENTERING GET_CREDIT_CREATION_SIGN' , 5 ) ;
1015 END IF;
1016 IF p_cust_trx_type_id IS NOT NULL AND p_cust_trx_type_id <> 0 THEN
1017 SELECT creation_sign
1018 INTO l_creation_sign
1019 FROM ra_cust_trx_types
1020 WHERE cust_trx_type_id = p_Cust_Trx_Type_Id;
1021 END IF;
1022 IF l_debug_level > 0 THEN
1023 oe_debug_pub.add( 'CREATION_SIGN: '||L_CREATION_SIGN ) ;
1024 oe_debug_pub.add( 'EXITING GET_CREDIT_CREATION_SIGN ( 1 ) '||' SIGN= '||L_CREATION_SIGN , 1 ) ;
1025 END IF;
1026 RETURN(l_creation_sign);
1027
1028 EXCEPTION
1029 WHEN OTHERS THEN
1030 IF l_debug_level > 0 THEN
1031 oe_debug_pub.add( 'EXCEPTION. EXITING GET_CREDIT_CREATION_SIGN ( 1 ) '||SQLERRM , 1 ) ;
1032 END IF;
1033 RETURN(NULL);
1034 END Get_Credit_Creation_Sign;
1035
1036 PROCEDURE Get_Commitment_Info
1037 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
1038 , x_commitment_applied OUT NOCOPY NUMBER
1039 , x_commitment_interfaced OUT NOCOPY NUMBER)
1040 IS
1041 --
1042 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1043 --
1044 BEGIN
1045 IF l_debug_level > 0 THEN
1046 oe_debug_pub.add( 'ENTERING GET_COMMITMENT_INFO' , 5 ) ;
1047 END IF;
1048 IF p_line_rec.commitment_id IS NOT NULL THEN
1049 --serla begin
1050 IF OE_PrePayment_UTIL.IS_MULTIPLE_PAYMENTS_ENABLED THEN
1051 SELECT nvl(commitment_applied_amount, 0)
1052 ,nvl(commitment_interfaced_amount, 0)
1053 INTO x_commitment_applied
1054 ,x_commitment_interfaced
1055 FROM oe_payments
1056 WHERE payment_trx_id = p_line_rec.commitment_id
1057 AND payment_type_code = 'COMMITMENT'
1058 AND line_id = p_line_rec.line_id;
1059 ELSE
1060 --serla end
1061 SELECT nvl(commitment_applied_amount, 0)
1062 ,nvl(commitment_interfaced_amount, 0)
1063 INTO x_commitment_applied
1064 ,x_commitment_interfaced
1065 FROM oe_payments
1066 WHERE payment_trx_id = p_line_rec.commitment_id
1067 AND line_id = p_line_rec.line_id;
1068 --serla begin
1069 END IF;
1070 --serla end
1071 END IF;
1072 IF l_debug_level > 0 THEN
1073 oe_debug_pub.add( ' COMMITMENT APPLIED : '||X_COMMITMENT_APPLIED , 1 ) ;
1074 oe_debug_pub.add( ' COMMITMENT INTERFACED :'||X_COMMITMENT_INTERFACED , 1 ) ;
1075 END IF;
1076 EXCEPTION
1077 WHEN OTHERS THEN
1078 IF l_debug_level > 0 THEN
1079 oe_debug_pub.add( 'EXCEPTION. EXITING GET_COMMITMENT_INFO ( 1 ) '||SQLERRM , 1 ) ;
1080 END IF;
1081 x_commitment_applied := NULL;
1082 x_commitment_interfaced := NULL;
1083 END Get_Commitment_Info;
1084
1085 PROCEDURE Get_Item_Description
1086 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
1087 , x_item_description OUT NOCOPY VARCHAR2
1088 ) IS
1089 l_organization_id NUMBER := oe_sys_parameters.value('MASTER_ORGANIZATION_ID', p_line_rec.org_id);
1090 --
1091 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1092 --
1093 l_item_description VARCHAR2(240) := null ;
1094 BEGIN
1095 IF l_debug_level > 0 THEN
1096 oe_debug_pub.add( ' ENTERING GET_ITEM_DESCRIPTION ( ) ' , 5 ) ;
1097 oe_debug_pub.add( ' Item Identifier Type :'||p_line_rec.item_identifier_type);
1098 oe_debug_pub.add('Inventory Item ID '||p_line_rec.inventory_item_id,5);
1099 oe_debug_pub.add('Organization ID '||l_organization_ID,5);
1100 oe_debug_pub.add('Ordered Item ID '||p_line_rec.ordered_item_id);
1101 END IF;
1102 IF nvl(p_line_rec.item_identifier_type,'INT') = 'INT' THEN -- Bug #3684306
1103 SELECT description
1104 INTO x_item_description
1105 FROM mtl_system_items_vl
1106 WHERE inventory_item_id =p_line_rec.inventory_item_id
1107 AND organization_id = l_organization_id;
1108 ELSIF nvl(p_line_rec.item_identifier_type,'INT') = 'CUST' THEN -- Bug #3684306
1109 -- changes for bug 4237123
1110 /*SELECT nvl(citems.customer_item_desc, sitems.description)
1111 INTO x_item_description
1112 FROM mtl_customer_items citems
1113 ,mtl_customer_item_xrefs cxref
1114 ,mtl_system_items_vl sitems
1115 WHERE citems.customer_item_id = cxref.customer_item_id
1116 AND cxref.inventory_item_id = sitems.inventory_item_id
1117 AND sitems.inventory_item_id = p_line_rec.inventory_item_id
1118 AND sitems.organization_id = l_organization_id
1119 AND citems.customer_item_id = p_line_rec.ordered_item_id
1120 AND citems.customer_id = p_line_rec.sold_to_org_id; */
1121
1122 SELECT citems.customer_item_desc INTO l_item_description
1123 FROM mtl_customer_items citems
1124 WHERE citems.customer_item_id = p_line_rec.ordered_item_id
1125 AND citems.customer_id = p_line_rec.sold_to_org_id;
1126 if l_item_description is null then
1127 SELECT sitems.description INTO l_item_description
1128 FROM mtl_system_items_vl sitems
1129 WHERE sitems.inventory_item_id = p_line_rec.inventory_item_id
1130 and sitems.organization_id = l_organization_id ;
1131 end if ;
1132 x_item_description := l_item_description ;
1133 ELSE
1134 SELECT nvl(items.description, sitems.description)
1135 INTO x_item_description
1136 FROM mtl_cross_reference_types types
1137 , mtl_cross_references items
1138 , mtl_system_items_vl sitems
1139 WHERE types.cross_reference_type = items.cross_reference_type
1140 AND items.inventory_item_id = sitems.inventory_item_id
1141 AND sitems.organization_id = l_organization_id
1142 AND sitems.inventory_item_id = p_line_rec.inventory_item_id
1143 AND items.cross_reference_type = p_line_rec.item_identifier_type
1144 AND items.cross_reference = p_line_rec.ordered_item
1145 AND ROWNUM = 1; -- Bug3333235
1146 END IF;
1147 IF l_debug_level > 0 THEN
1148 oe_debug_pub.add( 'ITEM_DESCRIPTION : '||X_ITEM_DESCRIPTION ) ;
1149 oe_debug_pub.add( ' EXITING GET_ITEM_DESCRIPTION: '||X_ITEM_DESCRIPTION , 1 ) ;
1150 END IF;
1151 EXCEPTION
1152 WHEN NO_DATA_FOUND THEN --added for bug 4191624
1153 IF l_debug_level > 0 THEN
1154 oe_debug_pub.add('When no data found then get desc from system items '||SQLERRM,1);
1155 END IF;
1156 SELECT sitems.description
1157 INTO x_item_description
1158 FROM mtl_system_items_vl sitems
1159 WHERE sitems.inventory_item_id = p_line_rec.inventory_item_id
1160 and sitems.organization_id = l_organization_id ;
1161 WHEN OTHERS THEN
1162 IF l_debug_level > 0 THEN
1163 oe_debug_pub.add( 'EXCEPTION. GET ITEM DESCRIPTION '||SQLERRM , 1 ) ;
1164 END IF;
1165 NULL;
1166 END Get_Item_Description;
1167
1168 PROCEDURE Get_Service_Item_Description
1169 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
1170 , x_item_description OUT NOCOPY VARCHAR2
1171 ) IS
1172 l_line_rec OE_Order_Pub.Line_Rec_Type;
1173 l_order_line_id NUMBER;
1174 l_return_status VARCHAR2(1);
1175 l_service_reference_line_id NUMBER;
1176 l_service_item_desc VARCHAR2(240);
1177 l_item_serviced_desc VARCHAR2(240) := null;
1178
1179 /*Bug3261460-start*/
1180 l_inventory_item_id NUMBER;
1181 l_ordered_item_id NUMBER;
1182 l_sold_to_org_id NUMBER;
1183 l_item_identifier_type VARCHAR2(30);
1184 l_ordered_item VARCHAR2(2000);
1185 l_org_id NUMBER;
1186 /*Bug3261460-end*/
1187
1188 l_organization_id NUMBER := oe_sys_parameters.value('MASTER_ORGANIZATION_ID', p_line_rec.org_id);
1189 --
1190 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1191 --
1192 BEGIN
1193 IF l_debug_level > 0 THEN
1194 oe_debug_pub.add( ' ENTERING GET SERVICE ITEM DESCRIPTION ( ) ' , 5 ) ;
1195 END IF;
1196 IF p_line_rec.item_type_code = 'SERVICE' AND
1197 p_line_rec.service_reference_type_code='CUSTOMER_PRODUCT' AND
1198 p_line_rec.service_reference_line_id IS NOT NULL THEN
1199 IF l_debug_level > 0 THEN
1200 oe_debug_pub.add( 'REFERENCED BY CUSTOMER PRODUCT' , 5 ) ;
1201 END IF;
1202 /* Commenting for bug# 5032978
1203 OE_SERVICE_UTIL.Get_Cust_Product_Line_Id
1204 ( x_return_status => l_return_status
1205 , p_reference_line_id => p_line_rec.service_reference_line_id
1206 , p_customer_id => p_line_rec.sold_to_org_id
1207 , x_cust_product_line_id => l_order_line_id
1208 );
1209 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1210 IF l_debug_level > 0 THEN
1211 oe_debug_pub.add( 'SERVICE LINE ID IS : ' || L_ORDER_LINE_ID , 5 ) ;
1212 END IF;
1213 l_service_reference_line_id := l_order_line_id;
1214 ELSE
1215 IF l_debug_level > 0 THEN
1216 oe_debug_pub.add( 'NOT ABLE TO RETRIEVE CUST PRODUCT LINE ID '||SQLERRM , 1 ) ;
1217 END IF;
1218 RAISE NO_DATA_FOUND;
1219 END IF;
1220 end commenting for bug# 5032978 */
1221 l_service_reference_line_id := NULL;
1222 ELSE
1223 l_service_reference_line_id := p_line_rec.service_reference_line_id;
1224 END IF;
1225 Get_Item_Description(p_line_rec, l_service_item_desc);
1226 IF l_service_reference_line_id IS NOT NULL THEN
1227 /*Bug3261460-Changes made to get the serviced item description*/
1228 -- l_line_rec := OE_LINE_UTIL.Query_Row(l_service_reference_line_id);
1229 -- Get_Item_Description(l_line_rec, l_item_serviced_desc);
1230 BEGIN
1231 select inventory_item_id,ordered_item_id,sold_to_org_id,item_identifier_type,ordered_item,org_id
1232 into l_inventory_item_id,l_ordered_item_id,l_sold_to_org_id,l_item_identifier_type,l_ordered_item,l_org_id
1233 from OE_ORDER_LINES_ALL
1234 where line_id = l_service_reference_line_id;
1235 EXCEPTION
1236 WHEN NO_DATA_FOUND THEN
1237 IF l_debug_level > 0 THEN
1238 oe_debug_pub.add( 'NOT ABLE TO GET SERVICE LINE DETAILS', 1);
1239 END IF;
1240 l_item_identifier_type := NULL;
1241 l_inventory_item_id := NULL;
1242 l_organization_id := NULL;
1243 END;
1244 l_organization_id := oe_sys_parameters.value('MASTER_ORGANIZATION_ID', l_org_id);
1245 oe_debug_pub.add('Executed the first sql',1);
1246 BEGIN -- added for bug 4237123
1247 IF nvl(l_item_identifier_type,'INT') = 'INT' THEN -- Bug #3684306
1248 oe_debug_pub.add('Item identifier type is INT',1);
1249 BEGIN
1250 SELECT description
1251 INTO l_item_serviced_desc
1252 FROM mtl_system_items_vl
1253 WHERE inventory_item_id =l_inventory_item_id
1254 AND organization_id = l_organization_id;
1255 EXCEPTION
1256 WHEN NO_DATA_FOUND THEN
1257 IF l_debug_level > 0 THEN
1258 oe_debug_pub.add( 'NO DATA FOUND IN SERVICE ITEM DESCRIPTION');
1259 END IF;
1260 l_item_serviced_desc := NULL;
1261 END;
1262 ELSIF nvl(l_item_identifier_type,'INT') = 'CUST' THEN -- Bug #3684306
1263 oe_debug_pub.add('Item Identifier typs is CUST',1);
1264 -- changes for bug 4237123
1265 /*SELECT nvl(citems.customer_item_desc, sitems.description)
1266 INTO l_item_serviced_desc
1267 FROM mtl_customer_items citems
1268 ,mtl_customer_item_xrefs cxref
1269 ,mtl_system_items_vl sitems
1270 WHERE citems.customer_item_id = cxref.customer_item_id
1271 AND cxref.inventory_item_id = sitems.inventory_item_id
1272 AND sitems.inventory_item_id = l_inventory_item_id
1273 AND sitems.organization_id = l_organization_id
1274 AND citems.customer_item_id = l_ordered_item_id
1275 AND citems.customer_id = l_sold_to_org_id; */
1276
1277 SELECT citems.customer_item_desc INTO l_item_serviced_desc
1278 FROM mtl_customer_items citems
1279 WHERE citems.customer_item_id = l_ordered_item_id
1280 AND citems.customer_id = l_sold_to_org_id;
1281 if l_item_serviced_desc is null then
1282 SELECT sitems.description INTO l_item_serviced_desc
1283 FROM mtl_system_items_vl sitems
1284 WHERE sitems.inventory_item_id = l_inventory_item_id
1285 and sitems.organization_id = l_organization_id ;
1286 end if ;
1287 ELSE
1288 oe_debug_pub.add('In else part of item identifier type',1);
1289 SELECT nvl(items.description, sitems.description)
1290 INTO l_item_serviced_desc
1291 FROM mtl_cross_reference_types types
1292 , mtl_cross_references items
1293 , mtl_system_items_vl sitems
1294 WHERE types.cross_reference_type = items.cross_reference_type
1295 AND items.inventory_item_id = sitems.inventory_item_id
1296 AND sitems.organization_id = l_organization_id
1297 AND sitems.inventory_item_id = l_inventory_item_id
1298 AND items.cross_reference_type = l_item_identifier_type
1299 AND items.cross_reference = l_ordered_item
1300 AND ROWNUM = 1; -- added for Bug 7583908
1301 END IF;
1302 OE_DEBUG_PUB.ADD('Item_Description of serviced item: '||l_item_serviced_desc);
1303 EXCEPTION --aded for bug 4237123
1304 WHEN NO_DATA_FOUND THEN
1305 IF l_debug_level > 0 THEN
1306 oe_debug_pub.add('When no data found then get desc from system items '||SQLERRM,1);
1307 END IF;
1308 SELECT sitems.description
1309 INTO l_item_serviced_desc
1310 FROM mtl_system_items_vl sitems
1311 WHERE sitems.inventory_item_id = l_inventory_item_id
1312 and sitems.organization_id = l_organization_id ;
1313 END ;
1314 END IF;
1315 x_item_description := substr(l_service_item_desc,1,90)||' - '||
1316 p_line_rec.ordered_quantity
1317 ||' '||substr(l_item_serviced_desc,1,90)||': '
1318 ||p_line_rec.service_start_date||' - '||p_line_rec.service_end_date ;
1319
1320 IF l_debug_level > 0 THEN
1321 oe_debug_pub.add( 'SERVICE ITEM_DESCRIPTION: '||X_ITEM_DESCRIPTION ) ;
1322 oe_debug_pub.add( ' EXITING GET_SERVICE_ITEM_DESCRIPTION: '||X_ITEM_DESCRIPTION , 1 ) ;
1323 END IF;
1324 EXCEPTION
1325 WHEN OTHERS THEN
1326 IF l_debug_level > 0 THEN
1327 oe_debug_pub.add( 'EXCEPTION. GET SERVICE ITEM DESCRIPTION ( ) '||SQLERRM , 1 ) ;
1328 END IF;
1329 NULL;
1330 END Get_Service_Item_Description;
1331
1332 FUNCTION Get_Overship_Invoice_Basis
1333 (p_line_rec IN OE_Order_Pub.Line_Rec_Type)
1334 RETURN VARCHAR2
1335 IS
1336 l_overship_invoice_basis VARCHAR2(30):= NULL;
1337 --
1338 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1339 --
1340 BEGIN
1341 /*
1342 Get l_overship_invoice_basis from control set
1343 1. Item
1344 2. Ship_to_site
1345 3. Customer
1346 4.Profile
1347 */
1348 IF l_debug_level > 0 THEN
1349 oe_debug_pub.add( ' ENTERING GET_OVERSHIP_INVOICE_BASIS' , 5 ) ;
1350 END IF;
1351 IF p_line_rec.ship_to_org_id IS NOT NULL THEN
1352 SELECT invoice_quantity_rule
1353 INTO l_overship_invoice_basis
1354 FROM hz_cust_site_uses
1355 WHERE site_use_id = p_line_rec.ship_to_org_id
1356 AND site_use_code = 'SHIP_TO';
1357 IF l_debug_level > 0 THEN
1358 oe_debug_pub.add( 'OVERSHIP_INVOICE_BASIS ( 2 ) : '||L_OVERSHIP_INVOICE_BASIS , 5 ) ;
1359 END IF;
1360 END IF;
1361 IF l_overship_invoice_basis IS NULL THEN
1362 IF p_line_rec.sold_to_org_id IS NOT NULL THEN
1363 SELECT invoice_quantity_rule
1364 INTO l_overship_invoice_basis
1365 FROM hz_cust_accounts
1366 WHERE cust_account_id = p_line_rec.sold_to_org_id;
1367 IF l_debug_level > 0 THEN
1368 oe_debug_pub.add( 'OVERSHIP_INVOICE_BASIS ( 1 ) : '||L_OVERSHIP_INVOICE_BASIS , 5 ) ;
1369 END IF;
1370 END IF;
1371 END IF;
1372 IF l_overship_invoice_basis IS NULL THEN
1373 l_overship_invoice_basis := oe_sys_parameters.value('OE_OVERSHIP_INVOICE_BASIS',p_line_rec.org_id); --moac
1374 IF l_debug_level > 0 THEN
1375 oe_debug_pub.add( 'OVERSHIP_INVOICE_BASIS ( 3 ) : '||L_OVERSHIP_INVOICE_BASIS , 5 ) ;
1376 END IF;
1377 END IF;
1378 IF l_debug_level > 0 THEN
1379 oe_debug_pub.add( 'OVERSHIP_INVOICE_BASIS: '||L_OVERSHIP_INVOICE_BASIS , 5 ) ;
1380 oe_debug_pub.add( ' EXITING GET_OVERSHIP_INVOICE_BASIS: '||L_OVERSHIP_INVOICE_BASIS , 5 ) ;
1381 END IF;
1382 RETURN l_overship_invoice_basis;
1383
1384 END Get_Overship_Invoice_Basis;
1385
1386 FUNCTION Get_Invoice_Source
1387 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
1388 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
1389 )
1390 RETURN VARCHAR2
1391 IS
1392 l_invoice_source_id NUMBER := NULL;
1393 l_invoice_source VARCHAR2(50):= NULL;
1394 --
1395 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1396 --
1397 BEGIN
1398 IF l_debug_level > 0 THEN
1399 oe_debug_pub.add( ' ENTERING GET_INVOICE_SOURCE' , 5 ) ;
1400 END IF;
1401 IF FND_PROFILE.VALUE('WSH_INVOICE_NUMBERING_METHOD')= 'D' AND
1402 (Return_Line(p_line_rec) OR NOT Shipping_Info_Available(p_line_rec) OR
1403 (p_interface_line_rec.interface_line_attribute3 = '0')) THEN
1404 SELECT NVL(lt.non_delivery_invoice_source_id,
1405 ot.non_delivery_invoice_source_id)
1406 INTO l_invoice_source_id
1407 FROM oe_line_types_v lt,
1408 oe_order_types_v ot,
1409 oe_order_headers_all oh /* MOAC SQL CHANGE */
1410 WHERE lt.line_type_id = p_line_rec.line_type_id
1411 AND ot.order_type_id = oh.order_type_id
1412 AND oh.header_id = p_line_rec.header_id;
1413 IF l_invoice_source_id IS NOT NULL THEN
1414 SELECT name
1415 INTO l_invoice_source
1416 FROM ra_batch_sources
1417 WHERE batch_source_id = l_invoice_source_id;
1418 IF l_debug_level > 0 THEN
1419 oe_debug_pub.add( 'INVOICE_SOURCE IS ( 1 ) : '||L_INVOICE_SOURCE , 5 ) ;
1420 END IF;
1421 RETURN l_invoice_source;
1422 ELSE
1423 l_invoice_source := oe_sys_parameters.value('OE_NON_DELIVERY_INVOICE_SOURCE',p_line_rec.org_id); --moac
1424 IF l_debug_level > 0 THEN
1425 oe_debug_pub.add( 'INVOICE_SOURCE IS ( 2 ) : '||L_INVOICE_SOURCE , 5 ) ;
1426 END IF;
1427 RETURN l_invoice_source;
1428 END IF;
1429 ELSE -- Invoice numbering method is 'Automatic' OR 'delivery' with shipping information available
1430 SELECT NVL(lt.invoice_source_id,
1431 ot.invoice_source_id)
1432 INTO l_invoice_source_id
1433 FROM oe_line_types_v lt,
1434 oe_order_types_v ot,
1435 oe_order_headers_all oh /* MOAC SQL CHANGE */
1436 WHERE lt.line_type_id = p_line_rec.line_type_id
1437 AND ot.order_type_id = oh.order_type_id
1438 AND oh.header_id = p_line_rec.header_id;
1439 IF l_invoice_source_id IS NOT NULL THEN
1440 SELECT name
1441 INTO l_invoice_source
1442 FROM ra_batch_sources
1443 WHERE batch_source_id = l_invoice_source_id;
1444 IF l_debug_level > 0 THEN
1445 oe_debug_pub.add( 'INVOICE SOURCE IS ( 3 ) : '||L_INVOICE_SOURCE , 5 ) ;
1446 END IF;
1447 RETURN l_invoice_source;
1448 ELSE
1449 l_invoice_source := oe_sys_parameters.value('OE_INVOICE_SOURCE',p_line_rec.org_id); --moac
1450 IF l_debug_level > 0 THEN
1451 oe_debug_pub.add( 'INVOICE_SOURCE IS ( 4 ) : '||L_INVOICE_SOURCE , 5 ) ;
1452 END IF;
1453 RETURN l_invoice_source;
1454 END IF;
1455 END IF;
1456 EXCEPTION
1457 WHEN OTHERS THEN
1458 IF l_debug_level > 0 THEN
1459 oe_debug_pub.add( 'In Others of Function Get_Invoice_Source', 5);
1460 END IF;
1461 RETURN l_invoice_source;
1462 END Get_Invoice_Source;
1463
1464 FUNCTION Get_Customer_Transaction_Type
1465 ( p_record IN OE_AK_ORDER_LINES_V%ROWTYPE
1466 ) RETURN NUMBER IS
1467 l_inv_cust_trx_type_id NUMBER;
1468 l_cust_trx_type_id NUMBER;
1469 l_creation_sign VARCHAR2(30);
1470 l_line_rec OE_Order_Pub.Line_Rec_Type;
1471 --
1472 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1473 --
1474 BEGIN
1475 IF l_debug_level > 0 THEN
1476 oe_debug_pub.add( ' ENTER GET_CUSTOMER_TRANSACTION_TYPE' , 5 ) ;
1477 END IF;
1478 IF l_debug_level > 0 THEN
1479 oe_debug_pub.add( 'Before the call to Rowtype_Rec_To_API_Rec ', 1);
1480 END IF;
1481 OE_Line_Util_Ext.Rowtype_Rec_To_API_Rec(p_record,l_line_rec);
1482 IF l_debug_level > 0 THEN
1483 oe_debug_pub.add( 'After the call to Rowtype_Rec_To_API_Rec ', 1);
1484 END IF;
1485
1486 l_cust_trx_type_id := Get_Customer_Transaction_Type(l_line_rec);
1487 RETURN(l_cust_trx_type_id);
1488
1489 EXCEPTION
1490 WHEN OTHERS THEN
1491 IF l_debug_level > 0 THEN
1492 oe_debug_pub.add( 'EXCEPTION. EXITING GET_CUSTOMER_TRANSACTION_TYPE ( ) , '||SQLERRM , 1 ) ;
1493 END IF;
1494 return(0);
1495 END Get_Customer_Transaction_Type;
1496
1497 FUNCTION Get_Customer_Transaction_Type
1498 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
1499 ) RETURN NUMBER IS
1500 l_inv_cust_trx_type_id NUMBER;
1501 l_cust_trx_type_id NUMBER;
1502 l_creation_sign VARCHAR2(30);
1503 --
1504 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1505 --
1506 BEGIN
1507 IF l_debug_level > 0 THEN
1508 oe_debug_pub.add( ' ENTER GET_CUSTOMER_TRANSACTION_TYPE' , 5 ) ;
1509 END IF;
1510
1511 --use cache instead of SQL for bug 4200055
1512 IF ( p_line_rec.line_type_id is not null
1513 AND p_line_rec.line_type_id <> FND_API.G_MISS_NUM
1514 AND OE_Order_Cache.g_line_type_rec.line_type_id <> p_line_rec.Line_Type_id) THEN
1515 OE_Order_Cache.Load_Line_type(p_line_rec.Line_Type_id) ;
1516 END IF ; -- end
1517
1518 IF NOT Return_Line(p_line_rec) THEN -- Standard Order Line
1519 IF l_debug_level > 0 THEN
1520 oe_debug_pub.add( 'THIS IA A STANDARD ORDER LINE' , 5 ) ;
1521 END IF;
1522 --use cache instead of SQL for bug 4200055
1523 if (OE_Order_Cache.g_line_type_rec.line_type_id = p_line_rec.Line_Type_id ) then
1524 l_cust_trx_type_id := nvl(OE_Order_Cache.g_line_type_rec.cust_trx_type_id,0) ;
1525 else
1526 l_cust_trx_type_id := 0 ;
1527 end if ;
1528 /*SELECT NVL(lt.cust_trx_type_id, 0)
1529 INTO l_cust_trx_type_id
1530 FROM oe_line_types_v lt
1531 WHERE lt.line_type_id = p_line_rec.line_type_id; */
1532 -- end bug 4200055
1533 IF l_debug_level > 0 THEN
1534 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM LINE TYPE : '||L_CUST_TRX_TYPE_ID , 5 ) ;
1535 END IF;
1536 IF l_cust_trx_type_id = 0 THEN
1537 SELECT NVL(ot.cust_trx_type_id, 0)
1538 INTO l_cust_trx_type_id
1539 FROM oe_order_types_v ot,
1540 oe_order_headers_all oh /* MOAC SQL CHANGE */
1541 WHERE ot.order_type_id = oh.order_type_id
1542 AND oh.header_id = p_line_rec.header_id;
1543 IF l_debug_level > 0 THEN
1544 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM ORDER TYPE : '||L_CUST_TRX_TYPE_ID , 5 ) ;
1545 END IF;
1546 IF l_cust_trx_type_id = 0 THEN
1547 SELECT NVL(oe_sys_parameters.value('OE_INVOICE_TRANSACTION_TYPE_ID',p_line_rec.org_id), 0) --moac
1548 INTO l_cust_trx_type_id
1549 FROM DUAL;
1550 IF l_debug_level > 0 THEN
1551 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM PROFILE : '||L_CUST_TRX_TYPE_ID , 5 ) ;
1552 END IF;
1553 END IF;
1554 END IF;
1555 IF l_debug_level > 0 THEN
1556 oe_debug_pub.add( 'GET CUSTOMER TRANSACTION TYPE ( 1 ) : '||L_CUST_TRX_TYPE_ID , 5 ) ;
1557 END IF;
1558 RETURN(l_cust_trx_type_id);
1559 ELSIF p_line_rec.reference_line_id IS NOT NULL THEN -- Referenced Return Line
1560 IF l_debug_level > 0 THEN
1561 oe_debug_pub.add( 'THIS IA A REFERENCED RETURN LINE' , 5 ) ;
1562 END IF;
1563 -- Get from reference line (Ignore l_creation_sign value here)
1564 Return_Credit_Info(p_line_rec, l_cust_trx_type_id, l_creation_sign);
1565 IF l_cust_trx_type_id = 0 THEN -- no cust_trx_type_id at line/order type
1566 SELECT OE_SYS_PARAMETERS.Value('OE_CREDIT_TRANSACTION_TYPE_ID',p_line_rec.org_id) --moac
1567 INTO l_cust_trx_type_id
1568 FROM DUAL;
1569 IF l_debug_level > 0 THEN
1570 oe_debug_pub.add( ' CUSTOMER TRANSACTION TYPE ID FROM PROFILE ' , 5 ) ;
1571 END IF;
1572 END IF;
1573 IF l_debug_level > 0 THEN
1574 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID ( 2 ) : '||L_CUST_TRX_TYPE_ID , 5 ) ;
1575 END IF;
1576 RETURN(l_cust_trx_type_id);
1577 ELSE -- Non Referenced Return Line
1578 IF l_debug_level > 0 THEN
1579 oe_debug_pub.add( 'THIS IS A NON-REFERENCED RETURN LINE ' , 5 ) ;
1580 END IF;
1581 --use cache instead of SQL for bug 4200055
1582 if (OE_Order_Cache.g_line_type_rec.line_type_id = p_line_rec.Line_Type_id ) then
1583 l_inv_cust_trx_type_id := nvl(OE_ORDER_CACHE.g_line_type_rec.cust_trx_type_id,0);
1584 else
1585 l_inv_cust_trx_type_id := 0 ;
1586 end if ;
1587 /*SELECT NVL(lt.cust_trx_type_id, 0)
1588 INTO l_inv_cust_trx_type_id
1589 FROM oe_line_types_v lt
1590 WHERE lt.line_type_id = p_line_rec.line_type_id; */
1591 -- end bug 4200055
1592 IF l_debug_level > 0 THEN
1593 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM LINE TYPE : '||L_INV_CUST_TRX_TYPE_ID , 5 ) ;
1594 END IF;
1595 --Bug2293944 Removed the decode statement.
1596 IF l_inv_cust_trx_type_id = 0 THEN
1597 SELECT NVL(ot.cust_trx_type_id,0)
1598 INTO l_inv_cust_trx_type_id
1599 FROM oe_order_types_v ot,
1600 oe_order_headers_all oh /* MOAC SQL CHANGE */
1601 WHERE ot.order_type_id = oh.order_type_id
1602 AND oh.header_id = p_line_rec.header_id;
1603 IF l_debug_level > 0 THEN
1604 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM ORDER TYPE: '||L_INV_CUST_TRX_TYPE_ID , 5 ) ;
1605 END IF;
1606 END IF;
1607 IF l_inv_cust_trx_type_id <> 0 THEN
1608 IF l_debug_level > 0 THEN
1609 oe_debug_pub.add( 'GET CREDIT MEMO TYPE ' , 5 ) ;
1610 END IF;
1611 SELECT nvl(ctt.credit_memo_type_id, 0)
1612 INTO l_cust_trx_type_id
1613 FROM ra_cust_trx_types_all ctt
1614 WHERE ctt.cust_trx_type_id = l_inv_cust_trx_type_id
1615 AND NVL(ctt.org_id, -3114) = NVL(p_line_rec.org_id, -3114);
1616 /* DECODE(ctt.cust_trx_type_id,
1617 1, -3113,
1618 2, -3113,
1619 7, -3113,
1620 8, -3113,
1621 NVL(p_line_rec.org_id, -3114)); Commented for the bug 3027150 */
1622 IF l_debug_level > 0 THEN
1623 oe_debug_pub.add( 'CREDIT MEMO TYPE FROM LINE TYPE/ORDER TYPE OF CURRENT LINE'||L_CUST_TRX_TYPE_ID , 5 ) ;
1624 END IF;
1625 END IF;
1626 IF l_inv_cust_trx_type_id = 0 OR l_cust_trx_type_id = 0 THEN
1627 SELECT NVL(oe_sys_parameters.value('OE_CREDIT_TRANSACTION_TYPE_ID',p_line_rec.org_id), 0) --moac
1628 INTO l_cust_trx_type_id
1629 FROM DUAL;
1630 IF l_debug_level > 0 THEN
1631 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID FROM PROFILE' , 5 ) ;
1632 END IF;
1633 END IF;
1634 IF l_debug_level > 0 THEN
1635 oe_debug_pub.add( 'CUSTOMER TRANSACTION TYPE ID ( 3 ) : '||L_CUST_TRX_TYPE_ID , 5 ) ;
1636 END IF;
1637 RETURN(l_cust_trx_type_id);
1638 END IF;
1639 EXCEPTION
1640 WHEN OTHERS THEN
1641 IF l_debug_level > 0 THEN
1642 oe_debug_pub.add( 'EXCEPTION. EXITING GET_CUSTOMER_TRANSACTION_TYPE ( ) , '||SQLERRM , 1 ) ;
1643 END IF;
1644 return(0);
1645 END Get_Customer_Transaction_Type;
1646
1647 PROCEDURE Get_Credit_Method_Code
1648 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
1649 , x_accting_credit_method_code OUT NOCOPY VARCHAR2
1650 , x_invcing_credit_method_code OUT NOCOPY VARCHAR2
1651 ) IS
1652 l_accting_credit_method_code VARCHAR2(30):= NULL;
1653 l_invcing_credit_method_code VARCHAR2(30):= NULL;
1654 --
1655 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1656 --
1657 BEGIN
1658 IF l_debug_level > 0 THEN
1659 oe_debug_pub.add( 'ENTERING GET_CREDIT_METHOD_CODE ( ) ' , 5 ) ;
1660 END IF;
1661 SELECT NVL(lt.accounting_credit_method_code,ot.accounting_credit_method_code),--Bug 5699774
1662 NVL(lt.invoicing_credit_method_code,ot.invoicing_credit_method_code) --Bug 5699774
1663 INTO l_accting_credit_method_code,
1664 l_invcing_credit_method_code
1665 FROM oe_line_types_v lt,
1666 oe_order_types_v ot,
1667 oe_order_headers_all oh /* MOAC SQL CHANGE */
1668 WHERE lt.line_type_id = p_line_rec.line_type_id
1669 AND ot.order_type_id = oh.order_type_id
1670 AND oh.header_id = p_line_rec.header_id;
1671 x_accting_credit_method_code := l_accting_credit_method_code;
1672 x_invcing_credit_method_code := l_invcing_credit_method_code;
1673 IF l_debug_level > 0 THEN
1674 oe_debug_pub.add( 'ACCOUNTING CREDIT METHOD CODE : '||X_ACCTING_CREDIT_METHOD_CODE , 5 ) ;
1675 oe_debug_pub.add( 'INVOICING CREDIT METHOD CODE : '||X_INVCING_CREDIT_METHOD_CODE , 5 ) ;
1676 oe_debug_pub.add( 'EXITING GET_CREDIT_METHOD_CODE ' , 5 ) ;
1677 END IF;
1678 EXCEPTION
1679 WHEN OTHERS THEN
1680 IF l_debug_level > 0 THEN
1681 oe_debug_pub.add( 'EXCEPTION. EXITING GET_CREDIT_METHOD_CODE ( ) '||SQLERRM , 1 ) ;
1682 END IF;
1683 x_accting_credit_method_code := 'LIFO';
1684 x_invcing_credit_method_code := 'LIFO';
1685 END Get_Credit_Method_Code;
1686
1687 -- PTO RFR handling starts here
1688 FUNCTION Is_PTO
1689 (p_line_rec IN OE_Order_Pub.Line_Rec_Type)
1690 RETURN BOOLEAN
1691 IS
1692 --
1693 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1694 --
1695 BEGIN
1696 IF p_line_rec.model_remnant_flag = 'Y' AND
1697 p_line_rec.item_type_code in ('MODEL', 'CLASS', 'OPTION', 'KIT', 'INCLUDED')
1698 THEN
1699 IF (p_line_rec.item_type_code = 'OPTION' AND
1700 p_line_rec.ato_line_id = p_line_rec.line_id ) OR
1701 p_line_rec.ato_line_id is NULL
1702 THEN
1703 IF l_debug_level > 0 THEN
1704 oe_debug_pub.add( 'THIS IS A REMNANT PTO ' , 5 ) ;
1705 END IF;
1706 RETURN TRUE;
1707 ELSE
1708 IF l_debug_level > 0 THEN
1709 oe_debug_pub.add( 'THIS IS NOT A REMNANT PTO ' , 5 ) ;
1710 END IF;
1711 RETURN FALSE;
1712 END IF;
1713 ELSE
1714 IF l_debug_level > 0 THEN
1715 oe_debug_pub.add( 'THIS IS NOT REMNANT PTO ' , 5 ) ;
1716 END IF;
1717 RETURN FALSE;
1718 END IF;
1719 END Is_PTO;
1720
1721 FUNCTION Is_Class
1722 (p_line_id IN NUMBER)
1723 RETURN BOOLEAN
1724 IS
1725 l_item_type_code VARCHAR2(30);
1726 --
1727 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1728 --
1729 BEGIN
1730 SELECT item_type_code
1731 INTO l_item_type_code
1732 FROM OE_ORDER_LINES
1733 WHERE line_id = p_line_id;
1734 IF l_item_type_code = 'CLASS' THEN
1735 IF l_debug_level > 0 THEN
1736 oe_debug_pub.add( 'ITEM TYPE OF THIS LINE IS CLASS' , 5 ) ;
1737 END IF;
1738 RETURN TRUE;
1739 ELSE
1740 IF l_debug_level > 0 THEN
1741 oe_debug_pub.add( ' ITEM TYPE IS NOT CLASS' , 5 ) ;
1742 END IF;
1743 RETURN FALSE;
1744 END IF;
1745 EXCEPTION
1746 WHEN OTHERS THEN
1747 RETURN FALSE;
1748 END Is_Class;
1749
1750 PROCEDURE RFR_Children
1751 (p_line_id IN NUMBER,
1752 x_return_code OUT NOCOPY VARCHAR2,
1753 x_RFR_children_tbl OUT NOCOPY Id_Tbl_Type)
1754 IS
1755 Cursor rfr_child is
1756 SELECT line_id
1757 FROM oe_order_lines Line,
1758 bom_inventory_components bic
1759 WHERE Line.link_to_line_id = p_line_id
1760 AND Line.open_flag || '' = 'Y'
1761 AND bic.component_sequence_id = Line.component_sequence_id
1762 AND bic.component_item_id = Line.inventory_item_id
1763 AND bic.required_for_revenue = 1
1764 ORDER BY Line.inventory_item_id;
1765 /* the order by clause is important, do not remove!!! */
1766 I NUMBER := 1;
1767 --
1768 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1769 --
1770 BEGIN
1771 Open rfr_child;
1772 LOOP
1773 Fetch rfr_child into x_RFR_children_tbl(I);
1774 Exit WHEN rfr_child%NOTFOUND;
1775 I := I + 1;
1776 END LOOP;
1777 IF x_RFR_children_tbl.count <> 0 THEN
1778 x_return_code := 'Y';
1779 ELSE
1780 x_return_code := 'N';
1781 END IF;
1782 Close rfr_child;
1783 IF l_debug_level > 0 THEN
1784 oe_debug_pub.add( 'RFR CHILDREN , RETURN CODE IS '|| X_RETURN_CODE , 5 ) ;
1785 END IF;
1786 END RFR_Children;
1787
1788 PROCEDURE RFR_Sibling
1789 (p_link_to_line_id IN NUMBER,
1790 p_line_inventory_item_id IN NUMBER,
1791 x_return_code OUT NOCOPY VARCHAR2,
1792 x_RFR_sibling_tbl OUT NOCOPY Id_Tbl_Type)
1793 IS
1794
1795 -- we use inventory_item_id to select
1796 -- siblings, to prevent selecting splitted
1797 -- lines
1798 Cursor rfr_sibling is
1799 SELECT line_id
1800 FROM oe_order_lines Line,
1801 bom_inventory_components bic
1802 WHERE Line.link_to_line_id = p_link_to_line_id
1803 AND Line.inventory_item_id <> p_line_inventory_item_id
1804 AND Line.open_flag || '' = 'Y'
1805 AND bic.component_sequence_id = Line.component_sequence_id
1806 AND bic.component_item_id = Line.inventory_item_id
1807 AND bic.required_for_revenue = 1
1808 order by Line.inventory_item_id;
1809 /* the order by clause is important, do not remove!!! */
1810 I NUMBER := 1;
1811 --
1812 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1813 --
1814 BEGIN
1815 Open rfr_sibling;
1816 LOOP
1817 Fetch rfr_sibling into x_RFR_sibling_tbl(I);
1818 Exit WHEN rfr_sibling%NOTFOUND;
1819 I := I + 1;
1820 END LOOP;
1821
1822 IF x_RFR_sibling_tbl.count <> 0 THEN
1823 x_return_code := 'Y';
1824 ELSE
1825 x_return_code := 'N';
1826 END IF;
1827 Close rfr_sibling;
1828 IF l_debug_level > 0 THEN
1829 oe_debug_pub.add( 'RFR SIBLING , RETURN CODE IS '|| X_RETURN_CODE , 1 ) ;
1830 END IF;
1831 END RFR_Sibling;
1832
1833 FUNCTION Is_RFR
1834 (p_line_id IN NUMBER)
1835 RETURN BOOLEAN
1836 IS
1837 l_rfr VARCHAR2(1) := 'N';
1838 --
1839 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1840 --
1841 BEGIN
1842 SELECT 'Y'
1843 INTO l_rfr
1844 FROM oe_order_lines Line,
1845 bom_inventory_components bic
1846 WHERE Line.line_id = p_line_id
1847 AND Line.open_flag || '' = 'Y'
1848 AND bic.component_sequence_id = Line.component_sequence_id
1849 AND bic.component_item_id = Line.inventory_item_id
1850 AND bic.required_for_revenue = 1;
1851 IF l_rfr = 'Y' THEN
1852 IF l_debug_level > 0 THEN
1853 oe_debug_pub.add( 'RFR RETURNING TRUE' , 5 ) ;
1854 END IF;
1855 RETURN TRUE;
1856 ELSE
1857 IF l_debug_level > 0 THEN
1858 oe_debug_pub.add( 'RFR: RETURNING FALSE' , 5 ) ;
1859 END IF;
1860 RETURN FALSE;
1861 END IF;
1862 EXCEPTION
1863 WHEN OTHERS THEN
1864 RETURN FALSE;
1865 END Is_RFR;
1866
1867 FUNCTION Something_To_Invoice
1868 (p_line_rec IN OE_Order_Pub.Line_Rec_Type)
1869 RETURN BOOLEAN IS
1870 l_rfr_child_flag VARCHAR2(1);
1871 l_rfr_sibling_flag VARCHAR2(1);
1872 l_rfr_children_tbl Id_Tbl_Type;
1873 l_rfr_sibling_tbl Id_Tbl_Type;
1874 l_child_rec OE_Order_Pub.Line_Rec_type;
1875 l_sibling_rec OE_Order_Pub.Line_Rec_type;
1876 l_ratio NUMBER;
1877 max_to_invoice NUMBER;
1878 qty_to_invoice NUMBER;
1879 x_qty_to_invoice NUMBER;
1880 i NUMBER;
1881 l_child_inventory_item_id NUMBER := 0;
1882 l_child_total_ordered_qty NUMBER;
1883 l_child_total_fulfilled_qty NUMBER;
1884 l_sibling_inventory_item_id NUMBER := 0;
1885 l_sibling_total_ordered_qty NUMBER;
1886 l_sibling_total_fulfilled_qty NUMBER;
1887 l_total_ordered_qty NUMBER;
1888 l_total_invoiced_qty NUMBER;
1889 l_overship_invoice_basis VARCHAR2(30);
1890 x_result_code VARCHAR2(240);
1891 --
1892 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1893 --
1894 BEGIN
1895 IF l_debug_level > 0 THEN
1896 oe_debug_pub.add( 'RFR: IN SOMETHING_TO_INVOICE' , 5 ) ;
1897 END IF;
1898 IF (nvl(p_line_rec.ordered_quantity, 0) > nvl(p_line_rec.fulfilled_quantity, 0)) THEN
1899 qty_to_invoice := nvl(p_line_rec.ordered_quantity,0);
1900 x_qty_to_invoice := nvl(p_line_rec.ordered_quantity,0);
1901 ELSE -- initialize for overshipment cases
1902 qty_to_invoice := nvl(p_line_rec.fulfilled_quantity,0);
1903 x_qty_to_invoice := nvl(p_line_rec.fulfilled_quantity, 0);
1904 END IF;
1905 RFR_Children(p_line_rec.line_id, l_rfr_child_flag, l_rfr_children_tbl);
1906 IF (l_rfr_child_flag = 'Y') THEN
1907 FOR i IN 1..l_rfr_children_tbl.count LOOP
1908 OE_Line_Util.Query_Row(p_line_id => l_rfr_children_tbl(i), x_line_rec => l_child_rec);
1909 IF l_child_rec.inventory_item_id <> l_child_inventory_item_id then
1910 l_child_inventory_item_id := l_child_rec.inventory_item_id;
1911 select nvl(sum(ordered_quantity), 0), nvl(sum(fulfilled_quantity), 0)
1912 into l_child_total_ordered_qty, l_child_total_fulfilled_qty
1913 from oe_order_lines
1914 where link_to_line_id = p_line_rec.line_id
1915 and inventory_item_id = l_child_inventory_item_id;
1916 l_ratio := nvl(p_line_rec.ordered_quantity,0) / l_child_total_ordered_qty;
1917 -- ordered_quantity must be according to ratio
1918 Select Floor(nvl(l_child_total_fulfilled_qty, 0) * nvl(p_line_rec.ordered_quantity,0) / l_child_total_ordered_qty)
1919 Into max_to_invoice
1920 From dual;
1921 IF max_to_invoice < qty_to_invoice THEN
1922 IF l_debug_level > 0 THEN
1923 oe_debug_pub.add( 'RFR: MAX_TO_INVOICE < QTY_TO_INVOICE' , 5 ) ;
1924 END IF;
1925 qty_to_invoice := max_to_invoice;
1926 END IF;
1927 END IF; --if this is a new inventory_item_id
1928 END LOOP;
1929 IF nvl(p_line_rec.fulfilled_quantity,0) <= qty_to_invoice THEN
1930 x_qty_to_invoice := nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0);
1931 ELSIF nvl(p_line_rec.fulfilled_quantity, 0) > qty_to_invoice
1932 AND qty_to_invoice < p_line_rec.ordered_quantity THEN
1933 x_qty_to_invoice := qty_to_invoice - nvl(p_line_rec.invoiced_quantity, 0);
1934 ELSE -- full or overshipment
1935 l_overship_invoice_basis := Get_Overship_Invoice_Basis(p_line_rec);
1936 IF l_overship_invoice_basis = 'ORDERED' THEN
1937 x_qty_to_invoice := qty_to_invoice - nvl(p_line_rec.invoiced_quantity, 0);
1938 ELSE
1939 x_qty_to_invoice := nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0);
1940 END IF;
1941 END IF;
1942 END IF;
1943 IF l_debug_level > 0 THEN
1944 oe_debug_pub.add( 'RFR: FINISH CHECK CHILDREN' , 5 ) ;
1945 END IF;
1946 IF IS_CLASS(p_line_rec.link_to_line_id) THEN
1947 RFR_Sibling(p_line_rec.link_to_line_id,
1948 p_line_rec.inventory_item_id,
1949 l_rfr_sibling_flag, l_rfr_sibling_tbl);
1950 IF (l_rfr_sibling_flag = 'Y') THEN
1951 FOR i IN 1..l_rfr_sibling_tbl.count LOOP
1952 OE_Line_Util.Query_Row(p_line_id => l_rfr_sibling_tbl(i), x_line_rec =>l_sibling_rec );
1953 IF l_sibling_rec.inventory_item_id <> l_sibling_inventory_item_id THEN
1954 l_sibling_inventory_item_id := l_sibling_rec.inventory_item_id;
1955 select nvl(sum(ordered_quantity), 0), nvl(sum(fulfilled_quantity), 0)
1956 into l_sibling_total_ordered_qty, l_sibling_total_fulfilled_qty
1957 from oe_order_lines
1958 where link_to_line_id = p_line_rec.link_to_line_id
1959 and inventory_item_id = l_sibling_inventory_item_id;
1960 -- current line may be splitted from the original line
1961 -- just like the sibling line may be splitted
1962 select nvl(sum(ordered_quantity), 0), nvl(sum(invoiced_quantity), 0)
1963 into l_total_ordered_qty, l_total_invoiced_qty
1964 from oe_order_lines
1965 where link_to_line_id = p_line_rec.link_to_line_id
1966 and inventory_item_id = p_line_rec.inventory_item_id;
1967 l_ratio := l_total_ordered_qty / l_sibling_total_ordered_qty;
1968 -- ordered_quantity must be according to ratio
1969 Select Floor(nvl(l_sibling_total_fulfilled_qty, 0) * l_total_ordered_qty / l_sibling_total_ordered_qty)
1970 Into max_to_invoice
1971 From dual;
1972 IF max_to_invoice < qty_to_invoice THEN
1973 qty_to_invoice := max_to_invoice;
1974 END IF;
1975 END IF; -- new inventory_item_id
1976 END LOOP;
1977 IF l_total_invoiced_qty < qty_to_invoice THEN
1978 IF l_debug_level > 0 THEN
1979 oe_debug_pub.add( 'RFR: FULFILL < QTY_TO_INVOICE' , 4 ) ;
1980 END IF;
1981 IF (nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0)) <= (qty_to_invoice - l_total_invoiced_qty)
1982 AND (nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0) < x_qty_to_invoice) THEN
1983 x_qty_to_invoice := nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0);
1984 ELSIF (nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0)) > (qty_to_invoice - l_total_invoiced_qty)
1985 AND (qty_to_invoice - l_total_invoiced_qty < x_qty_to_invoice)
1986 AND qty_to_invoice < l_total_ordered_qty THEN
1987 x_qty_to_invoice := qty_to_invoice - l_total_invoiced_qty;
1988 x_result_code := 'RFR-PENDING';
1989 ELSIF (nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0)) > (qty_to_invoice - l_total_invoiced_qty)
1990 AND (qty_to_invoice - l_total_invoiced_qty < x_qty_to_invoice)
1991 AND qty_to_invoice >= l_total_ordered_qty THEN -- overshipment
1992 l_overship_invoice_basis := Get_Overship_Invoice_Basis(p_line_rec);
1993 IF l_overship_invoice_basis = 'ORDERED' THEN
1994 x_qty_to_invoice := qty_to_invoice - l_total_invoiced_qty;
1995 ELSE
1996 x_qty_to_invoice := nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0);
1997 END IF;
1998 END IF;
1999 END IF;
2000 END IF;
2001 END IF;
2002 IF nvl(p_line_rec.fulfilled_quantity, 0) <= qty_to_invoice THEN
2003 x_qty_to_invoice := nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0);
2004 ELSIF nvl(p_line_rec.fulfilled_quantity, 0) > qty_to_invoice
2005 AND qty_to_invoice < nvl(p_line_rec.ordered_quantity, 0) THEN
2006 x_qty_to_invoice := qty_to_invoice - nvl(p_line_rec.invoiced_quantity, 0);
2007 ELSE -- full or overshipment
2008 l_overship_invoice_basis := Get_Overship_Invoice_Basis(p_line_rec);
2009 IF l_overship_invoice_basis = 'ORDERED' THEN
2010 x_qty_to_invoice := qty_to_invoice - nvl(p_line_rec.invoiced_quantity, 0);
2011 ELSE
2012 x_qty_to_invoice := nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0);
2013 END IF;
2014 END IF;
2015 IF x_qty_to_invoice > 0 THEN
2016 IF l_debug_level > 0 THEN
2017 oe_debug_pub.add( ' SOMETHING_TO_INVOICE: RETURNING TRUE' , 5 ) ;
2018 END IF;
2019 RETURN TRUE;
2020 ELSE
2021 IF l_debug_level > 0 THEN
2022 oe_debug_pub.add( ' SOMETHING_TO_INVOICE: RETURNING FALSE' , 5 ) ;
2023 END IF;
2024 RETURN FALSE;
2025 END IF;
2026 END Something_To_Invoice;
2027
2028 PROCEDURE Get_Regular_Qty_To_Invoice
2029 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
2030 , x_regular_qty_to_invoice OUT NOCOPY NUMBER
2031 )
2032 IS
2033 l_overship_invoice_basis VARCHAR2(30);
2034 l_fulfilled_qty NUMBER;
2035
2036 -- changes for bug 3728587 start
2037 l_unsplit_ordered_qty NUMBER;
2038 l_unsplit_fulfilled_qty NUMBER;
2039 l_unsplit_invoiced_qty NUMBER;
2040 l_temp NUMBER;
2041 l_set_type VARCHAR2(30);
2042 -- changes for bug 3728587 end
2043
2044 --
2045 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2046 --
2047 BEGIN
2048 -- This may subject to change based on fulfillment design
2049 -- This may subject to change for required for revenue cases as there are
2050 -- chances for partial invoicing (should be looking at invoiced_quantity)
2051
2052 -- changes for bug 3728587 start
2053 --check if line is splitted or not
2054 if(p_line_rec.line_set_id is not null) then
2055 select set_type into l_set_type from oe_sets where set_id = p_line_rec.line_set_id;
2056 end if;
2057 oe_debug_pub.add('l_set_type = '||l_set_type, 5 ) ;
2058
2059 if(l_set_type = 'SPLIT') then
2060 -- line is splitted
2061 -- get the total amounts
2062 select sum(nvl(ordered_quantity,0)), sum(nvl(fulfilled_quantity,nvl(shipped_quantity,0))), sum(nvl(invoiced_quantity,0))
2063 into l_unsplit_ordered_qty , l_unsplit_fulfilled_qty, l_unsplit_invoiced_qty
2064 from oe_order_lines_all where header_id = p_line_rec.header_id and line_set_id = p_line_rec.line_set_id;
2065 else
2066 l_unsplit_ordered_qty := nvl(p_line_rec.ordered_quantity,0);
2067 l_unsplit_fulfilled_qty := nvl(p_line_rec.fulfilled_quantity,nvl(p_line_rec.shipped_quantity,0));
2068 l_unsplit_invoiced_qty := nvl(p_line_rec.invoiced_quantity,0);
2069 end if;
2070 -- changes for bug 3728587 end;
2071
2072 IF l_debug_level > 0 THEN
2073 oe_debug_pub.add( 'ENTER TO GET REGULAR QUANTITY TO INVOICE ' , 5 ) ;
2074 oe_debug_pub.add( 'FULFILLED QUANTITY = '|| TO_CHAR ( P_LINE_REC.FULFILLED_QUANTITY ) , 5 ) ;
2075 oe_debug_pub.add( 'SHIPPED QUANTITY = '|| TO_CHAR ( P_LINE_REC.SHIPPED_QUANTITY ) , 5 ) ;
2076 oe_debug_pub.add( 'ORDERED QUANTITY = '|| TO_CHAR ( P_LINE_REC.ORDERED_QUANTITY ) , 5 ) ;
2077 -- changes for bug 3728587 end;
2078 oe_debug_pub.add( 'UNSPLIT ORDERED QUANTITY = '|| TO_CHAR ( l_unsplit_ordered_qty ) , 5 ) ;
2079 oe_debug_pub.add( 'UNSPLIT FULFILLED QUANTITY = '|| TO_CHAR ( l_unsplit_fulfilled_qty ) , 5 ) ;
2080 oe_debug_pub.add( 'UNSPLIT INVOICED QUANTITY = '|| TO_CHAR ( l_unsplit_invoiced_qty ) , 5 ) ;
2081 -- changes for bug 3728587 end;
2082 END IF;
2083
2084 IF p_line_rec.shipped_quantity IS NOT NULL THEN
2085 -- calculate quantity to invoice based on ship tolerances
2086 -- If we ship less than ship tolerance below, then the line will be split.
2087 l_fulfilled_qty := NVL(p_line_rec.fulfilled_quantity, NVL(p_line_rec.shipped_quantity, 0));
2088 IF l_debug_level > 0 THEN
2089 oe_debug_pub.add( 'L_FULFILLED_QUANTITY = '|| L_FULFILLED_QTY , 5 ) ;
2090 END IF;
2091 -- changes for bug 3728587 start
2092 -- IF (l_fulfilled_qty <= nvl(p_line_rec.ordered_quantity, 0)) then
2093 IF (l_unsplit_fulfilled_qty <= nvl(l_unsplit_ordered_qty, 0)) then
2094 -- changes for bug 3728587 end
2095 x_regular_qty_to_invoice := l_fulfilled_qty - NVL(p_line_rec.invoiced_quantity, 0);
2096 IF l_debug_level > 0 THEN
2097 oe_debug_pub.add( 'EXIT CALCUALTE_QTY_TO_INVOICE ( 1 ) : '||X_REGULAR_QTY_TO_INVOICE , 5 ) ;
2098 END IF;
2099 RETURN;
2100 -- changes for bug 3728587 start
2101 -- ELSIF ( l_fulfilled_qty > NVL(p_line_rec.ordered_quantity, 0)
2102 -- AND (l_fulfilled_qty < (NVL(p_line_rec.ordered_quantity, 0) + (NVL(p_line_rec.ordered_quantity, 0) * NVL(p_line_rec.ship_tolerance_above, 0)))) ) THEN
2103 ELSIF ( l_unsplit_fulfilled_qty > NVL(l_unsplit_ordered_qty, 0)
2104 AND (l_unsplit_fulfilled_qty <= (NVL(l_unsplit_ordered_qty, 0) + ((NVL(l_unsplit_ordered_qty, 0) * NVL(p_line_rec.ship_tolerance_above, 0))/100))) ) THEN
2105 -- changes for bug 3728587 end
2106 l_overship_invoice_basis := Get_Overship_Invoice_Basis(p_line_rec);
2107 IF l_overship_invoice_basis = 'ORDERED' THEN
2108 x_regular_qty_to_invoice := NVL(p_line_rec.ordered_quantity, 0) - NVL(p_line_rec.invoiced_quantity, 0);
2109 IF l_debug_level > 0 THEN
2110 oe_debug_pub.add( 'EXIT CALCUALTE_QTY_TO_INVOICE ( 2 ) : '||X_REGULAR_QTY_TO_INVOICE , 1 ) ;
2111 END IF;
2112 RETURN;
2113 ELSE -- 'SHIPPED'
2114 x_regular_qty_to_invoice := l_fulfilled_qty - NVL(p_line_rec.invoiced_quantity, 0);
2115 IF l_debug_level > 0 THEN
2116 oe_debug_pub.add( 'EXIT CALCUALTE_QTY_TO_INVOICE ( 3 ) : '||X_REGULAR_QTY_TO_INVOICE , 5 ) ;
2117 END IF;
2118 RETURN;
2119 END IF;
2120 ELSE -- overshipped (> ordered +tolerance), we only invoice up to the ordered + tolerance. user should manually handle the outstanding qtys
2121 -- changes for bug 3728587 start
2122 -- x_regular_qty_to_invoice := NVL(p_line_rec.ordered_quantity, 0) + (NVL(p_line_rec.ordered_quantity, 0) * NVL(p_line_rec.ship_tolerance_above, 0)) - NVL(p_line_rec.invoiced_quantity, 0);
2123
2124 l_temp := NVL(l_unsplit_ordered_qty, 0) + ((NVL(l_unsplit_ordered_qty, 0) * NVL(p_line_rec.ship_tolerance_above, 0))/100) - NVL(l_unsplit_invoiced_qty, 0);
2125 -- select min of l_temp and l_fulfilled_qty
2126 if(l_temp<l_fulfilled_qty) then
2127 x_regular_qty_to_invoice := l_temp;
2128 else
2129 x_regular_qty_to_invoice := l_fulfilled_qty;
2130 end if;
2131 -- changes for bug 3728587 end
2132 -- Issue Message here. (overshipment above tolerance should be invoiced manually)
2133 IF l_debug_level > 0 THEN
2134 oe_debug_pub.add( 'QUANTITY TO INVOICE AT ( 4 ) = ' || TO_CHAR ( X_REGULAR_QTY_TO_INVOICE ) , 5 ) ;
2135 END IF;
2136 FND_MESSAGE.SET_NAME('ONT','OE_MANUAL_INVOICE_OVERSHIP_QTY');
2137 OE_MSG_PUB.ADD;
2138 IF l_debug_level > 0 THEN
2139 oe_debug_pub.add( 'EXIT CALCUALTE_QTY_TO_INVOICE ( 4 ) : '||X_REGULAR_QTY_TO_INVOICE , 5 ) ;
2140 END IF;
2141 RETURN;
2142 END IF;
2143 ELSE -- no ship cycle
2144 l_fulfilled_qty := NVL(p_line_rec.fulfilled_quantity, NVL(p_line_rec.shipped_quantity, NVL(p_line_rec.ordered_quantity, 0)));
2145 x_regular_qty_to_invoice := l_fulfilled_qty - NVL(p_line_rec.invoiced_quantity, 0);
2146 IF l_debug_level > 0 THEN
2147 oe_debug_pub.add( 'EXIT CALCUALTE_QTY_TO_INVOICE ( 5 ) : '||X_REGULAR_QTY_TO_INVOICE , 5 ) ;
2148 END IF;
2149 RETURN;
2150 END IF;
2151 END Get_Regular_Qty_To_Invoice;
2152 -- new OUT parameter x_return_code
2153 PROCEDURE Get_Qty_To_Invoice
2154 (p_line_rec IN OE_Order_Pub.Line_Rec_Type
2155 , x_qty_to_invoice OUT NOCOPY NUMBER
2156 , x_result_code OUT NOCOPY VARCHAR2
2157 )
2158 IS
2159 l_rfr_child_flag VARCHAR2(1);
2160 l_rfr_sibling_flag VARCHAR2(1);
2161 l_rfr_children_tbl Id_Tbl_Type;
2162 l_rfr_sibling_tbl Id_Tbl_Type;
2163 l_line_rec OE_Order_Pub.Line_Rec_Type;
2164 l_child_rec OE_Order_Pub.Line_Rec_Type;
2165 l_sibling_rec OE_Order_Pub.Line_Rec_Type;
2166 l_ratio NUMBER;
2167 max_to_invoice NUMBER := 0;
2168 qty_to_invoice NUMBER := 0;
2169 l_child_inventory_item_id NUMBER := 0;
2170 l_child_total_ordered_qty NUMBER := 0;
2171 l_child_total_fulfilled_qty NUMBER := 0;
2172 l_sibling_inventory_item_id NUMBER := 0;
2173 l_sibling_total_ordered_qty NUMBER := 0;
2174 l_sibling_total_fulfilled_qty NUMBER := 0;
2175 l_total_ordered_qty NUMBER := 0;
2176 l_total_invoiced_qty NUMBER := 0;
2177 l_total_fulfilled_qty NUMBER := 0;
2178 l_overship_invoice_basis VARCHAR2(30);
2179 i NUMBER;
2180 l_fulfilled_qty NUMBER;
2181
2182 --
2183 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2184 --
2185 BEGIN
2186 IF l_debug_level > 0 THEN
2187 oe_debug_pub.add( 'ENTER TO GET QUANTITY TO INVOICE ( ) ' , 5 ) ;
2188 END IF;
2189 x_result_code := 'NORMAL';
2190 l_fulfilled_qty := NVL(p_line_rec.fulfilled_quantity, NVL(p_line_rec.shipped_quantity, NVL(p_line_rec.ordered_quantity, 0)));
2191 IF Is_PTO(p_line_rec) THEN
2192 IF (nvl(p_line_Rec.ordered_quantity, 0) > l_fulfilled_qty) THEN
2193 qty_to_invoice := nvl(p_line_rec.ordered_quantity, 0);
2194 x_qty_to_invoice := nvl(p_line_rec.ordered_quantity, 0);
2195 ELSE -- initialize for overshipment cases
2196 qty_to_invoice := l_fulfilled_qty;
2197 x_qty_to_invoice := l_fulfilled_qty;
2198 END IF;
2199 RFR_Children(p_line_rec.line_id, l_rfr_child_flag, l_rfr_children_tbl);
2200 IF l_debug_level > 0 THEN
2201 oe_debug_pub.add( 'RFR: QTY_TO_INVOICE: '||QTY_TO_INVOICE ||' L_RFR_CHILD_FLAG: '|| L_RFR_CHILD_FLAG , 5 ) ;
2202 END IF;
2203 IF (l_rfr_child_flag = 'Y') THEN
2204 FOR i IN 1..l_rfr_children_tbl.count LOOP
2205 -- l_rfr_children_tbl is ordered by inventory_item_id
2206 -- so same inventory_item_id will come next to each other
2207 OE_Line_Util.Query_Row(p_line_id => l_rfr_children_tbl(i), x_line_rec => l_child_rec);
2208 IF l_debug_level > 0 THEN
2209 oe_debug_pub.add( 'RFR: L_CHILD_REC.LINE_ID: '||L_CHILD_REC.LINE_ID ||' L_CHILD_REC.INVENTORY_ITEM_ID: '|| L_CHILD_REC.INVENTORY_ITEM_ID , 5 ) ;
2210 END IF;
2211 IF l_child_rec.inventory_item_id <> l_child_inventory_item_id then
2212 l_child_inventory_item_id := l_child_rec.inventory_item_id;
2213 select nvl(sum(ordered_quantity), 0), nvl(sum(fulfilled_quantity), 0)
2214 into l_child_total_ordered_qty, l_child_total_fulfilled_qty
2215 from oe_order_lines
2216 where link_to_line_id = p_line_rec.line_id
2217 and inventory_item_id = l_child_inventory_item_id;
2218 IF l_debug_level > 0 THEN
2219 oe_debug_pub.add( 'RFR: L_CHILD_TOTAL_ORDERED_QTY: '||L_CHILD_TOTAL_ORDERED_QTY||' L_CHILD_TOTAL_FULFILLED_QTY:'||L_CHILD_TOTAL_FULFILLED_QTY , 5 ) ;
2220 END IF;
2221 l_ratio := nvl(p_line_rec.ordered_quantity, 0) / l_child_total_ordered_qty;
2222 IF l_debug_level > 0 THEN
2223 oe_debug_pub.add( 'RFR:L_RATIO :'||L_RATIO , 5 ) ;
2224 END IF;
2225 -- ordered_quantity must be according to ratio
2226 Select Floor(nvl(l_child_total_fulfilled_qty, 0) * nvl(p_line_rec.ordered_quantity, 0) / l_child_total_ordered_qty)
2227 Into max_to_invoice
2228 From dual;
2229 IF l_debug_level > 0 THEN
2230 oe_debug_pub.add( 'RFR:MAX_TO_INVOICE: '||MAX_TO_INVOICE , 5 ) ;
2231 END IF;
2232 IF max_to_invoice < qty_to_invoice THEN
2233 IF l_debug_level > 0 THEN
2234 oe_debug_pub.add( 'RFR: MAX_TO_INVOICE < QTY_TO_INVOICE' , 5 ) ;
2235 END IF;
2236 qty_to_invoice := max_to_invoice;
2237 END IF;
2238 END IF; -- if this is a new inventory_item_id
2239 END LOOP;
2240 IF l_debug_level > 0 THEN
2241 oe_debug_pub.add( 'RFR:FULFILLED_QUANTITY: '||P_LINE_REC.FULFILLED_QUANTITY||' QTY_TO_INVOICE:'||QTY_TO_INVOICE , 4 ) ;
2242 END IF;
2243 IF nvl(p_line_rec.fulfilled_quantity, 0) <= qty_to_invoice THEN
2244 x_qty_to_invoice := nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0);
2245 IF l_debug_level > 0 THEN
2246 oe_debug_pub.add( ' ( 1 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2247 END IF;
2248 IF l_debug_level > 0 THEN
2249 oe_debug_pub.add( ' NOT SETTING TO RFR-PENDING' , 5 ) ;
2250 END IF;
2251 ELSIF nvl(p_line_rec.fulfilled_quantity, 0) > qty_to_invoice
2252 AND qty_to_invoice < nvl(p_line_rec.ordered_quantity, 0) THEN
2253 x_qty_to_invoice := qty_to_invoice - nvl(p_line_rec.invoiced_quantity, 0);
2254 IF l_debug_level > 0 THEN
2255 oe_debug_pub.add( ' ( 2 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2256 oe_debug_pub.add( 'SET X_RESULT_CODE -> RFR-PENDING' , 5 ) ;
2257 END IF;
2258 x_result_code := 'RFR-PENDING';
2259 ELSE -- full or overshipment
2260 l_overship_invoice_basis := Get_Overship_Invoice_Basis(p_line_rec);
2261 IF l_overship_invoice_basis = 'ORDERED' THEN
2262 x_qty_to_invoice := qty_to_invoice - nvl(p_line_rec.invoiced_quantity, 0);
2263 IF l_debug_level > 0 THEN
2264 oe_debug_pub.add( ' ( 3 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2265 END IF;
2266 ELSE
2267 x_qty_to_invoice := nvl(p_line_rec.fulfilled_quantity, 0) - nvl(p_line_rec.invoiced_quantity, 0);
2268 IF l_debug_level > 0 THEN
2269 oe_debug_pub.add( ' ( 4 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2270 END IF;
2271 END IF;
2272 END IF;
2273 ELSE -- no rfr children
2274 Get_Regular_Qty_To_Invoice(p_line_rec, x_qty_to_invoice);
2275 IF l_debug_level > 0 THEN
2276 oe_debug_pub.add( ' ( 5 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2277 END IF;
2278 END IF;
2279 IF l_debug_level > 0 THEN
2280 oe_debug_pub.add( 'RFR: FINISH CHECK CHILDREN' , 5 ) ;
2281 END IF;
2282
2283 -- fix for bug 2516823
2284 IF IS_CLASS(p_line_rec.link_to_line_id) THEN
2285 RFR_Sibling(p_line_rec.link_to_line_id
2286 ,p_line_rec.inventory_item_id
2287 ,l_rfr_sibling_flag
2288 ,l_rfr_sibling_tbl);
2289 IF l_rfr_sibling_flag = 'Y' THEN
2290 FOR i IN 1..l_rfr_sibling_tbl.count LOOP
2291 OE_Line_Util.Query_Row(p_line_id => l_rfr_sibling_tbl(i)
2292 ,x_line_rec => l_sibling_rec);
2293 IF l_debug_level > 0 THEN
2294 oe_debug_pub.add( 'RFR:L_SIBLING_REC.LINE_ID: ' ||L_SIBLING_REC.LINE_ID ||' L_SIBLING_REC.INVENTORY_ITEM_ID:' ||L_SIBLING_REC.INVENTORY_ITEM_ID , 3 ) ;
2295 END IF;
2296 IF l_sibling_rec.inventory_item_id <> l_sibling_inventory_item_id THEN
2297 l_sibling_inventory_item_id := l_sibling_rec.inventory_item_id;
2298 SELECT NVL(SUM(ordered_quantity),0)
2299 ,NVL(SUM(fulfilled_quantity),0)
2300 INTO l_sibling_total_ordered_qty
2301 ,l_sibling_total_fulfilled_qty
2302 FROM oe_order_lines
2303 WHERE link_to_line_id = p_line_rec.link_to_line_id
2304 AND inventory_item_id = l_sibling_inventory_item_id;
2305
2306 -- current line may be splitted from the original line
2307 -- just like the sibling line may be splitted
2308
2309 SELECT NVL(SUM(ordered_quantity),0)
2310 ,NVL(SUM(invoiced_quantity),0)
2311 ,NVL(SUM(fulfilled_quantity),0)
2312 INTO l_total_ordered_qty
2313 ,l_total_invoiced_qty
2314 ,l_total_fulfilled_qty
2315 FROM oe_order_lines
2316 WHERE link_to_line_id = p_line_rec.link_to_line_id
2317 AND inventory_item_id = p_line_rec.inventory_item_id;
2318
2319 l_ratio := l_total_ordered_qty/l_sibling_total_ordered_qty;
2320 -- ordered_quantity must be according to ratio
2321 max_to_invoice := FLOOR(nvl(l_sibling_total_fulfilled_qty,0) *l_total_ordered_qty / l_sibling_total_ordered_qty);
2322 IF l_debug_level > 0 THEN
2323 oe_debug_pub.add( 'MAX_TO_INVOICE:'||MAX_TO_INVOICE||':QTY_TO_INVOICE:'||QTY_TO_INVOICE ) ;
2324 END IF;
2325 IF max_to_invoice < qty_to_invoice THEN
2326 qty_to_invoice := max_to_invoice;
2327 END IF;
2328 END IF; -- new inventory_item_id
2329 END LOOP;
2330
2331 IF l_debug_level > 0 THEN
2332 oe_debug_pub.add( 'L_TOTAL_INVOICED_QTY:'||L_TOTAL_INVOICED_QTY , 5 ) ;
2333 oe_debug_pub.add( 'L_TOTAL_FULFILLED_QTY:'||L_TOTAL_FULFILLED_QTY , 5 ) ;
2334 oe_debug_pub.add( 'QTY_TO_INVOICE:'||QTY_TO_INVOICE , 5 ) ;
2335 END IF;
2336
2337 IF l_total_fulfilled_qty <= qty_to_invoice THEN
2338 x_qty_to_invoice := l_total_fulfilled_qty
2339 - l_total_invoiced_qty;
2340 IF l_debug_level > 0 THEN
2341 oe_debug_pub.add( ' ( 5 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2342 END IF;
2343 ELSIF l_total_fulfilled_qty - l_total_invoiced_qty
2344 > qty_to_invoice
2345 AND qty_to_invoice <l_total_ordered_qty THEN
2346 x_qty_to_invoice
2347 := qty_to_invoice - l_total_invoiced_qty;
2348 IF l_debug_level > 0 THEN
2349 oe_debug_pub.add( ' ( 6 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2350 END IF;
2351 IF l_debug_level > 0 THEN
2352 oe_debug_pub.add( 'SET X_RESULT_CODE -> RFR-PENDING' , 5 ) ;
2353 END IF;
2354 x_result_code := 'RFR-PENDING';
2355 ELSE
2356 l_overship_invoice_basis := Get_Overship_Invoice_Basis(p_line_rec);
2357 IF l_overship_invoice_basis = 'ORDERED' THEN
2358 x_qty_to_invoice := qty_to_invoice - l_total_invoiced_qty;
2359 IF l_debug_level > 0 THEN
2360 oe_debug_pub.add( ' ( 7 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2361 END IF;
2362 ELSE
2363 x_qty_to_invoice := l_total_fulfilled_qty - l_total_invoiced_qty;
2364 IF l_debug_level > 0 THEN
2365 oe_debug_pub.add( ' ( 8 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2366 END IF;
2367 END IF;
2368 END IF;
2369 -- ELSE -- no siblings
2370 -- Get_Regular_Qty_To_Invoice(p_line_rec, x_qty_to_invoice);
2371 END IF;
2372 END IF;
2373 ELSE -- not pto
2374 Get_Regular_Qty_To_Invoice(p_line_rec, x_qty_to_invoice);
2375 IF l_debug_level > 0 THEN
2376 oe_debug_pub.add( ' ( 9 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2377 END IF;
2378 END IF;
2379 IF l_debug_level > 0 THEN
2380 oe_debug_pub.add( ' ( 10 ) QUANTITY TO INVOICE : '||X_QTY_TO_INVOICE , 5 ) ;
2381 END IF;
2382 END Get_Qty_To_Invoice;
2383
2384 FUNCTION Validate_Required_Attributes
2385 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
2386 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
2387 )
2388 RETURN BOOLEAN
2389 IS
2390 --
2391 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2392 --
2393 BEGIN
2394 IF l_debug_level > 0 THEN
2395 oe_debug_pub.add( 'VALIDATING REQUIRED ATTRIBUTES' , 5 ) ;
2396 END IF;
2397 -- Check For all Required Attributes
2398 IF p_interface_line_rec.Batch_Source_Name IS NULL THEN
2399 FND_MESSAGE.SET_NAME('ONT','OE_INVOICING_ATTR_REQUIRED');
2400 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Batch_Source_Name');
2401 OE_MSG_PUB.ADD;
2402 IF l_debug_level > 0 THEN
2403 oe_debug_pub.add( 'REQUIRED ATTRIBUTE BATCH SOURCE NAME IS MISSING' , 1 ) ;
2404 END IF;
2405 RETURN FALSE;
2406 ELSIF p_interface_line_rec.Set_Of_Books_Id IS NULL THEN
2407 FND_MESSAGE.SET_NAME('ONT','OE_INVOICING_ATTR_REQUIRED');
2408 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Set_Of_Books_Id');
2409 OE_MSG_PUB.ADD;
2410 IF l_debug_level > 0 THEN
2411 oe_debug_pub.add( 'REQUIRED ATTRIBUTE SET OF BOOKS ID IS MISSING ' , 1 ) ;
2412 END IF;
2413 RETURN FALSE;
2414 ELSIF p_interface_line_rec.Line_Type IS NULL THEN
2415 FND_MESSAGE.SET_NAME('ONT','OE_INVOICING_ATTR_REQUIRED');
2416 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Line_Type');
2417 OE_MSG_PUB.ADD;
2418 IF l_debug_level > 0 THEN
2419 oe_debug_pub.add( 'REQUIRED ATTRIBUTE LINE TYPE IS MISSING' , 1 ) ;
2420 END IF;
2421 RETURN FALSE;
2422 ELSIF p_interface_line_rec.Description IS NULL THEN
2423 FND_MESSAGE.SET_NAME('ONT','OE_INVOICING_ATTR_REQUIRED');
2424 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Description');
2425 OE_MSG_PUB.ADD;
2426 IF l_debug_level > 0 THEN
2427 oe_debug_pub.add( 'REQUIRED ATTRIBUTE DESCRIPTION IS MISSING' , 1 ) ;
2428 END IF;
2429 RETURN FALSE;
2430 ELSIF p_interface_line_rec.Currency_Code IS NULL THEN
2431 FND_MESSAGE.SET_NAME('ONT','OE_INVOICING_ATTR_REQUIRED');
2432 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Currency_Code');
2433 OE_MSG_PUB.ADD;
2434 IF l_debug_level > 0 THEN
2435 oe_debug_pub.add( 'REQUIRED ATTRIBUTE CURRENCY CODE IS MISSING' , 1 ) ;
2436 END IF;
2437 RETURN FALSE;
2438 ELSIF p_interface_line_rec.Conversion_Type IS NULL THEN
2439 FND_MESSAGE.SET_NAME('ONT','OE_INVOICING_ATTR_REQUIRED');
2440 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Conversion_Type');
2441 OE_MSG_PUB.ADD;
2442 IF l_debug_level > 0 THEN
2443 oe_debug_pub.add( 'REQUIRED ATTRIBUTE CONVERSION TYPE IS MISSING' , 1 ) ;
2444 END IF;
2445 RETURN FALSE;
2446 ELSIF p_line_rec.commitment_id IS NULL AND
2447 (p_interface_line_rec.Cust_Trx_Type_Id IS NULL OR
2448 p_interface_line_rec.Cust_Trx_Type_Id = 0) THEN
2449 FND_MESSAGE.SET_NAME('ONT','OE_INVOICING_ATTR_REQUIRED');
2450 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Cust_Trx_Type_Id');
2451 OE_MSG_PUB.ADD;
2452 IF l_debug_level > 0 THEN
2453 oe_debug_pub.add( 'REQUIRED ATTRIBUTE CUSTOMER TRX TYPE ID IS MISSING' , 1 ) ;
2454 END IF;
2455 RETURN FALSE;
2456 ELSIF p_interface_line_rec.ACCOUNTING_RULE_DURATION = -1 THEN
2457 -- Appropriate message was already posted for bug#4190312
2458 IF l_debug_level > 0 THEN
2459 oe_debug_pub.add( 'REQUIRED ATTRIBUTE ACCOUNTING RULE DURATION IS MISSING' , 1 ) ;
2460 END IF;
2461 RETURN FALSE;
2462 ELSIF p_interface_line_rec.customer_bank_account_id = -1 THEN
2463 FND_MESSAGE.SET_NAME('ONT','OE_VPM_CC_ACCT_NOT_SET');
2464 OE_MSG_PUB.ADD;
2465 IF l_debug_level > 0 THEN
2466 oe_debug_pub.add( 'REQUIRED ATTRIBUTE CUSTOMER CREDIT CARD BANK ACCOUNT IS MISSING' , 1 ) ;
2467 END IF;
2468 RETURN FALSE;
2469 ELSIF p_interface_line_rec.customer_bank_account_id > 0
2470 AND p_interface_line_rec.receipt_method_id IS NULL THEN
2471 FND_MESSAGE.SET_NAME('ONT','OE_VPM_NO_PAY_METHOD');
2472 OE_MSG_PUB.ADD;
2473 IF l_debug_level > 0 THEN
2474 oe_debug_pub.add( 'REQUIRED ATTRIBUTE PAYMENT METHOD IS MISSING' , 1 ) ;
2475 END IF;
2476 RETURN FALSE;
2477
2478 /* ELSIF -- will be updated with list of mandatory and conditionally required attributes
2479 Mandatory Columns:
2480 Batch_Source_Name
2481 Set_Of_Books_Id
2482 Line_Type
2483 Description
2484 Currency_Code
2485 Conversion_Type
2486
2487 Optional columns:
2488 Term_Id is required for non credit transactions
2489 IF any thing is missing THEN
2490 -- Issue error message here
2491 RETURN FALSE;*/
2492 ELSE
2493 IF l_debug_level > 0 THEN
2494 oe_debug_pub.add( 'EXIT VALIDATE REQUIRED ATTRIBUTES ( ) ' , 1 ) ;
2495 END IF;
2496 RETURN TRUE;
2497 END IF;
2498 END Validate_Required_Attributes;
2499
2500 PROCEDURE Header_Invoicing_Validation
2501 (p_header_id IN NUMBER)
2502 IS
2503 --
2504 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2505 --
2506 BEGIN
2507 /*
2508 -- Following may be a result of wrong workflow setup
2509 if atleast one line is not ready for Invoicing then
2510 issue error message
2511 elsif atleast one line is already invoiced then
2512 issue error message
2513 Add any other validation here
2514 */
2515 IF l_debug_level > 0 THEN
2516 oe_debug_pub.add( 'ENTERING HEADER_INVOICING_VALIDATION' ) ;
2517 END IF;
2518 NULL;
2519 END Header_Invoicing_Validation;
2520
2521 PROCEDURE Query_Line_Scredits
2522 ( p_line_id IN NUMBER
2523 , p_quota_flag IN VARCHAR2
2524 , x_line_scredit_tbl IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Tbl_Type
2525 , x_total_percent OUT NOCOPY NUMBER --FP bug 3872166
2526 ) IS
2527 l_Line_Scredit_rec OE_Order_PUB.Line_Scredit_Rec_Type;
2528 CURSOR l_Line_Scredit_csr IS
2529 SELECT SC.ATTRIBUTE1
2530 , SC.ATTRIBUTE10
2531 , SC.ATTRIBUTE11
2532 , SC.ATTRIBUTE12
2533 , SC.ATTRIBUTE13
2534 , SC.ATTRIBUTE14
2535 , SC.ATTRIBUTE15
2536 , SC.ATTRIBUTE2
2537 , SC.ATTRIBUTE3
2538 , SC.ATTRIBUTE4
2539 , SC.ATTRIBUTE5
2540 , SC.ATTRIBUTE6
2541 , SC.ATTRIBUTE7
2542 , SC.ATTRIBUTE8
2543 , SC.ATTRIBUTE9
2544 , SC.CONTEXT
2545 , SC.CREATED_BY
2546 , SC.CREATION_DATE
2547 , SC.DW_UPDATE_ADVICE_FLAG
2548 , SC.HEADER_ID
2549 , SC.LAST_UPDATED_BY
2550 , SC.LAST_UPDATE_DATE
2551 , SC.LAST_UPDATE_LOGIN
2552 , SC.LINE_ID
2553 , SC.PERCENT
2554 , SC.SALESREP_ID
2555 , SC.sales_credit_type_id
2556 , SC.SALES_CREDIT_ID
2557 , SC.WH_UPDATE_DATE
2558 --SG{
2559 , SC.SALES_GROUP_ID
2560 --SG}
2561 , SC.LOCK_CONTROL
2562 FROM OE_SALES_CREDITS SC
2563 , OE_SALES_CREDIT_TYPES SCT
2564 WHERE SC.sales_credit_type_id = sct.sales_credit_type_id
2565 AND SCT.quota_flag = p_quota_flag
2566 AND SC.line_id = p_line_id;
2567
2568 --
2569 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2570 --
2571 BEGIN
2572 IF l_debug_level > 0 THEN
2573 oe_debug_pub.add( 'ENTERING QUERY_LINE_SCREDITS' , 5 ) ;
2574 END IF;
2575 -- Initialize table so that it clears previous records
2576 x_line_scredit_tbl.DELETE;
2577
2578 --FP bug 3872166
2579 x_total_percent := 0;
2580
2581 -- Loop over fetched records
2582 FOR l_implicit_rec IN l_Line_Scredit_csr LOOP
2583 l_Line_Scredit_rec.attribute1 := l_implicit_rec.ATTRIBUTE1;
2584 l_Line_Scredit_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
2585 l_Line_Scredit_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
2586 l_Line_Scredit_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
2587 l_Line_Scredit_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
2588 l_Line_Scredit_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
2589 l_Line_Scredit_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
2590 l_Line_Scredit_rec.attribute2 := l_implicit_rec.ATTRIBUTE2;
2591 l_Line_Scredit_rec.attribute3 := l_implicit_rec.ATTRIBUTE3;
2592 l_Line_Scredit_rec.attribute4 := l_implicit_rec.ATTRIBUTE4;
2593 l_Line_Scredit_rec.attribute5 := l_implicit_rec.ATTRIBUTE5;
2594 l_Line_Scredit_rec.attribute6 := l_implicit_rec.ATTRIBUTE6;
2595 l_Line_Scredit_rec.attribute7 := l_implicit_rec.ATTRIBUTE7;
2596 l_Line_Scredit_rec.attribute8 := l_implicit_rec.ATTRIBUTE8;
2597 l_Line_Scredit_rec.attribute9 := l_implicit_rec.ATTRIBUTE9;
2598 l_Line_Scredit_rec.context := l_implicit_rec.CONTEXT;
2599 l_Line_Scredit_rec.created_by := l_implicit_rec.CREATED_BY;
2600 l_Line_Scredit_rec.creation_date := l_implicit_rec.CREATION_DATE;
2601 l_Line_Scredit_rec.dw_update_advice_flag := l_implicit_rec.DW_UPDATE_ADVICE_FLAG;
2602 l_Line_Scredit_rec.header_id := l_implicit_rec.HEADER_ID;
2603 l_Line_Scredit_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
2604 l_Line_Scredit_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
2605 l_Line_Scredit_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
2606 l_Line_Scredit_rec.line_id := l_implicit_rec.LINE_ID;
2607 l_Line_Scredit_rec.percent := l_implicit_rec.PERCENT;
2608 l_Line_Scredit_rec.salesrep_id := l_implicit_rec.SALESREP_ID;
2609 l_Line_Scredit_rec.sales_credit_type_id := l_implicit_rec.sales_credit_type_id;
2610 l_Line_Scredit_rec.sales_credit_id := l_implicit_rec.SALES_CREDIT_ID;
2611 l_Line_Scredit_rec.wh_update_date := l_implicit_rec.WH_UPDATE_DATE;
2612 --SG{
2613 l_Line_Scredit_rec.sales_group_id:=l_implicit_rec.sales_group_id;
2614 --SG}
2615 l_Line_Scredit_rec.lock_control := l_implicit_rec.LOCK_CONTROL;
2616 x_Line_Scredit_tbl(x_Line_Scredit_tbl.COUNT + 1) := l_Line_Scredit_rec;
2617 --FP bug 3872166
2618 x_total_percent := x_total_percent + l_implicit_rec.PERCENT;
2619 END LOOP;
2620 IF l_debug_level > 0 THEN
2621 oe_debug_pub.add( 'EXITING QUERY_LINE_SCREDITS' , 5 ) ;
2622 END IF;
2623 EXCEPTION
2624 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2625 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2626 WHEN OTHERS THEN
2627 IF l_debug_level > 0 THEN
2628 oe_debug_pub.add( 'EXCEPTION , QUERY LINE SALES CREDITS '||SQLERRM , 1 ) ;
2629 END IF;
2630 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2631 THEN
2632 oe_msg_pub.Add_Exc_Msg
2633 ( G_PKG_NAME
2634 , 'Query_Line_Scredits'
2635 );
2636 END IF;
2637 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2638 END Query_Line_Scredits;
2639
2640 PROCEDURE Query_Header_Scredits
2641 ( p_header_id IN NUMBER
2642 , p_quota_flag IN VARCHAR2
2643 , x_header_scredit_tbl IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Tbl_Type
2644 ) IS
2645 l_Header_Scredit_rec OE_Order_PUB.Header_Scredit_Rec_Type;
2646 CURSOR l_Header_Scredit_csr IS
2647 SELECT SC.ATTRIBUTE1
2648 , SC.ATTRIBUTE10
2649 , SC.ATTRIBUTE11
2650 , SC.ATTRIBUTE12
2651 , SC.ATTRIBUTE13
2652 , SC.ATTRIBUTE14
2653 , SC.ATTRIBUTE15
2654 , SC.ATTRIBUTE2
2655 , SC.ATTRIBUTE3
2656 , SC.ATTRIBUTE4
2657 , SC.ATTRIBUTE5
2658 , SC.ATTRIBUTE6
2659 , SC.ATTRIBUTE7
2660 , SC.ATTRIBUTE8
2661 , SC.ATTRIBUTE9
2662 , SC.CONTEXT
2663 , SC.CREATED_BY
2664 , SC.CREATION_DATE
2665 , SC.DW_UPDATE_ADVICE_FLAG
2666 , SC.HEADER_ID
2667 , SC.LAST_UPDATED_BY
2668 , SC.LAST_UPDATE_DATE
2669 , SC.LAST_UPDATE_LOGIN
2670 , SC.LINE_ID
2671 , SC.PERCENT
2672 , SC.SALESREP_ID
2673 , SC.sales_credit_type_id
2674 , SC.SALES_CREDIT_ID
2675 , SC.WH_UPDATE_DATE
2676 --SG
2677 , SC.Sales_Group_Id
2678 --SG
2679 , SC.LOCK_CONTROL
2680 FROM OE_SALES_CREDITS SC
2681 , OE_SALES_CREDIT_TYPES SCT
2682 WHERE SC.sales_credit_type_id = sct.sales_credit_type_id
2683 AND SCT.quota_flag = p_quota_flag
2684 AND SC.header_id = p_header_id
2685 AND SC.line_id IS NULL;
2686 --
2687 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2688 --
2689 BEGIN
2690 IF l_debug_level > 0 THEN
2691 oe_debug_pub.add( 'ENTERING QUERY_HEADER_SCREDITS' , 5 ) ;
2692 oe_debug_pub.add( 'P_QUOTA_FLAG: '||P_QUOTA_FLAG , 5 ) ;
2693 END IF;
2694 -- Initialize table so that it clears previous records
2695 x_header_scredit_tbl.DELETE;
2696 -- Loop over fetched records
2697 FOR l_implicit_rec IN l_Header_Scredit_csr LOOP
2698 l_Header_Scredit_rec.attribute1 := l_implicit_rec.ATTRIBUTE1;
2699 l_Header_Scredit_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
2700 l_Header_Scredit_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
2701 l_Header_Scredit_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
2702 l_Header_Scredit_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
2703 l_Header_Scredit_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
2704 l_Header_Scredit_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
2705 l_Header_Scredit_rec.attribute2 := l_implicit_rec.ATTRIBUTE2;
2706 l_Header_Scredit_rec.attribute3 := l_implicit_rec.ATTRIBUTE3;
2707 l_Header_Scredit_rec.attribute4 := l_implicit_rec.ATTRIBUTE4;
2708 l_Header_Scredit_rec.attribute5 := l_implicit_rec.ATTRIBUTE5;
2709 l_Header_Scredit_rec.attribute6 := l_implicit_rec.ATTRIBUTE6;
2710 l_Header_Scredit_rec.attribute7 := l_implicit_rec.ATTRIBUTE7;
2711 l_Header_Scredit_rec.attribute8 := l_implicit_rec.ATTRIBUTE8;
2712 l_Header_Scredit_rec.attribute9 := l_implicit_rec.ATTRIBUTE9;
2713 l_Header_Scredit_rec.context := l_implicit_rec.CONTEXT;
2714 l_Header_Scredit_rec.created_by := l_implicit_rec.CREATED_BY;
2715 l_Header_Scredit_rec.creation_date := l_implicit_rec.CREATION_DATE;
2716 l_Header_Scredit_rec.dw_update_advice_flag := l_implicit_rec.DW_UPDATE_ADVICE_FLAG;
2717 l_Header_Scredit_rec.header_id := l_implicit_rec.HEADER_ID;
2718 l_Header_Scredit_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
2719 l_Header_Scredit_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
2720 l_Header_Scredit_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
2721 l_Header_Scredit_rec.line_id := l_implicit_rec.LINE_ID;
2722 l_Header_Scredit_rec.percent := l_implicit_rec.PERCENT;
2723 l_Header_Scredit_rec.salesrep_id := l_implicit_rec.SALESREP_ID;
2724 l_Header_Scredit_rec.sales_credit_type_id := l_implicit_rec.sales_credit_type_id;
2725 l_Header_Scredit_rec.sales_credit_id := l_implicit_rec.SALES_CREDIT_ID;
2726 l_Header_Scredit_rec.wh_update_date := l_implicit_rec.WH_UPDATE_DATE;
2727 --sg
2728 l_Header_Scredit_rec.sales_group_id := l_implicit_rec.sales_group_id;
2729 --sg
2730 l_Header_Scredit_rec.lock_control := l_implicit_rec.LOCK_CONTROL;
2731 x_Header_Scredit_tbl(x_Header_Scredit_tbl.COUNT + 1) := l_Header_Scredit_rec;
2732 IF l_debug_level > 0 THEN
2733 oe_debug_pub.add( 'SALESREP_ID: '||L_HEADER_SCREDIT_REC.SALESREP_ID ) ;
2734 oe_debug_pub.add( 'SALES_CREDIT_TYPE_ID: '||L_HEADER_SCREDIT_REC.SALES_CREDIT_TYPE_ID ) ;
2735 oe_debug_pub.add( 'PERCENT: '||L_HEADER_SCREDIT_REC.PERCENT ) ;
2736 END IF;
2737 END LOOP;
2738 IF l_debug_level > 0 THEN
2739 oe_debug_pub.add( 'EXITING QUERY_HEADER_SCREDITS ( ) ' , 5 ) ;
2740 END IF;
2741 EXCEPTION
2742 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2743 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2744 WHEN OTHERS THEN
2745 IF l_debug_level > 0 THEN
2746 oe_debug_pub.add( 'EXCEPTION , QUERY HEADER SALES CREDITS ( ) ' , 5 ) ;
2747 END IF;
2748 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2749 THEN
2750 oe_msg_pub.Add_Exc_Msg
2751 ( G_PKG_NAME
2752 , 'Query_Header_Scredits'
2753 );
2754 END IF;
2755 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2756 END Query_Header_Scredits;
2757
2758 PROCEDURE Insert_Line
2759 ( p_interface_line_rec IN RA_interface_Lines_Rec_Type
2760 , x_return_status OUT NOCOPY VARCHAR2
2761 ) IS
2762 update_sql_stmt VARCHAR2(32767);
2763 /* START PREPAYMENT */
2764 update_sql_stmt1 VARCHAR2(32767);
2765 /* END PREPAYMENT */
2766 err_msg VARCHAR2(5000);
2767 l_rowid UROWID;
2768 --
2769 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2770 --
2771 BEGIN
2772 IF l_debug_level > 0 THEN
2773 oe_debug_pub.add( 'ENTERING INSERT_LINE ( ) PROCEDURE' , 1 ) ;
2774 END IF;
2775 INSERT INTO RA_INTERFACE_LINES_ALL
2776 (CREATED_BY
2777 ,CREATION_DATE
2778 ,LAST_UPDATED_BY
2779 ,LAST_UPDATE_DATE
2780 ,INTERFACE_LINE_ATTRIBUTE1
2781 ,INTERFACE_LINE_ATTRIBUTE2
2782 ,INTERFACE_LINE_ATTRIBUTE3
2783 ,INTERFACE_LINE_ATTRIBUTE4
2784 ,INTERFACE_LINE_ATTRIBUTE5
2785 ,INTERFACE_LINE_ATTRIBUTE6
2786 ,INTERFACE_LINE_ATTRIBUTE7
2787 ,INTERFACE_LINE_ATTRIBUTE8
2788 ,INTERFACE_LINE_ATTRIBUTE9
2789 ,INTERFACE_LINE_ATTRIBUTE10
2790 ,INTERFACE_LINE_ATTRIBUTE11
2791 ,INTERFACE_LINE_ATTRIBUTE12
2792 ,INTERFACE_LINE_ATTRIBUTE13
2793 ,INTERFACE_LINE_ATTRIBUTE14
2794 ,INTERFACE_LINE_ATTRIBUTE15
2795 ,INTERFACE_LINE_ID
2796 ,INTERFACE_LINE_CONTEXT
2797 ,WAREHOUSE_ID
2798 ,BATCH_SOURCE_NAME
2799 ,SET_OF_BOOKS_ID
2800 ,LINE_TYPE
2801 ,DESCRIPTION
2802 ,CURRENCY_CODE
2803 ,AMOUNT
2804 ,CONVERSION_TYPE
2805 ,CONVERSION_DATE
2806 ,CONVERSION_RATE
2807 ,CUST_TRX_TYPE_NAME
2808 ,CUST_TRX_TYPE_ID
2809 ,TERM_NAME
2810 ,TERM_ID
2811 ,ORIG_SYSTEM_BILL_CUSTOMER_REF
2812 ,ORIG_SYSTEM_BILL_CUSTOMER_ID
2813 ,ORIG_SYSTEM_BILL_ADDRESS_REF
2814 ,ORIG_SYSTEM_BILL_ADDRESS_ID
2815 ,ORIG_SYSTEM_BILL_CONTACT_REF
2816 ,ORIG_SYSTEM_BILL_CONTACT_ID
2817 ,ORIG_SYSTEM_SHIP_CUSTOMER_REF
2818 ,ORIG_SYSTEM_SHIP_CUSTOMER_ID
2819 ,ORIG_SYSTEM_SHIP_ADDRESS_REF
2820 ,ORIG_SYSTEM_SHIP_ADDRESS_ID
2821 ,ORIG_SYSTEM_SHIP_CONTACT_REF
2822 ,ORIG_SYSTEM_SHIP_CONTACT_ID
2823 ,ORIG_SYSTEM_SOLD_CUSTOMER_REF
2824 ,ORIG_SYSTEM_SOLD_CUSTOMER_ID
2825 ,LINK_TO_LINE_ID
2826 ,LINK_TO_LINE_CONTEXT
2827 ,LINK_TO_LINE_ATTRIBUTE1
2828 ,LINK_TO_LINE_ATTRIBUTE2
2829 ,LINK_TO_LINE_ATTRIBUTE3
2830 ,LINK_TO_LINE_ATTRIBUTE4
2831 ,LINK_TO_LINE_ATTRIBUTE5
2832 ,LINK_TO_LINE_ATTRIBUTE6
2833 ,LINK_TO_LINE_ATTRIBUTE7
2834 ,LINK_TO_LINE_ATTRIBUTE8
2835 ,LINK_TO_LINE_ATTRIBUTE9
2836 ,LINK_TO_LINE_ATTRIBUTE10
2837 ,LINK_TO_LINE_ATTRIBUTE11
2838 ,LINK_TO_LINE_ATTRIBUTE12
2839 ,LINK_TO_LINE_ATTRIBUTE13
2840 ,LINK_TO_LINE_ATTRIBUTE14
2841 ,LINK_TO_LINE_ATTRIBUTE15
2842 ,RECEIPT_METHOD_NAME
2843 ,RECEIPT_METHOD_ID
2844 -- ,CUSTOMER_BANK_ACCOUNT_ID -- R12 cc encryption
2845 -- ,CUSTOMER_BANK_ACCOUNT_NAME
2846 -- ,PAYMENT_SERVER_ORDER_NUM
2847 -- ,APPROVAL_CODE
2848 ,CUSTOMER_TRX_ID
2849 ,TRX_DATE
2850 ,GL_DATE
2851 ,DOCUMENT_NUMBER
2852 ,DOCUMENT_NUMBER_SEQUENCE_ID
2853 ,TRX_NUMBER
2854 ,QUANTITY
2855 ,QUANTITY_ORDERED
2856 ,UNIT_SELLING_PRICE
2857 ,UNIT_STANDARD_PRICE
2858 ,UOM_CODE
2859 ,UOM_NAME
2860 ,PRINTING_OPTION
2861 ,INTERFACE_STATUS
2862 ,REQUEST_ID
2863 ,RELATED_BATCH_SOURCE_NAME
2864 ,RELATED_TRX_NUMBER
2865 ,RELATED_CUSTOMER_TRX_ID
2866 ,PREVIOUS_CUSTOMER_TRX_ID
2867 ,INITIAL_CUSTOMER_TRX_ID
2868 ,CREDIT_METHOD_FOR_ACCT_RULE
2869 ,CREDIT_METHOD_FOR_INSTALLMENTS
2870 ,REASON_CODE_MEANING
2871 ,REASON_CODE
2872 ,TAX_RATE
2873 ,TAX_CODE
2874 ,TAX_PRECEDENCE
2875 ,TAX_EXEMPT_FLAG
2876 ,TAX_EXEMPT_NUMBER
2877 ,TAX_EXEMPT_REASON_CODE
2878 ,EXCEPTION_ID
2879 ,EXEMPTION_ID
2880 ,SHIP_DATE_ACTUAL
2881 ,FOB_POINT
2882 ,SHIP_VIA
2883 ,WAYBILL_NUMBER
2884 ,INVOICING_RULE_NAME
2885 ,INVOICING_RULE_ID
2886 ,ACCOUNTING_RULE_NAME
2887 ,ACCOUNTING_RULE_ID
2888 ,ACCOUNTING_RULE_DURATION
2889 ,RULE_START_DATE
2890 ,RULE_END_DATE --bug5336618
2891 ,PRIMARY_SALESREP_NUMBER
2892 ,PRIMARY_SALESREP_ID
2893 ,SALES_ORDER
2894 ,SALES_ORDER_LINE
2895 ,SALES_ORDER_DATE
2896 ,SALES_ORDER_SOURCE
2897 ,SALES_ORDER_REVISION
2898 ,PURCHASE_ORDER
2899 ,PURCHASE_ORDER_REVISION
2900 ,PURCHASE_ORDER_DATE
2901 ,AGREEMENT_NAME
2902 ,AGREEMENT_ID
2903 ,MEMO_LINE_NAME
2904 ,MEMO_LINE_ID
2905 ,INVENTORY_ITEM_ID
2906 ,MTL_SYSTEM_ITEMS_SEG1
2907 ,MTL_SYSTEM_ITEMS_SEG2
2908 ,MTL_SYSTEM_ITEMS_SEG3
2909 ,MTL_SYSTEM_ITEMS_SEG4
2910 ,MTL_SYSTEM_ITEMS_SEG5
2911 ,MTL_SYSTEM_ITEMS_SEG6
2912 ,MTL_SYSTEM_ITEMS_SEG7
2913 ,MTL_SYSTEM_ITEMS_SEG8
2914 ,MTL_SYSTEM_ITEMS_SEG9
2915 ,MTL_SYSTEM_ITEMS_SEG10
2916 ,MTL_SYSTEM_ITEMS_SEG11
2917 ,MTL_SYSTEM_ITEMS_SEG12
2918 ,MTL_SYSTEM_ITEMS_SEG13
2919 ,MTL_SYSTEM_ITEMS_SEG14
2920 ,MTL_SYSTEM_ITEMS_SEG15
2921 ,MTL_SYSTEM_ITEMS_SEG16
2922 ,MTL_SYSTEM_ITEMS_SEG17
2923 ,MTL_SYSTEM_ITEMS_SEG18
2924 ,MTL_SYSTEM_ITEMS_SEG19
2925 ,MTL_SYSTEM_ITEMS_SEG20
2926 ,REFERENCE_LINE_ID
2927 ,REFERENCE_LINE_CONTEXT
2928 ,REFERENCE_LINE_ATTRIBUTE1
2929 ,REFERENCE_LINE_ATTRIBUTE2
2930 ,REFERENCE_LINE_ATTRIBUTE3
2931 ,REFERENCE_LINE_ATTRIBUTE4
2932 ,REFERENCE_LINE_ATTRIBUTE5
2933 ,REFERENCE_LINE_ATTRIBUTE6
2934 ,REFERENCE_LINE_ATTRIBUTE7
2935 ,REFERENCE_LINE_ATTRIBUTE8
2936 ,REFERENCE_LINE_ATTRIBUTE9
2937 ,REFERENCE_LINE_ATTRIBUTE10
2938 ,REFERENCE_LINE_ATTRIBUTE11
2939 ,REFERENCE_LINE_ATTRIBUTE12
2940 ,REFERENCE_LINE_ATTRIBUTE13
2941 ,REFERENCE_LINE_ATTRIBUTE14
2942 ,REFERENCE_LINE_ATTRIBUTE15
2943 ,TERRITORY_ID
2944 ,TERRITORY_SEGMENT1
2945 ,TERRITORY_SEGMENT2
2946 ,TERRITORY_SEGMENT3
2947 ,TERRITORY_SEGMENT4
2948 ,TERRITORY_SEGMENT5
2949 ,TERRITORY_SEGMENT6
2950 ,TERRITORY_SEGMENT7
2951 ,TERRITORY_SEGMENT8
2952 ,TERRITORY_SEGMENT9
2953 ,TERRITORY_SEGMENT10
2954 ,TERRITORY_SEGMENT11
2955 ,TERRITORY_SEGMENT12
2956 ,TERRITORY_SEGMENT13
2957 ,TERRITORY_SEGMENT14
2958 ,TERRITORY_SEGMENT15
2959 ,TERRITORY_SEGMENT16
2960 ,TERRITORY_SEGMENT17
2961 ,TERRITORY_SEGMENT18
2962 ,TERRITORY_SEGMENT19
2963 ,TERRITORY_SEGMENT20
2964 ,ATTRIBUTE_CATEGORY
2965 ,ATTRIBUTE1
2966 ,ATTRIBUTE2
2967 ,ATTRIBUTE3
2968 ,ATTRIBUTE4
2969 ,ATTRIBUTE5
2970 ,ATTRIBUTE6
2971 ,ATTRIBUTE7
2972 ,ATTRIBUTE8
2973 ,ATTRIBUTE9
2974 ,ATTRIBUTE10
2975 ,ATTRIBUTE11
2976 ,ATTRIBUTE12
2977 ,ATTRIBUTE13
2978 ,ATTRIBUTE14
2979 ,ATTRIBUTE15
2980 ,HEADER_ATTRIBUTE_CATEGORY
2981 ,HEADER_ATTRIBUTE1
2982 ,HEADER_ATTRIBUTE2
2983 ,HEADER_ATTRIBUTE3
2984 ,HEADER_ATTRIBUTE4
2985 ,HEADER_ATTRIBUTE5
2986 ,HEADER_ATTRIBUTE6
2987 ,HEADER_ATTRIBUTE7
2988 ,HEADER_ATTRIBUTE8
2989 ,HEADER_ATTRIBUTE9
2990 ,HEADER_ATTRIBUTE10
2991 ,HEADER_ATTRIBUTE11
2992 ,HEADER_ATTRIBUTE12
2993 ,HEADER_ATTRIBUTE13
2994 ,HEADER_ATTRIBUTE14
2995 ,HEADER_ATTRIBUTE15
2996 ,COMMENTS
2997 ,INTERNAL_NOTES
2998 ,MOVEMENT_ID
2999 ,ORG_ID
3000 ,HEADER_GDF_ATTR_CATEGORY
3001 ,HEADER_GDF_ATTRIBUTE1
3002 ,HEADER_GDF_ATTRIBUTE2
3003 ,HEADER_GDF_ATTRIBUTE3
3004 ,HEADER_GDF_ATTRIBUTE4
3005 ,HEADER_GDF_ATTRIBUTE5
3006 ,HEADER_GDF_ATTRIBUTE6
3007 ,HEADER_GDF_ATTRIBUTE7
3008 ,HEADER_GDF_ATTRIBUTE8
3009 ,HEADER_GDF_ATTRIBUTE9
3010 ,HEADER_GDF_ATTRIBUTE10
3011 ,HEADER_GDF_ATTRIBUTE11
3012 ,HEADER_GDF_ATTRIBUTE12
3013 ,HEADER_GDF_ATTRIBUTE13
3014 ,HEADER_GDF_ATTRIBUTE14
3015 ,HEADER_GDF_ATTRIBUTE15
3016 ,HEADER_GDF_ATTRIBUTE16
3017 ,HEADER_GDF_ATTRIBUTE17
3018 ,HEADER_GDF_ATTRIBUTE18
3019 ,HEADER_GDF_ATTRIBUTE19
3020 ,HEADER_GDF_ATTRIBUTE20
3021 ,HEADER_GDF_ATTRIBUTE21
3022 ,HEADER_GDF_ATTRIBUTE22
3023 ,HEADER_GDF_ATTRIBUTE23
3024 ,HEADER_GDF_ATTRIBUTE24
3025 ,HEADER_GDF_ATTRIBUTE25
3026 ,HEADER_GDF_ATTRIBUTE26
3027 ,HEADER_GDF_ATTRIBUTE27
3028 ,HEADER_GDF_ATTRIBUTE28
3029 ,HEADER_GDF_ATTRIBUTE29
3030 ,HEADER_GDF_ATTRIBUTE30
3031 ,LINE_GDF_ATTR_CATEGORY
3032 ,LINE_GDF_ATTRIBUTE1
3033 ,LINE_GDF_ATTRIBUTE2
3034 ,LINE_GDF_ATTRIBUTE3
3035 ,LINE_GDF_ATTRIBUTE4
3036 ,LINE_GDF_ATTRIBUTE5
3037 ,LINE_GDF_ATTRIBUTE6
3038 ,LINE_GDF_ATTRIBUTE7
3039 ,LINE_GDF_ATTRIBUTE8
3040 ,LINE_GDF_ATTRIBUTE9
3041 ,LINE_GDF_ATTRIBUTE10
3042 ,LINE_GDF_ATTRIBUTE11
3043 ,LINE_GDF_ATTRIBUTE12
3044 ,LINE_GDF_ATTRIBUTE13
3045 ,LINE_GDF_ATTRIBUTE14
3046 ,LINE_GDF_ATTRIBUTE15
3047 ,LINE_GDF_ATTRIBUTE16
3048 ,LINE_GDF_ATTRIBUTE17
3049 ,LINE_GDF_ATTRIBUTE18
3050 ,LINE_GDF_ATTRIBUTE19
3051 ,LINE_GDF_ATTRIBUTE20
3052 ,TRANSLATED_DESCRIPTION
3053 ,PAYMENT_TRXN_EXTENSION_ID
3054 ,PARENT_LINE_ID
3055 ,DEFERRAL_EXCLUSION_FLAG
3056 )
3057 VALUES (
3058 p_interface_line_rec.CREATED_BY
3059 ,p_interface_line_rec.CREATION_DATE
3060 ,p_interface_line_rec.LAST_UPDATED_BY
3061 ,p_interface_line_rec.LAST_UPDATE_DATE
3062 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE1
3063 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE2
3064 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3
3065 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4
3066 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE5
3067 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE6
3068 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7
3069 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8
3070 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE9
3071 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE10
3072 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE11
3073 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE12
3074 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE13
3075 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE14
3076 ,p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE15
3077 ,p_interface_line_rec.INTERFACE_LINE_ID
3078 ,p_interface_line_rec.INTERFACE_LINE_CONTEXT
3079 ,p_interface_line_rec.WAREHOUSE_ID
3080 ,p_interface_line_rec.BATCH_SOURCE_NAME
3081 ,p_interface_line_rec.SET_OF_BOOKS_ID
3082 ,p_interface_line_rec.LINE_TYPE
3083 ,p_interface_line_rec.DESCRIPTION
3084 ,p_interface_line_rec.CURRENCY_CODE
3085 ,p_interface_line_rec.AMOUNT
3086 ,p_interface_line_rec.CONVERSION_TYPE
3087 ,p_interface_line_rec.CONVERSION_DATE
3088 ,p_interface_line_rec.CONVERSION_RATE
3089 ,p_interface_line_rec.CUST_TRX_TYPE_NAME
3090 ,p_interface_line_rec.CUST_TRX_TYPE_ID
3091 ,p_interface_line_rec.TERM_NAME
3092 ,p_interface_line_rec.TERM_ID
3093 ,p_interface_line_rec.ORIG_SYSTEM_BILL_CUSTOMER_REF
3094 ,p_interface_line_rec.ORIG_SYSTEM_BILL_CUSTOMER_ID
3095 ,p_interface_line_rec.ORIG_SYSTEM_BILL_ADDRESS_REF
3096 ,p_interface_line_rec.ORIG_SYSTEM_BILL_ADDRESS_ID
3097 ,p_interface_line_rec.ORIG_SYSTEM_BILL_CONTACT_REF
3098 ,p_interface_line_rec.ORIG_SYSTEM_BILL_CONTACT_ID
3099 ,p_interface_line_rec.ORIG_SYSTEM_SHIP_CUSTOMER_REF
3100 ,p_interface_line_rec.ORIG_SYSTEM_SHIP_CUSTOMER_ID
3101 ,p_interface_line_rec.ORIG_SYSTEM_SHIP_ADDRESS_REF
3102 ,p_interface_line_rec.ORIG_SYSTEM_SHIP_ADDRESS_ID
3103 ,p_interface_line_rec.ORIG_SYSTEM_SHIP_CONTACT_REF
3104 ,p_interface_line_rec.ORIG_SYSTEM_SHIP_CONTACT_ID
3105 ,p_interface_line_rec.ORIG_SYSTEM_SOLD_CUSTOMER_REF
3106 ,p_interface_line_rec.ORIG_SYSTEM_SOLD_CUSTOMER_ID
3107 ,p_interface_line_rec.LINK_TO_LINE_ID
3108 ,p_interface_line_rec.LINK_TO_LINE_CONTEXT
3109 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE1
3110 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE2
3111 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE3
3112 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE4
3113 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE5
3114 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE6
3115 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE7
3116 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE8
3117 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE9
3118 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE10
3119 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE11
3120 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE12
3121 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE13
3122 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE14
3123 ,p_interface_line_rec.LINK_TO_LINE_ATTRIBUTE15
3124 ,p_interface_line_rec.RECEIPT_METHOD_NAME
3125 ,p_interface_line_rec.RECEIPT_METHOD_ID
3126 -- ,p_interface_line_rec.CUSTOMER_BANK_ACCOUNT_ID -- R12 cc encryption
3127 -- ,p_interface_line_rec.CUSTOMER_BANK_ACCOUNT_NAME
3128 -- ,p_interface_line_rec.PAYMENT_SERVER_ORDER_NUM
3129 -- ,p_interface_line_rec.APPROVAL_CODE
3130 ,p_interface_line_rec.CUSTOMER_TRX_ID
3131 ,p_interface_line_rec.TRX_DATE
3132 ,p_interface_line_rec.GL_DATE
3133 ,p_interface_line_rec.DOCUMENT_NUMBER
3134 ,p_interface_line_rec.DOCUMENT_NUMBER_SEQUENCE_ID
3135 ,p_interface_line_rec.TRX_NUMBER
3136 ,p_interface_line_rec.QUANTITY
3137 ,p_interface_line_rec.QUANTITY_ORDERED
3138 ,p_interface_line_rec.UNIT_SELLING_PRICE
3139 ,p_interface_line_rec.UNIT_STANDARD_PRICE
3140 ,p_interface_line_rec.UOM_CODE
3141 ,p_interface_line_rec.UOM_NAME
3142 ,p_interface_line_rec.PRINTING_OPTION
3143 ,p_interface_line_rec.INTERFACE_STATUS
3144 ,p_interface_line_rec.REQUEST_ID
3145 ,p_interface_line_rec.RELATED_BATCH_SOURCE_NAME
3146 ,p_interface_line_rec.RELATED_TRX_NUMBER
3147 ,p_interface_line_rec.RELATED_CUSTOMER_TRX_ID
3148 ,p_interface_line_rec.PREVIOUS_CUSTOMER_TRX_ID
3149 ,p_interface_line_rec.INITIAL_CUSTOMER_TRX_ID
3150 ,p_interface_line_rec.CREDIT_METHOD_FOR_ACCT_RULE
3151 ,p_interface_line_rec.CREDIT_METHOD_FOR_INSTALLMENTS
3152 ,p_interface_line_rec.REASON_CODE_MEANING
3153 ,p_interface_line_rec.REASON_CODE
3154 ,p_interface_line_rec.TAX_RATE
3155 ,p_interface_line_rec.TAX_CODE
3156 ,p_interface_line_rec.TAX_PRECEDENCE
3157 ,p_interface_line_rec.TAX_EXEMPT_FLAG
3158 ,p_interface_line_rec.TAX_EXEMPT_NUMBER
3159 ,p_interface_line_rec.TAX_EXEMPT_REASON_CODE
3160 ,p_interface_line_rec.EXCEPTION_ID
3161 ,p_interface_line_rec.EXEMPTION_ID
3162 ,p_interface_line_rec.SHIP_DATE_ACTUAL
3163 ,p_interface_line_rec.FOB_POINT
3164 ,p_interface_line_rec.SHIP_VIA
3165 ,p_interface_line_rec.WAYBILL_NUMBER
3166 ,p_interface_line_rec.INVOICING_RULE_NAME
3167 ,p_interface_line_rec.INVOICING_RULE_ID
3168 ,p_interface_line_rec.ACCOUNTING_RULE_NAME
3169 ,p_interface_line_rec.ACCOUNTING_RULE_ID
3170 ,p_interface_line_rec.ACCOUNTING_RULE_DURATION
3171 ,p_interface_line_rec.RULE_START_DATE
3172 ,p_interface_line_rec.RULE_END_DATE --bug5336618
3173 ,p_interface_line_rec.PRIMARY_SALESREP_NUMBER
3174 ,p_interface_line_rec.PRIMARY_SALESREP_ID
3175 ,p_interface_line_rec.SALES_ORDER
3176 ,p_interface_line_rec.SALES_ORDER_LINE
3177 ,p_interface_line_rec.SALES_ORDER_DATE
3178 ,p_interface_line_rec.SALES_ORDER_SOURCE
3179 ,p_interface_line_rec.SALES_ORDER_REVISION
3180 ,p_interface_line_rec.PURCHASE_ORDER
3181 ,p_interface_line_rec.PURCHASE_ORDER_REVISION
3182 ,p_interface_line_rec.PURCHASE_ORDER_DATE
3183 ,p_interface_line_rec.AGREEMENT_NAME
3184 ,p_interface_line_rec.AGREEMENT_ID
3185 ,p_interface_line_rec.MEMO_LINE_NAME
3186 ,p_interface_line_rec.MEMO_LINE_ID
3187 ,p_interface_line_rec.INVENTORY_ITEM_ID
3188 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG1
3189 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG2
3190 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG3
3191 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG4
3192 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG5
3193 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG6
3194 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG7
3195 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG8
3196 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG9
3197 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG10
3198 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG11
3199 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG12
3200 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG13
3201 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG14
3202 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG15
3203 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG16
3204 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG17
3205 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG18
3206 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG19
3207 ,p_interface_line_rec.MTL_SYSTEM_ITEMS_SEG20
3208 ,p_interface_line_rec.REFERENCE_LINE_ID
3209 ,p_interface_line_rec.REFERENCE_LINE_CONTEXT
3210 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE1
3211 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE2
3212 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE3
3213 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE4
3214 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE5
3215 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE6
3216 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE7
3217 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE8
3218 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE9
3219 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE10
3220 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE11
3221 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE12
3222 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE13
3223 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE14
3224 ,p_interface_line_rec.REFERENCE_LINE_ATTRIBUTE15
3225 ,p_interface_line_rec.TERRITORY_ID
3226 ,p_interface_line_rec.TERRITORY_SEGMENT1
3227 ,p_interface_line_rec.TERRITORY_SEGMENT2
3228 ,p_interface_line_rec.TERRITORY_SEGMENT3
3229 ,p_interface_line_rec.TERRITORY_SEGMENT4
3230 ,p_interface_line_rec.TERRITORY_SEGMENT5
3231 ,p_interface_line_rec.TERRITORY_SEGMENT6
3232 ,p_interface_line_rec.TERRITORY_SEGMENT7
3233 ,p_interface_line_rec.TERRITORY_SEGMENT8
3234 ,p_interface_line_rec.TERRITORY_SEGMENT9
3235 ,p_interface_line_rec.TERRITORY_SEGMENT10
3236 ,p_interface_line_rec.TERRITORY_SEGMENT11
3237 ,p_interface_line_rec.TERRITORY_SEGMENT12
3238 ,p_interface_line_rec.TERRITORY_SEGMENT13
3239 ,p_interface_line_rec.TERRITORY_SEGMENT14
3240 ,p_interface_line_rec.TERRITORY_SEGMENT15
3241 ,p_interface_line_rec.TERRITORY_SEGMENT16
3242 ,p_interface_line_rec.TERRITORY_SEGMENT17
3243 ,p_interface_line_rec.TERRITORY_SEGMENT18
3244 ,p_interface_line_rec.TERRITORY_SEGMENT19
3245 ,p_interface_line_rec.TERRITORY_SEGMENT20
3246 ,p_interface_line_rec.ATTRIBUTE_CATEGORY
3247 ,p_interface_line_rec.ATTRIBUTE1
3248 ,p_interface_line_rec.ATTRIBUTE2
3249 ,p_interface_line_rec.ATTRIBUTE3
3250 ,p_interface_line_rec.ATTRIBUTE4
3251 ,p_interface_line_rec.ATTRIBUTE5
3252 ,p_interface_line_rec.ATTRIBUTE6
3253 ,p_interface_line_rec.ATTRIBUTE7
3254 ,p_interface_line_rec.ATTRIBUTE8
3255 ,p_interface_line_rec.ATTRIBUTE9
3256 ,p_interface_line_rec.ATTRIBUTE10
3257 ,p_interface_line_rec.ATTRIBUTE11
3258 ,p_interface_line_rec.ATTRIBUTE12
3259 ,p_interface_line_rec.ATTRIBUTE13
3260 ,p_interface_line_rec.ATTRIBUTE14
3261 ,p_interface_line_rec.ATTRIBUTE15
3262 ,p_interface_line_rec.HEADER_ATTRIBUTE_CATEGORY
3263 ,p_interface_line_rec.HEADER_ATTRIBUTE1
3264 ,p_interface_line_rec.HEADER_ATTRIBUTE2
3265 ,p_interface_line_rec.HEADER_ATTRIBUTE3
3266 ,p_interface_line_rec.HEADER_ATTRIBUTE4
3267 ,p_interface_line_rec.HEADER_ATTRIBUTE5
3268 ,p_interface_line_rec.HEADER_ATTRIBUTE6
3269 ,p_interface_line_rec.HEADER_ATTRIBUTE7
3270 ,p_interface_line_rec.HEADER_ATTRIBUTE8
3271 ,p_interface_line_rec.HEADER_ATTRIBUTE9
3272 ,p_interface_line_rec.HEADER_ATTRIBUTE10
3273 ,p_interface_line_rec.HEADER_ATTRIBUTE11
3274 ,p_interface_line_rec.HEADER_ATTRIBUTE12
3275 ,p_interface_line_rec.HEADER_ATTRIBUTE13
3276 ,p_interface_line_rec.HEADER_ATTRIBUTE14
3277 ,p_interface_line_rec.HEADER_ATTRIBUTE15
3278 ,p_interface_line_rec.COMMENTS
3279 ,p_interface_line_rec.INTERNAL_NOTES
3280 ,p_interface_line_rec.MOVEMENT_ID
3281 ,p_interface_line_rec.ORG_ID
3282 ,p_interface_line_rec.HEADER_GDF_ATTR_CATEGORY
3283 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE1
3284 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE2
3285 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE3
3286 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE4
3287 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE5
3288 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE6
3289 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE7
3290 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE8
3291 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE9
3292 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE10
3293 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE11
3294 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE12
3295 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE13
3296 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE14
3297 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE15
3298 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE16
3299 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE17
3300 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE18
3301 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE19
3302 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE20
3303 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE21
3304 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE22
3305 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE23
3306 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE24
3307 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE25
3308 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE26
3309 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE27
3310 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE28
3311 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE29
3312 ,p_interface_line_rec.HEADER_GDF_ATTRIBUTE30
3313 ,p_interface_line_rec.LINE_GDF_ATTR_CATEGORY
3314 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE1
3315 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE2
3316 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE3
3317 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE4
3318 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE5
3319 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE6
3320 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE7
3321 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE8
3322 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE9
3323 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE10
3324 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE11
3325 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE12
3326 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE13
3327 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE14
3328 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE15
3329 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE16
3330 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE17
3331 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE18
3332 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE19
3333 ,p_interface_line_rec.LINE_GDF_ATTRIBUTE20
3334 ,p_interface_line_rec.TRANSLATED_DESCRIPTION
3335 ,p_interface_line_rec.payment_trxn_extension_id
3336 ,p_interface_line_rec.PARENT_LINE_ID
3337 ,p_interface_line_rec.DEFERRAL_EXCLUSION_FLAG
3338 ) RETURNING rowid INTO l_rowid;
3339
3340 IF l_debug_level > 0 THEN
3341 oe_debug_pub.add( 'INSERT COMPLETED' , 1 ) ;
3342 END IF;
3343 IF OE_Commitment_Pvt.DO_Commitment_Sequencing
3344 AND p_interface_line_rec.promised_commitment_amount IS NOT NULL THEN
3345 IF l_debug_level > 0 THEN
3346 oe_debug_pub.add( 'BUILD UPDATE STATEMENT WITH PROMISED COMMITMENT AMOUNT' , 1 ) ;
3347 END IF;
3348 update_sql_stmt := 'UPDATE RA_INTERFACE_LINES_ALL
3349 SET PROMISED_COMMITMENT_AMOUNT = :1
3350 WHERE ROWID = :r1';
3351 IF l_debug_level > 0 THEN
3352 oe_debug_pub.add( 'EXECUTING UPDATE STMT FOR PROMISED_COMMITMENT_AMOUNT' , 1 ) ;
3353 END IF;
3354 EXECUTE IMMEDIATE update_sql_stmt USING
3355 p_interface_line_rec.promised_commitment_amount
3356 ,l_rowid;
3357 END IF;
3358
3359 /* START PREPAYMENT */
3360 IF p_interface_line_rec.payment_set_id IS NOT NULL THEN
3361 IF l_debug_level > 0 THEN
3362 oe_debug_pub.add( 'BUILD UPDATE STATEMENT WITH PAYMENT_SET_ID' , 1 ) ;
3363 END IF;
3364 update_sql_stmt1 := 'UPDATE RA_INTERFACE_LINES_ALL
3365 SET PAYMENT_SET_ID = :2
3366 WHERE ROWID = :r2';
3367 IF l_debug_level > 0 THEN
3368 oe_debug_pub.add( 'EXECUTING UPDATE STMT FOR PAYMENT_SET_ID: '||P_INTERFACE_LINE_REC.PAYMENT_SET_ID , 1 ) ;
3369 END IF;
3370 EXECUTE IMMEDIATE update_sql_stmt1 USING
3371 p_interface_line_rec.PAYMENT_SET_ID
3372 ,l_rowid;
3373 END IF;
3374 /* END PREPAYMENT */
3375 -- Fix for the bug 2187074
3376 x_return_status := FND_API.G_RET_STS_SUCCESS;
3377 IF l_debug_level > 0 THEN
3378 oe_debug_pub.add( 'EXIT INSERT_LINE ( ) PROCEDURE' , 1 ) ;
3379 END IF;
3380 EXCEPTION
3381 WHEN OTHERS THEN
3382 err_msg := 'Error while inserting to RA_INTERFACE_LINES_ALL :\n '|| SQLERRM;
3383 IF l_debug_level > 0 THEN
3384 oe_debug_pub.add( ERR_MSG || ' SQLCODE: '||TO_CHAR ( SQLCODE ) , 1 ) ;
3385 END IF;
3386 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3387 OE_MSG_PUB.Add_Exc_Msg
3388 ( G_PKG_NAME
3389 , 'Insert_Line'
3390 );
3391 END IF;
3392 /* fix for 2140223, do not raise hard error, but capture error in debug log */
3393 -- raise_application_error(-20101, 'Failing while inserting into ra_interface_lines');
3394 -- Fix for the bug 2187074
3395 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3396 END Insert_Line;
3397
3398 PROCEDURE Prepare_Salescredit_rec
3399 ( p_line_scredit_rec IN OE_Order_Pub.Line_Scredit_Rec_Type
3400 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
3401 , x_interface_scredit_rec OUT NOCOPY RA_Interface_Scredits_Rec_Type
3402 ) IS
3403 --
3404 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3405 --
3406 BEGIN
3407 IF l_debug_level > 0 THEN
3408 oe_debug_pub.add( 'ENTER LINE PREPARE_SALESCREDIT_REC ( ) PROCEDURE' , 5 ) ;
3409 END IF;
3410
3411 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
3412 x_interface_scredit_rec.CREATION_DATE := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(sysdate,p_interface_line_rec.org_id);
3413 x_interface_scredit_rec.LAST_UPDATE_DATE := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(sysdate,p_interface_line_rec.org_id);
3414 ELSE
3415 x_interface_scredit_rec.CREATION_DATE := sysdate;
3416 x_interface_scredit_rec.LAST_UPDATE_DATE := sysdate;
3417 END IF;
3418
3419 x_interface_scredit_rec.CREATED_BY := NVL(oe_standard_wf.g_user_id, fnd_global.user_id); -- 3169637
3420 x_interface_scredit_rec.LAST_UPDATED_BY := NVL(oe_standard_wf.g_user_id, fnd_global.user_id); -- 3169637
3421 x_interface_scredit_rec.INTERFACE_SALESCREDIT_ID := NULL;
3422 x_interface_scredit_rec.INTERFACE_LINE_ID := NULL;
3423 x_interface_scredit_rec.INTERFACE_LINE_CONTEXT := p_interface_line_rec.INTERFACE_LINE_CONTEXT;
3424 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE1 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE1;
3425 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE2 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE2;
3426 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE3 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3;
3427 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE4 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4;
3428 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE5 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE5;
3429 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE6 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE6;
3430 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE7 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7;
3431 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE8 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8;
3432 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE9 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE9;
3433 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE10 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE10;
3434 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE11 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE11;
3435 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE12 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE12;
3436 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE13 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE13;
3437 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE14 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE14;
3438 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE15 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE15;
3439 x_interface_scredit_rec.SALESREP_NUMBER := NULL;
3440 x_interface_scredit_rec.SALESREP_ID := p_line_scredit_rec.salesrep_id;
3441 x_interface_scredit_rec.SALES_CREDIT_TYPE_ID := p_line_scredit_rec.sales_credit_type_id;
3442 x_interface_scredit_rec.SALES_CREDIT_PERCENT_SPLIT := p_line_scredit_rec.percent;
3443 x_interface_scredit_rec.ATTRIBUTE_CATEGORY := p_line_scredit_rec.context;
3444 --SG
3445 x_interface_scredit_rec.SALES_GROUP_ID := p_line_scredit_rec.sales_group_id;
3446 --SG
3447
3448 --oe_debug_pub.add(x_interface_scredit_rec.SALES_GROUP_ID);
3449
3450 --oe_debug_pub.add(
3451 x_interface_scredit_rec.ATTRIBUTE1 := substrb(p_line_scredit_rec.attribute1, 1, 150);
3452 x_interface_scredit_rec.ATTRIBUTE2 := substrb(p_line_scredit_rec.attribute2, 1, 150);
3453 x_interface_scredit_rec.ATTRIBUTE3 := substrb(p_line_scredit_rec.attribute3, 1, 150);
3454 x_interface_scredit_rec.ATTRIBUTE4 := substrb(p_line_scredit_rec.attribute4, 1, 150);
3455 x_interface_scredit_rec.ATTRIBUTE5 := substrb(p_line_scredit_rec.attribute5, 1, 150);
3456 x_interface_scredit_rec.ATTRIBUTE6 := substrb(p_line_scredit_rec.attribute6, 1, 150);
3457 x_interface_scredit_rec.ATTRIBUTE7 := substrb(p_line_scredit_rec.attribute7, 1, 150);
3458 x_interface_scredit_rec.ATTRIBUTE8 := substrb(p_line_scredit_rec.attribute8, 1, 150);
3459 x_interface_scredit_rec.ATTRIBUTE9 := substrb(p_line_scredit_rec.attribute9, 1, 150);
3460 x_interface_scredit_rec.ATTRIBUTE10 := substrb(p_line_scredit_rec.attribute10, 1, 150);
3461 x_interface_scredit_rec.ATTRIBUTE11 := substrb(p_line_scredit_rec.attribute11, 1, 150);
3462 x_interface_scredit_rec.ATTRIBUTE12 := substrb(p_line_scredit_rec.attribute12, 1, 150);
3463 x_interface_scredit_rec.ATTRIBUTE13 := substrb(p_line_scredit_rec.attribute13, 1, 150);
3464 x_interface_scredit_rec.ATTRIBUTE14 := substrb(p_line_scredit_rec.attribute14, 1, 150);
3465 x_interface_scredit_rec.ATTRIBUTE15 := substrb(p_line_scredit_rec.attribute15, 1, 150);
3466 x_interface_scredit_rec.ORG_ID := p_interface_line_rec.org_id;
3467
3468 IF l_debug_level > 0 THEN
3469 oe_debug_pub.add ( 'value of sysdate '||sysdate);
3470 oe_debug_pub.add ( 'value of CREATION_DATE '||x_interface_scredit_rec.CREATION_DATE||
3471 ' value of LAST_UPDATE_DATE '|| x_interface_scredit_rec.LAST_UPDATE_DATE);
3472 END IF;
3473
3474 IF l_debug_level > 0 THEN
3475 oe_debug_pub.add( 'EXITING LINE PREPARE_SALESCREDIT_REC' , 5 ) ;
3476 END IF;
3477 END Prepare_Salescredit_rec;
3478
3479 PROCEDURE Prepare_Salescredit_rec
3480 ( p_header_scredit_rec IN OE_Order_Pub.Header_Scredit_Rec_Type
3481 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
3482 , x_interface_scredit_rec OUT NOCOPY RA_Interface_Scredits_Rec_Type
3483 ) IS
3484 --
3485 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3486 --
3487 BEGIN
3488 IF l_debug_level > 0 THEN
3489 oe_debug_pub.add( 'ENTER HEADER PREPARE_SALESCREDIT_REC ( ) PROCEDURE ' , 5 ) ;
3490 END IF;
3491
3492 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
3493 x_interface_scredit_rec.CREATION_DATE := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(sysdate,p_interface_line_rec.org_id);
3494 x_interface_scredit_rec.LAST_UPDATE_DATE := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(sysdate,p_interface_line_rec.org_id);
3495 ELSE
3496 x_interface_scredit_rec.CREATION_DATE := sysdate;
3497 x_interface_scredit_rec.LAST_UPDATE_DATE := sysdate;
3498 END IF;
3499
3500 x_interface_scredit_rec.CREATED_BY := NVL(oe_standard_wf.g_user_id, fnd_global.user_id); -- 3169637
3501 x_interface_scredit_rec.LAST_UPDATED_BY := NVL(oe_standard_wf.g_user_id, fnd_global.user_id); -- 3169637
3502 x_interface_scredit_rec.INTERFACE_SALESCREDIT_ID := NULL;
3503 x_interface_scredit_rec.INTERFACE_LINE_ID := NULL;
3504 x_interface_scredit_rec.INTERFACE_LINE_CONTEXT := p_interface_line_rec.INTERFACE_LINE_CONTEXT;
3505 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE1 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE1;
3506 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE2 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE2;
3507 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE3 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3;
3508 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE4 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4;
3509 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE5 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE5;
3510 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE6 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE6;
3511 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE7 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7;
3512 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE8 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8;
3513 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE9 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE9;
3514 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE10 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE10;
3515 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE11 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE11;
3516 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE12 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE12;
3517 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE13 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE13;
3518 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE14 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE14;
3519 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE15 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE15;
3520 x_interface_scredit_rec.SALESREP_NUMBER := NULL;
3521 x_interface_scredit_rec.SALESREP_ID := p_header_scredit_rec.salesrep_id;
3522 x_interface_scredit_rec.SALES_CREDIT_TYPE_ID := p_header_scredit_rec.sales_credit_type_id;
3523 x_interface_scredit_rec.SALES_CREDIT_PERCENT_SPLIT := p_header_scredit_rec.percent;
3524 x_interface_scredit_rec.ATTRIBUTE_CATEGORY := p_header_scredit_rec.context;
3525 --SG{
3526 x_interface_scredit_rec.SALES_GROUP_ID := p_header_scredit_rec.sales_group_id;
3527 --SG}
3528 x_interface_scredit_rec.ATTRIBUTE1 := substrb(p_header_scredit_rec.attribute1, 1, 150);
3529 x_interface_scredit_rec.ATTRIBUTE2 := substrb(p_header_scredit_rec.attribute2, 1, 150);
3530 x_interface_scredit_rec.ATTRIBUTE3 := substrb(p_header_scredit_rec.attribute3, 1, 150);
3531 x_interface_scredit_rec.ATTRIBUTE4 := substrb(p_header_scredit_rec.attribute4, 1, 150);
3532 x_interface_scredit_rec.ATTRIBUTE5 := substrb(p_header_scredit_rec.attribute5, 1, 150);
3533 x_interface_scredit_rec.ATTRIBUTE6 := substrb(p_header_scredit_rec.attribute6, 1, 150);
3534 x_interface_scredit_rec.ATTRIBUTE7 := substrb(p_header_scredit_rec.attribute7, 1, 150);
3535 x_interface_scredit_rec.ATTRIBUTE8 := substrb(p_header_scredit_rec.attribute8, 1, 150);
3536 x_interface_scredit_rec.ATTRIBUTE9 := substrb(p_header_scredit_rec.attribute9, 1, 150);
3537 x_interface_scredit_rec.ATTRIBUTE10 := substrb(p_header_scredit_rec.attribute10, 1, 150);
3538 x_interface_scredit_rec.ATTRIBUTE11 := substrb(p_header_scredit_rec.attribute11, 1, 150);
3539 x_interface_scredit_rec.ATTRIBUTE12 := substrb(p_header_scredit_rec.attribute12, 1, 150);
3540 x_interface_scredit_rec.ATTRIBUTE13 := substrb(p_header_scredit_rec.attribute13, 1, 150);
3541 x_interface_scredit_rec.ATTRIBUTE14 := substrb(p_header_scredit_rec.attribute14, 1, 150);
3542 x_interface_scredit_rec.ATTRIBUTE15 := substrb(p_header_scredit_rec.attribute15, 1, 150);
3543 -- Fix for bug2185729
3544 x_interface_scredit_rec.ORG_ID := p_interface_line_rec.org_id;
3545
3546 IF l_debug_level > 0 THEN
3547 oe_debug_pub.add ( 'value of sysdate '||sysdate);
3548 oe_debug_pub.add ( 'value of CREATION_DATE '||x_interface_scredit_rec.CREATION_DATE||
3549 ' value of LAST_UPDATE_DATE '|| x_interface_scredit_rec.LAST_UPDATE_DATE);
3550 END IF;
3551
3552 IF l_debug_level > 0 THEN
3553 oe_debug_pub.add( 'EXIT HEADER PREPARE_SALESCREDIT_REC ( ) PROCEDURE ' , 5 ) ;
3554 END IF;
3555 END Prepare_Salescredit_rec;
3556
3557 PROCEDURE Prepare_Salescredit_rec
3558 ( p_interface_line_rec IN RA_Interface_Lines_Rec_Type
3559 , x_interface_scredit_rec OUT NOCOPY RA_Interface_Scredits_Rec_Type
3560 ) IS
3561 --
3562 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3563 --
3564 BEGIN
3565 IF l_debug_level > 0 THEN
3566 oe_debug_pub.add( 'ENTER PREPARE_SALESCREDIT_REC ( ) PROCEDURE' , 1 ) ;
3567 END IF;
3568 --Fix for bug 2192220.
3569 Select SALES_CREDIT_TYPE_ID
3570 into x_interface_scredit_rec.SALES_CREDIT_TYPE_ID
3571 from ra_salesreps where salesrep_id=-3;
3572 IF l_debug_level > 0 THEN
3573 oe_debug_pub.add( 'SALES_CREDIT_TYPE_ID'||X_INTERFACE_SCREDIT_REC.SALES_CREDIT_TYPE_ID ) ;
3574 END IF;
3575
3576 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
3577 x_interface_scredit_rec.CREATION_DATE := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(sysdate,p_interface_line_rec.org_id);
3578 x_interface_scredit_rec.LAST_UPDATE_DATE := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(sysdate,p_interface_line_rec.org_id);
3579 ELSE
3580 x_interface_scredit_rec.CREATION_DATE := sysdate;
3581 x_interface_scredit_rec.LAST_UPDATE_DATE := sysdate;
3582 END IF;
3583
3584 x_interface_scredit_rec.CREATED_BY := NVL(oe_standard_wf.g_user_id, fnd_global.user_id); -- 3169637
3585 x_interface_scredit_rec.LAST_UPDATED_BY := NVL(oe_standard_wf.g_user_id, fnd_global.user_id); -- 3169637
3586 x_interface_scredit_rec.INTERFACE_SALESCREDIT_ID := NULL;
3587 x_interface_scredit_rec.INTERFACE_LINE_ID := NULL;
3588 x_interface_scredit_rec.INTERFACE_LINE_CONTEXT := p_interface_line_rec.INTERFACE_LINE_CONTEXT;
3589 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE1 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE1;
3590 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE2 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE2;
3591 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE3 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3;
3592 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE4 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4;
3593 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE5 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE5;
3594 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE6 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE6;
3595 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE7 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7;
3596 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE8 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8;
3597 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE9 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE9;
3598 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE10 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE10;
3599 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE11 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE11;
3600 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE12 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE12;
3601 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE13 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE13;
3602 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE14 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE14;
3603 x_interface_scredit_rec.INTERFACE_LINE_ATTRIBUTE15 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE15;
3604 x_interface_scredit_rec.SALESREP_NUMBER := NULL;
3605 x_interface_scredit_rec.SALESREP_ID := -3;
3606 --x_interface_scredit_rec.SALES_CREDIT_TYPE_ID := 1; Commented off as part of fix for bug 2192220
3607 x_interface_scredit_rec.SALES_CREDIT_PERCENT_SPLIT := 100;
3608 x_interface_scredit_rec.ATTRIBUTE_CATEGORY := NULL;
3609 x_interface_scredit_rec.ATTRIBUTE1 := NULL;
3610 x_interface_scredit_rec.ATTRIBUTE2 := NULL;
3611 x_interface_scredit_rec.ATTRIBUTE3 := NULL;
3612 x_interface_scredit_rec.ATTRIBUTE4 := NULL;
3613 x_interface_scredit_rec.ATTRIBUTE5 := NULL;
3614 x_interface_scredit_rec.ATTRIBUTE6 := NULL;
3615 x_interface_scredit_rec.ATTRIBUTE7 := NULL;
3616 x_interface_scredit_rec.ATTRIBUTE8 := NULL;
3617 x_interface_scredit_rec.ATTRIBUTE9 := NULL;
3618 x_interface_scredit_rec.ATTRIBUTE10 := NULL;
3619 x_interface_scredit_rec.ATTRIBUTE11 := NULL;
3620 x_interface_scredit_rec.ATTRIBUTE12 := NULL;
3621 x_interface_scredit_rec.ATTRIBUTE13 := NULL;
3622 x_interface_scredit_rec.ATTRIBUTE14 := NULL;
3623 x_interface_scredit_rec.ATTRIBUTE15 := NULL;
3624 -- Fix for bug2185729
3625 x_interface_scredit_rec.ORG_ID := p_interface_line_rec.org_id;
3626
3627 IF l_debug_level > 0 THEN
3628 oe_debug_pub.add ( 'value of sysdate '||sysdate);
3629 oe_debug_pub.add ( ' value of CREATION_DATE '||x_interface_scredit_rec.CREATION_DATE||
3630 ' value of LAST_UPDATE_DATE '|| x_interface_scredit_rec.LAST_UPDATE_DATE);
3631 END IF;
3632
3633 IF l_debug_level > 0 THEN
3634 oe_debug_pub.add( 'EXIT PREPARE_SALESCREDIT_REC ( ) PROCEDURE ' , 1 ) ;
3635 END IF;
3636 END Prepare_Salescredit_rec;
3637
3638 procedure convert_to_ar(p_oe_salescredit_rec IN Ra_Interface_Scredits_Rec_Type,
3639 x_ar_salescredit_rec OUT NOCOPY AR_InterfaceSalesCredits_GRP.salescredit_rec_type) IS
3640 Begin
3641 x_ar_salescredit_rec.INTERFACE_SALESCREDIT_ID :=p_oe_salescredit_rec.INTERFACE_SALESCREDIT_ID ;
3642 x_ar_salescredit_rec.INTERFACE_LINE_ID :=p_oe_salescredit_rec.INTERFACE_LINE_ID ;
3643 x_ar_salescredit_rec.INTERFACE_LINE_CONTEXT :=p_oe_salescredit_rec.INTERFACE_LINE_CONTEXT ;
3644 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE1 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE1;
3645 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE2 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE2;
3646 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE3 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE3;
3647 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE4 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE4;
3648 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE5 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE5;
3649 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE6 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE6;
3650 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE7 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE7;
3651 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE8 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE8;
3652 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE9 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE9;
3653 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE10 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE10;
3654 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE11 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE11;
3655 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE12 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE12;
3656 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE13 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE13;
3657 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE14 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE14;
3658 x_ar_salescredit_rec.INTERFACE_LINE_ATTRIBUTE15 :=p_oe_salescredit_rec.INTERFACE_LINE_ATTRIBUTE15;
3659 x_ar_salescredit_rec.SALESREP_NUMBER :=p_oe_salescredit_rec.SALESREP_NUMBER ;
3660 x_ar_salescredit_rec.SALESREP_ID :=p_oe_salescredit_rec.SALESREP_ID ;
3661 x_ar_salescredit_rec.SALESGROUP_ID :=p_oe_salescredit_rec.SALES_GROUP_ID ;
3662 x_ar_salescredit_rec.SALES_CREDIT_TYPE_NAME :=p_oe_salescredit_rec.SALES_CREDIT_TYPE_NAME ;
3663 x_ar_salescredit_rec.SALES_CREDIT_TYPE_ID :=p_oe_salescredit_rec.SALES_CREDIT_TYPE_ID ;
3664 x_ar_salescredit_rec.SALES_CREDIT_AMOUNT_SPLIT :=p_oe_salescredit_rec.SALES_CREDIT_AMOUNT_SPLIT;
3665 x_ar_salescredit_rec.SALES_CREDIT_PERCENT_SPLIT :=p_oe_salescredit_rec.SALES_CREDIT_PERCENT_SPLIT;
3666 x_ar_salescredit_rec.INTERFACE_STATUS :=p_oe_salescredit_rec.INTERFACE_STATUS ;
3667 x_ar_salescredit_rec.REQUEST_ID :=p_oe_salescredit_rec.REQUEST_ID ;
3668 x_ar_salescredit_rec.ATTRIBUTE_CATEGORY :=p_oe_salescredit_rec.ATTRIBUTE_CATEGORY ;
3669 x_ar_salescredit_rec.ATTRIBUTE1 :=p_oe_salescredit_rec.ATTRIBUTE1 ;
3670 x_ar_salescredit_rec.ATTRIBUTE2 :=p_oe_salescredit_rec.ATTRIBUTE2 ;
3671 x_ar_salescredit_rec.ATTRIBUTE3 :=p_oe_salescredit_rec.ATTRIBUTE3 ;
3672 x_ar_salescredit_rec.ATTRIBUTE4 :=p_oe_salescredit_rec.ATTRIBUTE4 ;
3673 x_ar_salescredit_rec.ATTRIBUTE5 :=p_oe_salescredit_rec.ATTRIBUTE5 ;
3674 x_ar_salescredit_rec.ATTRIBUTE6 :=p_oe_salescredit_rec.ATTRIBUTE6 ;
3675 x_ar_salescredit_rec.ATTRIBUTE7 :=p_oe_salescredit_rec.ATTRIBUTE7 ;
3676 x_ar_salescredit_rec.ATTRIBUTE8 :=p_oe_salescredit_rec.ATTRIBUTE8 ;
3677 x_ar_salescredit_rec.ATTRIBUTE9 :=p_oe_salescredit_rec.ATTRIBUTE9 ;
3678 x_ar_salescredit_rec.ATTRIBUTE10 :=p_oe_salescredit_rec.ATTRIBUTE10 ;
3679 x_ar_salescredit_rec.ATTRIBUTE11 :=p_oe_salescredit_rec.ATTRIBUTE11 ;
3680 x_ar_salescredit_rec.ATTRIBUTE12 :=p_oe_salescredit_rec.ATTRIBUTE12 ;
3681 x_ar_salescredit_rec.ATTRIBUTE13 :=p_oe_salescredit_rec.ATTRIBUTE13 ;
3682 x_ar_salescredit_rec.ATTRIBUTE14 :=p_oe_salescredit_rec.ATTRIBUTE14 ;
3683 x_ar_salescredit_rec.ATTRIBUTE15 :=p_oe_salescredit_rec.ATTRIBUTE15 ;
3684 x_ar_salescredit_rec.CREATED_BY :=p_oe_salescredit_rec.CREATED_BY ;
3685 x_ar_salescredit_rec.CREATION_DATE :=p_oe_salescredit_rec.CREATION_DATE ;
3686 x_ar_salescredit_rec.LAST_UPDATED_BY :=p_oe_salescredit_rec.LAST_UPDATED_BY ;
3687 x_ar_salescredit_rec.LAST_UPDATE_DATE :=p_oe_salescredit_rec.LAST_UPDATE_DATE ;
3688 --x_ar_salescredit_rec.LAST_UPDATE_LOGIN :=p_oe_salescredit_rec.LAST_UPDATE_LOGIN ;
3689 x_ar_salescredit_rec.ORG_ID :=p_oe_salescredit_rec.ORG_ID ;
3690
3691 End;
3692
3693
3694 PROCEDURE Insert_Salescredit
3695 ( p_salescredit_rec IN Ra_Interface_Scredits_Rec_Type
3696 ) IS
3697 --
3698 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3699 --
3700 l_msg_count NUMBER;
3701 l_msg_data VARCHAR2(2000);
3702 l_return_status VARCHAR2(15);
3703 l_ar_salescredit_rec AR_InterfaceSalesCredits_GRP.salescredit_rec_type;
3704 BEGIN
3705
3706
3707 IF l_debug_level > 0 THEN
3708 oe_debug_pub.add( 'INSERTING SALES CREDIT RECORDS ' , 5 ) ;
3709 END IF;
3710
3711 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
3712 --OE_Invoice_Ext_Pvt.Insert_Salescredit(p_salescredit_rec);
3713 convert_to_ar(p_oe_salescredit_rec=>p_salescredit_rec,
3714 x_ar_salescredit_rec=>l_ar_salescredit_rec);
3715
3716 AR_InterfaceSalesCredits_GRP.Insert_Salescredit(
3717 p_salescredit_rec=>l_ar_salescredit_rec,
3718 x_return_status =>l_return_status,
3719 x_msg_count =>l_msg_count,
3720 x_msg_data =>l_msg_data);
3721 ELSE --old behavior
3722 INSERT INTO RA_INTERFACE_SALESCREDITS_ALL
3723 (CREATED_BY
3724 ,CREATION_DATE
3725 ,LAST_UPDATED_BY
3726 ,LAST_UPDATE_DATE
3727 ,INTERFACE_SALESCREDIT_ID
3728 ,INTERFACE_LINE_ID
3729 ,INTERFACE_LINE_CONTEXT
3730 ,INTERFACE_LINE_ATTRIBUTE1
3731 ,INTERFACE_LINE_ATTRIBUTE2
3732 ,INTERFACE_LINE_ATTRIBUTE3
3733 ,INTERFACE_LINE_ATTRIBUTE4
3734 ,INTERFACE_LINE_ATTRIBUTE5
3735 ,INTERFACE_LINE_ATTRIBUTE6
3736 ,INTERFACE_LINE_ATTRIBUTE7
3737 ,INTERFACE_LINE_ATTRIBUTE8
3738 ,INTERFACE_LINE_ATTRIBUTE9
3739 ,INTERFACE_LINE_ATTRIBUTE10
3740 ,INTERFACE_LINE_ATTRIBUTE11
3741 ,INTERFACE_LINE_ATTRIBUTE12
3742 ,INTERFACE_LINE_ATTRIBUTE13
3743 ,INTERFACE_LINE_ATTRIBUTE14
3744 ,INTERFACE_LINE_ATTRIBUTE15
3745 ,SALESREP_NUMBER
3746 ,SALESREP_ID
3747 ,SALES_CREDIT_TYPE_NAME
3748 ,SALES_CREDIT_TYPE_ID
3749 ,SALES_CREDIT_AMOUNT_SPLIT
3750 ,SALES_CREDIT_PERCENT_SPLIT
3751 ,INTERFACE_STATUS
3752 ,REQUEST_ID
3753 ,ATTRIBUTE_CATEGORY
3754 ,ATTRIBUTE1
3755 ,ATTRIBUTE2
3756 ,ATTRIBUTE3
3757 ,ATTRIBUTE4
3758 ,ATTRIBUTE5
3759 ,ATTRIBUTE6
3760 ,ATTRIBUTE7
3761 ,ATTRIBUTE8
3762 ,ATTRIBUTE9
3763 ,ATTRIBUTE10
3764 ,ATTRIBUTE11
3765 ,ATTRIBUTE12
3766 ,ATTRIBUTE13
3767 ,ATTRIBUTE14
3768 ,ATTRIBUTE15
3769 ,ORG_ID)
3770 VALUES
3771 (p_salescredit_rec.CREATED_BY
3772 ,p_salescredit_rec.CREATION_DATE
3773 ,p_salescredit_rec.LAST_UPDATED_BY
3774 ,p_salescredit_rec.LAST_UPDATE_DATE
3775 ,p_salescredit_rec.INTERFACE_SALESCREDIT_ID
3776 ,p_salescredit_rec.INTERFACE_LINE_ID
3777 ,p_salescredit_rec.INTERFACE_LINE_CONTEXT
3778 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE1
3779 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE2
3780 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE3
3781 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE4
3782 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE5
3783 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE6
3784 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE7
3785 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE8
3786 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE9
3787 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE10
3788 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE11
3789 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE12
3790 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE13
3791 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE14
3792 ,p_salescredit_rec.INTERFACE_LINE_ATTRIBUTE15
3793 ,p_salescredit_rec.SALESREP_NUMBER
3794 ,p_salescredit_rec.SALESREP_ID
3795 ,p_salescredit_rec.SALES_CREDIT_TYPE_NAME
3796 ,p_salescredit_rec.SALES_CREDIT_TYPE_ID
3797 ,p_salescredit_rec.SALES_CREDIT_AMOUNT_SPLIT
3798 ,p_salescredit_rec.SALES_CREDIT_PERCENT_SPLIT
3799 ,p_salescredit_rec.INTERFACE_STATUS
3800 ,p_salescredit_rec.REQUEST_ID
3801 ,p_salescredit_rec.ATTRIBUTE_CATEGORY
3802 ,p_salescredit_rec.ATTRIBUTE1
3803 ,p_salescredit_rec.ATTRIBUTE2
3804 ,p_salescredit_rec.ATTRIBUTE3
3805 ,p_salescredit_rec.ATTRIBUTE4
3806 ,p_salescredit_rec.ATTRIBUTE5
3807 ,p_salescredit_rec.ATTRIBUTE6
3808 ,p_salescredit_rec.ATTRIBUTE7
3809 ,p_salescredit_rec.ATTRIBUTE8
3810 ,p_salescredit_rec.ATTRIBUTE9
3811 ,p_salescredit_rec.ATTRIBUTE10
3812 ,p_salescredit_rec.ATTRIBUTE11
3813 ,p_salescredit_rec.ATTRIBUTE12
3814 ,p_salescredit_rec.ATTRIBUTE13
3815 ,p_salescredit_rec.ATTRIBUTE14
3816 ,p_salescredit_rec.ATTRIBUTE15
3817 ,p_salescredit_rec.ORG_ID);
3818 END IF;
3819
3820 IF l_debug_level > 0 THEN
3821 oe_debug_pub.add( 'SUCCESSFULLY INSERTED SALES CREDIT RECORDS' , 5 ) ;
3822 END IF;
3823 EXCEPTION WHEN OTHERS THEN
3824 IF l_debug_level > 0 THEN
3825 oe_debug_pub.add( 'UNABLE TO INSERT SALES CREDIT RECORDS -> '||SQLERRM , 1 ) ;
3826 END IF;
3827 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3828 OE_MSG_PUB.Add_Exc_Msg
3829 ( G_PKG_NAME
3830 , 'Insert_Salescredit'
3831 );
3832 END IF;
3833 END Insert_Salescredit;
3834
3835 PROCEDURE Interface_SalesCredits
3836 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
3837 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
3838 , x_return_status OUT NOCOPY VARCHAR2
3839 )
3840 IS
3841 l_interface_scredit_rec RA_Interface_Scredits_Rec_Type;
3842 l_line_scredit_tbl OE_Order_Pub.Line_Scredit_Tbl_Type;
3843 l_header_scredit_tbl OE_Order_Pub.Header_Scredit_Tbl_Type;
3844 l_line_scredit_rec OE_Order_Pub.Line_Scredit_Rec_Type;
3845 l_header_scredit_rec OE_Order_Pub.Header_Scredit_Rec_Type;
3846 l_line_credits NUMBER := 0 ;
3847 l_header_credits NUMBER := 0 ;
3848 Insert_Header_Scredits_flag VARCHAR2(1);
3849 service_grand_parent_id NUMBER := 0;
3850 i NUMBER;
3851 l_quota_flag VARCHAR2(1);
3852 l_order_line_id NUMBER;
3853 l_return_status VARCHAR2(1);
3854 l_service_reference_line_id NUMBER;
3855
3856 --FP bug 3872166
3857 l_total_percent NUMBER;
3858
3859 --
3860 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3861 --
3862 BEGIN
3863 IF l_debug_level > 0 THEN
3864 oe_debug_pub.add( 'ENTER INTERFACE_SALES_CREDITS ( ) PROCEDURE ' , 5 ) ;
3865 END IF;
3866 FOR i IN 1..2 LOOP
3867 IF i=1 THEN
3868 l_quota_flag := 'Y';
3869 IF l_debug_level > 0 THEN
3870 oe_debug_pub.add( 'INSERTING QUOTA SALES CREDITS..' , 5 ) ;
3871 END IF;
3872 ELSIF i = 2 THEN
3873 l_quota_flag := 'N';
3874 IF l_debug_level > 0 THEN
3875 oe_debug_pub.add( 'INSERTING NON-QUOTA SALES CREDITS..' , 5 ) ;
3876 END IF;
3877 END IF;
3878 Query_Line_Scredits(p_line_id => p_line_rec.line_id
3879 ,p_quota_flag => l_quota_flag
3880 ,x_line_scredit_tbl => l_line_scredit_tbl
3881 --FP bug 3872166
3882 ,x_total_percent => l_total_percent );
3883 -- Prepare and insert line sales credits
3884 IF l_line_scredit_tbl.COUNT <> 0 AND
3885 (l_quota_flag = 'N' OR (l_quota_flag = 'Y' AND l_total_percent <> 0)) THEN --FP bug 3872166
3886 FOR I IN 1..l_line_scredit_tbl.COUNT LOOP
3887 l_line_scredit_rec := l_line_scredit_tbl(I);
3888 Prepare_Salescredit_rec
3889 (p_line_scredit_rec => l_line_scredit_rec
3890 ,p_interface_line_rec => p_interface_line_rec
3891 ,x_interface_scredit_rec => l_interface_scredit_rec);
3892 Insert_Salescredit(l_interface_scredit_rec);
3893 END LOOP;
3894 IF l_debug_level > 0 THEN
3895 oe_debug_pub.add( 'INSERTED LINE SALESCREDITS' , 1 ) ;
3896 END IF;
3897 Insert_Header_Scredits_Flag := 'N';
3898 ELSE -- Line has no sales credits
3899 IF p_line_rec.item_type_code = 'SERVICE' AND p_line_rec.service_reference_line_id IS NOT NULL THEN -- line is service and has parent
3900 IF l_debug_level > 0 THEN
3901 oe_debug_pub.add( 'RETRIEVING CUSTOMER PRODUCT LINE ID' ) ;
3902 END IF;
3903 IF p_line_rec.service_reference_type_code = 'CUSTOMER_PRODUCT' THEN
3904 /* Commenting for bug# 5032978
3905 OE_SERVICE_UTIL.Get_Cust_Product_Line_Id
3906 (x_return_status => l_return_status
3907 ,p_reference_line_id => p_line_rec.service_reference_line_id
3908 ,p_customer_id => p_line_rec.sold_to_org_id
3909 ,x_cust_product_line_id=> l_order_line_id
3910 );
3911 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
3912 IF l_debug_level > 0 THEN
3913 oe_debug_pub.add( 'CUSTOMER PRODUCT LINE ID -> ' || L_ORDER_LINE_ID , 5 ) ;
3914 END IF;
3915 l_service_reference_line_id := l_order_line_id;
3916 ELSE
3917 IF l_debug_level > 0 THEN
3918 oe_debug_pub.add( 'UNABLE TO RETRIEVE CUSTOMER PRODUCT LINE ID' , 1 ) ;
3919 END IF;
3920 RAISE NO_DATA_FOUND;
3921 END IF;
3922 end commenting for bug# 5032978 */
3923 l_service_reference_line_id := NULL;
3924 ELSE
3925 l_service_reference_line_id := p_line_rec.service_reference_line_id;
3926 END IF;
3927 END IF;
3928 IF l_service_reference_line_id is NOT NULL then -- service line has a parent
3929 -- Get sales credits for service parent
3930 Query_Line_Scredits(p_line_id => l_service_reference_line_id
3931 , p_quota_flag => l_quota_flag
3932 , x_line_scredit_tbl => l_line_scredit_tbl
3933 -- FP bug 3872166
3934 , x_total_percent => l_total_percent);
3935 IF l_line_scredit_tbl.COUNT <> 0 AND
3936 (l_quota_flag = 'N' OR (l_quota_flag = 'Y' AND l_total_percent <> 0)) THEN -- FP bug 3872166
3937 FOR I IN 1..l_line_scredit_tbl.COUNT LOOP
3938 l_line_scredit_rec := l_line_scredit_tbl(I);
3939 Prepare_Salescredit_rec
3940 (p_line_scredit_rec => l_line_scredit_rec
3941 ,p_interface_line_rec => p_interface_line_rec
3942 ,x_interface_scredit_rec => l_interface_scredit_rec);
3943 Insert_Salescredit(l_interface_scredit_rec);
3944 END LOOP;
3945 IF l_debug_level > 0 THEN
3946 oe_debug_pub.add( 'INSERTED SERVICE PARENT LINE SALESCREDITS' , 1 ) ;
3947 END IF;
3948 Insert_Header_Scredits_Flag := 'N';
3949 ELSE -- Service parent has no sales credits
3950 -- Check if service parent has parent (In case if service parent is an option, class, kit etc)
3951 BEGIN
3952 SELECT top_model_line_id
3953 INTO service_grand_parent_id
3954 FROM oe_order_lines_all /*Bug3261460*/
3955 WHERE line_id = l_service_reference_line_id;
3956 EXCEPTION
3957 WHEN NO_DATA_FOUND THEN
3958 IF l_debug_level > 0 THEN
3959 oe_debug_pub.add( 'UNABLE TO GET SERVICE GRAND PARENT ITEM' , 1);
3960 END IF;
3961 service_grand_parent_id := NULL;
3962 END;
3963 IF (nvl(service_grand_parent_id,0) <> 0 AND service_grand_parent_id <> l_service_reference_line_id) THEN
3964 -- Get sales credits for service grand parent
3965 Query_Line_Scredits(p_line_id => service_grand_parent_id
3966 , p_quota_flag => l_quota_flag
3967 , x_line_scredit_tbl => l_line_scredit_tbl
3968 --FP bug 3872166
3969 , x_total_percent => l_total_percent);
3970 IF l_line_scredit_tbl.COUNT <> 0 AND
3971 (l_quota_flag = 'N' OR (l_quota_flag = 'Y' AND l_total_percent <> 0)) THEN -- FP bug 3872166
3972 FOR I IN 1..l_line_scredit_tbl.COUNT LOOP
3973 l_line_scredit_rec := l_line_scredit_tbl(I);
3974 Prepare_Salescredit_rec
3975 (p_line_scredit_rec => l_line_scredit_rec
3976 ,p_interface_line_rec => p_interface_line_rec
3977 ,x_interface_scredit_rec => l_interface_scredit_rec);
3978 Insert_Salescredit(l_interface_scredit_rec);
3979 END LOOP;
3980 IF l_debug_level > 0 THEN
3981 oe_debug_pub.add( 'INSERTED SERVICE GRAND PARENT LINE SALESCREDITS' , 1 ) ;
3982 END IF;
3983 Insert_Header_Scredits_Flag := 'N';
3984 ELSE -- Service grand parent has no sales credits
3985 --Get header sales credits
3986 Insert_Header_Scredits_Flag := 'Y';
3987 END IF; -- end of service grand parent salescredits
3988 ELSE -- Service has no grand parent
3989 --Get header sales credits
3990 Insert_Header_Scredits_Flag := 'Y';
3991 END IF; -- end of service grand parent
3992 END IF; -- end of service parent
3993 -- Check if line is option, class or kit
3994 ELSIF (p_line_rec.top_model_line_id IS NOT NULL AND
3995 p_line_rec.top_model_line_id <> p_line_rec.line_id) THEN
3996 -- Get sales credits for parent line
3997 Query_Line_Scredits(p_line_id => p_line_rec.top_model_line_id
3998 , p_quota_flag => l_quota_flag
3999 , x_line_scredit_tbl => l_line_scredit_tbl
4000 -- FP bug 3872166
4001 , x_total_percent => l_total_percent);
4002 IF l_line_scredit_tbl.COUNT <> 0 AND
4003 (l_quota_flag = 'N' OR (l_quota_flag = 'Y' AND l_total_percent <> 0)) THEN --FP bug 3872166
4004 FOR I IN 1..l_line_scredit_tbl.COUNT LOOP
4005 l_line_scredit_rec := l_line_scredit_tbl(I);
4006 Prepare_Salescredit_rec
4007 (p_line_scredit_rec => l_line_scredit_rec
4008 ,p_interface_line_rec => p_interface_line_rec
4009 ,x_interface_scredit_rec => l_interface_scredit_rec);
4010 Insert_Salescredit(l_interface_scredit_rec);
4011 END LOOP;
4012 IF l_debug_level > 0 THEN
4013 oe_debug_pub.add( 'INSERTED PARENT LINE SALESCREDITS' , 1 ) ;
4014 END IF;
4015 Insert_Header_Scredits_Flag := 'N';
4016 ELSE -- parent has no sales credits
4017 -- Prepare and insert header sales credits
4018 Insert_Header_Scredits_flag := 'Y';
4019 END IF; -- end of model line
4020 ELSE -- line has no parent
4021 Insert_Header_Scredits_flag := 'Y';
4022 END IF;
4023 END IF;
4024 IF Insert_Header_Scredits_flag = 'Y' THEN
4025 -- Prepare and insert header sales credits
4026 Query_Header_Scredits(p_header_id => p_line_rec.header_id
4027 , p_quota_flag => l_quota_flag
4028 , x_header_scredit_tbl => l_header_scredit_tbl);
4029 IF l_header_scredit_tbl.COUNT <> 0 THEN
4030 FOR I IN 1..l_header_scredit_tbl.COUNT LOOP
4031 l_header_scredit_rec := l_header_scredit_tbl(I);
4032 Prepare_Salescredit_rec
4033 (p_header_scredit_rec => l_header_scredit_rec
4034 ,p_interface_line_rec => p_interface_line_rec
4035 ,x_interface_scredit_rec => l_interface_scredit_rec);
4036 Insert_Salescredit(l_interface_scredit_rec);
4037 END LOOP;
4038 IF l_debug_level > 0 THEN
4039 oe_debug_pub.add( 'INSERTED HEADER SALESCREDITS' , 1 ) ;
4040 END IF;
4041 Insert_Header_Scredits_Flag := 'N';
4042 END IF;
4043 END IF;
4044 END LOOP;
4045 x_return_status := FND_API.G_RET_STS_SUCCESS;
4046 IF l_debug_level > 0 THEN
4047 oe_debug_pub.add( 'INTERFACE_SALES_CREDITS ( ) PROCDURE SUCCESS : '||X_RETURN_STATUS , 1 ) ;
4048 END IF;
4049 EXCEPTION
4050 WHEN OTHERS THEN
4051 IF l_debug_level > 0 THEN
4052 oe_debug_pub.add( 'EXCEPTION INTERFACE_SALES_CREDITS ( ) '||SQLERRM , 1 ) ;
4053 END IF;
4054 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4055 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4056 THEN
4057 OE_MSG_PUB.Add_Exc_Msg
4058 ( G_PKG_NAME
4059 , 'Interface_SalesCredits');
4060 END IF;
4061 END Interface_SalesCredits;
4062
4063 PROCEDURE Interface_scredits_for_freight
4064 ( p_line_rec IN OE_Order_PUB.Line_Rec_Type
4065 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
4066 , p_line_level_charge IN VARCHAR2
4067 ) IS
4068 l_header_scredit_tbl OE_Order_PUB.Header_Scredit_Tbl_Type;
4069 l_header_scredit_rec OE_Order_PUB.Header_Scredit_Rec_Type;
4070 l_interface_scredit_rec RA_Interface_Scredits_Rec_Type;
4071 l_cr_srep_for_freight VARCHAR2(30); --moac moving the initialization to the body
4072 l_return_status VARCHAR2(30);
4073 --
4074 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4075 --
4076 BEGIN
4077 IF l_debug_level > 0 THEN
4078 oe_debug_pub.add( 'INTERFACING SALES CREDITS FOR FREIGHT' , 5 ) ;
4079 END IF;
4080 --moac
4081 l_cr_srep_for_freight := NVL(OE_SYS_PARAMETERS.value('WSH_CR_SREP_FOR_FREIGHT',p_line_rec.org_id), 'N');
4082 -- If the profile option 'OM: Credit Salesperson for Freight on Sales'
4083 -- is set to 'Yes' then interface header/line sales credits otherwise
4084 -- insert dummy sales credits.
4085 IF l_cr_srep_for_freight = 'Y' THEN
4086 IF p_line_level_charge = 'Y' THEN
4087 -- interface line sales credits if there are any otherwise get from its parent
4088 Interface_Salescredits(p_line_rec
4089 ,p_interface_line_rec
4090 ,l_return_status);
4091 ELSE
4092 --Interface quota, non-quota Header Sales Credits
4093 OE_Header_Scredit_Util.Query_Rows(p_header_id => p_line_rec.header_id, x_header_scredit_tbl=>l_header_scredit_tbl);
4094 IF l_header_scredit_tbl.COUNT <> 0 THEN
4095 FOR I IN 1..l_header_scredit_tbl.COUNT LOOP
4096 l_header_scredit_rec := l_header_scredit_tbl(I);
4097 Prepare_Salescredit_rec
4098 (p_header_scredit_rec => l_header_scredit_rec
4099 ,p_interface_line_rec => p_interface_line_rec
4100 ,x_interface_scredit_rec => l_interface_scredit_rec);
4101 Insert_Salescredit(l_interface_scredit_rec);
4102 END LOOP;
4103 END IF;
4104 END IF;
4105 ELSE
4106 -- Interface dummy quota freight sales credits
4107 Prepare_Salescredit_rec
4108 (p_interface_line_rec => p_interface_line_rec
4109 ,x_interface_scredit_rec => l_interface_scredit_rec);
4110 Insert_Salescredit(l_interface_scredit_rec);
4111 END IF;
4112 IF l_debug_level > 0 THEN
4113 oe_debug_pub.add( 'INTERFACE SALES CREDITS FOR FREIGHT SUCCESSFULLY ' , 5 ) ;
4114 END IF;
4115 EXCEPTION
4116 WHEN OTHERS THEN
4117 IF l_debug_level > 0 THEN
4118 oe_debug_pub.add( 'EXCEPTION , INTERFACE SALES CREDITS FOR FREIGHT '||SQLERRM , 1 ) ;
4119 END IF;
4120 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4121 THEN
4122 OE_MSG_PUB.Add_Exc_Msg
4123 ( G_PKG_NAME
4124 , 'Interface_scredits_for_freight'
4125 );
4126 END IF;
4127 END Interface_scredits_for_freight;
4128 --Customer Acceptance
4129 FUNCTION Line_Rejected(p_line_rec IN OE_ORDER_PUB.Line_Rec_Type) RETURN BOOLEAN IS
4130 BEGIN
4131
4132 IF p_line_rec.line_category_code= 'ORDER' THEN
4133 IF (p_line_rec.flow_status_code='PRE-BILLING_ACCEPTANCE' OR
4134 OE_ACCEPTANCE_UTIL.Pre_billing_acceptance_on (p_line_rec => p_line_rec))
4135 AND OE_ACCEPTANCE_UTIL.Acceptance_Status(p_line_rec => p_line_rec) = 'REJECTED' THEN
4136 RETURN TRUE;
4137 ELSE
4138 RETURN FALSE;
4139 END IF;
4140
4141 ELSE -- Return line
4142
4143 IF p_line_rec.reference_line_id IS NOT NULL THEN
4144 IF OE_ACCEPTANCE_UTIL.Pre_billing_acceptance_on (p_line_id => p_line_rec.reference_line_id)
4145 AND OE_ACCEPTANCE_UTIL.Acceptance_Status(p_line_id => p_line_rec.reference_line_id) = 'REJECTED' THEN
4146 RETURN TRUE;
4147 ELSE
4148 RETURN FALSE;
4149 END IF;
4150 ELSE
4151 RETURN FALSE;
4152 END IF;
4153 END IF;
4154 END Line_Rejected;
4155
4156 PROCEDURE Prepare_Contingency_rec
4157 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
4158 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
4159 , x_interface_conts_rec IN OUT NOCOPY RA_Interface_Conts_Rec_Type
4160 ) IS
4161 l_revrec_event_code VARCHAR2(30);
4162 l_expiration_days NUMBER;
4163 --
4164 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4165 --
4166 BEGIN
4167 IF l_debug_level > 0 THEN
4168 oe_debug_pub.add( 'ENTER PREPARE_CONTINGENCIES_REC ( ) PROCEDURE' , 5 ) ;
4169 END IF;
4170
4171 OE_ACCEPTANCE_UTIL.Get_Contingency_attributes
4172 (p_line_rec => p_line_rec
4173 ,x_contingency_id => x_interface_conts_rec.contingency_id
4174 ,x_revrec_event_code => l_revrec_event_code
4175 ,x_revrec_expiration_days => l_expiration_days);
4176
4177 IF x_interface_conts_rec.contingency_id IS NULL THEN
4178 IF l_debug_level > 0 THEN
4179 oe_debug_pub.add( 'Returning from prepare_contingencies - no contingency');
4180 END IF;
4181 RETURN;
4182 END IF;
4183 x_interface_conts_rec.CREATION_DATE := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(sysdate,p_interface_line_rec.org_id);
4184 x_interface_conts_rec.LAST_UPDATE_DATE:= INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(sysdate,p_interface_line_rec.org_id);
4185 x_interface_conts_rec.CREATED_BY := p_interface_line_rec.created_by;
4186 x_interface_conts_rec.LAST_UPDATED_BY := p_interface_line_rec.last_updated_by;
4187 x_interface_conts_rec.INTERFACE_LINE_CONTEXT := p_interface_line_rec.INTERFACE_LINE_CONTEXT;
4188 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE1 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE1;
4189 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE2 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE2;
4190 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE3 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3;
4191 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE4 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4;
4192 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE5 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE5;
4193 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE6 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE6;
4194 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE7 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7;
4195 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE8 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8;
4196 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE9 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE9;
4197 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE10 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE10;
4198 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE11 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE11;
4199 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE12 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE12;
4200 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE13 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE13;
4201 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE14 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE14;
4202 x_interface_conts_rec.INTERFACE_LINE_ATTRIBUTE15 := p_interface_line_rec.INTERFACE_LINE_ATTRIBUTE15;
4203
4204 x_interface_conts_rec.EXPIRATION_DAYS := nvl(p_line_rec.REVREC_EXPIRATION_DAYS, l_expiration_days);
4205 x_interface_conts_rec.EXPIRATION_DATE := NULL;
4206 IF p_line_rec.REVREC_SIGNATURE_DATE IS NOT NULL THEN
4207 x_interface_conts_rec.COMPLETED_FLAG := 'Y';
4208 END IF;
4209 /* commenting out because AR does not support expiration date on ar_interface_conts_all at this point of time. See bug# 5026580
4210 IF x_interface_conts_rec.EXPIRATION_DATE IS NOT NULL THEN
4211 x_interface_conts_rec.EXPIRATION_DATE := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(x_interface_conts_rec.EXPIRATION_DATE,p_line_rec.org_id);
4212 x_interface_conts_rec.COMPLETED_FLAG := 'Y';
4213 ELSE -- bug# 5049677
4214 x_interface_conts_rec.expiration_days := nvl(p_line_rec.REVREC_EXPIRATION_DAYS, l_expiration_days);
4215 END IF; */
4216 x_interface_conts_rec.org_id := p_line_rec.org_id;
4217 x_interface_conts_rec.completed_by := p_line_rec.accepted_by;
4218
4219 IF l_debug_level > 0 THEN
4220 oe_debug_pub.add( 'EXITING PREPARE_CONTINGENCY_REC' , 5 ) ;
4221 END IF;
4222 END Prepare_Contingency_rec;
4223
4224 PROCEDURE Insert_Contingency
4225 ( p_contingency_rec IN Ra_Interface_Conts_Rec_Type
4226 ) IS
4227 --
4228 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4229 --
4230 l_msg_count NUMBER;
4231 l_msg_data VARCHAR2(2000);
4232 l_return_status VARCHAR2(15);
4233
4234 BEGIN
4235
4236 IF l_debug_level > 0 THEN
4237 oe_debug_pub.add( 'INSERTING CONTINGENCY RECORDS ' , 5 ) ;
4238 END IF;
4239
4240 INSERT INTO AR_INTERFACE_CONTS_ALL
4241 (CREATED_BY
4242 ,CREATION_DATE
4243 ,LAST_UPDATED_BY
4244 ,LAST_UPDATE_DATE
4245 ,INTERFACE_LINE_CONTEXT
4246 ,INTERFACE_LINE_ATTRIBUTE1
4247 ,INTERFACE_LINE_ATTRIBUTE2
4248 ,INTERFACE_LINE_ATTRIBUTE3
4249 ,INTERFACE_LINE_ATTRIBUTE4
4250 ,INTERFACE_LINE_ATTRIBUTE5
4251 ,INTERFACE_LINE_ATTRIBUTE6
4252 ,INTERFACE_LINE_ATTRIBUTE7
4253 ,INTERFACE_LINE_ATTRIBUTE8
4254 ,INTERFACE_LINE_ATTRIBUTE9
4255 ,INTERFACE_LINE_ATTRIBUTE10
4256 ,INTERFACE_LINE_ATTRIBUTE11
4257 ,INTERFACE_LINE_ATTRIBUTE12
4258 ,INTERFACE_LINE_ATTRIBUTE13
4259 ,INTERFACE_LINE_ATTRIBUTE14
4260 ,INTERFACE_LINE_ATTRIBUTE15
4261 ,INTERFACE_CONTINGENCY_ID
4262 ,CONTINGENCY_ID
4263 ,EXPIRATION_DAYS
4264 ,EXPIRATION_DATE
4265 ,COMPLETED_FLAG
4266 ,EXPIRATION_EVENT_DATE
4267 ,COMPLETED_BY
4268 ,ORG_ID)
4269 VALUES
4270 (p_contingency_rec.CREATED_BY
4271 ,p_contingency_rec.CREATION_DATE
4272 ,p_contingency_rec.LAST_UPDATED_BY
4273 ,p_contingency_rec.LAST_UPDATE_DATE
4274 ,p_contingency_rec.INTERFACE_LINE_CONTEXT
4275 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE1
4276 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE2
4277 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE3
4278 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE4
4279 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE5
4280 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE6
4281 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE7
4282 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE8
4283 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE9
4284 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE10
4285 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE11
4286 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE12
4287 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE13
4288 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE14
4289 ,p_contingency_rec.INTERFACE_LINE_ATTRIBUTE15
4290 ,p_contingency_rec.interface_contingency_id
4291 , p_contingency_rec.contingency_id
4292 , p_contingency_rec.expiration_days
4293 , p_contingency_rec.EXPIRATION_DATE
4294 , p_contingency_rec.COMPLETED_FLAG
4295 , p_contingency_rec.EXPIRATION_EVENT_DATE
4296 , p_contingency_rec.completed_by
4297 ,p_contingency_rec.ORG_ID);
4298
4299 IF l_debug_level > 0 THEN
4300 oe_debug_pub.add( 'SUCCESSFULLY INSERTED CONTINGENCY RECORDS' , 5 ) ;
4301 END IF;
4302 EXCEPTION WHEN OTHERS THEN
4303 IF l_debug_level > 0 THEN
4304 oe_debug_pub.add( 'UNABLE TO INSERT CONTINGENCY RECORDS -> '||SQLERRM , 1 ) ;
4305 END IF;
4306 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4307 OE_MSG_PUB.Add_Exc_Msg
4308 ( G_PKG_NAME
4309 , 'Insert_Contingency'
4310 );
4311 END IF;
4312 END Insert_Contingency;
4313
4314 --This procedure interfaces the contingency record by preparing it and inserting into AR_INTERFACE_CONTS_ALL
4315
4316 PROCEDURE Interface_Contingencies
4317 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
4318 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
4319 , x_return_status OUT NOCOPY VARCHAR2
4320 )
4321 IS
4322 l_interface_conts_rec RA_Interface_Conts_Rec_Type;
4323 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
4324 --
4325 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4326 --
4327 BEGIN
4328 IF l_debug_level > 0 THEN
4329 oe_debug_pub.add( 'ENTER INTERFACE_CONTINGENCIES ( ) PROCEDURE ' , 5 ) ;
4330 END IF;
4331
4332 IF NVL(OE_SYS_PARAMETERS.VALUE('ENABLE_FULFILLMENT_ACCEPTANCE'), 'N') = 'N' THEN
4333 IF l_debug_level > 0 THEN
4334 oe_debug_pub.add( 'Acceptance not enabled, Not interfacing Contingency details');
4335 END IF;
4336 -- Do not interface acceptance details
4337 RETURN;
4338 END IF;
4339
4340 Prepare_Contingency_rec
4341 ( p_line_rec => p_line_rec
4342 , p_interface_line_rec => p_interface_line_rec
4343 , x_interface_conts_rec => l_interface_conts_rec
4344 );
4345
4346 IF l_interface_conts_rec.contingency_id IS NOT NULL THEN
4347 IF l_debug_level > 0 THEN
4348 oe_debug_pub.add( 'Interfacing Contingency details');
4349 END IF;
4350 Insert_Contingency(l_interface_conts_rec);
4351 ELSE
4352 IF l_debug_level > 0 THEN
4353 oe_debug_pub.add( 'No Contingency on the line, Not interfacing Contingency details');
4354 END IF;
4355 RETURN;
4356 END IF;
4357 x_return_status := l_return_status;
4358 IF l_debug_level > 0 THEN
4359 oe_debug_pub.add( 'INTERFACE_CONTINGENCIES ( ) PROCDURE SUCCESS : '||l_RETURN_STATUS , 1 ) ;
4360 END IF;
4361 EXCEPTION
4362 WHEN OTHERS THEN
4363 IF l_debug_level > 0 THEN
4364 oe_debug_pub.add( 'EXCEPTION INTERFACE_CONTINGENCIES ( ) '||SQLERRM , 1 ) ;
4365 END IF;
4366 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4367 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4368 THEN
4369 OE_MSG_PUB.Add_Exc_Msg
4370 ( G_PKG_NAME
4371 , 'Interface_Contingencies');
4372 END IF;
4373 END Interface_Contingencies;
4374 --customer acceptance
4375 -- 3685479 Changed the signature of the procedure with extra parameter p_adjustments_tbl
4376 PROCEDURE Get_Rounding_Diff
4377 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
4378 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
4379 , p_adjustments_tbl IN OE_Header_Adj_Util.Line_Adjustments_Tab_Type
4380 , x_rounding_diff OUT NOCOPY NUMBER
4381 ) IS
4382 l_adjustments_tbl OE_Header_Adj_Util.Line_Adjustments_Tab_Type;
4383 l_adjustments_rec OE_Header_Adj_Util.Line_Adjustments_Rec_Type;
4384 l_line_adj_rec OE_Order_PUB.Line_Adj_Rec_Type;
4385 l_line_tot_amount NUMBER;
4386 l_ind_line_tot NUMBER;
4387 l_ind_disc_tot NUMBER;
4388 l_comb_ind_line_tots NUMBER;
4389 --
4390 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4391 --
4392 l_header_id NUMBER;
4393 l_line_id NUMBER;
4394 BEGIN
4395 IF l_debug_level > 0 THEN
4396 oe_debug_pub.add( 'ENTER GET_ROUNDING_DIFF ( ) PROCEDURE' , 5 ) ;
4397 END IF;
4398
4399 -- Removed the previous call to get_line_adjustments as adjustment table is passed now
4400
4401 IF l_debug_level > 0 THEN
4402 oe_debug_pub.add( 'p_adjustments_tbl.COUNT:'||p_adjustments_tbl.COUNT);
4403 END IF;
4404
4405 -- 3685479 Replaced call to show_detail_discounts by the foll IF
4406 IF (oe_sys_parameters.value('OE_DISCOUNT_DETAILS_ON_INVOICE',p_line_rec.org_id) = 'Y' AND p_adjustments_tbl.COUNT > 0) THEN --moac
4407 -- get line total when the profile is off
4408 Rounded_Amount(p_currency_code => p_interface_line_rec.currency_code
4409 ,p_unrounded_amount => (p_line_rec.unit_selling_price * p_interface_line_rec.quantity)
4410 ,x_rounded_amount => l_line_tot_amount);
4411 IF l_debug_level > 0 THEN
4412 oe_debug_pub.add( 'LINE TOTAL WHEN SHOW DISCOUNTS PROFILE IS OFF: '||L_LINE_TOT_AMOUNT , 5 ) ;
4413 END IF;
4414 -- get line total when the profile is on
4415 Rounded_Amount(p_currency_code => p_interface_line_rec.currency_code
4416 ,p_unrounded_amount => (p_line_rec.unit_list_price * p_interface_line_rec.quantity)
4417 ,x_rounded_amount => l_ind_line_tot);
4418 IF l_debug_level > 0 THEN
4419 oe_debug_pub.add( 'LINE TOTAL WHEN SHOW DISCOUNTS PROFILE IS ON: '||L_IND_LINE_TOT , 5 ) ;
4420 END IF;
4421 IF p_adjustments_tbl.COUNT <> 0 THEN
4422 FOR I IN 1..p_adjustments_tbl.COUNT LOOP
4423 l_adjustments_rec := p_adjustments_tbl(I);
4424 Rounded_Amount(p_currency_code => p_interface_line_rec.currency_code
4425 ,p_unrounded_amount => (l_adjustments_rec.unit_discount_amount * p_interface_line_rec.quantity * -1)
4426 ,x_rounded_amount => l_ind_disc_tot);
4427 IF l_debug_level > 0 THEN
4428 oe_debug_pub.add( 'PROCESSING RECORD# '||I|| ': '||'DISCOUNT LINE TOTAL FOR ADJ_ID= '||L_ADJUSTMENTS_REC.PRICE_ADJUSTMENT_ID||': ' ||L_IND_DISC_TOT , 5 ) ;
4429 END IF;
4430 l_ind_line_tot := l_ind_line_tot + l_ind_disc_tot;
4431 IF l_debug_level > 0 THEN
4432 oe_debug_pub.add( 'INTERMEDIATE TOTAL: '||L_IND_LINE_TOT , 5 ) ;
4433 END IF;
4434 END LOOP;
4435 Rounded_Amount(p_currency_code => p_interface_line_rec.currency_code
4436 ,p_unrounded_amount => l_ind_line_tot
4437 ,x_rounded_amount => l_comb_ind_line_tots);
4438 IF l_debug_level > 0 THEN
4439 oe_debug_pub.add( 'ROUNDED TOTAL FOR THE LINE WHEN SHOW DISCOUNTS IS ON => '||L_COMB_IND_LINE_TOTS , 5 ) ;
4440 END IF;
4441 END IF;
4442 IF l_line_tot_amount = l_comb_ind_line_tots THEN
4443 x_rounding_diff := NULL;
4444 ELSE
4445 -- This difference should go with the first discount line
4446 x_rounding_diff := l_line_tot_amount - l_comb_ind_line_tots;
4447 END IF;
4448 END IF;
4449 IF l_debug_level > 0 THEN
4450 oe_debug_pub.add( 'EXIT GET_ROUNDING_DIFF ( ) WITH ROUNDING DIFFERENCE : '||X_ROUNDING_DIFF , 5 ) ;
4451 END IF;
4452 EXCEPTION
4453 WHEN OTHERS THEN
4454 IF l_debug_level > 0 THEN
4455 oe_debug_pub.add( 'EXCEPTION , ROUNDING DIFFERENCE '||SQLERRM , 1 ) ;
4456 END IF;
4457 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4458 THEN
4459 OE_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,'Get_Rounding_Diff');
4460 END IF;
4461 END Get_Rounding_Diff;
4462
4463 PROCEDURE Interface_Detail_Discounts
4464 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
4465 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
4466 , x_return_status OUT NOCOPY VARCHAR2
4467 ) IS
4468 l_discounts_rec RA_Interface_Lines_Rec_Type;
4469 l_adjustments_tbl OE_Header_Adj_Util.Line_Adjustments_Tab_Type;
4470 l_adjustments_rec OE_Header_Adj_Util.Line_Adjustments_Rec_Type;
4471 l_line_adj_rec OE_Order_PUB.Line_Adj_Rec_Type;
4472 l_header_adj_rec OE_Order_PUB.Header_Adj_Rec_Type;
4473 l_return_status VARCHAR2(30);
4474 l_rounding_diff NUMBER;
4475 l_rounding_diff_applied VARCHAR2(1) :='N';
4476 l_reference_line_id NUMBER;
4477
4478 l_ref_header_id NUMBER;
4479 l_ref_line_id NUMBER;
4480 l_rounded_amount NUMBER;
4481
4482 cursor order_info(c_line_id number)
4483 is
4484 select header_id, line_id
4485 from oe_order_lines_all
4486 where line_id = c_line_id;
4487 --
4488 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4489 --
4490 l_header_id NUMBER;
4491 l_line_id NUMBER;
4492 BEGIN
4493 IF l_debug_level > 0 THEN
4494 oe_debug_pub.add( 'ENTERING INTERFACE_DETAIL_DISCOUNTS ( ) PROCEDURE ' , 5 ) ;
4495 END IF;
4496 -- 3661895 The IF will be true only for return retrobilled RMA, all others will go through else
4497 -- RT{
4498 IF (p_line_rec.line_category_code = 'RETURN'
4499 and p_line_rec.reference_line_id IS NOT NULL
4500 and p_line_rec.retrobill_request_id IS NOT NULL) THEN
4501
4502 OE_RETROBILL_PVT.Get_Line_Adjustments
4503 (p_line_rec => p_line_rec
4504 ,x_line_adjustments => l_adjustments_tbl);
4505 ELSE
4506
4507 OE_Header_Adj_Util.Get_Line_Adjustments
4508 (p_header_id => p_line_rec.header_id
4509 ,p_line_id => p_line_rec.line_id
4510 ,x_line_adjustments => l_adjustments_tbl);
4511 END IF;
4512 -- RT}
4513
4514 -- Prepare l_discounts_rec from l_adjustments_tbl and p_interface_line_rec
4515 -- keep all other info same as line
4516 IF l_adjustments_tbl.COUNT <> 0 THEN
4517 FOR I IN 1..l_adjustments_tbl.COUNT LOOP
4518 l_adjustments_rec := l_adjustments_tbl(I);
4519 l_discounts_rec := p_interface_line_rec;
4520 OE_Line_Adj_Util.Query_Row(p_price_adjustment_id=>l_adjustments_rec.price_adjustment_id,x_line_adj_rec=>l_line_adj_rec);
4521 -- Do not set mandatory grouping columns to different value than order line.
4522 -- This can cause discount lines to group into different invoice (if values
4523 -- are different from sales order line)
4524 -- l_discounts_rec.INTERFACE_LINE_ATTRIBUTE3 := '0';
4525 --l_discounts_rec.INTERFACE_LINE_ATTRIBUTE4 := '0'; -- bug 5843869
4526 l_discounts_rec.INTERFACE_LINE_ATTRIBUTE7 := '0';
4527 /* 1847224 l_discounts_rec.INTERFACE_LINE_ATTRIBUTE8 := '0'; */
4528 l_discounts_rec.INTERFACE_LINE_ATTRIBUTE11 := l_adjustments_rec.price_adjustment_id;
4529 /* 1789057, populate list_line_no in addition to adjustment name */
4530 if l_adjustments_rec.list_line_no is NULL then
4531 l_discounts_rec.Description := l_adjustments_rec.adjustment_name;
4532 else
4533 l_discounts_rec.Description := substr(l_adjustments_rec.adjustment_name,1,119)||'.'||substr(l_adjustments_rec.list_line_no,1,120);
4534 end if;
4535
4536 -- bug 2509121.
4537 -- translated description is only needed for sales order line.
4538 IF l_discounts_rec.translated_description is not null THEN
4539 l_discounts_rec.translated_description := null;
4540 END IF;
4541
4542 -- Quantity comes with the correct creation sign from the interface_line record. No need to adjust here
4543 l_discounts_rec.Unit_Selling_Price := l_adjustments_rec.unit_discount_amount * -1;
4544 l_discounts_rec.Unit_Standard_Price := l_adjustments_rec.unit_discount_amount * -1;
4545 IF l_debug_level > 0 THEN
4546 oe_debug_pub.add( 'ORIGINAL UNIT DISCOUNT AMOUNT : '||L_ADJUSTMENTS_REC.UNIT_DISCOUNT_AMOUNT , 5 ) ;
4547 END IF;
4548 Rounded_Amount(p_currency_code => l_discounts_rec.currency_code
4549 ,p_unrounded_amount => (l_discounts_rec.unit_selling_price * l_discounts_rec.quantity)
4550 ,x_rounded_amount => l_discounts_rec.amount);
4551 IF l_debug_level > 0 THEN
4552 oe_debug_pub.add( 'DISCOUNT UNIT_SELLING_PRICE: '||L_DISCOUNTS_REC.UNIT_SELLING_PRICE , 5 ) ;
4553 oe_debug_pub.add( 'DISCOUNT UNIT_STANDARD_PRICE: '||L_DISCOUNTS_REC.UNIT_STANDARD_PRICE , 5 ) ;
4554 oe_debug_pub.add( 'DISCOUNT AMOUNT: '||L_DISCOUNTS_REC.AMOUNT , 5 ) ;
4555 END IF;
4556 IF l_rounding_diff_applied = 'N' THEN
4557 IF (l_discounts_rec.quantity = 0 OR l_discounts_rec.amount = 0) THEN
4558 IF l_debug_level > 0 THEN
4559 oe_debug_pub.add( 'NOT APPLYING ROUNDING DIFF TO THIS DISCOUNT' ) ;
4560 END IF;
4561 ELSE
4562 -- 3685479 Changed signature to pass adjustments table
4563 Get_Rounding_Diff(p_line_rec => p_line_rec
4564 ,p_interface_line_rec => p_interface_line_rec
4565 ,p_adjustments_tbl => l_adjustments_tbl
4566 , x_rounding_diff => l_rounding_diff);
4567 IF (l_rounding_diff IS NOT NULL AND l_rounding_diff <> 0) THEN
4568 l_discounts_rec.amount := l_discounts_rec.amount + l_rounding_diff;
4569 IF l_debug_level > 0 THEN
4570 oe_debug_pub.add( 'DISCOUNT TOTAL AFTER ADDING ROUNDING DIFF: '||L_DISCOUNTS_REC.AMOUNT , 5 ) ;
4571 END IF;
4572
4573 Rounded_Amount(p_currency_code => l_discounts_rec.currency_code
4574 ,p_unrounded_amount => l_discounts_rec.amount
4575 ,x_rounded_amount => l_rounded_amount);
4576
4577 l_discounts_rec.amount := l_rounded_amount;
4578
4579 IF l_debug_level > 0 THEN
4580 oe_debug_pub.add( 'DISCOUNT TOTAL AFTER ADDING ROUNDING DIFF AND ROUNDING: '||L_DISCOUNTS_REC.AMOUNT , 5 ) ;
4581 END IF;
4582 l_discounts_rec.unit_selling_price := l_discounts_rec.amount /l_discounts_rec.quantity;
4583 IF l_debug_level > 0 THEN
4584 oe_debug_pub.add( 'DISCOUNT UNIT_SELLING_PRICE AFTER ADDING ROUNDING DIFF: '||L_DISCOUNTS_REC.UNIT_SELLING_PRICE , 5 ) ;
4585 END IF;
4586 END IF;
4587 l_rounding_diff_applied := 'Y';
4588 END IF;
4589 END IF;
4590 l_discounts_rec.Fob_Point := NULL;
4591 -- l_discounts_rec.Ship_Via := NULL; -- for bug# 5024577
4592 -- l_discounts_rec.Waybill_Number := NULL; --bug 5843869
4593 IF l_debug_level > 0 THEN
4594 oe_debug_pub.add( 'REFERENCE LINE_ID '||L_DISCOUNTS_REC.REFERENCE_LINE_ID , 5 ) ;
4595 oe_debug_pub.add( 'LINE CATEGORY CODE '||P_LINE_REC.LINE_CATEGORY_CODE , 5 ) ;
4596 END IF;
4597 IF p_line_rec.line_category_code = 'RETURN' AND l_discounts_rec.reference_line_id IS NOT NULL THEN
4598 -- 3645784
4599 -- RT{Retrobill Lines with line type return will not have reference information populated
4600 -- So setting the reference info with original order Header_id and Line_id
4601 IF ( p_line_rec.order_source_id = 27) THEN
4602 l_ref_header_id := to_number(p_line_rec.orig_sys_document_ref);
4603 l_ref_line_id := to_number(p_line_rec.orig_sys_line_ref);
4604 oe_debug_pub.add('Retro:After setting reference line id');
4605 ELSE
4606 FOR order_info_rec in order_info(p_line_rec.reference_line_id) loop
4607 l_ref_header_id := order_info_rec.header_id;
4608 l_ref_line_id := order_info_rec.line_id;
4609 END LOOP;
4610 END IF;
4611 oe_debug_pub.add('l_ref_header_id'||l_ref_header_id);
4612 oe_debug_pub.add('l_ref_line_id'||l_ref_line_id);
4613 BEGIN
4614 SELECT dis.customer_trx_line_id
4615 INTO l_reference_line_id
4616 FROM RA_CUSTOMER_TRX_LINES_ALL DIS,
4617 RA_CUSTOMER_TRX_LINES_ALL PAR
4618 WHERE PAR.CUSTOMER_TRX_LINE_ID = L_DISCOUNTS_REC.REFERENCE_LINE_ID
4619 AND PAR.CUSTOMER_TRX_ID = DIS.CUSTOMER_TRX_ID
4620 AND DIS.INTERFACE_LINE_ATTRIBUTE6 = NVL(l_ref_line_id,DIS.INTERFACE_LINE_ATTRIBUTE6) --Bug2966839
4621 AND DIS.INTERFACE_LINE_ATTRIBUTE11 =
4622 (SELECT D.PRICE_ADJUSTMENT_ID
4623 FROM OE_PRICE_ADJUSTMENTS D
4624 WHERE D.HEADER_ID = l_ref_header_id
4625 AND NVL(D.LINE_ID, l_ref_line_id) = l_ref_line_id
4626 AND D.APPLIED_FLAG = 'Y' -- 3630426 Added for Retrobilling
4627 AND D.LIST_LINE_ID =
4628 (SELECT D2.LIST_LINE_ID
4629 FROM OE_PRICE_ADJUSTMENTS D2
4630 WHERE D2.PRICE_ADJUSTMENT_ID = L_DISCOUNTS_REC.INTERFACE_LINE_ATTRIBUTE11));
4631
4632 EXCEPTION
4633 WHEN OTHERS THEN
4634 -- 3661895 l_reference_line_id must be cleared when the sql fails
4635 l_reference_line_id := NULL;
4636 IF l_debug_level > 0 THEN
4637 oe_debug_pub.add( 'FAILED TO INSERT DISCOUNT RECORDS FOR THE RETURN LINES '||SQLERRM , 1 ) ;
4638 END IF;
4639 -- Added for the FP bug #3802957
4640 l_reference_line_id := l_discounts_rec.Reference_Line_Id;
4641 NULL;
4642 END;
4643 l_discounts_rec.Reference_Line_Id := l_reference_line_id;
4644 IF l_debug_level > 0 THEN
4645 oe_debug_pub.add( 'REFERENCE LINE_ID FOR DISCOUNT LINE : '||L_DISCOUNTS_REC.REFERENCE_LINE_ID , 5 ) ;
4646 END IF;
4647 END IF;
4648 -- l_discounts_rec.Reference_Line_Id := NULL;
4649 l_discounts_rec.PROMISED_COMMITMENT_AMOUNT := 0; -- For bug 6798675 NULL;
4650 l_discounts_rec.Attribute_Category := l_line_adj_rec.Context;
4651 l_discounts_rec.Attribute1 := substrb(l_line_adj_rec.Attribute1, 1, 150);
4652 l_discounts_rec.Attribute2 := substrb(l_line_adj_rec.Attribute2, 1, 150);
4653 l_discounts_rec.Attribute3 := substrb(l_line_adj_rec.Attribute3, 1, 150);
4654 l_discounts_rec.Attribute4 := substrb(l_line_adj_rec.Attribute4, 1, 150);
4655 l_discounts_rec.Attribute5 := substrb(l_line_adj_rec.Attribute5, 1, 150);
4656 l_discounts_rec.Attribute6 := substrb(l_line_adj_rec.Attribute6, 1, 150);
4657 l_discounts_rec.Attribute7 := substrb(l_line_adj_rec.Attribute7, 1, 150);
4658 l_discounts_rec.Attribute8 := substrb(l_line_adj_rec.Attribute8, 1, 150);
4659 l_discounts_rec.Attribute9 := substrb(l_line_adj_rec.Attribute9, 1, 150);
4660 l_discounts_rec.Attribute10 := substrb(l_line_adj_rec.Attribute10, 1, 150);
4661 l_discounts_rec.Attribute11 := substrb(l_line_adj_rec.Attribute11, 1, 150);
4662 l_discounts_rec.Attribute12 := substrb(l_line_adj_rec.Attribute12, 1, 150);
4663 l_discounts_rec.Attribute13 := substrb(l_line_adj_rec.Attribute13, 1, 150);
4664 l_discounts_rec.Attribute14 := substrb(l_line_adj_rec.Attribute14, 1, 150);
4665 l_discounts_rec.Attribute15 := substrb(l_line_adj_rec.Attribute15, 1, 150);
4666
4667 Insert_Line(l_discounts_rec
4668 ,x_return_status=>l_return_status);
4669 -- Fix for the bug 2187074
4670 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4671 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4672 END IF;
4673
4674 -- Populate salescredits for discount lines
4675 Interface_Salescredits(p_line_rec
4676 ,l_discounts_rec
4677 ,l_return_status);
4678 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4679 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4680 END IF;
4681
4682 --Customer Acceptance
4683 Interface_Contingencies
4684 ( p_line_rec => p_line_rec
4685 , p_interface_line_rec => l_discounts_rec
4686 , x_return_status => l_return_status
4687 );
4688
4689 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4690 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4691 END IF;
4692 --Customer Acceptance
4693 END LOOP;
4694 END IF;
4695 -- Fix for the bug 2187074
4696 x_return_status := FND_API.G_RET_STS_SUCCESS;
4697 IF l_debug_level > 0 THEN
4698 oe_debug_pub.add( 'EXITING INTERFACE_DETAIL_DISCOUNTS ( ) PROCEDURE ' , 5 ) ;
4699 END IF;
4700
4701 EXCEPTION
4702 WHEN OTHERS THEN
4703 IF l_debug_level > 0 THEN
4704 oe_debug_pub.add( 'EXCEPTION IN INTERFACE_DETAIL_DISCOUNTS '||SQLERRM , 1 ) ;
4705 END IF;
4706 -- Fix for the bug 2187074
4707 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4708 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4709 OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME , 'Interface_Detail_Discounts');
4710 END IF;
4711
4712 END Interface_Detail_Discounts;
4713
4714 PROCEDURE Update_Invoiced_Flag
4715 ( p_price_adjustment_id IN NUMBER
4716 , p_adjusted_amount IN NUMBER
4717 , p_invoiced_amount IN NUMBER
4718 , x_return_status OUT NOCOPY VARCHAR2
4719 ) IS
4720 l_Header_Adj_tbl OE_Order_PUB.Header_Adj_Tbl_Type;
4721 l_Old_Header_Adj_tbl OE_Order_PUB.Header_Adj_Tbl_Type;
4722 l_return_status VARCHAR2(30);
4723 l_notify_index NUMBER; -- jolin
4724
4725 --
4726 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4727 --
4728 BEGIN
4729 IF l_debug_level > 0 THEN
4730 oe_debug_pub.add( 'ENTERING UPDATE_INVOICED_FLAG' , 1 ) ;
4731 END IF;
4732 OE_Header_Adj_Util.Lock_Rows
4733 (P_PRICE_ADJUSTMENT_ID=>p_price_adjustment_id,
4734 X_HEADER_ADJ_TBL=>l_old_header_adj_tbl,
4735 X_RETURN_STATUS => l_return_status);
4736 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4737 RAISE FND_API.G_EXC_ERROR;
4738 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4739 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4740 END IF;
4741 l_Header_Adj_tbl := l_old_Header_Adj_Tbl;
4742
4743 oe_debug_pub.add('Charges Amount '||p_adjusted_amount);
4744 oe_debug_pub.add('Invoiced Amount'||p_invoiced_amount);
4745
4746 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
4747 UPDATE OE_PRICE_ADJUSTMENTS
4748 SET INVOICED_FLAG = 'Y'
4749 , INVOICED_AMOUNT = nvl(invoiced_amount,0) + p_invoiced_amount -- update with unrounded amount, for bug# 5400517
4750 , LOCK_CONTROL = LOCK_CONTROL + 1
4751 WHERE PRICE_ADJUSTMENT_ID = p_price_adjustment_id;
4752
4753 --bug 4760069
4754 /*UPDATE OE_PRICE_ADJUSTMENTS
4755 SET UPDATED_FLAG = 'Y'
4756 WHERE PRICE_ADJUSTMENT_ID = p_price_adjustment_id
4757 AND line_id IS NOT NULL;*/
4758
4759 l_Header_Adj_tbl(1).Invoiced_Amount := nvl(l_Header_Adj_tbl(1).Invoiced_Amount, 0)+p_invoiced_amount;
4760 Else
4761 UPDATE OE_PRICE_ADJUSTMENTS
4762 SET INVOICED_FLAG = 'Y'
4763 , UPDATED_FLAG = 'Y'
4764 , LOCK_CONTROL = LOCK_CONTROL + 1
4765 WHERE PRICE_ADJUSTMENT_ID = p_price_adjustment_id;
4766 End If;
4767
4768 x_return_status := FND_API.G_RET_STS_SUCCESS;
4769 l_Header_Adj_tbl(1).Invoiced_Flag := 'Y';
4770 l_Header_Adj_tbl(1).lock_control := l_Header_Adj_tbl(1).lock_control + 1;
4771
4772 -- jolin start
4773 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
4774
4775 -- call notification framework to get header adj index position
4776 OE_ORDER_UTIL.Update_Global_Picture
4777 (p_Upd_New_Rec_If_Exists =>FALSE
4778 , p_hdr_adj_rec => l_Header_Adj_tbl(1)
4779 , p_old_hdr_adj_rec => l_Old_Header_Adj_tbl(1)
4780 , p_hdr_adj_id => l_Header_Adj_tbl(1).price_adjustment_id
4781 , x_index => l_notify_index
4782 , x_return_status => l_return_status);
4783
4784 IF l_debug_level > 0 THEN
4785 oe_debug_pub.add( 'UPDATE_GLOBAL RETURN STATUS FOR HDR ADJ IS: ' || L_RETURN_STATUS ) ;
4786 oe_debug_pub.add( 'HDR ADJ INDEX IS: ' || L_NOTIFY_INDEX , 1 ) ;
4787 END IF;
4788
4789 IF l_notify_index is not null then
4790 -- modify Global Picture
4791 OE_ORDER_UTIL.g_old_header_adj_tbl(l_notify_index) := l_old_header_adj_tbl(1);
4792 OE_ORDER_UTIL.g_header_adj_tbl(l_notify_index) := OE_ORDER_UTIL.g_old_header_adj_tbl(l_notify_index);
4793 OE_ORDER_UTIL.g_header_adj_tbl(l_notify_index).invoiced_amount:=
4794 l_Header_Adj_tbl(1).invoiced_amount;
4795 OE_ORDER_UTIL.g_header_adj_tbl(l_notify_index).invoiced_flag:=
4796 l_Header_Adj_tbl(1).invoiced_flag;
4797 OE_ORDER_UTIL.g_header_adj_tbl(l_notify_index).lock_control:=
4798 l_header_adj_tbl(1).lock_control;
4799 OE_ORDER_UTIL.g_header_adj_tbl(l_notify_index).last_update_date:=
4800 l_header_adj_tbl(1).last_update_date;
4801 OE_ORDER_UTIL.g_header_adj_tbl(l_notify_index).header_id:=
4802 l_header_adj_tbl(1).header_id;
4803 OE_ORDER_UTIL.g_header_adj_tbl(l_notify_index).line_id:=
4804 l_header_adj_tbl(1).line_id;
4805
4806 IF l_debug_level > 0 THEN
4807 oe_debug_pub.add( 'GLOBAL HDR ADJ INVOICED_FLAG IS: ' || OE_ORDER_UTIL.G_HEADER_ADJ_TBL ( L_NOTIFY_INDEX ) .INVOICED_FLAG , 1 ) ;
4808 oe_debug_pub.add( 'GLOBAL HDR ADJ LOCK_CONTROL IS: ' || OE_ORDER_UTIL.G_HEADER_ADJ_TBL ( L_NOTIFY_INDEX ) .LOCK_CONTROL , 1 ) ;
4809
4810 END IF;
4811
4812 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4813 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4814 END IF;
4815
4816 -- Process requests is TRUE so still need to call it, but don't need to notify
4817 IF l_debug_level > 0 THEN
4818 oe_debug_pub.add( 'OEXPINVB: HDRADJ BEFORE CALLING PROCESS_REQUESTS_AND_NOTIFY' ) ;
4819 END IF;
4820 OE_Order_PVT.PROCESS_REQUESTS_AND_NOTIFY(
4821 P_HEADER_ADJ_TBL =>l_Header_Adj_tbl,
4822 P_OLD_HEADER_ADJ_TBL =>l_Old_Header_Adj_tbl,
4823 P_PROCESS_REQUESTS => TRUE,
4824 P_NOTIFY => FALSE,
4825 X_RETURN_STATUS => l_return_status);
4826
4827 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4828 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4829 END IF;
4830
4831 END IF ; /* global entity index null check */
4832
4833 ELSE /* pre-pack H */
4834
4835 IF l_debug_level > 0 THEN
4836 oe_debug_pub.add( 'OEXPINVB: HDRADJ BEFORE CALLING PROCESS_REQUESTS_AND_NOTIFY' ) ;
4837 END IF;
4838 OE_Order_PVT.PROCESS_REQUESTS_AND_NOTIFY(
4839 P_HEADER_ADJ_TBL =>l_Header_Adj_tbl,
4840 P_OLD_HEADER_ADJ_TBL =>l_Old_Header_Adj_tbl,
4841 P_PROCESS_REQUESTS => TRUE,
4842 P_NOTIFY => TRUE,
4843 X_RETURN_STATUS => l_return_status);
4844
4845 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4846 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4847 END IF;
4848
4849 END IF; /* code set is pack H or higher */
4850 /* jolin end*/
4851
4852 IF l_debug_level > 0 THEN
4853 oe_debug_pub.add( 'EXIT UPDATE_INVOICED_FLAG ( ) PROCEDURE' , 1 ) ;
4854 END IF;
4855
4856 EXCEPTION
4857 WHEN OTHERS THEN
4858 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4859 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4860 THEN
4861 OE_MSG_PUB.Add_Exc_Msg
4862 ( G_PKG_NAME
4863 , 'Update_Invoiced_flag'
4864 );
4865 END IF;
4866 END Update_Invoiced_Flag;
4867
4868 PROCEDURE Prepare_Freight_Charges_Rec
4869 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
4870 , p_x_charges_rec IN OUT NOCOPY RA_Interface_Lines_Rec_Type
4871 ) IS
4872 -- l_vat_flag VARCHAR2(1);
4873 l_freight_as_line VARCHAR2(1);
4874 l_freight_item NUMBER;
4875 l_reference_line_id NUMBER;
4876
4877 l_ref_header_id NUMBER;
4878 l_ref_line_id NUMBER;
4879 l_ref_order_number VARCHAR2(30);
4880 l_ref_order_type VARCHAR2(30);
4881 l_rounded_amount NUMBER;
4882
4883 CURSOR ORDER_INFO(c_line_id NUMBER) IS
4884 SELECT ooh.header_id
4885 , ool.line_id
4886 , ooh.order_number
4887 , ott.name order_type
4888 FROM oe_order_lines ool,
4889 oe_order_headers_all ooh, /* MOAC SQL CHANGE */
4890 oe_transaction_types_tl ott
4891 WHERE ool.line_id = c_line_id
4892 AND ooh.header_id = ool.header_id
4893 AND ott.transaction_type_id = ooh.order_type_id
4894 AND ott.language =
4895 (select language_code
4896 from fnd_languages
4897 where installed_flag = 'B');
4898 --
4899 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4900 --
4901 BEGIN
4902 IF l_debug_level > 0 THEN
4903 oe_debug_pub.add( 'ENTER PREPARE_FREIGHT_CHARGES_REC ( ) PROCEDURE ' , 5 ) ;
4904 oe_debug_pub.add( 'PREPARING FOR CHARGE ID : '|| P_X_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 ) ;
4905 END IF;
4906
4907 -- Do not set mandatory grouping columns to different value than order line.
4908 -- This can cause freight charges to group into different invoice (if values
4909 -- are different from sales order line)
4910 p_x_charges_rec.INTERFACE_LINE_ATTRIBUTE5 := 1;
4911 p_x_charges_rec.INTERFACE_LINE_ATTRIBUTE7 := '0'; --picking line id
4912 p_x_charges_rec.INTERFACE_LINE_ATTRIBUTE8 := '0'; -- bill_of_lading;
4913 p_x_charges_rec.INTERFACE_LINE_ATTRIBUTE9 := '0'; -- customer item number
4914 p_x_charges_rec.INTERFACE_LINE_ATTRIBUTE12 := lpad('0', 30); -- shipment number
4915 p_x_charges_rec.INTERFACE_LINE_ATTRIBUTE13 := lpad('0', 30); -- option number
4916 p_x_charges_rec.INTERFACE_LINE_ATTRIBUTE14 := lpad('0', 30); -- service number
4917 -- l_vat_flag := NVL(FND_PROFILE.VALUE('AR_ALLOW_TAX_CODE_OVERRIDE'), 'N');
4918 l_freight_as_line := NVL(oe_sys_parameters.value('OE_INVOICE_FREIGHT_AS_LINE',p_line_rec.org_id), 'N'); --moac
4919 IF l_debug_level > 0 THEN
4920 oe_debug_pub.add( 'INVOICE FREIGHT AS REVENUE '||L_FREIGHT_AS_LINE ) ;
4921 END IF;
4922 l_freight_item := oe_sys_parameters.value('OE_INVENTORY_ITEM_FOR_FREIGHT',p_line_rec.org_id); --moac
4923 /* VAT on freight
4924 if vat_flag = 'Y'
4925 if freight_as_line = 'Y'
4926 if freight_item is NULL
4927 o inventory_item_id = NULL
4928 o description = lookup meaning for FREIGHT
4929 o line_type = 'LINE'
4930 else
4931 o inventory_item_id = freight_item
4932 o description = freight item's description
4933 o line_type = 'LINE'
4934 else
4935 o inventory_item_id = NULL
4936 o description = lookup meaning for FREIGHT
4937 o line_type = 'FREIGHT'
4938 if vat = 'Y' and freight_as_line = 'Y' and freight_item not null
4939 get description from mtl_system_items
4940 else
4941 get description from ar_lookups */
4942
4943 -- per bug 2382340, take out the dependency on AR_ALLOW_TAX_CODE_OVERRIDE.
4944 -- IF l_vat_flag = 'Y' AND l_freight_as_line = 'Y'AND l_freight_item IS NOT NULL THEN
4945 BEGIN
4946 IF l_freight_as_line = 'Y'AND l_freight_item IS NOT NULL THEN
4947 SELECT description
4948 ,primary_uom_code
4949 INTO p_x_charges_rec.Description
4950 ,p_x_charges_rec.Uom_Code
4951 FROM mtl_system_items
4952 WHERE inventory_item_id = l_freight_item
4953 AND organization_id = oe_sys_parameters.value('MASTER_ORGANIZATION_ID', p_line_rec.org_id);
4954 ELSE
4955 SELECT meaning
4956 ,NULL
4957 INTO p_x_charges_rec.Description
4958 ,p_x_charges_rec.Uom_Code
4959 FROM ar_lookups
4960 WHERE lookup_type = 'STD_LINE_TYPE'
4961 AND lookup_code = 'FREIGHT';
4962 END IF;
4963
4964 EXCEPTION
4965 WHEN NO_DATA_FOUND THEN
4966 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
4967 FND_MESSAGE.SET_NAME('ONT','ONT_FREIGHT_ITEM_REQUIRED');
4968 OE_MSG_PUB.ADD;
4969 END IF;
4970
4971 RAISE FND_API.G_EXC_ERROR;
4972 END;
4973
4974 IF l_freight_as_line = 'Y' THEN
4975 IF l_freight_item IS NULL THEN
4976 p_x_charges_rec.Inventory_Item_Id := NULL;
4977 p_x_charges_rec.Line_Type := 'LINE';
4978 ELSE
4979 p_x_charges_rec.Inventory_Item_Id := l_freight_item;
4980 p_x_charges_rec.Line_Type := 'LINE';
4981 END IF;
4982 ELSE
4983 p_x_charges_rec.Inventory_Item_Id := NULL;
4984 p_x_charges_rec.Line_Type := 'FREIGHT';
4985 p_x_charges_rec.Tax_Exempt_Flag := NULL;
4986 p_x_charges_rec.Tax_Exempt_Number := NULL;
4987 p_x_charges_rec.Tax_Exempt_Reason_Code := NULL;
4988 END IF;
4989
4990 IF l_debug_level > 0 THEN
4991 oe_debug_pub.add( 'LINE TYPE IS SET AS ' ||P_X_CHARGES_REC.LINE_TYPE , 1 ) ;
4992 END IF;
4993
4994 p_x_charges_rec.Quantity := NULL;
4995 p_x_charges_rec.Quantity_Ordered := NULL;
4996 p_x_charges_rec.Unit_Selling_Price := NULL;
4997 p_x_charges_rec.Unit_Standard_Price := NULL;
4998
4999 Rounded_Amount(p_currency_code => p_x_charges_rec.currency_code
5000 ,p_unrounded_amount => p_x_charges_rec.amount
5001 ,x_rounded_amount => l_rounded_amount );
5002
5003 p_x_charges_rec.amount := l_rounded_amount;
5004
5005 p_x_charges_rec.Sales_Order_Line := NULL;
5006 IF l_debug_level > 0 THEN
5007 oe_debug_pub.add( 'LINE CATEGORY CODE : '||P_LINE_REC.LINE_CATEGORY_CODE , 5 ) ;
5008 END IF;
5009 -- Change made for the FP bug #3802957
5010 IF p_line_rec.line_category_code = 'RETURN' then
5011 IF l_debug_level > 0 THEN
5012 oe_debug_pub.add( 'REFERENCE LINE_ID FOR FREIGHT RECORD BEFORE : '||P_X_CHARGES_REC.REFERENCE_LINE_ID , 5 ) ;
5013 oe_debug_pub.add( 'P_LINE_REC.REFERENCE_LINE_ID : '||P_LINE_REC.REFERENCE_LINE_ID , 5 ) ;
5014 oe_debug_pub.add( 'INTERFACE_LINE_ATTRIBUTE6 : '||P_X_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 , 5 ) ;
5015 END IF;
5016
5017 -- 3645784
5018 -- RT{Retrobill lines will not have freight charges applied
5019 -- so for retrobill lines shouldnt come to this part at all
5020 -- But still coded it so that it doesnt fail
5021 IF ( p_line_rec.order_source_id = 27) THEN
5022 l_ref_header_id := to_number(p_line_rec.orig_sys_document_ref);
5023 l_ref_line_id := to_number(p_line_rec.orig_sys_line_ref);
5024 ELSE
5025 FOR order_info_rec in ORDER_INFO(p_line_rec.reference_line_id) LOOP
5026 l_ref_header_id := order_info_rec.header_id;
5027 l_ref_line_id := order_info_rec.line_id;
5028 l_ref_order_number := to_char(order_info_rec.order_number);
5029 l_ref_order_type := order_info_rec.order_type;
5030 END LOOP;
5031 END IF;
5032
5033 BEGIN
5034
5035 SELECT FRE.customer_trx_line_id
5036 INTO l_reference_line_id
5037 FROM RA_CUSTOMER_TRX_LINES_ALL FRE
5038 WHERE FRE.LINE_TYPE IN ('LINE', 'FREIGHT')
5039 AND FRE.INTERFACE_LINE_CONTEXT = 'ORDER ENTRY'
5040 AND FRE.INTERFACE_LINE_ATTRIBUTE1 = l_ref_order_number
5041 AND FRE.INTERFACE_LINE_ATTRIBUTE2 = l_ref_order_type
5042 AND FRE.INTERFACE_LINE_ATTRIBUTE6 =
5043 (SELECT TO_CHAR(D.PRICE_ADJUSTMENT_ID)
5044 FROM OE_PRICE_ADJUSTMENTS D
5045 WHERE D.HEADER_ID = l_ref_header_id
5046 AND NVL(D.LINE_ID, l_ref_line_id) = l_ref_line_id
5047 AND D.LIST_LINE_ID =
5048 (SELECT D2.LIST_LINE_ID
5049 FROM OE_PRICE_ADJUSTMENTS D2
5050 WHERE D2.PRICE_ADJUSTMENT_ID=p_x_charges_rec.INTERFACE_LINE_ATTRIBUTE6));
5051
5052 EXCEPTION
5053 WHEN OTHERS THEN
5054 IF l_debug_level > 0 THEN
5055 oe_debug_pub.add( 'UNABLE TO FIND REFERENCE LINE ID : '||SQLERRM , 1 ) ;
5056 END IF;
5057 NULL;
5058 END;
5059 IF l_reference_line_id IS NULL THEN
5060 BEGIN
5061 SELECT ra1.customer_trx_line_id
5062 INTO l_reference_line_id
5063 from ra_customer_trx_lines_all ra1, /* MOAC SQL CHANGE */
5064 ra_customer_trx_lines ra2
5065 where ra2.customer_trx_line_id = p_x_charges_rec.reference_line_id
5066 and ra1.customer_trx_id = ra2.customer_trx_id
5067 and ra1.line_type = 'FREIGHT'
5068 and ra1.request_id is not null;
5069 EXCEPTION
5070 WHEN OTHERS THEN
5071 IF l_debug_level > 0 THEN
5072 oe_debug_pub.add( 'UNABLE TO FIND REFERENCE LINE ID - 2 : '||SQLERRM , 1 ) ;
5073 END IF;
5074 NULL;
5075 END;
5076 END IF;
5077 p_x_charges_rec.Reference_Line_Id := l_reference_line_id;
5078 IF l_debug_level > 0 THEN
5079 oe_debug_pub.add( 'REFERENCE LINE_ID FOR FREIGHT LINE AFTER : '||P_X_CHARGES_REC.REFERENCE_LINE_ID , 5 ) ;
5080 END IF;
5081 end if;
5082 -- IF p_line_rec.commitment_id is not null then
5083 -- re populate cust_trx_type_id which was nulled out for interface line
5084 -- p_x_charges_rec.Cust_Trx_Type_Id := Get_Customer_Transaction_Type(p_line_rec);
5085 -- END IF;
5086 p_x_charges_rec.PROMISED_COMMITMENT_AMOUNT := 0; -- For bug 6798675 NULL;
5087 -- Adding for bug# 4071445
5088 IF p_x_charges_rec.LINE_TYPE = 'FREIGHT' OR
5089 nvl(FND_PROFILE.VALUE('ONT_TAX_CODE_FOR_FREIGHT'), 'N') = 'N' THEN
5090 p_x_charges_rec.Tax_Code := NULL;
5091 IF l_debug_level > 0 THEN
5092 oe_debug_pub.add('tax_code for freight is set as ' ||p_x_charges_rec.tax_code , 5 ) ;
5093 END IF;
5094 END IF;
5095 --Customer Acceptance
5096 -- should be set always irrespective of customer acceptance enabled or not
5097 p_x_charges_rec.deferral_exclusion_flag := 'Y';
5098 --Customer Acceptance
5099 -- bug 2509121.
5100 -- translated description is only needed for sales order line.
5101 IF p_x_charges_rec.translated_description is not null THEN
5102 p_x_charges_rec.translated_description := null;
5103 END IF;
5104
5105 IF l_debug_level > 0 THEN
5106 oe_debug_pub.add( 'EXIT PREPARE_FREIGHT_CHARGES_REC ( ) PROCEDURE' , 5 ) ;
5107 END IF;
5108 END Prepare_Freight_Charges_Rec;
5109
5110 PROCEDURE Interface_Freight_Charges
5111 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
5112 , p_interface_line_rec IN RA_Interface_Lines_Rec_Type
5113 , x_return_status OUT NOCOPY VARCHAR2
5114 ) IS
5115 l_charges_rec RA_Interface_Lines_Rec_Type;
5116 l_return_status VARCHAR2(30);
5117 l_line_rec OE_Order_Pub.Line_Rec_Type;
5118 config_line_id NUMBER;
5119 l_invoiced_amount NUMBER;
5120 l_charge_amount NUMBER;
5121 l_count1 NUMBER := 0;
5122 l_count2 NUMBER := 0 ;
5123 --pnpl
5124 l_hdr_payment_term_id NUMBER;
5125 CURSOR Line_Charges_Cursor(p_header_id IN NUMBER, p_line_id IN NUMBER) IS
5126 SELECT CHARGE_ID
5127 ,CHARGE_NAME
5128 ,CHARGE_AMOUNT
5129 ,nvl(INVOICED_AMOUNT,CHARGE_AMOUNT)
5130 ,CURRENCY_CODE
5131 ,CONTEXT
5132 ,substrb(ATTRIBUTE1, 1, 150)
5133 ,substrb(ATTRIBUTE2, 1, 150)
5134 ,substrb(ATTRIBUTE3, 1, 150)
5135 ,substrb(ATTRIBUTE4, 1, 150)
5136 ,substrb(ATTRIBUTE5, 1, 150)
5137 ,substrb(ATTRIBUTE6, 1, 150)
5138 ,substrb(ATTRIBUTE7, 1, 150)
5139 ,substrb(ATTRIBUTE8, 1, 150)
5140 ,substrb(ATTRIBUTE9, 1, 150)
5141 ,substrb(ATTRIBUTE10, 1, 150)
5142 ,substrb(ATTRIBUTE11, 1, 150)
5143 ,substrb(ATTRIBUTE12, 1, 150)
5144 ,substrb(ATTRIBUTE13, 1, 150)
5145 ,substrb(ATTRIBUTE14, 1, 150)
5146 ,substrb(ATTRIBUTE15, 1, 150)
5147 FROM oe_charge_lines_v
5148 WHERE header_id = p_header_id
5149 AND line_id = p_line_id
5150 AND nvl(invoiced_flag, 'N') = 'N';
5151
5152 CURSOR Header_Charges_Cursor(p_header_id IN NUMBER, p_line_id IN NUMBER) IS
5153 SELECT CHARGE_ID
5154 ,CHARGE_NAME
5155 ,CHARGE_AMOUNT
5156 ,nvl(INVOICED_AMOUNT,CHARGE_AMOUNT)
5157 ,CURRENCY_CODE
5158 ,CONTEXT
5159 ,substrb(ATTRIBUTE1, 1, 150)
5160 ,substrb(ATTRIBUTE2, 1, 150)
5161 ,substrb(ATTRIBUTE3, 1, 150)
5162 ,substrb(ATTRIBUTE4, 1, 150)
5163 ,substrb(ATTRIBUTE5, 1, 150)
5164 ,substrb(ATTRIBUTE6, 1, 150)
5165 ,substrb(ATTRIBUTE7, 1, 150)
5166 ,substrb(ATTRIBUTE8, 1, 150)
5167 ,substrb(ATTRIBUTE9, 1, 150)
5168 ,substrb(ATTRIBUTE10, 1, 150)
5169 ,substrb(ATTRIBUTE11, 1, 150)
5170 ,substrb(ATTRIBUTE12, 1, 150)
5171 ,substrb(ATTRIBUTE13, 1, 150)
5172 ,substrb(ATTRIBUTE14, 1, 150)
5173 ,substrb(ATTRIBUTE15, 1, 150)
5174 FROM oe_charge_lines_v
5175 WHERE header_id = p_line_rec.header_id
5176 AND line_id IS NULL
5177 AND nvl(invoiced_flag, 'N') = 'N'
5178 for update nowait; -- Bug #3686558
5179
5180 CURSOR Modified_Header_Charges_Cursor(p_header_id IN NUMBER, p_line_id IN NUMBER) IS
5181 SELECT CHARGE_ID
5182 ,CHARGE_NAME
5183 ,(CHARGE_AMOUNT - INVOICED_AMOUNT)
5184 ,CHARGE_AMOUNT
5185 ,(CHARGE_AMOUNT - INVOICED_AMOUNT) -- should be diff amount which is not rounded, for bug 5400517
5186 ,CURRENCY_CODE
5187 ,CONTEXT
5188 ,substrb(ATTRIBUTE1, 1, 150)
5189 ,substrb(ATTRIBUTE2, 1, 150)
5190 ,substrb(ATTRIBUTE3, 1, 150)
5191 ,substrb(ATTRIBUTE4, 1, 150)
5192 ,substrb(ATTRIBUTE5, 1, 150)
5193 ,substrb(ATTRIBUTE6, 1, 150)
5194 ,substrb(ATTRIBUTE7, 1, 150)
5195 ,substrb(ATTRIBUTE8, 1, 150)
5196 ,substrb(ATTRIBUTE9, 1, 150)
5197 ,substrb(ATTRIBUTE10, 1, 150)
5198 ,substrb(ATTRIBUTE11, 1, 150)
5199 ,substrb(ATTRIBUTE12, 1, 150)
5200 ,substrb(ATTRIBUTE13, 1, 150)
5201 ,substrb(ATTRIBUTE14, 1, 150)
5202 ,substrb(ATTRIBUTE15, 1, 150)
5203 FROM oe_charge_lines_v
5204 WHERE header_id = p_header_id
5205 AND line_id IS NULL
5206 AND nvl(invoiced_flag, 'N') = 'Y'
5207 AND invoiced_amount IS NOT NULL
5208 AND invoiced_amount <> charge_amount
5209 for update nowait; -- Bug #3686558
5210
5211 CURSOR config_for_model (l_line_id NUMBER) IS
5212 SELECT LINE_ID
5213 FROM OE_ORDER_LINES
5214 WHERE LINK_TO_LINE_ID = l_line_id
5215 AND ITEM_TYPE_CODE = 'CONFIG';
5216
5217 --
5218 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5219 --
5220 BEGIN
5221 IF l_debug_level > 0 THEN
5222 oe_debug_pub.add( 'ENTER INTERFACE_FREIGHT_CHARGES ( ) PROCEDURE' , 5 ) ;
5223 END IF;
5224 l_charges_rec := p_interface_line_rec;
5225 OPEN Line_Charges_Cursor(p_line_rec.header_id, p_line_rec.line_id);
5226 LOOP
5227 IF l_debug_level > 0 THEN
5228 oe_debug_pub.add( 'IN THE LOOP: L_CHARGES_REC.CHARGE_ID: '|| L_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 , 5 ) ;
5229 END IF;
5230 FETCH Line_Charges_Cursor INTO
5231 l_charges_rec.INTERFACE_LINE_ATTRIBUTE6 -- charge_id
5232 ,l_charges_rec.description
5233 ,l_charges_rec.amount
5234 ,l_invoiced_amount
5235 ,l_charges_rec.currency_code
5236 ,l_charges_rec.attribute_category
5237 ,l_charges_rec.attribute1
5238 ,l_charges_rec.attribute2
5239 ,l_charges_rec.attribute3
5240 ,l_charges_rec.attribute4
5241 ,l_charges_rec.attribute5
5242 ,l_charges_rec.attribute6
5243 ,l_charges_rec.attribute7
5244 ,l_charges_rec.attribute8
5245 ,l_charges_rec.attribute9
5246 ,l_charges_rec.attribute10
5247 ,l_charges_rec.attribute11
5248 ,l_charges_rec.attribute12
5249 ,l_charges_rec.attribute13
5250 ,l_charges_rec.attribute14
5251 ,l_charges_rec.attribute15;
5252 EXIT WHEN Line_Charges_Cursor%NOTFOUND;
5253 IF l_debug_level > 0 THEN
5254 oe_debug_pub.add( 'IN THE LOOP 1: L_CHARGES_REC.CHARGE_ID: '|| L_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 , 5 ) ;
5255 oe_debug_pub.add( 'INVOICE SOURCE BEFORE CALLING PREPARE_FREIGHT_CHARGES_REC '|| L_CHARGES_REC.BATCH_SOURCE_NAME , 5 ) ;
5256 END IF;
5257 --prepare l_charges_rec
5258 Prepare_Freight_Charges_Rec(p_line_rec => p_line_rec
5259 ,p_x_charges_rec => l_charges_rec);
5260 IF l_debug_level > 0 THEN
5261 oe_debug_pub.add( 'INVOICE SOURCE AFTER : '|| L_CHARGES_REC.BATCH_SOURCE_NAME , 5 ) ;
5262 oe_debug_pub.add( 'FREIGHT LINE TYPE : '||L_CHARGES_REC.LINE_TYPE , 5 ) ;
5263 END IF;
5264 IF l_charges_rec.Amount = 0 THEN
5265 -- Issue Message (Zero Amount Freight Charge not interfaced)
5266 IF l_debug_level > 0 THEN
5267 oe_debug_pub.add( 'ZERO AMOUNT FREIGHT NOT INTERFACED' , 5 ) ;
5268 END IF;
5269 ELSE
5270 Insert_Line(l_charges_rec
5271 ,x_return_status=>l_return_status);
5272 -- Fix for the bug 2187074
5273 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5274 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5275 END IF;
5276
5277 IF l_charges_rec.line_type = 'LINE' THEN
5278 Interface_scredits_for_freight
5279 (p_line_rec => p_line_rec
5280 , p_interface_line_rec => l_charges_rec
5281 , p_line_level_charge => 'Y');
5282 END IF;
5283 --Set oe_price_adjustment.Invoiced_flag for the interfaced charge line
5284 Update_Invoiced_Flag(to_number(l_charges_rec.INTERFACE_LINE_ATTRIBUTE6)
5285 ,l_charges_rec.amount
5286 ,l_invoiced_amount
5287 ,l_return_status);
5288 END IF;
5289 END LOOP;
5290 CLOSE Line_Charges_Cursor;
5291 --Bug2465201
5292 IF p_line_rec.item_type_code IN ( 'MODEL','CLASS') THEN
5293 OPEN CONFIG_FOR_MODEL (p_line_rec.line_id);
5294 FETCH CONFIG_FOR_MODEL INTO config_line_id;
5295 CLOSE CONFIG_FOR_MODEL;
5296
5297 IF config_line_id IS NOT NULL THEN
5298 IF l_debug_level > 0 THEN
5299 oe_debug_pub.add( 'FOUND CONFIG LINE : '||CONFIG_LINE_ID , 1 ) ;
5300 END IF;
5301 -- Initialize API return status to success
5302 x_return_status := FND_API.G_RET_STS_SUCCESS;
5303 OE_Line_Util.Lock_Row(p_line_id=>config_line_id
5304 , p_x_line_rec => l_line_rec
5305 , x_return_status => l_return_status
5306 );
5307 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5308 IF l_debug_level > 0 THEN
5309 oe_debug_pub.add( 'UNABLE TO LOCK LINE ID '||CONFIG_LINE_ID||' '||SQLERRM , 1 ) ;
5310 END IF;
5311 RAISE FND_API.G_EXC_ERROR;
5312 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5313 IF l_debug_level > 0 THEN
5314 oe_debug_pub.add( 'UNABLE TO LOCK LINE ID '||CONFIG_LINE_ID||' '||SQLERRM , 1 ) ;
5315 END IF;
5316 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5317 END IF;
5318 IF l_debug_level > 0 THEN
5319 oe_debug_pub.add( 'INTERFACING OTHER CHARGES ASSOCIATED WITH THIS MODEL..' , 1 ) ;
5320 END IF;
5321 OPEN Line_Charges_Cursor(p_line_rec.header_id, config_line_id);
5322 LOOP
5323 IF l_debug_level > 0 THEN
5324 oe_debug_pub.add( 'IN THE LOOP: L_CHARGES_REC.CHARGE_ID: '|| L_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 , 5 ) ;
5325 END IF;
5326 FETCH Line_Charges_Cursor INTO
5327 l_charges_rec.INTERFACE_LINE_ATTRIBUTE6 -- charge_id
5328 ,l_charges_rec.description
5329 ,l_charges_rec.amount
5330 ,l_invoiced_amount
5331 ,l_charges_rec.currency_code
5332 ,l_charges_rec.attribute_category
5333 ,l_charges_rec.attribute1
5334 ,l_charges_rec.attribute2
5335 ,l_charges_rec.attribute3
5336 ,l_charges_rec.attribute4
5337 ,l_charges_rec.attribute5
5338 ,l_charges_rec.attribute6
5339 ,l_charges_rec.attribute7
5340 ,l_charges_rec.attribute8
5341 ,l_charges_rec.attribute9
5342 ,l_charges_rec.attribute10
5343 ,l_charges_rec.attribute11
5344 ,l_charges_rec.attribute12
5345 ,l_charges_rec.attribute13
5346 ,l_charges_rec.attribute14
5347 ,l_charges_rec.attribute15;
5348 EXIT WHEN Line_Charges_Cursor%NOTFOUND;
5349 IF l_debug_level > 0 THEN
5350 oe_debug_pub.add( 'IN THE LOOP 1: L_CHARGES_REC.CHARGE_ID: '|| L_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 , 5 ) ;
5351 oe_debug_pub.add( 'INVOICE SOURCE BEFORE CALLING PREPARE_FREIGHT_CHARGES_REC '|| L_CHARGES_REC.BATCH_SOURCE_NAME , 5 ) ;
5352 END IF;
5353 --prepare l_charges_rec
5354 Prepare_Freight_Charges_Rec(p_line_rec => p_line_rec
5355 ,p_x_charges_rec => l_charges_rec);
5356 IF l_debug_level > 0 THEN
5357 oe_debug_pub.add( 'INVOICE SOURCE AFTER : '|| L_CHARGES_REC.BATCH_SOURCE_NAME , 5 ) ;
5358 oe_debug_pub.add( 'FREIGHT LINE TYPE : '||L_CHARGES_REC.LINE_TYPE , 5 ) ;
5359 END IF;
5360 IF l_charges_rec.Amount = 0 THEN
5361 -- Issue Message (Zero Amount Freight Charge not interfaced)
5362 IF l_debug_level > 0 THEN
5363 oe_debug_pub.add( 'ZERO AMOUNT FREIGHT NOT INTERFACED' , 5 ) ;
5364 END IF;
5365 ELSE
5366 Insert_Line(l_charges_rec
5367 ,x_return_status=>l_return_status);
5368 -- Fix for the bug 2187074
5369 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5370 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5371 END IF;
5372
5373 /* Added for the bug 3019754 */
5374 IF l_charges_rec.line_type = 'LINE' THEN
5375 Interface_scredits_for_freight
5376 (p_line_rec => p_line_rec
5377 , p_interface_line_rec => l_charges_rec
5378 , p_line_level_charge => 'Y');
5379 END IF;
5380
5381 --Set oe_price_adjustment.Invoiced_flag for the interfaced charge line
5382 Update_Invoiced_Flag(to_number(l_charges_rec.INTERFACE_LINE_ATTRIBUTE6)
5383 ,l_charges_rec.amount
5384 ,l_invoiced_amount
5385 ,l_return_status);
5386 END IF;
5387 END LOOP;
5388 CLOSE Line_Charges_Cursor;
5389 END IF;
5390 END IF;
5391 IF l_debug_level > 0 THEN
5392 oe_debug_pub.add( 'INTERFACING HEADER CHARGES...' , 1 ) ;
5393 END IF;
5394 l_charges_rec := p_interface_line_rec;
5395 --pnpl
5396 --get header level payment term for header level charges
5397 -- bug 4680186
5398 IF NOT Return_Line(p_line_rec) THEN
5399 BEGIN
5400 SELECT payment_term_id INTO l_hdr_payment_term_id
5401 FROM oe_order_headers_all
5402 WHERE header_id = p_line_rec.header_id;
5403 EXCEPTION
5404 WHEN NO_DATA_FOUND THEN
5405 l_hdr_payment_term_id := null;
5406 END;
5407 END IF;
5408
5409 OPEN Header_Charges_Cursor(p_line_rec.header_id, p_line_rec.line_id);
5410 LOOP
5411 IF l_debug_level > 0 THEN
5412 oe_debug_pub.add( 'IN THE LOOP: L_CHARGES_REC.CHARGE_ID: '|| L_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 ) ;
5413 END IF;
5414 FETCH Header_Charges_Cursor INTO
5415 l_charges_rec.INTERFACE_LINE_ATTRIBUTE6 -- charge_id
5416 ,l_charges_rec.description
5417 ,l_charges_rec.amount
5418 ,l_invoiced_amount
5419 ,l_charges_rec.currency_code
5420 ,l_charges_rec.attribute_category
5421 ,l_charges_rec.attribute1
5422 ,l_charges_rec.attribute2
5423 ,l_charges_rec.attribute3
5424 ,l_charges_rec.attribute4
5425 ,l_charges_rec.attribute5
5426 ,l_charges_rec.attribute6
5427 ,l_charges_rec.attribute7
5428 ,l_charges_rec.attribute8
5429 ,l_charges_rec.attribute9
5430 ,l_charges_rec.attribute10
5431 ,l_charges_rec.attribute11
5432 ,l_charges_rec.attribute12
5433 ,l_charges_rec.attribute13
5434 ,l_charges_rec.attribute14
5435 ,l_charges_rec.attribute15;
5436 --pnpl
5437 l_charges_rec.term_id := l_hdr_payment_term_id;
5438 EXIT WHEN Header_Charges_Cursor%NOTFOUND;
5439
5440
5441 IF l_debug_level > 0 THEN
5442 oe_debug_pub.add( 'IN THE LOOP 1: L_CHARGES_REC.CHARGE_ID: '|| L_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 ) ;
5443 oe_debug_pub.add( 'INVOICE SOURCE BEFORE CALLING PREPARE_FREIGHT_CHARGES_REC '|| L_CHARGES_REC.BATCH_SOURCE_NAME ) ;
5444 --pnpl
5445 oe_debug_pub.add( 'l_charges_rec.term_id : ' || l_charges_rec.term_id);
5446 END IF;
5447 --prepare l_charges_rec
5448 Prepare_Freight_Charges_Rec(p_line_rec => p_line_rec
5449 ,p_x_charges_rec => l_charges_rec);
5450 IF l_debug_level > 0 THEN
5451 oe_debug_pub.add( 'INVOICE SOURE AFTER CALLING PREPARE_FREIGHT_CHARGES_REC '|| L_CHARGES_REC.BATCH_SOURCE_NAME ) ;
5452 oe_debug_pub.add( 'FREIGHT LINE TYPE: '||L_CHARGES_REC.LINE_TYPE ) ;
5453 END IF;
5454 IF l_charges_rec.Amount = 0 THEN
5455 IF l_debug_level > 0 THEN
5456 oe_debug_pub.add( ' ZERO AMOUNT FREIGHT NOT INTERFACED' , 5 ) ;
5457 END IF;
5458 ELSE
5459 Insert_Line(l_charges_rec
5460 ,x_return_status=>l_return_status);
5461 -- Fix for the bug 2187074
5462 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5463 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5464 END IF;
5465
5466 IF l_charges_rec.line_type = 'LINE' THEN
5467 Interface_scredits_for_freight
5468 (p_line_rec => p_line_rec
5469 , p_interface_line_rec => l_charges_rec
5470 , p_line_level_charge => 'N');
5471 END IF;
5472 --Set oe_price_adjustment.Invoiced_flag for the interfaced charge line
5473 Update_Invoiced_Flag(to_number(l_charges_rec.INTERFACE_LINE_ATTRIBUTE6)
5474 ,l_charges_rec.amount
5475 ,l_invoiced_amount
5476 ,l_return_status);
5477 END IF;
5478 END LOOP;
5479 CLOSE Header_Charges_Cursor;
5480 x_return_status := FND_API.G_RET_STS_SUCCESS;
5481
5482 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
5483 IF l_debug_level > 0 THEN
5484 oe_debug_pub.add( 'INTERFACING Modified HEADER CHARGES...' , 1 ) ;
5485 END IF;
5486 l_charges_rec := p_interface_line_rec;
5487 OPEN Modified_Header_Charges_Cursor(p_line_rec.header_id, p_line_rec.line_id);
5488 LOOP
5489 IF l_debug_level > 0 THEN
5490 oe_debug_pub.add( 'IN THE LOOP: L_CHARGES_REC.CHARGE_ID: '|| L_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 ) ;
5491 END IF;
5492 FETCH Modified_Header_Charges_Cursor INTO
5493 l_charges_rec.INTERFACE_LINE_ATTRIBUTE6 -- charge_id
5494 ,l_charges_rec.description
5495 ,l_charges_rec.amount
5496 ,l_charge_amount
5497 ,l_invoiced_amount
5498 ,l_charges_rec.currency_code
5499 ,l_charges_rec.attribute_category
5500 ,l_charges_rec.attribute1
5501 ,l_charges_rec.attribute2
5502 ,l_charges_rec.attribute3
5503 ,l_charges_rec.attribute4
5504 ,l_charges_rec.attribute5
5505 ,l_charges_rec.attribute6
5506 ,l_charges_rec.attribute7
5507 ,l_charges_rec.attribute8
5508 ,l_charges_rec.attribute9
5509 ,l_charges_rec.attribute10
5510 ,l_charges_rec.attribute11
5511 ,l_charges_rec.attribute12
5512 ,l_charges_rec.attribute13
5513 ,l_charges_rec.attribute14
5514 ,l_charges_rec.attribute15;
5515
5516 --pnpl
5517 l_charges_rec.term_id := l_hdr_payment_term_id;
5518 EXIT WHEN Modified_Header_Charges_Cursor%NOTFOUND;
5519 IF l_debug_level > 0 THEN
5520 oe_debug_pub.add( 'IN THE LOOP 1: L_CHARGES_REC.CHARGE_ID: '|| L_CHARGES_REC.INTERFACE_LINE_ATTRIBUTE6 ) ;
5521 oe_debug_pub.add( 'Charge_Amount:'||l_charge_amount ||':Invoiced_Amount:'||l_invoiced_amount) ;
5522 --pnpl
5523 oe_debug_pub.add( 'l_charges_rec.term_id : ' || l_charges_rec.term_id);
5524 END IF;
5525
5526 --prepare l_charges_rec
5527 Prepare_Freight_Charges_Rec(p_line_rec => p_line_rec
5528 ,p_x_charges_rec => l_charges_rec);
5529
5530 SELECT nvl(max(interface_line_attribute5),0) --Bug 3338492
5531 INTO l_count1
5532 FROM ra_interface_lines_all
5533 WHERE interface_line_context = 'ORDER ENTRY'
5534 AND interface_line_attribute1 = l_charges_rec.INTERFACE_LINE_ATTRIBUTE1
5535 AND interface_line_attribute2 = l_charges_rec.INTERFACE_LINE_ATTRIBUTE2
5536 AND interface_line_attribute6 = l_charges_rec.INTERFACE_LINE_ATTRIBUTE6
5537 AND interface_line_attribute11 = '0'
5538 AND NVL(interface_status, '~') <> 'P';
5539 SELECT nvl(max(interface_line_attribute5),0)
5540 INTO l_count2
5541 FROM ra_customer_trx_lines_all
5542 WHERE interface_line_context = 'ORDER ENTRY'
5543 AND interface_line_attribute1 = l_charges_rec.INTERFACE_LINE_ATTRIBUTE1
5544 AND interface_line_attribute2 = l_charges_rec.INTERFACE_LINE_ATTRIBUTE2
5545 AND interface_line_attribute6 = l_charges_rec.INTERFACE_LINE_ATTRIBUTE6
5546 AND interface_line_attribute11 = '0';
5547
5548 IF l_count1 > l_count2 THEN
5549 l_charges_rec.INTERFACE_LINE_ATTRIBUTE5 := l_count1 + 1 ;
5550 ELSE
5551 l_charges_rec.INTERFACE_LINE_ATTRIBUTE5 := l_count2 + 1 ;
5552 END IF;
5553
5554 IF l_debug_level > 0 THEN
5555 oe_debug_pub.add( 'INTERFACE_LINE_ATTRIBUTE5: '|| l_charges_rec.INTERFACE_LINE_ATTRIBUTE5 , 5 ) ;
5556 oe_debug_pub.add( 'INVOICE SOURE AFTER CALLING PREPARE_FREIGHT_CHARGES_REC '|| L_CHARGES_REC.BATCH_SOURCE_NAME ) ;
5557 oe_debug_pub.add( 'FREIGHT LINE TYPE: '||L_CHARGES_REC.LINE_TYPE ) ;
5558 END IF;
5559
5560 IF l_charges_rec.Amount = 0 THEN
5561 IF l_debug_level > 0 THEN
5562 oe_debug_pub.add( ' ZERO AMOUNT FREIGHT NOT INTERFACED' , 5 ) ;
5563 END IF;
5564 ELSE
5565 Insert_Line(l_charges_rec
5566 ,x_return_status=>l_return_status);
5567 -- Fix for the bug 2187074
5568 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5569 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5570 END IF;
5571
5572 IF l_charges_rec.line_type = 'LINE' THEN
5573 Interface_scredits_for_freight
5574 (p_line_rec => p_line_rec
5575 , p_interface_line_rec => l_charges_rec
5576 , p_line_level_charge => 'N');
5577 END IF;
5578 --Set oe_price_adjustment.Invoiced_flag for the interfaced charge line
5579 Update_Invoiced_Flag(to_number(l_charges_rec.INTERFACE_LINE_ATTRIBUTE6)
5580 , l_charges_rec.amount
5581 ,l_invoiced_amount
5582 ,l_return_status);
5583 END IF;
5584 END LOOP;
5585 CLOSE Modified_Header_Charges_Cursor;
5586 x_return_status := FND_API.G_RET_STS_SUCCESS;
5587 END IF;
5588 IF l_debug_level > 0 THEN
5589 oe_debug_pub.add( 'EXITING INTERFACE_FREIGHT_CHARGES' , 5 ) ;
5590 END IF;
5591 EXCEPTION
5592 WHEN FND_API.G_EXC_ERROR THEN
5593 IF l_debug_level > 0 THEN
5594 oe_debug_pub.add( 'EXPECTED ERROR. EXITING INTERFACE_FREIGHT_CHARGES : '||SQLERRM , 1 ) ;
5595 END IF;
5596 x_return_status := FND_API.G_RET_STS_ERROR;
5597 WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN -- Bug #3686558
5598 IF l_debug_level > 0 THEN
5599 OE_DEBUG_PUB.Add('Unable to lock the line',3);
5600 END IF;
5601 x_return_status := FND_API.G_RET_STS_SUCCESS;
5602 WHEN OTHERS THEN
5603 IF l_debug_level > 0 THEN
5604 oe_debug_pub.add( 'EXCEPTION , INTERFACE_FREIGHT_CHARGES ( ) '||SQLERRM , 1 ) ;
5605 END IF;
5606 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5607 IF FND_MSG_PUB.Check_Msg_Level
5608 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5609 THEN
5610 OE_MSG_PUB.Add_Exc_Msg
5611 ( G_PKG_NAME
5612 , 'Interface_Freight_Charges'
5613 );
5614 END IF;
5615 IF (Line_Charges_Cursor%ISOPEN) THEN
5616 CLOSE Line_Charges_Cursor;
5617 END IF;
5618 IF (Header_Charges_Cursor%ISOPEN) THEN
5619 CLOSE Header_Charges_Cursor;
5620 END IF;
5621 END Interface_Freight_Charges;
5622
5623 PROCEDURE Prepare_Interface_Line_Rec
5624 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
5625 , p_header_rec IN OE_Order_Pub.Header_Rec_Type
5626 , p_x_interface_line_rec IN OUT NOCOPY RA_Interface_Lines_Rec_Type
5627 , x_result_code OUT NOCOPY VARCHAR2
5628 ) IS
5629 l_creation_sign VARCHAR2(30);
5630 l_territory_code VARCHAR2(30);
5631 l_delivery_line_id NUMBER;
5632 l_bank_acct_id NUMBER;
5633 l_bank_acct_uses_id NUMBER;
5634 l_pay_method_id NUMBER;
5635 l_pay_method_name VARCHAR2(50);
5636 l_merchant_id NUMBER;
5637 l_trxn_id NUMBER;
5638 l_tangible_id VARCHAR2(80);
5639 l_hdr_inv_to_cust_id NUMBER;
5640 l_gdf_rec OE_GDF_Rec_Type;
5641 l_jg_return_code NUMBER;
5642 l_jg_error_buffer VARCHAR2(240);
5643 l_rma_date DATE;
5644 l_rma_result VARCHAR2(1);
5645 l_count1 NUMBER := 0 ;
5646 l_count2 NUMBER := 0 ;
5647 l_item_description VARCHAR2(2000);
5648 l_course_end_date DATE;
5649 l_ship_method_code VARCHAR2(30);
5650 l_return_status VARCHAR2(1);
5651 l_accounting_rule_type VARCHAR2(10);
5652 l_acct_rule_duration NUMBER;
5653 l_orig_sys_ship_addr_id NUMBER;
5654 l_commitment_applied NUMBER;
5655 l_commitment_interfaced NUMBER;
5656 l_partial_line_amount NUMBER := 0;
5657 l_partial_line_tax_amount NUMBER := 0;
5658 l_partial_line_freight_amount NUMBER := 0;
5659 l_partial_line_promised_amount NUMBER := 0;
5660 l_fulfilled_qty NUMBER;
5661 l_set_of_books_rec OE_Order_Cache.Set_Of_Books_Rec_Type;
5662 l_user_id NUMBER;
5663 l_resp_id NUMBER;
5664 l_appl_id NUMBER;
5665 /*Added for FP bug # 3647389*/
5666 l_cur_user_id NUMBER;
5667 l_cur_resp_id NUMBER;
5668 l_cur_appl_id NUMBER;
5669 l_AR_Sys_Param_Rec AR_SYSTEM_PARAMETERS_ALL%ROWTYPE;
5670 --serla begin
5671 l_payment_type_code VARCHAR2(30);
5672 l_payment_trx_id NUMBER;
5673 l_receipt_method_id NUMBER;
5674 l_credit_card_holder_name VARCHAR2(80);
5675 l_credit_card_approval_code VARCHAR2(80);
5676 --serla end
5677 l_trx_date DATE;
5678 l_max_actual_shipment_date DATE;
5679 l_fulfillment_set_flag VARCHAR2(1) := FND_API.G_FALSE;
5680 -- 3757279
5681 l_concat_segment VARCHAR2(240) := NULL;
5682 l_prof_value VARCHAR2(240) := NULL;
5683 l_table_index BINARY_INTEGER;
5684 -- 3757279
5685 --Adding for bug#4190312
5686 l_return_code VARCHAR2(30);
5687 l_unmapped_date DATE;
5688 l_frequency VARCHAR2(15);
5689 l_calendar_name VARCHAR2(15);
5690
5691 --Customer Acceptance
5692 l_top_model_line_id NUMBER;
5693 l_parent_line_id NUMBER;
5694 l_order_line_id NUMBER;
5695 --
5696 l_payment_trxn_extension_id NUMBER;
5697 l_interface_line_rec RA_Interface_Lines_Rec_Type; --bug 4738947
5698
5699 l_invoice_to_customer_id NUMBER; -- Added for bug 6911267
5700
5701 --bug6086777 Reverting the fix for 5849568
5702 --bug5849568
5703 --l_cust_pay_method_id NUMBER;
5704 --bug6086340 Refix the fix for 5849568
5705 l_cust_pay_method_id NUMBER;
5706 L_ACCOUNTING_RULE_ID NUMBER;
5707 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5708 --
5709 BEGIN
5710 IF l_debug_level > 0 THEN
5711 oe_debug_pub.add( 'ENTER PREPARE_INTERFACE_LINE_REC ( ) PROCEDURE ' , 5 ) ;
5712 END IF;
5713 l_interface_line_rec.request_id := p_x_interface_line_rec.request_id; --bug 4738947
5714 p_x_interface_line_rec := l_interface_line_rec; --bug 4738947
5715 l_delivery_line_id := Null;
5716 IF Shipping_info_Available(p_line_rec) THEN
5717 -- Fix for bug 2196494
5718 IF p_line_rec.item_type_code NOT In ('MODEL','CLASS','KIT') THEN
5719 BEGIN
5720 --Bug2181628 TO retrieve the minimum delivery_id of a line,if it is present
5721 --in more than one delivery.Hence used "MIN"instead of "ROWNUM".Hence split the SQL Query.
5722 SELECT min(dl.delivery_id)
5723 INTO l_delivery_line_id
5724 FROM wsh_new_deliveries dl,
5725 wsh_delivery_assignments da,
5726 wsh_delivery_details dd
5727 WHERE dd.delivery_detail_id = da.delivery_detail_id
5728 AND da.delivery_id = dl.delivery_id
5729 AND dd.source_code = 'OE'
5730 AND dd.released_status = 'C' -- bug 6721251
5731 AND dd.source_line_id = p_line_rec.line_id;
5732 -- AND rownum = 1;
5733 EXCEPTION
5734 WHEN NO_DATA_FOUND THEN
5735 IF l_debug_level > 0 THEN
5736 oe_debug_pub.add( 'REACHING NO DATA FOUND. DELIVERY DETAILS NOT FOUND FOR THIS LINE..' , 1 ) ;
5737 END IF;
5738 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3 := '0';
5739 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4 := '0';
5740 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7 := '0';
5741 END;
5742 /* Populate bill of lading */
5743 IF l_delivery_line_id Is Not Null Then
5744 BEGIN
5745 SELECT NVL(SUBSTR(dl.name, 1, 30), '0')
5746 ,NVL(SUBSTR(dl.waybill, 1, 30), '0')
5747 ,dl.ship_method_code
5748 ,dl.initial_pickup_date
5749 INTO p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3
5750 ,p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4
5751 ,l_ship_method_code
5752 ,p_x_interface_line_rec.SHIP_DATE_ACTUAL
5753 FROM wsh_new_deliveries dl
5754 WHERE dl.delivery_id = l_delivery_line_id;
5755
5756 IF l_debug_level > 0 THEN
5757 oe_debug_pub.add( 'POPULATING BILL OF LADING NUMBER ..' , 5 ) ;
5758 END IF;
5759 SELECT wdi.sequence_number
5760 INTO p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8
5761 FROM wsh_delivery_legs wdl,
5762 wsh_document_instances wdi
5763 where wdi.entity_name = 'WSH_DELIVERY_LEGS'
5764 and wdi.entity_id = wdl.delivery_leg_id
5765 and wdl.delivery_id =l_delivery_line_id
5766 and wdi.status <> 'CANCELLED'
5767 and rownum=1;
5768 IF l_debug_level > 0 THEN
5769 oe_debug_pub.add( 'BILL OF LADING NUMBER IS POPULATED AS ..'||P_X_INTERFACE_LINE_REC.INTERFACE_LINE_ATTRIBUTE8 , 5 ) ;
5770 END IF;
5771 EXCEPTION
5772 WHEN NO_DATA_FOUND THEN
5773 IF l_debug_level > 0 THEN
5774 oe_debug_pub.add( 'NO DETAILS FOR BILL OF LADING NUMBER FOUND ...' , 5 ) ;
5775 END IF;
5776 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8 := '0';
5777 END;
5778 END IF;
5779 --Fix for bug 3661402
5780 IF l_ship_method_code IS NOT NULL THEN
5781 GOTO get_ship_via;
5782 END IF;
5783 --End of Fix for bug 3661402
5784
5785 -- commented for bug 3661402
5786 /* BEGIN
5787 IF l_debug_level > 0 THEN
5788 oe_debug_pub.add( 'GETTING SHIP_VIA FROM SHIP_METHOD_CODE: '||L_SHIP_METHOD_CODE|| ' AND ORGANIZATION_ID: '||P_LINE_REC.SHIP_FROM_ORG_ID , 5 ) ;
5789 END IF;
5790 -- fix bug# 1382196
5791 IF l_ship_method_code IS NOT NULL THEN
5792 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110509' THEN
5793
5794 SELECT substr(freight_code,1,25)
5795 INTO p_x_interface_line_rec.SHIP_VIA
5796 FROM wsh_carriers wsh_ca,wsh_carrier_services wsh,
5797 wsh_org_carrier_services wsh_org
5798 WHERE wsh_org.organization_id = p_line_rec.ship_from_org_id
5799 AND wsh.carrier_service_id = wsh_org.carrier_service_id
5800 AND wsh_ca.carrier_id = wsh.carrier_id
5801 AND wsh.ship_method_code = l_ship_method_code
5802 AND wsh_org.enabled_flag = 'Y';
5803 ELSE
5804 SELECT substr(freight_code,1,25)
5805 INTO p_x_interface_line_rec.SHIP_VIA
5806 FROM wsh_carrier_ship_methods
5807 WHERE ship_method_code = l_ship_method_code
5808 AND organization_id = p_line_rec.ship_from_org_id;
5809 END IF;
5810 END IF;
5811 EXCEPTION
5812 WHEN NO_DATA_FOUND THEN
5813 p_x_interface_line_rec.SHIP_VIA := NULL;
5814 END; */
5815 ELSE --non ship line
5816 If p_line_rec.item_type_code In ('MODEL','CLASS','KIT') Then
5817 BEGIN
5818 --Bug2181628 TO retrieve the minimum delivery_id of a line,if it is present
5819 --in more than one delivery.Hence used "MIN"instead of "ROWNUM".Hence Split the Query.
5820 SELECT min(dl.delivery_id)
5821 INTO l_delivery_line_id
5822 FROM wsh_new_deliveries dl,
5823 wsh_delivery_assignments da,
5824 wsh_delivery_details dd
5825 WHERE dd.delivery_detail_id = da.delivery_detail_id
5826 AND da.delivery_id = dl.delivery_id
5827 AND dd.source_code = 'OE'
5828 AND dd.released_status = 'C' -- bug 6721251
5829 AND dd.top_model_line_id = p_line_rec.line_id;
5830 -- AND rownum = 1;
5831 EXCEPTION
5832 WHEN NO_DATA_FOUND THEN
5833 IF l_debug_level > 0 THEN
5834 oe_debug_pub.add( 'REACHING NO DATA FOUND. DELIVERY DETAILS NOT FOUND FOR THIS LINE..' , 1 ) ;
5835 END IF;
5836 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3 := '0';
5837 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4 := '0';
5838 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7 := '0';
5839 END;
5840 IF l_delivery_line_id Is Not Null Then
5841 BEGIN
5842 SELECT NVL(SUBSTR(dl.name, 1, 30), '0')
5843 ,NVL(SUBSTR(dl.waybill, 1, 30), '0')
5844 ,dl.ship_method_code
5845 ,dl.initial_pickup_date
5846 INTO p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3
5847 ,p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4
5848 ,l_ship_method_code
5849 ,p_x_interface_line_rec.SHIP_DATE_ACTUAL
5850 FROM wsh_new_deliveries dl
5851 WHERE dl.delivery_id = l_delivery_line_id;
5852
5853
5854 IF l_debug_level > 0 THEN
5855 oe_debug_pub.add( 'POPULATING BILL OF LADING NUMBER ..' , 5 ) ;
5856 END IF;
5857 SELECT substr(wdi.sequence_number,1,30)
5858 INTO p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8
5859 FROM wsh_delivery_legs wdl,
5860 wsh_document_instances wdi
5861 where wdi.entity_name = 'WSH_DELIVERY_LEGS'
5862 and wdi.entity_id = wdl.delivery_leg_id
5863 and wdl.delivery_id =l_delivery_line_id
5864 and wdi.status <> 'CANCELLED'
5865 and rownum=1;
5866 IF l_debug_level > 0 THEN
5867 oe_debug_pub.add( 'BILL OF LADING NUMBER IS POPULATED AS ..'||P_X_INTERFACE_LINE_REC.INTERFACE_LINE_ATTRIBUTE8 , 5 ) ;
5868 END IF;
5869 EXCEPTION
5870 WHEN NO_DATA_FOUND THEN
5871 IF l_debug_level > 0 THEN
5872 oe_debug_pub.add( 'NO DETAILS FOR BILL OF LADING NUMBER FOUND ...' , 5 ) ;
5873 END IF;
5874 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8 := '0';
5875 END;
5876
5877 --Fix for bug 3661402
5878 IF l_ship_method_code IS NOT NULL THEN
5879 GOTO get_ship_via;
5880 END IF;
5881 --End of Fix for bug 3661402
5882
5883 --Commented for bug 3661402
5884 /* Added for the bug number 2988432 */
5885
5886 /* BEGIN
5887 IF l_debug_level > 0 THEN
5888 oe_debug_pub.add( 'GETTING SHIP_VIA FROM SHIP_METHOD_CODE: '||L_SHIP_METHOD_CODE|| ' AND ORGANIZATION_ID: '||P_LINE_REC.SHIP_FROM_ORG_ID , 5 ) ;
5889 END IF;
5890 -- fix bug# 1382196
5891 IF l_ship_method_code IS NOT NULL THEN
5892 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110509' THEN
5893
5894 SELECT substr(freight_code,1,25)
5895 INTO p_x_interface_line_rec.SHIP_VIA
5896 FROM wsh_carriers wsh_ca,wsh_carrier_services wsh,
5897 wsh_org_carrier_services wsh_org
5898 WHERE wsh_org.organization_id = p_line_rec.ship_from_org_id
5899 AND wsh.carrier_service_id = wsh_org.carrier_service_id
5900 AND wsh_ca.carrier_id = wsh.carrier_id
5901 AND wsh.ship_method_code = l_ship_method_code
5902 AND wsh_org.enabled_flag = 'Y';
5903 ELSE
5904 SELECT substr(freight_code,1,25)
5905 INTO p_x_interface_line_rec.SHIP_VIA
5906 FROM wsh_carrier_ship_methods
5907 WHERE ship_method_code = l_ship_method_code
5908 AND organization_id = p_line_rec.ship_from_org_id;
5909 END IF;
5910 END IF;
5911 EXCEPTION
5912 WHEN NO_DATA_FOUND THEN
5913 p_x_interface_line_rec.SHIP_VIA := NULL;
5914 END; */
5915 /* Added for the bug number 2988432 */
5916
5917 END IF;
5918 END IF;
5919 END IF;
5920 END IF;
5921
5922 --Fix for bug 3661402
5923
5924 if l_ship_method_code is null then
5925 if p_line_rec.ship_from_org_id is not null then
5926 l_ship_method_code := p_line_rec.shipping_method_code;
5927 end if;
5928 end if;
5929
5930 <<get_ship_via>>
5931
5932 BEGIN
5933 IF l_debug_level > 0 THEN
5934 oe_debug_pub.add( 'GETTING SHIP_VIA FROM SHIP_METHOD_CODE: '||L_SHIP_METHOD_CODE|| ' AND ORGANIZATION_ID: '||P_LINE_REC.SHIP_FROM_ORG_ID ,5 ) ;
5935 END IF;
5936 IF l_ship_method_code IS NOT NULL THEN
5937 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110509' THEN
5938
5939 SELECT substr(freight_code,1,25)
5940 INTO p_x_interface_line_rec.SHIP_VIA
5941 FROM wsh_carriers wsh_ca,wsh_carrier_services wsh,
5942 wsh_org_carrier_services wsh_org
5943 WHERE wsh_org.organization_id =
5944 p_line_rec.ship_from_org_id
5945 AND wsh.carrier_service_id =
5946 wsh_org.carrier_service_id
5947 AND wsh_ca.carrier_id = wsh.carrier_id
5948 AND wsh.ship_method_code = l_ship_method_code
5949 AND wsh_org.enabled_flag = 'Y';
5950 ELSE
5951 SELECT substr(freight_code,1,25)
5952 INTO p_x_interface_line_rec.SHIP_VIA
5953 FROM wsh_carrier_ship_methods
5954 WHERE ship_method_code = l_ship_method_code
5955 AND organization_id = p_line_rec.ship_from_org_id;
5956 END IF;
5957 END IF;
5958 EXCEPTION
5959 WHEN NO_DATA_FOUND THEN
5960 p_x_interface_line_rec.SHIP_VIA := NULL;
5961 END;
5962
5963 --End of fix for bug 3661402
5964
5965 /* 1847224 */
5966 IF l_delivery_line_id IS NULL THEN -- for Returns and non shippable lines
5967 IF l_debug_level > 0 THEN
5968 oe_debug_pub.add( 'NON SHIPPABLE OR RETURN LINE ' , 5 ) ;
5969 END IF;
5970 if p_line_rec.line_category_code <> 'RETURN' THEN
5971 IF l_debug_level > 0 THEN
5972 oe_debug_pub.add( 'THIS IS A NON-SHIPPABLE LINE..' , 5 ) ;
5973 END IF;
5974
5975 -- fixed bug 3435298
5976 -- for non-shippable line in a fulfillment set
5977 l_fulfillment_set_flag
5978 := OE_Line_Fullfill.Is_Part_Of_Fulfillment_Set
5979 (p_line_rec.line_id);
5980 IF l_fulfillment_set_flag = FND_API.G_TRUE THEN
5981 IF l_debug_level > 0 THEN
5982 oe_debug_pub.add( 'SETTING TRANSACTION DATE AS THE ACTUAL_SHIPMENT_DATE OF THE LAST SHIPPED ITEM IN THE SET. ' , 5 ) ;
5983 END IF;
5984
5985 BEGIN
5986 SELECT max(actual_shipment_date)
5987 INTO l_max_actual_shipment_date
5988 FROM oe_order_lines_all ool,
5989 oe_line_sets ols
5990 WHERE ool.shippable_flag = 'Y'
5991 AND ool.line_id = ols.line_id
5992 AND ols.set_id IN (SELECT os.set_id
5993 FROM oe_line_sets ls,
5994 oe_sets os
5995 WHERE ls.line_id = p_line_rec.line_id
5996 AND ls.set_id = os.set_id
5997 AND os.set_type='FULFILLMENT_SET');
5998 EXCEPTION WHEN NO_DATA_FOUND THEN
5999 null;
6000 END;
6001
6002 --4483722
6003 IF l_max_actual_shipment_date IS NULL THEN
6004 IF (fnd_profile.value('OE_RECEIVABLES_DATE_FOR_NONSHIP_LINES') = 'Y') THEN
6005 l_max_actual_shipment_date := SYSDATE;
6006 ELSE
6007 --Should we let the date be null?
6008 Null;
6009 END IF;
6010 END IF;
6011 --4483722
6012
6013 p_x_interface_line_rec.SHIP_DATE_ACTUAL := l_max_actual_shipment_date;
6014 -- for non-shippable line not in a fulfillment set
6015 ELSIF (fnd_profile.value('OE_RECEIVABLES_DATE_FOR_NONSHIP_LINES') = 'Y') THEN
6016 IF l_debug_level > 0 THEN
6017 oe_debug_pub.add( 'SETTING TRANSACTION DATE AS CURRENT DATE FOR THIS NONSHIP LINE ' , 5 ) ;
6018 END IF;
6019 p_x_interface_line_rec.SHIP_DATE_ACTUAL := SYSDATE;
6020
6021 END IF;
6022 end if;
6023 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3 := '0';
6024 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4 := '0';
6025 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7 := '0';
6026 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8 := '0';
6027 END IF;
6028 -- for bug# 1468820
6029 IF p_line_rec.source_type_code = 'EXTERNAL' THEN
6030 BEGIN
6031 --following line added for bug 3712551
6032 IF(p_line_rec.actual_shipment_date is null) THEN
6033 SELECT nvl ( max ( transaction_date ) , sysdate )
6034 INTO p_x_interface_line_rec.ship_date_actual
6035 FROM rcv_transactions t , oe_drop_ship_sources s
6036 WHERE t.po_header_id = s.po_header_id
6037 AND t.po_line_location_id = s.line_location_id
6038 AND transaction_type = 'RECEIVE'
6039 AND s.line_id = p_line_rec.line_id;
6040 ELSE
6041 --following line added for bug 3712551
6042 p_x_interface_line_rec.ship_date_actual := p_line_rec.actual_shipment_date;
6043 END IF;
6044
6045 EXCEPTION
6046 WHEN OTHERS THEN
6047 IF l_debug_level > 0 THEN
6048 oe_debug_pub.add( 'SETTING SHIP_DATE_ACTUAL FOR DROPSHIP LINE TO SYSDATE' , 5 ) ;
6049 END IF;
6050 p_x_interface_line_rec.ship_date_actual := sysdate;
6051 END;
6052 IF l_debug_level > 0 THEN
6053 oe_debug_pub.add( 'SHIP_DATE_ACTUAL FOR DROPSHIP LINE: '|| TO_CHAR ( P_X_INTERFACE_LINE_REC.SHIP_DATE_ACTUAL , 'DD-MON-YYYY HH24:MI:SS' ) , 5 ) ;
6054 END IF;
6055 END IF;
6056
6057 -- Get information into p_x_interface_line_rec
6058 p_x_interface_line_rec.CREATED_BY := NVL(oe_standard_wf.g_user_id, fnd_global.user_id); -- 3169637
6059 p_x_interface_line_rec.CREATION_DATE := sysdate;
6060 p_x_interface_line_rec.LAST_UPDATED_BY := NVL(oe_standard_wf.g_user_id, fnd_global.user_id); -- 3169637
6061 p_x_interface_line_rec.LAST_UPDATE_DATE := sysdate;
6062 p_x_interface_line_rec.INTERFACE_LINE_CONTEXT := FND_PROFILE.VALUE('ONT_SOURCE_CODE');
6063 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE1 := to_char(p_header_rec.order_number);
6064
6065 SELECT tt.name
6066 INTO p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE2
6067 FROM oe_transaction_types_tl tt,
6068 oe_order_headers oh
6069 WHERE tt.language = ( select language_code
6070 from fnd_languages
6071 where installed_flag = 'B')
6072 AND tt.transaction_type_id = oh.order_type_id
6073 AND oh.header_id = p_line_rec.header_id;
6074 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE6 := to_char(p_line_rec.line_id);
6075 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7 := '0'; -- picking_line_id
6076 --rt{ Retrobilling change
6077 /*IF (p_line_rec.line_category_code = 'RETURN'
6078 and p_line_rec.reference_line_id is not null
6079 and p_line_rec.retrobill_request_id is not null) THEN
6080 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE5 := p_line_rec.retrobill_request_id;
6081 END IF;*/
6082 --rt} End Retrobilling change
6083
6084
6085 IF p_line_rec.invoiced_quantity IS NOT NULL THEN
6086 IF l_debug_level > 0 THEN
6087 oe_debug_pub.add( 'THIS LINE WAS INTERFACED ATLEAST ONCE BEFORE' , 5 ) ;
6088 END IF;
6089 SELECT count(*)
6090 INTO l_count1
6091 FROM ra_interface_lines_all
6092 WHERE interface_line_context = 'ORDER ENTRY'
6093 AND interface_line_attribute1 = p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE1
6094 AND interface_line_attribute2 = p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE2
6095 AND interface_line_attribute6= to_char(p_line_rec.line_id)
6096 AND interface_line_attribute11 = '0'
6097 AND NVL(interface_status, '~') <> 'P';
6098 SELECT count(*)
6099 INTO l_count2
6100 FROM ra_customer_trx_lines_all
6101 WHERE interface_line_context = 'ORDER ENTRY'
6102 AND interface_line_attribute1 = p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE1
6103 AND interface_line_attribute2 = p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE2
6104 AND interface_line_attribute6= to_char(p_line_rec.line_id)
6105 AND interface_line_attribute11 = '0'
6106 AND sales_order = p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE1;
6107 END IF;
6108 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE5 := l_count1 + l_count2 ; -- no of times this line is interfaced to AR
6109 IF l_debug_level > 0 THEN
6110 oe_debug_pub.add( 'INTERFACE_LINE_ATTRIBUTE5: '|| P_X_INTERFACE_LINE_REC.INTERFACE_LINE_ATTRIBUTE5 , 5 ) ;
6111 END IF;
6112
6113 --rt{ Retrobilling change
6114 IF (p_line_rec.line_category_code = 'RETURN'
6115 and p_line_rec.reference_line_id is not null
6116 and p_line_rec.retrobill_request_id is not null) THEN
6117 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE5 := p_line_rec.retrobill_request_id;
6118 END IF;
6119 --rt} End Retrobilling change
6120
6121 IF NVL(p_line_rec.item_identifier_type, 'INT') = 'CUST' THEN
6122 BEGIN
6123 SELECT customer_item_number
6124 INTO p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE9
6125 FROM mtl_customer_items citems
6126 WHERE customer_item_id = p_line_rec.ordered_item_id;
6127 EXCEPTION
6128 WHEN OTHERS THEN
6129 IF l_debug_level > 0 THEN
6130 oe_debug_pub.add( 'EXCEPTION , POPULATING ATTRIBUTE9 AS 0 =>'||SQLERRM , 1 ) ;
6131 END IF;
6132 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE9 := '0';
6133 END;
6134 IF l_debug_level > 0 THEN
6135 oe_debug_pub.add( 'GETTING CUSTOMER ITEM NUMBER: '|| P_X_INTERFACE_LINE_REC.INTERFACE_LINE_ATTRIBUTE9 ) ;
6136 END IF;
6137 ELSE
6138 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE9 := '0';
6139 END IF;
6140 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE10 := nvl(to_char(p_line_rec.ship_from_org_id), '0');
6141 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE11 := '0';
6142 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE12 := lpad(to_char(nvl(p_line_rec.Shipment_Number,0)),30);
6143 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE13 := lpad(to_char(nvl(p_line_rec.Option_Number,0)),30);
6144 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE14 := lpad(to_char(nvl(p_line_rec.Service_Number,0)),30);
6145 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE15 := NULL;
6146 p_x_interface_line_rec.SET_OF_BOOKS_ID := oe_sys_parameters.value('SET_OF_BOOKS_ID', p_line_rec.org_id);
6147 p_x_interface_line_rec.LINE_TYPE := 'LINE';
6148 p_x_interface_line_rec.WAREHOUSE_ID := p_line_rec.ship_from_org_id;
6149
6150 /* If the Line is of OTA type, then we need to call an OTA API to get the */
6151 /* concaternated string for item description */
6152
6153 IF p_line_rec.order_quantity_uom in ('EVT','ENR') THEN
6154 IF l_debug_level > 0 THEN
6155 oe_debug_pub.add( 'GETTING THE OTA DESCRIPTION' , 5 ) ;
6156 END IF;
6157
6158 IF p_line_rec.line_category_code = 'RETURN' and
6159 p_line_rec.reference_line_id is not null then
6160
6161 IF l_debug_level > 0 THEN
6162 oe_debug_pub.add( 'GETTING THE OTA DESCRIPTION FOR RETURN' , 5 ) ;
6163 END IF;
6164
6165 OE_OTA_UTIL.Get_OTA_Description
6166 (p_line_id => p_line_rec.reference_line_id
6167 ,p_uom => p_line_rec.order_quantity_uom
6168 ,x_description => l_item_description
6169 ,x_course_end_date => l_course_end_date
6170 ,x_return_status => l_return_status
6171 );
6172 p_x_interface_line_rec.DESCRIPTION := l_item_description;
6173 IF l_debug_level > 0 THEN
6174 oe_debug_pub.add( 'OTA DESCRIPTION' || L_ITEM_DESCRIPTION , 5 ) ;
6175 END IF;
6176 p_x_interface_line_rec.GL_DATE := l_course_end_date;
6177
6178 ELSE
6179
6180 OE_OTA_UTIL.Get_OTA_Description
6181 (p_line_id => p_line_rec.line_id
6182 ,p_uom => p_line_rec.order_quantity_uom
6183 ,x_description => l_item_description
6184 ,x_course_end_date => l_course_end_date
6185 ,x_return_status => l_return_status
6186 );
6187 p_x_interface_line_rec.DESCRIPTION := l_item_description;
6188 IF l_debug_level > 0 THEN
6189 oe_debug_pub.add( 'OTA DESCRIPTION' || L_ITEM_DESCRIPTION , 5 ) ;
6190 END IF;
6191 p_x_interface_line_rec.GL_DATE := l_course_end_date;
6192
6193 END IF;
6194 ELSE
6195 IF p_line_rec.item_type_code = 'SERVICE' THEN
6196 Get_Service_Item_Description(p_line_rec, p_x_interface_line_rec.DESCRIPTION);
6197 ELSE
6198 Get_Item_Description(p_line_rec, p_x_interface_line_rec.DESCRIPTION);
6199 END IF;
6200
6201 END IF;
6202
6203 -- bug 2509121.
6204 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110509'
6205 AND p_line_rec.user_item_description IS NOT NULL
6206 AND p_line_rec.user_item_description <> FND_API.G_MISS_CHAR THEN
6207 p_x_interface_line_rec.translated_description := p_line_rec.user_item_description;
6208 END IF;
6209
6210 -- Commenting if condition for bug# 4063920
6211 --IF p_x_interface_line_rec.CURRENCY_CODE IS NULL THEN
6212 p_x_interface_line_rec.CURRENCY_CODE := p_header_rec.transactional_curr_code;
6213 --END IF;
6214 IF p_line_rec.Commitment_Id IS NOT NULL THEN
6215 IF l_debug_level > 0 THEN
6216 oe_debug_pub.add( 'GETTING CUST_TRX_TYPE_ID FROM COMMITMENT: '||P_LINE_REC.COMMITMENT_ID , 5 ) ;
6217 END IF;
6218 SELECT NVL(cust_type.subsequent_trx_type_id,cust_type.cust_trx_type_id)
6219 INTO p_x_interface_line_rec.Cust_Trx_Type_Id
6220 FROM ra_cust_trx_types cust_type,ra_customer_trx_all cust_trx /* MOAC SQL CHANGE */
6221 WHERE cust_type.cust_trx_type_id = cust_trx.cust_trx_type_id
6222 AND cust_trx.customer_trx_id = p_line_rec.Commitment_Id;
6223 IF l_debug_level > 0 THEN
6224 oe_debug_pub.add( 'CUST_TRX_TYPE_ID FROM COMMITMENT IS '||P_X_INTERFACE_LINE_REC.CUST_TRX_TYPE_ID ) ;
6225 END IF;
6226 ELSE
6227 p_x_interface_line_rec.Cust_Trx_Type_Id := Get_Customer_Transaction_Type(p_line_rec);
6228 END IF;
6229 /* START PREPAYMENT */
6230 IF NOT Return_Line(p_line_rec) THEN
6231 IF OE_PrePayment_Util.Is_Prepaid_Order(p_header_rec) = 'Y' THEN
6232 -- p_x_interface_line_rec.Term_Id := p_header_rec.payment_term_id;
6233 IF l_debug_level > 0 THEN
6234 oe_debug_pub.add( 'GETTING PAYMENT_SET_ID FROM OE_PAYMENTS' ) ;
6235 END IF;
6236 BEGIN
6237 --serla begin
6238 IF OE_PrePayment_UTIL.IS_MULTIPLE_PAYMENTS_ENABLED THEN
6239 SELECT payment_set_id
6240 INTO p_x_interface_line_rec.Payment_Set_ID
6241 FROM oe_payments
6242 WHERE header_id = p_line_rec.header_id
6243 AND payment_set_id IS NOT NULL
6244 AND rownum=1;
6245 ELSE
6246 --serla end
6247 SELECT payment_set_id
6248 INTO p_x_interface_line_rec.Payment_Set_ID
6249 FROM oe_payments
6250 WHERE header_id = p_line_rec.header_id
6251 AND line_id is null
6252 AND payment_type_code = 'CREDIT_CARD';
6253 --serla begin
6254 END IF;
6255 --serla end
6256 EXCEPTION
6257 WHEN NO_DATA_FOUND THEN
6258 p_x_interface_line_rec.Payment_Set_ID := NULL;
6259 WHEN TOO_MANY_ROWS THEN
6260 p_x_interface_line_rec.Payment_Set_ID := NULL;
6261 END;
6262 IF l_debug_level > 0 THEN
6263 oe_debug_pub.add( 'AFTER GETTING PAYMENT_SET_ID: '||P_X_INTERFACE_LINE_REC.PAYMENT_SET_ID ) ;
6264 END IF;
6265 p_x_interface_line_rec.approval_code := NULL;
6266 -- ELSE
6267 -- p_x_interface_line_rec.Term_Id := p_line_rec.payment_term_id;
6268 END IF;
6269 p_x_interface_line_rec.Term_Id := p_line_rec.payment_term_id;
6270 END IF;
6271 /* END PREPAYMENT */
6272 Get_Qty_To_Invoice(p_line_rec, p_x_interface_line_rec.QUANTITY, x_result_code);
6273 IF OE_Commitment_Pvt.DO_Commitment_Sequencing THEN-- commitment sequencing functionality ON
6274 IF p_line_rec.commitment_id IS NOT NULL THEN
6275 Get_Commitment_Info(p_line_rec
6276 ,l_commitment_applied
6277 ,l_commitment_interfaced);
6278 IF x_result_code = 'RFR-PENDING' THEN
6279 IF l_debug_level > 0 THEN
6280 oe_debug_pub.add( 'GET PARTIAL PROMISED AMOUNT FOR PARTIALLY INVOICED LINE' , 5 ) ;
6281 END IF;
6282 Rounded_Amount(p_currency_code => p_x_interface_line_rec.currency_code
6283 ,p_unrounded_amount => (p_line_rec.unit_selling_price * p_x_interface_line_rec.quantity)
6284 ,x_rounded_amount => l_partial_line_amount);
6285 IF OE_COMMITMENT_PVT.Get_Allocate_Tax_Freight(p_line_rec) = 'Y' THEN
6286 l_fulfilled_qty := NVL(p_line_rec.fulfilled_quantity, NVL(p_line_rec.shipped_quantity, NVL(p_line_rec.ordered_quantity, 0)));
6287 l_partial_line_tax_amount := nvl(p_line_rec.tax_value * (p_x_interface_line_rec.QUANTITY/l_fulfilled_qty), 0);
6288 SELECT nvl(sum(charge_amount), 0)
6289 INTO l_partial_line_freight_amount
6290 FROM oe_charge_lines_v
6291 WHERE header_id = p_line_rec.header_id
6292 AND line_id = p_line_rec.line_id
6293 AND nvl(invoiced_flag, 'N') = 'N';
6294 END IF;
6295
6296 IF l_debug_level > 0 THEN
6297 oe_debug_pub.add( 'PARTIAL LINE AMOUNT '||L_PARTIAL_LINE_AMOUNT||' - PARTIAL TAX AMOUNT '||L_PARTIAL_LINE_TAX_AMOUNT||' - PARTIAL LINE FREIGHT AMOUNT '||L_PARTIAL_LINE_FREIGHT_AMOUNT , 5 ) ;
6298 END IF;
6299 l_partial_line_promised_amount := l_partial_line_amount + l_partial_line_tax_amount + l_partial_line_freight_amount;
6300 IF (l_commitment_applied-l_commitment_interfaced) >= l_partial_line_promised_amount THEN
6301 p_x_interface_line_rec.promised_commitment_amount := l_partial_line_promised_amount;
6302 IF l_debug_level > 0 THEN
6303 oe_debug_pub.add( 'RFR- PASS FULL AMOUNT FOR THIS INTERFACE: '|| P_X_INTERFACE_LINE_REC.PROMISED_COMMITMENT_AMOUNT , 3 ) ;
6304 END IF;
6305 ELSE
6306 p_x_interface_line_rec.promised_commitment_amount := l_commitment_applied-l_commitment_interfaced;
6307 IF l_debug_level > 0 THEN
6308 oe_debug_pub.add( 'PASS PARTIAL AMOUNT FOR THIS INTERFACE: ' ||P_X_INTERFACE_LINE_REC.PROMISED_COMMITMENT_AMOUNT , 3 ) ;
6309 END IF;
6310 END IF;
6311 ELSE
6312 p_x_interface_line_rec.PROMISED_COMMITMENT_AMOUNT := l_commitment_applied-l_commitment_interfaced;
6313 IF l_debug_level > 0 THEN
6314 oe_debug_pub.add( 'NOT RFR- PROMISED_COMMITMENT_AMOUNT: '|| P_X_INTERFACE_LINE_REC.PROMISED_COMMITMENT_AMOUNT ) ;
6315 END IF;
6316 END IF;
6317 END IF;
6318 END IF; -- end of commitment sequencing functionality ON
6319 p_x_interface_line_rec.Unit_Standard_Price := p_line_rec.Unit_List_Price;
6320 IF Show_Detail_Discounts(p_line_rec) THEN
6321 -- If we show detail discounts, original line selling and extended amounts should not include discount amount.
6322 p_x_interface_line_rec.Unit_Selling_Price := p_line_rec.Unit_List_Price;
6323 Rounded_Amount(p_currency_code => p_x_interface_line_rec.currency_code
6324 ,p_unrounded_amount => (p_line_rec.unit_list_price * p_x_interface_line_rec.quantity)
6325 ,x_rounded_amount => p_x_interface_line_rec.amount);
6326 ELSE
6327 p_x_interface_line_rec.Unit_Selling_Price := p_line_rec.Unit_Selling_Price;
6328 Rounded_Amount(p_currency_code => p_x_interface_line_rec.currency_code
6329 ,p_unrounded_amount => (p_line_rec.unit_selling_price * p_x_interface_line_rec.quantity)
6330 ,x_rounded_amount => p_x_interface_line_rec.amount);
6331 END IF;
6332 p_x_interface_line_rec.Quantity_Ordered := p_line_rec.Ordered_Quantity;
6333 -- Get Creation_sign
6334 l_creation_sign := Get_Credit_Creation_Sign(p_line_rec, p_x_interface_line_rec.cust_trx_type_id);
6335 IF l_debug_level > 0 THEN
6336 oe_debug_pub.add( ' CREATION SIGN IS '|| L_CREATION_SIGN , 5 ) ;
6337 END IF;
6338
6339 IF l_creation_sign = 'A' THEN
6340 IF Return_Line(p_line_rec) THEN
6341 IF l_debug_level > 0 THEN
6342 oe_debug_pub.add( 'SETTING -VE SIGN FOR RETURN LINE' , 5 ) ;
6343 END IF;
6344 p_x_interface_line_rec.Amount := p_x_interface_line_rec.amount * -1;
6345 p_x_interface_line_rec.Quantity := p_x_interface_line_rec.Quantity * -1;
6346 p_x_interface_line_rec.Quantity_Ordered := p_line_rec.Ordered_Quantity * -1;
6347 END IF;
6348 ELSIF l_creation_sign = 'P' THEN
6349 NULL;
6350 ELSIF l_creation_sign = 'N' THEN
6351 p_x_interface_line_rec.Amount := p_x_interface_line_rec.amount * -1;
6352 p_x_interface_line_rec.Quantity := p_x_interface_line_rec.Quantity * -1;
6353 p_x_interface_line_rec.Quantity_Ordered := p_line_rec.Ordered_Quantity * -1;
6354 END IF;
6355
6356 IF l_debug_level > 0 THEN
6357 oe_debug_pub.add( 'LINE UNIT SELLING PRICE: '||P_X_INTERFACE_LINE_REC.UNIT_SELLING_PRICE , 5 ) ;
6358 oe_debug_pub.add( 'LINE UNIT STANDARD PRICE: '||P_X_INTERFACE_LINE_REC.UNIT_STANDARD_PRICE , 5 ) ;
6359 oe_debug_pub.add( 'LINE AMOUNT: '||P_X_INTERFACE_LINE_REC.AMOUNT ) ;
6360 END IF;
6361
6362 -- invoice_to_org_id is required at booking
6363 IF p_line_rec.invoice_to_org_id IS NOT NULL THEN
6364 IF l_debug_level > 0 THEN
6365 oe_debug_pub.add( 'GETTING ORIG_SYSTEM_BILL_CUSTOMER_ID , ORIG_SYSTEM_BILL_ADDRESS_ID INFO' , 5 ) ;
6366 END IF;
6367 BEGIN
6368 /* Commented for bug #3519137 added new select statement */
6369 /*SELECT bill_to_org.customer_id
6370 ,bill_to_org.address_id
6371 INTO p_x_interface_line_rec.ORIG_SYSTEM_BILL_CUSTOMER_ID
6372 ,p_x_interface_line_rec.ORIG_SYSTEM_BILL_ADDRESS_ID
6373 FROM oe_invoice_to_orgs_v bill_to_org
6374 WHERE bill_to_org.organization_id = p_line_rec.invoice_to_org_id;*/
6375
6376 SELECT acct_site.cust_account_id, site.cust_acct_site_id
6377 INTO p_x_interface_line_rec.ORIG_SYSTEM_BILL_CUSTOMER_ID
6378 ,p_x_interface_line_rec.ORIG_SYSTEM_BILL_ADDRESS_ID
6379 FROM hz_cust_acct_sites_all acct_site, hz_cust_site_uses_all site
6380 WHERE SITE.SITE_USE_CODE = 'BILL_TO'
6381 AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
6382 AND SITE.SITE_USE_ID = p_line_rec.invoice_to_org_id;
6383
6384 EXCEPTION
6385 WHEN OTHERS THEN
6386 IF l_debug_level > 0 THEN
6387 oe_debug_pub.add( 'EXCEPTION , '||SQLERRM , 1 ) ;
6388 END IF;
6389 p_x_interface_line_rec.ORIG_SYSTEM_BILL_CUSTOMER_ID := NULL;
6390 p_x_interface_line_rec.ORIG_SYSTEM_BILL_ADDRESS_ID := NULL;
6391 END;
6392 END IF;
6393 -- ship_to_org_id is not required at booking for return lines
6394 IF p_line_rec.ship_to_org_id IS NOT NULL THEN
6395 IF l_debug_level > 0 THEN
6396 oe_debug_pub.add( 'GETTING ORIG_SYSTEM_SHIP_CUSTOMER_ID , ORIG_SYSTEM_SHIP_ADDRESS_ID INFO' ) ;
6397 END IF;
6398 BEGIN
6399 /* Commented for bug #3519137 added new select statement */
6400 /*SELECT ship_to_org.customer_id
6401 ,ship_to_org.address_id
6402 INTO p_x_interface_line_rec.ORIG_SYSTEM_SHIP_CUSTOMER_ID
6403 ,l_orig_sys_ship_addr_id
6404 FROM oe_ship_to_orgs_v ship_to_org
6405 WHERE ship_to_org.organization_id = p_line_rec.ship_to_org_id;*/
6406
6407 SELECT acct_site.cust_account_id, site.cust_acct_site_id
6408 INTO p_x_interface_line_rec.ORIG_SYSTEM_SHIP_CUSTOMER_ID
6409 ,l_orig_sys_ship_addr_id
6410 FROM hz_cust_acct_sites_all acct_site, hz_cust_site_uses_all site
6411 WHERE SITE.SITE_USE_CODE = 'SHIP_TO'
6412 AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
6413 AND SITE.SITE_USE_ID = p_line_rec.ship_to_org_id;
6414
6415 EXCEPTION
6416 WHEN OTHERS THEN
6417 IF l_debug_level > 0 THEN
6418 oe_debug_pub.add( 'EXCEPTION , '||SQLERRM , 1 ) ;
6419 END IF;
6420 p_x_interface_line_rec.ORIG_SYSTEM_SHIP_CUSTOMER_ID := NULL;
6421 l_orig_sys_ship_addr_id := NULL;
6422 END;
6423 END IF;
6424 p_x_interface_line_rec.orig_system_ship_address_id := nvl(p_x_interface_line_rec.orig_system_ship_address_id, l_orig_sys_ship_addr_id);
6425 p_x_interface_line_rec.orig_system_bill_contact_id := p_line_rec.invoice_to_contact_id;
6426 p_x_interface_line_rec.orig_system_ship_contact_id := p_line_rec.ship_to_contact_id;
6427 p_x_interface_line_rec.orig_system_sold_customer_id := p_line_rec.sold_to_org_id;
6428 p_x_interface_line_rec.conversion_type := NVL(p_header_rec.conversion_type_code, 'User');
6429 p_x_interface_line_rec.conversion_date := p_header_rec.conversion_rate_date;
6430 p_x_interface_line_rec.conversion_rate := p_header_rec.conversion_rate;
6431 IF p_x_interface_line_rec.conversion_rate IS NULL THEN
6432 IF p_x_interface_line_rec.conversion_type = 'User' THEN
6433 p_x_interface_line_rec.conversion_rate := 1;
6434 END IF;
6435 END IF;
6436
6437 IF p_header_rec.conversion_type_code IS NOT NULL THEN
6438 l_set_of_books_rec := OE_Order_Cache.Load_Set_Of_Books;
6439 IF l_debug_level > 0 THEN
6440 oe_debug_pub.add( 'SOB CURRENCY: '||L_SET_OF_BOOKS_REC.CURRENCY_CODE||' TRANSACTIONAL CURRENCY: '||P_HEADER_REC.TRANSACTIONAL_CURR_CODE ) ;
6441 END IF;
6442 IF p_header_rec.transactional_curr_code = l_set_of_books_rec.currency_code THEN
6443 p_x_interface_line_rec.conversion_type := 'User';
6444 p_x_interface_line_rec.conversion_rate := 1;
6445 END IF;
6446 END IF;
6447
6448 p_x_interface_line_rec.Primary_salesrep_Id := NVL(p_line_rec.Salesrep_Id, p_header_rec.Salesrep_Id);
6449 p_x_interface_line_rec.Sales_Order := to_char(p_header_rec.Order_Number);
6450 p_x_interface_line_rec.Sales_Order_Line := to_char(p_line_rec.Line_Number);
6451 p_x_interface_line_rec.Sales_Order_Date := p_header_rec.Ordered_Date;
6452 p_x_interface_line_rec.Sales_Order_Source := FND_PROFILE.VALUE('ONT_SOURCE_CODE');
6453 p_x_interface_line_rec.Agreement_Id := p_line_rec.Agreement_Id;
6454 p_x_interface_line_rec.Purchase_Order := p_line_rec.Cust_PO_Number;
6455 p_x_interface_line_rec.Inventory_Item_Id := p_line_rec.Inventory_Item_Id;
6456
6457 -- Changes for #3144768 begin
6458
6459 BEGIN
6460 SELECT NUMBER_VALUE
6461 INTO l_user_id
6462 FROM WF_ITEM_ATTRIBUTE_VALUES
6463 WHERE ITEM_KEY = to_char(p_line_rec.line_id)
6464 AND ITEM_TYPE = 'OEOL'
6465 AND NAME = 'USER_ID';
6466
6467 SELECT NUMBER_VALUE
6468 INTO l_resp_id
6469 FROM WF_ITEM_ATTRIBUTE_VALUES
6470 WHERE ITEM_KEY = to_char(p_line_rec.line_id)
6471 AND ITEM_TYPE = 'OEOL'
6472 AND NAME = 'RESPONSIBILITY_ID';
6473
6474 SELECT NUMBER_VALUE
6475 INTO l_appl_id
6476 FROM WF_ITEM_ATTRIBUTE_VALUES
6477 WHERE ITEM_KEY = to_char(p_line_rec.line_id)
6478 AND ITEM_TYPE = 'OEOL'
6479 AND NAME = 'APPLICATION_ID';
6480
6481 EXCEPTION WHEN OTHERS THEN
6482 l_user_id := NULL;
6483 l_resp_id := NULL;
6484 l_appl_id := NULL;
6485 OE_DEBUG_PUB.add('Unable to find item attributes while searching for Tax Code profile value : '||sqlerrm,1);
6486 NULL;
6487 END;
6488
6489 OE_DEBUG_PUB.add('Tax code value on the Order Line '||p_line_rec.tax_code,5);
6490 OE_DEBUG_PUB.add('ID => User,Resp,Appl : '||l_user_id||','||l_resp_id||','||l_appl_id,5);
6491
6492 -- 3757279
6493 l_concat_segment := 'u'||l_user_id||'r'||l_resp_id||'a'||l_appl_id;
6494 oe_debug_pub.add('l_concat_segment'||l_concat_segment,1);
6495 l_table_index := FIND(l_concat_segment);
6496 IF l_table_index < TABLE_SIZE THEN
6497 IF l_debug_level > 0 THEN
6498 --oe_debug_pub.add( 'cached FND PROFILE AR_ALLOW_TAX_CODE_OVERRIDE: '||Prf_Tbl(l_table_index).prf_value,1);
6499 oe_debug_pub.add( 'cached FND PROFILE ZX_ALLOW_TAX_CLASSIF_OVERRIDE: '||Prf_Tbl(l_table_index).prf_value,1);
6500 END IF;
6501 l_prof_value := Prf_Tbl(l_table_index).prf_value;
6502 ELSE
6503 put(l_concat_segment,l_user_id,l_resp_id,l_appl_id,l_prof_value);
6504 IF l_debug_level > 0 THEN
6505 --oe_debug_pub.add( ' Uncached first time FND PROFILE AR_ALLOW_TAX_CODE_OVERRIDE: '||l_prof_value,1);
6506 oe_debug_pub.add( ' Uncached first time FND PROFILE ZX_ALLOW_TAX_CLASSIF_OVERRIDE: '||l_prof_value,1);
6507 END IF;
6508 END IF;
6509 -- 3757279
6510
6511 IF NVL(l_prof_value,'N') = 'Y' THEN
6512 p_x_interface_line_rec.Tax_code := p_line_rec.Tax_code;
6513 END IF;
6514 OE_DEBUG_PUB.add('Tax Code interfaced to AR is : '||p_line_rec.Tax_Code,1);
6515
6516 -- Changes for 3144768 End
6517 IF Return_Line(p_line_rec) THEN
6518 IF l_debug_level > 0 THEN
6519 oe_debug_pub.add( 'SETTING INFORMATION FOR RETURN LINE' , 5 ) ;
6520 END IF;
6521 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3 := '0';
6522 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE4 := '0';
6523 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE7 := '0';
6524 p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE8 := '0';
6525 p_x_interface_line_rec.Reason_Code := p_line_rec.Return_Reason_Code;
6526 --Bug2302812.Commented the procedure "Get_Received_Status" and in turn we get the
6527 --Receipt date from "RCV_TRANSACTIONS".
6528 /* OE_LINE_STATUS_PUB.Get_Received_Status(p_line_id => p_line_rec.line_id, x_result=>l_rma_result, x_result_date=>l_rma_date);*/
6529 --Bug2758528-Added a check for 'RECEIVE' Transaction type.
6530
6531 -- With the new fix we are populating the actual_shipment_date for RMAs.
6532 -- But for old RMAs it may be still NULL, hence adding this logic
6533 -- to avoid the data upgrade impact for open RMA lines.
6534
6535 IF p_line_rec.actual_shipment_date IS NULL THEN
6536 SELECT max ( transaction_date ) -- Bug#3343004
6537 INTO l_rma_date
6538 FROM rcv_transactions
6539 WHERE transaction_type IN ('RECEIVE','UNORDERED')
6540 AND oe_order_line_id = p_line_rec.line_id;
6541
6542 p_x_interface_line_rec.Ship_Date_Actual := l_rma_date;
6543
6544 ELSE
6545 p_x_interface_line_rec.Ship_Date_Actual :=
6546 p_line_rec.actual_shipment_date;
6547 END IF;
6548
6549 IF p_x_interface_line_rec.Ship_Date_Actual is NULL THEN
6550 IF (fnd_profile.value('OE_RECEIVABLES_DATE_FOR_NONSHIP_LINES') = 'Y')
6551 THEN
6552 p_x_interface_line_rec.Ship_Date_Actual := SYSDATE;
6553 END IF;
6554 END IF;
6555
6556 --p_x_interface_line_rec.Ship_Date_Actual := l_rma_date;
6557 p_x_interface_line_rec.Fob_Point := NULL;
6558 p_x_interface_line_rec.Ship_Via := NULL;
6559 p_x_interface_line_rec.Waybill_Number := NULL;
6560 p_x_interface_line_rec.Reference_Line_Id := p_line_rec.Credit_Invoice_Line_Id;
6561 p_x_interface_line_rec.Accounting_Rule_Id := NULL;
6562 p_x_interface_line_rec.Invoicing_Rule_Id := NULL;
6563 p_x_interface_line_rec.Term_Id := NULL;
6564 --bug 6324173, populate credit method only if referenced invoice has accounting rule
6565 IF p_x_interface_line_rec.Reference_Line_Id is NOT NULL THEN
6566 select ACCOUNTING_RULE_ID INTO L_ACCOUNTING_RULE_ID from RA_CUSTOMER_TRX_LINES_all
6567 where CUSTOMER_TRX_LINE_ID= p_x_interface_line_rec.Reference_Line_Id;
6568 IF L_ACCOUNTING_RULE_ID is NOT NULL THEN
6569 Get_Credit_Method_Code(p_line_rec
6570 ,p_x_interface_line_rec.Credit_Method_For_Acct_Rule
6571 ,p_x_interface_line_rec.Credit_Method_For_Installments);
6572 END IF;
6573 END IF;
6574 ELSE
6575 p_x_interface_line_rec.Reason_Code := NULL;
6576 p_x_interface_line_rec.Ship_Date_Actual := NVL(p_x_interface_line_rec.Ship_Date_Actual, p_line_rec.actual_shipment_date);
6577 p_x_interface_line_rec.Fob_Point := p_line_rec.fob_point_code;
6578 p_x_interface_line_rec.Waybill_Number := p_x_interface_line_rec.Interface_line_Attribute4;
6579 -- p_x_interface_line_rec.Ship_Via := NVL(p_x_interface_line_rec.Ship_Via, p_line_rec.freight_carrier_code); -- Should it be shipping_method_code???
6580 IF p_line_rec.Commitment_Id IS NOT NULL THEN
6581 IF l_debug_level > 0 THEN
6582 oe_debug_pub.add( 'REFERENCE_LINE_ID FROM COMMITMENT ID IS '||P_LINE_REC.COMMITMENT_ID ) ;
6583 END IF;
6584 SELECT customer_trx_line_id
6585 INTO p_x_interface_line_rec.Reference_Line_Id
6586 FROM ra_customer_trx_lines_all
6587 WHERE customer_trx_id = p_line_rec.Commitment_Id;
6588 -- p_x_interface_line_rec.Cust_Trx_Type_Id := NULL; -- bug 4744262
6589 END IF;
6590 IF /*p_line_rec.accounting_rule_id = 1 or*/ p_line_rec.accounting_rule_id is NULL THEN--Bug 5730802
6591 p_x_interface_line_rec.accounting_rule_id := NULL;
6592 p_x_interface_line_rec.invoicing_rule_id := NULL;
6593 ELSE
6594 p_x_interface_line_rec.accounting_rule_id := p_line_rec.accounting_rule_id;
6595 p_x_interface_line_rec.invoicing_rule_id := p_line_rec.invoicing_rule_id;
6596 END IF;
6597 END IF;
6598 -- This may be a temporary fix for bug# 1386715.
6599 -- need to understand if we need to convert duration into different unit
6600 -- Right now, it is in units of Months.
6601 -- But, Autoinvoice uses accounting rule's period.
6602 IF NOT Return_Line(p_line_rec) AND p_x_interface_line_rec.accounting_rule_id IS NOT NULL THEN
6603 IF l_debug_level > 0 THEN
6604 oe_debug_pub.add( 'GET ACCOUNTING RULE TYPE ' , 5 ) ;
6605 END IF;
6606 --Modified for bug#4190312
6607 SELECT type,frequency
6608 INTO l_accounting_rule_type, l_frequency
6609 FROM ra_rules
6610 WHERE rule_id = p_x_interface_line_rec.accounting_rule_id;
6611 IF l_accounting_rule_type = 'ACC_DUR' THEN
6612 -- accounting rule duration is required for regular (non service) lines at booking
6613 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
6614 IF l_debug_level > 0 THEN
6615 oe_debug_pub.add( 'INTERFACING ACCOUNTING_RULE_DURATION FOR REGULAR LINES:'|| P_LINE_REC.ACCOUNTING_RULE_DURATION ) ;
6616 END IF;
6617 p_x_interface_line_rec.ACCOUNTING_RULE_DURATION := p_line_rec.accounting_rule_duration;
6618 ELSE
6619 IF l_debug_level > 0 THEN
6620 oe_debug_pub.add( 'BELOW PACK I , DO NOT INTERFACE DURATION' ) ;
6621 END IF;
6622 p_x_interface_line_rec.ACCOUNTING_RULE_DURATION := NULL;
6623 END IF;
6624 IF p_line_rec.item_type_code = 'SERVICE' THEN
6625 p_x_interface_line_rec.rule_start_date := p_line_rec.service_start_date; -- 1833680
6626 --PP Revenue Recognition
6627 --bug 4893057
6628 --Need to pass the rule end date for partial revenue recognition enhancement
6629 --bug 5608550 Commenting the code since we are in 'Variable schedule' ie 'ACC_DUR'
6630 --p_x_interface_line_rec.rule_end_date := p_line_rec.service_end_date;
6631 IF p_x_interface_line_rec.accounting_rule_duration IS NULL THEN
6632 IF p_line_rec.service_start_date IS NULL OR p_line_rec.service_end_date IS NULL THEN
6633 -- bug# 4190312 post message and complete with status INCOMPLETE
6634 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ACCT_RULE_DURATION');
6635 OE_MSG_PUB.ADD;
6636 IF l_debug_level > 0 THEN
6637 oe_debug_pub.add( 'SERVICE START DATE OR SERVICE END DATE IS NULL' , 3 ) ;
6638 END IF;
6639 p_x_interface_line_rec.ACCOUNTING_RULE_DURATION := -1;
6640 ELSE
6641 BEGIN
6642 --Modified for bug#4190312
6643 /*
6644 l_acct_rule_duration := ceil(OKS_TIME_MEASURES_PUB.GET_QUANTITY(
6645 p_start_date => p_line_rec.service_start_date
6646 ,p_end_date => p_line_rec.service_end_date));
6647 */
6648
6649 SELECT period_set_name
6650 INTO l_calendar_name
6651 FROM gl_sets_of_books
6652 WHERE set_of_books_id = p_x_interface_line_rec.SET_OF_BOOKS_ID;
6653
6654 GL_CALENDAR_PKG.get_num_periods_in_date_range(
6655 calendar_name => l_calendar_name,
6656 period_type => l_frequency,
6657 start_date => p_line_rec.service_start_date,
6658 end_date => p_line_rec.service_end_date,
6659 check_missing => TRUE,
6660 num_periods => l_acct_rule_duration,
6661 return_code => l_return_code,
6662 unmapped_date => l_unmapped_date);
6663
6664 IF l_debug_level > 0 THEN
6665 oe_debug_pub.add('l_acct_rule_duration:'||l_acct_rule_duration);
6666 oe_debug_pub.add('l_return_code:'||l_return_code);
6667 oe_debug_pub.add('l_unmapped_date:'||l_unmapped_date);
6668 END IF;
6669 IF l_return_code = 'SUCCESS' THEN
6670 p_x_interface_line_rec.ACCOUNTING_RULE_DURATION := l_acct_rule_duration;
6671 ELSE
6672 p_x_interface_line_rec.ACCOUNTING_RULE_DURATION := -1;
6673 -- post message
6674 FND_MESSAGE.SET_NAME('ONT','ONT_GL_UNMAPPED_DATES');
6675 FND_MESSAGE.SET_TOKEN('START_DATE', p_line_rec.service_start_date);
6676 FND_MESSAGE.SET_TOKEN('END_DATE', p_line_rec.service_end_date);
6677 FND_MESSAGE.SET_TOKEN('CALENDAR_NAME', l_calendar_name); OE_MSG_PUB.ADD;
6678 IF l_debug_level > 0 THEN
6679 oe_debug_pub.add('Atleast one or more dates ('||l_unmapped_date||') within the date range that are not associated with any adjustment period.');
6680 END IF;
6681 END IF;
6682 EXCEPTION
6683 WHEN OTHERS THEN
6684 p_x_interface_line_rec.ACCOUNTING_RULE_DURATION := -1;
6685 -- Modified for bug# 4190312
6686 FND_MESSAGE.SET_NAME('ONT','ONT_GL_UNMAPPED_DATES');
6687 FND_MESSAGE.SET_TOKEN('START_DATE', p_line_rec.service_start_date);
6688 FND_MESSAGE.SET_TOKEN('END_DATE', p_line_rec.service_end_date);
6689 FND_MESSAGE.SET_TOKEN('CALENDAR_NAME', l_calendar_name);
6690 OE_MSG_PUB.ADD;
6691 IF l_debug_level > 0 THEN
6692 oe_debug_pub.add( 'ERROR IN GL_CALENDAR_PKG.Get_Num_Periods_In_Date_Range ; ERROR => '||SQLERRM , 1 ) ;
6693 END IF;
6694 END;
6695 END IF; -- end of service service start/end dates
6696 END IF; -- null accounting_rule_duaration
6697 END IF; --service line
6698 ELSE -- fixed accounting rule
6699 -- Pass rule_start_date for service lines for fixed rules also (as it was before change for variable accounting rules)
6700 IF p_line_rec.item_type_code = 'SERVICE'
6701 OR (l_accounting_rule_type = 'PP_DR_ALL' OR l_accounting_rule_type = 'PP_DR_PP')THEN -- webroot bug 6826344 modified the contition
6702 oe_debug_pub.add( 'Start date assigned: l_accounting_rule_type: ' || l_accounting_rule_type) ;
6703 p_x_interface_line_rec.rule_start_date := p_line_rec.service_start_date; -- 1833680
6704 --PP Revenue Recognition
6705 --bug 4893057
6706 --Need to pass the rule end date for partial revenue recognition enhancement
6707 --bug 5608550 Need to pass the rule end date ONLY for partial revenue recognition
6708 IF ((l_accounting_rule_type = 'PP_DR_ALL') OR (l_accounting_rule_type = 'PP_DR_PP')) THEN
6709
6710 oe_debug_pub.add( 'End date assigned: l_accounting_rule_type: ' || l_accounting_rule_type) ;
6711 p_x_interface_line_rec.rule_end_date := p_line_rec.service_end_date;
6712 END IF;
6713 END IF;
6714 END IF; -- variable/fixed accounting rule
6715 END IF;
6716
6717 IF l_debug_level > 0 THEN
6718 oe_debug_pub.add( 'GET ATTRIBUTE VALUES' , 5 ) ;
6719 END IF;
6720 p_x_interface_line_rec.Attribute_Category := p_line_rec.Context;
6721 p_x_interface_line_rec.Attribute1 := substrb(p_line_rec.Attribute1, 1, 150);
6722 p_x_interface_line_rec.Attribute2 := substrb(p_line_rec.Attribute2, 1, 150);
6723 p_x_interface_line_rec.Attribute3 := substrb(p_line_rec.Attribute3, 1, 150);
6724 p_x_interface_line_rec.Attribute4 := substrb(p_line_rec.Attribute4, 1, 150);
6725 p_x_interface_line_rec.Attribute5 := substrb(p_line_rec.Attribute5, 1, 150);
6726 p_x_interface_line_rec.Attribute6 := substrb(p_line_rec.Attribute6, 1, 150);
6727 p_x_interface_line_rec.Attribute7 := substrb(p_line_rec.Attribute7, 1, 150);
6728 p_x_interface_line_rec.Attribute8 := substrb(p_line_rec.Attribute8, 1, 150);
6729 p_x_interface_line_rec.Attribute9 := substrb(p_line_rec.Attribute9, 1, 150);
6730 p_x_interface_line_rec.Attribute10 := substrb(p_line_rec.Attribute10, 1, 150);
6731 p_x_interface_line_rec.Attribute11 := substrb(p_line_rec.Attribute11, 1, 150);
6732 p_x_interface_line_rec.Attribute12 := substrb(p_line_rec.Attribute12, 1, 150);
6733 p_x_interface_line_rec.Attribute13 := substrb(p_line_rec.Attribute13, 1, 150);
6734 p_x_interface_line_rec.Attribute14 := substrb(p_line_rec.Attribute14, 1, 150);
6735 p_x_interface_line_rec.Attribute15 := substrb(p_line_rec.Attribute15, 1, 150);
6736
6737 p_x_interface_line_rec.Header_Attribute_Category := p_header_rec.Context;
6738 p_x_interface_line_rec.Header_Attribute1 := substrb(p_header_rec.Attribute1, 1, 150);
6739 p_x_interface_line_rec.Header_Attribute2 := substrb(p_header_rec.Attribute2, 1, 150);
6740 p_x_interface_line_rec.Header_Attribute3 := substrb(p_header_rec.Attribute3, 1, 150);
6741 p_x_interface_line_rec.Header_Attribute4 := substrb(p_header_rec.Attribute4, 1, 150);
6742 p_x_interface_line_rec.Header_Attribute5 := substrb(p_header_rec.Attribute5, 1, 150);
6743 p_x_interface_line_rec.Header_Attribute6 := substrb(p_header_rec.Attribute6, 1, 150);
6744 p_x_interface_line_rec.Header_Attribute7 := substrb(p_header_rec.Attribute7, 1, 150);
6745 p_x_interface_line_rec.Header_Attribute8 := substrb(p_header_rec.Attribute8, 1, 150);
6746 p_x_interface_line_rec.Header_Attribute9 := substrb(p_header_rec.Attribute9, 1, 150);
6747 p_x_interface_line_rec.Header_Attribute10 := substrb(p_header_rec.Attribute10, 1, 150);
6748 p_x_interface_line_rec.Header_Attribute11 := substrb(p_header_rec.Attribute11, 1, 150);
6749 p_x_interface_line_rec.Header_Attribute12 := substrb(p_header_rec.Attribute12, 1, 150);
6750 p_x_interface_line_rec.Header_Attribute13 := substrb(p_header_rec.Attribute13, 1, 150);
6751 p_x_interface_line_rec.Header_Attribute14 := substrb(p_header_rec.Attribute14, 1, 150);
6752 p_x_interface_line_rec.Header_Attribute15 := substrb(p_header_rec.Attribute15, 1, 150);
6753
6754 p_x_interface_line_rec.UOM_Code := p_line_rec.Order_Quantity_UOM;
6755 p_x_interface_line_rec.Tax_Exempt_Flag := nvl(p_line_rec.Tax_Exempt_Flag, 'S');
6756 p_x_interface_line_rec.Tax_Exempt_Number := p_line_rec.Tax_Exempt_Number;
6757 p_x_interface_line_rec.Tax_Exempt_Reason_Code := p_line_rec.Tax_Exempt_Reason_Code;
6758 p_x_interface_line_rec.Org_id := p_line_rec.Org_id;
6759
6760 IF l_debug_level > 0 THEN
6761 oe_debug_pub.add( 'GET DEFAULT TERRITORY' , 5 ) ;
6762 END IF;
6763
6764 IF oe_code_control.code_release_level < '110510' THEN
6765 SELECT asp.default_territory
6766 INTO l_territory_code
6767 FROM ar_system_parameters asp
6768 WHERE nvl(asp.org_id, -3114) = nvl(p_line_rec.org_id, -3114);
6769 ELSE
6770 l_AR_Sys_Param_Rec := OE_Sys_Parameters_Pvt.Get_AR_Sys_Params(p_line_rec.org_id);
6771 l_territory_code := l_AR_Sys_Param_Rec.default_territory;
6772 END IF;
6773
6774 -- Get territory information into p_x_interface_line_rec
6775 IF l_debug_level > 0 THEN
6776 oe_debug_pub.add( 'PREPARE TERRITORY INFORMATION. l_territory_code: ' ||l_territory_code, 5 ) ;
6777 END IF;
6778 OE_DEBUG_PUB.DUMPDEBUG;
6779
6780 p_x_interface_line_rec.territory_id := 0;
6781
6782 IF (l_territory_code = 'SALES') THEN
6783 SELECT max(nvl(rst.territory_id, 0))
6784 INTO p_x_interface_line_rec.territory_id
6785 FROM ra_salesrep_territories rst
6786 WHERE rst.salesrep_id = nvl(p_line_rec.salesrep_id, p_header_rec.salesrep_id)
6787 AND sysdate between nvl(start_date_active, sysdate)
6788 AND nvl(end_date_active, sysdate);
6789 ELSIF (l_territory_code = 'BILL' AND p_line_rec.invoice_to_org_id IS NOT NULL) THEN
6790 SELECT nvl(sub.territory_id,0)
6791 INTO p_x_interface_line_rec.territory_id
6792 FROM hz_cust_site_uses sub
6793 WHERE sub.site_use_id = p_line_rec.invoice_to_org_id;
6794 ELSIF (l_territory_code = 'SHIP' AND p_line_rec.ship_to_org_id IS NOT NULL) THEN
6795 SELECT nvl(sus.territory_id,0)
6796 INTO p_x_interface_line_rec.territory_id
6797 FROM hz_cust_site_uses sus
6798 WHERE sus.site_use_id = p_line_rec.ship_to_org_id;
6799 END IF;
6800 IF l_debug_level > 0 THEN
6801 oe_debug_pub.add( 'territory_id:'|| p_x_interface_line_rec.territory_id , 5 ) ;
6802 END IF;
6803 IF (p_x_interface_line_rec.territory_id > 0) THEN
6804 SELECT terr.segment1
6805 ,terr.segment2
6806 ,terr.segment3
6807 ,terr.segment4
6808 ,terr.segment5
6809 ,terr.segment6
6810 ,terr.segment7
6811 ,terr.segment8
6812 ,terr.segment9
6813 ,terr.segment10
6814 ,terr.segment11
6815 ,terr.segment12
6816 ,terr.segment13
6817 ,terr.segment14
6818 ,terr.segment15
6819 ,terr.segment16
6820 ,terr.segment17
6821 ,terr.segment18
6822 ,terr.segment19
6823 ,terr.segment20
6824 INTO p_x_interface_line_rec.TERRITORY_SEGMENT1
6825 ,p_x_interface_line_rec.TERRITORY_SEGMENT2
6826 ,p_x_interface_line_rec.TERRITORY_SEGMENT3
6827 ,p_x_interface_line_rec.TERRITORY_SEGMENT4
6828 ,p_x_interface_line_rec.TERRITORY_SEGMENT5
6829 ,p_x_interface_line_rec.TERRITORY_SEGMENT6
6830 ,p_x_interface_line_rec.TERRITORY_SEGMENT7
6831 ,p_x_interface_line_rec.TERRITORY_SEGMENT8
6832 ,p_x_interface_line_rec.TERRITORY_SEGMENT9
6833 ,p_x_interface_line_rec.TERRITORY_SEGMENT10
6834 ,p_x_interface_line_rec.TERRITORY_SEGMENT11
6835 ,p_x_interface_line_rec.TERRITORY_SEGMENT12
6836 ,p_x_interface_line_rec.TERRITORY_SEGMENT13
6837 ,p_x_interface_line_rec.TERRITORY_SEGMENT14
6838 ,p_x_interface_line_rec.TERRITORY_SEGMENT15
6839 ,p_x_interface_line_rec.TERRITORY_SEGMENT16
6840 ,p_x_interface_line_rec.TERRITORY_SEGMENT17
6841 ,p_x_interface_line_rec.TERRITORY_SEGMENT18
6842 ,p_x_interface_line_rec.TERRITORY_SEGMENT19
6843 ,p_x_interface_line_rec.TERRITORY_SEGMENT20
6844 FROM ra_territories terr
6845 WHERE terr.territory_id = p_x_interface_line_rec.territory_id;
6846 END IF;
6847 IF p_x_interface_line_rec.territory_id = 0 THEN
6848 p_x_interface_line_rec.territory_id := NULL;
6849 END IF;
6850 IF l_debug_level > 0 THEN
6851 oe_debug_pub.add( 'FINISH TERRITORY' , 5 ) ;
6852 END IF;
6853 p_x_interface_line_rec.Batch_Source_Name := Get_Invoice_source(p_line_rec, p_x_interface_line_rec);
6854 IF l_debug_level > 0 THEN
6855 oe_debug_pub.add( 'BATCH SOURCE NAME : '||P_X_INTERFACE_LINE_REC.BATCH_SOURCE_NAME ) ;
6856 END IF;
6857 IF p_x_interface_line_rec.INTERFACE_LINE_ATTRIBUTE3 = '0' THEN
6858 IF p_x_interface_line_rec.REQUEST_ID IS NOT NULL THEN
6859 IF l_debug_level > 0 THEN
6860 oe_debug_pub.add( 'SET REQUEST_ID TO NULL FOR NON DELIVERY LINES' , 5 ) ;
6861 END IF;
6862 p_x_interface_line_rec.REQUEST_ID := NULL;
6863 END IF;
6864 END IF;
6865 --Customer Acceptance
6866 -- Populate acceptance date as trx_date for pre-billing lines to get it as invoice date
6867 IF (p_line_rec.flow_status_code='PRE-BILLING_ACCEPTANCE' OR
6868 OE_ACCEPTANCE_UTIL.Pre_billing_acceptance_on(p_line_rec => p_line_rec)) THEN
6869
6870 p_x_interface_line_rec.trx_date := p_line_rec.Revrec_signature_date;
6871 END IF;
6872
6873 -- parent_line_id, deferral_exclusion_flag should be set always
6874 -- irrespective of customer acceptance enabled or not
6875 IF p_line_rec.top_model_line_id is not null and p_line_rec.top_model_line_id <> p_line_rec.line_id THEN
6876 p_x_interface_line_rec.parent_line_id := p_line_rec.top_model_line_id;
6877 END IF;
6878 IF p_line_rec.item_type_code = 'SERVICE' THEN
6879 -- get parent line_id for service line.
6880 IF p_line_rec.service_reference_type_code='CUSTOMER_PRODUCT' AND
6881 p_line_rec.service_reference_line_id IS NOT NULL THEN
6882 BEGIN
6883 OE_SERVICE_UTIL.Get_Cust_Product_Line_Id
6884 ( x_return_status => l_return_status
6885 , p_reference_line_id => p_line_rec.service_reference_line_id
6886 , p_customer_id => p_line_rec.sold_to_org_id
6887 , x_cust_product_line_id => l_order_line_id
6888 );
6889 EXCEPTION
6890 WHEN OTHERS THEN
6891 l_parent_line_id := NULL;
6892 END;
6893 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
6894 l_parent_line_id := l_order_line_id;
6895 ELSE
6896 FND_MESSAGE.SET_NAME('ONT','ONT_NO_CUST_PROD_LINE');
6897 OE_MSG_PUB.ADD;
6898 END IF;
6899 ELSE -- not a customer product
6900 l_parent_line_id := p_line_rec.service_reference_line_id;
6901 END IF;
6902 IF l_parent_line_id IS NOT NULL THEN
6903 BEGIN
6904 Select top_model_line_id
6905 into l_top_model_line_id
6906 from oe_order_lines_all
6907 where line_id = l_parent_line_id ;
6908 EXCEPTION WHEN NO_DATA_FOUND THEN
6909 p_x_interface_line_rec.parent_line_id := l_parent_line_id ;
6910 END;
6911
6912 IF l_top_model_line_id IS NOT NULL then --service parent is a child line
6913 p_x_interface_line_rec.parent_line_id := l_top_model_line_id;
6914 else
6915 p_x_interface_line_rec.parent_line_id := l_parent_line_id ;
6916 end if;
6917 ELSE
6918 p_x_interface_line_rec.deferral_exclusion_flag := 'Y';
6919 END IF;
6920 END IF;
6921 --Customer Acceptance
6922 IF l_debug_level > 0 THEN
6923 oe_debug_pub.add( 'START CREDIT CARD PROCESSING' , 5 ) ;
6924 END IF;
6925 --serla begin
6926 IF NOT OE_PREPAYMENT_UTIL.IS_MULTIPLE_PAYMENTS_ENABLED THEN
6927 --serla end
6928 -- Check if the Line has an associated Credit Card Payment
6929 IF p_header_rec.credit_card_number is NOT NULL AND
6930 NOT Return_Line(p_line_rec) THEN /* Bug #3463843 */
6931 IF l_debug_level > 0 THEN
6932 oe_debug_pub.add( 'CREDIT CARD INFO EXISTS' , 5 ) ;
6933 -- Fix for Bug # 1586750.
6934 -- Get the Customer Id for Invoice To Org at the Header Level.
6935 oe_debug_pub.add( 'GET CUSTOMER ID FOR INVOICE TO ORG AT HEADER' , 5 ) ;
6936 END IF;
6937
6938 BEGIN
6939 /* Commented for bug #3519137 added new select statement */
6940 /* SELECT customer_id
6941 INTO l_hdr_inv_to_cust_id
6942 FROM oe_invoice_to_orgs_v
6943 WHERE organization_id = p_header_rec.invoice_to_org_id;*/
6944
6945 SELECT acct_site.cust_account_id
6946 INTO l_hdr_inv_to_cust_id
6947 FROM hz_cust_acct_sites_all acct_site, hz_cust_site_uses_all site
6948 WHERE SITE.SITE_USE_CODE = 'BILL_TO'
6949 AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
6950 AND SITE.SITE_USE_ID = p_header_rec.invoice_to_org_id;
6951
6952 EXCEPTION
6953 WHEN OTHERS THEN
6954 IF l_debug_level > 0 THEN
6955 oe_debug_pub.add( 'INVOICE TO CUSTOMER ID : '||L_HDR_INV_TO_CUST_ID , 1 ) ;
6956 oe_debug_pub.add( 'ORGANIZATION ID : '||P_HEADER_REC.INVOICE_TO_ORG_ID , 1 ) ;
6957 oe_debug_pub.add( 'IN OTHERS EXCEPTION ( OE_INVOICE_TO_ORGS_V ) '||SQLERRM , 1 ) ;
6958 END IF;
6959 END;
6960 -- Calling Process Customer Bank Account
6961 IF l_debug_level > 0 THEN
6962 oe_debug_pub.add( 'BEFORE CALLING AR PACKAGE PROCESS_CUST_BANK_ACCOUNT ( ) ' , 5 ) ;
6963 END IF;
6964 --
6965 l_trx_date := nvl(p_header_rec.ordered_date, sysdate)
6966 - nvl( to_number(fnd_profile.value('ONT_DAYS_TO_BACKDATE_BANK_ACCT')), 0);
6967 BEGIN
6968 /*
6969 ** Fix Bug # 2438201
6970 ** p_trx_date to be passed as order creation date so that autoinvoice succceds
6971 */
6972
6973 null;
6974
6975 /*** Commented out for R12 cc encryption
6976 arp_bank_pkg.process_cust_bank_account
6977 ( p_trx_date => l_trx_date
6978 , p_currency_code => p_header_rec.transactional_curr_code
6979 , p_cust_id => l_hdr_inv_to_cust_id
6980 , p_site_use_id => p_header_rec.invoice_to_org_id
6981 , p_credit_card_num => p_header_rec.credit_card_number
6982 , p_acct_name => p_header_rec.credit_card_holder_name
6983 , p_exp_date => p_header_rec.credit_card_expiration_date
6984 , p_bank_account_id => l_bank_acct_id
6985 , p_bank_account_uses_id => l_bank_acct_uses_id
6986 ) ;
6987 EXCEPTION
6988 WHEN OTHERS THEN
6989 l_bank_acct_id := -1;
6990 p_x_interface_line_rec.customer_bank_account_id := -1;
6991 IF l_debug_level > 0 THEN
6992 oe_debug_pub.add( 'AR PACKAGE ARP_BANK_PKG.PROCESS_CUST_BANK_ACCOUNT ( ) RETURNED ERROR : '||SQLERRM , 1 ) ;
6993 END IF;
6994 ***/
6995 END;
6996 IF l_debug_level > 0 THEN
6997 oe_debug_pub.add( 'AFTER CALLING PROCESS_CUST_BANK_ACCOUNT ( ) PROCEDURE ' , 5 ) ;
6998 END IF;
6999 -- Check if a Valid Bank Account Id returned
7000 IF NVL(l_bank_acct_id, 0) > 0 THEN
7001 -- Setup the Bank Account Information
7002 IF l_debug_level > 0 THEN
7003 oe_debug_pub.add( 'BANK ACCOUNT ID : '||L_BANK_ACCT_ID ) ;
7004 END IF;
7005 p_x_interface_line_rec.customer_bank_account_id := l_bank_acct_id;
7006 p_x_interface_line_rec.customer_bank_account_name
7007 := p_header_rec.credit_card_holder_name;
7008 /* Fix FP Bug # 3647389: Get the Current Context Values */
7009 l_cur_user_id := fnd_global.user_id;
7010 fnd_profile.get('RESP_ID',l_cur_resp_id);
7011 fnd_profile.get('RESP_APPL_ID',l_cur_appl_id);
7012
7013 /* Fix FP Bug # 3647389: Set the Context using Original Values */
7014 fnd_global.apps_initialize(l_user_id, l_resp_id, l_appl_id);
7015
7016 -- Call Get Primary Pay Method to get the method id
7017 IF l_debug_level > 0 THEN
7018 oe_debug_pub.add( 'GETTING PRIMAY PAYMENT METHOD' , 5 ) ;
7019 END IF;
7020
7021 l_pay_method_id := OE_Verify_Payment_PUB.Get_Primary_Pay_Method
7022 ( p_header_rec => p_header_rec ) ;
7023 IF l_debug_level > 0 THEN
7024 oe_debug_pub.add( 'AFTER GETTING PRIMARY PAYMENT METHOD' , 5 ) ;
7025 END IF;
7026
7027 /* Fix FP Bug # 3647389: Reset the Context using Current Values */
7028 fnd_global.apps_initialize(l_cur_user_id, l_cur_resp_id, l_cur_appl_id);
7029
7030 -- Check if a Valid Pay Method Id returned
7031 IF NVL(l_pay_method_id, 0) > 0 THEN
7032 IF l_debug_level > 0 THEN
7033 oe_debug_pub.add( 'PAYMENT METHOD IS VALID' ) ;
7034 -- Call Get Pay Method Info to get the method name
7035 oe_debug_pub.add( 'GET PAYMENT METHOD INFORMATION ' , 5 ) ;
7036 END IF;
7037 OE_Verify_Payment_PUB.Get_Pay_Method_Info
7038 ( p_pay_method_id => l_pay_method_id
7039 , p_pay_method_name => l_pay_method_name
7040 , p_merchant_id => l_merchant_id
7041 ) ;
7042 IF l_debug_level > 0 THEN
7043 oe_debug_pub.add( 'AFTER GETTING PAYMENT METHOD INFORMATION' , 5 ) ;
7044 -- Setup the Payment Method Information
7045 oe_debug_pub.add( 'PAYMENT METHOD ID IS : '||L_PAY_METHOD_ID , 5 ) ;
7046 END IF;
7047 p_x_interface_line_rec.receipt_method_id := l_pay_method_id;
7048 p_x_interface_line_rec.receipt_method_name := l_pay_method_name;
7049 -- Check if Credit Card Approval Code exists
7050 IF p_header_rec.credit_card_approval_code is NOT NULL THEN
7051 IF l_debug_level > 0 THEN
7052 oe_debug_pub.add( 'CREDIT CARD APPROVAL CODE EXISTS' , 5 ) ;
7053 -- Call Fetch Current Auth to get the tangible id
7054 oe_debug_pub.add( 'FETCH CURRENT AUTHORIZATION CODE , IF ANY' , 5 ) ;
7055 END IF;
7056 OE_Verify_Payment_PUB.Fetch_Current_Auth
7057 ( p_header_rec => p_header_rec
7058 , p_trxn_id => l_trxn_id
7059 , p_tangible_id => l_tangible_id
7060 ) ;
7061 IF l_debug_level > 0 THEN
7062 oe_debug_pub.add( ' AFTER CALLING FETCH_CURRENT_AUTH' ) ;
7063 -- Setup the CC Approval Info
7064 oe_debug_pub.add( 'TANGIBLE ID IS : '||L_TANGIBLE_ID , 5 ) ;
7065 END IF;
7066 p_x_interface_line_rec.approval_code := p_header_rec.credit_card_approval_code;
7067 p_x_interface_line_rec.payment_server_order_num := l_tangible_id;
7068 END IF; -- IF Approval Code Exists
7069 END IF; -- IF Pay Method ID is VALID
7070 END IF; -- IF Bank Account ID is VALID
7071 END IF; -- IF Credit Card Payment Exists
7072 --serla begin
7073 ELSE -- multiple payments enabled
7074 IF l_debug_level > 0 THEN
7075 oe_debug_pub.add('multiple payment enabled. getting payments data from line payments');
7076 END IF;
7077 -- R12 CC encryption
7078 BEGIN
7079 SELECT payment_type_code
7080 , payment_trx_id
7081 , receipt_method_id
7082 -- , tangible_id
7083 -- , credit_card_holder_name
7084 -- , credit_card_approval_code
7085 , trxn_extension_id
7086 INTO l_payment_type_code
7087 , l_payment_trx_id
7088 , l_receipt_method_id
7089 -- , l_tangible_id
7090 -- , l_credit_card_holder_name
7091 -- , l_credit_card_approval_code
7092 , l_payment_trxn_extension_id
7093 FROM oe_payments
7094 WHERE line_id = p_line_rec.line_id
7095 AND header_id = p_line_rec.header_id
7096 AND payment_type_code <> 'COMMITMENT'
7097 AND payment_collection_event = 'INVOICE';
7098 IF l_debug_level > 0 THEN
7099 oe_debug_pub.add('l_payment_type_code:'||l_payment_type_code||'l_payment_trx_id:'||l_payment_trx_id||':l_receipt_method_id:'||l_receipt_method_id);
7100 END IF;
7101 EXCEPTION
7102 WHEN NO_DATA_FOUND THEN
7103 IF l_debug_level > 0 THEN
7104 oe_debug_pub.add('No invoice payments at line level');
7105 END IF;
7106 l_payment_type_code := NULL;
7107 l_payment_trx_id := NULL;
7108 l_receipt_method_id := NULL;
7109 /*
7110 l_tangible_id := NULL;
7111 l_credit_card_holder_name := NULL;
7112 l_credit_card_approval_code := NULL;
7113 */
7114 l_payment_trxn_extension_id := NULL;
7115
7116 END;
7117
7118 IF l_payment_type_code IS NULL THEN
7119 oe_debug_pub.add('Getting payments data from header payments');
7120 BEGIN
7121 SELECT payment_type_code
7122 , payment_trx_id
7123 , receipt_method_id
7124 -- , tangible_id
7125 -- , credit_card_holder_name
7126 -- , credit_card_approval_code
7127 , trxn_extension_id
7128 INTO l_payment_type_code
7129 , l_payment_trx_id
7130 , l_receipt_method_id
7131 -- , l_tangible_id
7132 -- , l_credit_card_holder_name
7133 -- , l_credit_card_approval_code
7134 , l_payment_trxn_extension_id
7135 FROM oe_payments
7136 WHERE header_id = p_line_rec.header_id
7137 AND line_id is NULL
7138 AND payment_collection_event = 'INVOICE';
7139 IF l_debug_level > 0 THEN
7140 oe_debug_pub.add('l_payment_type_code:'||l_payment_type_code||'l_payment_trx_id:'||l_payment_trx_id||':l_receipt_method_id:'||l_receipt_method_id);
7141 END IF;
7142 EXCEPTION
7143 WHEN NO_DATA_FOUND THEN
7144 l_payment_type_code := NULL;
7145 l_payment_trx_id := NULL;
7146 l_receipt_method_id := NULL;
7147 /*
7148 l_tangible_id := NULL;
7149 l_credit_card_holder_name := NULL;
7150 l_credit_card_approval_code := NULL;
7151 */
7152 l_payment_trxn_extension_id := NULL;
7153 END;
7154 END IF;
7155
7156 /* also need to pass payment_trxn_extension_id for pay later lines per AR.
7157 --pnpl
7158 -- we only need to interface auth code and tangible id
7159 -- for pay now lines
7160 -- set these values to null for pay later line
7161
7162 IF OE_PREPAYMENT_UTIL.Get_installment_Options = 'ENABLE_PAY_NOW' THEN
7163 IF NOT OE_PREPAYMENT_UTIL.Is_Pay_Now_Line(p_line_rec.line_id)
7164 -- AND l_credit_card_approval_code IS NOT NULL
7165 THEN
7166 *
7167 l_credit_card_approval_code := null;
7168 l_tangible_id := null;
7169 *
7170
7171 l_payment_trxn_extension_id := null;
7172
7173 END IF;
7174 END IF;
7175 */
7176
7177
7178 IF l_payment_type_code = 'CREDIT_CARD' OR
7179 l_payment_type_code = 'ACH' OR
7180 l_payment_type_code = 'DIRECT_DEBIT' OR /* Bug #3510892 */
7181 l_payment_type_code = 'CASH' OR
7182 l_payment_type_code = 'CHECK' THEN /* Bug #3742304 */
7183 p_x_interface_line_rec.receipt_method_id := l_receipt_method_id;
7184 p_x_interface_line_rec.payment_trxn_extension_id := l_payment_trxn_extension_id;
7185
7186 /* R12 CC encryption
7187 p_x_interface_line_rec.customer_bank_account_id := l_payment_trx_id;
7188 p_x_interface_line_rec.customer_bank_account_name := l_credit_card_holder_name;
7189 */
7190
7191 IF l_receipt_method_id IS NOT NULL THEN
7192 BEGIN
7193 SELECT NAME
7194 INTO p_x_interface_line_rec.receipt_method_name
7195 FROM AR_RECEIPT_METHODS
7196 WHERE RECEIPT_METHOD_ID = l_receipt_method_id;
7197 /* AND SYSDATE >= NVL(START_DATE, SYSDATE)
7198 AND SYSDATE <= NVL(END_DATE, SYSDATE); */
7199 EXCEPTION
7200 WHEN NO_DATA_FOUND THEN
7201 p_x_interface_line_rec.receipt_method_name := NULL;
7202 WHEN OTHERS THEN
7203 p_x_interface_line_rec.receipt_method_name := NULL;
7204 END;
7205 END IF;
7206
7207 --bug6086777 Reverting the fix made by bug 5849568
7208 /*
7209 --bug5849568
7210 --Creating a receipt method assignment at the site level if it does not exist so that Autoinvoice goes through
7211 IF l_receipt_method_id IS NOT NULL THEN
7212 IF l_debug_level > 0 THEN
7213 oe_debug_pub.add('Before creating receipt method assignment at site level if it does not exist');
7214 END IF;
7215 l_trx_date := nvl(p_header_rec.ordered_date, sysdate)
7216 - nvl( to_number(fnd_profile.value('ONT_DAYS_TO_BACKDATE_BANK_ACCT')), 0);
7217 --bug6025064 Using SQL Statement since API arp_bank_pkg.process_cust_pay_method has been obsoleted
7218 l_cust_pay_method_id := arp_bank_pkg.process_cust_pay_method
7219 ( p_pay_method_id => l_receipt_method_id
7220 , p_customer_id => p_header_rec.sold_to_org_id
7221 , p_site_use_id => p_header_rec.invoice_to_org_id
7222 , p_as_of_date => l_trx_date
7223 );
7224
7225 SELECT cust_receipt_method_id
7226 INTO l_cust_pay_method_id
7227 FROM ra_cust_receipt_methods rm
7228 WHERE rm.customer_id = p_header_rec.sold_to_org_id
7229 AND rm.SITE_USE_ID = NVL(p_header_rec.invoice_to_org_id, -1)
7230 AND rm.receipt_method_id = NVL(l_receipt_method_id, rm.receipt_method_id)
7231 AND l_trx_date BETWEEN rm.start_date AND NVL(rm.end_date, l_trx_date)
7232 AND primary_flag = 'Y';
7233 --bug6025064
7234
7235 IF l_debug_level > 0 THEN
7236 oe_debug_pub.add('l_cust_pay_method_id returned for Receipt Method ' || p_x_interface_line_rec.receipt_method_name|| 'is ' ||l_cust_pay_method_id);
7237 END IF;
7238
7239 END IF;
7240 --bug5849568
7241 */
7242 --bug6086777
7243
7244 --bug6086340 Refix the fix made by bug 5849568 using new AR API arp_ext_bank_pkg.process_cust_pay_method()
7245 --Creating a receipt method assignment at the site level if it does not exist so that Autoinvoice goes through
7246 IF l_receipt_method_id IS NOT NULL THEN
7247 -- Added for bug 6911267, to get Invoice To Customer Id
7248 oe_oe_form_header.get_invoice_to_customer_id(p_site_use_id => p_header_rec.invoice_to_org_id,
7249 x_invoice_to_customer_id => l_invoice_to_customer_id);
7250 IF l_debug_level > 0 THEN
7251 oe_debug_pub.add('Before creating receipt method assignment at site level if it does not exist', 5);
7252 oe_debug_pub.add('Invoice To Customer : ' || l_invoice_to_customer_id ||'; Invoice To Site : ' || p_header_rec.invoice_to_org_id, 5);
7253 END IF;
7254 l_trx_date := nvl(p_header_rec.ordered_date, sysdate)
7255 - nvl( to_number(fnd_profile.value('ONT_DAYS_TO_BACKDATE_BANK_ACCT')), 0);
7256
7257 l_cust_pay_method_id := arp_ext_bank_pkg.process_cust_pay_method
7258 ( p_pay_method_id => l_receipt_method_id
7259 , p_customer_id => l_invoice_to_customer_id -- p_header_rec.sold_to_org_id -- Bug 6911267
7260 , p_site_use_id => p_header_rec.invoice_to_org_id
7261 , p_as_of_date => l_trx_date
7262 );
7263
7264
7265 IF l_debug_level > 0 THEN
7266 oe_debug_pub.add('l_cust_pay_method_id returned for Receipt Method ' || p_x_interface_line_rec.receipt_method_name|| 'is ' ||l_cust_pay_method_id);
7267 END IF;
7268
7269 END IF;
7270 --bug6086340
7271
7272 -- comment out the following code for R12 cc encryption
7273 /*
7274 IF l_credit_card_approval_code IS NOT NULL THEN
7275 p_x_interface_line_rec.approval_code := l_credit_card_approval_code;
7276 --bug3906851 getting the tangible_id from oe_verify_payment_pub.fetch_current_auth if it is null
7277 IF l_tangible_id IS NULL THEN
7278
7279 OE_Verify_Payment_PUB.Fetch_Current_Auth
7280 ( p_header_rec => p_header_rec
7281 , p_trxn_id => l_trxn_id
7282 , p_tangible_id => l_tangible_id
7283 ) ;
7284
7285 IF l_debug_level > 0 THEN
7286 oe_debug_pub.add( ' AFTER CALLING FETCH_CURRENT_AUTH' ) ;
7287 -- Setup the CC Approval Info
7288 oe_debug_pub.add( 'TANGIBLE ID IS : '||L_TANGIBLE_ID , 5 ) ;
7289 END IF;
7290
7291 END IF;
7292 p_x_interface_line_rec.payment_server_order_num := l_tangible_id;
7293 END IF;
7294 */
7295 oe_debug_pub.add('l_receipt_method_id:'||l_receipt_method_id||'Name:'||p_x_interface_line_rec.receipt_method_name);
7296 END IF;
7297 END IF;
7298
7299 --serla end
7300
7301 IF l_debug_level > 0 THEN
7302 oe_debug_pub.add( 'FINISH CREDIT CARD PROCESSING' , 5 ) ;
7303 oe_debug_pub.add( 'START GLOBALIZATION' , 5 ) ;
7304 END IF;
7305 l_gdf_rec.interface_line_attribute3 := p_x_interface_line_rec.interface_line_attribute3;
7306 l_gdf_rec.interface_line_attribute6 := p_x_interface_line_rec.interface_line_attribute6;
7307 l_gdf_rec.line_type := p_x_interface_line_rec.line_type;
7308 l_gdf_rec.inventory_item_id := p_line_rec.inventory_item_id;
7309 l_gdf_rec.line_gdf_attr_category := p_line_rec.global_attribute_category;
7310 l_gdf_rec.line_gdf_attribute1 := substrb(p_line_rec.global_attribute1, 1, 150);
7311 l_gdf_rec.line_gdf_attribute2 := substrb(p_line_rec.global_attribute2, 1, 150);
7312 l_gdf_rec.line_gdf_attribute3 := substrb(p_line_rec.global_attribute3, 1, 150);
7313 l_gdf_rec.line_gdf_attribute4 := substrb(p_line_rec.global_attribute4, 1, 150);
7314 l_gdf_rec.line_gdf_attribute5 := substrb(p_line_rec.global_attribute5, 1, 150);
7315 l_gdf_rec.line_gdf_attribute6 := substrb(p_line_rec.global_attribute6, 1, 150);
7316 l_gdf_rec.line_gdf_attribute7 := substrb(p_line_rec.global_attribute7, 1, 150);
7317 l_gdf_rec.line_gdf_attribute8 := substrb(p_line_rec.global_attribute8, 1, 150);
7318 l_gdf_rec.line_gdf_attribute9 := substrb(p_line_rec.global_attribute9, 1, 150);
7319 l_gdf_rec.line_gdf_attribute10 := substrb(p_line_rec.global_attribute10, 1, 150);
7320 l_gdf_rec.line_gdf_attribute11 := substrb(p_line_rec.global_attribute11, 1, 150);
7321 l_gdf_rec.line_gdf_attribute12 := substrb(p_line_rec.global_attribute12, 1, 150);
7322 l_gdf_rec.line_gdf_attribute13 := substrb(p_line_rec.global_attribute13, 1, 150);
7323 l_gdf_rec.line_gdf_attribute14 := substrb(p_line_rec.global_attribute14, 1, 150);
7324 l_gdf_rec.line_gdf_attribute15 := substrb(p_line_rec.global_attribute15, 1, 150);
7325 l_gdf_rec.line_gdf_attribute16 := substrb(p_line_rec.global_attribute16, 1, 150);
7326 l_gdf_rec.line_gdf_attribute17 := substrb(p_line_rec.global_attribute17, 1, 150);
7327 l_gdf_rec.line_gdf_attribute18 := substrb(p_line_rec.global_attribute18, 1, 150);
7328 l_gdf_rec.line_gdf_attribute19 := substrb(p_line_rec.global_attribute19, 1, 150);
7329 l_gdf_rec.line_gdf_attribute20 := substrb(p_line_rec.global_attribute20, 1, 150);
7330 IF l_debug_level > 0 THEN
7331 oe_debug_pub.add( 'CALLING THE GLOBALIZATION PACKAGE' , 5 ) ;
7332 END IF;
7333 JG_ZZ_OM_COMMON_PKG.copy_gdff(p_interface_line_rec => l_gdf_rec,
7334 x_interface_line_rec => l_gdf_rec,
7335 x_return_code => l_jg_return_code,
7336 x_error_buffer => l_jg_error_buffer);
7337 IF l_debug_level > 0 THEN
7338 oe_debug_pub.add( 'AFTER CALLING GLOBALIZATION PACKAGE' , 5 ) ;
7339 END IF;
7340 p_x_interface_line_rec.line_gdf_attr_category := l_gdf_rec.line_gdf_attr_category;
7341 p_x_interface_line_rec.line_gdf_attribute1 := l_gdf_rec.line_gdf_attribute1;
7342 p_x_interface_line_rec.line_gdf_attribute2 := l_gdf_rec.line_gdf_attribute2;
7343 p_x_interface_line_rec.line_gdf_attribute3 := l_gdf_rec.line_gdf_attribute3;
7344 p_x_interface_line_rec.line_gdf_attribute4 := l_gdf_rec.line_gdf_attribute4;
7345 p_x_interface_line_rec.line_gdf_attribute5 := l_gdf_rec.line_gdf_attribute5;
7346 p_x_interface_line_rec.line_gdf_attribute6 := l_gdf_rec.line_gdf_attribute6;
7347 p_x_interface_line_rec.line_gdf_attribute7 := l_gdf_rec.line_gdf_attribute7;
7348 p_x_interface_line_rec.line_gdf_attribute8 := l_gdf_rec.line_gdf_attribute8;
7349 p_x_interface_line_rec.line_gdf_attribute9 := l_gdf_rec.line_gdf_attribute9;
7350 p_x_interface_line_rec.line_gdf_attribute10 := l_gdf_rec.line_gdf_attribute10;
7351 p_x_interface_line_rec.line_gdf_attribute11 := l_gdf_rec.line_gdf_attribute11;
7352 p_x_interface_line_rec.line_gdf_attribute12 := l_gdf_rec.line_gdf_attribute12;
7353 p_x_interface_line_rec.line_gdf_attribute13 := l_gdf_rec.line_gdf_attribute13;
7354 p_x_interface_line_rec.line_gdf_attribute14 := l_gdf_rec.line_gdf_attribute14;
7355 p_x_interface_line_rec.line_gdf_attribute15 := l_gdf_rec.line_gdf_attribute15;
7356 p_x_interface_line_rec.line_gdf_attribute16 := l_gdf_rec.line_gdf_attribute16;
7357 p_x_interface_line_rec.line_gdf_attribute17 := l_gdf_rec.line_gdf_attribute17;
7358 p_x_interface_line_rec.line_gdf_attribute18 := l_gdf_rec.line_gdf_attribute18;
7359 p_x_interface_line_rec.line_gdf_attribute19 := l_gdf_rec.line_gdf_attribute19;
7360 p_x_interface_line_rec.line_gdf_attribute20 := l_gdf_rec.line_gdf_attribute20;
7361 p_x_interface_line_rec.header_gdf_attr_category := l_gdf_rec.header_gdf_attr_category;
7362 p_x_interface_line_rec.header_gdf_attribute1 := l_gdf_rec.header_gdf_attribute1;
7363 p_x_interface_line_rec.header_gdf_attribute2 := l_gdf_rec.header_gdf_attribute2;
7364 p_x_interface_line_rec.header_gdf_attribute3 := l_gdf_rec.header_gdf_attribute3;
7365 p_x_interface_line_rec.header_gdf_attribute4 := l_gdf_rec.header_gdf_attribute4;
7366 p_x_interface_line_rec.header_gdf_attribute5 := l_gdf_rec.header_gdf_attribute5;
7367 p_x_interface_line_rec.header_gdf_attribute6 := l_gdf_rec.header_gdf_attribute6;
7368 p_x_interface_line_rec.header_gdf_attribute7 := l_gdf_rec.header_gdf_attribute7;
7369 p_x_interface_line_rec.header_gdf_attribute8 := l_gdf_rec.header_gdf_attribute8;
7370 p_x_interface_line_rec.header_gdf_attribute9 := l_gdf_rec.header_gdf_attribute9;
7371 p_x_interface_line_rec.header_gdf_attribute10 := l_gdf_rec.header_gdf_attribute10;
7372 p_x_interface_line_rec.header_gdf_attribute11 := l_gdf_rec.header_gdf_attribute11;
7373 p_x_interface_line_rec.header_gdf_attribute12 := l_gdf_rec.header_gdf_attribute12;
7374 p_x_interface_line_rec.header_gdf_attribute13 := l_gdf_rec.header_gdf_attribute13;
7375 p_x_interface_line_rec.header_gdf_attribute14 := l_gdf_rec.header_gdf_attribute14;
7376 p_x_interface_line_rec.header_gdf_attribute15 := l_gdf_rec.header_gdf_attribute15;
7377 p_x_interface_line_rec.header_gdf_attribute16 := l_gdf_rec.header_gdf_attribute16;
7378 p_x_interface_line_rec.header_gdf_attribute17 := l_gdf_rec.header_gdf_attribute17;
7379 p_x_interface_line_rec.header_gdf_attribute18 := l_gdf_rec.header_gdf_attribute18;
7380 p_x_interface_line_rec.header_gdf_attribute19 := l_gdf_rec.header_gdf_attribute19;
7381 p_x_interface_line_rec.header_gdf_attribute20 := l_gdf_rec.header_gdf_attribute20;
7382 p_x_interface_line_rec.header_gdf_attribute21 := l_gdf_rec.header_gdf_attribute21;
7383 p_x_interface_line_rec.header_gdf_attribute22 := l_gdf_rec.header_gdf_attribute22;
7384 p_x_interface_line_rec.header_gdf_attribute23 := l_gdf_rec.header_gdf_attribute23;
7385 p_x_interface_line_rec.header_gdf_attribute24 := l_gdf_rec.header_gdf_attribute24;
7386 p_x_interface_line_rec.header_gdf_attribute25 := l_gdf_rec.header_gdf_attribute25;
7387 p_x_interface_line_rec.header_gdf_attribute26 := l_gdf_rec.header_gdf_attribute26;
7388 p_x_interface_line_rec.header_gdf_attribute27 := l_gdf_rec.header_gdf_attribute27;
7389 p_x_interface_line_rec.header_gdf_attribute28 := l_gdf_rec.header_gdf_attribute28;
7390 p_x_interface_line_rec.header_gdf_attribute29 := l_gdf_rec.header_gdf_attribute29;
7391 p_x_interface_line_rec.header_gdf_attribute30 := l_gdf_rec.header_gdf_attribute30;
7392
7393 IF l_debug_level > 0 THEN
7394 oe_debug_pub.add('Before calling Legal Entity Time Zone ');
7395 oe_debug_pub.add('Value of ship_date_actual '||p_x_interface_line_rec.ship_date_actual||
7396 ' Value of creation_date '|| p_x_interface_line_rec.creation_date);
7397 oe_debug_pub.add('Value of last_update_date '||p_x_interface_line_rec.last_update_date||
7398 ' Value of sales_order_date '||p_x_interface_line_rec.sales_order_date|| ' Value of trx_date '||p_x_interface_line_rec.trx_date);
7399 END IF;
7400
7401 IF oe_code_control.code_release_level >= '110510' THEN
7402 IF p_line_rec.org_id IS NOT NULL THEN
7403 IF p_x_interface_line_rec.ship_date_actual IS NOT NULL THEN
7404 p_x_interface_line_rec.ship_date_actual := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(p_x_interface_line_rec.ship_date_actual,p_line_rec.org_id);
7405 END IF;
7406 IF p_x_interface_line_rec.creation_date IS NOT NULL THEN
7407 p_x_interface_line_rec.creation_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(p_x_interface_line_rec.creation_date,p_line_rec.org_id);
7408 END IF;
7409 IF p_x_interface_line_rec.last_update_date IS NOT NULL THEN
7410 p_x_interface_line_rec.last_update_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(p_x_interface_line_rec.last_update_date,p_line_rec.org_id);
7411 END IF;
7412 IF p_x_interface_line_rec.GL_Date IS NOT NULL THEN
7413 p_x_interface_line_rec.GL_Date := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(p_x_interface_line_rec.GL_Date,p_line_rec.org_id);
7414 END IF;
7415 IF p_x_interface_line_rec.conversion_date IS NOT NULL THEN
7416 p_x_interface_line_rec.conversion_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(p_x_interface_line_rec.conversion_date,p_line_rec.org_id);
7417 END IF;
7418 IF p_x_interface_line_rec.sales_order_date IS NOT NULL THEN
7419 p_x_interface_line_rec.sales_order_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(p_x_interface_line_rec.sales_order_date,p_line_rec.org_id);
7420 END IF;
7421 IF p_x_interface_line_rec.rule_start_date IS NOT NULL THEN
7422 p_x_interface_line_rec.rule_start_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(p_x_interface_line_rec.rule_start_date,p_line_rec.org_id);
7423 END IF;
7424 IF p_x_interface_line_rec.rule_end_date IS NOT NULL THEN
7425 p_x_interface_line_rec.rule_end_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(p_x_interface_line_rec.rule_end_date,p_line_rec.org_id);
7426 END IF;
7427 IF p_x_interface_line_rec.trx_date IS NOT NULL THEN
7428 p_x_interface_line_rec.trx_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_Time_For_Ou(p_x_interface_line_rec.trx_date,p_line_rec.org_id);
7429 END IF;
7430 END IF;
7431 END IF;
7432
7433 IF l_debug_level > 0 THEN
7434 oe_debug_pub.add('After calling Legal Entity Time Zone ');
7435 oe_debug_pub.add('Value of ship_date_actual '||p_x_interface_line_rec.ship_date_actual||
7436 ' Value of creation_date '|| p_x_interface_line_rec.creation_date);
7437 oe_debug_pub.add('Value of last_update_date '||p_x_interface_line_rec.last_update_date||
7438 ' Value of sales_order_date '||p_x_interface_line_rec.sales_order_date|| ' Value of trx_date '||p_x_interface_line_rec.trx_date);
7439 END IF;
7440
7441 IF l_debug_level > 0 THEN
7442 oe_debug_pub.add( 'END GLOBALIZATION' , 5 ) ;
7443 END IF;
7444 OE_DEBUG_PUB.dumpdebug;
7445 IF l_debug_level > 0 THEN
7446 oe_debug_pub.add( 'EXITING PREPARE_INTERFACE_LINE_REC ( ) PROCEDURE' , 5 ) ;
7447 END IF;
7448 END Prepare_Interface_Line_Rec;
7449
7450 PROCEDURE Update_Invoice_Attributes
7451 ( p_line_rec IN OE_Order_Pub.Line_Rec_Type
7452 , p_interface_line_rec IN RA_interface_Lines_Rec_Type
7453 , p_invoice_interface_status IN VARCHAR2
7454 , x_return_status OUT NOCOPY VARCHAR2
7455 ) IS
7456 l_invoiced_quantity NUMBER;
7457 l_Line_tbl OE_Order_PUB.Line_Tbl_Type;
7458 l_Old_Line_tbl OE_Order_PUB.Line_Tbl_Type;
7459 l_return_status VARCHAR2(30);
7460 l_flow_status_code VARCHAR2(30);
7461 err_msg VARCHAR2(240);
7462 l_notify_index NUMBER; -- jolin
7463
7464 --
7465 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7466 --
7467 BEGIN
7468 IF l_debug_level > 0 THEN
7469 oe_debug_pub.add( 'UPDATING INVOICE ATTRIBUTES' , 5 ) ;
7470 END IF;
7471 IF OE_GLOBALS.G_ASO_INSTALLED IS NULL THEN
7472 OE_GLOBALS.G_ASO_INSTALLED := OE_GLOBALS.CHECK_PRODUCT_INSTALLED(697);
7473 END IF;
7474 l_invoiced_quantity := nvl(p_line_rec.invoiced_quantity, 0) + nvl(p_interface_line_rec.quantity, 0);
7475 --Bug2361642.Added a check for lines in "MANUAL-PENDING" status too.
7476 IF (p_invoice_interface_status = 'RFR-PENDING' OR
7477 p_invoice_interface_status= 'NOT_ELIGIBLE' OR
7478 p_invoice_interface_status = 'MANUAL-PENDING' OR
7479 p_invoice_interface_status = 'ACCEPTANCE-PENDING' ) AND --Customer Acceptance
7480 nvl(l_invoiced_quantity, 0) = 0 THEN -- changed for bug# 4097203
7481 l_invoiced_quantity := null;
7482 END IF;
7483 --Bug2361642 Added an ELSE condition to retain the flow_status_code otherwise.
7484 -- invoiced quantity should not be populated for not eligible lines
7485 IF p_invoice_interface_status= 'NOT_ELIGIBLE' THEN
7486 l_invoiced_quantity := null;
7487 END IF;
7488 IF l_debug_level > 0 THEN
7489 oe_debug_pub.add( 'INVOICED QUANTITY IS '|| TO_CHAR ( L_INVOICED_QUANTITY ) , 5 ) ;
7490 END IF;
7491
7492 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL < '110510' THEN
7493 IF p_invoice_interface_status = 'YES' THEN
7494 l_flow_status_code := 'INVOICED';
7495 ELSIF p_invoice_interface_status = 'RFR-PENDING' THEN
7496 l_flow_status_code := 'INVOICED_PARTIAL';
7497 ELSE l_flow_status_code := p_line_rec.flow_status_code;
7498 END IF;
7499 ELSE
7500 IF p_invoice_interface_status = 'YES' THEN
7501 l_flow_status_code := 'INVOICED';
7502 ELSIF p_invoice_interface_status = 'MANUAL-PENDING' THEN
7503 l_flow_status_code := 'INVOICE_DELIVERY';
7504 ELSIF p_invoice_interface_status = 'RFR-PENDING' THEN
7505 IF nvl(l_invoiced_quantity, 0) = 0 THEN -- changed for bug# 4097203
7506 l_flow_status_code := 'INVOICE_RFR';
7507 ELSE
7508 l_flow_status_code := 'PARTIAL_INVOICE_RFR';
7509 END IF;
7510 ELSIF p_invoice_interface_status = 'NOT_ELIGIBLE' THEN
7511 l_flow_status_code := 'INVOICE_NOT_APPLICABLE';
7512 --Customer Acceptance
7513 ELSIF p_invoice_interface_status = 'ACCEPTANCE-PENDING' THEN
7514 l_flow_status_code := 'PRE-BILLING_ACCEPTANCE';
7515 --Customer Acceptance
7516 ELSE l_flow_status_code := p_line_rec.flow_status_code;
7517 END IF;
7518 END IF;
7519
7520 IF l_debug_level > 0 THEN
7521 oe_debug_pub.add( 'UPDATING FLOW STATUS CODE AS '||L_FLOW_STATUS_CODE , 5 ) ;
7522 oe_debug_pub.add( ' UPDATING p_line_rec.SERVICE_START_DATE = '||p_line_rec.SERVICE_START_DATE , 5 ) ; -- bug# 7231974
7523 oe_debug_pub.add( ' p_line_rec.SERVICE_END_DATE = '|| p_line_rec.SERVICE_END_DATE , 5 ) ;
7524 END IF;
7525
7526 UPDATE OE_ORDER_LINES_ALL
7527 SET INVOICE_INTERFACE_STATUS_CODE = p_invoice_interface_status,
7528 INVOICED_QUANTITY = l_invoiced_quantity,
7529 FLOW_STATUS_CODE = l_flow_status_code,
7530 SERVICE_START_DATE = p_line_rec.SERVICE_START_DATE, --bug# 7231974 :- as srvc_dates are derived in OE_INVOICE_PUB, they should be updated in OM tables as well
7531 SERVICE_END_DATE = p_line_rec.SERVICE_END_DATE, --bug # 7231974
7532 CALCULATE_PRICE_FLAG = 'N',
7533 LOCK_CONTROL = LOCK_CONTROL + 1
7534 WHERE LINE_ID = p_line_rec.line_id;
7535 IF ( (OE_GLOBALS.G_ASO_INSTALLED = 'Y') OR
7536 (NVL(FND_PROFILE.VALUE('ONT_DBI_INSTALLED'),'N') = 'Y') ) THEN
7537
7538 l_Line_tbl(1) := p_line_rec;
7539 l_Old_Line_tbl(1) := p_line_rec;
7540 l_Line_tbl(1).calculate_price_flag := 'N';
7541 l_Line_tbl(1).invoice_interface_status_code := p_invoice_interface_status;
7542 l_Line_tbl(1).invoiced_quantity := l_invoiced_quantity;
7543 l_Line_tbl(1).flow_status_code := l_flow_status_code;
7544 l_line_tbl(1).lock_control := l_line_tbl(1).lock_control + 1;
7545
7546 -- jolin start
7547 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
7548
7549 -- call notification framework to get this line's index position
7550 OE_ORDER_UTIL.Update_Global_Picture
7551 (p_Upd_New_Rec_If_Exists =>FALSE
7552 , p_line_rec => l_line_tbl(1)
7553 , p_old_line_rec => l_old_line_tbl(1)
7554 , p_line_id => l_line_tbl(1).line_id
7555 , x_index => l_notify_index
7556 , x_return_status => l_return_status);
7557
7558 IF l_debug_level > 0 THEN
7559 oe_debug_pub.add( 'UPDATE_GLOBAL RET_STATUS FOR LINE_ID '||L_LINE_TBL ( 1 ) .LINE_ID ||' IS: ' || L_RETURN_STATUS , 1 ) ;
7560 oe_debug_pub.add( 'UPDATE_GLOBAL INDEX FOR LINE_ID '||L_LINE_TBL ( 1 ) .LINE_ID ||' IS: ' || L_NOTIFY_INDEX , 1 ) ;
7561 END IF;
7562
7563 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7564 RAISE FND_API.G_EXC_ERROR;
7565 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7566 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7567 END IF;
7568
7569 IF l_notify_index is not null then
7570 -- modify Global Picture
7571 OE_ORDER_UTIL.g_old_line_tbl(l_notify_index) := l_old_line_tbl(1);
7572 OE_ORDER_UTIL.g_line_tbl(l_notify_index) := OE_ORDER_UTIL.g_old_line_tbl(l_notify_index);
7573 OE_ORDER_UTIL.g_line_tbl(l_notify_index).invoice_interface_status_code:=
7574 l_line_tbl(1).invoice_interface_status_code;
7575 OE_ORDER_UTIL.g_line_tbl(l_notify_index).invoiced_quantity:=
7576 l_line_tbl(1).invoiced_quantity;
7577 OE_ORDER_UTIL.g_line_tbl(l_notify_index).flow_status_code:=
7578 l_line_tbl(1).flow_status_code;
7579 OE_ORDER_UTIL.g_line_tbl(l_notify_index).calculate_price_flag:=
7580 l_line_tbl(1).calculate_price_flag;
7581 OE_ORDER_UTIL.g_line_tbl(l_notify_index).lock_control:=
7582 l_line_tbl(1).lock_control;
7583 OE_ORDER_UTIL.g_line_tbl(l_notify_index).last_update_date:=
7584 l_line_tbl(1).last_update_date;
7585 OE_ORDER_UTIL.g_line_tbl(l_notify_index).line_id:=
7586 l_line_tbl(1).line_id;
7587 OE_ORDER_UTIL.g_line_tbl(l_notify_index).header_id:=
7588 l_line_tbl(1).header_id;
7589
7590 IF l_debug_level > 0 THEN
7591 oe_debug_pub.add( 'GLOBAL LINE INVOICED_QUANTITY IS: ' || OE_ORDER_UTIL.G_LINE_TBL ( L_NOTIFY_INDEX ) .INVOICED_QUANTITY , 1 ) ;
7592 oe_debug_pub.add( 'GLOBAL LINE CALCULATE_PRICE_FLAG IS: ' || OE_ORDER_UTIL.G_LINE_TBL ( L_NOTIFY_INDEX ) .CALCULATE_PRICE_FLAG , 1 ) ;
7593 oe_debug_pub.add( 'GLOBAL LINE INVOICE_INTERFACE_STATUS_CODE IS: ' || OE_ORDER_UTIL.G_LINE_TBL ( L_NOTIFY_INDEX ) .INVOICE_INTERFACE_STATUS_CODE , 1 ) ;
7594 oe_debug_pub.add( 'GLOBAL LINE FLOW_STATUS_CODE IS: ' || OE_ORDER_UTIL.G_LINE_TBL ( L_NOTIFY_INDEX ) .FLOW_STATUS_CODE , 1 ) ;
7595 END IF;
7596
7597 -- Process requests is TRUE so still need to call it, but don't need to notify
7598 IF l_debug_level > 0 THEN
7599 oe_debug_pub.add( 'OEXPINVB: BEFORE CALLING LINE PROCESS_REQUESTS_AND_NOTIFY' ) ;
7600 END IF;
7601 OE_Order_PVT.PROCESS_REQUESTS_AND_NOTIFY(
7602 P_LINE_TBL =>l_Line_tbl,
7603 P_OLD_LINE_TBL =>l_Old_Line_tbl,
7604 P_PROCESS_REQUESTS => TRUE,
7605 P_NOTIFY => FALSE,
7606 P_PROCESS_ACK => FALSE,
7607 X_RETURN_STATUS => l_return_status);
7608
7609 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7610 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7611 END IF;
7612
7613 END IF ; /* global entity index null check */
7614
7615 ELSE /* pre-pack H */
7616
7617 IF l_debug_level > 0 THEN
7618 oe_debug_pub.add( 'OEXPINVB: BEFORE CALLING LINE PROCESS_REQUESTS_AND_NOTIFY' ) ;
7619 END IF;
7620 OE_Order_PVT.PROCESS_REQUESTS_AND_NOTIFY(
7621 P_LINE_TBL =>l_Line_tbl,
7622 P_OLD_LINE_TBL =>l_Old_Line_tbl,
7623 P_PROCESS_REQUESTS => TRUE,
7624 P_NOTIFY => TRUE,
7625 P_PROCESS_ACK => FALSE,
7626 X_RETURN_STATUS => l_return_status);
7627
7628 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7629 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7630 END IF;
7631
7632 END IF; /* code set is pack H or higher */
7633 /* jolin end*/
7634
7635 END IF;
7636
7637 x_return_status := FND_API.G_RET_STS_SUCCESS;
7638
7639 IF l_debug_level > 0 THEN
7640 oe_debug_pub.add( 'RETURN STATUS : ' ||X_RETURN_STATUS ) ;
7641 END IF;
7642
7643 IF OE_Commitment_Pvt.DO_Commitment_Sequencing THEN --commitment sequencing ON
7644 IF p_line_rec.commitment_id IS NOT NULL AND
7645 p_interface_line_rec.promised_commitment_amount IS NOT NULL THEN
7646 IF l_debug_level > 0 THEN
7647 oe_debug_pub.add( 'UPDATING OE_PAYMENTS' , 3 ) ;
7648 END IF;
7649 UPDATE oe_payments
7650 SET commitment_interfaced_amount = nvl(commitment_interfaced_amount, 0) + nvl(p_interface_line_rec.promised_commitment_amount, 0)
7651 WHERE LINE_ID = p_line_rec.line_id
7652 AND PAYMENT_TRX_ID = p_line_rec.commitment_id;
7653 END IF;
7654 END IF;
7655
7656 IF l_debug_level > 0 THEN
7657 oe_debug_pub.add( 'DONE UPDATING INVOICE ATTRIBUTES' , 1 ) ;
7658 END IF;
7659
7660 EXCEPTION
7661 WHEN OTHERS THEN
7662 IF l_debug_level > 0 THEN
7663 oe_debug_pub.add( 'EXCEPTION WHILE UPDATING INVOICE ATTRIBUTES : '||SQLERRM , 1 ) ;
7664 END IF;
7665 err_msg := 'Error in Update_Invoice_Attributes:\n '||SQLERRM;
7666 IF l_debug_level > 0 THEN
7667 oe_debug_pub.add( ERR_MSG ) ;
7668 END IF;
7669 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7670 IF FND_MSG_PUB.Check_Msg_Level
7671 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7672 THEN
7673 OE_MSG_PUB.Add_Exc_Msg
7674 ( G_PKG_NAME
7675 , 'Update_Invoice_Attributes'
7676 );
7677 END IF;
7678 END Update_Invoice_Attributes;
7679 FUNCTION Header_Activity
7680 (p_line_id IN NUMBER
7681 ) RETURN BOOLEAN IS
7682 l_header_id NUMBER;
7683 --
7684 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7685 --
7686 BEGIN
7687 IF l_debug_level > 0 THEN
7688 oe_debug_pub.add( 'ENTER HEADER_ACTIVITY ( ) PROCEDURE ' , 5 ) ;
7689 END IF;
7690 SELECT header_id
7691 INTO l_header_id
7692 FROM oe_order_lines
7693 WHERE line_id = p_line_id;
7694 RETURN( WF_ENGINE.Activity_Exist_In_Process(
7695 p_item_type => OE_GLOBALS.G_WFI_HDR
7696 ,p_item_key => to_char(l_header_id)
7697 ,p_activity_name => 'HEADER_INVOICE_INTERFACE'));
7698 END Header_Activity;
7699
7700 FUNCTION Line_Activity
7701 (p_line_id IN NUMBER
7702 ) RETURN BOOLEAN IS
7703 --
7704 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7705 --
7706 BEGIN
7707 IF l_debug_level > 0 THEN
7708 oe_debug_pub.add( 'ENTER LINE_ACTIVITY ( ) PROCEDURE ' , 5 ) ;
7709 END IF;
7710 -- This function is provided by WF for our use with bug# 1040262.
7711 -- WF team removed this function at one stage and now provided the same
7712 -- for backward compatibility purpose with bug# 1869241.
7713 -- Issue with invoice interface due the the missing wf function is reported in bug# 1868026.
7714 RETURN( WF_ENGINE.Activity_Exist_In_Process(
7715 p_item_type => OE_GLOBALS.G_WFI_LIN
7716 ,p_item_key => to_char(p_line_id)
7717 ,p_activity_name => 'INVOICE_INTERFACE'));
7718 END Line_Activity;
7719
7720 FUNCTION Update_Invoice_Numbers
7721 ( p_del_id IN NUMBER
7722 , p_del_name IN VARCHAR2
7723 )RETURN NUMBER IS
7724 inv_num_index NUMBER;
7725 inv_num_base VARCHAR2(40);
7726 err_msg VARCHAR2(240);
7727 --
7728 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7729 --
7730 BEGIN
7731 IF l_debug_level > 0 THEN
7732 oe_debug_pub.add( 'ENTER UPDATE_INVOICE_NUMBERS ( ) PROCEDURE ' , 5 ) ;
7733 oe_debug_pub.add( 'UPDATE INVOICE NUMBERS: DEL_ID ' || TO_CHAR ( P_DEL_ID ) ||' DEL NAME: ' || P_DEL_NAME , 5 ) ;
7734 END IF;
7735 inv_num_base := p_del_name;
7736 SELECT nvl((max(index_number)+1), 0)
7737 INTO inv_num_index
7738 FROM oe_invoice_numbers
7739 WHERE delivery_id = p_del_id;
7740 IF ( SQL%NOTFOUND ) THEN
7741 inv_num_index := 1;
7742 END IF;
7743 IF ( inv_num_index = 0 ) THEN
7744 inv_num := inv_num_base;
7745 ELSE
7746 inv_num := inv_num_base || '-' || to_char(inv_num_index);
7747 END IF;
7748 IF l_debug_level > 0 THEN
7749 oe_debug_pub.add( 'GLOBAL USER ' || NVL(oe_standard_wf.g_user_id, fnd_global.user_id)); -- 3169637
7750 oe_debug_pub.add( 'INV NUM INDEX ' || TO_CHAR ( INV_NUM_INDEX ) ) ;
7751 END IF;
7752 INSERT INTO OE_INVOICE_NUMBERS(
7753 INVOICE_NUMBER_ID
7754 , DELIVERY_ID
7755 , INDEX_NUMBER
7756 , LAST_UPDATE_DATE
7757 , LAST_UPDATED_BY
7758 , CREATION_DATE
7759 , CREATED_BY)
7760 VALUES
7761 ( oe_invoice_numbers_s.nextval
7762 , p_del_id
7763 , inv_num_index
7764 , SYSDATE
7765 , NVL(oe_standard_wf.g_user_id, fnd_global.user_id) -- 3169637
7766 , SYSDATE
7767 , NVL(oe_standard_wf.g_user_id, fnd_global.user_id)); -- 3169637
7768
7769 IF l_debug_level > 0 THEN
7770 oe_debug_pub.add( 'DONE UPDATE_INVOICE_NUMBERS W/SUCCESS' , 5 ) ;
7771 END IF;
7772 RETURN 0;
7773 EXCEPTION
7774 WHEN OTHERS THEN
7775 err_msg := 'Error in update_invoice_numbers:\n '||SQLERRM;
7776 IF l_debug_level > 0 THEN
7777 oe_debug_pub.add( ERR_MSG ) ;
7778 oe_debug_pub.add( 'WHEN OTHERS :EXITING UPDATE_INVOICE_NUMBERS' , 1 ) ;
7779 END IF;
7780 RETURN -1;
7781 END Update_Invoice_Numbers;
7782
7783 PROCEDURE Update_Numbers
7784 ( p_id IN NUMBER
7785 , x_return_status OUT NOCOPY VARCHAR2
7786 ) IS
7787 l_count NUMBER := 0;
7788 group_col_clause varchar2(10000) := '';
7789 select_col varchar2(10000) := '';
7790 col_name varchar2(100) ;
7791 grp_stmt varchar2(20000);
7792 col_length NUMBER;
7793 group_cursor INTEGER;
7794 rows_processed INTEGER;
7795
7796 last_concat_cols varchar2(5000) := '';
7797 this_concat_cols varchar2(5000) := '';
7798
7799 last_del_name varchar2(30) := '';
7800 this_del_name varchar2(30) := '';
7801 this_del_id Number;
7802 this_rowid Varchar2(20);
7803 err_msg VARCHAR2(240);
7804
7805 Type DelCurType IS REF CURSOR;
7806 del_cursor DelCurType;
7807 CURSOR cur_get_cols IS
7808 SELECT upper(c.from_column_name), c.from_column_length
7809 FROM ra_group_by_columns c
7810 WHERE c.column_type = 'M';
7811
7812 CURSOR cur_get_del_id (p_del_name IN VARCHAR2) IS
7813 SELECT delivery_id
7814 FROM wsh_new_deliveries
7815 WHERE name = p_del_name;
7816 --
7817 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7818 --
7819 BEGIN
7820 IF l_debug_level > 0 THEN
7821 oe_debug_pub.add( 'ENTER UPDATE_NUMBERS ( ) PROCEDURE' , 5 ) ;
7822 END IF;
7823 SELECT count(*)
7824 INTO l_count
7825 FROM ra_interface_lines_all
7826 WHERE request_id = -1 * p_id;
7827
7828 IF l_count = 0 THEN
7829 IF l_debug_level > 0 THEN
7830 oe_debug_pub.add( 'NO LINES NEED MANUAL NUMBERING' , 5 ) ;
7831 END IF;
7832 x_return_status := FND_API.G_RET_STS_SUCCESS;
7833 RETURN;
7834 END IF;
7835 -- Get all the group by columns from ra_group_by_columns table
7836 -- and build up the select and group by column clauses.
7837 OPEN cur_get_cols;
7838 LOOP
7839 FETCH cur_get_cols Into col_name, col_length;
7840 EXIT WHEN cur_get_cols%NOTFOUND;
7841 IF ( group_col_clause is NULL ) THEN
7842 group_col_clause := col_name;
7843 select_col := col_name;
7844 select_col := col_name;
7845 ELSE
7846 group_col_clause := group_col_clause || ', ' || col_name;
7847 select_col := select_col || '||' || '''~'''|| '||'|| col_name;
7848 END IF;
7849 END LOOP;
7850 CLOSE cur_get_cols;
7851 IF l_debug_level > 0 THEN
7852 oe_debug_pub.add( 'POSITION 2' ) ;
7853 -- Build the full select statement and using dbms_sql execute
7854 -- the statement
7855 oe_debug_pub.add( 'POSITION 2-1' ) ;
7856 END IF;
7857 grp_stmt := 'Select ' || select_col || ' group_cols,' ||
7858 ' l.interface_line_attribute3, ROWID ' ||
7859 ' From RA_INTERFACE_LINES_ALL L' ||
7860 ' Where trx_number is NULL' ||
7861 ' And request_id = :p' ||
7862 ' Order by ' || group_col_clause ||
7863 ' , l.interface_line_attribute3, l.org_id' ;
7864 OPEN del_cursor FOR grp_stmt USING (-1 * p_id);
7865 LOOP
7866 FETCH del_cursor INTO this_concat_cols, this_del_name, this_rowid;
7867 EXIT WHEN del_cursor%NOTFOUND;
7868 IF l_debug_level > 0 THEN
7869 oe_debug_pub.add( 'DELIVERY NAME: ' || THIS_DEL_NAME , 5 ) ;
7870 oe_debug_pub.add( 'CONCAT COLS: ' || THIS_CONCAT_COLS , 5 ) ;
7871 END IF;
7872 IF ( last_del_name is NULL OR
7873 last_del_name <> this_del_name ) THEN
7874 IF l_debug_level > 0 THEN
7875 oe_debug_pub.add( 'POSITION 5' ) ;
7876 END IF;
7877 OPEN cur_get_del_id(this_del_name);
7878 FETCH cur_get_del_id Into this_del_id;
7879 IF (cur_get_del_id%NOTFOUND ) THEN
7880 fnd_message.set_token('DELIVERY_NAME', this_del_name);
7881 fnd_message.set_name('OE', 'WSH_AR_INVALID_DEL_NAME');
7882 err_msg := fnd_message.get;
7883 IF l_debug_level > 0 THEN
7884 oe_debug_pub.add( ERR_MSG ) ;
7885 END IF;
7886 CLOSE cur_get_del_id;
7887 --return;
7888 END IF;
7889 IF ( cur_get_del_id%ISOPEN ) THEN
7890 Close cur_get_del_id;
7891 END IF;
7892 IF l_debug_level > 0 THEN
7893 oe_debug_pub.add( 'DELIVERY ID: ' || TO_CHAR ( THIS_DEL_ID ) , 5 ) ;
7894 END IF;
7895 END IF;
7896 IF ( last_concat_cols is NULL OR
7897 last_concat_cols <> this_concat_cols ) THEN
7898 IF l_debug_level > 0 THEN
7899 oe_debug_pub.add( 'CONCAT COLS CHANGED , CALLING UPDATE_INVOICE' ) ;
7900 END IF;
7901 IF ( Update_Invoice_Numbers ( this_del_id, this_del_name) < 0 ) THEN
7902 x_return_status := FND_API.G_RET_STS_SUCCESS;
7903 RETURN;
7904 END IF;
7905 last_del_name := this_del_name;
7906 last_concat_cols := this_concat_cols;
7907 ELSE
7908 IF ( last_del_name <> this_del_name ) THEN
7909 IF l_debug_level > 0 THEN
7910 oe_debug_pub.add( 'DEL NAME CHANGED , CALLING UPDATE_INVOICE' ) ;
7911 END IF;
7912 IF ( update_invoice_numbers ( this_del_id, this_del_name) < 0 ) THEN
7913 x_return_status := FND_API.G_RET_STS_SUCCESS;
7914 RETURN;
7915 END IF;
7916 last_del_name := this_del_name;
7917 END IF;
7918 END IF;
7919 IF l_debug_level > 0 THEN
7920 oe_debug_pub.add( 'TRANSACTION NUMBER IS : '|| INV_NUM , 5 ) ;
7921 END IF;
7922 Update RA_INTERFACE_LINES_ALL
7923 set trx_number = substr(inv_num,1,20) -- substr(inv_num,20)--inv_num --bug#7592350 -- Bug 8216166
7924 where rowid = chartorowid(this_rowid);
7925 END LOOP;
7926 CLOSE del_cursor;
7927 IF l_debug_level > 0 THEN
7928 oe_debug_pub.add( 'SETTING REQUEST ID TO NULL' , 5 ) ;
7929 END IF;
7930 update ra_interface_lines_all
7931 set request_id=null
7932 where request_id = -1 * p_id;
7933 x_return_status := FND_API.G_RET_STS_SUCCESS;
7934 IF l_debug_level > 0 THEN
7935 oe_debug_pub.add( 'EXITING UPDATE_NUMBERS ( ) PROCEDURE' , 5 ) ;
7936 END IF;
7937 RETURN;
7938 EXCEPTION
7939 WHEN OTHERS THEN
7940 IF l_debug_level > 0 THEN
7941 oe_debug_pub.add( 'ORACLE ERROR: ' || SQLERRM , 1 ) ;
7942 END IF;
7943 err_msg := 'Error in update_numbers:\n '|| SQLERRM;
7944 IF l_debug_level > 0 THEN
7945 oe_debug_pub.add( ERR_MSG ) ;
7946 END IF;
7947 x_return_status := FND_API.G_RET_STS_ERROR;
7948 IF (cur_get_cols%ISOPEN) THEN
7949 CLOSE cur_get_cols;
7950 END IF;
7951 IF (cur_get_del_id%ISOPEN) THEN
7952 CLOSE cur_get_del_id;
7953 END IF;
7954 IF l_debug_level > 0 THEN
7955 oe_debug_pub.add( 'EXITING UPDATE_NUMBERS' , 1 ) ;
7956 END IF;
7957 RETURN;
7958 IF l_debug_level > 0 THEN
7959 oe_debug_pub.add( 'EXITING UPDATE_NUMBERS' , 1 ) ;
7960 END IF;
7961 END Update_Numbers;
7962
7963 PROCEDURE Interface_Single_Line
7964 ( p_line_rec IN OE_Order_PUB.Line_Rec_Type
7965 , p_header_rec IN OE_Order_PUB.Header_Rec_Type
7966 , p_x_interface_line_rec IN OUT NOCOPY RA_Interface_Lines_Rec_Type
7967 , x_return_status OUT NOCOPY VARCHAR2
7968 , x_result_out OUT NOCOPY VARCHAR2
7969 ) IS
7970 --gaynagar
7971 l_freight_count NUMBER;
7972
7973 CURSOR Pending_Lines IS
7974 SELECT Line.line_id --SQL# 16487863 Added the UNION clause to avoid FTS
7975 FROM oe_order_lines Line
7976 WHERE (Line.link_to_line_id = p_line_rec.link_to_line_id)
7977 AND invoice_interface_status_code = 'RFR-PENDING'
7978 UNION
7979 SELECT Line.line_id
7980 FROM oe_order_lines Line
7981 WHERE (Line.line_id = p_line_rec.link_to_line_id)
7982 AND invoice_interface_status_code = 'RFR-PENDING';
7983
7984 l_pending_line_id NUMBER;
7985 l_pending_line_rec OE_Order_Pub.Line_Rec_Type;
7986
7987 l_result_code VARCHAR2(240);
7988 l_return_status VARCHAR2(30);
7989 --Customer Acceptance
7990 l_line_invoiceable BOOLEAN;
7991 l_line_rejected BOOLEAN;
7992
7993 --
7994 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7995 --
7996 BEGIN
7997 IF l_debug_level > 0 THEN
7998 oe_debug_pub.add( 'ENTERING INTERFACE_SINGLE_LINE ( ) PROCEDURE' , 5 ) ;
7999 oe_debug_pub.add( 'INTERFACING LINE ID '||TO_CHAR ( P_LINE_REC.LINE_ID ) , 1 ) ;
8000 END IF;
8001 x_return_status := FND_API.G_RET_STS_SUCCESS;
8002 --Customer Acceptance
8003 l_line_invoiceable := Line_Invoiceable(p_line_rec);
8004 l_line_rejected := Line_Rejected(p_line_rec);
8005
8006 --gaynagar added code for handling non-invoiceable lines
8007 -- IF NOT Line_Invoiceable(p_line_rec) THEN
8008 IF NOT l_line_invoiceable OR l_line_rejected THEN --Customer Acceptance
8009 oe_debug_pub.add('Line is non invoiceable',1);
8010 /* Bug#2666125 start-check freight records and holds for non invoiceable items*/
8011 /* BEGIN
8012 IF oe_code_control.code_release_level < '110510' then
8013 SELECT count(*)
8014 INTO l_freight_count
8015 FROM oe_price_adjustments p
8016 WHERE p.header_id = p_line_rec.header_id
8017 AND (p.line_id IS NULL OR p.line_id = p_line_rec.line_id)
8018 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8019 AND p.applied_flag = 'Y'
8020 AND NVL(p.invoiced_flag, 'N') = 'N';
8021 ELSE
8022 SELECT count(*)
8023 INTO l_freight_count
8024 FROM oe_price_adjustments p
8025 WHERE p.header_id = p_line_rec.header_id
8026 AND p.line_id IS NULL
8027 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8028 AND p.applied_flag = 'Y'
8029 AND (NVL(p.invoiced_flag, 'N') = 'N' OR (NVL(p.invoiced_flag, 'N') = 'Y' AND p.adjusted_amount <> nvl(p.invoiced_amount, p.adjusted_amount)));
8030 IF l_freight_count = 0 then
8031 SELECT count(*)
8032 INTO l_freight_count
8033 FROM oe_price_adjustments p
8034 WHERE p.header_id = p_line_rec.header_id
8035 AND p.line_id = p_line_rec.line_id
8036 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8037 AND p.applied_flag = 'Y'
8038 AND NVL(p.invoiced_flag, 'N') = 'N';
8039 END IF;
8040 END IF;
8041
8042 EXCEPTION
8043 WHEN NO_DATA_FOUND THEN
8044 IF l_debug_level > 0 THEN
8045 oe_debug_pub.add('Non-invoiceable lines-In when no data found of freight');
8046 END IF;
8047 l_freight_count := 0;
8048 END;
8049 IF l_debug_level > 0 THEN
8050 oe_debug_pub.add('l_freight_count: '||l_freight_count);
8051 END IF;
8052 IF l_freight_count >0 then
8053 Check_Invoicing_Holds(p_line_rec, g_itemtype, x_return_status);
8054 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8055 x_result_out := OE_GLOBALS.G_WFR_ON_HOLD;
8056 RAISE FND_API.G_EXC_ERROR;
8057 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8058 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8059 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8060 END IF;
8061 END IF; */
8062 /* Bug#2666125 end-check freight records and holds for non invoiceable items*/
8063
8064 Update_Invoice_Attributes(p_line_rec
8065 ,p_x_interface_line_rec
8066 ,'NOT_ELIGIBLE'
8067 ,x_return_status);
8068 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8069 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8070 RAISE FND_API.G_EXC_ERROR;
8071 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8072 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8073 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8074 END IF;
8075 --- Eventhough line is not eligible for invoicing, there might be some other
8076 --- lines that are waiting for this line to trigger their invoicing activity.
8077 --- Ex: Included Items are not invoiceable but due to RFR, there might be
8078 --- some lines in RFR-PENDING block. We should invoice them.
8079 IF Is_PTO(p_line_rec) THEN
8080 IF Is_RFR(p_line_rec.line_id) THEN
8081 IF l_debug_level > 0 THEN
8082 oe_debug_pub.add( 'RFR: THIS LINE IS RFR BUT NOT ELIGIBLE FOR INVOICING- CHECKING FOR PENDING LINES' , 5 ) ;
8083 END IF;
8084 Open Pending_Lines;
8085 LOOP
8086 Fetch Pending_Lines Into l_pending_line_id;
8087 EXIT WHEN Pending_Lines%NOTFOUND;
8088 OE_Line_Util.Query_Row(p_line_id=>l_pending_line_id,x_line_rec=>l_pending_line_rec);
8089 IF l_debug_level > 0 THEN
8090 oe_debug_pub.add( 'RFR: PENDING LINE ID : ' || TO_CHAR ( L_PENDING_LINE_ID ) , 5 ) ;
8091 END IF;
8092 IF Something_To_Invoice(l_pending_line_rec) THEN -- the pending line now has something to
8093 -- invoice because current line has been shipped
8094 IF l_debug_level > 0 THEN
8095 oe_debug_pub.add( 'RFR: INTERFACING PENDING LINE ID :'||L_PENDING_LINE_ID , 5 ) ;
8096 END IF;
8097 Interface_Single_line(p_line_rec => l_pending_line_rec
8098 ,p_header_rec => p_header_rec
8099 ,p_x_interface_line_rec => p_x_interface_line_rec
8100 ,x_return_status => x_return_status
8101 ,x_result_out => x_result_out);
8102 IF l_debug_level > 0 THEN
8103 oe_debug_pub.add( 'INTERFACING PENDING LINE ID ' || L_PENDING_LINE_REC.LINE_ID , 5 ) ;
8104 END IF;
8105 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8106 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8107 RAISE FND_API.G_EXC_ERROR;
8108 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8109 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8110 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8111 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
8112 IF x_result_out = OE_GLOBALS.G_WFR_PRTL_COMPLETE THEN
8113 IF l_debug_level > 0 THEN
8114 oe_debug_pub.add( 'RFR PENDING LINE PARTIALLY INTERFACED' , 5 ) ;
8115 END IF;
8116 ELSE --x_result_out = OE_GLOBALS.G_WFR_COMPLETE THEN
8117 IF l_debug_level > 0 THEN
8118 oe_debug_pub.add( 'RFR-PENDING LINE INTERFACED SUCCESSFULLY' , 5 ) ;
8119 END IF;
8120 WF_ENGINE.CompleteActivityInternalName(OE_GLOBALS.G_WFI_LIN, l_pending_line_rec.line_id, 'INVOICING_WAIT_FOR_RFR', 'COMPLETE');
8121 END IF;
8122 END IF;
8123 END IF;
8124 END LOOP;
8125 close Pending_Lines;
8126 END IF; -- itself is a RFR line
8127 END IF; -- PTO line
8128 --freight line rec info comes from interface line rec. so prepare interface line rec
8129 /* START Enhancement Request# 1915736 */
8130 -- Prepare interface line rec only if there are any freight charges to interface (Enhancement Request# 1915736)
8131 IF NOT l_line_rejected THEN --Customer Acceptance
8132 BEGIN
8133
8134 IF oe_code_control.code_release_level < '110510' then
8135 SELECT count(*)
8136 INTO l_freight_count
8137 FROM oe_price_adjustments p
8138 WHERE p.header_id = p_line_rec.header_id
8139 AND (p.line_id IS NULL OR p.line_id = p_line_rec.line_id)
8140 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8141 AND p.applied_flag = 'Y'
8142 AND NVL(p.invoiced_flag, 'N') = 'N';
8143 ELSE
8144 SELECT count(*)
8145 INTO l_freight_count
8146 FROM oe_price_adjustments p
8147 WHERE p.header_id = p_line_rec.header_id
8148 AND p.line_id IS NULL
8149 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8150 AND p.applied_flag = 'Y'
8151 AND (NVL(p.invoiced_flag, 'N') = 'N' OR (NVL(p.invoiced_flag, 'N') = 'Y' AND p.adjusted_amount <> nvl(p.invoiced_amount, p.adjusted_amount)));
8152 IF l_freight_count = 0 then
8153 SELECT count(*)
8154 INTO l_freight_count
8155 FROM oe_price_adjustments p
8156 WHERE p.header_id = p_line_rec.header_id
8157 AND p.line_id = p_line_rec.line_id
8158 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8159 AND p.applied_flag = 'Y'
8160 AND NVL(p.invoiced_flag, 'N') = 'N';
8161 END IF;
8162 END IF;
8163
8164 EXCEPTION
8165 WHEN NO_DATA_FOUND THEN
8166 IF l_debug_level > 0 THEN
8167 oe_debug_pub.add( 'IN WHEN NO DATA FOUND OF FREIGHT' ) ;
8168 END IF;
8169 l_freight_count := 0;
8170 END;
8171 IF l_debug_level > 0 THEN
8172 oe_debug_pub.add( 'L_FREIGHT_COUNT: '||L_FREIGHT_COUNT ) ;
8173 END IF;
8174 IF l_freight_count > 0 THEN
8175 /* END Enhancement Request# 1915736 */
8176 IF l_debug_level > 0 THEN
8177 oe_debug_pub.add( 'PREPARING INTERFACE LINE RECORD' , 5 ) ;
8178 END IF;
8179
8180 Prepare_Interface_Line_Rec(p_line_rec => p_line_rec
8181 ,p_header_rec => p_header_rec
8182 ,p_x_interface_line_rec => p_x_interface_line_rec
8183 ,x_result_code => l_result_code);
8184 IF l_debug_level > 0 THEN
8185 oe_debug_pub.add( 'VALIDATING REQUIRED ATTRIBUTES' , 5 ) ;
8186 END IF;
8187 IF NOT Validate_Required_Attributes(p_line_rec, p_x_interface_line_rec) THEN
8188 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8189 RAISE FND_API.G_EXC_ERROR;
8190 END IF;
8191 IF l_debug_level > 0 THEN
8192 oe_debug_pub.add( 'INTERFACING FREIGHT CHARGES' , 5 ) ;
8193 END IF;
8194 Interface_Freight_Charges(p_line_rec
8195 , p_x_interface_line_rec
8196 , x_return_status);
8197 /* START Enhancement Request# 1915736 */
8198 END IF; -- for freight
8199 /* END Enhancement Request# 1915736 */
8200 END IF; -- for Non-rejected_lines Customer Acceptance
8201
8202 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8203 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8204 RAISE FND_API.G_EXC_ERROR;
8205 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8206 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8207 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8208 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
8209 x_result_out := OE_GLOBALS.G_WFR_NOT_ELIGIBLE;
8210 IF l_debug_level > 0 THEN
8211 oe_debug_pub.add( 'RETURN AFTER INVOICEABLE ELIGIBLE CHECK' , 1 ) ;
8212 END IF;
8213 --Customer Acceptance
8214 IF l_line_rejected AND p_line_rec.line_category_code = 'RETURN' THEN
8215 FND_MESSAGE.SET_NAME('ONT','ONT_RMA_NO_CREDIT');
8216 OE_MSG_PUB.ADD;
8217 END IF;
8218 --Customer Acceptance
8219 RETURN;
8220 END IF;
8221 END IF;
8222 --gaynagar end
8223
8224 IF l_debug_level > 0 THEN
8225 oe_debug_pub.add( 'PREPARING INTERFACE LINE RECORD' , 5 ) ;
8226 END IF;
8227 Prepare_Interface_Line_Rec(p_line_rec => p_line_rec
8228 ,p_header_rec => p_header_rec
8229 ,p_x_interface_line_rec => p_x_interface_line_rec
8230 ,x_result_code => l_result_code);
8231 IF l_debug_level > 0 THEN
8232 oe_debug_pub.add( 'REQUEST_ID: '||P_X_INTERFACE_LINE_REC.REQUEST_ID || ' RESULT_CODE: '||L_RESULT_CODE , 5 ) ;
8233 END IF;
8234 IF ((p_x_interface_line_rec.QUANTITY = 0 OR p_x_interface_line_rec.QUANTITY IS NULL) AND l_result_code = 'RFR-PENDING') THEN
8235 IF l_debug_level > 0 THEN
8236 oe_debug_pub.add( 'ZERO QUANTITY LINE - NOT INTERFACED' , 5 ) ;
8237 oe_debug_pub.add( 'UPDATING INVOICE FLAG AND QUANTITY' , 5 ) ;
8238 END IF;
8239 IF l_result_code = 'RFR-PENDING' THEN
8240 Update_Invoice_Attributes(p_line_rec
8241 ,p_x_interface_line_rec
8242 ,'RFR-PENDING'
8243 ,x_return_status);
8244 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
8245 FND_MESSAGE.SET_NAME('ONT','OE_INVOICE_WAIT_FOR_RFR');
8246 OE_MSG_PUB.ADD;
8247 END IF;
8248 END IF;
8249 IF l_debug_level > 0 THEN
8250 oe_debug_pub.add( 'REQUEST_ID AFTER INSERTING '||P_X_INTERFACE_LINE_REC.REQUEST_ID , 5 ) ;
8251 END IF;
8252 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8253 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8254 RAISE FND_API.G_EXC_ERROR;
8255 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8256 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8257 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8258 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
8259 IF l_result_code = 'RFR-PENDING' THEN
8260 x_result_out := OE_GLOBALS.G_WFR_PRTL_COMPLETE;
8261 IF l_debug_level > 0 THEN
8262 oe_debug_pub.add( 'LINE ID '||TO_CHAR ( P_LINE_REC.LINE_ID ) ||' PARTIALLY INTERFACED SUCCESSFULLY ' || 'X_RESULT_OUT: '||X_RESULT_OUT ||' L_RESULT_CODE '||L_RESULT_CODE ) ;
8263 END IF;
8264 IF l_debug_level > 0 THEN
8265 oe_debug_pub.add( 'EXITING INTERFACE_SINGLE_LINE' , 5 ) ;
8266 END IF;
8267 RETURN; --Do not need to interface this line
8268 END IF;
8269 END IF;
8270 IF l_debug_level > 0 THEN
8271 oe_debug_pub.add( 'EXIT INTERFACE_SINGLE_LINE ( ) PROCEDURE ( 1 ) ' , 1 ) ;
8272 END IF;
8273 RETURN; --Do not need to interface this line
8274 END IF; -- Zero invoice quantity RFR
8275 IF l_debug_level > 0 THEN
8276 oe_debug_pub.add( 'VALIDATE REQUIRED ATTRIBUTES' , 5 ) ;
8277 END IF;
8278 IF NOT Validate_Required_Attributes(p_line_rec, p_x_interface_line_rec) THEN
8279 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8280 RAISE FND_API.G_EXC_ERROR;
8281 END IF;
8282 IF l_debug_level > 0 THEN
8283 oe_debug_pub.add( 'INSERTING LINE INTO RA_INTERFACE_LINES' , 5 ) ;
8284 END IF;
8285 Insert_Line(p_x_interface_line_rec
8286 ,x_return_status=>l_return_status);
8287 -- Fix for the bug 2187074
8288 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8289 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8290 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8291 END IF;
8292
8293 -- 3685479 Replacing show detail dis by the following IF
8294 -- Adjustments need not be queried here as it is anyway going to be queried in interface_detail_discounts
8295 IF (oe_sys_parameters.value('OE_DISCOUNT_DETAILS_ON_INVOICE',p_line_rec.org_id) = 'Y') THEN --moac
8296 IF l_debug_level > 0 THEN
8297 oe_debug_pub.add( 'INSERTING DISCOUNT DETAILS' , 5 ) ;
8298 END IF;
8299 Interface_Detail_Discounts(p_line_rec, p_x_interface_line_rec
8300 ,x_return_status);
8301 -- Fix for the bug 2187074
8302 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8303 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8304 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8305 END IF;
8306 END IF;
8307 IF l_debug_level > 0 THEN
8308 oe_debug_pub.add( 'INTERFACING FREIGHT CHARGES' , 5 ) ;
8309 END IF;
8310 Interface_Freight_Charges(p_line_rec
8311 , p_x_interface_line_rec
8312 , x_return_status);
8313 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8314 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8315 RAISE FND_API.G_EXC_ERROR;
8316 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8317 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8318 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8319 END IF;
8320 IF l_debug_level > 0 THEN
8321 oe_debug_pub.add( 'INTERFACING SALES CREDITS' , 5 ) ;
8322 END IF;
8323 Interface_Salescredits(p_line_rec
8324 ,p_x_interface_line_rec
8325 ,x_return_status);
8326 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8327 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8328 RAISE FND_API.G_EXC_ERROR;
8329 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8330 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8331 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8332 END IF;
8333
8334 --Customer Acceptance
8335 IF l_debug_level > 0 THEN
8336 oe_debug_pub.add( 'INTERFACING Contingencies' , 5 ) ;
8337 END IF;
8338 Interface_Contingencies
8339 ( p_line_rec => p_line_rec
8340 , p_interface_line_rec => p_x_interface_line_rec
8341 , x_return_status => x_return_status
8342 );
8343
8344 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8345 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8346 END IF;
8347 --Customer Acceptance
8348
8349 IF l_debug_level > 0 THEN
8350 oe_debug_pub.add( 'UPDATING INVOICE FLAG AND QUANTITY' , 5 ) ;
8351 END IF;
8352 IF l_result_code = 'RFR-PENDING' THEN
8353 Update_Invoice_Attributes(p_line_rec
8354 ,p_x_interface_line_rec
8355 ,'RFR-PENDING'
8356 ,x_return_status);
8357 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
8358 FND_MESSAGE.SET_NAME('ONT','OE_INVOICE_WAIT_FOR_RFR');
8359 OE_MSG_PUB.ADD;
8360 END IF;
8361 ELSE
8362 Update_Invoice_Attributes(p_line_rec
8363 ,p_x_interface_line_rec
8364 ,'YES'
8365 ,x_return_status);
8366 END IF;
8367 IF l_debug_level > 0 THEN
8368 oe_debug_pub.add( 'REQUEST_ID AFTER INSERTING '||P_X_INTERFACE_LINE_REC.REQUEST_ID ) ;
8369 END IF;
8370 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8371 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8372 RAISE FND_API.G_EXC_ERROR;
8373 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8374 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8375 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8376 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
8377 IF l_result_code = 'RFR-PENDING' THEN
8378 x_result_out := OE_GLOBALS.G_WFR_PRTL_COMPLETE;
8379 IF l_debug_level > 0 THEN
8380 oe_debug_pub.add( 'LINE ID '||TO_CHAR ( P_LINE_REC.LINE_ID ) ||' PARTIALLY INTERFACED SUCCESSFULLY' , 1 ) ;
8381 END IF;
8382 ELSE
8383 x_result_out := OE_GLOBALS.G_WFR_COMPLETE;
8384 IF l_debug_level > 0 THEN
8385 oe_debug_pub.add( 'LINE ID '||TO_CHAR ( P_LINE_REC.LINE_ID ) ||' INTERFACED SUCCESSFULLY' , 1 ) ;
8386 END IF;
8387 END IF;
8388 END IF;
8389
8390 IF l_debug_level > 0 THEN
8391 oe_debug_pub.add( 'EXIT INTERFACE_SINGLE_LINE ( ) PROCEDURE SUCCESSFULLY' , 1 ) ;
8392 END IF;
8393 EXCEPTION
8394 WHEN FND_API.G_EXC_ERROR THEN
8395 IF l_debug_level > 0 THEN
8396 oe_debug_pub.add( 'EXPECTED ERROR. EXITING INTERFACE_SINGLE_LINE : '||SQLERRM , 1 ) ;
8397 END IF;
8398 x_return_status := FND_API.G_RET_STS_ERROR;
8399 IF l_debug_level > 0 THEN
8400 oe_debug_pub.add( 'RETURN STATUS :'||X_RETURN_STATUS||' OUT RESULT : '||X_RESULT_OUT , 5 ) ;
8401 END IF;
8402 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8403 IF l_debug_level > 0 THEN
8404 oe_debug_pub.add( 'UNEXPECTED ERROR. EXITING INTERFACE_SINGLE_LINE '||SQLERRM , 1 ) ;
8405 oe_debug_pub.add( 'RETURN STATUS :'||X_RETURN_STATUS||' OUT RESULT : '||X_RESULT_OUT , 5 ) ;
8406 END IF;
8407 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8408 WHEN OTHERS THEN
8409 IF l_debug_level > 0 THEN
8410 oe_debug_pub.add( 'OTHER EXCEPTION. EXITING INTERFACE_SINGLE_LINE : '||SQLERRM , 1 ) ;
8411 oe_debug_pub.add( 'RETURN STATUS :'||X_RETURN_STATUS||' OUT RESULT : '||X_RESULT_OUT , 5 ) ;
8412 END IF;
8413 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
8414 OE_MSG_PUB.Add_Exc_Msg
8415 ( G_PKG_NAME
8416 , 'Interface_Single_line'
8417 );
8418 END IF;
8419 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8420 END Interface_Single_line;
8421
8422 PROCEDURE Interface_Line
8423 ( p_line_id IN NUMBER
8424 , p_itemtype IN VARCHAR2
8425 , x_result_out OUT NOCOPY VARCHAR2
8426 , x_return_status OUT NOCOPY VARCHAR2
8427 ) IS
8428 l_interface_line_rec RA_Interface_Lines_Rec_Type;
8429 l_line_rec OE_Order_Pub.Line_Rec_Type;
8430 l_header_rec OE_Order_Pub.Header_Rec_Type;
8431 l_dummy VARCHAR2(240);
8432 l_delivery_line_id NUMBER := NULL;
8433 l_line_delivery_id NUMBER := NULL;
8434 l_line_id NUMBER;
8435 l_interface_status_code VARCHAR2(30);
8436 l_old_interface_status_code VARCHAR2(30);
8437 l_pending_line_id NUMBER;
8438 l_pending_line_rec OE_Order_Pub.Line_Rec_Type;
8439 del_line_ready_flag VARCHAR2(1) := NULL;
8440 interface_this_line VARCHAR2(1) := 'Y';
8441 l_result_code VARCHAR2(240);
8442 generate_invoice_number VARCHAR2(1) := 'N';
8443 x_msg_count NUMBER;
8444 x_msg_data VARCHAR2(240);
8445 p_header_id NUMBER := NULL;
8446 l_return_status VARCHAR2(30);
8447 l_open_flag VARCHAR2(1);
8448 l_flow_status_code VARCHAR2(30);
8449 /* START Enhancement Request# 1915736 */
8450 l_freight_count NUMBER;
8451 /* END Enhancement Request# 1915736 */
8452 -- Fix for bug 2224248
8453 l_invoice_rec OE_Order_Pub.Line_Rec_Type;
8454 --Customer Acceptance
8455 l_line_invoiceable BOOLEAN;
8456 l_line_rejected BOOLEAN;
8457
8458 -- Fix for the bug 2196494
8459 CURSOR delivery_lines_cursor(p_delivery_id IN NUMBER) IS
8460 SELECT distinct dd.source_line_id
8461 FROM wsh_new_deliveries dl,
8462 wsh_delivery_assignments da,
8463 wsh_delivery_details dd
8464 WHERE dd.delivery_detail_id = da.delivery_detail_id
8465 AND da.delivery_id = dl.delivery_id
8466 AND dd.source_code = 'OE'
8467 AND dl.delivery_id = p_delivery_id
8468 AND dd.source_line_id is not null
8469 UNION ALL
8470 SELECT distinct dd.top_model_line_id
8471 FROM wsh_new_deliveries dl,
8472 wsh_delivery_assignments da,
8473 wsh_delivery_details dd
8474 WHERE dd.delivery_detail_id = da.delivery_detail_id
8475 AND da.delivery_id = dl.delivery_id
8476 AND dd.source_code = 'OE'
8477 AND dl.delivery_id = p_delivery_id
8478 AND dd.top_model_line_id is not null;
8479
8480 CURSOR cur1(p_delivery_id IN NUMBER) IS -- added for 4084965
8481 SELECT 'x'
8482 FROM wsh_new_deliveries dl,
8483 wsh_delivery_assignments da,
8484 wsh_delivery_details dd
8485 WHERE dd.delivery_detail_id = da.delivery_detail_id
8486 AND da.delivery_id = dl.delivery_id
8487 AND dd.source_code = 'OE'
8488 AND dl.delivery_id = p_delivery_id
8489 AND (dd.source_line_id is not null OR
8490 dd.top_model_line_id is not null)
8491 for update of dd.source_line_id nowait;
8492
8493 CURSOR Pending_Lines IS
8494 SELECT Line.line_id
8495 FROM oe_order_lines Line
8496 WHERE (Line.link_to_line_id = l_line_rec.link_to_line_id
8497 OR Line.line_id = l_line_rec.link_to_line_id)
8498 AND invoice_interface_status_code = 'RFR-PENDING';
8499 --
8500 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8501 --
8502 l_delivery_name VARCHAR2(30);
8503 --bug# 4094835
8504 delivery_line_processed VARCHAR2(1):='N';
8505 current_line_return_status VARCHAR2(30);
8506 current_line_result_out VARCHAR2(30);
8507 v_line_id NUMBER;
8508 v_lock_control NUMBER;
8509 BEGIN
8510 IF l_debug_level > 0 THEN
8511 oe_debug_pub.add( 'ENTERING INTERFACE_LINE ( ) PROCEDURE' , 1 ) ;
8512 oe_debug_pub.add( 'LINE ID : '|| P_LINE_ID , 5 ) ;
8513 oe_debug_pub.add( 'ITEM TYPE : '||P_ITEMTYPE , 5 ) ;
8514 END IF;
8515 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
8516 SAVEPOINT INVOICE_INTERFACE;
8517 END IF;
8518
8519 --bug 5336623 Commented the following call to OE_MSG_PUB.set_msg_context
8520 --Exception management begin
8521 /* OE_MSG_PUB.set_msg_context(
8522 p_entity_code => 'LINE'
8523 ,p_entity_id => p_line_id
8524 ,p_line_id => p_line_id ); */
8525 --Exception management end
8526
8527 -- Initialize API return status to success
8528 x_return_status := FND_API.G_RET_STS_SUCCESS;
8529 G_ITEMTYPE := p_itemtype;
8530
8531 --bug 5336623
8532 oe_line_util.Query_Row
8533 (p_line_id => p_line_id
8534 ,x_line_rec => l_line_rec
8535 );
8536 --bug 5336623
8537
8538 ----bug 5336623 commented the following call to OE_Line_Util.Lock_Row
8539 /* OE_Line_Util.Lock_Row(p_line_id=>p_line_id
8540 , p_x_line_rec => l_line_rec
8541 , x_return_status => l_return_status
8542 );
8543 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8544 RAISE FND_API.G_EXC_ERROR;
8545 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8546 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8547 END IF; */
8548
8549 --bug 5336623 Moved the following call to OE_Header_Util.Query_row after the line is locked
8550 --OE_Header_Util.Query_row(p_header_id=>l_line_rec.header_id,x_header_rec=>l_header_rec);
8551 IF p_itemtype = OE_GLOBALS.G_WFI_HDR THEN
8552 p_header_id := l_line_rec.header_id;
8553 END IF;
8554 -- Set message context
8555 OE_MSG_PUB.set_msg_context(
8556 p_entity_code => 'LINE'
8557 ,p_entity_id => l_line_rec.line_id
8558 ,p_header_id => l_line_rec.header_id
8559 ,p_line_id => l_line_rec.line_id
8560 ,p_order_source_id => l_line_rec.order_source_id
8561 ,p_orig_sys_document_ref => l_line_rec.orig_sys_document_ref
8562 ,p_orig_sys_document_line_ref => l_line_rec.orig_sys_line_ref
8563 ,p_orig_sys_shipment_ref => l_line_rec.orig_sys_shipment_ref
8564 ,p_change_sequence => l_line_rec.change_sequence
8565 ,p_source_document_type_id => l_line_rec.source_document_type_id
8566 ,p_source_document_id => l_line_rec.source_document_id
8567 ,p_source_document_line_id => l_line_rec.source_document_line_id );
8568
8569 --bug 5336623
8570 begin
8571
8572 select line_id, lock_control into v_line_id, v_lock_control
8573 from oe_order_lines_all where line_id = l_line_rec.line_id
8574 FOR UPDATE NOWAIT;
8575
8576 IF l_debug_level > 0 THEN
8577 oe_debug_pub.add('Locking successful');
8578 END IF;
8579
8580 exception
8581 --- bug# 7600960 : Start
8582 /*
8583 WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
8584 IF l_debug_level > 0 THEN
8585 oe_debug_pub.add('in lock record exception, someone else working on the row');
8586 END IF;
8587 x_return_status := FND_API.G_RET_STS_ERROR;
8588 l_line_rec.return_status := FND_API.G_RET_STS_ERROR;
8589 l_line_rec.line_id := null;
8590 FND_MESSAGE.Set_Name('ONT', 'OE_LINE_LOCKED');
8591 OE_MSG_PUB.Add;
8592 RAISE FND_API.G_EXC_ERROR;
8593 */
8594
8595 WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
8596 IF l_debug_level > 0 THEN
8597 oe_debug_pub.add(' in lock record exception, someone else working on the row ');
8598 oe_debug_pub.add(' SQLERRM = '|| SQLERRM );
8599 oe_debug_pub.add( ' Unable to LOCK this Line. Going to make it DEFERRED so that it can be picked by another WFBP ');
8600 END IF;
8601
8602 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
8603 ROLLBACK TO INVOICE_INTERFACE;
8604 END IF;
8605 x_result_out := NULL;
8606 x_return_status := 'DEFERRED';
8607 FND_MESSAGE.Set_Name('ONT', 'OE_LINE_LOCKED');
8608 OE_MSG_PUB.Add;
8609 RETURN;
8610 --- bug# 7600960 : end
8611
8612
8613 WHEN NO_DATA_FOUND THEN
8614 IF l_debug_level > 0 THEN
8615 oe_debug_pub.add('no_data_found, record lock exception');
8616 END IF;
8617 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8618
8619 WHEN OTHERS THEN
8620 IF l_debug_level > 0 THEN
8621 oe_debug_pub.add('record lock exception, others');
8622 oe_debug_pub.add('line id '|| v_line_id , 1);
8623 END IF;
8624 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8625 END;
8626 OE_Header_Util.Query_row(p_header_id=>l_line_rec.header_id,x_header_rec=>l_header_rec);
8627 --bug 5336623
8628
8629
8630 -- bug# 7231974 : before starting processing, fetch the service date
8631 oe_debug_pub.add( ' trying to fetch srv_start/end_date ... ' , 5 ) ;
8632 IF l_line_Rec.item_type_code = 'SERVICE' and l_line_Rec.accounting_rule_duration is null
8633 and (l_line_rec.SERVICE_START_DATE is null or l_line_rec.SERVICE_START_DATE is null) THEN
8634 Update_Service_Dates(l_line_Rec);
8635 END IF;
8636 -- 7231974
8637
8638
8639 --Customer Acceptance
8640 IF NVL(OE_SYS_PARAMETERS.VALUE('ENABLE_FULFILLMENT_ACCEPTANCE'), 'N') = 'Y' AND
8641 OE_ACCEPTANCE_UTIL.Pre_billing_acceptance_on(l_line_rec)
8642 AND OE_ACCEPTANCE_UTIL.Acceptance_Status(l_line_rec) = 'NOT_ACCEPTED' THEN
8643 IF l_debug_level > 0 THEN
8644 oe_debug_pub.add('top_model_line_id:'||l_line_rec.top_model_line_id);
8645 END IF;
8646
8647 -- added following for bug# 5232503
8648 -- If it is a child line then check if the parent is accepted.
8649 -- Do not wait for acceptance if parent is already accepted. -- This check is added to make sure that child line won't get stuck
8650 -- if the system parameter is changed from yes to no to yes again.
8651 IF ((l_line_rec.top_model_line_id is not null
8652 AND l_line_rec.line_id <> l_line_rec.top_model_line_id
8653 AND OE_ACCEPTANCE_UTIL.Acceptance_Status(l_line_rec.top_model_line_id) = 'ACCEPTED')
8654 OR
8655 (l_line_rec.item_type_code = 'SERVICE'
8656 AND l_line_rec.service_reference_type_code='ORDER'
8657 AND l_line_rec.service_reference_line_id IS NOT NULL
8658 AND OE_ACCEPTANCE_UTIL.Acceptance_Status(l_line_rec.service_reference_line_id) = 'ACCEPTED')) THEN
8659 IF l_debug_level > 0 THEN
8660 oe_debug_pub.add('acceptance not required. item_type:'||l_line_rec.item_type_code);
8661 END IF;
8662 ELSE
8663 Update_Invoice_Attributes(l_line_rec ,l_interface_line_rec ,'ACCEPTANCE-PENDING' ,x_return_status);
8664 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8665 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8666 RAISE FND_API.G_EXC_ERROR;
8667 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8668 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8669 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8670 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
8671 x_result_out := OE_GLOBALS.G_WFR_PENDING_ACCEPTANCE; -- this is pending for Acceptance
8672 RETURN;
8673 END IF;
8674 END IF;
8675 END IF;
8676 l_line_invoiceable := Line_Invoiceable(l_line_rec);
8677 l_line_rejected := Line_Rejected(l_line_rec);
8678 --Customer Acceptance
8679
8680
8681 -- gaynagar controlled code for non-invoiceable lines based on invoice numbering method
8682 -- IF NOT Line_Invoiceable(l_line_rec) THEN
8683 IF NOT l_line_invoiceable OR l_line_rejected THEN
8684 IF NOT l_line_Invoiceable THEN
8685 /* Bug#2666125 start-check freight records and holds for non invoiceable items*/
8686 BEGIN
8687 IF oe_code_control.code_release_level < '110510' then
8688 SELECT count(*)
8689 INTO l_freight_count
8690 FROM oe_price_adjustments p
8691 WHERE p.header_id = l_line_rec.header_id
8692 AND (p.line_id IS NULL OR p.line_id = l_line_rec.line_id)
8693 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8694 AND p.applied_flag = 'Y'
8695 AND NVL(p.invoiced_flag, 'N') = 'N';
8696 ELSE
8697 SELECT count(*)
8698 INTO l_freight_count
8699 FROM oe_price_adjustments p
8700 WHERE p.header_id = l_line_rec.header_id
8701 AND p.line_id IS NULL
8702 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8703 AND p.applied_flag = 'Y'
8704 AND (NVL(p.invoiced_flag, 'N') = 'N' OR (NVL(p.invoiced_flag, 'N') = 'Y' AND p.adjusted_amount <> nvl(p.invoiced_amount, p.adjusted_amount)));
8705 IF l_freight_count = 0 then
8706 SELECT count(*)
8707 INTO l_freight_count
8708 FROM oe_price_adjustments p
8709 WHERE p.header_id = l_line_rec.header_id
8710 AND p.line_id = l_line_rec.line_id
8711 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8712 AND p.applied_flag = 'Y'
8713 AND NVL(p.invoiced_flag, 'N') = 'N';
8714 END IF;
8715 END IF;
8716 EXCEPTION
8717 WHEN NO_DATA_FOUND THEN
8718 IF l_debug_level > 0 THEN
8719 oe_debug_pub.add('Non-invoiceable lines-In when no data found of freight');
8720 END IF;
8721 l_freight_count := 0;
8722 END;
8723 IF l_debug_level > 0 THEN
8724 oe_debug_pub.add('l_freight_count: '||l_freight_count);
8725 END IF;
8726 IF l_freight_count >0 then
8727 Check_Invoicing_Holds(l_line_rec, p_itemtype, x_return_status);
8728 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8729 x_result_out := OE_GLOBALS.G_WFR_ON_HOLD;
8730 RAISE FND_API.G_EXC_ERROR;
8731 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8732 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8733 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8734 END IF;
8735 END IF;
8736 END IF; -- noninvoiceable line
8737 /* Bug#2666125 end-check freight records and holds for non invoiceable items*/
8738 IF
8739 -- l_freight_count = 0 OR
8740 FND_PROFILE.VALUE('WSH_INVOICE_NUMBERING_METHOD') = 'A' THEN
8741 oe_debug_pub.add('Handling non-invoiceable lines with no freight or automatic numbering',1);
8742 Update_Invoice_Attributes(l_line_rec
8743 ,l_interface_line_rec
8744 ,'NOT_ELIGIBLE'
8745 ,x_return_status);
8746 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8747 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8748 RAISE FND_API.G_EXC_ERROR;
8749 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8750 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8751 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8752 END IF;
8753 --- Eventhough line is not eligible for invoicing, there might be some other
8754 --- lines that are waiting for this line to trigger their invoicing activity.
8755 --- Ex: Included Items are not invoiceable but due to RFR, there might be
8756 --- some lines in RFR-PENDING block. We should invoice them.
8757 IF Is_PTO(l_line_rec) THEN
8758 IF Is_RFR(l_line_rec.line_id) THEN
8759 IF l_debug_level > 0 THEN
8760 oe_debug_pub.add( 'RFR: THIS LINE IS RFR BUT NOT ELIGIBLE FOR INVOICING- CHECKING FOR PENDING LINES' , 5 ) ;
8761 END IF;
8762 Open Pending_Lines;
8763 LOOP
8764 Fetch Pending_Lines Into l_pending_line_id;
8765 EXIT WHEN Pending_Lines%NOTFOUND;
8766 OE_Line_Util.Query_Row(p_line_id=>l_pending_line_id,x_line_rec=>l_pending_line_rec);
8767 IF l_debug_level > 0 THEN
8768 oe_debug_pub.add( 'RFR: PENDING LINE ID : ' || TO_CHAR ( L_PENDING_LINE_ID ) , 5 ) ;
8769 END IF;
8770 IF Something_To_Invoice(l_pending_line_rec) THEN -- the pending line now has something to
8771 -- invoice because current line has been shipped
8772 IF l_debug_level > 0 THEN
8773 oe_debug_pub.add( 'RFR: INTERFACING PENDING LINE ID :'||L_PENDING_LINE_ID , 5 ) ;
8774 END IF;
8775 Interface_Single_line(p_line_rec => l_pending_line_rec
8776 ,p_header_rec => l_header_rec
8777 ,p_x_interface_line_rec => l_interface_line_rec
8778 ,x_return_status => x_return_status
8779 ,x_result_out => x_result_out);
8780 IF l_debug_level > 0 THEN
8781 oe_debug_pub.add( 'INTERFACING PENDING LINE ID ' || L_PENDING_LINE_REC.LINE_ID , 5 ) ;
8782 END IF;
8783 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8784 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8785 RAISE FND_API.G_EXC_ERROR;
8786 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8787 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8788 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8789 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
8790 IF x_result_out = OE_GLOBALS.G_WFR_PRTL_COMPLETE THEN
8791 IF l_debug_level > 0 THEN
8792 oe_debug_pub.add( 'RFR PENDING LINE PARTIALLY INTERFACED' , 5 ) ;
8793 END IF;
8794 ELSE --x_result_out = OE_GLOBALS.G_WFR_COMPLETE THEN
8795 IF l_debug_level > 0 THEN
8796 oe_debug_pub.add( 'RFR-PENDING LINE INTERFACED SUCCESSFULLY' , 5 ) ;
8797 END IF;
8798 WF_ENGINE.CompleteActivityInternalName(OE_GLOBALS.G_WFI_LIN, l_pending_line_rec.line_id, 'INVOICING_WAIT_FOR_RFR', 'COMPLETE');
8799 END IF;
8800 END IF;
8801 END IF;
8802 END LOOP;
8803 close Pending_Lines;
8804 END IF; -- itself is a RFR line
8805 END IF; -- PTO line
8806 --freight line rec info comes from interface line rec. so prepare interface line rec
8807 /* START Enhancement Request# 1915736 */
8808 -- Prepare interface line rec only if there are any freight charges to interface (Enhancement Request# 1915736)
8809 IF NOT l_line_rejected THEN --Customer Acceptance
8810 BEGIN
8811 IF oe_code_control.code_release_level < '110510' then
8812 SELECT count(*)
8813 INTO l_freight_count
8814 FROM oe_price_adjustments p
8815 WHERE p.header_id = l_line_rec.header_id
8816 AND (p.line_id IS NULL OR p.line_id = l_line_rec.line_id)
8817 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8818 AND p.applied_flag = 'Y'
8819 AND NVL(p.invoiced_flag, 'N') = 'N';
8820 ELSE
8821 SELECT count(*)
8822 INTO l_freight_count
8823 FROM oe_price_adjustments p
8824 WHERE p.header_id = l_line_rec.header_id
8825 AND p.line_id IS NULL
8826 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8827 AND p.applied_flag = 'Y'
8828 AND (NVL(p.invoiced_flag, 'N') = 'N' OR (NVL(p.invoiced_flag, 'N') = 'Y' AND p.adjusted_amount <> nvl(p.invoiced_amount, p.adjusted_amount)));
8829 IF l_freight_count = 0 then
8830 SELECT count(*)
8831 INTO l_freight_count
8832 FROM oe_price_adjustments p
8833 WHERE p.header_id = l_line_rec.header_id
8834 AND p.line_id = l_line_rec.line_id
8835 AND p.list_line_type_code = 'FREIGHT_CHARGE'
8836 AND p.applied_flag = 'Y'
8837 AND NVL(p.invoiced_flag, 'N') = 'N';
8838 END IF;
8839 END IF;
8840 EXCEPTION
8841 WHEN NO_DATA_FOUND THEN
8842 IF l_debug_level > 0 THEN
8843 oe_debug_pub.add( 'IN WHEN NO DATA FOUND OF FREIGHT' ) ;
8844 END IF;
8845 l_freight_count := 0;
8846 END;
8847 IF l_debug_level > 0 THEN
8848 oe_debug_pub.add( 'L_FREIGHT_COUNT: '||L_FREIGHT_COUNT ) ;
8849 END IF;
8850 IF l_freight_count > 0 THEN
8851 /* END Enhancement Request# 1915736 */
8852 IF l_debug_level > 0 THEN
8853 oe_debug_pub.add( 'PREPARING INTERFACE LINE RECORD' , 5 ) ;
8854 END IF;
8855 Prepare_Interface_Line_Rec(p_line_rec => l_line_rec
8856 ,p_header_rec => l_header_rec
8857 ,p_x_interface_line_rec => l_interface_line_rec
8858 ,x_result_code => l_result_code);
8859 IF l_debug_level > 0 THEN
8860 oe_debug_pub.add( 'VALIDATING REQUIRED ATTRIBUTES' , 5 ) ;
8861 END IF;
8862 IF NOT Validate_Required_Attributes(l_line_rec, l_interface_line_rec) THEN
8863 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8864 RAISE FND_API.G_EXC_ERROR;
8865 END IF;
8866 IF l_debug_level > 0 THEN
8867 oe_debug_pub.add( 'INTERFACING FREIGHT CHARGES' , 5 ) ;
8868 END IF;
8869 Interface_Freight_Charges(l_line_rec
8870 , l_interface_line_rec
8871 , x_return_status);
8872 /* START Enhancement Request# 1915736 */
8873 END IF; -- for freight
8874 /* END Enhancement Request# 1915736 */
8875 END IF; -- for Non-rejected_lines Customer Acceptance
8876 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8877 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8878 RAISE FND_API.G_EXC_ERROR;
8879 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8880 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8881 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8882 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
8883 x_result_out := OE_GLOBALS.G_WFR_NOT_ELIGIBLE;
8884 IF l_debug_level > 0 THEN
8885 oe_debug_pub.add( 'RETURN AFTER INVOICEABLE ELIGIBLE CHECK' , 1 ) ;
8886 END IF;
8887 --Customer Acceptance
8888 IF l_line_rejected AND l_line_rec.line_category_code = 'RETURN' THEN
8889 FND_MESSAGE.SET_NAME('ONT','ONT_RMA_NO_CREDIT');
8890 OE_MSG_PUB.ADD;
8891 END IF;
8892 --Customer Acceptance
8893 RETURN;
8894 END IF;
8895 END IF; --freight_count zero or automatic numbering
8896 END IF; -- non-invoiceable lines check
8897
8898 Check_Invoicing_Holds(l_line_rec, p_itemtype, x_return_status);
8899 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
8900 x_result_out := OE_GLOBALS.G_WFR_ON_HOLD;
8901 RAISE FND_API.G_EXC_ERROR;
8902 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8903 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
8904 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8905 END IF;
8906 IF FND_PROFILE.VALUE('WSH_INVOICE_NUMBERING_METHOD') = 'D' THEN
8907 IF l_debug_level > 0 THEN
8908 oe_debug_pub.add( 'INVOICE NUMBERING SET TO MANUAL' , 5 ) ;
8909 END IF;
8910 IF Shipping_Info_Available(l_line_rec) AND NOT Return_Line(l_line_rec) THEN
8911 -- Fix for bug 2196494
8912 IF (l_line_rec.item_type_code NOT IN ('MODEL','CLASS','KIT')) THEN
8913 IF l_debug_level > 0 THEN
8914 oe_debug_pub.add( 'SHIPPING INFORMATION IS AVAILABLE' ) ;
8915 END IF;
8916 --Bug2181628 TO retrieve the minimum delivery_id of a line,if it is present
8917 --in more than one delivery.Hence used "MIN"instead of "ROWNUM".
8918 SELECT min(dl.delivery_id)
8919 INTO l_delivery_line_id
8920 FROM wsh_new_deliveries dl,
8921 wsh_delivery_assignments da,
8922 wsh_delivery_details dd
8923 WHERE dd.delivery_detail_id = da.delivery_detail_id
8924 AND da.delivery_id = dl.delivery_id
8925 AND dd.source_code = 'OE'
8926 AND dd.released_status = 'C' -- bug 6721251
8927 AND dd.source_line_id = l_line_rec.line_id;
8928 -- AND rownum = 1;
8929 -- Fix for bug 2196494
8930 ELSE
8931 SELECT min(dl.delivery_id)
8932 INTO l_delivery_line_id
8933 FROM wsh_new_deliveries dl,
8934 wsh_delivery_assignments da,
8935 wsh_delivery_details dd
8936 WHERE dd.delivery_detail_id = da.delivery_detail_id
8937 AND da.delivery_id = dl.delivery_id
8938 AND dd.source_code = 'OE'
8939 AND dd.released_status = 'C' -- bug 6721251
8940 AND dd.top_model_line_id = l_line_rec.line_id;
8941 -- AND rownum = 1;
8942 END IF;
8943
8944 -- fix: temporary
8945 IF l_delivery_line_id IS NOT NULL THEN
8946 IF l_debug_level > 0 THEN
8947 oe_debug_pub.add( 'DELIVERY ID : '||L_DELIVERY_LINE_ID , 5 ) ;
8948 END IF;
8949
8950 /* added for bug fix 4084965 */
8951 BEGIN
8952 IF l_debug_level > 0 THEN
8953 oe_debug_pub.add( 'locking '||to_char(sysdate,'HH24:MI:SS') ,5 ) ;
8954 END IF;
8955 open cur1(l_delivery_line_id);
8956 close cur1;
8957 IF l_debug_level > 0 THEN
8958 oe_debug_pub.add( 'locking: locked' , 5 ) ;
8959 END IF;
8960 EXCEPTION
8961 when app_exceptions.RECORD_LOCK_EXCEPTION then
8962 IF l_debug_level > 0 THEN
8963 oe_debug_pub.add( 'locking: cannot lock' , 5 ) ;
8964 END IF;
8965 x_return_status := 'DEFERRED';
8966 RETURN;
8967 when others then
8968 IF l_debug_level > 0 THEN
8969 oe_debug_pub.add( 'locking: exception:'||sqlerrm , 5 ) ;
8970 END IF;
8971 END; -- end of bug fix 4084965
8972
8973 OPEN delivery_lines_cursor(l_delivery_line_id);
8974 LOOP
8975 FETCH delivery_lines_cursor INTO l_line_id;
8976 EXIT WHEN delivery_lines_cursor%NOTFOUND;
8977 SELECT invoice_interface_status_code, open_flag
8978 INTO l_interface_status_code, l_open_flag
8979 FROM oe_order_lines
8980 WHERE line_id = l_line_id;
8981 IF l_debug_level > 0 THEN
8982 oe_debug_pub.add( 'LINE ID : '||L_LINE_ID , 5 ) ;
8983 END IF;
8984 IF l_interface_status_code = 'YES' OR
8985 l_interface_status_code = 'NOT_ELIGIBLE' OR
8986 l_interface_status_code = 'MANUAL-PENDING' OR
8987 l_interface_status_code = 'RFR-PENDING' OR
8988 l_open_flag = 'N' OR
8989 l_line_id = p_line_id THEN --this line is ready to invoice
8990 del_line_ready_flag := 'Y';
8991 ELSE
8992 --If there is no INVOICE_INTERFACE activity in the flow then do not wait for the line
8993 IF NOT Line_Activity(l_line_id) then
8994 del_line_ready_flag := 'Y';
8995 -- Fix for bug 2164555
8996 -- Fix for bug 2224248. Changed the variable l_line_rec to l_invoice_rec.
8997 ELSE
8998 l_invoice_rec :=OE_Line_Util.Query_Row(p_line_id=>l_line_id);
8999 --Bug2181628 Check if the current line's delivery_id is the same as the delivery_id
9000 --being processed.If it is the same then wait for this line,else do not wait indefinetely.
9001 --Bug3071154 Check the shippable flag also
9002 IF Shipping_Info_Available(l_invoice_rec)
9003 AND (l_invoice_rec.shippable_flag = 'Y') THEN
9004 l_line_delivery_id := NULL;
9005 SELECT min(dl.delivery_id)
9006 INTO l_line_delivery_id
9007 FROM wsh_new_deliveries dl,
9008 wsh_delivery_assignments da,
9009 wsh_delivery_details dd
9010 WHERE dd.delivery_detail_id = da.delivery_detail_id
9011 AND da.delivery_id = dl.delivery_id
9012 AND dd.source_code = 'OE'
9013 AND dd.released_status = 'C' -- bug 6721251
9014 AND dd.source_line_id = l_line_id;
9015
9016 IF l_line_delivery_id IS NULL AND l_invoice_rec.item_type_code in ('MODEL', 'CLASS', 'KIT') THEN
9017 SELECT min(dl.delivery_id)
9018 INTO l_line_delivery_id
9019 FROM wsh_new_deliveries dl,
9020 wsh_delivery_assignments da,
9021 wsh_delivery_details dd
9022 WHERE dd.delivery_detail_id = da.delivery_detail_id
9023 AND da.delivery_id = dl.delivery_id
9024 AND dd.source_code = 'OE'
9025 AND dd.released_status = 'C' -- bug 6721251
9026 AND dd.top_model_line_id = l_line_id;
9027 END IF;
9028 ELSE
9029 IF l_invoice_rec.item_type_code in ('MODEL', 'CLASS', 'KIT') THEN
9030 l_line_delivery_id := NULL;
9031 SELECT min(dl.delivery_id)
9032 INTO l_line_delivery_id
9033 FROM wsh_new_deliveries dl,
9034 wsh_delivery_assignments da,
9035 wsh_delivery_details dd
9036 WHERE dd.delivery_detail_id = da.delivery_detail_id
9037 AND da.delivery_id = dl.delivery_id
9038 AND dd.source_code = 'OE'
9039 AND dd.released_status = 'C' -- bug 6721251
9040 AND dd.top_model_line_id = l_line_id;
9041 END IF;
9042 END IF;
9043 IF (l_line_delivery_id <> l_delivery_line_id) THEN
9044 del_line_ready_flag := 'Y';
9045 ELSE
9046 del_line_ready_flag := 'N';
9047 END IF;
9048 END IF;
9049 END IF;
9050 EXIT WHEN del_line_ready_flag = 'N';
9051 END LOOP;
9052 CLOSE delivery_lines_cursor;
9053 IF l_debug_level > 0 THEN
9054 oe_debug_pub.add( 'DELIVERY LINE READY FLAG : '||DEL_LINE_READY_FLAG , 5 ) ;
9055 END IF;
9056 IF del_line_ready_flag = 'N' THEN -- atleast one line in delivery is not ready to interface
9057 IF l_debug_level > 0 THEN
9058 oe_debug_pub.add( 'SOME OF THE LINES IN THE DELIVERY ARE NOT READY' , 5 ) ;
9059 END IF;
9060 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
9061 IF l_debug_level > 0 THEN
9062 oe_debug_pub.add( 'LINE LEVEL INVOICING-SET STATUS TO PENDING' , 5 ) ;
9063 END IF;
9064 Update_Invoice_Attributes(l_line_rec
9065 ,l_interface_line_rec
9066 ,'MANUAL-PENDING'
9067 ,x_return_status);
9068 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
9069 IF l_delivery_line_id Is Not Null Then
9070 SELECT NVL(SUBSTR(dl.name, 1, 30), '0')
9071 INTO l_delivery_name
9072 FROM wsh_new_deliveries dl
9073 WHERE dl.delivery_id = l_delivery_line_id;
9074 END IF;
9075 FND_MESSAGE.SET_NAME('ONT','OE_INVOICE_WAIT_FOR_DELIVERY');
9076 FND_MESSAGE.SET_TOKEN('DELIVERY_NAME',l_delivery_name);
9077 OE_MSG_PUB.ADD;
9078 END IF;
9079 IF l_debug_level > 0 THEN
9080 oe_debug_pub.add( 'INTERFACE STATUS : '||L_LINE_REC.INVOICE_INTERFACE_STATUS_CODE , 5 ) ;
9081 oe_debug_pub.add( 'X_RETURN_STATUS : '||X_RETURN_STATUS , 5 ) ;
9082 END IF;
9083 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9084 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9085 RAISE FND_API.G_EXC_ERROR;
9086 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9087 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9088 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9089 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
9090 x_result_out := OE_GLOBALS.G_WFR_PRTL_COMPLETE; -- this actually is pending, we call it partial for WF
9091 RETURN;
9092 END IF;
9093 ELSE -- header level invoice, all delivery lines are not ready to invoice. do not honor delivery.
9094 IF l_debug_level > 0 THEN
9095 oe_debug_pub.add( 'HDR INVOICING- PROCEED W/INVOICING' , 5 ) ;
9096 END IF;
9097 generate_invoice_number := 'Y';
9098 interface_this_line := 'Y';
9099 END IF;
9100 ELSIF del_line_ready_flag = 'Y' THEN --invoice all lines in delivery
9101 IF l_debug_level > 0 THEN
9102 oe_debug_pub.add( 'ALL LINES IN DELIVERY ARE READY' , 5 ) ;
9103 END IF;
9104 --except we need to check for any line in the delivery actually is not invoiciable
9105 --due to RFR
9106 OPEN delivery_lines_cursor(l_delivery_line_id);
9107 LOOP
9108 FETCH delivery_lines_cursor INTO l_line_id;
9109 EXIT WHEN delivery_lines_cursor%NOTFOUND;
9110 OE_Line_Util.Query_Row(p_line_id=>l_line_id, x_line_rec=>l_line_rec);
9111 OE_Header_Util.Query_row(p_header_id=>l_line_rec.header_id,x_header_rec=>l_header_rec);
9112 IF l_debug_level > 0 THEN
9113 oe_debug_pub.add( 'LINE ID : '||L_LINE_REC.LINE_ID , 5 ) ;
9114 END IF;
9115 --gaynagar processing non-invoiceable lines with delivery lines
9116 IF l_line_rec.open_flag='Y' AND
9117 NVL(l_line_rec.invoice_interface_status_code, 'NO') <> 'YES' AND
9118 NVL(l_line_rec.invoice_interface_status_code, 'NO') <> 'NOT_ELIGIBLE' THEN
9119 -- Fix for bug 2224248
9120 --Line_Invoiceable(l_line_rec) THEN
9121 IF (l_line_id <> p_line_id AND Line_Activity(l_line_rec.line_id) OR (l_line_id = p_line_id))THEN
9122 -- in devliery and pto, and has something/full qty to invoice - invoice whatever possible,
9123 -- update to RFR-PENDING if necessarily
9124 -- in delivery and pto, nothing to invoice - update status to RFR-PENDING
9125 -- in delivery and not in pto - invoice
9126 -- it is possible for lines in differnt orders in the same delivery
9127 -- so ready in a delivery doesn't mean line has something to interface
9128 --Bug2181628 Check if the current line's delivery_id is the same as the delivery_id
9129 --being processed.If it is the same then wait for this line,else do not wait indefinetely.
9130 --Bug 3071154 Check the shippable flag also.
9131 IF (l_line_id <> p_line_id) THEN
9132 IF Shipping_Info_Available(l_line_rec)
9133 AND (l_line_rec.shippable_flag = 'Y') THEN
9134 l_line_delivery_id := NULL;
9135 SELECT min(dl.delivery_id)
9136 INTO l_line_delivery_id
9137 FROM wsh_new_deliveries dl,
9138 wsh_delivery_assignments da,
9139 wsh_delivery_details dd
9140 WHERE dd.delivery_detail_id = da.delivery_detail_id
9141 AND da.delivery_id = dl.delivery_id
9142 AND dd.source_code = 'OE'
9143 AND dd.released_status = 'C' -- bug 6721251
9144 AND dd.source_line_id = l_line_id;
9145
9146 IF l_line_delivery_id IS NULL AND l_line_rec.item_type_code in ('MODEL', 'CLASS', 'KIT') THEN
9147 SELECT min(dl.delivery_id)
9148 INTO l_line_delivery_id
9149 FROM wsh_new_deliveries dl,
9150 wsh_delivery_assignments da,
9151 wsh_delivery_details dd
9152 WHERE dd.delivery_detail_id = da.delivery_detail_id
9153 AND da.delivery_id = dl.delivery_id
9154 AND dd.source_code = 'OE'
9155 AND dd.released_status = 'C' -- bug 6721251
9156 AND dd.top_model_line_id = l_line_id;
9157 END IF;
9158
9159 IF l_debug_level > 0 THEN
9160 oe_debug_pub.add( 'CURRENT LINES DELIVERY ID = '||L_LINE_DELIVERY_ID , 5 ) ;
9161 END IF;
9162 ELSE
9163 IF l_line_rec.item_type_code in ('MODEL', 'CLASS', 'KIT') THEN
9164 SELECT min(dl.delivery_id)
9165 INTO l_line_delivery_id
9166 FROM wsh_new_deliveries dl,
9167 wsh_delivery_assignments da,
9168 wsh_delivery_details dd
9169 WHERE dd.delivery_detail_id = da.delivery_detail_id
9170 AND da.delivery_id = dl.delivery_id
9171 AND dd.source_code = 'OE'
9172 AND dd.released_status = 'C' -- bug 6721251
9173 AND dd.top_model_line_id = l_line_id;
9174 IF l_debug_level > 0 THEN
9175 oe_debug_pub.add( 'CURRENT LINES DELIVERY ID MODEL , CLASS , KIT = '||L_LINE_DELIVERY_ID , 5 ) ;
9176 END IF;
9177 END IF;
9178 END IF;
9179 END IF;
9180 -- Bug2181628 Only now Process the line.
9181 IF ((l_line_id = p_line_id) OR (l_line_delivery_id = l_delivery_line_id)) THEN
9182 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
9183 l_interface_line_rec.request_id := -1 * p_line_id;
9184 ELSE
9185 l_interface_line_rec.request_id := -1 * p_header_id;
9186 END IF;
9187 generate_invoice_number := 'Y';
9188 l_old_interface_status_code := l_line_rec.invoice_interface_status_code;
9189 IF Is_PTO(l_line_rec) THEN
9190 IF l_debug_level > 0 THEN
9191 oe_debug_pub.add( 'RFR: PTO IS TRUE - IN DELIVERY HANDLING' , 5 ) ;
9192 END IF;
9193 IF Something_To_Invoice(l_line_rec) THEN
9194 IF l_debug_level > 0 THEN
9195 oe_debug_pub.add( 'RFR: SOMETHING_TO_INVOICE IS TRUE , GO AHEAD INTERFACE - IN DELIVERY HANDLING' , 5 ) ;
9196 END IF;
9197 Interface_Single_line(p_line_rec => l_line_rec
9198 ,p_header_rec => l_header_rec
9199 ,p_x_interface_line_rec => l_interface_line_rec
9200 ,x_return_status => x_return_status
9201 ,x_result_out => x_result_out);
9202 IF l_debug_level > 0 THEN
9203 oe_debug_pub.add( 'INTERFACED W/REQUEST_ID : '||L_INTERFACE_LINE_REC.REQUEST_ID , 5 ) ;
9204 -- if this line can only invoice partial, it will become RFR-PENDING while interfacing whatever it can
9205 -- x_result_out should have set appropriately
9206 oe_debug_pub.add( 'AFTER INTERFACE SINGLE LINE , RESULT_OUT IS ' || X_RESULT_OUT ||': And x_return_status:'||x_return_status, 5 ) ;
9207 END IF;
9208 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9209 RAISE FND_API.G_EXC_ERROR;
9210 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9211 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9212 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
9213 -- bug# 4094835, if RFR line is fully is fully invoiced or not eligible
9214 IF (x_result_out = OE_GLOBALS.G_WFR_COMPLETE OR x_result_out=OE_GLOBALS.G_WFR_NOT_ELIGIBLE) THEN
9215 IF l_old_interface_status_code = 'MANUAL-PENDING' OR l_old_interface_status_code = 'RFR-PENDING' THEN
9216 IF l_debug_level > 0 THEN
9217 oe_debug_pub.add( 'RFR: MANUAL-PENDING + RFR LINE HAS BEEN FULLY INVOICED' , 5 ) ;
9218 oe_debug_pub.add( 'NOW COMPLETING THE WF BLOCK ACTIVITY' , 5 ) ;
9219 END IF;
9220 WF_ENGINE.CompleteActivityInternalName(OE_GLOBALS.G_WFI_LIN, l_line_rec.line_id, 'INVOICING_WAIT_FOR_RFR', 'COMPLETE');
9221 END IF;
9222 END IF;
9223 IF x_result_out = OE_GLOBALS.G_WFR_PRTL_COMPLETE THEN -- RFR line is partially invoiced
9224 IF l_debug_level > 0 THEN
9225 oe_debug_pub.add( 'RFR: THIS LINE IS PARTIALLY INVOICED' , 5 ) ;
9226 END IF;
9227 END IF;
9228 -- real invoice_interface_status_code should have updated to right value
9229 -- from interface_single_line already
9230 END IF;
9231 ELSE -- PTO in a delivery, but nothing available to invoice, update to RFR-PENDING
9232 IF l_debug_level > 0 THEN
9233 oe_debug_pub.add( 'RFR: NOTHING AVAILABLE FOR PTO TO INVOICE , UDPATE RFR-PENDING' , 5 ) ;
9234 oe_debug_pub.add( 'l_interface_line_rec.quantity:'|| l_interface_line_rec.quantity||':l_line_rec.invoiced_quantity:'||l_line_rec.invoiced_quantity,5 ) ;
9235 END IF;
9236 l_interface_line_rec.quantity := 0; -- for bug# 4760143, setting the quantity to zero as nothing to invoice
9237 IF l_debug_level > 0 THEN
9238 oe_debug_pub.add( 'l_interface_line_rec.quantity after resetting:'|| l_interface_line_rec.quantity,5 ) ;
9239 END IF;
9240 Update_Invoice_Attributes(l_line_rec
9241 ,l_interface_line_rec
9242 ,'RFR-PENDING'
9243 ,x_return_status);
9244 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
9245 FND_MESSAGE.SET_NAME('ONT','OE_INVOICE_WAIT_FOR_RFR');
9246 OE_MSG_PUB.ADD;
9247 END IF;
9248 IF l_debug_level > 0 THEN
9249 oe_debug_pub.add( 'RFR: L_LINE_REC.INTERFACE_STATUS '||L_LINE_REC.INVOICE_INTERFACE_STATUS_CODE , 5 ) ;
9250 oe_debug_pub.add( 'RFR: X_RETURN_STATUS :'||X_RETURN_STATUS , 5 ) ;
9251 END IF;
9252 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9253 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9254 RAISE FND_API.G_EXC_ERROR;
9255 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9256 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9257 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9258 --bug# 4094835
9259 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
9260 x_result_out := OE_GLOBALS.G_WFR_PRTL_COMPLETE;
9261 IF l_debug_level > 0 THEN
9262 oe_debug_pub.add( 'RFR: LINE ID '||TO_CHAR ( L_LINE_REC.LINE_ID ) ||' PARTIALLY INTERFACED SUCCESSFULLY ' || 'X_RESULT_OUT: '||X_RESULT_OUT) ;
9263 END IF;
9264 END IF; -- check for update_invoice_attribute results
9265 END IF; -- check for anything to invoice for this PTO
9266 ELSE -- not in a PTO
9267 Interface_Single_line(p_line_rec => l_line_rec
9268 ,p_header_rec => l_header_rec
9269 ,p_x_interface_line_rec => l_interface_line_rec
9270 ,x_return_status => x_return_status
9271 ,x_result_out => x_result_out);
9272 IF l_debug_level > 0 THEN
9273 oe_debug_pub.add( 'INTERFACED W/REQUEST_ID : '||L_INTERFACE_LINE_REC.REQUEST_ID , 5 ) ;
9274 END IF;
9275 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9276 RAISE FND_API.G_EXC_ERROR;
9277 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9278 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9279 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
9280 IF l_debug_level > 0 THEN
9281 oe_debug_pub.add( 'L_LINE_ID: '||L_LINE_ID||' P_LINE_ID: '||P_LINE_ID|| ' INVOICE_INTERFACE_STATUS_CODE: '||L_LINE_REC.INVOICE_INTERFACE_STATUS_CODE , 5 ) ;
9282 END IF;
9283 IF l_old_interface_status_code = 'MANUAL-PENDING' THEN
9284 IF l_debug_level > 0 THEN
9285 oe_debug_pub.add( 'MANUAL-PENDING LINE HAS BEEN INVOICED' , 5 ) ;
9286 oe_debug_pub.add( 'NOW COMPLETING THE WF BLOCK ACTIVITY' , 5 ) ;
9287 END IF;
9288 WF_ENGINE.CompleteActivityInternalName(OE_GLOBALS.G_WFI_LIN, l_line_rec.line_id, 'INVOICING_WAIT_FOR_RFR', 'COMPLETE');
9289 END IF;
9290 END IF; -- check for interface_single_line result
9291 END IF; -- check for PTO
9292 END IF; -- Bug2181628.Process the line.
9293 END IF;
9294 END IF; -- line has not been interface yet
9295 --bug# 4094835
9296 IF l_line_id = p_line_id THEN
9297 delivery_line_processed := 'Y';
9298 current_line_return_status := x_return_status;
9299 current_line_result_out := x_result_out;
9300 IF l_debug_level > 0 THEN
9301 oe_debug_pub.add( 'Current line status:'||current_line_return_status||': Current line result_out:'||current_line_result_out);
9302 END IF;
9303 END IF;
9304 END LOOP;
9305 CLOSE delivery_lines_cursor;
9306 -- Setting the current line status correctly. This is
9307 -- required if the current line is not processed at the end
9308 --bug# 4094835
9309 IF delivery_line_processed = 'Y' THEN
9310 IF l_debug_level > 0 THEN
9311 oe_debug_pub.add( 'Setting the current line status correctly.'||current_line_return_status||':'||current_line_result_out);
9312 END IF;
9313 x_return_status := current_line_return_status;
9314 x_result_out := current_line_result_out;
9315 END IF;
9316 interface_this_line := 'N';
9317 END IF; -- are delivery lines ready?
9318 ELSE -- delivery_id is null
9319 interface_this_line := 'Y';
9320 generate_invoice_number := 'N';
9321 IF l_debug_level > 0 THEN
9322 oe_debug_pub.add( 'DELIVERY ID IS NULL' , 5 ) ;
9323 END IF;
9324 END IF; -- delivery id
9325 END IF; --shipping info avaialable
9326 ELSE -- automatic invoice numbering
9327 interface_this_line := 'Y';
9328 generate_invoice_number := 'N';
9329 IF l_debug_level > 0 THEN
9330 oe_debug_pub.add( 'AUTOMATIC INVOICE NUMBERING' , 5 ) ;
9331 END IF;
9332 END IF;
9333 IF interface_this_line = 'Y' THEN -- for automatic invoice numbering
9334 IF l_debug_level > 0 THEN
9335 oe_debug_pub.add( 'INTERFACING LINE ID : '||L_LINE_REC.LINE_ID , 5 ) ;
9336 END IF;
9337 IF generate_invoice_number = 'Y' THEN
9338 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
9339 l_interface_line_rec.request_id := -1 * p_line_id;
9340 ELSE
9341 l_interface_line_rec.request_id := -1 * p_header_id;
9342 END IF;
9343 IF l_debug_level > 0 THEN
9344 oe_debug_pub.add( 'SETTING REQUEST_ID' || L_INTERFACE_LINE_REC.REQUEST_ID , 5 ) ;
9345 END IF;
9346 END IF;
9347 -- Retrobilling:
9348 -- For RMAs that reference a retrobilled order line
9349 -- We might need to create multiple credit memos
9350 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
9351 and Oe_Retrobill_Pvt.retrobill_enabled
9352 and Return_Line(l_line_rec)
9353 and l_line_rec.reference_line_id IS NOT NULL
9354 THEN
9355 --dbms_output.put_line('inside retrobill rma');
9356 Oe_Retrobill_Pvt.Interface_Retrobilled_RMA(p_line_rec => l_line_rec
9357 ,p_header_rec => l_header_rec
9358 ,x_Return_status => x_return_status
9359 , x_result_out => x_result_out);
9360 ELSE
9361 Interface_Single_line(p_line_rec => l_line_rec
9362 ,p_header_rec => l_header_rec
9363 ,p_x_interface_line_rec => l_interface_line_rec
9364 ,x_return_status => x_return_status
9365 ,x_result_out => x_result_out);
9366 END IF;
9367 IF l_debug_level > 0 THEN
9368 oe_debug_pub.add( 'INTERFACED W/REQUEST_ID : '||L_INTERFACE_LINE_REC.REQUEST_ID || ' X_RETURN_STATUS: '|| X_RETURN_STATUS , 5 ) ;
9369 END IF;
9370 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9371 RAISE FND_API.G_EXC_ERROR;
9372 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9373 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9374 END IF;
9375 -- if this line is RFR and there are lines waiting for it, interface those lines
9376 IF Is_PTO(l_line_rec) THEN
9377 IF Is_RFR(l_line_rec.line_id) THEN
9378 IF l_debug_level > 0 THEN
9379 oe_debug_pub.add( 'RFR: THIS LINE ITSELF IS RFR' , 5 ) ;
9380 END IF;
9381 Open Pending_Lines;
9382 LOOP
9383 Fetch Pending_Lines Into l_pending_line_id;
9384 IF l_debug_level > 0 THEN
9385 oe_debug_pub.add( 'RFR: PENDING LINE ID ' || TO_CHAR ( L_PENDING_LINE_ID ) , 5 ) ;
9386 END IF;
9387 EXIT WHEN Pending_Lines%NOTFOUND;
9388 OE_Line_Util.Query_Row(p_line_id=>l_pending_line_id, x_line_rec=>l_pending_line_rec);
9389 IF Something_To_Invoice(l_pending_line_rec) THEN -- the pending line now has something to
9390 -- invoice because current line has been shipped
9391 -- check for delivery and invoice delivery if necessarily
9392 IF l_debug_level > 0 THEN
9393 oe_debug_pub.add( 'RFR: LINE IS RFR AND DELIVERY INVOICING' , 5 ) ;
9394 END IF;
9395 Interface_Single_line(p_line_rec => l_pending_line_rec
9396 ,p_header_rec => l_header_rec
9397 ,p_x_interface_line_rec => l_interface_line_rec
9398 ,x_return_status => x_return_status
9399 ,x_result_out => x_result_out);
9400 IF l_debug_level > 0 THEN
9401 oe_debug_pub.add( 'RFR: INTERFACE RFR-PENDING LINE , ID: ' || L_PENDING_LINE_REC.LINE_ID , 5 ) ;
9402 END IF;
9403 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9404 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9405 RAISE FND_API.G_EXC_ERROR;
9406 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9407 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9408 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9409 ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
9410 IF x_result_out = OE_GLOBALS.G_WFR_PRTL_COMPLETE THEN
9411 IF l_debug_level > 0 THEN
9412 oe_debug_pub.add( 'RFR: RFR-PENDING LINE PARTIALLY INTERFACED' , 5 ) ;
9413 END IF;
9414 ELSE --x_result_out = OE_GLOBALS.G_WFR_COMPLETE THEN
9415 IF l_debug_level > 0 THEN
9416 oe_debug_pub.add( 'RFR: RFR-PENDING LINE INTERFACED SUCCESSFULLY , COMPLETING BLOCK' , 5 ) ;
9417 END IF;
9418 WF_ENGINE.CompleteActivityInternalName(OE_GLOBALS.G_WFI_LIN, l_pending_line_rec.line_id, 'INVOICING_WAIT_FOR_RFR', 'COMPLETE');
9419 END IF;
9420 END IF;
9421 END IF;
9422 END LOOP;
9423 -- run for the pending lines just interfaced
9424 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
9425 IF x_result_out = OE_GLOBALS.G_WFR_COMPLETE OR x_result_out = OE_GLOBALS.G_WFR_NOT_ELIGIBLE THEN
9426 IF generate_invoice_number = 'Y' THEN
9427 IF l_debug_level > 0 THEN
9428 oe_debug_pub.add( 'RFR:LINE ID '||TO_CHAR ( L_LINE_REC.LINE_ID ) ||' INTERFACED SUCCESSFULLY' , 5 ) ;
9429 oe_debug_pub.add( 'RFR: CALLING UPDATE_NUMBERS' , 5 ) ;
9430 END IF;
9431 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
9432 Update_Numbers(p_line_id, x_return_status);
9433 ELSE
9434 Update_Numbers(p_header_id, x_return_status);
9435 END IF;
9436 IF l_debug_level > 0 THEN
9437 oe_debug_pub.add( 'RFR: RETURN STATUS : '||X_RETURN_STATUS , 5 ) ;
9438 END IF;
9439 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9440 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9441 RAISE FND_API.G_EXC_ERROR;
9442 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9443 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9444 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9445 ELSE
9446 x_result_out := OE_GLOBALS.G_WFR_COMPLETE;
9447 IF l_debug_level > 0 THEN
9448 oe_debug_pub.add( 'RFR: UPDATE NUMBER DONE FOR RFR-PENDING LINE ( CURRENT LINE IS RFR ) ' , 5 ) ;
9449 END IF;
9450 END IF;
9451 ELSE
9452 IF l_debug_level > 0 THEN
9453 oe_debug_pub.add( 'RFR:LINE ID '||TO_CHAR ( L_LINE_REC.LINE_ID ) ||' INTERFACED SUCCESSFULLY' , 5 ) ;
9454 oe_debug_pub.add( 'RFR:W/AUTOMATIC NUMBERING' , 5 ) ;
9455 END IF;
9456 END IF;
9457 END IF;
9458 END IF;
9459 close Pending_Lines;
9460 END IF; -- itself is a RFR line
9461 END IF; -- PTO line
9462 END IF; -- if interface_this_line is Y
9463 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
9464 IF x_result_out = OE_GLOBALS.G_WFR_COMPLETE OR x_result_out = OE_GLOBALS.G_WFR_NOT_ELIGIBLE THEN
9465 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
9466 IF generate_invoice_number = 'Y' THEN
9467 IF l_debug_level > 0 THEN
9468 oe_debug_pub.add( 'LINE ID '||TO_CHAR ( L_LINE_REC.LINE_ID ) ||' INTERFACED SUCCESSFULLY' , 2 ) ;
9469 oe_debug_pub.add( 'CALLING UPDATE_NUMBERS' ) ;
9470 END IF;
9471 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
9472 Update_Numbers(p_line_id, x_return_status);
9473 ELSE
9474 Update_Numbers(p_header_id, x_return_status);
9475 END IF;
9476 IF l_debug_level > 0 THEN
9477 oe_debug_pub.add( 'RETURN STATUS : '||X_RETURN_STATUS , 5 ) ;
9478 END IF;
9479 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9480 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9481 RAISE FND_API.G_EXC_ERROR;
9482 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9483 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9484 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9485 ELSE
9486 x_result_out := OE_GLOBALS.G_WFR_COMPLETE;
9487 IF l_debug_level > 0 THEN
9488 oe_debug_pub.add( 'EXITING INTERFACE_LINE' , 5 ) ;
9489 END IF;
9490 RETURN;
9491 END IF;
9492 ELSE
9493 IF l_debug_level > 0 THEN
9494 oe_debug_pub.add( 'LINE ID '||TO_CHAR ( L_LINE_REC.LINE_ID ) ||' INTERFACED SUCCESSFULLY' , 5 ) ;
9495 oe_debug_pub.add( 'W/AUTOMATIC NUMBERING' , 2 ) ;
9496 END IF;
9497 RETURN;
9498 END IF;
9499 END IF;
9500 END IF;
9501 END IF;
9502 EXCEPTION
9503 WHEN FND_API.G_EXC_ERROR THEN
9504 IF l_debug_level > 0 THEN
9505 oe_debug_pub.add( 'EXPECTED ERROR. EXIT LINE INVOICING : '||SQLERRM , 1 ) ;
9506 END IF;
9507 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
9508 ROLLBACK TO INVOICE_INTERFACE;
9509 END IF;
9510
9511 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
9512 IF x_result_out = OE_GLOBALS.G_WFR_ON_HOLD Then
9513 l_flow_status_code := 'INVOICE_HOLD';
9514 ELSIF x_result_out = OE_GLOBALS.G_WFR_INCOMPLETE THEN
9515 l_flow_status_code := 'INVOICE_INCOMPLETE';
9516 END IF;
9517 Update_line_flow_status(l_line_rec.line_id,l_flow_status_code);
9518 END IF;
9519
9520 OE_MSG_PUB.Count_And_Get
9521 ( p_count => x_msg_count
9522 , p_data => x_msg_data
9523 );
9524 x_return_status := FND_API.G_RET_STS_ERROR;
9525 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9526 IF l_debug_level > 0 THEN
9527 oe_debug_pub.add( 'UNEXPECTED ERROR. EXITING FROM LINE INVOICING : '||SQLERRM , 1 ) ;
9528 END IF;
9529 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
9530 ROLLBACK TO INVOICE_INTERFACE;
9531 END IF;
9532 OE_MSG_PUB.Count_And_Get
9533 ( p_count => x_msg_count
9534 , p_data => x_msg_data
9535 );
9536 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9537 WHEN OTHERS THEN
9538 IF l_debug_level > 0 THEN
9539 oe_debug_pub.add( 'EXCEPTION , OTHERS. EXITING FROM LINE INVOICING : '||SQLERRM , 1 ) ;
9540 END IF;
9541 IF (delivery_lines_cursor%ISOPEN) THEN
9542 CLOSE delivery_lines_cursor;
9543 END IF;
9544 IF (Pending_Lines%ISOPEN) THEN
9545 CLOSE Pending_Lines;
9546 END IF;
9547 IF p_itemtype = OE_GLOBALS.G_WFI_LIN THEN
9548 ROLLBACK TO INVOICE_INTERFACE;
9549 END IF;
9550 IF FND_MSG_PUB.Check_Msg_Level
9551 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9552 THEN
9553 OE_MSG_PUB.Add_Exc_Msg
9554 ( G_PKG_NAME
9555 , 'Interface_Line'
9556 );
9557 END IF;
9558 OE_MSG_PUB.Count_And_Get
9559 ( p_count => x_msg_count
9560 , p_data => x_msg_data
9561 );
9562 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9563 END Interface_Line;
9564
9565 PROCEDURE Interface_Header
9566 ( p_header_id IN NUMBER
9567 , p_itemtype IN VARCHAR2
9568 , x_result_out OUT NOCOPY VARCHAR2
9569 , x_return_status OUT NOCOPY VARCHAR2
9570 ) IS
9571 x_msg_count NUMBER;
9572 x_msg_data VARCHAR2(240);
9573 l_return_status VARCHAR2(30);
9574 l_result_out VARCHAR2(30);
9575 l_flow_status_code VARCHAR2(30);
9576 CURSOR order_line_cursor IS
9577 SELECT ol.line_id
9578 FROM oe_order_lines ol
9579 WHERE ol.header_id = p_header_id
9580 AND ol.open_flag = 'Y';
9581 l_line_id NUMBER;
9582 --
9583 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
9584 --
9585 BEGIN
9586 IF l_debug_level > 0 THEN
9587 oe_debug_pub.add( 'ENTER INTERFACE_HEADER ( ) PROCEDURE' , 5 ) ;
9588 END IF;
9589 SAVEPOINT HEADER_INVOICE_INTERFACE;
9590 -- Initialize API return status to success
9591 x_return_status := FND_API.G_RET_STS_SUCCESS;
9592
9593 -- Header_Invoicing_Validation
9594 OPEN order_line_cursor;
9595 LOOP
9596 FETCH order_line_cursor INTO l_line_id;
9597 EXIT WHEN order_line_cursor%NOTFOUND;
9598 IF l_debug_level > 0 THEN
9599 oe_debug_pub.add( 'PROCESSING LINE_ID: '||L_LINE_ID , 5 ) ;
9600 END IF;
9601 Interface_Line(l_line_id, p_itemtype, l_result_out, l_return_status);
9602 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9603 IF l_result_out = OE_GLOBALS.G_WFR_ON_HOLD THEN
9604 x_result_out := OE_GLOBALS.G_WFR_ON_HOLD;
9605 ELSIF l_result_out = OE_GLOBALS.G_WFR_INCOMPLETE THEN
9606 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9607 END IF;
9608 RAISE FND_API.G_EXC_ERROR;
9609 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9610 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9611 ELSE
9612 IF l_debug_level > 0 THEN
9613 oe_debug_pub.add( 'CONTINUE WITH NEXT LINE IF THIS IS NOT LAST ONE' , 5 ) ;
9614 END IF;
9615 END IF;
9616 END LOOP;
9617 CLOSE order_line_cursor;
9618 IF l_debug_level > 0 THEN
9619 oe_debug_pub.add( 'CALL UPDATE_NUMBERS FOR HEADER LEVEL INVOICING' , 5 ) ;
9620 END IF;
9621 Update_Numbers(p_header_id, x_return_status);
9622 IF l_debug_level > 0 THEN
9623 oe_debug_pub.add( 'RETURN STATUS : '||X_RETURN_STATUS , 5 ) ;
9624 END IF;
9625 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
9626 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9627 RAISE FND_API.G_EXC_ERROR;
9628 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9629 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9630 ELSE
9631 x_return_status := FND_API.G_RET_STS_SUCCESS;
9632 x_result_out := OE_GLOBALS.G_WFR_COMPLETE;
9633 IF l_debug_level > 0 THEN
9634 oe_debug_pub.add( 'EXIT INTERFACE_LINE ( ) PROCEDURE' , 5 ) ;
9635 END IF;
9636 END IF;
9637
9638 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
9639 l_flow_status_code := 'INVOICED';
9640 Update_header_flow_status(p_header_id,l_flow_status_code);
9641 END IF;
9642
9643 IF l_debug_level > 0 THEN
9644 oe_debug_pub.add( 'EXITING INTERFACE_HEADER ( ) PROCEDURE' , 5 ) ;
9645 END IF;
9646
9647 EXCEPTION
9648 WHEN FND_API.G_EXC_ERROR THEN
9649 IF l_debug_level > 0 THEN
9650 oe_debug_pub.add( 'EXPECTED ERROR. EXIT FROM HEADER INVOICING' , 5 ) ;
9651 END IF;
9652 IF (order_line_cursor%ISOPEN) THEN
9653 CLOSE order_line_cursor;
9654 END IF;
9655 ROLLBACK TO HEADER_INVOICE_INTERFACE;
9656
9657 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
9658 IF x_result_out = OE_GLOBALS.G_WFR_ON_HOLD Then
9659 l_flow_status_code := 'INVOICE_HOLD';
9660 ELSIF x_result_out = OE_GLOBALS.G_WFR_INCOMPLETE THEN
9661 l_flow_status_code := 'INVOICE_INCOMPLETE';
9662 END IF;
9663 Update_header_flow_status(p_header_id,l_flow_status_code);
9664 END IF;
9665
9666 OE_MSG_PUB.Count_And_Get
9667 ( p_count => x_msg_count
9668 , p_data => x_msg_data
9669 );
9670 x_return_status := FND_API.G_RET_STS_ERROR;
9671 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9672 IF l_debug_level > 0 THEN
9673 oe_debug_pub.add( 'UNEXPECTED ERROR. EXITING FROM HEADER INVOICING' , 5 ) ;
9674 END IF;
9675 IF (order_line_cursor%ISOPEN) THEN
9676 CLOSE order_line_cursor;
9677 END IF;
9678 ROLLBACK TO HEADER_INVOICE_INTERFACE;
9679 OE_MSG_PUB.Count_And_Get
9680 ( p_count => x_msg_count
9681 , p_data => x_msg_data
9682 );
9683 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9684 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9685 WHEN OTHERS THEN
9686 IF l_debug_level > 0 THEN
9687 oe_debug_pub.add( 'EXCEPTION OTHERS. EXIT FROM HEADER INVOICING' , 5 ) ;
9688 END IF;
9689 IF (order_line_cursor%ISOPEN) THEN
9690 CLOSE order_line_cursor;
9691 END IF;
9692 ROLLBACK TO HEADER_INVOICE_INTERFACE;
9693 IF OE_MSG_PUB.Check_Msg_Level
9694 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9695 THEN
9696 OE_MSG_PUB.Add_Exc_Msg
9697 ( G_PKG_NAME
9698 , 'Interface_Header'
9699 );
9700 END IF;
9701 OE_MSG_PUB.Count_And_Get
9702 ( p_count => x_msg_count
9703 , p_data => x_msg_data
9704 );
9705 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9706 x_result_out := OE_GLOBALS.G_WFR_INCOMPLETE;
9707
9708 END Interface_Header;
9709 Procedure Any_Line_ARInterfaced( p_application_id IN NUMBER,
9710 p_entity_short_name in VARCHAR2,
9711 p_validation_entity_short_name in VARCHAR2,
9712 p_validation_tmplt_short_name in VARCHAR2,
9713 p_record_set_tmplt_short_name in VARCHAR2,
9714 p_scope in VARCHAR2,
9715 p_result OUT NOCOPY NUMBER ) IS
9716
9717 l_header_id NUMBER ;
9718 any_line_interfaced NUMBER := 0;
9719 -- 3740077
9720 line_payment_not_exists NUMBER :=0;
9721 -- 3740077
9722
9723 BEGIN
9724
9725 IF p_validation_entity_short_name = 'HEADER_SCREDIT' THEN
9726 l_header_id := oe_header_scredit_security.g_record.header_id;
9727 ELSIF p_validation_entity_short_name = 'HEADER_ADJ' THEN
9728 l_header_id := oe_header_adj_security.g_record.header_id;
9729 ELSIF p_validation_entity_short_name = 'HEADER_PAYMENT' THEN
9730 l_header_id := oe_header_payment_security.g_record.header_id;
9731 END IF;
9732
9733 IF l_header_id IS NULL OR
9734 l_header_id = FND_API.G_MISS_NUM
9735 THEN
9736 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
9737 p_result := 0;
9738 END IF;
9739
9740 -- 3740077 Added the If
9741 IF p_validation_entity_short_name = 'HEADER_PAYMENT' THEN
9742 IF (nvl(oe_header_payment_security.g_record.payment_collection_event,'PREPAY')='INVOICE' and
9743 oe_header_payment_security.g_record.line_id is NULL) THEN
9744
9745 BEGIN
9746 SELECT 1
9747 INTO line_payment_not_exists
9748 FROM OE_ORDER_LINES L
9749 WHERE HEADER_ID = l_header_id
9750 AND invoice_interface_status_code = 'YES'
9751 AND NOT EXISTS
9752 (select 'x' from oe_payments
9753 WHERE header_id = l_header_id
9754 AND line_id = L.line_id
9755 AND payment_type_code <> 'COMMITMENT'
9756 )
9757 AND ROWNUM=1;
9758 EXCEPTION
9759 WHEN NO_DATA_FOUND THEN
9760 p_result := 0;
9761 END;
9762
9763 IF line_payment_not_exists = 1 THEN
9764 p_result := 1;
9765 oe_debug_pub.add('skubendr going in');
9766 ELSE
9767 p_result := 0;
9768 END IF;
9769 ELSE
9770 -- this is a prepayment.
9771 p_result := 0;
9772 END IF;
9773 ELSE
9774 BEGIN
9775 SELECT 1
9776 INTO any_line_interfaced
9777 FROM OE_ORDER_LINES
9778 WHERE HEADER_ID = l_header_id
9779 AND invoice_interface_status_code = 'YES'
9780 AND ROWNUM = 1;
9781 EXCEPTION
9782 WHEN NO_DATA_FOUND THEN
9783 any_line_interfaced := 0;
9784 END;
9785 IF any_line_interfaced = 1 THEN
9786 p_result := 1;
9787 ELSE
9788 p_result := 0;
9789 END IF;
9790 END IF;
9791 END Any_Line_ARInterfaced;
9792
9793 Procedure All_Lines_ARInterfaced( p_application_id IN NUMBER,
9794 p_entity_short_name in VARCHAR2,
9795 p_validation_entity_short_name in VARCHAR2,
9796 p_validation_tmplt_short_name in VARCHAR2,
9797 p_record_set_tmplt_short_name in VARCHAR2,
9798 p_scope in VARCHAR2,
9799 p_result OUT NOCOPY NUMBER ) IS
9800
9801 l_header_id NUMBER ;
9802 any_line_not_interfaced NUMBER := 0;
9803 l_lines_exist NUMBER := 0;
9804 BEGIN
9805 IF p_validation_entity_short_name = 'HEADER_SCREDIT' THEN
9806 l_header_id := oe_header_scredit_security.g_record.header_id;
9807 ELSIF p_validation_entity_short_name = 'HEADER_ADJ' THEN
9808 l_header_id := oe_header_adj_security.g_record.header_id;
9809 -- 3740077
9810 ELSIF p_validation_entity_short_name = 'HEADER_PAYMENT' THEN
9811 l_header_id := oe_header_payment_security.g_record.header_id;
9812 ELSIF p_validation_entity_short_name = 'LINE_PAYMENT' THEN
9813 l_header_id := oe_line_payment_security.g_record.header_id;
9814 -- 3740077
9815 END IF;
9816
9817 IF l_header_id IS NULL OR
9818 l_header_id = FND_API.G_MISS_NUM
9819 THEN
9820 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
9821 p_result := 0;
9822 END IF;
9823
9824 IF l_header_id is not null and
9825 l_header_id <> FND_API.G_MISS_NUM THEN
9826
9827 BEGIN
9828 select 1 into l_lines_exist
9829 from oe_order_lines
9830 where header_id = l_header_id
9831 and rownum = 1;
9832
9833 EXCEPTION
9834 WHEN NO_DATA_FOUND THEN
9835 l_lines_exist := 0;
9836 p_result := 0;
9837 any_line_not_interfaced := 1;
9838 END;
9839
9840 END IF;
9841
9842 IF l_lines_exist = 1 THEN
9843
9844 BEGIN
9845 SELECT 1
9846 INTO any_line_not_interfaced
9847 FROM OE_ORDER_LINES
9848 WHERE HEADER_ID = l_header_id
9849 AND NVL(invoice_interface_status_code, 'NO') in ('NO', 'MANUAL-PENDING', 'RFR-PENDING', 'ACCEPTANCE-PENDING')
9850 AND
9851 ( --Bug 5230279
9852 open_flag = 'Y'
9853 OR (nvl(cancelled_flag, 'N') = 'Y' AND open_flag = 'N') -- bug 5181988
9854 ) -- bug 5230279
9855 AND ROWNUM = 1;
9856 EXCEPTION
9857 WHEN NO_DATA_FOUND THEN
9858 any_line_not_interfaced := 0;
9859 END;
9860
9861 END IF; -- if l_lines_exist = 1
9862
9863 IF any_line_not_interfaced = 1 THEN
9864 p_result := 0;
9865 ELSE
9866 p_result := 1;
9867 END IF;
9868
9869 END All_Lines_ARInterfaced;
9870
9871
9872 Procedure This_Line_ARInterfaced( p_application_id IN NUMBER,
9873 p_entity_short_name in VARCHAR2,
9874 p_validation_entity_short_name in VARCHAR2,
9875 p_validation_tmplt_short_name in VARCHAR2,
9876 p_record_set_tmplt_short_name in VARCHAR2,
9877 p_scope in VARCHAR2,
9878 p_result OUT NOCOPY NUMBER ) IS
9879
9880 l_line_id NUMBER ;
9881 this_line_interfaced NUMBER := 0;
9882 BEGIN
9883
9884 oe_debug_pub.add(' Entering This_Line_ARInterfaced');
9885 l_line_id := OE_LINE_SECURITY.g_record.line_id;
9886
9887 IF p_validation_entity_short_name = 'LINE_PAYMENT' THEN
9888 l_line_id := oe_line_payment_security.g_record.line_id;
9889 END IF;
9890
9891 oe_debug_pub.add(' Line Id :'||l_line_id);
9892
9893 IF l_line_id IS NULL OR
9894 l_line_id = FND_API.G_MISS_NUM
9895 THEN
9896 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
9897 p_result := 0;
9898 END IF;
9899
9900 BEGIN
9901 SELECT 1
9902 INTO this_line_interfaced
9903 FROM OE_ORDER_LINES
9904 WHERE LINE_ID = l_line_id
9905 AND invoice_interface_status_code = 'YES';
9906
9907 EXCEPTION
9908 WHEN NO_DATA_FOUND THEN
9909 this_line_interfaced := 0;
9910 END;
9911 IF this_line_interfaced = 1 THEN
9912 p_result := 1;
9913 ELSE
9914 p_result := 0;
9915 END IF;
9916 END This_Line_ARInterfaced;
9917
9918
9919 -- BUG# 7431368 : Performance fix : Start
9920 Procedure set_header_id ( p_header_id IN NUMBER)IS
9921 begin
9922 G_INVOICE_HEADER_ID := p_header_id;
9923 End;
9924
9925 Procedure set_line_id ( p_line_id IN NUMBER) IS
9926 begin
9927 G_INVOICE_LINE_ID := P_line_id;
9928 END;
9929
9930 Function get_header_id return NUMBER IS
9931 begin
9932 return G_INVOICE_HEADER_ID;
9933 END;
9934
9935 Function get_line_id return NUMBER IS
9936 begin
9937 return G_INVOICE_LINE_ID;
9938 END;
9939 -- BUG# 7431368 : Performance fix : End
9940
9941
9942 END OE_Invoice_PUB;