[Home] [Help]
PACKAGE BODY: APPS.INL_INTERFACE_PVT
Source
1 PACKAGE BODY INL_INTERFACE_PVT AS
2 /* $Header: INLVINTB.pls 120.9.12010000.20 2009/02/02 16:46:25 acferrei ship $ */
3
4 -- Utility name : Handle_InterfError
5 -- Type : Private
6 -- Function : Handle LCM open interface errors
7 -- Pre-reqs : None
8 -- Parameters :
9 -- IN : p_parent_table_name IN VARCHAR2, Identify the point of the error: table_name and
10 -- p_parent_table_id IN NUMBER, table_ID
11 -- p_column_name IN VARCHAR2 Conditionally Error column name
12 -- p_column_value IN VARCHAR2 Conditionally Error column value
13 -- p_error_message_name IN VARCHAR2 Optional Message name(if exists)
14 -- p_token1_name IN VARCHAR2 Optional Message tokens names and values from 1 to 6
15 -- p_token1_value IN VARCHAR2 Optional
16 -- p_token2_name IN VARCHAR2 Optional
17 -- p_token2_value IN VARCHAR2 Optional
18 -- p_token3_name IN VARCHAR2 Optional
19 -- p_token3_value IN VARCHAR2 Optional
20 -- p_token4_name IN VARCHAR2 Optional
21 -- p_token4_value IN VARCHAR2 Optional
22 -- p_token5_name IN VARCHAR2 Optional
23 -- p_token5_value IN VARCHAR2 Optional
24 -- p_token6_name IN VARCHAR2 Optional
25 -- p_token6_value IN VARCHAR2 Optional
26 --
27 -- OUT x_return_status OUT NOCOPY VARCHAR2
28 --
29 -- Version : Current version 1.0
30 --
31 -- Notes :
32 PROCEDURE Handle_InterfError
33 (
34 p_parent_table_name IN VARCHAR2,
35 p_parent_table_id IN NUMBER,
36 p_column_name IN VARCHAR2,
37 p_column_value IN VARCHAR2,
38 p_error_message_name IN VARCHAR2,
39 p_token1_name IN VARCHAR2 DEFAULT NULL,
40 p_token1_value IN VARCHAR2 DEFAULT NULL,
41 p_token2_name IN VARCHAR2 DEFAULT NULL,
42 p_token2_value IN VARCHAR2 DEFAULT NULL,
43 p_token3_name IN VARCHAR2 DEFAULT NULL,
44 p_token3_value IN VARCHAR2 DEFAULT NULL,
45 p_token4_name IN VARCHAR2 DEFAULT NULL,
46 p_token4_value IN VARCHAR2 DEFAULT NULL,
47 p_token5_name IN VARCHAR2 DEFAULT NULL,
48 p_token5_value IN VARCHAR2 DEFAULT NULL,
49 p_token6_name IN VARCHAR2 DEFAULT NULL,
50 p_token6_value IN VARCHAR2 DEFAULT NULL,
51 x_return_status OUT NOCOPY VARCHAR2
52 ) IS
53 l_proc_name CONSTANT VARCHAR2(30) := 'Handle_InterfError';
54 l_return_status VARCHAR2(1) ;
55 l_debug_info VARCHAR2(200) ;
56 l_ship_header_int_id NUMBER;
57 l_error_message VARCHAR2(2000) ;
58 BEGIN
59 -- Standard Beginning of Procedure/Function Logging
60 INL_LOGGING_PVT.Log_BeginProc(
61 p_module_name => g_module_name,
62 p_procedure_name => l_proc_name
63 ) ;
64 -- Initialize API return status to success
65 x_return_status := FND_API.G_RET_STS_SUCCESS;
66 -- Creation of Messages
67 IF p_error_message_name IS NOT NULL THEN
68 FND_MESSAGE.SET_NAME('INL', p_error_message_name) ;
69 IF p_token1_name IS NOT NULL THEN
70 FND_MESSAGE.SET_TOKEN(p_token1_name, p_token1_value) ;
71 IF p_token2_name IS NOT NULL THEN
72 FND_MESSAGE.SET_TOKEN(p_token2_name, p_token2_value) ;
73 IF p_token3_name IS NOT NULL THEN
74 FND_MESSAGE.SET_TOKEN(p_token3_name, p_token3_value) ;
75 IF p_token4_name IS NOT NULL THEN
76 FND_MESSAGE.SET_TOKEN(p_token4_name, p_token4_value) ;
77 IF p_token5_name IS NOT NULL THEN
78 FND_MESSAGE.SET_TOKEN(p_token5_name, p_token5_value) ;
79 IF p_token6_name IS NOT NULL THEN
80 FND_MESSAGE.SET_TOKEN(p_token6_name, p_token6_value) ;
81 END IF;
82 END IF;
83 END IF;
84 END IF;
85 END IF;
86 END IF;
87 FND_MSG_PUB.ADD;
88 l_error_message := SUBSTR(FND_MSG_PUB.get(FND_MSG_PUB.Count_Msg(), FND_API.g_false), 1, 2000) ;
89 END IF;
90 l_debug_info := 'Error Mesage: '||l_error_message;
91 INL_LOGGING_PVT.Log_Statement(
92 p_module_name => g_module_name,
93 p_procedure_name => l_proc_name,
94 p_debug_info => l_debug_info
95 ) ;
96 -- In case of error during Shipment Line import process
97 IF p_parent_table_name = 'INL_SHIP_LINES_INT' THEN
98 l_debug_info := 'Set Shipment Line Interface status to ERROR.';
99 INL_LOGGING_PVT.LOG_STATEMENT(
100 P_MODULE_NAME => G_MODULE_NAME,
101 P_PROCEDURE_NAME => L_PROC_NAME,
102 P_DEBUG_INFO => L_DEBUG_INFO
103 ) ;
104 UPDATE inl_ship_lines_int
105 SET processing_status_code = 'ERROR' ,
106 request_id = fnd_global.conc_request_id,
107 last_updated_by = fnd_global.user_id ,
108 last_update_date = SYSDATE ,
109 last_update_login = fnd_global.login_id ,
110 program_id = fnd_global.conc_program_id,
111 program_update_date = SYSDATE ,
112 program_application_id = fnd_global.prog_appl_id
113 WHERE ship_line_int_id = p_parent_table_id
114 AND processing_status_code <> 'ERROR';
115 SELECT ship_header_int_id
116 INTO l_ship_header_int_id
117 FROM inl_ship_lines_int
118 WHERE ship_line_int_id = p_parent_table_id;
119 ELSIF p_parent_table_name = 'INL_MATCHES_INT' THEN
120 l_debug_info := 'Set Match Interface status to ERROR.';
121 INL_LOGGING_PVT.Log_Statement(
122 p_module_name => g_module_name,
123 p_procedure_name => l_proc_name,
124 p_debug_info => l_debug_info
125 ) ;
126 UPDATE inl_matches_int
127 SET processing_status_code = 'ERROR' ,
128 request_id = fnd_global.conc_request_id,
129 last_updated_by = fnd_global.user_id ,
130 last_update_date = SYSDATE ,
131 last_update_login = fnd_global.login_id ,
132 program_id = fnd_global.conc_program_id,
133 program_update_date = SYSDATE ,
134 program_application_id = fnd_global.prog_appl_id
135 WHERE match_int_id = p_parent_table_id
136 AND processing_status_code <> 'ERROR';
137 ELSIF p_parent_table_name = 'INL_MATCH_AMOUNTS_INT' THEN
138 l_debug_info := 'Set Match Amounts Interface status to ERROR.';
139 INL_LOGGING_PVT.Log_Statement(
140 p_module_name => g_module_name,
141 p_procedure_name => l_proc_name,
142 p_debug_info => l_debug_info
143 ) ;
144 UPDATE inl_match_amounts_int
145 SET processing_status_code = 'ERROR' ,
146 request_id = fnd_global.conc_request_id,
147 last_updated_by = fnd_global.user_id ,
148 last_update_date = SYSDATE ,
149 last_update_login = fnd_global.login_id ,
150 program_id = fnd_global.conc_program_id,
151 program_update_date = SYSDATE ,
152 program_application_id = fnd_global.prog_appl_id
153 WHERE match_amount_int_id = p_parent_table_id
154 AND processing_status_code <> 'ERROR';
155 END IF;
156 IF p_parent_table_name = 'INL_SHIP_HEADERS_INT' OR l_ship_header_int_id IS NOT NULL THEN
157 l_debug_info := 'Set Shipment Header Interface status to ERROR.';
158 INL_LOGGING_PVT.Log_Statement(
159 p_module_name => g_module_name,
160 p_procedure_name => l_proc_name,
161 p_debug_info => l_debug_info
162 ) ;
163 UPDATE inl_ship_headers_int
164 SET processing_status_code = 'ERROR' ,
165 request_id = fnd_global.conc_request_id,
166 last_updated_by = fnd_global.user_id ,
167 last_update_date = SYSDATE ,
168 last_update_login = fnd_global.login_id ,
169 program_id = fnd_global.conc_program_id,
170 program_update_date = SYSDATE ,
171 program_application_id = fnd_global.prog_appl_id
172 WHERE ship_header_int_id = NVL(l_ship_header_int_id, p_parent_table_id)
173 AND processing_status_code <> 'ERROR';
174 END IF;
175 l_debug_info := 'Insert detailed error message into Interface Error table.';
176 INL_LOGGING_PVT.Log_Statement(
177 p_module_name => g_module_name,
178 p_procedure_name => l_proc_name,
179 p_debug_info => l_debug_info
180 ) ;
181 INSERT INTO inl_interface_errors (
182 interface_error_id, /*01*/
183 parent_table_name, /*02*/
184 parent_table_id, /*03*/
185 column_name, /*04*/
186 column_value, /*05*/
187 processing_date, /*06*/
188 error_message_name, /*07*/
189 error_message, /*08*/
190 token1_name, /*09*/
191 token1_value, /*10*/
192 token2_name, /*11*/
193 token2_value, /*12*/
194 token3_name, /*13*/
195 token3_value, /*14*/
196 token4_name, /*15*/
197 token4_value, /*16*/
198 token5_name, /*17*/
199 token5_value, /*18*/
200 token6_name, /*19*/
201 token6_value, /*20*/
202 created_by, /*21*/
203 creation_date, /*22*/
204 last_updated_by, /*23*/
205 last_update_date, /*24*/
206 last_update_login, /*25*/
207 program_id, /*26*/
208 program_application_id, /*27*/
209 program_update_date, /*28*/
210 request_id /*29*/
211 )
212 VALUES (
213 inl_interface_errors_s.NEXTVAL,/*01*/
214 p_parent_table_name, /*02*/
215 p_parent_table_id, /*03*/
216 p_column_name, /*04*/
217 p_column_value, /*05*/
218 SYSDATE, /*06*/
219 p_error_message_name, /*07*/
220 l_error_message, /*08*/
221 p_token1_name, /*09*/
222 p_token1_value, /*10*/
223 p_token2_name, /*11*/
224 p_token2_value, /*12*/
225 p_token3_name, /*13*/
226 p_token3_value, /*14*/
227 p_token4_name, /*15*/
228 p_token4_value, /*16*/
229 p_token5_name, /*17*/
230 p_token5_value, /*18*/
231 p_token6_name, /*19*/
232 p_token6_value, /*20*/
233 fnd_global.user_id, /*21*/
234 SYSDATE, /*22*/
235 fnd_global.user_id, /*23*/
236 SYSDATE, /*24*/
237 fnd_global.user_id, /*25*/
238 fnd_global.conc_program_id, /*26*/
239 fnd_global.prog_appl_id, /*27*/
240 SYSDATE, /*28*/
241 fnd_global.conc_request_id /*29*/
242 );
243 -- Standard End of Procedure/Function Logging
244 INL_LOGGING_PVT.Log_EndProc(
245 p_module_name => g_module_name,
246 p_procedure_name => l_proc_name
247 );
248 EXCEPTION
249 WHEN FND_API.G_EXC_ERROR THEN
250 -- Standard Expected Error Logging
251 INL_LOGGING_PVT.Log_ExpecError (
252 p_module_name => g_module_name,
253 p_procedure_name => l_proc_name
254 );
255 x_return_status := FND_API.G_RET_STS_ERROR;
256 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
257 -- Standard Unexpected Error Logging
258 INL_LOGGING_PVT.Log_UnexpecError (
259 p_module_name => g_module_name,
260 p_procedure_name => l_proc_name
261 );
262 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
263 WHEN OTHERS THEN
264 -- Standard Unexpected Error Logging
265 INL_LOGGING_PVT.Log_UnexpecError (
266 p_module_name => g_module_name,
267 p_procedure_name => l_proc_name
268 );
269 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
270 IF FND_MSG_PUB.Check_Msg_Level(
271 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
272 ) THEN
273 FND_MSG_PUB.Add_Exc_Msg(
274 p_pkg_name => g_pkg_name,
275 p_procedure_name => l_proc_name
276 );
277 END IF;
278 END Handle_InterfError;
279
280 -- Utility name : Reset_InterfError
281 -- Type : Private
282 -- Function : Delete errors recorded by previous validations
283 -- Pre-reqs : None
284 -- Parameters :
285 -- IN : p_parent_table_name IN VARCHAR2
286 -- p_parent_table_id IN NUMBER
287 --
288 -- OUT x_return_status OUT NOCOPY VARCHAR2
289 --
290 -- Version : Current version 1.0
291 --
292 -- Notes :
293 PROCEDURE Reset_InterfError(
294 p_parent_table_name IN VARCHAR2,
295 p_parent_table_id IN NUMBER,
296 x_return_status OUT NOCOPY VARCHAR2
297 ) IS
298 l_proc_name CONSTANT VARCHAR2(30):= 'Reset_InterfError';
299 l_return_status VARCHAR2(1);
300 l_debug_info VARCHAR2(200);
301 BEGIN
302 -- Standard Beginning of Procedure/Function Logging
303 INL_LOGGING_PVT.Log_BeginProc(
304 p_module_name => g_module_name,
305 p_procedure_name => l_proc_name
306 ) ;
307 -- Initialize API return status to success
308 x_return_status := FND_API.G_RET_STS_SUCCESS;
309 l_debug_info := 'Delete Errors from previous validation.';
310 INL_LOGGING_PVT.Log_Statement(
311 p_module_name => g_module_name,
312 p_procedure_name => l_proc_name,
313 p_debug_info => l_debug_info
314 ) ;
315 DELETE
316 FROM inl_interface_errors
317 WHERE parent_table_name = p_parent_table_name
318 AND parent_table_id = p_parent_table_id;
319 -- Standard End of Procedure/Function Logging
320 INL_LOGGING_PVT.Log_EndProc(
321 p_module_name => g_module_name,
322 p_procedure_name => l_proc_name
323 );
324 EXCEPTION
325 WHEN FND_API.G_EXC_ERROR THEN
326 -- Standard Expected Error Logging
327 INL_LOGGING_PVT.Log_ExpecError (
328 p_module_name => g_module_name,
329 p_procedure_name => l_proc_name
330 );
331 x_return_status := FND_API.G_RET_STS_ERROR;
332 WHEN FND_API.G_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_proc_name
337 );
338 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
339 WHEN OTHERS THEN
340 -- Standard Unexpected Error Logging
341 INL_LOGGING_PVT.Log_UnexpecError (
342 p_module_name => g_module_name,
343 p_procedure_name => l_proc_name
344 );
345 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
346 IF FND_MSG_PUB.Check_Msg_Level(
347 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
348 ) THEN
349 FND_MSG_PUB.Add_Exc_Msg(
350 p_pkg_name => g_pkg_name,
351 p_procedure_name => l_proc_name
352 );
353 END IF;
354 END Reset_InterfError;
355 -- Utility name : Derive_PartyID
356 -- Type : Private
357 -- Function : Get Party Id based on a given Party Number
358 -- Pre-reqs : None
359 -- Parameters :
360 -- IN : p_party_number IN VARCHAR2
361 --
362 -- OUT x_return_status OUT NOCOPY VARCHAR2
363 --
364 -- Version : Current version 1.0
365 --
366 -- Notes :
367 FUNCTION Derive_PartyID(
368 p_party_number IN VARCHAR2,
369 x_return_status IN OUT NOCOPY VARCHAR2
370 ) RETURN NUMBER IS
371 l_proc_name CONSTANT VARCHAR2(30) := 'Derive_PartyID';
372 l_return_status VARCHAR2(1) ;
373 l_debug_info VARCHAR2(200) ;
374 l_return_value NUMBER;
375 BEGIN
376 -- Standard Beginning of Procedure/Function Logging
377 INL_LOGGING_PVT.Log_BeginProc(
378 p_module_name => g_module_name,
379 p_procedure_name => l_proc_name
380 ) ;
381 -- Initialize API return status to success
382 x_return_status := FND_API.G_RET_STS_SUCCESS;
383 l_debug_info := 'Getting party_id.';
384 INL_LOGGING_PVT.Log_Statement(
385 p_module_name => g_module_name,
386 p_procedure_name => l_proc_name,
387 p_debug_info => l_debug_info
388 ) ;
389 SELECT party_id
390 INTO l_return_value
391 FROM hz_parties
392 WHERE PARTY_NUMBER = p_party_number;
393 -- Standard End of Procedure/Function Logging
394 INL_LOGGING_PVT.Log_EndProc(
395 p_module_name => g_module_name,
396 p_procedure_name => l_proc_name
397 );
398 RETURN l_return_value;
399 EXCEPTION
400 WHEN FND_API.G_EXC_ERROR THEN
401 -- Standard Expected Error Logging
402 INL_LOGGING_PVT.Log_ExpecError (
403 p_module_name => g_module_name,
404 p_procedure_name => l_proc_name
405 );
406 x_return_status := FND_API.G_RET_STS_ERROR;
407 RETURN 0;
408 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
409 -- Standard Unexpected Error Logging
410 INL_LOGGING_PVT.Log_UnexpecError (
411 p_module_name => g_module_name,
412 p_procedure_name => l_proc_name
413 );
414 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
415 RETURN 0;
416 WHEN OTHERS THEN
417 -- Standard Unexpected Error Logging
418 INL_LOGGING_PVT.Log_UnexpecError (
419 p_module_name => g_module_name,
420 p_procedure_name => l_proc_name
421 );
422 IF FND_MSG_PUB.Check_Msg_Level(
423 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
424 ) THEN
425 FND_MSG_PUB.Add_Exc_Msg(
426 p_pkg_name => g_pkg_name,
427 p_procedure_name => l_proc_name
428 );
429 END IF;
430 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
431 RETURN 0;
432 END Derive_PartyID;
433
434 -- Utility name : Derive_PartySiteID
435 -- Type : Private
436 -- Function : Get Party Site Id based on a given Party Site Number
437 -- Pre-reqs : None
438 -- Parameters :
439 -- IN : p_party_site_number IN VARCHAR2
440 --
441 -- OUT x_return_status OUT NOCOPY VARCHAR2
442 --
443 -- Version : Current version 1.0
444 --
445 -- Notes :
446 FUNCTION Derive_PartySiteID(
447 p_party_site_number IN VARCHAR2,
448 x_return_status OUT NOCOPY VARCHAR2
449 ) RETURN NUMBER IS
450 l_func_name CONSTANT VARCHAR2(30) := 'Derive_PartySiteID';
451 l_return_status VARCHAR2(1);
452 l_debug_info VARCHAR2(200);
453 l_return_value NUMBER;
454 BEGIN
455 -- Standard Beginning of Procedure/Function Logging
456 INL_LOGGING_PVT.Log_BeginProc(
457 p_module_name => g_module_name,
458 p_procedure_name => l_func_name
459 ) ;
460 -- Initialize API return status to success
461 x_return_status := FND_API.G_RET_STS_SUCCESS;
462 l_debug_info := 'Getting PartySite_id.';
463 INL_LOGGING_PVT.Log_Statement(
464 p_module_name => g_module_name,
465 p_procedure_name => l_func_name,
466 p_debug_info => l_debug_info
467 ) ;
468 SELECT party_site_id
469 INTO l_return_value
470 FROM hz_party_sites
471 WHERE party_site_number = p_party_site_number;
472 -- Standard End of Procedure/Function Logging
473 INL_LOGGING_PVT.Log_EndProc(
474 p_module_name => g_module_name,
475 p_procedure_name => l_func_name
476 );
477 RETURN l_return_value;
478 EXCEPTION
479 WHEN FND_API.G_EXC_ERROR THEN
480 -- Standard Expected Error Logging
481 INL_LOGGING_PVT.Log_ExpecError (
482 p_module_name => g_module_name,
483 p_procedure_name => l_func_name
484 );
485 x_return_status := FND_API.G_RET_STS_ERROR;
486 RETURN 0;
487 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
488 -- Standard Unexpected Error Logging
489 INL_LOGGING_PVT.Log_UnexpecError (
490 p_module_name => g_module_name,
491 p_procedure_name => l_func_name
492 );
493 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
494 RETURN 0;
495 WHEN OTHERS THEN
496 -- Standard Unexpected Error Logging
497 INL_LOGGING_PVT.Log_UnexpecError (
498 p_module_name => g_module_name,
499 p_procedure_name => l_func_name
500 );
501 IF FND_MSG_PUB.Check_Msg_Level(
502 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
503 ) THEN
504 FND_MSG_PUB.Add_Exc_Msg(
505 p_pkg_name => g_pkg_name,
506 p_procedure_name => l_func_name
507 );
508 END IF;
509 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
510 RETURN 0;
511 END Derive_PartySiteID;
512
513 -- Utility name : Validate_ShipNum
514 -- Type : Private
515 -- Function : Shipment Number validation.
516 -- Check if the ship numbering is autiomatic and check the number informed
517 -- Pre-reqs : None
518 -- Parameters :
519 -- IN : p_ship_header_int_id IN NUMBER,
520 -- p_ship_num IN VARCHAR2
521 -- p_organization_id IN NUMBER
522 --
523 -- OUT : x_return_status IN OUT NOCOPY VARCHAR2
524 --
525 -- Version : Current version 1.0
526 --
527 -- Notes :
528 FUNCTION Validate_ShipNum(
529 p_ship_header_int_id IN NUMBER,
530 p_ship_num IN VARCHAR2,
531 p_organization_id IN NUMBER,
532 x_return_status IN OUT NOCOPY VARCHAR2
533 ) RETURN BOOLEAN IS
534 l_func_name CONSTANT VARCHAR2(30) := 'Validate_ShipNum';
535 l_debug_info VARCHAR2(400) ;
536 l_result VARCHAR2(1) := FND_API.G_TRUE;
537 l_return_status VARCHAR2(1) := FND_API.G_TRUE;
538 l_user_defined_ship_num_code VARCHAR2(30);
539 BEGIN
540 -- Standard Beginning of Procedure/Function Logging
541 INL_LOGGING_PVT.Log_BeginProc(
542 p_module_name => g_module_name,
543 p_procedure_name => l_func_name
544 ) ;
545 -- Initialize API return status to success
546 x_return_status := FND_API.G_RET_STS_SUCCESS;
547
548 -- Check if the Operating Unit is null
549 l_debug_info := 'Check the setup for Organization';
550 INL_LOGGING_PVT.Log_Statement(
551 p_module_name => g_module_name,
552 p_procedure_name => l_func_name,
553 p_debug_info => l_debug_info
554 ) ;
555 IF p_organization_id IS NOT NULL THEN
556
557 SELECT
558 user_defined_ship_num_code
559 INTO
560 l_user_defined_ship_num_code
561 FROM inl_parameters
562 WHERE organization_id = p_organization_id;
563
564 IF l_user_defined_ship_num_code = 'AUTOMATIC' THEN
565 IF p_ship_num IS NOT NULL THEN
566 l_result := FND_API.G_FALSE;
567 -- Add a line into inl_ship_errors
568 Handle_InterfError(
569 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
570 p_parent_table_id => p_ship_header_int_id,
571 p_column_name => 'SHIP_NUM',
572 p_column_value => p_ship_num,
573 p_error_message_name => 'INL_ERR_SHIP_NUM_NNULL',
574 x_return_status => l_return_status
575 );
576 -- If any errors happen abort API.
577 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
578 RAISE FND_API.G_EXC_ERROR;
579 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
580 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
581 END IF;
582 END IF;
583 ELSIF l_user_defined_ship_num_code = 'MANUAL' THEN
584
585 IF p_ship_num IS NULL THEN
586 l_result := FND_API.G_FALSE;
587 -- Add a line into inl_ship_errors
588 Handle_InterfError(
589 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
590 p_parent_table_id => p_ship_header_int_id,
591 p_column_name => 'SHIP_NUM',
592 p_column_value => p_ship_num,
593 p_error_message_name => 'INL_ERR_SHIP_NUM_NULL',
594 x_return_status => l_return_status
595 );
596 -- If any errors happen abort API.
597 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
598 RAISE FND_API.G_EXC_ERROR;
599 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
600 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
601 END IF;
602 END IF;
603 END IF;
604
605 END IF;
606 -- Standard End of Procedure/Function Logging
607 INL_LOGGING_PVT.Log_EndProc(
608 p_module_name => g_module_name,
609 p_procedure_name => l_func_name
610 );
611 RETURN FND_API.to_boolean(l_result) ;
612 EXCEPTION
613 WHEN FND_API.G_EXC_ERROR THEN
614 -- Standard Expected Error Logging
615 INL_LOGGING_PVT.Log_ExpecError (
616 p_module_name => g_module_name,
617 p_procedure_name => l_func_name
618 );
619 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
620 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
621 -- Standard Unexpected Error Logging
622 INL_LOGGING_PVT.Log_UnexpecError (
623 p_module_name => g_module_name,
624 p_procedure_name => l_func_name
625 );
626 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
627 WHEN OTHERS THEN
628 -- Standard Unexpected Error Logging
629 INL_LOGGING_PVT.Log_UnexpecError (
630 p_module_name => g_module_name,
631 p_procedure_name => l_func_name
632 );
633 IF FND_MSG_PUB.Check_Msg_Level(
634 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
635 ) THEN
636 FND_MSG_PUB.Add_Exc_Msg(
637 p_pkg_name => g_pkg_name,
638 p_procedure_name => l_func_name
639 );
640 END IF;
641 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
642 END Validate_ShipNum;
643
644 -- Utility name : Validate_ShipType
645 -- Type : Private
646 -- Function : Ship type validation.
647 -- Check if the ship type exists and is active for sysdate
648 -- Pre-reqs : None
649 -- Parameters :
650 -- IN : p_ship_header_int_id IN NUMBER,
651 -- p_ship_type_id IN NUMBER
652 -- p_organization_id IN NUMBER
653 --
654 -- OUT : x_return_status IN OUT NOCOPY VARCHAR2
655 --
656 -- Version : Current version 1.0
657 --
658 -- Notes :
659 FUNCTION Validate_ShipType(
660 p_ship_header_int_id IN NUMBER,
661 p_ship_type_id IN NUMBER,
662 x_return_status IN OUT NOCOPY VARCHAR2
663 ) RETURN BOOLEAN IS
664 l_func_name CONSTANT VARCHAR2(30) := 'Validate_ShipType';
665 l_debug_info VARCHAR2(400) ;
666 l_result VARCHAR2(1) := FND_API.G_TRUE;
667 l_return_status VARCHAR2(1) := FND_API.G_TRUE;
668
669 l_ship_type_code VARCHAR2(400);
670 BEGIN
671 -- Standard Beginning of Procedure/Function Logging
672 INL_LOGGING_PVT.Log_BeginProc(
673 p_module_name => g_module_name,
674 p_procedure_name => l_func_name
675 ) ;
676 -- Initialize API return status to success
677 x_return_status := FND_API.G_RET_STS_SUCCESS;
678
679 -- Check if the Operating Unit is null
680 l_debug_info := 'Check the setup for Organization';
681 INL_LOGGING_PVT.Log_Statement(
682 p_module_name => g_module_name,
683 p_procedure_name => l_func_name,
684 p_debug_info => l_debug_info
685 ) ;
686 BEGIN
687
688 SELECT
689 ship_type_code
690 INTO
691 l_ship_type_code
692 FROM INL_SHIP_TYPES_B
693 WHERE ship_type_id = p_ship_type_id
694 AND active_from_date <= trunc(SYSDATE)
695 AND (active_to_date IS NULL
696 OR active_to_date >= trunc(SYSDATE))
697 ;
698 EXCEPTION
699 WHEN OTHERS THEN
700 l_result := FND_API.G_FALSE;
701 -- Add a line into inl_ship_errors
702 Handle_InterfError(
703 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
704 p_parent_table_id => p_ship_header_int_id,
705 p_column_name => 'SHIP_TYPE_ID',
706 p_column_value => p_ship_type_id,
707 p_error_message_name => 'INL_ERR_SHIP_TP',
708 x_return_status => l_return_status
709 );
710 -- If any errors happen abort API.
711 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
712 RAISE FND_API.G_EXC_ERROR;
713 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
714 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
715 END IF;
716 END;
717 -- Standard End of Procedure/Function Logging
718 INL_LOGGING_PVT.Log_EndProc(
719 p_module_name => g_module_name,
720 p_procedure_name => l_func_name
721 );
722 RETURN FND_API.to_boolean(l_result) ;
723 EXCEPTION
724 WHEN FND_API.G_EXC_ERROR THEN
725 -- Standard Expected Error Logging
726 INL_LOGGING_PVT.Log_ExpecError (
727 p_module_name => g_module_name,
728 p_procedure_name => l_func_name
729 );
730 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
731 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
732 -- Standard Unexpected Error Logging
733 INL_LOGGING_PVT.Log_UnexpecError (
734 p_module_name => g_module_name,
735 p_procedure_name => l_func_name
736 );
737 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
738 WHEN OTHERS THEN
739 -- Standard Unexpected Error Logging
740 INL_LOGGING_PVT.Log_UnexpecError (
741 p_module_name => g_module_name,
742 p_procedure_name => l_func_name
743 );
744 IF FND_MSG_PUB.Check_Msg_Level(
745 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
746 ) THEN
747 FND_MSG_PUB.Add_Exc_Msg(
748 p_pkg_name => g_pkg_name,
749 p_procedure_name => l_func_name
750 );
751 END IF;
752 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
753 END Validate_ShipType;
754
755 -- Utility name : Validate_ShipLineType
756 -- Type : Private
757 -- Function : Shipment Line Type validation.
758 -- Check if the ship Line type exists, is active for sysdate and is associated with ship type
759 -- Pre-reqs : None
760 -- Parameters :
761 -- IN : p_ship_header_int_id IN NUMBER,
762 -- p_ship_line_int_id IN NUMBER,
763 -- p_ship_type_id IN NUMBER
764 -- p_ship_line_type_id IN NUMBER
765 -- p_organization_id IN NUMBER
766 --
767 -- OUT : x_return_status IN OUT NOCOPY VARCHAR2
768 --
769 -- Version : Current version 1.0
770 --
771 -- Notes :
772 FUNCTION Validate_ShipLineType(
773 p_ship_header_int_id IN NUMBER,
774 p_ship_line_int_id IN NUMBER,
775 p_ship_type_id IN NUMBER,
776 p_ship_line_type_id IN NUMBER,
777 x_return_status IN OUT NOCOPY VARCHAR2
778 ) RETURN BOOLEAN IS
779 l_func_name CONSTANT VARCHAR2(30) := 'Validate_ShipLineType';
780 l_debug_info VARCHAR2(400) ;
781 l_result VARCHAR2(1) := FND_API.G_TRUE;
782 l_return_status VARCHAR2(1) := FND_API.G_TRUE;
783
784 l_ship_line_type_code VARCHAR2(400);
785 BEGIN
786 -- Standard Beginning of Procedure/Function Logging
787 INL_LOGGING_PVT.Log_BeginProc(
788 p_module_name => g_module_name,
789 p_procedure_name => l_func_name
790 ) ;
791 -- Initialize API return status to success
792 x_return_status := FND_API.G_RET_STS_SUCCESS;
793
794 -- Check if the Operating Unit is null
795 l_debug_info := 'Check the setup for Organization';
796 INL_LOGGING_PVT.Log_Statement(
797 p_module_name => g_module_name,
798 p_procedure_name => l_func_name,
799 p_debug_info => l_debug_info
800 ) ;
801 BEGIN
802
803 SELECT
804 slt.ship_line_type_code
805 INTO
806 l_ship_line_type_code
807 FROM inl_ship_line_types_b slt
808 WHERE slt.ship_line_type_id = p_ship_line_type_id
809 AND slt.active_from_date <= trunc(SYSDATE)
810 AND (slt.active_to_date IS NULL
811 OR slt.active_to_date >= trunc(SYSDATE))
812 AND EXISTS (SELECT 1
813 FROM inl_alwd_line_types sltallow
814 WHERE sltallow.ship_line_type_id = p_ship_line_type_id
815 AND sltallow.parent_table_id = p_ship_type_id
816 AND sltallow.parent_table_name = 'INL_SHIP_TYPES'
817 AND ROWNUM < 2)
818 ;
819 EXCEPTION
820 WHEN OTHERS THEN
821 l_result := FND_API.G_FALSE;
822 -- Add a line into inl_ship_errors
823 Handle_InterfError(
824 p_parent_table_name => 'INL_SHIP_LINES_INT',
825 p_parent_table_id => p_ship_line_int_id,
826 p_column_name => 'SHIP_LINE_TYPE_ID',
827 p_column_value => p_ship_line_type_id,
828 p_error_message_name => 'INL_ERR_LN_TP',
829 x_return_status => l_return_status
830 );
831 -- If any errors happen abort API.
832 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
833 RAISE FND_API.G_EXC_ERROR;
834 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
835 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
836 END IF;
837 END;
838 -- Standard End of Procedure/Function Logging
839 INL_LOGGING_PVT.Log_EndProc(
840 p_module_name => g_module_name,
841 p_procedure_name => l_func_name
842 );
843 RETURN FND_API.to_boolean(l_result) ;
844 EXCEPTION
845 WHEN FND_API.G_EXC_ERROR THEN
846 -- Standard Expected Error Logging
847 INL_LOGGING_PVT.Log_ExpecError (
848 p_module_name => g_module_name,
849 p_procedure_name => l_func_name
850 );
851 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
852 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
853 -- Standard Unexpected Error Logging
854 INL_LOGGING_PVT.Log_UnexpecError (
855 p_module_name => g_module_name,
856 p_procedure_name => l_func_name
857 );
858 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
859 WHEN OTHERS THEN
860 -- Standard Unexpected Error Logging
861 INL_LOGGING_PVT.Log_UnexpecError (
862 p_module_name => g_module_name,
863 p_procedure_name => l_func_name
864 );
865 IF FND_MSG_PUB.Check_Msg_Level(
866 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
867 ) THEN
868 FND_MSG_PUB.Add_Exc_Msg(
869 p_pkg_name => g_pkg_name,
870 p_procedure_name => l_func_name
871 );
872 END IF;
873 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
874 END Validate_ShipLineType;
875
876 -- Utility name : Validate_OpUnit
877 -- Type : Private
878 -- Function : Operating Unit validation.
879 -- Check if a given Operating Unit is valid.
880 -- Pre-reqs : None
881 -- Parameters :
882 -- IN : p_ship_header_int_id IN NUMBER
883 -- p_org_id IN NUMBER
884 --
885 -- OUT : x_return_status IN OUT NOCOPY VARCHAR2
886 --
887 -- Version : Current version 1.0
888 --
889 -- Notes :
890 FUNCTION Validate_OpUnit(
891 p_ship_header_int_id IN NUMBER,
892 p_org_id IN NUMBER,
893 x_return_status IN OUT NOCOPY VARCHAR2
894 ) RETURN BOOLEAN IS
895 l_func_name CONSTANT VARCHAR2(30) := 'Validate_OpUnit';
896 l_debug_info VARCHAR2(400) ;
897 l_org_count NUMBER;
898 l_result VARCHAR2(1) := FND_API.G_TRUE;
899 l_return_status VARCHAR2(1) := FND_API.G_TRUE;
900 l_msg_count NUMBER;
901 l_msg_data VARCHAR2(2000) ;
902 L_SYSDATE CONSTANT DATE := SYSDATE;
903 BEGIN
904 -- Standard Beginning of Procedure/Function Logging
905 INL_LOGGING_PVT.Log_BeginProc(
906 p_module_name => g_module_name,
907 p_procedure_name => l_func_name
908 ) ;
909 -- Initialize API return status to success
910 x_return_status := FND_API.G_RET_STS_SUCCESS;
911 -- Check if the Operating Unit is null
912 l_debug_info := 'Check if the Operating Unit is null';
913 INL_LOGGING_PVT.Log_Statement(
914 p_module_name => g_module_name,
915 p_procedure_name => l_func_name,
916 p_debug_info => l_debug_info
917 ) ;
918 IF p_org_id IS NULL THEN
919 l_result := FND_API.G_FALSE;
920 -- Add a line into inl_ship_errors
921 Handle_InterfError(
922 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
923 p_parent_table_id => p_ship_header_int_id,
924 p_column_name => 'ORG_ID',
925 p_column_value => p_org_id,
926 p_error_message_name => 'INL_ERR_OP_UNIT_NULL',
927 x_return_status => l_return_status
928 );
929 -- If any errors happen abort API.
930 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
931 RAISE FND_API.G_EXC_ERROR;
932 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
933 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
934 END IF;
935 END IF;
936 -- Check if the Operating Unit exists and is valid
937 l_debug_info := 'Check if the Operating Unit exists and is valid';
938 INL_LOGGING_PVT.Log_Statement(
939 p_module_name => g_module_name,
940 p_procedure_name => l_func_name,
941 p_debug_info => l_debug_info
942 ) ;
943 SELECT COUNT(1)
944 INTO l_org_count
945 FROM hr_operating_units hou
946 WHERE L_SYSDATE BETWEEN NVL((TRUNC(hou.date_from)), L_SYSDATE)
947 AND NVL((TRUNC(hou.date_to) + .99999) - 1, L_SYSDATE)
948 AND hou.organization_id = p_org_id;
949 IF NVL(l_org_count, 0) = 0 THEN
950 l_result := FND_API.G_FALSE;
951 -- Add a line into inl_ship_errors
952 Handle_InterfError(
953 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
954 p_parent_table_id => p_ship_header_int_id,
955 p_column_name => 'ORG_ID',
956 p_column_value => p_org_id,
957 p_error_message_name => 'INL_ERR_INVL_OP_UNIT',
958 x_return_status => l_return_status
959 ) ;
960 -- If any errors happen abort API.
961 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
962 RAISE FND_API.G_EXC_ERROR;
963 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
964 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
965 END IF;
966 END IF;
967 -- Standard End of Procedure/Function Logging
968 INL_LOGGING_PVT.Log_EndProc(
969 p_module_name => g_module_name,
970 p_procedure_name => l_func_name
971 );
972 RETURN FND_API.to_boolean(l_result) ;
973 EXCEPTION
974 WHEN FND_API.G_EXC_ERROR THEN
975 -- Standard Expected Error Logging
976 INL_LOGGING_PVT.Log_ExpecError (
977 p_module_name => g_module_name,
978 p_procedure_name => l_func_name
979 );
980 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
981 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
982 -- Standard Unexpected Error Logging
983 INL_LOGGING_PVT.Log_UnexpecError (
984 p_module_name => g_module_name,
985 p_procedure_name => l_func_name
986 );
987 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
988 WHEN OTHERS THEN
989 -- Standard Unexpected Error Logging
990 INL_LOGGING_PVT.Log_UnexpecError (
991 p_module_name => g_module_name,
992 p_procedure_name => l_func_name
993 );
994 IF FND_MSG_PUB.Check_Msg_Level(
995 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
996 ) THEN
997 FND_MSG_PUB.Add_Exc_Msg(
998 p_pkg_name => g_pkg_name,
999 p_procedure_name => l_func_name
1000 );
1001 END IF;
1002 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1003 END Validate_OpUnit;
1004 -- Utility name : Validate_Organization
1005 -- Type : Private
1006 -- Function : Inventory Organization validation.
1007 -- Check if a given Organization
1008 -- is valid and defined in LCM Options Setup.
1009 --
1010 -- Pre-reqs : None
1011 -- Parameters :
1012 -- IN : p_ship_header_int_id IN NUMBER
1013 -- p_organization_id IN NUMBER
1014 --
1015 -- OUT : x_return_status IN OUT NOCOPY VARCHAR2
1016 --
1017 -- Version : Current version 1.0
1018 --
1019 -- Notes :
1020 FUNCTION Validate_Organization(
1021 p_ship_header_int_id IN NUMBER,
1022 p_organization_id IN NUMBER,
1023 x_return_status OUT NOCOPY VARCHAR2
1024 ) RETURN BOOLEAN IS
1025 l_func_name CONSTANT VARCHAR2(30) := 'Validate_Organization';
1026 l_debug_info VARCHAR2(400) ;
1027 l_organization_count NUMBER;
1028 l_result VARCHAR2(1) := FND_API.G_TRUE;
1029 l_return_status VARCHAR2(1) := FND_API.G_TRUE;
1030 l_msg_count NUMBER;
1031 l_msg_data VARCHAR2(2000) ;
1032 BEGIN
1033 -- Standard Beginning of Procedure/Function Logging
1034 INL_LOGGING_PVT.Log_BeginProc(
1035 p_module_name => g_module_name,
1036 p_procedure_name => l_func_name
1037 ) ;
1038 -- Initialize API return status to success
1039 x_return_status := FND_API.G_RET_STS_SUCCESS;
1040 -- Check if the Organization is null
1041 l_debug_info := 'Check if the Organization is null';
1042 INL_LOGGING_PVT.Log_Statement(
1043 p_module_name => g_module_name,
1044 p_procedure_name => l_func_name,
1045 p_debug_info => l_debug_info
1046 ) ;
1047 IF p_organization_id IS NULL THEN
1048 l_result := FND_API.G_FALSE;
1049 -- Add a line into inl_ship_errors
1050 Handle_InterfError(
1051 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1052 p_parent_table_id => p_ship_header_int_id,
1053 p_column_name => 'ORGANIZATION_ID',
1054 p_column_value => p_organization_id,
1055 p_error_message_name => 'INL_ERR_INV_ORG_NULL',
1056 x_return_status => l_return_status) ;
1057 -- If any errors happen abort API.
1058 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1059 RAISE FND_API.G_EXC_ERROR;
1060 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1061 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1062 END IF;
1063 END IF;
1064 -- Check if the given Organization is valid for LCM
1065 l_debug_info := 'Check if the Organization exists and is valid for the INL Application';
1066 INL_LOGGING_PVT.Log_Statement(
1067 p_module_name => g_module_name,
1068 p_procedure_name => l_func_name,
1069 p_debug_info => l_debug_info
1070 ) ;
1071 SELECT COUNT(1)
1072 INTO l_organization_count
1073 FROM org_organization_definitions
1074 WHERE organization_id = p_organization_id;
1075 IF NVL(l_organization_count, 0) = 0 THEN
1076 l_result := FND_API.G_FALSE;
1077 l_organization_count := 0;
1078 -- Add a line into inl_ship_errors
1079 Handle_InterfError(
1080 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1081 p_parent_table_id => p_ship_header_int_id,
1082 p_column_name => 'ORGANIZATION_ID',
1083 p_column_value => p_organization_id,
1084 p_error_message_name => 'INL_ERR_INVL_INV_ORG',
1085 x_return_status => l_return_status
1086 );
1087 -- If any errors happen abort API.
1088 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1089 RAISE FND_API.G_EXC_ERROR;
1090 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1091 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1092 END IF;
1093 END IF;
1094 -- Check if INL Setup Options has been
1095 -- defined to the given Organization
1096 l_debug_info := 'Check if the Organization is valid in INL Options Setup';
1097 INL_LOGGING_PVT.Log_Statement(
1098 p_module_name => g_module_name,
1099 p_procedure_name => l_func_name,
1100 p_debug_info => l_debug_info
1101 ) ;
1102 SELECT COUNT(1)
1103 INTO l_organization_count
1104 FROM inl_parameters ipa
1105 WHERE ipa.organization_id = p_organization_id;
1106 IF NVL(l_organization_count, 0) = 0 THEN
1107 l_result := FND_API.G_FALSE;
1108 -- Add a line into inl_ship_errors
1109 Handle_InterfError(
1110 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1111 p_parent_table_id => p_ship_header_int_id,
1112 p_column_name => 'ORGANIZATION_ID',
1113 p_column_value => p_organization_id,
1114 p_error_message_name => 'INL_ERR_NO_LCM_OPT_DEF',
1115 x_return_status => l_return_status
1116 );
1117 -- If any errors happen abort API.
1118 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1119 RAISE FND_API.G_EXC_ERROR;
1120 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1121 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1122 END IF;
1123 END IF;
1124 -- Standard End of Procedure/Function Logging
1125 INL_LOGGING_PVT.Log_EndProc(
1126 p_module_name => g_module_name,
1127 p_procedure_name => l_func_name
1128 );
1129 RETURN FND_API.to_boolean(l_result) ;
1130 EXCEPTION
1131 WHEN FND_API.G_EXC_ERROR THEN
1132 -- Standard Expected Error Logging
1133 INL_LOGGING_PVT.Log_ExpecError (
1134 p_module_name => g_module_name,
1135 p_procedure_name => l_func_name
1136 );
1137 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1138 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1139 -- Standard Unexpected Error Logging
1140 INL_LOGGING_PVT.Log_UnexpecError (
1141 p_module_name => g_module_name,
1142 p_procedure_name => l_func_name
1143 );
1144 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1145 WHEN OTHERS THEN
1146 -- Standard Unexpected Error Logging
1147 INL_LOGGING_PVT.Log_UnexpecError (
1148 p_module_name => g_module_name,
1149 p_procedure_name => l_func_name
1150 );
1151 IF FND_MSG_PUB.Check_Msg_Level(
1152 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1153 ) THEN
1154 FND_MSG_PUB.Add_Exc_Msg(
1155 p_pkg_name => g_pkg_name,
1156 p_procedure_name => l_func_name
1157 );
1158 END IF;
1159 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1160 END Validate_Organization;
1161 -- Utility name : Validate_LinesVsHeader
1162 -- Type : Private
1163 -- Function : Validate Shipment Lines against Shipment Headers
1164 --
1165 -- Pre-reqs : None
1166 -- Parameters :
1167 -- IN : p_ship_header_int_id IN NUMBER
1168 --
1169 -- OUT : x_return_status OUT NOCOPY VARCHAR2
1170 --
1171 -- Version : Current version 1.0
1172 --
1173 -- Notes :
1174 FUNCTION Validate_LinesVsHeader
1175 (
1176 p_ship_header_int_id IN NUMBER,
1177 x_return_status IN OUT NOCOPY VARCHAR2)
1178 RETURN BOOLEAN
1179 IS
1180 l_func_name CONSTANT VARCHAR2(30) := 'Validate_LinesVsHeader';
1181 l_debug_info VARCHAR2(400) ;
1182 l_result VARCHAR2(1) := FND_API.G_TRUE;
1183 l_return_status VARCHAR2(1) ;
1184 BEGIN
1185 -- Standard Beginning of Procedure/Function Logging
1186 INL_LOGGING_PVT.Log_BeginProc(
1187 p_module_name => g_module_name,
1188 p_procedure_name => l_func_name
1189 ) ;
1190 -- Initialize API return status to success
1191 x_return_status := FND_API.G_RET_STS_SUCCESS;
1192 -- Standard End of Procedure/Function Logging
1193 INL_LOGGING_PVT.Log_EndProc(
1194 p_module_name => g_module_name,
1195 p_procedure_name => l_func_name
1196 );
1197 RETURN FND_API.to_boolean(l_result) ;
1198 EXCEPTION
1199 WHEN FND_API.G_EXC_ERROR THEN
1200 -- Standard Expected Error Logging
1201 INL_LOGGING_PVT.Log_ExpecError (
1202 p_module_name => g_module_name,
1203 p_procedure_name => l_func_name
1204 );
1205 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1206 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1207 -- Standard Unexpected Error Logging
1208 INL_LOGGING_PVT.Log_UnexpecError (
1209 p_module_name => g_module_name,
1210 p_procedure_name => l_func_name
1211 );
1212 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1213 WHEN OTHERS THEN
1214 -- Standard Unexpected Error Logging
1215 INL_LOGGING_PVT.Log_UnexpecError (
1216 p_module_name => g_module_name,
1217 p_procedure_name => l_func_name
1218 );
1219 IF FND_MSG_PUB.Check_Msg_Level(
1220 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1221 ) THEN
1222 FND_MSG_PUB.Add_Exc_Msg(
1223 p_pkg_name => g_pkg_name,
1224 p_procedure_name => l_func_name
1225 );
1226 END IF;
1227 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1228 END Validate_LinesVsHeader;
1229 -- Utility name : Validate_LastTaskCode
1230 -- Type : Private
1231 -- Function : Validate the Last Task Code which is a number to
1232 -- define until which level LCM processes should be
1233 -- executed for an imported Shipment.
1234 --
1235 -- Pre-reqs : None
1236 -- Parameters :
1237 -- IN : p_parent_table_name IN VARCHAR2
1238 -- p_parent_table_id IN NUMBER
1239 -- p_last_task_code IN VARCHAR2
1240 --
1241 -- IN OUT : x_return_status IN OUT NOCOPY VARCHAR2
1242 --
1243 -- Version : Current version 1.0
1244 --
1245 -- Notes :
1246 FUNCTION Validate_LastTaskCode
1247 (
1248 p_parent_table_name IN VARCHAR2,
1249 p_parent_table_id IN NUMBER,
1250 p_last_task_code IN VARCHAR2,
1251 x_return_status IN OUT NOCOPY VARCHAR2)
1252 RETURN BOOLEAN
1253 IS
1254 l_func_name CONSTANT VARCHAR2(30) := 'Validate_LastTaskCode';
1255 l_return_status VARCHAR2(1) ;
1256 l_debug_info VARCHAR2(400) ;
1257 l_response BOOLEAN := true;
1258 l_aux NUMBER;
1259 l_status VARCHAR2(40) ;
1260 L_TRUNC_SYSDATE CONSTANT DATE := TRUNC(SYSDATE) ;
1261 BEGIN
1262 -- Standard Beginning of Procedure/Function Logging
1263 INL_LOGGING_PVT.Log_BeginProc(
1264 p_module_name => g_module_name,
1265 p_procedure_name => l_func_name
1266 ) ;
1267 -- Initialize API return status to success
1268 x_return_status := FND_API.G_RET_STS_SUCCESS;
1269 BEGIN
1270 SELECT 1
1271 INTO l_aux
1272 FROM fnd_lookup_values_vl
1273 WHERE lookup_type = 'INL_OI_LAST_TASK_CODES'
1274 AND lookup_code = p_last_task_code
1275 AND enabled_flag = 'Y'
1276 AND start_date_active <= L_TRUNC_SYSDATE
1277 AND
1278 (
1279 end_date_active IS NULL
1280 OR end_date_active >= L_TRUNC_SYSDATE
1281 ) ;
1282 EXCEPTION
1283 WHEN NO_DATA_FOUND THEN
1284 l_response := FALSE;
1285 -- Add a line into inl_ship_errors
1286 Handle_InterfError(
1287 p_parent_table_name => p_parent_table_name,
1288 p_parent_table_id => p_parent_table_id,
1289 p_column_name => 'LAST_TASK_CODE',
1290 p_column_value => p_last_task_code,
1291 p_error_message_name => 'INL_OI_LAST_TASK_CODES',
1292 p_token1_name => 'LTC',
1293 p_token1_value => p_last_task_code,
1294 x_return_status => l_return_status
1295 ) ;
1296 -- If unexpected errors happen abort
1297 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1298 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1299 END IF;
1300 END;
1301 -- Standard End of Procedure/Function Logging
1302 INL_LOGGING_PVT.Log_EndProc(
1303 p_module_name => g_module_name,
1304 p_procedure_name => l_func_name
1305 );
1306 RETURN l_response;
1307 EXCEPTION
1308 WHEN FND_API.G_EXC_ERROR THEN
1309 -- Standard Expected Error Logging
1310 INL_LOGGING_PVT.Log_ExpecError (
1311 p_module_name => g_module_name,
1312 p_procedure_name => l_func_name
1313 );
1314 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1315 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1316 -- Standard Unexpected Error Logging
1317 INL_LOGGING_PVT.Log_UnexpecError (
1318 p_module_name => g_module_name,
1319 p_procedure_name => l_func_name
1320 );
1321 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1322 WHEN OTHERS THEN
1323 -- Standard Unexpected Error Logging
1324 INL_LOGGING_PVT.Log_UnexpecError (
1325 p_module_name => g_module_name,
1326 p_procedure_name => l_func_name
1327 );
1328 IF FND_MSG_PUB.Check_Msg_Level(
1329 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1330 ) THEN
1331 FND_MSG_PUB.Add_Exc_Msg(
1332 p_pkg_name => g_pkg_name,
1333 p_procedure_name => l_func_name
1334 );
1335 END IF;
1336 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1337 END Validate_LastTaskCode;
1338 -- Utility name : Validate_TrxType
1339 -- Type : Private
1340 -- Function : Validate the transaction type
1341 --
1342 -- Pre-reqs : None
1343 -- Parameters :
1344 -- IN : p_ship_header_int_id IN NUMBER
1345 -- p_transaction_type IN NUMBER
1346 -- p_ship_header_id IN NUMBER
1347 --
1348 -- IN OUT : x_return_status IN OUT NOCOPY VARCHAR2
1349 --
1350 -- Version : Current version 1.0
1351 --
1352 -- Notes :
1353 FUNCTION Validate_TrxType
1354 (
1355 p_ship_header_int_id IN NUMBER,
1356 p_transaction_type IN VARCHAR2,
1357 p_ship_header_id IN NUMBER,
1358 x_return_status IN OUT NOCOPY VARCHAR2)
1359 RETURN BOOLEAN
1360 IS
1361 l_func_name CONSTANT VARCHAR2(30) := 'Validate_TrxType';
1362 l_return_status VARCHAR2(1) ;
1363 l_debug_info VARCHAR2(400) ;
1364 l_response BOOLEAN := true;
1365 l_aux NUMBER;
1366 l_status VARCHAR2(40) ;
1367 BEGIN
1368 -- Standard Beginning of Procedure/Function Logging
1369 INL_LOGGING_PVT.Log_BeginProc(
1370 p_module_name => g_module_name,
1371 p_procedure_name => l_func_name
1372 ) ;
1373 -- Initialize API return status to success
1374 x_return_status := FND_API.G_RET_STS_SUCCESS;
1375 IF p_transaction_type = 'CREATE' THEN
1376 -- p_ship_header_id cannot be null
1377 IF p_ship_header_id IS NOT NULL THEN
1378 l_response := FALSE;
1379 -- Add a line into inl_ship_errors
1380 Handle_InterfError(
1381 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1382 p_parent_table_id => p_ship_header_int_id,
1383 p_column_name => 'TRANSACTION_TYPE',
1384 p_column_value => p_transaction_type,
1385 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_ID_NNULL',
1386 p_token1_name => 'ID_NAME',
1387 p_token1_value => 'SHIP_HEADER_INT_ID',
1388 p_token2_name => 'ID_VAL',
1389 p_token2_value => p_ship_header_int_id,
1390 x_return_status => l_return_status
1391 ) ;
1392 -- If any errors happen abort API.
1393 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1394 RAISE FND_API.G_EXC_ERROR;
1395 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1396 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1397 END IF;
1398 ELSE
1399 SELECT COUNT( *)
1400 INTO l_aux
1401 FROM inl_ship_lines_int
1402 WHERE ship_header_int_id = p_ship_header_int_id
1403 AND
1404 (
1405 ship_header_id IS NOT NULL
1406 OR ship_line_id IS NOT NULL
1407 ) ;
1408 IF NVL(l_aux, 0) > 0 THEN
1409 Handle_InterfError(
1410 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1411 p_parent_table_id => p_ship_header_int_id,
1412 p_column_name => 'TRANSACTION_TYPE',
1413 p_column_value => p_transaction_type,
1414 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_ID_NNULL',
1415 p_token1_name => 'ID_NAME',
1416 p_token1_value => 'SHIP_HEADER_INT_ID',
1417 p_token2_name => 'ID_VAL',
1418 p_token2_value => p_ship_header_int_id,
1419 x_return_status => l_return_status
1420 ) ;
1421 l_response := FALSE;
1422
1423 -- Add a line into inl_ship_errors
1424 FOR c_lin_err IN
1425 (
1426 SELECT ship_line_int_id
1427 FROM inl_ship_lines_int
1428 WHERE ship_header_int_id = p_ship_header_int_id
1429 AND
1430 (
1431 ship_header_id IS NOT NULL
1432 OR ship_line_id IS NOT NULL
1433 )
1434 )
1435 LOOP
1436 Handle_InterfError(
1437 p_parent_table_name => 'INL_SHIP_LINES_INT',
1438 p_parent_table_id => c_lin_err.ship_line_int_id,
1439 p_column_name => 'TRANSACTION_TYPE',
1440 p_column_value => p_transaction_type,
1441 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_ID_NNULL',
1442 p_token1_name => 'ID_NAME',
1443 p_token1_value => 'SHIP_HEADER_INT_ID',
1444 p_token2_name => 'ID_VAL',
1445 p_token2_value => p_ship_header_int_id,
1446 x_return_status => l_return_status
1447 ) ;
1448 -- If any errors happen abort API.
1449
1450 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1451 RAISE FND_API.G_EXC_ERROR;
1452 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1453 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1454 END IF;
1455 END LOOP;
1456 END IF;
1457 END IF;
1458 ELSIF p_transaction_type = 'UPDATE' THEN
1459 -- p_ship_header_id cannot be null
1460 IF p_ship_header_id IS NULL THEN
1461 l_response := FALSE;
1462 -- Add a line into inl_ship_errors
1463 Handle_InterfError(
1464 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1465 p_parent_table_id => p_ship_header_int_id,
1466 p_column_name => 'TRANSACTION_TYPE',
1467 p_column_value => p_transaction_type,
1468 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_ID_NULL',
1469 p_token1_name => 'COLUMN',
1470 p_token1_value => 'SHIP_HEADER_ID',
1471 p_token2_name => 'ID_NAME',
1472 p_token2_value => 'SHIP_HEADER_INT_ID',
1473 p_token3_name => 'ID_VAL',
1474 p_token3_value => p_ship_header_int_id,
1475 x_return_status => l_return_status) ;
1476 -- If any errors happen abort API.
1477
1478 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1479 RAISE FND_API.G_EXC_ERROR;
1480 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1481 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1482 END IF;
1483 END IF;
1484 SELECT COUNT( *)
1485 INTO l_aux
1486 FROM inl_ship_lines_int a
1487 WHERE a.ship_header_int_id = p_ship_header_int_id
1488 AND a.ship_line_id IS NOT NULL
1489 AND NOT EXISTS
1490 (
1491 SELECT 1
1492 FROM inl_ship_lines_all l,
1493 inl_ship_line_groups g
1494 WHERE l.ship_line_id = a.ship_line_id
1495 AND l.ship_line_group_id = g.ship_line_group_id
1496 AND NVL(a.ship_line_group_reference, FND_API.G_MISS_CHAR) = NVL(g.ship_line_group_reference, FND_API.G_MISS_CHAR)
1497 AND a.ship_line_src_type_code = g.src_type_code
1498 AND a.party_id = g.party_id
1499 AND a.party_site_id = g.party_site_id
1500 AND NVL(a.source_organization_id, FND_API.G_MISS_NUM) = NVL(g.source_organization_id, FND_API.G_MISS_NUM)
1501 AND NVL(a.attribute_category_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute_category, FND_API.G_MISS_CHAR)
1502 AND NVL(a.attribute1_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute1, FND_API.G_MISS_CHAR)
1503 AND NVL(a.attribute2_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute2, FND_API.G_MISS_CHAR)
1504 AND NVL(a.attribute3_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute3, FND_API.G_MISS_CHAR)
1505 AND NVL(a.attribute4_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute4, FND_API.G_MISS_CHAR)
1506 AND NVL(a.attribute5_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute5, FND_API.G_MISS_CHAR)
1507 AND NVL(a.attribute6_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute6, FND_API.G_MISS_CHAR)
1508 AND NVL(a.attribute7_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute7, FND_API.G_MISS_CHAR)
1509 AND NVL(a.attribute8_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute8, FND_API.G_MISS_CHAR)
1510 AND NVL(a.attribute9_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute9, FND_API.G_MISS_CHAR)
1511 AND NVL(a.attribute10_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute10, FND_API.G_MISS_CHAR)
1512 AND NVL(a.attribute11_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute11, FND_API.G_MISS_CHAR)
1513 AND NVL(a.attribute12_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute12, FND_API.G_MISS_CHAR)
1514 AND NVL(a.attribute13_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute13, FND_API.G_MISS_CHAR)
1515 AND NVL(a.attribute14_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute14, FND_API.G_MISS_CHAR)
1516 AND NVL(a.attribute15_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute15, FND_API.G_MISS_CHAR)
1517 ) ;
1518 IF NVL(l_aux, 0) > 0 THEN
1519 l_response := FALSE;
1520 Handle_InterfError(
1521 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1522 p_parent_table_id => p_ship_header_int_id,
1523 p_column_name => 'TRANSACTION_TYPE',
1524 p_column_value => p_transaction_type,
1525 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_UPD_GRP',
1526 x_return_status => l_return_status
1527 ) ;
1528 -- If unexpected errors happen abort
1529 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1530 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1531 END IF;
1532 -- Add a line into inl_ship_errors for each line
1533 FOR c_lin_err IN (
1534 SELECT ship_line_int_id
1535 FROM inl_ship_lines_int a
1536 WHERE a.ship_header_int_id = p_ship_header_int_id
1537 AND a.ship_line_id IS NOT NULL
1538 AND NOT EXISTS
1539 (
1540 SELECT 1
1541 FROM inl_ship_lines_all l,
1542 inl_ship_line_groups g
1543 WHERE l.ship_line_id = a.ship_line_id
1544 AND l.ship_line_group_id = g.ship_line_group_id
1545 AND NVL(a.ship_line_group_reference, FND_API.G_MISS_CHAR) = NVL(g.ship_line_group_reference, FND_API.G_MISS_CHAR)
1546 AND a.ship_line_src_type_code = g.src_type_code
1547 AND a.party_id = g.party_id
1548 AND a.party_site_id = g.party_site_id
1549 AND NVL(a.source_organization_id, FND_API.G_MISS_NUM) = NVL(g.source_organization_id, FND_API.G_MISS_NUM)
1550 AND NVL(a.attribute_category_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute_category, FND_API.G_MISS_CHAR)
1551 AND NVL(a.attribute1_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute1, FND_API.G_MISS_CHAR)
1552 AND NVL(a.attribute2_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute2, FND_API.G_MISS_CHAR)
1553 AND NVL(a.attribute3_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute3, FND_API.G_MISS_CHAR)
1554 AND NVL(a.attribute4_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute4, FND_API.G_MISS_CHAR)
1555 AND NVL(a.attribute5_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute5, FND_API.G_MISS_CHAR)
1556 AND NVL(a.attribute6_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute6, FND_API.G_MISS_CHAR)
1557 AND NVL(a.attribute7_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute7, FND_API.G_MISS_CHAR)
1558 AND NVL(a.attribute8_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute8, FND_API.G_MISS_CHAR)
1559 AND NVL(a.attribute9_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute9, FND_API.G_MISS_CHAR)
1560 AND NVL(a.attribute10_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute10, FND_API.G_MISS_CHAR)
1561 AND NVL(a.attribute11_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute11, FND_API.G_MISS_CHAR)
1562 AND NVL(a.attribute12_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute12, FND_API.G_MISS_CHAR)
1563 AND NVL(a.attribute13_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute13, FND_API.G_MISS_CHAR)
1564 AND NVL(a.attribute14_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute14, FND_API.G_MISS_CHAR)
1565 AND NVL(a.attribute15_lg, FND_API.G_MISS_CHAR) = NVL(g.attribute15, FND_API.G_MISS_CHAR)
1566 )
1567 ) LOOP
1568 Handle_InterfError(
1569 p_parent_table_name => 'INL_SHIP_LINES_INT',
1570 p_parent_table_id => c_lin_err.ship_line_int_id,
1571 p_column_name => 'TRANSACTION_TYPE',
1572 p_column_value => p_transaction_type,
1573 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_UPD_GRP',
1574 x_return_status => l_return_status
1575 ) ;
1576 -- If any errors happen abort API.
1577 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1578 RAISE FND_API.G_EXC_ERROR;
1579 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1580 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1581 END IF;
1582 END LOOP;
1583 END IF;
1584 ELSIF p_transaction_type = 'DELETE' THEN
1585 -- p_ship_header_id cannot be null
1586 IF p_ship_header_id IS NULL THEN
1587 l_response := FALSE;
1588 -- Add a line into inl_ship_errors
1589 Handle_InterfError(
1590 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1591 p_parent_table_id => p_ship_header_int_id,
1592 p_column_name => 'TRANSACTION_TYPE',
1593 p_column_value => p_transaction_type,
1594 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_ID_NULL',
1595 p_token1_name => 'COLUMN',
1596 p_token1_value => 'SHIP_HEADER_ID',
1597 p_token2_name => 'ID_NAME',
1598 p_token2_value => 'SHIP_HEADER_INT_ID',
1599 p_token3_name => 'ID_VAL',
1600 p_token3_value => p_ship_header_int_id,
1601 x_return_status => l_return_status
1602 ) ;
1603 -- If any errors happen abort API.
1604 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1605 RAISE FND_API.G_EXC_ERROR;
1606 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1607 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1608 END IF;
1609 ELSE
1610 -- Check for all ids in lines
1611 SELECT COUNT( *)
1612 INTO l_aux
1613 FROM inl_ship_lines_int
1614 WHERE ship_header_int_id = p_ship_header_int_id
1615 AND (ship_header_id IS NULL
1616 OR ship_line_id IS NULL
1617 )
1618 ;
1619 IF NVL(l_aux, 0) > 0 THEN
1620 l_response := FALSE;
1621 -- Add a line into inl_ship_errors
1622 Handle_InterfError(
1623 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1624 p_parent_table_id => p_ship_header_int_id,
1625 p_column_name => 'TRANSACTION_TYPE',
1626 p_column_value => p_transaction_type,
1627 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_ID_NULL',
1628 p_token1_name => 'COLUMN',
1629 p_token1_value => 'SHIP_HEADER_ID/SHIP_LINE_ID',
1630 p_token2_name => 'ID_NAME',
1631 p_token2_value => 'SHIP_HEADER_INT_ID',
1632 p_token3_name => 'ID_VAL',
1633 p_token3_value => p_ship_header_int_id,
1634 x_return_status => l_return_status
1635 ) ;
1636 -- If any errors happen abort API.
1637 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1638 RAISE FND_API.G_EXC_ERROR;
1639 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1640 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1641 END IF;
1642 END IF;
1643 -- Check for lines under a given interface header
1644 SELECT COUNT( *)
1645 INTO l_aux
1646 FROM inl_ship_lines_int
1647 WHERE ship_header_int_id = p_ship_header_int_id;
1648 -- Check if all lines were included into the Open Interface
1649 IF NVL(l_aux, 0) > 0 THEN
1650 SELECT COUNT( *)
1651 INTO l_aux
1652 FROM inl_ship_lines_all a
1653 WHERE a.ship_header_id = p_ship_header_id
1654 AND NOT EXISTS
1655 (
1656 SELECT 1
1657 FROM inl_ship_lines_int b
1658 WHERE b.ship_header_int_id = p_ship_header_int_id
1659 AND b.ship_header_id = a.ship_header_id
1660 AND b.ship_line_id = a.ship_line_id
1661 )
1662 ;
1663 IF NVL(l_aux, 0) > 0 THEN
1664 l_response := FALSE;
1665 -- Add a line into inl_ship_errors
1666 Handle_InterfError(
1667 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1668 p_parent_table_id => p_ship_header_int_id,
1669 p_column_name => 'TRANSACTION_TYPE',
1670 p_column_value => p_transaction_type,
1671 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_DEL',
1672 x_return_status => l_return_status
1673 ) ;
1674 -- If any errors happen abort API.
1675 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1676 RAISE FND_API.G_EXC_ERROR;
1677 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1678 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1679 END IF;
1680 END IF;
1681 END IF;
1682 END IF;
1683 ELSE
1684 l_response := FALSE;
1685 -- Add a line into inl_ship_errors
1686 Handle_InterfError(
1687 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1688 p_parent_table_id => p_ship_header_int_id,
1689 p_column_name => 'TRANSACTION_TYPE',
1690 p_column_value => p_transaction_type,
1691 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_INVL',
1692 p_token1_name => 'TTYPE',
1693 p_token1_value => p_transaction_type,
1694 p_token2_name => 'ID_NAME',
1695 p_token2_value => 'SHIP_HEADER_INT_ID',
1696 p_token3_name => 'ID_VAL',
1697 p_token3_value => p_ship_header_int_id,
1698 x_return_status => l_return_status
1699 ) ;
1700 -- If any errors happen abort API.
1701 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1702 RAISE FND_API.G_EXC_ERROR;
1703 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1704 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1705 END IF;
1706 END IF;
1707 IF p_transaction_type IN('UPDATE', 'DELETE')
1708 AND p_ship_header_id IS NOT NULL
1709 THEN
1710 SELECT SHIP_STATUS_CODE
1711 INTO l_status
1712 FROM inl_ship_headers_all a
1713 WHERE a.ship_header_id = p_ship_header_id;
1714 IF l_status = 'COMPLETED' THEN
1715 l_response := FALSE;
1716 -- Add a line into inl_ship_errors
1717 Handle_InterfError(
1718 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1719 p_parent_table_id => p_ship_header_int_id,
1720 p_column_name => 'TRANSACTION_TYPE',
1721 p_column_value => p_transaction_type,
1722 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_STA_INVL',
1723 p_token1_name => 'SHIP_HEADER_INT_ID',
1724 p_token1_value => p_ship_header_int_id,
1725 x_return_status => l_return_status
1726 ) ;
1727 -- If any errors happen abort API.
1728 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1729 RAISE FND_API.G_EXC_ERROR;
1730 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1731 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1732 END IF;
1733 END IF;
1734 END IF;
1735 -- Standard End of Procedure/Function Logging
1736 INL_LOGGING_PVT.Log_EndProc(
1737 p_module_name => g_module_name,
1738 p_procedure_name => l_func_name
1739 );
1740 RETURN l_response;
1741 EXCEPTION
1742 WHEN FND_API.G_EXC_ERROR THEN
1743 -- Standard Expected Error Logging
1744 INL_LOGGING_PVT.Log_ExpecError (
1745 p_module_name => g_module_name,
1746 p_procedure_name => l_func_name
1747 );
1748 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1749 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1750 -- Standard Unexpected Error Logging
1751 INL_LOGGING_PVT.Log_UnexpecError (
1752 p_module_name => g_module_name,
1753 p_procedure_name => l_func_name
1754 );
1755 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1756 WHEN OTHERS THEN
1757 -- Standard Unexpected Error Logging
1758 INL_LOGGING_PVT.Log_UnexpecError (
1759 p_module_name => g_module_name,
1760 p_procedure_name => l_func_name
1761 );
1762 IF FND_MSG_PUB.Check_Msg_Level(
1763 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1764 ) THEN
1765 FND_MSG_PUB.Add_Exc_Msg(
1766 p_pkg_name => g_pkg_name,
1767 p_procedure_name => l_func_name
1768 );
1769 END IF;
1770 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
1771 END Validate_TrxType;
1772
1773 -- Utility name : Validate_LCMImport
1774 -- Type : Private
1775 -- Function : Validate a Shipment before import it from interface to INL Tables
1776 --
1777 -- Pre-reqs : None
1778 -- Parameters :
1779 -- IN : p_ship_header_int_id IN NUMBER
1780 -- p_org_id IN NUMBER
1781 -- p_organization_id IN NUMBER
1782 -- p_transaction_type IN NUMBER
1783 -- p_last_task_code IN VARCHAR2
1784 -- p_ship_num IN VARCHAR2,
1785 -- p_ship_header_id IN NUMBER
1786 -- p_ship_type_id IN NUMBER,
1787 --
1788 -- OUT : x_return_status OUT NOCOPY VARCHAR2
1789 --
1790 -- Version : Current version 1.0
1791 --
1792 -- Notes :
1793 FUNCTION Validate_LCMImport (
1794 p_ship_header_int_id IN NUMBER,
1795 p_org_id IN NUMBER,
1796 p_organization_id IN NUMBER,
1797 p_transaction_type IN VARCHAR2,
1798 p_last_task_code IN VARCHAR2,
1799 p_ship_num IN VARCHAR2,
1800 p_ship_header_id IN NUMBER,
1801 p_ship_type_id IN NUMBER,
1802 x_return_status OUT NOCOPY VARCHAR2
1803 ) RETURN BOOLEAN IS
1804 l_func_name CONSTANT VARCHAR2(30) := 'Validate_LCMImport';
1805 l_return_status VARCHAR2(1) ;
1806 l_debug_info VARCHAR2(400) ;
1807 l_result VARCHAR2(1) := FND_API.G_TRUE;
1808 l_response BOOLEAN;
1809 BEGIN
1810 -- Standard Beginning of Procedure/Function Logging
1811 INL_LOGGING_PVT.Log_BeginProc(
1812 p_module_name => g_module_name,
1813 p_procedure_name => l_func_name
1814 ) ;
1815 -- Initialize API return status to success
1816 x_return_status := FND_API.G_RET_STS_SUCCESS;
1817 -- Consist Lines versus Headers
1818 l_debug_info := 'Concistence Lines versus Headers';
1819 INL_LOGGING_PVT.Log_Statement(
1820 p_module_name => g_module_name,
1821 p_procedure_name => l_func_name,
1822 p_debug_info => l_debug_info
1823 ) ;
1824 INL_LOGGING_PVT.Log_APICallIn(
1825 p_module_name => g_module_name,
1826 p_procedure_name => l_func_name,
1827 p_call_api_name => 'Validate_LinesVsHeader',
1828 p_in_param_name1 => 'p_ship_header_int_id',
1829 p_in_param_value1 => p_ship_header_int_id
1830 ) ;
1831 l_response := Validate_LinesVsHeader(
1832 p_ship_header_int_id => p_ship_header_int_id,
1833 x_return_status => l_return_status
1834 );
1835 -- If any errors happen abort API.
1836 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1837 RAISE FND_API.G_EXC_ERROR;
1838 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1839 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1840 END IF;
1841 l_debug_info := 'Consist Lines versus Headers: ';
1842 IF l_response = FALSE THEN
1843 l_result := FND_API.G_FALSE;
1844 l_debug_info := l_debug_info||'FALSE';
1845 ELSE
1846 l_debug_info := l_debug_info||'OK';
1847 END IF;
1848 INL_LOGGING_PVT.Log_Statement(
1849 p_module_name => g_module_name,
1850 p_procedure_name => l_func_name,
1851 p_debug_info => l_debug_info
1852 ) ;
1853 -- Consistency of Transaction Type
1854 l_debug_info := 'Consistency of Transaction Type: '||p_transaction_type;
1855 INL_LOGGING_PVT.Log_Statement(
1856 p_module_name => g_module_name,
1857 p_procedure_name => l_func_name,
1858 p_debug_info => l_debug_info
1859 ) ;
1860 INL_LOGGING_PVT.Log_APICallIn(p_module_name => g_module_name,
1861 p_procedure_name => l_func_name,
1862 p_call_api_name => 'Validate_TrxType',
1863 p_in_param_name1 => 'p_ship_header_int_id',
1864 p_in_param_value1 => p_ship_header_int_id,
1865 p_in_param_name2 => 'p_transaction_type',
1866 p_in_param_value2 => p_transaction_type,
1867 p_in_param_name3 => 'p_ship_header_id',
1868 p_in_param_value3 => p_ship_header_id) ;
1869 l_response := Validate_TrxType(p_ship_header_int_id => p_ship_header_int_id, p_transaction_type => p_transaction_type, p_ship_header_id => p_ship_header_id, x_return_status => l_return_status) ;
1870 -- If any errors happen abort API.
1871 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1872 RAISE FND_API.G_EXC_ERROR;
1873 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1874 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1875 END IF;
1876 l_debug_info := 'Consistency of Transaction Type: ';
1877 IF l_response THEN
1878 l_debug_info := l_debug_info||'OK';
1879 ELSE
1880 l_result := FND_API.G_FALSE;
1881 l_debug_info := l_debug_info||'FALSE';
1882 END IF;
1883 -- Consistency of Last Task Code
1884 l_debug_info := 'Consistency of Last Task Code: '||p_last_task_code;
1885 INL_LOGGING_PVT.Log_Statement(
1886 p_module_name => g_module_name,
1887 p_procedure_name => l_func_name,
1888 p_debug_info => l_debug_info
1889 ) ;
1890 INL_LOGGING_PVT.Log_APICallIn(
1891 p_module_name => g_module_name,
1892 p_procedure_name => l_func_name,
1893 p_call_api_name => 'Validate_LastTaskCode',
1894 p_in_param_name1 => 'p_parent_table_name',
1895 p_in_param_value1 => 'INL_SHIP_HEADERS_INT',
1896 p_in_param_name2 => 'p_parent_table_id',
1897 p_in_param_value2 => p_ship_header_int_id,
1898 p_in_param_name3 => 'p_last_task_code',
1899 p_in_param_value3 => p_last_task_code
1900 ) ;
1901 l_response := Validate_LastTaskCode(
1902 p_parent_table_name => 'INL_SHIP_HEADERS_INT',
1903 p_parent_table_id => p_ship_header_int_id,
1904 p_last_task_code => p_last_task_code,
1905 x_return_status => l_return_status) ;
1906 -- If any errors happen abort API.
1907 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1908 RAISE FND_API.G_EXC_ERROR;
1909 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1910 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1911 END IF;
1912 l_debug_info := 'Consistency of Last Task Code: ';
1913 IF l_response THEN
1914 l_debug_info := l_debug_info||'OK';
1915 ELSE
1916 l_result := FND_API.G_FALSE;
1917 l_debug_info := l_debug_info||'FALSE';
1918 END IF;
1919 -- Operating Unit validation
1920 l_response := Validate_OpUnit(
1921 p_ship_header_int_id => p_ship_header_int_id,
1922 p_org_id => p_org_id,
1923 x_return_status => l_return_status
1924 ) ;
1925 -- If any errors happen abort API.
1926 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1927 RAISE FND_API.G_EXC_ERROR;
1928 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1929 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1930 END IF;
1931 IF NOT l_response THEN
1932 l_result := FND_API.G_FALSE;
1933 END IF;
1934 -- If unexpected errors happen abort
1935 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1936 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1937 END IF;
1938
1939 -- Shipment Number validation
1940 l_response := Validate_ShipNum(
1941 p_ship_header_int_id=> p_ship_header_int_id,
1942 p_ship_num => p_ship_num,
1943 p_organization_id => p_organization_id,
1944 x_return_status => l_return_status
1945 ) ;
1946 -- If any errors happen abort API.
1947 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1948 RAISE FND_API.G_EXC_ERROR;
1949 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1950 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1951 END IF;
1952 IF NOT l_response THEN
1953 l_result := FND_API.G_FALSE;
1954 END IF;
1955 -- If unexpected errors happen abort
1956 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1957 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1958 END IF;
1959
1960
1961 -- Shipment Type validation
1962 l_response := Validate_ShipType(
1963 p_ship_header_int_id=> p_ship_header_int_id,
1964 p_ship_type_id => p_ship_type_id,
1965 x_return_status => l_return_status
1966 ) ;
1967 -- If any errors happen abort API.
1968 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1969 RAISE FND_API.G_EXC_ERROR;
1970 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1971 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1972 END IF;
1973 IF NOT l_response THEN
1974 l_result := FND_API.G_FALSE;
1975 END IF;
1976 -- If unexpected errors happen abort
1977 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1978 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1979 END IF;
1980
1981 l_debug_info := 'Inventory Organization validation';
1982 INL_LOGGING_PVT.Log_Statement(
1983 p_module_name => g_module_name,
1984 p_procedure_name => l_func_name,
1985 p_debug_info => l_debug_info
1986 ) ;
1987
1988 -- Inventory Organization validation
1989 l_response := Validate_Organization(
1990 p_ship_header_int_id => p_ship_header_int_id,
1991 p_organization_id => p_organization_id,
1992 x_return_status => l_return_status) ;
1993 -- If any errors happen abort API.
1994 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1995 RAISE FND_API.G_EXC_ERROR;
1996 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1997 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1998 END IF;
1999 IF NOT l_response THEN
2000 l_result := FND_API.G_FALSE;
2001 END IF;
2002 -- If unexpected errors happen abort
2003 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2004 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2005 END IF;
2006 -- Standard End of Procedure/Function Logging
2007 INL_LOGGING_PVT.Log_EndProc(
2008 p_module_name => g_module_name,
2009 p_procedure_name => l_func_name
2010 );
2011 RETURN FND_API.to_boolean(l_result) ;
2012 EXCEPTION
2013 WHEN FND_API.G_EXC_ERROR THEN
2014 -- Standard Expected Error Logging
2015 INL_LOGGING_PVT.Log_ExpecError (
2016 p_module_name => g_module_name,
2017 p_procedure_name => l_func_name
2018 );
2019 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
2020 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2021 -- Standard Unexpected Error Logging
2022 INL_LOGGING_PVT.Log_UnexpecError (
2023 p_module_name => g_module_name,
2024 p_procedure_name => l_func_name
2025 );
2026 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
2027 WHEN OTHERS THEN
2028 -- Standard Unexpected Error Logging
2029 INL_LOGGING_PVT.Log_UnexpecError (
2030 p_module_name => g_module_name,
2031 p_procedure_name => l_func_name
2032 );
2033 IF FND_MSG_PUB.Check_Msg_Level(
2034 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2035 ) THEN
2036 FND_MSG_PUB.Add_Exc_Msg(
2037 p_pkg_name => g_pkg_name,
2038 p_procedure_name => l_func_name
2039 );
2040 END IF;
2041 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
2042 END Validate_LCMImport;
2043
2044 -- Utility name : Validate_ShipLinImport
2045 -- Type : Private
2046 -- Function : Validate a Shipment before import it from interface to INL Tables
2047 --
2048 -- Pre-reqs : None
2049 -- Parameters :
2050 -- IN : p_ship_header_int_id IN NUMBER
2051 -- p_ship_line_int_id IN NUMBER
2052 -- p_ship_type_id IN NUMBER,
2053 -- p_ship_line_type_id IN NUMBER,
2054 --
2055 -- OUT : x_return_status OUT NOCOPY VARCHAR2
2056 --
2057 -- Version : Current version 1.0
2058 --
2059 -- Notes :
2060 FUNCTION Validate_ShipLinImport (
2061 p_ship_header_int_id IN NUMBER,
2062 p_ship_line_int_id IN NUMBER,
2063 p_ship_type_id IN NUMBER,
2064 p_ship_line_type_id IN NUMBER,
2065 x_return_status OUT NOCOPY VARCHAR2
2066 ) RETURN BOOLEAN IS
2067 l_func_name CONSTANT VARCHAR2(30) := 'Validate_ShipLinImport';
2068 l_return_status VARCHAR2(1) ;
2069 l_debug_info VARCHAR2(400) ;
2070 l_result VARCHAR2(1) := FND_API.G_TRUE;
2071 l_response BOOLEAN;
2072 BEGIN
2073 -- Standard Beginning of Procedure/Function Logging
2074 INL_LOGGING_PVT.Log_BeginProc(
2075 p_module_name => g_module_name,
2076 p_procedure_name => l_func_name
2077 ) ;
2078 -- Initialize API return status to success
2079 x_return_status := FND_API.G_RET_STS_SUCCESS;
2080
2081
2082 -- Consist Lines versus Headers
2083 l_debug_info := 'Validate ship line type';
2084 INL_LOGGING_PVT.Log_Statement(
2085 p_module_name => g_module_name,
2086 p_procedure_name => l_func_name,
2087 p_debug_info => l_debug_info
2088 ) ;
2089 INL_LOGGING_PVT.Log_APICallIn(
2090 p_module_name => g_module_name,
2091 p_procedure_name => l_func_name,
2092 p_call_api_name => 'Validate_ShipLineType',
2093 p_in_param_name1 => 'p_ship_header_int_id',
2094 p_in_param_value1 => p_ship_header_int_id,
2095 p_in_param_name2 => 'p_ship_line_int_id',
2096 p_in_param_value2 => p_ship_line_int_id,
2097 p_in_param_name3 => 'p_ship_type_id',
2098 p_in_param_value3 => p_ship_type_id,
2099 p_in_param_name4 => 'p_ship_line_type_id',
2100 p_in_param_value4 => p_ship_line_type_id
2101 ) ;
2102
2103 -- Shipment Line Type validation
2104 l_response := Validate_ShipLineType(
2105 p_ship_header_int_id=> p_ship_header_int_id,
2106 p_ship_line_int_id => p_ship_line_int_id,
2107 p_ship_type_id => p_ship_type_id,
2108 p_ship_line_type_id => p_ship_line_type_id,
2109 x_return_status => l_return_status
2110 ) ;
2111 -- If any errors happen abort API.
2112 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2113 RAISE FND_API.G_EXC_ERROR;
2114 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2115 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2116 END IF;
2117 IF NOT l_response THEN
2118 l_result := FND_API.G_FALSE;
2119 END IF;
2120 -- If unexpected errors happen abort
2121 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2122 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2123 END IF;
2124 IF l_response THEN
2125 l_debug_info := l_debug_info||'OK';
2126 ELSE
2127 l_result := FND_API.G_FALSE;
2128 l_debug_info := l_debug_info||'FALSE';
2129 END IF;
2130
2131
2132 -- Standard End of Procedure/Function Logging
2133 INL_LOGGING_PVT.Log_EndProc(
2134 p_module_name => g_module_name,
2135 p_procedure_name => l_func_name
2136 );
2137 RETURN FND_API.to_boolean(l_result) ;
2138 EXCEPTION
2139 WHEN FND_API.G_EXC_ERROR THEN
2140 -- Standard Expected Error Logging
2141 INL_LOGGING_PVT.Log_ExpecError (
2142 p_module_name => g_module_name,
2143 p_procedure_name => l_func_name
2144 );
2145 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
2146 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2147 -- Standard Unexpected Error Logging
2148 INL_LOGGING_PVT.Log_UnexpecError (
2149 p_module_name => g_module_name,
2150 p_procedure_name => l_func_name
2151 );
2152 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
2153 WHEN OTHERS THEN
2154 -- Standard Unexpected Error Logging
2155 INL_LOGGING_PVT.Log_UnexpecError (
2156 p_module_name => g_module_name,
2157 p_procedure_name => l_func_name
2158 );
2159 IF FND_MSG_PUB.Check_Msg_Level(
2160 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2161 ) THEN
2162 FND_MSG_PUB.Add_Exc_Msg(
2163 p_pkg_name => g_pkg_name,
2164 p_procedure_name => l_func_name
2165 );
2166 END IF;
2167 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
2168 END Validate_ShipLinImport;
2169
2170 -- Utility name : Delete_Ship
2171 -- Type : Private
2172 -- Function : Delete a LCM Shipment from inl_ship_holds, inl_associations,
2173 -- inl_allocations, inl_tax_lines, inl_charge_lines,
2174 -- inl_ship_lines_all, inl_ship_line_groups and inl_ship_headers_all
2175 -- Pre-reqs : None
2176 -- Parameters :
2177 -- IN : p_ship_header_id IN NUMBER
2178 --
2179 -- OUT : x_return_status OUT NOCOPY VARCHAR2
2180 --
2181 -- Version : Current version 1.0
2182 --
2183 -- Notes :
2184 PROCEDURE Delete_Ship (
2185 p_ship_header_id IN NUMBER,
2186 x_return_status OUT NOCOPY VARCHAR2
2187 ) IS
2188 l_proc_name CONSTANT VARCHAR2(100) := 'Delete_Ship';
2189 l_debug_info VARCHAR2(2000) ;
2190 BEGIN
2191 -- Standard Beginning of Procedure/Function Logging
2192 INL_LOGGING_PVT.Log_BeginProc(
2193 p_module_name => g_module_name,
2194 p_procedure_name => l_proc_name
2195 ) ;
2196 -- Initialize API return status to success
2197 x_return_status := FND_API.G_RET_STS_SUCCESS;
2198 l_debug_info := 'Delete from inl_ship_holds';
2199 INL_LOGGING_PVT.Log_Statement(
2200 p_module_name => g_module_name,
2201 p_procedure_name => l_proc_name,
2202 p_debug_info => l_debug_info
2203 ) ;
2204
2205 DELETE FROM inl.inl_ship_holds
2206 WHERE ship_header_id = p_ship_header_id;
2207
2208 l_debug_info := 'Delete from inl_allocations';
2209 INL_LOGGING_PVT.Log_Statement(
2210 p_module_name => g_module_name,
2211 p_procedure_name => l_proc_name,
2212 p_debug_info => l_debug_info
2213 ) ;
2214
2215 DELETE FROM inl.inl_allocations
2216 WHERE ship_header_id = p_ship_header_id;
2217
2218 l_debug_info := 'Delete from inl_tax_lines';
2219 INL_LOGGING_PVT.Log_Statement(
2220 p_module_name => g_module_name,
2221 p_procedure_name => l_proc_name,
2222 p_debug_info => l_debug_info
2223 ) ;
2224
2225 DELETE FROM inl.inl_tax_lines
2226 WHERE ship_header_id = p_ship_header_id;
2227
2228 l_debug_info := 'Delete from inl_charge_lines';
2229 INL_LOGGING_PVT.Log_Statement(
2230 p_module_name => g_module_name,
2231 p_procedure_name => l_proc_name,
2232 p_debug_info => l_debug_info
2233 ) ;
2234 DELETE
2235 FROM inl.inl_charge_lines cl
2236 WHERE cl.charge_line_id
2237 IN (
2238 SELECT assoc.from_parent_table_id
2239 FROM inl_associations assoc
2240 WHERE assoc.from_parent_table_name = 'INL_CHARGE_LINES'
2241 AND assoc.ship_header_id = p_ship_header_id
2242 )
2243 ;
2244
2245 l_debug_info := 'Delete from inl_associations';
2246 INL_LOGGING_PVT.Log_Statement(
2247 p_module_name => g_module_name,
2248 p_procedure_name => l_proc_name,
2249 p_debug_info => l_debug_info
2250 ) ;
2251 DELETE FROM inl.inl_associations
2252 WHERE ship_header_id = p_ship_header_id;
2253
2254 l_debug_info := 'Delete from inl_ship_lines_all';
2255 INL_LOGGING_PVT.Log_Statement(
2256 p_module_name => g_module_name,
2257 p_procedure_name => l_proc_name,
2258 p_debug_info => l_debug_info
2259 ) ;
2260 DELETE FROM inl.inl_ship_lines_all
2261 WHERE ship_header_id = p_ship_header_id;
2262
2263 l_debug_info := 'Delete from inl_ship_line_groups';
2264 INL_LOGGING_PVT.Log_Statement(
2265 p_module_name => g_module_name,
2266 p_procedure_name => l_proc_name,
2267 p_debug_info => l_debug_info
2268 ) ;
2269 DELETE FROM inl.inl_ship_line_groups
2270 WHERE ship_header_id = p_ship_header_id;
2271
2272 l_debug_info := 'Delete from inl_ship_headers_all';
2273 INL_LOGGING_PVT.Log_Statement(
2274 p_module_name => g_module_name,
2275 p_procedure_name => l_proc_name,
2276 p_debug_info => l_debug_info
2277 ) ;
2278 DELETE FROM inl.inl_ship_headers_all WHERE ship_header_id = p_ship_header_id;
2279 -- Standard End of Procedure/Function Logging
2280 INL_LOGGING_PVT.Log_EndProc(
2281 p_module_name => g_module_name,
2282 p_procedure_name => l_proc_name
2283 );
2284 EXCEPTION
2285 WHEN FND_API.G_EXC_ERROR THEN
2286 -- Standard Expected Error Logging
2287 INL_LOGGING_PVT.Log_ExpecError (
2288 p_module_name => g_module_name,
2289 p_procedure_name => l_proc_name
2290 );
2291 x_return_status := FND_API.G_RET_STS_ERROR;
2292 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2293 -- Standard Unexpected Error Logging
2294 INL_LOGGING_PVT.Log_UnexpecError (
2295 p_module_name => g_module_name,
2296 p_procedure_name => l_proc_name
2297 );
2298 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2299 WHEN OTHERS THEN
2300 -- Standard Unexpected Error Logging
2301 INL_LOGGING_PVT.Log_UnexpecError (
2302 p_module_name => g_module_name,
2303 p_procedure_name => l_proc_name
2304 );
2305 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2306 IF FND_MSG_PUB.Check_Msg_Level(
2307 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2308 ) THEN
2309 FND_MSG_PUB.Add_Exc_Msg(
2310 p_pkg_name => g_pkg_name,
2311 p_procedure_name => l_proc_name
2312 );
2313 END IF;
2314 END Delete_Ship;
2315 -- Utility name : Import_Headers
2316 -- Type : Private
2317 -- Function : Import Shipment Headers from Interface
2318 -- table to INL_SHIP_HEADERS_ALL
2319 --
2320 -- Pre-reqs : None
2321 -- Parameters :
2322 -- IN : p_group_id IN NUMBER
2323 -- p_org_id IN NUMBER => Operating unit
2324 --
2325 -- OUT : x_return_status OUT NOCOPY VARCHAR2
2326 --
2327 -- Version : Current version 1.0
2328 --
2329 -- Notes :
2330 PROCEDURE Import_Headers (
2331 p_group_id IN NUMBER,
2332 p_org_id IN NUMBER,
2333 x_return_status OUT NOCOPY VARCHAR2
2334 ) IS
2335 -- Get all valid and possible headers from
2336 -- interface to import into INL Shipment Header table
2337 CURSOR validHeaders
2338 IS
2339 SELECT h.ship_header_int_id ,
2340 h.group_id ,
2341 h.processing_status_code ,
2342 h.interface_source_code ,
2343 h.interface_source_table ,
2344 h.interface_source_line_id,
2345 h.validation_flag ,
2346 h.ship_num ,
2347 h.ship_date ,
2348 h.ship_type_id ,
2349 h.legal_entity_id ,
2350 h.organization_id ,
2351 h.location_id ,
2352 h.org_id ,
2353 h.taxation_country ,
2354 h.document_sub_type ,
2355 h.transaction_type ,
2356 h.attribute_category ,
2357 h.attribute1 ,
2358 h.attribute2 ,
2359 h.attribute3 ,
2360 h.attribute4 ,
2361 h.attribute5 ,
2362 h.attribute6 ,
2363 h.attribute7 ,
2364 h.attribute8 ,
2365 h.attribute9 ,
2366 h.attribute10 ,
2367 h.attribute11 ,
2368 h.attribute12 ,
2369 h.attribute13 ,
2370 h.attribute14 ,
2371 h.attribute15 ,
2372 h.ship_header_id
2373 FROM inl_ship_headers_int h
2374 WHERE (p_group_id IS NULL
2375 OR h.group_id = p_group_id
2376 )
2377 AND ( p_org_id IS NULL
2378 OR h.org_id = p_org_id
2379 )
2380 AND h.last_task_code >= '10'
2381 AND h.processing_status_code = 'RUNNING'
2382 AND (h.transaction_type = 'DELETE'
2383 OR EXISTS (
2384 SELECT 1
2385 FROM inl_ship_lines_int l
2386 WHERE l.ship_header_int_id = h.ship_header_int_id
2387 AND ROWNUM < 2
2388 )
2389 )
2390 ;
2391
2392 TYPE validHeaders_List_Type
2393 IS
2394 TABLE OF validHeaders%ROWTYPE;
2395 validHeaders_List validHeaders_List_Type;
2396 l_user_defined_ship_num_code VARCHAR2(30) ;
2397 l_next_ship_num NUMBER;
2398 l_ship_num NUMBER;
2399 l_proc_name CONSTANT VARCHAR2(100) := 'Import_Headers';
2400 l_debug_info VARCHAR2(2000) ;
2401 l_return_status VARCHAR2(1) ;
2402 BEGIN
2403 -- Standard Beginning of Procedure/Function Logging
2404 INL_LOGGING_PVT.Log_BeginProc(
2405 p_module_name => g_module_name,
2406 p_procedure_name => l_proc_name
2407 ) ;
2408 -- Initialize API return status to success
2409 x_return_status := FND_API.G_RET_STS_SUCCESS;
2410 OPEN validHeaders;
2411 FETCH validHeaders BULK COLLECT INTO validHeaders_List;
2412
2413 CLOSE validHeaders;
2414 IF NVL(validHeaders_List.LAST, 0) > 0 THEN
2415 FOR iHead IN NVL(validHeaders_List.FIRST, 0) ..NVL(validHeaders_List.LAST, 0)
2416 LOOP
2417 IF validHeaders_List(iHead) .transaction_type = 'DELETE' THEN
2418 Delete_Ship(
2419 p_ship_header_id => validHeaders_List(iHead).ship_header_id,
2420 x_return_status => l_return_status);
2421 -- If any errors happen abort API.
2422 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2423 RAISE FND_API.G_EXC_ERROR;
2424 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2425 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2426 END IF;
2427 -- Set processing status code to 'COMPLETED' for all lines
2428 -- related to the current and imported Shipment Header
2429 UPDATE inl_ship_lines_int
2430 SET processing_status_code = 'COMPLETED' ,
2431 request_id = fnd_global.conc_request_id,
2432 last_updated_by = fnd_global.user_id ,
2433 last_update_date = SYSDATE ,
2434 last_update_login = fnd_global.login_id ,
2435 program_id = fnd_global.conc_program_id,
2436 program_update_date = SYSDATE ,
2437 program_application_id = fnd_global.prog_appl_id
2438 WHERE ship_header_int_id = validHeaders_List(iHead) .ship_header_int_id;
2439 ELSE
2440 l_debug_info := 'Check if Shipment Number is setup as Automatic or Manual';
2441 INL_LOGGING_PVT.Log_Statement(
2442 p_module_name => g_module_name,
2443 p_procedure_name => l_proc_name,
2444 p_debug_info => l_debug_info
2445 ) ;
2446 -- Check if Shipment Number is setup as(AUTOMATIC or MANUAL)
2447 SELECT user_defined_ship_num_code,
2448 next_ship_num
2449 INTO l_user_defined_ship_num_code,
2450 l_next_ship_num
2451 FROM inl_parameters
2452 WHERE organization_id = validHeaders_List(iHead) .organization_id;
2453 IF validHeaders_List(iHead) .transaction_type = 'UPDATE' THEN
2454 l_debug_info := 'Updating the Shipment Header';
2455 INL_LOGGING_PVT.Log_Statement(
2456 p_module_name => g_module_name,
2457 p_procedure_name => l_proc_name,
2458 p_debug_info => l_debug_info
2459 ) ;
2460 UPDATE inl_ship_headers
2461 SET ship_num = DECODE(l_user_defined_ship_num_code, 'AUTOMATIC', ship_num, validHeaders_List(iHead) .ship_num), -- 02
2462 ship_date = validHeaders_List(iHead) .ship_date , -- 03
2463 ship_type_id = validHeaders_List(iHead) .ship_type_id , -- 04
2464 legal_entity_id = validHeaders_List(iHead) .legal_entity_id , -- 08
2465 organization_id = validHeaders_List(iHead) .organization_id , -- 09
2466 location_id = validHeaders_List(iHead) .location_id , -- 10
2467 org_id = validHeaders_List(iHead) .org_id , -- 11
2468 taxation_country = validHeaders_List(iHead) .taxation_country , -- 12
2469 document_sub_type = validHeaders_List(iHead) .document_sub_type , -- 13
2470 ship_header_int_id = validHeaders_List(iHead) .ship_header_int_id , -- 14
2471 interface_source_code = validHeaders_List(iHead) .interface_source_code , -- 15
2472 interface_source_table = validHeaders_List(iHead) .interface_source_table , -- 16
2473 interface_source_line_id = validHeaders_List(iHead) .interface_source_line_id , -- 17
2474 last_updated_by = fnd_global.user_id , -- 20
2475 last_update_date = SYSDATE , -- 21
2476 last_update_login = fnd_global.login_id , -- 22
2477 program_id = fnd_global.conc_program_id , -- 23
2478 program_update_date = SYSDATE , -- 24
2479 program_application_id = fnd_global.prog_appl_id , -- 25
2480 request_id = fnd_global.conc_request_id , -- 26
2481 attribute_category = validHeaders_List(iHead) .attribute_category , -- 27
2482 attribute1 = validHeaders_List(iHead) .attribute1 , -- 28
2483 attribute2 = validHeaders_List(iHead) .attribute2 , -- 29
2484 attribute3 = validHeaders_List(iHead) .attribute3 , -- 30
2485 attribute4 = validHeaders_List(iHead) .attribute4 , -- 31
2486 attribute5 = validHeaders_List(iHead) .attribute5 , -- 32
2487 attribute6 = validHeaders_List(iHead) .attribute6 , -- 33
2488 attribute7 = validHeaders_List(iHead) .attribute7 , -- 34
2489 attribute8 = validHeaders_List(iHead) .attribute8 , -- 35
2490 attribute9 = validHeaders_List(iHead) .attribute9 , -- 36
2491 attribute10 = validHeaders_List(iHead) .attribute10 , -- 37
2492 attribute11 = validHeaders_List(iHead) .attribute11 , -- 38
2493 attribute12 = validHeaders_List(iHead) .attribute12 , -- 39
2494 attribute13 = validHeaders_List(iHead) .attribute13 , -- 40
2495 attribute14 = validHeaders_List(iHead) .attribute14 , -- 41
2496 attribute15 = validHeaders_List(iHead) .attribute15 -- 42
2497 WHERE ship_header_id = validHeaders_List(iHead) .ship_header_id;
2498 ELSE
2499 -- Get Shipment Header's nextval
2500 SELECT inl_ship_headers_all_s.NEXTVAL
2501 INTO validHeaders_List(iHead) .ship_header_id
2502 FROM dual;
2503
2504 INL_LOGGING_PVT.Log_Variable(
2505 p_module_name => g_module_name,
2506 p_procedure_name => l_proc_name,
2507 p_var_name => 'l_user_defined_ship_num_code',
2508 p_var_value => l_user_defined_ship_num_code
2509 ) ;
2510 INL_LOGGING_PVT.Log_Variable(
2511 p_module_name => g_module_name,
2512 p_procedure_name => l_proc_name,
2513 p_var_name => 'l_next_ship_num',
2514 p_var_value => l_next_ship_num
2515 ) ;
2516 l_debug_info := 'Setting the next Shipment Number in INL_PARAMETERS';
2517 INL_LOGGING_PVT.Log_Statement(
2518 p_module_name => g_module_name,
2519 p_procedure_name => l_proc_name,
2520 p_debug_info => l_debug_info
2521 ) ;
2522 l_ship_num := NULL;
2523 IF l_user_defined_ship_num_code = 'AUTOMATIC' THEN
2524 l_ship_num := l_next_ship_num;
2525 UPDATE inl_parameters
2526 SET next_ship_num = l_next_ship_num + 1,
2527 last_updated_by = fnd_global.user_id ,
2528 last_update_date = SYSDATE ,
2529 last_update_login = fnd_global.login_id
2530 WHERE organization_id = validHeaders_List(iHead).organization_id;
2531 ELSIF l_user_defined_ship_num_code = 'MANUAL' THEN
2532 l_ship_num := validHeaders_List(iHead).ship_num;
2533 END IF;
2534 INL_LOGGING_PVT.Log_Variable(
2535 p_module_name => g_module_name,
2536 p_procedure_name => l_proc_name,
2537 p_var_name => 'l_ship_num',
2538 p_var_value => l_ship_num
2539 ) ;
2540 l_debug_info := 'Insert into Shipment Headers table';
2541 INL_LOGGING_PVT.Log_Statement(
2542 p_module_name => g_module_name,
2543 p_procedure_name => l_proc_name,
2544 p_debug_info => l_debug_info
2545 ) ;
2546 -- Insert an INL SHIP HEADER record
2547 INSERT
2548 INTO inl_ship_headers (
2549 ship_header_id , -- 01
2550 ship_num , -- 02
2551 ship_date , -- 03
2552 ship_type_id , -- 04
2553 ship_status_code , -- 05
2554 pending_matching_flag , -- 06
2555 legal_entity_id , -- 08
2556 organization_id , -- 09
2557 location_id , -- 10
2558 org_id , -- 11
2559 taxation_country , -- 12
2560 document_sub_type , -- 13
2561 ship_header_int_id , -- 14
2562 interface_source_code , -- 15
2563 interface_source_table , -- 16
2564 interface_source_line_id, -- 17
2565 adjustment_num , -- 17a
2566 created_by , -- 18
2567 creation_date , -- 19
2568 last_updated_by , -- 20
2569 last_update_date , -- 21
2570 last_update_login , -- 22
2571 program_id , -- 23
2572 program_update_date , -- 24
2573 program_application_id , -- 25
2574 request_id , -- 26
2575 attribute_category , -- 27
2576 attribute1 , -- 28
2577 attribute2 , -- 29
2578 attribute3 , -- 30
2579 attribute4 , -- 31
2580 attribute5 , -- 32
2581 attribute6 , -- 33
2582 attribute7 , -- 34
2583 attribute8 , -- 35
2584 attribute9 , -- 36
2585 attribute10 , -- 37
2586 attribute11 , -- 38
2587 attribute12 , -- 39
2588 attribute13 , -- 40
2589 attribute14 , -- 41
2590 attribute15 -- 42
2591 ) VALUES (
2592 validHeaders_List(iHead) .ship_header_id , -- 01
2593 l_ship_num , -- 02
2594 validHeaders_List(iHead) .ship_date , -- 03
2595 validHeaders_List(iHead) .ship_type_id , -- 04
2596 'INCOMPLETE' , -- 05
2597 NULL , -- 06
2598 validHeaders_List(iHead) .legal_entity_id , -- 08
2599 validHeaders_List(iHead) .organization_id , -- 09
2600 validHeaders_List(iHead) .location_id , -- 10
2601 validHeaders_List(iHead) .org_id , -- 11
2602 validHeaders_List(iHead) .taxation_country , -- 12
2603 validHeaders_List(iHead) .document_sub_type , -- 13
2604 validHeaders_List(iHead) .ship_header_int_id , -- 14
2605 validHeaders_List(iHead) .interface_source_code , -- 15
2606 validHeaders_List(iHead) .interface_source_table , -- 16
2607 validHeaders_List(iHead) .interface_source_line_id , -- 17
2608 0 , -- 17a
2609 fnd_global.user_id , -- 18
2610 SYSDATE , -- 19
2611 fnd_global.user_id , -- 20
2612 SYSDATE , -- 21
2613 fnd_global.login_id , -- 22
2614 fnd_global.conc_program_id , -- 23
2615 SYSDATE , -- 24
2616 fnd_global.prog_appl_id , -- 25
2617 fnd_global.conc_request_id , -- 26
2618 validHeaders_List(iHead) .attribute_category , -- 27
2619 validHeaders_List(iHead) .attribute1 , -- 28
2620 validHeaders_List(iHead) .attribute2 , -- 29
2621 validHeaders_List(iHead) .attribute3 , -- 30
2622 validHeaders_List(iHead) .attribute4 , -- 31
2623 validHeaders_List(iHead) .attribute5 , -- 32
2624 validHeaders_List(iHead) .attribute6 , -- 33
2625 validHeaders_List(iHead) .attribute7 , -- 34
2626 validHeaders_List(iHead) .attribute8 , -- 35
2627 validHeaders_List(iHead) .attribute9 , -- 36
2628 validHeaders_List(iHead) .attribute10 , -- 37
2629 validHeaders_List(iHead) .attribute11 , -- 38
2630 validHeaders_List(iHead) .attribute12 , -- 39
2631 validHeaders_List(iHead) .attribute13 , -- 40
2632 validHeaders_List(iHead) .attribute14 , -- 41
2633 validHeaders_List(iHead) .attribute15 -- 42
2634 ) ;
2635 END IF;
2636 END IF;
2637 l_debug_info := 'Set Shipment Header Interface status and imported Id';
2638 INL_LOGGING_PVT.Log_Statement(
2639 p_module_name => g_module_name,
2640 p_procedure_name => l_proc_name,
2641 p_debug_info => l_debug_info
2642 ) ;
2643 -- Set processing status code to COMPLETED
2644 -- for the current and imported Shipment Header
2645 UPDATE inl_ship_headers_int
2646 SET processing_status_code = 'COMPLETED' ,
2647 ship_header_id = validHeaders_List(iHead).ship_header_id,
2648 request_id = fnd_global.conc_request_id ,
2649 last_updated_by = fnd_global.user_id ,
2650 last_update_date = SYSDATE ,
2651 last_update_login = fnd_global.login_id ,
2652 program_id = fnd_global.conc_program_id ,
2653 program_update_date = SYSDATE ,
2654 program_application_id = fnd_global.prog_appl_id
2655 WHERE ship_header_int_id = validHeaders_List(iHead).ship_header_int_id;
2656 END LOOP;
2657 END IF;
2658 -- Standard End of Procedure/Function Logging
2659 INL_LOGGING_PVT.Log_EndProc(
2660 p_module_name => g_module_name,
2661 p_procedure_name => l_proc_name
2662 );
2663 EXCEPTION
2664 WHEN FND_API.G_EXC_ERROR THEN
2665 -- Standard Expected Error Logging
2666 INL_LOGGING_PVT.Log_ExpecError (
2667 p_module_name => g_module_name,
2668 p_procedure_name => l_proc_name
2669 );
2670 x_return_status := FND_API.G_RET_STS_ERROR;
2671 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2672 -- Standard Unexpected Error Logging
2673 INL_LOGGING_PVT.Log_UnexpecError (
2674 p_module_name => g_module_name,
2675 p_procedure_name => l_proc_name
2676 );
2677 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2678 WHEN OTHERS THEN
2679 -- Standard Unexpected Error Logging
2680 INL_LOGGING_PVT.Log_UnexpecError (
2681 p_module_name => g_module_name,
2682 p_procedure_name => l_proc_name
2683 );
2684 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2685 IF FND_MSG_PUB.Check_Msg_Level(
2686 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2687 ) THEN
2688 FND_MSG_PUB.Add_Exc_Msg(
2689 p_pkg_name => g_pkg_name,
2690 p_procedure_name => l_proc_name
2691 );
2692 END IF;
2693 END Import_Headers;
2694 -- Utility name : Handle_LineGroups
2695 -- Type : Private
2696 -- Function : Create a Line Group for a given Shipment Header only if
2697 -- it hasn't been created yet in the current transaction
2698 --
2699 -- Pre-reqs : None
2700 -- Parameters :
2701 -- IN : p_ship_header_id IN NUMBER
2702 -- p_line_index IN NUMBER
2703 --
2704 -- OUT : x_return_status IN OUT NOCOPY VARCHAR2
2705 --
2706 -- Version : Current version 1.0
2707 --
2708 -- Notes :
2709 PROCEDURE Handle_LineGroups
2710 (
2711 p_ship_header_id IN NUMBER,
2712 p_line_index IN NUMBER,
2713 x_return_status IN OUT NOCOPY VARCHAR2)
2714 IS
2715 l_proc_name CONSTANT VARCHAR2(100) := 'Handle_LineGroups';
2716 l_debug_info VARCHAR2(2000) ;
2717 BEGIN
2718 -- Standard Beginning of Procedure/Function Logging
2719 INL_LOGGING_PVT.Log_BeginProc(
2720 p_module_name => g_module_name,
2721 p_procedure_name => l_proc_name
2722 ) ;
2723 IF(rec_ship_line_groups.ship_header_id <> p_ship_header_id OR
2724 NVL(rec_ship_line_groups.ship_line_group_reference, FND_API.G_MISS_CHAR) <> NVL(validLines_List(p_line_index) .ship_line_group_reference, FND_API.G_MISS_CHAR)
2725 OR rec_ship_line_groups.src_type_code <> validLines_List(p_line_index) .ship_line_src_type_code OR
2726 rec_ship_line_groups.party_id <> validLines_List(p_line_index) .party_id OR rec_ship_line_groups.party_site_id <> validLines_List(p_line_index) .party_site_id OR
2727 NVL(rec_ship_line_groups.source_organization_id, FND_API.G_MISS_NUM) <> NVL(validLines_List(p_line_index) .source_organization_id, FND_API.G_MISS_NUM)) THEN
2728 BEGIN
2729 SELECT ship_line_group_id, /* 01 */
2730 ship_line_group_reference, /* 02 */
2731 ship_header_id, /* 03 */
2732 ship_line_group_num, /* 04 */
2733 src_type_code, /* 05 */
2734 party_id, /* 06 */
2735 party_site_id, /* 07 */
2736 source_organization_id, /* 08 */
2737 attribute_category, /* 09 */
2738 attribute1, /* 10 */
2739 attribute2, /* 11 */
2740 attribute3, /* 12 */
2741 attribute4, /* 13 */
2742 attribute5, /* 14 */
2743 attribute6, /* 15 */
2744 attribute7, /* 16 */
2745 attribute8, /* 17 */
2746 attribute9, /* 18 */
2747 attribute10, /* 19 */
2748 attribute11, /* 20 */
2749 attribute12, /* 21 */
2750 attribute13, /* 22 */
2751 attribute14, /* 23 */
2752 attribute15 /* 24 */
2753 INTO
2754 rec_ship_line_groups.ship_line_group_id, /* 01 */
2755 rec_ship_line_groups.ship_line_group_reference,/* 02 */
2756 rec_ship_line_groups.ship_header_id, /* 03 */
2757 rec_ship_line_groups.ship_line_group_num, /* 04 */
2758 rec_ship_line_groups.src_type_code, /* 05 */
2759 rec_ship_line_groups.party_id, /* 06 */
2760 rec_ship_line_groups.party_site_id, /* 07 */
2761 rec_ship_line_groups.source_organization_id, /* 08 */
2762 rec_ship_line_groups.attribute_category, /* 09 */
2763 rec_ship_line_groups.attribute1, /* 10 */
2764 rec_ship_line_groups.attribute2, /* 11 */
2765 rec_ship_line_groups.attribute3, /* 12 */
2766 rec_ship_line_groups.attribute4, /* 13 */
2767 rec_ship_line_groups.attribute5, /* 14 */
2768 rec_ship_line_groups.attribute6, /* 15 */
2769 rec_ship_line_groups.attribute7, /* 16 */
2770 rec_ship_line_groups.attribute8, /* 17 */
2771 rec_ship_line_groups.attribute9, /* 18 */
2772 rec_ship_line_groups.attribute10, /* 19 */
2773 rec_ship_line_groups.attribute11, /* 20 */
2774 rec_ship_line_groups.attribute12, /* 21 */
2775 rec_ship_line_groups.attribute13, /* 22 */
2776 rec_ship_line_groups.attribute14, /* 23 */
2777 rec_ship_line_groups.attribute15 /* 24 */
2778 FROM inl_ship_line_groups
2779 WHERE ship_header_id = p_ship_header_id
2780 AND NVL(src_type_code, FND_API.G_MISS_CHAR)= NVL(validLines_List(p_line_index).ship_line_src_type_code, FND_API.G_MISS_CHAR)
2781 AND party_id = validLines_List(p_line_index).party_id
2782 AND party_site_id = validLines_List(p_line_index).party_site_id
2783 AND source_organization_id = validLines_List(p_line_index).source_organization_id
2784 AND NVL(ship_line_group_reference, FND_API.G_MISS_NUM)= NVL(validLines_List(p_line_index).ship_line_group_reference, FND_API.G_MISS_NUM) ;
2785 EXCEPTION
2786 WHEN NO_DATA_FOUND THEN
2787 -- Create a Line Group record
2788 SELECT inl_ship_line_groups_s.NEXTVAL
2789 INTO rec_ship_line_groups.ship_line_group_id
2790 FROM dual;
2791 SELECT MAX(ship_line_group_num)
2792 INTO rec_ship_line_groups.ship_line_group_num
2793 FROM inl_ship_line_groups
2794 WHERE ship_header_id = p_ship_header_id;
2795
2796 rec_ship_line_groups.ship_line_group_num := NVL(rec_ship_line_groups.ship_line_group_num, 0) + 1;
2797 rec_ship_line_groups.ship_line_group_reference := validLines_List(p_line_index).ship_line_group_reference;
2798 rec_ship_line_groups.ship_header_id := p_ship_header_id;
2799 rec_ship_line_groups.src_type_code := validLines_List(p_line_index).ship_line_src_type_code;
2800 rec_ship_line_groups.party_id := validLines_List(p_line_index).party_id;
2801 rec_ship_line_groups.party_site_id := validLines_List(p_line_index).party_site_id;
2802 rec_ship_line_groups.source_organization_id := validLines_List(p_line_index).source_organization_id;
2803 rec_ship_line_groups.attribute_category := validLines_List(p_line_index).attribute_category_lg;
2804 rec_ship_line_groups.attribute1 := validLines_List(p_line_index).attribute1_lg;
2805 rec_ship_line_groups.attribute2 := validLines_List(p_line_index).attribute2_lg;
2806 rec_ship_line_groups.attribute3 := validLines_List(p_line_index).attribute3_lg;
2807 rec_ship_line_groups.attribute4 := validLines_List(p_line_index).attribute4_lg;
2808 rec_ship_line_groups.attribute5 := validLines_List(p_line_index).attribute5_lg;
2809 rec_ship_line_groups.attribute6 := validLines_List(p_line_index).attribute6_lg;
2810 rec_ship_line_groups.attribute7 := validLines_List(p_line_index).attribute7_lg;
2811 rec_ship_line_groups.attribute8 := validLines_List(p_line_index).attribute8_lg;
2812 rec_ship_line_groups.attribute9 := validLines_List(p_line_index).attribute9_lg;
2813 rec_ship_line_groups.attribute10 := validLines_List(p_line_index).attribute10_lg;
2814 rec_ship_line_groups.attribute11 := validLines_List(p_line_index).attribute11_lg;
2815 rec_ship_line_groups.attribute12 := validLines_List(p_line_index).attribute12_lg;
2816 rec_ship_line_groups.attribute13 := validLines_List(p_line_index).attribute13_lg;
2817 rec_ship_line_groups.attribute14 := validLines_List(p_line_index).attribute14_lg;
2818 rec_ship_line_groups.attribute15 := validLines_List(p_line_index).attribute15_lg;
2819 l_debug_info := 'Inserting inl_ship_line_groups';
2820 INL_LOGGING_PVT.Log_Statement(
2821 p_module_name => g_module_name,
2822 p_procedure_name => l_proc_name,
2823 p_debug_info => l_debug_info
2824 ) ;
2825 INL_LOGGING_PVT.Log_Variable(
2826 p_module_name => g_module_name,
2827 p_procedure_name => l_proc_name,
2828 p_var_name => 'rec_ship_line_groups.ship_line_group_id',
2829 p_var_value => rec_ship_line_groups.ship_line_group_id
2830 ) ;
2831 INSERT INTO inl_ship_line_groups (
2832 ship_line_group_id, /* 01 */
2833 ship_line_group_reference, /* 02 */
2834 ship_header_id, /* 03 */
2835 ship_line_group_num, /* 04 */
2836 src_type_code, /* 05 */
2837 party_id, /* 06 */
2838 party_site_id, /* 07 */
2839 source_organization_id, /* 08 */
2840 ship_line_int_id, /* 09 */
2841 interface_source_table, /* 10 */
2842 interface_source_line_id, /* 11 */
2843 created_by, /* 12 */
2844 creation_date, /* 13 */
2845 last_updated_by, /* 14 */
2846 last_update_date, /* 15 */
2847 last_update_login, /* 16 */
2848 program_id, /* 17 */
2849 program_update_date, /* 18 */
2850 program_application_id, /* 19 */
2851 request_id, /* 20 */
2852 attribute_category, /* 21 */
2853 attribute1, /* 22 */
2854 attribute2, /* 23 */
2855 attribute3, /* 24 */
2856 attribute4, /* 25 */
2857 attribute5, /* 26 */
2858 attribute6, /* 27 */
2859 attribute7, /* 28 */
2860 attribute8, /* 29 */
2861 attribute9, /* 30 */
2862 attribute10, /* 31 */
2863 attribute11, /* 32 */
2864 attribute12, /* 33 */
2865 attribute13, /* 34 */
2866 attribute14, /* 35 */
2867 attribute15 /* 36 */
2868 )
2869
2870 VALUES
2871 (
2872 rec_ship_line_groups.ship_line_group_id, /* 01 */
2873 rec_ship_line_groups.ship_line_group_reference, /* 02 */
2874 p_ship_header_id, /* 03 */
2875 rec_ship_line_groups.ship_line_group_num, /* 04 */
2876 rec_ship_line_groups.src_type_code, /* 05 */
2877 rec_ship_line_groups.party_id, /* 06 */
2878 rec_ship_line_groups.party_site_id, /* 07 */
2879 rec_ship_line_groups.source_organization_id, /* 08 */
2880 validLines_List(p_line_index) .ship_line_int_id, /* 09 */
2881 validLines_List(p_line_index) .interface_source_table, /* 10 */
2882 validLines_List(p_line_index) .interface_source_line_id,/* 11 */
2883 fnd_global.user_id, /* 12 */
2884 SYSDATE, /* 13 */
2885 fnd_global.user_id, /* 14 */
2886 SYSDATE, /* 15 */
2887 fnd_global.login_id, /* 16 */
2888 fnd_global.conc_program_id, /* 17 */
2889 SYSDATE, /* 18 */
2890 fnd_global.prog_appl_id, /* 19 */
2891 fnd_global.conc_request_id, /* 20 */
2892 validLines_List(p_line_index) .attribute_category_lg, /* 21 */
2893 validLines_List(p_line_index) .attribute1_lg, /* 22 */
2894 validLines_List(p_line_index) .attribute2_lg, /* 23 */
2895 validLines_List(p_line_index) .attribute3_lg, /* 24 */
2896 validLines_List(p_line_index) .attribute4_lg, /* 25 */
2897 validLines_List(p_line_index) .attribute5_lg, /* 26 */
2898 validLines_List(p_line_index) .attribute6_lg, /* 27 */
2899 validLines_List(p_line_index) .attribute7_lg, /* 28 */
2900 validLines_List(p_line_index) .attribute8_lg, /* 29 */
2901 validLines_List(p_line_index) .attribute9_lg, /* 30 */
2902 validLines_List(p_line_index) .attribute10_lg, /* 31 */
2903 validLines_List(p_line_index) .attribute11_lg, /* 32 */
2904 validLines_List(p_line_index) .attribute12_lg, /* 33 */
2905 validLines_List(p_line_index) .attribute13_lg, /* 34 */
2906 validLines_List(p_line_index) .attribute14_lg, /* 35 */
2907 validLines_List(p_line_index) .attribute15_lg /* 36 */
2908 ) ;
2909
2910 END;
2911 END IF;
2912 -- Standard End of Procedure/Function Logging
2913 INL_LOGGING_PVT.Log_EndProc(
2914 p_module_name => g_module_name,
2915 p_procedure_name => l_proc_name
2916 );
2917 EXCEPTION
2918 WHEN FND_API.G_EXC_ERROR THEN
2919 -- Standard Expected Error Logging
2920 INL_LOGGING_PVT.Log_ExpecError (
2921 p_module_name => g_module_name,
2922 p_procedure_name => l_proc_name
2923 );
2924 x_return_status := FND_API.G_RET_STS_ERROR;
2925 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2926 -- Standard Unexpected Error Logging
2927 INL_LOGGING_PVT.Log_UnexpecError (
2928 p_module_name => g_module_name,
2929 p_procedure_name => l_proc_name
2930 );
2931 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2932 WHEN OTHERS THEN
2933 -- Standard Unexpected Error Logging
2934 INL_LOGGING_PVT.Log_UnexpecError (
2935 p_module_name => g_module_name,
2936 p_procedure_name => l_proc_name
2937 );
2938 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2939 IF FND_MSG_PUB.Check_Msg_Level(
2940 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2941 ) THEN
2942 FND_MSG_PUB.Add_Exc_Msg(
2943 p_pkg_name => g_pkg_name,
2944 p_procedure_name => l_proc_name
2945 );
2946 END IF;
2947 END Handle_LineGroups;
2948
2949 -- Utility name : Import_Lines
2950 -- Type : Private
2951 -- Function : Import Shipment Lines from the Interface table
2952 --
2953 -- Pre-reqs : None
2954 -- Parameters :
2955 -- IN : p_group_id IN NUMBER
2956 -- p_org_id IN NUMBER
2957 --
2958 -- OUT : x_return_status OUT NOCOPY VARCHAR2
2959 --
2960 -- Version : Current version 1.0
2961 --
2962 -- Notes :
2963 PROCEDURE Import_Lines (
2964 p_group_id IN NUMBER,
2965 p_org_id IN NUMBER,
2966 x_return_status OUT NOCOPY VARCHAR2
2967 ) IS
2968 l_proc_name CONSTANT VARCHAR2(100) := 'Import_lines';
2969 -- Cursor to get all valid and possible Ship
2970 -- Header Ids that will be used in the
2971 -- Shipment Line import
2972 CURSOR headersToProcess
2973 IS
2974 SELECT h.ship_header_int_id,
2975 h.ship_header_id ,
2976 h.transaction_type
2977 FROM inl_ship_headers_int h
2978 WHERE (p_group_id IS NULL
2979 OR group_id = p_group_id)
2980 AND (p_org_id IS NULL
2981 OR h.org_id = p_org_id)
2982 AND h.processing_status_code = 'COMPLETED'
2983 AND h.transaction_type <> 'DELETE'
2984 AND h.last_task_code >= '10'
2985 AND EXISTS (
2986 SELECT 1
2987 FROM inl_ship_lines_int l
2988 WHERE l.ship_header_int_id = h.ship_header_int_id
2989 AND l.processing_status_code = 'RUNNING'
2990 AND ROWNUM < 2
2991 );
2992
2993 TYPE headersToProcess_ListType IS TABLE OF headersToProcess%ROWTYPE;
2994 headersToProcess_List headersToProcess_ListType;
2995 l_debug_info VARCHAR2(2000);
2996 l_return_status VARCHAR2(1);
2997 l_ship_line_id NUMBER;
2998 BEGIN
2999 -- Standard Beginning of Procedure/Function Logging
3000 INL_LOGGING_PVT.Log_BeginProc(
3001 p_module_name => g_module_name,
3002 p_procedure_name => l_proc_name
3003 ) ;
3004 -- Initialize API return status to success
3005 x_return_status := FND_API.G_RET_STS_SUCCESS;
3006 OPEN headersToProcess;
3007 FETCH headersToProcess BULK COLLECT INTO headersToProcess_List;
3008
3009 CLOSE headersToProcess;
3010 IF NVL(headersToProcess_List.LAST, 0) > 0 THEN
3011 FOR iHead IN headersToProcess_List.FIRST..headersToProcess_List.LAST
3012 LOOP
3013 OPEN validLines(headersToProcess_List(iHead) .ship_header_int_id, p_group_id) ;
3014 FETCH validLines BULK COLLECT INTO validLines_List;
3015 CLOSE validLines;
3016 IF NVL(validLines_List.LAST, 0) > 0 THEN
3017 FOR iLine IN validLines_List.FIRST..validLines_List.LAST
3018 LOOP
3019 l_debug_info := 'Processing Line: '||iLine;
3020 INL_LOGGING_PVT.Log_Statement(
3021 p_module_name => g_module_name,
3022 p_procedure_name => l_proc_name,
3023 p_debug_info => l_debug_info
3024 ) ;
3025 INL_LOGGING_PVT.Log_Variable(
3026 p_module_name => g_module_name,
3027 p_procedure_name => l_proc_name,
3028 p_var_name => 'validLines_List(iLine).ship_Line_int_id',
3029 p_var_value => validLines_List(iLine).ship_Line_int_id
3030 ) ;
3031 l_debug_info := 'Handle Import of Shipment Line Groups';
3032 INL_LOGGING_PVT.Log_Statement(
3033 p_module_name => g_module_name,
3034 p_procedure_name => l_proc_name,
3035 p_debug_info => l_debug_info
3036 ) ;
3037 -- For new lines
3038 IF headersToProcess_List(iHead) .transaction_type = 'CREATE'
3039 OR (headersToProcess_List(iHead) .transaction_type = 'UPDATE'
3040 AND validLines_List(iLine).ship_Line_id IS NULL
3041 )
3042 THEN
3043 -- Check if the Line Group has already been imported
3044 Handle_LineGroups(p_ship_header_id => headersToProcess_List(iHead) .ship_header_id, p_line_index => iLine, x_return_status => l_return_status) ;
3045 -- If any errors happen abort API.
3046 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3047 RAISE FND_API.G_EXC_ERROR;
3048 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3049 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3050 END IF;
3051 l_debug_info := 'Getting the next Shipment Line Number';
3052 INL_LOGGING_PVT.Log_Statement(
3053 p_module_name => g_module_name,
3054 p_procedure_name => l_proc_name,
3055 p_debug_info => l_debug_info
3056 ) ;
3057 IF validLines_List(iLine).ship_line_num IS NULL THEN
3058 -- Get the next Ship Line Number
3059 SELECT MAX(ship_line_num)
3060 INTO validLines_List(iLine).ship_line_num
3061 FROM inl_ship_lines_all
3062 WHERE ship_header_id = headersToProcess_List(iHead) .ship_header_id
3063 AND ship_line_group_id = rec_ship_line_groups.ship_line_group_id;
3064
3065 validLines_List(iLine).ship_line_num := NVL(validLines_List(iLine).ship_line_num, 0) + 1;
3066 INL_LOGGING_PVT.Log_Variable(
3067 p_module_name => g_module_name,
3068 p_procedure_name => l_proc_name,
3069 p_var_name => 'validLines_List(iLine).ship_line_num',
3070 p_var_value => validLines_List(iLine).ship_line_num
3071 ) ;
3072 END IF;
3073 l_debug_info := 'Getting Shipment Line Id';
3074 INL_LOGGING_PVT.Log_Statement(
3075 p_module_name => g_module_name,
3076 p_procedure_name => l_proc_name,
3077 p_debug_info => l_debug_info
3078 ) ;
3079 -- Get the next Shipment Line Id
3080 SELECT inl_ship_Lines_all_s.NEXTVAL
3081 INTO l_ship_line_id
3082 FROM dual;
3083
3084 INL_LOGGING_PVT.Log_Variable(
3085 p_module_name => g_module_name,
3086 p_procedure_name => l_proc_name,
3087 p_var_name => 'l_ship_line_id',
3088 p_var_value => l_ship_line_id
3089 ) ;
3090 l_debug_info := 'Insert into Shipment Lines table';
3091 INL_LOGGING_PVT.Log_Statement(
3092 p_module_name => g_module_name,
3093 p_procedure_name => l_proc_name,
3094 p_debug_info => l_debug_info
3095 ) ;
3096 -- Insert an INL SHIP LINE record
3097 INSERT INTO inl_ship_lines_all (
3098 ship_header_id, /* 01 */
3099 ship_line_group_id, /* 02 */
3100 ship_line_id, /* 03 */
3101 ship_line_num, /* 04 */
3102 ship_line_type_id, /* 05 */
3103 ship_line_src_type_code, /* 06 */
3104 ship_line_source_id, /* 07 */
3105 parent_ship_line_id, /* 08 */
3106 adjustment_num, /* 09 */
3107 match_id, /* 10 */
3108 currency_code, /* 12 */
3109 currency_conversion_type, /* 13 */
3110 currency_conversion_date, /* 14 */
3111 currency_conversion_rate, /* 15 */
3112 inventory_item_id, /* 16 */
3113 txn_qty, /* 17 */
3114 txn_uom_code, /* 18 */
3115 txn_unit_price, /* 19 */
3116 primary_qty, /* 20 */
3117 primary_uom_code, /* 21 */
3118 primary_unit_price, /* 22 */
3119 secondary_qty, /* 23 */
3120 secondary_uom_code, /* 24 */
3121 secondary_unit_price, /* 25 */
3122 landed_cost_flag, /* 30 */
3123 allocation_enabled_flag, /* 31 */
3124 trx_business_category, /* 32 */
3125 intended_use, /* 33 */
3126 product_fiscal_class, /* 34 */
3127 product_category, /* 35 */
3128 product_type, /* 36 */
3129 user_def_fiscal_class, /* 37 */
3130 tax_classification_code, /* 38 */
3131 assessable_value, /* 39 */
3132 tax_already_calculated_flag, /* 40 */
3133 ship_from_party_id, /* 41 */
3134 ship_from_party_site_id, /* 42 */
3135 ship_to_organization_id, /* 43 */
3136 ship_to_location_id, /* 44 */
3137 bill_from_party_id, /* 45 */
3138 bill_from_party_site_id, /* 46 */
3139 bill_to_organization_id, /* 47 */
3140 bill_to_location_id, /* 48 */
3141 poa_party_id, /* 49 */
3142 poa_party_site_id, /* 50 */
3143 poo_organization_id, /* 51 */
3144 poo_location_id, /* 52 */
3145 org_id, /* 53 */
3146 ship_line_int_id, /* 54 */
3147 interface_source_table, /* 55 */
3148 interface_source_line_id, /* 56 */
3149 created_by, /* 57 */
3150 creation_date, /* 58 */
3151 last_updated_by, /* 59 */
3152 last_update_date, /* 60 */
3153 last_update_login, /* 61 */
3154 program_id, /* 62 */
3155 program_update_date, /* 63 */
3156 program_application_id, /* 64 */
3157 request_id, /* 65 */
3158 attribute_category, /* 66 */
3159 attribute1, /* 67 */
3160 attribute2, /* 68 */
3161 attribute3, /* 69 */
3162 attribute4, /* 70 */
3163 attribute5, /* 71 */
3164 attribute6, /* 72 */
3165 attribute7, /* 73 */
3166 attribute8, /* 74 */
3167 attribute9, /* 75 */
3168 attribute10, /* 76 */
3169 attribute11, /* 77 */
3170 attribute12, /* 78 */
3171 attribute13, /* 79 */
3172 attribute14, /* 80 */
3173 attribute15 /* 81 */
3174 )
3175 VALUES
3176 (
3177 headersToProcess_List(iHead) .ship_header_id, /* 01 */
3178 rec_ship_line_groups.ship_line_group_id, /* 02 */
3179 l_ship_line_id, /* 03 */
3180 validLines_List(iLine).ship_line_num, /* 04 */
3181 validLines_List(iLine).ship_line_type_id, /* 05 */
3182 validLines_List(iLine).ship_line_src_type_code, /* 06 */
3183 validLines_List(iLine).ship_line_source_id, /* 07 */
3184 NULL, /* 08 */
3185 0, /* 09 */
3186 NULL, /* 10 */
3187 validLines_List(iLine).currency_code, /* 12 */
3188 validLines_List(iLine).currency_conversion_type, /* 13 */
3189 validLines_List(iLine).currency_conversion_date, /* 14 */
3190 validLines_List(iLine).currency_conversion_rate, /* 15 */
3191 validLines_List(iLine).inventory_item_id, /* 16 */
3192 validLines_List(iLine).txn_qty, /* 17 */
3193 validLines_List(iLine).txn_uom_code, /* 18 */
3194 validLines_List(iLine).txn_unit_price, /* 19 */
3195 validLines_List(iLine).primary_qty, /* 20 */
3196 validLines_List(iLine).primary_uom_code, /* 21 */
3197 validLines_List(iLine).primary_unit_price, /* 22 */
3198 validLines_List(iLine).secondary_qty, /* 23 */
3199 validLines_List(iLine).secondary_uom_code, /* 24 */
3200 validLines_List(iLine).secondary_unit_price, /* 25 */
3201 validLines_List(iLine).landed_cost_flag, /* 30 */
3202 validLines_List(iLine).allocation_enabled_flag, /* 31 */
3203 validLines_List(iLine).trx_business_category, /* 32 */
3204 validLines_List(iLine).intended_use, /* 33 */
3205 validLines_List(iLine).product_fiscal_class, /* 34 */
3206 validLines_List(iLine).product_category, /* 35 */
3207 validLines_List(iLine).product_type, /* 36 */
3208 validLines_List(iLine).user_def_fiscal_class, /* 37 */
3209 validLines_List(iLine).tax_classification_code, /* 38 */
3210 validLines_List(iLine).assessable_value, /* 39 */
3211 'N', /* 40 */
3212 validLines_List(iLine).ship_from_party_id, /* 41 */
3213 validLines_List(iLine).ship_from_party_site_id, /* 42 */
3214 validLines_List(iLine).ship_to_organization_id, /* 43 */
3215 validLines_List(iLine).ship_to_location_id, /* 44 */
3216 validLines_List(iLine).bill_from_party_id, /* 45 */
3217 validLines_List(iLine).bill_from_party_site_id, /* 46 */
3218 validLines_List(iLine).bill_to_organization_id, /* 47 */
3219 validLines_List(iLine).bill_to_location_id, /* 48 */
3220 validLines_List(iLine).poa_party_id, /* 49 */
3221 validLines_List(iLine).poa_party_site_id, /* 50 */
3222 validLines_List(iLine).poo_organization_id, /* 51 */
3223 validLines_List(iLine).poo_location_id, /* 52 */
3224 validLines_List(iLine).org_id, /* 53 */
3225 validLines_List(iLine).ship_line_int_id, /* 54 */
3226 validLines_List(iLine).interface_source_table, /* 55 */
3227 validLines_List(iLine).interface_source_line_id, /* 56 */
3228 fnd_global.user_id, /* 57 */
3229 SYSDATE, /* 58 */
3230 fnd_global.user_id, /* 59 */
3231 SYSDATE, /* 60 */
3232 fnd_global.login_id, /* 61 */
3233 fnd_global.conc_program_id, /* 62 */
3234 SYSDATE, /* 63 */
3235 fnd_global.prog_appl_id, /* 64 */
3236 fnd_global.conc_request_id, /* 65 */
3237 validLines_List(iLine).attribute_category_sl, /* 66 */
3238 validLines_List(iLine).attribute1_sl, /* 67 */
3239 validLines_List(iLine).attribute2_sl, /* 68 */
3240 validLines_List(iLine).attribute3_sl, /* 69 */
3241 validLines_List(iLine).attribute4_sl, /* 70 */
3242 validLines_List(iLine).attribute5_sl, /* 71 */
3243 validLines_List(iLine).attribute6_sl, /* 72 */
3244 validLines_List(iLine).attribute7_sl, /* 73 */
3245 validLines_List(iLine).attribute8_sl, /* 74 */
3246 validLines_List(iLine).attribute9_sl, /* 75 */
3247 validLines_List(iLine).attribute10_sl, /* 76 */
3248 validLines_List(iLine).attribute11_sl, /* 77 */
3249 validLines_List(iLine).attribute12_sl, /* 78 */
3250 validLines_List(iLine).attribute13_sl, /* 79 */
3251 validLines_List(iLine).attribute14_sl, /* 80 */
3252 validLines_List(iLine).attribute15_sl /* 81 */
3253 ) ;
3254 ELSE
3255 l_ship_line_id := validLines_List(iLine).ship_line_id;
3256 l_debug_info := 'Update Shipment Lines table';
3257 INL_LOGGING_PVT.Log_Statement(
3258 p_module_name => g_module_name,
3259 p_procedure_name => l_proc_name,
3260 p_debug_info => l_debug_info
3261 ) ;
3262 -- update the INL SHIP LINE record
3263 UPDATE inl_ship_lines_all
3264 SET ship_line_num = NVL(validLines_List(iLine).ship_line_num, ship_line_num),/* 01 */
3265 ship_line_type_id = validLines_List(iLine).ship_line_type_id, /* 02 */
3266 ship_line_src_type_code = validLines_List(iLine).ship_line_src_type_code, /* 03 */
3267 ship_line_source_id = validLines_List(iLine).ship_line_source_id, /* 04 */
3268 adjustment_num = 0, /* 05 */
3269 match_id = NULL, /* 06 */
3270 currency_code = validLines_List(iLine).currency_code, /* 07 */
3271 currency_conversion_type = validLines_List(iLine).currency_conversion_type, /* 08 */
3272 currency_conversion_date = validLines_List(iLine).currency_conversion_date, /* 09 */
3273 currency_conversion_rate = validLines_List(iLine).currency_conversion_rate, /* 20 */
3274 inventory_item_id = validLines_List(iLine).inventory_item_id, /* 21 */
3275 txn_qty = validLines_List(iLine).txn_qty, /* 22 */
3276 txn_uom_code = validLines_List(iLine).txn_uom_code, /* 23 */
3277 txn_unit_price = validLines_List(iLine).txn_unit_price, /* 24 */
3278 primary_qty = validLines_List(iLine).primary_qty, /* 25 */
3279 primary_uom_code = validLines_List(iLine).primary_uom_code, /* 26 */
3280 primary_unit_price = validLines_List(iLine).primary_unit_price, /* 27 */
3281 secondary_qty = validLines_List(iLine).secondary_qty, /* 28 */
3282 secondary_uom_code = validLines_List(iLine).secondary_uom_code, /* 29 */
3283 secondary_unit_price = validLines_List(iLine).secondary_unit_price, /* 30 */
3284 landed_cost_flag = validLines_List(iLine).landed_cost_flag, /* 31 */
3285 allocation_enabled_flag = validLines_List(iLine).allocation_enabled_flag, /* 32 */
3286 trx_business_category = validLines_List(iLine).trx_business_category, /* 33 */
3287 intended_use = validLines_List(iLine).intended_use, /* 34 */
3288 product_fiscal_class = validLines_List(iLine).product_fiscal_class, /* 35 */
3289 product_category = validLines_List(iLine).product_category, /* 36 */
3290 product_type = validLines_List(iLine).product_type, /* 37 */
3291 user_def_fiscal_class = validLines_List(iLine).user_def_fiscal_class, /* 38 */
3292 tax_classification_code = validLines_List(iLine).tax_classification_code, /* 39 */
3293 assessable_value = validLines_List(iLine).assessable_value, /* 40 */
3294 ship_from_party_id = validLines_List(iLine).ship_from_party_id, /* 41 */
3295 ship_from_party_site_id = validLines_List(iLine).ship_from_party_site_id, /* 42 */
3296 ship_to_organization_id = validLines_List(iLine).ship_to_organization_id, /* 43 */
3297 ship_to_location_id = validLines_List(iLine).ship_to_location_id, /* 44 */
3298 bill_from_party_id = validLines_List(iLine).bill_from_party_id, /* 45 */
3299 bill_from_party_site_id = validLines_List(iLine).bill_from_party_site_id, /* 46 */
3300 bill_to_organization_id = validLines_List(iLine).bill_to_organization_id, /* 47 */
3301 bill_to_location_id = validLines_List(iLine).bill_to_location_id, /* 48 */
3302 poa_party_id = validLines_List(iLine).poa_party_id, /* 49 */
3303 poa_party_site_id = validLines_List(iLine).poa_party_site_id, /* 50 */
3304 poo_organization_id = validLines_List(iLine).poo_organization_id, /* 51 */
3305 poo_location_id = validLines_List(iLine).poo_location_id, /* 52 */
3306 org_id = validLines_List(iLine).org_id, /* 53 */
3307 ship_line_int_id = validLines_List(iLine).ship_line_int_id, /* 54 */
3308 interface_source_table = validLines_List(iLine).interface_source_table, /* 55 */
3309 interface_source_line_id = validLines_List(iLine).interface_source_line_id, /* 56 */
3310 last_updated_by = fnd_global.user_id, /* 57 */
3311 last_update_date = SYSDATE, /* 58 */
3312 last_update_login = fnd_global.login_id, /* 59 */
3313 program_id = fnd_global.conc_program_id, /* 60 */
3314 program_update_date = SYSDATE, /* 61 */
3315 program_application_id = fnd_global.prog_appl_id, /* 62 */
3316 request_id = fnd_global.conc_request_id, /* 63 */
3317 attribute_category = validLines_List(iLine).attribute_category_sl, /* 64 */
3318 attribute1 = validLines_List(iLine).attribute1_sl, /* 65 */
3319 attribute2 = validLines_List(iLine).attribute2_sl, /* 66 */
3320 attribute3 = validLines_List(iLine).attribute3_sl, /* 67 */
3321 attribute4 = validLines_List(iLine).attribute4_sl, /* 68 */
3322 attribute5 = validLines_List(iLine).attribute5_sl, /* 69 */
3323 attribute6 = validLines_List(iLine).attribute6_sl, /* 70 */
3324 attribute7 = validLines_List(iLine).attribute7_sl, /* 71 */
3325 attribute8 = validLines_List(iLine).attribute8_sl, /* 72 */
3326 attribute9 = validLines_List(iLine).attribute9_sl, /* 73 */
3327 attribute10 = validLines_List(iLine).attribute10_sl, /* 74 */
3328 attribute11 = validLines_List(iLine).attribute11_sl, /* 75 */
3329 attribute12 = validLines_List(iLine).attribute12_sl, /* 76 */
3330 attribute13 = validLines_List(iLine).attribute13_sl, /* 77 */
3331 attribute14 = validLines_List(iLine).attribute14_sl, /* 78 */
3332 attribute15 = validLines_List(iLine).attribute15_sl /* 79 */
3333 WHERE ship_line_id = l_ship_line_id;
3334 END IF;
3335 l_debug_info := 'Set Shipment Line Interface status and imported Ids';
3336 INL_LOGGING_PVT.Log_Statement(
3337 p_module_name => g_module_name,
3338 p_procedure_name => l_proc_name,
3339 p_debug_info => l_debug_info
3340 ) ;
3341 -- Set processing status code to COMPLETED
3342 -- for a given and imported Shipment Line
3343 UPDATE inl_ship_lines_int
3344 SET processing_status_code = 'COMPLETED' ,
3345 ship_header_id = headersToProcess_List(iHead).ship_header_id,
3346 ship_line_id = l_ship_line_id ,
3347 request_id = fnd_global.conc_request_id ,
3348 last_updated_by = fnd_global.user_id ,
3349 last_update_date = SYSDATE ,
3350 last_update_login = fnd_global.login_id ,
3351 program_id = fnd_global.conc_program_id ,
3352 program_update_date = SYSDATE ,
3353 program_application_id = fnd_global.prog_appl_id
3354 WHERE ship_line_int_id = validLines_List(iLine).ship_line_int_id;
3355 END LOOP;
3356 END IF;
3357 END LOOP;
3358 END IF;
3359 -- Standard End of Procedure/Function Logging
3360 INL_LOGGING_PVT.Log_EndProc(
3361 p_module_name => g_module_name,
3362 p_procedure_name => l_proc_name
3363 );
3364 EXCEPTION
3365 WHEN FND_API.G_EXC_ERROR THEN
3366 -- Standard Expected Error Logging
3367 INL_LOGGING_PVT.Log_ExpecError (
3368 p_module_name => g_module_name,
3369 p_procedure_name => l_proc_name
3370 );
3371 x_return_status := FND_API.G_RET_STS_ERROR;
3372 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3373 -- Standard Unexpected Error Logging
3374 INL_LOGGING_PVT.Log_UnexpecError (
3375 p_module_name => g_module_name,
3376 p_procedure_name => l_proc_name
3377 );
3378 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3379 WHEN OTHERS THEN
3380 -- Standard Unexpected Error Logging
3381 INL_LOGGING_PVT.Log_UnexpecError (
3382 p_module_name => g_module_name,
3383 p_procedure_name => l_proc_name
3384 );
3385 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3386 IF FND_MSG_PUB.Check_Msg_Level(
3387 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3388 ) THEN
3389 FND_MSG_PUB.Add_Exc_Msg(
3390 p_pkg_name => g_pkg_name,
3391 p_procedure_name => l_proc_name
3392 );
3393 END IF;
3394 END Import_Lines;
3395
3396 -- Utility name : Set_existingMatchInfoFlag
3397 -- Type : Private
3398 -- Function : Import Match Lines
3399 --
3400 --
3401 -- Pre-reqs : None
3402 -- Parameters :
3403 -- IN : p_from_parent_table_name
3404 -- p_from_parent_table_id
3405 -- p_to_parent_table_name
3406 -- p_to_parent_table_id
3407 --
3408 -- OUT : x_existing_match_info_flag
3409 -- x_parent_match_id
3410 -- x_return_status
3411 -- Version : Current version 1.0
3412 --
3413 -- Notes :
3414 PROCEDURE Set_existingMatchInfoFlag(
3415 p_from_parent_table_name IN VARCHAR2,
3416 p_from_parent_table_id IN NUMBER,
3417 p_to_parent_table_name IN VARCHAR2,
3418 p_to_parent_table_id IN NUMBER,
3419 x_existing_match_info_flag OUT NOCOPY VARCHAR2,
3420 x_parent_match_id OUT NOCOPY NUMBER,
3421 x_return_status OUT NOCOPY VARCHAR2
3422 ) IS
3423 l_proc_name CONSTANT VARCHAR2(100) := 'Set_existingMatchInfoFlag';
3424 l_debug_info VARCHAR2(2000) ;
3425 l_return_status VARCHAR2(1) ;
3426 BEGIN
3427 -- Standard Beginning of Procedure/Function Logging
3428 INL_LOGGING_PVT.Log_BeginProc(
3429 p_module_name => g_module_name,
3430 p_procedure_name => l_proc_name) ;
3431 -- Initialize API return status to success
3432 x_return_status := FND_API.G_RET_STS_SUCCESS;
3433 -- Include the lines with transaction_type = 'CREATE'
3434 l_debug_info := 'Deriving Existing_Match_Info_Flag';
3435 INL_LOGGING_PVT.Log_Statement(
3436 p_module_name => g_module_name,
3437 p_procedure_name => l_proc_name,
3438 p_debug_info => l_debug_info
3439 ) ;
3440 SELECT MIN(match_id)
3441 INTO x_parent_match_id
3442 FROM inl_matches
3443 WHERE to_parent_table_id = p_to_parent_table_id
3444 AND to_parent_table_name = p_to_parent_table_name
3445 AND from_parent_table_id = p_from_parent_table_id
3446 AND from_parent_table_name = p_from_parent_table_name
3447 ;
3448 IF x_parent_match_id IS NOT NULL THEN
3449 x_existing_match_info_flag:='Y';
3450 ELSE
3451 x_existing_match_info_flag:='N';
3452 END IF;
3453 -- Standard End of Procedure/Function Logging
3454 INL_logging_pvt.Log_EndProc(
3455 p_module_name => g_module_name,
3456 p_procedure_name => l_proc_name
3457 );
3458 EXCEPTION
3459 WHEN FND_API.G_EXC_ERROR THEN
3460 -- Standard Expected Error Logging
3461 INL_LOGGING_PVT.Log_ExpecError (
3462 p_module_name => g_module_name,
3463 p_procedure_name => l_proc_name
3464 );
3465 x_return_status := FND_API.G_RET_STS_ERROR;
3466 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3467 -- Standard Unexpected Error Logging
3468 INL_LOGGING_PVT.Log_UnexpecError (
3469 p_module_name => g_module_name,
3470 p_procedure_name => l_proc_name
3471 );
3472 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3473 WHEN OTHERS THEN
3474 -- Standard Unexpected Error Logging
3475 INL_LOGGING_PVT.Log_UnexpecError (
3476 p_module_name => g_module_name,
3477 p_procedure_name => l_proc_name
3478 );
3479 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3480 IF FND_MSG_PUB.Check_Msg_Level(
3481 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3482 ) THEN
3483 FND_MSG_PUB.Add_Exc_Msg(
3484 p_pkg_name => g_pkg_name,
3485 p_procedure_name => l_proc_name
3486 );
3487 END IF;
3488 END Set_existingMatchInfoFlag;
3489
3490 -- Utility name : Derive_FromAP
3491 -- Type : Private
3492 -- Function : Make AP derivation
3493 --
3494 --
3495 -- Pre-reqs : None
3496 -- Parameters :
3497 -- IN : p_from_parent_table_name VARCHAR2,
3498 -- p_from_parent_table_id NUMBER,
3499 -- p_match_type_code VARCHAR2,
3500 --
3501 -- IN/OUT : x_matched_amt NUMBER,
3502 -- x_matched_qty NUMBER,
3503 -- x_nrec_tax_amt NUMBER,
3504 -- x_matched_uom_code VARCHAR2,
3505 -- x_new_to_parent_table_name VARCHAR2,
3506 -- x_new_to_parent_table_id NUMBER,
3507 -- x_matched_curr_code VARCHAR2,
3508 -- x_matched_curr_conversion_type VARCHAR2,
3509 -- x_matched_curr_conversion_date DATE,
3510 -- x_matched_curr_conversion_rate NUMBER,
3511 -- x_ship_header_id NUMBER,
3512 --
3513 -- OUT : x_existing_match_info_flag VARCHAR2,
3514 -- x_parent_match_id NUMBER,
3515 -- x_return_status VARCHAR2
3516 --
3517 -- Version : Current version 1.0
3518 --
3519 -- Notes : When the information come from AP the amounts variations
3520 -- are recorded in interface tables by the INL_MATCHES_GRP package
3521 -- and the adjustment program wait for final amounts.
3522 -- In order to equalize the information in this proc we:
3523 -- - receive the values of the new match
3524 PROCEDURE Derive_FromAP(
3525 p_from_parent_table_name IN VARCHAR2,
3526 p_from_parent_table_id IN NUMBER,
3527 p_match_type_code IN VARCHAR2,
3528 x_matched_amt IN OUT NOCOPY NUMBER,
3529 x_matched_qty IN OUT NOCOPY NUMBER,
3530 x_nrec_tax_amt IN OUT NOCOPY NUMBER,
3531 x_matched_uom_code IN OUT NOCOPY VARCHAR2,
3532 x_new_to_parent_table_name IN OUT NOCOPY VARCHAR2,
3533 x_new_to_parent_table_id IN OUT NOCOPY NUMBER,
3534 x_matched_curr_code IN OUT NOCOPY VARCHAR2,
3535 x_matched_curr_conversion_type IN OUT NOCOPY VARCHAR2,
3536 x_matched_curr_conversion_date IN OUT NOCOPY DATE,
3537 x_matched_curr_conversion_rate IN OUT NOCOPY NUMBER,
3538 x_ship_header_id IN OUT NOCOPY NUMBER,
3539 x_existing_match_info_flag OUT NOCOPY VARCHAR2,
3540 x_parent_match_id OUT NOCOPY NUMBER,
3541 x_return_status OUT NOCOPY VARCHAR2
3542 ) IS
3543 l_proc_name CONSTANT VARCHAR2(100) := 'Derive_FromAP';
3544 l_debug_info VARCHAR2(2000) ;
3545 l_return_status VARCHAR2(1) ;
3546
3547 l_org_id NUMBER;
3548 l_inventory_item_id NUMBER;
3549 l_match_type VARCHAR2(30);
3550 l_line_type_lookup_code VARCHAR2(30);
3551 l_mat_curr_code_P VARCHAR2(30);
3552 l_mat_curr_rate_P NUMBER;
3553 l_mat_curr_type_P VARCHAR2(30);
3554 l_mat_curr_date_P DATE;
3555 l_mat_nrec_tax_amt_P NUMBER;
3556 l_mat_charge_line_type_id_P NUMBER;
3557 l_mat_qty_P NUMBER;
3558 l_mat_uom_code_P VARCHAR2(30);
3559 l_mat_amt_P NUMBER;
3560 l_mat_par_mat_id_P NUMBER;
3561 l_ship_header_id_tab inl_int_table := inl_int_table() ;
3562 l_corr_from_parent_table_name VARCHAR2(30);
3563 l_corr_from_parent_table_id NUMBER;
3564 l_currency_conversion_rate NUMBER;
3565
3566 BEGIN
3567 -- Standard Beginning of Procedure/Function Logging
3568 INL_LOGGING_PVT.Log_BeginProc(
3569 p_module_name => g_module_name,
3570 p_procedure_name => l_proc_name) ;
3571
3572 -- Initialize API return status to success
3573 x_return_status := FND_API.G_RET_STS_SUCCESS;
3574 -- Include the lines with transaction_type = 'CREATE'
3575 l_debug_info := 'Include the lines with transaction_type = CREATE';
3576 INL_LOGGING_PVT.Log_Statement(
3577 p_module_name => g_module_name,
3578 p_procedure_name => l_proc_name,
3579 p_debug_info => l_debug_info
3580 ) ;
3581 IF x_new_to_parent_table_name = 'RCV_TRANSACTIONS' THEN
3582 x_new_to_parent_table_name := 'INL_SHIP_LINES';
3583 SELECT lcm_shipment_line_id
3584 INTO x_new_to_parent_table_id
3585 FROM rcv_transactions rt
3586 WHERE rt.transaction_id = x_new_to_parent_table_id
3587 ;
3588 END IF;
3589 Set_existingMatchInfoFlag(
3590 p_from_parent_table_name => p_from_parent_table_name,
3591 p_from_parent_table_id => p_from_parent_table_id,
3592 p_to_parent_table_name => x_new_to_parent_table_name,
3593 p_to_parent_table_id => x_new_to_parent_table_id,
3594 x_existing_match_info_flag => x_existing_match_info_flag,
3595 x_parent_match_id => x_parent_match_id,
3596 x_return_status => x_return_status
3597 );
3598
3599 -- If any errors happen abort API.
3600 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3601 RAISE FND_API.G_EXC_ERROR;
3602 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3603 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3604 END IF;
3605 -- Migrated from matche_grp
3606 SELECT l.line_type_lookup_code,
3607 d.org_id,
3608 l.inventory_item_id,
3609 l.match_type
3610 INTO l_line_type_lookup_code,
3611 l_org_id,
3612 l_inventory_item_id,
3613 l_match_type
3614 FROM ap_invoice_distributions d,
3615 ap_invoice_lines l
3616 WHERE d.invoice_distribution_id = p_from_parent_table_id
3617 AND d.invoice_id = l.invoice_id
3618 AND d.invoice_line_number = l.line_number
3619 ;
3620
3621 l_debug_info := 'Getting from inl_corr_matches_v the current value for transaction.';
3622 INL_LOGGING_PVT.Log_Statement(
3623 p_module_name => g_module_name,
3624 p_procedure_name => l_proc_name,
3625 p_debug_info => l_debug_info
3626 );
3627
3628 IF p_match_type_code = 'CORRECTION'
3629 THEN
3630 l_debug_info := 'Is a correction. Type: '||l_match_type;
3631 INL_LOGGING_PVT.Log_Statement(
3632 p_module_name => g_module_name,
3633 p_procedure_name => l_proc_name,
3634 p_debug_info => l_debug_info) ;
3635
3636 IF l_line_type_lookup_code = 'ITEM' THEN
3637 IF x_existing_match_info_flag = 'Y' THEN -- RESUBMIT A CORRECTION
3638 -- select based on inl_corr_matches_v
3639 SELECT
3640 mat1.matched_curr_code ,
3641 mat1.matched_curr_conversion_rate,
3642 mat1.matched_curr_conversion_type,
3643 mat1.matched_curr_conversion_date,
3644 NULL nrec_tax_amt ,
3645 NULL charge_line_type_id ,
3646 mat1.matched_qty ,
3647 mat1.matched_uom_code ,
3648 NVL(DECODE(mat1.matched_curr_code, mat2.matched_curr_code, mat2.matched_amt,
3649 inl_landedcost_pvt.Converted_Amt(
3650 mat2.matched_amt,
3651 mat2.matched_curr_code,
3652 mat1.matched_curr_code,
3653 mat1.matched_curr_conversion_type,
3654 mat1.matched_curr_conversion_date))
3655 , mat1.matched_amt) AS matched_amt,
3656 mat1.match_id,
3657 mat2.from_parent_table_name,
3658 mat2.from_parent_table_id
3659 INTO
3660 l_mat_curr_code_P ,
3661 l_mat_curr_rate_P ,
3662 l_mat_curr_type_P ,
3663 l_mat_curr_date_P ,
3664 l_mat_nrec_tax_amt_P ,
3665 l_mat_charge_line_type_id_P,
3666 l_mat_qty_P ,
3667 l_mat_uom_code_P ,
3668 l_mat_amt_P ,
3669 l_mat_par_mat_id_P ,
3670 l_corr_from_parent_table_name,
3671 l_corr_from_parent_table_id
3672 FROM
3673 inl_matches mat1,
3674 (select *
3675 from inl_matches m2
3676 where NOT (m2.from_parent_table_name = p_from_parent_table_name
3677 AND m2.from_parent_table_id = p_from_parent_table_id)
3678 ) mat2
3679 WHERE
3680 mat2.parent_match_id (+) = mat1.match_id
3681 AND mat2.match_type_code (+) = 'CORRECTION'
3682 AND mat1.from_parent_table_name = x_new_to_parent_table_name
3683 AND mat1.from_parent_table_id = x_new_to_parent_table_id
3684 AND mat1.match_id
3685 =(
3686 SELECT MAX(mat1B.match_id)
3687 FROM inl_matches mat1B
3688 WHERE mat1B.to_parent_table_name = mat1.to_parent_table_name
3689 AND mat1B.to_parent_table_id = mat1.to_parent_table_id
3690 AND mat1B.from_parent_table_name = mat1.from_parent_table_name
3691 AND mat1B.from_parent_table_id = mat1.from_parent_table_id
3692 )
3693 AND (mat2.match_id is null
3694 OR mat2.match_id = mat1.match_id
3695 OR mat2.match_id
3696 =(
3697 SELECT MAX(DECODE(mat2.match_id, mat1.match_id, NULL, mat2.match_id))
3698 FROM inl_matches mat1C,
3699 inl_matches mat2C
3700 WHERE mat2C.parent_match_id (+) = mat1C.match_id
3701 AND mat2C.match_type_code (+) = 'CORRECTION'
3702 AND NOT (mat2C.from_parent_table_name = p_from_parent_table_name
3703 AND mat2C.from_parent_table_id = p_from_parent_table_id)
3704 AND mat1C.from_parent_table_name = mat1.from_parent_table_name
3705 AND mat1C.from_parent_table_id = mat1.from_parent_table_id
3706 ))
3707 ;
3708 ELSE
3709 l_corr_from_parent_table_name := NULL;
3710 l_corr_from_parent_table_id := NULL;
3711 SELECT
3712 mP.matched_curr_code ,
3713 mP.matched_curr_conversion_rate,
3714 mP.matched_curr_conversion_type,
3715 mP.matched_curr_conversion_date,
3716 NULL nrec_tax_amt ,
3717 NULL charge_line_type_id ,
3718 mP.matched_qty ,
3719 mP.matched_uom_code ,
3720 mP.matched_amt ,
3721 mP.match_id
3722 INTO
3723 l_mat_curr_code_P ,
3724 l_mat_curr_rate_P ,
3725 l_mat_curr_type_P ,
3726 l_mat_curr_date_P ,
3727 l_mat_nrec_tax_amt_P ,
3728 l_mat_charge_line_type_id_P,
3729 l_mat_qty_P ,
3730 l_mat_uom_code_P ,
3731 l_mat_amt_P ,
3732 l_mat_par_mat_id_P
3733 FROM
3734 inl_corr_matches_v mP -- 1 get the parent
3735 WHERE mP.from_parent_table_name = x_new_to_parent_table_name
3736 AND mP.from_parent_table_id = x_new_to_parent_table_id
3737 AND mP.match_id
3738 =(
3739 SELECT MAX(m1P.match_id)
3740 FROM inl_corr_matches_v m1P
3741 WHERE m1P.from_parent_table_name = mP.from_parent_table_name
3742 AND m1P.from_parent_table_id = mP.from_parent_table_id
3743 )
3744 AND (mP.correction_match_id IS NULL
3745 OR mP.correction_match_id
3746 =(
3747 SELECT MAX(m1P.correction_match_id)
3748 FROM inl_corr_matches_v m1P
3749 WHERE m1P.from_parent_table_name = mP.from_parent_table_name
3750 AND m1P.from_parent_table_id = mP.from_parent_table_id
3751 ))
3752 ;
3753 END IF;
3754
3755 l_debug_info := 'match_type: '||l_match_type;
3756 INL_LOGGING_PVT.Log_Statement(
3757 p_module_name => g_module_name,
3758 p_procedure_name => l_proc_name,
3759 p_debug_info => l_debug_info
3760 );
3761
3762 IF l_match_type = 'PRICE_CORRECTION' THEN
3763 x_matched_qty := l_mat_qty_P;
3764
3765 ELSE
3766 IF l_mat_uom_code_P <> x_matched_uom_code THEN
3767 x_matched_qty :=
3768 INL_LANDEDCOST_PVT.Converted_Qty(
3769 p_organization_id => l_org_id,
3770 p_inventory_item_id => l_inventory_item_id,
3771 p_qty => x_matched_qty,
3772 p_from_uom_code => x_matched_uom_code,
3773 P_to_uom_code => l_mat_uom_code_P
3774 )
3775 ;
3776
3777 END IF;
3778 x_matched_qty := x_matched_qty + NVL(l_mat_qty_P, 0) ;
3779 END IF;
3780 x_matched_uom_code := l_mat_uom_code_P;
3781 ELSE -- isn't a ITEM
3782 SELECT
3783 m.matched_curr_code ,
3784 m.matched_curr_conversion_rate,
3785 m.matched_curr_conversion_type,
3786 m.matched_curr_conversion_date,
3787 m.nrec_tax_amt ,
3788 m.charge_line_type_id ,
3789 m.matched_qty ,
3790 m.matched_uom_code ,
3791 m.matched_amt ,
3792 m.match_id
3793 INTO
3794 l_mat_curr_code_P ,
3795 l_mat_curr_rate_P ,
3796 l_mat_curr_type_P ,
3797 l_mat_curr_date_P ,
3798 l_mat_nrec_tax_amt_P ,
3799 l_mat_charge_line_type_id_P,
3800 l_mat_qty_P ,
3801 l_mat_uom_code_P ,
3802 l_mat_amt_P ,
3803 l_mat_par_mat_id_P
3804 FROM inl_corr_matches_v m
3805 WHERE m.from_parent_table_name = x_new_to_parent_table_name
3806 AND m.from_parent_table_id = x_new_to_parent_table_id
3807 AND m.match_id =
3808 (
3809 SELECT MAX(m1.match_id)
3810 FROM inl_corr_matches_v m1
3811 WHERE m1.from_parent_table_name = x_new_to_parent_table_name
3812 AND m1.from_parent_table_id = x_new_to_parent_table_id
3813 )
3814 ;
3815 END IF;
3816
3817 IF l_mat_curr_code_P <> x_matched_curr_code THEN
3818 --correction
3819 l_debug_info := 'conversion required.';
3820 INL_LOGGING_PVT.Log_Statement(
3821 p_module_name => g_module_name,
3822 p_procedure_name => l_proc_name,
3823 p_debug_info => l_debug_info
3824 );
3825 x_matched_amt := INL_LANDEDCOST_PVT.Converted_Amt(
3826 p_amt => NVL(x_matched_amt, 0),
3827 p_from_currency_code => x_matched_curr_code,
3828 p_to_currency_code => l_mat_curr_code_P,
3829 p_currency_conversion_type => NVL(l_mat_curr_type_P,x_matched_curr_conversion_type),
3830 p_currency_conversion_date => NVL(l_mat_curr_date_P,x_matched_curr_conversion_date),
3831 x_currency_conversion_rate => l_currency_conversion_rate
3832 )
3833 ;
3834 IF NVL(x_nrec_tax_amt, 0) <> 0 THEN
3835 l_debug_info := 'conversion required for Not recoverable tax.';
3836 INL_LOGGING_PVT.Log_Statement(
3837 p_module_name => g_module_name,
3838 p_procedure_name => l_proc_name,
3839 p_debug_info => l_debug_info
3840 );
3841
3842 x_nrec_tax_amt := inl_landedcost_pvt.Converted_Amt(
3843 p_amt => NVL(x_nrec_tax_amt, 0),
3844 p_from_currency_code => x_matched_curr_code,
3845 p_to_currency_code => l_mat_curr_code_P,
3846 p_currency_conversion_type => NVL(l_mat_curr_type_P,x_matched_curr_conversion_type),
3847 p_currency_conversion_date => NVL(l_mat_curr_date_P,x_matched_curr_conversion_date),
3848 x_currency_conversion_rate => l_currency_conversion_rate
3849 )
3850 ;
3851 END IF;
3852 END IF;
3853 x_matched_curr_code := l_mat_curr_code_P;
3854 x_matched_curr_conversion_type := l_mat_curr_type_P;
3855 x_matched_curr_conversion_date := l_mat_curr_date_P;
3856 x_matched_curr_conversion_rate := l_currency_conversion_rate; --l_mat_curr_rate_P;
3857
3858 IF x_existing_match_info_flag = 'Y'
3859 AND l_corr_from_parent_table_id IS NOT NULL
3860 AND l_corr_from_parent_table_id > p_from_parent_table_id
3861 THEN
3862 x_matched_amt := NVL(x_matched_amt,0) + NVL(x_nrec_tax_amt, 0); -- RESUBMIT A CORRECTION THAT ISN'T THE LAST CORRECTION
3863 ELSE
3864 x_matched_amt := NVL(x_matched_amt,0) + NVL(x_nrec_tax_amt, 0) + NVL(l_mat_amt_P, 0);
3865 END IF;
3866 x_parent_match_id := l_mat_par_mat_id_P;
3867 IF NVL(x_nrec_tax_amt, 0) <> 0 OR NVL(l_mat_nrec_tax_amt_P, 0) <> 0 THEN
3868 x_nrec_tax_amt := NVL(x_nrec_tax_amt, 0) + NVL(l_mat_nrec_tax_amt_P, 0) ;
3869 END IF;
3870 END IF;
3871
3872 IF x_new_to_parent_table_name = 'INL_SHIP_HEADERS' THEN
3873 SELECT ship_header_id
3874 INTO x_ship_header_id
3875 FROM inl_ship_headers
3876 WHERE ship_header_id = x_new_to_parent_table_id;
3877 ELSIF x_new_to_parent_table_name = 'INL_SHIP_LINES' THEN
3878 SELECT ship_header_id
3879 INTO x_ship_header_id
3880 FROM inl_ship_lines
3881 WHERE ship_line_id = x_new_to_parent_table_id;
3882 ELSIF x_new_to_parent_table_name = 'INL_SHIP_LINE_GROUPS' THEN
3883 SELECT ship_header_id
3884 INTO x_ship_header_id
3885 FROM inl_ship_line_groups
3886 WHERE ship_line_group_id = x_new_to_parent_table_id;
3887 ELSIF x_new_to_parent_table_name = 'INL_CHARGE_LINES' THEN
3888 l_ship_header_id_tab.DELETE;
3889 SELECT DISTINCT(a.ship_header_id) BULK COLLECT
3890 INTO l_ship_header_id_tab
3891 FROM inl_charge_lines c,
3892 inl_associations a
3893 WHERE c.charge_line_id = x_new_to_parent_table_id
3894 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
3895 AND a.from_parent_table_id = c.charge_line_id;
3896 IF NVL(l_ship_header_id_tab.LAST, 0) = 1 THEN
3897 x_ship_header_id := l_ship_header_id_tab(1) ;
3898 END IF;
3899 ELSIF x_new_to_parent_table_name = 'INL_TAX_LINES' THEN
3900 SELECT ship_header_id
3901 INTO x_ship_header_id
3902 FROM inl_tax_lines
3903 WHERE tax_line_id = x_new_to_parent_table_id;
3904 ELSE -- In case of correction, the table is out of LCM limit
3905 SELECT ship_header_id
3906 INTO x_ship_header_id
3907 FROM inl_matches
3908 WHERE match_id = l_mat_par_mat_id_P;
3909 END IF;
3910 --
3911 -- Standard End of Procedure/Function Logging
3912 INL_logging_pvt.Log_EndProc(
3913 p_module_name => g_module_name,
3914 p_procedure_name => l_proc_name
3915 );
3916 EXCEPTION
3917 WHEN FND_API.G_EXC_ERROR THEN
3918 -- Standard Expected Error Logging
3919 INL_LOGGING_PVT.Log_ExpecError (
3920 p_module_name => g_module_name,
3921 p_procedure_name => l_proc_name
3922 );
3923 x_return_status := FND_API.G_RET_STS_ERROR;
3924 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3925 -- Standard Unexpected Error Logging
3926 INL_LOGGING_PVT.Log_UnexpecError (
3927 p_module_name => g_module_name,
3928 p_procedure_name => l_proc_name
3929 );
3930 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3931 WHEN OTHERS THEN
3932 -- Standard Unexpected Error Logging
3933 INL_LOGGING_PVT.Log_UnexpecError (
3934 p_module_name => g_module_name,
3935 p_procedure_name => l_proc_name
3936 );
3937 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3938 IF FND_MSG_PUB.Check_Msg_Level(
3939 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3940 ) THEN
3941 FND_MSG_PUB.Add_Exc_Msg(
3942 p_pkg_name => g_pkg_name,
3943 p_procedure_name => l_proc_name
3944 );
3945 END IF;
3946 END Derive_FromAP;
3947
3948 -- Utility name : Import_Matches
3949 -- Type : Private
3950 -- Function : Import Match Lines
3951 --
3952 --
3953 -- Pre-reqs : None
3954 -- Parameters :
3955 -- IN : p_group_id IN NUMBER
3956 --
3957 -- OUT : x_return_status OUT NOCOPY VARCHAR2
3958 --
3959 -- Version : Current version 1.0
3960 --
3961 -- Notes :
3962 PROCEDURE Import_Matches(
3963 p_group_id IN NUMBER,
3964 x_return_status OUT NOCOPY VARCHAR2
3965 ) IS
3966 l_proc_name CONSTANT VARCHAR2(100) := 'Import_Matches';
3967 -- Cursor to get all valid and possible Matches
3968 -- that will be used in the import process
3969 CURSOR matchAmountsToProcess
3970 IS
3971 SELECT inl_match_Amounts_s.NEXTVAL new_match_Amount_id,
3972 matched_amt ,
3973 matched_curr_code ,
3974 matched_curr_conversion_type,
3975 matched_curr_conversion_date,
3976 matched_curr_conversion_rate,
3977 match_amount_int_id,
3978 transaction_type
3979 FROM inl_match_amounts_int
3980 WHERE processing_status_code = 'PENDING'
3981 AND (p_group_id IS NULL
3982 OR p_group_id = group_id)
3983 ;
3984
3985 TYPE matchAmountsToProcess_ListType IS TABLE OF matchAmountsToProcess%ROWTYPE;
3986 matchAmountsToProcess_List matchAmountsToProcess_ListType;
3987
3988 CURSOR matchesToProcess
3989 IS
3990 SELECT inl_matches_s.NEXTVAL new_match_id,
3991 match_type_code ,
3992 from_parent_table_name,
3993 from_parent_table_id ,
3994 to_parent_table_name ,
3995 to_parent_table_id ,
3996 matched_qty ,
3997 matched_uom_code ,
3998 matched_amt ,
3999 matched_curr_code ,
4000 matched_curr_conversion_type,
4001 matched_curr_conversion_date,
4002 matched_curr_conversion_rate,
4003 replace_estim_qty_flag ,
4004 charge_line_type_id ,
4005 party_id ,
4006 party_site_id ,
4007 tax_code ,
4008 nrec_tax_amt ,
4009 tax_amt_included_flag,
4010 match_amount_int_id ,
4011 match_int_id ,
4012 transaction_type
4013 FROM inl_matches_int
4014 WHERE processing_status_code = 'RUNNING' /* Point 1: If any change occur here the other 4 points might be affected */
4015 AND (p_group_id IS NULL
4016 OR p_group_id = group_id)
4017 ;
4018
4019 TYPE matchesToProcess_ListType IS TABLE OF matchesToProcess%ROWTYPE;
4020 matchesToProcess_List matchesToProcess_ListType;
4021 l_debug_info VARCHAR2(2000) ;
4022 l_return_status VARCHAR2(1) ;
4023 l_ship_line_id NUMBER;
4024 l_ship_header_id NUMBER;
4025 l_parent_match_id NUMBER;
4026 l_existing_match_info_flag VARCHAR2(1) ;
4027 l_match_id NUMBER;
4028 l_new_to_parent_table_name VARCHAR2(30) ;
4029 l_new_to_parent_table_id NUMBER;
4030 l_matched_qty NUMBER;
4031 l_matched_amt NUMBER;
4032 l_nrec_tax_amt NUMBER;
4033 l_matched_uom_code VARCHAR2(30) ;
4034 l_matched_curr_code VARCHAR2(30) ;
4035 l_matched_curr_conversion_type VARCHAR2(30);
4036 l_matched_curr_conversion_date DATE;
4037 l_matched_curr_conversion_rate NUMBER;
4038 BEGIN
4039 -- Standard Beginning of Procedure/Function Logging
4040 INL_LOGGING_PVT.Log_BeginProc(
4041 p_module_name => g_module_name,
4042 p_procedure_name => l_proc_name
4043 ) ;
4044 -- Initialize API return status to success
4045 x_return_status := FND_API.G_RET_STS_SUCCESS;
4046 l_debug_info := 'Processing Match Amounts';
4047 INL_LOGGING_PVT.Log_Statement(
4048 p_module_name => g_module_name,
4049 p_procedure_name => l_proc_name,
4050 p_debug_info => l_debug_info
4051 ) ;
4052
4053 OPEN matchAmountsToProcess;
4054 FETCH matchAmountsToProcess BULK COLLECT INTO matchAmountsToProcess_List;
4055 CLOSE matchAmountsToProcess;
4056
4057 IF NVL(matchAmountsToProcess_List.LAST, 0) > 0 THEN
4058 FOR iMatch IN matchAmountsToProcess_List.FIRST..matchAmountsToProcess_List.LAST
4059 LOOP
4060 l_debug_info := 'Processing Match Amount: '||iMatch||'('||matchAmountsToProcess_List(iMatch).match_amount_int_id||')';
4061 INL_LOGGING_PVT.Log_Statement(
4062 p_module_name => g_module_name,
4063 p_procedure_name => l_proc_name,
4064 p_debug_info => l_debug_info
4065 ) ;
4066
4067 INL_LOGGING_PVT.Log_Variable(p_module_name => g_module_name,
4068 p_procedure_name => l_proc_name,
4069 p_var_name => 'matchAmountsToProcess_List(iMatch).match_amount_int_id',
4070 p_var_value => matchAmountsToProcess_List(iMatch) .match_amount_int_id) ;
4071 IF matchAmountsToProcess_List(iMatch).transaction_type <> 'CREATE' THEN
4072 l_debug_info := 'Transaction_type '||matchAmountsToProcess_List(iMatch).transaction_type||'not supported.';
4073 INL_LOGGING_PVT.Log_Statement(
4074 p_module_name => g_module_name,
4075 p_procedure_name => l_proc_name,
4076 p_debug_info => l_debug_info
4077 ) ;
4078
4079 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4080 ELSE
4081 INSERT INTO inl_match_Amounts(
4082 match_amount_id ,
4083 matched_amt ,
4084 matched_curr_code ,
4085 matched_curr_conversion_type,
4086 matched_curr_conversion_date,
4087 matched_curr_conversion_rate,
4088 match_amount_int_id ,
4089 program_id ,
4090 program_update_date ,
4091 program_application_id ,
4092 request_id ,
4093 created_by ,
4094 creation_date ,
4095 last_updated_by ,
4096 last_update_date ,
4097 last_update_login
4098 ) VALUES
4099 (
4100 matchAmountsToProcess_List(iMatch).new_match_Amount_id ,
4101 matchAmountsToProcess_List(iMatch).matched_amt ,
4102 matchAmountsToProcess_List(iMatch).matched_curr_code ,
4103 matchAmountsToProcess_List(iMatch).matched_curr_conversion_type ,
4104 matchAmountsToProcess_List(iMatch).matched_curr_conversion_date ,
4105 matchAmountsToProcess_List(iMatch).matched_curr_conversion_rate ,
4106 matchAmountsToProcess_List(iMatch).match_amount_int_id ,
4107 fnd_global.conc_program_id ,
4108 SYSDATE ,
4109 fnd_global.prog_appl_id ,
4110 fnd_global.conc_request_id ,
4111 fnd_global.user_id ,
4112 SYSDATE ,
4113 fnd_global.user_id ,
4114 SYSDATE ,
4115 fnd_global.login_id
4116 );
4117 END IF;
4118 l_debug_info := 'Set Shipment Line Interface status and imported Ids';
4119 INL_LOGGING_PVT.Log_Statement(
4120 p_module_name => g_module_name,
4121 p_procedure_name => l_proc_name,
4122 p_debug_info => l_debug_info
4123 ) ;
4124 -- Set processing status to COMPLETED for
4125 -- the current and imported Match Line
4126 UPDATE inl_match_Amounts_int m
4127 SET m.processing_status_code = 'COMPLETED' ,
4128 m.request_id = fnd_global.conc_request_id,
4129 m.last_updated_by = fnd_global.user_id ,
4130 m.last_update_date = SYSDATE ,
4131 m.last_update_login = fnd_global.login_id ,
4132 m.program_id = fnd_global.conc_program_id,
4133 m.program_update_date = SYSDATE ,
4134 m.program_application_id = fnd_global.prog_appl_id
4135 WHERE m.match_Amount_int_id = matchAmountsToProcess_List(iMatch).match_Amount_int_id;
4136 END LOOP;
4137 END IF;
4138
4139 l_debug_info := 'Processing Matches';
4140 INL_LOGGING_PVT.Log_Statement(
4141 p_module_name => g_module_name,
4142 p_procedure_name => l_proc_name,
4143 p_debug_info => l_debug_info
4144 ) ;
4145
4146 OPEN matchesToProcess;
4147 FETCH matchesToProcess BULK COLLECT INTO matchesToProcess_List;
4148 CLOSE matchesToProcess;
4149
4150 IF NVL(matchesToProcess_List.LAST, 0) > 0 THEN
4151 FOR iMatch IN matchesToProcess_List.FIRST..matchesToProcess_List.LAST
4152 LOOP
4153
4154 IF matchesToProcess_List(iMatch).from_parent_table_name = 'AP_INVOICE_DISTRIBUTIONS'
4155 THEN
4156 l_matched_qty := matchesToProcess_List(iMatch).matched_qty ;
4157 l_matched_uom_code := matchesToProcess_List(iMatch).matched_uom_code ;
4158 l_new_to_parent_table_name := matchesToProcess_List(iMatch).to_parent_table_name ;
4159 l_new_to_parent_table_id := matchesToProcess_List(iMatch).to_parent_table_id ;
4160 l_matched_curr_code := matchesToProcess_List(iMatch).matched_curr_code ;
4161 l_matched_curr_conversion_type := matchesToProcess_List(iMatch).matched_curr_conversion_type ;
4162 l_matched_curr_conversion_date := matchesToProcess_List(iMatch).matched_curr_conversion_date ;
4163 l_matched_curr_conversion_rate := matchesToProcess_List(iMatch).matched_curr_conversion_rate ;
4164 l_matched_amt := matchesToProcess_List(iMatch).matched_amt ;
4165 l_nrec_tax_amt := matchesToProcess_List(iMatch).nrec_tax_amt ;
4166 Derive_FromAP(
4167 p_from_parent_table_name => matchesToProcess_List(iMatch).from_parent_table_name,
4168 p_from_parent_table_id => matchesToProcess_List(iMatch).from_parent_table_id,
4169 p_match_type_code => matchesToProcess_List(iMatch).match_type_code,
4170 x_matched_amt => l_matched_amt,
4171 x_matched_qty => l_matched_qty,
4172 x_nrec_tax_amt => l_nrec_tax_amt,
4173 x_matched_uom_code => l_matched_uom_code,
4174 x_new_to_parent_table_name => l_new_to_parent_table_name,
4175 x_new_to_parent_table_id => l_new_to_parent_table_id,
4176 x_matched_curr_code => l_matched_curr_code,
4177 x_matched_curr_conversion_type => l_matched_curr_conversion_type,
4178 x_matched_curr_conversion_date => l_matched_curr_conversion_date,
4179 x_matched_curr_conversion_rate => l_matched_curr_conversion_rate,
4180 x_ship_header_id => l_ship_header_id,
4181 x_existing_match_info_flag => l_existing_match_info_flag,
4182 x_parent_match_id => l_parent_match_id,
4183 x_return_status => l_return_status
4184 );
4185
4186 -- If any errors happen abort API.
4187 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4188 RAISE FND_API.G_EXC_ERROR;
4189 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4190 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4191 END IF;
4192 ELSE
4193 l_new_to_parent_table_name := matchesToProcess_List(iMatch).to_parent_table_name;
4194 l_new_to_parent_table_id := matchesToProcess_List(iMatch).to_parent_table_id;
4195 Set_existingMatchInfoFlag(
4196 p_from_parent_table_name => matchesToProcess_List(iMatch).from_parent_table_name,
4197 p_from_parent_table_id => matchesToProcess_List(iMatch).from_parent_table_id,
4198 p_to_parent_table_name => l_new_to_parent_table_name,
4199 p_to_parent_table_id => l_new_to_parent_table_id,
4200 x_existing_match_info_flag => l_existing_match_info_flag,
4201 x_parent_match_id => l_parent_match_id,
4202 x_return_status => l_return_status
4203 );
4204 -- If any errors happen abort API.
4205 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4206 RAISE FND_API.G_EXC_ERROR;
4207 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4208 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4209 END IF;
4210 END IF;
4211 l_debug_info := 'Processing Match: '||iMatch||'('||matchesToProcess_List(iMatch) .transaction_type||')';
4212 INL_LOGGING_PVT.Log_Statement(
4213 p_module_name => g_module_name,
4214 p_procedure_name => l_proc_name,
4215 p_debug_info => l_debug_info
4216 ) ;
4217
4218 INL_LOGGING_PVT.Log_Variable(
4219 p_module_name => g_module_name,
4220 p_procedure_name => l_proc_name,
4221 p_var_name => 'matchesToProcess_List(iMatch).match_int_id',
4222 p_var_value => matchesToProcess_List(iMatch).match_int_id
4223 ) ;
4224 IF matchesToProcess_List(iMatch) .transaction_type <> 'CREATE' THEN
4225 l_debug_info := 'Transaction_type '||matchesToProcess_List(iMatch) .transaction_type||'not supported.';
4226 INL_LOGGING_PVT.Log_Statement(
4227 p_module_name => g_module_name,
4228 p_procedure_name => l_proc_name,
4229 p_debug_info => l_debug_info
4230 ) ;
4231 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4232 ELSE
4233 INSERT INTO inl_matches(
4234 match_id , /* 01 */
4235 match_type_code , /* 02 */
4236 ship_header_id , /* 03 */
4237 from_parent_table_name , /* 04 */
4238 from_parent_table_id , /* 05 */
4239 to_parent_table_name , /* 06 */
4240 to_parent_table_id , /* 07 */
4241 parent_match_id , /* 08 */
4242 matched_qty , /* 09 */
4243 matched_uom_code , /* 10 */
4244 matched_amt , /* 11 */
4245 matched_curr_code , /* 12 */
4246 matched_curr_conversion_type , /* 13 */
4247 matched_curr_conversion_date , /* 14 */
4248 matched_curr_conversion_rate , /* 15 */
4249 adj_already_generated_flag , /* 16 */
4250 replace_estim_qty_flag , /* 17 */
4251 existing_match_info_flag , /* 18 */
4252 charge_line_type_id , /* 19 */
4253 party_id , /* 20 */
4254 party_site_id , /* 21 */
4255 tax_code , /* 22 */
4256 nrec_tax_amt , /* 23 */
4257 tax_amt_included_flag , /* 24 */
4258 match_amount_id , /* 25 */
4259 match_int_id , /* 26 */
4260 program_id , /* 27 */
4261 program_update_date , /* 28 */
4262 program_application_id , /* 29 */
4263 request_id , /* 30 */
4264 created_by , /* 31 */
4265 creation_date , /* 32 */
4266 last_updated_by , /* 33 */
4267 last_update_date , /* 34 */
4268 last_update_login /* 35 */
4269 )
4270 VALUES(
4271 matchesToProcess_List(iMatch).new_match_id , /* 01 */
4272 matchesToProcess_List(iMatch).match_type_code , /* 02 */
4273 l_ship_header_id , /* 03 */
4274 matchesToProcess_List(iMatch).from_parent_table_name , /* 04 */
4275 matchesToProcess_List(iMatch).from_parent_table_id , /* 05 */
4276 l_new_to_parent_table_name , /* 06 */
4277 l_new_to_parent_table_id , /* 07 */
4278 l_parent_match_id , /* 08 */
4279 l_matched_qty , /* 09 */
4280 l_matched_uom_code , /* 10 */
4281 l_matched_amt , /* 11 */
4282 l_matched_curr_code , /* 12 */
4283 l_matched_curr_conversion_type , /* 13 */
4284 l_matched_curr_conversion_date , /* 14 */
4285 l_matched_curr_conversion_rate , /* 15 */
4286 'N' , /* 16 */
4287 matchesToProcess_List(iMatch).replace_estim_qty_flag , /* 17 */
4288 l_existing_match_info_flag , /* 18 */
4289 matchesToProcess_List(iMatch).charge_line_type_id , /* 19 */
4290 matchesToProcess_List(iMatch).party_id , /* 20 */
4291 matchesToProcess_List(iMatch).party_site_id , /* 21 */
4292 matchesToProcess_List(iMatch).tax_code , /* 22 */
4293 l_nrec_tax_amt , /* 23 */
4294 matchesToProcess_List(iMatch).tax_amt_included_flag , /* 24 */
4295 DECODE(matchesToProcess_List(iMatch).match_amount_int_id,
4296 NULL, NULL,
4297 (SELECT ima.match_amount_id
4298 FROM inl_match_amounts ima
4299 WHERE ima.match_amount_int_id =
4300 matchesToProcess_List(iMatch).match_amount_int_id)
4301 ), /* 25 */
4302 matchesToProcess_List(iMatch).match_int_id , /* 26 */
4303 fnd_global.conc_program_id , /* 27 */
4304 SYSDATE , /* 28 */
4305 fnd_global.prog_appl_id , /* 29 */
4306 fnd_global.conc_request_id , /* 30 */
4307 fnd_global.user_id , /* 31 */
4308 SYSDATE , /* 32 */
4309 fnd_global.user_id , /* 33 */
4310 SYSDATE , /* 34 */
4311 fnd_global.login_id /* 35 */
4312 );
4313 -- Set Shipment Header's pending_matching_flag to 'Y'
4314 l_debug_info := 'Set LCM Shipment pending_matching_flag to Y';
4315 INL_LOGGING_PVT.Log_Statement(
4316 p_module_name => g_module_name,
4317 p_procedure_name => l_proc_name,
4318 p_debug_info => l_debug_info
4319 );
4320 -- Set Pending Matching Flag = 'Y' to the current Shipment Header
4321 UPDATE inl_ship_headers sH
4322 SET sH.pending_matching_flag = 'Y',
4323 sH.request_id = fnd_global.conc_request_id,
4324 sH.last_updated_by = fnd_global.user_id,
4325 sH.last_update_date = SYSDATE,
4326 sH.last_update_login = fnd_global.login_id,
4327 sH.program_id = fnd_global.conc_program_id,
4328 sH.program_update_date = SYSDATE,
4329 sH.program_application_id = fnd_global.prog_appl_id
4330 WHERE sH.ship_header_id = l_ship_header_id
4331 ;
4332 END IF;
4333 l_debug_info := 'Set Shipment Line Interface status and imported Ids';
4334 INL_LOGGING_PVT.Log_Statement(
4335 p_module_name => g_module_name,
4336 p_procedure_name => l_proc_name,
4337 p_debug_info => l_debug_info
4338 ) ;
4339 -- Set processing status to COMPLETED for
4340 -- the current and imported Match Line
4341 UPDATE inl_matches_int m
4342 SET m.processing_status_code = 'COMPLETED' ,
4343 m.request_id = fnd_global.conc_request_id,
4344 m.last_updated_by = fnd_global.user_id ,
4345 m.last_update_date = SYSDATE ,
4346 m.last_update_login = fnd_global.login_id ,
4347 m.program_id = fnd_global.conc_program_id,
4348 m.program_update_date = SYSDATE ,
4349 m.program_application_id = fnd_global.prog_appl_id
4350 WHERE m.match_int_id = matchesToProcess_List(iMatch) .match_int_id;
4351 END LOOP;
4352 END IF;
4353 -- Standard End of Procedure/Function Logging
4354 INL_LOGGING_PVT.Log_EndProc(
4355 p_module_name => g_module_name,
4356 p_procedure_name => l_proc_name
4357 );
4358 EXCEPTION
4359 WHEN FND_API.G_EXC_ERROR THEN
4360 -- Standard Expected Error Logging
4361 INL_LOGGING_PVT.Log_ExpecError (
4362 p_module_name => g_module_name,
4363 p_procedure_name => l_proc_name
4364 );
4365 x_return_status := FND_API.G_RET_STS_ERROR;
4366 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4367 -- Standard Unexpected Error Logging
4368 INL_LOGGING_PVT.Log_UnexpecError (
4369 p_module_name => g_module_name,
4370 p_procedure_name => l_proc_name
4371 );
4372 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4373 WHEN OTHERS THEN
4374 -- Standard Unexpected Error Logging
4375 INL_LOGGING_PVT.Log_UnexpecError (
4376 p_module_name => g_module_name,
4377 p_procedure_name => l_proc_name
4378 );
4379 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4380 IF FND_MSG_PUB.Check_Msg_Level(
4381 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4382 ) THEN
4383 FND_MSG_PUB.Add_Exc_Msg(
4384 p_pkg_name => g_pkg_name,
4385 p_procedure_name => l_proc_name
4386 );
4387 END IF;
4388 END Import_Matches;
4389 -- Utility name : Derive_ShipHeaderCols
4390 -- Type : Private
4391 -- Function : Get and Set Shipment Header values before
4392 -- the first set of validations.
4393 --
4394 -- Pre-reqs : None
4395 -- Parameters :
4396 -- IN : p_ship_header_int_id IN NUMBER
4397 -- p_organization_id IN NUMBER
4398 --
4399 -- OUT : x_return_status OUT NOCOPY VARCHAR2
4400 --
4401 -- Version : Current version 1.0
4402 --
4403 -- Notes :
4404 PROCEDURE Derive_ShipHeaderCols(
4405 p_ship_header_int_id IN NUMBER,
4406 p_organization_id IN NUMBER,
4407 x_return_status OUT NOCOPY VARCHAR2
4408 ) IS
4409 l_proc_name CONSTANT VARCHAR2(100) := 'Derive_ShipHeaderCols';
4410 l_msg_count NUMBER;
4411 l_msg_data VARCHAR2(2000) ;
4412 l_debug_info VARCHAR2(200) ;
4413 l_updated_flag VARCHAR2(1) ;
4414 l_return_status VARCHAR2(1) ;
4415 BEGIN
4416 -- Standard Beginning of Procedure/Function Logging
4417 INL_LOGGING_PVT.Log_BeginProc(
4418 p_module_name => g_module_name,
4419 p_procedure_name => l_proc_name
4420 ) ;
4421 -- Initialize API return status to success
4422 x_return_status := FND_API.G_RET_STS_SUCCESS;
4423 UPDATE inl_ship_headers_int sh
4424 SET sh.location_id = (
4425 SELECT hou.location_id
4426 FROM hr_organization_units hou,
4427 hr_locations hl
4428 WHERE hl.location_id = hou.location_id
4429 AND hl.receiving_site_flag = 'Y'
4430 AND hou.organization_id = sh.organization_id
4431 )
4432 WHERE sh.ship_header_int_id = p_ship_header_int_id
4433 AND sh.location_id IS NULL;
4434 -- Standard End of Procedure/Function Logging
4435 INL_LOGGING_PVT.Log_EndProc(
4436 p_module_name => g_module_name,
4437 p_procedure_name => l_proc_name
4438 );
4439 EXCEPTION
4440 WHEN FND_API.G_EXC_ERROR THEN
4441 -- Standard Expected Error Logging
4442 INL_LOGGING_PVT.Log_ExpecError (
4443 p_module_name => g_module_name,
4444 p_procedure_name => l_proc_name
4445 );
4446 x_return_status := FND_API.G_RET_STS_ERROR;
4447 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4448 -- Standard Unexpected Error Logging
4449 INL_LOGGING_PVT.Log_UnexpecError (
4450 p_module_name => g_module_name,
4451 p_procedure_name => l_proc_name
4452 );
4453 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4454 WHEN OTHERS THEN
4455 -- Standard Unexpected Error Logging
4456 INL_LOGGING_PVT.Log_UnexpecError (
4457 p_module_name => g_module_name,
4458 p_procedure_name => l_proc_name
4459 );
4460 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4461 IF FND_MSG_PUB.Check_Msg_Level(
4462 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4463 ) THEN
4464 FND_MSG_PUB.Add_Exc_Msg(
4465 p_pkg_name => g_pkg_name,
4466 p_procedure_name => l_proc_name
4467 );
4468 END IF;
4469 END Derive_ShipHeaderCols;
4470 -- Utility name : Derive_ShipLineCols
4471 -- Type : Private
4472 -- Function : Get and Set Shipment Line values before
4473 -- the first set of validations.
4474 --
4475 -- Pre-reqs : None
4476 -- Parameters :
4477 -- IN : p_ship_header_int_id IN NUMBER
4478 -- p_organization_id IN NUMBER
4479 --
4480 -- OUT : x_return_status OUT NOCOPY VARCHAR2
4481 --
4482 -- Version : Current version 1.0
4483 --
4484 -- Notes :
4485 PROCEDURE Derive_ShipLineCols(
4486 p_ship_header_int_id IN NUMBER,
4487 p_organization_id IN NUMBER,
4488 x_return_status OUT NOCOPY VARCHAR2
4489 ) IS
4490 l_proc_name CONSTANT VARCHAR2(100) := 'Derive_ShipLineCols';
4491 l_msg_count NUMBER;
4492 l_msg_data VARCHAR2(2000) ;
4493 l_debug_info VARCHAR2(200) ;
4494 l_updated_flag VARCHAR2(1) ;
4495 l_return_status VARCHAR2(1) ;
4496 l_1ary_uom_code VARCHAR2(3) ;
4497 l_1ary_qty NUMBER;
4498 l_2ary_uom_code VARCHAR2(3) ;
4499 l_2ary_qty NUMBER;
4500 CURSOR toDeriveLines(p_ship_header_int_id NUMBER)
4501 IS
4502 SELECT ship_line_int_id ,
4503 party_id ,
4504 party_number ,
4505 party_site_id ,
4506 party_site_number ,
4507 source_organization_id ,
4508 source_organization_code ,
4509 ship_line_type_id ,
4510 ship_line_type_code ,
4511 inventory_item_id ,
4512 txn_qty ,
4513 txn_uom_code ,
4514 txn_unit_price ,
4515 primary_qty ,
4516 primary_uom_code ,
4517 primary_unit_price ,
4518 secondary_qty ,
4519 secondary_uom_code ,
4520 secondary_unit_price ,
4521 ship_from_party_id ,
4522 ship_from_party_number ,
4523 ship_from_party_site_id ,
4524 ship_from_party_site_number,
4525 ship_to_organization_id ,
4526 ship_to_organization_code ,
4527 ship_to_location_id ,
4528 ship_to_location_code ,
4529 bill_from_party_id ,
4530 bill_from_party_number ,
4531 bill_from_party_site_id ,
4532 bill_from_party_site_number,
4533 bill_to_organization_id ,
4534 bill_to_organization_code ,
4535 bill_to_location_id ,
4536 bill_to_location_code ,
4537 poa_party_id ,
4538 poa_party_number ,
4539 poa_party_site_id ,
4540 poa_party_site_number ,
4541 poo_organization_id ,
4542 poo_to_organization_code ,
4543 poo_location_id ,
4544 poo_location_code
4545 FROM inl_ship_lines_int
4546 WHERE ship_header_int_id = P_ship_header_int_id
4547 AND processing_status_code = 'PENDING'; --'ERROR' IN CASE OF FAIL
4548 TYPE toDeriveLines_List_Type IS TABLE OF toDeriveLines%ROWTYPE;
4549 toDeriveLines_List toDeriveLines_List_Type ;
4550 BEGIN
4551 -- Standard Beginning of Procedure/Function Logging
4552 INL_LOGGING_PVT.Log_BeginProc(
4553 p_module_name => g_module_name,
4554 p_procedure_name => l_proc_name
4555 ) ;
4556 -- Initialize API return status to success
4557 x_return_status := FND_API.G_RET_STS_SUCCESS;
4558 l_debug_info := 'Open and fetch toDeriveLines cursor';
4559 INL_LOGGING_PVT.Log_Statement(
4560 p_module_name => g_module_name,
4561 p_procedure_name => l_proc_name,
4562 p_debug_info => l_debug_info
4563 ) ;
4564 OPEN toDeriveLines(p_ship_header_int_id) ;
4565 FETCH toDeriveLines BULK COLLECT INTO toDeriveLines_list;
4566
4567 CLOSE toDeriveLines;
4568 IF NVL(toDeriveLines_list.LAST, 0) > 0 THEN
4569 FOR i IN toDeriveLines_list.FIRST .. toDeriveLines_list.LAST
4570 LOOP
4571 l_updated_flag := 'N';
4572 -- Examine the line
4573 l_debug_info := 'Examine the line ID '||toDeriveLines_list(i) .ship_line_int_id;
4574 INL_LOGGING_PVT.Log_Statement(
4575 p_module_name => g_module_name,
4576 p_procedure_name => l_proc_name,
4577 p_debug_info => l_debug_info
4578 ) ;
4579 -- Derive Primary and Secondary UOM information
4580 INL_SHIPMENT_PVT.Get_1ary2aryQty(p_api_version => 1.0,
4581 p_init_msg_list => FND_API.G_FALSE,
4582 p_commit => FND_API.G_FALSE,
4583 p_inventory_item_id => toDeriveLines_list(i) .inventory_item_id,
4584 p_organization_id => p_organization_id,
4585 p_uom_code => toDeriveLines_list(i) .txn_uom_code,
4586 p_qty => toDeriveLines_list(i) .txn_qty,
4587 x_1ary_uom_code => l_1ary_uom_code,
4588 x_1ary_qty => l_1ary_qty,
4589 x_2ary_uom_code => l_2ary_uom_code,
4590 x_2ary_qty => l_2ary_qty,
4591 x_return_status => l_return_status,
4592 x_msg_count => l_msg_count,
4593 x_msg_data => l_msg_data) ;
4594 -- If any errors happen abort the process.
4595 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4596 RAISE FND_API.G_EXC_ERROR;
4597 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4598 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4599 END IF;
4600 IF l_1ary_uom_code IS NOT NULL THEN
4601 l_updated_flag := 'Y';
4602 toDeriveLines_list(i) .primary_qty := l_1ary_qty;
4603 toDeriveLines_list(i) .primary_uom_code := l_1ary_uom_code;
4604 toDeriveLines_list(i) .primary_unit_price :=(toDeriveLines_list(i) .txn_qty * toDeriveLines_list(i) .txn_unit_price) / l_1ary_qty;
4605 END IF;
4606 IF l_2ary_uom_code IS NOT NULL THEN
4607 l_updated_flag := 'Y';
4608 toDeriveLines_list(i) .secondary_qty := l_2ary_qty;
4609 toDeriveLines_list(i) .secondary_uom_code := l_2ary_uom_code;
4610 toDeriveLines_list(i) .secondary_unit_price :=(toDeriveLines_list(i) .txn_qty * toDeriveLines_list(i) .txn_unit_price) / l_2ary_qty;
4611 END IF;
4612 IF l_updated_flag = 'Y' THEN
4613 UPDATE inl_ship_lines_int
4614 SET party_id = toDeriveLines_list(i) .party_id ,
4615 party_site_id = toDeriveLines_list(i) .party_site_id ,
4616 source_organization_id = toDeriveLines_list(i) .source_organization_id ,
4617 ship_line_type_id = toDeriveLines_list(i) .ship_line_type_id ,
4618 inventory_item_id = toDeriveLines_list(i) .inventory_item_id ,
4619 primary_qty = toDeriveLines_list(i) .primary_qty ,
4620 primary_uom_code = toDeriveLines_list(i) .primary_uom_code ,
4621 primary_unit_price = toDeriveLines_list(i) .primary_unit_price ,
4622 secondary_qty = toDeriveLines_list(i) .secondary_qty ,
4623 secondary_uom_code = toDeriveLines_list(i) .secondary_uom_code ,
4624 secondary_unit_price = toDeriveLines_list(i) .secondary_unit_price ,
4625 ship_from_party_id = toDeriveLines_list(i) .ship_from_party_id ,
4626 ship_from_party_site_id = toDeriveLines_list(i) .ship_from_party_site_id,
4627 ship_to_organization_id = toDeriveLines_list(i) .ship_to_organization_id,
4628 ship_to_location_id = toDeriveLines_list(i) .ship_to_location_id ,
4629 bill_from_party_id = toDeriveLines_list(i) .bill_from_party_id ,
4630 bill_from_party_site_id = toDeriveLines_list(i) .bill_from_party_site_id,
4631 bill_to_organization_id = toDeriveLines_list(i) .bill_to_organization_id,
4632 bill_to_location_id = toDeriveLines_list(i) .bill_to_location_id ,
4633 poa_party_id = toDeriveLines_list(i) .poa_party_id ,
4634 poa_party_site_id = toDeriveLines_list(i) .poa_party_site_id ,
4635 poo_organization_id = toDeriveLines_list(i) .poo_organization_id ,
4636 poo_location_id = toDeriveLines_list(i) .poo_location_id ,
4637 request_id = fnd_global.conc_request_id ,
4638 last_updated_by = fnd_global.user_id ,
4639 last_update_date = SYSDATE ,
4640 last_update_login = fnd_global.login_id ,
4641 program_id = fnd_global.conc_program_id ,
4642 program_update_date = SYSDATE ,
4643 program_application_id = fnd_global.prog_appl_id
4644 WHERE ship_line_int_id = toDeriveLines_list(i) .ship_line_int_id;
4645 END IF;
4646 END LOOP;
4647 END IF;
4648 -- Standard End of Procedure/Function Logging
4649 INL_LOGGING_PVT.Log_EndProc(
4650 p_module_name => g_module_name,
4651 p_procedure_name => l_proc_name
4652 );
4653 EXCEPTION
4654 WHEN FND_API.G_EXC_ERROR THEN
4655 -- Standard Expected Error Logging
4656 INL_LOGGING_PVT.Log_ExpecError (
4657 p_module_name => g_module_name,
4658 p_procedure_name => l_proc_name
4659 );
4660 x_return_status := FND_API.G_RET_STS_ERROR;
4661 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4662 -- Standard Unexpected Error Logging
4663 INL_LOGGING_PVT.Log_UnexpecError (
4664 p_module_name => g_module_name,
4665 p_procedure_name => l_proc_name
4666 );
4667 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4668 WHEN OTHERS THEN
4669 -- Standard Unexpected Error Logging
4670 INL_LOGGING_PVT.Log_UnexpecError (
4671 p_module_name => g_module_name,
4672 p_procedure_name => l_proc_name
4673 );
4674 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4675 IF FND_MSG_PUB.Check_Msg_Level(
4676 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4677 ) THEN
4678 FND_MSG_PUB.Add_Exc_Msg(
4679 p_pkg_name => g_pkg_name,
4680 p_procedure_name => l_proc_name
4681 );
4682 END IF;
4683 END Derive_ShipLineCols;
4684 -- Utility name : Derive_MatchCols
4685 -- Type : Private
4686 -- Function : Get and Set Match Line values
4687 -- before the first set of validations.
4688 --
4689 -- Pre-reqs : None
4690 -- Parameters :
4691 -- IN : p_party_number VARCHAR2
4692 -- p_party_site_number VARCHAR2
4693 --
4694 --
4695 -- IN OUT : p_party_id NUMBER
4696 -- p_party_site_id NUMBER
4697 --
4698 -- OUT : x_return_status VARCHAR2
4699 --
4700 -- Version : Current version 1.0
4701 --
4702 -- Notes :
4703 PROCEDURE Derive_MatchCols(
4704 p_party_number IN VARCHAR2,
4705 p_party_site_number IN VARCHAR2,
4706 p_match_type_code IN VARCHAR2,
4707 p_to_parent_table_name IN VARCHAR2,
4708 p_to_parent_table_id IN NUMBER,
4709 p_party_id IN OUT NOCOPY NUMBER,
4710 p_party_site_id IN OUT NOCOPY NUMBER,
4711 p_parent_match_id IN OUT NOCOPY NUMBER,
4712 x_return_status OUT NOCOPY VARCHAR2
4713 ) IS
4714 l_proc_name CONSTANT VARCHAR2(100) := 'Derive_MatchCols';
4715 l_debug_info VARCHAR2(200) ;
4716 l_return_status VARCHAR2(1) ;
4717 BEGIN
4718
4719 -- Standard Beginning of Procedure/Function Logging
4720 INL_LOGGING_PVT.Log_BeginProc(
4721 p_module_name => g_module_name,
4722 p_procedure_name => l_proc_name
4723 ) ;
4724 -- Initialize API return status to success
4725 x_return_status := FND_API.G_RET_STS_SUCCESS;
4726 l_debug_info := 'Derive values for Match Lines';
4727 INL_LOGGING_PVT.Log_Statement(
4728 p_module_name => g_module_name,
4729 p_procedure_name => l_proc_name,
4730 p_debug_info => l_debug_info
4731 ) ;
4732 IF p_party_number IS NOT NULL AND p_party_id IS NULL THEN
4733 p_party_id := Derive_PartyID(
4734 p_party_number => p_party_number,
4735 x_return_status => l_return_status
4736 )
4737 ;
4738 -- If any errors happen abort the process.
4739 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4740 RAISE FND_API.G_EXC_ERROR;
4741 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4742 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4743 END IF;
4744 END IF;
4745 IF p_party_site_number IS NOT NULL AND p_party_site_id IS NULL THEN
4746 p_party_site_id :=
4747 Derive_PartySiteID(p_party_site_number => p_party_site_number,
4748 x_return_status => l_return_status
4749 )
4750 ;
4751 -- If any errors happen abort the process.
4752 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4753 RAISE FND_API.G_EXC_ERROR;
4754 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4755 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4756 END IF;
4757 END IF;
4758
4759 IF p_parent_match_id IS NULL
4760 AND p_match_type_code = 'CORRECTION'
4761 THEN
4762 SELECT MIN(match_id)
4763 INTO p_parent_match_id
4764 FROM inl_matches
4765 WHERE from_parent_table_id = p_to_parent_table_id
4766 AND from_parent_table_name = p_to_parent_table_name
4767 ;
4768 END IF;
4769
4770 -- Standard End of Procedure/Function Logging
4771 INL_LOGGING_PVT.Log_EndProc(
4772 p_module_name => g_module_name,
4773 p_procedure_name => l_proc_name
4774 );
4775 EXCEPTION
4776 WHEN FND_API.G_EXC_ERROR THEN
4777 -- Standard Expected Error Logging
4778 INL_LOGGING_PVT.Log_ExpecError (
4779 p_module_name => g_module_name,
4780 p_procedure_name => l_proc_name
4781 );
4782 x_return_status := FND_API.G_RET_STS_ERROR;
4783 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4784 -- Standard Unexpected Error Logging
4785 INL_LOGGING_PVT.Log_UnexpecError (
4786 p_module_name => g_module_name,
4787 p_procedure_name => l_proc_name
4788 );
4789 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4790 WHEN OTHERS THEN
4791 -- Standard Unexpected Error Logging
4792 INL_LOGGING_PVT.Log_UnexpecError (
4793 p_module_name => g_module_name,
4794 p_procedure_name => l_proc_name
4795 );
4796 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4797 IF FND_MSG_PUB.Check_Msg_Level(
4798 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4799 ) THEN
4800 FND_MSG_PUB.Add_Exc_Msg(
4801 p_pkg_name => g_pkg_name,
4802 p_procedure_name => l_proc_name
4803 );
4804 END IF;
4805 END Derive_MatchCols;
4806 -- Funct name : Validate_MatchChLnTpID
4807 -- Type : Private
4808 -- Function : Validate a given Charge Line Type that was used
4809 -- by the Matching Process
4810 --
4811 -- Pre-reqs : None
4812 -- Parameters :
4813 -- IN : p_match_int_id IN NUMBER
4814 -- p_match_type_code IN VARCHAR2
4815 -- p_parent_match_type_code IN VARCHAR2
4816 -- p_charge_line_type_id IN NUMBER
4817 -- p_match_amount_int_id IN NUMBER
4818 --
4819 -- OUT : x_return_status OUT NOCOPY VARCHAR2
4820 --
4821 -- Version : Current version 1.0
4822 --
4823 -- Notes :
4824 FUNCTION Validate_MatchChLnTpID(
4825 p_match_int_id IN NUMBER,
4826 p_match_type_code IN VARCHAR2,
4827 p_parent_match_type_code IN VARCHAR2,
4828 p_charge_line_type_id IN NUMBER,
4829 p_match_amount_int_id IN NUMBER,
4830 x_return_status OUT NOCOPY VARCHAR2
4831 ) RETURN BOOLEAN IS
4832 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchChLnTpID';
4833 l_debug_info VARCHAR2(400) ;
4834 l_return_status VARCHAR2(1) ;
4835 l_result VARCHAR2(1) := FND_API.G_TRUE;
4836 BEGIN
4837 -- Standard Beginning of Procedure/Function Logging
4838 INL_LOGGING_PVT.Log_BeginProc(
4839 p_module_name => g_module_name,
4840 p_procedure_name => l_func_name
4841 ) ;
4842 -- Initialize API return status to success
4843 x_return_status := FND_API.G_RET_STS_SUCCESS;
4844 l_debug_info := 'Check if CHARGE_LINE_TYPE_ID is valid';
4845 INL_LOGGING_PVT.Log_Statement(
4846 p_module_name => g_module_name,
4847 p_procedure_name => l_func_name,
4848 p_debug_info => l_debug_info
4849 ) ;
4850 IF NVL(p_parent_match_type_code, p_match_type_code) = 'CHARGE' THEN
4851 IF p_charge_line_type_id IS NULL THEN
4852 l_result := FND_API.G_FALSE;
4853 -- Add a line into inl_ship_errors
4854 Handle_InterfError(
4855 p_parent_table_name => 'INL_MATCHES_INT',
4856 p_parent_table_id => p_match_int_id,
4857 p_column_name => 'CHARGE_LINE_TYPE_ID',
4858 p_column_value => p_charge_line_type_id,
4859 p_error_message_name => 'INL_ERR_OI_MAT_CH_LN_TP_ID_N',
4860 p_token1_name => 'MATCH_INT_ID',
4861 p_token1_value => p_match_int_id,
4862 x_return_status => l_return_status
4863 ) ;
4864 -- If unexpected errors happen abort
4865 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4866 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4867 END IF;
4868 END IF;
4869 ELSE
4870 IF p_charge_line_type_id IS NOT NULL
4871 AND p_match_amount_int_id IS NULL
4872 THEN
4873 l_result := FND_API.G_FALSE;
4874 -- Add a line into inl_ship_errors
4875 Handle_InterfError(
4876 p_parent_table_name => 'INL_MATCHES_INT',
4877 p_parent_table_id => p_match_int_id,
4878 p_column_name => 'CHARGE_LINE_TYPE_ID',
4879 p_column_value => p_charge_line_type_id,
4880 p_error_message_name => 'INL_ERR_OI_MAT_CH_LN_TP_ID_NN',
4881 p_token1_name => 'MATCH_INT_ID',
4882 p_token1_value => p_match_int_id,
4883 x_return_status => l_return_status
4884 ) ;
4885 -- If unexpected errors happen abort
4886
4887 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4888 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4889 END IF;
4890 END IF;
4891 END IF;
4892 -- Standard End of Procedure/Function Logging
4893 INL_LOGGING_PVT.Log_EndProc(
4894 p_module_name => g_module_name,
4895 p_procedure_name => l_func_name
4896 );
4897 RETURN FND_API.to_boolean(l_result) ;
4898 EXCEPTION
4899 WHEN FND_API.G_EXC_ERROR THEN
4900 -- Standard Expected Error Logging
4901 INL_LOGGING_PVT.Log_ExpecError (
4902 p_module_name => g_module_name,
4903 p_procedure_name => l_func_name
4904 );
4905 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
4906 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4907 -- Standard Unexpected Error Logging
4908 INL_LOGGING_PVT.Log_UnexpecError (
4909 p_module_name => g_module_name,
4910 p_procedure_name => l_func_name
4911 );
4912 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
4913 WHEN OTHERS THEN
4914 -- Standard Unexpected Error Logging
4915 INL_LOGGING_PVT.Log_UnexpecError (
4916 p_module_name => g_module_name,
4917 p_procedure_name => l_func_name
4918 );
4919 IF FND_MSG_PUB.Check_Msg_Level(
4920 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4921 ) THEN
4922 FND_MSG_PUB.Add_Exc_Msg(
4923 p_pkg_name => g_pkg_name,
4924 p_procedure_name => l_func_name
4925 );
4926 END IF;
4927 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
4928 END Validate_MatchChLnTpID;
4929 -- Funct name : Validate_MatchFlags
4930 -- Type : Private
4931 -- Function : Validate Matching Flags
4932 --
4933 -- Pre-reqs : None
4934 -- Parameters :
4935 -- IN : p_match_int_id IN NUMBER
4936 -- p_match_type_code IN VARCHAR2
4937 -- p_parent_match_type_code IN VARCHAR2
4938 -- p_replace_estim_qty_flag IN VARCHAR2
4939 -- p_existing_match_info_flag IN VARCHAR2
4940 --
4941 -- OUT : x_return_status OUT NOCOPY VARCHAR2
4942 --
4943 -- Version : Current version 1.0
4944 --
4945 -- Notes :
4946 FUNCTION Validate_MatchFlags(
4947 p_match_int_id IN NUMBER,
4948 p_match_type_code IN VARCHAR2,
4949 p_parent_match_type_code IN VARCHAR2,
4950 p_replace_estim_qty_flag IN VARCHAR2,
4951 p_existing_match_info_flag IN VARCHAR2,
4952 x_return_status OUT NOCOPY VARCHAR2
4953 ) RETURN BOOLEAN IS
4954 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchFlags';
4955 l_debug_info VARCHAR2(400) ;
4956 l_return_status VARCHAR2(1) ;
4957 l_result VARCHAR2(1) := FND_API.G_TRUE;
4958 BEGIN
4959 -- Standard Beginning of Procedure/Function Logging
4960 INL_LOGGING_PVT.Log_BeginProc(
4961 p_module_name => g_module_name,
4962 p_procedure_name => l_func_name
4963 ) ;
4964 -- Initialize API return status to success
4965 x_return_status := FND_API.G_RET_STS_SUCCESS;
4966 l_debug_info := 'Check if replace_estim_qty_flag = "Y" and it is not about an ITEM match';
4967 INL_LOGGING_PVT.Log_Statement(
4968 p_module_name => g_module_name,
4969 p_procedure_name => l_func_name,
4970 p_debug_info => l_debug_info
4971 ) ;
4972 IF p_replace_estim_qty_flag = 'Y' THEN
4973 IF NVL(p_parent_match_type_code, p_match_type_code) <> 'ITEM' THEN
4974 l_result := FND_API.G_FALSE;
4975 -- Add a line into inl_ship_errors
4976 Handle_InterfError(
4977 p_parent_table_name => 'INL_MATCHES_INT',
4978 p_parent_table_id => p_match_int_id,
4979 p_column_name => 'REPLACE_ESTIM_QTY_FLAG',
4980 p_column_value => p_replace_estim_qty_flag,
4981 p_error_message_name => 'INL_ERR_OI_CHK_RPL_EST_QT_FLAG',
4982 p_token1_name => 'MATCH_INT_ID',
4983 p_token1_value => p_match_int_id,
4984 x_return_status => l_return_status) ;
4985 -- If unexpected errors happen abort
4986 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4987 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4988 END IF;
4989 END IF;
4990 END IF;
4991 -- Standard End of Procedure/Function Logging
4992 INL_LOGGING_PVT.Log_EndProc(
4993 p_module_name => g_module_name,
4994 p_procedure_name => l_func_name
4995 );
4996 RETURN FND_API.to_boolean(l_result) ;
4997 EXCEPTION
4998 WHEN FND_API.G_EXC_ERROR THEN
4999 -- Standard Expected Error Logging
5000 INL_LOGGING_PVT.Log_ExpecError (
5001 p_module_name => g_module_name,
5002 p_procedure_name => l_func_name
5003 );
5004 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5005 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5006 -- Standard Unexpected Error Logging
5007 INL_LOGGING_PVT.Log_UnexpecError (
5008 p_module_name => g_module_name,
5009 p_procedure_name => l_func_name
5010 );
5011 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5012 WHEN OTHERS THEN
5013 -- Standard Unexpected Error Logging
5014 INL_LOGGING_PVT.Log_UnexpecError (
5015 p_module_name => g_module_name,
5016 p_procedure_name => l_func_name
5017 );
5018 IF FND_MSG_PUB.Check_Msg_Level(
5019 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5020 ) THEN
5021 FND_MSG_PUB.Add_Exc_Msg(
5022 p_pkg_name => g_pkg_name,
5023 p_procedure_name => l_func_name
5024 );
5025 END IF;
5026 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5027 END Validate_MatchFlags;
5028 -- Funct name : Validate_MatchQty
5029 -- Type : Private
5030 -- Function : Validate a given Match Quantity
5031 --
5032 -- Pre-reqs : None
5033 -- Parameters :
5034 -- IN : p_match_int_id IN NUMBER
5035 -- p_corrected_match_id IN NUMBER
5036 -- p_updated_match_id IN NUMBER
5037 -- p_ship_line_id IN NUMBER
5038 -- p_matched_qty IN NUMBER
5039 -- p_matched_uom_code IN VARCHAR2
5040 -- p_replace_estim_qty_flag IN VARCHAR2
5041 -- p_match_type_code IN VARCHAR2
5042 --
5043 -- OUT : x_return_status IN OUT NOCOPY VARCHAR2
5044 --
5045 -- Version : Current version 1.0
5046 --
5047 -- Notes :
5048 FUNCTION Validate_MatchQty(
5049 p_match_int_id IN NUMBER,
5050 p_corrected_match_id IN NUMBER,
5051 p_updated_match_id IN NUMBER,
5052 p_ship_line_id IN NUMBER,
5053 p_matched_qty IN NUMBER,
5054 p_matched_uom_code IN VARCHAR2,
5055 p_replace_estim_qty_flag IN VARCHAR2,
5056 p_match_type_code IN VARCHAR2,
5057 x_return_status OUT NOCOPY VARCHAR2
5058 ) RETURN BOOLEAN IS
5059 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchQty';
5060 l_debug_info VARCHAR2(400) ;
5061 l_return_status VARCHAR2(1) ;
5062 l_result VARCHAR2(1) := FND_API.G_TRUE;
5063 CURSOR processed_matches
5064 IS
5065 SELECT m1.match_id,
5066 m1.matched_qty ,
5067 m1.matched_uom_code
5068 FROM inl_corr_matches_v m1
5069 WHERE m1.to_parent_table_name = 'INL_SHIP_LINES'
5070 AND m1.to_parent_table_id = p_ship_line_id
5071 AND m1.match_type_code = 'ITEM'
5072 AND m1.replace_estim_qty_flag = 'N'
5073 -- In case of resubmit the same actual value more than once, the
5074 -- new line is created as existing_match_info_flag = 'Y'.
5075 -- For checking purposes, it will consider only the latest record
5076 AND m1.match_id IN (SELECT MAX(m2.match_id)
5077 FROM inl_corr_matches_v m2
5078 WHERE m2.to_parent_table_name = m1.to_parent_table_name
5079 AND m2.to_parent_table_id = m1.to_parent_table_id
5080 AND m2.from_parent_table_name = m1.from_parent_table_name
5081 AND m2.from_parent_table_id = m1.from_parent_table_id
5082 AND m2.match_type_code = 'ITEM'
5083 AND m2.replace_estim_qty_flag = 'N'
5084 )
5085 ;
5086
5087 TYPE processed_matches_List_Type IS TABLE OF processed_matches%ROWTYPE;
5088 processed_matches_List processed_matches_List_Type;
5089 CURSOR OI_matches
5090 IS
5091 SELECT m1.transaction_type,
5092 m1.match_type_code ,
5093 m1.match_int_id ,
5094 m1.matched_qty ,
5095 m1.matched_uom_code ,
5096 m1.replace_estim_qty_flag
5097 FROM inl_matches_int m1
5098 WHERE m1.to_parent_table_name = 'INL_SHIP_LINES'
5099 AND m1.to_parent_table_id = p_ship_line_id
5100 AND m1.match_int_id <> NVL(p_updated_match_id, 0)
5101 AND m1.processing_status_code = 'RUNNING'
5102 ORDER BY m1.match_int_id
5103 ;
5104
5105 TYPE OI_matches_List_Type IS TABLE OF OI_matches%ROWTYPE;
5106 OI_matches_List OI_matches_List_Type;
5107 l_ship_header_id NUMBER;
5108 l_ship_line_num NUMBER;
5109 l_ship_line_group_id NUMBER;
5110 l_qty NUMBER;
5111 l_actual_qty NUMBER := 0;
5112 l_aux_qty NUMBER;
5113 l_match_qty NUMBER;
5114 l_UOM_code VARCHAR2(3) ;
5115 l_organization_id NUMBER;
5116 l_inventory_item_id NUMBER;
5117 l_matches VARCHAR2(20000);
5118 l_unproc_actual_qty NUMBER;
5119 l_unproc_UOM_code VARCHAR2(3);
5120 l_unproc_match_id NUMBER;
5121 OI_matches_qty NUMBER;
5122 OI_matches_UOM_code VARCHAR2(3);
5123 OI_match_type_code VARCHAR2(30);
5124 BEGIN
5125 -- Standard Beginning of Procedure/Function Logging
5126 INL_LOGGING_PVT.Log_BeginProc(
5127 p_module_name => g_module_name,
5128 p_procedure_name => l_func_name
5129 ) ;
5130 -- Initialize API return status to success
5131 x_return_status := FND_API.G_RET_STS_SUCCESS;
5132 -- Get ship_header_id and the ship_line_num from Shipment Lines table
5133 -- to be used as criteria in the search for estimated values(Adjustment View)
5134 l_debug_info := 'Getting from ADJ View the total QTY';
5135 INL_LOGGING_PVT.Log_Statement(
5136 p_module_name => g_module_name,
5137 p_procedure_name => l_func_name,
5138 p_debug_info => l_debug_info
5139 ) ;
5140 SELECT ship_header_id,
5141 ship_line_num ,
5142 inventory_item_id ,
5143 ship_line_group_id
5144 INTO l_ship_header_id,
5145 l_ship_line_num ,
5146 l_inventory_item_id ,
5147 l_ship_line_group_id
5148 FROM inl_ship_lines sl
5149 WHERE ship_line_id = p_ship_line_id;
5150 -- Get Organization_Id for UOM conversion purpose
5151 SELECT organization_id
5152 INTO l_organization_id
5153 FROM inl_ship_headers
5154 WHERE ship_header_id = l_ship_header_id;
5155
5156 l_debug_info := 'Get from Adjustment View the TXN_QTY and TXN_UOM_CODE';
5157 INL_LOGGING_PVT.Log_Statement(
5158 p_module_name => g_module_name,
5159 p_procedure_name => l_func_name,
5160 p_debug_info => l_debug_info
5161 ) ;
5162 SELECT txn_qty,
5163 txn_uom_code
5164 INTO l_qty,
5165 l_uom_code
5166 FROM inl_adj_ship_lines_v sl
5167 WHERE sl.ship_header_id = l_ship_header_id
5168 AND sl.ship_line_group_id = l_ship_line_group_id
5169 AND sl.ship_line_num = l_ship_line_num;
5170
5171 INL_LOGGING_PVT.Log_Variable(
5172 p_module_name => g_module_name,
5173 p_procedure_name => l_func_name,
5174 p_var_name => 'l_qty',
5175 p_var_value => l_qty
5176 ) ;
5177 INL_LOGGING_PVT.Log_Variable(
5178 p_module_name => g_module_name,
5179 p_procedure_name => l_func_name,
5180 p_var_name => 'l_UOM_code',
5181 p_var_value => l_UOM_code
5182 ) ;
5183 -- Check if there is any match line as
5184 -- replace_estim_qty_flag = 'Y' and adj_already_generated_flag = 'N'
5185 -- In this case it will affect the estimated quantity when processed
5186 l_debug_info := 'Get values from unprocessed matches';
5187 INL_LOGGING_PVT.Log_Statement(
5188 p_module_name => g_module_name,
5189 p_procedure_name => l_func_name,
5190 p_debug_info => l_debug_info
5191 ) ;
5192 BEGIN
5193 SELECT m1.matched_qty,
5194 m1.matched_uom_code,
5195 m1.match_id
5196 INTO l_unproc_actual_qty,
5197 l_unproc_uom_code,
5198 l_unproc_match_id
5199 FROM inl_corr_matches_v m1
5200 WHERE m1.to_parent_table_name = 'INL_SHIP_LINES'
5201 AND m1.to_parent_table_id = p_ship_line_id
5202 AND m1.match_type_code = 'ITEM'
5203 AND m1.replace_estim_qty_flag = 'Y'
5204 AND m1.adj_already_generated_flag = 'N'
5205 -- For checking purposes, it will consider only
5206 -- the latest and not processed record
5207 AND m1.match_id IN (SELECT MAX(m2.match_id)
5208 FROM inl_corr_matches_v m2
5209 WHERE m2.to_parent_table_name = m1.to_parent_table_name
5210 AND m2.to_parent_table_id = m1.to_parent_table_id
5211 AND m2.match_type_code = 'ITEM'
5212 AND m2.replace_estim_qty_flag = 'Y'
5213 AND m2.adj_already_generated_flag = 'N'
5214 )
5215 ;
5216 l_qty := l_unproc_actual_qty;
5217 l_UOM_code := l_unproc_UOM_code;
5218 l_debug_info := 'Unprocessed value as replace_estim_qty_flag = Y:';
5219 INL_LOGGING_PVT.Log_Statement(
5220 p_module_name => g_module_name,
5221 p_procedure_name => l_func_name,
5222 p_debug_info => l_debug_info
5223 ) ;
5224 INL_LOGGING_PVT.Log_Variable(
5225 p_module_name => g_module_name,
5226 p_procedure_name => l_func_name,
5227 p_var_name => 'l_qty',
5228 p_var_value => l_qty
5229 ) ;
5230 INL_LOGGING_PVT.Log_Variable(
5231 p_module_name => g_module_name,
5232 p_procedure_name => l_func_name,
5233 p_var_name => 'l_uom_code',
5234 p_var_value => l_uom_code
5235 ) ;
5236 IF p_updated_match_id = l_unproc_match_id THEN
5237 l_qty := p_matched_qty;
5238 l_UOM_code := p_matched_uom_code;
5239 l_debug_info := 'Unprocessed value will be updated by the current record(replace_estim_qty_flag = Y):';
5240 INL_LOGGING_PVT.Log_Statement(
5241 p_module_name => g_module_name,
5242 p_procedure_name => l_func_name,
5243 p_debug_info => l_debug_info
5244 ) ;
5245 INL_LOGGING_PVT.Log_Variable(
5246 p_module_name => g_module_name,
5247 p_procedure_name => l_func_name,
5248 p_var_name => 'l_qty',
5249 p_var_value => l_qty
5250 ) ;
5251 INL_LOGGING_PVT.Log_Variable(
5252 p_module_name => g_module_name,
5253 p_procedure_name => l_func_name,
5254 p_var_name => 'l_UOM_code',
5255 p_var_value => l_UOM_code
5256 ) ;
5257 END IF;
5258 EXCEPTION
5259 WHEN NO_DATA_FOUND THEN
5260 NULL;
5261 END;
5262 -- Check if there is any match line as
5263 -- replace_estim_qty_flag = 'N' and adj_already_generated_flag = 'N'
5264 l_debug_info := 'Get actual values from unprocessed matches';
5265 INL_LOGGING_PVT.Log_Statement(
5266 p_module_name => g_module_name,
5267 p_procedure_name => l_func_name,
5268 p_debug_info => l_debug_info
5269 ) ;
5270 BEGIN
5271 SELECT SUM(decode(m1.matched_uom_code,
5272 l_uom_code, m1.matched_qty,
5273 NVL(inl_landedcost_pvt.Converted_Qty(l_organization_id,
5274 l_inventory_item_id,
5275 m1.matched_qty,
5276 m1.matched_uom_code,
5277 l_uom_code
5278 )
5279 ,0)
5280 )
5281 )
5282 INTO l_unproc_actual_qty
5283 FROM inl_corr_matches_v m1
5284 WHERE m1.to_parent_table_name = 'INL_SHIP_LINES'
5285 AND m1.to_parent_table_id = p_ship_line_id
5286 AND m1.match_type_code = 'ITEM'
5287 AND m1.replace_estim_qty_flag = 'N'
5288 AND m1.adj_already_generated_flag = 'N'
5289 ;
5290 l_debug_info := 'Actuals from unprocessed Matches(replace_estim_qty_flag = N):';
5291 INL_LOGGING_PVT.Log_Statement(
5292 p_module_name => g_module_name,
5293 p_procedure_name => l_func_name,
5294 p_debug_info => l_debug_info
5295 ) ;
5296 INL_LOGGING_PVT.Log_Variable(
5297 p_module_name => g_module_name,
5298 p_procedure_name => l_func_name,
5299 p_var_name => 'l_unproc_actual_qty',
5300 p_var_value => l_unproc_actual_qty
5301 ) ;
5302 l_actual_qty := l_actual_qty + l_unproc_actual_qty;
5303 EXCEPTION
5304 WHEN NO_DATA_FOUND THEN
5305 NULL;
5306 END;
5307 l_debug_info := 'Get values from processed matches';
5308 INL_LOGGING_PVT.Log_Statement(
5309 p_module_name => g_module_name,
5310 p_procedure_name => l_func_name,
5311 p_debug_info => l_debug_info
5312 ) ;
5313 OPEN processed_matches;
5314 FETCH processed_matches BULK COLLECT INTO processed_matches_List;
5315 CLOSE processed_matches;
5316 IF NVL(processed_matches_List.LAST, 0) > 0 THEN
5317 FOR iMat IN NVL(processed_matches_List.FIRST, 0)..NVL(processed_matches_List.LAST, 0)
5318 LOOP
5319 IF NVL(processed_matches_List(iMat).matched_qty, 0) <> 0 THEN
5320 l_matches := l_matches ||processed_matches_List(iMat) .match_id||', ';
5321 IF processed_matches_List(iMat).matched_uom_code <> l_UOM_code THEN
5322 l_actual_qty := NVL(l_actual_qty, 0) +
5323 NVL(inl_landedcost_pvt.Converted_Qty( p_organization_id => l_organization_id,
5324 p_inventory_item_id => l_inventory_item_id,
5325 p_qty => processed_matches_List(iMat) .matched_qty,
5326 p_from_uom_code => processed_matches_List(iMat) .matched_uom_code,
5327 P_to_uom_code => l_UOM_code), 0) ;
5328 ELSE
5329 l_actual_qty := NVL(l_actual_qty, 0) + NVL(processed_matches_List(iMat).matched_qty, 0) ;
5330 END IF;
5331 END IF;
5332 END LOOP;
5333 END IF;
5334 l_debug_info := 'Actuals from processed matches:';
5335 INL_LOGGING_PVT.Log_Statement(
5336 p_module_name => g_module_name,
5337 p_procedure_name => l_func_name,
5338 p_debug_info => l_debug_info
5339 ) ;
5340 INL_LOGGING_PVT.Log_Variable(
5341 p_module_name => g_module_name,
5342 p_procedure_name => l_func_name,
5343 p_var_name => 'l_actual_qty',
5344 p_var_value => l_actual_qty
5345 ) ;
5346 l_debug_info := 'Get values from not interfaced matches';
5347 INL_LOGGING_PVT.Log_Statement(
5348 p_module_name => g_module_name,
5349 p_procedure_name => l_func_name,
5350 p_debug_info => l_debug_info
5351 ) ;
5352 OPEN OI_matches;
5353 FETCH OI_matches BULK COLLECT INTO OI_matches_List;
5354 CLOSE OI_matches;
5355 l_matches := l_matches ||'/ OI_mathes: ';
5356 IF NVL(OI_matches_List.LAST, 0) > 0 THEN
5357 FOR iMat IN NVL(OI_matches_List.FIRST, 0) ..NVL(OI_matches_List.LAST, 0)
5358 LOOP
5359 l_debug_info := 'Get values from not interfaced matches';
5360 INL_LOGGING_PVT.Log_Statement(
5361 p_module_name => g_module_name,
5362 p_procedure_name => l_func_name,
5363 p_debug_info => l_debug_info
5364 ) ;
5365 l_matches := l_matches ||OI_matches_List(iMat) .MATCH_INT_ID ;
5366 IF OI_matches_List(iMat) .replace_estim_qty_flag = 'Y' THEN
5367 IF OI_matches_List(iMat).transaction_type <> 'DELETE' THEN
5368 l_qty := OI_matches_List(iMat) .matched_qty;
5369 l_UOM_code := OI_matches_List(iMat) .matched_UOM_code;
5370 l_debug_info := 'New estimated values from match interface:';
5371 INL_LOGGING_PVT.Log_Statement(
5372 p_module_name => g_module_name,
5373 p_procedure_name => l_func_name,
5374 p_debug_info => l_debug_info
5375 ) ;
5376 INL_LOGGING_PVT.Log_Variable(
5377 p_module_name => g_module_name,
5378 p_procedure_name => l_func_name,
5379 p_var_name => 'l_qty',
5380 p_var_value => l_qty
5381 ) ;
5382 INL_LOGGING_PVT.Log_Variable(
5383 p_module_name => g_module_name,
5384 p_procedure_name => l_func_name,
5385 p_var_name => 'l_uom_code',
5386 p_var_value => l_uom_code
5387 ) ;
5388
5389 END IF;
5390 ELSIF OI_matches_List(iMat).match_type_code = 'ITEM' THEN
5391 IF OI_matches_List(iMat).transaction_type = 'CREATE' THEN
5392 OI_matches_qty := OI_matches_List(iMat) .matched_qty;
5393 OI_matches_UOM_code := OI_matches_List(iMat).matched_UOM_code;
5394 END IF;
5395 IF OI_matches_UOM_code <> l_UOM_code THEN
5396 l_actual_qty := NVL(l_actual_qty, 0)
5397 + NVL(inl_landedcost_pvt.Converted_Qty(
5398 p_organization_id => l_organization_id,
5399 p_inventory_item_id => l_inventory_item_id,
5400 p_qty => OI_matches_qty,
5401 p_from_uom_code => OI_matches_UOM_code,
5402 P_to_uom_code => l_UOM_code)
5403 , 0)
5404 ;
5405 ELSE
5406 l_actual_qty := NVL(l_actual_qty, 0) + NVL(OI_matches_qty, 0) ;
5407 END IF;
5408 END IF;
5409 l_debug_info := 'End Loop';
5410 INL_LOGGING_PVT.Log_Statement(
5411 p_module_name => g_module_name,
5412 p_procedure_name => l_func_name,
5413 p_debug_info => l_debug_info
5414 );
5415 INL_LOGGING_PVT.Log_Variable(
5416 p_module_name => g_module_name,
5417 p_procedure_name => l_func_name,
5418 p_var_name => 'l_actual_qty',
5419 p_var_value => l_actual_qty
5420 ) ;
5421
5422 END LOOP;
5423 END IF;
5424 IF p_matched_uom_code <> l_UOM_code THEN
5425 l_match_qty := NVL(inl_landedcost_pvt.Converted_Qty(
5426 p_organization_id => l_organization_id,
5427 p_inventory_item_id => l_inventory_item_id,
5428 p_qty => p_matched_qty,
5429 p_from_uom_code => p_matched_uom_code,
5430 P_to_uom_code => l_UOM_code), 0)
5431 ;
5432 ELSE
5433 l_match_qty := NVL(p_matched_qty, 0) ;
5434 END IF;
5435 IF p_replace_estim_qty_flag = 'Y' THEN
5436 l_qty := NVL(l_match_qty, 0) ;
5437 ELSIF p_match_type_code <> 'CORRECTION' THEN
5438 l_actual_qty := NVL(l_actual_qty, 0) + NVL(l_match_qty, 0) ;
5439 END IF;
5440 IF NVL(l_actual_qty, 0) > NVL(l_qty, 0) THEN
5441 l_result := FND_API.G_FALSE;
5442 l_debug_info := 'Insufficient estimated quantity('||l_qty||') for the actuals received('||l_actual_qty||')'|| l_matches;
5443 INL_LOGGING_PVT.Log_Statement(
5444 p_module_name => g_module_name,
5445 p_procedure_name => l_func_name,
5446 p_debug_info => l_debug_info
5447 );
5448 -- Add a line into inl_ship_errors
5449 Handle_InterfError(
5450 p_parent_table_name => 'INL_MATCHES_INT',
5451 p_parent_table_id => p_match_int_id,
5452 p_column_name => 'MATCHED_QTY',
5453 p_column_value => p_matched_qty,
5454 p_error_message_name => 'INL_ERR_OI_MAT_INSUF_EST_QTY',
5455 p_token1_name => 'EST_QTY',
5456 p_token1_value => l_qty,
5457 p_token2_name => 'ACT_QTY',
5458 p_token2_value => l_actual_qty,
5459 p_token3_name => 'MATCH_INT_ID',
5460 p_token3_value => p_match_int_id,
5461 x_return_status => l_return_status
5462 ) ;
5463 -- If unexpected errors happen abort
5464 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5465 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5466 END IF;
5467 END IF;
5468 l_debug_info := 'Trace: '||l_matches;
5469 INL_LOGGING_PVT.Log_Statement(
5470 p_module_name => g_module_name,
5471 p_procedure_name => l_func_name,
5472 p_debug_info => l_debug_info
5473 );
5474 -- Standard End of Procedure/Function Logging
5475 INL_LOGGING_PVT.Log_EndProc(
5476 p_module_name => g_module_name,
5477 p_procedure_name => l_func_name
5478 );
5479 RETURN FND_API.to_boolean(l_result) ;
5480 EXCEPTION
5481 WHEN FND_API.G_EXC_ERROR THEN
5482 -- Standard Expected Error Logging
5483 INL_LOGGING_PVT.Log_ExpecError (
5484 p_module_name => g_module_name,
5485 p_procedure_name => l_func_name
5486 );
5487 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5488 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5489 -- Standard Unexpected Error Logging
5490 INL_LOGGING_PVT.Log_UnexpecError (
5491 p_module_name => g_module_name,
5492 p_procedure_name => l_func_name
5493 );
5494 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5495 WHEN OTHERS THEN
5496 -- Standard Unexpected Error Logging
5497 INL_LOGGING_PVT.Log_UnexpecError (
5498 p_module_name => g_module_name,
5499 p_procedure_name => l_func_name
5500 );
5501 IF FND_MSG_PUB.Check_Msg_Level(
5502 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5503 ) THEN
5504 FND_MSG_PUB.Add_Exc_Msg(
5505 p_pkg_name => g_pkg_name,
5506 p_procedure_name => l_func_name
5507 );
5508 END IF;
5509 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5510 END Validate_MatchQty;
5511 -- Funct name : Validate_MatchTax
5512 -- Type : Private
5513 -- Function : Validate a given Match Tax
5514 --
5515 -- Pre-reqs : None
5516 -- Parameters :
5517 -- IN : p_match_int_id IN NUMBER
5518 -- p_tax_code IN VARCHAR2
5519 -- p_nrec_tax_amt IN NUMBER
5520 -- p_tax_amt_included_flag IN VARCHAR2
5521 -- p_matched_amt IN NUMBER
5522 -- p_match_type_code IN VARCHAR2
5523 -- p_parent_match_type_code IN VARCHAR2
5524 --
5525 -- OUT : x_return_status OUT NOCOPY VARCHAR2
5526 --
5527 -- Version : Current version 1.0
5528 --
5529 -- Notes :
5530 FUNCTION Validate_MatchTax(
5531 p_match_int_id IN NUMBER,
5532 p_tax_code IN VARCHAR2,
5533 p_nrec_tax_amt IN NUMBER,
5534 p_tax_amt_included_flag IN VARCHAR2,
5535 p_matched_amt IN NUMBER,
5536 p_match_type_code IN VARCHAR2,
5537 p_parent_match_type_code IN VARCHAR2,
5538 x_return_status OUT NOCOPY VARCHAR2
5539 ) RETURN BOOLEAN IS
5540 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchTax';
5541 l_debug_info VARCHAR2(400) ;
5542 l_return_status VARCHAR2(1) ;
5543 l_result VARCHAR2(1) := FND_API.G_TRUE;
5544 BEGIN
5545 -- Standard Beginning of Procedure/Function Logging
5546 INL_LOGGING_PVT.Log_BeginProc(
5547 p_module_name => g_module_name,
5548 p_procedure_name => l_func_name
5549 ) ;
5550 -- Initialize API return status to success
5551 x_return_status := FND_API.G_RET_STS_SUCCESS;
5552 IF NVL(p_parent_match_type_code, p_match_type_code) = 'TAX' THEN
5553 l_debug_info := 'Check: The unrecoverable amount should be smaller or equal to matched amount';
5554 INL_LOGGING_PVT.Log_Statement(
5555 p_module_name => g_module_name,
5556 p_procedure_name => l_func_name,
5557 p_debug_info => l_debug_info
5558 );
5559 IF (NVL(p_nrec_tax_amt, 0) > NVL(p_matched_amt, 0) --BUG#8198265
5560 AND NVL(p_nrec_tax_amt, 0) > 0)
5561 OR
5562 (NVL(p_nrec_tax_amt, 0) < NVL(p_matched_amt, 0)
5563 AND NVL(p_matched_amt, 0) < 0
5564 AND NVL(p_nrec_tax_amt, 0) < 0)
5565 THEN
5566 l_result := FND_API.G_FALSE;
5567 -- Add a line into inl_ship_errors
5568 Handle_InterfError(
5569 p_parent_table_name => 'INL_MATCHES_INT',
5570 p_parent_table_id => p_match_int_id,
5571 p_column_name => 'NREC_TAX_AMT',
5572 p_column_value => p_nrec_tax_amt,
5573 p_error_message_name => 'INL_ERR_OI_CHK_NREC_TAX_AMT',
5574 p_token1_name => 'MATCH_INT_ID',
5575 p_token1_value => p_match_int_id,
5576 x_return_status => l_return_status
5577 ) ;
5578 -- If unexpected errors happen abort
5579 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5580 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5581 END IF;
5582 END IF;
5583 l_debug_info := 'Check: TAX_CODE cannot be null';
5584 INL_LOGGING_PVT.Log_Statement(
5585 p_module_name => g_module_name,
5586 p_procedure_name => l_func_name,
5587 p_debug_info => l_debug_info
5588 );
5589 IF p_tax_code IS NULL THEN
5590 l_result := FND_API.G_FALSE;
5591 -- Add a line into inl_ship_errors
5592 Handle_InterfError(
5593 p_parent_table_name => 'INL_MATCHES_INT',
5594 p_parent_table_id => p_match_int_id,
5595 p_column_name => 'TAX_CODE',
5596 p_column_value => p_tax_code,
5597 p_error_message_name => 'INL_ERR_OI_CHK_TX_CODE_NULL',
5598 p_token1_name => 'MATCH_INT_ID',
5599 p_token1_value => p_match_int_id,
5600 x_return_status => l_return_status
5601 ) ;
5602 -- If unexpected errors happen abort
5603 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5604 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5605 END IF;
5606 END IF;
5607 l_debug_info := 'Check: TAX_AMT_INCLUDED_FLAG cannot be null';
5608 INL_LOGGING_PVT.Log_Statement(
5609 p_module_name => g_module_name,
5610 p_procedure_name => l_func_name,
5611 p_debug_info => l_debug_info
5612 );
5613 IF p_tax_amt_included_flag IS NULL THEN
5614 l_result := FND_API.G_FALSE;
5615 -- Add a line into inl_ship_errors
5616 Handle_InterfError(
5617 p_parent_table_name => 'INL_MATCHES_INT',
5618 p_parent_table_id => p_match_int_id,
5619 p_column_name => 'TAX_AMT_INCLUDED_FLAG',
5620 p_column_value => p_tax_amt_included_flag,
5621 p_error_message_name => 'INL_ERR_OI_CHK_TX_AMT_FLG_NULL',
5622 p_token1_name => 'MATCH_INT_ID',
5623 p_token1_value => p_match_int_id,
5624 x_return_status => l_return_status
5625 ) ;
5626 -- If unexpected errors happen abort
5627 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5628 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5629 END IF;
5630 END IF;
5631 ELSIF p_tax_amt_included_flag IS NOT NULL OR p_tax_code IS NOT NULL OR NVL(p_nrec_tax_amt, 0) <> 0 THEN
5632 l_result := FND_API.G_FALSE;
5633 -- Add a line into inl_ship_errors
5634 Handle_InterfError(
5635 p_parent_table_name => 'INL_MATCHES_INT',
5636 p_parent_table_id => p_match_int_id,
5637 p_column_name => 'TAX_INT_ID',
5638 p_column_value => p_match_int_id,
5639 p_error_message_name => 'INL_ERR_OI_CHK_TX_FIELD_NNULL',
5640 p_token1_name => 'MATCH_INT_ID',
5641 p_token1_value => p_match_int_id,
5642 x_return_status => l_return_status
5643 ) ;
5644 -- If unexpected errors happen abort
5645 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5646 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5647 END IF;
5648 END IF;
5649 -- Standard End of Procedure/Function Logging
5650 INL_LOGGING_PVT.Log_EndProc(
5651 p_module_name => g_module_name,
5652 p_procedure_name => l_func_name
5653 );
5654 RETURN FND_API.to_boolean(l_result) ;
5655 EXCEPTION
5656 WHEN FND_API.G_EXC_ERROR THEN
5657 -- Standard Expected Error Logging
5658 INL_LOGGING_PVT.Log_ExpecError (
5659 p_module_name => g_module_name,
5660 p_procedure_name => l_func_name
5661 );
5662 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5663 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5664 -- Standard Unexpected Error Logging
5665 INL_LOGGING_PVT.Log_UnexpecError (
5666 p_module_name => g_module_name,
5667 p_procedure_name => l_func_name
5668 );
5669 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5670 WHEN OTHERS THEN
5671 -- Standard Unexpected Error Logging
5672 INL_LOGGING_PVT.Log_UnexpecError (
5673 p_module_name => g_module_name,
5674 p_procedure_name => l_func_name
5675 );
5676 IF FND_MSG_PUB.Check_Msg_Level(
5677 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5678 ) THEN
5679 FND_MSG_PUB.Add_Exc_Msg(
5680 p_pkg_name => g_pkg_name,
5681 p_procedure_name => l_func_name
5682 );
5683 END IF;
5684 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5685 END Validate_MatchTax;
5686 -- Funct name : Validate_MatchAmt
5687 -- Type : Private
5688 -- Function : Validate a given Match Amount
5689 --
5690 -- Pre-reqs : None
5691 -- Parameters :
5692 -- IN : p_match_int_id IN NUMBER
5693 -- p_parent_matched_curr_code IN VARCHAR2
5694 -- p_parent_match_type_code IN VARCHAR2
5695 -- p_match_type_code IN VARCHAR2
5696 -- p_matched_amt IN NUMBER
5697 -- p_matched_curr_code IN VARCHAR2
5698 -- p_matched_curr_conv_type IN VARCHAR2
5699 -- p_matched_curr_conv_date IN DATE
5700 -- p_matched_curr_conv_rate IN NUMBER
5701 -- p_replace_estim_qty_flag IN VARCHAR2
5702 --
5703 -- IN OUT : x_return_status OUT NOCOPY VARCHAR2
5704 --
5705 -- Version : Current version 1.0
5706 --
5707 -- Notes :
5708 FUNCTION Validate_MatchAmt(
5709 p_match_int_id IN NUMBER,
5710 p_parent_matched_curr_code IN VARCHAR2,
5711 p_parent_match_type_code IN VARCHAR2,
5712 p_match_type_code IN VARCHAR2,
5713 p_matched_amt IN NUMBER,
5714 p_matched_curr_code IN VARCHAR2,
5715 p_matched_curr_conv_type IN VARCHAR2,
5716 p_matched_curr_conv_date IN DATE,
5717 p_matched_curr_conv_rate IN NUMBER,
5718 p_replace_estim_qty_flag IN VARCHAR2,
5719 x_return_status OUT NOCOPY VARCHAR2
5720 ) RETURN BOOLEAN IS
5721 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchAmt';
5722 l_debug_info VARCHAR2(400) ;
5723 l_return_status VARCHAR2(1) ;
5724 l_result VARCHAR2(1) := FND_API.G_TRUE;
5725 BEGIN
5726 -- Standard Beginning of Procedure/Function Logging
5727 INL_LOGGING_PVT.Log_BeginProc(
5728 p_module_name => g_module_name,
5729 p_procedure_name => l_func_name
5730 ) ;
5731 -- Initialize API return status to success
5732 x_return_status := FND_API.G_RET_STS_SUCCESS;
5733 l_debug_info := 'Check in case of correction, the currency must be the same of the original';
5734 INL_LOGGING_PVT.Log_Statement(
5735 p_module_name => g_module_name,
5736 p_procedure_name => l_func_name,
5737 p_debug_info => l_debug_info
5738 );
5739 IF p_match_type_code = 'CORRECTION' THEN
5740 IF p_parent_matched_curr_code <> p_matched_curr_code THEN
5741 l_result := FND_API.G_FALSE;
5742 -- Add a line into inl_ship_errors
5743 Handle_InterfError(
5744 p_parent_table_name => 'INL_MATCHES_INT',
5745 p_parent_table_id => p_match_int_id,
5746 p_column_name => 'MATCHED_AMT',
5747 p_column_value => p_matched_amt,
5748 p_error_message_name => 'INL_ERR_OI_CHK_CURR_INV',
5749 p_token1_name => 'CURR1',
5750 p_token1_value => p_matched_curr_code,
5751 p_token2_name => 'CURR2',
5752 p_token2_value => p_parent_matched_curr_code,
5753 p_token3_name => 'MATCH_INT_ID',
5754 p_token3_value => p_match_int_id,
5755 x_return_status => l_return_status) ;
5756 -- If unexpected errors happen abort
5757 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5758 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5759 END IF;
5760 END IF;
5761 END IF;
5762 l_debug_info := 'When replace_estim_qty_flag = "Y", the final Amount cannot be null';
5763 INL_LOGGING_PVT.Log_Statement(
5764 p_module_name => g_module_name,
5765 p_procedure_name => l_func_name,
5766 p_debug_info => l_debug_info
5767 );
5768 IF p_replace_estim_qty_flag = 'Y'
5769 AND (p_matched_amt IS NULL OR NVL(p_matched_amt, 0) < 0)
5770 THEN
5771 l_result := FND_API.G_FALSE;
5772 -- Add a line into inl_ship_errors
5773 Handle_InterfError(
5774 p_parent_table_name => 'INL_MATCHES_INT',
5775 p_parent_table_id => p_match_int_id,
5776 p_column_name => 'MATCHED_AMT',
5777 p_column_value => p_matched_amt,
5778 p_error_message_name => 'INL_ERR_OI_CHK_AMT_NULL',
5779 p_token1_name => 'MATCH_INT_ID',
5780 p_token1_value => p_match_int_id,
5781 x_return_status => l_return_status
5782 ) ;
5783 -- If unexpected errors happen abort
5784 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5785 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5786 END IF;
5787 END IF;
5788 -- Standard End of Procedure/Function Logging
5789 INL_LOGGING_PVT.Log_EndProc(
5790 p_module_name => g_module_name,
5791 p_procedure_name => l_func_name
5792 );
5793 RETURN FND_API.to_boolean(l_result) ;
5794 EXCEPTION
5795 WHEN FND_API.G_EXC_ERROR THEN
5796 -- Standard Expected Error Logging
5797 INL_LOGGING_PVT.Log_ExpecError (
5798 p_module_name => g_module_name,
5799 p_procedure_name => l_func_name
5800 );
5801 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5802 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5803 -- Standard Unexpected Error Logging
5804 INL_LOGGING_PVT.Log_UnexpecError (
5805 p_module_name => g_module_name,
5806 p_procedure_name => l_func_name
5807 );
5808 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5809 WHEN OTHERS THEN
5810 -- Standard Unexpected Error Logging
5811 INL_LOGGING_PVT.Log_UnexpecError (
5812 p_module_name => g_module_name,
5813 p_procedure_name => l_func_name
5814 );
5815 IF FND_MSG_PUB.Check_Msg_Level(
5816 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5817 ) THEN
5818 FND_MSG_PUB.Add_Exc_Msg(
5819 p_pkg_name => g_pkg_name,
5820 p_procedure_name => l_func_name
5821 );
5822 END IF;
5823 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5824 END Validate_MatchAmt;
5825 -- Funct name : Validate_MatchUOM
5826 -- Type : Private
5827 -- Function : Validate a given UOM code used by the Matching Process
5828 --
5829 -- Pre-reqs : None
5830 -- Parameters :
5831 -- IN : p_match_int_id IN NUMBER
5832 -- p_matched_uom_code IN VARCHAR2
5833 -- p_match_type_code IN VARCHAR2
5834 -- p_parent_match_type_code IN VARCHAR2
5835 --
5836 -- IN OUT : x_return_status OUT NOCOPY VARCHAR2
5837 --
5838 -- Version : Current version 1.0
5839 --
5840 -- Notes :
5841 FUNCTION Validate_MatchUOM(
5842 p_match_int_id IN NUMBER,
5843 p_matched_uom_code IN VARCHAR2,
5844 p_match_type_code IN VARCHAR2,
5845 p_parent_match_type_code IN VARCHAR2,
5846 x_return_status OUT NOCOPY VARCHAR2
5847 )RETURN BOOLEAN IS
5848 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchUOM';
5849 l_debug_info VARCHAR2(400) ;
5850 l_return_status VARCHAR2(1) ;
5851 l_result VARCHAR2(1) := FND_API.G_TRUE;
5852 l_uom VARCHAR2(100) ;
5853 BEGIN
5854 -- Standard Beginning of Procedure/Function Logging
5855 INL_LOGGING_PVT.Log_BeginProc(
5856 p_module_name => g_module_name,
5857 p_procedure_name => l_func_name
5858 ) ;
5859 -- Initialize API return status to success
5860 x_return_status := FND_API.G_RET_STS_SUCCESS;
5861 l_debug_info := 'Validate the type of the corrected match in case of correction process.';
5862 INL_LOGGING_PVT.Log_Statement(
5863 p_module_name => g_module_name,
5864 p_procedure_name => l_func_name,
5865 p_debug_info => l_debug_info
5866 );
5867 IF NVL(p_parent_match_type_code, p_match_type_code) = 'ITEM' THEN
5868 IF p_matched_uom_code IS NULL THEN
5869 l_result := FND_API.G_FALSE;
5870 -- Add a line into inl_ship_errors
5871 Handle_InterfError(
5872 p_parent_table_name => 'INL_MATCHES_INT',
5873 p_parent_table_id => p_match_int_id,
5874 p_column_name => 'MATCHED_UOM_CODE',
5875 p_column_value => p_matched_uom_code,
5876 p_error_message_name => 'INL_ERR_OI_CHK_UOM_NULL',
5877 p_token1_name => 'TYPE',
5878 p_token1_value => p_match_type_code,
5879 p_token2_name => 'MATCH_INT_ID',
5880 p_token2_value => p_match_int_id,
5881 x_return_status => l_return_status
5882 ) ;
5883 -- If unexpected errors happen abort
5884 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5885 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5886 END IF;
5887 ELSE
5888 BEGIN
5889 -- Get UOM Code
5890 SELECT unit_of_measure
5891 INTO l_uom
5892 FROM mtl_units_of_measure
5893 WHERE uom_code = p_matched_uom_code;
5894 EXCEPTION
5895 WHEN NO_DATA_FOUND THEN
5896 l_result := FND_API.G_FALSE;
5897 -- Add a line into inl_ship_errors
5898 Handle_InterfError(
5899 p_parent_table_name => 'INL_MATCHES_INT',
5900 p_parent_table_id => p_match_int_id,
5901 p_column_name => 'MATCHED_UOM_CODE',
5902 p_column_value => p_matched_uom_code,
5903 p_error_message_name => 'INL_ERR_OI_CHK_UOM_INV',
5904 p_token1_name => 'MATCH_INT_ID',
5905 p_token1_value => p_match_int_id,
5906 x_return_status => l_return_status
5907 ) ;
5908 -- If unexpected errors happen abort
5909 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5910 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5911 END IF;
5912 END;
5913 END IF;
5914 ELSE
5915 IF p_matched_uom_code IS NOT NULL THEN
5916 l_result := FND_API.G_FALSE;
5917 -- Add a line into inl_ship_errors
5918 Handle_InterfError(
5919 p_parent_table_name => 'INL_MATCHES_INT',
5920 p_parent_table_id => p_match_int_id,
5921 p_column_name => 'MATCHED_UOM_CODE',
5922 p_column_value => p_matched_uom_code,
5923 p_error_message_name => 'INL_ERR_OI_CHK_UOM_NNULL',
5924 p_token1_name => 'TYPE',
5925 p_token1_value => p_match_type_code,
5926 p_token2_name => 'MATCH_INT_ID',
5927 p_token2_value => p_match_int_id,
5928 x_return_status => l_return_status
5929 ) ;
5930 -- If unexpected errors happen abort
5931 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5932 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5933 END IF;
5934 END IF;
5935 END IF;
5936 -- Standard End of Procedure/Function Logging
5937 INL_LOGGING_PVT.Log_EndProc(
5938 p_module_name => g_module_name,
5939 p_procedure_name => l_func_name
5940 );
5941 RETURN FND_API.to_boolean(l_result) ;
5942 EXCEPTION
5943 WHEN FND_API.G_EXC_ERROR THEN
5944 -- Standard Expected Error Logging
5945 INL_LOGGING_PVT.Log_ExpecError (
5946 p_module_name => g_module_name,
5947 p_procedure_name => l_func_name
5948 );
5949 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5950 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5951 -- Standard Unexpected Error Logging
5952 INL_LOGGING_PVT.Log_UnexpecError (
5953 p_module_name => g_module_name,
5954 p_procedure_name => l_func_name
5955 );
5956 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5957 WHEN OTHERS THEN
5958 -- Standard Unexpected Error Logging
5959 INL_LOGGING_PVT.Log_UnexpecError (
5960 p_module_name => g_module_name,
5961 p_procedure_name => l_func_name
5962 );
5963 IF FND_MSG_PUB.Check_Msg_Level(
5964 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5965 ) THEN
5966 FND_MSG_PUB.Add_Exc_Msg(
5967 p_pkg_name => g_pkg_name,
5968 p_procedure_name => l_func_name
5969 );
5970 END IF;
5971 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
5972 END Validate_MatchUOM;
5973 -- Funct name : Validate_MatchMatIDS
5974 -- Type : Private
5975 -- Function : Validate Match Id and Parent Match Id
5976 --
5977 -- Pre-reqs : None
5978 -- Parameters :
5979 -- IN : p_transaction_type IN VARCHAR2
5980 -- p_match_int_id IN NUMBER
5981 -- p_match_id IN NUMBER
5982 -- p_parent_match_id IN NUMBER
5983 -- p_match_type_code IN VARCHAR2
5984 -- p_existing_match_info_flag IN VARCHAR2
5985 --
5986 -- IN OUT : x_return_status IN OUT NOCOPY VARCHAR2
5987 --
5988 -- Version : Current version 1.0
5989 --
5990 -- Notes :
5991 FUNCTION Validate_MatchMatIDS(
5992 p_transaction_type IN VARCHAR2,
5993 p_match_int_id IN NUMBER,
5994 p_match_id IN NUMBER,
5995 p_parent_match_id IN NUMBER,
5996 p_match_type_code IN VARCHAR2,
5997 p_existing_match_info_flag IN VARCHAR2,
5998 x_return_status OUT NOCOPY VARCHAR2
5999 ) RETURN BOOLEAN IS
6000 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchMatIDS';
6001 l_debug_info VARCHAR2(400) ;
6002 l_return_status VARCHAR2(1) ;
6003 l_result VARCHAR2(1) := FND_API.G_TRUE;
6004 l_adj_alr_gen_flag VARCHAR2(1) ;
6005 BEGIN
6006 -- Standard Beginning of Procedure/Function Logging
6007 INL_LOGGING_PVT.Log_BeginProc(
6008 p_module_name => g_module_name,
6009 p_procedure_name => l_func_name
6010 ) ;
6011 -- Initialize API return status to success
6012 x_return_status := FND_API.G_RET_STS_SUCCESS;
6013 l_debug_info := 'Check: When match type code is CORRECTION, parent_match_id cannot be null';
6014 INL_LOGGING_PVT.Log_Statement(
6015 p_module_name => g_module_name,
6016 p_procedure_name => l_func_name,
6017 p_debug_info => l_debug_info
6018 );
6019 IF p_match_type_code = 'CORRECTION' THEN
6020 IF p_parent_match_id IS NULL THEN
6021 l_result := FND_API.G_FALSE;
6022 -- Add a line into inl_ship_errors
6023 Handle_InterfError(
6024 p_parent_table_name => 'INL_MATCHES_INT',
6025 p_parent_table_id => p_match_int_id,
6026 p_column_name => 'PARENT_MATCH_ID',
6027 p_column_value => p_parent_match_id,
6028 p_error_message_name => 'INL_ERR_OI_CHK_MAT_ID_NULL',
6029 p_token1_name => 'OPER',
6030 p_token1_value => p_match_type_code,
6031 p_token2_name => 'COL',
6032 p_token2_value => 'PARENT_MATCH_ID',
6033 p_token3_name => 'MATCH_INT_ID',
6034 p_token3_value => p_match_int_id,
6035 x_return_status => l_return_status
6036 ) ;
6037 -- If unexpected errors happen abort
6038 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6039 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6040 END IF;
6041 ELSE
6042 BEGIN
6043 SELECT adj_already_generated_flag
6044 INTO l_adj_alr_gen_flag
6045 FROM inl_matches
6046 WHERE match_id = p_parent_match_id;
6047 EXCEPTION
6048 WHEN NO_DATA_FOUND THEN
6049 l_result := FND_API.G_FALSE;
6050 -- Add a line into inl_ship_errors
6051 Handle_InterfError(
6052 p_parent_table_name => 'INL_MATCHES_INT',
6053 p_parent_table_id => p_match_int_id,
6054 p_column_name => 'PARENT_MATCH_ID',
6055 p_column_value => p_parent_match_id,
6056 p_error_message_name => 'INL_ERR_OI_CHK_PAR_MAT_ID_NF',
6057 p_token1_name => 'COL_NAME',
6058 p_token1_value => 'PARENT_MATCH_ID',
6059 p_token2_name => 'COL_ID',
6060 p_token2_value => p_parent_match_id,
6061 x_return_status => l_return_status
6062 ) ;
6063 -- If unexpected errors happen abort
6064 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6065 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6066 END IF;
6067 END;
6068 END IF;
6069 ELSE -- p_match_type_code <> 'CORRECTION'
6070 IF p_parent_match_id IS NOT NULL AND p_existing_match_info_flag <> 'Y' THEN
6071 l_result := FND_API.G_FALSE;
6072 -- Add a line into inl_ship_errors
6073 Handle_InterfError(
6074 p_parent_table_name => 'INL_MATCHES_INT',
6075 p_parent_table_id => p_match_int_id,
6076 p_column_name => 'PARENT_MATCH_ID',
6077 p_column_value => p_parent_match_id,
6078 p_error_message_name => 'INL_ERR_OI_CHK_MAT_ID_NNULL',
6079 p_token1_name => 'OPER',
6080 p_token1_value => p_match_type_code,
6081 p_token2_name => 'COL',
6082 p_token2_value => 'PARENT_MATCH_ID',
6083 p_token3_name => 'MATCH_INT_ID',
6084 p_token3_value => p_match_int_id,
6085 x_return_status => l_return_status
6086 ) ;
6087 -- If unexpected errors happen abort
6088 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6089 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6090 END IF;
6091 END IF;
6092 IF p_transaction_type <> 'CREATE' THEN
6093 l_debug_info := 'Check: When transaction type is not CREATE, match_id cannot be null';
6094 INL_LOGGING_PVT.Log_Statement(
6095 p_module_name => g_module_name,
6096 p_procedure_name => l_func_name,
6097 p_debug_info => l_debug_info
6098 );
6099 IF p_match_id IS NULL THEN
6100 l_result := FND_API.G_FALSE;
6101 -- Add a line into inl_ship_errors
6102 Handle_InterfError(
6103 p_parent_table_name => 'INL_MATCHES_INT',
6104 p_parent_table_id => p_match_int_id,
6105 p_column_name => 'MATCH_ID',
6106 p_column_value => p_match_id,
6107 p_error_message_name => 'INL_ERR_OI_CHK_MAT_ID_NULL',
6108 p_token1_name => 'OPER',
6109 p_token1_value => p_transaction_type,
6110 p_token2_name => 'COL',
6111 p_token2_value => 'MATCH_ID',
6112 p_token3_name => 'MATCH_INT_ID',
6113 p_token3_value => p_match_int_id,
6114 x_return_status => l_return_status
6115 ) ;
6116 -- If unexpected errors happen abort
6117 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6118 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6119 END IF;
6120 ELSE
6121 BEGIN
6122 SELECT adj_already_generated_flag
6123 INTO l_adj_alr_gen_flag
6124 FROM inl_matches
6125 WHERE match_id = p_match_id;
6126 IF l_adj_alr_gen_flag <> 'N' THEN
6127 l_result := FND_API.G_FALSE;
6128 -- Add a line into inl_ship_errors
6129 Handle_InterfError(
6130 p_parent_table_name => 'INL_MATCHES_INT',
6131 p_parent_table_id => p_match_int_id,
6132 p_column_name => 'MATCH_ID',
6133 p_column_value => p_match_id,
6134 p_error_message_name => 'INL_ERR_OI_CHK_MAT_ADJUSTED',
6135 p_token1_name => 'MATCH_INT_ID',
6136 p_token1_value => p_match_int_id,
6137 x_return_status => l_return_status
6138 ) ;
6139 -- If unexpected errors happen abort
6140 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6141 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6142 END IF;
6143 END IF;
6144 EXCEPTION
6145 WHEN NO_DATA_FOUND THEN
6146 l_result := FND_API.G_FALSE;
6147 -- Add a line into inl_ship_errors
6148 Handle_InterfError(
6149 p_parent_table_name => 'INL_MATCHES_INT',
6150 p_parent_table_id => p_match_int_id,
6151 p_column_name => 'MATCH_ID',
6152 p_column_value => p_match_id,
6153 p_error_message_name => 'INL_ERR_OI_CHK_MAT_ID_NF',
6154 p_token1_name => 'COL_NAME',
6155 p_token1_value => 'MATCH_ID',
6156 p_token2_name => 'COL_ID',
6157 p_token2_value => p_match_id,
6158 p_token3_name => 'MATCH_INT_ID',
6159 p_token3_value => p_match_int_id,
6160 x_return_status => l_return_status
6161 ) ;
6162 -- If unexpected errors happen abort
6163 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6164 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6165 END IF;
6166 END;
6167 END IF;
6168 END IF;
6169 END IF;
6170 -- Standard End of Procedure/Function Logging
6171 INL_LOGGING_PVT.Log_EndProc(
6172 p_module_name => g_module_name,
6173 p_procedure_name => l_func_name
6174 );
6175 RETURN FND_API.to_boolean(l_result) ;
6176 EXCEPTION
6177 WHEN FND_API.G_EXC_ERROR THEN
6178 -- Standard Expected Error Logging
6179 INL_LOGGING_PVT.Log_ExpecError (
6180 p_module_name => g_module_name,
6181 p_procedure_name => l_func_name
6182 );
6183 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
6184 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6185 -- Standard Unexpected Error Logging
6186 INL_LOGGING_PVT.Log_UnexpecError (
6187 p_module_name => g_module_name,
6188 p_procedure_name => l_func_name
6189 );
6190 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
6191 WHEN OTHERS THEN
6192 -- Standard Unexpected Error Logging
6193 INL_LOGGING_PVT.Log_UnexpecError (
6194 p_module_name => g_module_name,
6195 p_procedure_name => l_func_name
6196 );
6197 IF FND_MSG_PUB.Check_Msg_Level(
6198 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6199 ) THEN
6200 FND_MSG_PUB.Add_Exc_Msg(
6201 p_pkg_name => g_pkg_name,
6202 p_procedure_name => l_func_name
6203 );
6204 END IF;
6205 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
6206 END Validate_MatchMatIDS;
6207 -- Funct name : Validate_MatchToParTab
6208 -- Type : Private
6209 -- Function : Validate Match To_Parent values
6210 --
6211 -- Pre-reqs : None
6212 -- Parameters :
6213 -- IN : p_transaction_type IN VARCHAR2
6214 -- p_match_int_id IN NUMBER
6215 -- p_match_id IN NUMBER
6216 -- p_parent_match_id IN NUMBER
6217 -- p_ship_header_id IN NUMBER
6218 -- p_to_parent_table_name IN VARCHAR2
6219 -- p_to_parent_table_id IN NUMBER
6220 -- p_match_type_code IN VARCHAR2
6221 --
6222 -- IN OUT : x_return_status OUT NOCOPY VARCHAR2
6223 --
6224 -- Version : Current version 1.0
6225 --
6226 -- Notes :
6227 FUNCTION Validate_MatchToParTab(
6228 p_transaction_type IN VARCHAR2,
6229 p_match_int_id IN NUMBER,
6230 p_match_id IN NUMBER,
6231 p_parent_match_id IN NUMBER,
6232 p_ship_header_id IN NUMBER,
6233 p_to_parent_table_name IN VARCHAR2,
6234 p_to_parent_table_id IN NUMBER,
6235 p_match_type_code IN VARCHAR2,
6236 x_return_status OUT NOCOPY VARCHAR2
6237 ) RETURN BOOLEAN IS
6238 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchToParTab';
6239 l_debug_info VARCHAR2(400) ;
6240 l_return_status VARCHAR2(1) ;
6241 l_result VARCHAR2(1) := FND_API.G_TRUE;
6242 l_ship_header_id NUMBER;
6243 l_ship_line_id NUMBER;
6244 l_ship_header_id_tab inl_int_table := inl_int_table() ;
6245 l_nameOk VARCHAR2(1) ;
6246 l_idOk VARCHAR2(1) ;
6247 l_SHidOk VARCHAR2(1) ;
6248 l_INT_importedOk VARCHAR2(1) ;
6249 l_matchTpCdOk VARCHAR2(1) ;
6250 BEGIN
6251 -- Standard Beginning of Procedure/Function Logging
6252 INL_LOGGING_PVT.Log_BeginProc(
6253 p_module_name => g_module_name,
6254 p_procedure_name => l_func_name
6255 ) ;
6256 -- Initialize API return status to success
6257 x_return_status := FND_API.G_RET_STS_SUCCESS;
6258 l_debug_info := 'Check to_parent_table value and all related information.';
6259 INL_LOGGING_PVT.Log_Statement(
6260 p_module_name => g_module_name,
6261 p_procedure_name => l_func_name,
6262 p_debug_info => l_debug_info
6263 );
6264 l_nameOk := 'N';
6265 l_idOk := 'N';
6266 l_SHidOk := 'N';
6267 l_matchTpCdOk := 'N';
6268 l_INT_importedOk := 'N';
6269 INL_LOGGING_PVT.Log_Variable(
6270 p_module_name => g_module_name,
6271 p_procedure_name => l_func_name,
6272 p_var_name => 'p_to_parent_table_name',
6273 p_var_value => p_to_parent_table_name
6274 ) ;
6275
6276 INL_LOGGING_PVT.Log_Variable(
6277 p_module_name => g_module_name,
6278 p_procedure_name => l_func_name,
6279 p_var_name => 'p_transaction_type',
6280 p_var_value => p_transaction_type
6281 ) ;
6282
6283 INL_LOGGING_PVT.Log_Variable(
6284 p_module_name => g_module_name,
6285 p_procedure_name => l_func_name,
6286 p_var_name => 'p_match_type_code',
6287 p_var_value => p_match_type_code
6288 ) ;
6289
6290 IF p_to_parent_table_name IN('INL_SHIP_HEADERS',
6291 'INL_SHIP_LINES',
6292 'INL_SHIP_LINE_GROUPS',
6293 'INL_CHARGE_LINES',
6294 'INL_TAX_LINES',
6295 'RCV_TRANSACTIONS'
6296 )
6297 OR (p_transaction_type = 'CREATE'
6298 AND p_to_parent_table_name IN('INL_SHIP_LINES_INT',
6299 'INL_SHIP_HEADERS_INT')
6300 )
6301 OR(p_match_type_code = 'CORRECTION'
6302 AND p_to_parent_table_name IN('AP_INVOICE_DISTRIBUTIONS')
6303 )
6304 THEN
6305 l_nameOk := 'Y';
6306 BEGIN
6307 IF p_to_parent_table_name = 'INL_SHIP_HEADERS' THEN
6308 l_INT_importedOk := 'Y';
6309 SELECT ship_header_id
6310 INTO l_ship_header_id
6311 FROM inl_ship_headers
6312 WHERE ship_header_id = p_to_parent_table_id;
6313 IF p_match_type_code = 'CHARGE' THEN
6314 l_matchTpCdOk := 'Y';
6315 END IF;
6316 ELSIF p_to_parent_table_name = 'INL_SHIP_LINES' THEN
6317 l_INT_importedOk := 'Y';
6318 SELECT ship_header_id
6319 INTO l_ship_header_id
6320 FROM inl_ship_lines
6321 WHERE ship_line_id = p_to_parent_table_id;
6322 IF p_match_type_code IN('ITEM', 'CHARGE', 'TAX') THEN
6323 l_matchTpCdOk := 'Y';
6324 END IF;
6325 ELSIF p_to_parent_table_name = 'INL_SHIP_LINE_GROUPS' THEN
6326 l_INT_importedOk := 'Y';
6327 SELECT ship_header_id
6328 INTO l_ship_header_id
6329 FROM inl_ship_line_groups
6330 WHERE ship_line_group_id = p_to_parent_table_id;
6331 IF p_match_type_code = 'CHARGE' THEN
6332 l_matchTpCdOk := 'Y';
6333 END IF;
6334 ELSIF p_to_parent_table_name = 'INL_CHARGE_LINES' THEN
6335 l_INT_importedOk := 'Y';
6336 l_ship_header_id_tab.DELETE;
6337 SELECT DISTINCT(a.ship_header_id) BULK COLLECT
6338 INTO l_ship_header_id_tab
6339 FROM inl_charge_lines c,
6340 inl_associations a
6341 WHERE c.charge_line_id = p_to_parent_table_id
6342 AND a.from_parent_table_name = 'INL_CHARGE_LINES'
6343 AND a.from_parent_table_id = c.charge_line_id;
6344 IF NVL(l_ship_header_id_tab.LAST, 0) = 1 THEN
6345 l_ship_header_id := l_ship_header_id_tab(1) ;
6346 END IF;
6347 IF p_match_type_code IN('CHARGE', 'TAX') THEN
6348 l_matchTpCdOk := 'Y';
6349 END IF;
6350 ELSIF p_to_parent_table_name = 'INL_TAX_LINES' THEN
6351 l_INT_importedOk := 'Y';
6352 SELECT ship_header_id
6353 INTO l_ship_header_id
6354 FROM inl_tax_lines
6355 WHERE tax_line_id = p_to_parent_table_id;
6356 IF p_match_type_code IN('TAX') THEN
6357 l_matchTpCdOk := 'Y';
6358 END IF;
6359 ELSIF p_to_parent_table_name = 'INL_SHIP_LINES_INT' THEN
6360 SELECT ship_header_id
6361 INTO l_ship_header_id
6362 FROM inl_ship_lines_int
6363 WHERE ship_line_int_id = p_to_parent_table_id;
6364 IF p_match_type_code IN('ITEM', 'CHARGE', 'TAX') THEN
6365 l_matchTpCdOk := 'Y';
6366 END IF;
6367 -- Check if the Interface has been imported
6368 SELECT ship_header_id
6369 INTO l_ship_header_id
6370 FROM inl_ship_lines
6371 WHERE ship_line_int_id = p_to_parent_table_id;
6372
6373 l_INT_importedOk := 'Y';
6374 ELSIF p_to_parent_table_name = 'INL_SHIP_HEADERS_INT' THEN
6375 SELECT ship_header_id
6376 INTO l_ship_header_id
6377 FROM inl_ship_headers_int
6378 WHERE ship_header_int_id = p_to_parent_table_id;
6379 IF p_match_type_code IN('CHARGE') THEN
6380 l_matchTpCdOk := 'Y';
6381 END IF;
6382 -- Check if the Interface record has been imported
6383 SELECT ship_header_id
6384 INTO l_ship_header_id
6385 FROM inl_ship_headers
6386 WHERE ship_header_int_id = p_to_parent_table_id;
6387 l_INT_importedOk := 'Y';
6388 ELSIF p_to_parent_table_name = 'RCV_TRANSACTIONS' THEN
6389 l_INT_importedOk := 'Y';
6390 SELECT lcm_shipment_line_id
6391 INTO l_ship_line_id
6392 FROM rcv_transactions rt
6393 WHERE rt.transaction_id = p_to_parent_table_id;
6394 SELECT ship_header_id
6395 INTO l_ship_header_id
6396 FROM inl_ship_lines
6397 WHERE ship_line_id = l_ship_line_id;
6398 IF p_match_type_code IN('ITEM', 'CHARGE', 'TAX') THEN
6399 l_matchTpCdOk := 'Y';
6400 END IF;
6401 ELSE -- In case of correction, the table is out of LCM limit
6402 l_idOk := 'Y';
6403 l_INT_importedOk := 'Y';
6404 SELECT ship_header_id
6405 INTO l_ship_header_id
6406 FROM inl_matches
6407 WHERE match_id = p_parent_match_id;
6408 IF p_match_type_code = 'CORRECTION' THEN
6409 l_matchTpCdOk := 'Y';
6410 END IF;
6411 END IF;
6412 l_idOk := 'Y';
6413 IF p_ship_header_id IS NULL OR l_ship_header_id = p_ship_header_id THEN
6414 l_SHidOk := 'Y';
6415 END IF;
6416 EXCEPTION
6417 WHEN NO_DATA_FOUND THEN
6418 NULL;
6419 END;
6420 END IF;
6421 IF(l_nameOk = 'N') THEN
6422 l_result := FND_API.G_FALSE;
6423 -- Add a line into inl_ship_errors
6424 Handle_InterfError(
6425 p_parent_table_name => 'INL_MATCHES_INT',
6426 p_parent_table_id => p_match_int_id,
6427 p_column_name => 'TO_PARENT_TABLE_NAME',
6428 p_column_value => p_to_parent_table_name,
6429 p_error_message_name => 'INL_ERR_OI_CHK_TO_PAR_TAB_NAME',
6430 p_token1_name => 'NAME',
6431 p_token1_value => 'INL_MATCHES_INT',
6432 p_token2_name => 'ID',
6433 p_token2_value => p_match_int_id,
6434 x_return_status => l_return_status
6435 ) ;
6436 -- If unexpected errors happen abort
6437
6438 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6439 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6440 END IF;
6441 ELSIF(l_idOk = 'N') THEN
6442 l_result := FND_API.G_FALSE;
6443 -- Add a line into inl_ship_errors
6444 Handle_InterfError(
6445 p_parent_table_name => 'INL_MATCHES_INT',
6446 p_parent_table_id => p_match_int_id,
6447 p_column_name => 'TO_PARENT_TABLE_NAME',
6448 p_column_value => p_to_parent_table_name,
6449 p_error_message_name => 'INL_ERR_OI_CHK_TO_PAR_TAB_ID',
6450 p_token1_name => 'NAME',
6451 p_token1_value => 'INL_MATCHES_INT',
6452 p_token2_name => 'ID',
6453 p_token2_value => p_match_int_id,
6454 x_return_status => l_return_status
6455 ) ;
6456 -- If unexpected errors happen abort
6457 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6458 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6459 END IF;
6460 ELSE
6461 IF(l_SHidOk = 'N') THEN
6462 l_result := FND_API.G_FALSE;
6463 -- Add a line into inl_ship_errors
6464 Handle_InterfError(
6465 p_parent_table_name => 'INL_MATCHES_INT',
6466 p_parent_table_id => p_match_int_id,
6467 p_column_name => 'SHIP_HEADER_ID',
6468 p_column_value => p_ship_header_id,
6469 p_error_message_name => 'INL_ERR_OI_CHK_SHIP_HEADER_ID',
6470 p_token1_name => 'NAME',
6471 p_token1_value => 'INL_MATCHES_INT',
6472 p_token2_name => 'ID',
6473 p_token2_value => p_match_int_id,
6474 x_return_status => l_return_status) ;
6475 -- If unexpected errors happen abort
6476 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6477 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6478 END IF;
6479 END IF;
6480 IF(l_matchTpCdOk = 'N') THEN
6481 l_result := FND_API.G_FALSE;
6482 -- Add a line into inl_ship_errors
6483 Handle_InterfError(
6484 p_parent_table_name => 'INL_MATCHES_INT',
6485 p_parent_table_id => p_match_int_id,
6486 p_column_name => 'MATCH_TYPE_CODE',
6487 p_column_value => p_match_type_code,
6488 p_error_message_name => 'INL_ERR_OI_CHK_MATCH_TP_CD',
6489 p_token1_name => 'NAME',
6490 p_token1_value => 'INL_MATCHES_INT',
6491 p_token2_name => 'ID',
6492 p_token2_value => p_match_int_id,
6493 x_return_status => l_return_status
6494 ) ;
6495 -- If unexpected errors happen abort
6496 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6497 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6498 END IF;
6499 END IF;
6500 IF(l_INT_importedOk = 'N') THEN
6501 l_result := FND_API.G_FALSE;
6502 -- Add a line into inl_ship_errors
6503 Handle_InterfError(
6504 p_parent_table_name => 'INL_MATCHES_INT',
6505 p_parent_table_id => p_match_int_id,
6506 p_column_name => 'MATCH_TYPE_CODE',
6507 p_column_value => p_match_type_code,
6508 p_error_message_name => 'INL_ERR_OI_CHK_TO_PAR_TAB_ID2',
6509 p_token1_name => 'NAME',
6510 p_token1_value => p_to_parent_table_name,
6511 p_token2_name => 'ID',
6512 p_token2_value => p_to_parent_table_id,
6513 p_token3_name => 'MATCH_INT_ID',
6514 p_token3_value => p_match_int_id,
6515 x_return_status => l_return_status
6516 ) ;
6517 -- If unexpected errors happen abort
6518 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6519 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6520 END IF;
6521 END IF;
6522 END IF;
6523 -- Standard End of Procedure/Function Logging
6524 INL_LOGGING_PVT.Log_EndProc(
6525 p_module_name => g_module_name,
6526 p_procedure_name => l_func_name
6527 );
6528 RETURN FND_API.to_boolean(l_result) ;
6529 EXCEPTION
6530 WHEN FND_API.G_EXC_ERROR THEN
6531 -- Standard Expected Error Logging
6532 INL_LOGGING_PVT.Log_ExpecError (
6533 p_module_name => g_module_name,
6534 p_procedure_name => l_func_name
6535 );
6536 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
6537 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6538 -- Standard Unexpected Error Logging
6539 INL_LOGGING_PVT.Log_UnexpecError (
6540 p_module_name => g_module_name,
6541 p_procedure_name => l_func_name
6542 );
6543 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
6544 WHEN OTHERS THEN
6545 -- Standard Unexpected Error Logging
6546 INL_LOGGING_PVT.Log_UnexpecError (
6547 p_module_name => g_module_name,
6548 p_procedure_name => l_func_name
6549 );
6550 IF FND_MSG_PUB.Check_Msg_Level(
6551 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6552 ) THEN
6553 FND_MSG_PUB.Add_Exc_Msg(
6554 p_pkg_name => g_pkg_name,
6555 p_procedure_name => l_func_name
6556 );
6557 END IF;
6558 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
6559 END Validate_MatchToParTab;
6560 -- Funct name : Validate_MatchTrxType
6561 -- Type : Private
6562 -- Function : Validate Match Transaction Type
6563 --
6564 -- Pre-reqs : None
6565 -- Parameters :
6566 -- IN : p_transaction_type IN VARCHAR2
6567 -- p_match_int_id IN NUMBER
6568 -- p_to_parent_table_name IN VARCHAR2
6569 -- p_to_parent_table_id IN NUMBER
6570 -- p_match_id IN NUMBER
6571 -- p_replace_estim_qty_flag IN VARCHAR2
6572 --
6573 -- OUT : x_return_status OUT NOCOPY VARCHAR2
6574 --
6575 -- Version : Current version 1.0
6576 --
6577 -- Notes :
6578 FUNCTION Validate_MatchTrxType(
6579 p_transaction_type IN VARCHAR2,
6580 p_match_int_id IN NUMBER,
6581 p_to_parent_table_name IN VARCHAR2,
6582 p_to_parent_table_id IN NUMBER,
6583 p_match_id IN NUMBER,
6584 p_replace_estim_qty_flag IN VARCHAR2,
6585 x_return_status OUT NOCOPY VARCHAR2
6586 ) RETURN BOOLEAN IS
6587 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchTrxType';
6588 l_debug_info VARCHAR2(400) ;
6589 l_return_status VARCHAR2(1) ;
6590 l_result VARCHAR2(1) := FND_API.G_TRUE;
6591 l_adj_already_generated_flag VARCHAR2(1) ;
6592 l_replace_estim_qty_flag VARCHAR2(1) ;
6593 l_other_REQF_Y_match_id NUMBER;
6594 BEGIN
6595 -- Standard Beginning of Procedure/Function Logging
6596 INL_LOGGING_PVT.Log_BeginProc(
6597 p_module_name => g_module_name,
6598 p_procedure_name => l_func_name
6599 ) ;
6600 -- Initialize API return status to success
6601 x_return_status := FND_API.G_RET_STS_SUCCESS;
6602 INL_LOGGING_PVT.Log_Variable(
6603 p_module_name => g_module_name,
6604 p_procedure_name => l_func_name,
6605 p_var_name => 'p_transaction_type',
6606 p_var_value => p_transaction_type
6607 ) ;
6608
6609 IF p_transaction_type = 'CREATE' THEN
6610 IF p_match_id IS NOT NULL THEN
6611 l_result := FND_API.G_FALSE;
6612 -- Add a line into inl_ship_errors
6613 Handle_InterfError(
6614 p_parent_table_name => 'INL_MATCHES_INT',
6615 p_parent_table_id => p_match_int_id,
6616 p_column_name => 'MATCH_ID',
6617 p_column_value => p_match_id,
6618 p_error_message_name => 'INL_ERR_OI_CHK_MAT_ID_NNULL',
6619 p_token1_name => 'OPER',
6620 p_token1_value => p_transaction_type,
6621 p_token2_name => 'COL',
6622 p_token2_value => 'MATCH_ID',
6623 p_token3_name => 'MATCH_INT_ID',
6624 p_token3_value => p_match_int_id,
6625 x_return_status => l_return_status) ;
6626 -- If unexpected errors happen abort
6627 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6628 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6629 END IF;
6630 END IF;
6631 ELSIF p_transaction_type IN('UPDATE', 'DELETE') THEN
6632 IF p_match_id IS NULL THEN
6633 l_result := FND_API.G_FALSE;
6634 -- Add a line into inl_ship_errors
6635 Handle_InterfError(
6636 p_parent_table_name => 'INL_MATCHES_INT',
6637 p_parent_table_id => p_match_int_id,
6638 p_column_name => 'MATCH_ID',
6639 p_column_value => p_match_id,
6640 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_ID_NULL',
6641 p_token1_name => 'COLUMN',
6642 p_token1_value => 'MATCH_ID',
6643 p_token2_name => 'ID_NAME',
6644 p_token2_value => 'MATCH_INT_ID',
6645 p_token3_name => 'ID_VAL',
6646 p_token3_value => p_match_int_id,
6647 x_return_status => l_return_status
6648 ) ;
6649 -- If unexpected errors happen abort
6650 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6651 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6652 END IF;
6653 ELSE
6654 SELECT adj_already_generated_flag,
6655 replace_estim_qty_flag
6656 INTO l_adj_already_generated_flag,
6657 l_replace_estim_qty_flag
6658 FROM inl_matches m
6659 WHERE m.match_id = p_match_id;
6660
6661 INL_LOGGING_PVT.Log_Variable(
6662 p_module_name => g_module_name,
6663 p_procedure_name => l_func_name,
6664 p_var_name => 'l_adj_already_generated_flag',
6665 p_var_value => l_adj_already_generated_flag
6666 ) ;
6667
6668 IF l_adj_already_generated_flag = 'Y' THEN
6669 l_debug_info := 'Matches that has adjustments already generated, cannot be changed.';
6670 INL_LOGGING_PVT.Log_Statement(
6671 p_module_name => g_module_name,
6672 p_procedure_name => l_func_name,
6673 p_debug_info => l_debug_info
6674 );
6675 l_result := FND_API.G_FALSE;
6676 -- Add a line into inl_ship_errors
6677 Handle_InterfError(
6678 p_parent_table_name => 'INL_MATCHES_INT',
6679 p_parent_table_id => p_match_int_id,
6680 p_column_name => 'TRANSACTION_TYPE',
6681 p_column_value => p_transaction_type,
6682 p_error_message_name => 'INL_ERR_OI_CHK_PROC_MAT_INVL',
6683 p_token1_name => 'MATCH_INT_ID',
6684 p_token1_value => p_match_int_id,
6685 x_return_status => l_return_status
6686 ) ;
6687 -- If unexpected errors happen abort
6688 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6689 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6690 END IF;
6691 END IF;
6692 IF p_replace_estim_qty_flag <> l_replace_estim_qty_flag THEN
6693 l_debug_info := 'Matches that has adjustments already generated, cannot be changed.';
6694 INL_LOGGING_PVT.Log_Statement(
6695 p_module_name => g_module_name,
6696 p_procedure_name => l_func_name,
6697 p_debug_info => l_debug_info
6698 );
6699 l_result := FND_API.G_FALSE;
6700 -- Add a line into inl_ship_errors
6701 Handle_InterfError(
6702 p_parent_table_name => 'INL_MATCHES_INT',
6703 p_parent_table_id => p_match_int_id,
6704 p_column_name => 'REPLACE_ESTIM_QTY_FLAG',
6705 p_column_value => p_replace_estim_qty_flag,
6706 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_INVL',
6707 p_token1_name => 'MATCH_INT_ID',
6708 p_token1_value => p_match_int_id,
6709 x_return_status => l_return_status
6710 ) ;
6711 -- If unexpected errors happen abort
6712 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6713 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6714 END IF;
6715 END IF;
6716 INL_LOGGING_PVT.Log_Variable(
6717 p_module_name => g_module_name,
6718 p_procedure_name => l_func_name,
6719 p_var_name => 'l_replace_estim_qty_flag',
6720 p_var_value => l_replace_estim_qty_flag
6721 ) ;
6722 IF l_replace_estim_qty_flag = 'Y' THEN
6723 -- Check if there is any new record as
6724 -- replace_estim_qty_flag = 'Y' and adj_already_generated_flag = 'N'
6725 BEGIN
6726 SELECT m1.match_id
6727 INTO l_other_REQF_Y_match_id
6728 FROM inl_matches m1
6729 WHERE m1.to_parent_table_name = p_to_parent_table_name
6730 AND m1.to_parent_table_id = p_to_parent_table_id
6731 AND m1.match_type_code = 'ITEM'
6732 AND m1.replace_estim_qty_flag = 'Y'
6733 AND m1.adj_already_generated_flag = 'N'
6734 --For validation purpose, it will consider only the latest and not processed record
6735 AND m1.match_id IN (SELECT MAX(m2.match_id)
6736 FROM inl_matches m2
6737 WHERE m2.to_parent_table_name = m1.to_parent_table_name
6738 AND m2.to_parent_table_id = m1.to_parent_table_id
6739 AND m2.match_type_code = 'ITEM'
6740 AND m2.replace_estim_qty_flag = 'Y'
6741 AND m2.adj_already_generated_flag = 'N'
6742 )
6743 ;
6744 EXCEPTION
6745 WHEN NO_DATA_FOUND THEN
6746 l_other_REQF_Y_match_id := 0;
6747 END;
6748 INL_LOGGING_PVT.Log_Variable(
6749 p_module_name => g_module_name,
6750 p_procedure_name => l_func_name,
6751 p_var_name => 'p_match_id',
6752 p_var_value => p_match_id
6753 ) ;
6754
6755 INL_LOGGING_PVT.Log_Variable(
6756 p_module_name => g_module_name,
6757 p_procedure_name => l_func_name,
6758 p_var_name => 'l_other_REQF_Y_match_id',
6759 p_var_value => l_other_REQF_Y_match_id
6760 ) ;
6761
6762 IF p_match_id < l_other_REQF_Y_match_id THEN
6763 l_result := FND_API.G_FALSE;
6764 -- Add a line into inl_ship_errors
6765 Handle_InterfError(
6766 p_parent_table_name => 'INL_MATCHES_INT',
6767 p_parent_table_id => p_match_int_id,
6768 p_column_name => 'TRANSACTION_TYPE',
6769 p_column_value => p_transaction_type,
6770 p_error_message_name => 'INL_ERR_OI_CHK_MAT_NO_EFFECT',
6771 p_token1_name => 'MATCH_INT_ID',
6772 p_token1_value => p_match_int_id,
6773 x_return_status => l_return_status
6774 ) ;
6775 -- If unexpected errors happen abort
6776 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6777 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6778 END IF;
6779 END IF;
6780 END IF;
6781 END IF;
6782 ELSE
6783 l_result := FND_API.G_FALSE;
6784 -- Add a line into inl_ship_errors
6785 Handle_InterfError(
6786 p_parent_table_name => 'INL_MATCHES_INT',
6787 p_parent_table_id => p_match_int_id,
6788 p_column_name => 'TRANSACTION_TYPE',
6789 p_column_value => p_transaction_type,
6790 p_error_message_name => 'INL_ERR_OI_CHK_TRX_TP_INVL',
6791 p_token1_name => 'TTYPE',
6792 p_token1_value => p_transaction_type,
6793 p_token2_name => 'ID_NAME',
6794 p_token2_value => 'MATCH_INT_ID',
6795 p_token3_name => 'ID_VAL',
6796 p_token3_value => p_match_int_id,
6797 x_return_status => l_return_status
6798 ) ;
6799 -- If unexpected errors happen abort
6800 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6801 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6802 END IF;
6803 END IF;
6804 -- Standard End of Procedure/Function Logging
6805 INL_LOGGING_PVT.Log_EndProc(
6806 p_module_name => g_module_name,
6807 p_procedure_name => l_func_name
6808 );
6809 RETURN FND_API.to_boolean(l_result) ;
6810 EXCEPTION
6811 WHEN FND_API.G_EXC_ERROR THEN
6812 -- Standard Expected Error Logging
6813 INL_LOGGING_PVT.Log_ExpecError (
6814 p_module_name => g_module_name,
6815 p_procedure_name => l_func_name
6816 );
6817 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
6818 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6819 -- Standard Unexpected Error Logging
6820 INL_LOGGING_PVT.Log_UnexpecError (
6821 p_module_name => g_module_name,
6822 p_procedure_name => l_func_name
6823 );
6824 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
6825 WHEN OTHERS THEN
6826 -- Standard Unexpected Error Logging
6827 INL_LOGGING_PVT.Log_UnexpecError (
6828 p_module_name => g_module_name,
6829 p_procedure_name => l_func_name
6830 );
6831 IF FND_MSG_PUB.Check_Msg_Level(
6832 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6833 ) THEN
6834 FND_MSG_PUB.Add_Exc_Msg(
6835 p_pkg_name => g_pkg_name,
6836 p_procedure_name => l_func_name
6837 );
6838 END IF;
6839 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
6840 END Validate_MatchTrxType;
6841 -- Funct Name : Validate_MatchParty
6842 -- Type : Private
6843 -- Function : Validate Match Party and Party Site
6844 --
6845 -- Pre-reqs : None
6846 -- Parameters :
6847 -- IN : p_match_int_id IN NUMBER
6848 -- p_match_type_code IN VARCHAR2
6849 -- p_parent_match_type_code IN VARCHAR2
6850 -- p_party_id IN NUMBER
6851 -- p_party_site_id IN NUMBER
6852 --
6853 -- IN OUT : x_return_status OUT NOCOPY VARCHAR2
6854 --
6855 -- Version : Current version 1.0
6856 --
6857 -- Notes :
6858 FUNCTION Validate_MatchParty(
6859 p_match_int_id IN NUMBER,
6860 p_match_type_code IN VARCHAR2,
6861 p_parent_match_type_code IN VARCHAR2,
6862 p_party_id IN NUMBER,
6863 p_party_site_id IN NUMBER,
6864 x_return_status OUT NOCOPY VARCHAR2
6865 ) RETURN BOOLEAN IS
6866 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchParty';
6867 l_debug_info VARCHAR2(400) ;
6868 l_return_status VARCHAR2(1) ;
6869 l_result VARCHAR2(1) := FND_API.G_TRUE;
6870 l_field VARCHAR2(30) ;
6871 l_field_id NUMBER;
6872 BEGIN
6873 -- Standard Beginning of Procedure/Function Logging
6874 INL_LOGGING_PVT.Log_BeginProc(
6875 p_module_name => g_module_name,
6876 p_procedure_name => l_func_name
6877 ) ;
6878 -- Initialize API return status to success
6879 x_return_status := FND_API.G_RET_STS_SUCCESS;
6880 l_debug_info := 'Check if the Party information should be included based on a given Match Type Code ';
6881 INL_LOGGING_PVT.Log_Statement(
6882 p_module_name => g_module_name,
6883 p_procedure_name => l_func_name,
6884 p_debug_info => l_debug_info
6885 );
6886 INL_LOGGING_PVT.Log_Variable(
6887 p_module_name => g_module_name,
6888 p_procedure_name => l_func_name,
6889 p_var_name => 'p_parent_match_type_code',
6890 p_var_value => p_parent_match_type_code
6891 ) ;
6892
6893 INL_LOGGING_PVT.Log_Variable(
6894 p_module_name => g_module_name,
6895 p_procedure_name => l_func_name,
6896 p_var_name => 'p_match_type_code',
6897 p_var_value => p_match_type_code
6898 ) ;
6899
6900 IF NVL(p_parent_match_type_code, p_match_type_code) = 'CHARGE' THEN
6901 l_field := 'x';
6902 INL_LOGGING_PVT.Log_Variable(
6903 p_module_name => g_module_name,
6904 p_procedure_name => l_func_name,
6905 p_var_name => 'p_party_id',
6906 p_var_value => p_party_id
6907 ) ;
6908
6909 l_debug_info := 'party_id: ';
6910 IF p_party_id IS NOT NULL THEN
6911 BEGIN
6912 l_debug_info := 'Chech Party_Id in HZ_PARTIES table';
6913 INL_LOGGING_PVT.Log_Statement(
6914 p_module_name => g_module_name,
6915 p_procedure_name => l_func_name,
6916 p_debug_info => l_debug_info
6917 );
6918 SELECT 'x'
6919 INTO l_field
6920 FROM hz_parties
6921 WHERE p_party_id = party_id;
6922
6923 l_debug_info := l_debug_info||'(OK) ';
6924 EXCEPTION
6925 WHEN OTHERS THEN
6926 l_field := 'PARTY_ID';
6927 l_field_id := p_party_id;
6928 l_debug_info := l_debug_info||'(NOT OK) ';
6929 END;
6930 ELSE
6931 l_field := 'PARTY_ID';
6932 l_field_id := NULL;
6933 END IF;
6934 INL_LOGGING_PVT.Log_Statement(
6935 p_module_name => g_module_name,
6936 p_procedure_name => l_func_name,
6937 p_debug_info => l_debug_info
6938 );
6939 INL_LOGGING_PVT.Log_Variable(
6940 p_module_name => g_module_name,
6941 p_procedure_name => l_func_name,
6942 p_var_name => 'p_party_site_id',
6943 p_var_value => p_party_site_id
6944 ) ;
6945 l_debug_info := 'p_party_site_id: ';
6946 IF p_party_site_id IS NOT NULL THEN
6947 BEGIN
6948 SELECT 'x'
6949 INTO l_field
6950 FROM hz_party_sites
6951 WHERE party_site_id = p_party_site_id;
6952
6953 l_debug_info := l_debug_info||'(OK) ';
6954 EXCEPTION
6955 WHEN OTHERS THEN
6956 l_field := 'PARTY_SITE_ID';
6957 l_field_id := p_party_site_id;
6958 l_debug_info := l_debug_info||'(NOT OK) ';
6959 END;
6960 ELSE
6961 IF l_field <> 'x' THEN
6962 l_field := 'PARTY_SITE_ID';
6963 l_field_id := NULL;
6964 END IF;
6965 END IF;
6966 INL_LOGGING_PVT.Log_Statement(
6967 p_module_name => g_module_name,
6968 p_procedure_name => l_func_name,
6969 p_debug_info => l_debug_info
6970 );
6971 IF l_field <> 'x' THEN
6972 l_debug_info := 'ERROR l_field: '||l_field;
6973 INL_LOGGING_PVT.Log_Statement(
6974 p_module_name => g_module_name,
6975 p_procedure_name => l_func_name,
6976 p_debug_info => l_debug_info
6977 );
6978 l_result := FND_API.G_FALSE;
6979 -- Add a line into inl_ship_errors
6980 Handle_InterfError(
6981 p_parent_table_name => 'INL_MATCHES_INT',
6982 p_parent_table_id => p_match_int_id,
6983 p_column_name => l_field,
6984 p_column_value => l_field_id,
6985 p_error_message_name => 'INL_ERR_OI_CHK_PARTY_INVAL',
6986 p_token1_name => 'MATCH_INT_ID',
6987 p_token1_value => p_match_int_id,
6988 x_return_status => l_return_status
6989 ) ;
6990 -- If unexpected errors happen abort
6991 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6992 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6993 END IF;
6994 END IF;
6995 ELSE
6996 l_field := 'x';
6997 IF p_party_id IS NOT NULL THEN
6998 l_field := 'PARTY_ID';
6999 l_field_id := p_party_id;
7000 END IF;
7001 IF p_party_site_id IS NOT NULL THEN
7002 l_field := 'PARTY_SITE_ID';
7003 l_field_id := p_party_site_id;
7004 END IF;
7005 IF l_field <> 'x' THEN
7006 l_result := FND_API.G_FALSE;
7007 -- Add a line into inl_ship_errors
7008 Handle_InterfError(
7009 p_parent_table_name => 'INL_MATCHES_INT',
7010 p_parent_table_id => p_match_int_id,
7011 p_column_name => l_field,
7012 p_column_value => l_field_id,
7013 p_error_message_name => 'INL_ERR_OI_CHK_PARTY_NNULL',
7014 p_token1_name => 'MATCH_INT_ID',
7015 p_token1_value => p_match_int_id,
7016 x_return_status => l_return_status
7017 ) ;
7018 -- If unexpected errors happen abort
7019 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7020 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7021 END IF;
7022 END IF;
7023 END IF;
7024 -- Standard End of Procedure/Function Logging
7025 INL_LOGGING_PVT.Log_EndProc(
7026 p_module_name => g_module_name,
7027 p_procedure_name => l_func_name
7028 );
7029 RETURN FND_API.to_boolean(l_result) ;
7030 EXCEPTION
7031 WHEN FND_API.G_EXC_ERROR THEN
7032 -- Standard Expected Error Logging
7033 INL_LOGGING_PVT.Log_ExpecError (
7034 p_module_name => g_module_name,
7035 p_procedure_name => l_func_name
7036 );
7037 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
7038 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7039 -- Standard Unexpected Error Logging
7040 INL_LOGGING_PVT.Log_UnexpecError (
7041 p_module_name => g_module_name,
7042 p_procedure_name => l_func_name
7043 );
7044 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
7045 WHEN OTHERS THEN
7046 -- Standard Unexpected Error Logging
7047 INL_LOGGING_PVT.Log_UnexpecError (
7048 p_module_name => g_module_name,
7049 p_procedure_name => l_func_name
7050 );
7051 IF FND_MSG_PUB.Check_Msg_Level(
7052 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
7053 ) THEN
7054 FND_MSG_PUB.Add_Exc_Msg(
7055 p_pkg_name => g_pkg_name,
7056 p_procedure_name => l_func_name
7057 );
7058 END IF;
7059 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
7060 END Validate_MatchParty;
7061 -- Utility name : Validate_MatchAmtInt
7062 -- Type : Private
7063 -- Function : Validate a Match before import it from interface to INL Tables
7064 --
7065 -- Pre-reqs : None
7066 -- Parameters :
7067 -- IN : p_match_int_rec IN match_int_type%TYPE
7068 --
7069 -- OUT : x_return_status IN OUT NOCOPY VARCHAR2
7070 --
7071 -- Version : Current version 1.0
7072 --
7073 -- Notes :
7074 FUNCTION Validate_MatchAmtInt(
7075 MATCH_AMOUNT_INT_ID IN match_int_type,
7076 x_return_status IN OUT NOCOPY VARCHAR2
7077 ) RETURN BOOLEAN IS
7078 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchAmtInt';
7079 l_return_status VARCHAR2(1) ;
7080 l_debug_info VARCHAR2(400) ;
7081 x_result VARCHAR2(1) := FND_API.G_TRUE;
7082 l_result BOOLEAN;
7083 l_parent_match_type_code VARCHAR2(100) ;
7084 l_parent_matched_curr_code VARCHAR2(15) ;
7085 l_parent_to_parent_table_name VARCHAR2(100) ;
7086 l_parent_to_parent_table_ID NUMBER;
7087 BEGIN
7088 -- Standard Beginning of Procedure/Function Logging
7089 INL_LOGGING_PVT.Log_BeginProc(
7090 p_module_name => g_module_name,
7091 p_procedure_name => l_func_name
7092 ) ;
7093 -- Initialize API return status to success
7094 x_return_status := FND_API.G_RET_STS_SUCCESS;
7095 l_debug_info := 'Validate Transaction Type. Call Validate_MatchTrxType';
7096 INL_LOGGING_PVT.Log_Statement(
7097 p_module_name => g_module_name,
7098 p_procedure_name => l_func_name,
7099 p_debug_info => l_debug_info
7100 );
7101 -- If unexpected errors happen abort
7102 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7103 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7104 END IF;
7105 -- Standard End of Procedure/Function Logging
7106 INL_LOGGING_PVT.Log_EndProc(
7107 p_module_name => g_module_name,
7108 p_procedure_name => l_func_name
7109 );
7110 RETURN FND_API.to_boolean(x_result) ;
7111 EXCEPTION
7112 WHEN FND_API.G_EXC_ERROR THEN
7113 -- Standard Expected Error Logging
7114 INL_LOGGING_PVT.Log_ExpecError (
7115 p_module_name => g_module_name,
7116 p_procedure_name => l_func_name
7117 );
7118 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
7119 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7120 -- Standard Unexpected Error Logging
7121 INL_LOGGING_PVT.Log_UnexpecError (
7122 p_module_name => g_module_name,
7123 p_procedure_name => l_func_name
7124 );
7125 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
7126 WHEN OTHERS THEN
7127 -- Standard Unexpected Error Logging
7128 INL_LOGGING_PVT.Log_UnexpecError (
7129 p_module_name => g_module_name,
7130 p_procedure_name => l_func_name
7131 );
7132 IF FND_MSG_PUB.Check_Msg_Level(
7133 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
7134 ) THEN
7135 FND_MSG_PUB.Add_Exc_Msg(
7136 p_pkg_name => g_pkg_name,
7137 p_procedure_name => l_func_name
7138 );
7139 END IF;
7140 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
7141 END Validate_MatchAmtInt;
7142 -- Utility name : Validate_MatchInt
7143 -- Type : Private
7144 -- Function : Validate a Match before import it from interface to INL Tables
7145 --
7146 -- Pre-reqs : None
7147 -- Parameters :
7148 -- IN : p_match_int_rec IN match_int_type%TYPE
7149 --
7150 -- OUT : x_return_status OUT NOCOPY VARCHAR2
7151 --
7152 -- Version : Current version 1.0
7153 --
7154 -- Notes :
7155 FUNCTION Validate_MatchInt(
7156 p_match_int_rec IN match_int_type,
7157 x_return_status OUT NOCOPY VARCHAR2
7158 ) RETURN BOOLEAN IS
7159 l_func_name CONSTANT VARCHAR2(30) := 'Validate_MatchInt';
7160 l_return_status VARCHAR2(1) ;
7161 l_debug_info VARCHAR2(400) ;
7162 x_result VARCHAR2(1) := FND_API.G_TRUE;
7163 l_result BOOLEAN;
7164 l_parent_match_type_code VARCHAR2(100) ;
7165 l_parent_matched_curr_code VARCHAR2(15) ;
7166 l_parent_to_parent_table_name VARCHAR2(100) ;
7167 l_parent_to_parent_table_ID NUMBER;
7168 BEGIN
7169 -- Standard Beginning of Procedure/Function Logging
7170 INL_LOGGING_PVT.Log_BeginProc(
7171 p_module_name => g_module_name,
7172 p_procedure_name => l_func_name
7173 ) ;
7174 -- Initialize API return status to success
7175 x_return_status := FND_API.G_RET_STS_SUCCESS;
7176 l_debug_info := 'Validate Transaction Type. Call Validate_MatchTrxType';
7177 INL_LOGGING_PVT.Log_Statement(
7178 p_module_name => g_module_name,
7179 p_procedure_name => l_func_name,
7180 p_debug_info => l_debug_info
7181 );
7182
7183 l_result := Validate_MatchTrxType( p_transaction_type => p_match_int_rec.transaction_type,
7184 p_match_int_id => p_match_int_rec.match_int_id,
7185 p_to_parent_table_name => p_match_int_rec.to_parent_table_name,
7186 p_to_parent_table_id => p_match_int_rec.to_parent_table_id,
7187 p_match_id => p_match_int_rec.match_id,
7188 p_replace_estim_qty_flag => p_match_int_rec.replace_estim_qty_flag,
7189 x_return_status => l_return_status) ;
7190 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7191 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7192 END IF;
7193 l_debug_info := l_debug_info||': ';
7194 IF l_result = FALSE THEN
7195 x_result := FND_API.G_FALSE;
7196 l_debug_info := l_debug_info||'FALSE';
7197 ELSE
7198 l_debug_info := l_debug_info||'OK';
7199 END IF;
7200 INL_LOGGING_PVT.Log_Statement(
7201 p_module_name => g_module_name,
7202 p_procedure_name => l_func_name,
7203 p_debug_info => l_debug_info
7204 );
7205
7206 l_debug_info := 'Get Match Type Code from Parent Match when processing corrections.';
7207 INL_LOGGING_PVT.Log_Statement(
7208 p_module_name => g_module_name,
7209 p_procedure_name => l_func_name,
7210 p_debug_info => l_debug_info
7211 );
7212
7213 INL_LOGGING_PVT.Log_Variable(
7214 p_module_name => g_module_name,
7215 p_procedure_name => l_func_name,
7216 p_var_name => 'p_match_int_rec.parent_match_id',
7217 p_var_value => p_match_int_rec.parent_match_id
7218 ) ;
7219 IF p_match_int_rec.match_type_code = 'CORRECTION' THEN
7220 SELECT match_type_code ,
7221 matched_curr_code ,
7222 to_parent_table_name,
7223 to_parent_table_id
7224 INTO l_parent_match_type_code ,
7225 l_parent_matched_curr_code ,
7226 l_parent_to_parent_table_name,
7227 l_parent_to_parent_table_ID
7228 FROM inl_matches
7229 WHERE match_id = p_match_int_rec.parent_match_id;
7230 ELSE
7231 l_parent_match_type_code := NULL;
7232 l_parent_matched_curr_code := NULL;
7233 l_parent_to_parent_table_name := NULL;
7234 l_parent_to_parent_table_ID := NULL;
7235 END IF;
7236 l_debug_info := 'Validate TO_PARENT_TABLE information. Call Validate_MatchToParTab.';
7237 INL_LOGGING_PVT.Log_Statement(
7238 p_module_name => g_module_name,
7239 p_procedure_name => l_func_name,
7240 p_debug_info => l_debug_info
7241 );
7242 l_result := Validate_MatchToParTab( p_transaction_type => p_match_int_rec.transaction_type,
7243 p_match_int_id => p_match_int_rec.match_int_id,
7244 p_match_id => p_match_int_rec.match_id,
7245 p_parent_match_id => p_match_int_rec.parent_match_id,
7246 p_ship_header_id => p_match_int_rec.ship_header_id,
7247 p_to_parent_table_name => p_match_int_rec.to_parent_table_name,
7248 p_to_parent_table_id => p_match_int_rec.to_parent_table_id,
7249 p_match_type_code => p_match_int_rec.match_type_code,
7250 x_return_status => l_return_status) ;
7251 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7252 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7253 END IF;
7254 l_debug_info := l_debug_info||': ';
7255 IF l_result = FALSE THEN
7256 x_result := FND_API.G_FALSE;
7257 l_debug_info := l_debug_info||'FALSE';
7258 ELSE
7259 l_debug_info := l_debug_info||'OK';
7260 END IF;
7261 INL_LOGGING_PVT.Log_Statement(
7262 p_module_name => g_module_name,
7263 p_procedure_name => l_func_name,
7264 p_debug_info => l_debug_info
7265 );
7266 l_debug_info := 'Validate Match IDs. Call Validate_MatchMatIDS';
7267 INL_LOGGING_PVT.Log_Statement(
7268 p_module_name => g_module_name,
7269 p_procedure_name => l_func_name,
7270 p_debug_info => l_debug_info
7271 );
7272 l_result := Validate_MatchMatIDS(
7273 p_transaction_type => p_match_int_rec.transaction_type,
7274 p_match_int_id => p_match_int_rec.match_int_id,
7275 p_match_id => p_match_int_rec.match_id,
7276 p_parent_match_id => p_match_int_rec.parent_match_id,
7277 p_match_type_code => p_match_int_rec.match_type_code,
7278 p_existing_match_info_flag => p_match_int_rec.existing_match_info_flag,
7279 x_return_status => l_return_status
7280 )
7281 ;
7282 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7283 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7284 END IF;
7285 l_debug_info := l_debug_info||': ';
7286 IF l_result = FALSE THEN
7287 x_result := FND_API.G_FALSE;
7288 l_debug_info := l_debug_info||'FALSE';
7289 ELSE
7290 l_debug_info := l_debug_info||'OK';
7291 END IF;
7292 INL_LOGGING_PVT.Log_Statement(
7293 p_module_name => g_module_name,
7294 p_procedure_name => l_func_name,
7295 p_debug_info => l_debug_info
7296 );
7297 IF p_match_int_rec.matched_qty IS NOT NULL
7298 THEN
7299 l_debug_info := 'Validate Matched UOM Code. Call Validate_MatchUOM';
7300 INL_LOGGING_PVT.Log_Statement(
7301 p_module_name => g_module_name,
7302 p_procedure_name => l_func_name,
7303 p_debug_info => l_debug_info
7304 );
7305 l_result := Validate_MatchUOM(
7306 p_match_int_id => p_match_int_rec.match_int_id,
7307 p_matched_uom_code => p_match_int_rec.matched_uom_code,
7308 p_match_type_code => p_match_int_rec.match_type_code,
7309 p_parent_match_type_code => l_parent_match_type_code,
7310 x_return_status => l_return_status
7311 )
7312 ;
7313 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7314 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7315 END IF;
7316 l_debug_info := l_debug_info||': ';
7317 IF l_result = FALSE THEN
7318 x_result := FND_API.G_FALSE;
7319 l_debug_info := l_debug_info||'FALSE';
7320 ELSE
7321 l_debug_info := l_debug_info||'OK';
7322 END IF;
7323 INL_LOGGING_PVT.Log_Statement(
7324 p_module_name => g_module_name,
7325 p_procedure_name => l_func_name,
7326 p_debug_info => l_debug_info
7327 );
7328 END IF;
7329 l_debug_info := 'Validate Matched Amount. Call Validate_MatchAmt';
7330 INL_LOGGING_PVT.Log_Statement(
7331 p_module_name => g_module_name,
7332 p_procedure_name => l_func_name,
7333 p_debug_info => l_debug_info
7334 );
7335 l_result := Validate_MatchAmt(
7336 p_match_int_id => p_match_int_rec.match_int_id,
7337 p_parent_matched_curr_code => l_parent_matched_curr_code,
7338 p_match_type_code => p_match_int_rec.match_type_code,
7339 p_parent_match_type_code => l_parent_match_type_code,
7340 p_matched_amt => p_match_int_rec.matched_amt,
7341 p_matched_curr_code => p_match_int_rec.matched_curr_code,
7342 p_matched_curr_conv_type => p_match_int_rec.matched_curr_conversion_type,
7343 p_matched_curr_conv_date => p_match_int_rec.matched_curr_conversion_date,
7344 p_matched_curr_conv_rate => p_match_int_rec.matched_curr_conversion_rate,
7345 p_replace_estim_qty_flag => p_match_int_rec.replace_estim_qty_flag,
7346 x_return_status => l_return_status) ;
7347 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7348 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7349 END IF;
7350 l_debug_info := l_debug_info||': ';
7351 IF l_result = FALSE THEN
7352 x_result := FND_API.G_FALSE;
7353 l_debug_info := l_debug_info||'FALSE';
7354 ELSE
7355 l_debug_info := l_debug_info||'OK';
7356 END IF;
7357 INL_LOGGING_PVT.Log_Statement(
7358 p_module_name => g_module_name,
7359 p_procedure_name => l_func_name,
7360 p_debug_info => l_debug_info
7361 );
7362 l_debug_info := 'Validate Matched Quantity. Call Validate_MatchQty';
7363 INL_LOGGING_PVT.Log_Statement(
7364 p_module_name => g_module_name,
7365 p_procedure_name => l_func_name,
7366 p_debug_info => l_debug_info
7367 );
7368 IF((p_match_int_rec.to_parent_table_name = 'INL_SHIP_LINES'
7369 AND p_match_int_rec.match_type_code = 'ITEM')
7370 OR (l_parent_to_parent_table_name = 'INL_SHIP_LINES'
7371 AND l_parent_match_type_code = 'ITEM'
7372 )
7373 ) AND p_match_int_rec.matched_qty IS NOT NULL
7374 THEN
7375 l_result := Validate_MatchQty(
7376 p_match_int_id => p_match_int_rec.match_int_id,
7377 p_corrected_match_id => p_match_int_rec.parent_match_id,
7378 p_updated_match_id => p_match_int_rec.match_id,
7379 p_ship_line_id => NVL(l_parent_to_parent_table_id,
7380 p_match_int_rec.to_parent_table_id),
7381 p_matched_qty => p_match_int_rec.matched_qty,
7382 p_matched_uom_code => p_match_int_rec.matched_uom_code,
7383 p_replace_estim_qty_flag => p_match_int_rec.replace_estim_qty_flag,
7384 p_match_type_code => p_match_int_rec.match_type_code,
7385 x_return_status => l_return_status) ;
7386 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7387 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7388 END IF;
7389 END IF;
7390 l_debug_info := l_debug_info||': ';
7391 IF l_result = FALSE THEN
7392 x_result := FND_API.G_FALSE;
7393 l_debug_info := l_debug_info||'FALSE';
7394 ELSE
7395 l_debug_info := l_debug_info||'OK';
7396 END IF;
7397 INL_LOGGING_PVT.Log_Statement(
7398 p_module_name => g_module_name,
7399 p_procedure_name => l_func_name,
7400 p_debug_info => l_debug_info
7401 );
7402 l_debug_info := 'Validate Match Tax. Call Validate_MatchTax';
7403 INL_LOGGING_PVT.Log_Statement(
7404 p_module_name => g_module_name,
7405 p_procedure_name => l_func_name,
7406 p_debug_info => l_debug_info
7407 );
7408 l_result := Validate_MatchTax(
7409 p_match_int_id => p_match_int_rec.match_int_id,
7410 p_tax_code => p_match_int_rec.tax_code,
7411 p_nrec_tax_amt => p_match_int_rec.nrec_tax_amt,
7412 p_tax_amt_included_flag => p_match_int_rec.tax_amt_included_flag,
7413 p_matched_amt => p_match_int_rec.matched_amt,
7414 p_match_type_code => p_match_int_rec.match_type_code,
7415 p_parent_match_type_code => l_parent_match_type_code, x_return_status => l_return_status) ;
7416 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7417 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7418 END IF;
7419 l_debug_info := l_debug_info||': ';
7420 IF l_result = FALSE THEN
7421 x_result := FND_API.G_FALSE;
7422 l_debug_info := l_debug_info||'FALSE';
7423 ELSE
7424 l_debug_info := l_debug_info||'OK';
7425 END IF;
7426 INL_LOGGING_PVT.Log_Statement(
7427 p_module_name => g_module_name,
7428 p_procedure_name => l_func_name,
7429 p_debug_info => l_debug_info
7430 );
7431 l_debug_info := 'Validate Matching Flags. Call Validate_MatchFlags';
7432 INL_LOGGING_PVT.Log_Statement(
7433 p_module_name => g_module_name,
7434 p_procedure_name => l_func_name,
7435 p_debug_info => l_debug_info
7436 );
7437 l_result := Validate_MatchFlags(
7438 p_match_int_id => p_match_int_rec.match_int_id,
7439 p_match_type_code => p_match_int_rec.match_type_code,
7440 p_parent_match_type_code => l_parent_match_type_code,
7441 p_replace_estim_qty_flag => p_match_int_rec.replace_estim_qty_flag,
7442 p_existing_match_info_flag => p_match_int_rec.existing_match_info_flag,
7443 x_return_status => l_return_status) ;
7444 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7445 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7446 END IF;
7447 l_debug_info := l_debug_info||': ';
7448 IF l_result = FALSE THEN
7449 x_result := FND_API.G_FALSE;
7450 l_debug_info := l_debug_info||'FALSE';
7451 ELSE
7452 l_debug_info := l_debug_info||'OK';
7453 END IF;
7454 INL_LOGGING_PVT.Log_Statement(
7455 p_module_name => g_module_name,
7456 p_procedure_name => l_func_name,
7457 p_debug_info => l_debug_info
7458 );
7459 l_debug_info := 'Validate Charge Line Type Id. Call Validate_MatchChLnTpID';
7460 INL_LOGGING_PVT.Log_Statement(
7461 p_module_name => g_module_name,
7462 p_procedure_name => l_func_name,
7463 p_debug_info => l_debug_info
7464 );
7465 l_result := Validate_MatchChLnTpID(
7466 p_match_int_id => p_match_int_rec.match_int_id,
7467 p_match_type_code => p_match_int_rec.match_type_code,
7468 p_parent_match_type_code => l_parent_match_type_code,
7469 p_charge_line_type_id => p_match_int_rec.charge_line_type_id,
7470 p_match_amount_int_id => p_match_int_rec.match_amount_int_id,
7471 x_return_status => l_return_status)
7472 ;
7473 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7474 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7475 END IF;
7476 l_debug_info := l_debug_info||': ';
7477 IF l_result = FALSE THEN
7478 x_result := FND_API.G_FALSE;
7479 l_debug_info := l_debug_info||'FALSE';
7480 ELSE
7481 l_debug_info := l_debug_info||'OK';
7482 END IF;
7483 INL_LOGGING_PVT.Log_Statement(
7484 p_module_name => g_module_name,
7485 p_procedure_name => l_func_name,
7486 p_debug_info => l_debug_info
7487 );
7488 l_debug_info := 'Validate Party and Party Site. Call Validate_MatchParty';
7489 INL_LOGGING_PVT.Log_Statement(
7490 p_module_name => g_module_name,
7491 p_procedure_name => l_func_name,
7492 p_debug_info => l_debug_info
7493 );
7494 l_result := Validate_MatchParty(
7495 p_match_int_id => p_match_int_rec.match_int_id,
7496 p_match_type_code => p_match_int_rec.match_type_code,
7497 p_parent_match_type_code => l_parent_match_type_code,
7498 p_party_id => p_match_int_rec.party_id,
7499 p_party_site_id => p_match_int_rec.party_site_id,
7500 x_return_status => l_return_status) ;
7501 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7502 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7503 END IF;
7504 l_debug_info := l_debug_info||': ';
7505 IF l_result = FALSE THEN
7506 x_result := FND_API.G_FALSE;
7507 l_debug_info := l_debug_info||'FALSE';
7508 ELSE
7509 l_debug_info := l_debug_info||'OK';
7510 END IF;
7511 INL_LOGGING_PVT.Log_Statement(
7512 p_module_name => g_module_name,
7513 p_procedure_name => l_func_name,
7514 p_debug_info => l_debug_info
7515 );
7516 INL_LOGGING_PVT.Log_Variable(
7517 p_module_name => g_module_name,
7518 p_procedure_name => l_func_name,
7519 p_var_name => 'p_match_int_rec.transaction_type',
7520 p_var_value => p_match_int_rec.transaction_type
7521 ) ;
7522
7523 INL_LOGGING_PVT.Log_Variable(
7524 p_module_name => g_module_name,
7525 p_procedure_name => l_func_name,
7526 p_var_name => 'p_match_int_rec.match_int_id',
7527 p_var_value => p_match_int_rec.match_int_id
7528 ) ;
7529
7530 INL_LOGGING_PVT.Log_Variable(
7531 p_module_name => g_module_name,
7532 p_procedure_name => l_func_name,
7533 p_var_name => 'p_match_int_rec.match_id',
7534 p_var_value => p_match_int_rec.match_id
7535 ) ;
7536
7537 l_debug_info := 'Validate Transaction Type. Call Validate_MatchTrxType';
7538 INL_LOGGING_PVT.Log_Statement(
7539 p_module_name => g_module_name,
7540 p_procedure_name => l_func_name,
7541 p_debug_info => l_debug_info
7542 );
7543 l_result := Validate_MatchTrxType(
7544 p_transaction_type => p_match_int_rec.transaction_type,
7545 p_match_int_id => p_match_int_rec.match_int_id,
7546 p_to_parent_table_name => p_match_int_rec.to_parent_table_name,
7547 p_to_parent_table_id => p_match_int_rec.to_parent_table_id,
7548 p_match_id => p_match_int_rec.match_id,
7549 p_replace_estim_qty_flag => p_match_int_rec.replace_estim_qty_flag,
7550 x_return_status => l_return_status) ;
7551 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7552 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7553 END IF;
7554 l_debug_info := 'Consistency of Transaction Type: ';
7555 IF l_result THEN
7556 l_debug_info := l_debug_info||'OK';
7557 ELSE
7558 x_result := FND_API.G_FALSE;
7559 l_debug_info := l_debug_info||'FALSE';
7560 END IF;
7561 -- If unexpected errors happen abort
7562 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7563 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7564 END IF;
7565 -- Standard End of Procedure/Function Logging
7566 INL_LOGGING_PVT.Log_EndProc(
7567 p_module_name => g_module_name,
7568 p_procedure_name => l_func_name
7569 );
7570 RETURN FND_API.to_boolean(x_result) ;
7571 EXCEPTION
7572 WHEN FND_API.G_EXC_ERROR THEN
7573 -- Standard Expected Error Logging
7574 INL_LOGGING_PVT.Log_ExpecError (
7575 p_module_name => g_module_name,
7576 p_procedure_name => l_func_name
7577 );
7578 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
7579 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7580 -- Standard Unexpected Error Logging
7581 INL_LOGGING_PVT.Log_UnexpecError (
7582 p_module_name => g_module_name,
7583 p_procedure_name => l_func_name
7584 );
7585 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
7586 WHEN OTHERS THEN
7587 -- Standard Unexpected Error Logging
7588 INL_LOGGING_PVT.Log_UnexpecError (
7589 p_module_name => g_module_name,
7590 p_procedure_name => l_func_name
7591 );
7592 IF FND_MSG_PUB.Check_Msg_Level(
7593 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
7594 ) THEN
7595 FND_MSG_PUB.Add_Exc_Msg(
7596 p_pkg_name => g_pkg_name,
7597 p_procedure_name => l_func_name
7598 );
7599 END IF;
7600 RETURN FND_API.to_boolean(FND_API.G_FALSE) ;
7601 END Validate_MatchInt;
7602 -- Utility name : Run_MatchPreProcessor
7603 -- Type : Private
7604 -- Function : Executes the first set of validations before import.
7605 --
7606 -- Pre-reqs : None
7607 -- Parameters :
7608 -- IN : p_group_id IN NUMBER
7609 --
7610 -- OUT : x_return_status OUT NOCOPY VARCHAR2
7611 --
7612 -- Version : Current version 1.0
7613 --
7614 -- Notes :
7615 PROCEDURE Run_MatchPreProcessor(
7616 p_group_id IN NUMBER,
7617 x_return_status OUT NOCOPY VARCHAR2
7618 ) IS
7619 -- Cursor to get all PENDING match_amounts from the
7620 -- Interface table based on a given group id
7621 CURSOR c_match_amount_int
7622 IS
7623 SELECT match_amount_int_id ,
7624 group_id ,
7625 transaction_type ,
7626 matched_amt ,
7627 matched_curr_code ,
7628 matched_curr_conversion_type,
7629 matched_curr_conversion_date,
7630 matched_curr_conversion_rate
7631 FROM inl_matches_int m
7632 WHERE (p_group_id IS NULL
7633 OR m.group_id = p_group_id
7634 )
7635 AND m.processing_status_code = 'PENDING';
7636 TYPE inl_match_amounts_int_type_tbl IS TABLE OF c_match_amount_int%ROWTYPE INDEX BY BINARY_INTEGER;
7637 match_amounts_int_list inl_match_amounts_int_type_tbl;
7638
7639 -- Cursor to get all PENDING matches from the
7640 -- Interface table based on a given group id
7641 CURSOR c_match_int
7642 IS
7643 SELECT match_int_id ,
7644 group_id ,
7645 processing_status_code,
7646 transaction_type ,
7647 match_type_code ,
7648 null,
7649 from_parent_table_name,
7650 from_parent_table_id ,
7651 to_parent_table_name ,
7652 to_parent_table_id ,
7653 null,
7654 matched_qty ,
7655 matched_uom_code ,
7656 matched_amt ,
7657 matched_curr_code ,
7658 matched_curr_conversion_type,
7659 matched_curr_conversion_date,
7660 matched_curr_conversion_rate,
7661 replace_estim_qty_flag ,
7662 null,
7663 charge_line_type_id ,
7664 party_id ,
7665 party_number ,
7666 party_site_id ,
7667 party_site_number ,
7668 tax_code ,
7669 nrec_tax_amt ,
7670 tax_amt_included_flag,
7671 match_amount_int_id,
7672 null
7673 FROM inl_matches_int m
7674 WHERE (p_group_id IS NULL
7675 OR m.group_id = p_group_id)
7676 AND m.processing_status_code = 'PENDING';
7677 match_int_list match_int_list_type;
7678
7679
7680 l_proc_name CONSTANT VARCHAR2(100) := 'Run_MatchPreProcessor';
7681 l_return_status VARCHAR2(1) ;
7682 l_msg_count NUMBER;
7683 l_msg_data VARCHAR2(2000) ;
7684 l_debug_info VARCHAR2(200) ;
7685 l_import_validation BOOLEAN;
7686 l_amt_sum NUMBER;
7687 l_processing_status_code VARCHAR2(30) ;
7688 BEGIN
7689 -- Standard Beginning of Procedure/Function Logging
7690 INL_LOGGING_PVT.Log_BeginProc(
7691 p_module_name => g_module_name,
7692 p_procedure_name => l_proc_name
7693 ) ;
7694 -- Initialize API return status to success
7695 x_return_status := FND_API.G_RET_STS_SUCCESS;
7696 OPEN c_match_int;
7697 FETCH c_match_int
7698 BULK COLLECT INTO match_int_list;
7699 CLOSE c_match_int;
7700
7701 IF NVL(match_int_list.LAST, 0) > 0 THEN
7702 FOR i IN match_int_list.FIRST .. match_int_list.LAST
7703 LOOP
7704 INL_LOGGING_PVT.Log_Variable(
7705 p_module_name => g_module_name,
7706 p_procedure_name => l_proc_name,
7707 p_var_name => 'match_int_list(i).match_int_id',
7708 p_var_value => match_int_list(i).match_int_id
7709 ) ;
7710
7711 INL_LOGGING_PVT.Log_Variable(
7712 p_module_name => g_module_name,
7713 p_procedure_name => l_proc_name,
7714 p_var_name => 'match_int_list(i).transaction_type',
7715 p_var_value => match_int_list(i).transaction_type
7716 ) ;
7717
7718 INL_LOGGING_PVT.Log_Variable(
7719 p_module_name => g_module_name,
7720 p_procedure_name => l_proc_name,
7721 p_var_name => 'match_int_list(i).to_parent_table_name',
7722 p_var_value => match_int_list(i).to_parent_table_name
7723 ) ;
7724
7725 INL_LOGGING_PVT.Log_Variable(
7726 p_module_name => g_module_name,
7727 p_procedure_name => l_proc_name,
7728 p_var_name => 'match_int_list(i).to_parent_table_id',
7729 p_var_value => match_int_list(i).to_parent_table_id
7730 ) ;
7731
7732 l_debug_info := 'Delete errors from previous analysis performed on the current line. Call Reset_InterfError';
7733 INL_LOGGING_PVT.Log_Statement(
7734 p_module_name => g_module_name,
7735 p_procedure_name => l_proc_name,
7736 p_debug_info => l_debug_info
7737 );
7738 Reset_InterfError(
7739 p_parent_table_name => 'INL_MATCHES_INT',
7740 p_parent_table_id => match_int_list(i) .match_int_id,
7741 x_return_status => l_return_status
7742 ) ;
7743 -- If any errors happen abort the process.
7744 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7745 RAISE FND_API.G_EXC_ERROR;
7746 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7747 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7748 END IF;
7749 l_debug_info := 'Call Derive_MatchCols';
7750 INL_LOGGING_PVT.Log_Statement(
7751 p_module_name => g_module_name,
7752 p_procedure_name => l_proc_name,
7753 p_debug_info => l_debug_info
7754 );
7755 Derive_MatchCols(
7756 p_party_number => match_int_list(i).party_number,
7757 p_party_site_number => match_int_list(i) .party_site_number,
7758 p_match_type_code => match_int_list(i) .match_type_code,
7759 p_to_parent_table_name => match_int_list(i) .to_parent_table_name,
7760 p_to_parent_table_id => match_int_list(i) .to_parent_table_id,
7761 p_party_id => match_int_list(i) .party_id,
7762 p_party_site_id => match_int_list(i) .party_site_id,
7763 p_parent_match_id => match_int_list(i) .parent_match_id,
7764 x_return_status => l_return_status) ;
7765 -- If any errors happen abort the process.
7766 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7767 RAISE FND_API.G_EXC_ERROR;
7768 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7769 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7770 END IF;
7771 l_debug_info := 'Validate Match before import it from interface. Call Validate_MatchInt';
7772 INL_LOGGING_PVT.Log_Statement(
7773 p_module_name => g_module_name,
7774 p_procedure_name => l_proc_name,
7775 p_debug_info => l_debug_info
7776 );
7777
7778 l_import_validation := Validate_MatchInt(p_match_int_rec => match_int_list(i), x_return_status => l_return_status) ;
7779 -- If any errors happen abort the process.
7780
7781 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7782 RAISE FND_API.G_EXC_ERROR;
7783 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7784 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7785 END IF;
7786 -- Validation has been executed successfully and
7787 -- processing status code has been changed to RUNNING
7788 IF(l_import_validation = TRUE) THEN
7789 l_debug_info := 'Set Interface Status to RUNNING';
7790 INL_LOGGING_PVT.Log_Statement(
7791 p_module_name => g_module_name,
7792 p_procedure_name => l_proc_name,
7793 p_debug_info => l_debug_info
7794 );
7795
7796 UPDATE inl_matches_int
7797 SET processing_status_code = 'RUNNING' ,
7798 party_id = match_int_list(i).party_id ,
7799 party_site_id = match_int_list(i).party_site_id,
7800 request_id = fnd_global.conc_request_id ,
7801 last_updated_by = fnd_global.user_id ,
7802 last_update_date = SYSDATE ,
7803 last_update_login = fnd_global.login_id ,
7804 program_id = fnd_global.conc_program_id ,
7805 program_update_date = SYSDATE ,
7806 program_application_id = fnd_global.prog_appl_id
7807 WHERE match_int_id = match_int_list(i).match_int_id;
7808
7809 END IF;
7810
7811 END LOOP;
7812 ELSE
7813 -- Add a line into inl_ship_errors
7814 Handle_InterfError(
7815 p_parent_table_name => 'INL_MATCHES_INT',
7816 p_parent_table_id => 0,
7817 p_column_name => 'P_GROUP_ID',
7818 p_column_value => p_group_id,
7819 p_error_message_name => 'INL_NO_RECORDS_FOUND_ERR',
7820 x_return_status => l_return_status
7821 );
7822 -- If unexpected errors happen abort
7823 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7824 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7825 END IF;
7826 END IF;
7827
7828 OPEN c_match_amount_int;
7829 FETCH c_match_amount_int
7830 BULK COLLECT INTO match_amounts_int_list;
7831 CLOSE c_match_amount_int;
7832
7833 IF NVL(match_amounts_int_list.LAST, 0) > 0 THEN
7834 FOR i IN match_amounts_int_list.FIRST .. match_amounts_int_list.LAST
7835 LOOP
7836 INL_LOGGING_PVT.Log_Variable(
7837 p_module_name => g_module_name,
7838 p_procedure_name => l_proc_name,
7839 p_var_name => 'match_amounts_int_list(i).match_amount_int_id',
7840 p_var_value => match_amounts_int_list(i).match_amount_int_id
7841 ) ;
7842 INL_LOGGING_PVT.Log_Variable(
7843 p_module_name => g_module_name,
7844 p_procedure_name => l_proc_name,
7845 p_var_name => 'match_amounts_int_list(i).transaction_type',
7846 p_var_value => match_amounts_int_list(i).transaction_type
7847 ) ;
7848 l_debug_info := 'Delete errors from previous analysis performed on the current line. Call Reset_InterfError';
7849 INL_LOGGING_PVT.Log_Statement(
7850 p_module_name => g_module_name,
7851 p_procedure_name => l_proc_name,
7852 p_debug_info => l_debug_info
7853 );
7854 Reset_InterfError(
7855 p_parent_table_name => 'INL_MATCH_AMOUNTS_INT',
7856 p_parent_table_id => match_amounts_int_list(i).match_amount_int_id,
7857 x_return_status => l_return_status) ;
7858 -- If any errors happen abort the process.
7859 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7860 RAISE FND_API.G_EXC_ERROR;
7861 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7862 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7863 END IF;
7864
7865 SELECT SUM(matched_amt)
7866 INTO l_amt_sum
7867 FROM inl_matches_int m
7868 WHERE m.match_amount_int_id = match_amounts_int_list(i).match_amount_int_id
7869 AND m.matched_curr_code = match_amounts_int_list(i).matched_curr_code
7870 ;
7871 IF l_amt_sum <> match_amounts_int_list(i).matched_amt THEN
7872 l_processing_status_code := 'ERROR';
7873 UPDATE inl_matches_int m
7874 SET processing_status_code = 'ERROR'
7875 WHERE m.match_amount_int_id = match_amounts_int_list(i).match_amount_int_id
7876 ;
7877 -- Add a line into inl_ship_errors
7878 Handle_InterfError(
7879 p_parent_table_name => 'INL_MATCH_AMOUNTS_INT',
7880 p_parent_table_id => match_amounts_int_list(i).match_amount_int_id,
7881 p_column_name => 'P_GROUP_ID',
7882 p_column_value => P_GROUP_ID,
7883 p_token1_name => 'AMT1',
7884 p_token1_value => match_amounts_int_list(i).matched_amt,
7885 p_token2_name => 'AMT2',
7886 p_token2_value => l_amt_sum,
7887 p_error_message_name => 'INL_ERR_OI_MAT_AMOUNTS_AMT',
7888 x_return_status => l_return_status
7889 ) ;
7890 ELSE
7891 l_processing_status_code := 'RUNNING';
7892 END IF;
7893 l_debug_info := 'Validate Match before import it from interface. Call Validate_MatchInt';
7894 INL_LOGGING_PVT.Log_Statement(
7895 p_module_name => g_module_name,
7896 p_procedure_name => l_proc_name,
7897 p_debug_info => l_debug_info
7898 );
7899 l_import_validation := Validate_MatchInt(p_match_int_rec => match_int_list(i), x_return_status => l_return_status) ;
7900 -- If any errors happen abort the process.
7901 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7902 RAISE FND_API.G_EXC_ERROR;
7903 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7904 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7905 END IF;
7906 -- Validation has been executed successfully and
7907 -- processing status code has been changed to RUNNING
7908 IF(l_import_validation = TRUE) THEN
7909 l_debug_info := 'Set Interface Status to RUNNING';
7910 INL_LOGGING_PVT.Log_Statement(
7911 p_module_name => g_module_name,
7912 p_procedure_name => l_proc_name,
7913 p_debug_info => l_debug_info
7914 );
7915 UPDATE inl_matches_int
7916 SET processing_status_code = l_processing_status_code ,
7917 party_id = match_int_list(i) .party_id ,
7918 party_site_id = match_int_list(i) .party_site_id,
7919 request_id = fnd_global.conc_request_id ,
7920 last_updated_by = fnd_global.user_id ,
7921 last_update_date = SYSDATE ,
7922 last_update_login = fnd_global.login_id ,
7923 program_id = fnd_global.conc_program_id ,
7924 program_update_date = SYSDATE ,
7925 program_application_id = fnd_global.prog_appl_id
7926 WHERE match_int_id = match_int_list(i) .match_int_id;
7927 END IF;
7928 END LOOP;
7929 END IF;
7930
7931 -- Standard End of Procedure/Function Logging
7932 INL_LOGGING_PVT.Log_EndProc(
7933 p_module_name => g_module_name,
7934 p_procedure_name => l_proc_name
7935 );
7936 EXCEPTION
7937 WHEN FND_API.G_EXC_ERROR THEN
7938 -- Standard Expected Error Logging
7939 INL_LOGGING_PVT.Log_ExpecError (
7940 p_module_name => g_module_name,
7941 p_procedure_name => l_proc_name
7942 );
7943 x_return_status := FND_API.G_RET_STS_ERROR;
7944 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7945 -- Standard Unexpected Error Logging
7946 INL_LOGGING_PVT.Log_UnexpecError (
7947 p_module_name => g_module_name,
7948 p_procedure_name => l_proc_name
7949 );
7950 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7951 WHEN OTHERS THEN
7952 -- Standard Unexpected Error Logging
7953 INL_LOGGING_PVT.Log_UnexpecError (
7954 p_module_name => g_module_name,
7955 p_procedure_name => l_proc_name
7956 );
7957 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7958 IF FND_MSG_PUB.Check_Msg_Level(
7959 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
7960 ) THEN
7961 FND_MSG_PUB.Add_Exc_Msg(
7962 p_pkg_name => g_pkg_name,
7963 p_procedure_name => l_proc_name
7964 );
7965 END IF;
7966 END Run_MatchPreProcessor;
7967 -- Utility name : Run_MatchPostProcessor
7968 -- Type : Private
7969 -- Function : Post processor to import Match Lines.
7970 --
7971 -- Pre-reqs : None
7972 -- Parameters :
7973 -- IN : p_group_id IN NUMBER
7974 --
7975 -- OUT : x_return_status OUT NOCOPY VARCHAR2
7976 --
7977 -- Version : Current version 1.0
7978 --
7979 -- Notes :
7980 PROCEDURE Run_MatchPostProcessor(
7981 p_group_id IN NUMBER,
7982 x_return_status OUT NOCOPY VARCHAR2
7983 ) IS
7984 l_proc_name CONSTANT VARCHAR2(100) := 'Run_MatchPostProcessor';
7985 l_return_status VARCHAR2(1) ;
7986 l_debug_info VARCHAR2(200) ;
7987 BEGIN
7988 -- Standard Beginning of Procedure/Function Logging
7989 INL_LOGGING_PVT.Log_BeginProc(
7990 p_module_name => g_module_name,
7991 p_procedure_name => l_proc_name
7992 ) ;
7993 -- Initialize API return status to success
7994 x_return_status := FND_API.G_RET_STS_SUCCESS;
7995 l_debug_info := 'Import Matches. Call Import_Matches';
7996 INL_LOGGING_PVT.Log_Statement(
7997 p_module_name => g_module_name,
7998 p_procedure_name => l_proc_name,
7999 p_debug_info => l_debug_info
8000 );
8001 Import_Matches(p_group_id => p_group_id,
8002 x_return_status => l_return_status) ;
8003 -- If any errors happen abort API.
8004 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8005 RAISE FND_API.G_EXC_ERROR;
8006 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8007 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8008 END IF;
8009 -- Standard End of Procedure/Function Logging
8010 INL_LOGGING_PVT.Log_EndProc(
8011 p_module_name => g_module_name,
8012 p_procedure_name => l_proc_name
8013 );
8014 EXCEPTION
8015 WHEN FND_API.G_EXC_ERROR THEN
8016 -- Standard Expected Error Logging
8017 INL_LOGGING_PVT.Log_ExpecError (
8018 p_module_name => g_module_name,
8019 p_procedure_name => l_proc_name
8020 );
8021 x_return_status := FND_API.G_RET_STS_ERROR;
8022 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8023 -- Standard Unexpected Error Logging
8024 INL_LOGGING_PVT.Log_UnexpecError (
8025 p_module_name => g_module_name,
8026 p_procedure_name => l_proc_name
8027 );
8028 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8029 WHEN OTHERS THEN
8030 -- Standard Unexpected Error Logging
8031 INL_LOGGING_PVT.Log_UnexpecError (
8032 p_module_name => g_module_name,
8033 p_procedure_name => l_proc_name
8034 );
8035 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8036 IF FND_MSG_PUB.Check_Msg_Level(
8037 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
8038 ) THEN
8039 FND_MSG_PUB.Add_Exc_Msg(
8040 p_pkg_name => g_pkg_name,
8041 p_procedure_name => l_proc_name
8042 );
8043 END IF;
8044 END Run_MatchPostProcessor;
8045 -- Utility name : Run_ShipPreProcessor
8046 -- Type : Private
8047 -- Function : Executes the first set of validations before import a Shipment.
8048 --
8049 -- Pre-reqs : None
8050 -- Parameters :
8051 -- IN : p_group_id IN NUMBER
8052 -- p_org_id IN NUMBER
8053 --
8054 -- OUT : x_return_status OUT NOCOPY VARCHAR2
8055 --
8056 -- Version : Current version 1.0
8057 --
8058 -- Notes :
8059 PROCEDURE Run_ShipPreProcessor(
8060 p_group_id IN NUMBER,
8061 p_org_id IN NUMBER,
8062 x_return_status OUT NOCOPY VARCHAR2
8063 ) IS
8064 -- Cursor to get all PENDING Shipments from the
8065 -- Interface table based on a given group id
8066 CURSOR c_ship_hdr_int
8067 IS
8068 SELECT ship_header_int_id,
8069 validation_flag ,
8070 last_task_code ,
8071 organization_id ,
8072 org_id ,
8073 transaction_type ,
8074 ship_header_id ,
8075 ship_num ,
8076 ship_type_id
8077 FROM inl_ship_headers_int h
8078 WHERE
8079 (
8080 p_group_id IS NULL
8081 OR h.group_id = p_group_id
8082 )
8083 AND (
8084 p_org_id IS NULL
8085 OR h.org_id = p_org_id
8086
8087 )
8088 AND h.processing_status_code = 'PENDING'
8089 AND
8090 (
8091 h.transaction_type = 'DELETE'
8092 OR EXISTS
8093 (
8094 SELECT 1
8095 FROM inl_ship_lines_int l
8096 WHERE l.ship_header_int_id = h.ship_header_int_id
8097 AND ROWNUM < 2
8098 )
8099 ) ;
8100
8101 TYPE ship_hdr_int_list_type IS TABLE OF c_ship_hdr_int%ROWTYPE;
8102 ship_hdr_int_list ship_hdr_int_list_type;
8103
8104 -- Cursor to get all PENDING Shipments Lines from the
8105 -- Interface table based on a given ship_header_int_id
8106 CURSOR c_ship_lin_int (p_ship_header_int_id number)
8107 IS
8108 SELECT
8109 ship_header_int_id ,
8110 ship_line_int_id ,
8111 ship_line_type_id
8112 FROM inl_ship_lines_int l
8113 WHERE l.processing_status_code = 'PENDING'
8114 AND l.ship_header_int_id = p_ship_header_int_id;
8115
8116 TYPE ship_lin_int_list_type IS TABLE OF c_ship_lin_int%ROWTYPE;
8117 ship_lin_int_list ship_lin_int_list_type;
8118
8119 l_proc_name CONSTANT VARCHAR2(100) := 'Run_ShipPreProcessor';
8120 l_return_status VARCHAR2(1) ;
8121 l_msg_count NUMBER;
8122 l_msg_data VARCHAR2(2000) ;
8123 l_debug_info VARCHAR2(200) ;
8124 l_import_validation BOOLEAN;
8125 l_ship_header_int_id NUMBER;
8126 l_organization_id NUMBER;
8127 l_org_id NUMBER;
8128 l_validation_flag VARCHAR2(1) ;
8129 BEGIN
8130 -- Standard Beginning of Procedure/Function Logging
8131 INL_LOGGING_PVT.Log_BeginProc(
8132 p_module_name => g_module_name,
8133 p_procedure_name => l_proc_name
8134 ) ;
8135 -- Initialize API return status to success
8136 x_return_status := FND_API.G_RET_STS_SUCCESS;
8137 OPEN c_ship_hdr_int;
8138 FETCH c_ship_hdr_int BULK COLLECT INTO ship_hdr_int_list;
8139
8140 CLOSE c_ship_hdr_int;
8141 IF NVL(ship_hdr_int_list.LAST, 0) > 0 THEN
8142 FOR i IN ship_hdr_int_list.FIRST .. ship_hdr_int_list.LAST
8143 LOOP
8144 l_ship_header_int_id := ship_hdr_int_list(i) .ship_header_int_id;
8145 l_org_id := ship_hdr_int_list(i) .org_id;
8146 l_organization_id := ship_hdr_int_list(i) .organization_id;
8147 l_validation_flag := ship_hdr_int_list(i) .validation_flag;
8148 INL_LOGGING_PVT.Log_Variable(
8149 p_module_name => g_module_name,
8150 p_procedure_name => l_proc_name,
8151 p_var_name => 'l_ship_header_int_id',
8152 p_var_value => l_ship_header_int_id
8153 ) ;
8154
8155 INL_LOGGING_PVT.Log_Variable(
8156 p_module_name => g_module_name,
8157 p_procedure_name => l_proc_name,
8158 p_var_name => 'l_org_id',
8159 p_var_value => l_org_id
8160 ) ;
8161
8162 INL_LOGGING_PVT.Log_Variable(
8163 p_module_name => g_module_name,
8164 p_procedure_name => l_proc_name,
8165 p_var_name => 'l_organization_id',
8166 p_var_value => l_organization_id
8167 ) ;
8168
8169 INL_LOGGING_PVT.Log_Variable(
8170 p_module_name => g_module_name,
8171 p_procedure_name => l_proc_name,
8172 p_var_name => 'l_validation_flag',
8173 p_var_value => l_validation_flag
8174 ) ;
8175
8176 INL_LOGGING_PVT.Log_Variable(
8177 p_module_name => g_module_name,
8178 p_procedure_name => l_proc_name,
8179 p_var_name => 'ship_hdr_int_list(i).last_task_code',
8180 p_var_value => ship_hdr_int_list(i).last_task_code
8181 ) ;
8182
8183 INL_LOGGING_PVT.Log_Variable(
8184 p_module_name => g_module_name,
8185 p_procedure_name => l_proc_name,
8186 p_var_name => 'ship_hdr_int_list(i).transaction_type',
8187 p_var_value => ship_hdr_int_list(i).transaction_type
8188 ) ;
8189
8190 INL_LOGGING_PVT.Log_Variable(
8191 p_module_name => g_module_name,
8192 p_procedure_name => l_proc_name,
8193 p_var_name => 'ship_hdr_int_list(i).ship_header_id',
8194 p_var_value => ship_hdr_int_list(i).ship_header_id
8195 ) ;
8196
8197 l_debug_info := 'Delete errors from previous analysis. Call Reset_InterfError';
8198 INL_LOGGING_PVT.Log_Statement(
8199 p_module_name => g_module_name,
8200 p_procedure_name => l_proc_name,
8201 p_debug_info => l_debug_info
8202 );
8203 Reset_InterfError(p_parent_table_name => 'INL_SHIP_HEADERS_INT', p_parent_table_id => ship_hdr_int_list(i) .ship_header_int_id, x_return_status => l_return_status) ;
8204 -- If any errors happen abort API.
8205 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8206 RAISE FND_API.G_EXC_ERROR;
8207 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8208 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8209 END IF;
8210 INL_LOGGING_PVT.Log_APICallIn( p_module_name => g_module_name,
8211 p_procedure_name => l_proc_name,
8212 p_call_api_name => 'Derive_ShipHeaderCols',
8213 p_in_param_name1 => 'i',
8214 p_in_param_value1 => i,
8215 p_in_param_name2 => NULL,
8216 p_in_param_value2 => NULL,
8217 p_in_param_name3 => NULL,
8218 p_in_param_value3 => NULL,
8219 p_in_param_name4 => NULL,
8220 p_in_param_value4 => NULL,
8221 p_in_param_name5 => NULL,
8222 p_in_param_value5 => NULL,
8223 p_in_param_name6 => NULL,
8224 p_in_param_value6 => NULL,
8225 p_in_param_name7 => NULL,
8226 p_in_param_value7 => NULL,
8227 p_in_param_name8 => NULL,
8228 p_in_param_value8 => NULL,
8229 p_in_param_name9 => NULL,
8230 p_in_param_value9 => NULL,
8231 p_in_param_name10 => NULL,
8232 p_in_param_value10 => NULL) ;
8233 Derive_ShipHeaderCols(p_ship_header_int_id => ship_hdr_int_list(i) .ship_header_int_id, p_organization_id => ship_hdr_int_list(i) .organization_id, x_return_status => l_return_status) ;
8234 -- If any errors happen abort API.
8235 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8236 RAISE FND_API.G_EXC_ERROR;
8237 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8238 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8239 END IF;
8240 INL_LOGGING_PVT.Log_APICallIn( p_module_name => g_module_name,
8241 p_procedure_name => l_proc_name,
8242 p_call_api_name => 'Derive_ShipLineCols',
8243 p_in_param_name1 => 'i',
8244 p_in_param_value1 => i,
8245 p_in_param_name2 => NULL,
8246 p_in_param_value2 => NULL,
8247 p_in_param_name3 => NULL,
8248 p_in_param_value3 => NULL,
8249 p_in_param_name4 => NULL,
8250 p_in_param_value4 => NULL,
8251 p_in_param_name5 => NULL,
8252 p_in_param_value5 => NULL,
8253 p_in_param_name6 => NULL,
8254 p_in_param_value6 => NULL,
8255 p_in_param_name7 => NULL,
8256 p_in_param_value7 => NULL,
8257 p_in_param_name8 => NULL,
8258 p_in_param_value8 => NULL,
8259 p_in_param_name9 => NULL,
8260 p_in_param_value9 => NULL,
8261 p_in_param_name10 => NULL,
8262 p_in_param_value10 => NULL) ;
8263 Derive_ShipLineCols(p_ship_header_int_id => ship_hdr_int_list(i) .ship_header_int_id, p_organization_id => ship_hdr_int_list(i) .organization_id, x_return_status => l_return_status) ;
8264 -- If any errors happen abort API.
8265 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8266 RAISE FND_API.G_EXC_ERROR;
8267 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8268 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8269 END IF;
8270 -- When Validation_Flag = Y, it means that
8271 -- we must execute the first level validation
8272 IF(l_validation_flag = 'Y') THEN
8273 l_debug_info := 'Validate before import from interface. Call Validate_LCMImport';
8274 INL_LOGGING_PVT.Log_Statement(
8275 p_module_name => g_module_name,
8276 p_procedure_name => l_proc_name,
8277 p_debug_info => l_debug_info
8278 );
8279 l_import_validation := Validate_LCMImport(
8280 p_ship_header_int_id => l_ship_header_int_id,
8281 p_org_id => l_org_id,
8282 p_organization_id => l_organization_id,
8283 p_transaction_type => ship_hdr_int_list(i).transaction_type,
8284 p_last_task_code => ship_hdr_int_list(i).last_task_code,
8285 p_ship_num => ship_hdr_int_list(i).ship_num,
8286 p_ship_header_id => ship_hdr_int_list(i).ship_header_id,
8287 p_ship_type_id => ship_hdr_int_list(i).ship_type_id,
8288 x_return_status => l_return_status) ;
8289 -- If any errors happen abort API.
8290 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8291 RAISE FND_API.G_EXC_ERROR;
8292 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8293 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8294 END IF;
8295 OPEN c_ship_lin_int(l_ship_header_int_id);
8296 FETCH c_ship_lin_int BULK COLLECT INTO ship_lin_int_list;
8297
8298 CLOSE c_ship_lin_int;
8299 IF NVL(ship_lin_int_list.LAST, 0) > 0 THEN
8300 FOR j IN ship_lin_int_list.FIRST .. ship_lin_int_list.LAST
8301 LOOP
8302 l_debug_info := 'Validate before import from interface. Call Validate_LCMImport';
8303 INL_LOGGING_PVT.Log_Statement(
8304 p_module_name => g_module_name,
8305 p_procedure_name => l_proc_name,
8306 p_debug_info => l_debug_info
8307 );
8308 l_import_validation := Validate_ShipLinImport(
8309 p_ship_header_int_id => l_ship_header_int_id,
8310 p_ship_line_int_id => ship_lin_int_list(j).ship_line_int_id,
8311 p_ship_type_id => ship_hdr_int_list(i).ship_type_id, --pay attention to idx
8312 p_ship_line_type_id => ship_lin_int_list(j).ship_line_type_id,
8313 x_return_status => l_return_status) ;
8314 -- If any errors happen abort API.
8315 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8316 RAISE FND_API.G_EXC_ERROR;
8317 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8318 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8319 END IF;
8320 END LOOP;
8321 END IF;
8322 END IF;
8323 -- When validation_flag = N, it means that we're not
8324 -- supposed to execute the first level validation.
8325 -- In both cases(Validation flag = N or validation
8326 -- flag = Y) and if validation completes with no errors,
8327 -- processing status code is changed to RUNNING
8328 IF((l_validation_flag = 'N') OR
8329 (
8330 l_validation_flag = 'Y' AND l_import_validation = TRUE
8331 )
8332 ) THEN
8333 IF ship_hdr_int_list(i).last_task_code >= '10' THEN -- check if import will be executed
8334 l_debug_info := 'Change Interface Status Code to RUNNING';
8335 INL_LOGGING_PVT.Log_Statement(
8336 p_module_name => g_module_name,
8337 p_procedure_name => l_proc_name,
8338 p_debug_info => l_debug_info
8339 );
8340 UPDATE inl_ship_headers_int
8341 SET processing_status_code = 'RUNNING' ,
8342 request_id = fnd_global.conc_request_id,
8343 last_updated_by = fnd_global.user_id ,
8344 last_update_date = SYSDATE ,
8345 last_update_login = fnd_global.login_id ,
8346 program_id = fnd_global.conc_program_id,
8347 program_update_date = SYSDATE ,
8348 program_application_id = fnd_global.prog_appl_id
8349 WHERE ship_header_int_id = l_ship_header_int_id;
8350 UPDATE inl_ship_lines_int
8351 SET processing_status_code = 'RUNNING' ,
8352 request_id = fnd_global.conc_request_id,
8353 last_updated_by = fnd_global.user_id ,
8354 last_update_date = SYSDATE ,
8355 last_update_login = fnd_global.login_id ,
8356 program_id = fnd_global.conc_program_id,
8357 program_update_date = SYSDATE ,
8358 program_application_id = fnd_global.prog_appl_id
8359 WHERE ship_header_int_id = l_ship_header_int_id
8360 AND processing_status_code = 'PENDING';
8361 ELSE
8362 l_debug_info := 'Change Interface Status Code to COMPLETED';
8363 INL_LOGGING_PVT.Log_Statement(
8364 p_module_name => g_module_name,
8365 p_procedure_name => l_proc_name,
8366 p_debug_info => l_debug_info
8367 );
8368 UPDATE inl_ship_headers_int
8369 SET processing_status_code = 'COMPLETED' ,
8370 request_id = fnd_global.conc_request_id,
8371 last_updated_by = fnd_global.user_id ,
8372 last_update_date = SYSDATE ,
8373 last_update_login = fnd_global.login_id ,
8374 program_id = fnd_global.conc_program_id,
8375 program_update_date = SYSDATE ,
8376 program_application_id = fnd_global.prog_appl_id
8377 WHERE ship_header_int_id = l_ship_header_int_id;
8378 UPDATE inl_ship_lines_int
8379 SET processing_status_code = 'COMPLETED' ,
8380 request_id = fnd_global.conc_request_id,
8381 last_updated_by = fnd_global.user_id ,
8382 last_update_date = SYSDATE ,
8383 last_update_login = fnd_global.login_id ,
8384 program_id = fnd_global.conc_program_id,
8385 program_update_date = SYSDATE ,
8386 program_application_id = fnd_global.prog_appl_id
8387 WHERE ship_header_int_id = l_ship_header_int_id
8388 AND processing_status_code = 'PENDING';
8389 END IF;
8390 END IF;
8391 END LOOP;
8392 END IF;
8393 -- Standard End of Procedure/Function Logging
8394 INL_LOGGING_PVT.Log_EndProc(
8395 p_module_name => g_module_name,
8396 p_procedure_name => l_proc_name
8397 );
8398 EXCEPTION
8399 WHEN FND_API.G_EXC_ERROR THEN
8400 -- Standard Expected Error Logging
8401 INL_LOGGING_PVT.Log_ExpecError (
8402 p_module_name => g_module_name,
8403 p_procedure_name => l_proc_name
8404 );
8405 x_return_status := FND_API.G_RET_STS_ERROR;
8406 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8407 -- Standard Unexpected Error Logging
8408 INL_LOGGING_PVT.Log_UnexpecError (
8409 p_module_name => g_module_name,
8410 p_procedure_name => l_proc_name
8411 );
8412 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8413 WHEN OTHERS THEN
8414 -- Standard Unexpected Error Logging
8415 INL_LOGGING_PVT.Log_UnexpecError (
8416 p_module_name => g_module_name,
8417 p_procedure_name => l_proc_name
8418 );
8419 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8420 IF FND_MSG_PUB.Check_Msg_Level(
8421 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
8422 ) THEN
8423 FND_MSG_PUB.Add_Exc_Msg(
8424 p_pkg_name => g_pkg_name,
8425 p_procedure_name => l_proc_name
8426 );
8427 END IF;
8428 END Run_ShipPreProcessor;
8429 -- Utility name : Run_ShipPostProcessor
8430 -- Type : Private
8431 -- Function : Import Shipments and based on a selected value
8432 -- (Last Task Code), execute all necessary steps to validate,
8433 -- calculate, complete and integrate with other applications
8434 -- in order to generate a suiatble INL Shipment.
8435 --
8436 -- Pre-reqs : None
8437 -- Parameters :
8438 -- IN : p_group_id IN NUMBER
8439 -- IN : p_org_id IN NUMBER => Operating unit
8440 --
8441 -- OUT : x_return_status OUT NOCOPY VARCHAR2
8442 --
8443 -- Version : Current version 1.0
8444 --
8445 -- Notes :
8446 PROCEDURE Run_ShipPostProcessor(
8447 p_group_id IN NUMBER,
8448 p_org_id IN NUMBER,
8449 x_return_status OUT NOCOPY VARCHAR2
8450 ) IS
8451 -- Cursor to get all interfaced and COMPLETED
8452 -- Shipments to validate and Last Task Code
8453 -- value to control dynamically the
8454 -- Post process actions
8455 CURSOR c_ship_headers
8456 IS
8457 SELECT h.ship_header_id,
8458 h.ship_header_int_id,
8459 h.last_task_code ,
8460 h.transaction_type
8461 FROM inl_ship_headers_int h
8462 WHERE
8463 (
8464 p_group_id IS NULL
8465 OR h.group_id = p_group_id
8466 )
8467 AND (
8468 p_org_id IS NULL
8469 OR h.org_id = p_org_id
8470
8471 )
8472 AND h.processing_status_code = 'COMPLETED'
8473 AND h.transaction_type <> 'DELETE'
8474 AND h.last_task_code >= '20'
8475 AND EXISTS
8476 (
8477 SELECT 1
8478 FROM inl_ship_lines_int l
8479 WHERE l.ship_header_int_id = h.ship_header_int_id
8480 AND ROWNUM < 2
8481 )
8482 AND h.request_id = fnd_global.conc_request_id;
8483
8484 TYPE ship_hdr_list_type IS TABLE OF c_ship_headers%ROWTYPE;
8485 ship_hdr_list ship_hdr_list_type;
8486 l_proc_name CONSTANT VARCHAR2(100) := 'Run_ShipPostProcessor';
8487 l_return_status VARCHAR2(1) ;
8488 l_init_msg_list VARCHAR2(2000) := FND_API.G_FALSE;
8489 l_commit VARCHAR2(1) := FND_API.G_FALSE;
8490 l_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL;
8491 l_debug_info VARCHAR2(200) ;
8492 l_msg_data VARCHAR2(2000) ;
8493 l_msg_count NUMBER;
8494 l_msg_count_validate NUMBER;
8495 l_ship_header_id NUMBER;
8496 l_mx_last_task_code VARCHAR2(30) ;
8497 BEGIN
8498 -- Standard Beginning of Procedure/Function Logging
8499 INL_LOGGING_PVT.Log_BeginProc(
8500 p_module_name => g_module_name,
8501 p_procedure_name => l_proc_name
8502 ) ;
8503 -- Initialize API return status to success
8504 x_return_status := FND_API.G_RET_STS_SUCCESS;
8505 -- Get the Last Task Code to control
8506 -- which actions must be executed
8507 SELECT MAX(last_task_code)
8508 INTO l_mx_last_task_code
8509 FROM inl_ship_headers_int h
8510 WHERE (p_group_id IS NULL
8511 OR h.group_id = p_group_id)
8512 AND (p_org_id IS NULL
8513 OR h.org_id = p_org_id)
8514 AND h.processing_status_code = 'RUNNING'
8515 AND (h.transaction_type = 'DELETE'
8516 OR EXISTS (SELECT 1
8517 FROM inl_ship_lines_int l
8518 WHERE l.ship_header_int_id = h.ship_header_int_id
8519 AND ROWNUM < 2
8520 )
8521 )
8522 ;
8523 IF l_mx_last_task_code >= '10' THEN
8524 l_debug_info := 'Import Shipment Headers. Call Import_Headers';
8525 INL_LOGGING_PVT.Log_Statement(
8526 p_module_name => g_module_name,
8527 p_procedure_name => l_proc_name,
8528 p_debug_info => l_debug_info
8529 );
8530 Import_Headers(p_group_id => p_group_id,
8531 p_org_id => p_org_id,
8532 x_return_status => l_return_status) ;
8533 -- If any errors happen abort API.
8534 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8535 RAISE FND_API.G_EXC_ERROR;
8536 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8537 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8538 END IF;
8539 l_debug_info := 'Import Shipment Lines. Call Import_Lines';
8540 INL_LOGGING_PVT.Log_Statement(
8541 p_module_name => g_module_name,
8542 p_procedure_name => l_proc_name,
8543 p_debug_info => l_debug_info
8544 );
8545 Import_Lines(p_group_id => p_group_id, p_org_id => p_org_id, x_return_status => l_return_status) ;
8546 -- If any errors happen abort API.
8547 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8548 RAISE FND_API.G_EXC_ERROR;
8549 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8550 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8551 END IF;
8552 OPEN c_ship_headers;
8553 FETCH c_ship_headers BULK COLLECT INTO ship_hdr_list;
8554
8555 CLOSE c_ship_headers;
8556 IF NVL(ship_hdr_list.LAST, 0) > 0 THEN
8557 FOR i IN ship_hdr_list.FIRST .. ship_hdr_list.LAST
8558 LOOP
8559 l_ship_header_id := ship_hdr_list(i) .ship_header_id;
8560 INL_LOGGING_PVT.Log_Variable(
8561 p_module_name => g_module_name,
8562 p_procedure_name => l_proc_name,
8563 p_var_name => 'l_ship_header_id',
8564 p_var_value => l_ship_header_id
8565 ) ;
8566
8567 INL_LOGGING_PVT.Log_Variable(
8568 p_module_name => g_module_name,
8569 p_procedure_name => l_proc_name,
8570 p_var_name => 'ship_hdr_list(i).last_task_code',
8571 p_var_value => ship_hdr_list(i).last_task_code
8572 ) ;
8573 -- Generate Charges and Integration with QP
8574 IF ship_hdr_list(i) .last_task_code >= '20' THEN
8575 l_debug_info := 'Generate Charges(Integration with QP). Call INL_CHARGE_PVT.Generate_Charges';
8576 INL_LOGGING_PVT.Log_Statement(
8577 p_module_name => g_module_name,
8578 p_procedure_name => l_proc_name,
8579 p_debug_info => l_debug_info
8580 );
8581 INL_CHARGE_PVT.Generate_Charges(
8582 p_api_version => 1.0,
8583 p_init_msg_list => l_init_msg_list,
8584 p_commit => l_commit,
8585 p_ship_header_id => l_ship_header_id,
8586 x_return_status => l_return_status,
8587 x_msg_count => l_msg_count,
8588 x_msg_data => l_msg_data
8589 ) ;
8590 -- If any errors happen abort the process.
8591 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8592 RAISE FND_API.G_EXC_ERROR;
8593 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8594 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8595 END IF;
8596 END IF;
8597 -- Process LCM Shipment Actions
8598 IF ship_hdr_list(i) .last_task_code >= '30' THEN
8599 INL_LOGGING_PVT.Log_Variable(
8600 p_module_name => g_module_name,
8601 p_procedure_name => l_proc_name,
8602 p_var_name => 'ship_hdr_list(i).last_task_code',
8603 p_var_value => ship_hdr_list(i).last_task_code
8604 ) ;
8605
8606 l_debug_info := 'Call INL_SHIPMENT_PVT.ProcessAction';
8607 INL_LOGGING_PVT.Log_Statement(
8608 p_module_name => g_module_name,
8609 p_procedure_name => l_proc_name,
8610 p_debug_info => l_debug_info
8611 );
8612 INL_SHIPMENT_PVT.ProcessAction(p_api_version => 1.0,
8613 p_init_msg_list => l_init_msg_list,
8614 p_commit => l_commit,
8615 p_ship_header_id => l_ship_header_id,
8616 p_task_code => ship_hdr_list(i) .last_task_code,
8617 x_return_status => l_return_status,
8618 x_msg_count => l_msg_count,
8619 x_msg_data => l_msg_data) ;
8620 -- If any errors happen abort the process.
8621 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8622 RAISE FND_API.G_EXC_ERROR;
8623 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8624 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8625 END IF;
8626 END IF;
8627 END LOOP;
8628 END IF;
8629 END IF;
8630 -- Standard End of Procedure/Function Logging
8631 INL_LOGGING_PVT.Log_EndProc(
8632 p_module_name => g_module_name,
8633 p_procedure_name => l_proc_name
8634 );
8635 EXCEPTION
8636 WHEN FND_API.G_EXC_ERROR THEN
8637 -- Standard Expected Error Logging
8638 INL_LOGGING_PVT.Log_ExpecError (
8639 p_module_name => g_module_name,
8640 p_procedure_name => l_proc_name
8641 );
8642 x_return_status := FND_API.G_RET_STS_ERROR;
8643 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8644 -- Standard Unexpected Error Logging
8645 INL_LOGGING_PVT.Log_UnexpecError (
8646 p_module_name => g_module_name,
8647 p_procedure_name => l_proc_name
8648 );
8649 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8650 WHEN OTHERS THEN
8651 -- Standard Unexpected Error Logging
8652 INL_LOGGING_PVT.Log_UnexpecError (
8653 p_module_name => g_module_name,
8654 p_procedure_name => l_proc_name
8655 );
8656 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8657 IF FND_MSG_PUB.Check_Msg_Level(
8658 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
8659 ) THEN
8660 FND_MSG_PUB.Add_Exc_Msg(
8661 p_pkg_name => g_pkg_name,
8662 p_procedure_name => l_proc_name
8663 );
8664 END IF;
8665
8666 END Run_ShipPostProcessor;
8667 -- Utility name : Import_LCMShipments
8668 -- Type : Public
8669 -- Function : This is called by a concurrent program to Import Shipments.
8670 --
8671 -- Pre-reqs : None
8672 -- Parameters :
8673 -- IN : p_group_id IN NUMBER
8674 -- p_org_id IN NUMBER, => Operating unit
8675 --
8676 -- OUT : errbuf OUT NOCOPY VARCHAR2
8677 -- retcode OUT NOCOPY VARCHAR2
8678 --
8679 -- Version : Current version 1.0
8680 --
8681 -- Notes :
8682 PROCEDURE Import_LCMShipments(
8683 errbuf OUT NOCOPY VARCHAR2,
8684 retcode OUT NOCOPY VARCHAR2,
8685 p_group_id IN NUMBER,
8686 p_org_id IN NUMBER
8687 ) IS
8688 l_proc_name CONSTANT VARCHAR2(30) := 'Import_LCMShipments';
8689 l_return_status VARCHAR2(1) ;
8690 l_msg_data VARCHAR2(2000) ;
8691 l_debug_info VARCHAR2(200) ;
8692 l_msg_count NUMBER;
8693 BEGIN
8694 errbuf := NULL;
8695 retcode := 0;
8696 -- Standard Beginning of Procedure/Function Logging
8697 INL_LOGGING_PVT.Log_BeginProc(
8698 p_module_name => g_module_name,
8699 p_procedure_name => l_proc_name
8700 ) ;
8701 l_debug_info := 'Call Import_LCMShipments';
8702 INL_LOGGING_PVT.Log_Statement(
8703 p_module_name => g_module_name,
8704 p_procedure_name => l_proc_name,
8705 p_debug_info => l_debug_info
8706 );
8707 Import_LCMShipments(
8708 p_api_version => 1.0,
8709 p_init_msg_list => FND_API.G_TRUE,
8710 p_commit => FND_API.G_TRUE,
8711 p_group_id => p_group_id,
8712 p_org_id => p_org_id,
8713 x_return_status => l_return_status,
8714 x_msg_count => l_msg_count,
8715 x_msg_data => l_msg_data
8716 ) ;
8717 IF l_msg_count = 1 THEN
8718 FND_FILE.PUT_LINE(FND_FILE.LOG, l_msg_data);
8719 retcode := 1;
8720 ELSIF l_msg_count > 1 THEN
8721 FND_FILE.PUT_LINE(FND_FILE.LOG, l_msg_count|| ' warnings found.' );
8722 FOR i IN 1 ..l_msg_count
8723 LOOP
8724 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MSG_PUB.get (i, FND_API.g_false) );
8725 END LOOP;
8726 retcode := 1;
8727 END IF;
8728 -- If any errors happen abort API.
8729 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8730 RAISE FND_API.G_EXC_ERROR;
8731 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8732 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8733 END IF;
8734 -- Standard End of Procedure/Function Logging
8735 INL_LOGGING_PVT.Log_EndProc(
8736 p_module_name => g_module_name,
8737 p_procedure_name => l_proc_name
8738 );
8739 EXCEPTION
8740 WHEN FND_API.G_EXC_ERROR THEN
8741 -- Standard Expected Error Logging
8742 INL_LOGGING_PVT.Log_ExpecError (
8743 p_module_name => g_module_name,
8744 p_procedure_name => l_proc_name
8745 );
8746 retcode := 1;
8747 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8748 -- Standard Unexpected Error Logging
8749 INL_LOGGING_PVT.Log_UnexpecError(
8750 p_module_name => g_module_name,
8751 p_procedure_name => l_proc_name
8752 );
8753 retcode := 2;
8754 WHEN OTHERS THEN
8755 -- Standard Unexpected Error Logging
8756 INL_LOGGING_PVT.Log_UnexpecError(
8757 p_module_name => g_module_name,
8758 p_procedure_name => l_proc_name
8759 );
8760 retcode := 2;
8761 END Import_LCMShipments;
8762 -- API name : Import_LCMShipments
8763 -- Type : Public
8764 -- Function : Main Import procedure. It calls the Pre and Post
8765 -- processors to validate and import a Shipment.
8766 --
8767 -- Pre-reqs : None
8768 -- Parameters :
8769 -- IN : p_api_version IN NUMBER
8770 -- p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
8771 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
8772 -- p_group_id IN NUMBER
8773 -- p_org_id IN NUMBER, => Operating unit
8774 --
8775 -- OUT : x_return_status OUT NOCOPY VARCHAR2
8776 -- OUT : x_msg_count OUT NOCOPY NUMBER
8777 -- OUT : x_msg_data OUT NOCOPY VARCHAR2
8778 --
8779 -- Version : Current version 1.0
8780 --
8781 -- Notes :
8782 PROCEDURE Import_LCMShipments(
8783 p_api_version IN NUMBER,
8784 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
8785 p_commit IN VARCHAR2 := FND_API.G_FALSE,
8786 p_group_id IN NUMBER,
8787 p_org_id IN NUMBER,
8788 x_return_status OUT NOCOPY VARCHAR2,
8789 x_msg_count OUT NOCOPY NUMBER,
8790 x_msg_data OUT NOCOPY VARCHAR2
8791 ) IS
8792 l_api_name CONSTANT VARCHAR2(30) := 'Import_LCMShipments';
8793 l_api_version CONSTANT NUMBER := 1.0;
8794 l_return_status VARCHAR2(1);
8795 l_msg_count NUMBER;
8796 l_msg_data VARCHAR2(2000);
8797 l_debug_info VARCHAR2(200);
8798 BEGIN
8799 -- Standard Beginning of Procedure/Function Logging
8800 INL_LOGGING_PVT.Log_BeginProc(
8801 p_module_name => g_module_name,
8802 p_procedure_name => l_api_name
8803 ) ;
8804 -- Standard Start of API savepoint
8805 SAVEPOINT Import_LCMShipments_PVT;
8806 -- Initialize message list if p_init_msg_list is set to TRUE.
8807 IF FND_API.to_Boolean(p_init_msg_list) THEN
8808 FND_MSG_PUB.initialize;
8809 END IF;
8810 -- Standard call to check for call compatibility
8811 IF NOT FND_API.Compatible_API_Call(
8812 p_current_version_number => l_api_version,
8813 p_caller_version_number => p_api_version,
8814 p_api_name => l_api_name,
8815 p_pkg_name => g_pkg_name
8816 ) THEN
8817 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8818 END IF;
8819 -- Initialize API return status to success
8820 x_return_status := FND_API.G_RET_STS_SUCCESS;
8821 l_debug_info := 'Run Shipment Pre-Processor(First level validation). Call Run_ShipPreProcessor';
8822 INL_LOGGING_PVT.Log_Statement(
8823 p_module_name => g_module_name,
8824 p_procedure_name => l_api_name,
8825 p_debug_info => l_debug_info
8826 );
8827 Run_ShipPreProcessor(
8828 p_group_id => p_group_id,
8829 p_org_id => p_org_id,
8830 x_return_status => l_return_status
8831 ) ;
8832 -- If any errors happen abort API.
8833 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8834 RAISE FND_API.G_EXC_ERROR;
8835 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8836 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8837 END IF;
8838 l_debug_info := 'Run Shipment Post-Processor. Call Run_ShipPostProcessor';
8839 INL_LOGGING_PVT.Log_Statement(
8840 p_module_name => g_module_name,
8841 p_procedure_name => l_api_name,
8842 p_debug_info => l_debug_info
8843 );
8844 Run_ShipPostProcessor(
8845 p_group_id => p_group_id,
8846 p_org_id => p_org_id,
8847 x_return_status => l_return_status
8848 ) ;
8849 -- If any errors happen abort API.
8850 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8851 RAISE FND_API.G_EXC_ERROR;
8852 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8853 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8854 END IF;
8855 -- Standard check of p_commit.
8856 IF FND_API.To_Boolean(p_commit) THEN
8857 COMMIT WORK;
8858 END IF;
8859 -- Standard call to get message count and if count is 1, get message info.
8860 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.g_false, p_count => x_msg_count, p_data => x_msg_data) ;
8861 -- Standard End of Procedure/Function Logging
8862 INL_LOGGING_PVT.Log_EndProc(
8863 p_module_name => g_module_name,
8864 p_procedure_name => l_api_name
8865 );
8866 EXCEPTION
8867 WHEN FND_API.G_EXC_ERROR THEN
8868 -- Standard Expected Error Logging
8869 INL_LOGGING_PVT.Log_ExpecError (
8870 p_module_name => g_module_name,
8871 p_procedure_name => l_api_name
8872 );
8873 ROLLBACK TO Import_LCMShipments_PVT;
8874 x_return_status := FND_API.G_RET_STS_ERROR;
8875 FND_MSG_PUB.Count_And_Get(
8876 p_encoded => FND_API.g_false,
8877 p_count => x_msg_count,
8878 p_data => x_msg_data
8879 );
8880 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8881 -- Standard Unexpected Error Logging
8882 INL_LOGGING_PVT.Log_UnexpecError (
8883 p_module_name => g_module_name,
8884 p_procedure_name => l_api_name
8885 );
8886 ROLLBACK TO Import_LCMShipments_PVT;
8887 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8888 FND_MSG_PUB.Count_And_Get(
8889 p_encoded => FND_API.g_false,
8890 p_count => x_msg_count,
8891 p_data => x_msg_data
8892 );
8893 WHEN OTHERS THEN
8894 -- Standard Unexpected Error Logging
8895 INL_LOGGING_PVT.Log_UnexpecError (
8896 p_module_name => g_module_name,
8897 p_procedure_name => l_api_name
8898 );
8899 ROLLBACK TO Import_LCMShipments_PVT;
8900 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8901 IF FND_MSG_PUB.Check_Msg_Level(
8902 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
8903 ) THEN
8904 FND_MSG_PUB.Add_Exc_Msg(
8905 p_pkg_name => g_pkg_name,
8906 p_procedure_name => l_api_name
8907 );
8908 END IF;
8909 FND_MSG_PUB.Count_And_Get(
8910 p_encoded => FND_API.g_false,
8911 p_count => x_msg_count,
8912 p_data => x_msg_data
8913 );
8914 END Import_LCMShipments;
8915 -- Utility name : Import_LCMMatches
8916 -- Type : Public
8917 -- Function : This is called by a concurrent
8918 -- program to import LCM Match Lines.
8919 --
8920 -- Pre-reqs : None
8921 -- Parameters :
8922 -- IN : p_group_id IN NUMBER
8923 --
8924 -- OUT : errbuf OUT NOCOPY VARCHAR2
8925 -- retcode OUT NOCOPY VARCHAR2
8926 --
8927 -- Version : Current version 1.0
8928 --
8929 -- Notes :
8930 PROCEDURE Import_LCMMatches(
8931 errbuf OUT NOCOPY VARCHAR2,
8932 retcode OUT NOCOPY VARCHAR2,
8933 p_group_id IN NUMBER
8934 ) IS
8935 l_proc_name CONSTANT VARCHAR2(30) := 'Import_LCMMatches';
8936 l_return_status VARCHAR2(1) ;
8937 l_msg_data VARCHAR2(2000) ;
8938 l_debug_info VARCHAR2(200) ;
8939 l_msg_count NUMBER;
8940 BEGIN
8941 errbuf := NULL;
8942 retcode := 0;
8943 -- Standard Beginning of Procedure/Function Logging
8944 INL_LOGGING_PVT.Log_BeginProc(
8945 p_module_name => g_module_name,
8946 p_procedure_name => l_proc_name
8947 ) ;
8948 l_debug_info := 'Call Import_LCMMatches';
8949 INL_LOGGING_PVT.Log_Statement(
8950 p_module_name => g_module_name,
8951 p_procedure_name => l_proc_name,
8952 p_debug_info => l_debug_info
8953 );
8954 Import_LCMMatches(p_api_version => 1.0,
8955 p_init_msg_list => FND_API.G_TRUE,
8956 p_commit => FND_API.G_TRUE,
8957 p_group_id => p_group_id,
8958 x_return_status => l_return_status,
8959 x_msg_count => l_msg_count,
8960 x_msg_data => l_msg_data) ;
8961 IF l_msg_count = 1 THEN
8962 FND_FILE.PUT_LINE(FND_FILE.LOG, l_msg_data);
8963 retcode := 1;
8964 ELSIF l_msg_count > 1 THEN
8965 FND_FILE.PUT_LINE(FND_FILE.LOG, l_msg_count|| ' warnings found.' );
8966 FOR i IN 1 ..l_msg_count
8967 LOOP
8968 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MSG_PUB.get (i, FND_API.g_false) );
8969 END LOOP;
8970 retcode := 1;
8971 END IF;
8972 -- If any errors happen abort API.
8973 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8974 RAISE FND_API.G_EXC_ERROR;
8975 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8976 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8977 END IF;
8978 -- Standard End of Procedure/Function Logging
8979 INL_LOGGING_PVT.Log_EndProc(
8980 p_module_name => g_module_name,
8981 p_procedure_name => l_proc_name
8982 );
8983 EXCEPTION
8984 WHEN FND_API.G_EXC_ERROR THEN
8985 -- Standard Expected Error Logging
8986 INL_LOGGING_PVT.Log_ExpecError (
8987 p_module_name => g_module_name,
8988 p_procedure_name => l_proc_name
8989 );
8990 retcode := 1;
8991 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8992 -- Standard Unexpected Error Logging
8993 INL_LOGGING_PVT.Log_UnexpecError(
8994 p_module_name => g_module_name,
8995 p_procedure_name => l_proc_name
8996 );
8997 retcode := 2;
8998 WHEN OTHERS THEN
8999 -- Standard Unexpected Error Logging
9000 INL_LOGGING_PVT.Log_UnexpecError(
9001 p_module_name => g_module_name,
9002 p_procedure_name => l_proc_name
9003 );
9004 retcode := 2;
9005 END Import_LCMMatches;
9006 -- API name : Import_LCMMatches
9007 -- Type : Public
9008 -- Function : Main Import procedure. It calls the
9009 -- Pre and Post processors to import Match Lines
9010 --
9011 -- Pre-reqs : None
9012 -- Parameters :
9013 -- IN : p_api_version IN NUMBER
9014 -- p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
9015 -- p_commit IN VARCHAR2 := FND_API.G_FALSE
9016 -- p_group_id IN NUMBER
9017 --
9018 -- OUT : x_return_status OUT NOCOPY VARCHAR2
9019 -- x_msg_count OUT NOCOPY NUMBER
9020 -- x_msg_data OUT NOCOPY VARCHAR2
9021 --
9022 -- Version : Current version 1.0
9023 --
9024 -- Notes :
9025 PROCEDURE Import_LCMMatches(
9026 p_api_version IN NUMBER,
9027 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
9028 p_commit IN VARCHAR2 := FND_API.G_FALSE,
9029 p_group_id IN NUMBER,
9030 x_return_status OUT NOCOPY VARCHAR2,
9031 x_msg_count OUT NOCOPY NUMBER,
9032 x_msg_data OUT NOCOPY VARCHAR2
9033 ) IS
9034 l_api_name CONSTANT VARCHAR2(30) := 'Import_LCMMatches';
9035 l_api_version CONSTANT NUMBER := 1.0;
9036 l_return_status VARCHAR2(1) ;
9037 l_msg_count NUMBER;
9038 l_msg_data VARCHAR2(2000) ;
9039 l_debug_info VARCHAR2(200) ;
9040 BEGIN
9041 -- Standard Beginning of Procedure/Function Logging
9042 INL_LOGGING_PVT.Log_BeginProc(
9043 p_module_name => g_module_name,
9044 p_procedure_name => l_api_name
9045 ) ;
9046
9047 -- Standard Start of API savepoint
9048 SAVEPOINT Import_LCMMatches_PVT;
9049 -- Initialize message list if p_init_msg_list is set to TRUE.
9050 IF FND_API.to_Boolean(p_init_msg_list) THEN
9051 FND_MSG_PUB.initialize;
9052 END IF;
9053 -- Standard call to check for call compatibility
9054 IF NOT FND_API.Compatible_API_Call(
9055 p_current_version_number => l_api_version,
9056 p_caller_version_number => p_api_version,
9057 p_api_name => l_api_name,
9058 p_pkg_name => g_pkg_name)
9059 THEN
9060 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9061 END IF;
9062 -- Initialize API return status to success
9063 x_return_status := FND_API.G_RET_STS_SUCCESS;
9064 l_debug_info := 'Run Match Pre-Processor(first level validation). Call Run_MatchPreProcessor';
9065 INL_LOGGING_PVT.Log_Statement(
9066 p_module_name => g_module_name,
9067 p_procedure_name => l_api_name,
9068 p_debug_info => l_debug_info
9069 );
9070
9071 Run_MatchPreProcessor(p_group_id => p_group_id, x_return_status => l_return_status) ;
9072 -- If any errors happen abort API.
9073 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9074 RAISE FND_API.G_EXC_ERROR;
9075 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9076 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9077 END IF;
9078 l_debug_info := 'Run Match Post-Processor. Call Run_MatchPostProcessor';
9079 INL_LOGGING_PVT.Log_Statement(
9080 p_module_name => g_module_name,
9081 p_procedure_name=> l_api_name,
9082 p_debug_info => l_debug_info
9083 );
9084 Run_MatchPostProcessor(
9085 p_group_id => p_group_id,
9086 x_return_status => l_return_status
9087 ) ;
9088 -- If any errors happen abort API.
9089 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9090 RAISE FND_API.G_EXC_ERROR;
9091 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9092 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9093 END IF;
9094 -- Standard check of p_commit.
9095 IF FND_API.To_Boolean(p_commit) THEN
9096 COMMIT WORK;
9097 END IF;
9098 -- Standard call to get message count and if count is 1, get message info.
9099 FND_MSG_PUB.Count_And_Get(
9100 p_encoded => FND_API.g_false,
9101 p_count => x_msg_count,
9102 p_data => x_msg_data
9103 ) ;
9104 -- Standard End of Procedure/Function Logging
9105 INL_LOGGING_PVT.Log_EndProc(
9106 p_module_name => g_module_name,
9107 p_procedure_name => l_api_name
9108 );
9109 EXCEPTION
9110 WHEN FND_API.G_EXC_ERROR THEN
9111 -- Standard Expected Error Logging
9112 INL_LOGGING_PVT.Log_ExpecError (
9113 p_module_name => g_module_name,
9114 p_procedure_name => l_api_name
9115 );
9116 ROLLBACK TO Import_LCMMatches_PVT;
9117 x_return_status := FND_API.G_RET_STS_ERROR;
9118 FND_MSG_PUB.Count_And_Get(
9119 p_encoded => FND_API.g_false,
9120 p_count => x_msg_count,
9121 p_data => x_msg_data
9122 );
9123 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9124 -- Standard Unexpected Error Logging
9125 INL_LOGGING_PVT.Log_UnexpecError (
9126 p_module_name => g_module_name,
9127 p_procedure_name => l_api_name
9128 );
9129 ROLLBACK TO Import_LCMMatches_PVT;
9130 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9131 FND_MSG_PUB.Count_And_Get(
9132 p_encoded => FND_API.g_false,
9133 p_count => x_msg_count,
9134 p_data => x_msg_data
9135 );
9136 WHEN OTHERS THEN
9137 -- Standard Unexpected Error Logging
9138 INL_LOGGING_PVT.Log_UnexpecError (
9139 p_module_name => g_module_name,
9140 p_procedure_name => l_api_name
9141 );
9142 ROLLBACK TO Import_LCMMatches_PVT;
9143 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9144 IF FND_MSG_PUB.Check_Msg_Level(
9145 p_message_level =>FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
9146 ) THEN
9147 FND_MSG_PUB.Add_Exc_Msg(
9148 p_pkg_name => g_pkg_name,
9149 p_procedure_name => l_api_name
9150 );
9151 END IF;
9152 FND_MSG_PUB.Count_And_Get(
9153 p_encoded => FND_API.g_false,
9154 p_count => x_msg_count,
9155 p_data => x_msg_data
9156 );
9157
9158 END Import_LCMMatches;
9159
9160 END INL_INTERFACE_PVT;