[Home] [Help]
PACKAGE BODY: APPS.INL_SHIPMENT_PVT
Source
1 PACKAGE BODY "INL_SHIPMENT_PVT" AS
2 /* $Header: INLVSHPB.pls 120.105.12020000.16 2013/04/05 18:49:30 acferrei ship $ */
3
4 L_FND_USER_ID CONSTANT NUMBER := fnd_global.user_id; --Bug#9660082
5 L_FND_CONC_PROGRAM_ID CONSTANT NUMBER := fnd_global.conc_program_id; --Bug#9660082
6 L_FND_PROG_APPL_ID CONSTANT NUMBER := fnd_global.prog_appl_id ; --Bug#9660082
7 L_FND_CONC_REQUEST_ID CONSTANT NUMBER := fnd_global.conc_request_id; --Bug#9660082
8 L_FND_LOCAL_CHR10 CONSTANT VARCHAR2(100) := fnd_global.local_chr (10); --Bug#9660082
9 L_FND_LOGIN_ID CONSTANT NUMBER := fnd_global.login_id; --Bug#9660082
10 L_FND_EXC_ERROR EXCEPTION; --Bug#9660082
11 L_FND_EXC_UNEXPECTED_ERROR EXCEPTION; --Bug#9660082
12 L_FND_RET_STS_SUCCESS CONSTANT VARCHAR2(1) := fnd_api.g_ret_sts_success; --Bug#9660082
13 L_FND_RET_STS_ERROR CONSTANT VARCHAR2(1) := fnd_api.g_ret_sts_error; --Bug#9660082
14 L_FND_RET_STS_UNEXP_ERROR CONSTANT VARCHAR2(1) := fnd_api.g_ret_sts_unexp_error;--Bug#9660082
15
16 /* unused --Bug#13987019 BEG
17 TYPE rcv_header_interface_rec_type
18 IS
19 RECORD
20 (
21 header_interface_id NUMBER,
22 notice_creation_date DATE,
23 transaction_type VARCHAR2 (25),
24 processing_status_code VARCHAR2 (25),
25 receipt_source_code VARCHAR2 (25),
26 validation_flag VARCHAR2 (1),
27 ship_to_organization_id NUMBER,
28 vendor_id NUMBER,
29 vendor_site_id NUMBER,
30 group_id NUMBER,
31 shipment_num VARCHAR2 (30),
32 shipped_date DATE,
33 last_update_date DATE,
34 last_updated_by NUMBER,
35 creation_date DATE,
36 created_by NUMBER,
37 last_update_login NUMBER) ;
38 TYPE rcv_header_interface_tbl
39 IS
40 TABLE OF rcv_header_interface_rec_type INDEX BY BINARY_INTEGER;
41 rcv_header_interface rcv_header_interface_tbl;
42 TYPE rcv_trx_interface_rec_type
43 IS
44 RECORD
45 (
46 interface_transaction_id NUMBER,
47 transaction_type VARCHAR2 (25),
48 quantity NUMBER,
49 interface_source_code VARCHAR2 (30),
50 interface_source_line_id NUMBER,
51 transaction_date DATE,
52 processing_status_code VARCHAR2 (25),
53 processing_mode_code VARCHAR2 (25),
54 transaction_status_code VARCHAR2 (25),
55 receipt_source_code VARCHAR2 (25),
56 source_document_code VARCHAR2 (25),
57 validation_flag VARCHAR2 (1),
58 po_header_id NUMBER,
59 po_line_id NUMBER,
60 po_line_location_id NUMBER,
61 po_release_id NUMBER,
62 item_id NUMBER,
63 item_num VARCHAR2 (50),
64 item_description VARCHAR2 (240),
65 uom_code VARCHAR2 (3),
66 vendor_item_num VARCHAR2 (25),
67 vendor_id NUMBER,
68 vendor_site_id NUMBER,
69 ship_to_location_id NUMBER,
70 location_id NUMBER,
71 org_id NUMBER,
72 to_organization_id NUMBER,
73 group_id NUMBER,
74 lpn_group_id NUMBER,
75 header_interface_id NUMBER,
76 last_update_date DATE,
77 last_updated_by NUMBER,
78 creation_date DATE,
79 created_by NUMBER,
80 last_update_login NUMBER,
81 unit_landed_cost NUMBER) ;
82
83 TYPE rcv_trx_interface_tbl
84 IS
85 TABLE OF rcv_trx_interface_rec_type INDEX BY BINARY_INTEGER;
86 rcv_trx_interface rcv_trx_interface_tbl;
87 --Bug#13987019 END
88 */
89 -- Utl name : Handle_ShipError
90 -- Type : Private
91 -- Function : Insert errors in INL_SHIP_HOLDS
92 -- Pre-reqs : None
93 -- Parameters :
94 -- IN : p_ship_header_id IN NUMBER ,
95 -- p_ship_line_id IN NUMBER,
96 -- p_charge_line_id IN NUMBER,
97 -- p_table_name IN VARCHAR2,
98 -- p_column_name IN VARCHAR2,
99 -- p_column_value IN VARCHAR2,
100 -- p_error_message IN VARCHAR2,
101 -- p_error_message_name IN VARCHAR2,
102 -- p_token1_name IN VARCHAR2,
103 -- p_token1_value IN VARCHAR2,
104 -- p_token2_name IN VARCHAR2,
105 -- p_token2_value IN VARCHAR2,
106 -- p_token3_name IN VARCHAR2,
107 -- p_token3_value IN VARCHAR2,
108 -- p_token4_name IN VARCHAR2,
109 -- p_token4_value IN VARCHAR2,
110 -- p_token5_name IN VARCHAR2,
111 -- p_token5_value IN VARCHAR2,
112 -- p_token6_name IN VARCHAR2,
113 -- p_token6_value IN VARCHAR2,
114 --
115 --
116 -- OUT x_return_status OUT NOCOPY VARCHAR2
117 --
118 -- Version : Current version 1.0
119 --
120 -- Notes :
121 PROCEDURE Handle_ShipError(
122 p_ship_header_id IN NUMBER,
123 p_ship_line_id IN NUMBER,
124 p_charge_line_id IN NUMBER,
125 p_table_name IN VARCHAR2,
126 p_column_name IN VARCHAR2,
127 p_column_value IN VARCHAR2,
128 p_error_message IN VARCHAR2,
129 p_error_message_name IN VARCHAR2,
130 p_token1_name IN VARCHAR2,
131 p_token1_value IN VARCHAR2,
132 p_token2_name IN VARCHAR2,
133 p_token2_value IN VARCHAR2,
134 p_token3_name IN VARCHAR2,
135 p_token3_value IN VARCHAR2,
136 p_token4_name IN VARCHAR2,
137 p_token4_value IN VARCHAR2,
138 p_token5_name IN VARCHAR2,
139 p_token5_value IN VARCHAR2,
140 p_token6_name IN VARCHAR2,
141 p_token6_value IN VARCHAR2,
142 x_return_status OUT NOCOPY VARCHAR2
143 ) IS
144 l_program_name CONSTANT VARCHAR2 (30) := 'Handle_ShipError';
145 l_return_status VARCHAR2 (1) ;
146 l_msg_count NUMBER;
147 l_msg_data VARCHAR2 (2000) ;
148 l_debug_info VARCHAR2 (200) ;
149 BEGIN
150 -- Standard Beginning of Procedure/Function Logging
151 INL_LOGGING_PVT.Log_BeginProc ( p_module_name => g_module_name,
152 p_procedure_name => l_program_name) ;
153 -- Initialize return status to success
154 x_return_status := L_FND_RET_STS_SUCCESS;
155 l_debug_info := 'Insert error details in inl_ship_holds.';
156 INL_LOGGING_PVT.Log_Statement (
157 p_module_name => g_module_name,
158 p_procedure_name => l_program_name,
159 p_debug_info => l_debug_info
160 ) ;
161 INSERT
162 INTO inl_ship_holds
163 (
164 ship_hold_id , /* 01 */
165 ship_header_id , /* 02 */
166 ship_line_id , /* 03 */
167 table_name , /* 04 */
168 column_name , /* 05 */
169 column_value , /* 06 */
170 processing_date , /* 07 */
171 error_message_name , /* 08 */
172 error_message , /* 09 */
173 token1_name , /* 10 */
174 token1_value , /* 11 */
175 token2_name , /* 12 */
176 token2_value , /* 13 */
177 token3_name , /* 14 */
178 token3_value , /* 15 */
179 token4_name , /* 16 */
180 token4_value , /* 17 */
181 token5_name , /* 18 */
182 token5_value , /* 19 */
183 token6_name , /* 20 */
184 token6_value , /* 21 */
185 created_by , /* 22 */
186 creation_date , /* 23 */
187 last_updated_by , /* 24 */
188 last_update_date , /* 25 */
189 last_update_login , /* 26 */
190 program_id , /* 27 */
191 program_application_id, /* 28 */
192 program_update_date , /* 29 */
193 request_id /* 30 */
194 )
195 VALUES
196 (
197 inl_ship_holds_s.NEXTVAL , /* 01 */
198 p_ship_header_id , /* 02 */
199 p_ship_line_id , /* 03 */
200 p_table_name , /* 04 */
201 p_column_name , /* 05 */
202 p_column_value , /* 06 */
203 SYSDATE , /* 07 */
204 p_error_message_name , /* 08 */
205 p_error_message , /* 09 */
206 p_token1_name , /* 10 */
207 p_token1_value , /* 11 */
208 p_token2_name , /* 12 */
209 p_token2_value , /* 13 */
210 p_token3_name , /* 14 */
211 p_token3_value , /* 15 */
212 p_token4_name , /* 16 */
213 p_token4_value , /* 17 */
214 p_token5_name , /* 18 */
215 p_token5_value , /* 19 */
216 p_token6_name , /* 20 */
217 p_token6_value , /* 21 */
218 L_FND_USER_ID , /* 22 */
219 SYSDATE , /* 23 */
220 L_FND_USER_ID , /* 24 */
221 SYSDATE , /* 25 */
222 L_FND_LOGIN_ID , /* 26 */ --SCM-051
223 L_FND_CONC_PROGRAM_ID , /* 27 */
224 L_FND_PROG_APPL_ID , /* 28 */
225 SYSDATE , /* 29 */
226 L_FND_CONC_REQUEST_ID /* 30 */
227 ) ;
228 -- Standard End of Procedure/Function Logging
229 INL_LOGGING_PVT.Log_EndProc(
230 p_module_name => g_module_name,
231 p_procedure_name => l_program_name
232 );
233 EXCEPTION
234 WHEN L_FND_EXC_ERROR THEN
235 -- Standard Expected Error Logging
236 INL_LOGGING_PVT.Log_ExpecError(
237 p_module_name => g_module_name,
238 p_procedure_name => l_program_name
239 );
240 x_return_status := L_FND_RET_STS_ERROR;
241 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
242 -- Standard Unexpected Error Logging
243 INL_LOGGING_PVT.Log_UnexpecError(
244 p_module_name => g_module_name,
245 p_procedure_name => l_program_name
246 );
247 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
248 WHEN OTHERS THEN
249 -- Standard Unexpected Error Logging
250 INL_LOGGING_PVT.Log_UnexpecError(
251 p_module_name => g_module_name,
252 p_procedure_name => l_program_name
253 );
254 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
255 IF FND_MSG_PUB.Check_Msg_Level(
256 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
257 THEN
258 FND_MSG_PUB.Add_Exc_Msg(
259 p_pkg_name => g_pkg_name,
260 p_procedure_name => l_program_name
261 );
262 END IF;
263 END Handle_ShipError;
264 -- Utility name : Reset_ShipError
265 -- Type : Private
266 -- Function : Delete previous errors for the current shipment
267 -- Pre-reqs : None
268 -- Parameters :
269 -- IN : p_ship_header_id IN NUMBER Required Id of Ship Header record
270 -- p_ship_line_id IN NUMBER Optional Id of Ship Line record
271 -- p_charge_line_id IN NUMBER Optional Id of Ship Line record
272 --
273 -- OUT x_return_status OUT NOCOPY VARCHAR2
274 --
275 -- Version : Current version 1.0
276 --
277 -- Notes :
278 PROCEDURE Reset_ShipError(
279 p_ship_header_id IN NUMBER,
280 p_ship_line_id IN NUMBER,
281 p_charge_line_id IN NUMBER,
282 x_return_status OUT NOCOPY VARCHAR2
283 ) IS
284 l_program_name CONSTANT VARCHAR2(30):= 'Reset_ShipError';
285 l_api_version CONSTANT NUMBER := 1.0;
286 l_return_status VARCHAR2(1);
287 l_msg_count NUMBER;
288 l_msg_data VARCHAR2(2000);
289 l_debug_info VARCHAR2(200);
290 BEGIN
291 -- Standard Beginning of Procedure/Function Logging
292 INL_LOGGING_PVT.Log_BeginProc (
293 p_module_name => g_module_name,
294 p_procedure_name => l_program_name
295 );
296 -- Initialize return status to success
297 x_return_status := L_FND_RET_STS_SUCCESS;
298 l_debug_info := 'Delete Errors from previous validation.';
299 INL_LOGGING_PVT.Log_Statement (
300 p_module_name => g_module_name,
301 p_procedure_name => l_program_name,
302 p_debug_info => l_debug_info
303 ) ;
304 IF p_ship_line_id IS NULL AND p_charge_line_id IS NULL THEN
305 DELETE FROM inl_ship_holds
306 WHERE ship_header_id = p_ship_header_id;
307 ELSE
308 IF p_ship_line_id IS NOT NULL THEN
309 DELETE
310 FROM inl_ship_holds
311 WHERE ship_header_id = p_ship_header_id
312 AND ship_line_id = p_ship_line_id;
313 END IF;
314 IF p_charge_line_id IS NOT NULL THEN
315 DELETE
316 FROM inl_ship_holds
317 WHERE ship_header_id = p_ship_header_id
318 AND ship_line_id = p_charge_line_id;
319 END IF;
320 END IF;
321 -- Standard End of Procedure/Function Logging
322 INL_LOGGING_PVT.Log_EndProc (
323 p_module_name => g_module_name,
324 p_procedure_name => l_program_name) ;
325 EXCEPTION
326 WHEN L_FND_EXC_ERROR THEN
327 -- Standard Expected Error Logging
328 INL_LOGGING_PVT.Log_ExpecError (
329 p_module_name => g_module_name,
330 p_procedure_name => l_program_name) ;
331 x_return_status := L_FND_RET_STS_ERROR;
332 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
333 -- Standard Unexpected Error Logging
334 INL_LOGGING_PVT.Log_UnexpecError (
335 p_module_name => g_module_name,
336 p_procedure_name => l_program_name) ;
337 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
338 WHEN OTHERS THEN
339 -- Standard Unexpected Error Logging
340 INL_LOGGING_PVT.Log_UnexpecError (
341 p_module_name => g_module_name,
342 p_procedure_name => l_program_name) ;
343 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
344 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
345 FND_MSG_PUB.Add_Exc_Msg (
346 p_pkg_name => g_pkg_name,
347 p_procedure_name => l_program_name) ;
348 END IF;
349 END Reset_ShipError;
350 -- API name : Complete_Shipment
351 -- Type : Private
352 -- Function : Complete a given LCM Shipment.
353 -- Pre-reqs : None
354 -- Parameters :
355 -- IN : p_api_version IN NUMBER
356 -- p_init_msg_list IN VARCHAR2 Default = L_FND_FALSE
357 -- p_commit IN VARCHAR2 Default = L_FND_FALSE
358 -- p_ship_header_id IN NUMBER
359 -- p_rcv_enabled_flag IN VARCHAR2
360 -- p_pending_elc_flag IN VARCHAR2
361 -- p_pending_matching_flag IN VARCHAR2
362 -- p_organization_id IN NUMBER
363 --
364 -- OUT x_return_status OUT NOCOPY VARCHAR2
365 -- x_msg_count OUT NOCOPY NUMBER
366 -- x_msg_data OUT NOCOPY VARCHAR2
367 --
368 -- Version : Current version 1.0
369 --
370 -- Notes :
371 PROCEDURE Complete_Shipment (
372 p_api_version IN NUMBER,
373 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
374 p_commit IN VARCHAR2 := L_FND_FALSE,
375 p_ship_header_id IN NUMBER,
376 p_rcv_enabled_flag IN VARCHAR2,
377 p_pending_matching_flag IN VARCHAR2,
378 p_pending_elc_flag IN VARCHAR2, -- SCM-051
379 p_organization_id IN NUMBER,
380 p_max_allocation_id IN NUMBER, --Bug#10032820
381 x_return_status OUT NOCOPY VARCHAR2,
382 x_msg_count OUT NOCOPY NUMBER,
383 x_msg_data OUT NOCOPY VARCHAR2)
384 IS
385 l_api_name CONSTANT VARCHAR2 (30) := 'Complete_Shipment';
386 l_api_version CONSTANT NUMBER := 1.0;
387 l_msg_count NUMBER;
388 l_msg_data VARCHAR2 (2000);
389 l_ship_status VARCHAR2 (30) ;
390 l_exist_status NUMBER := 0;
391 l_return_status VARCHAR2 (1) ;
392 l_debug_info VARCHAR2 (200) ;
393 l_errbuf VARCHAR2 (240) ;
394 l_retcode NUMBER;
395 l_pre_receive VARCHAR2 (1);
396 l_ship_num VARCHAR2(25); -- SCM-051
397 BEGIN
398 INL_LOGGING_PVT.Log_BeginProc (
399 p_module_name => g_module_name,
400 p_procedure_name => l_api_name) ;
401 -- Standard Start of API savepoint
402 SAVEPOINT Complete_Shipment_PVT;
403 -- Initialize message list if p_init_msg_list is set to TRUE.
404 IF FND_API.to_Boolean (p_init_msg_list) THEN
405 FND_MSG_PUB.initialize;
406 END IF;
407 -- Check for call compatibility.
408 IF NOT
409 FND_API.Compatible_API_Call (
410 p_current_version_number => l_api_version,
411 p_caller_version_number => p_api_version,
412 p_api_name => l_api_name,
413 p_pkg_name => G_PKG_NAME
414 ) THEN
415 RAISE L_FND_EXC_UNEXPECTED_ERROR;
416 END IF;
417 -- Initialize API return status to success
418 x_return_status := L_FND_RET_STS_SUCCESS;
419 -------------------------------------------------
420 -- Required steps only for NOT Pending Shipments
421 -------------------------------------------------
422 IF NVL (p_pending_matching_flag, 'N') = 'N' AND
423 NVL (p_pending_elc_flag, 'N') = 'N' AND -- SCM-051
424 NVL (p_rcv_enabled_flag, 'N') = 'Y' THEN
425 -- Check which scenario is setup in RCV
426 -- Parameters for the current Inventory Organization
427 SELECT pre_receive
428 INTO l_pre_receive
429 FROM rcv_parameters
430 WHERE organization_id = p_organization_id;
431 -- Pre-Receive scenario
432 IF (NVL (l_pre_receive, 'N') = 'Y') THEN
433 l_debug_info := 'Call INL_INTEGRATION_GRP.Export_toRCV';
434 INL_LOGGING_PVT.Log_Statement (
435 p_module_name => g_module_name,
436 p_procedure_name => l_api_name,
437 p_debug_info => l_debug_info) ;
438
439 -- Run integration procedure to transport LCM to RCV
440 INL_INTEGRATION_GRP.Export_toRCV (
441 p_api_version => l_api_version,
442 p_init_msg_list => L_FND_FALSE,
443 p_commit => L_FND_FALSE,
444 p_ship_header_id => p_ship_header_id,
445 x_return_status => l_return_status,
446 x_msg_count => l_msg_count,
447 x_msg_data => l_msg_data);
448
449 l_debug_info := 'l_return_status: ' || l_return_status;
450 INL_LOGGING_PVT.Log_Statement (
451 p_module_name => g_module_name,
452 p_procedure_name => l_api_name,
453 p_debug_info => l_debug_info) ;
454
455 -- If any errors happen abort the process.
456 IF l_return_status = L_FND_RET_STS_ERROR THEN
457 RAISE L_FND_EXC_ERROR;
458 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
459 RAISE L_FND_EXC_UNEXPECTED_ERROR;
460 END IF;
461 -- Blackbox scenario
462 ELSIF (NVL (l_pre_receive, 'N') = 'N') THEN
463 l_debug_info := 'Call INL_INTEGRATION_GRP.Call_StampLC';
464 INL_LOGGING_PVT.Log_Statement (
465 p_module_name => g_module_name,
466 p_procedure_name => l_api_name,
467 p_debug_info => l_debug_info) ;
468
469 INL_INTEGRATION_GRP.Call_StampLC (
470 p_api_version => l_api_version,
471 p_init_msg_list => L_FND_FALSE,
472 p_commit => L_FND_FALSE,
473 p_ship_header_id => p_ship_header_id,
474 x_return_status => l_return_status,
475 x_msg_count => l_msg_count,
476 x_msg_data => l_msg_data
477 );
478 -- If any errors happen abort the process.
479 IF l_return_status = L_FND_RET_STS_ERROR THEN
480 RAISE L_FND_EXC_ERROR;
481 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
482 RAISE L_FND_EXC_UNEXPECTED_ERROR;
483 END IF;
484 END IF;
485 ----------------------------------------------
486 -- Required step only for Pending Shipments
487 ----------------------------------------------
488 ELSIF (NVL (p_pending_matching_flag, 'N') = 'Y' OR
489 NVL (p_pending_elc_flag, 'N') = 'Y' ) AND -- SCM-051
490 NVL(p_rcv_enabled_flag, 'N') = 'Y' THEN
491 -- Run Create Costing Interfaces
492 l_debug_info := 'Run INL_INTEGRATION_GRP.Export_ToCST';
493 INL_LOGGING_PVT.Log_Statement (
494 p_module_name => g_module_name,
495 p_procedure_name=> l_api_name,
496 p_debug_info => l_debug_info) ;
497
498 INL_INTEGRATION_GRP.Export_ToCST (
499 p_api_version => 1.0,
500 p_init_msg_list => L_FND_FALSE,
501 p_commit => L_FND_FALSE,
502 p_ship_header_id => p_ship_header_id,
503 p_max_allocation_id => p_max_allocation_id, --Bug#10032820
504 x_return_status => l_return_status,
505 x_msg_count => l_msg_count,
506 x_msg_data => l_msg_data
507 ) ;
508 -- If any errors happen abort the process.
509 IF l_return_status = L_FND_RET_STS_ERROR THEN
510 RAISE L_FND_EXC_ERROR;
511 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
512 RAISE L_FND_EXC_UNEXPECTED_ERROR;
513 END IF;
514 END IF;
515
516 l_debug_info := 'Update the current INL_SHIP_HEADERS_ALL.ship_status_code to COMPLETED';
517 INL_LOGGING_PVT.Log_Statement (
518 p_module_name => g_module_name,
519 p_procedure_name=> l_api_name,
520 p_debug_info => l_debug_info ) ;
521
522 UPDATE inl_ship_headers
523 SET ship_status_code = 'COMPLETED',
524 last_updated_by = L_FND_USER_ID,
525 last_update_date = SYSDATE
526 WHERE ship_header_id = p_ship_header_id;
527
528 -- Standard check of p_commit.
529 IF FND_API.To_Boolean (p_commit) THEN
530 COMMIT WORK;
531 END IF;
532 -- Standard call to get message count and if count is 1, get message info.
533 FND_MSG_PUB.Count_And_Get (
534 p_encoded => L_FND_FALSE,
535 p_count => x_msg_count,
536 p_data => x_msg_data) ;
537 INL_LOGGING_PVT.Log_EndProc (
538 p_module_name => g_module_name,
539 p_procedure_name => l_api_name) ;
540 EXCEPTION
541 WHEN L_FND_EXC_ERROR THEN
542 INL_LOGGING_PVT.Log_ExpecError (
543 p_module_name => g_module_name,
544 p_procedure_name => l_api_name) ;
545 ROLLBACK TO Complete_Shipment_PVT;
546 x_return_status := L_FND_RET_STS_ERROR;
547 FND_MSG_PUB.Count_And_Get (
548 p_encoded => L_FND_FALSE,
549 p_count => x_msg_count,
550 p_data => x_msg_data) ;
551 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
552 INL_LOGGING_PVT.Log_UnexpecError (
553 p_module_name => g_module_name,
554 p_procedure_name => l_api_name) ;
555 ROLLBACK TO Complete_Shipment_PVT;
556 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
557 FND_MSG_PUB.Count_And_Get (
558 p_encoded => L_FND_FALSE,
559 p_count => x_msg_count,
560 p_data => x_msg_data) ;
561 WHEN OTHERS THEN
562 INL_LOGGING_PVT.Log_UnexpecError (
563 p_module_name => g_module_name,
564 p_procedure_name => l_api_name) ;
565 ROLLBACK TO Complete_Shipment_PVT;
566 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
567 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
568 FND_MSG_PUB.Add_Exc_Msg (
569 p_pkg_name => g_pkg_name,
570 p_procedure_name => l_api_name) ;
571 END IF;
572 FND_MSG_PUB.Count_And_Get (
573 p_encoded => L_FND_FALSE,
574 p_count => x_msg_count,
575 p_data => x_msg_data) ;
576 END Complete_Shipment;
577 -- Utility name : Delete_Allocations
578 -- Type : Private
579 -- Function : Delete allocations from the previous landed cost calculation.
580 -- Pre-reqs : None
581 -- Parameters :
582 -- IN : p_ship_header_id IN NUMBER
583 -- OUT x_return_status OUT NOCOPY VARCHAR2
584 --
585 -- Version : Current version 1.0
586 --
587 -- Notes :
588 PROCEDURE Delete_Allocations(
589 p_ship_header_id IN NUMBER,
590 x_return_status OUT NOCOPY VARCHAR2
591 ) IS
592 l_program_name CONSTANT VARCHAR2 (100) := 'Delete_Allocations ';
593 l_debug_info VARCHAR2 (200) ;
594 BEGIN
595 -- Verify if there is allocation for Shipment
596 DELETE
597 FROM inl_allocations cfa
598 WHERE cfa.ship_header_id = p_ship_header_id
599 AND NOT EXISTS
600 (
601 SELECT 'x'
602 FROM inl_allocations al1
603 WHERE al1.ship_header_id = cfa.ship_header_id
604 AND al1.adjustment_num > 0
605 AND ROWNUM < 2
606 ) ;
607 l_debug_info := 'deleted '||sql%ROWCOUNT||' allocations rows ';
608 INL_LOGGING_PVT.Log_Statement (
609 p_module_name => g_module_name,
610 p_procedure_name => l_program_name,
611 p_debug_info => l_debug_info
612 ) ;
613 EXCEPTION
614 WHEN L_FND_EXC_ERROR THEN
615 x_return_status := L_FND_RET_STS_ERROR;
616 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
617 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
618 WHEN OTHERS THEN
619 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
620 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
621 FND_MSG_PUB.Add_Exc_Msg (
622 p_pkg_name => g_pkg_name,
623 p_procedure_name => l_program_name) ;
624 END IF;
625 END Delete_Allocations;
626
627 -- API name : Set_ToRevalidate
628 -- Type : Private
629 -- Function : Set a given LCM Shipment to "Validation Required" status.
630 -- Pre-reqs : None
631 -- Parameters :
632 -- IN : p_api_version IN NUMBER Required
633 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
634 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
635 -- p_ship_header_id IN NUMBER Required
636 -- OUT x_msg_count OUT NOCOPY NUMBER
637 -- x_msg_data OUT NOCOPY VARCHAR2
638 -- x_return_status OUT NOCOPY VARCHAR2
639 --
640 -- Version : Current version 1.0
641 --
642 -- Notes :
643 PROCEDURE Set_ToRevalidate(
644 p_api_version IN NUMBER,
645 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
646 p_commit IN VARCHAR2 := L_FND_FALSE,
647 p_ship_header_id IN NUMBER,
648 x_msg_count OUT NOCOPY NUMBER,
649 x_msg_data OUT NOCOPY VARCHAR2,
650 x_return_status OUT NOCOPY VARCHAR2
651 ) IS
652 l_ship_status VARCHAR2 (30) ;
653 l_api_name CONSTANT VARCHAR2 (100) := 'Set_ToRevalidate';
654 l_api_version CONSTANT NUMBER := 1.0;
655 l_exist_event VARCHAR2 (5) ;
656 l_msg_data VARCHAR2 (200) ;
657 l_msg_count NUMBER;
658 l_return_status VARCHAR2 (1) ;
659 l_exist_status NUMBER := 0;
660 l_exist_calc NUMBER := 0;
661 l_debug_info VARCHAR2 (200) ;
662 BEGIN
663 INL_LOGGING_PVT.Log_BeginProc (
664 p_module_name => g_module_name,
665 p_procedure_name => l_api_name) ;
666 -- Standard Start of API savepoint
667 SAVEPOINT Set_ToRevalidate_PVT;
668 -- Initialize message list if p_init_msg_list is set to TRUE.
669 IF FND_API.to_Boolean (p_init_msg_list) THEN
670 FND_MSG_PUB.initialize;
671 END IF;
672 -- Check for call compatibility.
673 IF NOT FND_API.Compatible_API_Call (
674 p_current_version_number => l_api_version,
675 p_caller_version_number => p_api_version,
676 p_api_name => l_api_name,
677 p_pkg_name => G_PKG_NAME
678 ) THEN
679 RAISE L_FND_EXC_UNEXPECTED_ERROR;
680 END IF;
681 -- Initialize API return status to success
682 x_return_status := L_FND_RET_STS_SUCCESS;
683 SELECT sh.ship_status_code
684 INTO l_ship_status
685 FROM inl_ship_headers sh
686 WHERE sh.ship_header_id = p_ship_header_id;
687 INL_LOGGING_PVT.Log_Variable (
688 p_module_name => g_module_name,
689 p_procedure_name => l_api_name,
690 p_var_name => 'current Shipment status',
691 p_var_value => l_ship_status
692 ) ;
693 IF (l_ship_status = 'VALIDATED' OR l_ship_status = 'ON HOLD') THEN
694 Delete_Allocations (p_ship_header_id, l_return_status) ;
695 -- If any errors happen abort API.
696 IF l_return_status = L_FND_RET_STS_ERROR THEN
697 RAISE L_FND_EXC_ERROR;
698 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
699 RAISE L_FND_EXC_UNEXPECTED_ERROR;
700 END IF;
701 -- Update Shipment status to VALIDATION REQ
702 UPDATE inl_ship_headers
703 SET ship_status_code = 'VALIDATION REQ'
704 WHERE ship_header_id = p_ship_header_id;
705 END IF;
706 -- Standard check of p_commit.
707 IF FND_API.To_Boolean (p_commit) THEN
708 COMMIT WORK;
709 END IF;
710 -- Standard call to get message count and if count is 1, get message info.
711 FND_MSG_PUB.Count_And_Get (
712 p_encoded => L_FND_FALSE,
713 p_count => x_msg_count,
714 p_data => x_msg_data
715 ) ;
716 INL_LOGGING_PVT.Log_EndProc (
717 p_module_name => g_module_name,
718 p_procedure_name => l_api_name) ;
719 EXCEPTION
720 WHEN L_FND_EXC_ERROR THEN
721 l_debug_info := 'MSG: '||SQLERRM;
722 INL_LOGGING_PVT.Log_Statement (
723 p_module_name => g_module_name,
724 p_procedure_name => l_api_name,
725 p_debug_info => l_debug_info
726 ) ;
727 INL_LOGGING_PVT.Log_ExpecError (
728 p_module_name => g_module_name,
729 p_procedure_name => l_api_name) ;
730 ROLLBACK TO Set_ToRevalidate_PVT;
731 x_return_status := L_FND_RET_STS_ERROR;
732 FND_MSG_PUB.Count_And_Get (
733 p_encoded => L_FND_FALSE,
734 p_count => x_msg_count,
735 p_data => x_msg_data) ;
736 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
737 l_debug_info := 'MSG: '||SQLERRM;
738 INL_LOGGING_PVT.Log_Statement (
739 p_module_name => g_module_name,
740 p_procedure_name => l_api_name,
741 p_debug_info => l_debug_info
742 ) ;
743 INL_LOGGING_PVT.Log_UnexpecError (
744 p_module_name => g_module_name,
745 p_procedure_name => l_api_name) ;
746 ROLLBACK TO Set_ToRevalidate_PVT;
747 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
748 FND_MSG_PUB.Count_And_Get (
749 p_encoded => L_FND_FALSE,
750 p_count => x_msg_count,
751 p_data => x_msg_data) ;
752 WHEN OTHERS THEN
753 l_debug_info := 'MSG: '||SQLERRM;
754 INL_LOGGING_PVT.Log_Statement (
755 p_module_name => g_module_name,
756 p_procedure_name => l_api_name,
757 p_debug_info => l_debug_info
758 ) ;
759 INL_LOGGING_PVT.Log_UnexpecError (
760 p_module_name => g_module_name,
761 p_procedure_name => l_api_name) ;
762 ROLLBACK TO Set_ToRevalidate_PVT;
763 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
764 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
765 FND_MSG_PUB.Add_Exc_Msg (
766 p_pkg_name => g_pkg_name,
767 p_procedure_name => l_api_name) ;
768 END IF;
769 FND_MSG_PUB.Count_And_Get (
770 p_encoded => L_FND_FALSE,
771 p_count => x_msg_count,
772 p_data => x_msg_data) ;
773 END Set_ToRevalidate;
774
775 -- Utility name : Has_ShipLine
776 -- Type : Private
777 -- Function : Checks if an LCM Shipment contains Shipment Lines
778 -- Pre-reqs : None
779 -- Parameters :
780 -- IN : p_ship_header_id IN NUMBER
781 --
782 -- OUT : x_group_line_num IN OUT NOCOPY NUMBER
783 -- Version : Current version 1.0
784 --
785 -- Notes :
786 FUNCTION Has_ShipLine(
787 p_ship_header_id IN NUMBER,
788 x_group_line_num IN OUT NOCOPY NUMBER -- Bug 12630218
789 ) RETURN BOOLEAN IS
790 l_program_name CONSTANT VARCHAR2 (30) := 'Has_ShipLine';
791 count_ship_line NUMBER;
792 l_debug_info VARCHAR2 (200);
793 l_count_group_no_line NUMBER := 0;
794
795 -- Bug 12630218
796 CURSOR c_group_lines IS
797 SELECT slg.ship_line_group_id, slg.ship_line_group_num, COUNT(ol.ship_line_id) count_ship_line
798 FROM inl_ship_line_groups slg,
799 inl_adj_ship_lines_v ol
800 WHERE ol.ship_header_id (+) = slg.ship_header_id
801 AND ol.ship_line_group_id (+) = slg.ship_line_group_id
802 AND slg.ship_header_id = p_ship_header_id
803 GROUP BY slg.ship_line_group_id, slg.ship_line_group_num
804 ORDER BY slg.ship_line_group_id;
805
806 TYPE group_lines_type IS TABLE OF c_group_lines%ROWTYPE;
807 c_group_lines_tl group_lines_type;
808 l_group_lines group_lines_type;
809
810 BEGIN
811 INL_LOGGING_PVT.Log_BeginProc (
812 p_module_name => g_module_name,
813 p_procedure_name => l_program_name) ;
814
815 -- Logging variables
816 INL_LOGGING_PVT.Log_Variable (
817 p_module_name => g_module_name,
818 p_procedure_name => l_program_name,
819 p_var_name => 'p_ship_header_id',
820 p_var_value => p_ship_header_id);
821
822 OPEN c_group_lines;
823 FETCH c_group_lines BULK COLLECT INTO c_group_lines_tl;
824 CLOSE c_group_lines;
825
826 -- Logging variables
827 INL_LOGGING_PVT.Log_Variable (
828 p_module_name => g_module_name,
829 p_procedure_name => l_program_name,
830 p_var_name => 'NVL(c_group_lines_tl.LAST, 0)',
831 p_var_value => NVL(c_group_lines_tl.LAST, 0));
832
833 IF NVL(c_group_lines_tl.LAST, 0) = 0 THEN
834 RETURN FALSE;
835 ELSE
836 FOR i IN NVL (c_group_lines_tl.FIRST, 0) ..NVL (c_group_lines_tl.LAST, 0)
837 LOOP
838 -- Logging variables
839 INL_LOGGING_PVT.Log_Variable (
840 p_module_name => g_module_name,
841 p_procedure_name => l_program_name,
842 p_var_name => 'c_group_lines_tl.count_ship_line(' || i || ')',
843 p_var_value => c_group_lines_tl(i).count_ship_line);
844
845 -- Group without Line
846 IF NVL (c_group_lines_tl(i).count_ship_line, 0) <= 0 THEN
847 l_count_group_no_line := 1;
848 x_group_line_num := c_group_lines_tl(i).ship_line_group_num;
849 EXIT WHEN l_count_group_no_line = 1;
850 END IF;
851 END LOOP;
852 END IF;
853
854 INL_LOGGING_PVT.Log_EndProc (
855 p_module_name => g_module_name,
856 p_procedure_name => l_program_name) ;
857
858 IF NVL (l_count_group_no_line, 0) <> 0 THEN
859 RETURN FALSE;
860 ELSE
861 RETURN TRUE;
862 END IF;
863 END Has_ShipLine;
864
865 -- Utl name : Get_ShipHeadNum
866 -- Type : Private
867 -- Function : Get Shipment Number
868 -- Pre-reqs : None
869 -- Parameters :
870 -- IN : p_ship_header_id IN NUMBER
871 --
872 -- Version : Current version 1.0
873 --
874 -- Notes :
875 FUNCTION Get_ShipHeadNum(
876 p_ship_header_id IN NUMBER
877 ) RETURN VARCHAR2 IS
878 l_program_name CONSTANT VARCHAR2 (30) := 'Get_ShipHeadNum';
879 l_ship_header_num VARCHAR2 (25) ;
880 l_debug_info VARCHAR2 (200) ;
881 BEGIN
882 INL_LOGGING_PVT.Log_BeginProc (
883 p_module_name => g_module_name,
884 p_procedure_name => l_program_name) ;
885 BEGIN
886 SELECT ship_num
887 INTO l_ship_header_num
888 FROM inl_ship_headers
889 WHERE ship_header_id = p_ship_header_id;
890 EXCEPTION
891 WHEN NO_DATA_FOUND THEN
892 RETURN '';
893 END;
894 INL_LOGGING_PVT.Log_EndProc (
895 p_module_name => g_module_name,
896 p_procedure_name => l_program_name) ;
897 RETURN l_ship_header_num;
898 END Get_ShipHeadNum;
899
900 -- Utl name : Get_ShipLineNum
901 -- Type : Private
902 -- Function : Get Shipment Line Number
903 -- Pre-reqs : None
904 -- Parameters :
905 -- IN : p_ship_line_id IN NUMBER
906 --
907 -- Version : Current version 1.0
908 --
909 -- Notes :
910 FUNCTION Get_ShipLineNum(
911 p_ship_line_id IN NUMBER
912 ) RETURN VARCHAR2 IS
913 l_program_name CONSTANT VARCHAR2 (30) := 'Get_ShipLineNum';
914 l_ship_line_num VARCHAR2 (25) ;
915 l_debug_info VARCHAR2 (200) ;
916 BEGIN
917 INL_LOGGING_PVT.Log_BeginProc (
918 p_module_name => g_module_name,
919 p_procedure_name => l_program_name) ;
920 BEGIN
921 SELECT ship_line_num
922 INTO l_ship_line_num
923 FROM inl_adj_ship_lines_v
924 WHERE NVL (parent_ship_line_id, ship_line_id) = p_ship_line_id;
925 EXCEPTION
926 WHEN NO_DATA_FOUND THEN
927 RETURN '';
928 END;
929 INL_LOGGING_PVT.Log_EndProc (
930 p_module_name => g_module_name,
931 p_procedure_name => l_program_name) ;
932 RETURN TO_CHAR (l_ship_line_num) ;
933 END Get_ShipLineNum;
934 -- API name : Get_AvailableQty
935 -- Type : Private
936 -- Function : Encapsulate the logic to call RCV routines and return the Available and Tolerable quantities.
937 -- Pre-reqs : None
938 -- Parameters :
939 -- IN : p_api_version IN NUMBER Required
940 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
941 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
942 -- p_ship_line_src_code IN VARCHAR2
943 -- p_parent_id IN NUMBER
944 -- p_available_quantity IN OUT NOCOPY NUMBER
945 -- p_tolerable_quantity IN OUT NOCOPY NUMBER
946 -- p_unit_of_measure IN OUT NOCOPY VARCHAR2
947 -- OUT x_return_status OUT NOCOPY VARCHAR2
948 -- x_msg_count OUT NOCOPY NUMBER
949 -- x_msg_data OUT NOCOPY VARCHAR2
950 --
951 -- Version : Current version 1.0
952 --
953 -- Notes :
954 PROCEDURE Get_AvailableQty(
955 p_api_version IN NUMBER,
956 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
957 p_commit IN VARCHAR2 := L_FND_FALSE,
958 p_ship_line_src_code IN VARCHAR2,
959 p_parent_id IN NUMBER,
960 p_available_quantity IN OUT NOCOPY NUMBER,
961 p_tolerable_quantity IN OUT NOCOPY NUMBER,
962 p_unit_of_measure IN OUT NOCOPY VARCHAR2,
963 x_return_status OUT NOCOPY VARCHAR2,
964 x_msg_count OUT NOCOPY NUMBER,
965 x_msg_data OUT NOCOPY VARCHAR2)
966 IS
967 CURSOR c_rcv_shipmt_lines IS
968 SELECT rsl.shipment_line_id,
969 rsl.item_id,
970 pll.unit_meas_lookup_code
971 FROM rcv_shipment_lines rsl,
972 po_line_locations_all pll
973 WHERE rsl.lcm_shipment_line_id IS NOT NULL
974 AND pll.line_location_id = rsl.po_line_location_id
975 AND rsl.po_line_location_id = p_parent_id
976 AND NOT EXISTS(SELECT 1
977 FROM rcv_transactions_interface rti,
978 rcv_transactions rt
979 WHERE rti.shipment_line_id (+) = rt.shipment_line_id -- Bug #8235573
980 AND rsl.shipment_line_id = rt.shipment_line_id);
981
982 l_rcv_shipmt_lines c_rcv_shipmt_lines%ROWTYPE;
983 l_api_name CONSTANT VARCHAR2(30) := 'Get_AvailableQty';
984 l_api_version CONSTANT NUMBER := 1.0;
985 l_return_status VARCHAR2(1) ;
986 l_msg_count NUMBER;
987 l_msg_data VARCHAR2(2000);
988 l_debug_info VARCHAR2(200);
989 l_transaction_type VARCHAR2(100);
990 l_receipt_source_code VARCHAR2(100);
991 l_quantity_rsl NUMBER;
992 l_tolerable_quantity_rsl NUMBER;
993 l_secondary_available_qty_rsl NUMBER;
994 l_unit_of_measure_rsl VARCHAR2(30);
995 l_converted_qty_rsl NUMBER;
996 l_total_quantity_rsl NUMBER := 0;
997 BEGIN
998 -- Standard Beginning of Procedure/Function Logging
999 INL_LOGGING_PVT.Log_BeginProc (
1000 p_module_name => g_module_name,
1001 p_procedure_name => l_api_name) ;
1002 -- Initialize message list if p_init_msg_list is set to TRUE.
1003 IF FND_API.to_Boolean (p_init_msg_list) THEN
1004 FND_MSG_PUB.initialize;
1005 END IF;
1006 -- Check for call compatibility.
1007 IF NOT
1008 FND_API.Compatible_API_Call (
1009 l_api_version,
1010 p_api_version,
1011 l_api_name,
1012 G_PKG_NAME)
1013 THEN
1014 RAISE L_FND_EXC_UNEXPECTED_ERROR;
1015 END IF;
1016 -- Initialize API return status to success
1017 x_return_status := L_FND_RET_STS_SUCCESS;
1018 -- Define the transaction type and receipt source code
1019 -- based the current Shipment Line Source Code.
1020 IF p_ship_line_src_code = 'PO' THEN
1021 l_transaction_type := 'RECEIVE';
1022 l_receipt_source_code := 'VENDOR';
1023 ELSIF p_ship_line_src_code = 'IR' THEN
1024 l_transaction_type := 'RECEIVE';
1025 l_receipt_source_code := 'INTERNAL ORDER';
1026 ELSIF p_ship_line_src_code = 'RMA' THEN
1027 l_transaction_type := 'RECEIVE';
1028 l_receipt_source_code := 'CUSTOMER';
1029 END IF;
1030 -- Logging variables
1031 INL_LOGGING_PVT.Log_Variable (
1032 p_module_name => g_module_name,
1033 p_procedure_name => l_api_name,
1034 p_var_name => 'l_transaction_type',
1035 p_var_value => l_transaction_type) ;
1036 INL_LOGGING_PVT.Log_Variable (
1037 p_module_name => g_module_name,
1038 p_procedure_name => l_api_name,
1039 p_var_name => 'l_receipt_source_code',
1040 p_var_value => l_receipt_source_code) ;
1041 l_debug_info := 'Call RCV_QUANTITIES_S.get_available_quantity - PLL';
1042 INL_LOGGING_PVT.Log_Statement (
1043 p_module_name => g_module_name,
1044 p_procedure_name => l_api_name,
1045 p_debug_info => l_debug_info);
1046 -- This call will return the available qty not considering qty on RSL.
1047 RCV_QUANTITIES_S.get_available_quantity (
1048 p_transaction_type => l_transaction_type,
1049 p_parent_id => p_parent_id,
1050 p_receipt_source_code => l_receipt_source_code,
1051 p_parent_transaction_type => NULL,
1052 p_grand_parent_id => NULL,
1053 p_correction_type => NULL,
1054 p_available_quantity => p_available_quantity,
1055 p_tolerable_quantity => p_tolerable_quantity,
1056 p_unit_of_measure => p_unit_of_measure);
1057 -- Logging variables
1058 INL_LOGGING_PVT.Log_Variable (
1059 p_module_name => g_module_name,
1060 p_procedure_name => l_api_name,
1061 p_var_name => 'p_available_quantity',
1062 p_var_value => p_available_quantity);
1063 INL_LOGGING_PVT.Log_Variable (
1064 p_module_name => g_module_name,
1065 p_procedure_name => l_api_name,
1066 p_var_name => 'p_tolerable_quantity',
1067 p_var_value => p_tolerable_quantity);
1068 -- Iterate through all RCV Shipment Lines based on a given PLL.
1069 FOR l_rcv_shipmt_lines IN c_rcv_shipmt_lines
1070 LOOP
1071 l_debug_info := 'Call RCV_QUANTITIES_S.get_available_quantity - RSL';
1072 INL_LOGGING_PVT.Log_Statement (
1073 p_module_name => g_module_name,
1074 p_procedure_name => l_api_name,
1075 p_debug_info => l_debug_info);
1076 -- This call will return the quantity on RSL that should be deducted from the available quantity.
1077 RCV_QUANTITIES_S.get_available_quantity(
1078 p_transaction_type => 'RECEIVE',
1079 p_parent_id => l_rcv_shipmt_lines.shipment_line_id,
1080 p_receipt_source_code => 'INVENTORY',
1081 p_parent_transaction_type => NULL,
1082 p_grand_parent_id => NULL,
1083 p_correction_type => NULL,
1084 p_available_quantity => l_quantity_rsl,
1085 p_tolerable_quantity => l_tolerable_quantity_rsl,
1086 p_unit_of_measure => l_unit_of_measure_rsl,
1087 p_secondary_available_qty => l_secondary_available_qty_rsl);
1088 -- Necessary convertion so that the available quantity can be calculated in the PO UOM.
1089 PO_UOM_S.uom_convert(
1090 l_quantity_rsl,
1091 l_unit_of_measure_rsl,
1092 l_rcv_shipmt_lines.item_id,
1093 l_rcv_shipmt_lines.unit_meas_lookup_code,
1094 l_converted_qty_rsl);
1095 l_total_quantity_rsl := l_total_quantity_rsl + NVL(l_converted_qty_rsl,0);
1096 END LOOP;
1097 -- Deduct from the current available qty the converted qty from RSL
1098 p_available_quantity := NVL(p_available_quantity,0) - l_total_quantity_rsl;
1099 -- Deduct from the current tolerance the converted qty from RSL
1100 p_tolerable_quantity := NVL(p_tolerable_quantity,0) - l_total_quantity_rsl;
1101 -- Just to prevent negative if this shipment has been over received. In this
1102 -- case, the available/tolerable quantities that needs to be passed back should be 0.
1103 IF p_available_quantity < 0 THEN
1104 p_available_quantity := 0;
1105 END IF;
1106 IF p_tolerable_quantity < 0 THEN
1107 p_tolerable_quantity := 0;
1108 END IF;
1109 INL_LOGGING_PVT.Log_Variable (
1110 p_module_name => g_module_name,
1111 p_procedure_name => l_api_name,
1112 p_var_name => 'p_available_quantity',
1113 p_var_value => p_available_quantity);
1114 INL_LOGGING_PVT.Log_Variable (
1115 p_module_name => g_module_name,
1116 p_procedure_name => l_api_name,
1117 p_var_name => 'p_tolerable_quantity',
1118 p_var_value => p_tolerable_quantity);
1119 INL_LOGGING_PVT.Log_Variable (
1120 p_module_name => g_module_name,
1121 p_procedure_name => l_api_name,
1122 p_var_name => 'p_unit_of_measure',
1123 p_var_value => p_unit_of_measure) ;
1124 -- Standard check of p_commit.
1125 IF FND_API.To_Boolean (p_commit) THEN
1126 COMMIT WORK;
1127 END IF;
1128 -- Standard call to get message count and if count is 1, get message info.
1129 FND_MSG_PUB.Count_And_Get (
1130 p_encoded => L_FND_FALSE,
1131 p_count => x_msg_count,
1132 p_data => x_msg_data) ;
1133 -- Standard End of Procedure/Function Logging
1134 INL_LOGGING_PVT.Log_EndProc (
1135 p_module_name => g_module_name,
1136 p_procedure_name => l_api_name) ;
1137 EXCEPTION
1138 WHEN L_FND_EXC_ERROR THEN
1139 -- Standard Expected Error Logging
1140 INL_LOGGING_PVT.Log_ExpecError (
1141 p_module_name => g_module_name,
1142 p_procedure_name => l_api_name) ;
1143 x_return_status := L_FND_RET_STS_ERROR;
1144 FND_MSG_PUB.Count_And_Get (
1145 p_encoded => L_FND_FALSE,
1146 p_count => x_msg_count,
1147 p_data => x_msg_data) ;
1148 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
1149 -- Standard Unexpected Error Logging
1150 INL_LOGGING_PVT.Log_UnexpecError (
1151 p_module_name => g_module_name,
1152 p_procedure_name => l_api_name) ;
1153 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
1154 FND_MSG_PUB.Count_And_Get (
1155 p_encoded => L_FND_FALSE,
1156 p_count => x_msg_count,
1157 p_data => x_msg_data) ;
1158 WHEN OTHERS THEN
1159 -- Standard Unexpected Error Logging
1160 INL_LOGGING_PVT.Log_UnexpecError (
1161 p_module_name => g_module_name,
1162 p_procedure_name => l_api_name) ;
1163 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
1164 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1165 FND_MSG_PUB.Add_Exc_Msg (
1166 p_pkg_name => g_pkg_name,
1167 p_procedure_name => l_api_name) ;
1168 END IF;
1169 FND_MSG_PUB.Count_And_Get (
1170 p_encoded => L_FND_FALSE,
1171 p_count => x_msg_count,
1172 p_data => x_msg_data) ;
1173 END Get_AvailableQty;
1174 -- Utility name : Check_AvailableQty
1175 -- Type : Private
1176 -- Function : Check whether Shipment Line Qty is compliant with the PO available Qty
1177 -- Pre-reqs : None
1178 -- Parameters :
1179 -- IN : p_primary_qty IN NUMBER
1180 -- p_sum_primary_qty IN NUMBER
1181 -- p_primary_uom_code IN VARCHAR2
1182 -- p_txn_uom_code IN VARCHAR2
1183 -- p_inventory_item_id IN NUMBER
1184 -- p_inv_org_id IN NUMBER
1185 -- p_ship_line_id IN NUMBER
1186 -- p_ship_line_num IN NUMBER
1187 -- p_ship_line_src_type_code IN VARCHAR2
1188 -- p_ship_line_src_id IN NUMBER
1189 -- p_same_shiph_id IN NUMBER
1190 -- p_ship_header_id IN NUMBER
1191 -- OUT x_return_status OUT NOCOPY VARCHAR2
1192 --
1193 -- Version : Current version 1.0
1194 --
1195 -- Notes :
1196 PROCEDURE Check_AvailableQty(
1197 p_primary_qty IN NUMBER,
1198 p_sum_primary_qty IN NUMBER,
1199 p_primary_uom_code IN VARCHAR2,
1200 p_txn_uom_code IN VARCHAR2,
1201 p_inventory_item_id IN NUMBER,
1202 p_inv_org_id IN NUMBER,
1203 p_ship_line_id IN NUMBER,
1204 p_ship_line_num IN NUMBER,
1205 p_ship_line_src_type_code IN VARCHAR2,
1206 p_ship_line_src_id IN NUMBER,
1207 p_same_shiph_id IN NUMBER,
1208 p_ship_header_id IN NUMBER,
1209 x_return_status OUT NOCOPY VARCHAR2
1210 ) IS
1211 l_program_name CONSTANT VARCHAR2(30) := 'Check_AvailableQty';
1212 l_msg VARCHAR2(2000);
1213 l_debug_info VARCHAR2(200);
1214 l_msg_count NUMBER;
1215 l_msg_data VARCHAR2 (2000);
1216 l_acpt_qty VARCHAR2(1);
1217 l_return_status VARCHAR2 (1);
1218 l_error_message_name VARCHAR2(200);
1219 l_shipln_duplicated BOOLEAN := FALSE;
1220 x_uom_code VARCHAR2(3);
1221 x_available_quantity NUMBER;
1222 x_tolerable_quantity NUMBER;
1223 x_unit_of_measure VARCHAR2(100);
1224 x_qty_in_others_ops NUMBER;
1225 l_txn_uom_tl VARCHAR2(30);
1226 l_txn_uom_code VARCHAR2(3);
1227 l_primary_uom_tl VARCHAR2(30);
1228 l_msg_tolerable_qty NUMBER;
1229 l_msg_uom_tl VARCHAR2(30);
1230 l_pre_receive VARCHAR2(1);
1231 l_ship_qty_validation_inf_tbl ship_qty_validation_inf_tbl;
1232 BEGIN
1233 -- Standard Beginning of Procedure/Function Logging
1234 INL_LOGGING_PVT.Log_BeginProc (
1235 p_module_name => g_module_name,
1236 p_procedure_name => l_program_name) ;
1237 -- Initialize API return status to success
1238 x_return_status := L_FND_RET_STS_SUCCESS;
1239 INL_LOGGING_PVT.Log_Variable (
1240 p_module_name => g_module_name,
1241 p_procedure_name => l_program_name,
1242 p_var_name => 'x_qty_in_others_ops',
1243 p_var_value => x_qty_in_others_ops) ;
1244
1245 INL_LOGGING_PVT.Log_Variable (
1246 p_module_name => g_module_name,
1247 p_procedure_name => l_program_name,
1248 p_var_name => 'p_primary_qty',
1249 p_var_value => p_primary_qty) ;
1250
1251 INL_LOGGING_PVT.Log_Variable (
1252 p_module_name => g_module_name,
1253 p_procedure_name => l_program_name,
1254 p_var_name => 'p_sum_primary_qty',
1255 p_var_value => p_sum_primary_qty) ;
1256
1257 INL_LOGGING_PVT.Log_Variable (
1258 p_module_name => g_module_name,
1259 p_procedure_name => l_program_name,
1260 p_var_name => 'p_primary_uom_code',
1261 p_var_value => p_primary_uom_code) ;
1262
1263 INL_LOGGING_PVT.Log_Variable (
1264 p_module_name => g_module_name,
1265 p_procedure_name => l_program_name,
1266 p_var_name => 'p_inventory_item_id',
1267 p_var_value => p_inventory_item_id) ;
1268
1269 INL_LOGGING_PVT.Log_Variable (
1270 p_module_name => g_module_name,
1271 p_procedure_name => l_program_name,
1272 p_var_name => 'p_inv_org_id',
1273 p_var_value => p_inv_org_id) ;
1274
1275 INL_LOGGING_PVT.Log_Variable (
1276 p_module_name => g_module_name,
1277 p_procedure_name => l_program_name,
1278 p_var_name => 'p_ship_line_id',
1279 p_var_value => p_ship_line_id) ;
1280
1281 INL_LOGGING_PVT.Log_Variable (
1282 p_module_name => g_module_name,
1283 p_procedure_name => l_program_name,
1284 p_var_name => 'p_ship_line_num',
1285 p_var_value => p_ship_line_num) ;
1286
1287 INL_LOGGING_PVT.Log_Variable (
1288 p_module_name => g_module_name,
1289 p_procedure_name => l_program_name,
1290 p_var_name => 'p_ship_line_src_type_code',
1291 p_var_value => p_ship_line_src_type_code) ;
1292
1293 INL_LOGGING_PVT.Log_Variable (
1294 p_module_name => g_module_name,
1295 p_procedure_name => l_program_name,
1296 p_var_name => 'p_ship_line_src_id',
1297 p_var_value => p_ship_line_src_id) ;
1298
1299 INL_LOGGING_PVT.Log_Variable (
1300 p_module_name => g_module_name,
1301 p_procedure_name => l_program_name,
1302 p_var_name => 'p_same_shiph_id',
1303 p_var_value => p_same_shiph_id) ;
1304
1305 INL_LOGGING_PVT.Log_Variable (
1306 p_module_name => g_module_name,
1307 p_procedure_name => l_program_name,
1308 p_var_name => 'p_ship_header_id',
1309 p_var_value => p_ship_header_id) ;
1310
1311
1312 -- Bug #9232187
1313 -- Just validate PO Available Qty for Pre-Receiving
1314 -- Organizations. In Blackbox, RCV handles this validation.
1315 SELECT pre_receive
1316 INTO l_pre_receive
1317 FROM rcv_parameters
1318 WHERE organization_id = p_inv_org_id;
1319
1320 IF (NVL(l_pre_receive, 'N') = 'N') THEN
1321 RETURN;
1322 END IF;
1323
1324 -- Check if primary qty is ZERO
1325 IF NVL (p_primary_qty, 0) = 0 THEN
1326 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_SHIP_LN_QTY_ZERO') ;
1327 FND_MESSAGE.SET_TOKEN ('SHIP_LINE_NUM', p_ship_line_num) ;
1328 FND_MSG_PUB.ADD;
1329 -- INCLUDE A LINE IN INL_SHIP_HOLdS
1330 Handle_ShipError (
1331 p_ship_header_id => p_ship_header_id,
1332 p_ship_line_id => p_ship_line_id,
1333 p_charge_line_id => NULL,
1334 p_table_name => 'INL_SHIP_LINES',
1335 p_column_name => 'PRIMARY_QTY',
1336 p_column_value => 0,
1337 p_error_message => SUBSTR (FND_MSG_PUB.Get(
1338 p_msg_index => FND_MSG_PUB.Count_Msg (),
1339 p_encoded => L_FND_FALSE), 1, 2000
1340 ),
1341 p_error_message_name => 'INL_ERR_CHK_SHIP_LN_QTY_ZERO',
1342 p_token1_name => 'SHIP_LINE_NUM',
1343 p_token1_value => p_ship_line_num,
1344 p_token2_name => NULL,
1345 p_token2_value => NULL,
1346 p_token3_name => NULL,
1347 p_token3_value => NULL,
1348 p_token4_name => NULL,
1349 p_token4_value => NULL,
1350 p_token5_name => NULL,
1351 p_token5_value => NULL,
1352 p_token6_name => NULL,
1353 p_token6_value => NULL,
1354 x_return_status => l_return_status) ;
1355 -- If unexpected errors happen abort
1356 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
1357 RAISE L_FND_EXC_UNEXPECTED_ERROR;
1358 END IF;
1359 ELSE
1360 l_debug_info := 'INL_SHIPMENT_PVT.Get_AvailableQty';
1361 INL_LOGGING_PVT.Log_Statement (
1362 p_module_name => g_module_name,
1363 p_procedure_name => l_program_name,
1364 p_debug_info => l_debug_info ) ;
1365 -- Get the PO Avaliable and Tolerable Quantities
1366 INL_SHIPMENT_PVT.Get_AvailableQty(
1367 p_api_version => 1.0,
1368 p_init_msg_list => L_FND_FALSE,
1369 p_commit => L_FND_FALSE,
1370 p_ship_line_src_code => p_ship_line_src_type_code,
1371 p_parent_id => p_ship_line_src_id,
1372 p_available_quantity => x_available_quantity,
1373 p_tolerable_quantity => x_tolerable_quantity,
1374 p_unit_of_measure => x_unit_of_measure,
1375 x_return_status => l_return_status,
1376 x_msg_count => l_msg_count,
1377 x_msg_data => l_msg_data);
1378 INL_LOGGING_PVT.Log_Variable (
1379 p_module_name => g_module_name,
1380 p_procedure_name => l_program_name,
1381 p_var_name => 'x_available_quantity',
1382 p_var_value => x_available_quantity);
1383
1384 INL_LOGGING_PVT.Log_Variable (
1385 p_module_name => g_module_name,
1386 p_procedure_name => l_program_name,
1387 p_var_name => 'x_tolerable_quantity',
1388 p_var_value => x_tolerable_quantity);
1389
1390 INL_LOGGING_PVT.Log_Variable (
1391 p_module_name => g_module_name,
1392 p_procedure_name => l_program_name,
1393 p_var_name => 'x_unit_of_measure',
1394 p_var_value => x_unit_of_measure);
1395 -- Get the UOM Code
1396 SELECT uom_code
1397 INTO x_uom_code
1398 FROM mtl_units_of_measure
1399 WHERE unit_of_measure = x_unit_of_measure;
1400 INL_LOGGING_PVT.Log_Variable (
1401 p_module_name => g_module_name,
1402 p_procedure_name => l_program_name,
1403 p_var_name => 'x_uom_code',
1404 p_var_value => x_uom_code) ;
1405
1406 INL_LOGGING_PVT.Log_Variable (
1407 p_module_name => g_module_name,
1408 p_procedure_name => l_program_name,
1409 p_var_name => 'p_primary_uom_code',
1410 p_var_value => p_primary_uom_code
1411 ) ;
1412 l_debug_info := 'If necessary, it converts the qty (INL_landedcost_pvt.Converted_Qty).';
1413 INL_LOGGING_PVT.Log_Statement (
1414 p_module_name => g_module_name,
1415 p_procedure_name => l_program_name,
1416 p_debug_info => l_debug_info ) ;
1417 -- Convert to Primary Qty when Unit of Measure is different
1418 IF x_uom_code <> p_primary_uom_code THEN
1419 x_available_quantity := INL_LANDEDCOST_PVT.converted_qty (
1420 p_organization_id => p_inv_org_id,
1421 p_inventory_item_id => p_inventory_item_id,
1422 p_qty => x_available_quantity,
1423 p_from_uom_code => x_uom_code,
1424 p_to_uom_code => p_primary_uom_code);
1425 x_tolerable_quantity := INL_LANDEDCOST_PVT.converted_qty (
1426 p_organization_id => p_inv_org_id,
1427 p_inventory_item_id => p_inventory_item_id,
1428 p_qty => x_tolerable_quantity,
1429 p_from_uom_code => x_uom_code,
1430 p_to_uom_code => p_primary_uom_code);
1431 END IF;
1432 -- Get the transaction UOM description. This will be used to show the
1433 -- validation error message in the transaction uom instead of the primary uom.
1434 SELECT mum.unit_of_measure_tl
1435 INTO l_txn_uom_tl
1436 FROM mtl_units_of_measure_vl mum
1437 WHERE mum.uom_code = p_txn_uom_code;
1438 -- Since Primary and Transaction UOM are different, convert to Transaction UOM.
1439 IF p_txn_uom_code <> p_primary_uom_code THEN
1440 l_msg_tolerable_qty := INL_LANDEDCOST_PVT.converted_qty (
1441 p_organization_id => p_inv_org_id,
1442 p_inventory_item_id => p_inventory_item_id,
1443 p_qty => x_tolerable_quantity,
1444 p_from_uom_code => x_uom_code,
1445 p_to_uom_code => p_txn_uom_code);
1446 l_msg_uom_tl := l_txn_uom_tl;
1447 -- Otherwise keep the same value that comes from Primary UOM.
1448 ELSE
1449 -- Get the Primary Unit of Measure Description
1450 SELECT unit_of_measure_tl
1451 INTO l_primary_uom_tl
1452 FROM mtl_units_of_measure_vl
1453 WHERE uom_code = p_primary_uom_code;
1454 l_msg_tolerable_qty := x_tolerable_quantity;
1455 l_msg_uom_tl := l_primary_uom_tl;
1456 END IF;
1457 -- Validate the transaction primary qty with the tolerable qty
1458 IF p_primary_qty > x_tolerable_quantity OR p_sum_primary_qty > x_tolerable_quantity THEN
1459 l_acpt_qty := 'N';
1460 -- Check if the validation message should be handled as
1461 -- a duplicated (two or more lines with the same Line
1462 -- Location Id) or as a single Shipment Line
1463 IF (p_sum_primary_qty > p_primary_qty) THEN
1464 l_shipln_duplicated := TRUE;
1465 END IF;
1466 -- In Receiving (RCV_QUANTITIES_S) the rcv_exception_code is checked FOR POs only.
1467 IF p_ship_line_src_type_code = 'PO' THEN
1468 l_debug_info := 'Verify in po_line_locations_all the Over-Receipt Quantity Control Action';
1469 INL_LOGGING_PVT.Log_Statement (
1470 p_module_name => g_module_name,
1471 p_procedure_name => l_program_name,
1472 p_debug_info => l_debug_info) ;
1473
1474 SELECT DECODE (pll.qty_rcv_exception_code, 'NONE', 'Y', 'N')
1475 INTO l_acpt_qty
1476 FROM po_line_locations pll
1477 WHERE pll.line_location_id = p_ship_line_src_id;
1478 END IF;
1479 IF l_acpt_qty = 'N' THEN
1480 IF (l_shipln_duplicated = TRUE) THEN
1481 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_SHIP_LN_QTY_TOL_S') ;
1482 ELSE
1483 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_SHIP_LN_QTY_TOL') ;
1484 END IF;
1485 FND_MESSAGE.SET_TOKEN ('SHIP_LINE_NUM', p_ship_line_num) ;
1486 FND_MESSAGE.SET_TOKEN ('QTY', l_msg_tolerable_qty) ;
1487 FND_MESSAGE.SET_TOKEN ('UOM', l_msg_uom_tl) ;
1488 FND_MSG_PUB.ADD;
1489 -- INCLUDE A LINE IN INL_SHIP_HOLdS
1490 Handle_ShipError (
1491 p_ship_header_id => p_ship_header_id,
1492 p_ship_line_id => p_ship_line_id,
1493 p_charge_line_id => NULL,
1494 p_table_name => 'INL_SHIP_LINES',
1495 p_column_name => 'PRIMARY_QTY',
1496 p_column_value => p_primary_qty,
1497 p_error_message => SUBSTR (FND_MSG_PUB.Get (
1498 p_msg_index => FND_MSG_PUB.Count_Msg (),
1499 p_encoded => L_FND_FALSE), 1, 2000),
1500 p_error_message_name => l_error_message_name,
1501 p_token1_name => 'SHIP_LINE_NUM',
1502 p_token1_value => p_ship_line_num,
1503 p_token2_name => 'QTY',
1504 p_token2_value => l_msg_tolerable_qty,
1505 p_token3_name => 'UOM',
1506 p_token3_value => l_msg_uom_tl,
1507 p_token4_name => NULL,
1508 p_token4_value => NULL,
1509 p_token5_name => NULL,
1510 p_token5_value => NULL,
1511 p_token6_name => NULL,
1512 p_token6_value => NULL,
1513 x_return_status => l_return_status) ;
1514 -- If unexpected errors happen abort
1515 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
1516 RAISE L_FND_EXC_UNEXPECTED_ERROR;
1517 END IF;
1518 END IF;
1519 ELSE
1520 -- Search for other Shipment lines in Validated Shipments
1521 -- with receipts for the same receipt_source_code and src_id
1522 SELECT NVL (SUM (sl.primary_qty), 0)
1523 INTO x_qty_in_others_ops
1524 FROM inl_ship_headers sh,
1525 inl_adj_ship_lines_v sl
1526 WHERE sl.ship_header_id = sh.ship_header_id
1527 AND NVL (sl.parent_ship_line_id, sl.ship_line_id) <> p_ship_line_id
1528 AND
1529 (
1530 sh.ship_status_code = 'VALIDATED'
1531 OR sh.ship_header_id = NVL (p_same_shiph_id, 9999999999)
1532 )
1533 AND sh.rcv_enabled_flag = 'Y' -- Bug #8981485
1534 AND sl.ship_line_src_type_code = p_ship_line_src_type_code
1535 AND sl.ship_line_source_id = p_ship_line_src_id;
1536 INL_LOGGING_PVT.Log_Variable (
1537 p_module_name => g_module_name,
1538 p_procedure_name => l_program_name,
1539 p_var_name => 'x_qty_in_others_ops',
1540 p_var_value => x_qty_in_others_ops) ;
1541
1542 IF x_qty_in_others_ops + p_primary_qty > x_tolerable_quantity THEN
1543 l_debug_info := 'x_qty_in_others_ops + p_primary_qty > x_tolerable_quantity';
1544 INL_LOGGING_PVT.Log_Statement (
1545 p_module_name => g_module_name,
1546 p_procedure_name => l_program_name,
1547 p_debug_info => l_debug_info) ;
1548
1549 -- Start of Bug #9755545
1550 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_SHIP_LN_QTY_OTH_L');
1551 FND_MESSAGE.SET_TOKEN ('SHIP_LINE_NUM', p_ship_line_num);
1552 FND_MESSAGE.SET_TOKEN ('SRC_TYPE', p_ship_line_src_type_code);
1553 FND_MESSAGE.SET_TOKEN ('QTY', l_msg_tolerable_qty);
1554 FND_MESSAGE.SET_TOKEN ('UOM', l_msg_uom_tl);
1555 FND_MSG_PUB.ADD;
1556
1557 SELECT DISTINCT sh.ship_num,
1558 sl.ship_line_num
1559 BULK COLLECT INTO l_ship_qty_validation_inf_tbl
1560 FROM inl_ship_headers sh,
1561 inl_adj_ship_lines_v sl
1562 WHERE sl.ship_header_id = sh.ship_header_id
1563 AND NVL (sl.parent_ship_line_id, sl.ship_line_id) <> p_ship_line_id
1564 AND
1565 (
1566 sh.ship_status_code = 'VALIDATED'
1567 OR sh.ship_header_id = NVL (p_same_shiph_id, 9999999999)
1568 )
1569 AND sh.rcv_enabled_flag = 'Y' -- Bug 9735125
1570 AND sl.ship_line_src_type_code = p_ship_line_src_type_code
1571 AND sl. ship_line_source_id = p_ship_line_src_id
1572 ORDER BY sh.ship_num, sl.ship_line_num;
1573
1574 FOR i IN 1 .. l_ship_qty_validation_inf_tbl.COUNT LOOP
1575 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_SHIP_LN_QTY_INFO');
1576 FND_MESSAGE.SET_TOKEN ('SHIP_NUM', l_ship_qty_validation_inf_tbl(i).ship_num);
1577 FND_MESSAGE.SET_TOKEN ('SHIP_LINE_NUM', l_ship_qty_validation_inf_tbl(i).ship_line_num);
1578 FND_MSG_PUB.ADD;
1579 END LOOP;
1580 -- End of Bug #9755545
1581
1582 /*FOR c_ship_num IN
1583 (
1584 SELECT DISTINCT sh.ship_num
1585 FROM inl_ship_headers sh,
1586 inl_adj_ship_lines_v sl
1587 WHERE sl.ship_header_id = sh.ship_header_id
1588 AND NVL (sl.parent_ship_line_id, sl.ship_line_id) <> p_ship_line_id
1589 AND
1590 (
1591 sh.ship_status_code = 'VALIDATED'
1592 OR sh.ship_header_id = NVL (p_same_shiph_id, 9999999999)
1593 )
1594 AND sh.rcv_enabled_flag = 'Y' -- Bug 9735125
1595 AND sl.ship_line_src_type_code = p_ship_line_src_type_code
1596 AND sl. ship_line_source_id = p_ship_line_src_id
1597 ORDER BY sh.ship_num
1598 )
1599 LOOP
1600 l_msg := l_msg||c_ship_num.ship_num||', ';-- Bug 9735125
1601 exit when LENGTH(l_msg)>30;
1602 END LOOP;
1603 IF LENGTH(l_msg)>2 THEN
1604 l_msg := SUBSTR(l_msg,1,LENGTH(l_msg)-2);-- Bug 9735125
1605 END IF;
1606 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_SHIP_LN_QTY_OTH_L') ;
1607 FND_MESSAGE.SET_TOKEN ('SRC_TYPE', p_ship_line_src_type_code) ;
1608 FND_MESSAGE.SET_TOKEN ('QTY', l_msg_tolerable_qty) ;
1609 FND_MESSAGE.SET_TOKEN ('UOM', l_msg_uom_tl) ;
1610 FND_MESSAGE.SET_TOKEN ('SHIPHS', l_msg) ;--BUG#9735125
1611 FND_MSG_PUB.ADD;*/
1612
1613
1614
1615 --INCLUDE A LINE IN INL_SHIP_HOLdS
1616 Handle_ShipError (
1617 p_ship_header_id => p_ship_header_id,
1618 p_ship_line_id => p_ship_line_id,
1619 p_charge_line_id => NULL,
1620 p_table_name => 'INL_SHIP_LINES',
1621 p_column_name => NULL,
1622 p_column_value => NULL,
1623 p_error_message => SUBSTR (FND_MSG_PUB.Get (
1624 p_msg_index => FND_MSG_PUB.Count_Msg (),
1625 p_encoded => L_FND_FALSE), 1, 2000),
1626 p_error_message_name => 'INL_ERR_CHK_SHIP_LN_QTY_OTH_L',
1627 p_token1_name => 'SRC_TYPE',
1628 p_token1_value => p_ship_line_src_type_code,
1629 p_token2_name => 'QTY',
1630 p_token2_value => l_msg_tolerable_qty,
1631 p_token3_name => 'UOM',
1632 p_token3_value => l_msg_uom_tl,
1633 p_token4_name => 'SHIPHS',
1634 p_token4_value => l_msg, --BUG#9735125
1635 p_token5_name => NULL,
1636 p_token5_value => NULL,
1637 p_token6_name => NULL,
1638 p_token6_value => NULL,
1639 x_return_status => l_return_status) ;
1640 END IF;
1641 END IF;
1642 END IF;
1643 INL_LOGGING_PVT.Log_EndProc ( p_module_name => g_module_name,
1644 p_procedure_name => l_program_name) ;
1645 EXCEPTION
1646 WHEN L_FND_EXC_ERROR THEN
1647 x_return_status := L_FND_RET_STS_ERROR;
1648 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
1649 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
1650 WHEN OTHERS THEN
1651 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
1652 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1653 FND_MSG_PUB.Add_Exc_Msg (
1654 p_pkg_name => g_pkg_name,
1655 p_procedure_name => l_program_name) ;
1656 END IF;
1657 END Check_AvailableQty;
1658 -- Utility name : Check_PoPriceTolerance
1659 -- Type : Private
1660 -- Function : Check whether Shipment Line Price is compliant with the PO
1661 -- Price Tolerance defined in the INL Setup Options
1662 -- Pre-reqs : None
1663 -- Parameters :
1664 -- IN : p_ship_header_id IN NUMBER
1665 -- p_ship_line_id IN NUMBER,
1666 -- p_organization_id IN NUMBER,
1667 -- p_ship_line_num IN NUMBER,
1668 -- p_ship_line_src_id IN NUMBER,
1669 -- p_pri_unit_price IN NUMBER,
1670 -- p_primary_uom_code IN VARCHAR2,
1671 -- p_currency_code IN VARCHAR2,
1672 -- p_currency_conversion_type IN VARCHAR2,
1673 -- p_currency_conversion_date IN DATE,
1674 -- p_currency_conversion_rate IN NUMBER,
1675 -- x_return_status OUT NOCOPY VARCHAR2
1676 --
1677 -- OUT x_return_status OUT NOCOPY VARCHAR2
1678 --
1679 -- Version : Current version 1.0
1680 --
1681 -- Notes :
1682 PROCEDURE Check_PoPriceTolerance(
1683 p_ship_header_id IN NUMBER,
1684 p_ship_line_id IN NUMBER,
1685 p_organization_id IN NUMBER,
1686 p_ship_line_num IN NUMBER,
1687 p_ship_line_src_id IN NUMBER,
1688 p_pri_unit_price IN NUMBER,
1689 p_primary_uom_code IN VARCHAR2, --BUG#7670307
1690 p_currency_code IN VARCHAR2, --BUG#7670307
1691 p_currency_conversion_type IN VARCHAR2, --BUG#7670307
1692 p_currency_conversion_date IN DATE, --BUG#7670307
1693 p_currency_conversion_rate IN NUMBER, --BUG#7670307
1694 x_return_validation_status OUT NOCOPY VARCHAR2, -- SCM-051
1695 x_return_status OUT NOCOPY VARCHAR2
1696 ) IS
1697 l_program_name CONSTANT VARCHAR2(30) := 'Check_PoPriceTolerance';
1698 l_msg VARCHAR2(2000) ;
1699 l_debug_info VARCHAR2(200) ;
1700 l_return_status VARCHAR2(1) ;
1701 l_po_price_toler_perc NUMBER;
1702 l_actual_price_dif NUMBER;
1703 l_tolerable_dif NUMBER;
1704 l_po_unit_price NUMBER;
1705 -- l_amount NUMBER; -- Bug #11710754
1706 l_po_qty NUMBER;
1707 l_inventory_item_id NUMBER;
1708 l_po_currency_code VARCHAR2(15);
1709 l_po_currency_conversion_type VARCHAR2(30);
1710 l_po_currency_conversion_date DATE;
1711 l_po_currency_conversion_rate NUMBER;
1712 l_po_converted_price NUMBER;
1713 l_p_converted_PUP NUMBER;
1714 l_po_UOM_code VARCHAR2(30);
1715 BEGIN
1716 -- Standard Beginning of Procedure/Function Logging
1717 INL_LOGGING_PVT.Log_BeginProc (
1718 p_module_name => g_module_name,
1719 p_procedure_name => l_program_name) ;
1720 -- Initialize API return status variables
1721 x_return_status := L_FND_RET_STS_SUCCESS;
1722 x_return_validation_status := 'TRUE'; -- SCM-051
1723
1724 -- Get the Price Tolerance from INL Setup Options
1725 SELECT po_price_toler_perc
1726 INTO l_po_price_toler_perc
1727 FROM inl_parameters
1728 WHERE organization_id = p_organization_id;
1729 INL_LOGGING_PVT.Log_Variable (
1730 p_module_name => g_module_name,
1731 p_procedure_name => l_program_name,
1732 p_var_name => 'l_po_price_toler_perc',
1733 p_var_value => l_po_price_toler_perc
1734 ) ;
1735
1736 INL_LOGGING_PVT.Log_Variable (
1737 p_module_name => g_module_name,
1738 p_procedure_name => l_program_name,
1739 p_var_name => 'p_pri_unit_price',
1740 p_var_value => p_pri_unit_price
1741 ) ;
1742 INL_LOGGING_PVT.Log_Variable (
1743 p_module_name => g_module_name,
1744 p_procedure_name => l_program_name,
1745 p_var_name => 'p_primary_uom_code',
1746 p_var_value => p_primary_uom_code
1747 ) ;
1748 INL_LOGGING_PVT.Log_Variable (
1749 p_module_name => g_module_name,
1750 p_procedure_name => l_program_name,
1751 p_var_name => 'p_currency_code',
1752 p_var_value => p_currency_code
1753 ) ;
1754 INL_LOGGING_PVT.Log_Variable (
1755 p_module_name => g_module_name,
1756 p_procedure_name => l_program_name,
1757 p_var_name => 'p_currency_conversion_type',
1758 p_var_value => p_currency_conversion_type
1759 ) ;
1760 INL_LOGGING_PVT.Log_Variable (
1761 p_module_name => g_module_name,
1762 p_procedure_name => l_program_name,
1763 p_var_name => 'p_currency_conversion_date',
1764 p_var_value => p_currency_conversion_date
1765 ) ;
1766 INL_LOGGING_PVT.Log_Variable (
1767 p_module_name => g_module_name,
1768 p_procedure_name => l_program_name,
1769 p_var_name => 'p_currency_conversion_rate',
1770 p_var_value => p_currency_conversion_rate
1771 ) ;
1772 INL_LOGGING_PVT.Log_Variable (
1773 p_module_name => g_module_name,
1774 p_procedure_name => l_program_name,
1775 p_var_name => 'p_ship_header_id',
1776 p_var_value => p_ship_header_id
1777 ) ;
1778 INL_LOGGING_PVT.Log_Variable (
1779 p_module_name => g_module_name,
1780 p_procedure_name => l_program_name,
1781 p_var_name => 'p_ship_line_id',
1782 p_var_value => p_ship_line_id
1783 ) ;
1784 INL_LOGGING_PVT.Log_Variable (
1785 p_module_name => g_module_name,
1786 p_procedure_name => l_program_name,
1787 p_var_name => 'p_organization_id',
1788 p_var_value => p_organization_id
1789 ) ;
1790 INL_LOGGING_PVT.Log_Variable (
1791 p_module_name => g_module_name,
1792 p_procedure_name => l_program_name,
1793 p_var_name => 'p_ship_line_num',
1794 p_var_value => p_ship_line_num
1795 ) ;
1796 INL_LOGGING_PVT.Log_Variable (
1797 p_module_name => g_module_name,
1798 p_procedure_name => l_program_name,
1799 p_var_name => 'p_ship_line_src_id',
1800 p_var_value => p_ship_line_src_id
1801 ) ;
1802
1803 -- Get the PO Unit Price
1804 SELECT po.unit_price,
1805 po.currency_code, --BUG#7670307
1806 po.currency_conversion_type, --BUG#7670307
1807 po.currency_conversion_date, --BUG#7670307
1808 po.currency_conversion_rate, --BUG#7670307
1809 muom.uom_code, --BUG#7670307
1810 po.ordered_qty,
1811 po.item_id
1812 INTO l_po_unit_price,
1813 l_po_currency_code,
1814 l_po_currency_conversion_type,
1815 l_po_currency_conversion_date,
1816 l_po_currency_conversion_rate,
1817 l_po_UOM_code,
1818 l_po_qty,
1819 l_inventory_item_id
1820 FROM inl_enter_receipts_v po, -- BUG#8229331 (Pls see bug 9179775)
1821 mtl_units_of_measure muom
1822 WHERE po.po_line_location_id = p_ship_line_src_id
1823 AND muom.unit_of_measure (+) = po.ordered_uom;
1824 INL_LOGGING_PVT.Log_Variable (
1825 p_module_name => g_module_name,
1826 p_procedure_name => l_program_name,
1827 p_var_name => 'l_po_unit_price',
1828 p_var_value => l_po_unit_price
1829 ) ;
1830 INL_LOGGING_PVT.Log_Variable (
1831 p_module_name => g_module_name,
1832 p_procedure_name => l_program_name,
1833 p_var_name => 'l_po_currency_code',
1834 p_var_value => l_po_currency_code
1835 ) ;
1836 INL_LOGGING_PVT.Log_Variable (
1837 p_module_name => g_module_name,
1838 p_procedure_name => l_program_name,
1839 p_var_name => 'l_po_currency_conversion_type',
1840 p_var_value => l_po_currency_conversion_type
1841 ) ;
1842 INL_LOGGING_PVT.Log_Variable (
1843 p_module_name => g_module_name,
1844 p_procedure_name => l_program_name,
1845 p_var_name => 'l_po_currency_conversion_date',
1846 p_var_value => l_po_currency_conversion_date
1847 ) ;
1848 INL_LOGGING_PVT.Log_Variable (
1849 p_module_name => g_module_name,
1850 p_procedure_name => l_program_name,
1851 p_var_name => 'l_po_currency_conversion_rate',
1852 p_var_value => l_po_currency_conversion_rate
1853 ) ;
1854 INL_LOGGING_PVT.Log_Variable (
1855 p_module_name => g_module_name,
1856 p_procedure_name => l_program_name,
1857 p_var_name => 'l_po_UOM_code',
1858 p_var_value => l_po_UOM_code
1859 ) ;
1860 INL_LOGGING_PVT.Log_Variable (
1861 p_module_name => g_module_name,
1862 p_procedure_name => l_program_name,
1863 p_var_name => 'l_po_qty',
1864 p_var_value => l_po_qty
1865 ) ;
1866 INL_LOGGING_PVT.Log_Variable (
1867 p_module_name => g_module_name,
1868 p_procedure_name => l_program_name,
1869 p_var_name => 'l_inventory_item_id',
1870 p_var_value => l_inventory_item_id
1871 ) ;
1872
1873 l_debug_info := 'Verifying if currency conversion is required. PO: '||l_po_currency_code ||' Shipment: '||p_currency_code;
1874 INL_LOGGING_PVT.Log_Statement (
1875 p_module_name => g_module_name,
1876 p_procedure_name => l_program_name,
1877 p_debug_info => l_debug_info
1878 );
1879 IF l_po_currency_code = p_currency_code THEN --BUG#7670307
1880 l_po_converted_price := l_po_unit_price;
1881 l_p_converted_PUP := p_pri_unit_price;
1882 ELSE
1883 IF l_po_currency_conversion_rate IS NOT NULL THEN
1884 l_po_converted_price := l_po_unit_price * l_po_currency_conversion_rate;
1885 ELSE
1886 l_po_converted_price := l_po_unit_price;
1887 END IF;
1888 IF p_currency_conversion_rate IS NOT NULL THEN
1889 l_p_converted_PUP := p_pri_unit_price * p_currency_conversion_rate;
1890 ELSE
1891 l_p_converted_PUP := p_pri_unit_price;
1892 END IF;
1893 END IF;
1894 INL_LOGGING_PVT.Log_Variable (
1895 p_module_name => g_module_name,
1896 p_procedure_name => l_program_name,
1897 p_var_name => 'l_po_converted_price',
1898 p_var_value => l_po_converted_price
1899 ) ;
1900 INL_LOGGING_PVT.Log_Variable (
1901 p_module_name => g_module_name,
1902 p_procedure_name => l_program_name,
1903 p_var_name => 'l_p_converted_PUP',
1904 p_var_value => l_p_converted_PUP
1905 ) ;
1906
1907 l_debug_info := 'Verifying if UOM conversion is required. PO: '||l_po_UOM_code ||' Shipment: '||p_primary_uom_code;
1908 INL_LOGGING_PVT.Log_Statement (
1909 p_module_name => g_module_name,
1910 p_procedure_name => l_program_name,
1911 p_debug_info => l_debug_info
1912 );
1913 IF p_primary_uom_code <> l_po_UOM_code THEN --BUG#7670307
1914 -- Bug #11710754
1915 /*
1916 l_amount := l_po_converted_price * l_po_qty;
1917 l_po_qty := INL_LANDEDCOST_PVT.Converted_Qty(
1918 p_organization_id => p_organization_id,
1919 p_inventory_item_id => l_inventory_item_id,
1920 p_qty => l_po_qty,
1921 p_from_uom_code => l_po_UOM_code,
1922 P_to_uom_code => p_primary_uom_code
1923 );
1924 l_po_converted_price := l_amount / l_po_qty;
1925 */
1926
1927 l_po_converted_price := INL_LANDEDCOST_PVT.Converted_Price(
1928 p_unit_price => l_po_converted_price,
1929 p_organization_id => p_organization_id,
1930 p_inventory_item_id => l_inventory_item_id,
1931 p_from_uom_code => l_po_uom_code,
1932 p_to_uom_code => p_primary_uom_code);
1933
1934 -- /Bug #11710754
1935
1936 INL_LOGGING_PVT.Log_Variable (
1937 p_module_name => g_module_name,
1938 p_procedure_name => l_program_name,
1939 p_var_name => 'l_po_converted_price',
1940 p_var_value => l_po_converted_price
1941 ) ;
1942
1943 END IF;
1944 -- When there is no tolerance defined in
1945 -- INL Setup Options for the current Inventory
1946 -- Organization, the Shipment Line price is validated
1947 -- not to be greater than price defined in PO.
1948 IF l_po_price_toler_perc IS NULL THEN
1949 IF (l_p_converted_PUP > l_po_converted_price) THEN
1950 x_return_validation_status := 'FALSE'; -- SCM-051
1951 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_NOT_DEF_PO_PRICE_TOLER') ;
1952 FND_MESSAGE.SET_TOKEN ('SHIPLN_NUM', p_ship_line_num) ;
1953 FND_MSG_PUB.ADD;
1954 -- INCLUDE A LINE IN INL_SHIP_HOLdS
1955 Handle_ShipError (
1956 p_ship_header_id => p_ship_header_id,
1957 p_ship_line_id => p_ship_line_id,
1958 p_charge_line_id => NULL,
1959 p_table_name => 'INL_SHIP_LINES',
1960 p_column_name => 'PRIMARY_UNIT_PRICE',
1961 p_column_value => 0,
1962 p_error_message => SUBSTR (FND_MSG_PUB.Get (
1963 p_msg_index => FND_MSG_PUB.Count_Msg (),
1964 p_encoded => L_FND_FALSE), 1, 2000),
1965 p_error_message_name => 'INL_ERR_NOT_DEF_PO_PRICE_TOLER',
1966 p_token1_name => 'SHIPLN_NUM',
1967 p_token1_value => p_ship_line_num,
1968 p_token2_name => NULL,
1969 p_token2_value => NULL,
1970 p_token3_name => NULL,
1971 p_token3_value => NULL,
1972 p_token4_name => NULL,
1973 p_token4_value => NULL,
1974 p_token5_name => NULL,
1975 p_token5_value => NULL,
1976 p_token6_name => NULL,
1977 p_token6_value => NULL,
1978 x_return_status => l_return_status) ;
1979 END IF;
1980 -- Otherwise will check a unique Shipment Line Unit Price
1981 -- Check the actual difference against the tolerable difference
1982 ELSE
1983 l_actual_price_dif := NVL (l_p_converted_PUP, 0) - NVL (l_po_converted_price, 0) ;
1984 IF l_actual_price_dif > 0 THEN
1985 l_tolerable_dif := (l_po_converted_price / 100) * l_po_price_toler_perc;
1986 IF (l_actual_price_dif > l_tolerable_dif) THEN
1987 x_return_validation_status := 'FALSE';
1988 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_PO_PRICE_TOLER') ;
1989 FND_MESSAGE.SET_TOKEN ('SHIPLN_NUM', p_ship_line_num) ;
1990 FND_MESSAGE.SET_TOKEN ('TOLER', l_po_price_toler_perc) ;
1991 FND_MSG_PUB.ADD;
1992 -- INCLUDE A LINE IN INL_SHIP_HOLdS
1993 Handle_ShipError (
1994 p_ship_header_id => p_ship_header_id,
1995 p_ship_line_id => p_ship_line_id,
1996 p_charge_line_id => NULL,
1997 p_table_name => 'INL_SHIP_LINES',
1998 p_column_name => 'PRIMARY_UNIT_PRICE',
1999 p_column_value => 0,
2000 p_error_message => SUBSTR (FND_MSG_PUB.Get (
2001 p_msg_index => FND_MSG_PUB.Count_Msg (),
2002 p_encoded => L_FND_FALSE), 1, 2000),
2003 p_error_message_name => 'INL_ERR_PO_PRICE_TOLER',
2004 p_token1_name => 'SHIPLN_NUM',
2005 p_token1_value => p_ship_line_num,
2006 p_token2_name => 'TOLER',
2007 p_token2_value => l_po_price_toler_perc,
2008 p_token3_name => NULL,
2009 p_token3_value => NULL,
2010 p_token4_name => NULL,
2011 p_token4_value => NULL,
2012 p_token5_name => NULL,
2013 p_token5_value => NULL,
2014 p_token6_name => NULL,
2015 p_token6_value => NULL,
2016 x_return_status => l_return_status) ;
2017 END IF;
2018 END IF;
2019 END IF;
2020 -- Standard End of Procedure/Function Logging
2021 INL_LOGGING_PVT.Log_EndProc (
2022 p_module_name => g_module_name,
2023 p_procedure_name => l_program_name) ;
2024 EXCEPTION
2025 WHEN L_FND_EXC_ERROR THEN
2026 x_return_status := L_FND_RET_STS_ERROR;
2027 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
2028 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2029 WHEN OTHERS THEN
2030 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2031 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2032 FND_MSG_PUB.Add_Exc_Msg (
2033 p_pkg_name => g_pkg_name,
2034 p_procedure_name => l_program_name) ;
2035 END IF;
2036 END Check_PoPriceTolerance;
2037
2038 -- SCM-051 Bug# 13590582
2039 -- API name : Check_PoTolerances
2040 -- Type : Private
2041 -- Function : API for PO Price and Quantity Tolerances validation.
2042 -- Pre-reqs : None
2043 -- Parameters :
2044 -- IN : p_api_version IN NUMBER Required
2045 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
2046 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
2047 -- p_ship_header_id IN NUMBER
2048 -- p_ship_line_id IN NUMBER
2049 -- p_organization_id IN NUMBER
2050 -- p_ship_line_num IN NUMBER
2051 -- p_ship_line_src_id IN NUMBER
2052 -- p_inventory_item_id IN NUMBER
2053 -- p_primary_qty IN NUMBER
2054 -- p_primary_uom_code IN VARCHAR2
2055 -- p_txn_uom_code IN VARCHAR2
2056 -- p_new_txn_unit_price IN NUMBER
2057 -- p_pri_unit_price IN NUMBER
2058 -- p_currency_code IN VARCHAR2
2059 -- p_currency_conversion_type IN VARCHAR2
2060 -- p_currency_conversion_date IN DATE
2061 -- p_currency_conversion_rate IN NUMBER
2062 --
2063 -- OUT x_return_status OUT NOCOPY VARCHAR2
2064 -- x_msg_count OUT NOCOPY NUMBER
2065 -- x_msg_data OUT NOCOPY VARCHAR2
2066 --
2067 -- Version : Current version 1.0
2068 --
2069 -- Notes :
2070 PROCEDURE Check_PoTolerances(
2071 p_api_version IN NUMBER,
2072 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
2073 p_commit IN VARCHAR2 := L_FND_FALSE,
2074 p_ship_header_id IN NUMBER,
2075 p_ship_line_id IN NUMBER,
2076 p_organization_id IN NUMBER,
2077 p_ship_line_num IN NUMBER,
2078 p_ship_line_src_id IN NUMBER,
2079 p_inventory_item_id IN NUMBER,
2080 p_primary_qty IN NUMBER,
2081 p_primary_uom_code IN VARCHAR2,
2082 p_txn_uom_code IN VARCHAR2,
2083 p_new_txn_unit_price IN NUMBER,
2084 p_pri_unit_price IN NUMBER,
2085 p_currency_code IN VARCHAR2,
2086 p_currency_conversion_type IN VARCHAR2,
2087 p_currency_conversion_date IN DATE,
2088 p_currency_conversion_rate IN NUMBER,
2089 x_return_status OUT NOCOPY VARCHAR2,
2090 x_msg_count OUT NOCOPY NUMBER,
2091 x_msg_data OUT NOCOPY VARCHAR2)
2092 IS
2093 l_program_name CONSTANT VARCHAR2(30) := 'Check_PoTolerances';
2094 l_api_version CONSTANT NUMBER := 1.0;
2095 l_return_status VARCHAR2(1);
2096 l_msg_count NUMBER;
2097 l_msg_data VARCHAR2(2000);
2098 l_debug_info VARCHAR2(200);
2099 l_return_validation_status VARCHAR2(30);
2100 l_ship_status_code VARCHAR2(30);
2101 l_pri_unit_price NUMBER;
2102
2103 BEGIN
2104 -- Standard Beginning of Procedure/Function Logging
2105 INL_LOGGING_PVT.Log_BeginProc (
2106 p_module_name => g_module_name,
2107 p_procedure_name => l_program_name) ;
2108 -- Standard Start of API savepoint
2109 SAVEPOINT Check_PoTolerances_PVT;
2110 -- Initialize message list if p_init_msg_list is set to TRUE.
2111 IF FND_API.to_Boolean (p_init_msg_list) THEN
2112 FND_MSG_PUB.initialize;
2113 END IF;
2114 -- Check for call compatibility.
2115 IF NOT FND_API.Compatible_API_Call(l_api_version,
2116 p_api_version,
2117 l_program_name,
2118 G_PKG_NAME) THEN
2119 RAISE L_FND_EXC_UNEXPECTED_ERROR;
2120 END IF;
2121 -- Initialize API return status to success
2122 x_return_status := L_FND_RET_STS_SUCCESS;
2123
2124 INL_LOGGING_PVT.Log_Variable(p_module_name => g_module_name,
2125 p_procedure_name => l_program_name,
2126 p_var_name => 'p_new_txn_unit_price',
2127 p_var_value => p_new_txn_unit_price);
2128
2129 l_pri_unit_price := p_pri_unit_price;
2130
2131 BEGIN
2132 IF p_new_txn_unit_price IS NOT NULL THEN
2133
2134 l_debug_info := 'Get Primary Unit Price for New Transaction Unit Price';
2135 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
2136 p_procedure_name => l_program_name,
2137 p_debug_info => l_debug_info);
2138
2139 l_pri_unit_price := INL_LANDEDCOST_PVT.Converted_Price(
2140 p_unit_price => p_new_txn_unit_price,
2141 p_organization_id => p_organization_id,
2142 p_inventory_item_id => p_inventory_item_id,
2143 p_from_uom_code => p_txn_uom_code,
2144 p_to_uom_code => p_primary_uom_code);
2145
2146 INL_LOGGING_PVT.Log_Variable(p_module_name => g_module_name,
2147 p_procedure_name => l_program_name,
2148 p_var_name => 'l_pri_unit_price',
2149 p_var_value => l_pri_unit_price);
2150
2151 END IF;
2152
2153 INL_SHIPMENT_PVT.Check_PoTolerances(p_api_version => 1.0,
2154 p_init_msg_list => FND_API.G_TRUE,
2155 p_commit => FND_API.G_FALSE,
2156 p_ship_header_id => p_ship_header_id ,
2157 p_ship_line_id => p_ship_line_id ,
2158 p_organization_id => p_organization_id,
2159 p_ship_line_num => p_ship_line_num,
2160 p_ship_line_src_id => p_ship_line_src_id,
2161 p_inventory_item_id => p_inventory_item_id,
2162 p_primary_qty => p_primary_qty,
2163 p_primary_uom_code => p_primary_uom_code,
2164 p_txn_uom_code => p_txn_uom_code,
2165 p_pri_unit_price => l_pri_unit_price,
2166 p_currency_code => p_currency_code,
2167 p_currency_conversion_type => p_currency_conversion_type,
2168 p_currency_conversion_date => p_currency_conversion_date,
2169 p_currency_conversion_rate => p_currency_conversion_rate,
2170 x_return_status => l_return_status,
2171 x_msg_count => l_msg_count,
2172 x_msg_data => l_msg_data);
2173 END;
2174
2175 -- Standard check of p_commit.
2176 IF FND_API.To_Boolean (p_commit) THEN
2177 COMMIT WORK;
2178 END IF;
2179 -- Standard call to get message count and if count is 1, get message info.
2180 FND_MSG_PUB.Count_And_Get (
2181 p_encoded => L_FND_FALSE,
2182 p_count => x_msg_count,
2183 p_data => x_msg_data) ;
2184 -- Standard End of Procedure/Function Logging
2185 INL_LOGGING_PVT.Log_EndProc (
2186 p_module_name => g_module_name,
2187 p_procedure_name => l_program_name) ;
2188 EXCEPTION
2189 WHEN L_FND_EXC_ERROR THEN
2190 -- Standard Expected Error Logging
2191 INL_LOGGING_PVT.Log_ExpecError (
2192 p_module_name => g_module_name,
2193 p_procedure_name => l_program_name) ;
2194 ROLLBACK TO Check_PoTolerances_PVT;
2195 x_return_status := L_FND_RET_STS_ERROR;
2196 FND_MSG_PUB.Count_And_Get (
2197 p_encoded => L_FND_FALSE,
2198 p_count => x_msg_count,
2199 p_data => x_msg_data) ;
2200 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
2201 -- Standard Unexpected Error Logging
2202 INL_LOGGING_PVT.Log_UnexpecError (
2203 p_module_name => g_module_name,
2204 p_procedure_name => l_program_name) ;
2205 ROLLBACK TO Check_PoTolerances_PVT;
2206 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2207 FND_MSG_PUB.Count_And_Get (
2208 p_encoded => L_FND_FALSE,
2209 p_count => x_msg_count,
2210 p_data => x_msg_data) ;
2211 WHEN OTHERS THEN
2212 -- Standard Unexpected Error Logging
2213 INL_LOGGING_PVT.Log_UnexpecError (
2214 p_module_name => g_module_name,
2215 p_procedure_name => l_program_name) ;
2216 ROLLBACK TO Check_PoTolerances_PVT;
2217 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
2218 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2219 FND_MSG_PUB.Add_Exc_Msg (
2220 p_pkg_name => g_pkg_name,
2221 p_procedure_name => l_program_name) ;
2222 END IF;
2223 FND_MSG_PUB.Count_And_Get (
2224 p_encoded => L_FND_FALSE,
2225 p_count => x_msg_count,
2226 p_data => x_msg_data) ;
2227 END Check_PoTolerances;
2228 -- /SCM-051
2229
2230
2231
2232 -- API name : Check_PoTolerances
2233 -- Type : Private
2234 -- Function : API for PO Price and Quantity Tolerances validation.
2235 -- Pre-reqs : None
2236 -- Parameters :
2237 -- IN : p_api_version IN NUMBER Required
2238 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
2239 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
2240 -- p_ship_header_id IN NUMBER
2241 -- p_ship_line_id IN NUMBER
2242 -- p_organization_id IN NUMBER
2243 -- p_ship_line_num IN NUMBER
2244 -- p_ship_line_src_id IN NUMBER
2245 -- p_inventory_item_id IN NUMBER
2246 -- p_primary_qty IN NUMBER
2247 -- p_primary_uom_code IN VARCHAR2
2248 -- p_txn_uom_code IN VARCHAR2
2249 -- p_pri_unit_price IN NUMBER
2250 -- p_currency_code IN VARCHAR2
2251 -- p_currency_conversion_type IN VARCHAR2
2252 -- p_currency_conversion_date IN DATE
2253 -- p_currency_conversion_rate IN NUMBER
2254 --
2255 -- OUT x_return_status OUT NOCOPY VARCHAR2
2256 -- x_msg_count OUT NOCOPY NUMBER
2257 -- x_msg_data OUT NOCOPY VARCHAR2
2258 --
2259 -- Version : Current version 1.0
2260 --
2261 -- Notes :
2262 PROCEDURE Check_PoTolerances(
2263 p_api_version IN NUMBER,
2264 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
2265 p_commit IN VARCHAR2 := L_FND_FALSE,
2266 p_ship_header_id IN NUMBER,
2267 p_ship_line_id IN NUMBER,
2268 p_organization_id IN NUMBER,
2269 p_ship_line_num IN NUMBER,
2270 p_ship_line_src_id IN NUMBER,
2271 p_inventory_item_id IN NUMBER,
2272 p_primary_qty IN NUMBER,
2273 p_primary_uom_code IN VARCHAR2,
2274 p_txn_uom_code IN VARCHAR2,
2275 p_pri_unit_price IN NUMBER,
2276 p_currency_code IN VARCHAR2, --BUG#7670307
2277 p_currency_conversion_type IN VARCHAR2, --BUG#7670307
2278 p_currency_conversion_date IN DATE, --BUG#7670307
2279 p_currency_conversion_rate IN NUMBER, --BUG#7670307
2280 x_return_status OUT NOCOPY VARCHAR2,
2281 x_msg_count OUT NOCOPY NUMBER,
2282 x_msg_data OUT NOCOPY VARCHAR2)
2283 IS
2284 l_program_name CONSTANT VARCHAR2(30) := 'Check_PoTolerances';
2285 l_api_version CONSTANT NUMBER := 1.0;
2286 l_return_status VARCHAR2(1);
2287 l_msg_count NUMBER;
2288 l_msg_data VARCHAR2(2000);
2289 l_debug_info VARCHAR2(200);
2290 l_return_validation_status VARCHAR2(30); -- SCM-051
2291 l_ship_status_code VARCHAR2(30);
2292 BEGIN
2293 -- Standard Beginning of Procedure/Function Logging
2294 INL_LOGGING_PVT.Log_BeginProc (
2295 p_module_name => g_module_name,
2296 p_procedure_name => l_program_name) ;
2297 -- Standard Start of API savepoint
2298 SAVEPOINT Check_PoTolerances_PVT;
2299 -- Initialize message list if p_init_msg_list is set to TRUE.
2300 IF FND_API.to_Boolean (p_init_msg_list) THEN
2301 FND_MSG_PUB.initialize;
2302 END IF;
2303 -- Check for call compatibility.
2304 IF NOT FND_API.Compatible_API_Call (
2305 l_api_version,
2306 p_api_version,
2307 l_program_name,
2308 G_PKG_NAME
2309 ) THEN
2310 RAISE L_FND_EXC_UNEXPECTED_ERROR;
2311 END IF;
2312 -- Initialize API return status to success
2313 x_return_status := L_FND_RET_STS_SUCCESS;
2314
2315 INL_LOGGING_PVT.Log_Variable (
2316 p_module_name => g_module_name,
2317 p_procedure_name => l_program_name,
2318 p_var_name => 'p_ship_line_id: ',
2319 p_var_value => p_ship_line_id);
2320 INL_LOGGING_PVT.Log_Variable (
2321 p_module_name => g_module_name,
2322 p_procedure_name => l_program_name,
2323 p_var_name => 'p_ship_header_id: ',
2324 p_var_value => p_ship_header_id);
2325 INL_LOGGING_PVT.Log_Variable (
2326 p_module_name => g_module_name,
2327 p_procedure_name => l_program_name,
2328 p_var_name => 'p_ship_line_src_id: ',
2329 p_var_value => p_ship_line_src_id);
2330
2331
2332 l_debug_info := 'Getting Shipment Status Code ';
2333 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
2334 p_procedure_name => l_program_name,
2335 p_debug_info => l_debug_info);
2336 --SCM-051 Begin
2337 BEGIN
2338 -- during insert from UI at this point the record has not been posted yet
2339 SELECT ish.ship_status_code
2340 INTO l_ship_status_code
2341 FROM inl_ship_headers_all ish
2342 WHERE ish.ship_header_id = p_ship_header_id;
2343 EXCEPTION
2344 WHEN NO_DATA_FOUND THEN
2345 l_ship_status_code := 'INCOMPLETE';
2346 END;
2347 -- SCM-051 (Check_AvailableQty should only be called for NOT Completed Shipments)
2348 IF l_ship_status_code <> 'COMPLETED' THEN
2349 --SCM-051 End
2350 -- Validate PO Quantity Available
2351 l_debug_info := 'Call Check_AvailableQty';
2352 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
2353 p_procedure_name => l_program_name,
2354 p_debug_info => l_debug_info);
2355
2356 Check_AvailableQty(p_primary_qty => p_primary_qty,
2357 p_sum_primary_qty => NULL,
2358 p_primary_uom_code => p_primary_uom_code,
2359 p_txn_uom_code => p_txn_uom_code,
2360 p_inventory_item_id => p_inventory_item_id,
2361 p_inv_org_id => p_organization_id,
2362 p_ship_line_id => p_ship_line_id,
2363 p_ship_line_num => p_ship_line_num,
2364 p_ship_line_src_type_code => 'PO',
2365 p_ship_line_src_id => p_ship_line_src_id,
2366 p_same_shiph_id => p_ship_header_id,
2367 p_ship_header_id => p_ship_header_id,
2368 x_return_status => l_return_status);
2369
2370 -- If any errors happen abort the process.
2371 IF l_return_status = L_FND_RET_STS_ERROR THEN
2372 RAISE L_FND_EXC_ERROR;
2373 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
2374 RAISE L_FND_EXC_UNEXPECTED_ERROR;
2375 END IF;
2376 END IF;
2377
2378 -- Standard call to get message count and if count is 1, get message info.
2379 FND_MSG_PUB.Count_And_Get (
2380 p_encoded => L_FND_FALSE,
2381 p_count => x_msg_count,
2382 p_data => x_msg_data) ;
2383
2384 IF x_msg_count = 0 THEN
2385 -- Validate PO Price Tolerance
2386 l_debug_info := 'Call Check_PoPriceTolerance';
2387 INL_LOGGING_PVT.Log_Statement (
2388 p_module_name => g_module_name,
2389 p_procedure_name => l_program_name,
2390 p_debug_info => l_debug_info) ;
2391 Check_PoPriceTolerance(
2392 p_ship_header_id => p_ship_header_id,
2393 p_ship_line_id => p_ship_line_id,
2394 p_organization_id => p_organization_id,
2395 p_ship_line_num => p_ship_line_num,
2396 p_ship_line_src_id => p_ship_line_src_id,
2397 p_pri_unit_price => p_pri_unit_price,
2398 p_primary_uom_code => p_primary_uom_code, --BUG#7670307
2399 p_currency_code => p_currency_code, --BUG#7670307
2400 p_currency_conversion_type => p_currency_conversion_type, --BUG#7670307
2401 p_currency_conversion_date => p_currency_conversion_date, --BUG#7670307
2402 p_currency_conversion_rate => p_currency_conversion_rate, --BUG#7670307
2403 x_return_validation_status => l_return_validation_status, -- SCM-051
2404 x_return_status => l_return_status
2405 );
2406 -- If any errors happen abort the process.
2407 IF l_return_status = L_FND_RET_STS_ERROR THEN
2408 RAISE L_FND_EXC_ERROR;
2409 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
2410 RAISE L_FND_EXC_UNEXPECTED_ERROR;
2411 END IF;
2412 END IF;
2413 -- Standard check of p_commit.
2414 IF FND_API.To_Boolean (p_commit) THEN
2415 COMMIT WORK;
2416 END IF;
2417 -- Standard call to get message count and if count is 1, get message info.
2418 FND_MSG_PUB.Count_And_Get (
2419 p_encoded => L_FND_FALSE,
2420 p_count => x_msg_count,
2421 p_data => x_msg_data) ;
2422 -- Standard End of Procedure/Function Logging
2423 INL_LOGGING_PVT.Log_EndProc (
2424 p_module_name => g_module_name,
2425 p_procedure_name => l_program_name) ;
2426 EXCEPTION
2427 WHEN L_FND_EXC_ERROR THEN
2428 -- Standard Expected Error Logging
2429 INL_LOGGING_PVT.Log_ExpecError (
2430 p_module_name => g_module_name,
2431 p_procedure_name => l_program_name) ;
2432 ROLLBACK TO Check_PoTolerances_PVT;
2433 x_return_status := L_FND_RET_STS_ERROR;
2434 FND_MSG_PUB.Count_And_Get (
2435 p_encoded => L_FND_FALSE,
2436 p_count => x_msg_count,
2437 p_data => x_msg_data) ;
2438 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
2439 -- Standard Unexpected Error Logging
2440 INL_LOGGING_PVT.Log_UnexpecError (
2441 p_module_name => g_module_name,
2442 p_procedure_name => l_program_name) ;
2443 ROLLBACK TO Check_PoTolerances_PVT;
2444 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2445 FND_MSG_PUB.Count_And_Get (
2446 p_encoded => L_FND_FALSE,
2447 p_count => x_msg_count,
2448 p_data => x_msg_data) ;
2449 WHEN OTHERS THEN
2450 -- Standard Unexpected Error Logging
2451 INL_LOGGING_PVT.Log_UnexpecError (
2452 p_module_name => g_module_name,
2453 p_procedure_name => l_program_name) ;
2454 ROLLBACK TO Check_PoTolerances_PVT;
2455 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
2456 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2457 FND_MSG_PUB.Add_Exc_Msg (
2458 p_pkg_name => g_pkg_name,
2459 p_procedure_name => l_program_name) ;
2460 END IF;
2461 FND_MSG_PUB.Count_And_Get (
2462 p_encoded => L_FND_FALSE,
2463 p_count => x_msg_count,
2464 p_data => x_msg_data) ;
2465 END Check_PoTolerances;
2466
2467 -- Utility name : Validate_ChargeLine
2468 -- Type : Private
2469 -- Function : Validate Charge Line
2470 -- Pre-reqs : None
2471 -- Parameters :
2472 -- IN : p_ship_header_id IN NUMBER
2473 -- p_to_parent_table_name IN VARCHAR2
2474 -- p_to_parent_table_id IN NUMBER
2475 -- p_functional_currency_code IN VARCHAR2
2476 -- p_foreign_currency_flag IN VARCHAR2
2477 -- p_third_parties_allowed IN VARCHAR2
2478 --
2479 -- OUT : x_ch_line_tot_amt_func_curr OUT NOCOPY NUMBER
2480 -- x_return_status OUT NOCOPY VARCHAR2
2481 --
2482 -- Version : Current version 1.0
2483 --
2484 -- Notes :
2485 PROCEDURE Validate_ChargeLine (
2486 p_ship_header_id IN NUMBER,
2487 p_to_parent_table_name IN VARCHAR2,
2488 p_to_parent_table_id IN NUMBER,
2489 p_functional_currency_code IN VARCHAR2,
2490 p_foreign_currency_flag IN VARCHAR2,
2491 p_third_parties_allowed IN VARCHAR2,
2492 x_ch_line_tot_amt_func_curr OUT NOCOPY NUMBER,
2493 x_return_status OUT NOCOPY VARCHAR2
2494 ) IS
2495 l_program_name CONSTANT VARCHAR2 (30) := 'Validate_ChargeLine';
2496 l_debug_info VARCHAR2 (200);
2497 l_return_status VARCHAR2 (1);
2498 CURSOR c_ch_lines IS
2499 SELECT DECODE (cl.currency_code,
2500 p_functional_currency_code,
2501 cl.charge_amt,
2502 cl.charge_amt * cl.currency_conversion_rate) AS ch_line_amt_func_curr,
2503 cl.currency_code,
2504 cl.charge_line_id,
2505 cl.charge_line_num
2506 FROM inl_adj_charge_lines_v cl,
2507 inl_associations assoc
2508 WHERE assoc.from_parent_table_name = 'INL_CHARGE_LINES'
2509 AND assoc.from_parent_table_id = NVL (cl.parent_charge_line_id, cl.charge_line_id)
2510 AND assoc.ship_header_id = p_ship_header_id
2511 AND assoc.to_parent_table_name = p_to_parent_table_name
2512 AND assoc.to_parent_table_id = p_to_parent_table_id
2513 ORDER BY cl.charge_line_num;
2514 l_ch_lines_rec c_ch_lines%ROWTYPE;
2515 BEGIN
2516 INL_LOGGING_PVT.Log_BeginProc ( p_module_name => g_module_name,
2517 p_procedure_name => l_program_name) ;
2518 x_return_status := L_FND_RET_STS_SUCCESS;
2519 x_ch_line_tot_amt_func_curr := 0;
2520 FOR l_ch_lines_rec IN c_ch_lines
2521 LOOP
2522 l_debug_info := 'Check Foreign Currency for Charge Line';
2523 INL_LOGGING_PVT.Log_Statement (
2524 p_module_name => g_module_name,
2525 p_procedure_name => l_program_name,
2526 p_debug_info => l_debug_info) ;
2527 IF l_ch_lines_rec.currency_code <> p_functional_currency_code AND p_foreign_currency_flag = 'N' THEN
2528 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_FRGN_CUR') ;
2529 FND_MESSAGE.SET_TOKEN ('CLNUM', l_ch_lines_rec.charge_line_num) ;
2530 FND_MSG_PUB.ADD;
2531 -- INCLUDE A LINE IN INL_SHIP_HOLdS
2532 Handle_ShipError (
2533 p_ship_header_id => p_ship_header_id,
2534 p_ship_line_id => NULL,
2535 p_charge_line_id => l_ch_lines_rec.charge_line_id,
2536 p_table_name => 'INL_CHARGE_LINES',
2537 p_column_name => 'CURRENCY_CODE',
2538 p_column_value => l_ch_lines_rec.CURRENCY_CODE,
2539 p_error_message => SUBSTR (FND_MSG_PUB.Get (
2540 p_msg_index => FND_MSG_PUB.Count_Msg (),
2541 p_encoded => L_FND_FALSE), 1, 2000),
2542 p_error_message_name => 'INL_ERR_CHK_FRGN_CUR',
2543 p_token1_name => 'CLNUM',
2544 p_token1_value => l_ch_lines_rec.charge_line_num,
2545 p_token2_name => NULL,
2546 p_token2_value => NULL,
2547 p_token3_name => NULL,
2548 p_token3_value => NULL,
2549 p_token4_name => NULL,
2550 p_token4_value => NULL,
2551 p_token5_name => NULL,
2552 p_token5_value => NULL,
2553 p_token6_name => NULL,
2554 p_token6_value => NULL,
2555 x_return_status => l_return_status) ;
2556 -- If unexpected errors happen abort
2557 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
2558 RAISE L_FND_EXC_UNEXPECTED_ERROR;
2559 END IF;
2560 END IF;
2561 -- the flag l_ch_lines_rec.dflt_charge_amt_flag has been removed from table, and the original pkg
2562 -- fas been changed without the if clause, this is a temporarily wrk proc that will replace the actual
2563 x_ch_line_tot_amt_func_curr := x_ch_line_tot_amt_func_curr + NVL (l_ch_lines_rec.ch_line_amt_func_curr, 0) ;
2564 END LOOP;
2565 INL_LOGGING_PVT.Log_EndProc (
2566 p_module_name => g_module_name,
2567 p_procedure_name => l_program_name) ;
2568 EXCEPTION
2569 WHEN L_FND_EXC_ERROR THEN
2570 -- Standard Expected Error Logging
2571 INL_LOGGING_PVT.Log_ExpecError (
2572 p_module_name => g_module_name,
2573 p_procedure_name => l_program_name) ;
2574 x_return_status := L_FND_RET_STS_ERROR;
2575 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
2576 -- Standard Unexpected Error Logging
2577 INL_LOGGING_PVT.Log_UnexpecError (
2578 p_module_name => g_module_name,
2579 p_procedure_name => l_program_name) ;
2580 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2581 WHEN OTHERS THEN
2582 -- Standard Unexpected Error Logging
2583 INL_LOGGING_PVT.Log_UnexpecError (
2584 p_module_name => g_module_name,
2585 p_procedure_name => l_program_name) ;
2586 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2587 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2588 FND_MSG_PUB.Add_Exc_Msg (
2589 p_pkg_name => g_pkg_name,
2590 p_procedure_name => l_program_name) ;
2591 END IF;
2592 END Validate_ChargeLine;
2593
2594 -- Utility name : Validate_SrcOperatingUnit
2595 -- Type : Private
2596 -- Function : Check whether the Operating Unit from LCM Shipment is
2597 -- the same of the Operating Unit from PO.
2598 -- Pre-reqs : None
2599 -- Parameters :
2600 -- IN : p_ship_header_id IN NUMBER,
2601 -- p_ship_line_id IN NUMBER,
2602 -- p_ship_line_num IN NUMBER
2603 -- x_return_status IN OUT NOCOPY VARCHAR2
2604 --
2605 -- Version : Current version 1.0
2606 --
2607 -- Notes :
2608 PROCEDURE Validate_SrcOperatingUnit(
2609 p_ship_header_id IN NUMBER,
2610 p_ship_line_id IN NUMBER,
2611 p_ship_line_num IN NUMBER,
2612 x_return_status IN OUT NOCOPY VARCHAR2
2613 ) IS
2614 l_program_name VARCHAR2 (200) := 'Validate_SrcOperatingUnit';
2615 l_return_status VARCHAR2 (1) := L_FND_RET_STS_SUCCESS;
2616 l_lcm_org_id NUMBER;
2617 l_po_org_id NUMBER;
2618 l_lcm_org_name VARCHAR2(240);
2619 l_po_org_name VARCHAR2(240);
2620 BEGIN
2621 INL_LOGGING_PVT.Log_BeginProc (
2622 p_module_name => g_module_name,
2623 p_procedure_name => l_program_name);
2624 SELECT ish.org_id LCM_ORG_ID,
2625 ph.org_id PO_ORG_ID
2626 INTO l_lcm_org_id,
2627 l_po_org_id
2628 FROM inl_ship_headers_all ish,
2629 inl_ship_lines_all isl,
2630 po_headers_all ph,
2631 po_line_locations_all pll
2632 WHERE isl.ship_header_id = ish.ship_header_id
2633 AND ph.po_header_id = pll.po_header_id
2634 AND pll.line_location_id = isl.ship_line_source_id
2635 AND isl.ship_line_src_type_code = 'PO'
2636 AND ish.ship_header_id = p_ship_header_id
2637 AND isl.ship_line_id = p_ship_line_id;
2638 -- The Operating Unit from LCM Shipment must not be
2639 -- different from the Operating Unit from PO.
2640 IF l_lcm_org_id <> l_po_org_id THEN
2641 -- Get LCM Op Unit Name
2642 SELECT NAME
2643 INTO l_lcm_org_name
2644 FROM hr_operating_units
2645 WHERE organization_id = l_lcm_org_id;
2646 -- Get PO Op Unit Name
2647 SELECT NAME
2648 INTO l_po_org_name
2649 FROM hr_operating_units
2650 WHERE organization_id = l_po_org_id;
2651 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_INVALID_SRC_OPUNIT') ;
2652 FND_MESSAGE.SET_TOKEN ('SHIPLN_NUM', p_ship_line_num) ;
2653 FND_MESSAGE.SET_TOKEN ('LCM_OPUNIT', l_lcm_org_name) ;
2654 FND_MESSAGE.SET_TOKEN ('PO_OPUNIT', l_po_org_name) ;
2655 FND_MSG_PUB.ADD;
2656 -- INCLUDE A LINE IN INL_SHIP_HOLdS
2657 Handle_ShipError (
2658 p_ship_header_id => p_ship_header_id,
2659 p_ship_line_id => p_ship_line_id,
2660 p_charge_line_id => NULL,
2661 p_table_name => 'INL_SHIP_HEADERS',
2662 p_column_name => 'ORG_ID',
2663 p_column_value => 0,
2664 p_error_message => SUBSTR (FND_MSG_PUB.Get (
2665 p_msg_index => FND_MSG_PUB.Count_Msg (),
2666 p_encoded => L_FND_FALSE), 1, 2000),
2667 p_error_message_name => 'INL_ERR_INVALID_SRC_OPUNIT',
2668 p_token1_name => 'SHIPLN_NUM',
2669 p_token1_value => p_ship_line_num,
2670 p_token2_name => 'LCM_OPUNIT',
2671 p_token2_value => l_lcm_org_name,
2672 p_token3_name => 'PO_OPUNIT',
2673 p_token3_value => l_po_org_name,
2674 p_token4_name => NULL,
2675 p_token4_value => NULL,
2676 p_token5_name => NULL,
2677 p_token5_value => NULL,
2678 p_token6_name => NULL,
2679 p_token6_value => NULL,
2680 x_return_status => l_return_status);
2681 -- If unexpected errors happen abort
2682 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
2683 RAISE L_FND_EXC_UNEXPECTED_ERROR;
2684 END IF;
2685 END IF;
2686 INL_LOGGING_PVT.Log_EndProc (
2687 p_module_name => g_module_name,
2688 p_procedure_name => l_program_name) ;
2689 EXCEPTION
2690 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
2691 -- Standard Unexpected Error Logging
2692 INL_LOGGING_PVT.Log_UnexpecError (
2693 p_module_name => g_module_name,
2694 p_procedure_name => l_program_name) ;
2695 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2696 WHEN OTHERS THEN
2697 -- Standard Unexpected Error Logging
2698 INL_LOGGING_PVT.Log_UnexpecError (
2699 p_module_name => g_module_name,
2700 p_procedure_name => l_program_name) ;
2701 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2702 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2703 FND_MSG_PUB.Add_Exc_Msg (
2704 p_pkg_name => g_pkg_name,
2705 p_procedure_name => l_program_name) ;
2706 END IF;
2707 END Validate_SrcOperatingUnit;
2708 -- Utility name : Validate_ThirdPartySiteAllowed
2709 -- Type : Private
2710 -- Function : Check whether the Third Patry Site from LCM Shipment is
2711 -- following the setup.
2712 -- Pre-reqs : None
2713 -- Parameters :
2714 -- IN : p_ship_header_id IN NUMBER,
2715 -- p_ship_type_id IN NUMBER,
2716 -- p_ship_type_code IN VARCHAR2,
2717 -- p_group_reference IN VARCHAR2,
2718 -- p_party_site_id IN NUMBER,
2719 -- p_taxation_country IN VARCHAR2,
2720 -- p_third_parties_allowed IN VARCHAR2,
2721 -- x_return_status IN OUT NOCOPY VARCHAR2
2722 --
2723 -- Version : Current version 1.0
2724 --
2725 -- Notes :
2726 PROCEDURE Validate_ThirdPartySiteAllowed(
2727 p_ship_header_id IN NUMBER,
2728 p_ship_type_code IN VARCHAR2,
2729 p_group_reference IN VARCHAR2,
2730 p_party_site_id IN NUMBER,
2731 p_party_site_name IN VARCHAR2,
2732 p_taxation_country IN VARCHAR2,
2733 p_third_parties_allowed IN VARCHAR2,
2734 x_return_status IN OUT NOCOPY VARCHAR2
2735 ) IS
2736 l_program_name VARCHAR2 (200) := 'Validate_ThirdPartyAllowed';
2737 l_return_status VARCHAR2 (1) := L_FND_RET_STS_SUCCESS;
2738 l_party_site_id NUMBER;
2739 BEGIN
2740 INL_LOGGING_PVT.Log_BeginProc (
2741 p_module_name => g_module_name,
2742 p_procedure_name => l_program_name);
2743 INL_LOGGING_PVT.Log_Variable (
2744 p_module_name => g_module_name,
2745 p_procedure_name => l_program_name,
2746 p_var_name => 'p_ship_type_code: ',
2747 p_var_value => p_ship_type_code);
2748 INL_LOGGING_PVT.Log_Variable (
2749 p_module_name => g_module_name,
2750 p_procedure_name => l_program_name,
2751 p_var_name => 'p_party_site_id: ',
2752 p_var_value => p_party_site_id);
2753 INL_LOGGING_PVT.Log_Variable (
2754 p_module_name => g_module_name,
2755 p_procedure_name => l_program_name,
2756 p_var_name => 'p_taxation_country: ',
2757 p_var_value => p_taxation_country);
2758 INL_LOGGING_PVT.Log_Variable (
2759 p_module_name => g_module_name,
2760 p_procedure_name => l_program_name,
2761 p_var_name => 'p_third_parties_allowed: ',
2762 p_var_value => p_third_parties_allowed);
2763 BEGIN
2764 SELECT hps.party_site_id
2765 INTO l_party_site_id
2766 FROM hz_party_sites hps,
2767 hz_locations hl
2768 WHERE hps.location_id = hl.location_id
2769 AND hps.party_site_id = p_party_site_id
2770 AND ((p_third_parties_allowed = 1
2771 AND hl.country = p_taxation_country )
2772 OR (p_third_parties_allowed = 2
2773 AND hl.country <> p_taxation_country )
2774 OR ( p_third_parties_allowed = 3 ));
2775 EXCEPTION
2776 WHEN NO_DATA_FOUND THEN
2777 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_3RD_PTY_ST_ALLOWED') ;
2778 FND_MESSAGE.SET_TOKEN ('GROUP_REF', p_group_reference) ;
2779 FND_MESSAGE.SET_TOKEN ('PARTY_SITE', p_party_site_name) ;
2780 FND_MESSAGE.SET_TOKEN ('SHIP_TYPE', p_ship_type_code) ;
2781 FND_MSG_PUB.ADD;
2782 -- INCLUDE A LINE IN INL_SHIP_HOLDS
2783 Handle_ShipError (
2784 p_ship_header_id => p_ship_header_id,
2785 p_ship_line_id => NULL,
2786 p_charge_line_id => NULL,
2787 p_table_name => 'INL_SHIP_LINE_GROUPS',
2788 p_column_name => 'PARTY_SITE_ID',
2789 p_column_value => p_party_site_id,
2790 p_error_message => SUBSTR (FND_MSG_PUB.Get (
2791 p_msg_index => FND_MSG_PUB.Count_Msg (),
2792 p_encoded => L_FND_FALSE), 1, 2000),
2793 p_error_message_name => 'INL_ERR_3RD_PTY_ST_ALLOWED',
2794 p_token1_name => 'GROUP_REF',
2795 p_token1_value => p_group_reference,
2796 p_token2_name => 'PARTY_SITE',
2797 p_token2_value => p_party_site_id,
2798 p_token3_name => 'SHIP_TYPE',
2799 p_token3_value => p_ship_type_code,
2800 p_token4_name => NULL,
2801 p_token4_value => NULL,
2802 p_token5_name => NULL,
2803 p_token5_value => NULL,
2804 p_token6_name => NULL,
2805 p_token6_value => NULL,
2806 x_return_status => l_return_status);
2807 -- If unexpected errors happen abort
2808 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
2809 RAISE L_FND_EXC_UNEXPECTED_ERROR;
2810 END IF;
2811 END;
2812 INL_LOGGING_PVT.Log_EndProc (
2813 p_module_name => g_module_name,
2814 p_procedure_name => l_program_name) ;
2815 EXCEPTION
2816 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
2817 -- Standard Unexpected Error Logging
2818 INL_LOGGING_PVT.Log_UnexpecError (
2819 p_module_name => g_module_name,
2820 p_procedure_name => l_program_name) ;
2821 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2822 WHEN OTHERS THEN
2823 -- Standard Unexpected Error Logging
2824 INL_LOGGING_PVT.Log_UnexpecError (
2825 p_module_name => g_module_name,
2826 p_procedure_name => l_program_name) ;
2827 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
2828 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2829 FND_MSG_PUB.Add_Exc_Msg (
2830 p_pkg_name => g_pkg_name,
2831 p_procedure_name => l_program_name) ;
2832 END IF;
2833 END Validate_ThirdPartySiteAllowed;
2834
2835 -- Utility name : Validate_LineGroup
2836 -- Type : Private
2837 -- Function : Validate Line Group
2838 -- Pre-reqs : None
2839 -- Parameters :
2840 -- IN : p_ship_header_id IN NUMBER,
2841 -- p_ship_type_code IN VARCHAR2,
2842 -- p_inv_org_id IN NUMBER -- Bug 15956572
2843 -- p_ln_group_id IN NUMBER,
2844 -- p_ln_group_num IN NUMBER, --Bug#13987019
2845 -- p_group_reference IN VARCHAR2,
2846 -- p_party_id IN NUMBER, --Bug#13987019
2847 -- p_party_site_id IN NUMBER,
2848 -- p_party_site_name IN VARCHAR2,
2849 -- p_taxation_country IN VARCHAR2,
2850 -- p_third_parties_allowed IN VARCHAR2,
2851 --
2852 -- OUT : x_return_status OUT NOCOPY VARCHAR2
2853 --
2854 -- Version : Current version 1.0
2855 --
2856 -- Notes :
2857 PROCEDURE Validate_LineGroup(
2858 p_ship_header_id IN NUMBER,
2859 p_ship_type_code IN VARCHAR2,
2860 p_inv_org_id IN NUMBER, -- Bug 15956572
2861 p_ln_group_id IN NUMBER,
2862 p_ln_group_num IN NUMBER, --Bug#13987019
2863 p_group_reference IN VARCHAR2,
2864 p_party_id IN NUMBER, --Bug#13987019
2865 p_party_site_id IN NUMBER,
2866 p_party_site_name IN VARCHAR2,
2867 p_taxation_country IN VARCHAR2,
2868 p_third_parties_allowed IN VARCHAR2,
2869 x_return_status OUT NOCOPY VARCHAR2
2870 ) IS
2871 l_program_name CONSTANT VARCHAR2 (30) := 'Validate_LineGroup';
2872 l_return_status VARCHAR2 (1) := L_FND_RET_STS_SUCCESS;
2873 l_debug_info VARCHAR2 (200);
2874 l_pre_receive VARCHAR2 (1) ; -- Bug 15956572
2875
2876 --Bug#13987019 beg
2877 CURSOR c_sl_parties is
2878 SELECT
2879 ph.vendor_id,
2880 ph.vendor_site_id,
2881 pv.party_id,
2882 pvs.party_site_id,
2883 hps.party_site_name,
2884 pv.vendor_name,
2885 pvs.vendor_site_code,
2886 COUNT(*) how_many,
2887 MAX(sl.ship_line_num) max_ship_line_num
2888 FROM
2889 inl_ship_lines_all sl,
2890 po_headers_all ph,
2891 po_line_locations_all pll,
2892 po_vendors pv,
2893 po_vendor_sites_all pvs,
2894 hz_party_sites hps
2895 WHERE
2896 ph.po_header_id = pll.po_header_id
2897 AND hps.party_site_id = pvs.party_site_id
2898 AND pll.line_location_id = sl.ship_line_source_id
2899 AND pv.vendor_id = ph.vendor_id
2900 AND pvs.vendor_site_id = ph.vendor_site_id
2901 AND sl.ship_header_id = p_ship_header_id
2902 AND sl.ship_line_group_id = p_ln_group_id
2903 GROUP BY
2904 ph.vendor_id,
2905 ph.vendor_site_id,
2906 pv.party_id,
2907 pvs.party_site_id,
2908 hps.party_site_name,
2909 pv.vendor_name,
2910 pvs.vendor_site_code
2911 ORDER BY 1,2
2912 ;
2913 TYPE sl_parties_Tp
2914 IS
2915 TABLE OF c_sl_parties%ROWTYPE;
2916 l_sl_parties_lst sl_parties_Tp;
2917
2918 CURSOR c_sl_num (pc_party_site_id NUMBER) is
2919 SELECT
2920 sl.ship_line_num
2921 FROM
2922 inl_ship_lines_all sl,
2923 po_headers_all ph,
2924 po_line_locations_all pll,
2925 po_vendors pv,
2926 po_vendor_sites_all pvs,
2927 hz_party_sites hps
2928 WHERE
2929 ph.po_header_id = pll.po_header_id
2930 AND hps.party_site_id = pvs.party_site_id
2931 AND pll.line_location_id = sl.ship_line_source_id
2932 AND pv.vendor_id = ph.vendor_id
2933 AND pvs.vendor_site_id = ph.vendor_site_id
2934 AND sl.ship_header_id = p_ship_header_id
2935 AND sl.ship_line_group_id = p_ln_group_id
2936 AND pvs.party_site_id = pc_party_site_id
2937 ORDER BY 1
2938 ;
2939 TYPE sl_num_Tp
2940 IS
2941 TABLE OF c_sl_num%ROWTYPE;
2942 l_sl_num_lst sl_num_Tp;
2943
2944 l_vendor_record rcv_shipment_header_sv.vendorrectype;
2945 l_vendor_site_record rcv_shipment_header_sv.VendorSiteRecType;
2946 l_prev_party_id NUMBER;
2947 l_msg VARCHAR2(30);
2948 l_ln_num VARCHAR2(200);
2949 --Bug#13987019 end
2950 BEGIN
2951 INL_LOGGING_PVT.Log_BeginProc (
2952 p_module_name => g_module_name,
2953 p_procedure_name => l_program_name) ;
2954 x_return_status := L_FND_RET_STS_SUCCESS;
2955 INL_LOGGING_PVT.Log_Variable (
2956 p_module_name => g_module_name,
2957 p_procedure_name => l_program_name,
2958 p_var_name => 'p_ship_type_code',
2959 p_var_value => p_ship_type_code);
2960 INL_LOGGING_PVT.Log_Variable (
2961 p_module_name => g_module_name,
2962 p_procedure_name => l_program_name,
2963 p_var_name => 'p_ln_group_num',
2964 p_var_value => p_ln_group_num);
2965 INL_LOGGING_PVT.Log_Variable (
2966 p_module_name => g_module_name,
2967 p_procedure_name => l_program_name,
2968 p_var_name => 'p_ln_group_id',
2969 p_var_value => p_ln_group_id);
2970 INL_LOGGING_PVT.Log_Variable (
2971 p_module_name => g_module_name,
2972 p_procedure_name => l_program_name,
2973 p_var_name => 'p_group_reference',
2974 p_var_value => p_group_reference);
2975 INL_LOGGING_PVT.Log_Variable (
2976 p_module_name => g_module_name,
2977 p_procedure_name => l_program_name,
2978 p_var_name => 'p_party_id',
2979 p_var_value => p_party_id);
2980 INL_LOGGING_PVT.Log_Variable (
2981 p_module_name => g_module_name,
2982 p_procedure_name => l_program_name,
2983 p_var_name => 'p_party_site_id',
2984 p_var_value => p_party_site_id);
2985 INL_LOGGING_PVT.Log_Variable (
2986 p_module_name => g_module_name,
2987 p_procedure_name => l_program_name,
2988 p_var_name => 'p_party_site_name',
2989 p_var_value => p_party_site_name);
2990 INL_LOGGING_PVT.Log_Variable (
2991 p_module_name => g_module_name,
2992 p_procedure_name => l_program_name,
2993 p_var_name => 'p_taxation_country',
2994 p_var_value => p_taxation_country);
2995 INL_LOGGING_PVT.Log_Variable (
2996 p_module_name => g_module_name,
2997 p_procedure_name => l_program_name,
2998 p_var_name => 'p_third_parties_allowed',
2999 p_var_value => p_third_parties_allowed);
3000
3001 -- Bug 15956572
3002 -- Just validate Third Party Allowed for Pre-Receiving Organizations
3003 SELECT pre_receive
3004 INTO l_pre_receive
3005 FROM rcv_parameters
3006 WHERE organization_id = p_inv_org_id;
3007 -- /Bug 15956572
3008
3009 INL_LOGGING_PVT.Log_Variable (
3010 p_module_name => g_module_name,
3011 p_procedure_name => l_program_name,
3012 p_var_name => 'l_pre_receive',
3013 p_var_value => l_pre_receive);
3014
3015 IF (NVL (l_pre_receive, 'N') = 'Y') THEN -- Bug 15956572
3016 l_debug_info := 'Validate Third Party Allowed. Call Validate_ThirdPartyAllowed (Group)';
3017 INL_LOGGING_PVT.Log_Statement (
3018 p_module_name => g_module_name,
3019 p_procedure_name => l_program_name,
3020 p_debug_info => l_debug_info) ;
3021 Validate_ThirdPartySiteAllowed(
3022 p_ship_header_id => p_ship_header_id,
3023 p_ship_type_code => p_ship_type_code,
3024 p_group_reference => p_group_reference,
3025 p_party_site_id => p_party_site_id,
3026 p_party_site_name => p_party_site_name,
3027 p_taxation_country => p_taxation_country,
3028 p_third_parties_allowed => p_third_parties_allowed,
3029 x_return_status => l_return_status);
3030 -- If unexpected errors happen abort API
3031 IF l_return_status = L_FND_RET_STS_ERROR THEN
3032 x_return_status := l_return_status;
3033 RAISE L_FND_EXC_ERROR;
3034 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
3035 x_return_status := l_return_status;
3036 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3037 END IF;
3038 END IF; -- Bug 15956572
3039
3040 --Bug#13987019 BEG
3041 --Verifying the party and vendor of all lines (PO)
3042 INL_LOGGING_PVT.Log_Statement (
3043 p_module_name => g_module_name,
3044 p_procedure_name => l_program_name,
3045 p_debug_info => 'Verifying the party and vendor of all lines (PO)') ;
3046
3047 OPEN c_sl_parties;
3048 FETCH c_sl_parties BULK COLLECT INTO l_sl_parties_lst;
3049 CLOSE c_sl_parties;
3050 l_debug_info := l_sl_parties_lst.LAST||' lines have been retrieved.';
3051 INL_LOGGING_PVT.Log_Statement (
3052 p_module_name => g_module_name,
3053 p_procedure_name => l_program_name,
3054 p_debug_info => l_debug_info
3055 ) ;
3056 IF NVL (l_sl_parties_lst.LAST, 0) > 0 THEN
3057 FOR i IN NVL (l_sl_parties_lst.FIRST, 0) ..NVL (l_sl_parties_lst.LAST, 0)
3058 LOOP
3059 INL_LOGGING_PVT.Log_Variable (
3060 p_module_name => g_module_name,
3061 p_procedure_name => l_program_name,
3062 p_var_name => 'l_sl_parties_lst(i)',
3063 p_var_value => i);
3064 IF l_sl_parties_lst(i).party_id <> p_party_id THEN
3065 IF l_sl_parties_lst(i).party_id <> NVL(l_prev_party_id,-1)
3066 THEN
3067 l_prev_party_id:= l_sl_parties_lst(i).party_id;
3068 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_VEN_INV') ;
3069 FND_MESSAGE.SET_TOKEN ('P_LN_GROUP_NUM', p_ln_group_num) ;
3070 FND_MESSAGE.SET_TOKEN ('P_VENDOR_NAME', l_sl_parties_lst(i).vendor_name) ;
3071 FND_MSG_PUB.ADD;
3072
3073 Handle_ShipError (
3074 p_ship_header_id => p_ship_header_id,
3075 p_ship_line_id => NULL,
3076 p_charge_line_id => NULL,
3077 p_table_name => 'INL_SHIP_LINE_GROUPS',
3078 p_column_name => 'PARTY_ID',
3079 p_column_value => p_party_id,
3080 p_error_message => SUBSTR (FND_MSG_PUB.Get (
3081 p_msg_index => FND_MSG_PUB.Count_Msg (),
3082 p_encoded => L_FND_FALSE), 1, 2000),
3083 p_error_message_name => 'INL_ERR_CHK_VEN_INV',
3084 p_token1_name => 'P_LN_GROUP_NUM',
3085 p_token1_value => p_ln_group_num,
3086 p_token2_name => 'P_VENDOR_NAME',
3087 p_token2_value => l_sl_parties_lst(i).vendor_name,
3088 p_token3_name => NULL,
3089 p_token3_value => NULL,
3090 p_token4_name => NULL,
3091 p_token4_value => NULL,
3092 p_token5_name => NULL,
3093 p_token5_value => NULL,
3094 p_token6_name => NULL,
3095 p_token6_value => NULL,
3096 x_return_status => l_return_status);
3097 -- If unexpected errors happen abort
3098 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
3099 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3100 END IF;
3101 END IF;
3102 ELSE
3103 IF l_sl_parties_lst(i).party_id <> NVL(l_prev_party_id,-1)
3104 THEN
3105 l_prev_party_id:= l_sl_parties_lst(i).party_id;
3106 -- Based on rcv_roi_header.validate_vendor_info CHECKING VENDOR BEG
3107 INL_LOGGING_PVT.Log_Statement (
3108 p_module_name => g_module_name,
3109 p_procedure_name => l_program_name,
3110 p_debug_info => 'Checking Vendor: '||l_sl_parties_lst(i).vendor_name) ;
3111
3112 IF l_sl_parties_lst(i).vendor_name IS NULL
3113 AND l_sl_parties_lst(i).vendor_id IS NULL
3114 THEN
3115 l_vendor_record.error_record.error_status := 'E';
3116 l_vendor_record.error_record.error_message := 'TBD';
3117
3118 INL_LOGGING_PVT.Log_Statement (
3119 p_module_name => g_module_name,
3120 p_procedure_name => l_program_name,
3121 p_debug_info => 'Vendor ID and Vendor Name is null') ;
3122
3123 ELSE
3124 l_vendor_record.vendor_name := l_sl_parties_lst(i).vendor_name;
3125 l_vendor_record.vendor_num := NULL;
3126 l_vendor_record.vendor_id := l_sl_parties_lst(i).vendor_id;
3127 l_vendor_record.error_record.error_status := NULL;
3128 l_vendor_record.error_record.error_message := NULL;
3129
3130 INL_LOGGING_PVT.Log_Variable (
3131 p_module_name => g_module_name,
3132 p_procedure_name => l_program_name,
3133 p_var_name => 'l_vendor_record.vendor_name',
3134 p_var_value => l_vendor_record.vendor_name);
3135
3136 INL_LOGGING_PVT.Log_Variable (
3137 p_module_name => g_module_name,
3138 p_procedure_name => l_program_name,
3139 p_var_name => 'l_vendor_record.vendor_id',
3140 p_var_value => l_vendor_record.vendor_id);
3141
3142 INL_LOGGING_PVT.Log_Statement (
3143 p_module_name => g_module_name,
3144 p_procedure_name => l_program_name,
3145 p_debug_info => 'Calling po_vendors_sv.validate_vendor_info') ;
3146
3147 po_vendors_sv.validate_vendor_info(l_vendor_record);
3148
3149 INL_LOGGING_PVT.Log_Variable (
3150 p_module_name => g_module_name,
3151 p_procedure_name => l_program_name,
3152 p_var_name => 'l_vendor_record.error_record.error_status',
3153 p_var_value => l_vendor_record.error_record.error_status);
3154
3155 INL_LOGGING_PVT.Log_Variable (
3156 p_module_name => g_module_name,
3157 p_procedure_name => l_program_name,
3158 p_var_name => 'l_vendor_record.error_record.error_message',
3159 p_var_value => l_vendor_record.error_record.error_message);
3160
3161 END IF;
3162 IF l_vendor_record.error_record.error_status = 'E' THEN
3163 IF l_vendor_record.error_record.error_message = 'VEN_DISABLED' THEN
3164 l_msg:= 'INL_ERR_CHK_VEN_DIS';
3165 ELSIF l_vendor_record.error_record.error_message = 'VEN_HOLD' THEN
3166 l_msg:= 'INL_ERR_CHK_VEN_HLD';
3167 ELSE -- 'VEN_ID','TOOMANYROWS'
3168 l_msg:= 'INL_ERR_CHK_VEN_INV';
3169 END IF;
3170 INL_LOGGING_PVT.Log_Variable (
3171 p_module_name => g_module_name,
3172 p_procedure_name => l_program_name,
3173 p_var_name => 'l_msg',
3174 p_var_value => l_msg);
3175
3176 FND_MESSAGE.SET_NAME ('INL', l_msg) ;
3177 FND_MESSAGE.SET_TOKEN ('P_LN_GROUP_NUM', p_ln_group_num) ;
3178 FND_MESSAGE.SET_TOKEN ('P_VENDOR_NAME', l_sl_parties_lst(i).vendor_name) ;
3179 FND_MSG_PUB.ADD;
3180
3181 Handle_ShipError (
3182 p_ship_header_id => p_ship_header_id,
3183 p_ship_line_id => NULL,
3184 p_charge_line_id => NULL,
3185 p_table_name => 'INL_SHIP_LINE_GROUPS',
3186 p_column_name => 'PARTY_ID',
3187 p_column_value => p_party_id,
3188 p_error_message => SUBSTR (FND_MSG_PUB.Get (
3189 p_msg_index => FND_MSG_PUB.Count_Msg (),
3190 p_encoded => L_FND_FALSE), 1, 2000),
3191 p_error_message_name => l_msg,
3192 p_token1_name => 'P_LN_GROUP_NUM',
3193 p_token1_value => p_ln_group_num,
3194 p_token2_name => 'P_VENDOR_NAME',
3195 p_token2_value => l_sl_parties_lst(i).vendor_name,
3196 p_token3_name => NULL,
3197 p_token3_value => NULL,
3198 p_token4_name => NULL,
3199 p_token4_value => NULL,
3200 p_token5_name => NULL,
3201 p_token5_value => NULL,
3202 p_token6_name => NULL,
3203 p_token6_value => NULL,
3204 x_return_status => l_return_status);
3205 -- If unexpected errors happen abort
3206 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
3207 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3208 END IF;
3209 END IF;
3210 END IF;
3211 -- Based on rcv_roi_header.validate_vendor_info END
3212 -- Based on rcv_roi_header.validate_vendor_site_info: checking vendor site BEG
3213
3214 INL_LOGGING_PVT.Log_Statement (
3215 p_module_name => g_module_name,
3216 p_procedure_name => l_program_name,
3217 p_debug_info => 'Checking Vendor Site: '||l_sl_parties_lst(i).vendor_site_code) ;
3218
3219 IF l_sl_parties_lst(i).party_site_id <> p_party_site_id THEN
3220 l_debug_info := 'Validate Third Party Allowed (PO). Call Validate_ThirdPartyAllowed:'||l_sl_parties_lst(i).party_site_name;
3221 INL_LOGGING_PVT.Log_Statement (
3222 p_module_name => g_module_name,
3223 p_procedure_name => l_program_name,
3224 p_debug_info => l_debug_info) ;
3225 Validate_ThirdPartySiteAllowed(
3226 p_ship_header_id => p_ship_header_id,
3227 p_ship_type_code => p_ship_type_code,
3228 p_group_reference => p_group_reference,
3229 p_party_site_id => l_sl_parties_lst(i).party_site_id,
3230 p_party_site_name => l_sl_parties_lst(i).party_site_name,
3231 p_taxation_country => p_taxation_country,
3232 p_third_parties_allowed => p_third_parties_allowed,
3233 x_return_status => l_return_status);
3234 -- If unexpected errors happen abort API
3235 IF l_return_status = L_FND_RET_STS_ERROR THEN
3236 x_return_status := l_return_status;
3237 RAISE L_FND_EXC_ERROR;
3238 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
3239 x_return_status := l_return_status;
3240 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3241 END IF;
3242 END IF;
3243
3244 l_vendor_site_record.vendor_site_code := NULL;
3245 l_vendor_site_record.vendor_id := l_sl_parties_lst(i).vendor_id;
3246 l_vendor_site_record.vendor_site_id := l_sl_parties_lst(i).vendor_site_id;
3247 l_vendor_site_record.organization_id := NULL;
3248 l_vendor_site_record.error_record.error_status := NULL;
3249 l_vendor_site_record.error_record.error_message := NULL;
3250
3251 INL_LOGGING_PVT.Log_Variable (
3252 p_module_name => g_module_name,
3253 p_procedure_name => l_program_name,
3254 p_var_name => 'l_vendor_site_record.vendor_site_id',
3255 p_var_value => l_vendor_site_record.vendor_site_id);
3256
3257 INL_LOGGING_PVT.Log_Statement (
3258 p_module_name => g_module_name,
3259 p_procedure_name => l_program_name,
3260 p_debug_info => 'Calling po_vendor_sites_sv.validate_vendor_site_info') ;
3261
3262 po_vendor_sites_sv.validate_vendor_site_info(l_vendor_site_record);
3263
3264 INL_LOGGING_PVT.Log_Variable (
3265 p_module_name => g_module_name,
3266 p_procedure_name => l_program_name,
3267 p_var_name => 'l_vendor_site_record.error_record.error_status',
3268 p_var_value => l_vendor_site_record.error_record.error_status);
3269
3270 INL_LOGGING_PVT.Log_Variable (
3271 p_module_name => g_module_name,
3272 p_procedure_name => l_program_name,
3273 p_var_name => 'l_vendor_site_record.error_record.error_message',
3274 p_var_value => l_vendor_site_record.error_record.error_message);
3275
3276 IF l_vendor_site_record.error_record.error_status = 'E'
3277 THEN
3278
3279 IF l_vendor_site_record.error_record.error_message = 'VEN_SITE_HOLD_PMT' THEN
3280 NULL;
3281 ELSIF l_vendor_site_record.error_record.error_message = 'VEN_SITE_NOT_POR_SITE' THEN
3282 NULL;
3283 ELSIF l_vendor_site_record.error_record.error_message = 'VEN_SITE_ID' THEN
3284 NULL;
3285 ELSE
3286 IF l_vendor_site_record.error_record.error_message = 'VEN_SITE_DISABLED' THEN
3287 l_msg:= 'INL_ERR_CHK_VEN_SITE_DIS';
3288 ELSIF l_vendor_site_record.error_record.error_message = 'VEN_SITE_NOT_PURCH' THEN
3289 l_msg:= 'INL_ERR_CHK_VEN_SITE_NP';
3290 ELSE
3291 l_msg:= 'INL_ERR_CHK_VEN_SITE_INV';
3292 END IF;
3293 INL_LOGGING_PVT.Log_Variable (
3294 p_module_name => g_module_name,
3295 p_procedure_name => l_program_name,
3296 p_var_name => 'l_msg',
3297 p_var_value => l_msg);
3298
3299 IF l_sl_parties_lst(i).how_many = 1 THEN
3300 l_ln_num:= l_sl_parties_lst(i).max_ship_line_num;
3301 ELSIF l_sl_parties_lst(i).how_many > 1 THEN
3302 --Getting the affected lines
3303 INL_LOGGING_PVT.Log_Statement (
3304 p_module_name => g_module_name,
3305 p_procedure_name => l_program_name,
3306 p_debug_info => 'Getting the affected lines') ;
3307
3308 l_ln_num:=NULL;
3309 OPEN c_sl_num (l_sl_parties_lst(i).party_site_id);
3310 FETCH c_sl_num BULK COLLECT INTO l_sl_num_lst;
3311 CLOSE c_sl_num;
3312 l_debug_info := l_sl_num_lst.LAST||' lines have been retrieved.';
3313 INL_LOGGING_PVT.Log_Statement (
3314 p_module_name => g_module_name,
3315 p_procedure_name => l_program_name,
3316 p_debug_info => l_debug_info
3317 ) ;
3318 IF NVL (l_sl_num_lst.LAST, 0) > 0 THEN
3319 FOR j IN NVL (l_sl_num_lst.FIRST, 0) ..NVL (l_sl_num_lst.LAST, 0)
3320 LOOP
3321 IF NVL(LENGTH(l_ln_num),0)+NVL(LENGTH(l_sl_num_lst(j).ship_line_num),0) < 200 THEN
3322 l_ln_num:=l_ln_num||l_sl_num_lst(j).ship_line_num||',';
3323 ELSE
3324 EXIT;
3325 END IF;
3326 END LOOP;
3327 IF LENGTH(l_ln_num)>2 THEN
3328 l_ln_num:=SUBSTR(l_ln_num,1,LENGTH(l_ln_num)-1);
3329 END IF;
3330 INL_LOGGING_PVT.Log_Variable (
3331 p_module_name => g_module_name,
3332 p_procedure_name => l_program_name,
3333 p_var_name => 'l_ln_num',
3334 p_var_value => l_ln_num);
3335
3336 END IF;
3337 ELSE
3338 l_ln_num:=NULL;
3339 END IF;
3340 FND_MESSAGE.SET_NAME ('INL', l_msg) ;
3341 FND_MESSAGE.SET_TOKEN ('P_LN_GROUP_NUM', p_ln_group_num) ;
3342 FND_MESSAGE.SET_TOKEN ('P_VENDOR_SITE_CODE', l_sl_parties_lst(i).vendor_site_code) ;
3343 FND_MESSAGE.SET_TOKEN ('P_LINES', l_ln_num) ;
3344 FND_MSG_PUB.ADD;
3345 Handle_ShipError (
3346 p_ship_header_id => p_ship_header_id,
3347 p_ship_line_id => NULL,
3348 p_charge_line_id => NULL,
3349 p_table_name => 'INL_SHIP_LINE_GROUPS',
3350 p_column_name => 'PARTY_SITE_ID',
3351 p_column_value => p_party_site_id,
3352 p_error_message => SUBSTR (FND_MSG_PUB.Get (
3353 p_msg_index => FND_MSG_PUB.Count_Msg (),
3354 p_encoded => L_FND_FALSE), 1, 2000),
3355 p_error_message_name => l_msg,
3356 p_token1_name => 'P_LN_GROUP_NUM',
3357 p_token1_value => p_ln_group_num,
3358 p_token2_name => 'P_VENDOR_SITE_CODE',
3359 p_token2_value => l_sl_parties_lst(i).vendor_site_code,
3360 p_token3_name => 'P_LINES',
3361 p_token3_value => l_ln_num,
3362 p_token4_name => NULL,
3363 p_token4_value => NULL,
3364 p_token5_name => NULL,
3365 p_token5_value => NULL,
3366 p_token6_name => NULL,
3367 p_token6_value => NULL,
3368 x_return_status => l_return_status);
3369
3370 -- If unexpected errors happen abort
3371 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
3372 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3373 END IF;
3374
3375 END IF;
3376 END IF;
3377 -- Based on rcv_roi_header.validate_vendor_site_info: checking vendor site END
3378
3379 END IF;
3380 END LOOP;
3381 END IF;
3382 INL_LOGGING_PVT.Log_EndProc (
3383 p_module_name => g_module_name,
3384 p_procedure_name => l_program_name) ;
3385 --Bug#13987019 END
3386 EXCEPTION
3387 WHEN L_FND_EXC_ERROR THEN
3388 -- Standard Expected Error Logging
3389 INL_LOGGING_PVT.Log_ExpecError (
3390 p_module_name => g_module_name,
3391 p_procedure_name => l_program_name) ;
3392 x_return_status := L_FND_RET_STS_ERROR;
3393 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
3394 -- Standard Unexpected Error Logging
3395 INL_LOGGING_PVT.Log_UnexpecError (
3396 p_module_name => g_module_name,
3397 p_procedure_name => l_program_name) ;
3398 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
3399 WHEN OTHERS THEN
3400 -- Standard Unexpected Error Logging
3401 INL_LOGGING_PVT.Log_UnexpecError (
3402 p_module_name => g_module_name,
3403 p_procedure_name => l_program_name) ;
3404 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
3405 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3406 FND_MSG_PUB.Add_Exc_Msg (
3407 p_pkg_name => g_pkg_name,
3408 p_procedure_name => l_program_name) ;
3409 END IF;
3410 END Validate_LineGroup;
3411
3412 -- Bug #8928896
3413 -- Utility name : Validate_AllocEnabledFlag
3414 -- Type : Private
3415 -- Function : Check if exists associations for the Ship Line Type for which
3416 -- Associable flag is disabled.
3417 -- Pre-reqs : None
3418 -- Parameters :
3419 -- IN : p_ship_header_id IN NUMBER
3420 -- p_alloc_enabled_flag IN VARCHAR2
3421 -- p_ship_line_type_code IN VARCHAR2
3422 -- p_ship_line_id IN NUMBER
3423 -- p_ship_line_num IN NUMBER
3424 -- OUT : x_return_status OUT NOCOPY VARCHAR2
3425 --
3426 -- Version : Current version 1.0
3427 --
3428 -- Notes :
3429
3430 PROCEDURE Validate_AllocEnabledFlag(
3431 p_ship_header_id IN NUMBER,
3432 p_alloc_enabled_flag IN VARCHAR2,
3433 p_ship_line_type_code IN VARCHAR2,
3434 p_ship_line_id IN NUMBER,
3435 p_ship_line_num IN NUMBER,
3436 x_return_status OUT NOCOPY VARCHAR2
3437 )IS
3438
3439 l_program_name VARCHAR2 (200) := 'Validate_AllocEnabledFlag';
3440 l_count_associations NUMBER;
3441 l_debug_info VARCHAR2 (400);
3442 l_return_status VARCHAR2 (1) := L_FND_RET_STS_SUCCESS;
3443
3444 BEGIN
3445
3446 INL_LOGGING_PVT.Log_BeginProc(
3447 p_module_name => g_module_name,
3448 p_procedure_name => l_program_name);
3449
3450 x_return_status := L_FND_RET_STS_SUCCESS;
3451
3452 INL_LOGGING_PVT.Log_Variable (
3453 p_module_name => g_module_name,
3454 p_procedure_name => l_program_name,
3455 p_var_name => 'p_ship_header_id',
3456 p_var_value => p_ship_header_id);
3457
3458 INL_LOGGING_PVT.Log_Variable (
3459 p_module_name => g_module_name,
3460 p_procedure_name => l_program_name,
3461 p_var_name => 'p_ship_line_type_code',
3462 p_var_value => p_ship_line_type_code) ;
3463
3464 INL_LOGGING_PVT.Log_Variable (
3465 p_module_name => g_module_name,
3466 p_procedure_name => l_program_name,
3467 p_var_name => 'p_ship_line_id',
3468 p_var_value => p_ship_line_id) ;
3469
3470 INL_LOGGING_PVT.Log_Variable (
3471 p_module_name => g_module_name,
3472 p_procedure_name => l_program_name,
3473 p_var_name => 'p_alloc_enabled_flag',
3474 p_var_value => p_alloc_enabled_flag) ;
3475
3476 IF p_alloc_enabled_flag = 'N' THEN
3477 -- Check if ship lines is associable to other line
3478 SELECT NVL(COUNT(1),0)
3479 INTO l_count_associations
3480 FROM inl_associations ia
3481 WHERE ship_header_id = p_ship_header_id
3482 AND ia.from_parent_table_name = 'INL_SHIP_LINES'
3483 AND ia.from_parent_table_id = p_ship_line_id;
3484
3485 INL_LOGGING_PVT.Log_Variable (
3486 p_module_name => g_module_name,
3487 p_procedure_name => l_program_name,
3488 p_var_name => 'l_count_associations',
3489 p_var_value => l_count_associations) ;
3490
3491 IF l_count_associations > 0 THEN
3492 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_ASSOC_ALLOC_FLAG_DISAB') ;
3493 FND_MESSAGE.SET_TOKEN ('SHIPLN_NUM', p_ship_line_num) ;
3494 FND_MESSAGE.SET_TOKEN ('SHIPLN_TYPE', p_ship_line_type_code) ;
3495 FND_MSG_PUB.ADD;
3496 -- INCLUDE A LINE IN INL_SHIP_HOLDS
3497 Handle_ShipError (
3498 p_ship_header_id => p_ship_header_id,
3499 p_ship_line_id => p_ship_line_id,
3500 p_charge_line_id => NULL,
3501 p_table_name => 'INL_SHIP_LINES',
3502 p_column_name => 'SHIP_LINE_TYPE_ID',
3503 p_column_value => 0,
3504 p_error_message => SUBSTR (FND_MSG_PUB.Get (
3505 p_msg_index => FND_MSG_PUB.Count_Msg (),
3506 p_encoded => L_FND_FALSE), 1, 2000),
3507 p_error_message_name => 'INL_ERR_ASSOC_ALLOC_FLAG_DISAB',
3508 p_token1_name => 'SHIPLN_NUM',
3509 p_token1_value => p_ship_line_num,
3510 p_token2_name => 'SHIPLN_TYPE',
3511 p_token2_value => p_ship_line_type_code,
3512 p_token3_name => NULL,
3513 p_token3_value => NULL,
3514 p_token4_name => NULL,
3515 p_token4_value => NULL,
3516 p_token5_name => NULL,
3517 p_token5_value => NULL,
3518 p_token6_name => NULL,
3519 p_token6_value => NULL,
3520 x_return_status => l_return_status);
3521 END IF;
3522 END IF;
3523
3524 INL_LOGGING_PVT.Log_EndProc (
3525 p_module_name => g_module_name,
3526 p_procedure_name => l_program_name) ;
3527 EXCEPTION
3528 WHEN L_FND_EXC_ERROR THEN
3529 x_return_status := L_FND_RET_STS_ERROR;
3530 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
3531 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
3532 WHEN OTHERS THEN
3533 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
3534 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3535 FND_MSG_PUB.Add_Exc_Msg (
3536 p_pkg_name => g_pkg_name,
3537 p_procedure_name => l_program_name) ;
3538 END IF;
3539 END Validate_AllocEnabledFlag;
3540
3541 -- Utility name : Validate_ShipLine
3542 -- Type : Private
3543 -- Function : Validate Shipment Line
3544 -- Pre-reqs : None
3545 -- Parameters :
3546 -- IN : p_ship_header_id IN NUMBER
3547 -- p_rcv_enabled_flag IN VARCHAR2
3548 -- p_ln_group_id IN NUMBER
3549 -- p_functional_currency_code IN VARCHAR2
3550 -- p_foreign_currency_flag IN VARCHAR2
3551 -- p_organization_id IN NUMBER
3552 -- p_country_code_location IN VARCHAR2
3553 -- p_third_parties_allowed IN VARCHAR2
3554 --
3555 -- OUT : x_return_status OUT NOCOPY VARCHAR2
3556 --
3557 -- Version : Current version 1.0
3558 --
3559 -- Notes :
3560 PROCEDURE Validate_ShipLine (
3561 p_ship_header_id IN NUMBER,
3562 p_rcv_enabled_flag IN VARCHAR2,
3563 p_ln_group_id IN NUMBER,
3564 p_functional_currency_code IN VARCHAR2,
3565 p_foreign_currency_flag IN VARCHAR2,
3566 p_organization_id IN NUMBER,
3567 p_country_code_location IN VARCHAR2,
3568 p_third_parties_allowed IN VARCHAR2,
3569 x_return_status OUT NOCOPY VARCHAR2
3570 ) IS
3571 l_program_name CONSTANT VARCHAR2 (30) := 'Validate_ShipLine';
3572 l_return_status VARCHAR2 (1) := L_FND_RET_STS_SUCCESS;
3573 l_debug_info VARCHAR2 (200);
3574
3575
3576 l_ch_line_tot_amt_func_curr NUMBER;
3577 l_pre_receive VARCHAR2 (1) ;
3578 l_return_validation_status VARCHAR2(30); -- SCM-051
3579
3580 -- Bug 13401780
3581 l_closed_code VARCHAR2(20);
3582 l_ship_line_num VARCHAR2(20);
3583 l_ship_ln_grp_num VARCHAR2(20) ;
3584 -- Bug 13401780
3585
3586 CURSOR c_ship_lines IS
3587 -- Bug 9814099 (Removed unecessary join with inl_ship_line_types_b)
3588 SELECT ol.ship_line_id,
3589 ol.ship_line_num,
3590 ol.ship_line_src_type_code,
3591 ol.ship_line_source_id,
3592 ol.inventory_item_id,
3593 (SELECT SUM (a.primary_qty)
3594 FROM inl_adj_ship_lines_v a
3595 WHERE a.ship_header_id = ol.ship_header_id
3596 AND a.ship_line_source_id = ol.ship_line_source_id) AS sum_primary_qty,
3597 ol.primary_qty,
3598 ol.primary_unit_price,
3599 ol.primary_uom_code,
3600 ol.txn_uom_code,
3601 ol.currency_code,
3602 ol.currency_conversion_type,
3603 ol.currency_conversion_date,
3604 ol.currency_conversion_rate,
3605 'INL_SHIP_LINES' to_parent_table_name
3606 FROM inl_adj_ship_lines_v ol
3607 WHERE ol.ship_header_id = p_ship_header_id
3608 AND ol.ship_line_group_id = p_ln_group_id
3609 ORDER BY ol.ship_line_num;
3610 l_ship_lines_rec c_ship_lines%ROWTYPE;
3611 BEGIN
3612 INL_LOGGING_PVT.Log_BeginProc ( p_module_name => g_module_name,
3613 p_procedure_name => l_program_name) ;
3614 x_return_status := L_FND_RET_STS_SUCCESS;
3615 FOR l_ship_lines_rec IN c_ship_lines
3616 LOOP
3617 l_debug_info := 'Validate Charge Line. Call Validate_ChargeLine';
3618 INL_LOGGING_PVT.Log_Statement (
3619 p_module_name => g_module_name,
3620 p_procedure_name => l_program_name,
3621 p_debug_info => l_debug_info) ;
3622 Validate_ChargeLine (
3623 p_ship_header_id => p_ship_header_id,
3624 p_to_parent_table_name => l_ship_lines_rec.to_parent_table_name,
3625 p_to_parent_table_id => l_ship_lines_rec.ship_line_id,
3626 p_functional_currency_code => p_functional_currency_code,
3627 p_foreign_currency_flag => p_foreign_currency_flag,
3628 p_third_parties_allowed => p_third_parties_allowed,
3629 x_ch_line_tot_amt_func_curr => l_ch_line_tot_amt_func_curr,
3630 x_return_status => l_return_status);
3631 -- If unexpected errors happen abort API
3632 IF l_return_status = L_FND_RET_STS_ERROR THEN
3633 x_return_status := l_return_status;
3634 RAISE L_FND_EXC_ERROR;
3635 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
3636 x_return_status := l_return_status;
3637 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3638 END IF;
3639 l_debug_info := 'Getting which scenartio is setup in RCV Parameters. Pre_Receive or BlackBox';
3640 INL_LOGGING_PVT.Log_Statement (
3641 p_module_name => g_module_name,
3642 p_procedure_name => l_program_name,
3643 p_debug_info => l_debug_info) ;
3644 SELECT pre_receive
3645 INTO l_pre_receive
3646 FROM rcv_parameters
3647 WHERE organization_id = p_organization_id;
3648
3649 -- Bug 13401780 starts here - Added code to validate if the PO line is CLOSED FOR RECEIVING or NOT
3650
3651 INL_LOGGING_PVT.Log_Variable (
3652 p_module_name => g_module_name,
3653 p_procedure_name => l_program_name,
3654 p_var_name => 'Profile Option - RCV_CLOSED_PO_DEFAULT_OPTION',
3655 p_var_value => FND_PROFILE.VALUE('RCV_CLOSED_PO_DEFAULT_OPTION')) ;
3656
3657 SELECT DECODE(FND_PROFILE.VALUE('RCV_CLOSED_PO_DEFAULT_OPTION'),'N',NVL(pll.closed_code,'OPEN'), 'OPEN')
3658 INTO l_closed_code
3659 FROM po_line_locations pll
3660 WHERE pll.line_location_id= l_ship_lines_rec.ship_line_source_id;
3661
3662 INL_LOGGING_PVT.Log_Variable (
3663 p_module_name => g_module_name,
3664 p_procedure_name => l_program_name,
3665 p_var_name => 'l_closed_code',
3666 p_var_value => l_closed_code) ;
3667
3668 IF l_closed_code <> 'OPEN' THEN
3669
3670 SELECT isl.ship_line_num, islg.ship_line_group_num
3671 INTO l_ship_line_num,l_ship_ln_grp_num
3672 FROM inl_ship_lines isl,
3673 inl_ship_line_groups islg
3674 WHERE isl.ship_line_group_id=islg.ship_line_group_id
3675 AND isl.ship_line_id = l_ship_lines_rec.ship_line_id
3676 AND isl.ship_header_id = p_ship_header_id;
3677
3678 INL_LOGGING_PVT.Log_Variable (
3679 p_module_name => g_module_name,
3680 p_procedure_name => l_program_name,
3681 p_var_name => 'l_ship_line_num',
3682 p_var_value => l_ship_line_num) ;
3683
3684 INL_LOGGING_PVT.Log_Variable (
3685 p_module_name => g_module_name,
3686 p_procedure_name => l_program_name,
3687 p_var_name => 'l_ship_ln_grp_num',
3688 p_var_value => l_ship_ln_grp_num) ;
3689
3690 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_LOC_CLOSE_CODE') ;
3691 FND_MESSAGE.SET_TOKEN ('LNGRP_NUM', l_ship_ln_grp_num) ;
3692 FND_MESSAGE.SET_TOKEN ('SHIPLN_NUM', l_ship_line_num) ;
3693 FND_MSG_PUB.ADD;
3694 l_debug_info := 'Line Location is not in OPEN status';
3695
3696 INL_LOGGING_PVT.Log_Statement (
3697 p_module_name => g_pkg_name,
3698 p_procedure_name => l_program_name,
3699 p_debug_info => l_debug_info) ;
3700 INL_LOGGING_PVT.Log_Variable (
3701 p_module_name => g_module_name,
3702 p_procedure_name => l_program_name,
3703 p_var_name => 'l_ship_lines_rec.ship_line_source_id',
3704 p_var_value => l_ship_lines_rec.ship_line_source_id) ;
3705 -- INCLUDE A LINE IN INL_SHIP_HOLdS
3706 Handle_ShipError (
3707 p_ship_header_id => p_ship_header_id,
3708 p_ship_line_id => NULL,
3709 p_charge_line_id => NULL,
3710 p_table_name => 'INL_SHIP_LINES',
3711 p_column_name => 'SHIP_LINE_SOURCE_ID',
3712 p_column_value => l_ship_lines_rec.ship_line_source_id,
3713 p_error_message => SUBSTR (FND_MSG_PUB.Get (
3714 p_msg_index => FND_MSG_PUB.Count_Msg (),
3715 p_encoded => L_FND_FALSE), 1, 2000),
3716 p_error_message_name => 'INL_ERR_CHK_LOC_CLOSE_CODE',
3717 p_token1_name => 'LNGRP_NUM',
3718 p_token1_value => l_ship_ln_grp_num,
3719 p_token2_name => 'SHIPLN_NUM',
3720 p_token2_value => l_ship_line_num,
3721 p_token3_name => NULL,
3722 p_token3_value => NULL,
3723 p_token4_name => NULL,
3724 p_token4_value => NULL,
3725 p_token5_name => NULL,
3726 p_token5_value => NULL,
3727 p_token6_name => NULL,
3728 p_token6_value => NULL,
3729 x_return_status => l_return_status) ;
3730 -- If unexpected errors happen abort
3731 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
3732 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3733 END IF;
3734 END IF;
3735
3736 -- Bug 13401780 ends
3737
3738 -- Just validate PO Available Qty for Pre-Receive scenario
3739 -- In Blackbox, RCV handles this validation
3740 IF (NVL (l_pre_receive, 'N') = 'Y') THEN
3741 IF p_rcv_enabled_flag = 'Y' THEN
3742 l_debug_info := 'Call to Check_AvailableQty';
3743 INL_LOGGING_PVT.Log_Statement (
3744 p_module_name => g_module_name,
3745 p_procedure_name => l_program_name,
3746 p_debug_info => l_debug_info) ;
3747 Check_AvailableQty (
3748 l_ship_lines_rec.primary_qty,
3749 l_ship_lines_rec.sum_primary_qty,
3750 l_ship_lines_rec.primary_uom_code,
3751 l_ship_lines_rec.txn_uom_code,
3752 l_ship_lines_rec.inventory_item_id,
3753 p_organization_id,
3754 l_ship_lines_rec.ship_line_id,
3755 l_ship_lines_rec.ship_line_num,
3756 l_ship_lines_rec.ship_line_src_type_code,
3757 l_ship_lines_rec.ship_line_source_id,
3758 NULL,
3759 p_ship_header_id,
3760 l_return_status) ;
3761 -- If unexpected errors happen abort API
3762 IF l_return_status = L_FND_RET_STS_ERROR THEN
3763 x_return_status := l_return_status;
3764 RAISE L_FND_EXC_ERROR;
3765 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
3766 x_return_status := l_return_status;
3767 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3768 END IF;
3769 END IF;
3770
3771 IF l_ship_lines_rec.ship_line_src_type_code = 'PO' THEN
3772
3773 l_debug_info := 'Call to Validate_SrcOperatingUnit';
3774 INL_LOGGING_PVT.Log_Statement (
3775 p_module_name => g_module_name,
3776 p_procedure_name => l_program_name,
3777 p_debug_info => l_debug_info) ;
3778 Validate_SrcOperatingUnit(
3779 p_ship_header_id => p_ship_header_id,
3780 p_ship_line_id => l_ship_lines_rec.ship_line_id,
3781 p_ship_line_num => l_ship_lines_rec.ship_line_num,
3782 x_return_status => l_return_status);
3783 -- If unexpected errors happen abort API
3784 IF l_return_status = L_FND_RET_STS_ERROR THEN
3785 x_return_status := l_return_status;
3786 RAISE L_FND_EXC_ERROR;
3787 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
3788 x_return_status := l_return_status;
3789 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3790 END IF;
3791 END IF;
3792 END IF;
3793 -- Required validation only for Source Type Code = PO
3794 IF l_ship_lines_rec.ship_line_src_type_code = 'PO' AND
3795 p_rcv_enabled_flag = 'Y' THEN
3796 l_debug_info := 'Call Check_PoPriceTolerance';
3797 INL_LOGGING_PVT.Log_Statement (
3798 p_module_name => g_module_name,
3799 p_procedure_name => l_program_name,
3800 p_debug_info => l_debug_info) ;
3801 Check_PoPriceTolerance (
3802 p_ship_header_id => p_ship_header_id,
3803 p_ship_line_id => l_ship_lines_rec.ship_line_id,
3804 p_organization_id => p_organization_id,
3805 p_ship_line_num => l_ship_lines_rec.ship_line_num,
3806 p_ship_line_src_id => l_ship_lines_rec.ship_line_source_id,
3807 p_pri_unit_price => l_ship_lines_rec.primary_unit_price,
3808 p_primary_uom_code => l_ship_lines_rec.primary_uom_code,
3809 p_currency_code => l_ship_lines_rec.currency_code,
3810 p_currency_conversion_type => l_ship_lines_rec.currency_conversion_type,
3811 p_currency_conversion_date => l_ship_lines_rec.currency_conversion_date,
3812 p_currency_conversion_rate => l_ship_lines_rec.currency_conversion_rate,
3813 x_return_validation_status => l_return_validation_status, -- SCM-051
3814 x_return_status => l_return_status
3815 ) ;
3816 -- If unexpected errors happen abort API
3817 IF l_return_status = L_FND_RET_STS_ERROR THEN
3818 x_return_status := l_return_status;
3819 RAISE L_FND_EXC_ERROR;
3820 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
3821 x_return_status := l_return_status;
3822 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3823 END IF;
3824 END IF;
3825
3826 -- Bug 9814099 - Code commented as it is wrong to validate
3827 -- allocation_enabled_flag with the value setup on INL_SHIP_LINE_TYPES.
3828 -- Allocation Enabled flag on INL_SHIP_LINE_TYPES is just used as a
3829 -- default value to INL_SHIPMENT_LINE table. The correct value to be
3830 -- used in this case would be the Allocation Enabled flag on
3831 -- INL_SHIPMENT_LINE, however this validation is automatically handled
3832 -- by the UI, so the code below would be redundant.
3833
3834 -- Bug #8928896
3835 -- Check associations when allocation enabled flag is disabled
3836 /*IF NVL(l_ship_lines_rec.dflt_allocation_enabled_flag, 'N') = 'N' THEN
3837 l_debug_info := 'Call Validate_AllocEnabledFlag';
3838 INL_LOGGING_PVT.Log_Statement (
3839 p_module_name => g_module_name,
3840 p_procedure_name => l_program_name,
3841 p_debug_info => l_debug_info) ;
3842 Validate_AllocEnabledFlag (
3843 p_ship_header_id => p_ship_header_id,
3844 p_alloc_enabled_flag => l_ship_lines_rec.dflt_allocation_enabled_flag,
3845 p_ship_line_type_code => l_ship_lines_rec.ship_line_type_code,
3846 p_ship_line_id => l_ship_lines_rec.ship_line_id,
3847 p_ship_line_num => l_ship_lines_rec.ship_line_num,
3848 x_return_status => l_return_status ) ;
3849
3850 -- If unexpected errors happen abort API
3851 IF l_return_status = L_FND_RET_STS_ERROR THEN
3852 x_return_status := l_return_status;
3853 RAISE L_FND_EXC_ERROR;
3854 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
3855 x_return_status := l_return_status;
3856 RAISE L_FND_EXC_UNEXPECTED_ERROR;
3857 END IF;
3858 END IF;*/
3859 -- Bug /#8928896
3860
3861 END LOOP;
3862 INL_LOGGING_PVT.Log_EndProc (
3863 p_module_name => g_module_name,
3864 p_procedure_name => l_program_name) ;
3865 EXCEPTION
3866 WHEN L_FND_EXC_ERROR THEN
3867 -- Standard Expected Error Logging
3868 INL_LOGGING_PVT.Log_ExpecError (
3869 p_module_name => g_module_name,
3870 p_procedure_name => l_program_name) ;
3871 x_return_status := L_FND_RET_STS_ERROR;
3872 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
3873 -- Standard Unexpected Error Logging
3874 INL_LOGGING_PVT.Log_UnexpecError (
3875 p_module_name => g_module_name,
3876 p_procedure_name => l_program_name) ;
3877 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
3878 WHEN OTHERS THEN
3879 -- Standard Unexpected Error Logging
3880 INL_LOGGING_PVT.Log_UnexpecError (
3881 p_module_name => g_module_name,
3882 p_procedure_name => l_program_name) ;
3883 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
3884 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3885 FND_MSG_PUB.Add_Exc_Msg (
3886 p_pkg_name => g_pkg_name,
3887 p_procedure_name => l_program_name) ;
3888 END IF;
3889 END Validate_ShipLine;
3890 -- Utility name : Validate_ShipHdr
3891 -- Type : Private
3892 -- Function : Validate Shipment Header
3893 -- Pre-reqs : None
3894 -- Parameters :
3895 -- IN : p_ship_header_id IN NUMBER
3896 -- OUT : x_return_status OUT NOCOPY VARCHAR2
3897 --
3898 -- Version : Current version 1.0
3899 --
3900 -- Notes :
3901 PROCEDURE Validate_ShipHdr (
3902 p_ship_header_id IN NUMBER,
3903 p_task_code IN VARCHAR2,--Bug#9836174
3904 x_return_status OUT NOCOPY VARCHAR2
3905 ) IS
3906 l_program_name CONSTANT VARCHAR2 (30) := 'Validate_ShipHdr';
3907 l_return_status VARCHAR2 (1) := L_FND_RET_STS_SUCCESS;
3908 l_debug_info VARCHAR2 (200);
3909 l_ship_type_id NUMBER;
3910 l_ship_status VARCHAR2 (30);
3911 l_inv_org_id NUMBER;
3912 l_ship_date DATE;
3913 l_error_type VARCHAR2 (3);
3914 l_pending_matching_flag VARCHAR2 (1);
3915 l_sob_id NUMBER (15);
3916 l_comp_num VARCHAR2 (50) ;
3917 l_func_curr_code VARCHAR2 (15);
3918 l_ship_type_code VARCHAR2 (15);
3919 l_shipt_third_parties_allowed VARCHAR2 (1);
3920 l_in_adjust_flag VARCHAR2 (1);
3921 l_location_id NUMBER;
3922 l_error_message_name VARCHAR2 (200);
3923 l_error_token_name VARCHAR2 (200);
3924 l_country_code_location VARCHAR2 (100);
3925 l_taxation_country VARCHAR2(30); -- Bug #8271690
3926 l_rcv_enabled_flag VARCHAR2(1);
3927 l_sysdate date := sysdate; --Bug#9836174
3928 l_group_line_num NUMBER; --Bug #12630218
3929 CURSOR c_ln_group IS
3930 SELECT ship_line_group_num, ship_line_group_id, lg.party_id, lg.party_site_id,
3931 lg.ship_line_group_reference, hps.party_site_name
3932 FROM inl_ship_line_groups lg,
3933 hz_party_sites hps
3934 WHERE hps.party_site_id = lg.party_site_id
3935 AND ship_header_id = p_ship_header_id
3936 ORDER BY ship_line_group_num;
3937 BEGIN
3938 INL_LOGGING_PVT.Log_BeginProc (
3939 p_module_name => g_module_name,
3940 p_procedure_name => l_program_name) ;
3941 x_return_status := L_FND_RET_STS_SUCCESS;
3942 l_debug_info := 'Get Shipment Header and Shipment Type information';
3943 INL_LOGGING_PVT.Log_Statement (
3944 p_module_name => g_module_name,
3945 p_procedure_name => l_program_name,
3946 p_debug_info => l_debug_info) ;
3947 SELECT shipt.ship_type_id,
3948 shipt.ship_type_code,
3949 shipt.trd_pties_alwd_code,
3950 NVL(sh.rcv_enabled_flag,'Y') rcv_enabled_flag, -- dependence
3951 sh.ship_status_code,
3952 sh.organization_id,
3953 sh.location_id,
3954 sh.ship_date,
3955 sh.pending_matching_flag,
3956 sh.taxation_country -- Bug #8271690
3957 INTO l_ship_type_id,
3958 l_ship_type_code,
3959 l_shipt_third_parties_allowed,
3960 l_rcv_enabled_flag,
3961 l_ship_status,
3962 l_inv_org_id,
3963 l_location_id,
3964 l_ship_date,
3965 l_pending_matching_flag,
3966 l_taxation_country
3967 FROM inl_ship_headers_all sh,
3968 inl_ship_types_vl shipt
3969 WHERE sh.ship_type_id = shipt.ship_type_id
3970 AND sh.ship_header_id = p_ship_header_id;
3971 IF l_ship_status = 'COMPLETED' AND l_pending_matching_flag = 'Y' THEN
3972 l_in_adjust_flag := 'Y';
3973 ELSE
3974 l_in_adjust_flag := 'N';
3975 --Bug#9836174 BEGIN
3976 IF l_rcv_enabled_flag = 'Y'
3977 AND p_task_code > '50'
3978 AND TRUNC(l_ship_date) > l_sysdate
3979 THEN
3980
3981 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_RCV_SHIP_DATE') ;
3982 FND_MSG_PUB.ADD;
3983 l_debug_info := 'Shipment date greater than current date.';
3984 INL_LOGGING_PVT.Log_Statement (
3985 p_module_name => g_pkg_name,
3986 p_procedure_name => l_program_name,
3987 p_debug_info => l_debug_info) ;
3988 INL_LOGGING_PVT.Log_Variable (
3989 p_module_name => g_module_name,
3990 p_procedure_name => l_program_name,
3991 p_var_name => 'l_ship_date',
3992 p_var_value => TO_CHAR (l_ship_date)) ;
3993 -- INCLUDE A LINE IN INL_SHIP_HOLdS
3994 Handle_ShipError (
3995 p_ship_header_id => p_ship_header_id,
3996 p_ship_line_id => NULL,
3997 p_charge_line_id => NULL,
3998 p_table_name => 'INL_SHIP_HEADERS',
3999 p_column_name => 'SHIP_DATE',
4000 p_column_value => TO_CHAR (l_ship_date),
4001 p_error_message => SUBSTR (FND_MSG_PUB.Get (
4002 p_msg_index => FND_MSG_PUB.Count_Msg (),
4003 p_encoded => L_FND_FALSE), 1, 2000),
4004 p_error_message_name => 'INL_ERR_CHK_RCV_SHIP_DATE',
4005 p_token1_name => NULL,
4006 p_token1_value => NULL,
4007 p_token2_name => NULL,
4008 p_token2_value => NULL,
4009 p_token3_name => NULL,
4010 p_token3_value => NULL,
4011 p_token4_name => NULL,
4012 p_token4_value => NULL,
4013 p_token5_name => NULL,
4014 p_token5_value => NULL,
4015 p_token6_name => NULL,
4016 p_token6_value => NULL,
4017 x_return_status => l_return_status) ;
4018 -- If unexpected errors happen abort
4019 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
4020 RAISE L_FND_EXC_UNEXPECTED_ERROR;
4021 END IF;
4022 END IF;
4023 --Bug#9836174 END
4024
4025 END IF;
4026 l_debug_info := 'Get Set of Books by a given Inventory Organization';
4027 INL_LOGGING_PVT.Log_Statement (
4028 p_module_name => g_module_name,
4029 p_procedure_name => l_program_name,
4030 p_debug_info => l_debug_info) ;
4031 SELECT set_of_books_id
4032 INTO l_sob_id
4033 FROM org_organization_definitions ood
4034 WHERE organization_id = l_inv_org_id;
4035 l_debug_info := 'Check Shipment Date against the Inventory Open Period';
4036 INL_LOGGING_PVT.Log_Statement (
4037 p_module_name => g_module_name,
4038 p_procedure_name => l_program_name,
4039 p_debug_info => l_debug_info) ;
4040 IF l_rcv_enabled_flag = 'Y' THEN
4041 IF Validate_InvOpenPeriod (
4042 x_trx_date => TO_CHAR (l_ship_date, 'YYYY-MM-DD'),
4043 x_sob_id => l_sob_id,
4044 x_org_id => l_inv_org_id,
4045 x_return_status => l_return_status) = 'FALSE'
4046 THEN
4047 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_INV_SHIP_DATE') ;
4048 FND_MESSAGE.SET_TOKEN ('SHIP_DATE', TO_CHAR (l_ship_date)) ;
4049 FND_MSG_PUB.ADD;
4050 l_debug_info := 'Transaction period is not open in Inventory.';
4051 INL_LOGGING_PVT.Log_Statement (
4052 p_module_name => g_pkg_name,
4053 p_procedure_name => l_program_name,
4054 p_debug_info => l_debug_info) ;
4055 INL_LOGGING_PVT.Log_Variable (
4056 p_module_name => g_module_name,
4057 p_procedure_name => l_program_name,
4058 p_var_name => 'l_ship_date',
4059 p_var_value => TO_CHAR (l_ship_date)) ;
4060 -- INCLUDE A LINE IN INL_SHIP_HOLdS
4061 Handle_ShipError (
4062 p_ship_header_id => p_ship_header_id,
4063 p_ship_line_id => NULL,
4064 p_charge_line_id => NULL,
4065 p_table_name => 'INL_SHIP_HEADERS',
4066 p_column_name => 'SHIP_DATE',
4067 p_column_value => TO_CHAR (l_ship_date),
4068 p_error_message => SUBSTR (FND_MSG_PUB.Get (
4069 p_msg_index => FND_MSG_PUB.Count_Msg (),
4070 p_encoded => L_FND_FALSE), 1, 2000),
4071 p_error_message_name => 'INL_ERR_CHK_INV_SHIP_DATE',
4072 p_token1_name => 'SHIP_DATE',
4073 p_token1_value => TO_CHAR (l_ship_date),
4074 p_token2_name => NULL,
4075 p_token2_value => NULL,
4076 p_token3_name => NULL,
4077 p_token3_value => NULL,
4078 p_token4_name => NULL,
4079 p_token4_value => NULL,
4080 p_token5_name => NULL,
4081 p_token5_value => NULL,
4082 p_token6_name => NULL,
4083 p_token6_value => NULL,
4084 x_return_status => l_return_status) ;
4085 -- If unexpected errors happen abort
4086 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
4087 RAISE L_FND_EXC_UNEXPECTED_ERROR;
4088 END IF;
4089 END IF;
4090 END IF;
4091
4092 l_debug_info := 'Check if the current Shipment has Shipment Lines for each Group';
4093 INL_LOGGING_PVT.Log_Statement (
4094 p_module_name => g_module_name,
4095 p_procedure_name => l_program_name,
4096 p_debug_info => l_debug_info) ;
4097 IF (NOT Has_ShipLine (p_ship_header_id, l_group_line_num)) THEN -- Bug #12630218
4098 IF l_group_line_num IS NOT NULL THEN
4099 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_NO_SHIP_LN_GRP_NUM');
4100 FND_MESSAGE.SET_TOKEN('LINE_GROUP_NUM',l_group_line_num);
4101 FND_MSG_PUB.ADD;
4102 -- INCLUDE A LINE IN INL_SHIP_HOLDS
4103 Handle_ShipError (
4104 p_ship_header_id => p_ship_header_id,
4105 p_ship_line_id => NULL,
4106 p_charge_line_id => NULL,
4107 p_table_name => 'INL_SHIP_HEADERS',
4108 p_column_name => 'SHIP_TYPE_ID',
4109 p_column_value => l_ship_type_id,
4110 p_error_message => SUBSTR (FND_MSG_PUB.Get (
4111 p_msg_index => FND_MSG_PUB.Count_Msg (),
4112 p_encoded => L_FND_FALSE), 1, 2000),
4113 p_error_message_name => 'INL_ERR_CHK_NO_SHIP_LN_GRP_NUM',
4114 p_token1_name => 'LINE_GROUP_NUM',
4115 p_token1_value => l_group_line_num,
4116 p_token2_name => NULL,
4117 p_token2_value => NULL,
4118 p_token3_name => NULL,
4119 p_token3_value => NULL,
4120 p_token4_name => NULL,
4121 p_token4_value => NULL,
4122 p_token5_name => NULL,
4123 p_token5_value => NULL,
4124 p_token6_name => NULL,
4125 p_token6_value => NULL,
4126 x_return_status => l_return_status) ;
4127 -- If unexpected errors happen abort
4128 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
4129 RAISE L_FND_EXC_UNEXPECTED_ERROR;
4130 END IF;
4131 ELSE -- Bug 12630218 Shipment has no Group Lines
4132 FND_MESSAGE.SET_NAME ('INL', 'INL_ERR_CHK_NO_SHIP_LN');
4133 FND_MSG_PUB.ADD;
4134 -- INCLUDE A LINE IN INL_SHIP_HOLDS
4135 Handle_ShipError (
4136 p_ship_header_id => p_ship_header_id,
4137 p_ship_line_id => NULL,
4138 p_charge_line_id => NULL,
4139 p_table_name => 'INL_SHIP_HEADERS',
4140 p_column_name => 'SHIP_TYPE_ID',
4141 p_column_value => l_ship_type_id,
4142 p_error_message => SUBSTR (FND_MSG_PUB.Get (
4143 p_msg_index => FND_MSG_PUB.Count_Msg (),
4144 p_encoded => L_FND_FALSE), 1, 2000),
4145 p_error_message_name => 'INL_ERR_CHK_NO_SHIP_LN',
4146 p_token1_name => NULL,
4147 p_token1_value => NULL,
4148 p_token2_name => NULL,
4149 p_token2_value => NULL,
4150 p_token3_name => NULL,
4151 p_token3_value => NULL,
4152 p_token4_name => NULL,
4153 p_token4_value => NULL,
4154 p_token5_name => NULL,
4155 p_token5_value => NULL,
4156 p_token6_name => NULL,
4157 p_token6_value => NULL,
4158 x_return_status => l_return_status) ;
4159 -- If unexpected errors happen abort
4160 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
4161 RAISE L_FND_EXC_UNEXPECTED_ERROR;
4162 END IF;
4163 END IF;
4164 ELSIF l_in_adjust_flag = 'N' THEN
4165 l_debug_info := 'Get the functional currency code';
4166 INL_LOGGING_PVT.Log_Statement (
4167 p_module_name => g_pkg_name,
4168 p_procedure_name => l_program_name,
4169 p_debug_info => l_debug_info) ;
4170 SELECT gsb.currency_code
4171 INTO l_func_curr_code
4172 FROM org_organization_definitions ood,
4173 gl_sets_of_books gsb
4174 WHERE gsb.set_of_books_id = ood.set_of_books_id
4175 AND organization_id = l_inv_org_id;
4176 l_debug_info := 'Get Country from Location';
4177 INL_LOGGING_PVT.Log_Statement (
4178 p_module_name => g_module_name,
4179 p_procedure_name => l_program_name,
4180 p_debug_info => l_debug_info) ;
4181 SELECT country
4182 INTO l_country_code_location
4183 FROM hr_locations
4184 WHERE location_id = l_location_id;
4185 FOR l_ln_group_rec IN c_ln_group
4186 LOOP
4187 l_debug_info := 'Call Validate_LineGroup';
4188 INL_LOGGING_PVT.Log_Statement (
4189 p_module_name => g_module_name,
4190 p_procedure_name => l_program_name,
4191 p_debug_info => l_debug_info) ;
4192 Validate_LineGroup(
4193 p_ship_header_id => p_ship_header_id,
4194 p_ship_type_code => l_ship_type_code,
4195 p_inv_org_id => l_inv_org_id, -- Bug 15956572
4196 p_ln_group_id => l_ln_group_rec.ship_line_group_id,
4197 p_ln_group_num => l_ln_group_rec.ship_line_group_num, --Bug#13987019
4198 p_group_reference => l_ln_group_rec.ship_line_group_reference,
4199 p_party_id => l_ln_group_rec.party_id, --Bug#13987019
4200 p_party_site_id => l_ln_group_rec.party_site_id,
4201 p_party_site_name => l_ln_group_rec.party_site_name,
4202 p_taxation_country => l_taxation_country,
4203 p_third_parties_allowed => l_shipt_third_parties_allowed,
4204 x_return_status => l_return_status);
4205 -- /Bug #8271690
4206 l_debug_info := 'Call Validate_ShipLine';
4207 INL_LOGGING_PVT.Log_Statement (
4208 p_module_name => g_module_name,
4209 p_procedure_name => l_program_name,
4210 p_debug_info => l_debug_info) ;
4211 Validate_ShipLine (
4212 p_ship_header_id => p_ship_header_id,
4213 p_rcv_enabled_flag => l_rcv_enabled_flag,
4214 p_ln_group_id => l_ln_group_rec.ship_line_group_id,
4215 p_functional_currency_code => l_func_curr_code,
4216 p_foreign_currency_flag => 'Y',
4217 p_organization_id => l_inv_org_id,
4218 p_country_code_location => l_country_code_location,
4219 p_third_parties_allowed => l_shipt_third_parties_allowed,
4220 x_return_status => l_return_status) ;
4221 -- If unexpected errors happen abort API
4222 IF l_return_status = L_FND_RET_STS_ERROR THEN
4223 x_return_status := l_return_status;
4224 RAISE L_FND_EXC_ERROR;
4225 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
4226 x_return_status := l_return_status;
4227 RAISE L_FND_EXC_UNEXPECTED_ERROR;
4228 END IF;
4229 END LOOP;
4230 END IF;
4231 EXCEPTION
4232 WHEN L_FND_EXC_ERROR THEN
4233 -- Standard Expected Error Logging
4234 INL_LOGGING_PVT.Log_ExpecError (
4235 p_module_name => g_module_name,
4236 p_procedure_name => l_program_name) ;
4237 x_return_status := L_FND_RET_STS_ERROR;
4238 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
4239 -- Standard Unexpected Error Logging
4240 INL_LOGGING_PVT.Log_UnexpecError (
4241 p_module_name => g_module_name,
4242 p_procedure_name => l_program_name) ;
4243 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
4244 WHEN OTHERS THEN
4245 -- Standard Unexpected Error Logging
4246 INL_LOGGING_PVT.Log_UnexpecError (
4247 p_module_name => g_module_name,
4248 p_procedure_name => l_program_name) ;
4249 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
4250 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4251 FND_MSG_PUB.Add_Exc_Msg (
4252 p_pkg_name => g_pkg_name,
4253 p_procedure_name => l_program_name) ;
4254 END IF;
4255 END Validate_ShipHdr;
4256
4257 -- Utility name : Validate_InvOpenPeriod
4258 -- Type : Private
4259 -- Function : Check whether the Inventory Period is open
4260 -- Pre-reqs : None
4261 -- Parameters :
4262 -- IN : x_trx_date IN VARCHAR2
4263 -- x_sob_id IN NUMBER
4264 -- x_org_id IN NUMBER
4265 -- OUT : x_return_status IN OUT NOCOPY VARCHAR2
4266 --
4267 -- Version : Current version 1.0
4268 --
4269 -- Notes :
4270 FUNCTION Validate_InvOpenPeriod (
4271 x_trx_date IN VARCHAR2,
4272 x_sob_id IN NUMBER,
4273 x_org_id IN NUMBER,
4274 x_return_status IN OUT NOCOPY VARCHAR2
4275 ) RETURN VARCHAR2
4276 IS
4277 l_program_name VARCHAR2 (200) := 'Validate_InvOpenPeriod';
4278 l_boolean BOOLEAN;
4279 l_boolean_to_char VARCHAR2 (10) ;
4280 l_trx_date DATE;
4281 l_debug_info VARCHAR2 (400) ;
4282 BEGIN
4283 l_trx_date := TO_DATE (x_trx_date, 'YYYY-MM-DD') ;
4284 -- the x_return_status parameter mustn't been reseted
4285 INL_LOGGING_PVT.Log_BeginProc (
4286 p_module_name => g_module_name,
4287 p_procedure_name => l_program_name) ;
4288 -- information about the input parameters
4289 INL_LOGGING_PVT.Log_APICallIn (
4290 p_module_name => g_module_name,
4291 p_procedure_name => l_program_name,
4292 p_call_api_name => 'po_dates_s.val_open_period',
4293 p_in_param_name1 => 'x_trx_date',
4294 p_in_param_value1 => x_trx_date,
4295 p_in_param_name2 => 'x_sob_id',
4296 p_in_param_value2 => x_sob_id,
4297 p_in_param_name3 => 'x_org_id',
4298 p_in_param_value3 => x_org_id,
4299 p_in_param_name4 => 'x_return_status',
4300 p_in_param_value4 => x_return_status) ;
4301 -- Initialize API return status to success
4302 x_return_status := L_FND_RET_STS_SUCCESS;
4303 l_boolean := po_dates_s.val_open_period (
4304 x_trx_date => l_trx_date,
4305 x_sob_id => x_sob_id,
4306 x_app_name => 'INV',
4307 x_org_id => x_org_id) ;
4308 IF l_boolean THEN
4309 l_boolean_to_char := 'TRUE';
4310 ELSE
4311 l_boolean_to_char := 'FALSE';
4312 END IF;
4313 -- information about the respose
4314 INL_LOGGING_PVT.Log_APICallIn (
4315 p_module_name => g_module_name,
4316 p_procedure_name => l_program_name,
4317 p_call_api_name => 'po_dates_s.val_open_period',
4318 p_in_param_name1 => 'l_boolean_to_char',
4319 p_in_param_value1 => l_boolean_to_char) ;
4320 INL_LOGGING_PVT.Log_EndProc (
4321 p_module_name => g_module_name,
4322 p_procedure_name => l_program_name) ;
4323 RETURN l_boolean_to_char;
4324 EXCEPTION
4325 WHEN L_FND_EXC_ERROR THEN
4326 -- Standard Expected Error Logging
4327 INL_LOGGING_PVT.Log_ExpecError (
4328 p_module_name => g_module_name,
4329 p_procedure_name => l_program_name) ;
4330 x_return_status := L_FND_RET_STS_ERROR;
4331 RETURN 'FALSE';
4332 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
4333 -- Standard Unexpected Error Logging
4334 INL_LOGGING_PVT.Log_UnexpecError (
4335 p_module_name => g_module_name,
4336 p_procedure_name => l_program_name) ;
4337 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
4338 RETURN 'FALSE';
4339 WHEN OTHERS THEN
4340 -- Standard Unexpected Error Logging
4341 INL_LOGGING_PVT.Log_UnexpecError (
4342 p_module_name => g_module_name,
4343 p_procedure_name => l_program_name) ;
4344 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
4345 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4346 FND_MSG_PUB.Add_Exc_Msg (
4347 p_pkg_name => g_pkg_name,
4348 p_procedure_name => l_program_name) ;
4349 END IF;
4350 RETURN 'FALSE';
4351 END Validate_InvOpenPeriod;
4352
4353 -- API name : Validate_Shipment
4354 -- Type : Private
4355 -- Function : Controls the validation of a given LCM Shipment.
4356 -- Pre-reqs : None
4357 -- Parameters :
4358 -- IN : p_api_version IN NUMBER
4359 -- p_init_msg_list IN VARCHAR2 L_FND_FALSE
4360 -- p_commit IN VARCHAR2 L_FND_FALSE
4361 -- p_validation_level IN NUMBER L_FND_VALID_LEVEL_FULL
4362 -- p_ship_header_id IN NUMBER
4363 --
4364 -- OUT x_return_status OUT NOCOPY VARCHAR2
4365 -- x_msg_count OUT NOCOPY NUMBER
4366 -- x_msg_data OUT NOCOPY VARCHAR2
4367 --
4368 -- Version : Current version 1.0
4369 --
4370 -- Notes :
4371 PROCEDURE Validate_Shipment (
4372 p_api_version IN NUMBER,
4373 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
4374 p_commit IN VARCHAR2 := L_FND_FALSE,
4375 p_validation_level IN NUMBER := L_FND_VALID_LEVEL_FULL,
4376 p_ship_header_id IN NUMBER,
4377 p_task_code IN VARCHAR2 DEFAULT NULL,--Bug#9836174
4378 x_return_status OUT NOCOPY VARCHAR2,
4379 x_msg_count OUT NOCOPY NUMBER,
4380 x_msg_data OUT NOCOPY VARCHAR2
4381 ) IS
4382 l_api_name CONSTANT VARCHAR2 (30) := 'Validate_Shipment';
4383 l_api_version CONSTANT NUMBER := 1.0;
4384 l_return_status VARCHAR2 (1) := L_FND_RET_STS_SUCCESS;
4385 l_ship_status VARCHAR2 (30) ;
4386 l_exist_event VARCHAR2 (5) ;
4387 l_exist_status NUMBER := 0;
4388 l_debug_info VARCHAR2 (200);
4389 BEGIN
4390 INL_LOGGING_PVT.Log_BeginProc (
4391 p_module_name => g_module_name,
4392 p_procedure_name => l_api_name) ;
4393 -- Standard Start of API savepoint
4394 SAVEPOINT Validate_Shipment_PVT;
4395 -- Initialize message list if p_init_msg_list is set to TRUE.
4396 IF FND_API.to_Boolean (p_init_msg_list) THEN
4397 FND_MSG_PUB.initialize;
4398 END IF;
4399 -- Check for call compatibility.
4400 IF NOT FND_API.Compatible_API_Call (
4401 p_current_version_number => l_api_version,
4402 p_caller_version_number => p_api_version,
4403 p_api_name => l_api_name,
4404 p_pkg_name => G_PKG_NAME
4405 ) THEN
4406 RAISE L_FND_EXC_UNEXPECTED_ERROR;
4407 END IF;
4408 -- Initialize API return status to success
4409 x_return_status := L_FND_RET_STS_SUCCESS;
4410 l_debug_info := 'Reset errors in inl_ship_holds table';
4411 INL_LOGGING_PVT.Log_Statement (
4412 p_module_name => g_module_name,
4413 p_procedure_name => l_api_name,
4414 p_debug_info => l_debug_info
4415 ) ;
4416 Reset_ShipError (
4417 p_ship_header_id => p_ship_header_id,
4418 p_ship_line_id => NULL,
4419 p_charge_line_id => NULL,
4420 x_return_status => l_return_status) ;
4421 -- If unexpected errors happen abort API
4422 IF l_return_status = L_FND_RET_STS_ERROR THEN
4423 x_return_status := l_return_status;
4424 RAISE L_FND_EXC_ERROR;
4425 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
4426 x_return_status := l_return_status;
4427 RAISE L_FND_EXC_UNEXPECTED_ERROR;
4428 END IF;
4429 l_debug_info := 'Shipment Header validation';
4430 INL_LOGGING_PVT.Log_Statement (
4431 p_module_name => g_pkg_name,
4432 p_procedure_name => l_api_name,
4433 p_debug_info => l_debug_info) ;
4434 Validate_ShipHdr (
4435 p_ship_header_id => p_ship_header_id,
4436 p_task_code => p_task_code, --Bug#9836174
4437 x_return_status => l_return_status) ;
4438 -- If unexpected errors happen abort API
4439 IF l_return_status = L_FND_RET_STS_ERROR THEN
4440 x_return_status := l_return_status;
4441 RAISE L_FND_EXC_ERROR;
4442 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
4443 x_return_status := l_return_status;
4444 RAISE L_FND_EXC_UNEXPECTED_ERROR;
4445 END IF;
4446 l_debug_info := 'fnd_msg_pub.count_msg';
4447 INL_LOGGING_PVT.Log_Variable (
4448 p_module_name => g_module_name,
4449 p_procedure_name => l_api_name,
4450 p_var_name => 'fnd_msg_pub.count_msg',
4451 p_var_value => TO_CHAR (fnd_msg_pub.count_msg)) ;
4452 IF (NVL (fnd_msg_pub.count_msg, 0) = 0) THEN
4453 SELECT ship_status_code
4454 INTO l_ship_status
4455 FROM inl_ship_headers
4456 WHERE ship_header_id = p_ship_header_id;
4457 IF l_ship_status <> 'COMPLETED' THEN
4458 l_debug_info := 'Update INL_SHIP_HEADERS_ALL.ship_status_code to VALIDATED';
4459 INL_LOGGING_PVT.Log_Statement (
4460 p_module_name => g_module_name,
4461 p_procedure_name => l_api_name,
4462 p_debug_info => l_debug_info) ;
4463 UPDATE inl_ship_headers
4464 SET ship_status_code = 'VALIDATED',
4465 last_updated_by = L_FND_USER_ID,
4466 last_update_date = SYSDATE
4467 WHERE ship_header_id = p_ship_header_id;
4468 END IF;
4469 ELSE
4470 l_debug_info := 'Update INL_SHIP_HEADERS_ALL.ship_status_code to ON HOLD';
4471 INL_LOGGING_PVT.Log_Statement (
4472 p_module_name => g_module_name,
4473 p_procedure_name => l_api_name,
4474 p_debug_info => l_debug_info) ;
4475 UPDATE inl_ship_headers
4476 SET ship_status_code = 'ON HOLD',
4477 last_updated_by = L_FND_USER_ID,
4478 last_update_date = SYSDATE
4479 WHERE ship_header_id = p_ship_header_id;
4480 END IF;
4481 -- Standard check of p_commit.
4482 IF FND_API.To_Boolean (p_commit) THEN
4483 COMMIT WORK;
4484 END IF;
4485 -- Standard call to get message count and if count is 1, get message info.
4486 FND_MSG_PUB.Count_And_Get (
4487 p_encoded => L_FND_FALSE,
4488 p_count => x_msg_count,
4489 p_data => x_msg_data) ;
4490 INL_LOGGING_PVT.Log_EndProc (
4491 p_module_name => g_module_name,
4492 p_procedure_name => l_api_name) ;
4493 EXCEPTION
4494 WHEN L_FND_EXC_ERROR THEN
4495 INL_LOGGING_PVT.Log_ExpecError (
4496 p_module_name => g_module_name,
4497 p_procedure_name => l_api_name) ;
4498 ROLLBACK TO Validate_Shipment_PVT;
4499 x_return_status := L_FND_RET_STS_ERROR;
4500 FND_MSG_PUB.Count_And_Get (
4501 p_encoded => L_FND_FALSE,
4502 p_count => x_msg_count,
4503 p_data => x_msg_data) ;
4504 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
4505 INL_LOGGING_PVT.Log_UnexpecError (
4506 p_module_name => g_module_name,
4507 p_procedure_name => l_api_name) ;
4508 ROLLBACK TO Validate_Shipment_PVT;
4509 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
4510 FND_MSG_PUB.Count_And_Get (
4511 p_encoded => L_FND_FALSE,
4512 p_count => x_msg_count,
4513 p_data => x_msg_data) ;
4514 WHEN OTHERS THEN
4515 INL_LOGGING_PVT.Log_UnexpecError (
4516 p_module_name => g_module_name,
4517 p_procedure_name => l_api_name) ;
4518 ROLLBACK TO Validate_Shipment_PVT;
4519 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
4520 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4521 FND_MSG_PUB.Add_Exc_Msg (
4522 p_pkg_name => g_pkg_name,
4523 p_procedure_name => l_api_name) ;
4524 END IF;
4525 FND_MSG_PUB.Count_And_Get (
4526 p_encoded => L_FND_FALSE,
4527 p_count => x_msg_count,
4528 p_data => x_msg_data) ;
4529 END Validate_Shipment;
4530 -- Utility name: Create_Assoc
4531 -- Type : Private
4532 -- Function : Create Associations
4533 -- Pre-reqs : None
4534 -- Parameters :
4535 -- IN : p_assoc IN inl_Assoc_tp
4536 -- p_from_parent_table_name IN VARCHAR2,
4537 -- p_new_line_id IN NUMBER, charge line at a highest level
4538 --
4539 -- OUT : x_return_status OUT NOCOPY VARCHAR2
4540 --
4541 -- Version : Current version 1.0
4542 --
4543 -- Notes :
4544 PROCEDURE Create_Assoc (
4545 p_Assoc IN inl_Assoc_tp,
4546 p_from_parent_table_name IN VARCHAR2,
4547 p_new_line_id IN NUMBER,
4548 x_return_status OUT NOCOPY VARCHAR2
4549 ) IS
4550 l_program_name CONSTANT VARCHAR2 (30) := 'Create_Assoc';
4551 l_return_status VARCHAR2 (1) ;
4552 l_debug_info VARCHAR2 (200) ;
4553 BEGIN
4554 -- Standard Beginning of Procedure/Function Logging
4555 INL_LOGGING_PVT.Log_BeginProc (
4556 p_module_name => g_module_name,
4557 p_procedure_name => l_program_name) ;
4558 -- Initialize return status to success
4559 x_return_status := L_FND_RET_STS_SUCCESS;
4560 l_debug_info := 'Insert in inl_associations.';
4561 INL_LOGGING_PVT.Log_Statement (
4562 p_module_name => g_module_name,
4563 p_procedure_name => l_program_name,
4564 p_debug_info => l_debug_info) ;
4565
4566 INL_LOGGING_PVT.Log_Variable (
4567 p_module_name => g_module_name,
4568 p_procedure_name => l_program_name,
4569 p_var_name => 'p_new_line_id',
4570 p_var_value => p_new_line_id) ;
4571
4572 IF p_Assoc.association_id IS NULL THEN
4573 l_debug_info := 'Including association';
4574 INSERT
4575 INTO inl_associations (
4576 association_id, /* 01 */
4577 ship_header_id, /* 02 */
4578 from_parent_table_name, /* 03 */
4579 from_parent_table_id, /* 04 */
4580 to_parent_table_name, /* 05 */
4581 to_parent_table_id, /* 06 */
4582 allocation_basis, /* 07 */
4583 allocation_uom_code, /* 08 */
4584 created_by, /* 09 */
4585 creation_date, /* 10 */
4586 last_updated_by, /* 11 */
4587 last_update_date, /* 12 */
4588 last_update_login /* 13 */
4589 )
4590 VALUES (
4591 inl_associations_s.nextval, /* 01 */
4592 p_Assoc.ship_header_id, /* 02 */
4593 p_from_parent_table_name, /* 03 */
4594 p_new_line_id, /* 04 */
4595 p_Assoc.to_parent_table_name, /* 05 */
4596 p_Assoc.to_parent_table_id, /* 06 */
4597 p_Assoc.allocation_basis, /* 07 */
4598 p_Assoc.allocation_uom_code, /* 08 */
4599 L_FND_USER_ID, /* 09 */
4600 sysdate, /* 10 */
4601 L_FND_USER_ID, /* 11 */
4602 sysdate, /* 12 */
4603 l_fnd_login_id /* 13 */ --SCM-051
4604 );
4605 ELSE
4606 l_debug_info := 'Updating association';
4607 UPDATE inl_associations
4608 SET
4609 ship_header_id = p_Assoc.ship_header_id ,
4610 from_parent_table_name = p_from_parent_table_name ,
4611 from_parent_table_id = p_new_line_id ,
4612 to_parent_table_name = p_Assoc.to_parent_table_name,
4613 to_parent_table_id = p_Assoc.to_parent_table_id ,
4614 allocation_basis = p_Assoc.allocation_basis ,
4615 allocation_uom_code = p_Assoc.allocation_uom_code ,
4616 last_updated_by = L_FND_USER_ID ,
4617 last_update_date = SYSDATE ,
4618 last_update_login = l_fnd_login_id --SCM-051
4619 WHERE association_id = p_Assoc.association_id
4620 ;
4621 END IF;
4622 INL_LOGGING_PVT.Log_Statement (
4623 p_module_name => g_module_name,
4624 p_procedure_name => l_program_name,
4625 p_debug_info => l_debug_info) ;
4626 INL_LOGGING_PVT.Log_Variable (
4627 p_module_name => g_module_name,
4628 p_procedure_name => l_program_name,
4629 p_var_name => 'p_new_line_id',
4630 p_var_value => p_new_line_id) ;
4631 -- Standard End of Procedure/Function Logging
4632 INL_LOGGING_PVT.Log_EndProc(
4633 p_module_name => g_module_name,
4634 p_procedure_name => l_program_name
4635 );
4636 EXCEPTION
4637 WHEN L_FND_EXC_ERROR THEN
4638 -- Standard Expected Error Logging
4639 INL_LOGGING_PVT.Log_ExpecError(
4640 p_module_name => g_module_name,
4641 p_procedure_name => l_program_name
4642 );
4643 x_return_status := L_FND_RET_STS_ERROR;
4644 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
4645 -- Standard Unexpected Error Logging
4646 INL_LOGGING_PVT.Log_UnexpecError(
4647 p_module_name => g_module_name,
4648 p_procedure_name => l_program_name
4649 );
4650 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
4651 WHEN OTHERS THEN
4652 -- Standard Unexpected Error Logging
4653 INL_LOGGING_PVT.Log_UnexpecError(
4654 p_module_name => g_module_name,
4655 p_procedure_name => l_program_name
4656 );
4657 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
4658 IF FND_MSG_PUB.Check_Msg_Level(
4659 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4660 ) THEN
4661 FND_MSG_PUB.Add_Exc_Msg (
4662 p_pkg_name => g_pkg_name,
4663 p_procedure_name => l_program_name
4664 );
4665 END IF;
4666 END Create_Assoc;
4667 -- Utility name: Create_TxLines
4668 -- Type : Private
4669 -- Function : Create Tax Lines
4670 -- Pre-reqs : None
4671 -- Parameters :
4672 -- IN : p_TxLn_Assoc IN inl_TxLn_Assoc_tp
4673 -- p_include_assoc IN VARCHAR2 := 'Y'
4674 -- p_adjustment_num IN NUMBER
4675 --
4676 -- OUT : x_new_tax_line_id OUT NOCOPY NUMBER,
4677 -- x_return_status OUT NOCOPY VARCHAR2
4678 --
4679 -- Version : Current version 1.0
4680 --
4681 -- Notes :
4682 PROCEDURE Create_TxLines(
4683 p_TxLn_Assoc IN inl_TxLn_Assoc_tp,
4684 p_include_assoc IN VARCHAR2 := 'Y',
4685 p_adjustment_num IN NUMBER,
4686 x_new_tax_line_id OUT NOCOPY NUMBER,
4687 x_return_status OUT NOCOPY VARCHAR2
4688 ) IS
4689 l_program_name CONSTANT VARCHAR2(30):= 'Create_TxLines';
4690 l_return_status VARCHAR2(1);
4691 l_debug_info VARCHAR2(200);
4692 l_tax_line_num NUMBER;
4693 l_adjustment_num NUMBER;
4694 BEGIN
4695 -- Standard Beginning of Procedure/Function Logging
4696 INL_LOGGING_PVT.Log_BeginProc (
4697 p_module_name => g_module_name,
4698 p_procedure_name => l_program_name
4699 );
4700 -- Initialize return status to success
4701 x_return_status := L_FND_RET_STS_SUCCESS;
4702 --
4703 -- Get Max val to tax line num
4704 --
4705 IF p_TxLn_Assoc.tax_line_num IS NULL THEN
4706 l_debug_info := 'Get Max val from tax line num';
4707 INL_LOGGING_PVT.Log_Statement(
4708 p_module_name => g_module_name,
4709 p_procedure_name=> l_program_name,
4710 p_debug_info => l_debug_info
4711 )
4712 ;
4713 SELECT NVL (MAX (tl.tax_line_num), 0) + 1
4714 INTO l_tax_line_num
4715 FROM inl_tax_lines tl
4716 WHERE NVL (tl.ship_header_id, 0) = NVL (p_TxLn_Assoc.inl_Assoc.ship_header_id, 0) ;
4717 ELSE
4718 l_tax_line_num := p_TxLn_Assoc.tax_line_num;
4719 END IF;
4720 --
4721 -- Get Val to adjustment num
4722 --
4723 IF p_TxLn_Assoc.adjustment_num IS NULL THEN
4724 l_debug_info := 'Set l_adjustment_num to p_adjustment_num';
4725 l_adjustment_num := p_adjustment_num;
4726 ELSE
4727 l_debug_info := 'Set l_adjustment_num to p_TxLn_Assoc.adjustment_num';
4728 l_adjustment_num := p_TxLn_Assoc.adjustment_num;
4729 END IF;
4730 INL_LOGGING_PVT.Log_Statement (
4731 p_module_name => g_module_name,
4732 p_procedure_name => l_program_name,
4733 p_debug_info => l_debug_info) ;
4734 --
4735 -- Get inl_tax_lines_s.nextval
4736 --
4737 l_debug_info := 'Get inl_tax_lines_s.nextval';
4738 INL_LOGGING_PVT.Log_Statement (
4739 p_module_name => g_module_name,
4740 p_procedure_name => l_program_name,
4741 p_debug_info => l_debug_info
4742 ) ;
4743 SELECT inl_tax_lines_s.nextval
4744 INTO x_new_tax_line_id
4745 FROM dual;
4746 --
4747 -- include Tax Line record
4748 --
4749 l_debug_info := 'Including Tax Line record ';
4750 INL_LOGGING_PVT.Log_Statement (
4751 p_module_name => g_module_name,
4752 p_procedure_name => l_program_name,
4753 p_debug_info => l_debug_info) ;
4754 INSERT
4755 INTO inl_tax_lines (
4756 tax_line_id, /* 01 */
4757 tax_line_num, /* 02 */
4758 tax_code, /* 03 */
4759 ship_header_id, /* 04 */
4760 parent_tax_line_id, /* 05 */
4761 adjustment_num, /* 06 */
4762 match_id, /* 07 */
4763 match_amount_id, /* 08 */
4764 source_parent_table_name, /* 09 */
4765 source_parent_table_id, /* 10 */
4766 tax_amt, /* 11 */
4767 nrec_tax_amt, /* 12 */
4768 currency_code, /* 13 */
4769 currency_conversion_type, /* 14 */
4770 currency_conversion_date, /* 15 */
4771 currency_conversion_rate, /* 16 */
4772 tax_amt_included_flag, /* 17 */
4773 created_by, /* 18 */
4774 creation_date, /* 19 */
4775 last_updated_by, /* 20 */
4776 last_update_date, /* 21 */
4777 last_update_login /* 22 */
4778 )
4779 VALUES
4780 (
4781 x_new_tax_line_id, /* 01 */
4782 l_tax_line_num, /* 02 */
4783 p_TxLn_Assoc.tax_code, /* 03 */
4784 p_TxLn_Assoc.inl_Assoc.ship_header_id, /* 04 */
4785 p_TxLn_Assoc.parent_tax_line_id, /* 05 */
4786 l_adjustment_num, /* 06 */
4787 p_TxLn_Assoc.match_id, /* 07 */
4788 p_TxLn_Assoc.match_amount_id, /* 08 */
4789 p_TxLn_Assoc.source_parent_table_name, /* 09 */
4790 p_TxLn_Assoc.source_parent_table_id, /* 10 */
4791 p_TxLn_Assoc.matched_amt, /* 11 */
4792 p_TxLn_Assoc.nrec_tax_amt, /* 12 */
4793 p_TxLn_Assoc.currency_code, /* 13 */
4794 p_TxLn_Assoc.currency_conversion_type, /* 14 */
4795 p_TxLn_Assoc.currency_conversion_date, /* 15 */
4796 p_TxLn_Assoc.currency_conversion_rate, /* 16 */
4797 p_TxLn_Assoc.tax_amt_included_flag, /* 17 */
4798 L_FND_USER_ID, /* 18 */
4799 sysdate, /* 19 */
4800 L_FND_USER_ID, /* 20 */
4801 sysdate, /* 21 */
4802 l_fnd_login_id --SCM-051 /* 22 */
4803 ) ;
4804 IF p_include_assoc = 'Y' THEN
4805 Create_Assoc(
4806 p_Assoc => p_TxLn_Assoc.inl_Assoc,
4807 p_from_parent_table_name => 'INL_TAX_LINES',
4808 p_new_line_id => x_new_tax_line_id,
4809 x_return_status => l_return_status
4810 )
4811 ;
4812 IF l_return_status = L_FND_RET_STS_ERROR THEN
4813 RAISE L_FND_EXC_ERROR;
4814 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
4815 RAISE L_FND_EXC_UNEXPECTED_ERROR;
4816 END IF;
4817 END IF;
4818 -- Standard End of Procedure/Function Logging
4819 INL_LOGGING_PVT.Log_EndProc(
4820 p_module_name => g_module_name,
4821 p_procedure_name => l_program_name
4822 );
4823 EXCEPTION
4824 WHEN L_FND_EXC_ERROR THEN
4825 -- Standard Expected Error Logging
4826 INL_LOGGING_PVT.Log_ExpecError(
4827 p_module_name => g_module_name,
4828 p_procedure_name => l_program_name
4829 );
4830 x_return_status := L_FND_RET_STS_ERROR;
4831 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
4832 -- Standard Unexpected Error Logging
4833 INL_LOGGING_PVT.Log_UnexpecError(
4834 p_module_name => g_module_name,
4835 p_procedure_name => l_program_name
4836 );
4837 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
4838 WHEN OTHERS THEN
4839 -- Standard Unexpected Error Logging
4840 INL_LOGGING_PVT.Log_UnexpecError(
4841 p_module_name => g_module_name,
4842 p_procedure_name => l_program_name
4843 );
4844 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
4845 IF FND_MSG_PUB.Check_Msg_Level(
4846 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4847 ) THEN
4848 FND_MSG_PUB.Add_Exc_Msg(
4849 p_pkg_name => g_pkg_name,
4850 p_procedure_name=> l_program_name
4851 );
4852 END IF;
4853 END Create_TxLines;
4854
4855 -- Utility name: Zero_EstimTaxLines
4856 -- Type : Private
4857 -- Function : Create a Adj Tax Line with amt = 0
4858 -- Pre-reqs : None
4859 -- Parameters :
4860 -- IN : p_ship_header_id IN NUMBER, -- sent null to process only one component
4861 -- p_match_id IN NUMBER,
4862 -- p_comp_name IN VARCHAR2, -- name of the component to make tax = 0
4863 -- p_comp_id IN NUMBER, -- id of the component to make tax = 0
4864 -- p_tax_code IN VARCHAR2, -- IF NULL = ALL
4865 -- p_adjustment_num IN NUMBER
4866 -- p_prev_adjustment_num
4867 --
4868 -- OUT : x_return_status OUT NOCOPY VARCHAR2
4869 --
4870 -- Version : Current version 1.0
4871 --
4872 -- Notes :
4873 PROCEDURE Zero_EstimTaxLines (
4874 p_ship_header_id IN NUMBER,
4875 p_match_id IN NUMBER,
4876 p_comp_name IN VARCHAR2,
4877 p_comp_id IN VARCHAR2,
4878 p_tax_code IN VARCHAR2,
4879 p_adjustment_num IN NUMBER,
4880 p_prev_adjustment_num IN NUMBER DEFAULT 0, -- BUG#8411594
4881 x_return_status OUT NOCOPY VARCHAR2
4882 ) IS
4883 l_program_name CONSTANT VARCHAR2(30) := 'Zero_EstimTaxLines';
4884 l_return_status VARCHAR2(1);
4885 l_debug_info VARCHAR2(200);
4886 CURSOR estimated_TL
4887 IS
4888 SELECT tl.tax_line_id ,
4889 tl.tax_line_num ,
4890 tl.tax_code ,
4891 tl.ship_header_id ,
4892 tl.parent_tax_line_id ,
4893 tl.adjustment_num ,
4894 tl.match_id ,
4895 tl.source_parent_table_name,
4896 tl.source_parent_table_id ,
4897 tl.tax_amt ,
4898 tl.nrec_tax_amt ,
4899 tl.currency_code ,
4900 tl.currency_conversion_type,
4901 tl.currency_conversion_date,
4902 tl.currency_conversion_rate,
4903 tl.tax_amt_included_flag
4904 FROM inl_adj_tax_lines_v tl
4905 WHERE p_ship_header_id IS NOT NULL --Bug#14044298
4906 AND tl.adjustment_num = p_prev_adjustment_num
4907 AND tl.ship_header_id = p_ship_header_id
4908 AND
4909 (
4910 p_tax_code IS NULL
4911 OR tl.tax_code = p_tax_code
4912 )
4913 UNION ALL
4914 SELECT tl.tax_line_id ,
4915 tl.tax_line_num ,
4916 tl.tax_code ,
4917 tl.ship_header_id ,
4918 tl.parent_tax_line_id ,
4919 tl.adjustment_num ,
4920 tl.match_id ,
4921 tl.source_parent_table_name,
4922 tl.source_parent_table_id ,
4923 tl.tax_amt ,
4924 tl.nrec_tax_amt ,
4925 tl.currency_code ,
4926 tl.currency_conversion_type,
4927 tl.currency_conversion_date,
4928 tl.currency_conversion_rate,
4929 tl.tax_amt_included_flag
4930 FROM
4931 inl_adj_tax_lines_v tl,
4932 inl_associations assoc
4933 WHERE p_ship_header_id IS NULL
4934 AND (tl.tax_amt > 0
4935 OR tl.nrec_tax_amt > 0) --SCM-051
4936 AND (tl.adjustment_num = p_prev_adjustment_num
4937 OR tl.adjustment_num < 1)
4938 AND
4939 (
4940 p_tax_code IS NULL
4941 OR tl.tax_code = p_tax_code
4942 )
4943 -- SCM-051
4944 AND assoc.from_parent_table_name = 'INL_TAX_LINES'
4945 AND assoc.to_parent_table_name = p_comp_name
4946 AND assoc.to_parent_table_id = p_comp_id
4947 AND assoc.from_parent_table_id =
4948 (
4949 SELECT parntTxLn0.tax_line_id
4950 FROM inl_tax_lines parntTxLn0
4951 WHERE CONNECT_BY_ISLEAF = 1
4952 START WITH parntTxLn0.tax_line_id = tl.tax_line_id
4953 CONNECT BY PRIOR parntTxLn0.parent_tax_line_id = parntTxLn0.tax_line_id
4954 )
4955 -- SCM-051
4956 ;
4957 TYPE est_TL_Type
4958 IS
4959 TABLE OF estimated_TL%ROWTYPE;
4960 C_est_TL est_TL_Type;
4961 l_TxLn_Assoc inl_TxLn_Assoc_tp;
4962 l_new_tax_line_id NUMBER;
4963 BEGIN
4964 -- Standard Beginning of Procedure/Function Logging
4965 INL_LOGGING_PVT.Log_BeginProc (
4966 p_module_name => g_module_name,
4967 p_procedure_name => l_program_name
4968 );
4969 -- Initialize return status to success
4970 x_return_status := L_FND_RET_STS_SUCCESS;
4971
4972 INL_LOGGING_PVT.Log_Variable (
4973 p_module_name => g_module_name,
4974 p_procedure_name => l_program_name,
4975 p_var_name => 'p_prev_adjustment_num',
4976 p_var_value => p_prev_adjustment_num
4977 );
4978
4979 INL_LOGGING_PVT.Log_Variable (
4980 p_module_name => g_module_name,
4981 p_procedure_name => l_program_name,
4982 p_var_name => 'p_comp_name',
4983 p_var_value => p_comp_name
4984 );
4985 INL_LOGGING_PVT.Log_Variable (
4986 p_module_name => g_module_name,
4987 p_procedure_name => l_program_name,
4988 p_var_name => 'p_comp_id',
4989 p_var_value => p_comp_id
4990 );
4991
4992 l_debug_info := 'Getting existent estimated TaxLine.';
4993 INL_LOGGING_PVT.Log_Statement (
4994 p_module_name => g_module_name,
4995 p_procedure_name => l_program_name,
4996 p_debug_info => l_debug_info
4997 ) ;
4998 OPEN estimated_TL;
4999 FETCH estimated_TL BULK COLLECT INTO C_est_TL;
5000 CLOSE estimated_TL;
5001 l_debug_info := C_est_TL.LAST||' lines have been retrieved.';
5002 INL_LOGGING_PVT.Log_Statement (
5003 p_module_name => g_module_name,
5004 p_procedure_name => l_program_name,
5005 p_debug_info => l_debug_info
5006 ) ;
5007 IF NVL (C_est_TL.LAST, 0) > 0 THEN
5008 l_TxLn_Assoc.inl_Assoc.allocation_basis := NULL;
5009 l_TxLn_Assoc.inl_Assoc.allocation_uom_code := NULL;
5010 l_TxLn_Assoc.inl_Assoc.to_parent_table_name := NULL;
5011 l_TxLn_Assoc.inl_Assoc.to_parent_table_id := NULL;
5012 l_TxLn_Assoc.adjustment_num := p_adjustment_num;
5013 l_TxLn_Assoc.match_id := p_match_id;
5014 l_TxLn_Assoc.matched_amt := 0;
5015 l_TxLn_Assoc.nrec_tax_amt := 0;
5016 l_TxLn_Assoc.source_parent_table_name := 'INL_TAX_LINES';
5017 FOR i IN NVL (C_est_TL.FIRST, 0) ..NVL (C_est_TL.LAST, 0)
5018 LOOP
5019 l_TxLn_Assoc.inl_Assoc.ship_header_id := C_est_TL (i) .ship_header_id;
5020 l_TxLn_Assoc.tax_code := C_est_TL (i) .tax_code;
5021 l_TxLn_Assoc.tax_line_num := C_est_TL (i) .tax_line_num;
5022 l_TxLn_Assoc.parent_tax_line_id := C_est_TL (i) .tax_line_id;
5023 l_TxLn_Assoc.source_parent_table_id := C_est_TL (i) .tax_line_id; --Unique index U2 in INL_TAX_LINES
5024 l_TxLn_Assoc.currency_code := C_est_TL (i) .currency_code;
5025 l_TxLn_Assoc.currency_conversion_type := C_est_TL (i) .currency_conversion_type;
5026 l_TxLn_Assoc.currency_conversion_date := C_est_TL (i) .currency_conversion_date;
5027 l_TxLn_Assoc.currency_conversion_rate := C_est_TL (i) .currency_conversion_rate;
5028 l_TxLn_Assoc.tax_amt_included_flag := C_est_TL (i) .tax_amt_included_flag;
5029 -- Create_TxLines
5030 l_debug_info := 'Estimated Tax line found new with 0.';
5031 INL_LOGGING_PVT.Log_Statement (
5032 p_module_name => g_module_name,
5033 p_procedure_name => l_program_name,
5034 p_debug_info => l_debug_info
5035 ) ;
5036 Create_TxLines (
5037 p_TxLn_Assoc => l_TxLn_Assoc,
5038 p_include_assoc => 'N',
5039 p_adjustment_num => p_adjustment_num,
5040 x_new_tax_line_id => l_new_tax_line_id,
5041 x_return_status => l_return_status
5042 ) ;
5043 IF l_return_status = L_FND_RET_STS_ERROR THEN
5044 RAISE L_FND_EXC_ERROR;
5045 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
5046 RAISE L_FND_EXC_UNEXPECTED_ERROR;
5047 END IF;
5048 END LOOP;
5049 END IF;
5050 -- Standard End of Procedure/Function Logging
5051 INL_LOGGING_PVT.Log_EndProc (
5052 p_module_name => g_module_name,
5053 p_procedure_name => l_program_name
5054 ) ;
5055 EXCEPTION
5056 WHEN L_FND_EXC_ERROR THEN
5057 -- Standard Expected Error Logging
5058 INL_LOGGING_PVT.Log_ExpecError (
5059 p_module_name => g_module_name,
5060 p_procedure_name => l_program_name
5061 ) ;
5062 x_return_status := L_FND_RET_STS_ERROR;
5063 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
5064 -- Standard Unexpected Error Logging
5065 INL_LOGGING_PVT.Log_UnexpecError (
5066 p_module_name => g_module_name,
5067 p_procedure_name => l_program_name
5068 ) ;
5069 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
5070 WHEN OTHERS THEN
5071 -- Standard Unexpected Error Logging
5072 INL_LOGGING_PVT.Log_UnexpecError (
5073 p_module_name => g_module_name,
5074 p_procedure_name => l_program_name
5075 ) ;
5076 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
5077 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
5078 FND_MSG_PUB.Add_Exc_Msg (
5079 p_pkg_name => g_pkg_name,
5080 p_procedure_name => l_program_name
5081 ) ;
5082 END IF;
5083 END Zero_EstimTaxLines;
5084
5085 -- Utility name: Zero_TaxLinesPerMatchAmt
5086 -- Type : Private
5087 -- Function : Create a Adj Tax Line with amt = 0
5088 -- Pre-reqs : None
5089 -- Parameters :
5090 -- IN : p_match_amount_id IN NUMBER,
5091 -- p_adjustment_num IN NUMBER
5092 --
5093 -- OUT : x_return_status OUT NOCOPY VARCHAR2
5094 --
5095 -- Version : Current version 1.0
5096 --
5097 -- Notes : When a invoice is resubmited, in case of existence of new matches in the same match amount,
5098 -- the lines from old match_amount has been made zero (charge and taxes)
5099 PROCEDURE Zero_TaxLinesPerMatchAmt (
5100 p_match_amount_id IN NUMBER,
5101 p_adjustment_num IN NUMBER,
5102 x_return_status OUT NOCOPY VARCHAR2
5103 ) IS
5104 l_program_name CONSTANT VARCHAR2(30) := 'Zero_TaxLinesPerMatchAmt';
5105 l_return_status VARCHAR2(1);
5106 l_debug_info VARCHAR2(200);
5107 CURSOR original_TL
5108 IS
5109 SELECT tl.tax_line_id ,
5110 tl.tax_line_num ,
5111 tl.tax_code ,
5112 tl.ship_header_id ,
5113 tl.parent_tax_line_id ,
5114 tl.adjustment_num ,
5115 tl.match_id ,
5116 tl.source_parent_table_name,
5117 tl.source_parent_table_id ,
5118 tl.tax_amt ,
5119 tl.nrec_tax_amt ,
5120 tl.currency_code ,
5121 tl.currency_conversion_type,
5122 tl.currency_conversion_date,
5123 tl.currency_conversion_rate,
5124 tl.tax_amt_included_flag
5125 FROM inl_adj_tax_lines_v tl
5126 WHERE match_Amount_id = p_match_Amount_id
5127 AND NOT EXISTS (SELECT 1
5128 FROM INL_TAX_LINES t
5129 WHERE t.parent_tax_line_id = tl.tax_line_id)
5130 ;
5131 TYPE ori_TL_Type
5132 IS
5133 TABLE OF original_TL%ROWTYPE;
5134 C_ori_TL ori_TL_Type;
5135 l_TxLn_Assoc inl_TxLn_Assoc_tp;
5136 l_new_tax_line_id NUMBER;
5137 BEGIN
5138 -- Standard Beginning of Procedure/Function Logging
5139 INL_LOGGING_PVT.Log_BeginProc (
5140 p_module_name => g_module_name,
5141 p_procedure_name => l_program_name
5142 );
5143 -- Initialize return status to success
5144 x_return_status := L_FND_RET_STS_SUCCESS;
5145 l_debug_info := 'Getting existent estimated TaxLine.';
5146 INL_LOGGING_PVT.Log_Statement (
5147 p_module_name => g_module_name,
5148 p_procedure_name => l_program_name,
5149 p_debug_info => l_debug_info
5150 ) ;
5151 OPEN original_TL;
5152 FETCH original_TL BULK COLLECT INTO C_ori_TL;
5153 CLOSE original_TL;
5154 l_debug_info := C_ori_TL.LAST||' lines have been retrieved.';
5155 INL_LOGGING_PVT.Log_Statement (
5156 p_module_name => g_module_name,
5157 p_procedure_name => l_program_name,
5158 p_debug_info => l_debug_info
5159 ) ;
5160 IF NVL (C_ori_TL.LAST, 0) > 0 THEN
5161 l_TxLn_Assoc.inl_Assoc.allocation_basis := NULL;
5162 l_TxLn_Assoc.inl_Assoc.allocation_uom_code := NULL;
5163 l_TxLn_Assoc.inl_Assoc.to_parent_table_name := NULL;
5164 l_TxLn_Assoc.inl_Assoc.to_parent_table_id := NULL;
5165 l_TxLn_Assoc.adjustment_num := p_adjustment_num;
5166 l_TxLn_Assoc.match_id := null;
5167 l_TxLn_Assoc.match_Amount_id := p_match_Amount_id;
5168 l_TxLn_Assoc.matched_amt := 0;
5169 l_TxLn_Assoc.nrec_tax_amt := 0;
5170 l_TxLn_Assoc.source_parent_table_name := 'INL_TAX_LINES';
5171 FOR i IN NVL (C_ori_TL.FIRST, 0) ..NVL (C_ori_TL.LAST, 0)
5172 LOOP
5173 l_TxLn_Assoc.inl_Assoc.ship_header_id := C_ori_TL (i) .ship_header_id;
5174 l_TxLn_Assoc.tax_code := C_ori_TL (i) .tax_code;
5175 l_TxLn_Assoc.tax_line_num := C_ori_TL (i) .tax_line_num;
5176 l_TxLn_Assoc.parent_tax_line_id := C_ori_TL (i) .tax_line_id;
5177 l_TxLn_Assoc.source_parent_table_id := C_ori_TL (i) .tax_line_id; --Unique index U2 in INL_TAX_LINES
5178 l_TxLn_Assoc.currency_code := C_ori_TL (i) .currency_code;
5179 l_TxLn_Assoc.currency_conversion_type := C_ori_TL (i) .currency_conversion_type;
5180 l_TxLn_Assoc.currency_conversion_date := C_ori_TL (i) .currency_conversion_date;
5181 l_TxLn_Assoc.currency_conversion_rate := C_ori_TL (i) .currency_conversion_rate;
5182 l_TxLn_Assoc.tax_amt_included_flag := C_ori_TL (i) .tax_amt_included_flag;
5183 -- Create_TxLines
5184 l_debug_info := 'Estimated Tax line found new with 0.';
5185 INL_LOGGING_PVT.Log_Statement (
5186 p_module_name => g_module_name,
5187 p_procedure_name => l_program_name,
5188 p_debug_info => l_debug_info
5189 ) ;
5190 Create_TxLines (
5191 p_TxLn_Assoc => l_TxLn_Assoc,
5192 p_include_assoc => 'N',
5193 p_adjustment_num => p_adjustment_num,
5194 x_new_tax_line_id => l_new_tax_line_id,
5195 x_return_status => l_return_status
5196 ) ;
5197 IF l_return_status = L_FND_RET_STS_ERROR THEN
5198 RAISE L_FND_EXC_ERROR;
5199 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
5200 RAISE L_FND_EXC_UNEXPECTED_ERROR;
5201 END IF;
5202 END LOOP;
5203 END IF;
5204 -- Standard End of Procedure/Function Logging
5205 INL_LOGGING_PVT.Log_EndProc (
5206 p_module_name => g_module_name,
5207 p_procedure_name => l_program_name
5208 ) ;
5209 EXCEPTION
5210 WHEN L_FND_EXC_ERROR THEN
5211 -- Standard Expected Error Logging
5212 INL_LOGGING_PVT.Log_ExpecError (
5213 p_module_name => g_module_name,
5214 p_procedure_name => l_program_name
5215 ) ;
5216 x_return_status := L_FND_RET_STS_ERROR;
5217 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
5218 -- Standard Unexpected Error Logging
5219 INL_LOGGING_PVT.Log_UnexpecError (
5220 p_module_name => g_module_name,
5221 p_procedure_name => l_program_name
5222 ) ;
5223 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
5224 WHEN OTHERS THEN
5225 -- Standard Unexpected Error Logging
5226 INL_LOGGING_PVT.Log_UnexpecError (
5227 p_module_name => g_module_name,
5228 p_procedure_name => l_program_name
5229 ) ;
5230 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
5231 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
5232 FND_MSG_PUB.Add_Exc_Msg (
5233 p_pkg_name => g_pkg_name,
5234 p_procedure_name => l_program_name
5235 ) ;
5236 END IF;
5237 END Zero_TaxLinesPerMatchAmt;
5238
5239 ---
5240 ---
5241 -- API name : Adjust_ShipLines
5242 -- Type : Private
5243 -- Function : Create Adjustments for Shipment Lines
5244 -- Pre-reqs : None
5245 -- Parameters :
5246 -- IN : p_api_version IN NUMBER Required
5247 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
5248 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
5249 -- p_match_id IN NUMBER,
5250 -- p_adjustment_num IN NUMBER,
5251 -- p_func_currency_code IN VARCHAR2 , --BUG#8468830
5252 -- OUT x_return_status OUT NOCOPY VARCHAR2
5253 -- x_msg_count OUT NOCOPY NUMBER
5254 -- x_msg_data OUT NOCOPY VARCHAR2
5255 --
5256 -- Version : Current version 1.0
5257 --
5258 -- Notes :
5259 PROCEDURE Adjust_ShipLines (
5260 p_api_version IN NUMBER,
5261 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
5262 p_commit IN VARCHAR2 := L_FND_FALSE,
5263 p_match_id IN NUMBER,
5264 p_adjustment_num IN NUMBER,
5265 p_func_currency_code IN VARCHAR2, --BUG#8468830
5266 x_return_status OUT NOCOPY VARCHAR2,
5267 x_msg_count OUT NOCOPY NUMBER,
5268 x_msg_data OUT NOCOPY VARCHAR2
5269 ) IS
5270 -- Cursor to get previous matching values
5271 -- in order to calculate partial match
5272 CURSOR c_previous_matchings (
5273 pc_ship_line_id IN NUMBER,
5274 pc_curr_match_id IN NUMBER,
5275 pc_to_currency_code IN VARCHAR2,
5276 pc_to_curr_conversion_type IN VARCHAR2,
5277 pc_to_curr_conversion_date IN DATE)
5278 IS
5279 SELECT mat.matched_qty,
5280 mat.match_id ,
5281 DECODE (pc_to_currency_code,
5282 mat.matched_curr_code,
5283 mat.matched_amt,
5284 inl_landedcost_pvt.Converted_Amt (
5285 mat.matched_amt,
5286 mat.matched_curr_code,
5287 pc_to_currency_code,
5288 pc_to_curr_conversion_type,
5289 pc_to_curr_conversion_date
5290 )) matched_amt
5291 FROM inl_corr_matches_v mat
5292 WHERE mat.to_parent_table_name = 'INL_SHIP_LINES'
5293 AND mat.match_type_code = 'ITEM'
5294 AND mat.to_parent_table_id = pc_ship_line_id
5295 AND NOT EXISTS
5296 (
5297 SELECT 1
5298 FROM inl_corr_matches_v m2
5299 WHERE m2.from_parent_table_name = mat.from_parent_table_name
5300 AND m2.from_parent_table_id = mat.from_parent_table_id
5301 AND m2.match_id > mat.match_id
5302 )
5303 AND mat.match_id <> pc_curr_match_id
5304 ORDER BY match_id ;
5305 l_prev_matchings_rec c_previous_matchings%ROWTYPE;
5306 l_api_name CONSTANT VARCHAR2 (30) := 'Adjust_ShipLines';
5307 l_api_version CONSTANT NUMBER := 1.0;
5308 l_return_status VARCHAR2 (1) ;
5309 l_next_adjust_num NUMBER;
5310 l_sum_adj_price NUMBER;
5311 l_shipl_qty_sub_match NUMBER;
5312 l_final_qty NUMBER;
5313 l_final_price NUMBER;
5314 l_sl_inv_item_id NUMBER;
5315 l_net_rcv_txn_qty NUMBER;
5316 l_shipl_unit_price NUMBER;
5317 l_to_ship_header_id NUMBER;
5318 l_to_ship_line_id NUMBER;
5319 l_matched_qty NUMBER;
5320 l_primary_qty NUMBER;
5321 l_secondary_qty NUMBER; --BUG#8924795
5322 l_primary_unit_price NUMBER;
5323 l_secondary_unit_price NUMBER; -- BUG#8924795
5324 l_inv_org_id NUMBER;
5325 l_matched_uom_code VARCHAR2 (3) ;
5326 l_primary_uom_code VARCHAR2 (3) ;
5327 l_secondary_uom_code VARCHAR2 (3) ; -- BUG#8924795
5328 l_txn_uom_code VARCHAR2 (3) ; --BUG#7674121
5329 l_debug_info VARCHAR2 (240) ;
5330 l_replace_estim_qty_flag VARCHAR2 (1) ;
5331 l_ship_line_num NUMBER;
5332 l_ship_line_group_id NUMBER;
5333 l_matched_amt NUMBER;
5334 l_ship_line_curr_code VARCHAR2 (15) ;
5335 l_current_curr_code VARCHAR2 (15) ;
5336 l_current_curr_conv_type VARCHAR2 (15) ;
5337 l_ship_line_curr_conv_type VARCHAR2 (15) ; --BUG#8468830
5338 l_current_curr_conv_date DATE;
5339 l_ship_line_curr_conv_rate NUMBER; --BUG#8468830
5340 l_current_curr_conv_rate NUMBER;
5341 l_ori_unit_price NUMBER;
5342 l_existing_match_info_flag VARCHAR2 (1) ;
5343 l_curr_match_id NUMBER;
5344 l_from_parent_table_name VARCHAR2 (30) ;
5345 l_from_parent_table_id NUMBER;
5346 -- Bug #7702294
5347 l_rt_transaction_id NUMBER;
5348 l_rt_uom_code VARCHAR2(3);
5349 l_ordered_po_qty NUMBER;
5350 l_cancelled_po_qty NUMBER;
5351 l_received_po_qty NUMBER;
5352 l_corrected_po_qty NUMBER;
5353 l_delivered_po_qty NUMBER;
5354 l_rtv_po_qty NUMBER;
5355 l_billed_po_qty NUMBER;
5356 l_accepted_po_qty NUMBER;
5357 l_rejected_po_qty NUMBER;
5358 l_ordered_txn_qty NUMBER;
5359 l_cancelled_txn_qty NUMBER;
5360 l_received_txn_qty NUMBER;
5361 l_corrected_txn_qty NUMBER;
5362 l_delivered_txn_qty NUMBER;
5363 l_rtv_txn_qty NUMBER;
5364 l_billed_txn_qty NUMBER;
5365 l_accepted_txn_qty NUMBER;
5366 l_rejected_txn_qty NUMBER;
5367 -- Bug #7702294
5368 l_nrq_zero_exception_flag VARCHAR2(1):='N'; --BUG#8334078
5369
5370 -- Bug 11775590
5371 CURSOR c_last_adj_sl(p_to_ship_line_id IN NUMBER) IS
5372 SELECT rt.transaction_id,
5373 um.uom_code
5374 INTO l_rt_transaction_id,
5375 l_rt_uom_code
5376 FROM mtl_units_of_measure um,
5377 rcv_transactions rt,
5378 inl_ship_lines sl
5379 WHERE um.unit_of_measure = rt.unit_of_measure
5380 AND rt.destination_type_code = 'RECEIVING'
5381 AND ((rt.transaction_type = 'RECEIVE'
5382 AND rt.parent_transaction_id = -1)
5383 OR (rt.transaction_type = 'MATCH' -- Bug#9275335
5384 ))
5385 AND rt.lcm_shipment_line_id = sl.ship_line_id
5386 AND rt.po_line_location_id = sl.ship_line_source_id
5387 AND sl.ship_line_src_type_code = 'PO'
5388 AND sl.ship_line_id = p_to_ship_line_id;
5389
5390 TYPE last_adj_sl IS
5391 TABLE OF c_last_adj_sl%ROWTYPE INDEX BY BINARY_INTEGER;
5392 l_last_adj_sl last_adj_sl;
5393 -- /Bug 11775590
5394
5395 BEGIN
5396 -- Standard Beginning of Procedure/Function Logging
5397 INL_LOGGING_PVT.Log_BeginProc (
5398 p_module_name => g_module_name,
5399 p_procedure_name => l_api_name
5400 ) ;
5401 -- Standard Start of API savepoint
5402 SAVEPOINT Adjust_ShipLines_PVT;
5403 -- Initialize message list if p_init_msg_list is set to TRUE.
5404 IF FND_API.to_Boolean (p_init_msg_list) THEN
5405 FND_MSG_PUB.initialize;
5406 END IF;
5407 -- Check for call compatibility.
5408 IF NOT FND_API.Compatible_API_Call (
5409 p_current_version_number => l_api_version,
5410 p_caller_version_number => p_api_version,
5411 p_api_name => l_api_name,
5412 p_pkg_name => g_pkg_name
5413 ) THEN
5414 RAISE L_FND_EXC_UNEXPECTED_ERROR;
5415 END IF;
5416 -- Initialize API return status to success
5417 x_return_status := L_FND_RET_STS_SUCCESS;
5418 -- Getting Matching Data
5419 l_debug_info := 'Getting Matching Data';
5420 INL_LOGGING_PVT.Log_Statement (
5421 p_module_name => g_module_name,
5422 p_procedure_name => l_api_name,
5423 p_debug_info => l_debug_info
5424 ) ;
5425 SELECT
5426 mat.ship_header_id , /* 01 */
5427 mat.to_parent_table_id, /* 02 */
5428 mat.matched_qty, /* 03 */
5429 mat.matched_uom_code, /* 04 */
5430 mat.replace_estim_qty_flag, /* 05 */
5431 mat.existing_match_info_flag, /* 06 */
5432 mat.matched_amt, /* 07 */
5433 -- sl.txn_qty, /* 08 */ -- Bug #7702294
5434 sl.primary_uom_code, /* 09a*/
5435 sl.secondary_uom_code, /* 09b*/
5436 sl.txn_uom_code, /* 09c*/ --Bug #7674121
5437 sh.organization_id, /* 10 */
5438 sl.inventory_item_id, /* 11 */
5439 sl.ship_line_num, /* 12 */
5440 sl.ship_line_group_id, /* 13 */
5441 sl.currency_code, /* 14 */
5442 mat.matched_curr_code, /* 15 */
5443 mat.matched_curr_conversion_type, /* 16 */ --BUG#8468830
5444 mat.matched_curr_conversion_rate , /* 16a*/ --BUG#8468830
5445 sl.currency_conversion_type , /* 16b*/ --BUG#8468830
5446 NVL (mat.matched_curr_conversion_date, sl.currency_conversion_date), /* 17 */
5447 sl.currency_conversion_rate, /* 17a*/ --BUG#8468830
5448 sl.txn_unit_price, /* 18 */
5449 mat.from_parent_table_name, /* 19 */
5450 mat.from_parent_table_id, /* 20 */
5451 mat.match_id /* 21 */
5452 INTO
5453 l_to_ship_header_id , /* 01 */
5454 l_to_ship_line_id , /* 02 */
5455 l_matched_qty , /* 03 */
5456 l_matched_uom_code , /* 04 */
5457 l_replace_estim_qty_flag , /* 05 */
5458 l_existing_match_info_flag, /* 06 */
5459 l_matched_amt , /* 07 */
5460 -- l_net_rcv_txn_qty , /* 08 */ -- Bug #7702294
5461 l_primary_uom_code , /* 09a*/
5462 l_secondary_uom_code , /* 09b*/
5463 l_txn_uom_code , /* 09c*/ --Bug #7674121
5464 l_inv_org_id , /* 10 */
5465 l_sl_inv_item_id , /* 11 */
5466 l_ship_line_num , /* 12 */
5467 l_ship_line_group_id , /* 13 */
5468 l_ship_line_curr_code , /* 14 */
5469 l_current_curr_code , /* 15 */
5470 l_current_curr_conv_type , /* 16 */
5471 l_current_curr_conv_rate , /* 16a*/ --BUG#8468830
5472 l_ship_line_curr_conv_type, /* 16b*/ --BUG#8468830
5473 l_current_curr_conv_date , /* 17 */
5474 l_ship_line_curr_conv_rate, /* 17a*/ --BUG#8468830
5475 l_ori_unit_price , /* 18 */
5476 l_from_parent_table_name , /* 19 */
5477 l_from_parent_table_id , /* 20 */
5478 l_curr_match_id /* 21 */
5479 FROM inl_corr_matches_v mat,
5480 inl_ship_lines sl ,
5481 inl_ship_lines sl0 ,
5482 inl_ship_headers sh
5483 WHERE mat.match_id = p_match_id
5484 AND mat.to_parent_table_name = 'INL_SHIP_LINES'
5485 AND mat.adj_already_generated_flag = 'N'
5486 AND sl.ship_header_id = sh.ship_header_id
5487 AND sl0.ship_line_id = mat.to_parent_table_id
5488 AND sl0.ship_header_id = sl.ship_header_id
5489 AND sl0.ship_line_group_id = sl.ship_line_group_id
5490 AND sl0.ship_line_num = sl.ship_line_num
5491 AND sl.adjustment_num =
5492 (
5493 SELECT MIN(sl2.adjustment_num)
5494 FROM inl_ship_lines sl2
5495 WHERE sl0.ship_header_id = sl2.ship_header_id
5496 AND sl0.ship_line_group_id = sl2.ship_line_group_id
5497 AND sl0.ship_line_num = sl2.ship_line_num
5498 )
5499 AND (mat.correction_match_id is null OR
5500 mat.correction_match_id = (select min(mat2.correction_match_id)
5501 FROM inl_corr_matches_v mat2
5502 WHERE mat2.match_id = p_match_id
5503 AND mat2.to_parent_table_name = 'INL_SHIP_LINES'
5504 AND mat2.adj_already_generated_flag = 'N'
5505 ));
5506 INL_LOGGING_PVT.Log_Variable (
5507 p_module_name => g_module_name,
5508 p_procedure_name => l_api_name,
5509 p_var_name => 'l_to_ship_line_id',
5510 p_var_value => l_to_ship_line_id
5511 );
5512
5513
5514 l_debug_info := 'Getting Receiving Data';
5515 INL_LOGGING_PVT.Log_Statement (
5516 p_module_name => g_module_name,
5517 p_procedure_name => l_api_name,
5518 p_debug_info => l_debug_info
5519 ) ;
5520
5521 -- BUG#7702294
5522 -- We should always consider the net rcv quantity, instead of the quantity of the
5523 -- last adjustment done in shipment line. That is because corrections/returns may have been done in RCV.
5524 -- BUG#8235284
5525
5526 -- Bug 11775590 Replaced by cursor
5527 /*
5528 SELECT rt.transaction_id,
5529 um.uom_code
5530 INTO l_rt_transaction_id,
5531 l_rt_uom_code
5532 FROM mtl_units_of_measure um,
5533 rcv_transactions rt,
5534 inl_ship_lines sl
5535 WHERE um.unit_of_measure = rt.unit_of_measure
5536 AND rt.destination_type_code = 'RECEIVING'
5537 AND ((rt.transaction_type = 'RECEIVE'
5538 AND rt.parent_transaction_id = -1)
5539 OR (rt.transaction_type = 'MATCH' -- Bug#9275335
5540 ))
5541 AND rt.lcm_shipment_line_id = sl.ship_line_id
5542 AND rt.po_line_location_id = sl.ship_line_source_id
5543 AND sl.ship_line_src_type_code = 'PO'
5544 AND sl.ship_line_id = l_to_ship_line_id;
5545 */
5546
5547 OPEN c_last_adj_sl(l_to_ship_line_id);
5548 FETCH c_last_adj_sl BULK COLLECT INTO l_last_adj_sl;
5549 CLOSE c_last_adj_sl;
5550
5551 IF NVL(l_last_adj_sl.LAST, 0) > 0 THEN
5552
5553 FOR i IN NVL(l_last_adj_sl.FIRST, 0)..NVL(l_last_adj_sl.LAST, 0)
5554 LOOP
5555
5556 l_rt_transaction_id := l_last_adj_sl(i).transaction_id;
5557 l_rt_uom_code := l_last_adj_sl(i).uom_code;
5558
5559 l_debug_info := 'Call rcv_invoice_matching_sv';
5560 INL_LOGGING_PVT.Log_Statement (
5561 p_module_name => g_module_name,
5562 p_procedure_name => l_api_name,
5563 p_debug_info => l_debug_info
5564 ) ;
5565
5566 INL_LOGGING_PVT.Log_Variable (
5567 p_module_name => g_module_name,
5568 p_procedure_name => l_api_name,
5569 p_var_name => 'l_rt_transaction_id',
5570 p_var_value => l_rt_transaction_id
5571 );
5572
5573 rcv_invoice_matching_sv.get_quantities
5574 (top_transaction_id => l_rt_transaction_id,
5575 ordered_po_qty => l_ordered_po_qty ,
5576 cancelled_po_qty => l_cancelled_po_qty ,
5577 received_po_qty => l_received_po_qty ,
5578 corrected_po_qty => l_corrected_po_qty ,
5579 delivered_po_qty => l_delivered_po_qty ,
5580 rtv_po_qty => l_rtv_po_qty ,
5581 billed_po_qty => l_billed_po_qty ,
5582 accepted_po_qty => l_accepted_po_qty ,
5583 rejected_po_qty => l_rejected_po_qty ,
5584 ordered_txn_qty => l_ordered_txn_qty ,
5585 cancelled_txn_qty => l_cancelled_txn_qty,
5586 received_txn_qty => l_received_txn_qty ,
5587 corrected_txn_qty => l_corrected_txn_qty,
5588 delivered_txn_qty => l_delivered_txn_qty,
5589 rtv_txn_qty => l_rtv_txn_qty ,
5590 billed_txn_qty => l_billed_txn_qty ,
5591 accepted_txn_qty => l_accepted_txn_qty ,
5592 rejected_txn_qty => l_rejected_txn_qty);
5593
5594 --- Bug 11775590
5595 --l_net_rcv_txn_qty := l_received_txn_qty + l_corrected_txn_qty - l_rtv_txn_qty;
5596 l_net_rcv_txn_qty := NVL(l_net_rcv_txn_qty,0) + l_received_txn_qty + l_corrected_txn_qty - l_rtv_txn_qty;
5597
5598 INL_LOGGING_PVT.Log_Variable (
5599 p_module_name => g_module_name,
5600 p_procedure_name => l_api_name,
5601 p_var_name => 'l_received_txn_qty',
5602 p_var_value => l_received_txn_qty
5603 );
5604
5605 --BUG#8334078
5606 -- 3rd alternative: if net_rcv = 0 get 1st qty and put a mark in the record
5607 IF l_net_rcv_txn_qty = 0 THEN
5608
5609 INL_LOGGING_PVT.Log_Variable (
5610 p_module_name => g_module_name,
5611 p_procedure_name => l_api_name,
5612 p_var_name => 'l_net_rcv_txn_qty',
5613 p_var_value => l_net_rcv_txn_qty
5614 );
5615 l_nrq_zero_exception_flag := 'Y';
5616 SELECT txn_qty
5617 INTO l_net_rcv_txn_qty
5618 FROM inl_ship_lines
5619 WHERE ship_header_id = l_to_ship_header_id
5620 AND ship_line_num = l_ship_line_num
5621 AND ship_line_group_id = l_ship_line_group_id
5622 AND adjustment_num = 0
5623 ;
5624 END IF;
5625 --BUG#8334078
5626
5627 INL_LOGGING_PVT.Log_Variable (
5628 p_module_name => g_module_name,
5629 p_procedure_name => l_api_name,
5630 p_var_name => 'l_received_txn_qty',
5631 p_var_value => l_received_txn_qty
5632 );
5633 INL_LOGGING_PVT.Log_Variable (
5634 p_module_name => g_module_name,
5635 p_procedure_name => l_api_name,
5636 p_var_name => 'l_corrected_txn_qty',
5637 p_var_value => l_corrected_txn_qty
5638 );
5639
5640 INL_LOGGING_PVT.Log_Variable (
5641 p_module_name => g_module_name,
5642 p_procedure_name => l_api_name,
5643 p_var_name => 'l_rtv_txn_qty',
5644 p_var_value => l_rtv_txn_qty
5645 );
5646
5647 INL_LOGGING_PVT.Log_Variable (
5648 p_module_name => g_module_name,
5649 p_procedure_name => l_api_name,
5650 p_var_name => 'l_net_rcv_txn_qty',
5651 p_var_value => l_net_rcv_txn_qty
5652 );
5653 -- Bug #7849658
5654 l_net_rcv_txn_qty := INL_LANDEDCOST_PVT.Converted_Qty (
5655 p_organization_id => l_inv_org_id,
5656 p_inventory_item_id => l_sl_inv_item_id,
5657 p_qty => l_net_rcv_txn_qty,
5658 p_from_uom_code => l_rt_uom_code,
5659 p_to_uom_code => l_txn_uom_code
5660 );
5661
5662 INL_LOGGING_PVT.Log_Variable (
5663 p_module_name => g_module_name,
5664 p_procedure_name => l_api_name,
5665 p_var_name => 'l_net_rcv_txn_qty',
5666 p_var_value => l_net_rcv_txn_qty
5667 );
5668
5669 END LOOP;
5670 END IF;
5671 -- /Bug 11775590
5672
5673 -- Bug #7702294
5674
5675 INL_LOGGING_PVT.Log_Variable (
5676 p_module_name => g_module_name,
5677 p_procedure_name => l_api_name,
5678 p_var_name => 'l_ship_line_curr_code',
5679 p_var_value => l_ship_line_curr_code
5680 );
5681 INL_LOGGING_PVT.Log_Variable (
5682 p_module_name => g_module_name,
5683 p_procedure_name => l_api_name,
5684 p_var_name => 'l_current_curr_code',
5685 p_var_value => l_current_curr_code
5686 );
5687 IF l_ship_line_curr_code <> l_current_curr_code
5688 AND nvl(l_current_curr_conv_type,l_ship_line_curr_conv_type) IS NOT NULL THEN --BUG#8468830
5689 INL_LOGGING_PVT.Log_Variable (
5690 p_module_name => g_module_name,
5691 p_procedure_name => l_api_name,
5692 p_var_name => 'l_current_curr_conv_type',
5693 p_var_value => l_current_curr_conv_type
5694 );
5695
5696 IF l_current_curr_conv_type = 'User' THEN --BUG#8468830
5697 -- if currency conversion rate is in match: divide
5698 l_shipl_unit_price := l_ori_unit_price / l_current_curr_conv_rate;
5699 ELSIF l_current_curr_conv_type IS NULL AND l_ship_line_curr_conv_type = 'User' THEN --BUG#8468830
5700 -- else if currency conversion rate is in ship line: multiply
5701 l_shipl_unit_price := l_ori_unit_price * l_ship_line_curr_conv_rate;
5702 ELSE
5703 l_shipl_unit_price := inl_landedcost_pvt.Converted_Amt (
5704 l_ori_unit_price,
5705 l_ship_line_curr_code,
5706 l_current_curr_code,
5707 nvl(l_current_curr_conv_type,l_ship_line_curr_conv_type), --BUG#8468830
5708 l_current_curr_conv_date
5709 );
5710 END IF;
5711 ELSE
5712 l_shipl_unit_price := l_ori_unit_price;
5713 END IF;
5714
5715 l_debug_info := 'l_to_ship_header_id';
5716 INL_LOGGING_PVT.Log_Variable (
5717 p_module_name => g_module_name,
5718 p_procedure_name => l_api_name,
5719 p_var_name => l_debug_info,
5720 p_var_value => l_to_ship_header_id) ;
5721 l_debug_info := 'l_to_ship_line_id';
5722 INL_LOGGING_PVT.Log_Variable (
5723 p_module_name => g_module_name,
5724 p_procedure_name => l_api_name,
5725 p_var_name => l_debug_info,
5726 p_var_value => l_to_ship_line_id) ;
5727 l_debug_info := 'l_matched_qty';
5728 INL_LOGGING_PVT.Log_Variable (
5729 p_module_name => g_module_name,
5730 p_procedure_name => l_api_name,
5731 p_var_name => l_debug_info,
5732 p_var_value => l_matched_qty) ;
5733 l_debug_info := 'l_matched_uom_code';
5734 INL_LOGGING_PVT.Log_Variable (
5735 p_module_name => g_module_name,
5736 p_procedure_name => l_api_name,
5737 p_var_name => l_debug_info,
5738 p_var_value => l_matched_uom_code) ;
5739 -- STEP 2: Get Estimated Shipment Line Data
5740 l_debug_info := 'Get Estimated Shipment Line Data';
5741 INL_LOGGING_PVT.Log_Statement (
5742 p_module_name => g_module_name,
5743 p_procedure_name => l_api_name,
5744 p_debug_info => l_debug_info) ;
5745 l_debug_info := 'l_sl_inv_item_id';
5746 INL_LOGGING_PVT.Log_Variable (
5747 p_module_name => g_module_name,
5748 p_procedure_name => l_api_name,
5749 p_var_name => l_debug_info,
5750 p_var_value => l_sl_inv_item_id) ;
5751 l_debug_info := 'l_net_rcv_txn_qty';
5752 INL_LOGGING_PVT.Log_Variable (
5753 p_module_name => g_module_name,
5754 p_procedure_name => l_api_name,
5755 p_var_name => l_debug_info,
5756 p_var_value => l_net_rcv_txn_qty) ;
5757 l_debug_info := 'l_shipl_unit_price';
5758 INL_LOGGING_PVT.Log_Variable (
5759 p_module_name => g_module_name,
5760 p_procedure_name => l_api_name,
5761 p_var_name => l_debug_info,
5762 p_var_value => l_shipl_unit_price) ;
5763 -- STEP 3: Get the Adjustment Number
5764 l_debug_info := 'Get the Adjustment Number';
5765 INL_LOGGING_PVT.Log_Statement (
5766 p_module_name => g_module_name,
5767 p_procedure_name => l_api_name,
5768 p_debug_info => l_debug_info) ;
5769 l_next_adjust_num := p_adjustment_num;
5770 l_debug_info := 'l_next_adjust_num';
5771 INL_LOGGING_PVT.Log_Variable (
5772 p_module_name => g_module_name,
5773 p_procedure_name => l_api_name,
5774 p_var_name => l_debug_info,
5775 p_var_value => l_next_adjust_num) ;
5776
5777 -- STEP 4: Partial Matching handling
5778 --IF l_matched_qty < l_opl_txn_qty THEN
5779 --Calculate Partial Matching based on previous Adjustments
5780 l_debug_info := 'Calculate Partial Matching based on previous Adjustments';
5781 INL_LOGGING_PVT.Log_Statement (
5782 p_module_name => g_module_name,
5783 p_procedure_name => l_api_name,
5784 p_debug_info => l_debug_info
5785 );
5786 IF l_replace_estim_qty_flag = 'Y' THEN --Match from RCV
5787 l_debug_info := 'Getting the values from Adj';
5788 INL_LOGGING_PVT.Log_Statement (
5789 p_module_name => g_module_name,
5790 p_procedure_name => l_api_name,
5791 p_debug_info => l_debug_info
5792 );
5793 SELECT txn_unit_price,
5794 txn_qty ,
5795 primary_qty ,
5796 primary_unit_price
5797 INTO l_final_price,
5798 l_final_qty ,
5799 l_primary_qty ,
5800 l_primary_unit_price
5801 FROM inl_adj_ship_lines_v
5802 WHERE ship_header_id = l_to_ship_header_id
5803 AND ship_line_group_id = l_ship_line_group_id
5804 AND ship_line_num = l_ship_line_num;
5805 l_final_price := l_matched_amt / l_matched_qty;
5806 l_debug_info := 'Setting the new quantity ';
5807 INL_LOGGING_PVT.Log_Statement (
5808 p_module_name => g_module_name,
5809 p_procedure_name => l_api_name,
5810 p_debug_info => l_debug_info
5811 ) ;
5812 INL_LOGGING_PVT.Log_Variable (
5813 p_module_name => g_module_name,
5814 p_procedure_name => l_api_name,
5815 p_var_name => 'l_final_qty',
5816 p_var_value => l_final_qty
5817 );
5818 INL_LOGGING_PVT.Log_Variable (
5819 p_module_name => g_module_name,
5820 p_procedure_name => l_api_name,
5821 p_var_name => 'l_primary_qty',
5822 p_var_value => l_primary_qty
5823 );
5824 INL_LOGGING_PVT.Log_Variable (
5825 p_module_name => g_module_name,
5826 p_procedure_name => l_api_name,
5827 p_var_name => 'l_primary_unit_price',
5828 p_var_value => l_primary_unit_price
5829 );
5830
5831 IF l_final_qty = l_primary_qty THEN
5832 l_final_qty := l_matched_qty;
5833 l_primary_qty := l_matched_qty;
5834 l_primary_unit_price := l_final_price;
5835 ELSE
5836 l_final_qty := l_matched_qty;
5837 -- Getting Primary Quantity and Primary Unit Price
5838 l_primary_qty := INL_LANDEDCOST_PVT.Converted_Qty (
5839 p_organization_id => l_inv_org_id,
5840 p_inventory_item_id => l_sl_inv_item_id,
5841 p_qty => l_final_qty,
5842 p_from_uom_code => l_matched_uom_code,
5843 p_to_uom_code => l_primary_uom_code
5844 ) ;
5845 l_primary_unit_price := (l_final_qty * l_final_price) / l_primary_qty;
5846 END IF;
5847 ELSE
5848
5849 INL_LOGGING_PVT.Log_Variable (
5850 p_module_name => g_module_name,
5851 p_procedure_name => l_api_name,
5852 p_var_name => 'l_existing_match_info_flag',
5853 p_var_value => l_existing_match_info_flag
5854 ) ;
5855
5856 FOR l_prev_matchings_rec IN c_previous_matchings (
5857 l_to_ship_line_id,
5858 l_curr_match_id,
5859 l_current_curr_code,
5860 nvl(l_current_curr_conv_type,l_ship_line_curr_conv_type),
5861 l_current_curr_conv_date
5862 )
5863 LOOP
5864
5865 l_sum_adj_price := NVL (l_sum_adj_price, 0) + NVL(l_prev_matchings_rec.matched_amt,0);
5866 --shouldn't be consider IF NVL(l_prev_matchings_rec.matched_qty,0) > 0 THEN -- BUG#8198265
5867 l_final_qty := NVL (l_final_qty, 0) + NVL(l_prev_matchings_rec.matched_qty,0);
5868 --shouldn't be consider END IF;
5869
5870 END LOOP;
5871 -- Add the current transaction values to the calculation
5872 l_debug_info := 'Add the current transaction values to the calculation';
5873 INL_LOGGING_PVT.Log_Statement (
5874 p_module_name => g_module_name,
5875 p_procedure_name => l_api_name,
5876 p_debug_info => l_debug_info
5877 ) ;
5878
5879
5880 --shouldn't be consider IF NVL(l_matched_qty,0) > 0 THEN -- BUG#8198265
5881 l_final_qty := NVL (l_final_qty, 0) + NVL (l_matched_qty, 0) ;
5882 --shouldn't be consider END IF;
5883 IF l_final_qty < 0 then
5884 l_final_qty := 0; -- BUG#8198265
5885 END IF;
5886
5887 l_sum_adj_price := NVL (l_sum_adj_price, 0) + l_matched_amt;
5888 IF NVL (l_final_qty, 0) < NVL (l_net_rcv_txn_qty, 0) THEN -- BUG#8198265
5889 l_shipl_qty_sub_match := NVL (l_net_rcv_txn_qty, 0) - NVL (l_final_qty, 0) ;
5890 ELSE
5891 l_shipl_qty_sub_match := 0;
5892 END IF;
5893
5894 l_sum_adj_price := NVL (l_sum_adj_price, 0) + (l_shipl_qty_sub_match * nvl(l_shipl_unit_price,0)) ;
5895 l_final_qty := NVL (l_final_qty, 0) + l_shipl_qty_sub_match;
5896 --
5897 -- The code above this point should be review in order to verify the necessity of l_final_qty
5898 --
5899 l_final_qty := l_net_rcv_txn_qty; --BUG#8198265
5900 l_final_price := l_sum_adj_price / l_final_qty; --BUG#8198265
5901
5902 INL_LOGGING_PVT.Log_Variable (
5903 p_module_name => g_module_name,
5904 p_procedure_name => l_api_name,
5905 p_var_name => 'l_final_qty',
5906 p_var_value => l_final_qty
5907 ) ;
5908
5909 INL_LOGGING_PVT.Log_Variable (
5910 p_module_name => g_module_name,
5911 p_procedure_name => l_api_name,
5912 p_var_name => 'l_final_price',
5913 p_var_value => l_final_price
5914 ) ;
5915 IF l_matched_uom_code IS NULL THEN --BUG#7674121
5916 l_matched_uom_code := l_txn_uom_code; --BUG#7674121
5917 END IF;
5918 -- Verifying if UOM conversion are required
5919 IF l_primary_uom_code <> l_matched_uom_code THEN --BUG#7674121
5920 l_primary_qty := INL_LANDEDCOST_PVT.Converted_Qty (
5921 p_organization_id => l_inv_org_id,
5922 p_inventory_item_id => l_sl_inv_item_id,
5923 p_qty => l_final_qty,
5924 p_from_uom_code => l_matched_uom_code,
5925 p_to_uom_code => l_primary_uom_code) ;
5926 ELSE
5927 l_primary_qty := l_final_qty;
5928 END IF;
5929 l_primary_unit_price := (l_final_qty * l_final_price) / l_primary_qty;
5930
5931 l_debug_info := 'Ckecking secondary fields';
5932 INL_LOGGING_PVT.Log_Statement (
5933 p_module_name => g_module_name,
5934 p_procedure_name => l_api_name,
5935 p_debug_info => l_debug_info
5936 ) ;
5937 -- BUG 8924795
5938 IF l_secondary_uom_code IS NOT NULL THEN
5939
5940 l_secondary_qty := INL_LANDEDCOST_PVT.Converted_Qty (
5941 p_organization_id => l_inv_org_id,
5942 p_inventory_item_id => l_sl_inv_item_id,
5943 p_qty => l_primary_qty,
5944 p_from_uom_code => l_primary_uom_code,
5945 p_to_uom_code => l_secondary_uom_code) ;
5946
5947 l_secondary_unit_price := (l_final_qty * l_final_price) / l_secondary_qty;
5948
5949 l_debug_info := 'l_secondary_qty';
5950 INL_LOGGING_PVT.Log_Variable ( p_module_name => g_module_name,
5951 p_procedure_name => l_api_name,
5952 p_var_name => l_debug_info,
5953 p_var_value => l_secondary_qty) ;
5954
5955 l_debug_info := 'l_secondary_unit_price';
5956 INL_LOGGING_PVT.Log_Variable ( p_module_name => g_module_name,
5957 p_procedure_name => l_api_name,
5958 p_var_name => l_debug_info,
5959 p_var_value => l_secondary_unit_price) ;
5960
5961 END IF;
5962 --
5963 -- STEP 5: Copy Shipment Line from Estimated to Actual
5964 l_debug_info := 'Copy Shipment Line from Estimated to Actual';
5965 INL_LOGGING_PVT.Log_Statement (
5966 p_module_name => g_module_name,
5967 p_procedure_name => l_api_name,
5968 p_debug_info => l_debug_info
5969 ) ;
5970 END IF;
5971 INL_LOGGING_PVT.Log_Variable (
5972 p_module_name => g_module_name,
5973 p_procedure_name => l_api_name,
5974 p_var_name => 'l_final_qty',
5975 p_var_value => l_final_qty
5976 );
5977 INL_LOGGING_PVT.Log_Variable (
5978 p_module_name => g_module_name,
5979 p_procedure_name => l_api_name,
5980 p_var_name => 'l_primary_qty',
5981 p_var_value => l_primary_qty
5982 );
5983 INL_LOGGING_PVT.Log_Variable (
5984 p_module_name => g_module_name,
5985 p_procedure_name => l_api_name,
5986 p_var_name => 'l_primary_unit_price',
5987 p_var_value => l_primary_unit_price
5988 );
5989
5990 --BUG#8468830
5991 IF p_func_currency_code <> l_current_curr_code THEN
5992 l_current_curr_conv_type:=nvl(l_current_curr_conv_type,l_ship_line_curr_conv_type);
5993 ELSE
5994 l_current_curr_conv_type:= NULL;
5995 l_current_curr_conv_rate:= NULL;
5996 END IF;
5997
5998 --BUG#8468830
5999 INSERT
6000 INTO inl_ship_lines_all
6001 (
6002 ship_header_id, /* 01 */
6003 ship_line_group_id, /* 02 */
6004 ship_line_id, /* 03 */
6005 ship_line_num, /* 04 */
6006 ship_line_type_id, /* 05 */
6007 ship_line_src_type_code, /* 06 */
6008 ship_line_source_id, /* 07 */
6009 parent_ship_line_id, /* 08 */
6010 adjustment_num, /* 09 */
6011 match_id, /* 10 */
6012 currency_code, /* 12 */
6013 currency_conversion_type, /* 13 */
6014 currency_conversion_date, /* 14 */
6015 currency_conversion_rate, /* 15 */
6016 inventory_item_id, /* 16 */
6017 txn_qty, /* 17 */
6018 txn_uom_code, /* 18 */
6019 txn_unit_price, /* 19 */
6020 primary_qty, /* 20 */
6021 primary_uom_code, /* 21 */
6022 primary_unit_price, /* 22 */
6023 secondary_qty, /* 23 */
6024 secondary_uom_code, /* 24 */
6025 secondary_unit_price, /* 25 */
6026 landed_cost_flag, /* 30 */
6027 allocation_enabled_flag, /* 31 */
6028 trx_business_category, /* 32 */
6029 intended_use, /* 33 */
6030 product_fiscal_class, /* 34 */
6031 product_category, /* 35 */
6032 product_type, /* 36 */
6033 user_def_fiscal_class, /* 37 */
6034 tax_classification_code, /* 38 */
6035 assessable_value, /* 39 */
6036 tax_already_calculated_flag,/* 40 */
6037 ship_from_party_id, /* 41 */
6038 ship_from_party_site_id, /* 42 */
6039 ship_to_organization_id, /* 43 */
6040 ship_to_location_id, /* 44 */
6041 bill_from_party_id, /* 45 */
6042 bill_from_party_site_id, /* 46 */
6043 bill_to_organization_id, /* 47 */
6044 bill_to_location_id, /* 48 */
6045 poa_party_id, /* 49 */
6046 poa_party_site_id, /* 50 */
6047 poo_organization_id, /* 51 */
6048 poo_location_id, /* 52 */
6049 org_id, /* 53 */
6050 created_by, /* 54 */
6051 creation_date, /* 55 */
6052 last_updated_by, /* 56 */
6053 last_update_date, /* 57 */
6054 last_update_login, /* 58 */
6055 program_id, /* 59 */
6056 program_update_date, /* 60 */
6057 program_application_id, /* 61 */
6058 request_id, /* 62 */
6059 attribute_category, /* 63 */
6060 attribute1, /* 64 */
6061 attribute2, /* 65 */
6062 attribute3, /* 66 */
6063 attribute4, /* 67 */
6064 attribute5, /* 68 */
6065 attribute6, /* 69 */
6066 attribute7, /* 70 */
6067 attribute8, /* 71 */
6068 attribute9, /* 72 */
6069 attribute10, /* 73 */
6070 attribute11, /* 74 */
6071 attribute12, /* 75 */
6072 attribute13, /* 76 */
6073 attribute14, /* 77 */
6074 attribute15, /* 78 */
6075 nrq_zero_exception_flag /* 79 */ --BUG#8334078
6076 )
6077 SELECT sl.ship_header_id, /* 01 */
6078 sl.ship_line_group_id, /* 02 */
6079 inl_ship_lines_all_s.NEXTVAL, /* 03 */
6080 sl.ship_line_num, /* 04 */
6081 sl.ship_line_type_id, /* 05 */
6082 sl.ship_line_src_type_code, /* 06 */
6083 sl.ship_line_source_id, /* 07 */
6084 sl.ship_line_id, /* 08 */
6085 l_next_adjust_num, /* 09 */
6086 p_match_id, /* 10 */
6087 l_current_curr_code, /* 12 */
6088 l_current_curr_conv_type, /* 13 */
6089 l_current_curr_conv_date, /* 14 */
6090 l_current_curr_conv_rate, /* 15 */
6091 sl.inventory_item_id, /* 16 */
6092 l_final_qty, /* 17 */
6093 l_txn_uom_code, /* 18 */ --BUG#8198265
6094 l_final_price, /* 19 */
6095 l_primary_qty, /* 20 */
6096 l_primary_uom_code, /* 21 */ --BUG#8198265
6097 l_primary_unit_price, /* 22 */
6098 NVL(l_secondary_qty,sl.secondary_qty), /* 23 */
6099 sl.secondary_uom_code, /* 24 */
6100 NVL(l_secondary_unit_price, sl.secondary_unit_price), /* 25 */
6101 sl.landed_cost_flag, /* 30 */
6102 sl.allocation_enabled_flag, /* 31 */
6103 sl.trx_business_category, /* 32 */
6104 sl.intended_use, /* 33 */
6105 sl.product_fiscal_class, /* 34 */
6106 sl.product_category, /* 35 */
6107 sl.product_type, /* 36 */
6108 sl.user_def_fiscal_class, /* 37 */
6109 sl.tax_classification_code, /* 38 */
6110 sl.assessable_value, /* 39 */
6111 'N' , -- tax_already_calculated_flag/* 40 */
6112 sl.ship_from_party_id, /* 41 */
6113 sl.ship_from_party_site_id, /* 42 */
6114 sl.ship_to_organization_id, /* 43 */
6115 sl.ship_to_location_id, /* 44 */
6116 sl.bill_from_party_id, /* 45 */
6117 sl.bill_from_party_site_id, /* 46 */
6118 sl.bill_to_organization_id, /* 47 */
6119 sl.bill_to_location_id, /* 48 */
6120 sl.poa_party_id, /* 49 */
6121 sl.poa_party_site_id, /* 50 */
6122 sl.poo_organization_id, /* 51 */
6123 sl.poo_location_id, /* 52 */
6124 sl.org_id, /* 53 */
6125 sl.created_by, /* 54 */
6126 sl.creation_date, /* 55 */
6127 sl.last_updated_by, /* 56 */
6128 sl.last_update_date, /* 57 */
6129 sl.last_update_login, /* 58 */
6130 sl.program_id, /* 59 */
6131 sl.program_update_date, /* 60 */
6132 sl.program_application_id, /* 61 */
6133 sl.request_id, /* 62 */
6134 sl.attribute_category, /* 63 */
6135 sl.attribute1, /* 64 */
6136 sl.attribute2, /* 65 */
6137 sl.attribute3, /* 66 */
6138 sl.attribute4, /* 67 */
6139 sl.attribute5, /* 68 */
6140 sl.attribute6, /* 69 */
6141 sl.attribute7, /* 70 */
6142 sl.attribute8, /* 71 */
6143 sl.attribute9, /* 72 */
6144 sl.attribute10, /* 73 */
6145 sl.attribute11, /* 74 */
6146 sl.attribute12, /* 75 */
6147 sl.attribute13, /* 76 */
6148 sl.attribute14, /* 77 */
6149 sl.attribute15, /* 78 */
6150 l_nrq_zero_exception_flag /* 79 */ --BUG#8334078
6151 FROM inl_ship_lines sl
6152 WHERE ship_line_id = l_to_ship_line_id;
6153 IF l_replace_estim_qty_flag = 'N' THEN --THIS TRANSACTION IS ABOUT AN ACTUAL VALUE
6154 -- IF SHIP LINE HAS ESTIMATED TAXES THEY WILL WILL BE = 0
6155 Zero_EstimTaxLines (
6156 p_ship_header_id => NULL,
6157 p_match_id => p_match_id,
6158 p_comp_name => 'INL_SHIP_LINES',
6159 p_comp_id => l_to_ship_line_id,
6160 p_tax_code => NULL,
6161 p_adjustment_num => p_adjustment_num,
6162 x_return_status => l_return_status
6163 ) ;
6164 IF l_return_status = L_FND_RET_STS_ERROR THEN
6165 RAISE L_FND_EXC_ERROR;
6166 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
6167 RAISE L_FND_EXC_UNEXPECTED_ERROR;
6168 END IF;
6169 END IF;
6170 -- Standard check of p_commit.
6171 IF FND_API.To_Boolean (p_commit) THEN
6172 COMMIT WORK;
6173 END IF;
6174 -- Standard call to get message count and if count is 1, get message info.
6175 FND_MSG_PUB.Count_And_Get (
6176 p_encoded => L_FND_FALSE,
6177 p_count => x_msg_count,
6178 p_data => x_msg_data
6179 ) ;
6180 -- Standard End of Procedure/Function Logging
6181 INL_LOGGING_PVT.Log_EndProc (
6182 p_module_name => g_module_name,
6183 p_procedure_name => l_api_name
6184 ) ;
6185 EXCEPTION
6186 WHEN L_FND_EXC_ERROR THEN
6187 -- Standard Expected Error Logging
6188 INL_LOGGING_PVT.Log_ExpecError (
6189 p_module_name => g_module_name,
6190 p_procedure_name => l_api_name
6191 ) ;
6192 ROLLBACK TO Adjust_ShipLines_PVT;
6193 x_return_status := L_FND_RET_STS_ERROR;
6194 FND_MSG_PUB.Count_And_Get (
6195 p_encoded => L_FND_FALSE,
6196 p_count => x_msg_count,
6197 p_data => x_msg_data
6198 ) ;
6199 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
6200 -- Standard Unexpected Error Logging
6201 INL_LOGGING_PVT.Log_UnexpecError (
6202 p_module_name => g_module_name,
6203 p_procedure_name => l_api_name
6204 ) ;
6205 ROLLBACK TO Adjust_ShipLines_PVT;
6206 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
6207 FND_MSG_PUB.Count_And_Get (
6208 p_encoded => L_FND_FALSE,
6209 p_count => x_msg_count,
6210 p_data => x_msg_data
6211 ) ;
6212 WHEN OTHERS THEN
6213 -- Standard Unexpected Error Logging
6214 INL_LOGGING_PVT.Log_UnexpecError (
6215 p_module_name => g_module_name,
6216 p_procedure_name => l_api_name
6217 ) ;
6218 ROLLBACK TO Adjust_ShipLines_PVT;
6219 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
6220 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6221 FND_MSG_PUB.Add_Exc_Msg (
6222 p_pkg_name => g_pkg_name,
6223 p_procedure_name => l_api_name
6224 ) ;
6225 END IF;
6226 FND_MSG_PUB.Count_And_Get (
6227 p_encoded => L_FND_FALSE,
6228 p_count => x_msg_count,
6229 p_data => x_msg_data
6230 ) ;
6231 END Adjust_ShipLines;
6232
6233 -- Utility name: Create_ChLines
6234 -- Type : Private
6235 -- Function : Create Charge Lines
6236 -- Pre-reqs : None
6237 -- Parameters :
6238 -- IN : p_ChLn_Assoc IN inl_ChLn_Assoc_tp
6239 -- p_include_assoc IN VARCHAR2 := 'Y'
6240 -- p_adjustment_num IN NUMBER
6241 --
6242 -- OUT : x_new_charge_line_id OUT NUMBER new charge line at a ship line level
6243 -- x_return_status OUT NOCOPY VARCHAR2
6244 --
6245 -- Version : Current version 1.0
6246 --
6247 -- Notes :
6248 PROCEDURE Create_ChLines(
6249 p_ChLn_Assoc IN inl_ChLn_Assoc_tp,
6250 p_include_assoc IN VARCHAR2 := 'Y',
6251 p_adjustment_num IN NUMBER,
6252 x_new_charge_line_id OUT NOCOPY NUMBER,
6253 x_return_status OUT NOCOPY VARCHAR2
6254 ) IS
6255 l_program_name CONSTANT VARCHAR2 (30) := 'Create_ChLines';
6256 l_return_status VARCHAR2 (1) ;
6257 l_debug_info VARCHAR2 (200) ;
6258 l_charge_line_num NUMBER;
6259 l_adjustment_num NUMBER;
6260 BEGIN
6261 -- Standard Beginning of Procedure/Function Logging
6262 INL_LOGGING_PVT.Log_BeginProc ( p_module_name => g_module_name, p_procedure_name => l_program_name) ;
6263 -- Initialize return status to success
6264 x_return_status := L_FND_RET_STS_SUCCESS;
6265 --
6266 -- Get Max val to charge line num
6267 --
6268 IF p_ChLn_Assoc.charge_line_num IS NULL THEN
6269 l_debug_info := 'Get Max val from charge line num';
6270 INL_LOGGING_PVT.Log_Statement (
6271 p_module_name => g_module_name,
6272 p_procedure_name => l_program_name,
6273 p_debug_info => l_debug_info
6274 ) ;
6275 -- BUG#8411723 => MURALI
6276 IF p_ChLn_Assoc.match_amount_id IS NOT NULL THEN
6277 -- Get the max charge line num for all shipments affected by this match
6278 SELECT NVL(MAX(cl.charge_line_num),0) + 1
6279 INTO l_charge_line_num
6280 FROM inl_charge_lines cl
6281 WHERE EXISTS
6282 (SELECT 1
6283 FROM inl_associations assoc
6284 WHERE assoc.from_parent_table_name = 'INL_CHARGE_LINES'
6285 AND assoc.from_parent_table_id = cl.charge_line_id
6286 AND assoc.ship_header_id
6287 IN (select m1.ship_header_id
6288 from inl_corr_matches_v m1
6289 where m1.match_amount_id = p_ChLn_Assoc.match_amount_id
6290 )
6291 )
6292 ;
6293 -- BUG#8411723 => MURALI
6294 ELSE
6295 SELECT NVL (MAX (cl.charge_line_num), 0) + 1
6296 INTO l_charge_line_num
6297 FROM inl_charge_lines cl
6298 WHERE NVL (cl.parent_charge_line_id, cl.charge_line_id) IN
6299 (
6300 SELECT assoc.from_parent_table_id
6301 FROM inl_associations assoc
6302 WHERE assoc.from_parent_table_name = 'INL_CHARGE_LINES'
6303 AND assoc.ship_header_id = NVL (p_ChLn_Assoc.inl_Assoc.ship_header_id, 0)
6304 ) ;
6305 END IF;
6306 ELSE
6307 l_charge_line_num := p_ChLn_Assoc.charge_line_num;
6308 END IF;
6309 --
6310 -- Get Val to adjustment num
6311 --
6312 IF p_ChLn_Assoc.adjustment_num IS NULL THEN
6313 l_adjustment_num := p_adjustment_num;
6314 ELSE
6315 l_adjustment_num := p_ChLn_Assoc.adjustment_num;
6316 END IF;
6317 --
6318 -- Get inl_charge_lines_s.nextval
6319 --
6320 l_debug_info := 'Get inl_charge_lines_s.nextval';
6321 INL_LOGGING_PVT.Log_Statement (
6322 p_module_name => g_module_name,
6323 p_procedure_name => l_program_name,
6324 p_debug_info => l_debug_info
6325 ) ;
6326 SELECT inl_charge_lines_s.nextval
6327 INTO x_new_charge_line_id FROM dual;
6328 --
6329 -- include Charge Line record
6330 --
6331 l_debug_info := 'Including Charge Line record ';
6332 INL_LOGGING_PVT.Log_Statement (
6333 p_module_name => g_module_name,
6334 p_procedure_name => l_program_name,
6335 p_debug_info => l_debug_info
6336 ) ;
6337 INSERT
6338 INTO inl_charge_lines
6339 (
6340 charge_line_id, /* 01 */
6341 charge_line_num, /* 02 */
6342 charge_line_type_id, /* 03 */
6343 landed_cost_flag, /* 04 */
6344 parent_charge_line_id, /* 06 */
6345 adjustment_num, /* 07 */
6346 match_id, /* 08 */
6347 match_amount_id, /* 09 */
6348 charge_amt, /* 11 */
6349 currency_code, /* 12 */
6350 currency_conversion_type, /* 13 */
6351 currency_conversion_date, /* 14 */
6352 currency_conversion_rate, /* 15 */
6353 party_id, /* 16 */
6354 party_site_id, /* 17 */
6355 trx_business_category, /* 18 */
6356 intended_use, /* 19 */
6357 product_fiscal_class, /* 20 */
6358 product_category, /* 21 */
6359 product_type, /* 22 */
6360 user_def_fiscal_class, /* 23 */
6361 tax_classification_code, /* 24 */
6362 assessable_value, /* 25 */
6363 tax_already_calculated_flag, /* 26 */
6364 ship_from_party_id, /* 27 */
6365 ship_from_party_site_id, /* 28 */
6366 ship_to_organization_id, /* 29 */
6367 ship_to_location_id, /* 30 */
6368 bill_from_party_id, /* 31 */
6369 bill_from_party_site_id, /* 32 */
6370 bill_to_organization_id, /* 34 */
6371 bill_to_location_id, /* 34 */
6372 poa_party_id, /* 35 */
6373 poa_party_site_id, /* 36 */
6374 poo_organization_id, /* 37 */
6375 poo_location_id, /* 38 */
6376 created_by, /* 39 */
6377 creation_date, /* 40 */
6378 last_updated_by, /* 41 */
6379 last_update_date, /* 42 */
6380 last_update_login /* 43 */
6381 )
6382 VALUES
6383 (
6384 x_new_charge_line_id, /* 01 */
6385 l_charge_line_num, /* 02 */
6386 p_ChLn_Assoc.charge_line_type_id, /* 03 */
6387 p_ChLn_Assoc.landed_cost_flag, /* 04 */
6388 p_ChLn_Assoc.parent_charge_line_id, /* 06 */
6389 l_adjustment_num, /* 07 */
6390 p_ChLn_Assoc.match_id, /* 08 */
6391 p_ChLn_Assoc.match_amount_id, /* 09 */
6392 p_ChLn_Assoc.charge_amt, /* 11 */
6393 p_ChLn_Assoc.currency_code, /* 12 */
6394 p_ChLn_Assoc.currency_conversion_type, /* 13 */
6395 p_ChLn_Assoc.currency_conversion_date, /* 14 */
6396 p_ChLn_Assoc.currency_conversion_rate, /* 15 */
6397 p_ChLn_Assoc.party_id, /* 16 */
6398 p_ChLn_Assoc.party_site_id, /* 17 */
6399 p_ChLn_Assoc.trx_business_category, /* 18 */
6400 p_ChLn_Assoc.intended_use, /* 19 */
6401 p_ChLn_Assoc.product_fiscal_class, /* 20 */
6402 p_ChLn_Assoc.product_category, /* 21 */
6403 p_ChLn_Assoc.product_type, /* 22 */
6404 p_ChLn_Assoc.user_def_fiscal_class, /* 23 */
6405 p_ChLn_Assoc.tax_classification_code, /* 24 */
6406 p_ChLn_Assoc.assessable_value, /* 25 */
6407 p_ChLn_Assoc.tax_already_calculated_flag,/* 26 */
6408 p_ChLn_Assoc.ship_from_party_id, /* 27 */
6409 p_ChLn_Assoc.ship_from_party_site_id, /* 28 */
6410 p_ChLn_Assoc.ship_to_organization_id, /* 29 */
6411 p_ChLn_Assoc.ship_to_location_id, /* 30 */
6412 p_ChLn_Assoc.bill_from_party_id, /* 31 */
6413 p_ChLn_Assoc.bill_from_party_site_id, /* 32 */
6414 p_ChLn_Assoc.bill_to_organization_id, /* 33 */
6415 p_ChLn_Assoc.bill_to_location_id, /* 34 */
6416 p_ChLn_Assoc.poa_party_id, /* 35 */
6417 p_ChLn_Assoc.poa_party_site_id, /* 36 */
6418 p_ChLn_Assoc.poo_organization_id, /* 37 */
6419 p_ChLn_Assoc.poo_location_id, /* 38 */
6420 L_FND_USER_ID, /* 39 */
6421 sysdate, /* 40 */
6422 L_FND_USER_ID, /* 41 */
6423 sysdate, /* 42 */
6424 l_fnd_login_id --SCM-051 /* 43 */
6425 ) ;
6426 IF p_include_assoc = 'Y' THEN
6427 Create_Assoc (
6428 p_Assoc => p_ChLn_Assoc.inl_Assoc,
6429 p_from_parent_table_name => 'INL_CHARGE_LINES',
6430 p_new_line_id => x_new_charge_line_id,
6431 x_return_status => l_return_status
6432 );
6433 IF l_return_status = L_FND_RET_STS_ERROR THEN
6434 RAISE L_FND_EXC_ERROR;
6435 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
6436 RAISE L_FND_EXC_UNEXPECTED_ERROR;
6437 END IF;
6438 END IF;
6439 -- Standard End of Procedure/Function Logging
6440 INL_LOGGING_PVT.Log_EndProc(
6441 p_module_name => g_module_name,
6442 p_procedure_name => l_program_name
6443 );
6444 EXCEPTION
6445 WHEN L_FND_EXC_ERROR THEN
6446 -- Standard Expected Error Logging
6447 INL_LOGGING_PVT.Log_ExpecError(
6448 p_module_name => g_module_name,
6449 p_procedure_name => l_program_name
6450 );
6451 x_return_status := L_FND_RET_STS_ERROR;
6452 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
6453 -- Standard Unexpected Error Logging
6454 INL_LOGGING_PVT.Log_UnexpecError(
6455 p_module_name => g_module_name,
6456 p_procedure_name => l_program_name
6457 );
6458 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
6459 WHEN OTHERS THEN
6460 -- Standard Unexpected Error Logging
6461 INL_LOGGING_PVT.Log_UnexpecError(
6462 p_module_name => g_module_name,
6463 p_procedure_name => l_program_name
6464 );
6465 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
6466 IF FND_MSG_PUB.Check_Msg_Level(p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6467 THEN
6468 FND_MSG_PUB.Add_Exc_Msg(
6469 p_pkg_name => g_pkg_name,
6470 p_procedure_name => l_program_name
6471 );
6472 END IF;
6473 END Create_ChLines;
6474
6475 -- Utility name: Zero_ChLnFromPrevMatchAmt -- BUG#8411594
6476 -- Type : Private
6477 -- Function : bring to zero the estimated charge line
6478 -- Pre-reqs : None
6479 -- Parameters :
6480 -- IN : p_prev_match_amount_id IN NUMBER,
6481 -- p_prev_match_id IN NUMBER,
6482 -- p_adjustment_num IN NUMBER,
6483 --
6484 -- OUT : x_return_status OUT NOCOPY VARCHAR2
6485 --
6486 -- Version : Current version 1.0
6487 --
6488 -- Notes :
6489 PROCEDURE Zero_ChLnFromPrevMatchAmt ( --BUG#9474491
6490 p_prev_match_amount_id IN NUMBER,--BUG#9474491
6491 p_prev_match_id IN NUMBER,--BUG#9804065
6492 p_adjustment_num IN NUMBER,
6493 x_return_status OUT NOCOPY VARCHAR2
6494 ) IS
6495 l_program_name CONSTANT VARCHAR2(30) := 'Zero_ChLnFromPrevMatchAmt';
6496 l_return_status VARCHAR2(1);
6497 l_debug_info VARCHAR2(200);
6498 CURSOR original_CL
6499 IS
6500 SELECT charge_line_num ,
6501 charge_line_type_id ,
6502 landed_cost_flag ,
6503 charge_line_id ,
6504 adjustment_num ,
6505 match_id ,
6506 currency_code ,
6507 currency_conversion_type ,
6508 currency_conversion_date ,
6509 currency_conversion_rate ,
6510 party_id ,
6511 party_site_id ,
6512 trx_business_category ,
6513 intended_use ,
6514 product_fiscal_class ,
6515 product_category ,
6516 product_type ,
6517 user_def_fiscal_class ,
6518 tax_classification_code ,
6519 tax_already_calculated_flag,
6520 ship_from_party_id ,
6521 ship_from_party_site_id ,
6522 ship_to_organization_id ,
6523 ship_to_location_id ,
6524 bill_from_party_id ,
6525 bill_from_party_site_id ,
6526 bill_to_organization_id ,
6527 bill_to_location_id ,
6528 poa_party_id ,
6529 poa_party_site_id ,
6530 poo_organization_id ,
6531 poo_location_id
6532 FROM inl_charge_lines cl
6533 WHERE cl.match_Amount_id = p_prev_match_amount_id
6534 AND cl.match_id IS NULL
6535 UNION --BUG#9804065
6536 SELECT charge_line_num ,
6537 charge_line_type_id ,
6538 landed_cost_flag ,
6539 charge_line_id ,
6540 adjustment_num ,
6541 match_id ,
6542 currency_code ,
6543 currency_conversion_type ,
6544 currency_conversion_date ,
6545 currency_conversion_rate ,
6546 party_id ,
6547 party_site_id ,
6548 trx_business_category ,
6549 intended_use ,
6550 product_fiscal_class ,
6551 product_category ,
6552 product_type ,
6553 user_def_fiscal_class ,
6554 tax_classification_code ,
6555 tax_already_calculated_flag,
6556 ship_from_party_id ,
6557 ship_from_party_site_id ,
6558 ship_to_organization_id ,
6559 ship_to_location_id ,
6560 bill_from_party_id ,
6561 bill_from_party_site_id ,
6562 bill_to_organization_id ,
6563 bill_to_location_id ,
6564 poa_party_id ,
6565 poa_party_site_id ,
6566 poo_organization_id ,
6567 poo_location_id
6568 FROM inl_charge_lines cl
6569 WHERE p_prev_match_id IS NOT NULL --Bug#14044298
6570 AND cl.match_id = p_prev_match_id
6571 AND cl.match_amount_id IS NULL
6572 ;
6573 TYPE ori_CL_Type
6574 IS
6575 TABLE OF original_CL%ROWTYPE;
6576 C_ori_CL ori_CL_Type;
6577 l_ChLn_Assoc inl_ChLn_Assoc_tp;
6578 l_new_charge_line_id NUMBER;
6579 l_level_charge_is_applied VARCHAR(5):= 'X';
6580 BEGIN
6581 -- Standard Beginning of Procedure/Function Logging
6582 INL_LOGGING_PVT.Log_BeginProc (
6583 p_module_name => g_module_name,
6584 p_procedure_name => l_program_name
6585 );
6586 -- Initialize return status to success
6587 x_return_status := L_FND_RET_STS_SUCCESS;
6588 INL_LOGGING_PVT.Log_Variable (
6589 p_module_name => g_module_name,
6590 p_procedure_name => l_program_name,
6591 p_var_name => p_prev_match_amount_id,
6592 p_var_value => p_prev_match_amount_id
6593 );
6594 INL_LOGGING_PVT.Log_Variable (
6595 p_module_name => g_module_name,
6596 p_procedure_name => l_program_name,
6597 p_var_name => p_prev_match_id,
6598 p_var_value => p_prev_match_id
6599 );
6600 OPEN original_CL;
6601 FETCH original_CL BULK COLLECT INTO C_ori_CL;
6602 CLOSE original_CL;
6603 l_debug_info := C_ori_CL.LAST||' lines have been retrieved.';
6604 INL_LOGGING_PVT.Log_Statement (
6605 p_module_name => g_module_name,
6606 p_procedure_name => l_program_name,
6607 p_debug_info => l_debug_info
6608 ) ;
6609 IF NVL (C_ori_CL.LAST, 0) > 0 THEN
6610 l_ChLn_Assoc.inl_Assoc.allocation_basis := NULL;
6611 l_ChLn_Assoc.inl_Assoc.allocation_uom_code := NULL;
6612 l_ChLn_Assoc.inl_Assoc.to_parent_table_name := NULL;
6613 l_ChLn_Assoc.inl_Assoc.to_parent_table_id := NULL;
6614 l_ChLn_Assoc.adjustment_num := p_adjustment_num;
6615 l_ChLn_Assoc.match_id := p_prev_match_id; --BUG#9804065
6616 l_ChLn_Assoc.match_amount_id := p_prev_match_amount_id;
6617 l_ChLn_Assoc.charge_amt := 0;
6618 l_ChLn_Assoc.assessable_value := NULL;
6619 l_ChLn_Assoc.tax_already_calculated_flag := 'N';
6620 FOR i IN NVL(C_ori_CL.FIRST, 0)..NVL(C_ori_CL.LAST, 0)
6621 LOOP
6622 l_ChLn_Assoc.charge_line_type_id := C_ori_CL(i).charge_line_type_id;
6623 l_ChLn_Assoc.charge_line_num := C_ori_CL(i).charge_line_num;
6624 l_ChLn_Assoc.landed_cost_flag := C_ori_CL(i).landed_cost_flag;
6625 l_ChLn_Assoc.parent_charge_line_id := C_ori_CL(i).charge_line_id;
6626 l_ChLn_Assoc.currency_code := C_ori_CL(i).currency_code;
6627 l_ChLn_Assoc.currency_conversion_type := C_ori_CL(i).currency_conversion_type;
6628 l_ChLn_Assoc.currency_conversion_date := C_ori_CL(i).currency_conversion_date;
6629 l_ChLn_Assoc.currency_conversion_rate := C_ori_CL(i).currency_conversion_rate;
6630 l_ChLn_Assoc.party_id := C_ori_CL(i).party_id;
6631 l_ChLn_Assoc.party_site_id := C_ori_CL(i).party_site_id;
6632 l_ChLn_Assoc.trx_business_category := C_ori_CL(i).trx_business_category;
6633 l_ChLn_Assoc.intended_use := C_ori_CL(i).intended_use;
6634 l_ChLn_Assoc.product_fiscal_class := C_ori_CL(i).product_fiscal_class;
6635 l_ChLn_Assoc.product_category := C_ori_CL(i).product_category;
6636 l_ChLn_Assoc.product_type := C_ori_CL(i).product_type;
6637 l_ChLn_Assoc.user_def_fiscal_class := C_ori_CL(i).user_def_fiscal_class;
6638 l_ChLn_Assoc.tax_classification_code := C_ori_CL(i).tax_classification_code;
6639 l_ChLn_Assoc.ship_from_party_id := C_ori_CL(i).ship_from_party_id;
6640 l_ChLn_Assoc.ship_from_party_site_id := C_ori_CL(i).ship_from_party_site_id;
6641 l_ChLn_Assoc.ship_to_organization_id := C_ori_CL(i).ship_to_organization_id;
6642 l_ChLn_Assoc.ship_to_location_id := C_ori_CL(i).ship_to_location_id;
6643 l_ChLn_Assoc.bill_from_party_id := C_ori_CL(i).bill_from_party_id;
6644 l_ChLn_Assoc.bill_from_party_site_id := C_ori_CL(i).bill_from_party_site_id;
6645 l_ChLn_Assoc.bill_to_organization_id := C_ori_CL(i).bill_to_organization_id;
6646 l_ChLn_Assoc.bill_to_location_id := C_ori_CL(i).bill_to_location_id;
6647 l_ChLn_Assoc.poa_party_id := C_ori_CL(i).poa_party_id;
6648 l_ChLn_Assoc.poa_party_site_id := C_ori_CL(i).poa_party_site_id;
6649 l_ChLn_Assoc.poo_organization_id := C_ori_CL(i).poo_organization_id;
6650 l_ChLn_Assoc.poo_location_id := C_ori_CL(i).poo_location_id;
6651 -- Create_ChLines
6652 l_debug_info := 'Create_ChLines';
6653 INL_LOGGING_PVT.Log_Statement (
6654 p_module_name => g_module_name,
6655 p_procedure_name => l_program_name,
6656 p_debug_info => l_debug_info
6657 ) ;
6658 Create_ChLines (
6659 p_ChLn_Assoc => l_ChLn_Assoc,
6660 p_include_assoc => 'N',
6661 p_adjustment_num => p_adjustment_num,
6662 x_new_charge_line_id => l_new_charge_line_id,
6663 x_return_status => l_return_status
6664 ) ;
6665 IF l_return_status = L_FND_RET_STS_ERROR THEN
6666 RAISE L_FND_EXC_ERROR;
6667 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
6668 RAISE L_FND_EXC_UNEXPECTED_ERROR;
6669 END IF;
6670 -- TxLines
6671 l_debug_info := 'Amount = 0 for estimated taxes associated with estimated charge';
6672 INL_LOGGING_PVT.Log_Statement (
6673 p_module_name => g_module_name,
6674 p_procedure_name => l_program_name,
6675 p_debug_info => l_debug_info
6676 ) ;
6677 Zero_EstimTaxLines (
6678 p_ship_header_id => NULL,
6679 p_match_id => NULL,
6680 p_comp_name => 'INL_CHARGE_LINES',
6681 p_comp_id => C_ori_CL(i).charge_line_id,
6682 p_tax_code => NULL,
6683 p_adjustment_num => p_adjustment_num,
6684 p_prev_adjustment_num => C_ori_CL(i).adjustment_num,
6685 x_return_status => l_return_status
6686 ) ;
6687 IF l_return_status = L_FND_RET_STS_ERROR THEN
6688 RAISE L_FND_EXC_ERROR;
6689 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
6690 RAISE L_FND_EXC_UNEXPECTED_ERROR;
6691 END IF;
6692 END LOOP;
6693 END IF;
6694 -- Standard End of Procedure/Function Logging
6695 INL_LOGGING_PVT.Log_EndProc (
6696 p_module_name => g_module_name,
6697 p_procedure_name => l_program_name
6698 ) ;
6699 EXCEPTION
6700 WHEN L_FND_EXC_ERROR THEN
6701 -- Standard Expected Error Logging
6702 INL_LOGGING_PVT.Log_ExpecError (
6703 p_module_name => g_module_name,
6704 p_procedure_name => l_program_name
6705 ) ;
6706 x_return_status := L_FND_RET_STS_ERROR;
6707 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
6708 -- Standard Unexpected Error Logging
6709 INL_LOGGING_PVT.Log_UnexpecError (
6710 p_module_name => g_module_name,
6711 p_procedure_name => l_program_name
6712 ) ;
6713 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
6714 WHEN OTHERS THEN
6715 -- Standard Unexpected Error Logging
6716 INL_LOGGING_PVT.Log_UnexpecError (
6717 p_module_name => g_module_name,
6718 p_procedure_name => l_program_name
6719 ) ;
6720 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
6721 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6722 FND_MSG_PUB.Add_Exc_Msg (
6723 p_pkg_name => g_pkg_name,
6724 p_procedure_name => l_program_name
6725 ) ;
6726 END IF;
6727 END Zero_ChLnFromPrevMatchAmt;
6728
6729 -- Utility name: Zero_EstimChargeLinesPerMatch
6730 -- Type : Private
6731 -- Function : bring to zero the estimated charge line
6732 -- Pre-reqs : None
6733 -- Parameters :
6734 -- IN : p_match_id IN NUMBER,
6735 -- p_match_Amount_id IN NUMBER,
6736 -- p_charge_line_type_id IN NUMBER,
6737 --
6738 -- OUT : x_return_status OUT NOCOPY VARCHAR2
6739 --
6740 -- Version : Current version 1.0
6741 --
6742 -- Notes :
6743 PROCEDURE Zero_EstimChargeLinesPerMatch (
6744 p_match_id IN NUMBER,
6745 p_match_Amount_id IN NUMBER,
6746 p_charge_line_type_id IN NUMBER,
6747 p_adjustment_num IN NUMBER,
6748 x_return_status OUT NOCOPY VARCHAR2
6749 ) IS
6750 l_program_name CONSTANT VARCHAR2(30) := 'Zero_EstimChargeLinesPerMatch';
6751 l_return_status VARCHAR2(1);
6752 l_debug_info VARCHAR2(200);
6753
6754 --Bug#9474491
6755 CURSOR estimated_CL
6756 IS
6757 SELECT distinct --Bug#9804065
6758 cl.charge_line_num ,
6759 cl.charge_line_type_id ,
6760 cl.landed_cost_flag ,
6761 cl.charge_line_id ,
6762 cl.adjustment_num ,
6763 cl.match_id ,
6764 cl.currency_code ,
6765 cl.currency_conversion_type ,
6766 cl.currency_conversion_date ,
6767 cl.currency_conversion_rate ,
6768 cl.party_id ,
6769 cl.party_site_id ,
6770 cl.trx_business_category ,
6771 cl.intended_use ,
6772 cl.product_fiscal_class ,
6773 cl.product_category ,
6774 cl.product_type ,
6775 cl.user_def_fiscal_class ,
6776 cl.tax_classification_code ,
6777 cl.tax_already_calculated_flag,
6778 cl.ship_from_party_id ,
6779 cl.ship_from_party_site_id ,
6780 cl.ship_to_organization_id ,
6781 cl.ship_to_location_id ,
6782 cl.bill_from_party_id ,
6783 cl.bill_from_party_site_id ,
6784 cl.bill_to_organization_id ,
6785 cl.bill_to_location_id ,
6786 cl.poa_party_id ,
6787 cl.poa_party_site_id ,
6788 cl.poo_organization_id ,
6789 cl.poo_location_id
6790 FROM inl_adj_charge_lines_v cl,
6791 inl_associations a,
6792 inl_matches m
6793 WHERE
6794 ((cl.match_id IS NULL
6795 AND cl.match_amount_id IS NULL)
6796 OR
6797 cl.adjustment_num < 0) -- SCM-051
6798 AND NVL(cl.charge_amt,0) <> 0
6799 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
6800 AND a.ship_header_id = m.ship_header_id
6801 AND a.from_parent_table_id
6802 = (SELECT
6803 cl1.charge_line_id
6804 FROM
6805 inl_charge_lines cl1
6806 WHERE
6807 CONNECT_BY_ISLEAF = 1
6808 START WITH cl1.charge_line_id = cl.charge_line_id
6809 CONNECT BY PRIOR cl1.parent_charge_line_id = cl1.charge_line_id)
6810 AND cl.charge_line_type_id = p_charge_line_type_id
6811 AND (
6812 m.match_id = p_match_id
6813 OR m.match_amount_id = p_match_amount_id
6814 )
6815
6816 AND (
6817 (m.to_parent_table_name = 'INL_SHIP_HEADERS'
6818 AND a.to_parent_table_name = 'INL_SHIP_HEADERS'
6819 AND m.ship_header_id = a.ship_header_id)
6820 OR
6821 (m.to_parent_table_name = 'INL_SHIP_LINE_GROUPS'
6822 AND m.ship_header_id = a.ship_header_id
6823 AND (a.to_parent_table_name = 'INL_SHIP_HEADERS'
6824 OR (a.to_parent_table_name = 'INL_SHIP_LINE_GROUPS'
6825 AND a.to_parent_table_id = m.to_parent_table_id)
6826 )
6827 )
6828 OR
6829 (m.to_parent_table_name = 'INL_SHIP_LINES'
6830 AND m.ship_header_id = a.ship_header_id
6831 AND (a.to_parent_table_name = 'INL_SHIP_HEADERS'
6832 OR (a.to_parent_table_name = 'INL_SHIP_LINE_GROUPS'
6833 AND EXISTS (SELECT 1
6834 FROM inl_ship_lines sl
6835 WHERE sl.ship_line_id = m.to_parent_table_id -- the match ship line
6836 AND sl.ship_line_group_id = a.to_parent_table_id --belong to group of association
6837 )
6838 )
6839 OR (a.to_parent_table_name = 'INL_SHIP_LINES'
6840 AND m.to_parent_table_id = a.to_parent_table_id
6841 )
6842 )
6843 )
6844 )
6845 ;
6846 --Bug#9474491
6847 TYPE est_CL_Type
6848 IS
6849 TABLE OF estimated_CL%ROWTYPE;
6850 C_est_CL est_CL_Type;
6851 l_ChLn_Assoc inl_ChLn_Assoc_tp;
6852 l_new_charge_line_id NUMBER;
6853 l_level_charge_is_applied VARCHAR(5):= 'X';
6854 BEGIN
6855 -- Standard Beginning of Procedure/Function Logging
6856 INL_LOGGING_PVT.Log_BeginProc (
6857 p_module_name => g_module_name,
6858 p_procedure_name => l_program_name
6859 );
6860 -- Initialize return status to success
6861 x_return_status := L_FND_RET_STS_SUCCESS;
6862 l_debug_info := 'Getting the maximum level where this charge_line_type_id is applied.';
6863 INL_LOGGING_PVT.Log_Statement (
6864 p_module_name => g_module_name,
6865 p_procedure_name => l_program_name,
6866 p_debug_info => l_debug_info
6867 ) ;
6868 l_debug_info := 'p_match_Amount_id';
6869 INL_LOGGING_PVT.Log_Variable (
6870 p_module_name => g_module_name,
6871 p_procedure_name => l_program_name,
6872 p_var_name => l_debug_info,
6873 p_var_value => p_match_Amount_id
6874 );
6875 OPEN estimated_CL ;
6876 FETCH estimated_CL BULK COLLECT INTO C_est_CL;
6877 CLOSE estimated_CL;
6878 l_debug_info := C_est_CL.LAST||' lines have been retrieved.';
6879 INL_LOGGING_PVT.Log_Statement (
6880 p_module_name => g_module_name,
6881 p_procedure_name => l_program_name,
6882 p_debug_info => l_debug_info
6883 ) ;
6884 IF NVL (C_est_CL.LAST, 0) > 0 THEN
6885 l_ChLn_Assoc.inl_Assoc.allocation_basis := NULL;
6886 l_ChLn_Assoc.inl_Assoc.allocation_uom_code := NULL;
6887 l_ChLn_Assoc.inl_Assoc.to_parent_table_name := NULL;
6888 l_ChLn_Assoc.inl_Assoc.to_parent_table_id := NULL;
6889 l_ChLn_Assoc.adjustment_num := p_adjustment_num;
6890 l_ChLn_Assoc.match_id := p_match_id;
6891 l_ChLn_Assoc.match_amount_id := p_match_amount_id;
6892 l_ChLn_Assoc.charge_line_type_id := p_charge_line_type_id;
6893 l_ChLn_Assoc.charge_amt := 0;
6894 l_ChLn_Assoc.assessable_value := NULL;
6895 l_ChLn_Assoc.tax_already_calculated_flag := 'N';
6896 FOR i IN NVL (C_est_CL.FIRST, 0) ..NVL (C_est_CL.LAST, 0)
6897 LOOP
6898
6899 INL_LOGGING_PVT.Log_Variable (
6900 p_module_name => g_module_name,
6901 p_procedure_name => l_program_name,
6902 p_var_name => 'C_est_CL ('||i||') .charge_line_id',
6903 p_var_value => C_est_CL (i) .charge_line_id
6904 );
6905 l_ChLn_Assoc.charge_line_num := C_est_CL (i) .charge_line_num;
6906 l_ChLn_Assoc.landed_cost_flag := C_est_CL (i) .landed_cost_flag;
6907 l_ChLn_Assoc.parent_charge_line_id := C_est_CL (i) .charge_line_id;
6908 l_ChLn_Assoc.currency_code := C_est_CL (i) .currency_code;
6909 l_ChLn_Assoc.currency_conversion_type := C_est_CL (i) .currency_conversion_type;
6910 l_ChLn_Assoc.currency_conversion_date := C_est_CL (i) .currency_conversion_date;
6911 l_ChLn_Assoc.currency_conversion_rate := C_est_CL (i) .currency_conversion_rate;
6912 l_ChLn_Assoc.party_id := C_est_CL (i) .party_id;
6913 l_ChLn_Assoc.party_site_id := C_est_CL (i) .party_site_id;
6914 l_ChLn_Assoc.trx_business_category := C_est_CL (i) .trx_business_category;
6915 l_ChLn_Assoc.intended_use := C_est_CL (i) .intended_use;
6916 l_ChLn_Assoc.product_fiscal_class := C_est_CL (i) .product_fiscal_class;
6917 l_ChLn_Assoc.product_category := C_est_CL (i) .product_category;
6918 l_ChLn_Assoc.product_type := C_est_CL (i) .product_type;
6919 l_ChLn_Assoc.user_def_fiscal_class := C_est_CL (i) .user_def_fiscal_class;
6920 l_ChLn_Assoc.tax_classification_code := C_est_CL (i) .tax_classification_code;
6921 l_ChLn_Assoc.ship_from_party_id := C_est_CL (i) .ship_from_party_id;
6922 l_ChLn_Assoc.ship_from_party_site_id := C_est_CL (i) .ship_from_party_site_id;
6923 l_ChLn_Assoc.ship_to_organization_id := C_est_CL (i) .ship_to_organization_id;
6924 l_ChLn_Assoc.ship_to_location_id := C_est_CL (i) .ship_to_location_id;
6925 l_ChLn_Assoc.bill_from_party_id := C_est_CL (i) .bill_from_party_id;
6926 l_ChLn_Assoc.bill_from_party_site_id := C_est_CL (i) .bill_from_party_site_id;
6927 l_ChLn_Assoc.bill_to_organization_id := C_est_CL (i) .bill_to_organization_id;
6928 l_ChLn_Assoc.bill_to_location_id := C_est_CL (i) .bill_to_location_id;
6929 l_ChLn_Assoc.poa_party_id := C_est_CL (i) .poa_party_id;
6930 l_ChLn_Assoc.poa_party_site_id := C_est_CL (i) .poa_party_site_id;
6931 l_ChLn_Assoc.poo_organization_id := C_est_CL (i) .poo_organization_id;
6932 l_ChLn_Assoc.poo_location_id := C_est_CL (i) .poo_location_id;
6933 -- Create_ChLines
6934 l_debug_info := 'Create_ChLines';
6935 INL_LOGGING_PVT.Log_Statement (
6936 p_module_name => g_module_name,
6937 p_procedure_name => l_program_name,
6938 p_debug_info => l_debug_info
6939 ) ;
6940 Create_ChLines (
6941 p_ChLn_Assoc => l_ChLn_Assoc,
6942 p_include_assoc => 'N',
6943 p_adjustment_num => p_adjustment_num,
6944 x_new_charge_line_id => l_new_charge_line_id,
6945 x_return_status => l_return_status
6946 ) ;
6947 IF l_return_status = L_FND_RET_STS_ERROR THEN
6948 RAISE L_FND_EXC_ERROR;
6949 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
6950 RAISE L_FND_EXC_UNEXPECTED_ERROR;
6951 END IF;
6952 -- TxLines
6953 l_debug_info := 'Amount = 0 for estimated taxes associated with estimated charge';
6954 INL_LOGGING_PVT.Log_Statement (
6955 p_module_name => g_module_name,
6956 p_procedure_name => l_program_name,
6957 p_debug_info => l_debug_info
6958 ) ;
6959 Zero_EstimTaxLines (
6960 p_ship_header_id => NULL,
6961 p_match_id => p_match_id,
6962 p_comp_name => 'INL_CHARGE_LINES',
6963 p_comp_id => C_est_CL (i) .charge_line_id,
6964 p_tax_code => NULL,
6965 p_adjustment_num => p_adjustment_num,
6966 x_return_status => l_return_status
6967 ) ;
6968 IF l_return_status = L_FND_RET_STS_ERROR THEN
6969 RAISE L_FND_EXC_ERROR;
6970 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
6971 RAISE L_FND_EXC_UNEXPECTED_ERROR;
6972 END IF;
6973 END LOOP;
6974 END IF;
6975 -- Standard End of Procedure/Function Logging
6976 INL_LOGGING_PVT.Log_EndProc (
6977 p_module_name => g_module_name,
6978 p_procedure_name => l_program_name
6979 ) ;
6980 EXCEPTION
6981 WHEN L_FND_EXC_ERROR THEN
6982 -- Standard Expected Error Logging
6983 INL_LOGGING_PVT.Log_ExpecError (
6984 p_module_name => g_module_name,
6985 p_procedure_name => l_program_name
6986 ) ;
6987 x_return_status := L_FND_RET_STS_ERROR;
6988 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
6989 -- Standard Unexpected Error Logging
6990 INL_LOGGING_PVT.Log_UnexpecError (
6991 p_module_name => g_module_name,
6992 p_procedure_name => l_program_name
6993 ) ;
6994 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
6995 WHEN OTHERS THEN
6996 -- Standard Unexpected Error Logging
6997 INL_LOGGING_PVT.Log_UnexpecError (
6998 p_module_name => g_module_name,
6999 p_procedure_name => l_program_name
7000 ) ;
7001 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
7002 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
7003 FND_MSG_PUB.Add_Exc_Msg (
7004 p_pkg_name => g_pkg_name,
7005 p_procedure_name => l_program_name
7006 ) ;
7007 END IF;
7008 END Zero_EstimChargeLinesPerMatch;
7009
7010 -- BUG#9474491
7011 -- Utility name: Create_NewEstimChLinesPerMatch
7012 -- Type : Private
7013 -- Function : Create new estimated lines in case of, after creating an adjustment, a given tax (or cost factor) becomes zero,
7014 -- then the estimated tax (or cost factor) should come back as the current adjustment amount.
7015 -- This new estimated lines should have NULL value in match_id and match_amount_id but with this we'll be unable to know about the match
7016 -- that has generated this new charge lines
7017 -- Pre-reqs : None
7018 -- Parameters :
7019 -- IN : p_match_id IN NUMBER,
7020 -- p_match_Amount_id IN NUMBER,
7021 -- p_charge_line_type_id IN NUMBER,
7022 --
7023 -- OUT : x_return_status OUT NOCOPY VARCHAR2
7024 --
7025 -- Version : Current version 1.0
7026 --
7027 -- Notes :
7028 PROCEDURE Create_NewEstimChLinesPerMatch (
7029 p_match_id IN NUMBER,
7030 p_match_Amount_id IN NUMBER,
7031 p_charge_line_type_id IN NUMBER,
7032 p_adjustment_num IN NUMBER,
7033 x_return_status OUT NOCOPY VARCHAR2
7034 ) IS
7035 l_program_name CONSTANT VARCHAR2(30) := 'Create_NewEstimChLinesPerMatch';
7036 l_return_status VARCHAR2(1);
7037 l_debug_info VARCHAR2(200);
7038
7039 l_created_chLnId NUMBER;
7040 l_created_chLnAmt NUMBER;
7041 l_sum_chLnAmt NUMBER;
7042 l_alc_zero NUMBER; --Bug#11064618
7043
7044 CURSOR c_affected_ship (pc_charge_line_id NUMBER)
7045 IS
7046 SELECT
7047 a.ship_header_id ,
7048 a.to_parent_table_name,
7049 a.to_parent_table_id
7050 FROM
7051 inl_associations a
7052 WHERE
7053 a.from_parent_table_name = 'INL_CHARGE_LINES'
7054 AND a.from_parent_table_id = pc_charge_line_id
7055 ;
7056
7057 TYPE affected_ship_Type
7058 IS
7059 TABLE OF c_affected_ship%ROWTYPE INDEX BY BINARY_INTEGER;
7060
7061 affected_by_alc_ship_lst affected_ship_Type;
7062 affected_by_elc_lst affected_ship_Type;
7063
7064 CURSOR c_ELC_CLines (pc_ship_line_id NUMBER)
7065 IS
7066 SELECT
7067 cl.adjustment_num ,
7068 cl.charge_line_id ,
7069 cl.parent_charge_line_id ,
7070 cl.charge_line_num ,
7071 cl.landed_cost_flag ,
7072 cl.update_allowed ,
7073 cl.source_code ,
7074 cl.charge_amt ,
7075 cl.currency_code ,
7076 cl.currency_conversion_type ,
7077 cl.currency_conversion_date ,
7078 cl.currency_conversion_rate ,
7079 cl.party_id ,
7080 cl.party_site_id ,
7081 cl.trx_business_category ,
7082 cl.intended_use ,
7083 cl.product_fiscal_class ,
7084 cl.product_category ,
7085 cl.product_type ,
7086 cl.user_def_fiscal_class ,
7087 cl.tax_classification_code ,
7088 cl.assessable_value ,
7089 cl.tax_already_calculated_flag,
7090 cl.ship_from_party_id ,
7091 cl.ship_from_party_site_id ,
7092 cl.ship_to_organization_id ,
7093 cl.ship_to_location_id ,
7094 cl.bill_from_party_id ,
7095 cl.bill_from_party_site_id ,
7096 cl.bill_to_organization_id ,
7097 cl.bill_to_location_id ,
7098 cl.poa_party_id ,
7099 cl.poa_party_site_id ,
7100 cl.poo_organization_id ,
7101 cl.poo_location_id ,
7102 a.to_parent_table_name ,
7103 a.to_parent_table_id
7104 FROM
7105 inl_charge_lines cl,
7106 inl_associations a,
7107 inl_ship_lines_all sl,
7108 inl_ship_line_groups slg,
7109 inl_ship_headers_all sh
7110 WHERE
7111 cl.adjustment_num = 0
7112 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
7113 AND a.from_parent_table_id = cl.charge_line_id
7114 AND cl.charge_line_type_id = p_charge_line_type_id
7115 AND a.ship_header_id = sl.ship_header_id
7116 AND ((a.to_parent_table_name = 'INL_SHIP_LINES'
7117 AND a.to_parent_table_id = sl.ship_line_id)
7118 OR
7119 (a.to_parent_table_name = 'INL_SHIP_LINE_GROUPS'
7120 AND a.to_parent_table_id = sl.ship_line_group_id)
7121 OR
7122 (a.to_parent_table_name = 'INL_SHIP_HEADERS'
7123 AND a.to_parent_table_id = sl.ship_header_id))
7124 AND sh.ship_header_id = sl.ship_header_id
7125 AND slg.ship_line_group_id = sl.ship_line_group_id
7126 AND sl.ship_line_id = pc_ship_line_id
7127 ;
7128 TYPE ELC_CLines_Type
7129 IS
7130 TABLE OF c_ELC_CLines%ROWTYPE INDEX BY BINARY_INTEGER;
7131
7132 ELC_CLines_lst ELC_CLines_Type;
7133 l_ELC_ShouldBeCreatedFlag VARCHAR2(1);
7134 l_last_parentChargeLineID NUMBER;
7135 BEGIN
7136 -- Standard Beginning of Procedure/Function Logging
7137 INL_LOGGING_PVT.Log_BeginProc (
7138 p_module_name => g_module_name,
7139 p_procedure_name => l_program_name
7140 );
7141 -- Initialize return status to success
7142 x_return_status := L_FND_RET_STS_SUCCESS;
7143
7144 -- - There isn't a link with the previous match_id/match_amount_id (the one that is being reverted).
7145 -- - Each match or match amount generate one charge line.
7146 -- - An action could be required when:
7147 -- - this new charge is negative
7148 -- - The sum of charge lines, with the same cost factor, in each point that it is being applyed, become 0
7149 -- - There was estimated charge line with the same cost factor applyed to the current line
7150 -- - There wasn't any actual value, with the same cost factor, in each point that it is being applyed.
7151
7152
7153 l_debug_info := ' Getting charge line information.';
7154 INL_LOGGING_PVT.Log_Statement (
7155 p_module_name => g_module_name,
7156 p_procedure_name => l_program_name,
7157 p_debug_info => l_debug_info
7158 ) ;
7159 INL_LOGGING_PVT.Log_Variable (
7160 p_module_name => g_module_name,
7161 p_procedure_name => l_program_name,
7162 p_var_name => 'p_match_id',
7163 p_var_value => p_match_id
7164 ) ;
7165 INL_LOGGING_PVT.Log_Variable (
7166 p_module_name => g_module_name,
7167 p_procedure_name => l_program_name,
7168 p_var_name => 'p_match_Amount_id',
7169 p_var_value => p_match_Amount_id
7170 ) ;
7171 --Bug#11064618
7172 /*
7173 IF p_match_id IS NOT NULL THEN
7174
7175 SELECT
7176 cl.charge_line_id,
7177 cl.charge_amt
7178 INTO
7179 l_created_chLnId,
7180 l_created_chLnAmt
7181 FROM
7182 inl_charge_lines cl
7183 WHERE
7184 cl.match_id = p_match_id
7185 AND cl.charge_amt <> 0 --BUG#9804065 --discards lines to zeroes estimated
7186 ;
7187 ELSE
7188
7189 SELECT
7190 cl.charge_line_id,
7191 cl.charge_amt
7192 INTO
7193 l_created_chLnId,
7194 l_created_chLnAmt
7195 FROM
7196 inl_charge_lines cl
7197 WHERE
7198 cl.match_Amount_id = p_match_Amount_id
7199 AND cl.charge_amt <> 0 --BUG#9804065 -- discards lines to zeroes estimated
7200 ;
7201
7202 END IF;
7203 */
7204 SELECT
7205 cl.charge_line_id,
7206 cl.charge_amt
7207 INTO
7208 l_created_chLnId,
7209 l_created_chLnAmt
7210 FROM
7211 inl_charge_lines cl
7212 WHERE
7213 ((p_match_id IS NOT NULL
7214 AND cl.match_id = p_match_id)
7215 OR
7216 (p_match_Amount_id IS NOT NULL
7217 AND cl.match_Amount_id = p_match_Amount_id))
7218 AND (cl.parent_charge_line_id IS NULL
7219 -- OR 0 not in
7220 OR 0 < --SCM-051
7221 (SELECT
7222 cl1.adjustment_num
7223 FROM
7224 inl_charge_lines cl1
7225 WHERE
7226 CONNECT_BY_ISLEAF = 1
7227 START WITH cl1.charge_line_id = cl.charge_line_id
7228 CONNECT BY PRIOR cl1.parent_charge_line_id = cl1.charge_line_id));
7229 -- when a invoice with amt = 0 is canceled we are unable to redo the ELC
7230 --Bug#11064618
7231
7232
7233 INL_LOGGING_PVT.Log_Variable (
7234 p_module_name => g_module_name,
7235 p_procedure_name => l_program_name,
7236 p_var_name => 'l_created_chLnId',
7237 p_var_value => l_created_chLnId
7238 ) ;
7239
7240 INL_LOGGING_PVT.Log_Variable (
7241 p_module_name => g_module_name,
7242 p_procedure_name => l_program_name,
7243 p_var_name => 'l_created_chLnAmt',
7244 p_var_value => l_created_chLnAmt
7245 ) ;
7246
7247 INL_LOGGING_PVT.Log_Variable (
7248 p_module_name => g_module_name,
7249 p_procedure_name => l_program_name,
7250 p_var_name => 'p_charge_line_type_id',
7251 p_var_value => p_charge_line_type_id
7252 ) ;
7253
7254 -- is the current charge line negative?
7255 IF l_created_chLnAmt < 0 THEN
7256
7257 -- get all points affected by current charge line
7258 OPEN c_affected_ship(l_created_chLnId);
7259 FETCH c_affected_ship BULK COLLECT INTO affected_by_alc_ship_lst;
7260 CLOSE c_affected_ship;
7261
7262 l_debug_info := 'affected_by_alc: '||affected_by_alc_ship_lst.LAST||' line(s) have been retrieved.';
7263 INL_LOGGING_PVT.Log_Statement (
7264 p_module_name => g_module_name,
7265 p_procedure_name => l_program_name,
7266 p_debug_info => l_debug_info
7267 ) ;
7268 IF NVL (affected_by_alc_ship_lst.LAST, 0) > 0 THEN
7269
7270 -- Go down in all points where charge line is applied
7271 -- in case of Actuals the point is ever a ship_line
7272 FOR i IN NVL (affected_by_alc_ship_lst.FIRST, 0)..NVL (affected_by_alc_ship_lst.LAST, 0)
7273 LOOP
7274 INL_LOGGING_PVT.Log_Variable (
7275 p_module_name => g_module_name,
7276 p_procedure_name => l_program_name,
7277 p_var_name => 'affected_by_alc_ship_lst('||i||').ship_header_id',
7278 p_var_value => affected_by_alc_ship_lst(i).ship_header_id
7279 ) ;
7280
7281 INL_LOGGING_PVT.Log_Variable (
7282 p_module_name => g_module_name,
7283 p_procedure_name => l_program_name,
7284 p_var_name => 'affected_by_alc_ship_lst('||i||').to_parent_table_name',
7285 p_var_value => affected_by_alc_ship_lst(i).to_parent_table_name
7286 ) ;
7287
7288 INL_LOGGING_PVT.Log_Variable (
7289 p_module_name => g_module_name,
7290 p_procedure_name => l_program_name,
7291 p_var_name => 'affected_by_alc_ship_lst('||i||').to_parent_table_id',
7292 p_var_value => affected_by_alc_ship_lst(i).to_parent_table_id
7293 ) ;
7294
7295 -- affected_by_alc_ship_lst.inl_Assoc.ship_header_id := affected_by_alc_ship_lst(i).ship_header_id;
7296
7297 -- CURRENTLY ALL ASSOCIATIONS OF ACTUALS ARE MADE AT LINE LEVEL
7298 IF affected_by_alc_ship_lst(i).to_parent_table_name <> 'INL_SHIP_LINES' THEN
7299
7300 l_debug_info := 'Problem in INL SHIPMENT PVT regarding canceled invoice applied at a level different from line';
7301 INL_LOGGING_PVT.Log_Statement (
7302 p_module_name => g_module_name,
7303 p_procedure_name => l_program_name,
7304 p_debug_info => l_debug_info
7305 ) ;
7306 RAISE L_FND_EXC_ERROR;
7307 END IF;
7308
7309 -- sum all charge lines that come to each point
7310
7311 SELECT
7312 SUM(cl.charge_amt)
7313 INTO
7314 l_sum_chLnAmt
7315 FROM
7316 inl_adj_charge_lines_v cl,
7317 inl_adj_associations_v a, --BUG#9804065
7318 inl_ship_lines_all sl,
7319 inl_ship_line_groups slg,
7320 inl_ship_headers_all sh
7321 WHERE
7322 a.ship_header_id = sl.ship_header_id
7323 AND cl.charge_line_type_id = p_charge_line_type_id --same cost factor
7324 AND ((a.to_parent_table_name = 'INL_SHIP_LINES'
7325 AND a.to_parent_table_id = sl.ship_line_id)
7326 OR
7327 (a.to_parent_table_name = 'INL_SHIP_LINE_GROUPS'
7328 AND a.to_parent_table_id = sl.ship_line_group_id)
7329 OR
7330 (a.to_parent_table_name = 'INL_SHIP_HEADERS'
7331 AND a.to_parent_table_id = sl.ship_header_id))
7332 AND sh.ship_header_id = sl.ship_header_id
7333 AND slg.ship_line_group_id = sl.ship_line_group_id
7334 AND sl.ship_line_id = affected_by_alc_ship_lst(i).to_parent_table_id
7335 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
7336 AND a.from_parent_table_id = cl.charge_line_id
7337 ;
7338
7339 l_debug_info := 'Sum all charge lines that come to this point: '||l_sum_chLnAmt;
7340 INL_LOGGING_PVT.Log_Statement (
7341 p_module_name => g_module_name,
7342 p_procedure_name => l_program_name,
7343 p_debug_info => l_debug_info
7344 ) ;
7345
7346 -- Verify if sum of lines with the same cost factor become 0
7347 IF l_sum_chLnAmt = 0 THEN --without nvl
7348
7349 -- Verify if exist any actual with amount = 0 coming to this point
7350 --Bug#11064618
7351
7352 l_debug_info := 'Verify if exist any actual with amount = 0 coming to this point ';
7353 INL_LOGGING_PVT.Log_Statement (
7354 p_module_name => g_module_name,
7355 p_procedure_name => l_program_name,
7356 p_debug_info => l_debug_info
7357 ) ;
7358
7359 SELECT
7360 COUNT(*)
7361 INTO
7362 l_alc_zero
7363 FROM
7364 inl_charge_lines cl,
7365 inl_associations assoc
7366 WHERE
7367 assoc.to_parent_table_id = affected_by_alc_ship_lst(i).to_parent_table_id
7368 AND assoc.to_parent_table_name = 'INL_SHIP_LINES'
7369 AND assoc.from_parent_table_name = 'INL_CHARGE_LINES'
7370 AND assoc.from_parent_table_id = cl.charge_line_id
7371 AND cl.charge_line_type_id = p_charge_line_type_id --same cost factor
7372 AND cl.charge_amt = 0
7373 AND (cl.parent_charge_line_id IS NULL
7374 OR 0 not in
7375 (SELECT
7376 cl1.adjustment_num
7377 FROM
7378 inl_charge_lines cl1
7379 WHERE
7380 CONNECT_BY_ISLEAF = 1
7381 START WITH cl1.charge_line_id = cl.charge_line_id
7382 CONNECT BY PRIOR cl1.parent_charge_line_id = cl1.charge_line_id));
7383 IF NVL(l_alc_zero,0) = 0 THEN
7384 --Bug#11064618
7385
7386 -- Get all ELC that came to this point
7387
7388 OPEN c_ELC_CLines(affected_by_alc_ship_lst(i).to_parent_table_id);
7389 FETCH c_ELC_CLines BULK COLLECT INTO ELC_CLines_lst;
7390 CLOSE c_ELC_CLines;
7391
7392 l_debug_info := ELC_CLines_lst.LAST||' line(s) have been retrieved (ELC_CLines_lst).';
7393 INL_LOGGING_PVT.Log_Statement (
7394 p_module_name => g_module_name,
7395 p_procedure_name => l_program_name,
7396 p_debug_info => l_debug_info
7397 ) ;
7398 IF NVL (ELC_CLines_lst.LAST, 0) > 0 THEN
7399
7400 FOR j IN NVL (ELC_CLines_lst.FIRST, 0)..NVL (ELC_CLines_lst.LAST, 0)
7401 LOOP
7402
7403 l_ELC_ShouldBeCreatedFlag := 'Y';
7404
7405 INL_LOGGING_PVT.Log_Variable (
7406 p_module_name => g_module_name,
7407 p_procedure_name => l_program_name,
7408 p_var_name => 'ELC_CLines_lst('||j||').to_parent_table_name',
7409 p_var_value => ELC_CLines_lst(j).to_parent_table_name
7410 ) ;
7411
7412 INL_LOGGING_PVT.Log_Variable (
7413 p_module_name => g_module_name,
7414 p_procedure_name => l_program_name,
7415 p_var_name => 'ELC_CLines_lst('||j||').to_parent_table_id',
7416 p_var_value => ELC_CLines_lst(j).to_parent_table_id
7417 ) ;
7418
7419 INL_LOGGING_PVT.Log_Variable (
7420 p_module_name => g_module_name,
7421 p_procedure_name => l_program_name,
7422 p_var_name => 'ELC_CLines_lst('||j||').adjustment_num',
7423 p_var_value => ELC_CLines_lst(j).adjustment_num
7424 ) ;
7425
7426 INL_LOGGING_PVT.Log_Variable (
7427 p_module_name => g_module_name,
7428 p_procedure_name => l_program_name,
7429 p_var_name => 'ELC_CLines_lst('||j||').charge_line_num',
7430 p_var_value => ELC_CLines_lst(j).charge_line_num
7431 ) ;
7432
7433 INL_LOGGING_PVT.Log_Variable (
7434 p_module_name => g_module_name,
7435 p_procedure_name => l_program_name,
7436 p_var_name => 'ELC_CLines_lst('||j||').charge_amt',
7437 p_var_value => ELC_CLines_lst(j).charge_amt
7438 ) ;
7439
7440 -- To each ELC verify if exist any ALC
7441
7442
7443 -- get all points affected by current charge line
7444 OPEN c_affected_ship(ELC_CLines_lst(j).charge_line_id);
7445 FETCH c_affected_ship BULK COLLECT INTO affected_by_elc_lst;
7446 CLOSE c_affected_ship;
7447
7448 l_debug_info := 'Affected_by_elc '||affected_by_elc_lst.LAST||' line(s) have been retrieved.';
7449 INL_LOGGING_PVT.Log_Statement (
7450 p_module_name => g_module_name,
7451 p_procedure_name => l_program_name,
7452 p_debug_info => l_debug_info
7453 ) ;
7454 IF NVL (affected_by_elc_lst.LAST, 0) > 0 THEN
7455
7456 -- Go down in all points where charge line is applied
7457 FOR k IN NVL (affected_by_elc_lst.FIRST, 0)..NVL (affected_by_elc_lst.LAST, 0)
7458 LOOP
7459 INL_LOGGING_PVT.Log_Variable (
7460 p_module_name => g_module_name,
7461 p_procedure_name => l_program_name,
7462 p_var_name => 'affected_by_elc_lst('||k||').ship_header_id',
7463 p_var_value => affected_by_elc_lst(k).ship_header_id
7464 ) ;
7465
7466 INL_LOGGING_PVT.Log_Variable (
7467 p_module_name => g_module_name,
7468 p_procedure_name => l_program_name,
7469 p_var_name => 'affected_by_elc_lst('||k||').to_parent_table_name',
7470 p_var_value => affected_by_elc_lst(k).to_parent_table_name
7471 ) ;
7472
7473 INL_LOGGING_PVT.Log_Variable (
7474 p_module_name => g_module_name,
7475 p_procedure_name => l_program_name,
7476 p_var_name => 'affected_by_elc_lst('||k||').to_parent_table_id',
7477 p_var_value => affected_by_elc_lst(k).to_parent_table_id
7478 ) ;
7479
7480 -- Search for an actual for this cost factor
7481 IF affected_by_elc_lst(k).to_parent_table_name = 'INL_SHIP_HEADERS' then
7482 SELECT
7483 SUM(cl.charge_amt)
7484 INTO
7485 l_sum_chLnAmt
7486 FROM
7487 inl_adj_charge_lines_v cl,
7488 inl_associations a
7489 WHERE
7490 a.ship_header_id = affected_by_elc_lst(k).ship_header_id
7491 AND cl.charge_line_type_id = p_charge_line_type_id --same cost factor
7492 AND NVL(cl.match_id,cl.match_amount_id) IS NOT NULL --only ALC
7493 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
7494 AND a.from_parent_table_id = cl.charge_line_id
7495 ;
7496
7497 --Bug#11064618
7498 l_debug_info := 'Verify if exist any actual with amount = 0 coming to this HEADER ';
7499 INL_LOGGING_PVT.Log_Statement (
7500 p_module_name => g_module_name,
7501 p_procedure_name => l_program_name,
7502 p_debug_info => l_debug_info
7503 ) ;
7504
7505 SELECT
7506 COUNT(*)
7507 INTO
7508 l_alc_zero
7509 FROM
7510 inl_charge_lines cl,
7511 inl_associations assoc
7512 WHERE
7513 assoc.ship_header_id = affected_by_elc_lst(k).ship_header_id
7514 AND assoc.to_parent_table_name = 'INL_SHIP_LINES'
7515 AND assoc.from_parent_table_name = 'INL_CHARGE_LINES'
7516 AND assoc.from_parent_table_id = cl.charge_line_id
7517 AND cl.charge_amt = 0
7518 AND cl.charge_line_type_id = p_charge_line_type_id --same cost factor
7519 AND NVL(cl.match_id,cl.match_amount_id) IS NOT NULL --only ALC
7520 AND (cl.parent_charge_line_id IS NULL
7521 OR 0 not in
7522 (SELECT
7523 cl1.adjustment_num
7524 FROM
7525 inl_charge_lines cl1
7526 WHERE
7527 CONNECT_BY_ISLEAF = 1
7528 START WITH cl1.charge_line_id = cl.charge_line_id
7529 CONNECT BY PRIOR cl1.parent_charge_line_id = cl1.charge_line_id));
7530 --Bug#11064618
7531
7532 ELSIF affected_by_elc_lst(k).to_parent_table_name = 'INL_SHIP_LINE_GROUPS' then
7533 SELECT
7534 SUM(cl.charge_amt)
7535 INTO
7536 l_sum_chLnAmt
7537 FROM
7538 inl_adj_charge_lines_v cl,
7539 inl_associations a
7540 WHERE
7541 a.ship_header_id = affected_by_elc_lst(k).ship_header_id
7542 AND cl.charge_line_type_id = p_charge_line_type_id --same cost factor
7543 AND NVL(cl.match_id,cl.match_amount_id) IS NOT NULL --only ALC
7544 AND EXISTS (SELECT 1
7545 FROM inl_ship_lines_all sl
7546 WHERE sl.ship_line_id = a.to_parent_table_id
7547 AND sl.ship_header_id = affected_by_elc_lst(k).ship_header_id
7548 AND sl.ship_line_group_id = affected_by_elc_lst(k).to_parent_table_id
7549 AND ROWNUM < 2)
7550 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
7551 AND a.from_parent_table_id = cl.charge_line_id
7552 ;
7553
7554 --Bug#11064618
7555 l_debug_info := 'Verify if exist any actual with amount = 0 coming to this GROUP ';
7556 INL_LOGGING_PVT.Log_Statement (
7557 p_module_name => g_module_name,
7558 p_procedure_name => l_program_name,
7559 p_debug_info => l_debug_info
7560 ) ;
7561
7562 SELECT
7563 COUNT(*)
7564 INTO
7565 l_alc_zero
7566 FROM
7567 inl_charge_lines cl,
7568 inl_associations assoc
7569 WHERE
7570 assoc.ship_header_id = affected_by_elc_lst(k).ship_header_id
7571 AND assoc.to_parent_table_name = 'INL_SHIP_LINES'
7572 AND assoc.from_parent_table_name = 'INL_CHARGE_LINES'
7573 AND assoc.from_parent_table_id = cl.charge_line_id
7574 AND cl.charge_amt = 0
7575 AND cl.charge_line_type_id = p_charge_line_type_id --same cost factor
7576 AND NVL(cl.match_id,cl.match_amount_id) IS NOT NULL --only ALC
7577 AND EXISTS (SELECT 1
7578 FROM inl_ship_lines_all sl
7579 WHERE sl.ship_line_id = assoc.to_parent_table_id
7580 AND sl.ship_header_id = affected_by_elc_lst(k).ship_header_id
7581 AND sl.ship_line_group_id = affected_by_elc_lst(k).to_parent_table_id
7582 AND ROWNUM < 2)
7583 AND (cl.parent_charge_line_id IS NULL
7584 OR 0 not in
7585 (SELECT
7586 cl1.adjustment_num
7587 FROM
7588 inl_charge_lines cl1
7589 WHERE
7590 CONNECT_BY_ISLEAF = 1
7591 START WITH cl1.charge_line_id = cl.charge_line_id
7592 CONNECT BY PRIOR cl1.parent_charge_line_id = cl1.charge_line_id));
7593 --Bug#11064618
7594
7595 ELSIF affected_by_elc_lst(k).to_parent_table_name = 'INL_SHIP_LINES' then
7596 SELECT
7597 SUM(cl.charge_amt)
7598 INTO
7599 l_sum_chLnAmt
7600 FROM
7601 inl_adj_charge_lines_v cl,
7602 inl_associations a
7603 WHERE
7604 a.ship_header_id = affected_by_elc_lst(k).ship_header_id
7605 AND cl.charge_line_type_id = p_charge_line_type_id --same cost factor
7606 AND NVL(cl.match_id,cl.match_amount_id) IS NOT NULL --only ALC
7607 AND a.to_parent_table_id = affected_by_elc_lst(k).to_parent_table_id
7608 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
7609 AND a.from_parent_table_id = cl.charge_line_id
7610 ;
7611 --Bug#11064618
7612 l_debug_info := 'Verify if exist any actual with amount = 0 coming to this line ';
7613 INL_LOGGING_PVT.Log_Statement (
7614 p_module_name => g_module_name,
7615 p_procedure_name => l_program_name,
7616 p_debug_info => l_debug_info
7617 ) ;
7618
7619 SELECT
7620 COUNT(*)
7621 INTO
7622 l_alc_zero
7623 FROM
7624 inl_charge_lines cl,
7625 inl_associations assoc
7626 WHERE
7627 assoc.ship_header_id = affected_by_elc_lst(k).ship_header_id
7628 AND assoc.to_parent_table_name = 'INL_SHIP_LINES'
7629 AND assoc.to_parent_table_id = affected_by_elc_lst(k).to_parent_table_id
7630 AND assoc.from_parent_table_name = 'INL_CHARGE_LINES'
7631 AND assoc.from_parent_table_id = cl.charge_line_id
7632 AND cl.charge_amt = 0
7633 AND cl.charge_line_type_id = p_charge_line_type_id --same cost factor
7634 AND NVL(cl.match_id,cl.match_amount_id) IS NOT NULL --only ALC
7635 AND (cl.parent_charge_line_id IS NULL
7636 OR 0 not in
7637 (SELECT
7638 cl1.adjustment_num
7639 FROM
7640 inl_charge_lines cl1
7641 WHERE
7642 CONNECT_BY_ISLEAF = 1
7643 START WITH cl1.charge_line_id = cl.charge_line_id
7644 CONNECT BY PRIOR cl1.parent_charge_line_id = cl1.charge_line_id));
7645 --Bug#11064618
7646 ELSE
7647 -- CURRENTLY ALL ASSOCIATIONS OF ELC ARE MADE AT SHIPMENT, GROUP OR LINE LEVEL
7648
7649 l_debug_info := 'Problem in INL SHIPMENT PVT regarding canceled invoice: ELC applied at a level different from SHIPMENT, GROUP OR LINE';
7650 INL_LOGGING_PVT.Log_Statement (
7651 p_module_name => g_module_name,
7652 p_procedure_name => l_program_name,
7653 p_debug_info => l_debug_info
7654 ) ;
7655 RAISE L_FND_EXC_ERROR;
7656
7657 END IF;
7658 INL_LOGGING_PVT.Log_Variable (
7659 p_module_name => g_module_name,
7660 p_procedure_name => l_program_name,
7661 p_var_name => 'l_sum_chLnAmt',
7662 p_var_value => l_sum_chLnAmt
7663 ) ;
7664
7665 IF NVL(l_sum_chLnAmt,0)>0
7666 OR NVL(l_alc_zero,0)>0
7667 THEN
7668 l_ELC_ShouldBeCreatedFlag := 'N';
7669 END IF;
7670 exit when l_ELC_ShouldBeCreatedFlag = 'N';
7671 END LOOP;
7672
7673 END IF;
7674 IF l_ELC_ShouldBeCreatedFlag = 'Y' THEN
7675 l_debug_info := 'Getting last parent charge line id ***';
7676 INL_LOGGING_PVT.Log_Statement (
7677 p_module_name => g_module_name,
7678 p_procedure_name => l_program_name,
7679 p_debug_info => l_debug_info
7680 ) ;
7681 INL_LOGGING_PVT.Log_Variable (
7682 p_module_name => g_module_name,
7683 p_procedure_name => l_program_name,
7684 p_var_name => 'ELC_CLines_lst('||j||').charge_line_id',
7685 p_var_value => ELC_CLines_lst(j).charge_line_id
7686 ) ;
7687
7688 SELECT
7689 cl1.charge_line_id
7690 INTO
7691 l_last_parentChargeLineID
7692 FROM
7693 inl_charge_lines cl1
7694 WHERE
7695 CONNECT_BY_ISLEAF = 1
7696 START WITH cl1.charge_line_id = ELC_CLines_lst(j).charge_line_id
7697 CONNECT BY PRIOR cl1.charge_line_id = cl1.parent_charge_line_id
7698 ;
7699
7700 l_debug_info := 'Inserting a new ELC ***';
7701 INL_LOGGING_PVT.Log_Statement (
7702 p_module_name => g_module_name,
7703 p_procedure_name => l_program_name,
7704 p_debug_info => l_debug_info
7705 ) ;
7706 --Create Charge lines and associations without use of bulk
7707 -- record should be generated before the evaluation of the next charge line
7708 --
7709 -- ASSOCIATIONS remain the same from original ELC charge
7710 INSERT INTO inl_charge_lines
7711 (
7712 charge_line_id , /* 01 */
7713 charge_line_num , /* 02 */
7714 charge_line_type_id , /* 03 */
7715 landed_cost_flag , /* 04 */
7716 update_allowed , /* 05 */
7717 source_code , /* 06 */
7718 parent_charge_line_id , /* 07 */
7719 adjustment_num , /* 08 */
7720 match_id , /* 09 */
7721 match_amount_id , /* 10 */
7722 charge_amt , /* 11 */
7723 currency_code , /* 12 */
7724 currency_conversion_type , /* 13 */
7725 currency_conversion_date , /* 14 */
7726 currency_conversion_rate , /* 15 */
7727 party_id , /* 16 */
7728 party_site_id , /* 17 */
7729 trx_business_category , /* 18 */
7730 intended_use , /* 19 */
7731 product_fiscal_class , /* 20 */
7732 product_category , /* 21 */
7733 product_type , /* 22 */
7734 user_def_fiscal_class , /* 23 */
7735 tax_classification_code , /* 24 */
7736 assessable_value , /* 25 */
7737 tax_already_calculated_flag, /* 26 */
7738 ship_from_party_id , /* 27 */
7739 ship_from_party_site_id , /* 28 */
7740 ship_to_organization_id , /* 29 */
7741 ship_to_location_id , /* 30 */
7742 bill_from_party_id , /* 31 */
7743 bill_from_party_site_id , /* 32 */
7744 bill_to_organization_id , /* 33 */
7745 bill_to_location_id , /* 34 */
7746 poa_party_id , /* 35 */
7747 poa_party_site_id , /* 36 */
7748 poo_organization_id , /* 37 */
7749 poo_location_id , /* 38 */
7750 created_by , /* 39 */
7751 creation_date , /* 40 */
7752 last_updated_by , /* 41 */
7753 last_update_date , /* 42 */
7754 last_update_login /* 43 */
7755 )
7756 VALUES
7757 (
7758 inl_charge_lines_s.nextval , /* 01 */
7759 ELC_CLines_lst(j).charge_line_num , /* 02 */
7760 p_charge_line_type_id , /* 03 */
7761 ELC_CLines_lst(j).landed_cost_flag , /* 04 */
7762 ELC_CLines_lst(j).update_allowed , /* 05 */
7763 ELC_CLines_lst(j).source_code , /* 06 */
7764 l_last_parentChargeLineID , /* 07 */
7765 p_adjustment_num , /* 08 */
7766 NULL , /* 09 */
7767 NULL , /* 10 */
7768 ELC_CLines_lst(j).charge_amt , /* 11 */
7769 ELC_CLines_lst(j).currency_code , /* 12 */
7770 ELC_CLines_lst(j).currency_conversion_type , /* 13 */
7771 ELC_CLines_lst(j).currency_conversion_date , /* 14 */
7772 ELC_CLines_lst(j).currency_conversion_rate , /* 15 */
7773 ELC_CLines_lst(j).party_id , /* 16 */
7774 ELC_CLines_lst(j).party_site_id , /* 17 */
7775 ELC_CLines_lst(j).trx_business_category , /* 18 */
7776 ELC_CLines_lst(j).intended_use , /* 19 */
7777 ELC_CLines_lst(j).product_fiscal_class , /* 20 */
7778 ELC_CLines_lst(j).product_category , /* 21 */
7779 ELC_CLines_lst(j).product_type , /* 22 */
7780 ELC_CLines_lst(j).user_def_fiscal_class , /* 23 */
7781 ELC_CLines_lst(j).tax_classification_code , /* 24 */
7782 ELC_CLines_lst(j).assessable_value , /* 25 */
7783 'N' , /* 26 */
7784 ELC_CLines_lst(j).ship_from_party_id , /* 27 */
7785 ELC_CLines_lst(j).ship_from_party_site_id , /* 28 */
7786 ELC_CLines_lst(j).ship_to_organization_id , /* 29 */
7787 ELC_CLines_lst(j).ship_to_location_id , /* 30 */
7788 ELC_CLines_lst(j).bill_from_party_id , /* 31 */
7789 ELC_CLines_lst(j).bill_from_party_site_id , /* 32 */
7790 ELC_CLines_lst(j).bill_to_organization_id , /* 33 */
7791 ELC_CLines_lst(j).bill_to_location_id , /* 34 */
7792 ELC_CLines_lst(j).poa_party_id , /* 35 */
7793 ELC_CLines_lst(j).poa_party_site_id , /* 36 */
7794 ELC_CLines_lst(j).poo_organization_id , /* 37 */
7795 ELC_CLines_lst(j).poo_location_id , /* 38 */
7796 L_FND_USER_ID , /* 39 */
7797 sysdate , /* 40 */
7798 L_FND_USER_ID , /* 41 */
7799 sysdate , /* 42 */
7800 l_fnd_login_id --SCM-051 /* 43 */
7801 );
7802 END IF;
7803 END LOOP;
7804 END IF;
7805 END IF;
7806 END IF;
7807 END LOOP;
7808 END IF;
7809 END IF;
7810 -- Standard End of Procedure/Function Logging
7811 INL_LOGGING_PVT.Log_EndProc (
7812 p_module_name => g_module_name,
7813 p_procedure_name => l_program_name
7814 ) ;
7815 EXCEPTION
7816 WHEN L_FND_EXC_ERROR THEN
7817 -- Standard Expected Error Logging
7818 INL_LOGGING_PVT.Log_ExpecError (
7819 p_module_name => g_module_name,
7820 p_procedure_name => l_program_name
7821 ) ;
7822 x_return_status := L_FND_RET_STS_ERROR;
7823 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
7824 -- Standard Unexpected Error Logging
7825 INL_LOGGING_PVT.Log_UnexpecError (
7826 p_module_name => g_module_name,
7827 p_procedure_name => l_program_name
7828 ) ;
7829 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
7830 WHEN OTHERS THEN
7831 -- Standard Unexpected Error Logging
7832 INL_LOGGING_PVT.Log_UnexpecError (
7833 p_module_name => g_module_name,
7834 p_procedure_name => l_program_name
7835 ) ;
7836 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
7837 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
7838 FND_MSG_PUB.Add_Exc_Msg (
7839 p_pkg_name => g_pkg_name,
7840 p_procedure_name => l_program_name
7841 ) ;
7842 END IF;
7843 END Create_NewEstimChLinesPerMatch;
7844
7845
7846 -- BUG#9474491
7847 -- Utility name: Handle_EstimChLinesPerMatch --BUG#9474491
7848 -- Type : Private
7849 -- Function : Concentrate calls to bring to zero the estimated charge line or create new Estimated when required
7850 -- Pre-reqs : None
7851 -- Parameters :
7852 -- IN : p_match_id IN NUMBER,
7853 -- p_match_Amount_id IN NUMBER,
7854 -- p_charge_line_type_id IN NUMBER,
7855 --
7856 -- OUT : x_return_status OUT NOCOPY VARCHAR2
7857 --
7858 -- Version : Current version 1.0
7859 --
7860 -- Notes :
7861 PROCEDURE Handle_EstimChLinesPerMatch ( --BUG#9474491
7862 p_match_id IN NUMBER,
7863 p_match_Amount_id IN NUMBER,
7864 p_charge_line_type_id IN NUMBER,
7865 p_adjustment_num IN NUMBER,
7866 x_return_status OUT NOCOPY VARCHAR2
7867 ) IS
7868 l_program_name CONSTANT VARCHAR2(30) := 'Handle_EstimChLinesPerMatch';
7869 l_return_status VARCHAR2(1);
7870 l_debug_info VARCHAR2(200);
7871 BEGIN
7872 -- Standard Beginning of Procedure/Function Logging
7873 INL_LOGGING_PVT.Log_BeginProc (
7874 p_module_name => g_module_name,
7875 p_procedure_name => l_program_name
7876 );
7877 -- Initialize return status to success
7878 x_return_status := L_FND_RET_STS_SUCCESS;
7879
7880 l_debug_info := 'Calling Zero_EstimChargeLinesPerMatch';
7881 INL_LOGGING_PVT.Log_Statement (
7882 p_module_name => g_module_name,
7883 p_procedure_name => l_program_name,
7884 p_debug_info => l_debug_info
7885 ) ;
7886 Zero_EstimChargeLinesPerMatch (
7887 p_match_id => p_match_id,
7888 p_match_Amount_id => p_match_Amount_id,
7889 p_charge_line_type_id=> p_charge_line_type_id,
7890 p_adjustment_num => p_adjustment_num,
7891 x_return_status => l_debug_info
7892 );
7893 IF l_return_status = L_FND_RET_STS_ERROR THEN
7894 RAISE L_FND_EXC_ERROR;
7895 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
7896 RAISE L_FND_EXC_UNEXPECTED_ERROR;
7897 END IF;
7898
7899 l_debug_info := 'Calling Create_NewEstimChLinesPerMatch';
7900 INL_LOGGING_PVT.Log_Statement (
7901 p_module_name => g_module_name,
7902 p_procedure_name => l_program_name,
7903 p_debug_info => l_debug_info
7904 ) ;
7905
7906 Create_NewEstimChLinesPerMatch (
7907 p_match_id => p_match_id,
7908 p_match_Amount_id => p_match_Amount_id,
7909 p_charge_line_type_id=> p_charge_line_type_id,
7910 p_adjustment_num => p_adjustment_num,
7911 x_return_status => l_return_status ----BUG#9804065
7912 );
7913
7914 IF l_return_status = L_FND_RET_STS_ERROR THEN
7915 RAISE L_FND_EXC_ERROR;
7916 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
7917 RAISE L_FND_EXC_UNEXPECTED_ERROR;
7918 END IF;
7919
7920 -- Standard End of Procedure/Function Logging
7921 INL_LOGGING_PVT.Log_EndProc (
7922 p_module_name => g_module_name,
7923 p_procedure_name => l_program_name
7924 ) ;
7925 EXCEPTION
7926 WHEN L_FND_EXC_ERROR THEN
7927 -- Standard Expected Error Logging
7928 INL_LOGGING_PVT.Log_ExpecError (
7929 p_module_name => g_module_name,
7930 p_procedure_name => l_program_name
7931 ) ;
7932 x_return_status := L_FND_RET_STS_ERROR;
7933 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
7934 -- Standard Unexpected Error Logging
7935 INL_LOGGING_PVT.Log_UnexpecError (
7936 p_module_name => g_module_name,
7937 p_procedure_name => l_program_name
7938 ) ;
7939 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
7940 WHEN OTHERS THEN
7941 -- Standard Unexpected Error Logging
7942 INL_LOGGING_PVT.Log_UnexpecError (
7943 p_module_name => g_module_name,
7944 p_procedure_name => l_program_name
7945 ) ;
7946 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
7947 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
7948 FND_MSG_PUB.Add_Exc_Msg (
7949 p_pkg_name => g_pkg_name,
7950 p_procedure_name => l_program_name
7951 ) ;
7952 END IF;
7953 END Handle_EstimChLinesPerMatch;
7954
7955 -- API name : Adjust_ChargeLines
7956 -- Type : Private
7957 -- Function : Create Adjustment Lines for Charge Lines
7958 -- Pre-reqs : None
7959 -- Parameters :
7960 -- IN : p_api_version IN NUMBER Required
7961 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
7962 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
7963 -- p_match_id IN NUMBER,
7964 -- p_adjustment_num IN NUMBER,
7965 -- p_func_currency_code IN VARCHAR2 , --BUG#8468830
7966 -- OUT x_return_status OUT NOCOPY VARCHAR2
7967 -- x_msg_count OUT NOCOPY NUMBER
7968 -- x_msg_data OUT NOCOPY VARCHAR2
7969 --
7970 -- Version : Current version 1.0
7971 --
7972 -- Notes :
7973 PROCEDURE Adjust_ChargeLines (
7974 p_api_version IN NUMBER,
7975 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
7976 p_commit IN VARCHAR2 := L_FND_FALSE,
7977 p_match_id IN NUMBER,
7978 p_adjustment_num IN NUMBER,
7979 p_func_currency_code IN VARCHAR2 , --BUG#8468830
7980 x_return_status OUT NOCOPY VARCHAR2,
7981 x_msg_count OUT NOCOPY NUMBER,
7982 x_msg_data OUT NOCOPY VARCHAR2
7983 ) IS
7984 l_api_name CONSTANT VARCHAR2 (30) := 'Adjust_ChargeLines';
7985 l_api_version CONSTANT NUMBER := 1.0;
7986 l_next_adjust_num NUMBER;
7987 l_debug_info VARCHAR2 (240) ;
7988 l_parent_charge_line_id NUMBER;
7989 l_return_status VARCHAR2 (1) ;
7990 l_new_charge_line_id NUMBER;
7991 l_ship_line_id NUMBER;
7992 l_ship_header_id NUMBER;
7993 l_matched_uom_code VARCHAR2 (30) ;
7994 l_matched_curr_code VARCHAR2 (15) ;
7995 l_matched_curr_conversion_type VARCHAR2 (30) ;
7996 l_matched_curr_conversion_date DATE;
7997 l_matched_curr_conversion_rate NUMBER;
7998 l_replace_estim_qty_flag VARCHAR2 (1) ;
7999 l_party_id NUMBER;
8000 l_party_site_id NUMBER;
8001 l_matched_amt NUMBER;
8002 l_mat_curr_code VARCHAR2 (15) ;
8003 l_corr_charge_line_id NUMBER;
8004 l_corr_charge_line_num NUMBER;
8005 l_corr_adj_num NUMBER;
8006 l_include_assoc VARCHAR2 (1) := 'Y';
8007 l_existing_match_info_flag VARCHAR2 (1) ;
8008 l_from_parent_table_name VARCHAR2 (30) ;
8009 l_charge_line_type_id NUMBER;
8010 l_from_parent_table_id NUMBER;
8011 l_to_parent_table_name VARCHAR2 (30) ;
8012 l_to_parent_table_id NUMBER;
8013 l_prev_adjustment_num NUMBER := NULL;
8014 l_ChLn_Assoc inl_ChLn_Assoc_tp;
8015 l_garb NUMBER ; --BUG#8468830
8016
8017 BEGIN
8018 -- Standard Beginning of Procedure/Function Logging
8019 INL_LOGGING_PVT.Log_BeginProc (p_module_name => g_module_name, p_procedure_name => l_api_name) ;
8020 -- Standard Start of API savepoint
8021 SAVEPOINT Adjust_ChargeLines_PVT;
8022 -- Initialize message list if p_init_msg_list is set to TRUE.
8023 IF FND_API.to_Boolean (p_init_msg_list) THEN
8024 FND_MSG_PUB.initialize;
8025 END IF;
8026 -- Check for call compatibility.
8027 IF NOT FND_API.Compatible_API_Call (
8028 p_current_version_number => l_api_version,
8029 p_caller_version_number => p_api_version,
8030 p_api_name => l_api_name,
8031 p_pkg_name => g_pkg_name
8032 ) THEN
8033 RAISE L_FND_EXC_UNEXPECTED_ERROR;
8034 END IF;
8035 -- Initialize API return status to success
8036 x_return_status := L_FND_RET_STS_SUCCESS;
8037 -- Getting the match information
8038 l_debug_info := 'Getting the match information';
8039 INL_LOGGING_PVT.Log_Statement (
8040 p_module_name => g_module_name,
8041 p_procedure_name => l_api_name,
8042 p_debug_info => l_debug_info
8043 ) ;
8044 SELECT m.to_parent_table_id , /* 01 */
8045 m.from_parent_table_name , /* 02 */
8046 m.from_parent_table_id , /* 03 */
8047 m.to_parent_table_name , /* 04 */
8048 m.to_parent_table_id , /* 05 */
8049 m.matched_uom_code , /* 06 */
8050 m.matched_amt , /* 07 */
8051 m.replace_estim_qty_flag , /* 08 */
8052 m.existing_match_info_flag , /* 09 */
8053 m.party_id , /* 10 */
8054 m.party_site_id , /* 11 */
8055 m.charge_line_type_id , /* 12 */
8056 m.matched_curr_code , /* 13 */
8057 m.matched_curr_conversion_type, /* 14 */
8058 m.matched_curr_conversion_date, /* 15 */
8059 m.matched_curr_conversion_rate /* 16 */
8060 INTO
8061 l_ship_line_id , /* 01 */
8062 l_from_parent_table_name , /* 02 */
8063 l_from_parent_table_id , /* 03 */
8064 l_to_parent_table_name , /* 04 */
8065 l_to_parent_table_id , /* 05 */
8066 l_matched_uom_code , /* 06 */
8067 l_matched_amt , /* 07 */
8068 l_replace_estim_qty_flag , /* 08 */
8069 l_existing_match_info_flag , /* 09 */
8070 l_party_id , /* 10 */
8071 l_party_site_id , /* 11 */
8072 l_charge_line_type_id , /* 12 */
8073 l_matched_curr_code , /* 13 */
8074 l_matched_curr_conversion_type, /* 14 */
8075 l_matched_curr_conversion_date, /* 15 */
8076 l_matched_curr_conversion_rate /* 16 */
8077 FROM inl_corr_matches_v m
8078 WHERE match_id = p_match_id;
8079 -- Getting the Ship information
8080 l_debug_info := 'Getting the ship line information';
8081 INL_LOGGING_PVT.Log_Statement (
8082 p_module_name => g_module_name,
8083 p_procedure_name => l_api_name,
8084 p_debug_info => l_debug_info
8085 ) ;
8086 SELECT sl.ship_header_id
8087 INTO l_ship_header_id
8088 FROM inl_ship_lines sl
8089 WHERE sl.ship_line_id = l_ship_line_id;
8090
8091 INL_LOGGING_PVT.Log_Variable (
8092 p_module_name => g_module_name,
8093 p_procedure_name => l_api_name,
8094 p_var_name => 'l_existing_match_info_flag',
8095 p_var_value => l_existing_match_info_flag
8096 ) ;
8097
8098 INL_LOGGING_PVT.Log_Variable (
8099 p_module_name => g_module_name,
8100 p_procedure_name => l_api_name,
8101 p_var_name => 'l_from_parent_table_name',
8102 p_var_value => l_from_parent_table_name
8103 ) ;
8104
8105 INL_LOGGING_PVT.Log_Variable (
8106 p_module_name => g_module_name,
8107 p_procedure_name => l_api_name,
8108 p_var_name => 'l_from_parent_table_id',
8109 p_var_value => l_from_parent_table_id
8110 ) ;
8111
8112 INL_LOGGING_PVT.Log_Variable (
8113 p_module_name => g_module_name,
8114 p_procedure_name => l_api_name,
8115 p_var_name => 'l_to_parent_table_name',
8116 p_var_value => l_to_parent_table_name
8117 ) ;
8118
8119 INL_LOGGING_PVT.Log_Variable (
8120 p_module_name => g_module_name,
8121 p_procedure_name => l_api_name,
8122 p_var_name => 'l_to_parent_table_id',
8123 p_var_value => l_to_parent_table_id
8124 ) ;
8125
8126 -- l_existing_match_info_flag = 'Y' When a match from the same FROM_PARENT_TABLE_NAME and FROM_PARENT_TABLE_ID
8127 -- has already been processed
8128 IF (l_existing_match_info_flag = 'Y') THEN
8129 -- Charge line has been processed
8130 l_debug_info := 'Existing match info flag';
8131 INL_LOGGING_PVT.Log_Statement (
8132 p_module_name => g_module_name,
8133 p_procedure_name => l_api_name,
8134 p_debug_info => l_debug_info
8135 ) ;
8136 SELECT p_adjustment_num,
8137 cl.charge_line_id ,
8138 cl.charge_line_num
8139 INTO l_prev_adjustment_num ,
8140 l_ChLn_Assoc.parent_charge_line_id,
8141 l_ChLn_Assoc.charge_line_num
8142 FROM inl_matches m,
8143 inl_adj_charge_lines_v cl
8144 WHERE cl.match_id = m.match_id
8145 AND m.match_id <> p_match_id
8146 AND m.from_parent_table_name = l_from_parent_table_name
8147 AND m.from_parent_table_id = l_from_parent_table_id
8148 AND m.to_parent_table_name = l_to_parent_table_name
8149 AND m.to_parent_table_id = l_to_parent_table_id
8150 AND m.match_id =
8151 (
8152 SELECT MAX (m2.match_id)
8153 FROM inl_matches m2
8154 WHERE m2.from_parent_table_name = m.from_parent_table_name
8155 AND m2.from_parent_table_id = m.from_parent_table_id
8156 AND m2.to_parent_table_name = m.to_parent_table_name
8157 AND m2.to_parent_table_id = m.to_parent_table_id
8158 AND m2.match_id <> p_match_id
8159 )
8160 AND cl.charge_line_num =
8161 (
8162 SELECT MAX (cl1.charge_line_num)
8163 FROM inl_adj_charge_lines_v cl1
8164 WHERE cl1.match_id = m.match_id
8165 ) ;
8166 -- GROUP BY cl.charge_line_id, cl.adjustment_num;
8167 ELSE
8168 l_ChLn_Assoc.parent_charge_line_id := NULL;
8169 -- Getting the charge line to correction
8170 l_debug_info := 'Getting the charge line to correction';
8171 INL_LOGGING_PVT.Log_Statement (
8172 p_module_name => g_module_name,
8173 p_procedure_name => l_api_name,
8174 p_debug_info => l_debug_info
8175 ) ;
8176 BEGIN
8177 SELECT cl.charge_line_id,
8178 cl.charge_line_num ,
8179 cl.adjustment_num
8180 INTO l_corr_charge_line_id,
8181 l_corr_charge_line_num ,
8182 l_corr_adj_num
8183 FROM inl_adj_charge_lines_v cl
8184 WHERE cl.match_id = p_match_id
8185 AND cl.charge_line_num =
8186 (
8187 SELECT MAX (cl1.charge_line_num)
8188 FROM inl_adj_charge_lines_v cl1
8189 WHERE cl1.match_id = p_match_id
8190 ) ;
8191 EXCEPTION
8192 WHEN NO_DATA_FOUND THEN
8193 NULL;
8194 END;
8195 IF (l_corr_charge_line_id IS NOT NULL AND l_corr_charge_line_num IS NOT NULL)
8196 THEN
8197 l_ChLn_Assoc.charge_line_num := l_corr_charge_line_num;
8198 l_ChLn_Assoc.parent_charge_line_id := l_corr_charge_line_id;
8199
8200 INL_LOGGING_PVT.Log_Variable (
8201 p_module_name => g_module_name,
8202 p_procedure_name => l_api_name,
8203 p_var_name => 'l_corr_charge_line_id',
8204 p_var_value => l_corr_charge_line_id) ;
8205 ELSE
8206 l_ChLn_Assoc.charge_line_num := NULL;
8207 END IF;
8208 END IF;
8209 -- Handling estimated Charge Line and getting the parent_charge_line_id
8210 l_debug_info := 'Handling estimated Charge Line and getting the parent_charge_line_id';
8211 INL_LOGGING_PVT.Log_Statement (
8212 p_module_name => g_module_name,
8213 p_procedure_name => l_api_name,
8214 p_debug_info => l_debug_info
8215 ) ;
8216 -- For now:
8217 -- 1) Create a new charge line ADJ x with the new actual value with no ADJ 0
8218 -- 2) For the estimated charge line create a new charge line ADJ 1 with amount = 0
8219 -- Getting information for the new charge line
8220 l_debug_info := 'All Matched Amounts :'||l_matched_amt;
8221 INL_LOGGING_PVT.Log_Statement (
8222 p_module_name => g_module_name,
8223 p_procedure_name => l_api_name,
8224 p_debug_info => l_debug_info
8225 ) ;
8226 l_ChLn_Assoc.inl_Assoc.ship_header_id := l_ship_header_id;
8227 l_ChLn_Assoc.inl_Assoc.allocation_uom_code := NULL;
8228 l_ChLn_Assoc.inl_Assoc.to_parent_table_name := 'INL_SHIP_LINES';
8229 l_ChLn_Assoc.inl_Assoc.to_parent_table_id := l_to_parent_table_id;
8230 l_ChLn_Assoc.charge_line_type_id := l_charge_line_type_id;
8231 l_ChLn_Assoc.landed_cost_flag := 'Y';
8232 l_ChLn_Assoc.adjustment_num := l_prev_adjustment_num;
8233 l_ChLn_Assoc.match_id := p_match_id;
8234 l_ChLn_Assoc.charge_amt := l_matched_amt;
8235
8236
8237 --BUG#8468830
8238 IF p_func_currency_code <> l_matched_curr_code THEN
8239 IF l_matched_curr_conversion_type <> 'User' THEN -- Bug #10102991
8240 l_garb := inl_landedcost_pvt.Converted_Amt (
8241 1,
8242 l_matched_curr_code,
8243 p_func_currency_code,
8244 l_matched_curr_conversion_type,
8245 l_matched_curr_conversion_date,
8246 l_matched_curr_conversion_rate);
8247
8248 END IF;
8249 ELSE
8250 l_matched_curr_conversion_type:= NULL;
8251 l_matched_curr_conversion_rate:= NULL;
8252 END IF;
8253 --BUG#8468830
8254
8255 l_ChLn_Assoc.currency_code := l_matched_curr_code;
8256 l_ChLn_Assoc.currency_conversion_type := l_matched_curr_conversion_type;
8257 l_ChLn_Assoc.currency_conversion_date := l_matched_curr_conversion_date;
8258 l_ChLn_Assoc.currency_conversion_rate := l_matched_curr_conversion_rate;
8259 l_ChLn_Assoc.party_id := l_party_id;
8260 l_ChLn_Assoc.party_site_id := l_party_site_id;
8261 l_ChLn_Assoc.trx_business_category := NULL;
8262 l_ChLn_Assoc.intended_use := NULL;
8263 l_ChLn_Assoc.product_fiscal_class := NULL;
8264 l_ChLn_Assoc.product_category := NULL;
8265 l_ChLn_Assoc.product_type := NULL;
8266 l_ChLn_Assoc.user_def_fiscal_class := NULL;
8267 l_ChLn_Assoc.tax_classification_code := NULL;
8268 l_ChLn_Assoc.assessable_value := NULL;
8269 l_ChLn_Assoc.tax_already_calculated_flag := 'N';
8270 l_ChLn_Assoc.ship_from_party_id := NULL;
8271 l_ChLn_Assoc.ship_from_party_site_id := NULL;
8272 l_ChLn_Assoc.ship_to_organization_id := NULL;
8273 l_ChLn_Assoc.ship_to_location_id := NULL;
8274 l_ChLn_Assoc.bill_from_party_id := NULL;
8275 l_ChLn_Assoc.bill_from_party_site_id := NULL;
8276 l_ChLn_Assoc.bill_to_organization_id := NULL;
8277 l_ChLn_Assoc.bill_to_location_id := NULL;
8278 l_ChLn_Assoc.poa_party_id := NULL;
8279 l_ChLn_Assoc.poa_party_site_id := NULL;
8280 l_ChLn_Assoc.poo_organization_id := NULL;
8281 l_ChLn_Assoc.poo_location_id := NULL;
8282 -- Create_ChLines
8283 l_debug_info := 'Create_ChLines';
8284 INL_LOGGING_PVT.Log_Statement (
8285 p_module_name => g_module_name,
8286 p_procedure_name => l_api_name,
8287 p_debug_info => l_debug_info
8288 ) ;
8289 -- It does not create associations for corrections
8290 IF (l_ChLn_Assoc.parent_charge_line_id IS NOT NULL) THEN
8291 l_include_assoc := 'N';
8292 ELSE
8293 l_include_assoc := 'Y';
8294
8295 --Bug#12313822
8296
8297 l_debug_info := 'Getting the allocation basis';
8298 INL_LOGGING_PVT.Log_Statement (
8299 p_module_name => g_module_name,
8300 p_procedure_name => l_api_name,
8301 p_debug_info => l_debug_info
8302 ) ;
8303 SELECT
8304 NVL(clt.allocation_basis,'VALUE'),
8305 abv.base_uom_code
8306 INTO
8307 l_ChLn_Assoc.inl_Assoc.allocation_basis,
8308 l_ChLn_Assoc.inl_Assoc.allocation_uom_code
8309 FROM
8310 inl_charge_line_types_vl clt ,
8311 inl_allocation_basis_vl abv
8312 WHERE abv.allocation_basis_code = clt.allocation_basis
8313 AND clt.charge_line_type_id = l_ChLn_Assoc.charge_line_type_id;
8314
8315 INL_LOGGING_PVT.Log_Variable (
8316 p_module_name => g_module_name,
8317 p_procedure_name => l_api_name,
8318 p_var_name => 'l_ChLn_Assoc.inl_Assoc.allocation_basis',
8319 p_var_value => l_ChLn_Assoc.inl_Assoc.allocation_basis
8320 ) ;
8321 INL_LOGGING_PVT.Log_Variable (
8322 p_module_name => g_module_name,
8323 p_procedure_name => l_api_name,
8324 p_var_name => 'l_ChLn_Assoc.inl_Assoc.allocation_uom_code',
8325 p_var_value => l_ChLn_Assoc.inl_Assoc.allocation_uom_code
8326 ) ;
8327
8328 --Bug#12313822
8329 END IF;
8330 -- Create_ChLines
8331 Create_ChLines (
8332 p_ChLn_Assoc => l_ChLn_Assoc,
8333 p_include_assoc => l_include_assoc,
8334 p_adjustment_num => p_adjustment_num,
8335 x_new_charge_line_id => l_new_charge_line_id,
8336 x_return_status => l_return_status) ;
8337 IF l_return_status = L_FND_RET_STS_ERROR THEN
8338 RAISE L_FND_EXC_ERROR;
8339 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
8340 RAISE L_FND_EXC_UNEXPECTED_ERROR;
8341 END IF;
8342 Handle_EstimChLinesPerMatch ( --BUG#9474491
8343 p_match_id => p_match_id,
8344 p_match_Amount_id => null,
8345 p_charge_line_type_id=> l_charge_line_type_id,
8346 p_adjustment_num => p_adjustment_num,
8347 x_return_status => l_debug_info
8348 );
8349 IF l_return_status = L_FND_RET_STS_ERROR THEN
8350 RAISE L_FND_EXC_ERROR;
8351 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
8352 RAISE L_FND_EXC_UNEXPECTED_ERROR;
8353 END IF;
8354 -- Standard check of p_commit.
8355 IF FND_API.To_Boolean (p_commit) THEN
8356 COMMIT WORK;
8357 END IF;
8358 -- Standard call to get message count and if count is 1, get message info.
8359 FND_MSG_PUB.Count_And_Get ( p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
8360 -- Standard End of Procedure/Function Logging
8361 INL_LOGGING_PVT.Log_EndProc ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
8362 EXCEPTION
8363 WHEN L_FND_EXC_ERROR THEN
8364 -- Standard Expected Error Logging
8365 INL_LOGGING_PVT.Log_ExpecError ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
8366 ROLLBACK TO Adjust_ChargeLines_PVT;
8367 x_return_status := L_FND_RET_STS_ERROR;
8368 FND_MSG_PUB.Count_And_Get ( p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
8369 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
8370 -- Standard Unexpected Error Logging
8371 INL_LOGGING_PVT.Log_UnexpecError ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
8372 ROLLBACK TO Adjust_ChargeLines_PVT;
8373 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
8374 FND_MSG_PUB.Count_And_Get ( p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
8375 WHEN OTHERS THEN
8376 -- Standard Unexpected Error Logging
8377 INL_LOGGING_PVT.Log_UnexpecError ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
8378 ROLLBACK TO Adjust_ChargeLines_PVT;
8379 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
8380 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
8381 FND_MSG_PUB.Add_Exc_Msg ( p_pkg_name => g_pkg_name, p_procedure_name => l_api_name) ;
8382 END IF;
8383 FND_MSG_PUB.Count_And_Get ( p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
8384 END Adjust_ChargeLines;
8385 -- API name : Adjust_ChargeLines
8386 -- Type : Private
8387 -- Function : Create Adjustmens Charge Lines and their associations
8388 -- Pre-reqs : None
8389 -- Parameters :
8390 -- IN : p_api_version IN NUMBER Required
8391 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
8392 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
8393 -- p_match_amount_id IN NUMBER,
8394 -- p_adjustment_num IN NUMBER,
8395 -- p_func_currency_code IN VARCHAR2 , --BUG#8468830
8396 -- OUT x_return_status OUT NOCOPY VARCHAR2
8397 -- x_msg_count OUT NOCOPY NUMBER
8398 -- x_msg_data OUT NOCOPY VARCHAR2
8399 --
8400 -- Version : Current version 1.0
8401 --
8402 -- Notes :
8403 PROCEDURE Adjust_ChargeLines (
8404 p_api_version IN NUMBER,
8405 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
8406 p_commit IN VARCHAR2 := L_FND_FALSE,
8407 p_match_amount_id IN NUMBER,
8408 p_adjustment_num IN NUMBER,
8409 p_func_currency_code IN VARCHAR2 , --BUG#8468830
8410 x_return_status OUT NOCOPY VARCHAR2,
8411 x_msg_count OUT NOCOPY NUMBER,
8412 x_msg_data OUT NOCOPY VARCHAR2
8413 ) IS
8414 l_api_name CONSTANT VARCHAR2 (30) := 'Adjust_ChargeLines-2';
8415 l_api_version CONSTANT NUMBER := 1.0;
8416 CURSOR c_matches_cl (p_match_amount_id NUMBER)
8417 IS
8418 SELECT
8419 m.match_id ,
8420 m.ship_header_id ,
8421 m.from_parent_table_name,
8422 m.from_parent_table_id ,
8423 m.to_parent_table_name ,
8424 m.to_parent_table_id
8425 FROM inl_corr_matches_v m
8426 WHERE m.match_amount_id = p_match_amount_id
8427 ORDER BY m.match_id;
8428 TYPE c_matches_type
8429 IS
8430 TABLE OF c_matches_cl%ROWTYPE;
8431 c_matches c_matches_type;
8432 l_next_adjust_num NUMBER;
8433 l_debug_info VARCHAR2 (240) ;
8434 l_parent_charge_line_id NUMBER;
8435 l_return_status VARCHAR2 (1) ;
8436 l_new_charge_line_id NUMBER;
8437 l_ship_line_id NUMBER;
8438 l_ship_header_id NUMBER;
8439 l_matched_curr_code VARCHAR2 (15) ;
8440 l_matched_curr_conversion_type VARCHAR2 (30) ;
8441 l_matched_curr_conversion_date DATE;
8442 l_matched_curr_conversion_rate NUMBER;
8443 l_charge_line_type_id NUMBER;
8444 l_party_id NUMBER;
8445 l_party_site_id NUMBER;
8446 l_matched_amt NUMBER;
8447 l_mat_curr_code VARCHAR2 (15) ;
8448 l_allocation_basis VARCHAR2 (30) ;
8449 l_allocation_uom_code VARCHAR2 (30) ;
8450 l_corr_charge_line_id NUMBER;
8451 l_corr_charge_line_num NUMBER;
8452 l_corr_adj_num NUMBER;
8453 l_existing_match_info_flag VARCHAR2 (1) ;
8454 l_from_parent_table_name VARCHAR2 (30) ;
8455 l_from_parent_table_id NUMBER;
8456 l_to_parent_table_name VARCHAR2 (30) ;
8457 l_tax_code VARCHAR2 (30) ;
8458 l_to_parent_table_id NUMBER;
8459 l_prev_match_amount_id NUMBER;
8460 l_count_new_matches NUMBER;
8461 l_ChLn_Assoc inl_ChLn_Assoc_tp;
8462 l_AssocLn inl_Assoc_tp;
8463 l_garb NUMBER ; --BUG#8468830
8464 l_prev_match_id NUMBER;
8465 BEGIN
8466 -- Standard Beginning of Procedure/Function Logging
8467 INL_LOGGING_PVT.Log_BeginProc (p_module_name => g_module_name, p_procedure_name => l_api_name) ;
8468 -- Standard Start of API savepoint
8469 SAVEPOINT Adjust_ChargeLines_PVT;
8470 -- Initialize message list if p_init_msg_list is set to TRUE.
8471 IF FND_API.to_Boolean (p_init_msg_list) THEN
8472 FND_MSG_PUB.initialize;
8473 END IF;
8474 -- Check for call compatibility.
8475 IF NOT FND_API.Compatible_API_Call (
8476 p_current_version_number => l_api_version,
8477 p_caller_version_number => p_api_version,
8478 p_api_name => l_api_name,
8479 p_pkg_name => g_pkg_name
8480 ) THEN
8481 RAISE L_FND_EXC_UNEXPECTED_ERROR;
8482 END IF;
8483 -- Initialize API return status to success
8484 x_return_status := L_FND_RET_STS_SUCCESS;
8485 -- Getting the match information
8486 l_debug_info := 'Getting the match information';
8487 INL_LOGGING_PVT.Log_Statement (
8488 p_module_name => g_module_name,
8489 p_procedure_name => l_api_name,
8490 p_debug_info => l_debug_info
8491 ) ;
8492
8493 INL_LOGGING_PVT.Log_Variable (
8494 p_module_name => g_module_name,
8495 p_procedure_name => l_api_name,
8496 p_var_name => 'p_match_amount_id',
8497 p_var_value => p_match_amount_id
8498 ) ;
8499 SELECT
8500 -- m.ship_header_id , --BUG#8198498
8501 m.from_parent_table_name ,
8502 -- the min is one of the lines that alread exists in prior calculation
8503 m.from_parent_table_id ,
8504 m.to_parent_table_name ,
8505 m.to_parent_table_id ,
8506 (SELECT SUM(INL_LANDEDCOST_PVT.Converted_Amt( NVL(a.matched_amt,0),
8507 a.matched_curr_code,
8508 ma.matched_curr_code,
8509 ma.matched_curr_conversion_type,
8510 ma.matched_curr_conversion_date))
8511 FROM inl_corr_matches_v a
8512 WHERE a.match_amount_id = ma.match_amount_id ) matched_amt,
8513 m.party_id ,
8514 m.party_site_id ,
8515 ma.charge_line_type_id ,
8516 ma.tax_code ,
8517 m.existing_match_info_flag ,
8518 ma.matched_curr_code ,
8519 ma.matched_curr_conversion_type,
8520 ma.matched_curr_conversion_date,
8521 ma.matched_curr_conversion_rate,
8522 clt.allocation_basis ,
8523 abv.base_uom_code
8524 INTO
8525 -- l_ship_header_id ,--BUG#8198498
8526 l_from_parent_table_name ,
8527 l_from_parent_table_id ,
8528 l_to_parent_table_name ,
8529 l_to_parent_table_id ,
8530 l_matched_amt ,
8531 l_party_id ,
8532 l_party_site_id ,
8533 l_charge_line_type_id ,
8534 l_tax_code ,
8535 l_existing_match_info_flag ,
8536 l_matched_curr_code ,
8537 l_matched_curr_conversion_type,
8538 l_matched_curr_conversion_date,
8539 l_matched_curr_conversion_rate,
8540 l_allocation_basis ,
8541 l_allocation_uom_code
8542 FROM inl_match_amounts ma, -- Bug #9179775
8543 inl_corr_matches_v m ,
8544 inl_charge_line_types_vl clt ,
8545 inl_allocation_basis_vl abv
8546 WHERE abv.allocation_basis_code = clt.allocation_basis
8547 AND clt.charge_line_type_id = m.charge_line_type_id
8548 AND m.match_amount_id = ma.match_amount_id
8549 AND ma.match_amount_id = p_match_amount_id
8550 AND m.match_id in (select min(match_id) -- BUG#8411594
8551 FROM inl_corr_matches_v m
8552 WHERE m.match_amount_id = p_match_amount_id);
8553
8554 INL_LOGGING_PVT.Log_Variable (
8555 p_module_name => g_module_name,
8556 p_procedure_name => l_api_name,
8557 p_var_name => 'l_existing_match_info_flag',
8558 p_var_value => l_existing_match_info_flag
8559 ) ;
8560
8561 INL_LOGGING_PVT.Log_Variable (
8562 p_module_name => g_module_name,
8563 p_procedure_name => l_api_name,
8564 p_var_name => 'l_from_parent_table_name',
8565 p_var_value => l_from_parent_table_name
8566 ) ;
8567
8568 INL_LOGGING_PVT.Log_Variable (
8569 p_module_name => g_module_name,
8570 p_procedure_name => l_api_name,
8571 p_var_name => 'l_from_parent_table_id',
8572 p_var_value => l_from_parent_table_id
8573 ) ;
8574
8575 INL_LOGGING_PVT.Log_Variable (
8576 p_module_name => g_module_name,
8577 p_procedure_name => l_api_name,
8578 p_var_name => 'l_to_parent_table_name',
8579 p_var_value => l_to_parent_table_name
8580 ) ;
8581
8582 INL_LOGGING_PVT.Log_Variable (
8583 p_module_name => g_module_name,
8584 p_procedure_name => l_api_name,
8585 p_var_name => 'l_to_parent_table_id',
8586 p_var_value => l_to_parent_table_id
8587 ) ;
8588
8589 l_ChLn_Assoc.adjustment_num := p_adjustment_num;
8590 -- BUG#8411594
8591
8592 -- l_existing_match_info_flag = 'Y' When a match from the same FROM_PARENT_TABLE_NAME and FROM_PARENT_TABLE_ID
8593 -- has already been processed
8594 IF (l_existing_match_info_flag = 'Y') THEN
8595 -- a)Verify if exists any new match in this match amount
8596 -- a.1) Get the last match_amount_id
8597 SELECT max(match_amount_id)
8598 INTO l_prev_match_amount_id
8599 FROM inl_matches m
8600 WHERE m.charge_line_type_id = l_charge_line_type_id
8601 AND nvl(m.tax_code,'-9') = nvl(l_tax_code,'-9')
8602 AND m.match_amount_id <> p_match_amount_id
8603 AND adj_already_generated_flag = 'Y'
8604 AND (m.from_parent_table_name, m.from_parent_table_id)
8605 IN (SELECT m2.from_parent_table_name, m2.from_parent_table_id
8606 FROM inl_matches m2
8607 WHERE m2.match_amount_id = p_match_amount_id)
8608 ;
8609
8610 INL_LOGGING_PVT.Log_Variable (
8611 p_module_name => g_module_name,
8612 p_procedure_name => l_api_name,
8613 p_var_name => 'l_prev_match_amount_id',
8614 p_var_value => l_prev_match_amount_id
8615 ) ;
8616
8617 IF l_prev_match_amount_id IS NOT NULL THEN
8618 -- a.2) Count the new matches
8619 SELECT nvl(count(*),0)
8620 INTO l_count_new_matches
8621 FROM inl_matches m
8622 WHERE m.match_amount_id = p_match_amount_id
8623 AND not exists (SELECT 1
8624 FROM inl_matches m2
8625 WHERE m2.match_amount_id = l_prev_match_amount_id
8626 AND m2.from_parent_table_name = m.from_parent_table_name
8627 AND m2.from_parent_table_id = m.from_parent_table_id
8628 AND m2.to_parent_table_name = m.to_parent_table_name
8629 AND m2.to_parent_table_id = m.to_parent_table_id
8630 )
8631 ;
8632 -- b)Verify if any old match has been deleted
8633 IF l_count_new_matches = 0 THEN
8634 -- b.1) Count old matches
8635 SELECT nvl(count(*),0)
8636 INTO l_count_new_matches
8637 FROM inl_matches m
8638 WHERE m.match_amount_id = l_prev_match_amount_id
8639 AND not exists (SELECT 1
8640 FROM inl_matches m2
8641 WHERE m2.match_amount_id = p_match_amount_id
8642 AND m2.from_parent_table_name = m.from_parent_table_name
8643 AND m2.from_parent_table_id = m.from_parent_table_id
8644 AND m2.to_parent_table_name = m.to_parent_table_name
8645 AND m2.to_parent_table_id = m.to_parent_table_id
8646 )
8647 ;
8648 END IF;
8649 -- c) if exists any new match zeroes the previous charge line
8650 IF l_count_new_matches > 0 THEN
8651 Zero_ChLnFromPrevMatchAmt (
8652 p_prev_match_amount_id => l_prev_match_amount_id, --Bug#9474491
8653 p_prev_match_id => NULL, --Bug#9804065
8654 p_adjustment_num => p_adjustment_num,
8655 x_return_status => l_debug_info
8656 );
8657 END IF;
8658 ELSE --BUG#9804065 -- The previous could be a match and not a match amount
8659
8660 INL_LOGGING_PVT.Log_Statement (
8661 p_module_name => g_module_name,
8662 p_procedure_name => l_api_name,
8663 p_debug_info => 'Get previous match id.'
8664 ) ;
8665 SELECT m.parent_match_id
8666 INTO l_prev_match_id
8667 FROM inl_matches m
8668 WHERE m.match_amount_id = p_match_amount_id
8669 AND m.existing_match_info_flag = 'Y';
8670
8671 INL_LOGGING_PVT.Log_Variable (
8672 p_module_name => g_module_name,
8673 p_procedure_name => l_api_name,
8674 p_var_name => 'l_prev_match_id',
8675 p_var_value => l_prev_match_id
8676 ) ;
8677 Zero_ChLnFromPrevMatchAmt (
8678 p_prev_match_amount_id => NULL,
8679 p_prev_match_id => l_prev_match_id,
8680 p_adjustment_num => p_adjustment_num,
8681 x_return_status => l_debug_info
8682 );
8683
8684 END IF; --BUG#9804065
8685 IF l_return_status = L_FND_RET_STS_ERROR THEN
8686 RAISE L_FND_EXC_ERROR;
8687 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
8688 RAISE L_FND_EXC_UNEXPECTED_ERROR;
8689 END IF;
8690 END IF;
8691 -- BUG#8411594
8692
8693 INL_LOGGING_PVT.Log_Variable (
8694 p_module_name => g_module_name,
8695 p_procedure_name => l_api_name,
8696 p_var_name => 'l_count_new_matches',
8697 p_var_value => l_count_new_matches
8698 ) ;
8699 IF (l_existing_match_info_flag = 'Y')
8700 AND l_count_new_matches = 0 THEN -- BUG#8411594
8701 -- Charge has been already processed
8702 l_debug_info := 'Existing match info flag';
8703 INL_LOGGING_PVT.Log_Statement (
8704 p_module_name => g_module_name,
8705 p_procedure_name => l_api_name,
8706 p_debug_info => l_debug_info
8707 ) ;
8708 SELECT cl.charge_line_id ,
8709 cl.charge_line_num
8710 INTO l_ChLn_Assoc.parent_charge_line_id,
8711 l_ChLn_Assoc.charge_line_num
8712 FROM inl_matches m,
8713 inl_adj_charge_lines_v cl
8714 WHERE cl.match_amount_id = m.match_amount_id
8715 AND m.from_parent_table_name = l_from_parent_table_name
8716 AND m.from_parent_table_id = l_from_parent_table_id
8717 AND m.to_parent_table_name = l_to_parent_table_name
8718 AND m.to_parent_table_id = l_to_parent_table_id
8719 AND m.adj_already_generated_flag = 'Y'
8720 AND m.match_id =
8721 (
8722 SELECT MAX (m2.match_id)
8723 FROM inl_matches m2
8724 WHERE m2.from_parent_table_name = m.from_parent_table_name
8725 AND m2.from_parent_table_id = m.from_parent_table_id
8726 AND m2.to_parent_table_name = m.to_parent_table_name
8727 AND m2.to_parent_table_id = m.to_parent_table_id
8728 AND m2.adj_already_generated_flag = 'Y'
8729 )
8730 AND cl.charge_line_num =
8731 (
8732 SELECT MAX (cl1.charge_line_num)
8733 FROM inl_adj_charge_lines_v cl1
8734 WHERE cl1.match_amount_id = m.match_amount_id
8735 ) ;
8736 -- GROUP BY cl.charge_line_id, cl.adjustment_num;
8737 ELSE
8738 l_ChLn_Assoc.parent_charge_line_id := NULL;
8739 -- Getting the charge line to correction
8740 l_debug_info := 'Getting the charge line to correction';
8741 INL_LOGGING_PVT.Log_Statement (
8742 p_module_name => g_module_name,
8743 p_procedure_name => l_api_name,
8744 p_debug_info => l_debug_info
8745 ) ;
8746 BEGIN
8747 SELECT
8748 cl.charge_line_id ,
8749 cl.charge_line_num,
8750 cl.adjustment_num
8751 INTO
8752 l_corr_charge_line_id ,
8753 l_corr_charge_line_num,
8754 l_corr_adj_num
8755 FROM inl_adj_charge_lines_v cl
8756 WHERE cl.match_amount_id = p_match_amount_id
8757 AND cl.charge_line_num =
8758 (
8759 SELECT MAX (cl1.charge_line_num)
8760 FROM inl_adj_charge_lines_v cl1
8761 WHERE cl1.match_amount_id = p_match_amount_id
8762 ) ;
8763 EXCEPTION
8764 WHEN NO_DATA_FOUND THEN
8765 NULL;
8766 END;
8767 -- Is a correction, necessary to create an adjustment
8768 IF l_corr_charge_line_id IS NOT NULL
8769 AND l_corr_charge_line_num IS NOT NULL
8770 THEN
8771 l_ChLn_Assoc.charge_line_num := l_corr_charge_line_num;
8772 l_ChLn_Assoc.parent_charge_line_id := l_corr_charge_line_id;
8773
8774 INL_LOGGING_PVT.Log_Variable (
8775 p_module_name => g_module_name,
8776 p_procedure_name => l_api_name,
8777 p_var_name => 'l_corr_charge_line_id',
8778 p_var_value => l_corr_charge_line_id
8779 );
8780 ELSE
8781 l_ChLn_Assoc.charge_line_num := NULL;
8782 END IF;
8783 END IF;
8784 -- Handling estimated Charge Line and getting the parent_charge_line_id
8785 l_debug_info := 'Handling estimated Charge Line and getting the parent_charge_line_id';
8786 INL_LOGGING_PVT.Log_Statement (
8787 p_module_name => g_module_name,
8788 p_procedure_name => l_api_name,
8789 p_debug_info => l_debug_info
8790 ) ;
8791 -- For now:
8792 -- 1) Create a new charge line ADJ x with the new actual value with no ADJ 0
8793 -- 2) For the estimated charge line create a new charge line ADJ 1 with amount = 0
8794 -- Getting information for the new charge line
8795 l_debug_info := 'All Matched Amounts :'||l_matched_amt;
8796 INL_LOGGING_PVT.Log_Statement (
8797 p_module_name => g_module_name,
8798 p_procedure_name => l_api_name,
8799 p_debug_info => l_debug_info
8800 ) ;
8801 -- Creating a charge line
8802 l_ChLn_Assoc.charge_line_type_id := l_charge_line_type_id;
8803 l_ChLn_Assoc.landed_cost_flag := 'Y';
8804 l_ChLn_Assoc.match_amount_id := p_match_amount_id;
8805 l_ChLn_Assoc.charge_amt := l_matched_amt;
8806
8807 --BUG#8468830
8808 IF p_func_currency_code <> l_matched_curr_code THEN
8809 IF l_matched_curr_conversion_type <> 'User' THEN -- Bug #10102991
8810 l_garb := inl_landedcost_pvt.Converted_Amt (
8811 1,
8812 l_matched_curr_code,
8813 p_func_currency_code,
8814 l_matched_curr_conversion_type,
8815 l_matched_curr_conversion_date,
8816 l_matched_curr_conversion_rate);
8817 END IF;
8818 ELSE
8819 l_matched_curr_conversion_type:= NULL;
8820 l_matched_curr_conversion_rate:= NULL;
8821 END IF;
8822 --BUG#8468830
8823
8824 l_ChLn_Assoc.currency_code := l_matched_curr_code;
8825 l_ChLn_Assoc.currency_conversion_type := l_matched_curr_conversion_type;
8826 l_ChLn_Assoc.currency_conversion_date := l_matched_curr_conversion_date;
8827 l_ChLn_Assoc.currency_conversion_rate := l_matched_curr_conversion_rate;
8828 l_ChLn_Assoc.party_id := l_party_id;
8829 l_ChLn_Assoc.party_site_id := l_party_site_id;
8830 l_ChLn_Assoc.trx_business_category := NULL;
8831 l_ChLn_Assoc.intended_use := NULL;
8832 l_ChLn_Assoc.product_fiscal_class := NULL;
8833 l_ChLn_Assoc.product_category := NULL;
8834 l_ChLn_Assoc.product_type := NULL;
8835 l_ChLn_Assoc.user_def_fiscal_class := NULL;
8836 l_ChLn_Assoc.tax_classification_code := NULL;
8837 l_ChLn_Assoc.assessable_value := NULL;
8838 l_ChLn_Assoc.tax_already_calculated_flag := 'N';
8839 l_ChLn_Assoc.ship_from_party_id := NULL;
8840 l_ChLn_Assoc.ship_from_party_site_id := NULL;
8841 l_ChLn_Assoc.ship_to_organization_id := NULL;
8842 l_ChLn_Assoc.ship_to_location_id := NULL;
8843 l_ChLn_Assoc.bill_from_party_id := NULL;
8844 l_ChLn_Assoc.bill_from_party_site_id := NULL;
8845 l_ChLn_Assoc.bill_to_organization_id := NULL;
8846 l_ChLn_Assoc.bill_to_location_id := NULL;
8847 l_ChLn_Assoc.poa_party_id := NULL;
8848 l_ChLn_Assoc.poa_party_site_id := NULL;
8849 l_ChLn_Assoc.poo_organization_id := NULL;
8850 l_ChLn_Assoc.poo_location_id := NULL;
8851 -- Create Charge Line
8852 l_debug_info := 'Create_ChLines from a match_amount_id';
8853 INL_LOGGING_PVT.Log_Statement (
8854 p_module_name => g_module_name,
8855 p_procedure_name => l_api_name,
8856 p_debug_info => l_debug_info
8857 ) ;
8858 Create_ChLines (
8859 p_ChLn_Assoc => l_ChLn_Assoc,
8860 p_include_assoc => 'N',
8861 p_adjustment_num => l_ChLn_Assoc.adjustment_num,
8862 x_new_charge_line_id => l_new_charge_line_id,
8863 x_return_status => l_return_status
8864 ) ;
8865 IF l_return_status = L_FND_RET_STS_ERROR THEN
8866 RAISE L_FND_EXC_ERROR;
8867 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
8868 RAISE L_FND_EXC_UNEXPECTED_ERROR;
8869 END IF;
8870 -- It does not create associations for corrections
8871 IF (l_corr_charge_line_id IS NULL
8872 AND l_ChLn_Assoc.parent_charge_line_id IS NULL) THEN
8873 -- Create_associations for the match amount id
8874 l_debug_info := 'Create association lines to a match_amount_id';
8875 INL_LOGGING_PVT.Log_Statement (
8876 p_module_name => g_module_name,
8877 p_procedure_name => l_api_name,
8878 p_debug_info => l_debug_info
8879 ) ;
8880 OPEN c_matches_cl (p_match_amount_id) ;
8881 FETCH c_matches_cl BULK COLLECT INTO c_matches;
8882 CLOSE c_matches_cl;
8883 l_debug_info := c_matches.LAST||' match lines have been retrieved.';
8884 INL_LOGGING_PVT.Log_Statement (
8885 p_module_name => g_module_name,
8886 p_procedure_name => l_api_name,
8887 p_debug_info => l_debug_info
8888 ) ;
8889 IF NVL (c_matches.LAST, 0) > 0 THEN
8890 FOR i IN NVL (c_matches.FIRST, 0) ..NVL (c_matches.LAST, 0)
8891 LOOP
8892 l_AssocLn.ship_header_id := c_matches(i).ship_header_id;
8893 l_AssocLn.allocation_basis := l_allocation_basis;
8894 l_AssocLn.allocation_uom_code := l_allocation_uom_code;
8895 l_AssocLn.to_parent_table_name := c_matches(i).to_parent_table_name;
8896 l_AssocLn.to_parent_table_id := c_matches(i).to_parent_table_id;
8897 --Verifying if association already exists
8898 --BUG#8198498
8899 l_debug_info := ' Verifying if association already exists ('||i||'): '||c_matches(i).to_parent_table_name||' - '||c_matches(i).to_parent_table_id;
8900 INL_LOGGING_PVT.Log_Statement (
8901 p_module_name => g_module_name,
8902 p_procedure_name => l_api_name,
8903 p_debug_info => l_debug_info
8904 ) ;
8905 SELECT MAX(association_id) --Bug#9907327
8906 INTO l_AssocLn.association_id
8907 FROM inl_associations
8908 WHERE from_parent_table_name = 'INL_CHARGE_LINES'
8909 AND from_parent_table_id = l_new_charge_line_id
8910 AND to_parent_table_name = c_matches(i).to_parent_table_name
8911 AND to_parent_table_id = c_matches(i).to_parent_table_id
8912 ;
8913 INL_LOGGING_PVT.Log_Variable (
8914 p_module_name => g_module_name,
8915 p_procedure_name => l_api_name,
8916 p_var_name => 'l_AssocLn.association_id',
8917 p_var_value => l_AssocLn.association_id) ;
8918 -- Create Association Line
8919 l_debug_info := 'Create association line for the charge';
8920 INL_LOGGING_PVT.Log_Statement (
8921 p_module_name => g_module_name,
8922 p_procedure_name => l_api_name,
8923 p_debug_info => l_debug_info
8924 ) ;
8925 INL_LOGGING_PVT.Log_Variable (
8926 p_module_name => g_module_name,
8927 p_procedure_name => l_api_name,
8928 p_var_name => 'c_matches('||i||').to_parent_table_id',
8929 p_var_value => c_matches(i).to_parent_table_id) ;
8930 Create_Assoc (
8931 p_Assoc => l_AssocLn,
8932 p_from_parent_table_name => 'INL_CHARGE_LINES',
8933 p_new_line_id => l_new_charge_line_id,
8934 x_return_status => l_return_status
8935 );
8936 END LOOP;
8937 END IF;
8938 END IF;
8939 Handle_EstimChLinesPerMatch ( --BUG#9474491
8940 p_match_id => null,
8941 p_match_Amount_id => p_match_amount_id,
8942 p_charge_line_type_id=> l_charge_line_type_id,
8943 p_adjustment_num => l_ChLn_Assoc.adjustment_num,
8944 x_return_status => l_debug_info
8945 );
8946 IF l_return_status = L_FND_RET_STS_ERROR THEN
8947 RAISE L_FND_EXC_ERROR;
8948 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
8949 RAISE L_FND_EXC_UNEXPECTED_ERROR;
8950 END IF;
8951 -- Standard check of p_commit.
8952 IF FND_API.To_Boolean (p_commit) THEN
8953 COMMIT WORK;
8954 END IF;
8955 -- Standard call to get message count and if count is 1, get message info.
8956 FND_MSG_PUB.Count_And_Get (p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
8957 -- Standard End of Procedure/Function Logging
8958 INL_LOGGING_PVT.Log_EndProc (p_module_name => g_module_name, p_procedure_name => l_api_name) ;
8959 EXCEPTION
8960 WHEN L_FND_EXC_ERROR THEN
8961 -- Standard Expected Error Logging
8962 INL_LOGGING_PVT.Log_ExpecError (
8963 p_module_name => g_module_name,
8964 p_procedure_name => l_api_name) ;
8965 ROLLBACK TO Adjust_ChargeLines_PVT;
8966 x_return_status := L_FND_RET_STS_ERROR;
8967 FND_MSG_PUB.Count_And_Get (
8968 p_encoded => L_FND_FALSE,
8969 p_count => x_msg_count, p_data => x_msg_data) ;
8970 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
8971 -- Standard Unexpected Error Logging
8972 INL_LOGGING_PVT.Log_UnexpecError (
8973 p_module_name => g_module_name,
8974 p_procedure_name => l_api_name) ;
8975 ROLLBACK TO Adjust_ChargeLines_PVT;
8976 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
8977 FND_MSG_PUB.Count_And_Get (
8978 p_encoded => L_FND_FALSE,
8979 p_count => x_msg_count,
8980 p_data => x_msg_data) ;
8981 WHEN OTHERS THEN
8982 -- Standard Unexpected Error Logging
8983 INL_LOGGING_PVT.Log_UnexpecError (p_module_name => g_module_name, p_procedure_name => l_api_name) ;
8984 ROLLBACK TO Adjust_ChargeLines_PVT;
8985 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
8986 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
8987 FND_MSG_PUB.Add_Exc_Msg (
8988 p_pkg_name => g_pkg_name,
8989 p_procedure_name => l_api_name) ;
8990 END IF;
8991 FND_MSG_PUB.Count_And_Get (
8992 p_encoded => L_FND_FALSE,
8993 p_count => x_msg_count,
8994 p_data => x_msg_data) ;
8995 END Adjust_ChargeLines;
8996
8997 -- API name : Adjust_TaxLines
8998 -- Type : Private
8999 -- Function : Create Adjustment Lines for Charge Lines
9000 -- Pre-reqs : None
9001 -- Parameters :
9002 -- IN : p_api_version IN NUMBER Required
9003 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
9004 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
9005 -- p_match_id IN NUMBER,
9006 -- p_adjustment_num IN NUMBER,
9007 -- p_func_currency_code IN VARCHAR2 , --BUG#8468830
9008 -- OUT x_return_status OUT NOCOPY VARCHAR2
9009 -- x_msg_count OUT NOCOPY NUMBER
9010 -- x_msg_data OUT NOCOPY VARCHAR2
9011 --
9012 -- Version : Current version 1.0
9013 --
9014 -- Notes :
9015 PROCEDURE Adjust_TaxLines (
9016 p_api_version IN NUMBER ,
9017 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
9018 p_commit IN VARCHAR2 := L_FND_FALSE,
9019 p_match_id IN NUMBER ,
9020 p_adjustment_num IN NUMBER ,
9021 p_func_currency_code IN VARCHAR2 , --BUG#8468830
9022 x_return_status OUT NOCOPY VARCHAR2 ,
9023 x_msg_count OUT NOCOPY NUMBER ,
9024 x_msg_data OUT NOCOPY VARCHAR2
9025 ) IS
9026 l_api_name CONSTANT VARCHAR2 (30) := 'Adjust_TaxLines';
9027 l_api_version CONSTANT NUMBER := 1.0;
9028 l_next_adjust_num NUMBER;
9029 l_debug_info VARCHAR2 (240) ;
9030 l_parent_tax_line_id NUMBER;
9031 l_return_status VARCHAR2 (1) ;
9032 l_table_id NUMBER;
9033 l_table_name VARCHAR2 (30) ;
9034 l_ship_header_id NUMBER;
9035 l_matched_curr_code VARCHAR2 (15) ;
9036 l_matched_curr_conversion_type VARCHAR2 (30) ;
9037 l_matched_curr_conversion_date DATE;
9038 l_matched_curr_conversion_rate NUMBER;
9039 l_mat_curr_code VARCHAR2 (15) ;
9040 l_TxLn_Assoc inl_TxLn_Assoc_tp;
9041 l_tax_code VARCHAR2 (30) ;
9042 l_matched_amt NUMBER;
9043 l_nrec_tax_amt NUMBER;
9044 l_include_assoc_flag VARCHAR2 (1) ;
9045 l_tax_amt_included_flag VARCHAR2 (1) ;
9046 l_from_parent_table_name VARCHAR2 (30) ;
9047 l_from_parent_table_id NUMBER;
9048 l_ship_line_id NUMBER;
9049 l_new_tax_line_id NUMBER;
9050 l_garb NUMBER ; --BUG#8468830
9051 BEGIN
9052 -- Standard Beginning of Procedure/Function Logging
9053 INL_LOGGING_PVT.Log_BeginProc (
9054 p_module_name => g_module_name,
9055 p_procedure_name => l_api_name) ;
9056 -- Standard Start of API savepoint
9057 SAVEPOINT Adjust_TaxLines_PVT;
9058 -- Initialize message list if p_init_msg_list is set to TRUE.
9059 IF FND_API.to_Boolean (p_init_msg_list) THEN
9060 FND_MSG_PUB.initialize;
9061 END IF;
9062 -- Check for call compatibility.
9063 IF NOT FND_API.Compatible_API_Call (
9064 p_current_version_number => l_api_version,
9065 p_caller_version_number => p_api_version,
9066 p_api_name => l_api_name,
9067 p_pkg_name => g_pkg_name
9068 ) THEN
9069 RAISE L_FND_EXC_UNEXPECTED_ERROR;
9070 END IF;
9071 -- Initialize API return status to success
9072 x_return_status := L_FND_RET_STS_SUCCESS;
9073 -- Getting the match information
9074 l_debug_info := 'Getting the match information';
9075 INL_LOGGING_PVT.Log_Statement (
9076 p_module_name => g_module_name,
9077 p_procedure_name => l_api_name,
9078 p_debug_info => l_debug_info
9079 ) ;
9080
9081 INL_LOGGING_PVT.Log_Variable (
9082 p_module_name => g_module_name,
9083 p_procedure_name => l_api_name,
9084 p_var_name => 'p_match_id',
9085 p_var_value => p_match_id
9086 ) ;
9087 SELECT
9088 m.to_parent_table_name ,
9089 m.to_parent_table_id ,
9090 m.tax_code ,
9091 m.matched_amt ,
9092 m.nrec_tax_amt ,
9093 m.tax_amt_included_flag ,
9094 m.from_parent_table_name ,
9095 m.from_parent_table_id ,
9096 m.matched_curr_code ,
9097 m.matched_curr_conversion_type,
9098 m.matched_curr_conversion_date,
9099 m.matched_curr_conversion_rate,
9100 m.ship_header_id
9101 INTO
9102 l_table_name ,
9103 l_table_id ,
9104 l_tax_code ,
9105 l_matched_amt ,
9106 l_nrec_tax_amt ,
9107 l_tax_amt_included_flag ,
9108 l_from_parent_table_name ,
9109 l_from_parent_table_id ,
9110 l_matched_curr_code ,
9111 l_matched_curr_conversion_type,
9112 l_matched_curr_conversion_date,
9113 l_matched_curr_conversion_rate,
9114 l_ship_header_id
9115 FROM inl_corr_matches_v m
9116 WHERE match_id = p_match_id;
9117 -- Handling estimated tax Line and getting the parent_tax_line_id
9118 l_debug_info := 'Handling estimated tax Line and getting the parent_tax_line_id';
9119 INL_LOGGING_PVT.Log_Statement (
9120 p_module_name => g_module_name,
9121 p_procedure_name => l_api_name,
9122 p_debug_info => l_debug_info
9123 ) ;
9124 -- For now:
9125 -- 1) Create a new tax line ADJ 1 with the new actual value with no ADJ 0
9126 -- 2) For the estimated tax line create a new tax line ADJ 1 with amount = 0
9127 -- Getting information for the new tax line
9128 l_debug_info := 'All Amounts :'||l_matched_amt;
9129 INL_LOGGING_PVT.Log_Statement (
9130 p_module_name => g_module_name,
9131 p_procedure_name => l_api_name,
9132 p_debug_info => l_debug_info
9133 ) ;
9134 l_TxLn_Assoc.inl_Assoc.to_parent_table_name := l_table_name;
9135 IF l_table_name = 'INL_SHIP_LINES' THEN
9136 l_TxLn_Assoc.inl_Assoc.to_parent_table_id := l_table_id;
9137 END IF;
9138 -- l_TxLn_Assoc.adjustment_num := p_adjustment_num;
9139 SELECT NVL (MAX (adjustment_num), 0) + 1
9140 INTO l_TxLn_Assoc.adjustment_num
9141 FROM inl_tax_lines tx
9142 WHERE tx.source_parent_table_name = l_from_parent_table_name
9143 AND tx.source_parent_table_id = l_from_parent_table_id
9144 AND tx.ship_header_id = l_ship_header_id;
9145 IF l_TxLn_Assoc.adjustment_num > 1 THEN
9146 SELECT tax_line_num, tax_line_id
9147 INTO l_TxLn_Assoc.tax_line_num, l_TxLn_Assoc.parent_tax_line_id
9148 FROM inl_tax_lines tx
9149 WHERE tx.source_parent_table_name = l_from_parent_table_name
9150 AND tx.source_parent_table_id = l_from_parent_table_id
9151 AND tx.ship_header_id = l_ship_header_id
9152 AND adjustment_num =
9153 (
9154 SELECT MAX (tx1.adjustment_num)
9155 FROM inl_tax_lines tx1
9156 WHERE tx1.source_parent_table_name = tx.source_parent_table_name
9157 AND tx1.source_parent_table_id = tx.source_parent_table_id
9158 AND tx1.ship_header_id = l_ship_header_id
9159 ) ;
9160 ELSE
9161 l_TxLn_Assoc.tax_line_num := NULL;
9162 l_TxLn_Assoc.parent_tax_line_id := NULL;
9163 END IF;
9164 l_TxLn_Assoc.inl_Assoc.ship_header_id := l_ship_header_id;
9165 l_TxLn_Assoc.inl_Assoc.allocation_basis := 'VALUE';
9166 l_TxLn_Assoc.inl_Assoc.allocation_uom_code := NULL;
9167 l_TxLn_Assoc.tax_code := l_tax_code;
9168 l_TxLn_Assoc.match_id := p_match_id;
9169 l_TxLn_Assoc.matched_amt := l_matched_amt;
9170 l_TxLn_Assoc.nrec_tax_amt := l_nrec_tax_amt;
9171 l_TxLn_Assoc.source_parent_table_name := l_from_parent_table_name;
9172 l_TxLn_Assoc.source_parent_table_id := l_from_parent_table_id;
9173
9174 --BUG#8468830
9175 IF p_func_currency_code <> l_matched_curr_code THEN
9176 IF l_matched_curr_conversion_type <> 'User' THEN -- Bug #10102991
9177 l_garb := inl_landedcost_pvt.Converted_Amt (
9178 1,
9179 l_matched_curr_code,
9180 p_func_currency_code,
9181 l_matched_curr_conversion_type,
9182 l_matched_curr_conversion_date,
9183 l_matched_curr_conversion_rate);
9184 END IF;
9185 ELSE
9186 l_matched_curr_conversion_type:= NULL;
9187 l_matched_curr_conversion_rate:= NULL;
9188 END IF;
9189 --BUG#8468830
9190
9191 l_TxLn_Assoc.currency_code := l_matched_curr_code;
9192 l_TxLn_Assoc.currency_conversion_type := l_matched_curr_conversion_type;
9193 l_TxLn_Assoc.currency_conversion_date := l_matched_curr_conversion_date;
9194 l_TxLn_Assoc.currency_conversion_rate := l_matched_curr_conversion_rate;
9195 l_TxLn_Assoc.tax_amt_included_flag := l_tax_amt_included_flag;
9196 IF l_TxLn_Assoc.parent_tax_line_id IS NULL THEN
9197 l_include_assoc_flag:= 'Y';
9198 ELSE
9199 l_include_assoc_flag:= 'N';
9200 END IF;
9201 -- Create_TxLines
9202 l_debug_info := 'Create_TxLines';
9203 INL_LOGGING_PVT.Log_Statement (
9204 p_module_name => g_module_name,
9205 p_procedure_name => l_api_name,
9206 p_debug_info => l_debug_info
9207 ) ;
9208 Create_TxLines (
9209 p_TxLn_Assoc => l_TxLn_Assoc,
9210 p_include_assoc => l_include_assoc_flag,
9211 p_adjustment_num => p_adjustment_num,
9212 x_new_tax_line_id => l_new_tax_line_id,
9213 x_return_status => l_return_status) ;
9214 IF l_return_status = L_FND_RET_STS_ERROR THEN
9215 RAISE L_FND_EXC_ERROR;
9216 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
9217 RAISE L_FND_EXC_UNEXPECTED_ERROR;
9218 END IF;
9219 -- The estimated tax lines will made = 0 when as actual arrived on associated line
9220 -- i.e. when a charge became and actual value the estimated taxes will made 0 too
9221 -- Standard check of p_commit.
9222 IF FND_API.To_Boolean (p_commit) THEN
9223 COMMIT WORK;
9224 END IF;
9225 -- Standard call to get message count and if count is 1, get message info.
9226 FND_MSG_PUB.Count_And_Get ( p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
9227 -- Standard End of Procedure/Function Logging
9228 INL_LOGGING_PVT.Log_EndProc (
9229 p_module_name => g_module_name,
9230 p_procedure_name => l_api_name) ;
9231 EXCEPTION
9232 WHEN L_FND_EXC_ERROR THEN
9233 -- Standard Expected Error Logging
9234 INL_LOGGING_PVT.Log_ExpecError (
9235 p_module_name => g_module_name,
9236 p_procedure_name => l_api_name) ;
9237 ROLLBACK TO Adjust_TaxLines_PVT;
9238 x_return_status := L_FND_RET_STS_ERROR;
9239 FND_MSG_PUB.Count_And_Get (
9240 p_encoded => L_FND_FALSE,
9241 p_count => x_msg_count, p_data => x_msg_data) ;
9242 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
9243 -- Standard Unexpected Error Logging
9244 INL_LOGGING_PVT.Log_UnexpecError (
9245 p_module_name => g_module_name,
9246 p_procedure_name => l_api_name) ;
9247 ROLLBACK TO Adjust_TaxLines_PVT;
9248 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
9249 FND_MSG_PUB.Count_And_Get (
9250 p_encoded => L_FND_FALSE,
9251 p_count => x_msg_count,
9252 p_data => x_msg_data) ;
9253 WHEN OTHERS THEN
9254 -- Standard Unexpected Error Logging
9255 INL_LOGGING_PVT.Log_UnexpecError (
9256 p_module_name => g_module_name,
9257 p_procedure_name => l_api_name) ;
9258 ROLLBACK TO Adjust_TaxLines_PVT;
9259 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
9260 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
9261 FND_MSG_PUB.Add_Exc_Msg (
9262 p_pkg_name => g_pkg_name,
9263 p_procedure_name => l_api_name) ;
9264 END IF;
9265 FND_MSG_PUB.Count_And_Get (
9266 p_encoded => L_FND_FALSE,
9267 p_count => x_msg_count,
9268 p_data => x_msg_data) ;
9269 END Adjust_TaxLines;
9270
9271 -- API name : Adjust_TaxLines
9272 -- Type : Private
9273 -- Function : Create Adjustment Lines for Charge Lines
9274 -- Pre-reqs : None
9275 -- Parameters :
9276 -- IN : p_api_version IN NUMBER Required
9277 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
9278 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
9279 -- p_match_amount_id IN NUMBER,
9280 -- p_adjustment_num IN NUMBER,
9281 -- p_func_currency_code IN VARCHAR2 , --BUG#8468830
9282 -- OUT x_return_status OUT NOCOPY VARCHAR2
9283 -- x_msg_count OUT NOCOPY NUMBER
9284 -- x_msg_data OUT NOCOPY VARCHAR2
9285 --
9286 -- Version : Current version 1.0
9287 --
9288 -- Notes :
9289 PROCEDURE Adjust_TaxLines(
9290 p_api_version IN NUMBER,
9291 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
9292 p_commit IN VARCHAR2 := L_FND_FALSE,
9293 p_match_amount_id IN NUMBER,
9294 p_adjustment_num IN NUMBER,
9295 p_func_currency_code IN VARCHAR2 , --BUG#8468830
9296 x_return_status OUT NOCOPY VARCHAR2,
9297 x_msg_count OUT NOCOPY NUMBER,
9298 x_msg_data OUT NOCOPY VARCHAR2
9299 ) IS
9300 l_api_name CONSTANT VARCHAR2 (30) := 'Adjust_TaxLines-2';
9301 l_api_version CONSTANT NUMBER := 1.0;
9302 l_debug_info VARCHAR2 (240) ;
9303 l_return_status VARCHAR2 (1) ;
9304 --
9305 CURSOR c_matches_tl (p_match_amount_id NUMBER)
9306 IS
9307 SELECT distinct
9308 m.ship_header_id , --BUG#8198498
9309 m.to_parent_table_name,
9310 m.to_parent_table_id
9311 FROM inl_corr_matches_v m
9312 WHERE m.match_amount_id = p_match_amount_id;
9313 TYPE c_matches_type
9314 IS
9315 TABLE OF c_matches_tl%ROWTYPE;
9316 c_matches c_matches_type;
9317 l_TxLn_Assoc inl_TxLn_Assoc_tp;
9318 l_existing_match_info_flag VARCHAR2(1);
9319 l_charge_line_type_id NUMBER;
9320 l_new_tax_line_id NUMBER;
9321 l_prev_match_amount_id NUMBER;
9322 l_count_new_matches NUMBER;
9323 l_garb NUMBER ; --BUG#8468830
9324 BEGIN
9325 -- Standard Beginning of Procedure/Function Logging
9326 INL_LOGGING_PVT.Log_BeginProc ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
9327 -- Standard Start of API savepoint
9328 SAVEPOINT Adjust_TaxLines_2_PVT;
9329 -- Initialize message list if p_init_msg_list is set to TRUE.
9330 IF FND_API.to_Boolean (p_init_msg_list) THEN
9331 FND_MSG_PUB.initialize;
9332 END IF;
9333 -- Check for call compatibility.
9334 IF NOT FND_API.Compatible_API_Call (p_current_version_number => l_api_version, p_caller_version_number => p_api_version, p_api_name => l_api_name, p_pkg_name => g_pkg_name) THEN
9335 RAISE L_FND_EXC_UNEXPECTED_ERROR;
9336 END IF;
9337 -- Initialize API return status to success
9338 x_return_status := L_FND_RET_STS_SUCCESS;
9339 -- Getting the matchAmount information
9340 l_debug_info := 'Getting the matchAmount information';
9341 INL_LOGGING_PVT.Log_Statement (
9342 p_module_name => g_module_name,
9343 p_procedure_name => l_api_name,
9344 p_debug_info => l_debug_info
9345 ) ;
9346 SELECT
9347 (SELECT SUM(INL_LANDEDCOST_PVT.Converted_Amt( NVL(a.matched_amt,0),
9348 a.matched_curr_code,
9349 ma.matched_curr_code,
9350 ma.matched_curr_conversion_type,
9351 ma.matched_curr_conversion_date))
9352 FROM inl_corr_matches_v a
9353 WHERE a.match_amount_id = ma.match_amount_id ) tax_amt,
9354 ma.matched_curr_code currency_code,
9355 ma.matched_curr_conversion_type currency_conversion_type,
9356 ma.matched_curr_conversion_date currency_conversion_date,
9357 ma.matched_curr_conversion_rate currency_conversion_rate,
9358 --
9359 ma.tax_code tax_code,
9360 -- m.ship_header_id ship_header_id , --BUG#8198498
9361 m.from_parent_table_name source_parent_table_name,
9362 m.from_parent_table_id source_parent_table_id,
9363 ma.nrec_tax_amt nrec_tax_amt,
9364 m.tax_amt_included_flag tax_amt_included_flag,
9365 ma.charge_line_type_id charge_line_type_id,
9366 --
9367 clt.allocation_basis allocation_basis,
9368 abv.base_uom_code base_uom_code,
9369 m.existing_match_info_flag existing_match_info_flag
9370 INTO
9371 l_TxLn_Assoc.matched_amt ,
9372 l_TxLn_Assoc.currency_code ,
9373 l_TxLn_Assoc.currency_conversion_type ,
9374 l_TxLn_Assoc.currency_conversion_date ,
9375 l_TxLn_Assoc.currency_conversion_rate ,
9376 --
9377 l_TxLn_Assoc.tax_code ,
9378 -- l_TxLn_Assoc.inl_Assoc.ship_header_id ,--BUG#8198498
9379 l_TxLn_Assoc.source_parent_table_name ,
9380 l_TxLn_Assoc.source_parent_table_id ,
9381 l_TxLn_Assoc.nrec_tax_amt ,
9382 l_TxLn_Assoc.tax_amt_included_flag ,
9383 l_charge_line_type_id ,
9384 --
9385 l_TxLn_Assoc.inl_Assoc.allocation_basis,
9386 l_TxLn_Assoc.inl_Assoc.allocation_uom_code,
9387 l_existing_match_info_flag
9388 FROM
9389 inl_match_amounts ma , -- Bug #9179775
9390 inl_matches m ,
9391 inl_charge_line_types_vl clt,
9392 inl_allocation_basis_vl abv
9393 WHERE
9394 abv.allocation_basis_code = clt.allocation_basis
9395 AND clt.charge_line_type_id = m.charge_line_type_id
9396 AND m.match_amount_id = ma.match_amount_id
9397 AND ma.match_amount_id = p_match_amount_id
9398 AND m.match_id in (select min(match_id) -- BUG#8411594
9399 FROM inl_corr_matches_v m
9400 WHERE m.match_amount_id = p_match_amount_id);
9401
9402 INL_LOGGING_PVT.Log_Variable (
9403 p_module_name => g_module_name,
9404 p_procedure_name => l_api_name,
9405 p_var_name => 'l_existing_match_info_flag',
9406 p_var_value => l_existing_match_info_flag) ;
9407
9408
9409 INL_LOGGING_PVT.Log_Variable (
9410 p_module_name => g_module_name,
9411 p_procedure_name => l_api_name,
9412 p_var_name => 'l_TxLn_Assoc.source_parent_table_name',
9413 p_var_value => l_TxLn_Assoc.source_parent_table_name
9414 ) ;
9415
9416 INL_LOGGING_PVT.Log_Variable (
9417 p_module_name => g_module_name,
9418 p_procedure_name => l_api_name,
9419 p_var_name => 'l_TxLn_Assoc.source_parent_table_id',
9420 p_var_value => l_TxLn_Assoc.source_parent_table_id
9421 ) ;
9422
9423 IF (l_existing_match_info_flag = 'Y') THEN
9424
9425 -- Tax has been already processed
9426 l_debug_info := 'Existing match info flag';
9427 INL_LOGGING_PVT.Log_Statement (
9428 p_module_name => g_module_name,
9429 p_procedure_name => l_api_name,
9430 p_debug_info => l_debug_info
9431 ) ;
9432 -- BUG#8411594
9433 -- a)Verify if exists any new match in this match amount
9434 -- a.1) Get the last match_amount_id
9435 SELECT max(match_amount_id)
9436 INTO l_prev_match_amount_id
9437 FROM inl_matches m
9438 WHERE m.charge_line_type_id = l_charge_line_type_id
9439 AND nvl(m.tax_code,'-9') = nvl(l_TxLn_Assoc.tax_code,'-9')
9440 AND m.match_amount_id <> p_match_amount_id
9441 AND adj_already_generated_flag = 'Y'
9442 AND (m.from_parent_table_name, m.from_parent_table_id)
9443 IN (SELECT m2.from_parent_table_name, m2.from_parent_table_id
9444 FROM inl_matches m2
9445 WHERE m2.match_amount_id = p_match_amount_id)
9446 ;
9447
9448 INL_LOGGING_PVT.Log_Variable (
9449 p_module_name => g_module_name,
9450 p_procedure_name => l_api_name,
9451 p_var_name => 'l_prev_match_amount_id',
9452 p_var_value => l_prev_match_amount_id
9453 ) ;
9454
9455 -- a.2) Count the new matches
9456 SELECT nvl(count(*),0)
9457 INTO l_count_new_matches
9458 FROM inl_matches m
9459 WHERE m.match_amount_id = p_match_amount_id
9460 AND not exists (SELECT 1
9461 FROM inl_matches m2
9462 WHERE m2.match_amount_id = l_prev_match_amount_id
9463 AND m2.from_parent_table_name = m.from_parent_table_name
9464 AND m2.from_parent_table_id = m.from_parent_table_id
9465 AND m2.to_parent_table_name = m.to_parent_table_name
9466 AND m2.to_parent_table_id = m.to_parent_table_id
9467 )
9468 ;
9469 -- b)Verify if any old match has been deleted
9470 IF l_count_new_matches = 0 THEN
9471 -- b.1) Count old matches
9472 SELECT nvl(count(*),0)
9473 INTO l_count_new_matches
9474 FROM inl_matches m
9475 WHERE m.match_amount_id = l_prev_match_amount_id
9476 AND not exists (SELECT 1
9477 FROM inl_matches m2
9478 WHERE m2.match_amount_id = p_match_amount_id
9479 AND m2.from_parent_table_name = m.from_parent_table_name
9480 AND m2.from_parent_table_id = m.from_parent_table_id
9481 AND m2.to_parent_table_name = m.to_parent_table_name
9482 AND m2.to_parent_table_id = m.to_parent_table_id
9483 )
9484 ;
9485 END IF;
9486 -- c) if exists any new match zeroes the previous charge line
9487 IF l_count_new_matches > 0 THEN
9488
9489 l_debug_info := 'Calling Zero_TaxLinesPerMatchAmt';
9490 INL_LOGGING_PVT.Log_Statement (
9491 p_module_name => g_module_name,
9492 p_procedure_name => l_api_name,
9493 p_debug_info => l_debug_info
9494 ) ;
9495 Zero_TaxLinesPerMatchAmt (
9496 p_match_Amount_id => l_prev_match_amount_id,
9497 p_adjustment_num => p_adjustment_num,
9498 x_return_status => l_debug_info
9499 );
9500 END IF;
9501 IF l_return_status = L_FND_RET_STS_ERROR THEN
9502 RAISE L_FND_EXC_ERROR;
9503 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
9504 RAISE L_FND_EXC_UNEXPECTED_ERROR;
9505 END IF;
9506 -- BUG#8411594
9507 END IF;
9508
9509 INL_LOGGING_PVT.Log_Variable (
9510 p_module_name => g_module_name,
9511 p_procedure_name => l_api_name,
9512 p_var_name => 'l_count_new_matches',
9513 p_var_value => l_count_new_matches
9514 ) ;
9515 -- ====================
9516 IF (l_existing_match_info_flag = 'Y')
9517 AND l_count_new_matches = 0 THEN -- BUG#8411594
9518 -- Charge has been already processed
9519 l_debug_info := 'Existing match info flag';
9520 INL_LOGGING_PVT.Log_Statement (
9521 p_module_name => g_module_name,
9522 p_procedure_name => l_api_name,
9523 p_debug_info => l_debug_info
9524 ) ;
9525 SELECT tl.tax_line_id, tl.tax_line_num
9526 INTO l_TxLn_Assoc.parent_tax_line_id, l_TxLn_Assoc.tax_line_num
9527 FROM inl_matches m,
9528 inl_adj_tax_lines_v tl
9529 WHERE m.from_parent_table_name = l_TxLn_Assoc.source_parent_table_name
9530 AND m.from_parent_table_id = l_TxLn_Assoc.source_parent_table_id
9531 AND m.match_id = (select max(m2.match_id)
9532 FROM inl_matches m2
9533 WHERE m2.from_parent_table_name = l_TxLn_Assoc.source_parent_table_name
9534 AND m2.from_parent_table_id = l_TxLn_Assoc.source_parent_table_id
9535 AND m2.adj_already_generated_flag = 'Y' -- BUG#8411723 => MURALI
9536 )
9537 AND tl.match_amount_id = m.match_amount_id;
9538 ELSE
9539 l_TxLn_Assoc.parent_tax_line_id := NULL;
9540 l_TxLn_Assoc.tax_line_num := NULL;
9541 END IF;
9542 l_TxLn_Assoc.match_id := NULL;
9543 l_TxLn_Assoc.match_amount_id := p_match_amount_id;
9544 -- Create_TxLines
9545 l_debug_info := 'Create_TxLines';
9546 INL_LOGGING_PVT.Log_Statement (
9547 p_module_name => g_module_name,
9548 p_procedure_name => l_api_name,
9549 p_debug_info => l_debug_info
9550 ) ;
9551
9552 --BUG#8468830
9553 IF p_func_currency_code <> l_TxLn_Assoc.currency_code THEN
9554 l_garb := inl_landedcost_pvt.Converted_Amt (
9555 1,
9556 l_TxLn_Assoc.currency_code,
9557 p_func_currency_code,
9558 l_TxLn_Assoc.currency_conversion_type,
9559 l_TxLn_Assoc.currency_conversion_date,
9560 l_TxLn_Assoc.currency_conversion_rate);
9561 ELSE
9562 l_TxLn_Assoc.currency_conversion_type:= NULL;
9563 l_TxLn_Assoc.currency_conversion_rate:= NULL;
9564 END IF;
9565 --BUG#8468830
9566
9567 Create_TxLines (
9568 p_TxLn_Assoc => l_TxLn_Assoc,
9569 p_include_assoc => 'N',
9570 p_adjustment_num => p_adjustment_num,
9571 x_new_tax_line_id => l_new_tax_line_id,
9572 x_return_status => l_return_status) ;
9573 IF l_return_status = L_FND_RET_STS_ERROR THEN
9574 RAISE L_FND_EXC_ERROR;
9575 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
9576 RAISE L_FND_EXC_UNEXPECTED_ERROR;
9577 END IF;
9578 -- It does not create associations for corrections neither to updates
9579 IF l_existing_match_info_flag = 'N'
9580 OR l_count_new_matches > 0 -- BUG#8411594
9581 THEN
9582 -- Create_associations for the match amount id
9583 l_debug_info := 'Create association lines to a match_amount_id';
9584 INL_LOGGING_PVT.Log_Statement (
9585 p_module_name => g_module_name,
9586 p_procedure_name => l_api_name,
9587 p_debug_info => l_debug_info
9588 ) ;
9589 OPEN c_matches_tl (p_match_amount_id) ;
9590 FETCH c_matches_tl BULK COLLECT INTO c_matches;
9591 CLOSE c_matches_tl;
9592 l_debug_info := c_matches.LAST||' match lines have been retrieved.';
9593 INL_LOGGING_PVT.Log_Statement (
9594 p_module_name => g_module_name,
9595 p_procedure_name => l_api_name,
9596 p_debug_info => l_debug_info
9597 ) ;
9598 IF NVL (c_matches.LAST, 0) > 0 THEN
9599 FOR i IN NVL (c_matches.FIRST, 0) ..NVL (c_matches.LAST, 0)
9600 LOOP
9601 l_TxLn_Assoc.inl_Assoc.ship_header_id := c_matches(i).ship_header_id; --BUG#8198498
9602 l_TxLn_Assoc.inl_Assoc.to_parent_table_name := c_matches(i).to_parent_table_name;
9603 l_TxLn_Assoc.inl_Assoc.to_parent_table_id := c_matches(i).to_parent_table_id;
9604 -- Create Association Line
9605 l_debug_info := 'Create association line for the charge';
9606 INL_LOGGING_PVT.Log_Statement (
9607 p_module_name => g_module_name,
9608 p_procedure_name => l_api_name,
9609 p_debug_info => l_debug_info
9610 ) ;
9611 l_debug_info := 'Creating association for Charge Id: '|| c_matches (i) .to_parent_table_id;
9612 INL_LOGGING_PVT.Log_Variable (
9613 p_module_name => g_module_name,
9614 p_procedure_name => l_api_name,
9615 p_var_name => l_debug_info,
9616 p_var_value => c_matches (i) .to_parent_table_id) ;
9617 Create_Assoc (
9618 p_Assoc => l_TxLn_Assoc.inl_Assoc,
9619 p_from_parent_table_name => 'INL_TAX_LINES',
9620 p_new_line_id => l_new_tax_line_id,
9621 x_return_status => l_return_status) ;
9622 END LOOP;
9623 END IF;
9624 END IF;
9625 -- The estimated tax lines will made = 0 when as actual arrived on associated line
9626 -- i.e. when a charge became and actual value the estimated taxes will made 0 too
9627 -- Standard check of p_commit.
9628 IF FND_API.To_Boolean (p_commit) THEN
9629 COMMIT WORK;
9630 END IF;
9631 -- Standard call to get message count and if count is 1, get message info.
9632 FND_MSG_PUB.Count_And_Get (
9633 p_encoded => L_FND_FALSE,
9634 p_count => x_msg_count,
9635 p_data => x_msg_data) ;
9636 -- Standard End of Procedure/Function Logging
9637 INL_LOGGING_PVT.Log_EndProc (
9638 p_module_name => g_module_name,
9639 p_procedure_name => l_api_name) ;
9640 EXCEPTION
9641 WHEN L_FND_EXC_ERROR THEN
9642 -- Standard Expected Error Logging
9643 INL_LOGGING_PVT.Log_ExpecError (
9644 p_module_name => g_module_name,
9645 p_procedure_name => l_api_name) ;
9646 ROLLBACK TO Adjust_TaxLines_2_PVT;
9647 x_return_status := L_FND_RET_STS_ERROR;
9648 FND_MSG_PUB.Count_And_Get (
9649 p_encoded => L_FND_FALSE,
9650 p_count => x_msg_count,
9651 p_data => x_msg_data) ;
9652 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
9653 -- Standard Unexpected Error Logging
9654 INL_LOGGING_PVT.Log_UnexpecError ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
9655 ROLLBACK TO Adjust_TaxLines_2_PVT;
9656 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
9657 FND_MSG_PUB.Count_And_Get (
9658 p_encoded => L_FND_FALSE,
9659 p_count => x_msg_count,
9660 p_data => x_msg_data) ;
9661 WHEN OTHERS THEN
9662 -- Standard Unexpected Error Logging
9663 INL_LOGGING_PVT.Log_UnexpecError (
9664 p_module_name => g_module_name,
9665 p_procedure_name => l_api_name) ;
9666 ROLLBACK TO Adjust_TaxLines_2_PVT;
9667 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
9668 IF FND_MSG_PUB.Check_Msg_Level (
9669 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
9670 ) THEN
9671 FND_MSG_PUB.Add_Exc_Msg (
9672 p_pkg_name => g_pkg_name,
9673 p_procedure_name => l_api_name) ;
9674 END IF;
9675 FND_MSG_PUB.Count_And_Get (
9676 p_encoded => L_FND_FALSE,
9677 p_count => x_msg_count,
9678 p_data => x_msg_data) ;
9679 END Adjust_TaxLines;
9680
9681 -- API name : Adjust_Lines
9682 -- Type : Private
9683 -- Function : Manages the Creation of Adjustment Lines for Shipment Lines and Charge Lines
9684 -- Pre-reqs : None
9685 -- Parameters :
9686 -- IN : p_api_version IN NUMBER Required
9687 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
9688 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
9689 -- p_ship_header_id IN NUMBER,
9690 -- OUT x_return_status OUT NOCOPY VARCHAR2
9691 -- x_msg_count OUT NOCOPY NUMBER
9692 -- x_msg_data OUT NOCOPY VARCHAR2
9693 --
9694 -- Version : Current version 1.0
9695 --
9696 -- Notes :
9697 PROCEDURE Adjust_Lines(
9698 p_api_version IN NUMBER,
9699 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
9700 p_commit IN VARCHAR2 := L_FND_FALSE,
9701 p_ship_header_id IN NUMBER,
9702 x_return_status OUT NOCOPY VARCHAR2,
9703 x_msg_count OUT NOCOPY NUMBER,
9704 x_msg_data OUT NOCOPY VARCHAR2
9705 ) IS
9706 l_api_name CONSTANT VARCHAR2 (30) := 'Adjust_Lines';
9707 l_api_version CONSTANT NUMBER := 1.0;
9708 l_return_status VARCHAR2 (1) ;
9709 l_msg_count NUMBER;
9710 l_msg_data VARCHAR2 (2000) ;
9711 l_debug_info VARCHAR2 (200) ;
9712
9713 l_initial_sysdate date:= TRUNC(SYSDATE);
9714
9715 CURSOR c_match
9716 IS
9717 SELECT
9718 'B' Ttype, --BUG#8198498
9719 m.match_id ,
9720 m.correction_match_id ,
9721 NULL match_amount_id , --BUG#8198498
9722 NVL(m.adj_group_date,l_initial_sysdate) adj_group_date, --OPM Integration / dependence
9723 m.match_type_code ,
9724 m.charge_line_type_id ,
9725 m.tax_code ,
9726 m.to_parent_table_name,
9727 m.to_parent_table_id ,
9728 sh.organization_id --Bug#14044298
9729 --Bug#14044298 gsb.currency_code func_currency_code --BUG#8468830
9730 FROM
9731 --Bug#14044298 inl_charge_lines cl ,
9732 --Bug#14044298 inl_ship_lines sl ,
9733 inl_ship_headers sh ,
9734 inl_corr_matches_v m
9735 --Bug#14044298 org_organization_definitions ood, --BUG#8468830
9736 --Bug#14044298 gl_sets_of_books gsb --BUG#8468830
9737 WHERE
9738 sh.ship_header_id = p_ship_header_id
9739 --Bug#14044298 cl.charge_line_id (+) = DECODE (m.to_parent_table_name, 'INL_CHARGE_LINES', m.to_parent_table_id, NULL)
9740 --Bug#14044298 AND sl.ship_line_id (+) = DECODE (m.to_parent_table_name, 'INL_SHIP_LINES', m.to_parent_table_id, NULL)
9741 AND sh.ship_header_id = m.ship_header_id
9742 AND m.ship_header_id = p_ship_header_id
9743 AND m.match_amount_id IS NULL
9744 AND m.match_type_code <> 'CORRECTION'
9745 AND NVL (m.adj_already_generated_flag, 'N') = 'N'
9746 --Bug#14044298 AND gsb.set_of_books_id = ood.set_of_books_id
9747 --Bug#14044298 AND ood.organization_id = sh.organization_id
9748 UNION
9749 SELECT DISTINCT
9750 'A' Ttype, --BUG#8198498
9751 NULL AS match_id ,
9752 NULL AS correction_match_id ,
9753 ma.match_amount_id AS match_amount_id ,
9754 ma.adj_group_date AS adj_group_date , --OPM Integration
9755 m.match_type_code AS match_type_code ,
9756 NULL AS charge_line_type_id ,
9757 NULL AS tax_code ,
9758 NULL AS to_parent_table_name,
9759 NULL AS to_parent_table_id ,
9760 sh.organization_id --Bug#14044298
9761 --Bug#14044298 gsb.currency_code AS func_currency_code --BUG#8468830
9762 FROM
9763 inl_ship_headers sh,
9764 inl_match_amounts ma,
9765 inl_corr_matches_v m
9766 --Bug#14044298 org_organization_definitions ood, --BUG#8468830
9767 --Bug#14044298 gl_sets_of_books gsb --BUG#8468830
9768 WHERE
9769 sh.ship_header_id = p_ship_header_id
9770 AND ma.match_amount_id = m.match_amount_id
9771 AND m.ship_header_id = p_ship_header_id
9772 AND m.match_type_code <> 'CORRECTION'
9773 AND NVL (m.adj_already_generated_flag, 'N') = 'N'
9774 --Bug#14044298 AND gsb.set_of_books_id = ood.set_of_books_id
9775 --Bug#14044298 AND ood.organization_id = sh.organization_id
9776 ORDER BY Ttype,
9777 adj_group_date, --OPM Integration
9778 match_id,
9779 match_amount_id; --BUG#8198498, -- BUG#8411723 => MURALI
9780 TYPE c_match_type
9781 IS
9782 TABLE OF c_match%ROWTYPE;
9783 r_match c_match_type;
9784
9785 TYPE match_ship_header_id_type
9786 IS RECORD (
9787 ship_header_id NUMBER,
9788 adjustment_num NUMBER
9789 )
9790 ;
9791 TYPE match_ship_header_id_tbl
9792 IS
9793 TABLE OF match_ship_header_id_type INDEX BY BINARY_INTEGER;
9794 match_ship_header_id_lst match_ship_header_id_tbl;
9795 --
9796 -- Create Adjustments for Shipment Lines and Charge Lines
9797 --
9798 l_func_currency_code VARCHAR2(5); --Bug#14044298
9799 l_adjust_updt_flag VARCHAR2(1) := 'N';
9800 l_adjustment_num NUMBER;
9801 l_adjustment_num_tmp NUMBER;
9802 l_has_match_amt VARCHAR2(1) := 'N';
9803 l_match_amt_proc_same_adj_num VARCHAR2(1) := 'N';
9804 l_match_ship_header_id_ind NUMBER :=0 ;
9805 l_adj_group_date_ant DATE; --OPM Integration
9806 l_adj_group_date DATE; --dependence
9807 BEGIN
9808 -- Standard Beginning of Procedure/Function Logging
9809 INL_LOGGING_PVT.Log_BeginProc ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
9810 -- Standard Start of API savepoint
9811 SAVEPOINT Adjust_Lines_PVT;
9812 -- Initialize message list if p_init_msg_list is set to TRUE.
9813 IF FND_API.to_Boolean (p_init_msg_list) THEN
9814 FND_MSG_PUB.initialize;
9815 END IF;
9816 -- Check for call compatibility.
9817 IF NOT FND_API.Compatible_API_Call (p_current_version_number => l_api_version, p_caller_version_number => p_api_version, p_api_name => l_api_name, p_pkg_name => g_pkg_name) THEN
9818 RAISE L_FND_EXC_UNEXPECTED_ERROR;
9819 END IF;
9820 -- Initialize API return status to success
9821 x_return_status := L_FND_RET_STS_SUCCESS;
9822 -- API Body
9823 BEGIN
9824 l_debug_info := 'Create Adjustments for Shipment Lines and Charge Lines';
9825 INL_LOGGING_PVT.Log_Statement (
9826 p_module_name => g_module_name,
9827 p_procedure_name => l_api_name,
9828 p_debug_info => l_debug_info
9829 ) ;
9830 --
9831 --BUG#8198498
9832 --
9833 OPEN c_match;
9834 FETCH c_match BULK COLLECT INTO r_match;
9835 CLOSE c_match;
9836 l_debug_info := 'p_ship_header_id';
9837 INL_LOGGING_PVT.Log_Variable (
9838 p_module_name => g_module_name,
9839 p_procedure_name => l_api_name,
9840 p_var_name => l_debug_info,
9841 p_var_value => p_ship_header_id
9842 );
9843 l_debug_info := r_match.LAST||' match lines have been retrieved.';
9844 INL_LOGGING_PVT.Log_Statement (
9845 p_module_name => g_module_name,
9846 p_procedure_name => l_api_name,
9847 p_debug_info => l_debug_info
9848 ) ;
9849 IF NVL (r_match.LAST, 0) > 0 THEN
9850 IF r_match(1).ttype = 'B' THEN -- no match_amounts to process
9851 l_has_match_amt := 'N';
9852 ELSE
9853 l_has_match_amt := 'Y';
9854 -- Verify if all match_amounts could be processed with the same adjustment number
9855 -- they will, if all matches have the same adj_group_date
9856 SELECT -- dependence
9857 DECODE(COUNT(DISTINCT(NVL(mFromMA.adj_group_date,l_initial_sysdate))),1,'Y','N')
9858 INTO
9859 l_match_amt_proc_same_adj_num
9860 FROM
9861 inl_match_amounts ma,
9862 inl_corr_matches_v m,
9863 inl_corr_matches_v mFromMA
9864 WHERE m.ship_header_id = p_ship_header_id
9865 AND m.match_amount_id = ma.match_amount_id
9866 AND m.match_type_code <> 'CORRECTION'
9867 AND NVL (m.adj_already_generated_flag, 'N') = 'N'
9868 AND mFromMA.match_amount_id = ma.match_amount_id
9869 AND NVL (mFromMA.adj_already_generated_flag, 'N') = 'N'
9870 ;
9871 l_debug_info := 'l_match_amt_proc_same_adj_num';
9872 INL_LOGGING_PVT.Log_Variable (
9873 p_module_name => g_module_name,
9874 p_procedure_name => l_api_name,
9875 p_var_name => l_debug_info,
9876 p_var_value => l_match_amt_proc_same_adj_num
9877 );
9878 END IF;
9879
9880 l_debug_info := 'l_has_match_amt';
9881 INL_LOGGING_PVT.Log_Variable (
9882 p_module_name => g_module_name,
9883 p_procedure_name => l_api_name,
9884 p_var_name => l_debug_info,
9885 p_var_value => l_has_match_amt
9886 );
9887 FOR i IN NVL (r_match.FIRST, 0) ..NVL (r_match.LAST, 0)
9888 LOOP
9889 l_debug_info := ' Begin the loop.';
9890 INL_LOGGING_PVT.Log_Statement (
9891 p_module_name => g_module_name,
9892 p_procedure_name => l_api_name,
9893 p_debug_info => l_debug_info
9894 ) ;
9895 IF r_match(i).ttype = 'B' THEN -- isn't match_amt
9896 IF NVL(l_adjustment_num,0) = 0 THEN
9897 l_adj_group_date_ant := r_match(i).adj_group_date; --OPM Integration
9898 SELECT NVL(adjustment_num,0) + 1
9899 INTO l_adjustment_num
9900 FROM inl_ship_headers
9901 WHERE ship_header_id = p_ship_header_id FOR UPDATE;
9902 l_debug_info := 'l_adjustment_num';
9903 INL_LOGGING_PVT.Log_Variable (
9904 p_module_name => g_module_name,
9905 p_procedure_name => l_api_name,
9906 p_var_name => l_debug_info,
9907 p_var_value => l_adjustment_num
9908 );
9909 -- VERIFY IF adj_group_date IS DIFFERENT
9910 ELSIF l_adj_group_date_ant IS NULL
9911 OR l_adj_group_date_ant <> r_match(i).adj_group_date THEN --OPM Integration
9912 l_adj_group_date_ant := r_match(i).adj_group_date;
9913 l_adjustment_num := l_adjustment_num + 1;
9914 l_debug_info := ' New adjustment_num';
9915 INL_LOGGING_PVT.Log_Statement (
9916 p_module_name => g_module_name,
9917 p_procedure_name => l_api_name,
9918 p_debug_info => l_debug_info
9919 ) ;
9920 l_debug_info := 'l_adjustment_num';
9921 INL_LOGGING_PVT.Log_Variable (
9922 p_module_name => g_module_name,
9923 p_procedure_name => l_api_name,
9924 p_var_name => l_debug_info,
9925 p_var_value => l_adjustment_num
9926 );
9927 END IF;
9928 IF l_has_match_amt = 'Y' THEN
9929 l_match_ship_header_id_ind:=l_match_ship_header_id_ind+1;
9930 match_ship_header_id_lst(l_match_ship_header_id_ind).ship_header_id:= p_ship_header_id;
9931 match_ship_header_id_lst(l_match_ship_header_id_ind).adjustment_num:= l_adjustment_num;
9932
9933 l_debug_info := 'match_ship_header_id_lst(l_match_ship_header_id_ind).ship_header_id';
9934 INL_LOGGING_PVT.Log_Variable (
9935 p_module_name => g_module_name,
9936 p_procedure_name => l_api_name,
9937 p_var_name => l_debug_info,
9938 p_var_value => match_ship_header_id_lst(l_match_ship_header_id_ind).ship_header_id
9939 );
9940 END IF;
9941 ELSE -- is a match_amt
9942 IF l_match_amt_proc_same_adj_num = 'Y' THEN -- FETCH ONCE
9943 IF NVL(l_adjustment_num,0) = 0 THEN -- no adjustment_num catched yet
9944 l_adj_group_date_ant := r_match(i).adj_group_date; --Bug#9141681
9945 -- 1 Verify the next adjustment num
9946 l_debug_info := ' Getting adjustment_num (match_amounts)';
9947 INL_LOGGING_PVT.Log_Statement (
9948 p_module_name => g_module_name,
9949 p_procedure_name => l_api_name,
9950 p_debug_info => l_debug_info
9951 ) ;
9952 SELECT NVL(MAX(sh.adjustment_num),0)+1
9953 INTO l_adjustment_num
9954 FROM inl_ship_headers sh
9955 WHERE sh.ship_header_id
9956 IN (select m1.ship_header_id
9957 from inl_corr_matches_v m1
9958 where m1.match_amount_id
9959 IN (select DISTINCT(ma.match_amount_id)
9960 from inl_match_amounts ma, -- Bug #9179775
9961 inl_corr_matches_v m2
9962 WHERE m2.match_amount_id = ma.match_amount_id
9963 AND m2.ship_header_id = p_SHIP_HEADER_ID
9964 AND m2.match_type_code <> 'CORRECTION'
9965 AND NVL(m2.adj_already_generated_flag, 'N') = 'N')
9966 AND m1.match_type_code <> 'CORRECTION')
9967 ;
9968
9969 l_debug_info := 'l_adjustment_num';
9970 INL_LOGGING_PVT.Log_Variable (
9971 p_module_name => g_module_name,
9972 p_procedure_name => l_api_name,
9973 p_var_name => l_debug_info,
9974 p_var_value => l_adjustment_num
9975 );
9976 -- Getting the ship_header_ids that will be impacted for this matches in order to record the new adjustment_num
9977 -- The main problem in Bug#14226493 refers to the query below;
9978 -- the inner select ensure that the match amount in analysis is not a CORRECTION
9979 -- then, in the outer select, we don't need verify the type and we can use the table
9980 -- rather than the view
9981 /*--Bug#14044298 BEGIN
9982 FOR C_CUR_HEAD IN (select m1.ship_header_id
9983 from inl_corr_matches_v m1
9984 where m1.match_amount_id
9985 IN (select DISTINCT(ma.match_amount_id)
9986 from inl_match_amounts ma, -- Bug #9188553
9987 inl_corr_matches_v m2
9988 WHERE m2.match_amount_id = ma.match_amount_id
9989 AND m2.ship_header_id = p_SHIP_HEADER_ID
9990 AND m2.match_type_code <> 'CORRECTION'
9991 AND NVL(m2.adj_already_generated_flag, 'N') = 'N')
9992 AND m1.match_type_code <> 'CORRECTION') LOOP
9993 */
9994 FOR C_CUR_HEAD IN (select m1.ship_header_id
9995 from inl_matches m1
9996 where m1.match_amount_id
9997 IN (select DISTINCT(ma.match_amount_id)
9998 from inl_match_amounts ma, -- Bug #9188553
9999 inl_corr_matches_v m2
10000 WHERE m2.match_amount_id = ma.match_amount_id
10001 AND m2.ship_header_id = p_SHIP_HEADER_ID
10002 AND m2.match_type_code <> 'CORRECTION'
10003 AND NVL(m2.adj_already_generated_flag, 'N') = 'N')) LOOP
10004 --Bug#14044298 END
10005
10006 l_match_ship_header_id_ind:=l_match_ship_header_id_ind+1;
10007 match_ship_header_id_lst(l_match_ship_header_id_ind).ship_header_id:= C_CUR_HEAD.ship_header_id;
10008 match_ship_header_id_lst(l_match_ship_header_id_ind).adjustment_num:= l_adjustment_num;
10009
10010 l_debug_info := 'C_CUR_HEAD.ship_header_id';
10011 INL_LOGGING_PVT.Log_Variable (
10012 p_module_name => g_module_name,
10013 p_procedure_name => l_api_name,
10014 p_var_name => l_debug_info,
10015 p_var_value => C_CUR_HEAD.ship_header_id
10016 );
10017 END LOOP;
10018 END IF;
10019 ELSE -- IF l_match_amt_proc_same_adj_num = 'N' THEN
10020 -- fetch every time, because the group of matches from this match_amount
10021 -- could be different from the previous one
10022 l_debug_info := ' Getting the MAX adjustment_num for this group (match_amounts)';
10023 INL_LOGGING_PVT.Log_Statement (
10024 p_module_name => g_module_name,
10025 p_procedure_name => l_api_name,
10026 p_debug_info => l_debug_info
10027 ) ;
10028 l_debug_info := 'r_match(i).match_amount_id';
10029 INL_LOGGING_PVT.Log_Variable (
10030 p_module_name => g_module_name,
10031 p_procedure_name => l_api_name,
10032 p_var_name => l_debug_info,
10033 p_var_value => r_match(i).match_amount_id
10034 );
10035 SELECT NVL(MAX(sh.adjustment_num),0)
10036 INTO l_adjustment_num_tmp
10037 FROM inl_ship_headers sh
10038 WHERE sh.ship_header_id
10039 IN (SELECT m1.ship_header_id
10040 FROM inl_corr_matches_v m1
10041 WHERE m1.match_type_code <> 'CORRECTION'
10042 AND m1.match_amount_id = r_match(i).match_amount_id)
10043 ;
10044
10045 l_debug_info := 'l_adjustment_num_tmp';
10046 INL_LOGGING_PVT.Log_Variable (
10047 p_module_name => g_module_name,
10048 p_procedure_name => l_api_name,
10049 p_var_name => l_debug_info,
10050 p_var_value => l_adjustment_num_tmp
10051 );
10052 l_adj_group_date := r_match(i).adj_group_date;
10053 IF r_match(i).adj_group_date IS NULL THEN -- dependence
10054 BEGIN
10055 SELECT
10056 DISTINCT(m.adj_group_date)
10057 INTO
10058 l_adj_group_date
10059 FROM
10060 inl_corr_matches_v m
10061 WHERE m.match_amount_id = r_match(i).match_amount_id
10062 AND m.match_type_code <> 'CORRECTION'
10063 AND NVL (m.adj_already_generated_flag, 'N') = 'N';
10064 EXCEPTION
10065 WHEN OTHERS THEN
10066 l_adj_group_date := NULL;
10067 END;
10068 END IF;
10069 IF l_adjustment_num_tmp >= NVL(l_adjustment_num,0) THEN
10070 l_adjustment_num := l_adjustment_num_tmp + 1;
10071 ELSIF l_adj_group_date IS NULL
10072 OR l_adj_group_date_ant IS NULL
10073 OR r_match(i).adj_group_date <> l_adj_group_date_ant
10074 THEN
10075 l_adjustment_num := l_adjustment_num + 1;
10076 END IF;
10077 l_adj_group_date_ant := r_match(i).adj_group_date;
10078 l_debug_info := 'l_adjustment_num';
10079 INL_LOGGING_PVT.Log_Variable (
10080 p_module_name => g_module_name,
10081 p_procedure_name => l_api_name,
10082 p_var_name => l_debug_info,
10083 p_var_value => l_adjustment_num
10084 );
10085 l_debug_info := 'l_adj_group_date_ant';
10086 INL_LOGGING_PVT.Log_Variable (
10087 p_module_name => g_module_name,
10088 p_procedure_name => l_api_name,
10089 p_var_name => l_debug_info,
10090 p_var_value => l_adj_group_date_ant
10091 );
10092
10093 -- Getting the ship_header_ids that will be impact for this matches in order to record the new adjustment_num
10094 FOR C_CUR_HEAD IN (select m1.ship_header_id
10095 from inl_corr_matches_v m1
10096 where m1.match_amount_id
10097 IN (SELECT m2.match_amount_id
10098 FROM inl_corr_matches_v m2
10099 WHERE m2.match_type_code <> 'CORRECTION'
10100 AND m2.match_amount_id = r_match(i).match_amount_id)) LOOP
10101
10102 l_match_ship_header_id_ind:=l_match_ship_header_id_ind+1;
10103 match_ship_header_id_lst(l_match_ship_header_id_ind).ship_header_id:= C_CUR_HEAD.ship_header_id;
10104 match_ship_header_id_lst(l_match_ship_header_id_ind).adjustment_num:= l_adjustment_num;
10105 l_debug_info := 'match_ship_header_id_lst(l_match_ship_header_id_ind).ship_header_id';
10106 INL_LOGGING_PVT.Log_Variable (
10107 p_module_name => g_module_name,
10108 p_procedure_name => l_api_name,
10109 p_var_name => l_debug_info,
10110 p_var_value => match_ship_header_id_lst(l_match_ship_header_id_ind).ship_header_id
10111 );
10112
10113
10114 END LOOP;
10115 END IF;
10116 END IF;
10117 --
10118 --BUG#8198498
10119 --
10120
10121 INL_LOGGING_PVT.Log_Variable (
10122 p_module_name => g_module_name,
10123 p_procedure_name => l_api_name,
10124 p_var_name => 'r_match('||i||').match_amount_id',
10125 p_var_value => r_match(i).match_amount_id
10126 );
10127
10128 INL_LOGGING_PVT.Log_Variable (
10129 p_module_name => g_module_name,
10130 p_procedure_name => l_api_name,
10131 p_var_name => 'r_match('||i||').to_parent_table_id',
10132 p_var_value => TO_CHAR (r_match(i).to_parent_table_id)
10133 ) ;
10134
10135 --Bug#14044298 BEG
10136 IF l_func_currency_code IS NULL
10137 THEN
10138 INL_LOGGING_PVT.Log_Variable (
10139 p_module_name => g_module_name,
10140 p_procedure_name => l_api_name,
10141 p_var_name => 'r_match('||i||').organization_id',
10142 p_var_value => r_match(i).organization_id
10143 ) ;
10144 SELECT gsb.currency_code
10145 INTO l_func_currency_code
10146 FROM
10147 org_organization_definitions ood,
10148 gl_sets_of_books gsb
10149 WHERE
10150 gsb.set_of_books_id = ood.set_of_books_id
10151 AND ood.organization_id = r_match(i).organization_id;
10152 INL_LOGGING_PVT.Log_Variable (
10153 p_module_name => g_module_name,
10154 p_procedure_name => l_api_name,
10155 p_var_name => 'l_func_currency_code',
10156 p_var_value => l_func_currency_code
10157 ) ;
10158 END IF;
10159 --Bug#14044298 END
10160
10161 IF r_match(i).match_type_code = 'ITEM' THEN
10162 l_adjust_updt_flag := 'Y';
10163 Adjust_ShipLines (
10164 p_api_version => 1.0,
10165 p_init_msg_list => L_FND_FALSE,
10166 p_commit => L_FND_FALSE,
10167 p_match_id => r_match(i).match_id,
10168 p_adjustment_num => l_adjustment_num,
10169 p_func_currency_code=> l_func_currency_code, --Bug#14044298 r_match(i).func_currency_code, --BUG#8468830
10170 x_return_status => l_return_status,
10171 x_msg_count => l_msg_count,
10172 x_msg_data => l_msg_data
10173 ) ;
10174 ELSIF r_match(i).match_type_code = 'CHARGE' AND r_match(i).match_amount_id IS NULL THEN
10175 l_adjust_updt_flag := 'Y';
10176 Adjust_ChargeLines (
10177 p_api_version => 1.0,
10178 p_init_msg_list => L_FND_FALSE,
10179 p_commit => L_FND_FALSE,
10180 p_match_id => r_match(i).match_id,
10181 p_adjustment_num => l_adjustment_num,
10182 p_func_currency_code=> l_func_currency_code, --Bug#14044298 r_match(i).func_currency_code, --BUG#8468830
10183 x_return_status => l_return_status,
10184 x_msg_count => l_msg_count,
10185 x_msg_data => l_msg_data
10186 ) ;
10187 ELSIF r_match(i).match_type_code = 'CHARGE' AND r_match(i).match_amount_id IS NOT NULL THEN
10188 l_adjust_updt_flag := 'Y';
10189 Adjust_ChargeLines (
10190 p_api_version => 1.0,
10191 p_init_msg_list => L_FND_FALSE,
10192 p_commit => L_FND_FALSE,
10193 p_match_amount_id => r_match(i).match_amount_id,
10194 p_adjustment_num => l_adjustment_num,
10195 p_func_currency_code=> l_func_currency_code, --Bug#14044298 r_match(i).func_currency_code, --BUG#8468830
10196 x_return_status => l_return_status,
10197 x_msg_count => l_msg_count,
10198 x_msg_data => l_msg_data
10199 ) ;
10200 ELSIF r_match(i).match_type_code = 'TAX' AND r_match(i).match_amount_id IS NOT NULL THEN
10201 l_adjust_updt_flag := 'Y';
10202 Adjust_TaxLines (
10203 p_api_version => 1.0,
10204 p_init_msg_list => L_FND_FALSE,
10205 p_commit => L_FND_FALSE,
10206 p_match_amount_id => r_match(i).match_amount_id,
10207 p_adjustment_num => l_adjustment_num,
10208 p_func_currency_code=> l_func_currency_code, --Bug#14044298 r_match(i).func_currency_code, --BUG#8468830
10209 x_return_status => l_return_status,
10210 x_msg_count => l_msg_count,
10211 x_msg_data => l_msg_data
10212 ) ;
10213 ELSIF r_match(i).match_type_code = 'TAX' THEN
10214 l_adjust_updt_flag := 'Y';
10215 Adjust_TaxLines (
10216 p_api_version => 1.0,
10217 p_init_msg_list => L_FND_FALSE,
10218 p_commit => L_FND_FALSE,
10219 p_match_id => r_match(i).match_id,
10220 p_adjustment_num => l_adjustment_num,
10221 p_func_currency_code=> l_func_currency_code, --Bug#14044298 r_match(i).func_currency_code, --BUG#8468830
10222 x_return_status => l_return_status,
10223 x_msg_count => l_msg_count,
10224 x_msg_data => l_msg_data
10225 ) ;
10226 END IF;
10227
10228 -- If any errors happen abort API.
10229 IF l_return_status = L_FND_RET_STS_ERROR THEN
10230 RAISE L_FND_EXC_ERROR;
10231 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
10232 RAISE L_FND_EXC_UNEXPECTED_ERROR;
10233 END IF;
10234 -- Flag the matches that already generated ajustments
10235 UPDATE inl_matches m
10236 SET m.adj_already_generated_flag = 'Y' ,
10237 m.adjustment_num = l_adjustment_num, --lcm/opm integration
10238 m.last_updated_by = L_FND_USER_ID,
10239 m.last_update_date = SYSDATE
10240 WHERE m.match_id = NVL (r_match(i).correction_match_id, r_match(i).match_id)
10241 OR NVL(m.match_amount_id,-1) = NVL(r_match(i).match_amount_id,-2);
10242 END LOOP;
10243 l_debug_info := 'Update Shipment Header Adjustment Number';
10244 INL_LOGGING_PVT.Log_Statement (
10245 p_module_name => g_module_name,
10246 p_procedure_name => l_api_name,
10247 p_debug_info => l_debug_info
10248 ) ;
10249 -- Update Shipment Header Adjustment Number
10250 IF l_adjust_updt_flag = 'Y' THEN
10251 IF l_has_match_amt = 'Y' THEN
10252 IF NVL (match_ship_header_id_lst.LAST, 0) > 0 THEN
10253 FOR i IN NVL (match_ship_header_id_lst.FIRST, 0) ..NVL (match_ship_header_id_lst.LAST, 0)
10254 LOOP
10255 UPDATE inl_ship_headers
10256 SET adjustment_num = match_ship_header_id_lst(i).adjustment_num
10257 WHERE ship_header_id = match_ship_header_id_lst(i).ship_header_id;
10258
10259 INL_LOGGING_PVT.Log_Variable (
10260 p_module_name => g_module_name,
10261 p_procedure_name => l_api_name,
10262 p_var_name => 'match_ship_header_id_lst('||i||').adjustment_num',
10263 p_var_value => match_ship_header_id_lst(i).adjustment_num
10264 );
10265
10266 INL_LOGGING_PVT.Log_Variable (
10267 p_module_name => g_module_name,
10268 p_procedure_name => l_api_name,
10269 p_var_name => 'match_ship_header_id_lst('||i||').ship_header_id',
10270 p_var_value => match_ship_header_id_lst(i).ship_header_id
10271 );
10272
10273 END LOOP;
10274 END IF;
10275 ELSE
10276 UPDATE inl_ship_headers
10277 SET adjustment_num = l_adjustment_num
10278 WHERE ship_header_id = p_ship_header_id;
10279 END IF;
10280 END IF;
10281 END IF;
10282 END;
10283 -- End of API Body
10284 -- Standard check of p_commit.
10285 IF FND_API.To_Boolean (p_commit) THEN
10286 COMMIT WORK;
10287 END IF;
10288 -- Standard call to get message count and if count is 1, get message info.
10289 FND_MSG_PUB.Count_And_Get ( p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
10290 -- Standard End of Procedure/Function Logging
10291 INL_LOGGING_PVT.Log_EndProc ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
10292 EXCEPTION
10293 WHEN L_FND_EXC_ERROR THEN
10294 -- Standard Expected Error Logging
10295 INL_LOGGING_PVT.Log_ExpecError (
10296 p_module_name => g_module_name,
10297 p_procedure_name => l_api_name) ;
10298 ROLLBACK TO Adjust_Lines_PVT;
10299 x_return_status := L_FND_RET_STS_ERROR;
10300 FND_MSG_PUB.Count_And_Get (
10301 p_encoded => L_FND_FALSE,
10302 p_count => x_msg_count,
10303 p_data => x_msg_data) ;
10304 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
10305 -- Standard Unexpected Error Logging
10306 INL_LOGGING_PVT.Log_UnexpecError ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
10307 ROLLBACK TO Adjust_Lines_PVT;
10308 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
10309 FND_MSG_PUB.Count_And_Get ( p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
10310 WHEN OTHERS THEN
10311 -- Standard Unexpected Error Logging
10312 INL_LOGGING_PVT.Log_UnexpecError ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
10313 ROLLBACK TO Adjust_Lines_PVT;
10314 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
10315 IF FND_MSG_PUB.Check_Msg_Level (
10316 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10317 ) THEN
10318 FND_MSG_PUB.Add_Exc_Msg (
10319 p_pkg_name => g_pkg_name,
10320 p_procedure_name => l_api_name) ;
10321 END IF;
10322 FND_MSG_PUB.Count_And_Get ( p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
10323 END Adjust_Lines;
10324
10325 -- START Bug 13914863
10326 -- API name: Get_1aryQty
10327 -- Type : Public
10328 -- Function : Convert the Primary based on Transaction Qty and UOM
10329 -- Pre-reqs : None
10330 -- Parameters :
10331 -- IN : p_api_version IN NUMBER,
10332 -- p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
10333 -- p_commit IN VARCHAR2 := L_FND_FALSE,
10334 -- p_inventory_item_id IN NUMBER,
10335 -- p_organization_id IN NUMBER,
10336 -- p_uom_code IN VARCHAR2,
10337 -- p_qty IN NUMBER,
10338 -- x_1ary_uom_code OUT NOCOPY VARCHAR2,
10339 -- x_1ary_qty OUT NOCOPY NUMBER,
10340 -- x_return_status OUT NOCOPY VARCHAR2,
10341 -- x_msg_count OUT NOCOPY NUMBER,
10342 -- x_msg_data OUT NOCOPY VARCHAR2
10343 --
10344 -- Version : Current version 1.0
10345 --
10346 -- Notes :
10347 PROCEDURE Get_1aryQty(p_api_version IN NUMBER,
10348 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
10349 p_commit IN VARCHAR2 := L_FND_FALSE,
10350 p_inventory_item_id IN NUMBER,
10351 p_organization_id IN NUMBER,
10352 p_uom_code IN VARCHAR2,
10353 p_qty IN NUMBER,
10354 x_1ary_uom_code OUT NOCOPY VARCHAR2,
10355 x_1ary_qty OUT NOCOPY NUMBER,
10356 x_return_status OUT NOCOPY VARCHAR2,
10357 x_msg_count OUT NOCOPY NUMBER,
10358 x_msg_data OUT NOCOPY VARCHAR2)
10359 IS
10360 l_debug_info VARCHAR2(240);
10361 l_api_name CONSTANT VARCHAR2(30) := 'Get_1aryQty';
10362 l_api_version CONSTANT NUMBER := 1.0;
10363
10364 BEGIN
10365 INL_LOGGING_PVT.Log_BeginProc (p_module_name => g_module_name,
10366 p_procedure_name => l_api_name);
10367 -- Standard Start of API savepoint
10368 SAVEPOINT Get_1aryQty_PVT;
10369 -- Initialize message list if p_init_msg_list is set to TRUE.
10370 IF FND_API.to_Boolean (p_init_msg_list) THEN
10371 FND_MSG_PUB.initialize;
10372 END IF;
10373 -- Check for call compatibility.
10374 IF NOT FND_API.Compatible_API_Call (p_current_version_number => l_api_version,
10375 p_caller_version_number => p_api_version,
10376 p_api_name => l_api_name,
10377 p_pkg_name => g_pkg_name) THEN
10378 RAISE L_FND_EXC_UNEXPECTED_ERROR;
10379 END IF;
10380 -- Initialize return status to SUCCESS
10381 x_return_status:= L_FND_RET_STS_SUCCESS;
10382
10383 INL_LOGGING_PVT.Log_Variable (
10384 p_module_name => g_module_name,
10385 p_procedure_name => l_api_name,
10386 p_var_name => 'p_inventory_item_id',
10387 p_var_value => p_inventory_item_id) ;
10388 INL_LOGGING_PVT.Log_Variable (
10389 p_module_name => g_module_name,
10390 p_procedure_name => l_api_name,
10391 p_var_name => 'p_organization_id',
10392 p_var_value => p_organization_id) ;
10393 INL_LOGGING_PVT.Log_Variable (
10394 p_module_name => g_module_name,
10395 p_procedure_name => l_api_name,
10396 p_var_name => 'p_uom_code',
10397 p_var_value => p_uom_code) ;
10398 INL_LOGGING_PVT.Log_Variable (
10399 p_module_name => g_module_name,
10400 p_procedure_name => l_api_name,
10401 p_var_name => 'p_qty',
10402 p_var_value => p_qty) ;
10403
10404 l_debug_info := 'Get Primary UOM Code from MTL_SYSTEM_ITEMS_VL';
10405 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
10406 p_procedure_name => l_api_name,
10407 p_debug_info => l_debug_info);
10408 SELECT msi.primary_uom_code
10409 INTO x_1ary_uom_code
10410 FROM mtl_system_items_vl msi
10411 WHERE msi.inventory_item_id = p_inventory_item_id
10412 AND msi.organization_id = p_organization_id;
10413
10414 INL_LOGGING_PVT.Log_Variable (
10415 p_module_name => g_module_name,
10416 p_procedure_name => l_api_name,
10417 p_var_name => 'x_1ary_uom_code',
10418 p_var_value => x_1ary_uom_code) ;
10419
10420 IF x_1ary_uom_code IS NOT NULL THEN
10421 l_debug_info := 'Before executing the Primary UOM convertion';
10422 INL_LOGGING_PVT.Log_Statement (
10423 p_module_name => g_module_name,
10424 p_procedure_name => l_api_name,
10425 p_debug_info => l_debug_info);
10426
10427 INL_LOGGING_PVT.Log_APICallIn (
10428 p_module_name => g_module_name,
10429 p_procedure_name => l_api_name,
10430 p_call_api_name => 'INL_LANDEDCOST_PVT.Converted_Qty',
10431 p_in_param_name1 => 'p_organization_id',
10432 p_in_param_value1 => p_organization_id,
10433 p_in_param_name2 => 'p_inventory_item_id',
10434 p_in_param_value2 => p_inventory_item_id,
10435 p_in_param_name3 => 'p_qty',
10436 p_in_param_value3 => p_qty,
10437 p_in_param_name4 => 'p_uom_code',
10438 p_in_param_value4 => p_uom_code,
10439 p_in_param_name5 => 'x_1ary_uom_code',
10440 p_in_param_value5 => x_1ary_uom_code,
10441 p_in_param_name6 => NULL,
10442 p_in_param_value6 => NULL,
10443 p_in_param_name7 => NULL,
10444 p_in_param_value7 => NULL,
10445 p_in_param_name8 => NULL,
10446 p_in_param_value8 => NULL,
10447 p_in_param_name9 => NULL,
10448 p_in_param_value9 => NULL,
10449 p_in_param_name10 => NULL,
10450 p_in_param_value10 => NULL) ;
10451
10452 x_1ary_qty := INL_LANDEDCOST_PVT.Converted_Qty (
10453 p_organization_id => p_organization_id,
10454 p_inventory_item_id => p_inventory_item_id,
10455 p_qty => p_qty,
10456 p_from_uom_code => p_uom_code,
10457 P_to_uom_code => x_1ary_uom_code);
10458
10459 INL_LOGGING_PVT.Log_Variable (p_module_name => g_module_name,
10460 p_procedure_name => l_api_name,
10461 p_var_name => 'x_1ary_qty',
10462 p_var_value => x_1ary_qty) ;
10463 END IF;
10464
10465 -- Standard check of p_commit.
10466 IF FND_API.To_Boolean (p_commit) THEN
10467 COMMIT WORK;
10468 END IF;
10469 -- Standard call to get message count and if count is 1, get message info.
10470 FND_MSG_PUB.Count_And_Get(p_encoded => L_FND_FALSE,
10471 p_count => x_msg_count,
10472 p_data => x_msg_data) ;
10473 INL_LOGGING_PVT.Log_EndProc(p_module_name => g_module_name,
10474 p_procedure_name => l_api_name) ;
10475 EXCEPTION
10476 WHEN L_FND_EXC_ERROR THEN
10477 INL_LOGGING_PVT.Log_ExpecError (
10478 p_module_name => g_module_name,
10479 p_procedure_name => l_api_name) ;
10480 x_return_status := L_FND_RET_STS_ERROR;
10481 ROLLBACK TO Get_1aryQty_PVT;
10482 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
10483 INL_LOGGING_PVT.Log_UnexpecError (
10484 p_module_name => g_module_name,
10485 p_procedure_name => l_api_name) ;
10486 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
10487 ROLLBACK TO Get_1aryQty_PVT;
10488 WHEN OTHERS THEN
10489 INL_LOGGING_PVT.Log_UnexpecError (
10490 p_module_name => g_module_name,
10491 p_procedure_name => l_api_name) ;
10492 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
10493 ROLLBACK TO Get_1aryQty_PVT;
10494 IF FND_MSG_PUB.Check_Msg_Level (
10495 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10496 ) THEN
10497 FND_MSG_PUB.Add_Exc_Msg (
10498 p_pkg_name => g_pkg_name,
10499 p_procedure_name => l_api_name) ;
10500 END IF;
10501 END Get_1aryQty;
10502
10503 -- API name: Get_2aryQty
10504 -- Type : Public
10505 -- Function : Convert the Secondary based on Transaction Qty and UOM
10506 -- Pre-reqs : None
10507 -- Parameters :
10508 -- IN : p_api_version IN NUMBER,
10509 -- p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
10510 -- p_commit IN VARCHAR2 := L_FND_FALSE,
10511 -- p_inventory_item_id IN NUMBER,
10512 -- p_organization_id IN NUMBER,
10513 -- p_uom_code IN VARCHAR2,
10514 -- p_qty IN NUMBER,
10515 -- x_1ary_uom_code OUT NOCOPY VARCHAR2,
10516 -- x_1ary_qty OUT NOCOPY NUMBER,
10517 -- x_return_status OUT NOCOPY VARCHAR2,
10518 -- x_msg_count OUT NOCOPY NUMBER,
10519 -- x_msg_data OUT NOCOPY VARCHAR2
10520 --
10521 -- Version : Current version 1.0
10522 --
10523 -- Notes :
10524 PROCEDURE Get_2aryQty(p_api_version IN NUMBER,
10525 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
10526 p_commit IN VARCHAR2 := L_FND_FALSE,
10527 p_inventory_item_id IN NUMBER,
10528 p_organization_id IN NUMBER,
10529 p_uom_code IN VARCHAR2,
10530 p_qty IN NUMBER,
10531 x_2ary_uom_code OUT NOCOPY VARCHAR2,
10532 x_2ary_qty OUT NOCOPY NUMBER,
10533 x_return_status OUT NOCOPY VARCHAR2,
10534 x_msg_count OUT NOCOPY NUMBER,
10535 x_msg_data OUT NOCOPY VARCHAR2)
10536 IS
10537 l_debug_info VARCHAR2(240);
10538 l_api_name CONSTANT VARCHAR2(30) := 'Get_2aryQty';
10539 l_api_version CONSTANT NUMBER := 1.0;
10540
10541 BEGIN
10542 INL_LOGGING_PVT.Log_BeginProc (p_module_name => g_module_name,
10543 p_procedure_name => l_api_name);
10544 -- Standard Start of API savepoint
10545 SAVEPOINT Get_2aryQty_PVT;
10546 -- Initialize message list if p_init_msg_list is set to TRUE.
10547 IF FND_API.to_Boolean (p_init_msg_list) THEN
10548 FND_MSG_PUB.initialize;
10549 END IF;
10550 -- Check for call compatibility.
10551 IF NOT FND_API.Compatible_API_Call (p_current_version_number => l_api_version,
10552 p_caller_version_number => p_api_version,
10553 p_api_name => l_api_name,
10554 p_pkg_name => g_pkg_name) THEN
10555 RAISE L_FND_EXC_UNEXPECTED_ERROR;
10556 END IF;
10557 -- Initialize return status to SUCCESS
10558 x_return_status:= L_FND_RET_STS_SUCCESS;
10559
10560 INL_LOGGING_PVT.Log_Variable (
10561 p_module_name => g_module_name,
10562 p_procedure_name => l_api_name,
10563 p_var_name => 'p_inventory_item_id',
10564 p_var_value => p_inventory_item_id) ;
10565 INL_LOGGING_PVT.Log_Variable (
10566 p_module_name => g_module_name,
10567 p_procedure_name => l_api_name,
10568 p_var_name => 'p_organization_id',
10569 p_var_value => p_organization_id) ;
10570 INL_LOGGING_PVT.Log_Variable (
10571 p_module_name => g_module_name,
10572 p_procedure_name => l_api_name,
10573 p_var_name => 'p_uom_code',
10574 p_var_value => p_uom_code) ;
10575 INL_LOGGING_PVT.Log_Variable (
10576 p_module_name => g_module_name,
10577 p_procedure_name => l_api_name,
10578 p_var_name => 'p_qty',
10579 p_var_value => p_qty) ;
10580
10581 l_debug_info := 'Get Secondary UOM Code from MTL_SYSTEM_ITEMS_VL';
10582 INL_LOGGING_PVT.Log_Statement (
10583 p_module_name => g_module_name,
10584 p_procedure_name => l_api_name,
10585 p_debug_info => l_debug_info
10586 ) ;
10587
10588 SELECT msi.secondary_uom_code
10589 INTO x_2ary_uom_code
10590 FROM mtl_system_items_vl msi
10591 WHERE msi.inventory_item_id = p_inventory_item_id
10592 AND msi.organization_id = p_organization_id;
10593
10594 INL_LOGGING_PVT.Log_Variable (
10595 p_module_name => g_module_name,
10596 p_procedure_name => l_api_name,
10597 p_var_name => 'x_2ary_uom_code',
10598 p_var_value => x_2ary_uom_code) ;
10599
10600 IF x_2ary_uom_code IS NOT NULL THEN
10601 l_debug_info := 'Before executing the Secondary UOM convertion';
10602 INL_LOGGING_PVT.Log_Statement (
10603 p_module_name => g_module_name,
10604 p_procedure_name => l_api_name,
10605 p_debug_info => l_debug_info
10606 ) ;
10607 INL_LOGGING_PVT.Log_APICallIn (
10608 p_module_name => g_module_name,
10609 p_procedure_name => l_api_name,
10610 p_call_api_name => 'INL_LANDEDCOST_PVT.Converted_Qty',
10611 p_in_param_name1 => 'p_organization_id',
10612 p_in_param_value1 => p_organization_id,
10613 p_in_param_name2 => 'p_inventory_item_id',
10614 p_in_param_value2 => p_inventory_item_id,
10615 p_in_param_name3 => 'p_qty',
10616 p_in_param_value3 => p_qty,
10617 p_in_param_name4 => 'p_uom_code',
10618 p_in_param_value4 => p_uom_code,
10619 p_in_param_name5 => 'x_2ary_uom_code',
10620 p_in_param_value5 => x_2ary_uom_code,
10621 p_in_param_name6 => NULL,
10622 p_in_param_value6 => NULL,
10623 p_in_param_name7 => NULL,
10624 p_in_param_value7 => NULL,
10625 p_in_param_name8 => NULL,
10626 p_in_param_value8 => NULL,
10627 p_in_param_name9 => NULL,
10628 p_in_param_value9 => NULL,
10629 p_in_param_name10 => NULL,
10630 p_in_param_value10 => NULL) ;
10631 x_2ary_qty := INL_LANDEDCOST_PVT.Converted_Qty (
10632 p_organization_id => p_organization_id,
10633 p_inventory_item_id => p_inventory_item_id,
10634 p_qty => p_qty,
10635 p_from_uom_code => p_uom_code,
10636 P_to_uom_code => x_2ary_uom_code) ;
10637
10638 INL_LOGGING_PVT.Log_Variable (
10639 p_module_name => g_module_name,
10640 p_procedure_name => l_api_name,
10641 p_var_name => 'x_2ary_qty',
10642 p_var_value => x_2ary_qty) ;
10643 END IF;
10644
10645 -- Standard check of p_commit.
10646 IF FND_API.To_Boolean (p_commit) THEN
10647 COMMIT WORK;
10648 END IF;
10649 -- Standard call to get message count and if count is 1, get message info.
10650 FND_MSG_PUB.Count_And_Get(p_encoded => L_FND_FALSE,
10651 p_count => x_msg_count,
10652 p_data => x_msg_data) ;
10653 INL_LOGGING_PVT.Log_EndProc(p_module_name => g_module_name,
10654 p_procedure_name => l_api_name) ;
10655 EXCEPTION
10656 WHEN L_FND_EXC_ERROR THEN
10657 INL_LOGGING_PVT.Log_ExpecError (
10658 p_module_name => g_module_name,
10659 p_procedure_name => l_api_name) ;
10660 x_return_status := L_FND_RET_STS_ERROR;
10661 ROLLBACK TO Get_2aryQty_PVT;
10662 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
10663 INL_LOGGING_PVT.Log_UnexpecError (
10664 p_module_name => g_module_name,
10665 p_procedure_name => l_api_name) ;
10666 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
10667 ROLLBACK TO Get_2aryQty_PVT;
10668 WHEN OTHERS THEN
10669 INL_LOGGING_PVT.Log_UnexpecError (
10670 p_module_name => g_module_name,
10671 p_procedure_name => l_api_name) ;
10672 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
10673 ROLLBACK TO Get_2aryQty_PVT;
10674 IF FND_MSG_PUB.Check_Msg_Level (
10675 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10676 ) THEN
10677 FND_MSG_PUB.Add_Exc_Msg (
10678 p_pkg_name => g_pkg_name,
10679 p_procedure_name => l_api_name) ;
10680 END IF;
10681 END Get_2aryQty;
10682 -- END Bug 13914863
10683
10684
10685 -- API name : Get_1ary2aryQty
10686 -- Type : Private
10687 -- Function : Get uom_class, uom_code, qty for 1ary and 2ary UOM
10688 --
10689 -- Pre-reqs : None
10690 -- Parameters :
10691 -- IN : p_api_version IN NUMBER Required
10692 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
10693 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
10694 -- p_inventory_item_id IN NUMBER
10695 -- p_organization_id IN NUMBER
10696 -- p_uom_code IN VARCHAR2
10697 -- p_qty IN NUMBER
10698 -- OUT :
10699 -- x_1ary_uom_code OUT NOCOPY VARCHAR2
10700 -- x_1ary_qty OUT NOCOPY NUMBER,
10701 -- x_2ary_uom_code OUT NOCOPY VARCHAR2
10702 -- x_2ary_qty OUT NOCOPY NUMBER,
10703 -- x_return_status OUT NOCOPY VARCHAR2
10704 -- x_msg_count OUT NOCOPY NUMBER
10705 -- x_msg_data OUT NOCOPY VARCHAR2
10706 --
10707 --
10708 -- Version : Current version 1.0
10709 --
10710 -- Notes :
10711 PROCEDURE Get_1ary2aryQty (
10712 p_api_version IN NUMBER,
10713 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
10714 p_commit IN VARCHAR2 := L_FND_FALSE,
10715 p_inventory_item_id IN NUMBER,
10716 p_organization_id IN NUMBER,
10717 p_uom_code IN VARCHAR2,
10718 p_qty IN NUMBER,
10719 x_1ary_uom_code OUT NOCOPY VARCHAR2,
10720 x_1ary_qty OUT NOCOPY NUMBER,
10721 x_2ary_uom_code OUT NOCOPY VARCHAR2,
10722 x_2ary_qty OUT NOCOPY NUMBER,
10723 x_return_status OUT NOCOPY VARCHAR2,
10724 x_msg_count OUT NOCOPY NUMBER,
10725 x_msg_data OUT NOCOPY VARCHAR2
10726 ) IS
10727 l_debug_info VARCHAR2 (240) ;
10728 l_api_name CONSTANT VARCHAR2 (30) := 'Get_1ary2aryQty';
10729 l_api_version CONSTANT NUMBER := 1.0;
10730 l_msg_data VARCHAR2 (200);
10731 l_msg_count NUMBER;
10732 l_return_status VARCHAR2 (1);
10733 l_1ary_uom_code VARCHAR2(3);
10734 l_1ary_qty NUMBER;
10735 l_2ary_uom_code VARCHAR2(3);
10736 l_2ary_qty NUMBER;
10737 BEGIN
10738 INL_LOGGING_PVT.Log_BeginProc (
10739 p_module_name => g_module_name,
10740 p_procedure_name => l_api_name) ;
10741 -- Standard Start of API savepoint
10742 SAVEPOINT Get_1ary2aryQty_PVT;
10743 -- Initialize message list if p_init_msg_list is set to TRUE.
10744 IF FND_API.to_Boolean (p_init_msg_list) THEN
10745 FND_MSG_PUB.initialize;
10746 END IF;
10747 -- Check for call compatibility.
10748 IF NOT FND_API.Compatible_API_Call (
10749 p_current_version_number => l_api_version,
10750 p_caller_version_number => p_api_version,
10751 p_api_name => l_api_name,
10752 p_pkg_name => g_pkg_name
10753 ) THEN
10754 RAISE L_FND_EXC_UNEXPECTED_ERROR;
10755 END IF;
10756
10757 -- Initialize return status to SUCCESS
10758 x_return_status:= L_FND_RET_STS_SUCCESS;
10759
10760 -- START Bug 13914863
10761 l_debug_info := 'Call to Get_1aryQty API';
10762 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
10763 p_procedure_name => l_api_name,
10764 p_debug_info => l_debug_info);
10765 Get_1aryQty(p_api_version => 1.0,
10766 p_init_msg_list => L_FND_FALSE,
10767 p_commit => L_FND_FALSE,
10768 p_inventory_item_id => p_inventory_item_id,
10769 p_organization_id => p_organization_id,
10770 p_uom_code => p_uom_code,
10771 p_qty => p_qty,
10772 x_1ary_uom_code => l_1ary_uom_code,
10773 x_1ary_qty => l_1ary_qty,
10774 x_return_status => l_return_status,
10775 x_msg_count => l_msg_count,
10776 x_msg_data => l_msg_data);
10777
10778 IF l_return_status = L_FND_RET_STS_ERROR THEN
10779 RAISE L_FND_EXC_ERROR;
10780 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
10781 RAISE L_FND_EXC_UNEXPECTED_ERROR;
10782 END IF;
10783
10784 x_1ary_uom_code := l_1ary_uom_code;
10785 x_1ary_qty := l_1ary_qty;
10786
10787 INL_LOGGING_PVT.Log_Variable (
10788 p_module_name => g_module_name,
10789 p_procedure_name => l_api_name,
10790 p_var_name => 'x_1ary_uom_code',
10791 p_var_value => x_1ary_uom_code) ;
10792 INL_LOGGING_PVT.Log_Variable (
10793 p_module_name => g_module_name,
10794 p_procedure_name => l_api_name,
10795 p_var_name => 'x_1ary_qty',
10796 p_var_value => x_1ary_qty) ;
10797
10798 l_debug_info := 'Call to Get_2aryQty API';
10799 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
10800 p_procedure_name => l_api_name,
10801 p_debug_info => l_debug_info);
10802
10803 Get_2aryQty(p_api_version => 1.0,
10804 p_init_msg_list => L_FND_FALSE,
10805 p_commit => L_FND_FALSE,
10806 p_inventory_item_id => p_inventory_item_id,
10807 p_organization_id => p_organization_id,
10808 p_uom_code => p_uom_code,
10809 p_qty => p_qty,
10810 x_2ary_uom_code => l_2ary_uom_code,
10811 x_2ary_qty => l_2ary_qty,
10812 x_return_status => l_return_status,
10813 x_msg_count => l_msg_count,
10814 x_msg_data => l_msg_data);
10815
10816 IF l_return_status = L_FND_RET_STS_ERROR THEN
10817 RAISE L_FND_EXC_ERROR;
10818 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
10819 RAISE L_FND_EXC_UNEXPECTED_ERROR;
10820 END IF;
10821
10822 x_2ary_uom_code := l_2ary_uom_code;
10823 x_2ary_qty := l_2ary_qty;
10824
10825 INL_LOGGING_PVT.Log_Variable (
10826 p_module_name => g_module_name,
10827 p_procedure_name => l_api_name,
10828 p_var_name => 'x_2ary_uom_code',
10829 p_var_value => x_2ary_uom_code) ;
10830 INL_LOGGING_PVT.Log_Variable (
10831 p_module_name => g_module_name,
10832 p_procedure_name => l_api_name,
10833 p_var_name => 'x_2ary_qty',
10834 p_var_value => x_2ary_qty) ;
10835
10836 -- END Bug 13914863
10837
10838 /*
10839 --
10840 -- Initialize return status to SUCCESS
10841 --
10842 x_return_status:= L_FND_RET_STS_SUCCESS;
10843 l_debug_info := 'Getting 1ary and 2ary UOM Code from MTL tables';
10844 INL_LOGGING_PVT.Log_Statement (
10845 p_module_name => g_module_name,
10846 p_procedure_name => l_api_name,
10847 p_debug_info => l_debug_info
10848 ) ;
10849 SELECT msi.primary_uom_code,
10850 msi.secondary_uom_code
10851 INTO x_1ary_uom_code,
10852 x_2ary_uom_code
10853 FROM mtl_system_items_vl msi
10854 WHERE msi.inventory_item_id = p_inventory_item_id
10855 AND msi.organization_id = p_organization_id;
10856 l_debug_info := 'Have gotten from mtl_system_items_vl:';
10857 INL_LOGGING_PVT.Log_Statement (
10858 p_module_name => g_module_name,
10859 p_procedure_name => l_api_name,
10860 p_debug_info => l_debug_info
10861 ) ;
10862
10863 INL_LOGGING_PVT.Log_Variable (
10864 p_module_name => g_module_name,
10865 p_procedure_name => l_api_name,
10866 p_var_name => 'x_1ary_uom_code',
10867 p_var_value => x_1ary_uom_code) ;
10868
10869 INL_LOGGING_PVT.Log_Variable (
10870 p_module_name => g_module_name,
10871 p_procedure_name => l_api_name,
10872 p_var_name => 'x_2ary_uom_code',
10873 p_var_value => x_2ary_uom_code) ;
10874 IF x_1ary_uom_code IS NOT NULL THEN
10875 l_debug_info := 'Doing the 1ary UOM convertion';
10876 INL_LOGGING_PVT.Log_Statement (
10877 p_module_name => g_module_name,
10878 p_procedure_name => l_api_name,
10879 p_debug_info => l_debug_info
10880 ) ;
10881 INL_LOGGING_PVT.Log_APICallIn (
10882 p_module_name => g_module_name,
10883 p_procedure_name => l_api_name,
10884 p_call_api_name => 'INL_LANDEDCOST_PVT.Converted_Qty',
10885 p_in_param_name1 => 'p_organization_id',
10886 p_in_param_value1 => p_organization_id,
10887 p_in_param_name2 => 'p_inventory_item_id',
10888 p_in_param_value2 => p_inventory_item_id,
10889 p_in_param_name3 => 'p_qty',
10890 p_in_param_value3 => p_qty,
10891 p_in_param_name4 => 'p_uom_code',
10892 p_in_param_value4 => p_uom_code,
10893 p_in_param_name5 => 'x_1ary_uom_code',
10894 p_in_param_value5 => x_1ary_uom_code,
10895 p_in_param_name6 => NULL,
10896 p_in_param_value6 => NULL,
10897 p_in_param_name7 => NULL,
10898 p_in_param_value7 => NULL,
10899 p_in_param_name8 => NULL,
10900 p_in_param_value8 => NULL,
10901 p_in_param_name9 => NULL,
10902 p_in_param_value9 => NULL,
10903 p_in_param_name10 => NULL,
10904 p_in_param_value10 => NULL) ;
10905 x_1ary_qty := INL_LANDEDCOST_PVT.Converted_Qty (
10906 p_organization_id => p_organization_id,
10907 p_inventory_item_id => p_inventory_item_id,
10908 p_qty => p_qty,
10909 p_from_uom_code => p_uom_code,
10910 P_to_uom_code => x_1ary_uom_code
10911 ) ;
10912 l_debug_info := 'x_1ary_qty';
10913 INL_LOGGING_PVT.Log_Variable (
10914 p_module_name => g_module_name,
10915 p_procedure_name => l_api_name,
10916 p_var_name => 'x_1ary_qty',
10917 p_var_value => x_1ary_qty) ;
10918 END IF;
10919 --==========
10920 IF x_2ary_uom_code IS NOT NULL THEN
10921 l_debug_info := 'Doing the 2ary UOM convertion';
10922 INL_LOGGING_PVT.Log_Statement (
10923 p_module_name => g_module_name,
10924 p_procedure_name => l_api_name,
10925 p_debug_info => l_debug_info
10926 ) ;
10927 INL_LOGGING_PVT.Log_APICallIn (
10928 p_module_name => g_module_name,
10929 p_procedure_name => l_api_name,
10930 p_call_api_name => 'INL_LANDEDCOST_PVT.Converted_Qty',
10931 p_in_param_name1 => 'p_organization_id',
10932 p_in_param_value1 => p_organization_id,
10933 p_in_param_name2 => 'p_inventory_item_id',
10934 p_in_param_value2 => p_inventory_item_id,
10935 p_in_param_name3 => 'p_qty',
10936 p_in_param_value3 => p_qty,
10937 p_in_param_name4 => 'p_uom_code',
10938 p_in_param_value4 => p_uom_code,
10939 p_in_param_name5 => 'x_2ary_uom_code',
10940 p_in_param_value5 => x_2ary_uom_code,
10941 p_in_param_name6 => NULL,
10942 p_in_param_value6 => NULL,
10943 p_in_param_name7 => NULL,
10944 p_in_param_value7 => NULL,
10945 p_in_param_name8 => NULL,
10946 p_in_param_value8 => NULL,
10947 p_in_param_name9 => NULL,
10948 p_in_param_value9 => NULL,
10949 p_in_param_name10 => NULL,
10950 p_in_param_value10 => NULL) ;
10951 x_2ary_qty := INL_LANDEDCOST_PVT.Converted_Qty (
10952 p_organization_id => p_organization_id,
10953 p_inventory_item_id => p_inventory_item_id,
10954 p_qty => p_qty,
10955 p_from_uom_code => p_uom_code,
10956 P_to_uom_code => x_2ary_uom_code) ;
10957
10958 INL_LOGGING_PVT.Log_Variable (
10959 p_module_name => g_module_name,
10960 p_procedure_name => l_api_name,
10961 p_var_name => 'x_2ary_qty',
10962 p_var_value => x_2ary_qty) ;
10963 END IF;
10964 --==========
10965 */
10966 -- Standard check of p_commit.
10967 IF FND_API.To_Boolean (p_commit) THEN
10968 COMMIT WORK;
10969 END IF;
10970 -- Standard call to get message count and if count is 1, get message info.
10971 FND_MSG_PUB.Count_And_Get (
10972 p_encoded => L_FND_FALSE,
10973 p_count => x_msg_count,
10974 p_data => x_msg_data) ;
10975 INL_LOGGING_PVT.Log_EndProc (
10976 p_module_name => g_module_name,
10977 p_procedure_name => l_api_name) ;
10978 EXCEPTION
10979 WHEN L_FND_EXC_ERROR THEN
10980 INL_LOGGING_PVT.Log_ExpecError (
10981 p_module_name => g_module_name,
10982 p_procedure_name => l_api_name) ;
10983 x_return_status := L_FND_RET_STS_ERROR;
10984 ROLLBACK TO Get_1ary2aryQty_PVT;
10985 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
10986 INL_LOGGING_PVT.Log_UnexpecError (
10987 p_module_name => g_module_name,
10988 p_procedure_name => l_api_name) ;
10989 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
10990 ROLLBACK TO Get_1ary2aryQty_PVT;
10991 WHEN OTHERS THEN
10992 INL_LOGGING_PVT.Log_UnexpecError (
10993 p_module_name => g_module_name,
10994 p_procedure_name => l_api_name) ;
10995 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
10996 ROLLBACK TO Get_1ary2aryQty_PVT;
10997 IF FND_MSG_PUB.Check_Msg_Level (
10998 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
10999 ) THEN
11000 FND_MSG_PUB.Add_Exc_Msg (
11001 p_pkg_name => g_pkg_name,
11002 p_procedure_name => l_api_name) ;
11003 END IF;
11004 END Get_1ary2aryQty;
11005 -- Utility name : Get_SrcAvailableQty
11006 -- Type : Public
11007 -- Function : Returns the available quantity for a given PLL
11008 -- Pre-reqs : None
11009 -- Parameters :
11010 -- IN : p_ship_line_src_type_code IN VARCHAR2
11011 -- p_parent_id IN NUMBER
11012 --
11013 -- Version : Current version 1.0
11014 --
11015 -- Notes :
11016 FUNCTION Get_SrcAvailableQty(
11017 p_ship_line_src_type_code IN VARCHAR2,
11018 p_parent_id IN NUMBER
11019 ) RETURN NUMBER IS
11020 l_program_name CONSTANT VARCHAR2(30) := 'Get_SrcAvailableQty';
11021 l_debug_info VARCHAR2(200);
11022 l_return_status VARCHAR2(1);
11023 l_msg_count NUMBER;
11024 l_msg_data VARCHAR2(2000);
11025 l_available_qty NUMBER;
11026 l_tolerable_quantity NUMBER;
11027 l_unit_of_measure VARCHAR2(30);
11028 BEGIN
11029 -- Standard Beginning of Procedure/Function Logging
11030 INL_LOGGING_PVT.Log_BeginProc (
11031 p_module_name => g_module_name,
11032 p_procedure_name => l_program_name) ;
11033 -- Logging variables
11034 INL_LOGGING_PVT.Log_Variable (
11035 p_module_name => g_module_name,
11036 p_procedure_name => l_program_name,
11037 p_var_name => 'p_ship_line_src_type_code',
11038 p_var_value => p_ship_line_src_type_code
11039 ) ;
11040 INL_LOGGING_PVT.Log_Variable (
11041 p_module_name => g_module_name,
11042 p_procedure_name => l_program_name,
11043 p_var_name => 'p_parent_id',
11044 p_var_value => p_parent_id) ;
11045 l_debug_info := 'Call INL_SHIPMENT_PVT.Get_AvailableQty';
11046 INL_LOGGING_PVT.Log_Statement (
11047 p_module_name => g_module_name,
11048 p_procedure_name => l_program_name,
11049 p_debug_info => l_debug_info) ;
11050 INL_SHIPMENT_PVT.Get_AvailableQty(
11051 p_api_version => 1.0,
11052 p_init_msg_list => L_FND_FALSE,
11053 p_commit => L_FND_FALSE,
11054 p_ship_line_src_code => p_ship_line_src_type_code,
11055 p_parent_id => p_parent_id,
11056 p_available_quantity => l_available_qty,
11057 p_tolerable_quantity => l_tolerable_quantity,
11058 p_unit_of_measure => l_unit_of_measure,
11059 x_return_status => l_return_status,
11060 x_msg_count => l_msg_count,
11061 x_msg_data => l_msg_data);
11062 INL_LOGGING_PVT.Log_Variable (
11063 p_module_name => g_module_name,
11064 p_procedure_name => l_program_name,
11065 p_var_name => 'l_available_qty',
11066 p_var_value => l_available_qty) ;
11067 INL_LOGGING_PVT.Log_Variable (
11068 p_module_name => g_module_name,
11069 p_procedure_name => l_program_name,
11070 p_var_name => 'l_tolerable_quantity',
11071 p_var_value => l_tolerable_quantity) ;
11072 INL_LOGGING_PVT.Log_Variable (
11073 p_module_name => g_module_name,
11074 p_procedure_name => l_program_name,
11075 p_var_name => 'l_unit_of_measure',
11076 p_var_value => l_unit_of_measure) ;
11077 -- Standard End of Procedure/Function Logging
11078 INL_LOGGING_PVT.Log_EndProc (
11079 p_module_name => g_module_name,
11080 p_procedure_name => l_program_name) ;
11081 RETURN NVL(l_available_qty,0);
11082 END Get_SrcAvailableQty;
11083
11084 -- SCM-051
11085 -- API name : Adjust_ELCLines
11086 -- Type : Private
11087 -- Function : Manages the Creation of Adjustment Lines for Shipment Lines and Charge Lines
11088 -- Pre-reqs : None
11089 -- Parameters :
11090 -- IN : p_api_version IN NUMBER Required
11091 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
11092 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
11093 -- p_ship_header_id IN NUMBER,
11094 -- OUT x_return_status OUT NOCOPY VARCHAR2
11095 -- x_msg_count OUT NOCOPY NUMBER
11096 -- x_msg_data OUT NOCOPY VARCHAR2
11097 --
11098 -- Version : Current version 1.0
11099 --
11100 -- Notes :
11101 PROCEDURE Adjust_ELCLines(p_api_version IN NUMBER,
11102 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
11103 p_commit IN VARCHAR2 := L_FND_FALSE,
11104 p_ship_header_id IN NUMBER,
11105 x_return_status OUT NOCOPY VARCHAR2,
11106 x_msg_count OUT NOCOPY NUMBER,
11107 x_msg_data OUT NOCOPY VARCHAR2
11108 ) IS
11109 l_program_name CONSTANT VARCHAR2(30) := 'Adjust_ELCLines';
11110 l_api_version CONSTANT NUMBER := 1.0;
11111 l_return_status VARCHAR2(1) ;
11112 l_msg_count NUMBER;
11113 l_msg_data VARCHAR2(2000);
11114 l_debug_info VARCHAR2(200);
11115
11116 l_count_assoc_changed NUMBER;
11117 l_count_charge_changed NUMBER;
11118 l_exist_associations NUMBER;
11119 l_adjustment_num NUMBER;
11120 l_charge_line_id NUMBER;
11121 l_association_id NUMBER;
11122 l_charge_line_num NUMBER;
11123 l_primary_unit_price NUMBER;
11124 l_secondary_unit_price NUMBER;
11125
11126 -- Get ELC Adjustments for Shipment Lines
11127 CURSOR c_elc_adj_shiplines IS
11128 SELECT sl.ship_line_id, sl.new_txn_unit_price,
11129 sl.primary_qty, sl.secondary_qty, sl.txn_qty,
11130 sl.primary_uom_code, sl.secondary_uom_code
11131 FROM inl_ship_headers_all sh,
11132 inl_adj_ship_lines_v sl
11133 WHERE(sl.new_txn_unit_price IS NOT NULL
11134 OR sl.new_currency_conversion_type IS NOT NULL
11135 OR sl.new_currency_conversion_date IS NOT NULL
11136 OR sl.new_currency_conversion_rate IS NOT NULL)
11137 AND sl.ship_header_id = sh.ship_header_id
11138 AND sh.pending_update_flag = 'Y'
11139 AND sh.ship_header_id = p_ship_header_id;
11140
11141 TYPE elc_adj_shiplines IS TABLE OF c_elc_adj_shiplines%ROWTYPE;
11142 l_elc_adj_shiplines elc_adj_shiplines;
11143
11144 -- Get ELC Adjustments for Charge Lines
11145 CURSOR c_elc_adj_chlines IS
11146 SELECT DISTINCT charge_line_id
11147 FROM inl_ship_headers_all sh,
11148 inl_adj_charge_lines_v cl,
11149 inl_adj_associations_v a
11150 WHERE sh.ship_header_id = a.ship_header_id
11151 AND a.from_parent_table_id = cl.charge_line_id
11152 AND sh.pending_update_flag = 'Y'
11153 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
11154 AND a.ship_header_id = p_ship_header_id
11155 AND (cl.adjustment_type_flag IS NULL
11156 OR cl.adjustment_type_flag <> 'Z')
11157 ORDER BY charge_line_id;
11158
11159 TYPE elc_adj_chlines IS TABLE OF c_elc_adj_chlines%ROWTYPE;
11160 l_elc_adj_chlines elc_adj_chlines;
11161
11162 -- ORA-00054 is the resource busy exception, which is raised when trying
11163 -- to lock a row that is already locked by another session.
11164 RESOURCE_BUSY EXCEPTION;
11165 PRAGMA EXCEPTION_INIT(RESOURCE_BUSY, -00054);
11166
11167 BEGIN
11168
11169 -- Standard Beginning of Procedure/Function Logging
11170 INL_LOGGING_PVT.Log_BeginProc(p_module_name => g_module_name,
11171 p_procedure_name => l_program_name) ;
11172 -- Standard Start of API savepoint
11173 SAVEPOINT Adjust_ELCLines_PVT;
11174 -- Initialize message list if p_init_msg_list is set to TRUE.
11175 IF FND_API.to_Boolean (p_init_msg_list) THEN
11176 FND_MSG_PUB.initialize;
11177 END IF;
11178 -- Check for call compatibility.
11179 IF NOT FND_API.Compatible_API_Call(p_current_version_number => l_api_version,
11180 p_caller_version_number => p_api_version,
11181 p_api_name => l_program_name,
11182 p_pkg_name => g_pkg_name) THEN
11183 RAISE L_FND_EXC_UNEXPECTED_ERROR;
11184 END IF;
11185 -- Initialize API return status to success
11186 x_return_status := L_FND_RET_STS_SUCCESS;
11187
11188 INL_LOGGING_PVT.Log_Variable(p_module_name => g_module_name,
11189 p_procedure_name => l_program_name,
11190 p_var_name => 'p_ship_header_id',
11191 p_var_value => p_ship_header_id);
11192
11193 l_debug_info := 'Get next adjustment number';
11194 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
11195 p_procedure_name => l_program_name,
11196 p_debug_info => l_debug_info);
11197
11198 SELECT (ABS(adjustment_num) +1) *-1
11199 INTO l_adjustment_num
11200 FROM inl_ship_headers_all sh
11201 WHERE sh.ship_header_id = p_ship_header_id FOR UPDATE NOWAIT;
11202
11203 INL_LOGGING_PVT.Log_Variable(p_module_name => g_module_name,
11204 p_procedure_name => l_program_name,
11205 p_var_name => 'l_adjustment_num',
11206 p_var_value => l_adjustment_num);
11207
11208 -- Fetch ELC Adjusted Shipment Lines
11209 OPEN c_elc_adj_shiplines;
11210 FETCH c_elc_adj_shiplines BULK COLLECT INTO l_elc_adj_shiplines;
11211 CLOSE c_elc_adj_shiplines;
11212
11213 -- Exist ship lines to be ELC adjusted
11214 IF NVL (l_elc_adj_shiplines.LAST, 0) > 0 THEN
11215 FOR i IN NVL(l_elc_adj_shiplines.FIRST, 0)..NVL(l_elc_adj_shiplines.LAST, 0)
11216 LOOP
11217 l_primary_unit_price := NULL;
11218 l_secondary_unit_price := NULL;
11219 IF l_elc_adj_shiplines(i).new_txn_unit_price IS NOT NULL THEN -- Price changed
11220 IF l_elc_adj_shiplines(i).primary_uom_code IS NOT NULL THEN
11221 l_primary_unit_price := (l_elc_adj_shiplines(i).txn_qty * l_elc_adj_shiplines(i).new_txn_unit_price) / l_elc_adj_shiplines(i).primary_qty;
11222 END IF;
11223
11224 IF l_elc_adj_shiplines(i).secondary_uom_code IS NOT NULL THEN
11225 l_secondary_unit_price := (l_elc_adj_shiplines(i).txn_qty * l_elc_adj_shiplines(i).new_txn_unit_price) / l_elc_adj_shiplines(i).secondary_qty;
11226 END IF;
11227 END IF;
11228
11229 INSERT INTO inl_ship_lines(
11230 ship_header_id, -- 01
11231 ship_line_group_id, -- 02
11232 ship_line_id, -- 03
11233 ship_line_num, -- 04
11234 ship_line_type_id, -- 05
11235 ship_line_src_type_code, -- 06
11236 ship_line_source_id, -- 07
11237 parent_ship_line_id, -- 08
11238 adjustment_num, -- 09
11239 match_id, -- 10
11240 currency_code, -- 11
11241 currency_conversion_type, -- 12
11242 currency_conversion_date, -- 13
11243 currency_conversion_rate, -- 14
11244 inventory_item_id, -- 15
11245 txn_qty, -- 16
11246 txn_uom_code, -- 17
11247 txn_unit_price, -- 18
11248 primary_qty, -- 19
11249 primary_uom_code, -- 20
11250 primary_unit_price, -- 21
11251 secondary_qty, -- 22
11252 secondary_uom_code, -- 23
11253 secondary_unit_price, -- 24
11254 landed_cost_flag, -- 25
11255 allocation_enabled_flag, -- 26
11256 trx_business_category, -- 27
11257 intended_use, -- 28
11258 product_fiscal_class, -- 29
11259 product_category, -- 30
11260 product_type, -- 31
11261 user_def_fiscal_class, -- 32
11262 tax_classification_code, -- 33
11263 assessable_value, -- 34
11264 tax_already_calculated_flag, -- 35
11265 ship_from_party_id, -- 36
11266 ship_from_party_site_id, -- 37
11267 ship_to_organization_id, -- 38
11268 ship_to_location_id, -- 39
11269 bill_from_party_id, -- 40
11270 bill_from_party_site_id, -- 41
11271 bill_to_organization_id, -- 42
11272 bill_to_location_id, -- 43
11273 poa_party_id, -- 44
11274 poa_party_site_id, -- 45
11275 poo_organization_id, -- 46
11276 poo_location_id, -- 47
11277 org_id,-- 48
11278 ship_line_int_id, -- 49
11279 interface_source_table, -- 50
11280 interface_source_line_id, -- 51
11281 created_by, -- 52
11282 creation_date, -- 53
11283 last_updated_by, -- 54
11284 last_update_date, -- 55
11285 last_update_login, -- 56
11286 program_id, -- 57
11287 program_update_date, -- 58
11288 program_application_id, -- 59
11289 request_id, -- 60
11290 attribute_category, -- 61
11291 attribute1, -- 62
11292 attribute2, -- 63
11293 attribute3, -- 64
11294 attribute4, -- 65
11295 attribute5, -- 66
11296 attribute6, -- 67
11297 attribute7, -- 68
11298 attribute8, -- 69
11299 attribute9, -- 70
11300 attribute10, -- 71
11301 attribute11, -- 72
11302 attribute12, -- 73
11303 attribute13, -- 74
11304 attribute14, -- 75
11305 attribute15, -- 76
11306 nrq_zero_exception_flag, -- 77
11307 new_txn_unit_price, -- 78
11308 new_currency_conversion_type, -- 79
11309 new_currency_conversion_date, -- 80
11310 new_currency_conversion_rate -- 81
11311 )
11312 (SELECT p_ship_header_id, -- 01
11313 sl.ship_line_group_id, -- 02
11314 inl_ship_lines_all_s.nextval, -- 03
11315 sl.ship_line_num, -- 04
11316 sl.ship_line_type_id, -- 05
11317 sl.ship_line_src_type_code, -- 06
11318 sl.ship_line_source_id, -- 07
11319 NVL(parent_ship_line_id, sl.ship_line_id), -- 08
11320 l_adjustment_num, -- 09
11321 sl.match_id, -- 10
11322 sl.currency_code, -- 11
11323 NVL(sl.new_currency_conversion_type, sl.currency_conversion_type), -- 12
11324 NVL(sl.new_currency_conversion_date, sl.currency_conversion_date), -- 13
11325 NVL(sl.new_currency_conversion_rate, sl.currency_conversion_rate), -- 14
11326 sl.inventory_item_id, -- 15
11327 sl.txn_qty, -- 16
11328 sl.txn_uom_code, -- 17
11329 NVL(sl.new_txn_unit_price, sl.txn_unit_price), -- 18
11330 sl.primary_qty, -- 19
11331 sl.primary_uom_code, -- 20
11332 NVL(l_primary_unit_price,sl.primary_unit_price), -- 21
11333 sl.secondary_qty, -- 22
11334 sl.secondary_uom_code, -- 23
11335 NVL(l_secondary_unit_price,sl.secondary_unit_price), -- 24
11336 sl.landed_cost_flag, -- 25
11337 sl.allocation_enabled_flag, -- 26
11338 sl.trx_business_category, -- 27
11339 sl.intended_use, -- 28
11340 sl.product_fiscal_class, -- 29
11341 sl.product_category, -- 30
11342 sl.product_type, -- 31
11343 sl.user_def_fiscal_class, -- 32
11344 sl.tax_classification_code, -- 33
11345 sl.assessable_value, -- 34
11346 sl.tax_already_calculated_flag, -- 35
11347 sl.ship_from_party_id, -- 36
11348 sl.ship_from_party_site_id, -- 37
11349 sl.ship_to_organization_id, -- 38
11350 sl.ship_to_location_id, -- 39
11351 sl.bill_from_party_id, -- 40
11352 sl.bill_from_party_site_id, -- 41
11353 sl.bill_to_organization_id, -- 42
11354 sl.bill_to_location_id, -- 43
11355 sl.poa_party_id, -- 44
11356 sl.poa_party_site_id, -- 45
11357 sl.poo_organization_id, -- 46
11358 sl.poo_location_id, -- 47
11359 sl.org_id, -- 48
11360 sl.ship_line_int_id, -- 49
11361 sl.interface_source_table, -- 50
11362 sl.interface_source_line_id, -- 51
11363 l_fnd_user_id, -- 52
11364 SYSDATE, -- 53
11365 l_fnd_user_id, -- 54
11366 SYSDATE, -- 55
11367 l_fnd_login_id, -- 56
11368 sl.program_id, -- 57
11369 sl.program_update_date, -- 58
11370 sl.program_application_id, -- 59
11371 sl.request_id, -- 60
11372 sl.attribute_category, -- 61
11373 sl.attribute1, -- 62
11374 sl.attribute2, -- 63
11375 sl.attribute3, -- 64
11376 sl.attribute4, -- 65
11377 sl.attribute5, -- 66
11378 sl.attribute6, -- 67
11379 sl.attribute7, -- 68
11380 sl.attribute8, -- 69
11381 sl.attribute9, -- 70
11382 sl.attribute10, -- 71
11383 sl.attribute11, -- 72
11384 sl.attribute12, -- 73
11385 sl.attribute13, -- 74
11386 sl.attribute14, -- 75
11387 sl.attribute15, -- 76
11388 sl.nrq_zero_exception_flag, -- 77
11389 NULL, -- 78
11390 NULL, -- 80
11391 NULL, -- 81
11392 NULL
11393 FROM inl_adj_ship_lines_v sl
11394 WHERE sl.ship_line_id = l_elc_adj_shiplines(i).ship_line_id);
11395 END LOOP;
11396 END IF;
11397
11398 -- Fetch ELC Adjusted Charge Lines
11399 OPEN c_elc_adj_chlines;
11400 FETCH c_elc_adj_chlines BULK COLLECT INTO l_elc_adj_chlines;
11401 CLOSE c_elc_adj_chlines;
11402
11403 -- Exist charge lines to be ELC adjusted
11404 IF NVL (l_elc_adj_chlines.LAST, 0) > 0 THEN
11405 FOR i IN NVL(l_elc_adj_chlines.FIRST, 0)..NVL(l_elc_adj_chlines.LAST, 0)
11406 LOOP
11407 -- Check if associations changed
11408 SELECT COUNT(1)
11409 INTO l_count_assoc_changed
11410 FROM inl_adj_associations_v a
11411 WHERE a.from_parent_table_name = 'INL_CHARGE_LINES'
11412 AND a.from_parent_table_id = l_elc_adj_chlines(i).charge_line_id
11413 AND a.adjustment_type_flag IS NOT NULL
11414 AND a.ship_header_id = p_ship_header_id;
11415
11416 INL_LOGGING_PVT.Log_Variable(p_module_name => g_module_name,
11417 p_procedure_name => l_program_name,
11418 p_var_name => 'l_count_assoc_changed',
11419 p_var_value => l_count_assoc_changed);
11420
11421 IF NVL(l_count_assoc_changed,0) > 0 THEN -- associations changed
11422 -- Check if charge contains associations
11423 SELECT COUNT(1)
11424 INTO l_exist_associations
11425 FROM inl_adj_associations_v a
11426 WHERE a.from_parent_table_name = 'INL_CHARGE_LINES'
11427 AND a.from_parent_table_id = l_elc_adj_chlines(i).charge_line_id
11428 AND (a.adjustment_type_flag IS NULL
11429 OR a.adjustment_type_flag = 'A')
11430 AND a.ship_header_id = p_ship_header_id;
11431
11432 INL_LOGGING_PVT.Log_Variable(p_module_name => g_module_name,
11433 p_procedure_name => l_program_name,
11434 p_var_name => 'l_exist_associations',
11435 p_var_value => l_exist_associations);
11436
11437 IF NVL(l_exist_associations, 0) > 0 THEN -- Exist associations for charge
11438
11439 SELECT inl_charge_lines_s.nextval
11440 INTO l_charge_line_id
11441 FROM DUAL;
11442
11443 l_debug_info := 'Get next charge line number';
11444 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
11445 p_procedure_name => l_program_name,
11446 p_debug_info => l_debug_info);
11447
11448 SELECT NVL (MAX (cl.charge_line_num), 0) + 1
11449 INTO l_charge_line_num
11450 FROM inl_charge_lines cl
11451 WHERE NVL (cl.parent_charge_line_id, cl.charge_line_id) IN(
11452 SELECT assoc.from_parent_table_id
11453 FROM inl_associations assoc
11454 WHERE assoc.from_parent_table_name = 'INL_CHARGE_LINES'
11455 AND assoc.ship_header_id = p_ship_header_id);
11456
11457 INL_LOGGING_PVT.Log_Variable(p_module_name => g_module_name,
11458 p_procedure_name => l_program_name,
11459 p_var_name => 'l_charge_line_num',
11460 p_var_value => l_charge_line_num);
11461
11462 l_debug_info := 'Create new charge line';
11463 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
11464 p_procedure_name => l_program_name,
11465 p_debug_info => l_debug_info);
11466
11467 -- Create new charge line
11468 INSERT INTO inl_charge_lines(charge_line_id, -- 01
11469 charge_line_num, -- 02
11470 charge_line_type_id, -- 03
11471 landed_cost_flag, -- 04
11472 update_allowed, -- 05
11473 source_code, -- 06
11474 parent_charge_line_id, -- 07
11475 adjustment_num, -- 08
11476 match_id, -- 09
11477 match_amount_id, -- 10
11478 charge_amt, -- 11
11479 currency_code, -- 12
11480 currency_conversion_type, -- 13
11481 currency_conversion_date, -- 14
11482 currency_conversion_rate, -- 15
11483 party_id, -- 16
11484 party_site_id, -- 17
11485 trx_business_category, -- 18
11486 intended_use, -- 19
11487 product_fiscal_class, -- 20
11488 product_category, -- 21
11489 product_type, -- 22
11490 user_def_fiscal_class, -- 23
11491 tax_classification_code, -- 24
11492 assessable_value, -- 25
11493 tax_already_calculated_flag, -- 26
11494 ship_from_party_id, -- 27
11495 ship_from_party_site_id, -- 278
11496 ship_to_organization_id, -- 29
11497 ship_to_location_id, -- 30
11498 bill_from_party_id, -- 31
11499 bill_from_party_site_id, -- 32
11500 bill_to_organization_id, -- 33
11501 bill_to_location_id, -- 34
11502 poa_party_id, -- 35
11503 poa_party_site_id, -- 36
11504 poo_organization_id, -- 37
11505 poo_location_id, -- 38
11506 created_by, -- 39
11507 creation_date, -- 40
11508 last_updated_by, -- 41
11509 last_update_date, -- 42
11510 last_update_login, -- 43
11511 new_charge_amt, -- 44
11512 new_currency_conversion_type, -- 45
11513 new_currency_conversion_date, -- 46
11514 new_currency_conversion_rate -- 47
11515 )
11516 (SELECT l_charge_line_id, -- 01
11517 l_charge_line_num, -- 02
11518 cl.charge_line_type_id, -- 03
11519 cl.landed_cost_flag, -- 04
11520 cl.update_allowed, -- 05
11521 cl.source_code, -- 06
11522 NULL, -- 07
11523 l_adjustment_num, -- 08
11524 cl.match_id, -- 09
11525 cl.match_amount_id, -- 10
11526 NVL(cl.new_charge_amt, cl.charge_amt), -- 11
11527 cl.currency_code, -- 12
11528 NVL(cl.new_currency_conversion_type, cl.currency_conversion_type), -- 13
11529 NVL(cl.new_currency_conversion_date, cl.currency_conversion_date), -- 14
11530 NVL(cl.new_currency_conversion_rate, cl.currency_conversion_rate), -- 15
11531 cl.party_id, -- 16
11532 cl.party_site_id, -- 17
11533 cl.trx_business_category, -- 18
11534 cl.intended_use, -- 19
11535 cl.product_fiscal_class, -- 20
11536 cl.product_category,-- 21
11537 cl.product_type,-- 22
11538 cl.user_def_fiscal_class,-- 23
11539 cl.tax_classification_code,-- 24
11540 cl.assessable_value,-- 25
11541 cl.tax_already_calculated_flag,-- 26
11542 cl.ship_from_party_id,-- 27
11543 cl.ship_from_party_site_id,-- 28
11544 cl.ship_to_organization_id,-- 29
11545 cl.ship_to_location_id,-- 30
11546 cl.bill_from_party_id, -- 31
11547 cl.bill_from_party_site_id, -- 32
11548 cl.bill_to_organization_id, -- 33
11549 cl.bill_to_location_id, -- 34
11550 cl.poa_party_id, -- 35
11551 cl.poa_party_site_id, -- 36
11552 cl.poo_organization_id, -- 37
11553 cl.poo_location_id, -- 38
11554 l_fnd_user_id, -- 39
11555 SYSDATE, -- 40
11556 l_fnd_user_id, -- 41
11557 SYSDATE, -- 42
11558 l_fnd_login_id, -- 43
11559 NULL, -- 44
11560 NULL, -- 45
11561 NULL, -- 46
11562 NULL -- 47
11563 FROM inl_adj_charge_lines_v cl
11564 WHERE cl.charge_line_id = l_elc_adj_chlines(i).charge_line_id);
11565
11566 l_debug_info := 'Create associations for charge line ID: ' || l_charge_line_id;
11567 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
11568 p_procedure_name => l_program_name,
11569 p_debug_info => l_debug_info);
11570
11571 -- Create associations according to adjustment_flag
11572 INSERT INTO inl_associations(association_id, -- 01
11573 ship_header_id, -- 02
11574 from_parent_table_name, -- 03
11575 from_parent_table_id, -- 04
11576 to_parent_table_name, -- 05
11577 to_parent_table_id, -- 06
11578 allocation_basis, -- 07
11579 allocation_uom_code, -- 08
11580 created_by, -- 09
11581 creation_date, -- 10
11582 last_updated_by, -- 11
11583 last_update_date, -- 12
11584 last_update_login, -- 13
11585 adjustment_type_flag) -- 14
11586 (SELECT INL_ASSOCIATIONS_S.NEXTVAL, -- 01
11587 a.ship_header_id, -- 02
11588 a.from_parent_table_name, -- 03
11589 l_charge_line_id, -- 04
11590 a.to_parent_table_name, -- 05
11591 a.to_parent_table_id, -- 06
11592 a.allocation_basis, -- 07
11593 a.allocation_uom_code, -- 08
11594 l_fnd_user_id, -- 09
11595 SYSDATE, -- 10
11596 l_fnd_user_id, -- 11
11597 SYSDATE, -- 12
11598 L_FND_LOGIN_ID, -- 13
11599 NULL -- 14
11600 FROM inl_adj_associations_v a
11601 WHERE a.ship_header_id = p_ship_header_id
11602 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
11603 AND a.from_parent_table_id = l_elc_adj_chlines(i).charge_line_id
11604 AND (a.adjustment_type_flag IS NULL
11605 OR a.adjustment_type_flag = 'A'));
11606 END IF; -- END Exist associations
11607
11608 l_debug_info := 'Create an adjustment with amount 0 for charge line ID: ' || l_elc_adj_chlines(i).charge_line_id;
11609 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
11610 p_procedure_name => l_program_name,
11611 p_debug_info => l_debug_info);
11612
11613 -- Charge_amt = 0 for current charge
11614 INSERT INTO inl_charge_lines(charge_line_id, -- 01
11615 charge_line_num, -- 02
11616 charge_line_type_id, -- 03
11617 landed_cost_flag, -- 04
11618 update_allowed, -- 05
11619 source_code, -- 06
11620 parent_charge_line_id, -- 07
11621 adjustment_num, -- 08
11622 match_id, -- 09
11623 match_amount_id, -- 10
11624 charge_amt, -- 11
11625 currency_code, -- 12
11626 currency_conversion_type, -- 13
11627 currency_conversion_date, -- 14
11628 currency_conversion_rate, -- 15
11629 party_id, -- 16
11630 party_site_id, -- 17
11631 trx_business_category, -- 18
11632 intended_use, -- 19
11633 product_fiscal_class, -- 20
11634 product_category,-- 21
11635 product_type,-- 22
11636 user_def_fiscal_class, -- 23
11637 tax_classification_code, -- 24
11638 assessable_value,-- 25
11639 tax_already_calculated_flag, -- 26
11640 ship_from_party_id, -- 27
11641 ship_from_party_site_id, -- 28
11642 ship_to_organization_id, -- 29
11643 ship_to_location_id, -- 30
11644 bill_from_party_id, -- 31
11645 bill_from_party_site_id, -- 32
11646 bill_to_organization_id, -- 33
11647 bill_to_location_id, -- 34
11648 poa_party_id, -- 35
11649 poa_party_site_id, -- 36
11650 poo_organization_id, -- 37
11651 poo_location_id, -- 38
11652 created_by, -- 39
11653 creation_date, -- 40
11654 last_updated_by, -- 41
11655 last_update_date, -- 42
11656 last_update_login, -- 43
11657 new_charge_amt, -- 44
11658 new_currency_conversion_type, -- 45
11659 new_currency_conversion_date, -- 46
11660 new_currency_conversion_rate, -- 47
11661 adjustment_type_flag) -- 48
11662 (SELECT INL_CHARGE_LINES_S.NEXTVAL, -- 01
11663 cl.charge_line_num, -- 02
11664 cl.charge_line_type_id, -- 03
11665 cl.landed_cost_flag, -- 04
11666 cl.update_allowed, -- 05
11667 cl.source_code, -- 06
11668 l_elc_adj_chlines(i).charge_line_id, -- 07
11669 l_adjustment_num, -- 08
11670 cl.match_id, -- 09
11671 cl.match_amount_id, -- 10
11672 0, -- 11
11673 cl.currency_code, -- 12
11674 cl.currency_conversion_type, -- 13
11675 cl.currency_conversion_date, -- 14
11676 cl.currency_conversion_rate, -- 15
11677 cl.party_id, -- 16
11678 cl.party_site_id, -- 17
11679 cl.trx_business_category, -- 18
11680 cl.intended_use, -- 19
11681 cl.product_fiscal_class, -- 20
11682 cl.product_category, -- 21
11683 cl.product_type, -- 22
11684 cl.user_def_fiscal_class, -- 23
11685 cl.tax_classification_code, -- 24
11686 cl.assessable_value, -- 25
11687 cl.tax_already_calculated_flag, -- 26
11688 cl.ship_from_party_id, -- 27
11689 cl.ship_from_party_site_id, -- 28
11690 cl.ship_to_organization_id, -- 29
11691 cl.ship_to_location_id, -- 30
11692 cl.bill_from_party_id, -- 31
11693 cl.bill_from_party_site_id, -- 32
11694 cl.bill_to_organization_id, -- 33
11695 cl.bill_to_location_id, -- 34
11696 cl.poa_party_id, -- 35
11697 cl.poa_party_site_id, -- 36
11698 cl.poo_organization_id, -- 37
11699 cl.poo_location_id, -- 38
11700 l_fnd_user_id, -- 39
11701 SYSDATE, -- 40
11702 l_fnd_user_id, -- 41
11703 SYSDATE, -- 42
11704 l_fnd_login_id, -- 43
11705 NULL, -- 44
11706 NULL, -- 45
11707 NULL, -- 46
11708 NULL, -- 47
11709 'Z' -- 48
11710 FROM inl_adj_charge_lines_v cl
11711 WHERE cl.charge_line_id = l_elc_adj_chlines(i).charge_line_id);
11712 ELSE -- associations were not changed
11713 l_debug_info := 'Associations were not changed. Charge line ID: ' || l_elc_adj_chlines(i).charge_line_id;
11714 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
11715 p_procedure_name => l_program_name,
11716 p_debug_info => l_debug_info);
11717
11718 -- Check if charge was changed
11719 SELECT COUNT(1)
11720 INTO l_count_charge_changed
11721 FROM inl_adj_charge_lines_v c
11722 WHERE (c.new_charge_amt IS NOT NULL
11723 OR c.new_currency_conversion_type IS NOT NULL
11724 OR c.new_currency_conversion_date IS NOT NULL
11725 OR c.new_currency_conversion_rate IS NOT NULL)
11726 AND charge_line_id = l_elc_adj_chlines(i).charge_line_id;
11727
11728 INL_LOGGING_PVT.Log_Variable(p_module_name => g_module_name,
11729 p_procedure_name => l_program_name,
11730 p_var_name => 'l_count_charge_changed',
11731 p_var_value => l_count_charge_changed);
11732
11733 IF NVL(l_count_charge_changed,0) > 0 THEN
11734 -- Create new charge line
11735 INSERT INTO inl_charge_lines(charge_line_id, -- 01
11736 charge_line_num, -- 02
11737 charge_line_type_id, -- 03
11738 landed_cost_flag, -- 04
11739 update_allowed, -- 05
11740 source_code, -- 06
11741 parent_charge_line_id, -- 07
11742 adjustment_num, -- 08
11743 match_id, -- 09
11744 match_amount_id, -- 10
11745 charge_amt, -- 11
11746 currency_code, -- 12
11747 currency_conversion_type, -- 13
11748 currency_conversion_date, -- 14
11749 currency_conversion_rate, -- 15
11750 party_id, -- 16
11751 party_site_id, -- 17
11752 trx_business_category, -- 18
11753 intended_use, -- 19
11754 product_fiscal_class, -- 20
11755 product_category, -- 21
11756 product_type, -- 22
11757 user_def_fiscal_class, -- 23
11758 tax_classification_code, -- 24
11759 assessable_value, -- 25
11760 tax_already_calculated_flag, -- 26
11761 ship_from_party_id, -- 27
11762 ship_from_party_site_id, -- 28
11763 ship_to_organization_id, -- 29
11764 ship_to_location_id, -- 30
11765 bill_from_party_id, -- 31
11766 bill_from_party_site_id, -- 32
11767 bill_to_organization_id, -- 33
11768 bill_to_location_id, -- 34
11769 poa_party_id, -- 35
11770 poa_party_site_id, -- 36
11771 poo_organization_id, -- 37
11772 poo_location_id, -- 38
11773 created_by, -- 39
11774 creation_date, -- 40
11775 last_updated_by, -- 41
11776 last_update_date, -- 42
11777 last_update_login, -- 43
11778 new_charge_amt, -- 44
11779 new_currency_conversion_type, -- 45
11780 new_currency_conversion_date, -- 46
11781 new_currency_conversion_rate -- 47
11782 )
11783 (SELECT INL_CHARGE_LINES_S.NEXTVAL, -- 01
11784 cl.charge_line_num, -- 02
11785 cl.charge_line_type_id, -- 03
11786 cl.landed_cost_flag, -- 04
11787 cl.update_allowed, -- 05
11788 cl.source_code, -- 06
11789 cl.charge_line_id, -- 07
11790 l_adjustment_num, -- 08
11791 cl.match_id, -- 09
11792 cl.match_amount_id, -- 10
11793 NVL(cl.new_charge_amt, cl.charge_amt), -- 11
11794 cl.currency_code, -- 12
11795 NVL(cl.new_currency_conversion_type,cl.currency_conversion_type), -- 13
11796 NVL(cl.new_currency_conversion_date,cl.currency_conversion_date), -- 14
11797 NVL(cl.new_currency_conversion_rate,cl.currency_conversion_rate), -- 15
11798 cl.party_id, -- 16
11799 cl.party_site_id, -- 17
11800 cl.trx_business_category, -- 18
11801 cl.intended_use, -- 19
11802 cl.product_fiscal_class, -- 20
11803 cl.product_category, -- 21
11804 cl.product_type, -- 22
11805 cl.user_def_fiscal_class, -- 23
11806 cl.tax_classification_code, -- 24
11807 cl.assessable_value, -- 25
11808 cl.tax_already_calculated_flag, -- 26
11809 cl.ship_from_party_id, -- 27
11810 cl.ship_from_party_site_id, -- 28
11811 cl.ship_to_organization_id, -- 29
11812 cl.ship_to_location_id, -- 30
11813 cl.bill_from_party_id, -- 31
11814 cl.bill_from_party_site_id, -- 32
11815 cl.bill_to_organization_id, -- 33
11816 cl.bill_to_location_id, -- 34
11817 cl.poa_party_id, -- 35
11818 cl.poa_party_site_id, -- 36
11819 cl.poo_organization_id, -- 37
11820 cl.poo_location_id, -- 38
11821 l_fnd_user_id, -- 39
11822 SYSDATE, -- 40
11823 l_fnd_user_id, -- 41
11824 SYSDATE, -- 42
11825 l_fnd_login_id, -- 43
11826 NULL, -- 44
11827 NULL, -- 45
11828 NULL, -- 46
11829 NULL -- 47
11830 FROM inl_adj_charge_lines_v cl
11831 WHERE cl.charge_line_id = l_elc_adj_chlines(i).charge_line_id);
11832 END IF;
11833 END IF;
11834 END LOOP;
11835 END IF;
11836
11837 l_debug_info := 'Set pending_update_flag to N for Shipment';
11838 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
11839 p_procedure_name => l_program_name,
11840 p_debug_info => l_debug_info);
11841
11842 UPDATE inl_ship_headers_all sh
11843 SET sh.adjustment_num = ABS(l_adjustment_num),
11844 sh.pending_update_flag = 'N',
11845 sh.last_update_login = l_fnd_login_id,
11846 sh.last_update_date = SYSDATE,
11847 sh.last_updated_by = l_fnd_user_id
11848 WHERE sh.ship_header_id = p_ship_header_id;
11849
11850 l_debug_info := 'Call INL_INTERFACE_PVT.Reset_MatchInt';
11851 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
11852 p_procedure_name => l_program_name,
11853 p_debug_info => l_debug_info);
11854
11855 INL_INTERFACE_PVT.Reset_MatchInt(p_ship_header_id => p_ship_header_id,
11856 x_return_status => l_return_status);
11857
11858 -- If unexpected errors happen abort API
11859 IF l_return_status = L_FND_RET_STS_ERROR THEN
11860 x_return_status := l_return_status;
11861 RAISE L_FND_EXC_ERROR;
11862 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
11863 x_return_status := l_return_status;
11864 RAISE L_FND_EXC_UNEXPECTED_ERROR;
11865 END IF;
11866
11867 IF FND_API.To_Boolean (p_commit) THEN
11868 COMMIT WORK;
11869 END IF;
11870 -- Standard call to get message count and if count is 1, get message info.
11871 FND_MSG_PUB.Count_And_Get(p_encoded => L_FND_FALSE,
11872 p_count => x_msg_count,
11873 p_data => x_msg_data) ;
11874 -- Standard End of Procedure/Function Logging
11875 INL_LOGGING_PVT.Log_EndProc (
11876 p_module_name => g_module_name,
11877 p_procedure_name => l_program_name);
11878
11879 EXCEPTION
11880 --Handling deadlock with proper error message
11881 WHEN RESOURCE_BUSY THEN
11882 x_return_status := FND_API.g_ret_sts_error;
11883 FND_MESSAGE.set_name('INL','INL_CANNOT_EXEC_ELC_SUBMIT_LCK');
11884 FND_MSG_PUB.ADD;
11885 -- Standard Expected Error Logging
11886 INL_LOGGING_PVT.Log_ExpecError(p_module_name => g_module_name,
11887 p_procedure_name => l_program_name);
11888 ROLLBACK TO Adjust_ELCLines_PVT;
11889 x_return_status := L_FND_RET_STS_ERROR;
11890 FND_MSG_PUB.Count_And_Get(p_encoded => L_FND_FALSE,
11891 p_count => x_msg_count,
11892 p_data => x_msg_data);
11893 WHEN L_FND_EXC_ERROR THEN
11894 -- Standard Expected Error Logging
11895 INL_LOGGING_PVT.Log_ExpecError(p_module_name => g_module_name,
11896 p_procedure_name => l_program_name) ;
11897 ROLLBACK TO Adjust_ELCLines_PVT;
11898 x_return_status := L_FND_RET_STS_ERROR;
11899 FND_MSG_PUB.Count_And_Get(p_encoded => L_FND_FALSE,
11900 p_count => x_msg_count,
11901 p_data => x_msg_data) ;
11902 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
11903 -- Standard Unexpected Error Logging
11904 INL_LOGGING_PVT.Log_UnexpecError(p_module_name => g_module_name,
11905 p_procedure_name => l_program_name) ;
11906 ROLLBACK TO Adjust_ELCLines_PVT;
11907 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
11908 FND_MSG_PUB.Count_And_Get(p_encoded => L_FND_FALSE,
11909 p_count => x_msg_count,
11910 p_data => x_msg_data) ;
11911 WHEN OTHERS THEN
11912 -- Standard Unexpected Error Logging
11913 INL_LOGGING_PVT.Log_UnexpecError(p_module_name => g_module_name,
11914 p_procedure_name => l_program_name) ;
11915 ROLLBACK TO Adjust_ELCLines_PVT;
11916 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
11917 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
11918 FND_MSG_PUB.Add_Exc_Msg(p_pkg_name => g_pkg_name,
11919 p_procedure_name => l_program_name) ;
11920 END IF;
11921 FND_MSG_PUB.Count_And_Get(p_encoded => L_FND_FALSE,
11922 p_count => x_msg_count,
11923 p_data => x_msg_data) ;
11924 END Adjust_ELCLines;
11925 -- /SCM-051
11926
11927 -- API name : ProcessAction
11928 -- Type : Private
11929 -- Function : Run all required steps to Complete a given LCM Shipment.
11930 -- Pre-reqs : None
11931 -- Parameters :
11932 -- IN : p_api_version IN NUMBER Required
11933 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
11934 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
11935 -- p_ship_header_id IN NUMBER
11936 -- p_task_code IN VARCHAR2
11937 -- p_caller IN VARCHAR2 From UI (U) or Concurrent (C)
11938 -- OUT x_return_status OUT NOCOPY VARCHAR2
11939 -- x_msg_count OUT NOCOPY NUMBER
11940 -- x_msg_data OUT NOCOPY VARCHAR2
11941 --
11942 -- Version : Current version 1.0
11943 --
11944 -- Notes :
11945 PROCEDURE ProcessAction(
11946 p_api_version IN NUMBER,
11947 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
11948 p_commit IN VARCHAR2 := L_FND_FALSE,
11949 p_ship_header_id IN NUMBER,
11950 p_task_code IN VARCHAR2,
11951 p_caller IN VARCHAR2, -- SCM-051 - From UI (U) or Concurrent (C)
11952 x_return_status OUT NOCOPY VARCHAR2,
11953 x_msg_count OUT NOCOPY NUMBER,
11954 x_msg_data OUT NOCOPY VARCHAR2)
11955 IS
11956 l_api_name CONSTANT VARCHAR2 (30) := 'ProcessAction';
11957 l_api_version CONSTANT NUMBER := 1.0;
11958 l_return_status VARCHAR2 (1) ;
11959 l_msg_count NUMBER;
11960 l_msg_data VARCHAR2 (2000);
11961 l_debug_info VARCHAR2 (200);
11962 l_pending_matching_flag VARCHAR2 (1) ;
11963 l_ship_status VARCHAR2 (30);
11964 l_msg_count_validate NUMBER;
11965 l_organization_id NUMBER;
11966 l_rcv_enabled_flag VARCHAR2(1);
11967 l_max_allocation_id NUMBER; --Bug#10032820
11968 l_pending_update_flag VARCHAR2(1) ; -- SCM-051
11969 l_ship_num VARCHAR2(25); -- SCM-051
11970 l_rcv_running NUMBER; -- SCM-051
11971 BEGIN
11972 -- Standard Beginning of Procedure/Function Logging
11973 INL_LOGGING_PVT.Log_BeginProc (
11974 p_module_name => g_module_name,
11975 p_procedure_name => l_api_name) ;
11976 -- Standard Start of API savepoint
11977 SAVEPOINT Run_Submit_PVT;
11978 -- Initialize message list if p_init_msg_list is set to TRUE.
11979 IF FND_API.to_Boolean (p_init_msg_list) THEN
11980 FND_MSG_PUB.initialize;
11981 END IF;
11982 -- Check for call compatibility.
11983 IF NOT FND_API.Compatible_API_Call (
11984 l_api_version,
11985 p_api_version,
11986 l_api_name,
11987 G_PKG_NAME
11988 ) THEN
11989 RAISE L_FND_EXC_UNEXPECTED_ERROR;
11990 END IF;
11991 -- Initialize API return status to success
11992 x_return_status := L_FND_RET_STS_SUCCESS;
11993
11994 INL_LOGGING_PVT.Log_Variable (
11995 p_module_name => g_module_name,
11996 p_procedure_name => l_api_name,
11997 p_var_name => 'p_ship_header_id',
11998 p_var_value => p_ship_header_id) ;
11999
12000 -- Get the Pending Match Flag and Organization Id
12001 l_debug_info := 'Get the Pending Match Flag, Pending Update Flag and Organization Id';
12002 INL_LOGGING_PVT.Log_Statement (
12003 p_module_name => g_module_name,
12004 p_procedure_name => l_api_name,
12005 p_debug_info => l_debug_info
12006 ) ;
12007 SELECT pending_matching_flag,
12008 pending_update_flag, -- SCM-051
12009 organization_id,
12010 NVL(rcv_enabled_flag,'Y') rcv_enabled_flag, -- dependence,
12011 ship_num -- SCM-051
12012 INTO l_pending_matching_flag,
12013 l_pending_update_flag, -- SCM-051
12014 l_organization_id,
12015 l_rcv_enabled_flag,
12016 l_ship_num
12017 FROM inl_ship_headers
12018 WHERE ship_header_id = p_ship_header_id;
12019
12020 INL_LOGGING_PVT.Log_Variable (
12021 p_module_name => g_module_name,
12022 p_procedure_name => l_api_name,
12023 p_var_name => 'l_pending_matching_flag',
12024 p_var_value => l_pending_matching_flag) ;
12025 -- SCM-051
12026 INL_LOGGING_PVT.Log_Variable (
12027 p_module_name => g_module_name,
12028 p_procedure_name => l_api_name,
12029 p_var_name => 'l_pending_update_flag',
12030 p_var_value => l_pending_update_flag) ;
12031 INL_LOGGING_PVT.Log_Variable (
12032 p_module_name => g_module_name,
12033 p_procedure_name => l_api_name,
12034 p_var_name => 'p_caller',
12035 p_var_value => p_caller) ;
12036 -- /SCM-051
12037 INL_LOGGING_PVT.Log_Variable (
12038 p_module_name => g_module_name,
12039 p_procedure_name => l_api_name,
12040 p_var_name => 'l_organization_id',
12041 p_var_value => l_organization_id) ;
12042 INL_LOGGING_PVT.Log_Variable (
12043 p_module_name => g_module_name,
12044 p_procedure_name => l_api_name,
12045 p_var_name => 'l_rcv_enabled_flag',
12046 p_var_value => l_rcv_enabled_flag) ;
12047
12048 -- SCM-051
12049 IF NVL(l_pending_update_flag, 'N') = 'Y' AND p_caller = 'U' THEN
12050
12051 SELECT COUNT(1)
12052 INTO l_rcv_running
12053 FROM rcv_transactions_interface rti,
12054 inl_ship_lines_all sl
12055 WHERE rti.transaction_type = 'RECEIVE'
12056 AND rti.processing_status_code = 'RUNNING'
12057 AND rti.lcm_shipment_line_id = sl.ship_line_id
12058 AND sl.ship_header_id = p_ship_header_id;
12059
12060 INL_LOGGING_PVT.Log_Variable (
12061 p_module_name => g_module_name,
12062 p_procedure_name => l_api_name,
12063 p_var_name => 'l_rcv_running',
12064 p_var_value => l_rcv_running) ;
12065
12066 IF NVL(l_rcv_running,0) > 0 THEN
12067 FND_MESSAGE.SET_NAME('INL','INL_CANNOT_EXEC_ELC_SUBMIT');
12068 FND_MSG_PUB.ADD;
12069 RAISE L_FND_EXC_ERROR;
12070 END IF;
12071
12072 Adjust_ELCLines (
12073 p_api_version => 1.0,
12074 p_init_msg_list => L_FND_FALSE,
12075 p_commit => L_FND_FALSE,
12076 p_ship_header_id => p_ship_header_id,
12077 x_return_status => l_return_status,
12078 x_msg_count => l_msg_count,
12079 x_msg_data => l_msg_data);
12080 END IF;
12081 -- /SCM-051
12082
12083 -- SCM-051 Shipment with ELC Pending will not be processed
12084 IF NVL(l_pending_update_flag, 'N') = 'Y' AND p_caller = 'C' THEN
12085 l_debug_info := 'Shipment with ELC Pending';
12086 INL_LOGGING_PVT.Log_Statement (
12087 p_module_name => g_module_name,
12088 p_procedure_name=> l_api_name,
12089 p_debug_info => l_debug_info) ;
12090
12091 FND_MESSAGE.SET_NAME('INL','INL_ERR_CHK_ELC_UPDATE');
12092 FND_MESSAGE.SET_TOKEN('SHIP_NUM',l_ship_num);
12093 FND_MSG_PUB.ADD;
12094 RAISE L_FND_EXC_ERROR;
12095 ELSE
12096 -- /SCM-051
12097 -- Run Adjust Lines for Pending Shipments
12098 IF l_pending_matching_flag = 'Y' AND NVL(l_rcv_running,0) = 0 THEN -- SCM-051
12099 /* transfered to INL_INTERFACE_PVT --BUG#8198498
12100 l_debug_info := 'Run INL_SHIPMENT_PVT.Adjust_Lines';
12101 INL_LOGGING_PVT.Log_Statement (
12102 p_module_name => g_module_name,
12103 p_procedure_name => l_api_name,
12104 p_debug_info => l_debug_info
12105 ) ;
12106 Adjust_Lines (
12107 p_api_version => 1.0,
12108 p_init_msg_list => L_FND_FALSE,
12109 p_commit => L_FND_FALSE,
12110 p_ship_header_id => p_ship_header_id,
12111 x_return_status => l_return_status,
12112 x_msg_count => l_msg_count,
12113 x_msg_data => l_msg_data
12114 ) ;
12115 -- If any errors happen abort the process.
12116 IF l_return_status = L_FND_RET_STS_ERROR THEN
12117 RAISE L_FND_EXC_ERROR;
12118 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12119 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12120 END IF;
12121 */
12122 -- Update Pending Matching Flag
12123 l_debug_info := 'Update PendingMatchingFlag';
12124 INL_LOGGING_PVT.Log_Statement (
12125 p_module_name => g_module_name,
12126 p_procedure_name => l_api_name,
12127 p_debug_info => l_debug_info
12128 ) ;
12129 -- Set Shipment Header's pending_matching_flag to 'Y'
12130 INL_SHIPMENT_PVT.Update_PendingMatchingFlag( --BUG#8198498
12131 p_ship_header_id => p_ship_header_id,
12132 p_pending_matching_flag => 'N',
12133 x_return_status => l_return_status
12134 );
12135 -- If any errors happen abort API.
12136 IF l_return_status = L_FND_RET_STS_ERROR THEN
12137 RAISE L_FND_EXC_ERROR;
12138 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12139 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12140 END IF;
12141 END IF;
12142 -- Run Generate Taxes Only for NOT Pending Shipments
12143 IF p_task_code >= '30' AND NVL(l_pending_matching_flag, 'N') = 'N' AND
12144 NVL(l_pending_update_flag, 'N') = 'N' THEN -- SCM-051
12145 l_debug_info := 'Run INL_TAX_PVT.Generate_Taxes';
12146 INL_LOGGING_PVT.Log_Statement (
12147 p_module_name => g_module_name,
12148 p_procedure_name => l_api_name,
12149 p_debug_info => l_debug_info
12150 ) ;
12151 INL_TAX_PVT.Generate_Taxes (
12152 p_api_version => 1.0,
12153 p_init_msg_list => L_FND_FALSE,
12154 p_commit => L_FND_FALSE,
12155 p_ship_header_id => p_ship_header_id,
12156 x_return_status => l_return_status,
12157 x_msg_count => l_msg_count,
12158 x_msg_data => l_msg_data
12159 ) ;
12160 -- If any errors happen abort the process.
12161 IF l_return_status = L_FND_RET_STS_ERROR THEN
12162 RAISE L_FND_EXC_ERROR;
12163 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12164 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12165 END IF;
12166 END IF;
12167 -- Run Validation only for NOT Pending Shipments
12168 IF p_task_code >= '40' AND NVL (l_pending_matching_flag, 'N') = 'N' AND
12169 NVL(l_pending_update_flag, 'N') = 'N' THEN -- SCM-051
12170 l_debug_info := 'Run INL_SHIPMENT_PVT.Validate_Shipment';
12171 INL_LOGGING_PVT.Log_Statement (
12172 p_module_name => g_module_name,
12173 p_procedure_name => l_api_name,
12174 p_debug_info => l_debug_info
12175 ) ;
12176 l_msg_count_validate := NVL (fnd_msg_pub.Count_Msg (), 0) ;
12177 Validate_Shipment (
12178 p_api_version => 1.0,
12179 p_init_msg_list => L_FND_FALSE,
12180 p_commit => L_FND_FALSE,
12181 p_validation_level => L_FND_VALID_LEVEL_FULL,
12182 p_ship_header_id => p_ship_header_id,
12183 p_task_code => p_task_code,--Bug#9836174
12184 x_return_status => l_return_status,
12185 x_msg_count => l_msg_count,
12186 x_msg_data => l_msg_data
12187 ) ;
12188 -- If any errors happen abort the process.
12189 IF l_return_status = L_FND_RET_STS_ERROR THEN
12190 RAISE L_FND_EXC_ERROR;
12191 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12192 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12193 END IF;
12194 l_msg_count_validate := NVL (l_msg_count, 0) - l_msg_count_validate;
12195 END IF;
12196 ----------------------------------------------------------------------
12197 -- Actions for both Pending Shipments and Not Pending Shipments
12198 ----------------------------------------------------------------------
12199 -- Run Landed Cost Calculation
12200 IF p_task_code >= '50' AND NVL (l_msg_count_validate, 0) = 0 AND
12201 NVL(l_rcv_running,0) = 0 THEN
12202 --Bug#10032820
12203 l_debug_info := 'Getting the l_max_allocation_id';
12204 INL_LOGGING_PVT.Log_Statement (
12205 p_module_name => g_module_name,
12206 p_procedure_name => l_api_name,
12207 p_debug_info => l_debug_info
12208 ) ;
12209 SELECT MAX(allocation_id)
12210 INTO l_max_allocation_id
12211 FROM inl_allocations;
12212
12213 INL_LOGGING_PVT.Log_Variable (
12214 p_module_name => g_module_name,
12215 p_procedure_name => l_api_name,
12216 p_var_name => 'l_max_allocation_id',
12217 p_var_value => l_max_allocation_id);
12218
12219 --Bug#10032820
12220
12221 l_debug_info := 'Run INL_LANDEDCOST_PVT.Run_Calculation';
12222 INL_LOGGING_PVT.Log_Statement (
12223 p_module_name => g_module_name,
12224 p_procedure_name => l_api_name,
12225 p_debug_info => l_debug_info) ;
12226
12227 INL_LANDEDCOST_PVT.Run_Calculation (
12228 p_api_version => 1.0,
12229 p_init_msg_list => L_FND_FALSE,
12230 p_commit => L_FND_FALSE,
12231 p_validation_level => L_FND_VALID_LEVEL_FULL,
12232 p_ship_header_id => p_ship_header_id,
12233 p_calc_scope_code => 0,
12234 x_return_status => l_return_status,
12235 x_msg_count => l_msg_count,
12236 x_msg_data => l_msg_data
12237 ) ;
12238 -- If any errors happen abort the process.
12239 IF l_return_status = L_FND_RET_STS_ERROR THEN
12240 RAISE L_FND_EXC_ERROR;
12241 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12242 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12243 END IF;
12244 END IF;
12245 -- Submit Shipment and call final integrations
12246 IF p_task_code >= '60' AND NVL (l_msg_count_validate, 0) = 0 AND
12247 NVL(l_rcv_running,0) = 0 THEN
12248 l_debug_info := 'Run INL_SHIPMENT_PVT.Complete_Shipment';
12249 INL_LOGGING_PVT.Log_Statement (
12250 p_module_name => g_module_name,
12251 p_procedure_name => l_api_name,
12252 p_debug_info => l_debug_info) ;
12253
12254 Complete_Shipment (
12255 p_api_version => 1.0,
12256 p_init_msg_list => L_FND_FALSE,
12257 p_commit => L_FND_FALSE,
12258 p_ship_header_id => p_ship_header_id,
12259 p_rcv_enabled_flag => l_rcv_enabled_flag,
12260 p_pending_matching_flag => l_pending_matching_flag,
12261 p_pending_elc_flag => l_pending_update_flag, -- SCM-051
12262 p_organization_id => l_organization_id,
12263 p_max_allocation_id => l_max_allocation_id, --Bug#10032820
12264 x_return_status => l_return_status,
12265 x_msg_count => l_msg_count,
12266 x_msg_data => l_msg_data) ;
12267
12268 -- If any errors happen abort the process.
12269 IF l_return_status = L_FND_RET_STS_ERROR THEN
12270 RAISE L_FND_EXC_ERROR;
12271 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12272 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12273 END IF;
12274 END IF;
12275 END IF;
12276
12277 -- If any errors happen abort the process.
12278 IF l_return_status = L_FND_RET_STS_ERROR THEN
12279 RAISE L_FND_EXC_ERROR;
12280 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12281 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12282 END IF;
12283 -- Standard check of p_commit.
12284 IF FND_API.To_Boolean (p_commit) THEN
12285 COMMIT WORK;
12286 END IF;
12287 -- Standard call to get message count and if count is 1, get message info.
12288 FND_MSG_PUB.Count_And_Get (
12289 p_encoded => L_FND_FALSE,
12290 p_count => x_msg_count,
12291 p_data => x_msg_data
12292 ) ;
12293 -- Standard End of Procedure/Function Logging
12294 INL_LOGGING_PVT.Log_EndProc (
12295 p_module_name => g_module_name,
12296 p_procedure_name => l_api_name
12297 ) ;
12298 EXCEPTION
12299 WHEN L_FND_EXC_ERROR THEN
12300 -- Standard Expected Error Logging
12301 INL_LOGGING_PVT.Log_ExpecError (
12302 p_module_name => g_module_name,
12303 p_procedure_name => l_api_name
12304 ) ;
12305 ROLLBACK TO Run_Submit_PVT;
12306 x_return_status := L_FND_RET_STS_ERROR;
12307 FND_MSG_PUB.Count_And_Get (
12308 p_encoded => L_FND_FALSE,
12309 p_count => x_msg_count,
12310 p_data => x_msg_data
12311 ) ;
12312 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
12313 -- Standard Unexpected Error Logging
12314 INL_LOGGING_PVT.Log_UnexpecError (
12315 p_module_name => g_module_name,
12316 p_procedure_name => l_api_name
12317 ) ;
12318 ROLLBACK TO Run_Submit_PVT;
12319 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
12320 FND_MSG_PUB.Count_And_Get (
12321 p_encoded => L_FND_FALSE,
12322 p_count => x_msg_count,
12323 p_data => x_msg_data
12324 ) ;
12325 WHEN OTHERS THEN
12326 -- Standard Unexpected Error Logging
12327 INL_LOGGING_PVT.Log_UnexpecError (
12328 p_module_name => g_module_name,
12329 p_procedure_name => l_api_name
12330 ) ;
12331 ROLLBACK TO Run_Submit_PVT;
12332 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
12333 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
12334 FND_MSG_PUB.Add_Exc_Msg (
12335 p_pkg_name => g_pkg_name,
12336 p_procedure_name => l_api_name
12337 ) ;
12338 END IF;
12339 FND_MSG_PUB.Count_And_Get (
12340 p_encoded => L_FND_FALSE,
12341 p_count => x_msg_count,
12342 p_data => x_msg_data
12343 ) ;
12344 END ProcessAction;
12345
12346
12347 -- Utility name : Complete_PendingShipments
12348 -- Type : Private
12349 -- Function : This utility is called by an LCM Concurrent to process
12350 -- either a specific Pending Matching/Correction Shipment
12351 -- or ALL Pending Shipments.
12352 -- Pre-reqs : None
12353 -- Parameters :
12354 -- OUT errbuf OUT VARCHAR2
12355 -- retcode OUT VARCHAR2
12356 --
12357 -- IN p_organization_id IN NUMBER
12358 -- p_ship_header_id IN NUMBER
12359 --
12360 --
12361 -- Version : Current version 1.0
12362 --
12363 -- Notes : THIS PROCEDURE IS GOING TO COMMIT ALL PREVIOUS TRANSACTIONS --Bug#10359221
12364
12365 PROCEDURE Complete_PendingShipment (
12366 errbuf OUT NOCOPY VARCHAR2,
12367 retcode OUT NOCOPY VARCHAR2,
12368 p_organization_id IN NUMBER,
12369 p_ship_header_id IN NUMBER)
12370 IS
12371 l_program_name CONSTANT VARCHAR2 (30) := 'Complete_PendingShipment';
12372 l_return_status VARCHAR2 (1) := L_FND_RET_STS_SUCCESS;
12373 l_msg_count NUMBER;
12374 l_msg_data VARCHAR2 (2000);
12375 l_debug_info VARCHAR2 (200);
12376 l_records_processed NUMBER:=0;
12377
12378 -- Cursor to get all Pending Shipments
12379 CURSOR c_pending_shipments IS
12380 SELECT ship_header_id, org_id --Bug#10381495
12381 FROM inl_ship_headers_all --Bug#10381495
12382 WHERE ship_status_code = 'COMPLETED'
12383 AND pending_matching_flag = 'Y'
12384 AND (p_organization_id IS NULL
12385 OR organization_id = p_organization_id);
12386 --Bug#10359221
12387 TYPE pending_shipments_lst_type
12388 IS TABLE OF c_pending_shipments%ROWTYPE INDEX BY BINARY_INTEGER;
12389 l_pending_shipments_lst pending_shipments_lst_type;
12390 l_records_err NUMBER:=0;
12391 l_records_read NUMBER:=0;
12392 l_ac_proc NUMBER:=0;
12393 l_partial_commit_at NUMBER:=500;
12394 --Bug#10359221
12395
12396
12397 --Bug#10381495
12398 l_previous_access_mode VARCHAR2(1) :=mo_global.get_access_mode();
12399 l_previous_org_id NUMBER(15) :=mo_global.get_current_org_id();
12400 l_current_org_id NUMBER(15);
12401 l_org_id NUMBER(15);
12402 --Bug#10381495
12403
12404 BEGIN
12405 -- Init conc. parameters
12406 errbuf := NULL;
12407 retcode := 0;
12408
12409 -- Standard Beginning of Procedure/Function Logging
12410 INL_LOGGING_PVT.Log_BeginProc (
12411 p_module_name => g_module_name,
12412 p_procedure_name => l_program_name) ;
12413
12414 --Bug#10381495
12415 l_current_org_id := NVL(l_previous_org_id,-999);
12416 INL_LOGGING_PVT.Log_Variable(
12417 p_module_name => g_module_name,
12418 p_procedure_name => l_program_name,
12419 p_var_name => 'l_current_org_id',
12420 p_var_value => l_current_org_id
12421 ) ;
12422 --Bug#10381495
12423
12424
12425 -- Submit only the given Shipment
12426 IF p_ship_header_id IS NOT NULL THEN
12427
12428
12429 --Bug#10381495
12430 SELECT org_id
12431 INTO l_org_id
12432 FROM inl_ship_headers_all
12433 WHERE ship_header_id = p_ship_header_id;
12434
12435 IF (l_org_id <> l_current_org_id) THEN
12436 INL_LOGGING_PVT.Log_Statement(
12437 p_module_name => g_module_name,
12438 p_procedure_name => l_program_name,
12439 p_debug_info => 'Seting a new context from '||l_current_org_id||' to '||l_org_id
12440 );
12441 l_current_org_id:=l_org_id;
12442 mo_global.set_policy_context( 'S', l_current_org_id);
12443 INL_LOGGING_PVT.Log_Statement(
12444 p_module_name => g_module_name,
12445 p_procedure_name => l_program_name,
12446 p_debug_info => 'l_current_org_id: '||l_current_org_id
12447 );
12448 END IF;
12449 --Bug#10381495
12450
12451 l_debug_info := 'Before runnig Submit process for the only Shipment Id: ' || p_ship_header_id;
12452 INL_LOGGING_PVT.Log_Statement (
12453 p_module_name => g_module_name,
12454 p_procedure_name => l_program_name,
12455 p_debug_info => l_debug_info
12456 ) ;
12457 l_records_read := 1;
12458 ProcessAction (
12459 p_api_version => 1.0,
12460 p_init_msg_list => L_FND_FALSE,
12461 p_commit => L_FND_FALSE,
12462 p_ship_header_id => p_ship_header_id,
12463 p_task_code => '60', -- Process until Submit task
12464 p_caller => 'C', -- SCM-051
12465 x_return_status => l_return_status,
12466 x_msg_count => l_msg_count,
12467 x_msg_data => l_msg_data) ;
12468 l_records_read := 1;
12469 -- If any errors happen change concurrent status. --Bug#10359221
12470 IF l_return_status = L_FND_RET_STS_ERROR OR l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12471 INL_LOGGING_PVT.Log_Statement (
12472 p_module_name => g_module_name,
12473 p_procedure_name => l_program_name,
12474 p_debug_info => 'Rollback '
12475 ) ;
12476 retcode := 1;
12477 ROLLBACK;
12478 l_records_err := 1;
12479 ELSE
12480 INL_LOGGING_PVT.Log_Statement (
12481 p_module_name => g_module_name,
12482 p_procedure_name => l_program_name,
12483 p_debug_info => 'Commit '
12484 ) ;
12485 l_records_processed := 1;
12486 COMMIT;
12487 END IF;
12488 INL_LOGGING_PVT.Log_Statement (
12489 p_module_name => g_module_name,
12490 p_procedure_name => l_program_name,
12491 p_debug_info => 'retcode: '||retcode||' l_records_processed: '||l_records_processed
12492 ) ;
12493 -- Submit ALL Pending Shipments
12494 ELSE
12495
12496 --Bug#10359221
12497 --Opening the cursor of pending shipments
12498 INL_LOGGING_PVT.Log_Statement (
12499 p_module_name => g_module_name,
12500 p_procedure_name => l_program_name,
12501 p_debug_info => 'Opening the cursor of pending shipments'
12502 ) ;
12503
12504 OPEN c_pending_shipments;
12505 FETCH c_pending_shipments BULK COLLECT INTO l_pending_shipments_lst;
12506 CLOSE c_pending_shipments;
12507 --Bug#10359221
12508 l_debug_info := l_pending_shipments_lst.LAST||' lines have been retrieved.';
12509 INL_LOGGING_PVT.Log_Statement (
12510 p_module_name => g_module_name,
12511 p_procedure_name => l_program_name,
12512 p_debug_info => l_debug_info
12513 ) ;
12514 IF NVL(l_pending_shipments_lst.LAST, 0) > 0 THEN
12515 FOR i IN NVL(l_pending_shipments_lst.FIRST, 0)..NVL(l_pending_shipments_lst.LAST, 0)
12516 LOOP
12517 --Bug#10381495
12518 IF (l_pending_shipments_lst(i).org_id <> l_current_org_id) THEN
12519 INL_LOGGING_PVT.Log_Statement(
12520 p_module_name => g_module_name,
12521 p_procedure_name => l_program_name,
12522 p_debug_info => 'Seting a new context from '||l_current_org_id||' to '||l_pending_shipments_lst(i).org_id
12523 );
12524 l_current_org_id:=l_pending_shipments_lst(i).org_id;
12525 mo_global.set_policy_context( 'S', l_current_org_id);
12526 INL_LOGGING_PVT.Log_Statement(
12527 p_module_name => g_module_name,
12528 p_procedure_name => l_program_name,
12529 p_debug_info => 'l_current_org_id: '||l_current_org_id
12530 );
12531 END IF;
12532 --Bug#10381495
12533 l_records_read := l_records_read + 1;
12534 SAVEPOINT Complete_PendingShipment_int;
12535 l_debug_info := 'Before runnig Submit process for the Shipment Id: ' || l_pending_shipments_lst(i).ship_header_id;
12536 INL_LOGGING_PVT.Log_Statement (
12537 p_module_name => g_module_name,
12538 p_procedure_name => l_program_name,
12539 p_debug_info => l_debug_info
12540 ) ;
12541 ProcessAction (
12542 p_api_version => 1.0,
12543 p_init_msg_list => L_FND_FALSE,
12544 p_commit => L_FND_FALSE,
12545 p_ship_header_id => l_pending_shipments_lst(i).ship_header_id,
12546 p_task_code => '60', -- Process until Submit task
12547 p_caller => 'C', -- SCM-051
12548 x_return_status => l_return_status,
12549 x_msg_count => l_msg_count,
12550 x_msg_data => l_msg_data) ;
12551
12552 -- If any errors happen change concurrent status. --Bug#10359221
12553 IF l_return_status = L_FND_RET_STS_ERROR
12554 OR l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12555 --Problem with ProcessAction
12556 INL_LOGGING_PVT.Log_Statement (
12557 p_module_name => g_module_name,
12558 p_procedure_name => l_program_name,
12559 p_debug_info => 'Problem with ProcessAction: Rollback'
12560 ) ;
12561
12562 retcode := 1;
12563 --Bug#10359221
12564 ROLLBACK TO Complete_PendingShipment_int;
12565 INL_LOGGING_PVT.Log_Statement (
12566 p_module_name => g_module_name,
12567 p_procedure_name => l_program_name,
12568 p_debug_info => 'Error found. '
12569 ) ;
12570 l_records_err := l_records_err + 1;
12571 ELSE
12572 l_records_processed := l_records_processed + 1;
12573 l_ac_proc := l_ac_proc + 1;
12574 END IF;
12575 IF l_ac_proc >= l_partial_commit_at THEN
12576 -- Partial commit limit reached
12577 INL_LOGGING_PVT.Log_Statement (
12578 p_module_name => g_module_name,
12579 p_procedure_name => l_program_name,
12580 p_debug_info => 'Partial commit limit reached. '
12581 ) ;
12582 COMMIT;
12583 l_ac_proc := 0;
12584 END IF;
12585 END LOOP;
12586 COMMIT;
12587 END IF;
12588 --Bug#10359221
12589 END IF;
12590 -- Setting error bufer and return code
12591 IF l_msg_count = 1 THEN
12592 FND_FILE.PUT_LINE(FND_FILE.LOG, l_msg_data);
12593 retcode := 1;
12594 ELSIF l_msg_count > 1 THEN
12595 FND_FILE.PUT_LINE(FND_FILE.LOG, l_msg_count|| ' warnings found.' );
12596 FOR i IN 1 ..l_msg_count
12597 LOOP
12598 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MSG_PUB.get (i, L_FND_FALSE) );
12599 END LOOP;
12600 retcode := 1;
12601 END IF;
12602 INL_LOGGING_PVT.Log_Statement (
12603 p_module_name => g_module_name,
12604 p_procedure_name => l_program_name,
12605 p_debug_info => '< ***** ' || 'Records Read : ' || l_records_read
12606 ) ;
12607 INL_LOGGING_PVT.Log_Statement (
12608 p_module_name => g_module_name,
12609 p_procedure_name => l_program_name,
12610 p_debug_info => '< ***** ' || 'Records Processed : ' || l_records_processed
12611 ) ;
12612 INL_LOGGING_PVT.Log_Statement (
12613 p_module_name => g_module_name,
12614 p_procedure_name => l_program_name,
12615 p_debug_info => '< ***** ' || 'Records Errored : ' || l_records_err
12616 ) ;
12617 -- Write the number of records processed and inserted by this concurrent process
12618 FND_FILE.put_line( FND_FILE.log, '< **************************************>');
12619 FND_FILE.put_line( FND_FILE.log, '< ***** ' || 'Records Read : ' || l_records_read); -- Bug#10359221
12620 FND_FILE.put_line( FND_FILE.log, '< ***** ' || 'Records Processed: ' || l_records_processed); -- Bug #9258936
12621 FND_FILE.put_line( FND_FILE.log, '< ***** ' || 'Records Errored : ' || l_records_err); -- Bug#10359221
12622 FND_FILE.put_line( FND_FILE.log, '< **************************************>');
12623 --Bug#10359221
12624 --Bug#10381495
12625 IF (l_current_org_id <> NVL(l_previous_org_id,-999)) THEN
12626 INL_LOGGING_PVT.Log_Statement(
12627 p_module_name => g_module_name,
12628 p_procedure_name => l_program_name,
12629 p_debug_info => 'Restore previous context: from '||l_current_org_id||' to '||l_previous_org_id
12630 );
12631 mo_global.set_policy_context( l_previous_access_mode, l_previous_org_id);
12632 END IF;
12633 --Bug#10381495
12634
12635 -- Standard End of Procedure/Function Logging
12636 INL_LOGGING_PVT.Log_EndProc (
12637 p_module_name => g_module_name,
12638 p_procedure_name => l_program_name) ;
12639 EXCEPTION
12640 WHEN L_FND_EXC_ERROR THEN
12641 -- Standard Expected Error Logging
12642 INL_LOGGING_PVT.Log_ExpecError (
12643 p_module_name => g_module_name,
12644 p_procedure_name => l_program_name) ;
12645 --Bug#10381495
12646 IF (l_current_org_id <> NVL(l_previous_org_id,-999)) THEN
12647 INL_LOGGING_PVT.Log_Statement(
12648 p_module_name => g_module_name,
12649 p_procedure_name => l_program_name,
12650 p_debug_info => 'Restore previous context: from '||l_current_org_id||' to '||l_previous_org_id
12651 );
12652 mo_global.set_policy_context( l_previous_access_mode, l_previous_org_id);
12653 END IF;
12654 --Bug#10381495
12655 retcode := 1;
12656 errbuf := errbuf ||' G_EXC_ERROR '||SQLERRM;
12657 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
12658 -- Standard Unexpected Error Logging
12659 INL_LOGGING_PVT.Log_UnexpecError (
12660 p_module_name => g_module_name,
12661 p_procedure_name => l_program_name) ;
12662 --Bug#10381495
12663 IF (l_current_org_id <> NVL(l_previous_org_id,-999)) THEN
12664 INL_LOGGING_PVT.Log_Statement(
12665 p_module_name => g_module_name,
12666 p_procedure_name => l_program_name,
12667 p_debug_info => 'Restore previous context: from '||l_current_org_id||' to '||l_previous_org_id
12668 );
12669 mo_global.set_policy_context( l_previous_access_mode, l_previous_org_id);
12670 END IF;
12671 --Bug#10381495
12672 retcode := 2;
12673 errbuf := errbuf ||' G_EXC_UNEXPECTED_ERROR '||SQLERRM;
12674 WHEN OTHERS THEN
12675 -- Standard Unexpected Error Logging
12676 INL_LOGGING_PVT.Log_UnexpecError (
12677 p_module_name => g_module_name,
12678 p_procedure_name => l_program_name) ;
12679 --Bug#10381495
12680 IF (l_current_org_id <> NVL(l_previous_org_id,-999)) THEN
12681 INL_LOGGING_PVT.Log_Statement(
12682 p_module_name => g_module_name,
12683 p_procedure_name => l_program_name,
12684 p_debug_info => 'Restore previous context: from '||l_current_org_id||' to '||l_previous_org_id
12685 );
12686 mo_global.set_policy_context( l_previous_access_mode, l_previous_org_id);
12687 END IF;
12688 --Bug#10381495
12689 retcode := 2;
12690 errbuf := errbuf ||' OTHERS '||SQLERRM;
12691 END Complete_PendingShipment;
12692 -- Utility name : Update_PendingMatchingFlag
12693 -- Type : Private
12694 -- Function : This is the Table Handler to be used for updating
12695 -- the Pending Matching Flag for given Shipment Header.
12696 -- Pre-reqs : None
12697 -- Parameters :
12698 -- IN : p_ship_header_id IN NUMBER
12699 -- p_pending_matching_flag IN VARCHAR
12700 -- OUT x_return_status OUT NOCOPY VARCHAR2
12701 --
12702 -- Version : Current version 1.0
12703 --
12704 -- Notes :
12705 PROCEDURE Update_PendingMatchingFlag(
12706 p_ship_header_id IN NUMBER,
12707 p_pending_matching_flag IN VARCHAR,
12708 x_return_status OUT NOCOPY VARCHAR2
12709 ) IS
12710 l_program_name CONSTANT VARCHAR2 (100) := 'Update_PendingMatchingFlag';
12711 BEGIN
12712 INL_LOGGING_PVT.Log_BeginProc ( p_module_name => g_module_name, p_procedure_name => l_program_name) ;
12713 -- Initialize API return status to success
12714 x_return_status := L_FND_RET_STS_SUCCESS;
12715 UPDATE inl_ship_headers_all sh --Bug#10381495
12716 SET sH.pending_matching_flag = p_pending_matching_flag ,
12717 -- created_by = L_FND_USER_ID ,
12718 -- creation_date = SYSDATE ,
12719 sH.last_updated_by = L_FND_USER_ID ,
12720 sH.last_update_date = SYSDATE ,
12721 sH.last_update_login = L_FND_LOGIN_ID ,
12722 sH.request_id = L_FND_CONC_REQUEST_ID ,
12723 sH.program_id = L_FND_CONC_PROGRAM_ID ,
12724 sH.program_update_date = SYSDATE ,
12725 sH.program_application_id = L_FND_PROG_APPL_ID
12726 WHERE sH.ship_header_id = p_ship_header_id;
12727 INL_LOGGING_PVT.Log_EndProc (
12728 p_module_name => g_module_name,
12729 p_procedure_name => l_program_name
12730 ) ;
12731 EXCEPTION
12732 WHEN L_FND_EXC_ERROR THEN
12733 -- Standard Expected Error Logging
12734 INL_LOGGING_PVT.Log_ExpecError (
12735 p_module_name => g_module_name,
12736 p_procedure_name => l_program_name
12737 ) ;
12738 x_return_status := L_FND_RET_STS_ERROR;
12739 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
12740 -- Standard Unexpected Error Logging
12741 INL_LOGGING_PVT.Log_UnexpecError (
12742 p_module_name => g_module_name,
12743 p_procedure_name => l_program_name
12744 ) ;
12745 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
12746 WHEN OTHERS THEN
12747 -- Standard Unexpected Error Logging
12748 INL_LOGGING_PVT.Log_UnexpecError (
12749 p_module_name => g_module_name,
12750 p_procedure_name => l_program_name
12751 ) ;
12752 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
12753 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
12754 FND_MSG_PUB.Add_Exc_Msg (
12755 p_pkg_name => g_pkg_name,
12756 p_procedure_name => l_program_name
12757 ) ;
12758 END IF;
12759 END Update_PendingMatchingFlag;
12760 -- API name : Delete_ChargeAssoc
12761 -- Type : Private
12762 -- Function : Check shipments affected by a charge deletion
12763 -- or an association of charge deletion
12764 --
12765 -- Pre-reqs : None
12766 -- Parameters :
12767 -- IN :
12768 -- p_api_version IN NUMBER Required
12769 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
12770 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
12771 -- p_ship_header_id IN NUMBER
12772 -- p_charge_line_id IN NUMBER
12773 -- OUT :
12774 -- x_return_status OUT NOCOPY VARCHAR2
12775 -- x_msg_count OUT NOCOPY NUMBER
12776 -- x_msg_data OUT NOCOPY VARCHAR2
12777 --
12778 --
12779 -- Version : Current version 1.0
12780 --
12781 -- Notes :
12782 PROCEDURE Delete_ChargeAssoc(
12783 p_api_version IN NUMBER,
12784 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
12785 p_commit IN VARCHAR2 := L_FND_FALSE,
12786 p_ship_header_id IN NUMBER,
12787 p_charge_line_id IN NUMBER,
12788 x_return_status OUT NOCOPY VARCHAR2,
12789 x_msg_count OUT NOCOPY NUMBER,
12790 x_msg_data OUT NOCOPY VARCHAR2
12791 ) IS
12792 l_api_name CONSTANT VARCHAR2 (30) := 'Delete_ChargeAssoc';
12793 l_api_version CONSTANT NUMBER := 1.0;
12794 l_debug_info VARCHAR2 (200) ;
12795 l_return_status VARCHAR2 (1) ;
12796 l_msg_count NUMBER;
12797 l_msg_data VARCHAR2 (2000) ;
12798 CURSOR c_affected_ship
12799 IS
12800 SELECT a.ship_header_id ,
12801 sh.ship_status_code ship_status,
12802 sh.pending_matching_flag
12803 FROM inl_associations a,
12804 inl_ship_headers sh
12805 WHERE sh.ship_header_id = a.ship_header_id
12806 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
12807 AND a.from_parent_table_id = p_charge_line_id
12808 AND a.ship_header_id <> p_ship_header_id;
12809 r_affected_ship c_affected_ship%ROWTYPE;
12810 BEGIN
12811 -- Standard Beginning of Procedure/Function Logging
12812 INL_LOGGING_PVT.Log_BeginProc ( p_module_name => g_module_name, p_procedure_name => l_api_name) ;
12813 -- Standard Start of API savepoint
12814 SAVEPOINT Delete_ChargeAssoc_PVT;
12815 -- Initialize message list if p_init_msg_list is set to TRUE.
12816 IF FND_API.to_Boolean (p_init_msg_list) THEN
12817 FND_MSG_PUB.initialize;
12818 END IF;
12819 -- Check for call compatibility.
12820 IF NOT FND_API.Compatible_API_Call (p_current_version_number => l_api_version, p_caller_version_number => p_api_version, p_api_name => l_api_name, p_pkg_name => g_pkg_name) THEN
12821 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12822 END IF;
12823 -- Initialize API return status to success
12824 x_return_status := L_FND_RET_STS_SUCCESS;
12825 -- API Body
12826 BEGIN
12827 OPEN c_affected_ship;
12828 LOOP
12829 FETCH c_affected_ship INTO r_affected_ship;
12830 EXIT
12831 WHEN c_affected_ship%NOTFOUND;
12832 INL_LOGGING_PVT.Log_Variable (p_module_name => g_module_name, p_procedure_name => l_api_name, p_var_name => 'ship_status', p_var_value => r_affected_ship.ship_status) ;
12833 IF (r_affected_ship.ship_status = 'VALIDATED') THEN
12834 Set_ToRevalidate (1.0, L_FND_FALSE, L_FND_FALSE, r_affected_ship.ship_header_id, l_msg_count, l_msg_data, l_return_status) ;
12835 -- If any errors happen abort the process.
12836 IF l_return_status = L_FND_RET_STS_ERROR THEN
12837 RAISE L_FND_EXC_ERROR;
12838 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
12839 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12840 END IF;
12841 ELSIF (r_affected_ship.ship_status = 'COMPLETED') THEN
12842 Update_PendingMatchingFlag (r_affected_ship.ship_header_id, 'Y', l_return_status) ;
12843 IF l_return_status <> L_FND_RET_STS_SUCCESS THEN
12844 FND_MESSAGE.SET_NAME ('INL', 'INL_UNEXPECTED_ERR') ;
12845 FND_MSG_PUB.ADD;
12846 IF l_return_status = L_FND_RET_STS_ERROR THEN
12847 RAISE L_FND_EXC_ERROR;
12848 ELSE
12849 RAISE L_FND_EXC_UNEXPECTED_ERROR;
12850 END IF;
12851 END IF;
12852 END IF;
12853 END LOOP;
12854 CLOSE c_affected_ship;
12855 END;
12856 -- Standard check of p_commit.
12857 IF FND_API.To_Boolean (p_commit) THEN
12858 COMMIT WORK;
12859 END IF;
12860 -- Standard call to get message count and if count is 1, get message info.
12861 FND_MSG_PUB.Count_And_Get (
12862 p_encoded => L_FND_FALSE,
12863 p_count => x_msg_count,
12864 p_data => x_msg_data) ;
12865 -- Standard End of Procedure/Function Logging
12866 INL_LOGGING_PVT.Log_EndProc (
12867 p_module_name => g_module_name,
12868 p_procedure_name => l_api_name) ;
12869 EXCEPTION
12870 WHEN L_FND_EXC_ERROR THEN
12871 -- Standard Expected Error Logging
12872 INL_LOGGING_PVT.Log_ExpecError (
12873 p_module_name => g_module_name,
12874 p_procedure_name => l_api_name) ;
12875 ROLLBACK TO Delete_ChargeAssoc_PVT;
12876 x_return_status := L_FND_RET_STS_ERROR;
12877 FND_MSG_PUB.Count_And_Get (
12878 p_encoded => L_FND_FALSE,
12879 p_count => x_msg_count,
12880 p_data => x_msg_data) ;
12881 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
12882 -- Standard Unexpected Error Logging
12883 INL_LOGGING_PVT.Log_UnexpecError (
12884 p_module_name => g_module_name,
12885 p_procedure_name => l_api_name) ;
12886 ROLLBACK TO Delete_ChargeAssoc_PVT;
12887 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
12888 FND_MSG_PUB.Count_And_Get (
12889 p_encoded => L_FND_FALSE,
12890 p_count => x_msg_count,
12891 p_data => x_msg_data) ;
12892 WHEN OTHERS THEN
12893 -- Standard Unexpected Error Logging
12894 INL_LOGGING_PVT.Log_UnexpecError (
12895 p_module_name => g_module_name,
12896 p_procedure_name => l_api_name) ;
12897 ROLLBACK TO Delete_ChargeAssoc_PVT;
12898 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
12899 IF FND_MSG_PUB.Check_Msg_Level (
12900 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
12901 ) THEN
12902 FND_MSG_PUB.Add_Exc_Msg (
12903 p_pkg_name => g_pkg_name,
12904 p_procedure_name => l_api_name) ;
12905 END IF;
12906 FND_MSG_PUB.Count_And_Get ( p_encoded => L_FND_FALSE, p_count => x_msg_count, p_data => x_msg_data) ;
12907 END Delete_ChargeAssoc;
12908
12909 -- Utility name : Get_MatchedTaxNRecAmt
12910 -- Type : Public
12911 -- Function : Get the sum of Non-Recoverable Tax
12912 -- amounts for a particular Tax Line on LCM.
12913 -- This function can also return Taxes on a particular Cost Factor.
12914 --
12915 -- Pre-reqs : None
12916 -- Parameters :
12917 -- IN : p_ship_header_id IN NUMBER
12918 -- p_ship_line_id IN NUMBER
12919 -- p_charge_line_type_id IN NUMBER
12920 -- p_tax_code IN VARCHAR2
12921 -- p_functional_curr_code IN VARCHAR2
12922 --
12923 -- Version : Current version 1.0
12924 --
12925 -- Notes :
12926 FUNCTION Get_MatchedTaxNRecAmt(
12927 p_ship_header_id IN NUMBER,
12928 p_ship_line_id IN NUMBER,
12929 p_charge_line_type_id IN NUMBER,
12930 p_tax_code IN VARCHAR2
12931 -- p_functional_curr_code IN VARCHAR2 SCM-051
12932
12933 ) RETURN NUMBER IS
12934
12935 l_program_name CONSTANT VARCHAR2(30) := 'Get_MatchedTaxNRecAmt';
12936 l_debug_info VARCHAR2(200);
12937 l_nrec_tax_amt NUMBER;
12938
12939 BEGIN
12940
12941 -- Standard Beginning of Procedure/Function Logging
12942 INL_LOGGING_PVT.Log_BeginProc (
12943 p_module_name => g_module_name,
12944 p_procedure_name => l_program_name) ;
12945 -- Logging variables
12946 INL_LOGGING_PVT.Log_Variable (
12947 p_module_name => g_module_name,
12948 p_procedure_name => l_program_name,
12949 p_var_name => 'p_ship_header_id',
12950 p_var_value => p_ship_header_id);
12951 INL_LOGGING_PVT.Log_Variable (
12952 p_module_name => g_module_name,
12953 p_procedure_name => l_program_name,
12954 p_var_name => 'p_ship_line_id',
12955 p_var_value => p_ship_line_id) ;
12956 INL_LOGGING_PVT.Log_Variable (
12957 p_module_name => g_module_name,
12958 p_procedure_name => l_program_name,
12959 p_var_name => 'p_charge_line_type_id',
12960 p_var_value => p_charge_line_type_id) ;
12961 INL_LOGGING_PVT.Log_Variable (
12962 p_module_name => g_module_name,
12963 p_procedure_name => l_program_name,
12964 p_var_name => 'p_tax_code',
12965 p_var_value => p_tax_code) ;
12966 /* SCM-051
12967 INL_LOGGING_PVT.Log_Variable (
12968 p_module_name => g_module_name,
12969 p_procedure_name => l_program_name,
12970 p_var_name => 'p_functional_curr_code',
12971 p_var_value => p_functional_curr_code) ;
12972 */
12973 --SCM-051
12974 SELECT SUM(NVL(a.nrec_tax_amt,0) * NVL(a.matched_curr_conversion_rate,1)) -- Bug #10102991 --Bug#1405859
12975 INTO l_nrec_tax_amt
12976 FROM inl_matches a
12977 WHERE a.ship_header_id = p_ship_header_id
12978 AND a.to_parent_table_name = 'INL_SHIP_LINES'
12979 AND a.to_parent_table_id = (SELECT NVL(MAX(b.parent_ship_line_id), p_ship_line_id)
12980 FROM inl_ship_lines_all b
12981 WHERE b.ship_line_id = p_ship_line_id)
12982
12983 AND a.match_type_code = 'TAX'
12984 AND (p_charge_line_type_id IS NULL OR a.charge_line_type_id = p_charge_line_type_id)
12985 AND (p_tax_code IS NULL OR a.tax_code = p_tax_code)
12986 -- Bug 8879575
12987 AND a.adjustment_num = (SELECT NVL(MAX(c.adjustment_num), a.adjustment_num)
12988 FROM inl_matches c
12989 WHERE c.ship_header_id = a.ship_header_id
12990 AND c.from_parent_table_name = a.from_parent_table_name
12991 AND c.from_parent_table_id = a.from_parent_table_id
12992 AND c.to_parent_table_name = a.to_parent_table_name
12993 AND c.to_parent_table_id = a.to_parent_table_id
12994 AND c.match_type_code = a.match_type_code
12995 AND c.tax_code = a.tax_code
12996 AND c.existing_match_info_flag = 'Y')
12997 AND NOT EXISTS (SELECT 1
12998 FROM inl_matches d
12999 WHERE d.ship_header_id = a.ship_header_id
13000 AND d.from_parent_table_name = a.from_parent_table_name
13001 AND d.from_parent_table_id = a.from_parent_table_id
13002 AND d.to_parent_table_name = a.to_parent_table_name
13003 AND d.to_parent_table_id = a.to_parent_table_id
13004 AND d.existing_match_info_flag = 'Y'
13005 AND d.parent_match_id = a.match_id)
13006 -- Bug 8879575
13007 --Bug#14058596 GROUP BY a.matched_curr_code, a.matched_curr_conversion_rate
13008 ;
13009
13010 INL_LOGGING_PVT.Log_Variable (
13011 p_module_name => g_module_name,
13012 p_procedure_name => l_program_name,
13013 p_var_name => 'l_nrec_tax_amt',
13014 p_var_value => l_nrec_tax_amt) ;
13015
13016 -- Standard End of Procedure/Function Logging
13017 INL_LOGGING_PVT.Log_EndProc (
13018 p_module_name => g_module_name,
13019 p_procedure_name => l_program_name) ;
13020 RETURN l_nrec_tax_amt;
13021 EXCEPTION
13022 WHEN OTHERS THEN
13023 -- Standard Unexpected Error Logging
13024 INL_LOGGING_PVT.Log_UnexpecError (
13025 p_module_name => g_module_name,
13026 p_procedure_name => l_program_name) ;
13027 IF FND_MSG_PUB.Check_Msg_Level (
13028 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
13029 ) THEN
13030 FND_MSG_PUB.Add_Exc_Msg (
13031 p_pkg_name => g_pkg_name,
13032 p_procedure_name => l_program_name) ;
13033 END IF;
13034 RETURN null;
13035 END Get_MatchedTaxNRecAmt;
13036
13037 -- Utility name : Get_MatchedChargeAmt
13038 -- Type : Public
13039 -- Function : Get the sum of Matched Amounts
13040 -- for a particular Cost Factor.
13041 --
13042 --
13043 -- Pre-reqs : None
13044 -- Parameters :
13045 -- IN : p_ship_header_id IN NUMBER
13046 -- p_ship_line_id IN NUMBER
13047 -- p_charge_line_type_id IN NUMBER
13048 -- p_functional_curr_code IN VARCHAR2
13049 --
13050 -- Version : Current version 1.0
13051 --
13052 -- Notes :
13053 FUNCTION Get_MatchedChargeAmt(
13054 p_ship_header_id IN NUMBER,
13055 p_ship_line_id IN NUMBER,
13056 p_charge_line_type_id IN NUMBER
13057 -- p_functional_curr_code IN VARCHAR2 SCM-051
13058 ) RETURN NUMBER IS
13059
13060 l_program_name CONSTANT VARCHAR2(30) := 'Get_MatchedChargeAmt';
13061 l_debug_info VARCHAR2(200);
13062 l_matched_charge_amt NUMBER;
13063
13064 BEGIN
13065
13066 -- Standard Beginning of Procedure/Function Logging
13067 INL_LOGGING_PVT.Log_BeginProc (
13068 p_module_name => g_module_name,
13069 p_procedure_name => l_program_name) ;
13070 -- Logging variables
13071 INL_LOGGING_PVT.Log_Variable (
13072 p_module_name => g_module_name,
13073 p_procedure_name => l_program_name,
13074 p_var_name => 'p_ship_header_id',
13075 p_var_value => p_ship_header_id);
13076 INL_LOGGING_PVT.Log_Variable (
13077 p_module_name => g_module_name,
13078 p_procedure_name => l_program_name,
13079 p_var_name => 'p_ship_line_id',
13080 p_var_value => p_ship_line_id) ;
13081 INL_LOGGING_PVT.Log_Variable (
13082 p_module_name => g_module_name,
13083 p_procedure_name => l_program_name,
13084 p_var_name => 'p_charge_line_type_id',
13085 p_var_value => p_charge_line_type_id) ;
13086 /* SCM-051
13087 INL_LOGGING_PVT.Log_Variable (
13088 p_module_name => g_module_name,
13089 p_procedure_name => l_program_name,
13090 p_var_name => 'p_functional_curr_code',
13091 p_var_value => p_functional_curr_code) ;
13092 */
13093 --SCM-051
13094 SELECT SUM(NVL(a.matched_amt,0) * NVL(a.matched_curr_conversion_rate,1)) -- Bug #10102991--Bug#14058596
13095 INTO l_matched_charge_amt
13096 FROM inl_matches a
13097 WHERE a.ship_header_id = p_ship_header_id
13098 AND a.to_parent_table_name = 'INL_SHIP_LINES'
13099 AND a.to_parent_table_id = (select NVL(MAX(b.parent_ship_line_id), p_ship_line_id)
13100 from inl_ship_lines_all b
13101 where b.ship_line_id = p_ship_line_id)
13102 AND a.match_type_code = 'CHARGE'
13103 AND a.charge_line_type_id = p_charge_line_type_id
13104 -- Bug 8879575
13105 AND a.adjustment_num = (select NVL(MAX(c.adjustment_num), a.adjustment_num)
13106 from inl_matches c
13107 where c.ship_header_id = a.ship_header_id
13108 and c.from_parent_table_name = a.from_parent_table_name
13109 and c.from_parent_table_id = a.from_parent_table_id
13110 and c.to_parent_table_name = a.to_parent_table_name
13111 and c.to_parent_table_id = a.to_parent_table_id
13112 and c.match_type_code = a.match_type_code
13113 and c.charge_line_type_id = a.charge_line_type_id
13114 and c.existing_match_info_flag = 'Y')
13115 AND NOT EXISTS (select 1
13116 from inl_matches d
13117 where d.ship_header_id = a.ship_header_id
13118 and d.from_parent_table_name = a.from_parent_table_name
13119 and d.from_parent_table_id = a.from_parent_table_id
13120 and d.to_parent_table_name = a.to_parent_table_name
13121 and d.to_parent_table_id = a.to_parent_table_id
13122 and d.existing_match_info_flag = 'Y'
13123 and d.parent_match_id = a.match_id)
13124 -- Bug 8879575
13125 -- GROUP BY a.matched_curr_code, a.matched_curr_conversion_rate SCM-051
13126 ;
13127 --SCM-051
13128
13129 INL_LOGGING_PVT.Log_Variable ( --Bug#14058596
13130 p_module_name => g_module_name,
13131 p_procedure_name => l_program_name,
13132 p_var_name => 'l_matched_charge_amt',
13133 p_var_value => l_matched_charge_amt) ;
13134
13135 -- Standard End of Procedure/Function Logging
13136 INL_LOGGING_PVT.Log_EndProc ( p_module_name => g_module_name,
13137 p_procedure_name => l_program_name) ;
13138 RETURN l_matched_charge_amt;
13139 EXCEPTION
13140 WHEN OTHERS THEN
13141 -- Standard Unexpected Error Logging
13142 INL_LOGGING_PVT.Log_UnexpecError (
13143 p_module_name => g_module_name,
13144 p_procedure_name => l_program_name) ;
13145 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
13146 FND_MSG_PUB.Add_Exc_Msg (
13147 p_pkg_name => g_pkg_name,
13148 p_procedure_name => l_program_name) ;
13149 END IF;
13150 RETURN null;
13151 END Get_MatchedChargeAmt;
13152
13153 -- Utility name : Get_MatchedItemAmt
13154 -- Type : Public
13155 -- Function : Get the sum of match amounts for a particular Item or
13156 -- depending on the p_summarized_matched_amt, it can also
13157 -- return matched amount summarized for the LCM Ship. Line
13158 --
13159 --
13160 -- Pre-reqs : None
13161 -- Parameters :
13162 -- IN : p_ship_header_id IN NUMBER
13163 -- p_ship_line_id IN NUMBER
13164 -- p_functional_curr_code IN VARCHAR2
13165 --
13166 -- Version : Current version 1.0
13167 --
13168 -- Notes :
13169 FUNCTION Get_MatchedItemAmt(
13170 p_ship_header_id IN NUMBER,
13171 p_ship_line_id IN NUMBER,
13172 p_summarized_matched_amt IN VARCHAR2
13173 -- p_functional_curr_code IN VARCHAR2 SCM-051
13174 ) RETURN NUMBER IS
13175
13176 l_program_name CONSTANT VARCHAR2(30) := 'Get_MatchedItemAmt';
13177 l_debug_info VARCHAR2(200);
13178 l_matched_item_amt NUMBER;
13179
13180 BEGIN
13181
13182 -- Standard Beginning of Procedure/Function Logging
13183 INL_LOGGING_PVT.Log_BeginProc (
13184 p_module_name => g_module_name,
13185 p_procedure_name => l_program_name) ;
13186 -- Logging variables
13187 INL_LOGGING_PVT.Log_Variable (
13188 p_module_name => g_module_name,
13189 p_procedure_name => l_program_name,
13190 p_var_name => 'p_ship_header_id',
13191 p_var_value => p_ship_header_id);
13192
13193 INL_LOGGING_PVT.Log_Variable (
13194 p_module_name => g_module_name,
13195 p_procedure_name => l_program_name,
13196 p_var_name => 'p_ship_line_id',
13197 p_var_value => p_ship_line_id) ;
13198 /* SCM-051
13199 INL_LOGGING_PVT.Log_Variable (
13200 p_module_name => g_module_name,
13201 p_procedure_name => l_program_name,
13202 p_var_name => 'p_functional_curr_code',
13203 p_var_value => p_functional_curr_code) ;
13204 */
13205 --SCM-051
13206 SELECT SUM(NVL(a.matched_amt,0) * NVL(a.matched_curr_conversion_rate,1)) -- Bug #10102991--Bug#14058596
13207 INTO l_matched_item_amt
13208 FROM inl_matches a
13209 WHERE a.ship_header_id = p_ship_header_id
13210 AND a.to_parent_table_name = 'INL_SHIP_LINES'
13211 AND a.to_parent_table_id = (SELECT NVL(MAX(b.parent_ship_line_id), p_ship_line_id)
13212 FROM inl_ship_lines_all b
13213 WHERE b.ship_line_id = p_ship_line_id)
13214 AND ((p_summarized_matched_amt = 'Y' AND a.match_type_code <> 'TAX')
13215 OR (p_summarized_matched_amt = 'N'
13216 AND a.match_type_code = 'ITEM'))
13217 -- Bug 8879575
13218 AND a.adjustment_num = (SELECT NVL(MAX(c.adjustment_num), a.adjustment_num)
13219 FROM inl_matches c
13220 WHERE c.ship_header_id = a.ship_header_id
13221 AND c.from_parent_table_name = a.from_parent_table_name
13222 AND c.from_parent_table_id = a.from_parent_table_id
13223 AND c.to_parent_table_name = a.to_parent_table_name
13224 AND c.to_parent_table_id = a.to_parent_table_id
13225 AND c.match_type_code = a.match_type_code
13226 AND c.existing_match_info_flag = 'Y')
13227 AND NOT EXISTS (SELECT 1
13228 FROM inl_matches d
13229 WHERE d.ship_header_id = a.ship_header_id
13230 AND d.from_parent_table_name = a.from_parent_table_name
13231 AND d.from_parent_table_id = a.from_parent_table_id
13232 AND d.to_parent_table_name = a.to_parent_table_name
13233 AND d.to_parent_table_id = a.to_parent_table_id
13234 AND d.existing_match_info_flag = 'Y'
13235 AND d.parent_match_id = a.match_id)
13236 --GROUP BY matched_curr_code, a.matched_curr_conversion_rate
13237 ;
13238
13239 INL_LOGGING_PVT.Log_Variable ( --Bug#14058596
13240 p_module_name => g_module_name,
13241 p_procedure_name => l_program_name,
13242 p_var_name => 'l_matched_item_amt',
13243 p_var_value => l_matched_item_amt) ;
13244
13245 -- Standard End of Procedure/Function Logging
13246 INL_LOGGING_PVT.Log_EndProc (
13247 p_module_name => g_module_name,
13248 p_procedure_name => l_program_name) ;
13249 RETURN l_matched_item_amt;
13250 EXCEPTION
13251 WHEN OTHERS THEN
13252 -- Standard Unexpected Error Logging
13253 INL_LOGGING_PVT.Log_UnexpecError (
13254 p_module_name => g_module_name,
13255 p_procedure_name => l_program_name) ;
13256 IF FND_MSG_PUB.Check_Msg_Level (
13257 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
13258 ) THEN
13259 FND_MSG_PUB.Add_Exc_Msg (
13260 p_pkg_name => g_pkg_name,
13261 p_procedure_name => l_program_name) ;
13262 END IF;
13263 RETURN null;
13264 END Get_MatchedItemAmt;
13265
13266 -- Utility name : Get_MatchedAmt
13267 -- Type : Public
13268 -- Function : Get the sum of matched amounts for a given
13269 -- Item, Charge or Tax and return it converted
13270 -- into the Functional Currency Code. By using the
13271 -- p_summarized_matched_amt parameter, it is also
13272 -- possible to calculate the matched amount summarized
13273 -- for a particular LCM Shipment Line.
13274 -- Pre-reqs : None
13275 -- Parameters :
13276 -- IN : p_ship_header_id IN NUMBER
13277 -- p_ship_line_id IN NUMBER
13278 -- p_charge_line_type_id IN NUMBER
13279 -- p_tax_code IN VARCHAR2
13280 -- p_match_table_name IN VARCHAR2
13281 -- p_summarized_matched_amt IN VARCHAR2
13282 --
13283 -- Version : Current version 1.0
13284 --
13285 -- Notes :
13286 FUNCTION Get_MatchedAmt(
13287 p_ship_header_id IN NUMBER,
13288 p_ship_line_id IN NUMBER,
13289 p_charge_line_type_id IN NUMBER,
13290 p_tax_code IN VARCHAR2,
13291 p_match_table_name IN VARCHAR2,
13292 p_summarized_matched_amt IN VARCHAR2) RETURN NUMBER
13293 IS
13294
13295 l_program_name CONSTANT VARCHAR2(30) := 'Get_MatchedAmt';
13296 l_debug_info VARCHAR2(200);
13297 -- l_func_currency_code VARCHAR2(5); SCM-051
13298 l_matched_amt NUMBER:=0;
13299 l_match_type_code VARCHAR2(15);
13300
13301 BEGIN
13302
13303 -- Standard Beginning of Procedure/Function Logging
13304 INL_LOGGING_PVT.Log_BeginProc (
13305 p_module_name => g_module_name,
13306 p_procedure_name => l_program_name) ;
13307 -- Logging variables
13308 INL_LOGGING_PVT.Log_Variable (
13309 p_module_name => g_module_name,
13310 p_procedure_name => l_program_name,
13311 p_var_name => 'p_ship_header_id',
13312 p_var_value => p_ship_header_id);
13313 INL_LOGGING_PVT.Log_Variable (
13314 p_module_name => g_module_name,
13315 p_procedure_name => l_program_name,
13316 p_var_name => 'p_ship_line_id',
13317 p_var_value => p_ship_line_id) ;
13318 INL_LOGGING_PVT.Log_Variable (
13319 p_module_name => g_module_name,
13320 p_procedure_name => l_program_name,
13321 p_var_name => 'p_charge_line_type_id',
13322 p_var_value => p_charge_line_type_id) ;
13323 INL_LOGGING_PVT.Log_Variable (
13324 p_module_name => g_module_name,
13325 p_procedure_name => l_program_name,
13326 p_var_name => 'p_tax_code',
13327 p_var_value => p_tax_code) ;
13328 INL_LOGGING_PVT.Log_Variable (
13329 p_module_name => g_module_name,
13330 p_procedure_name => l_program_name,
13331 p_var_name => 'p_match_table_name',
13332 p_var_value => p_match_table_name) ;
13333 INL_LOGGING_PVT.Log_Variable (
13334 p_module_name => g_module_name,
13335 p_procedure_name => l_program_name,
13336 p_var_name => 'p_summarized_matched_amt',
13337 p_var_value => p_summarized_matched_amt) ;
13338
13339 -- Handle Match Type Code
13340 IF(p_match_table_name = 'INL_SHIP_LINES' OR p_match_table_name IS NULL) THEN
13341 l_match_type_code := 'ITEM';
13342 ELSIF (p_match_table_name = 'INL_CHARGE_LINES') THEN
13343 l_match_type_code := 'CHARGE';
13344 ELSIF (p_match_table_name = 'INL_TAX_LINES') THEN
13345 l_match_type_code := 'TAX';
13346 END IF;
13347 /* --SCM-051
13348 -- Get the functional currency code
13349 SELECT gsb.currency_code
13350 INTO l_func_currency_code
13351 FROM inl_ship_headers_all ish,
13352 gl_sets_of_books gsb,
13353 org_organization_definitions ood
13354 WHERE ish.organization_id = ood.organization_id
13355 AND gsb.set_of_books_id = ood.set_of_books_id
13356 AND ish.ship_header_id = p_ship_header_id;
13357 INL_LOGGING_PVT.Log_Variable (
13358 p_module_name => g_module_name,
13359 p_procedure_name => l_program_name,
13360 p_var_name => 'l_func_currency_code',
13361 p_var_value => l_func_currency_code) ;
13362 */
13363 IF l_match_type_code = 'ITEM' THEN
13364 l_matched_amt:= Get_MatchedItemAmt(
13365 p_ship_header_id => p_ship_header_id,
13366 p_ship_line_id => p_ship_line_id,
13367 p_summarized_matched_amt => p_summarized_matched_amt
13368 -- p_functional_curr_code => l_func_currency_code SCM-051
13369 );
13370
13371 -- In case of summarized match amount,
13372 -- we must add the non recoverable tax
13373 IF(p_summarized_matched_amt = 'Y') THEN
13374 INL_LOGGING_PVT.Log_Variable (
13375 p_module_name => g_module_name,
13376 p_procedure_name => l_program_name,
13377 p_var_name => '1-l_matched_amt',
13378 p_var_value => l_matched_amt) ;
13379 l_matched_amt :=
13380 l_matched_amt + NVL(Get_MatchedTaxNRecAmt(p_ship_header_id => p_ship_header_id,
13381 p_ship_line_id => p_ship_line_id,
13382 p_charge_line_type_id => p_charge_line_type_id,
13383 p_tax_code => p_tax_code
13384 -- p_functional_curr_code => l_func_currency_code SCM-051
13385 ),0);
13386 END IF;
13387 ELSIF l_match_type_code = 'CHARGE' THEN
13388 l_matched_amt := Get_MatchedChargeAmt(p_ship_header_id => p_ship_header_id,
13389 p_ship_line_id => p_ship_line_id,
13390 p_charge_line_type_id => p_charge_line_type_id
13391 -- p_functional_curr_code => l_func_currency_code SCM-051
13392 );
13393 ELSIF l_match_type_code = 'TAX' THEN
13394 l_matched_amt := Get_MatchedTaxNRecAmt(p_ship_header_id => p_ship_header_id,
13395 p_ship_line_id => p_ship_line_id,
13396 p_charge_line_type_id => p_charge_line_type_id,
13397 p_tax_code => p_tax_code
13398 -- p_functional_curr_code => l_func_currency_code SCM-051
13399 );
13400 END IF;
13401 INL_LOGGING_PVT.Log_Variable (
13402 p_module_name => g_module_name,
13403 p_procedure_name => l_program_name,
13404 p_var_name => 'l_matched_amt',
13405 p_var_value => l_matched_amt) ;
13406
13407 -- Standard End of Procedure/Function Logging
13408 INL_LOGGING_PVT.Log_EndProc ( p_module_name => g_module_name,
13409 p_procedure_name => l_program_name) ;
13410 RETURN l_matched_amt;
13411 EXCEPTION
13412 WHEN OTHERS THEN
13413 -- Standard Unexpected Error Logging
13414 INL_LOGGING_PVT.Log_UnexpecError ( p_module_name => g_module_name,
13415 p_procedure_name => l_program_name) ;
13416 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
13417 FND_MSG_PUB.Add_Exc_Msg ( p_pkg_name => g_pkg_name,
13418 p_procedure_name => l_program_name) ;
13419 END IF;
13420 RETURN null;
13421 END Get_MatchedAmt;
13422
13423
13424 -- Bug #9098758
13425 -- Utility name : Get_LastUpdateDateForShip
13426 -- Type : Public
13427 -- Function : Get the higher last update date of all LCM Shipment tables
13428 -- and return it.
13429 --
13430 -- Pre-reqs : None
13431 -- Parameters :
13432 -- IN : p_ship_header_id IN NUMBER
13433 -- Version : Current version 1.0
13434 --
13435 -- Notes :
13436 FUNCTION Get_LastUpdateDateForShip(p_ship_header_id IN NUMBER) RETURN DATE
13437 IS
13438 l_header_last_update_date DATE;
13439 l_group_last_update_date DATE;
13440 l_line_last_update_date DATE;
13441 l_charge_last_update_date DATE;
13442 l_tax_last_update_date DATE;
13443 l_assoc_last_update_date DATE;
13444
13445 --Lowest date supported by database as we need to handle null dates
13446 min_date DATE := TO_DATE('01/01/-4712','DD/MM/SYYYY');
13447
13448 ship_last_update_date DATE;
13449 l_program_name CONSTANT VARCHAR2(30) := 'Get_LastUpdateDateForShip';
13450 l_debug_info VARCHAR2(200);
13451
13452 BEGIN
13453 -- Standard Beginning of Procedure/Function Logging
13454 INL_LOGGING_PVT.Log_BeginProc ( p_module_name => g_module_name,
13455 p_procedure_name => l_program_name) ;
13456 -- Logging variables
13457 INL_LOGGING_PVT.Log_Variable ( p_module_name => g_module_name,
13458 p_procedure_name => l_program_name,
13459 p_var_name => 'p_ship_header_id',
13460 p_var_value => p_ship_header_id);
13461
13462 SELECT NVL(MAX(last_update_date), min_date)
13463 INTO l_header_last_update_date
13464 FROM inl_ship_headers_all
13465 WHERE ship_header_id = p_ship_header_id;
13466
13467 SELECT NVL(MAX(last_update_date), min_date)
13468 INTO l_group_last_update_date
13469 FROM inl_ship_line_groups
13470 WHERE ship_header_id = p_ship_header_id;
13471
13472 SELECT NVL(MAX(last_update_date), min_date)
13473 INTO l_line_last_update_date
13474 FROM inl_ship_lines_all
13475 WHERE ship_header_id = p_ship_header_id;
13476
13477 SELECT NVL(MAX(last_update_date), min_date)
13478 INTO l_assoc_last_update_date
13479 FROM inl_associations
13480 WHERE ship_header_id = p_ship_header_id;
13481
13482 SELECT NVL(MAX(last_update_date), min_date)
13483 INTO l_tax_last_update_date
13484 FROM inl_tax_lines
13485 WHERE ship_header_id = p_ship_header_id;
13486
13487 ship_last_update_date := greatest(l_header_last_update_date,
13488 l_group_last_update_date,
13489 l_line_last_update_date,
13490 l_assoc_last_update_date,
13491 l_tax_last_update_date);
13492
13493 -- Logging variables
13494 INL_LOGGING_PVT.Log_Variable ( p_module_name => g_module_name,
13495 p_procedure_name => l_program_name,
13496 p_var_name => 'ship_last_update_date',
13497 p_var_value => ship_last_update_date);
13498
13499 RETURN(ship_last_update_date);
13500
13501 EXCEPTION
13502 WHEN OTHERS THEN
13503 -- Standard Unexpected Error Logging
13504 INL_LOGGING_PVT.Log_UnexpecError ( p_module_name => g_module_name,
13505 p_procedure_name => l_program_name) ;
13506 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
13507 FND_MSG_PUB.Add_Exc_Msg ( p_pkg_name => g_pkg_name,
13508 p_procedure_name => l_program_name) ;
13509 END IF;
13510 RETURN null;
13511 END Get_LastUpdateDateForShip;
13512 -- Bug /#9098758
13513
13514 -- START Bug #13914863
13515 -- API name : Validate_DualQuantities
13516 -- Type : Private
13517 -- Function : Validates Primary/Secondary quantity deviation
13518 -- when processing Dual UOM controlled items.
13519 -- Pre-reqs : None
13520 -- Parameters :
13521 -- IN : p_api_version IN NUMBER
13522 -- p_init_msg_list IN VARCHAR2 := L_FND_FALSE
13523 -- p_commit IN VARCHAR2 := L_FND_FALSE
13524 -- p_organization_id IN NUMBER
13525 -- p_inventory_item_id IN NUMBER
13526 -- p_primary_qty IN NUMBER
13527 -- p_primary_uom_code IN VARCHAR2
13528 -- p_secondary_qty IN NUMBER
13529 -- p_secondary_uom_code IN VARCHAR2
13530 -- OUT
13531 -- x_return_status OUT NOCOPY VARCHAR2
13532 -- x_msg_count OUT NOCOPY NUMBER
13533 -- x_msg_data OUT NOCOPY VARCHAR2
13534 --
13535 -- Version : Current version 1.0
13536 --
13537 -- Notes :
13538 PROCEDURE Validate_DualQuantities( p_api_version IN NUMBER,
13539 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
13540 p_commit IN VARCHAR2 := L_FND_FALSE,
13541 p_organization_id IN NUMBER,
13542 p_inventory_item_id IN NUMBER,
13543 p_primary_qty IN NUMBER,
13544 p_primary_uom_code IN VARCHAR2,
13545 p_secondary_qty IN NUMBER,
13546 p_secondary_uom_code IN VARCHAR2,
13547 x_return_status OUT NOCOPY VARCHAR2,
13548 x_msg_count OUT NOCOPY NUMBER,
13549 x_msg_data OUT NOCOPY VARCHAR2) IS -- Bug #13914863
13550
13551 l_api_name CONSTANT VARCHAR2(30) := 'Validate_DualQuantities';
13552 l_debug_info VARCHAR2(200);
13553 l_api_version CONSTANT NUMBER := 1.0;
13554 l_lot_number VARCHAR2(30);
13555 l_primary_qty NUMBER;
13556 l_secondary_qty NUMBER;
13557 l_error_message VARCHAR2(2000);
13558 l_item VARCHAR2(40); -- Bug #15927464
13559
13560 BEGIN
13561 -- Standard Beginning of Procedure/Function Logging
13562 INL_LOGGING_PVT.Log_BeginProc (p_module_name => g_module_name,
13563 p_procedure_name => l_api_name);
13564 -- Initialize message list if p_init_msg_list is set to TRUE.
13565 IF FND_API.to_Boolean (p_init_msg_list) THEN
13566 FND_MSG_PUB.initialize;
13567 END IF;
13568 -- Check for call compatibility.
13569 IF NOT
13570 FND_API.Compatible_API_Call (
13571 l_api_version,
13572 p_api_version,
13573 l_api_name,
13574 G_PKG_NAME)
13575 THEN
13576 RAISE L_FND_EXC_UNEXPECTED_ERROR;
13577 END IF;
13578 -- Initialize API return status to success
13579 x_return_status := L_FND_RET_STS_SUCCESS;
13580
13581 -- Assign Primary and Secondary Qty
13582 l_primary_qty := p_primary_qty;
13583 l_secondary_qty := p_secondary_qty;
13584
13585 -- Get Lot Number for the item
13586 BEGIN
13587 SELECT start_auto_lot_number, segment1 -- Bug #15927464
13588 INTO l_lot_number, l_item -- Bug #15927464
13589 FROM mtl_system_items
13590 WHERE organization_id = p_organization_id
13591 AND inventory_item_id = p_inventory_item_id;
13592 EXCEPTION WHEN NO_DATA_FOUND THEN
13593 l_lot_number := NULL;
13594 END;
13595
13596 -- Bug #15927464
13597 IF p_secondary_uom_code IS NOT NULL AND l_secondary_qty IS NULL THEN
13598 l_debug_info := 'Secondary Qty should not be NULL for item: ' || l_item;
13599 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
13600 p_procedure_name => l_api_name,
13601 p_debug_info => l_debug_info);
13602
13603 FND_MESSAGE.SET_NAME('INL','INL_ERR_SECONDARY_QTY_NULL');
13604 FND_MESSAGE.SET_TOKEN ('ITEM', l_item) ;
13605 FND_MSG_PUB.ADD;
13606 END IF;
13607 -- Bug #15927464
13608
13609 -- Quantities must be both positive or both negative
13610 IF (l_primary_qty < 0 AND l_secondary_qty > 0) OR
13611 (l_primary_qty > 0 AND l_secondary_qty < 0) THEN
13612 FND_MESSAGE.SET_NAME('INV','INV_QTYOUTOFBALANCE');
13613 FND_MSG_PUB.ADD;
13614 END IF;
13615
13616 -- If necessary, convert to positive numbers for the deviation check
13617 IF (l_primary_qty < 0) THEN
13618 l_primary_qty := (l_primary_qty * -1);
13619 l_secondary_qty := (l_secondary_qty * -1);
13620 END IF;
13621
13622 -- Check if quantities are in deviation
13623 l_debug_info := 'Call INV_CONVERT.within_deviation for validating deviation.';
13624 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
13625 p_procedure_name => l_api_name,
13626 p_debug_info => l_debug_info);
13627 -- Bug 15827165
13628 IF(l_secondary_qty IS NOT NULL AND p_secondary_uom_code IS NOT NULL) THEN
13629 IF (INV_CONVERT.within_deviation (p_organization_id,
13630 p_inventory_item_id,
13631 l_lot_number,
13632 NULL,
13633 l_primary_qty,
13634 p_primary_uom_code,
13635 l_secondary_qty,
13636 p_secondary_uom_code,
13637 NULL,
13638 NULL) = 0) THEN
13639 RAISE L_FND_EXC_ERROR;
13640 END IF;
13641 END IF;
13642 -- Bug 15827165
13643
13644 -- Standard check of p_commit.
13645 IF FND_API.To_Boolean (p_commit) THEN
13646 COMMIT WORK;
13647 END IF;
13648 -- Standard call to get message count and if count is 1, get message info.
13649 FND_MSG_PUB.Count_And_Get (
13650 p_encoded => L_FND_FALSE,
13651 p_count => x_msg_count,
13652 p_data => x_msg_data) ;
13653 -- Standard End of Procedure/Function Logging
13654 INL_LOGGING_PVT.Log_EndProc (
13655 p_module_name => g_module_name,
13656 p_procedure_name => l_api_name) ;
13657 EXCEPTION
13658 WHEN L_FND_EXC_ERROR THEN
13659 -- Standard Expected Error Logging
13660 INL_LOGGING_PVT.Log_ExpecError (
13661 p_module_name => g_module_name,
13662 p_procedure_name => l_api_name) ;
13663 x_return_status := L_FND_RET_STS_ERROR;
13664 FND_MSG_PUB.Count_And_Get (
13665 p_encoded => L_FND_FALSE,
13666 p_count => x_msg_count,
13667 p_data => x_msg_data) ;
13668 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
13669 -- Standard Unexpected Error Logging
13670 INL_LOGGING_PVT.Log_UnexpecError (
13671 p_module_name => g_module_name,
13672 p_procedure_name => l_api_name) ;
13673 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
13674 FND_MSG_PUB.Count_And_Get (
13675 p_encoded => L_FND_FALSE,
13676 p_count => x_msg_count,
13677 p_data => x_msg_data) ;
13678 WHEN OTHERS THEN
13679 -- Standard Unexpected Error Logging
13680 INL_LOGGING_PVT.Log_UnexpecError (
13681 p_module_name => g_module_name,
13682 p_procedure_name => l_api_name) ;
13683 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
13684 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
13685 FND_MSG_PUB.Add_Exc_Msg (
13686 p_pkg_name => g_pkg_name,
13687 p_procedure_name => l_api_name) ;
13688 END IF;
13689 FND_MSG_PUB.Count_And_Get (
13690 p_encoded => L_FND_FALSE,
13691 p_count => x_msg_count,
13692 p_data => x_msg_data) ;
13693 END Validate_DualQuantities;
13694
13695 -- Utility name: Derive_DualQuantities
13696 -- Type : Public
13697 -- Function : Derive Primary/Secondary Qty when processing
13698 -- Dual Uom controlled items
13699 -- Pre-reqs : None
13700 -- Parameters :
13701 -- IN : p_organization_id IN NUMBER
13702 -- p_inventory_item_id IN NUMBER
13703 -- p_calling_field IN VARCHAR2
13704 -- p_txn_qty IN NUMBER
13705 -- p_txn_uom_code IN VARCHAR2
13706 -- p_secondary_qty IN NUMBER
13707 -- p_secondary_uom_code IN VARCHAR2
13708 --
13709 -- Notes :
13710 FUNCTION Derive_DualQuantities(p_organization_id IN NUMBER,
13711 p_inventory_item_id IN NUMBER,
13712 p_calling_field IN VARCHAR2,
13713 p_txn_qty IN NUMBER,
13714 p_txn_uom_code IN VARCHAR2,
13715 p_secondary_qty IN NUMBER,
13716 p_secondary_uom_code IN VARCHAR2) RETURN NUMBER IS -- Bug #13914863
13717
13718 l_func_name CONSTANT VARCHAR2(30) := 'Derive_DualQuantities';
13719 l_debug_info VARCHAR2(200);
13720
13721 l_tracking_quantity_ind VARCHAR2(30);
13722 l_secondary_default_ind VARCHAR2(30);
13723 l_ont_pricing_qty_source VARCHAR2(30);
13724 l_lot_number VARCHAR2(30);
13725 l_converted_qty NUMBER;
13726
13727 BEGIN
13728 -- Standard Beginning of Procedure/Function Logging
13729 INL_LOGGING_PVT.Log_BeginProc (
13730 p_module_name => g_module_name,
13731 p_procedure_name => l_func_name) ;
13732 -- Logging variables
13733 INL_LOGGING_PVT.Log_Variable (
13734 p_module_name => g_module_name,
13735 p_procedure_name => l_func_name,
13736 p_var_name => 'p_organization_id',
13737 p_var_value => p_organization_id);
13738 INL_LOGGING_PVT.Log_Variable (
13739 p_module_name => g_module_name,
13740 p_procedure_name => l_func_name,
13741 p_var_name => 'p_inventory_item_id',
13742 p_var_value => p_inventory_item_id) ;
13743 INL_LOGGING_PVT.Log_Variable (
13744 p_module_name => g_module_name,
13745 p_procedure_name => l_func_name,
13746 p_var_name => 'p_calling_field',
13747 p_var_value => p_calling_field) ;
13748 INL_LOGGING_PVT.Log_Variable (
13749 p_module_name => g_module_name,
13750 p_procedure_name => l_func_name,
13751 p_var_name => 'p_txn_qty',
13752 p_var_value => p_txn_qty) ;
13753 INL_LOGGING_PVT.Log_Variable (
13754 p_module_name => g_module_name,
13755 p_procedure_name => l_func_name,
13756 p_var_name => 'p_txn_uom_code',
13757 p_var_value => p_txn_uom_code) ;
13758 INL_LOGGING_PVT.Log_Variable (
13759 p_module_name => g_module_name,
13760 p_procedure_name => l_func_name,
13761 p_var_name => 'p_secondary_qty',
13762 p_var_value => p_secondary_qty) ;
13763 INL_LOGGING_PVT.Log_Variable (
13764 p_module_name => g_module_name,
13765 p_procedure_name => l_func_name,
13766 p_var_name => 'p_secondary_uom_code',
13767 p_var_value => p_secondary_uom_code) ;
13768
13769 -- Get the Item Attributes
13770 SELECT tracking_quantity_ind,
13771 secondary_default_ind,
13772 ont_pricing_qty_source,
13773 start_auto_lot_number
13774 INTO l_tracking_quantity_ind,
13775 l_secondary_default_ind,
13776 l_ont_pricing_qty_source,
13777 l_lot_number
13778 FROM mtl_system_items
13779 WHERE organization_id = p_organization_id
13780 AND inventory_item_id = p_inventory_item_id;
13781
13782 -- If Defaulting method is 'Fixed', 'Default' or 'No Default'
13783 IF (l_secondary_default_ind = 'D' OR l_secondary_default_ind = 'F') OR
13784 ((l_secondary_default_ind = 'N') AND (p_txn_uom_code = p_secondary_uom_code)) THEN
13785
13786 -- Branch depending on calling field. 'T' Transaction Qty, 'S' Secondary Qty.
13787 IF (p_calling_field = 'T') THEN
13788 l_debug_info := 'Call INV_CONVERT.inv_um_convert for deriving Secondary Qty based on Transaction Qty.';
13789 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
13790 p_procedure_name => l_func_name,
13791 p_debug_info => l_debug_info);
13792
13793 -- In this case we will use Primary Qty data as base to retrieve Secondary Qty
13794 l_converted_qty := INV_CONVERT.inv_um_convert(p_inventory_item_id,
13795 l_lot_number,
13796 p_organization_id,
13797 NULL,
13798 p_txn_qty,
13799 p_txn_uom_code,
13800 p_secondary_uom_code,
13801 NULL, NULL);
13802 INL_LOGGING_PVT.Log_Variable (
13803 p_module_name => g_module_name,
13804 p_procedure_name => l_func_name,
13805 p_var_name => 'l_converted_qty',
13806 p_var_value => l_converted_qty) ;
13807
13808 IF (l_converted_qty = -99999) THEN
13809 FND_MESSAGE.SET_NAME('INV','INV_NO_CONVERSION_ERR');
13810 FND_MSG_PUB.ADD;
13811 END IF;
13812 ELSIF (p_calling_field = 'S') THEN
13813 l_debug_info := 'Call INV_CONVERT.inv_um_convert for deriving Transaction Qty based on Secondary Qty.';
13814 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
13815 p_procedure_name => l_func_name,
13816 p_debug_info => l_debug_info) ;
13817
13818 -- In this case we will use Secondary Qty data as base to retrieve Transaction Qty
13819 l_converted_qty := INV_CONVERT.inv_um_convert(p_inventory_item_id,
13820 l_lot_number,
13821 p_organization_id,
13822 NULL,
13823 p_secondary_qty,
13824 p_secondary_uom_code,
13825 p_txn_uom_code,
13826 NULL, NULL);
13827 INL_LOGGING_PVT.Log_Variable (
13828 p_module_name => g_module_name,
13829 p_procedure_name => l_func_name,
13830 p_var_name => 'l_converted_qty',
13831 p_var_value => l_converted_qty) ;
13832
13833 IF (l_converted_qty = -99999) THEN
13834 FND_MESSAGE.SET_NAME('INV','INV_NO_CONVERSION_ERR');
13835 FND_MSG_PUB.ADD;
13836 END IF;
13837 END IF;
13838 END IF;
13839 RETURN l_converted_qty;
13840 EXCEPTION
13841 WHEN OTHERS THEN
13842 -- Standard Unexpected Error Logging
13843 INL_LOGGING_PVT.Log_UnexpecError (
13844 p_module_name => g_module_name,
13845 p_procedure_name => l_func_name) ;
13846 IF FND_MSG_PUB.Check_Msg_Level (
13847 p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
13848 ) THEN
13849 FND_MSG_PUB.Add_Exc_Msg (
13850 p_pkg_name => g_pkg_name,
13851 p_procedure_name => l_func_name) ;
13852 END IF;
13853 RETURN 0;
13854 END Derive_DualQuantities;
13855
13856 -- END Bug #13914863
13857
13858
13859 -- SCM-051
13860 -- API name : Discard_Updates
13861 -- Type : Private
13862 -- Function : Discard ELC changes
13863 -- Pre-reqs : None
13864 -- Parameters :
13865 -- IN : p_api_version IN NUMBER Required
13866 -- p_init_msg_list IN VARCHAR2 Optional Default = L_FND_FALSE
13867 -- p_commit IN VARCHAR2 Optional Default = L_FND_FALSE
13868 -- p_ship_header_id IN NUMBER,
13869 -- OUT x_return_status OUT NOCOPY VARCHAR2
13870 -- x_msg_count OUT NOCOPY NUMBER
13871 -- x_msg_data OUT NOCOPY VARCHAR2
13872 --
13873 -- Version : Current version 1.0
13874 --
13875 -- Notes :
13876 PROCEDURE Discard_Updates(p_api_version IN NUMBER,
13877 p_init_msg_list IN VARCHAR2 := L_FND_FALSE,
13878 p_commit IN VARCHAR2 := L_FND_FALSE,
13879 p_ship_header_id IN NUMBER,
13880 x_return_status OUT NOCOPY VARCHAR2,
13881 x_msg_count OUT NOCOPY NUMBER,
13882 x_msg_data OUT NOCOPY VARCHAR2)
13883 IS
13884
13885 l_program_name CONSTANT VARCHAR2(30) := 'Discard_Updates';
13886 l_api_version CONSTANT NUMBER := 1.0;
13887 l_debug_info VARCHAR2(200);
13888 l_return_status VARCHAR2(1);
13889 l_msg_count NUMBER;
13890 l_msg_data VARCHAR2(2000);
13891
13892 -- charge lines to be deleted
13893 CURSOR c_delete_cl IS
13894 SELECT cl.charge_line_id
13895 FROM inl_charge_lines cl
13896 WHERE cl.adjustment_type_flag = 'A'
13897 AND cl.parent_charge_line_id IS NULL
13898 AND EXISTS (SELECT 1
13899 FROM inl_associations a
13900 WHERE a.from_parent_table_name = 'INL_CHARGE_LINES'
13901 AND a.from_parent_table_id = cl.charge_line_id
13902 AND a.adjustment_type_flag = 'A'
13903 AND a.ship_header_id = p_ship_header_id
13904 AND ROWNUM < 2
13905 )
13906 AND NOT EXISTS (SELECT 1
13907 FROM inl_associations a
13908 WHERE a.from_parent_table_name = 'INL_CHARGE_LINES'
13909 AND a.from_parent_table_id = cl.charge_line_id
13910 AND a.adjustment_type_flag IS NOT NULL
13911 AND a.adjustment_type_flag <> 'A'
13912 AND a.ship_header_id = p_ship_header_id
13913 AND ROWNUM < 2
13914 )
13915 AND NOT EXISTS (SELECT 1
13916 FROM inl_charge_lines cl0
13917 WHERE cl0.parent_charge_line_id = cl.charge_line_id
13918 AND ROWNUM < 2
13919 );
13920
13921 TYPE l_delete_cl_lst_tp IS
13922 TABLE OF c_delete_cl%ROWTYPE INDEX BY BINARY_INTEGER;
13923 l_delete_cl_lst l_delete_cl_lst_tp;
13924
13925 BEGIN
13926 INL_LOGGING_PVT.Log_BeginProc (p_module_name => g_module_name,
13927 p_procedure_name => l_program_name) ;
13928
13929 -- Standard Start of API savepoint
13930 SAVEPOINT Discard_Updates_PVT;
13931
13932 -- Initialize message list if p_init_msg_list is set to TRUE.
13933 IF FND_API.to_Boolean (p_init_msg_list) THEN
13934 FND_MSG_PUB.initialize;
13935 END IF;
13936
13937 -- Check for call compatibility.
13938 IF NOT FND_API.Compatible_API_Call (p_current_version_number => l_api_version,
13939 p_caller_version_number => p_api_version,
13940 p_api_name => l_program_name,
13941 p_pkg_name => G_PKG_NAME) THEN
13942 RAISE L_FND_EXC_UNEXPECTED_ERROR;
13943 END IF;
13944
13945 -- Initialize API return status to success
13946 x_return_status := L_FND_RET_STS_SUCCESS;
13947
13948 l_debug_info := 'Discard Shipment Line changes';
13949 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
13950 p_procedure_name => l_program_name,
13951 p_debug_info => l_debug_info);
13952
13953 UPDATE inl_ship_lines_all isl
13954 SET isl.last_update_login = l_fnd_login_id,
13955 isl.last_update_date = SYSDATE,
13956 isl.last_updated_by = l_fnd_user_id,
13957 isl.new_txn_unit_price = NULL,
13958 isl.new_currency_conversion_type = NULL,
13959 isl.new_currency_conversion_date = NULL,
13960 isl.new_currency_conversion_rate = NULL
13961 WHERE isl.ship_header_id = p_ship_header_id
13962 AND isl.adjustment_num = (SELECT MIN(a.adjustment_num)
13963 FROM inl_ship_lines_all a
13964 WHERE a.ship_header_id = p_ship_header_id)
13965 AND ( isl.new_txn_unit_price IS NOT NULL
13966 OR isl.new_currency_conversion_type IS NOT NULL
13967 OR isl.new_currency_conversion_date IS NOT NULL
13968 OR isl.new_currency_conversion_rate IS NOT NULL)
13969
13970 ;
13971
13972 l_debug_info := 'Revert Charge Line adjustment values';
13973 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
13974 p_procedure_name => l_program_name,
13975 p_debug_info => l_debug_info);
13976 UPDATE inl_charge_lines icl
13977 SET icl.last_update_login = l_fnd_login_id,
13978 icl.last_update_date = SYSDATE,
13979 icl.last_updated_by = l_fnd_user_id,
13980 icl.new_charge_amt = NULL,
13981 icl.new_currency_conversion_type = NULL,
13982 icl.new_currency_conversion_date = NULL,
13983 icl.new_currency_conversion_rate = NULL,
13984 icl.adjustment_type_flag = NULL -- Bug #13643479
13985 WHERE icl.charge_line_id = (
13986 SELECT
13987 cl1.charge_line_id
13988 FROM
13989 inl_charge_lines cl1
13990 WHERE
13991 CONNECT_BY_ISLEAF = 1
13992 START WITH cl1.charge_line_id = icl.charge_line_id
13993 CONNECT BY PRIOR cl1.charge_line_id = cl1.parent_charge_line_id
13994 )
13995 AND EXISTS (
13996 SELECT 1
13997 FROM inl_associations a
13998 WHERE a.from_parent_table_name = 'INL_CHARGE_LINES'
13999 AND a.ship_header_id = p_ship_header_id
14000 AND a.from_parent_table_id = (
14001 SELECT
14002 cl1.charge_line_id
14003 FROM
14004 inl_charge_lines cl1
14005 WHERE
14006 CONNECT_BY_ISLEAF = 1
14007 START WITH cl1.charge_line_id = icl.charge_line_id
14008 CONNECT BY PRIOR cl1.parent_charge_line_id = cl1.charge_line_id
14009 )
14010 )
14011 AND ( icl.new_charge_amt IS NOT NULL
14012 OR icl.new_currency_conversion_type IS NOT NULL
14013 OR icl.new_currency_conversion_date IS NOT NULL
14014 OR icl.new_currency_conversion_rate IS NOT NULL
14015 OR icl.adjustment_type_flag IS NOT NULL)
14016 AND NVL(icl.adjustment_type_flag, 'X') NOT IN ('Z', 'A')
14017 ;
14018 --
14019 -- populate cursor with clines to be deleted
14020 OPEN c_delete_cl;
14021 FETCH c_delete_cl BULK COLLECT INTO l_delete_cl_lst;
14022 CLOSE c_delete_cl;
14023
14024 --
14025 l_debug_info := 'Delete new associations ADDED as part of the adjustment';
14026 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
14027 p_procedure_name => l_program_name,
14028 p_debug_info => l_debug_info);
14029
14030 DELETE FROM inl_associations a
14031 WHERE a.adjustment_type_flag = 'A'
14032 AND a.ship_header_id = p_ship_header_id
14033 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
14034 AND a.from_parent_table_id = ( --Charge Line should be the top of charge lines
14035 SELECT
14036 cl1.charge_line_id
14037 FROM
14038 inl_charge_lines cl1
14039 WHERE
14040 CONNECT_BY_ISLEAF = 1
14041 START WITH cl1.charge_line_id = a.from_parent_table_id
14042 CONNECT BY PRIOR cl1.charge_line_id = cl1.parent_charge_line_id
14043 );
14044
14045 --
14046 l_debug_info := 'Delete new charge lines ADDED as part of the adjustment';
14047 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
14048 p_procedure_name => l_program_name,
14049 p_debug_info => l_debug_info);
14050
14051 IF NVL (l_delete_cl_lst.LAST, 0) > 0 THEN
14052 FOR i IN NVL (l_delete_cl_lst.FIRST, 0) ..NVL (l_delete_cl_lst.LAST, 0)
14053 LOOP
14054 DELETE FROM inl_charge_lines
14055 WHERE charge_line_id = l_delete_cl_lst(i).charge_line_id;
14056 END LOOP;
14057 END IF;
14058 --
14059 l_debug_info := 'Revert Association that were flagged to be removed';
14060 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
14061 p_procedure_name => l_program_name,
14062 p_debug_info => l_debug_info);
14063
14064 UPDATE inl_associations a
14065 SET a.adjustment_type_flag = NULL,
14066 a.last_update_login = l_fnd_login_id,
14067 a.last_update_date = SYSDATE,
14068 a.last_updated_by = l_fnd_user_id
14069 WHERE a.adjustment_type_flag = 'R'
14070 AND a.ship_header_id = p_ship_header_id
14071 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
14072 AND a.from_parent_table_id = ( --Charge Line should be the top of charge lines
14073 SELECT
14074 cl1.charge_line_id
14075 FROM
14076 inl_charge_lines cl1
14077 WHERE
14078 CONNECT_BY_ISLEAF = 1
14079 START WITH cl1.charge_line_id = a.from_parent_table_id
14080 CONNECT BY PRIOR cl1.parent_charge_line_id = cl1.charge_line_id
14081 );
14082
14083 l_debug_info := 'Set to N the ELC flag on Shipment Headers';
14084 INL_LOGGING_PVT.Log_Statement (p_module_name => g_module_name,
14085 p_procedure_name => l_program_name,
14086 p_debug_info => l_debug_info);
14087 UPDATE inl_ship_headers_all a
14088 SET a.pending_update_flag = 'N',
14089 a.last_update_login = l_fnd_login_id,
14090 a.last_update_date = SYSDATE,
14091 a.last_updated_by = l_fnd_user_id
14092 WHERE a.ship_header_id = p_ship_header_id
14093 AND a.pending_update_flag IS NOT NULL
14094 ;
14095
14096 l_debug_info := 'Call INL_INTERFACE_PVT.Reset_MatchInt';
14097 INL_LOGGING_PVT.Log_Statement(p_module_name => g_module_name,
14098 p_procedure_name => l_program_name,
14099 p_debug_info => l_debug_info);
14100
14101 INL_INTERFACE_PVT.Reset_MatchInt(p_ship_header_id => p_ship_header_id,
14102 x_return_status => l_return_status);
14103
14104 -- If unexpected errors happen abort API
14105 IF l_return_status = L_FND_RET_STS_ERROR THEN
14106 x_return_status := l_return_status;
14107 RAISE L_FND_EXC_ERROR;
14108 ELSIF l_return_status = L_FND_RET_STS_UNEXP_ERROR THEN
14109 x_return_status := l_return_status;
14110 RAISE L_FND_EXC_UNEXPECTED_ERROR;
14111 END IF;
14112
14113 -- Standard check of p_commit.
14114 IF FND_API.To_Boolean (p_commit) THEN
14115 COMMIT WORK;
14116 END IF;
14117
14118 -- Standard call to get message count and if count is 1, get message info.
14119 FND_MSG_PUB.Count_And_Get (p_encoded => L_FND_FALSE,
14120 p_count => x_msg_count,
14121 p_data => x_msg_data);
14122
14123 INL_LOGGING_PVT.Log_EndProc (p_module_name => g_module_name,
14124 p_procedure_name => l_program_name);
14125 EXCEPTION
14126 WHEN L_FND_EXC_ERROR THEN
14127 INL_LOGGING_PVT.Log_ExpecError (p_module_name => g_module_name,
14128 p_procedure_name => l_program_name);
14129 ROLLBACK TO Discard_Updates_PVT;
14130 x_return_status := L_FND_RET_STS_ERROR;
14131 FND_MSG_PUB.Count_And_Get (p_encoded => L_FND_FALSE,
14132 p_count => x_msg_count,
14133 p_data => x_msg_data);
14134 WHEN L_FND_EXC_UNEXPECTED_ERROR THEN
14135 INL_LOGGING_PVT.Log_UnexpecError (p_module_name => g_module_name,
14136 p_procedure_name => l_program_name);
14137 ROLLBACK TO Discard_Updates_PVT;
14138 x_return_status := L_FND_RET_STS_UNEXP_ERROR;
14139 FND_MSG_PUB.Count_And_Get (p_encoded => L_FND_FALSE,
14140 p_count => x_msg_count,
14141 p_data => x_msg_data);
14142 WHEN OTHERS THEN
14143 INL_LOGGING_PVT.Log_UnexpecError (p_module_name => g_module_name,
14144 p_procedure_name => l_program_name);
14145 ROLLBACK TO Discard_Updates_PVT;
14146 x_return_status := L_FND_RET_STS_UNEXP_ERROR ;
14147 IF FND_MSG_PUB.Check_Msg_Level (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
14148 FND_MSG_PUB.Add_Exc_Msg (p_pkg_name => g_pkg_name,
14149 p_procedure_name => l_program_name);
14150 END IF;
14151 FND_MSG_PUB.Count_And_Get (p_encoded => L_FND_FALSE,
14152 p_count => x_msg_count,
14153 p_data => x_msg_data);
14154 END Discard_Updates;
14155
14156 END INL_SHIPMENT_PVT;