[Home] [Help]
PACKAGE BODY: APPS.WSH_UTIL_CORE
Source
1 PACKAGE BODY WSH_UTIL_CORE as
2 /* $Header: WSHUTCOB.pls 120.21.12010000.3 2008/08/22 08:06:08 mvudugul ship $ */
3
4 /* H projects: pricing integration csun
5 add global variable to cache the value so in the same session
6 the call to fnd to check if fte is installed is called only once */
7
8 G_OTM_PROFILE_VALUE VARCHAR2(1) := NULL; -- OTM R12
9 G_FTE_IS_INSTALLED VARCHAR2(1) := NULL;
10 G_TP_IS_INSTALLED VARCHAR2(1) := NULL;
11 G_WMS_IS_INSTALLED VARCHAR2(1) := NULL;
12 c_wms_code_present VARCHAR2(1) := 'Y';
13
14 -- used by procedure Get_Currency_Conversion_Type
15 G_CURRENCY_CONVERSION_TYPE VARCHAR2(30) := NULL;
16 --
17 -- PACKAGE VARIABLES
18 --
19
20 -- Description: Variable to suppress printing of messages to
21 -- file. This should be set to 'Y' by concurrent
22 -- programs before they use the println and print
23 -- procedures
24 G_ALLOW_PRINT VARCHAR2(1) := 'N';
25
26 -- Description: Variable to count the number of records in the
27 -- PL/SQL table-g_loc_desc_Tab.This helps in maintaining
28 -- the latest record in the table and deleting the
29 -- oldest record.
30 G_COUNT_RECORDS NUMBER := 0;
31
32 -- Description: Variable to set the debug level.
33 -- This should be set greater than 0 by concurrent
34 -- programs before they can use the println and print
35 -- procedures
36
37 G_LOG_LEVEL NUMBER := 0;
38 --
39
40 -- PACKAGE CONSTANTS
41 --
42
43 -- Description: Constant used to control maximum number of characters
44 -- that a debug string can take
45 G_MAX_LENGTH CONSTANT NUMBER := 239;
46
47 G_STORE_MSG_IN_TABLE BOOLEAN default FALSE ;
48
49 g_cust_Id_Tab Id_Tab_Type;
50 g_org_Id_Tab Id_Tab_Type;
51 g_master_org_tab Id_Tab_Type;
52
53
54 -- Description: Generic tab of records for passing column information
55 g_loc_desc_Tab Loc_Info_Tab;
56 G_PKG_NAME CONSTANT VARCHAR2(50) := 'WSH_UTIL_CORE';
57
58 --Cache size constant
59 g_cache_max_size NUMBER := power(2,31);
60 --
61
62 --Cache for retriving Customer/Supplier/Carrier/Organization from locations.
63 g_customer_from_location WSH_UTIL_CORE.tbl_varchar;
64 g_organization_from_location WSH_UTIL_CORE.tbl_varchar;
65
66 --
67
68 --
69 -- FUNCTION: Get_Location_Description
70 -- Purpose: Function gives a description of the location
71 -- based on the location_id
72 -- Arguments: p_location_id - Location identifier
73 -- p_format - Format for description
74 -- Return Values: Returns a description of the location in VARCHAR2
75 -- Notes: p_format supports the following:
76 -- 'CSZ' - City, State, Zip
77 -- 'CSZC' - City, State, Zip, Country
78 -- 'CODE' - Location Code (Should be called for DSNO
79 -- ONLY
80 -- 'NEW UI CODE' - Location Code generated for UI display
81 -- 'NEW UI CODE INFO' - Detailed Loc for UI (bug 1516290)
82 --
83
84 FUNCTION Get_Location_Description (
85 p_location_id IN NUMBER,
86 p_format IN VARCHAR2
87 ) RETURN VARCHAR2 IS
88
89
90 l_loc_string VARCHAR2(1000);
91 l_exists_flag VARCHAR2(1):= 'N';
92 l_counter NUMBER := 0;
93
94 CURSOR Loc_Info_Cur (v_location_id NUMBER) IS
95 SELECT wsh_location_id
96 ,source_location_id
97 ,location_source_code
98 ,location_code
99 ,address1
100 ,city
101 ,state
102 ,country
103 ,postal_code
104 ,ui_location_code
105 , NULL -- hr_location_code
106 FROM wsh_locations
107 where wsh_location_id = v_location_id;
108
109 CURSOR c_hr_locs (v_location_id NUMBER) IS
110 SELECT b.location_code
111 FROM hr_locations_all a,
112 hr_locations_all_tl b
113 WHERE a.location_id = v_location_id
114 AND a.location_id = b.location_id
115 AND b.language=USERENV('LANG');
116
117 l_index NUMBER;
118 --
119 l_debug_on BOOLEAN;
120 --
121 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_LOCATION_DESCRIPTION';
122
123 --
124 BEGIN
125 --
126 --
127 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
128 --
129 IF l_debug_on IS NULL
130 THEN
131 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
132 END IF;
133 --
134 IF l_debug_on THEN
135 WSH_DEBUG_SV.push(l_module_name);
136 --
137 WSH_DEBUG_SV.log(l_module_name,'P_LOCATION_ID',P_LOCATION_ID);
138 WSH_DEBUG_SV.log(l_module_name,'P_FORMAT',P_FORMAT);
139 END IF;
140 --
141 IF p_location_id IS NULL THEN
142 --
143 IF l_debug_on THEN
144 WSH_DEBUG_SV.pop(l_module_name);
145 END IF;
146 --
147 RETURN NULL;
148 END IF;
149
150 IF g_loc_desc_Tab.count > 0 THEN
151 l_index := g_loc_desc_Tab.FIRST;
152 WHILE l_index IS NOT NULL LOOP
153 IF g_loc_desc_Tab(l_index).wsh_location_id = p_location_id THEN
154 l_exists_flag := 'Y';
155 /* index of the current record */
156 l_counter := l_index;
157 EXIT;
158 END IF;
159
160 l_index := g_loc_desc_Tab.NEXT(l_index);
161 END LOOP;
162 END IF;
163
164 IF l_exists_flag = 'N' THEN
165 G_COUNT_RECORDS := MOD(G_COUNT_RECORDS + 1,10);
166 OPEN Loc_Info_Cur (p_location_id);
167 FETCH Loc_Info_Cur INTO g_loc_desc_Tab(G_COUNT_RECORDS);
168 IF Loc_Info_Cur%NOTFOUND THEN
169 IF Loc_Info_Cur%ISOPEN THEN
170 CLOSE Loc_Info_Cur;
171 END IF;
172 IF l_debug_on THEN
173 WSH_DEBUG_SV.log(l_module_name,'Loc_Info_Cur%NOTFOUND');
174 WSH_DEBUG_SV.pop(l_module_name);
175 END IF;
176 --
177 RETURN NULL;
178 END IF;
179 CLOSE Loc_Info_Cur;
180 /* index of the current record, afterincrementing */
181 l_counter := G_COUNT_RECORDS;
182
183 END IF;
184
185 IF p_format = 'CODE' THEN
186 IF g_loc_desc_Tab(l_counter).location_source_code = 'HZ' THEN
187 l_loc_string
188 := to_char(g_loc_desc_Tab(l_counter).source_location_id);
189 ELSE
190 IF g_loc_desc_Tab(l_counter).hr_location_code IS NULL THEN
191 OPEN c_hr_locs(g_loc_desc_Tab(l_counter).source_location_id) ;
192 FETCH c_hr_locs INTO g_loc_desc_Tab(l_counter).hr_location_code;
193 IF c_hr_locs%NOTFOUND THEN
194 CLOSE c_hr_locs;
195 IF l_debug_on THEN
196 WSH_DEBUG_SV.log(l_module_name,'c_hr_locs%NOTFOUND');
197 END IF;
198 END IF;
199 CLOSE c_hr_locs;
200 END IF;
201 l_loc_string := g_loc_desc_Tab(l_counter).hr_location_code;
202 IF l_debug_on THEN
203 WSH_DEBUG_SV.log(l_module_name,'hr_location_code',l_loc_string);
204 END IF;
205 END IF;
206
207 ELSIF p_format = 'NEW UI CODE' THEN
208 l_loc_string := g_loc_desc_Tab(l_counter).location_code ||
209 ':' || NVL(g_loc_desc_Tab(l_counter).city,
210 substrb(g_loc_desc_Tab(l_counter).address1,1,60)) ;
211
212
213
214 ELSIF p_format = 'NEW UI CODE INFO' THEN
215 l_loc_string := g_loc_desc_Tab(l_counter).ui_location_code;
216
217 ELSIF (p_format = 'CSZ' OR p_format = 'CSZC') THEN
218
219 IF g_loc_desc_Tab(l_counter).city IS NOT NULL THEN
220 l_loc_string := l_loc_string || g_loc_desc_Tab(l_counter).city;
221 END IF;
222 IF g_loc_desc_Tab(l_counter).state IS NOT NULL THEN
223 l_loc_string := l_loc_string || ', ' || g_loc_desc_Tab(l_counter).state;
224 END IF;
225 IF g_loc_desc_Tab(l_counter).postal_code IS NOT NULL THEN
226 l_loc_string := l_loc_string || ', ' || g_loc_desc_Tab(l_counter).postal_code;
227 END IF;
228 IF g_loc_desc_Tab(l_counter).country IS NOT NULL
229 AND p_format <> 'CSZ' THEN
230 l_loc_string := l_loc_string || ', ' || g_loc_desc_Tab(l_counter).country;
231 END IF;
232 ELSE -- bad format_code
233 FND_MESSAGE.SET_NAME('WSH','WSH_PUB_INVALID_PARAMETER');
234 FND_MESSAGE.Set_Token('PARAMETER',p_format);
235 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR,
236 l_module_name);
237 IF l_debug_on THEN
238 WSH_DEBUG_SV.pop(l_module_name);
239 END IF;
240 RAISE FND_API.G_EXC_ERROR;
241 /*
242 l_loc_string := 'WRONG'|| g_loc_desc_Tab(l_counter).location_code;
243 */
244 END IF;
245 IF Loc_Info_Cur%ISOPEN THEN
246 CLOSE Loc_Info_Cur;
247 END IF;
248
249 --
250 IF l_debug_on THEN
251 WSH_DEBUG_SV.pop(l_module_name);
252 END IF;
253 --
254 RETURN l_loc_string;
255
256 EXCEPTION
257 WHEN others THEN
258 IF l_debug_on THEN
259 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
260 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
261 raise;
262 END IF;
263
264 END Get_Location_Description;
265 --
266 -- PROCEDURE: Site_Code_to_Site_id
267 -- PURPOSE : Maps site_code to site_id
268 -- ARGUMENTS : p_site_code - site code that needs to be mapped
269 -- p_site_id - site id for the code
270 -- x_return_status - WSH_UTIL_CORE.G_RET_STS_SUCCESS or NOT
271 --
272
273 PROCEDURE Site_Code_to_Site_id(p_site_code IN VARCHAR2,
274 p_site_id OUT NOCOPY NUMBER,
275 x_return_status OUT NOCOPY VARCHAR2) IS
276
277 CURSOR get_id (c_site_code VARCHAR2) IS
278 select SITE_USE_ID from HZ_CUST_SITE_USES_ALL
279 where SITE_USE_CODE = c_site_code;
280
281
282 --
283 l_debug_on BOOLEAN;
284 --
285 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'SITE_CODE_TO_SITE_ID';
286 --
287 BEGIN
288
289 --
290 -- Debug Statements
291 --
292 --
293 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
294 --
295 IF l_debug_on IS NULL
296 THEN
297 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
298 END IF;
299 --
300 IF l_debug_on THEN
301 WSH_DEBUG_SV.push(l_module_name);
302 --
303 WSH_DEBUG_SV.log(l_module_name,'P_SITE_CODE',P_SITE_CODE);
304 END IF;
305 --
306 p_site_id := NULL;
307 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
308
309 OPEN get_id(p_site_code);
310 FETCH get_id INTO p_site_id;
311 CLOSE get_id;
312
313 IF (p_site_id IS NULL) THEN
314 FND_MESSAGE.Set_Name('WSH','WSH_SITE_LOCATION_UNDEFINED');
315 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
316 IF get_id%ISOPEN THEN
317 CLOSE get_id;
318 END IF;
319 END IF;
320
321 --
322 -- Debug Statements
323 --
324 IF l_debug_on THEN
325 WSH_DEBUG_SV.pop(l_module_name);
326 END IF;
327 --
328 Exception
329 when others then
330 IF get_id%ISOPEN THEN
331 CLOSE get_id;
332 END IF;
333 wsh_util_core.default_handler('WSH_UTIL_CORE.Site_Code_to_Site_id');
334 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
335
336 --
337 -- Debug Statements
338 --
339 IF l_debug_on THEN
340 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
341 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
342 END IF;
343 --
344 END Site_Code_to_Site_id;
345
346
347
348
349 --
350 -- PROCEDURE: Get_Location_Id
351 -- Purpose: Convert Organization_id or ship_to_site_id to
352 -- a location_id
353 -- Arguments: p_mode - 'CUSTOMER SITE', 'VENDOR SITE' or 'ORG'
354 -- p_source_id - organization_id or site_id to convert
355 -- based on p_mode
356 -- x_location_id - Converted to location_id
357 -- x_api_status - WSH_UTIL_CORE.G_RET_STS_SUCCESS
358 -- WSH_UTIL_CORE.G_RET_STS_ERROR
359 -- If Error message can be retrieved using FND_MESSAGE.GET
360 -- Description: Gets location information for a particular inventory
361 -- organization using hr_locations view
362 --
363
364 PROCEDURE Get_Location_Id (
365 p_mode IN VARCHAR2,
366 p_source_id IN NUMBER,
367 x_location_id OUT NOCOPY NUMBER,
368 x_api_status OUT NOCOPY VARCHAR2,
369 p_transfer_location IN BOOLEAN DEFAULT TRUE
370 ) IS
371
372 l_loc_rec WSH_MAP_LOCATION_REGION_PKG.loc_rec_type;
373 l_return_status VARCHAR2(10);
374 l_location_id NUMBER;
375 l_num_warnings NUMBER default 0;
376 l_num_errors NUMBER default 0;
377
378 CURSOR org_to_loc (v_org_id NUMBER) IS
379 SELECT location_id
380 FROM wsh_ship_from_orgs_v
381 WHERE organization_id = v_org_id;
382
383
384 CURSOR site_to_loc (v_site_id NUMBER) IS
385 SELECT ps.location_id
386 FROM hz_party_sites ps,
387 hz_cust_acct_sites_all ca,
388 hz_cust_site_uses_all su
389 WHERE su.site_use_id = v_site_id
390 AND su.cust_acct_site_id = ca.cust_acct_site_id
391 AND ca.party_site_id = ps.party_site_id;
392
393 --
394 l_debug_on BOOLEAN;
395 --
396 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' ||
397 'GET_LOCATION_ID';
398 --
399 BEGIN
400
401 --
402 --
403 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
404 --
405 IF l_debug_on IS NULL
406 THEN
407 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
408 END IF;
409 --
410 IF l_debug_on THEN
411 WSH_DEBUG_SV.push(l_module_name);
412 --
413 WSH_DEBUG_SV.log(l_module_name,'P_MODE',P_MODE);
414 WSH_DEBUG_SV.log(l_module_name,'P_SOURCE_ID',P_SOURCE_ID);
415 WSH_DEBUG_SV.log(l_module_name,'p_transfer_location',p_transfer_location);
416 END IF;
417 --
418 x_api_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
419
420 x_location_id := null;
421
422 IF p_mode = 'ORG' THEN
423
424 IF ( g_org_Id_Tab.EXISTS(p_source_id) ) THEN
425
426 x_location_id := g_org_Id_Tab(p_source_id);
427
428 ELSE
429
430 OPEN org_to_loc (p_source_id);
431 FETCH org_to_loc
432 INTO l_location_id;
433 CLOSE org_to_loc;
434
435 IF l_debug_on THEN
436 WSH_DEBUG_SV.log(l_module_name,'l_location_id',l_location_id);
437 END IF;
438
439 IF (l_location_id IS NULL) THEN
440 --Bug 4891887 and 4891881 If call is made from Constraints then ignore the warning
441 IF WSH_FTE_CONSTRAINT_FRAMEWORK.G_CALLING_API IS NULL THEN
442 --The following message is modified as part of bug # 4256319
443 FND_MESSAGE.Set_Name('WSH','WSH_DET_NO_LOCATION_FOR_ORG');
444 x_api_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
445 wsh_util_core.add_message(x_api_status,l_module_name);
446 ELSE
447 WSH_FTE_CONSTRAINT_FRAMEWORK.G_CALLING_API :=NULL;
448 x_location_id :=l_location_id;
449 END IF;
450 --
451 IF l_debug_on THEN
452 WSH_DEBUG_SV.pop(l_module_name);
453 END IF;
454 --
455 RETURN;
456 ELSE
457
458 IF l_debug_on THEN
459 WSH_DEBUG_SV.log(l_module_name,'Calling Transfer_Location');
460 END IF;
461
462 WSH_MAP_LOCATION_REGION_PKG.Transfer_Location(
463 p_source_type => 'HR',
464 p_source_location_id => l_location_id,
465 p_transfer_location => p_transfer_location,
466 p_online_region_mapping => FALSE,
467 x_loc_rec => l_loc_rec,
468 x_return_status => l_return_status
469 );
470 IF l_debug_on THEN
471 WSH_DEBUG_SV.log(l_module_name,'Transfer_Location returns ',
472 l_return_status);
473 WSH_DEBUG_SV.log(l_module_name,'location_id returned ',
474 l_loc_rec.wsh_location_id);
475 END IF;
476 wsh_util_core.api_post_call(
477 p_return_status => l_return_status,
478 x_num_warnings => l_num_warnings,
479 x_num_errors => l_num_errors);
480
481 IF l_debug_on THEN
482 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
483 END IF;
484
485 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
486 OR (l_loc_rec.WSH_LOCATION_ID IS NULL) THEN
487 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
488 END IF;
489 g_org_Id_Tab(p_source_id) := l_loc_rec.WSH_LOCATION_ID;
490 x_location_id := l_loc_rec.WSH_LOCATION_ID;
491 END IF;
492 END IF;
493
494 ELSIF p_mode in ('CUSTOMER SITE', 'SITE') THEN
495
496 IF ( g_cust_Id_Tab.EXISTS(p_source_id) ) THEN
497
498 x_location_id := g_cust_Id_Tab(p_source_id);
499
500 ELSE
501
502 OPEN site_to_loc (p_source_id);
503 FETCH site_to_loc
504 INTO l_location_id;
505 CLOSE site_to_loc;
506
507 IF (l_location_id IS NULL) THEN
508 FND_MESSAGE.Set_Name('WSH','WSH_SITE_LOCATION_UNDEFINED');
509 x_api_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
510 wsh_util_core.add_message(x_api_status,l_module_name);
511 IF site_to_loc%ISOPEN THEN
512 CLOSE site_to_loc;
513 END IF;
514 --
515 IF l_debug_on THEN
516 WSH_DEBUG_SV.pop(l_module_name);
517 END IF;
518 --
519 RETURN;
520 ELSE
521 IF l_debug_on THEN
522 WSH_DEBUG_SV.log(l_module_name,'Calling Transfer_Location');
523 END IF;
524
525 WSH_MAP_LOCATION_REGION_PKG.Transfer_Location(
526 p_source_type => 'HZ',
527 p_source_location_id => l_location_id,
528 p_transfer_location => p_transfer_location,
529 p_online_region_mapping => FALSE,
530 x_loc_rec => l_loc_rec,
531 x_return_status => l_return_status
532 );
533 wsh_util_core.api_post_call(
534 p_return_status => l_return_status,
535 x_num_warnings => l_num_warnings,
536 x_num_errors => l_num_errors);
537
538 IF l_debug_on THEN
539 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
540 END IF;
541
542 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS )
543 OR (l_loc_rec.WSH_LOCATION_ID IS NULL) THEN
544 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
545 END IF;
546 g_cust_Id_Tab(p_source_id) := l_loc_rec.WSH_LOCATION_ID;
547 x_location_id := l_loc_rec.WSH_LOCATION_ID;
548
549 END IF;
550
551 END IF;
552
553 ELSIF p_mode = 'VENDOR SITE' THEN
554 x_location_id := p_source_id;
555 --
556 IF l_debug_on THEN
557 WSH_DEBUG_SV.pop(l_module_name);
558 END IF;
559 --
560 RETURN;
561 ELSE
562 FND_MESSAGE.Set_Name('WSH','WSH_API_INVALID_PARAM_VALUE');
563 x_api_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
564 --
565 IF l_debug_on THEN
566 WSH_DEBUG_SV.pop(l_module_name);
567 END IF;
568 --
569 RETURN;
570 END IF;
571
572 IF l_debug_on THEN
573 WSH_DEBUG_SV.pop(l_module_name);
574 END IF;
575 --
576 EXCEPTION
577 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
578 x_api_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
579 fnd_message.set_name('WSH','WSH_XC_INVALID_LOCATION');
580 wsh_util_core.add_message(x_api_status,l_module_name);
581 --
582 IF l_debug_on THEN
583 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:G_RET_STS_WARNING');
584 END IF;
585 --
586 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
587 x_api_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
588 --
589 IF l_debug_on THEN
590 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:G_EXC_UNEXPECTED_ERROR');
591 END IF;
592 --
593 WHEN FND_API.G_EXC_ERROR THEN
594 IF (NOT p_transfer_location)
595 AND (l_loc_rec.WSH_LOCATION_ID IS NULL) THEN
596 x_api_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
597 ELSE
598 x_api_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
599 END IF;
600 --
601 IF l_debug_on THEN
602 WSH_DEBUG_SV.log(l_module_name,'x_api_status ',x_api_status);
603 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:G_EXC_ERROR');
604 END IF;
605 --
606 WHEN OTHERS THEN
607 WSH_FTE_CONSTRAINT_FRAMEWORK.G_CALLING_API :=NULL;
608 IF org_to_loc%ISOPEN THEN
609 CLOSE org_to_loc;
610 END IF;
611 IF site_to_loc%ISOPEN THEN
612 CLOSE site_to_loc;
613 END IF;
614 FND_MESSAGE.Set_Name('WSH','WSH_UNEXPECTED_ERROR');
615 x_api_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
616
617 --
618 IF l_debug_on THEN
619 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
620 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
621 END IF;
622 --
623 END Get_Location_Id;
624
625
626 --
627 -- PROCEDURE: get_master_from_org
628 -- PURPOSE: Obtain master organization id for an organization_id
629 -- Arguments: p_org_id - organization_id
630 -- x_master_org_id - Master organization id for input organization_id
631 -- x_return_status -
632 -- WSH_UTIL_CORE.G_RET_STS_SUCCESS
633 -- WSH_UTIL_CORE.G_RET_STS_ERROR
634 -- Notes: Throws exception when fails
635 --
636
637 PROCEDURE get_master_from_org(
638 p_org_id IN NUMBER,
639 x_master_org_id OUT NOCOPY NUMBER,
640 x_return_status OUT NOCOPY VARCHAR2)
641 IS
642
643 CURSOR c_get_master_from_org(c_org_id IN NUMBER) IS
644 SELECT master_organization_id
645 FROM mtl_parameters
646 WHERE organization_id = c_org_id;
647
648 org_not_found EXCEPTION;
649
650 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
651 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'get_master_from_org';
652
653 BEGIN
654
655 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
656
657 --
658 IF l_debug_on THEN
659 WSH_DEBUG_SV.push(l_module_name);
660 END IF;
661 --
662
663 IF g_master_org_tab.EXISTS(p_org_id) THEN
664
665 x_master_org_id := g_master_org_tab(p_org_id);
666
667 ELSE
668
669 OPEN c_get_master_from_org(p_org_id);
670 FETCH c_get_master_from_org INTO x_master_org_id;
671 IF c_get_master_from_org%NOTFOUND THEN
672 CLOSE c_get_master_from_org;
673 RAISE org_not_found;
674 END IF;
675 CLOSE c_get_master_from_org;
676
677 g_master_org_tab(p_org_id) := x_master_org_id;
678
679 END IF;
680
681 --
682 IF l_debug_on THEN
683 WSH_DEBUG_SV.pop(l_module_name);
684 END IF;
685 --
686
687 EXCEPTION
688 WHEN org_not_found THEN
689 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
690 --
691 IF l_debug_on THEN
692 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:org in mtl_parameters not found');
693 END IF;
694 --
695 WHEN others THEN
696 IF c_get_master_from_org%ISOPEN THEN
697 CLOSE c_get_master_from_org;
698 END IF;
699 WSH_UTIL_CORE.default_handler('WSH_UTIL_CORE.get_master_from_org');
700 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
701 --
702 IF l_debug_on THEN
703 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
704 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
705 END IF;
706 --
707
708 END get_master_from_org;
709
710
711 --
712 -- FUNCTION: Org_To_Location
713 -- PURPOSE: Convert organization_id to location_id
714 -- Arguments: p_org_id - organization_id
715 -- Return Values: Location_id
716 -- Notes: Throws exception when failing to convert
717 --
718
719 FUNCTION Org_To_Location (
720 p_org_id IN NUMBER,
721 p_transfer_location IN BOOLEAN DEFAULT FALSE
722 ) RETURN NUMBER IS
723 l_api_status VARCHAR2(1);
724 l_location_id NUMBER;
725 --
726 l_debug_on BOOLEAN;
727 --
728 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'ORG_TO_LOCATION';
729 --
730 BEGIN
731
732 --
733 --
734 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
735 --
736 IF l_debug_on IS NULL
737 THEN
738 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
739 END IF;
740 --
741 IF l_debug_on THEN
742 WSH_DEBUG_SV.push(l_module_name);
743 --
744 WSH_DEBUG_SV.log(l_module_name,'P_ORG_ID',P_ORG_ID);
745 WSH_DEBUG_SV.logmsg(l_module_name,'Call Get_Location_id');
746 END IF;
747 --
748 l_location_id := -1;
749
750 Get_Location_Id (
751 'ORG',
752 p_org_id,
753 l_location_id,
754 l_api_status,
755 p_transfer_location);
756
757 IF l_api_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
758 IF l_api_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
759 l_location_id := NULL;
760 ELSE
761 RAISE NO_DATA_FOUND;
762 END IF;
763 END IF;
764
765 --
766 -- Debug Statements
767 --
768 IF l_debug_on THEN
769 WSH_DEBUG_SV.log(l_module_name,'LOCATION ID',l_location_id);
770 WSH_DEBUG_SV.pop(l_module_name);
771 END IF;
772 --
773 RETURN l_location_id;
774
775 END Org_To_Location;
776
777
778 --
779 -- FUNCTION: Cust_Site_To_Location
780 -- PURPOSE: Convert site_id to location_id
781 -- Arguments: p_site_id - site_id
782 -- Return Values: Location_id
783 -- Notes: Throws exception when failing to convert
784 --
785
786 FUNCTION Cust_Site_To_Location (
787 p_site_id IN NUMBER,
788 p_transfer_location IN BOOLEAN DEFAULT TRUE
789 ) RETURN NUMBER IS
790 l_api_status VARCHAR2(1);
791 l_location_id NUMBER;
792 --
793 l_debug_on BOOLEAN;
794 --
795 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CUST_SITE_TO_LOCATION';
796 --
797 BEGIN
798
799 --
800 -- Debug Statements
801 --
802 --
803 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
804 --
805 IF l_debug_on IS NULL
806 THEN
807 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
808 END IF;
809 --
810 IF l_debug_on THEN
811 WSH_DEBUG_SV.push(l_module_name);
812 --
813 WSH_DEBUG_SV.log(l_module_name,'P_SITE_ID',P_SITE_ID);
814 WSH_DEBUG_SV.logmsg(l_module_name,'Call Get_Location_id');
815 END IF;
816 --
817 l_location_id := -1;
818
819 Get_Location_Id (
820 'CUSTOMER SITE',
821 p_site_id,
822 l_location_id,
823 l_api_status,
824 p_transfer_location);
825
826 IF l_api_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
827 IF l_api_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
828 l_location_id := NULL;
829 ELSE
830 RAISE NO_DATA_FOUND;
831 END IF;
832 END IF;
833
834 --
835 -- Debug Statements
836 --
837 IF l_debug_on THEN
838 WSH_DEBUG_SV.log(l_module_name,'LOCATION ID',l_location_id);
839 WSH_DEBUG_SV.pop(l_module_name);
840 END IF;
841 --
842 RETURN l_location_id;
843
844 END Cust_Site_To_Location;
845
846 --
847 -- FUNCTION: Vendor_Site_To_Location
848 -- PURPOSE: Convert vendor site_id to location_id
849 -- Arguments: p_site_id - site_id
850 -- Return Values: Location_id
851 -- Notes: Throws exception when failing to convert
852 --
853
854 FUNCTION Vendor_Site_To_Location (
855 p_site_id IN NUMBER,
856 p_transfer_location IN BOOLEAN DEFAULT TRUE
857 ) RETURN NUMBER IS
858 l_api_status VARCHAR2(1);
859 l_location_id NUMBER;
860 --
861 l_debug_on BOOLEAN;
862 --
863 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'VENDOR_SITE_TO_LOCATION';
864 --
865 BEGIN
866
867 --
868 -- Debug Statements
869 --
870 --
871 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
872 --
873 IF l_debug_on IS NULL
874 THEN
875 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
876 END IF;
877 --
878 IF l_debug_on THEN
879 WSH_DEBUG_SV.push(l_module_name);
880 --
881 WSH_DEBUG_SV.log(l_module_name,'P_SITE_ID',P_SITE_ID);
882 WSH_DEBUG_SV.logmsg(l_module_name,'Call Get_Location_id');
883 END IF;
884 --
885 l_location_id := -1;
886
887 Get_Location_Id (
888 'VENDOR SITE',
889 p_site_id,
890 l_location_id,
891 l_api_status,
892 p_transfer_location);
893
894 IF l_api_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
895 IF l_api_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
896 l_location_id := NULL;
897 ELSE
898 RAISE NO_DATA_FOUND;
899 END IF;
900 END IF;
901
902 --
903 -- Debug Statements
904 --
905 IF l_debug_on THEN
906 WSH_DEBUG_SV.log(l_module_name,'LOCATION ID',l_location_id);
907 WSH_DEBUG_SV.pop(l_module_name);
908 END IF;
909 --
910 RETURN l_location_id;
911
912 END Vendor_Site_To_Location;
913
914 --
915 -- FUNCTION: Ship_Method_To_Freight
916 -- PURPOSE: Convert Ship_Method_Code to Freight_Code
917 -- Arguments: p_ship_method_code, p_organization_id
918 -- Return Values: Freight_Code
919 -- Notes: Throws exception when failing to convert
920 --
921
922 FUNCTION Ship_Method_To_Freight (
923 p_ship_method_code IN VARCHAR2,
924 p_organization_id IN NUMBER
925 ) RETURN VARCHAR2 IS
926
927 ---BUG No:4241880.Cursor changed
928 CURSOR get_freight IS
929 SELECT freight_code
930 FROM wsh_carriers wc,wsh_carrier_services wcs,wsh_org_carrier_services wocs
931 WHERE wc.carrier_id=wcs.carrier_id AND
932 wcs.carrier_service_id=wocs.carrier_service_id AND
933 wcs.ship_method_code = p_ship_method_code AND
934 wocs.organization_id = p_organization_id;
935 ---BUG No:4241880.Cursor changed ends.
936
937 /*
938 CURSOR get_freight IS
939 SELECT freight_code
940 FROM wsh_carrier_ship_methods_v
941 WHERE ship_method_code = p_ship_method_code AND
942 organization_id = p_organization_id;
943 */
944
945 l_freight_code VARCHAR2(30);
946
947 --
948 l_debug_on BOOLEAN;
949 --
950 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'SHIP_METHOD_TO_FREIGHT';
951 --
952 BEGIN
953
954 --
955 -- Debug Statements
956 --
957 --
958 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
959 --
960 IF l_debug_on IS NULL
961 THEN
962 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
963 END IF;
964 --
965 IF l_debug_on THEN
966 WSH_DEBUG_SV.push(l_module_name);
967 --
968 WSH_DEBUG_SV.log(l_module_name,'P_SHIP_METHOD_CODE',P_SHIP_METHOD_CODE);
969 WSH_DEBUG_SV.log(l_module_name,'P_ORGANIZATION_ID',P_ORGANIZATION_ID);
970 END IF;
971 --
972 IF (p_ship_method_code IS NULL) THEN
973 --
974 -- Debug Statements
975 --
976 IF l_debug_on THEN
977 WSH_DEBUG_SV.pop(l_module_name);
978 END IF;
979 --
980 RETURN NULL;
981 END IF;
982
983 OPEN get_freight;
984 FETCH get_freight INTO l_freight_code;
985
986 IF (get_freight%NOTFOUND) THEN
987 CLOSE get_freight;
988 fnd_message.set_name('WSH','WSH_FREIGHT_CODE_NOT_FOUND');
989 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR);
990 RAISE NO_DATA_FOUND;
991 END IF;
992
993 CLOSE get_freight;
994
995 --
996 -- Debug Statements
997 --
998 IF l_debug_on THEN
999 WSH_DEBUG_SV.pop(l_module_name);
1000 END IF;
1001 --
1002 RETURN l_freight_code;
1003
1004 END Ship_Method_To_Freight;
1005
1006 --
1007 -- This set of functions and procedures can be used by the concurrent
1008 -- programs to print messages to the log file. The following are
1009 -- supported:
1010 --
1011
1012 --
1013 -- Procedure: Enable_Concurrent_Log_Print
1014 -- Purpose: Enable printing of log messages to concurrent
1015 -- program log files
1016 -- Arguments: None
1017 --
1018
1019 PROCEDURE Enable_Concurrent_Log_Print IS
1020 --
1021 --l_debug_on BOOLEAN;
1022 --
1023 --l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'ENABLE_CONCURRENT_LOG_PRINT';
1024 --
1025 BEGIN
1026
1027 --
1028 --l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1029 --
1030 --IF l_debug_on IS NULL
1031 --THEN
1032 --l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1033 --END IF;
1034 --
1035 G_ALLOW_PRINT := 'Y';
1036
1037 END Enable_Concurrent_Log_Print;
1038
1039 --
1040 -- Procedure: Set_Log_Level
1041 -- Purpose: Set Appropriate log level to print
1042 -- debug messages to the concurrent program log file
1043 -- Arguments: p_log_level -- Log level to set
1044 --
1045
1046 PROCEDURE Set_Log_Level(
1047 p_log_level IN NUMBER
1048 ) IS
1049 --
1050 l_file_name VARCHAR2(32767);
1051 l_return_status VARCHAR2(32767);
1052 l_msg_data VARCHAR2(32767);
1053 l_msg_count NUMBER;
1054 --l_debug_on BOOLEAN;
1055 --
1056 --l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'SET_LOG_LEVEL';
1057 --
1058 BEGIN
1059 --
1060 -- Debug Statements
1061 --
1062 --
1063 --l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1064 --
1065 --IF l_debug_on IS NULL
1066 --THEN
1067 --l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1068 --END IF;
1069 --
1070 --IF l_debug_on THEN
1071 --WSH_DEBUG_SV.push(l_module_name);
1072 --
1073 --WSH_DEBUG_SV.log(l_module_name,'P_LOG_LEVEL',P_LOG_LEVEL);
1074 --END IF;
1075 --
1076 --
1077 -- Added to turn on/off the WSH debugger depending on log level
1078 --
1079 BEGIN
1080 IF p_log_level > 0
1081 THEN
1082 --fnd_profile.put('WSH_DEBUG_MODE','T');
1083 fnd_profile.put('WSH_DEBUG_MODULE','%');
1084 fnd_profile.put('WSH_DEBUG_LEVEL',WSH_DEBUG_SV.C_STMT_LEVEL);
1085 wsh_debug_sv.start_debugger(l_file_name,l_return_status,l_msg_count,l_msg_data);
1086 --wsh_debug_sv.start_debugger(l_file_name,l_return_status,l_msg_data,l_msg_count);
1087 -- Ignore errors;
1088 ELSE
1089 --fnd_profile.put('WSH_DEBUG_MODE','F');
1090 wsh_debug_sv.stop_debugger;
1091 END IF;
1092 EXCEPTION
1093 WHEN OTHERS THEN
1094 NULL;
1095 END;
1096 --
1097 G_LOG_LEVEL := p_log_level;
1098 --
1099 -- Debug Statements
1100 --
1101 --IF l_debug_on THEN
1102 --WSH_DEBUG_SV.pop(l_module_name);
1103 --END IF;
1104 --
1105 END Set_Log_Level;
1106
1107 --
1108 -- Procedure: Print
1109 -- Purpose: Prints a line of message text to the log file
1110 -- and does not insert a new line at the end
1111 -- program log files
1112 -- Arguments: p_msg - message text to print
1113 --
1114
1115 PROCEDURE Print(
1116 p_msg IN VARCHAR2
1117 ) IS
1118 l_insert_text VARCHAR2(80);
1119 l_remainder_text VARCHAR2(2000);
1120 i NUMBER := 0;
1121 --
1122 l_debug_on BOOLEAN;
1123 --
1124 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'PRINT';
1125 --
1126 BEGIN
1127 --
1128 --
1129 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1130 --
1131 IF l_debug_on IS NULL
1132 THEN
1133 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1134 END IF;
1135 --
1136 IF G_ALLOW_PRINT = 'Y' AND G_LOG_LEVEL > 0 THEN
1137 IF LENGTH(p_msg) > G_MAX_LENGTH THEN
1138 l_remainder_text := SUBSTRB(p_msg,1,G_MAX_LENGTH);
1139 ELSE
1140 l_remainder_text := p_msg;
1141 END IF;
1142
1143 LOOP
1144 l_insert_text := SUBSTRB(l_remainder_text,1,80);
1145 l_remainder_text := SUBSTRB(l_remainder_text,81);
1146 fnd_file.put(FND_FILE.LOG, l_insert_text);
1147
1148 IF l_remainder_text IS NOT NULL THEN
1149 fnd_file.new_line(FND_FILE.LOG);
1150 END IF;
1151
1152 EXIT WHEN l_remainder_text IS NULL;
1153 i := i + 1;
1154 EXIT WHEN i = 25;
1155 END LOOP;
1156 END IF;
1157 END Print;
1158
1159 --
1160 -- Procedure: Println
1161 -- Purpose: Prints a line of message text to the log file
1162 -- and inserts a new line at the end
1163 -- program log files
1164 -- Arguments: p_msg - message text to print
1165 --
1166
1167 PROCEDURE Println(
1168 p_msg IN VARCHAR2
1169 ) IS
1170 l_insert_text VARCHAR2(80);
1171 l_remainder_text VARCHAR2(2000);
1172 i NUMBER := 0;
1173 --
1174 l_debug_on BOOLEAN;
1175 --
1176 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'PRINTLN';
1177 --
1178 BEGIN
1179 --
1180 --
1181 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1182 --
1183 IF l_debug_on IS NULL
1184 THEN
1185 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1186 END IF;
1187 --
1188 IF G_ALLOW_PRINT = 'Y' AND G_LOG_LEVEL > 0 THEN
1189 IF LENGTH(p_msg) > G_MAX_LENGTH THEN
1190 l_remainder_text := SUBSTRB(p_msg,1,G_MAX_LENGTH);
1191 ELSE
1192 l_remainder_text := p_msg;
1193 END IF;
1194
1195 LOOP
1196 l_insert_text := SUBSTRB(l_remainder_text,1,80);
1197 l_remainder_text := SUBSTRB(l_remainder_text,81);
1198 fnd_file.put_line(FND_FILE.LOG, l_insert_text);
1199
1200 EXIT WHEN l_remainder_text IS NULL;
1201 i := i + 1;
1202 EXIT WHEN i = 25;
1203 END LOOP;
1204 END IF;
1205
1206 END Println;
1207
1208 --
1209 -- Procedure: Println
1210 -- Purpose: Prints a new line character to the log file
1211 -- program log files
1212 -- Arguments: None
1213 --
1214
1215 PROCEDURE Println IS
1216 --
1217 l_debug_on BOOLEAN;
1218 --
1219 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'PRINTLN';
1220 --
1221 BEGIN
1222 --
1223 --
1224 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1225 --
1226 IF l_debug_on IS NULL
1227 THEN
1228 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1229 END IF;
1230 --
1231 IF G_ALLOW_PRINT = 'Y' AND G_LOG_LEVEL > 0 THEN
1232 fnd_file.new_line(FND_FILE.LOG);
1233 END IF;
1234 --
1235 END Println;
1236
1237
1238 --
1239 -- Procedure: PrintMsg
1240 -- Purpose: Prints a line of message text to the log file
1241 -- and inserts a new line at the end
1242 -- program log files irrespective of the log level
1243 -- Should be used for the debug messages which need to
1244 -- printed always
1245 -- Arguments: p_msg - message text to print
1246 --
1247
1248 PROCEDURE PrintMsg(
1249 p_msg IN VARCHAR2
1250 ) IS
1251 l_insert_text VARCHAR2(80);
1252 l_remainder_text VARCHAR2(2000);
1253 i NUMBER := 0;
1254 --
1255 l_debug_on BOOLEAN;
1256 --
1257 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'PRINTMSG';
1258 --
1259 BEGIN
1260 --
1261 --
1262 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1263 --
1264 IF l_debug_on IS NULL
1265 THEN
1266 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1267 END IF;
1268 --
1269 IF G_ALLOW_PRINT = 'Y'THEN
1270 IF LENGTH(p_msg) > G_MAX_LENGTH THEN
1271 l_remainder_text := SUBSTRB(p_msg,1,G_MAX_LENGTH);
1272 ELSE
1273 l_remainder_text := p_msg;
1274 END IF;
1275
1276 LOOP
1277 l_insert_text := SUBSTRB(l_remainder_text,1,80);
1278 l_remainder_text := SUBSTRB(l_remainder_text,81);
1279 fnd_file.put_line(FND_FILE.LOG, l_insert_text);
1280
1281 EXIT WHEN l_remainder_text IS NULL;
1282 i := i + 1;
1283 EXIT WHEN i = 25;
1284 END LOOP;
1285 END IF;
1286
1287 END PrintMsg;
1288
1289 --
1290 -- Procedure: PrintMsg
1291 -- Purpose: Prints a new line character to the log file
1292 -- program log files irrespective of the log Level
1293 -- Arguments: None
1294 --
1295
1296 PROCEDURE PrintMsg IS
1297 --
1298 l_debug_on BOOLEAN;
1299 --
1300 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'PRINTMSG';
1301 --
1302 BEGIN
1303 --
1304 --
1305 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1306 --
1307 IF l_debug_on IS NULL
1308 THEN
1309 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1310 END IF;
1311 --
1312 IF G_ALLOW_PRINT = 'Y' THEN
1313 fnd_file.new_line(FND_FILE.LOG);
1314 END IF;
1315 --
1316 END PrintMsg;
1317
1318
1319 --
1320 --
1321 -- Procedure: PrintDateTime
1322 -- Purpose: Prints system date and time to the log file
1323 -- Arguments: None
1324 --
1325
1326 PROCEDURE PrintDateTime IS
1327 l_date_time DATE;
1328 --
1329 l_debug_on BOOLEAN;
1330 --
1331 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'PRINTDATETIME';
1332 --
1333 BEGIN
1334
1335 --
1336 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1337 --
1338 IF l_debug_on IS NULL
1339 THEN
1340 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1341 END IF;
1342 --
1343 SELECT SYSDATE INTO l_date_time FROM dual;
1344 Println('Current Time: ' || to_char(l_date_time, 'DD-MON-YYYY HH24:MI:SS'));
1345
1346 END;
1347
1348
1349 FUNCTION Construct_Query(old_query VARCHAR2,
1350 pkey VARCHAR2,
1351 pkey_value VARCHAR2)
1352 RETURN VARCHAR2 IS
1353 new_query VARCHAR2(500);
1354 BEGIN
1355 IF (pkey_value IS NULL) THEN
1356 new_query := old_query||pkey||' IS NULL';
1357 ELSE
1358 new_query := old_query||pkey||' = '||pkey_value;
1359 END IF;
1360 RETURN new_query;
1361 END Construct_Query;
1362
1363
1364
1365
1366 -- Name
1367 -- Gen_Check_Unique
1368 -- Purpose
1369 -- Checks for duplicates in database
1370 -- Arguments
1371 -- query_text query to execute to test for uniqueness
1372 -- prod_name product name to send message for
1373 -- msg_name message to print if duplicate found
1374 --
1375 -- Notes
1376 -- uses DBMS_SQL package to create and execute cursor for given query
1377
1378
1379 PROCEDURE Gen_Check_Unique(p_table_name IN VARCHAR2,
1380 p_pkey1 IN VARCHAR2 ,
1381 p_pkey1_value IN VARCHAR2 ,
1382 p_is_1_char IN VARCHAR2,
1383 p_pkey2 IN VARCHAR2 ,
1384 p_pkey2_value IN VARCHAR2 ,
1385 p_is_2_char IN VARCHAR2,
1386 p_pkey3 IN VARCHAR2 ,
1387 p_pkey3_value IN VARCHAR2 ,
1388 p_is_3_char IN VARCHAR2,
1389 p_pkey4 IN VARCHAR2 ,
1390 p_pkey4_value IN VARCHAR2 ,
1391 p_is_4_char IN VARCHAR2,
1392 p_pkey5 IN VARCHAR2 ,
1393 p_pkey5_value IN VARCHAR2 ,
1394 p_is_5_char IN VARCHAR2,
1395 p_pkey6 IN VARCHAR2 ,
1396 p_pkey6_value IN VARCHAR2 ,
1397 p_is_6_char IN VARCHAR2,
1398 p_pkey7 IN VARCHAR2 ,
1399 p_pkey7_value IN VARCHAR2 ,
1400 p_is_7_char IN VARCHAR2,
1401 p_pkey8 IN VARCHAR2 ,
1402 p_pkey8_value IN VARCHAR2 ,
1403 p_is_8_char IN VARCHAR2,
1404 p_row_id IN VARCHAR2 ,
1405 p_prod_name IN VARCHAR2,
1406 p_msg_name IN VARCHAR2) IS
1407 rec_cursor INTEGER;
1408 any_found INTEGER;
1409
1410 query_string VARCHAR2(500);
1411 query_param VARCHAR2(500);
1412 new_value VARCHAR2(80);
1413 pkey_value VARCHAR2(80);
1414
1415 --
1416 l_debug_on BOOLEAN;
1417 --
1418 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GEN_CHECK_UNIQUE';
1419 --
1420 BEGIN
1421 --
1422 -- Debug Statements
1423 --
1424 --
1425 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1426 --
1427 IF l_debug_on IS NULL
1428 THEN
1429 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1430 END IF;
1431 --
1432 IF l_debug_on THEN
1433 WSH_DEBUG_SV.push(l_module_name);
1434 --
1435 WSH_DEBUG_SV.log(l_module_name,'PROD_NAME',P_PROD_NAME);
1436 WSH_DEBUG_SV.log(l_module_name,'MSG_NAME',P_MSG_NAME);
1437 END IF;
1438
1439 query_string := 'SELECT '||p_pkey1||' FROM '||p_table_name||' WHERE ';
1440 query_param := query_string;
1441
1442 IF p_pkey1_value IS NULL THEN
1443 pkey_value := NULL;
1444 ELSE
1445 pkey_value := ':x_pkey1_value';
1446 END IF;
1447 query_string := Construct_Query(query_param,p_pkey1,pkey_value);
1448 IF (p_pkey2 IS NOT NULL) THEN
1449 query_param := query_string||' AND ';
1450 IF p_pkey2_value IS NULL THEN
1451 pkey_value := NULL;
1452 ELSE
1453 pkey_value := ':x_pkey2_value';
1454 END IF;
1455 query_string := Construct_Query(query_param,p_pkey2,pkey_value);
1456 END IF;
1457 IF (p_pkey3 IS NOT NULL) THEN
1458 query_param := query_string||' AND ';
1459 IF p_pkey3_value IS NULL THEN
1460 pkey_value := NULL;
1461 ELSE
1462 pkey_value := ':x_pkey3_value';
1463 END IF;
1464 query_string := Construct_Query(query_param,p_pkey3,pkey_value);
1465 END IF;
1466 IF (p_pkey4 IS NOT NULL) THEN
1467 query_param := query_string||' AND ';
1468 IF p_pkey4_value IS NULL THEN
1469 pkey_value := NULL;
1470 ELSE
1471 pkey_value := ':x_pkey4_value';
1472 END IF;
1473 query_string := Construct_Query(query_param,p_pkey4,pkey_value);
1474 END IF;
1475 IF (p_pkey5 IS NOT NULL) THEN
1476 query_param := query_string||' AND ';
1477 IF p_pkey5_value IS NULL THEN
1478 pkey_value := NULL;
1479 ELSE
1480 pkey_value := ':x_pkey5_value';
1481 END IF;
1482 query_string := Construct_Query(query_param,p_pkey5,pkey_value);
1483 END IF;
1484 IF (p_pkey6 IS NOT NULL) THEN
1485 query_param := query_string||' AND ';
1486 IF p_pkey6_value IS NULL THEN
1487 pkey_value := NULL;
1488 ELSE
1489 pkey_value := ':x_pkey6_value';
1490 END IF;
1491 query_string := Construct_Query(query_param,p_pkey6,pkey_value);
1492 END IF;
1493 IF (p_pkey7 IS NOT NULL) THEN
1494 query_param := query_string||' AND ';
1495 IF p_pkey7_value IS NULL THEN
1496 pkey_value := NULL;
1497 ELSE
1498 pkey_value := ':x_pkey7_value';
1499 END IF;
1500 query_string := Construct_Query(query_param,p_pkey7,pkey_value);
1501 END IF;
1502 IF (p_pkey8 IS NOT NULL) THEN
1503 query_param := query_string||' AND ';
1504 IF p_pkey8_value IS NULL THEN
1505 pkey_value := NULL;
1506 ELSE
1507 pkey_value := ':x_pkey8_value';
1508 END IF;
1509 query_string := Construct_Query(query_param,p_pkey8,pkey_value);
1510 END IF;
1511 IF (p_row_id IS NOT NULL) THEN
1512 query_string := query_string||' AND ROWID <> '||':x_row_id';
1513 END IF;
1514
1515 --
1516 IF l_debug_on THEN
1517 WSH_DEBUG_SV.log(l_module_name,'query_string',query_string);
1518 END IF;
1519
1520 rec_cursor := dbms_sql.open_cursor;
1521 dbms_sql.parse(rec_cursor,query_string,dbms_sql.v7);
1522
1523 IF p_pkey1 IS NOT NULL AND p_pkey1_value IS NOT NULL THEN
1524 IF (p_is_1_char = 'Y') THEN
1525 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey1_value', p_pkey1_value);
1526 ELSE
1527 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey1_value', TO_NUMBER(p_pkey1_value));
1528 END IF;
1529 END IF;
1530 IF p_pkey2 IS NOT NULL AND p_pkey2_value IS NOT NULL THEN
1531 IF (p_is_2_char = 'Y') THEN
1532 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey2_value', p_pkey2_value);
1533 ELSE
1534 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey2_value', TO_NUMBER(p_pkey2_value));
1535 END IF;
1536 END IF;
1537 IF p_pkey3 IS NOT NULL AND p_pkey3_value IS NOT NULL THEN
1538 IF (p_is_3_char = 'Y') THEN
1539 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey3_value', p_pkey3_value);
1540 ELSE
1541 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey3_value', TO_NUMBER(p_pkey3_value));
1542 END IF;
1543 END IF;
1544 IF p_pkey4 IS NOT NULL AND p_pkey4_value IS NOT NULL THEN
1545 IF (p_is_4_char = 'Y') THEN
1546 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey4_value', p_pkey4_value);
1547 ELSE
1548 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey4_value', TO_NUMBER(p_pkey4_value));
1549 END IF;
1550 END IF;
1551 IF p_pkey5 IS NOT NULL AND p_pkey5_value IS NOT NULL THEN
1552 IF (p_is_5_char = 'Y') THEN
1553 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey5_value', p_pkey5_value);
1554 ELSE
1555 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey5_value', TO_NUMBER(p_pkey5_value));
1556 END IF;
1557 END IF;
1558 IF p_pkey6 IS NOT NULL AND p_pkey6_value IS NOT NULL THEN
1559 IF (p_is_6_char = 'Y') THEN
1560 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey6_value', p_pkey6_value);
1561 ELSE
1562 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey6_value', TO_NUMBER(p_pkey6_value));
1563 END IF;
1564 END IF;
1565 IF p_pkey7 IS NOT NULL AND p_pkey7_value IS NOT NULL THEN
1566 IF (p_is_7_char = 'Y') THEN
1567 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey7_value', p_pkey7_value);
1568 ELSE
1569 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey7_value', TO_NUMBER(p_pkey7_value));
1570 END IF;
1571 END IF;
1572 IF p_pkey8 IS NOT NULL AND p_pkey8_value IS NOT NULL THEN
1573 IF (p_is_8_char = 'Y') THEN
1574 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey8_value', p_pkey8_value);
1575 ELSE
1576 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_pkey8_value', TO_NUMBER(p_pkey8_value));
1577 END IF;
1578 END IF;
1579 IF p_row_id IS NOT NULL THEN
1580 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_row_id', CHARTOROWID(p_row_id));
1581 END IF;
1582
1583
1584 any_found := dbms_sql.execute_and_fetch(rec_cursor);
1585 IF (any_found > 0) THEN
1586 FND_MESSAGE.SET_NAME(p_prod_name,p_msg_name);
1587 APP_EXCEPTION.RAISE_EXCEPTION;
1588 END IF;
1589 --
1590 -- Debug Statements
1591 --
1592 IF l_debug_on THEN
1593 WSH_DEBUG_SV.pop(l_module_name);
1594 END IF;
1595 --
1596 END;
1597
1598
1599 PROCEDURE GET_ACTIVE_DATE(P_TABLE_NAME IN varchar2,
1600 P_COLUMN_NAME IN varchar2,
1601 P_ROW_ID IN varchar2,
1602 X_DATE_FETCHED OUT NOCOPY DATE)
1603 IS
1604
1605 query_text VARCHAR2(500);
1606 rec_cursor INTEGER;
1607 row_processed INTEGER;
1608 error_out EXCEPTION;
1609 date_in_table DATE;
1610 --
1611 l_debug_on BOOLEAN;
1612 --
1613 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_ACTIVE_DATE';
1614 --
1615 BEGIN
1616 --
1617 -- Debug Statements
1618 --
1619 --
1620 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1621 --
1622 IF l_debug_on IS NULL
1623 THEN
1624 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1625 END IF;
1626 --
1627 query_text := 'SELECT '|| P_COLUMN_NAME || ' FROM ' ||
1628 P_TABLE_NAME || ' WHERE ROWID = :x_row_id';
1629 IF l_debug_on THEN
1630 WSH_DEBUG_SV.push(l_module_name);
1631 --
1632 WSH_DEBUG_SV.log(l_module_name,'QUERY_TEXT',QUERY_TEXT);
1633 END IF;
1634
1635 --
1636 rec_cursor := dbms_sql.open_cursor;
1637 dbms_sql.parse(rec_cursor,query_text,dbms_sql.v7);
1638 dbms_sql.define_column(rec_cursor, 1, date_in_table);
1639
1640 DBMS_SQL.BIND_VARIABLE(rec_cursor,':x_row_id', CHARTOROWID(p_row_id));
1641 row_processed := dbms_sql.execute(rec_cursor);
1642
1643 IF ( dbms_sql.fetch_rows(rec_cursor) > 0) THEN
1644 dbms_sql.column_value( rec_cursor, 1, date_in_table);
1645 ELSE
1646 RAISE error_out;
1647 END IF;
1648
1649 dbms_sql.close_cursor(rec_cursor);
1650
1651 x_date_fetched := date_in_table;
1652
1653 --
1654 -- Debug Statements
1655 --
1656 IF l_debug_on THEN
1657 WSH_DEBUG_SV.pop(l_module_name);
1658 END IF;
1659 --
1660 EXCEPTION
1661 WHEN OTHERS THEN
1662 dbms_sql.close_cursor(rec_cursor);
1663 FND_MESSAGE.Set_Name('OE','OE_QUERY_ERROR');
1664 FND_MESSAGE.Set_Token('PACKAGE','WSH_UTIL_CORE');
1665 FND_MESSAGE.Set_Token('ORA_ERROR',to_char(sqlcode));
1666 FND_MESSAGE.Set_Token('ORA_TEXT',query_text);
1667 APP_EXCEPTION.Raise_Exception;
1668 --
1669 -- Debug Statements
1670 --
1671 IF l_debug_on THEN
1672 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1673 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1674 END IF;
1675 --
1676 END Get_Active_Date;
1677
1678 PROCEDURE Get_Active_Date(query_text IN VARCHAR2,
1679 date_fetched OUT NOCOPY DATE) IS
1680 rec_cursor INTEGER;
1681 row_processed INTEGER;
1682 error_out EXCEPTION;
1683 date_in_table DATE;
1684 --
1685 l_debug_on BOOLEAN;
1686 --
1687 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_ACTIVE_DATE';
1688 --
1689 BEGIN
1690 --
1691 -- Debug Statements
1692 --
1693 --
1694 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1695 --
1696 IF l_debug_on IS NULL
1697 THEN
1698 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1699 END IF;
1700 --
1701 IF l_debug_on THEN
1702 WSH_DEBUG_SV.push(l_module_name);
1703 --
1704 WSH_DEBUG_SV.log(l_module_name,'QUERY_TEXT',QUERY_TEXT);
1705 END IF;
1706 --
1707 rec_cursor := dbms_sql.open_cursor;
1708 dbms_sql.parse(rec_cursor,query_text,dbms_sql.v7);
1709 dbms_sql.define_column(rec_cursor, 1, date_in_table);
1710 row_processed := dbms_sql.execute(rec_cursor);
1711
1712 IF ( dbms_sql.fetch_rows(rec_cursor) > 0) THEN
1713 dbms_sql.column_value( rec_cursor, 1, date_in_table);
1714 ELSE
1715 RAISE error_out;
1716 END IF;
1717
1718 dbms_sql.close_cursor(rec_cursor);
1719
1720 date_fetched := date_in_table;
1721
1722 --
1723 -- Debug Statements
1724 --
1725 IF l_debug_on THEN
1726 WSH_DEBUG_SV.pop(l_module_name);
1727 END IF;
1728 --
1729 EXCEPTION
1730 WHEN OTHERS THEN
1731 dbms_sql.close_cursor(rec_cursor);
1732 FND_MESSAGE.Set_Name('OE','OE_QUERY_ERROR');
1733 FND_MESSAGE.Set_Token('PACKAGE','WSH_UTIL_CORE');
1734 FND_MESSAGE.Set_Token('ORA_ERROR',to_char(sqlcode));
1735 FND_MESSAGE.Set_Token('ORA_TEXT',query_text);
1736 APP_EXCEPTION.Raise_Exception;
1737 --
1738 -- Debug Statements
1739 --
1740 IF l_debug_on THEN
1741 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1742 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1743 END IF;
1744 --
1745 END Get_Active_Date;
1746
1747
1748
1749 -- Overloaded the procedure to log messages to debug file as well.
1750 PROCEDURE Add_Message ( p_message_type IN VARCHAR2,
1751 p_module_name IN VARCHAR2
1752 )
1753 IS
1754
1755 msg_buffer varchar2(2000);
1756 l_encoded_msg varchar2(2000);
1757 l_message_type VARCHAR2(1) := NULL;
1758 l_app_short_name VARCHAR2(10) := NULL;
1759 l_message_name VARCHAR2(30) := NULL;
1760
1761 --
1762 l_debug_on BOOLEAN;
1763 --
1764 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'ADD_MESSAGE';
1765 l_exception_level NUMBER;
1766 --
1767 BEGIN
1768
1769 --
1770 -- Debug Statements
1771 --
1772 --
1773 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1774 --
1775 IF l_debug_on IS NULL
1776 THEN
1777 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1778 END IF;
1779 --
1780 IF l_debug_on THEN
1781 WSH_DEBUG_SV.push(l_module_name);
1782 --
1783 WSH_DEBUG_SV.log(l_module_name,'P_MESSAGE_TYPE',P_MESSAGE_TYPE);
1784 WSH_DEBUG_SV.log(l_module_name,'P_MODULE_NAME',P_MODULE_NAME);
1785 END IF;
1786 --
1787 IF (p_message_type = 'E') THEN
1788 l_message_type := 'E';
1789 l_exception_level := WSH_DEBUG_SV.C_ERR_LEVEL;
1790 ELSIF (p_message_type = 'U') THEN
1791 l_message_type := 'U';
1792 l_exception_level := WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL;
1793 ELSIF (p_message_type = 'W') THEN
1794 l_message_type := 'W';
1795 l_exception_level := WSH_DEBUG_SV.C_ERR_LEVEL;
1796 END IF;
1797
1798 --IF WSH_UTIL_CORE.G_STORE_MSG_IN_TABLE = FALSE THEN
1799 IF G_STORE_MSG_IN_TABLE = FALSE THEN
1800 IF (l_message_type IS NOT NULL) THEN
1801 msg_buffer := fnd_message.get;
1802 IF msg_buffer is not null THEN
1803 IF l_debug_on THEN
1804 WSH_DEBUG_SV.log(l_module_name,'msg_buffer',msg_buffer);
1805 END IF;
1806 fnd_message.set_name('WSH','WSH_UTIL_MESSAGE_'||l_message_type);
1807 fnd_message.set_token('MSG_TEXT',msg_buffer);
1808 END IF;
1809 --
1810 -- Log the message in debug file as well.
1811 --
1812 IF p_module_name IS NOT NULL
1813 AND l_debug_on
1814 THEN
1815 wsh_debug_sv.logmsg
1816 (
1817 p_module_name,
1818 l_message_type || ':' || msg_buffer,
1819 l_exception_level
1820 );
1821 END IF;
1822 END IF;
1823
1824 IF msg_buffer is not null
1825 OR p_message_type = 'S' THEN
1826 fnd_msg_pub.add;
1827 END IF;
1828 ELSE
1829 l_encoded_msg := fnd_message.get_encoded ;
1830 fnd_message.parse_encoded(l_encoded_msg, l_app_short_name , l_message_name );
1831 fnd_message.set_encoded(l_encoded_msg);
1832 msg_buffer := fnd_message.get;
1833 WSH_INTEGRATION.G_MSG_TABLE(WSH_INTEGRATION.G_MSG_TABLE.COUNT + 1 ).message_name := l_message_name ;
1834 WSH_INTEGRATION.G_MSG_TABLE(WSH_INTEGRATION.G_MSG_TABLE.COUNT ).message_text := msg_buffer ;
1835 WSH_INTEGRATION.G_MSG_TABLE(WSH_INTEGRATION.G_MSG_TABLE.COUNT ).message_type := p_message_type ;
1836 --
1837 -- Log the message in debug file as well.
1838 --
1839 IF p_module_name IS NOT NULL
1840 AND l_debug_on
1841 THEN
1842 wsh_debug_sv.logmsg
1843 (
1844 p_module_name,
1845 l_message_type || ':' || msg_buffer,
1846 l_exception_level
1847 );
1848 END IF;
1849 END IF ;
1850
1851 --
1852 -- Debug Statements
1853 --
1854 IF l_debug_on THEN
1855 WSH_DEBUG_SV.pop(l_module_name);
1856 END IF;
1857 --
1858 END Add_Message;
1859
1860 PROCEDURE Add_Message ( p_message_type IN VARCHAR2 := NULL
1861 )
1862 IS
1863 BEGIN
1864 --
1865 --
1866 add_message(p_message_type, NULL);
1867 END Add_Message;
1868
1869 -- Overloaded the procedure to log messages to debug file as well.
1870
1871 -- Overloaded the procedure to set message and tokens
1872 -- Harmonization Project I **heali
1873 PROCEDURE Add_Message (
1874 p_message_type IN VARCHAR2,
1875 p_module_name IN VARCHAR2,
1876 p_error_name IN VARCHAR2,
1877 p_token1 IN VARCHAR2 DEFAULT NULL,
1878 p_value1 IN VARCHAR2 DEFAULT NULL,
1879 p_token2 IN VARCHAR2 DEFAULT NULL,
1880 p_value2 IN VARCHAR2 DEFAULT NULL,
1881 p_token3 IN VARCHAR2 DEFAULT NULL,
1882 p_value3 IN VARCHAR2 DEFAULT NULL,
1883 p_token4 IN VARCHAR2 DEFAULT NULL,
1884 p_value4 IN VARCHAR2 DEFAULT NULL,
1885 p_token5 IN VARCHAR2 DEFAULT NULL,
1886 p_value5 IN VARCHAR2 DEFAULT NULL,
1887 p_token6 IN VARCHAR2 DEFAULT NULL,
1888 p_value6 IN VARCHAR2 DEFAULT NULL,
1889 p_token7 IN VARCHAR2 DEFAULT NULL,
1890 p_value7 IN VARCHAR2 DEFAULT NULL,
1891 p_token8 IN VARCHAR2 DEFAULT NULL,
1892 p_value8 IN VARCHAR2 DEFAULT NULL) IS
1893
1894 l_debug_on BOOLEAN;
1895 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'ADD_MESSAGE';
1896 BEGIN
1897 --
1898 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1899 --
1900 IF l_debug_on IS NULL
1901 THEN
1902 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1903 END IF;
1904 --
1905 IF l_debug_on THEN
1906 WSH_DEBUG_SV.push(l_module_name);
1907 WSH_DEBUG_SV.log(l_module_name,'P_MESSAGE_TYPE',P_MESSAGE_TYPE);
1908 WSH_DEBUG_SV.log(l_module_name,'P_MODULE_NAME',P_MODULE_NAME);
1909 WSH_DEBUG_SV.log(l_module_name,'p_error_name',p_error_name);
1910 WSH_DEBUG_SV.log(l_module_name,'p_token1',p_token1);
1911 WSH_DEBUG_SV.log(l_module_name,'p_value1',p_value1);
1912 END IF;
1913
1914 IF p_error_name IS NOT NULL THEN
1915 FND_MESSAGE.SET_NAME('WSH',p_error_name);
1916
1917 IF p_token1 IS NOT NULL AND p_value1 IS NOT NULL THEN
1918 FND_MESSAGE.SET_TOKEN(p_token1, p_value1);
1919 END IF;
1920
1921 --Bugfix 6816437 Start
1922 IF p_token2 IS NOT NULL AND p_value2 IS NOT NULL THEN
1923 IF l_debug_on THEN
1924 WSH_DEBUG_SV.log(l_module_name,'p_token2',p_token2);
1925 WSH_DEBUG_SV.log(l_module_name,'p_value2',p_value2);
1926 END IF;
1927 FND_MESSAGE.SET_TOKEN(p_token2, p_value2);
1928 END IF;
1929
1930 IF p_token3 IS NOT NULL AND p_value3 IS NOT NULL THEN
1931 IF l_debug_on THEN
1932 WSH_DEBUG_SV.log(l_module_name,'p_token3',p_token3);
1933 WSH_DEBUG_SV.log(l_module_name,'p_value3',p_value3);
1934 END IF;
1935 FND_MESSAGE.SET_TOKEN(p_token3, p_value3);
1936 END IF;
1937
1938 IF p_token4 IS NOT NULL AND p_value4 IS NOT NULL THEN
1939 IF l_debug_on THEN
1940 WSH_DEBUG_SV.log(l_module_name,'p_token4',p_token4);
1941 WSH_DEBUG_SV.log(l_module_name,'p_value4',p_value4);
1942 END IF;
1943 FND_MESSAGE.SET_TOKEN(p_token4, p_value4);
1944 END IF;
1945
1946 IF p_token5 IS NOT NULL AND p_value5 IS NOT NULL THEN
1947 IF l_debug_on THEN
1948 WSH_DEBUG_SV.log(l_module_name,'p_token5',p_token5);
1949 WSH_DEBUG_SV.log(l_module_name,'p_value5',p_value5);
1950 END IF;
1951 FND_MESSAGE.SET_TOKEN(p_token5, p_value5);
1952 END IF;
1953
1954 IF p_token6 IS NOT NULL AND p_value6 IS NOT NULL THEN
1955 IF l_debug_on THEN
1956 WSH_DEBUG_SV.log(l_module_name,'p_token6',p_token6);
1957 WSH_DEBUG_SV.log(l_module_name,'p_value6',p_value6);
1958 END IF;
1959 FND_MESSAGE.SET_TOKEN(p_token6, p_value6);
1960 END IF;
1961
1962 IF p_token7 IS NOT NULL AND p_value7 IS NOT NULL THEN
1963 IF l_debug_on THEN
1964 WSH_DEBUG_SV.log(l_module_name,'p_token7',p_token7);
1965 WSH_DEBUG_SV.log(l_module_name,'p_value7',p_value7);
1966 END IF;
1967 FND_MESSAGE.SET_TOKEN(p_token7, p_value7);
1968 END IF;
1969
1970 IF p_token8 IS NOT NULL AND p_value8 IS NOT NULL THEN
1971 IF l_debug_on THEN
1972 WSH_DEBUG_SV.log(l_module_name,'p_token8',p_token8);
1973 WSH_DEBUG_SV.log(l_module_name,'p_value8',p_value8);
1974 END IF;
1975 FND_MESSAGE.SET_TOKEN(p_token8, p_value8);
1976 END IF;
1977 --Bugfix 6816437 End
1978 END IF;
1979
1980 add_message(p_message_type, p_module_name);
1981
1982 IF l_debug_on THEN
1983 WSH_DEBUG_SV.pop(l_module_name);
1984 END IF;
1985
1986 EXCEPTION
1987 WHEN OTHERS THEN
1988 IF l_debug_on THEN
1989 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '||
1990 SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1991 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1992 END IF;
1993
1994 END Add_Message;
1995 -- Harmonization Project I **heali
1996
1997 PROCEDURE Add_Summary_Message(
1998 p_message fnd_new_messages.message_name%type,
1999 p_total number,
2000 p_warnings number,
2001 p_errors number,
2002 p_return_status out NOCOPY varchar2,
2003 p_module_name in varchar2 )
2004 is
2005 l_total number;
2006 l_warnings number;
2007 l_errors number;
2008
2009 --
2010 l_debug_on BOOLEAN;
2011 --
2012 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'ADD_SUMMARY_MESSAGE';
2013 --
2014 begin
2015
2016 --
2017 -- Debug Statements
2018 --
2019 --
2020 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2021 --
2022 IF l_debug_on IS NULL
2023 THEN
2024 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2025 END IF;
2026 --
2027 IF l_debug_on THEN
2028 WSH_DEBUG_SV.push(l_module_name);
2029 --
2030 WSH_DEBUG_SV.log(l_module_name,'P_TOTAL',P_TOTAL);
2031 WSH_DEBUG_SV.log(l_module_name,'P_WARNINGS',P_WARNINGS);
2032 WSH_DEBUG_SV.log(l_module_name,'P_ERRORS',P_ERRORS);
2033 WSH_DEBUG_SV.log(l_module_name,'P_MODULE_NAME',P_MODULE_NAME);
2034 END IF;
2035 --
2036 l_total := nvl(p_total, 0);
2037 l_warnings := nvl(p_warnings, 0);
2038 l_errors := nvl(p_errors, 0);
2039
2040 IF (l_errors > 0) OR (l_warnings > 0) THEN
2041 IF (l_total > 1) THEN
2042 FND_MESSAGE.SET_NAME('WSH', p_message);
2043 FND_MESSAGE.SET_TOKEN('NUM_ERROR', l_errors);
2044 FND_MESSAGE.SET_TOKEN('NUM_WARN', l_warnings);
2045 FND_MESSAGE.SET_TOKEN('NUM_SUCCESS', l_total - l_errors - l_warnings);
2046
2047 wsh_util_core.add_message(p_return_status, p_module_name);
2048 END IF;
2049
2050 IF (l_total = l_errors) THEN
2051 p_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2052 ELSE
2053 p_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2054 END IF;
2055 ELSE
2056 p_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2057 END IF;
2058
2059 --
2060 -- Debug Statements
2061 --
2062 IF l_debug_on THEN
2063 WSH_DEBUG_SV.log(l_module_name,'P_RETURN_STATUS',p_return_status);
2064 WSH_DEBUG_SV.pop(l_module_name);
2065 END IF;
2066 --
2067 END Add_Summary_Message;
2068
2069 PROCEDURE Add_Summary_Message(
2070 p_message fnd_new_messages.message_name%type,
2071 p_total number,
2072 p_warnings number,
2073 p_errors number,
2074 p_return_status out NOCOPY varchar2)
2075 is
2076 begin
2077
2078 --
2079 add_summary_message
2080 (
2081 p_message,
2082 p_total,
2083 p_warnings,
2084 p_errors,
2085 p_return_status,
2086 NULL
2087 );
2088 END Add_Summary_Message;
2089
2090
2091 PROCEDURE Get_Messages ( p_init_msg_list IN VARCHAR2,
2092 x_summary OUT NOCOPY VARCHAR2,
2093 x_details OUT NOCOPY VARCHAR2,
2094 x_count OUT NOCOPY NUMBER) IS
2095
2096 l_tmp_out NUMBER;
2097 l_tmp_buffer VARCHAR2(4000);
2098 details_len NUMBER;
2099 str_len NUMBER;
2100
2101 --
2102 l_debug_on BOOLEAN;
2103 --
2104 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_MESSAGES';
2105 --
2106 BEGIN
2107 --
2108 -- Debug Statements
2109 --
2110 --
2111 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2112 --
2113 IF l_debug_on IS NULL
2114 THEN
2115 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2116 END IF;
2117 --
2118 IF l_debug_on THEN
2119 WSH_DEBUG_SV.push(l_module_name);
2120 --
2121 WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
2122 END IF;
2123 --
2124 x_count := FND_MSG_PUB.count_msg;
2125
2126 FND_MSG_PUB.get( p_encoded => FND_API.G_FALSE,
2127 p_msg_index => x_count,
2128 p_data => x_summary,
2129 p_msg_index_out => l_tmp_out);
2130
2131 FND_MSG_PUB.get( p_encoded => FND_API.G_FALSE,
2132 p_msg_index => 1,
2133 p_data => l_tmp_buffer,
2134 p_msg_index_out => l_tmp_out);
2135
2136 x_details := l_tmp_buffer;
2137
2138 FOR i IN 2..x_count-1 LOOP
2139
2140 FND_MSG_PUB.get( p_encoded => FND_API.G_FALSE,
2141 p_msg_index => i,
2142 p_data => l_tmp_buffer,
2143 p_msg_index_out => l_tmp_out);
2144
2145 str_len := lengthb(x_details);
2146
2147 IF (str_len > 3900) THEN
2148 EXIT;
2149 END IF;
2150
2151 IF (str_len+lengthb(l_tmp_buffer)> 3900) THEN
2152 x_details := x_details||'
2153 ------------------------------------
2154 '||substrb(l_tmp_buffer,1,3900-str_len);
2155 EXIT;
2156 ELSE
2157 x_details := x_details||'
2158 ------------------------------------
2159 '||l_tmp_buffer;
2160 END IF;
2161
2162 END LOOP;
2163
2164 IF (p_init_msg_list = 'Y') THEN
2165 FND_MSG_PUB.initialize;
2166 END IF;
2167
2168 --
2169 -- Debug Statements
2170 --
2171 IF l_debug_on THEN
2172 WSH_DEBUG_SV.pop(l_module_name);
2173 END IF;
2174 --
2175 END;
2176
2177
2178 -- Overloaded the procedure to log messages to debug file as well.
2179 PROCEDURE default_handler ( p_routine_name IN VARCHAR2 ,
2180 p_module_name IN VARCHAR2
2181 )
2182 IS
2183
2184 --
2185 l_debug_on BOOLEAN;
2186 --
2187 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'DEFAULT_HANDLER';
2188 --
2189 BEGIN
2190
2191 --
2192 -- Debug Statements
2193 --
2194 --
2195 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2196 --
2197 IF l_debug_on IS NULL
2198 THEN
2199 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2200 END IF;
2201 --
2202 IF l_debug_on THEN
2203 WSH_DEBUG_SV.push(l_module_name);
2204 --
2205 WSH_DEBUG_SV.log(l_module_name,'P_ROUTINE_NAME',P_ROUTINE_NAME);
2206 WSH_DEBUG_SV.log(l_module_name,'P_MODULE_NAME',P_MODULE_NAME);
2207 END IF;
2208 --
2209 FND_MESSAGE.SET_NAME('WSH','WSH_UNEXP_ERROR');
2210 FND_MESSAGE.Set_Token('PACKAGE',p_routine_name);
2211 FND_MESSAGE.Set_Token('ORA_ERROR',sqlcode);
2212 FND_MESSAGE.Set_Token('ORA_TEXT',sqlerrm);
2213 WSH_UTIL_CORE.ADD_MESSAGE(FND_API.G_RET_STS_UNEXP_ERROR, p_module_name);
2214
2215 --
2216 -- Debug Statements
2217 --
2218 IF l_debug_on THEN
2219 WSH_DEBUG_SV.pop(l_module_name);
2220 END IF;
2221 --
2222 END default_handler;
2223
2224 PROCEDURE default_handler ( p_routine_name IN VARCHAR2
2225 )
2226 IS
2227
2228 BEGIN
2229
2230 --
2231 default_handler( p_routine_name, NULL );
2232 END default_handler;
2233
2234 PROCEDURE Clear_FND_Messages IS
2235
2236 --
2237 l_debug_on BOOLEAN;
2238 --
2239 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CLEAR_FND_MESSAGES';
2240 --
2241 BEGIN
2242
2243 --
2244 -- Debug Statements
2245 --
2246 --
2247 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2248 --
2249 IF l_debug_on IS NULL
2250 THEN
2251 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2252 END IF;
2253 --
2254 IF l_debug_on THEN
2255 WSH_DEBUG_SV.push(l_module_name);
2256 END IF;
2257 --
2258 fnd_message.clear;
2259
2260 --
2261 -- Debug Statements
2262 --
2263 IF l_debug_on THEN
2264 WSH_DEBUG_SV.pop(l_module_name);
2265 END IF;
2266 --
2267 END Clear_FND_Messages;
2268
2269 FUNCTION Get_Org_Name
2270 (p_organization_id IN NUMBER
2271 ) RETURN VARCHAR2 IS
2272
2273 CURSOR org_info IS
2274 SELECT HOU.NAME organization_name
2275 FROM HR_ORGANIZATION_UNITS HOU
2276 WHERE HOU.ORGANIZATION_ID = p_organization_id;
2277
2278 org_name VARCHAR2(240);
2279
2280 others EXCEPTION;
2281
2282 --
2283 l_debug_on BOOLEAN;
2284 --
2285 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_ORG_NAME';
2286 --
2287 BEGIN
2288
2289 --
2290 -- Debug Statements
2291 --
2292 --
2293 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2294 --
2295 IF l_debug_on IS NULL
2296 THEN
2297 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2298 END IF;
2299 --
2300 IF l_debug_on THEN
2301 WSH_DEBUG_SV.push(l_module_name);
2302 --
2303 WSH_DEBUG_SV.log(l_module_name,'P_ORGANIZATION_ID',P_ORGANIZATION_ID);
2304 END IF;
2305 --
2306 IF (p_organization_id IS NULL) THEN
2307 raise others;
2308 END IF;
2309
2310 OPEN org_info;
2311 FETCH org_info INTO org_name;
2312 CLOSE org_info;
2313
2314 --
2315 -- Debug Statements
2316 --
2317 IF l_debug_on THEN
2318 WSH_DEBUG_SV.log(l_module_name,'ORGANIZATION_NAME',org_name);
2319 WSH_DEBUG_SV.pop(l_module_name);
2320 END IF;
2321 --
2322 RETURN org_name;
2323
2324 EXCEPTION
2325 WHEN others THEN
2326 --
2327 -- Debug Statements
2328 --
2329 IF l_debug_on THEN
2330 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
2331 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
2332 END IF;
2333 --
2334 RETURN null;
2335
2336 END Get_Org_Name;
2337
2338 FUNCTION Get_Item_Name
2339 (p_item_id IN NUMBER,
2340 p_organization_id IN NUMBER,
2341 p_flex_code IN VARCHAR2 := 'MSTK',
2342 p_struct_num IN NUMBER := 101
2343 ) RETURN VARCHAR2 IS
2344
2345 item_name VARCHAR2(2000);
2346 result BOOLEAN := TRUE;
2347
2348 others EXCEPTION;
2349
2350 --
2351 l_debug_on BOOLEAN;
2352 --
2353 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_ITEM_NAME';
2354 --
2355 BEGIN
2356
2357 --
2358 -- Debug Statements
2359 --
2360 --
2361 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2362 --
2363 IF l_debug_on IS NULL
2364 THEN
2365 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2366 END IF;
2367 --
2368 IF l_debug_on THEN
2369 WSH_DEBUG_SV.push(l_module_name);
2370 --
2371 WSH_DEBUG_SV.log(l_module_name,'P_ITEM_ID',P_ITEM_ID);
2372 WSH_DEBUG_SV.log(l_module_name,'P_ORGANIZATION_ID',P_ORGANIZATION_ID);
2373 WSH_DEBUG_SV.log(l_module_name,'P_FLEX_CODE',P_FLEX_CODE);
2374 WSH_DEBUG_SV.log(l_module_name,'P_STRUCT_NUM',P_STRUCT_NUM);
2375 END IF;
2376 --
2377 IF (p_item_id IS NULL) THEN
2378 raise others;
2379 END IF;
2380
2381 result := FND_FLEX_KEYVAL.validate_ccid(
2382 appl_short_name=>'INV',
2383 key_flex_code=>p_flex_code,
2384 structure_number=>p_struct_num,
2385 combination_id=>p_item_id,
2386 data_set=>p_organization_id);
2387
2388 IF result THEN
2389 item_name := FND_FLEX_KEYVAL.concatenated_values;
2390 END IF;
2391
2392 --
2393 -- Debug Statements
2394 --
2395 IF l_debug_on THEN
2396 WSH_DEBUG_SV.pop(l_module_name);
2397 END IF;
2398 --
2399 RETURN item_name;
2400
2401 EXCEPTION
2402 WHEN others THEN
2403
2404 --
2405 -- Debug Statements
2406 --
2407 IF l_debug_on THEN
2408 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
2409 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
2410 END IF;
2411 --
2412 RETURN null;
2413
2414 END Get_Item_Name;
2415
2416
2417 -- Name generic_flex_name
2418 -- Purpose converts entity_id into its name
2419 -- Arguments
2420 -- entity_id
2421 -- warehouse_id
2422 -- app_name (short app name; e.g. 'INV')
2423 -- k_flex_code (key flexfield code; e.g., 'MSTK')
2424 -- struct_num (structure number; e.g., 101)
2425 -- Assumption The parameters are valid.
2426 -- RETURN VARCHAR2 if name not found, NULL will be returned.
2427
2428 FUNCTION generic_flex_name
2429 (entity_id IN NUMBER,
2430 warehouse_id IN NUMBER,
2431 app_name IN VARCHAR2,
2432 k_flex_code IN VARCHAR2,
2433 struct_num IN NUMBER)
2434 RETURN VARCHAR2
2435 IS
2436 name VARCHAR(2000) := NULL;
2437 result BOOLEAN := TRUE;
2438 --
2439 l_debug_on BOOLEAN;
2440 --
2441 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GENERIC_FLEX_NAME';
2442 --
2443 BEGIN
2444 --
2445 -- Debug Statements
2446 --
2447 --
2448 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2449 --
2450 IF l_debug_on IS NULL
2451 THEN
2452 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2453 END IF;
2454 --
2455 IF l_debug_on THEN
2456 WSH_DEBUG_SV.push(l_module_name);
2457 --
2458 WSH_DEBUG_SV.log(l_module_name,'ENTITY_ID',ENTITY_ID);
2459 WSH_DEBUG_SV.log(l_module_name,'WAREHOUSE_ID',WAREHOUSE_ID);
2460 WSH_DEBUG_SV.log(l_module_name,'APP_NAME',APP_NAME);
2461 WSH_DEBUG_SV.log(l_module_name,'K_FLEX_CODE',K_FLEX_CODE);
2462 WSH_DEBUG_SV.log(l_module_name,'STRUCT_NUM',STRUCT_NUM);
2463 END IF;
2464 --
2465 result := fnd_flex_keyval.validate_ccid
2466 (appl_short_name => 'INV',
2467 key_flex_code => k_flex_code,
2468 structure_number => struct_num,
2469 combination_id => entity_id,
2470 data_set => warehouse_id);
2471 IF result THEN
2472 name := fnd_flex_keyval.concatenated_values;
2473 END IF;
2474 --
2475 -- Debug Statements
2476 --
2477 IF l_debug_on THEN
2478 WSH_DEBUG_SV.pop(l_module_name);
2479 END IF;
2480 --
2481 RETURN name;
2482 END generic_flex_name;
2483
2484
2485 --
2486 -- Procedure: Delete
2487 --
2488 -- Parameters: p_type - type of entities to delete
2489 -- p_del_rows - ids to be deleted
2490 -- When returned, id is negated if the delete failed
2491 -- x_return_status - status of procedure call
2492 --
2493 -- Description: Deletes multiple entities
2494 --
2495 --tkt
2496 PROCEDURE Delete(
2497 p_type wsh_saved_queries_vl.entity_type%type,
2498 p_rows IN OUT NOCOPY wsh_util_core.id_tab_type,
2499 p_caller IN VARCHAR2,
2500 x_return_status OUT NOCOPY VARCHAR2)
2501 is
2502
2503 cur_return_status varchar2(1);
2504 num_errors number;
2505 num_warnings number;
2506 l_message fnd_new_messages.message_name%type;
2507 --new variable
2508 l_fte_flag VARCHAR2(1) := 'N';
2509 l_return_status VARCHAR2(30);
2510 l_stop_rec WSH_TRIP_STOPS_PVT.trip_stop_rec_type;
2511 l_trip_rec WSH_TRIPS_PVT.trip_rec_type;
2512 -- bmso
2513 l_lpn_ids WMS_Data_Type_Definitions_PUB.LPNPurgeRecordType;
2514 l_lpn_id_tab wsh_util_core.id_tab_type;
2515
2516 l_purged_lpns WMS_Data_Type_Definitions_PUB.LPNPurgeRecordType;
2517
2518 l_validate_mode VARCHAR2(100) := wms_container_grp.G_LPN_PURGE_ACTION_VALIDATE;
2519 l_delete_mode VARCHAR2(100) := wms_container_grp.G_LPN_PURGE_ACTION_DELETE;
2520 l_rows_lpns wsh_util_core.id_tab_type;
2521 l_cached_lpns WSH_UTIL_CORE.Id_Tab_Type;
2522 l_msg_data VARCHAR2(32000);
2523 l_msg_count NUMBER;
2524 l_index NUMBER;
2525 l_count NUMBER;
2526 l_lpn_id NUMBER;
2527 l_delivery_detail_id NUMBER;
2528
2529 CURSOR c_get_lpns (v_delivery_detail_id number) IS
2530 SELECT lpn_id
2531 FROM wsh_delivery_details
2532 WHERE delivery_detail_id = v_delivery_detail_id;
2533
2534 CURSOR c_get_valid_lpns (v_delivery_detail_id NUMBER) IS
2535 select lpn_id, delivery_detail_id FROM
2536 wsh_lpn_purge_tmp
2537 WHERE delivery_detail_id = v_delivery_detail_id
2538 AND eligible_flag = 'Y';
2539
2540 CURSOR c_get_valid_lpns_for_wms IS
2541 select lpn_id FROM
2542 wsh_lpn_purge_tmp
2543 WHERE lpn_id IS NOT NULL
2544 AND eligible_flag = 'Y';
2545
2546 -- K LPN CONV. rv
2547 l_lpn_in_sync_comm_rec WSH_GLBL_VAR_STRCT_GRP.lpn_sync_comm_in_rec_type;
2548 l_lpn_out_sync_comm_rec WSH_GLBL_VAR_STRCT_GRP.lpn_sync_comm_out_rec_type;
2549 e_return_excp EXCEPTION;
2550 -- K LPN CONV. rv
2551 --
2552 l_debug_on BOOLEAN;
2553 --
2554 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'DELETE';
2555 --
2556 begin
2557
2558 --
2559 -- Debug Statements
2560 --
2561 --
2562 --lpn conc
2563 SAVEPOINT s_delete_savepoint;
2564
2565 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2566 --
2567 IF l_debug_on IS NULL
2568 THEN
2569 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2570 END IF;
2571 --
2572 IF l_debug_on THEN
2573 WSH_DEBUG_SV.push(l_module_name);
2574 END IF;
2575 --
2576 num_errors := 0;
2577 num_warnings := 0;
2578 /* added this check for FTE */
2579 /* so we will not do this for each record */
2580 x_return_status:=WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2581
2582 IF (WSH_UTIL_CORE.FTE_IS_INSTALLED = 'Y'
2583 AND p_type IN ('TRIP','STOP'))THEN
2584 l_fte_flag := 'Y';
2585
2586 END IF;
2587
2588 --lpn conv
2589 IF p_type = 'DLVB' THEN
2590 IF c_wms_code_present = 'Y' THEN --{
2591 BEGIN
2592 SELECT 1
2593 INTO l_count
2594 FROM wsh_lpn_purge_tmp;
2595 EXCEPTION
2596 WHEN NO_DATA_FOUND THEN
2597 l_count := 0;
2598 END;
2599
2600 IF l_count > 0 THEN
2601 DELETE FROM wsh_lpn_purge_tmp;
2602 END IF;
2603
2604 FOR i IN 1..p_rows.count LOOP
2605 OPEN c_get_lpns(p_rows(i));
2606 FETCH c_get_lpns INTO l_rows_lpns(i);
2607 CLOSE c_get_lpns;
2608
2609 IF l_rows_lpns(i) IS NOT NULL THEN
2610 l_lpn_ids.lpn_ids(l_lpn_ids.lpn_ids.COUNT + 1) := l_rows_lpns(i);
2611 END IF;
2612 END LOOP;
2613
2614 FORALL i IN 1..p_rows.count
2615 INSERT INTO wsh_lpn_purge_tmp(
2616 lpn_id,
2617 delivery_detail_id,
2618 eligible_flag
2619 ) VALUES (
2620 l_rows_lpns(i),
2621 p_rows(i),
2622 decode(l_rows_lpns(i), NULL,'Y','N')
2623 );
2624
2625 wms_container_grp.LPN_Purge_Actions (
2626 p_api_version => 1.0
2627 , p_init_msg_list => fnd_api.g_false
2628 , p_commit => fnd_api.g_false
2629 , x_return_status => l_return_status
2630 , x_msg_count => l_msg_count
2631 , x_msg_data => l_msg_data
2632 , p_caller => 'WSH_DELETE'
2633 , p_action => l_validate_mode
2634 , p_lpn_purge_rec => l_lpn_ids
2635
2636 );
2637 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2638 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2639 END IF;
2640 IF l_lpn_ids.lpn_ids.COUNT > 0 THEN
2641
2642 FORALL i IN l_lpn_ids.lpn_ids.FIRST..l_lpn_ids.lpn_ids.LAST
2643 UPDATE wsh_lpn_purge_tmp
2644 SET eligible_flag = 'Y'
2645 WHERE lpn_id = l_lpn_ids.lpn_ids(i);
2646
2647 END IF;
2648 END IF; --}
2649 END IF;
2650 for i in 1..p_rows.count loop
2651
2652 IF l_fte_flag = 'Y' THEN
2653
2654 IF p_type = 'TRIP' THEN
2655 -- Get pvt type record structure for trip
2656 --
2657 -- Debug Statements
2658 --
2659 IF l_debug_on THEN
2660 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIPS_GRP.GET_TRIP_DETAILS_PVT',WSH_DEBUG_SV.C_PROC_LEVEL);
2661 END IF;
2662 --
2663 wsh_trips_grp.get_trip_details_pvt
2664 (p_trip_id => p_rows(i),
2665 x_trip_rec => l_trip_rec,
2666 x_return_status => l_return_status);
2667 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2668 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
2669 num_warnings := num_warnings + 1;
2670 ELSE
2671 x_return_status := l_return_status;
2672 --
2673 -- Debug Statements
2674 --
2675 --IF l_debug_on THEN
2676 --WSH_DEBUG_SV.pop(l_module_name);
2677 --END IF;
2678 --
2679 --RETURN;
2680 raise e_return_excp; -- LPN CONV. rv
2681 END IF;
2682 END IF;
2683
2684 --
2685 -- Debug Statements
2686 --
2687 IF l_debug_on THEN
2688 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_FTE_INTEGRATION.TRIP_STOP_VALIDATIONS',WSH_DEBUG_SV.C_PROC_LEVEL);
2689 END IF;
2690 --
2691 wsh_fte_integration.trip_stop_validations
2692 (p_stop_rec => l_stop_rec,
2693 p_trip_rec => l_trip_rec,
2694 p_action => 'DELETE',
2695 x_return_status => l_return_status);
2696
2697 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2698 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
2699 num_warnings := num_warnings + 1;
2700 ELSE
2701 x_return_status := l_return_status;
2702 --
2703 -- Debug Statements
2704 --
2705 --IF l_debug_on THEN
2706 --WSH_DEBUG_SV.pop(l_module_name);
2707 --END IF;
2708 --
2709 --RETURN;
2710 raise e_return_excp; -- LPN CONV. rv
2711 END IF;
2712 END IF;
2713 ELSIF p_type = 'STOP' THEN
2714
2715 --
2716 -- Debug Statements
2717 --
2718 IF l_debug_on THEN
2719 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIP_STOPS_GRP.GET_STOP_DETAILS_PVT',WSH_DEBUG_SV.C_PROC_LEVEL);
2720 END IF;
2721 --
2722 wsh_trip_stops_grp.get_stop_details_pvt
2723 (p_stop_id => p_rows(i),
2724 x_stop_rec => l_stop_rec,
2725 x_return_status => l_return_status);
2726 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2727 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
2728 num_warnings := num_warnings + 1;
2729 ELSE
2730 x_return_status := l_return_status;
2731 --
2732 -- Debug Statements
2733 --
2734 --IF l_debug_on THEN
2735 --WSH_DEBUG_SV.pop(l_module_name);
2736 --END IF;
2737 --
2738 --RETURN;
2739 raise e_return_excp; -- LPN CONV. rv
2740 END IF;
2741 END IF;
2742
2743 --
2744 -- Debug Statements
2745 --
2746 IF l_debug_on THEN
2747 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_FTE_INTEGRATION.TRIP_STOP_VALIDATIONS',WSH_DEBUG_SV.C_PROC_LEVEL);
2748 END IF;
2749 --
2750 wsh_fte_integration.trip_stop_validations
2751 (p_stop_rec => l_stop_rec,
2752 p_trip_rec => l_trip_rec,
2753 p_action => 'DELETE',
2754 x_return_status => l_return_status);
2755 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2756 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
2757 num_warnings := num_warnings + 1;
2758 ELSE
2759 x_return_status := l_return_status;
2760 --
2761 -- Debug Statements
2762 --
2763 --IF l_debug_on THEN
2764 --WSH_DEBUG_SV.pop(l_module_name);
2765 --END IF;
2766 --
2767 --RETURN;
2768 raise e_return_excp; -- LPN CONV. rv
2769 END IF;
2770 END IF;
2771
2772 END IF;
2773 END IF;
2774
2775
2776 if (p_type = 'TRIP') then
2777 --
2778 -- Debug Statements
2779 --
2780 IF l_debug_on THEN
2781 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIPS_PVT.DELETE_TRIP',WSH_DEBUG_SV.C_PROC_LEVEL);
2782 END IF;
2783 --
2784 wsh_trips_pvt.delete_trip(p_rowid => null,
2785 p_trip_id => p_rows(i),
2786 x_return_status => cur_return_status,
2787 p_validate_flag => 'Y',
2788 p_caller => p_caller);
2789 elsif (p_type = 'STOP') then
2790 --
2791 -- Debug Statements
2792 --
2793 IF l_debug_on THEN
2794 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIP_STOPS_PVT.DELETE_TRIP_STOP',WSH_DEBUG_SV.C_PROC_LEVEL);
2795 END IF;
2796 --
2797 --tkt
2798 wsh_trip_stops_pvt.delete_trip_stop(p_rowid => null,
2799 p_stop_id => p_rows(i),
2800 x_return_status => cur_return_status,
2801 p_validate_flag => 'Y',
2802 p_caller => p_caller);
2803 elsif (p_type = 'DLVY') then
2804 --
2805 -- Debug Statements
2806 --
2807 IF l_debug_on THEN
2808 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.DELETE_DELIVERY',WSH_DEBUG_SV.C_PROC_LEVEL);
2809 END IF;
2810 --
2811 wsh_new_deliveries_pvt.delete_delivery(null, p_rows(i), cur_return_status);
2812 elsif (p_type = 'DLEG') then
2813
2814 -- wsh_delivery_legs_pvt.delete_delivery_leg(null, p_rows(i), cur_return_status);
2815
2816 fnd_message.set_name('WSH','DEL_DLEG_NOT_IMPLEMENTED_YET');
2817 cur_return_status := wsh_util_core.g_ret_sts_error;
2818 wsh_util_core.add_message(cur_return_status);
2819
2820 elsif (p_type = 'DLVB') then
2821 --
2822 -- Debug Statements
2823 --
2824 IF l_debug_on THEN
2825 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_CONTAINER_ACTIONS.DELETE_CONTAINERS',WSH_DEBUG_SV.C_PROC_LEVEL);
2826 END IF;
2827 --
2828 --lpn conv
2829 IF c_wms_code_present = 'Y' THEN --{bmso
2830 OPEN c_get_valid_lpns(p_rows(i));
2831 FETCH c_get_valid_lpns INTO l_lpn_id, l_delivery_detail_id;
2832 CLOSE c_get_valid_lpns;
2833 ELSE --}{
2834 l_delivery_detail_id := 1;
2835 END IF; --}
2836
2837 IF l_delivery_detail_id IS NOT NULL THEN
2838 WSH_CONTAINER_ACTIONS.delete_containers(p_rows(i), cur_return_status);
2839 IF cur_return_status NOT IN (wsh_util_core.g_ret_sts_success,
2840 wsh_util_core.g_ret_sts_warning)
2841 THEN
2842 update wsh_lpn_purge_tmp
2843 SET eligible_flag = 'N'
2844 WHERE delivery_detail_id = p_rows(i);
2845 END IF;
2846 ELSE
2847 cur_return_status := wsh_util_core.g_ret_sts_error;
2848 END IF;
2849
2850 end if;
2851
2852 if (cur_return_status <> wsh_util_core.g_ret_sts_success) then
2853
2854 if (cur_return_status = wsh_util_core.g_ret_sts_error) OR (cur_return_status = wsh_util_core.g_ret_sts_unexp_error) then
2855 p_rows(i) := -p_rows(i);
2856 end if;
2857
2858
2859 if (cur_return_status = wsh_util_core.g_ret_sts_warning) then
2860 num_warnings := num_warnings + 1;
2861 else
2862 num_errors := num_errors + 1;
2863 end if;
2864
2865 end if;
2866 end loop;
2867
2868 IF p_type = 'DLVB' THEN
2869 IF c_wms_code_present = 'Y' THEN --{ bmso
2870
2871 OPEN c_get_valid_lpns_for_wms;
2872 FETCH c_get_valid_lpns_for_wms
2873 BULK COLLECT INTO l_purged_lpns.lpn_ids;
2874 CLOSE c_get_valid_lpns_for_wms;
2875
2876 IF l_purged_lpns.lpn_ids.COUNT > 0 THEN
2877 wms_container_grp.LPN_Purge_Actions (
2878 p_api_version => 1.0
2879 , p_init_msg_list => fnd_api.g_false
2880 , p_commit => fnd_api.g_false
2881 , x_return_status => l_return_status
2882 , x_msg_count => l_msg_count
2883 , x_msg_data => l_msg_data
2884 , p_caller => 'WSH_DELETE'
2885 , p_action => l_delete_mode
2886 , p_lpn_purge_rec => l_purged_lpns
2887
2888 );
2889 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2890 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2891 END IF;
2892 END IF;
2893 END IF; --}
2894 END IF;
2895 --
2896 -- K LPN CONV. rv
2897 --
2898 IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
2899 THEN
2900 --{
2901 IF l_debug_on THEN
2902 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',WSH_DEBUG_SV.C_PROC_LEVEL);
2903 END IF;
2904
2905 WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
2906 (
2907 p_in_rec => l_lpn_in_sync_comm_rec,
2908 x_return_status => l_return_status,
2909 x_out_rec => l_lpn_out_sync_comm_rec
2910 );
2911 --
2912 --
2913 IF l_debug_on THEN
2914 WSH_DEBUG_SV.log(l_module_name,'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',l_return_status);
2915 END IF;
2916 --
2917 --
2918 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2919 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
2920 num_warnings := num_warnings + 1;
2921 ELSE
2922 x_return_status := l_return_status;
2923 --
2924 -- Debug Statements
2925 --
2926 ROLLBACK TO s_delete_savepoint;
2927 --
2928 num_errors := num_errors + 1;
2929 END IF;
2930 END IF;
2931 --}
2932 END IF;
2933 --
2934 -- K LPN CONV. rv
2935 --
2936
2937 if (num_errors > 0) then
2938 x_return_status := wsh_util_core.g_ret_sts_error;
2939 elsif (num_warnings >0) then
2940 x_return_status := wsh_util_core.g_ret_sts_warning;
2941 end if;
2942
2943 if (p_type = 'TRIP') then
2944 l_message := 'WSH_TRIP_DELETE_SUMMARY';
2945 elsif (p_type = 'STOP') then
2946 l_message := 'WSH_STOP_DELETE_SUMMARY';
2947 elsif (p_type = 'DLVY') then
2948 l_message := 'WSH_DLVY_DELETE_SUMMARY';
2949 elsif (p_type = 'DLEG') then
2950 l_message := 'WSH_DLEG_DELETE_SUMMARY';
2951 elsif (p_type = 'DLVB') then
2952 l_message := 'WSH_DLVB_DELETE_SUMMARY';
2953 end if;
2954
2955 wsh_util_core.add_summary_message(
2956 l_message,
2957 p_rows.count,
2958 num_warnings,
2959 num_errors,
2960 x_return_status);
2961
2962 /* H integration - added exception block */
2963 --
2964 -- Debug Statements
2965 --
2966 IF l_debug_on THEN
2967 WSH_DEBUG_SV.pop(l_module_name);
2968 END IF;
2969 --
2970 exception
2971 --
2972 -- LPN CONV. rv
2973 WHEN e_return_excp THEN
2974 --
2975 IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
2976 THEN
2977 --{
2978 --
2979 IF l_debug_on THEN
2980 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',WSH_DEBUG_SV.C_PROC_LEVEL);
2981 END IF;
2982 --
2983 WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
2984 (
2985 p_in_rec => l_lpn_in_sync_comm_rec,
2986 x_return_status => l_return_status,
2987 x_out_rec => l_lpn_out_sync_comm_rec
2988 );
2989 --
2990 IF l_debug_on THEN
2991 WSH_DEBUG_SV.log(l_module_name, 'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS', l_return_status);
2992 END IF;
2993 IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR, WSH_UTIL_CORE.G_RET_STS_ERROR) AND x_return_status <> WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
2994 x_return_status := l_return_status;
2995 END IF;
2996 --}
2997 END IF;
2998 --
2999 IF l_debug_on THEN
3000 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:E_RETURN_EXCP');
3001 END IF;
3002 -- LPN CONV. rv
3003 --
3004 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3005 ROLLBACK TO s_delete_savepoint;
3006 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
3007
3008 IF l_debug_on THEN
3009 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle
3010 error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3011 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
3012 END IF;
3013 WHEN OTHERS THEN
3014 ROLLBACK TO s_delete_savepoint;
3015 wsh_util_core.default_handler('WSH_UTIL_CORE.DELETE');
3016 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3017
3018 --
3019 -- Debug Statements
3020 --
3021 IF l_debug_on THEN
3022 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3023 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3024 END IF;
3025 --
3026 end delete;
3027
3028
3029 -- Name city_region_postal
3030 -- Purpose concatenates the three fields for the reports
3031 -- Input Arguments
3032 -- p_city
3033 -- p_region (state)
3034 -- p_postal_code (zip)
3035 -- RETURN VARCHAR2
3036 --
3037
3038 FUNCTION city_region_postal(
3039 p_city in varchar2,
3040 p_region in varchar2,
3041 p_postal_code in varchar2)
3042 RETURN VARCHAR2
3043 IS
3044 c_r_p VARCHAR2(190); --Bug 4622054 (Increased width from 100 to 190)
3045 --
3046 l_debug_on BOOLEAN;
3047 --
3048 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CITY_REGION_POSTAL';
3049 --
3050 BEGIN
3051
3052 --
3053 -- Debug Statements
3054 --
3055 --
3056 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3057 --
3058 IF l_debug_on IS NULL
3059 THEN
3060 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3061 END IF;
3062 --
3063 IF l_debug_on THEN
3064 WSH_DEBUG_SV.push(l_module_name);
3065 --
3066 WSH_DEBUG_SV.log(l_module_name,'P_CITY',P_CITY);
3067 WSH_DEBUG_SV.log(l_module_name,'P_REGION',P_REGION);
3068 WSH_DEBUG_SV.log(l_module_name,'P_POSTAL_CODE',P_POSTAL_CODE);
3069 END IF;
3070 --
3071 IF p_city IS NOT NULL AND p_region IS NOT NULL THEN
3072 c_r_p := p_city || ', ' || p_region || ' ' || p_postal_code;
3073 ELSIF p_city IS NOT NULL AND p_region IS NULL THEN
3074 c_r_p := p_city || ' ' || p_postal_code;
3075 -- we should concatnate p_city instead of c_r_p.
3076 ELSIF p_city IS NULL AND p_region IS NOT NULL THEN
3077 c_r_p := p_region || ' ' || p_postal_code;
3078 ELSIF p_city IS NULL AND p_region IS NULL THEN
3079 c_r_p := p_postal_code;
3080 END IF;
3081
3082 --
3083 -- Debug Statements
3084 --
3085 IF l_debug_on THEN
3086 WSH_DEBUG_SV.pop(l_module_name);
3087 END IF;
3088 --
3089 RETURN c_r_p;
3090
3091 END;
3092
3093
3094 /* ==================================================================
3095 Function: Evaluate shipment priority code.
3096 ================================================================== */
3097
3098 FUNCTION derive_shipment_priority(p_delivery_id IN NUMBER)
3099 RETURN VARCHAR2 IS
3100
3101 v_first_code wsh_delivery_details.shipment_priority_code%TYPE;
3102 v_ship_code wsh_delivery_details.shipment_priority_code%TYPE;
3103
3104 CURSOR get_ship_codes IS
3105 SELECT wdd.shipment_priority_code ship_priority_code
3106 FROM wsh_delivery_details wdd,
3107 wsh_delivery_assignments_v wda
3108 WHERE wda.delivery_detail_id = wdd.delivery_detail_id
3109 AND nvl(wdd.LINE_DIRECTION , 'O') IN ('O', 'IO') -- J Inbound Logistics jckwok
3110 AND wda.delivery_id = p_delivery_id
3111 AND wda.delivery_id is not null
3112 AND wdd.container_flag = 'N'
3113 AND rownum = 1;
3114
3115 CURSOR get_ship_codes1(p_ship_code IN VARCHAR2) IS
3116 SELECT wdd.shipment_priority_code ship_priority_code
3117 FROM wsh_delivery_details wdd,
3118 wsh_delivery_assignments_v wda
3119 WHERE wda.delivery_detail_id = wdd.delivery_detail_id
3120 AND nvl(wdd.LINE_DIRECTION , 'O') IN ('O', 'IO') -- J Inbound Logistics jckwok
3121 AND wda.delivery_id = p_delivery_id
3122 AND wda.delivery_id is not null
3123 AND wdd.container_flag = 'N'
3124 AND (wdd.shipment_priority_code <> p_ship_code
3125 OR wdd.shipment_priority_code IS NULL)
3126 AND rownum = 1;
3127
3128 CURSOR get_ship_codes2 IS
3129 SELECT wdd.shipment_priority_code ship_priority_code
3130 FROM wsh_delivery_details wdd,
3131 wsh_delivery_assignments_v wda
3132 WHERE wda.delivery_detail_id = wdd.delivery_detail_id
3133 AND nvl(wdd.LINE_DIRECTION , 'O') IN ('O', 'IO') -- J Inbound Logistics jckwok
3134 AND wda.delivery_id = p_delivery_id
3135 AND wdd.container_flag = 'N'
3136 AND wda.delivery_id is not null
3137 AND wdd.shipment_priority_code IS NOT NULL
3138 AND rownum = 1;
3139
3140 --
3141 l_debug_on BOOLEAN;
3142 --
3143 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'DERIVE_SHIPMENT_PRIORITY';
3144 --
3145 BEGIN
3146
3147 --
3148 -- Debug Statements
3149 --
3150 --
3151 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3152 --
3153 IF l_debug_on IS NULL
3154 THEN
3155 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3156 END IF;
3157 --
3158 IF l_debug_on THEN
3159 WSH_DEBUG_SV.push(l_module_name);
3160 --
3161 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
3162 END IF;
3163 --
3164 OPEN get_ship_codes;
3165 FETCH get_ship_codes
3166 INTO v_first_code;
3167 IF get_ship_codes%NOTFOUND THEN
3168 CLOSE get_ship_codes;
3169 --
3170 -- Debug Statements
3171 --
3172 IF l_debug_on THEN
3173 WSH_DEBUG_SV.pop(l_module_name);
3174 END IF;
3175 --
3176 RETURN null;
3177 END IF;
3178 CLOSE get_ship_codes;
3179
3180 IF v_first_code IS NULL THEN
3181 OPEN get_ship_codes2;
3182 FETCH get_ship_codes2
3183 INTO v_ship_code;
3184 IF get_ship_codes2%NOTFOUND THEN
3185 CLOSE get_ship_codes2;
3186 --
3187 -- Debug Statements
3188 --
3189 IF l_debug_on THEN
3190 WSH_DEBUG_SV.pop(l_module_name);
3191 END IF;
3192 --
3193 RETURN null;
3194 END IF;
3195 CLOSE get_ship_codes2;
3196 --
3197 -- Debug Statements
3198 --
3199 IF l_debug_on THEN
3200 WSH_DEBUG_SV.pop(l_module_name);
3201 END IF;
3202 --
3203 RETURN 'Mixed';
3204 ELSE
3205 OPEN get_ship_codes1(v_first_code);
3206 FETCH get_ship_codes1
3207 INTO v_ship_code;
3208 IF get_ship_codes1%NOTFOUND THEN
3209 CLOSE get_ship_codes1;
3210 --
3211 -- Debug Statements
3212 --
3213 IF l_debug_on THEN
3214 WSH_DEBUG_SV.pop(l_module_name);
3215 END IF;
3216 --
3217 RETURN v_first_code;
3218 END IF;
3219 CLOSE get_ship_codes1;
3220 --
3221 -- Debug Statements
3222 --
3223 IF l_debug_on THEN
3224 WSH_DEBUG_SV.pop(l_module_name);
3225 END IF;
3226 --
3227 RETURN 'Mixed';
3228 END IF;
3229
3230 EXCEPTION
3231 WHEN OTHERS THEN
3232 IF get_ship_codes%ISOPEN THEN
3233 CLOSE get_ship_codes;
3234 END IF;
3235 IF get_ship_codes1%ISOPEN THEN
3236 CLOSE get_ship_codes1;
3237 END IF;
3238 IF get_ship_codes2%ISOPEN THEN
3239 CLOSE get_ship_codes2;
3240 END IF;
3241
3242 --
3243 -- Debug Statements
3244 --
3245 IF l_debug_on THEN
3246 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3247 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3248 END IF;
3249 --
3250 RETURN null;
3251
3252 END DERIVE_SHIPMENT_PRIORITY;
3253
3254 --
3255 -- Procedure: Get_Ledger_id_Func_Currency
3256 --
3257 -- Parameters: p_org_id - operating unit org id, this parameter is now
3258 -- mandatory.
3259 -- x_ledger_id - ledger id
3260 -- x_func_currency - currency code for the Ledger
3261 -- x_return_status - status of procedure call
3262 --
3263 -- Description: Deletes multiple entities
3264 --
3265
3266
3267 PROCEDURE Get_Ledger_id_Func_Currency(
3268 p_org_id IN NUMBER ,
3269 x_ledger_id OUT NOCOPY NUMBER ,
3270 x_func_currency OUT NOCOPY VARCHAR2 ,
3271 x_return_status OUT NOCOPY VARCHAR2)
3272 IS
3273 l_ledger_id NUMBER;
3274 l_functional_currency GL_LEDGERS_PUBLIC_V.currency_code%type;
3275 l_org_id NUMBER;
3276 --
3277
3278 -- this cursor is copied from OEXVSPMB.pls, function Get_AR_Sys_Params
3279 -- to get ledger id from org_id
3280 -- LE Uptake
3281 CURSOR c_ledger_and_func_curr (v_org_id NUMBER) IS
3282 SELECT ar.org_id, ar.set_of_books_id, glpv.currency_code
3283 FROM ar_system_parameters_all ar, gl_ledgers_public_v glpv
3284 WHERE ar.ORG_ID = p_org_id
3285 AND glpv.ledger_id = ar.set_of_books_id;
3286
3287 --
3288 --
3289 l_debug_on BOOLEAN;
3290 --
3291 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_LEDGER_ID_FUNC_CURRENCY';
3292
3293 WSH_GET_LEDGER_ERROR exception; -- LE Uptake
3294 --
3295 BEGIN
3296 /* In LE Uptake, changed all occurances of set_of_books to ledger in this API.*/
3297 --
3298 -- Debug Statements
3299 --
3300 --
3301 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3302 --
3303 IF l_debug_on IS NULL
3304 THEN
3305 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3306 END IF;
3307 --
3308 IF l_debug_on THEN
3309 WSH_DEBUG_SV.push(l_module_name);
3310 WSH_DEBUG_SV.log(l_module_name,'P_ORG_ID',P_ORG_ID);
3311 WSH_DEBUG_SV.log(l_module_name,'G_OPERATING_UNIT_INFO.org_id',
3312 G_OPERATING_UNIT_INFO.org_id);
3313 END IF;
3314 --
3315 x_ledger_id := NULL;
3316 x_func_currency := NULL;
3317 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3318 --
3319 IF p_org_id = G_OPERATING_UNIT_INFO.org_id THEN
3320 x_ledger_id := G_OPERATING_UNIT_INFO.ledger_id;
3321 x_func_currency := G_OPERATING_UNIT_INFO.currency_code;
3322 IF l_debug_on THEN
3323 WSH_DEBUG_SV.logmsg(l_module_name,'Return cached value for p_org = G_OPERATING_UNIT_INFO.org_id');
3324 END IF;
3325 ELSE
3326 IF l_debug_on THEN
3327 WSH_DEBUG_SV.logmsg(l_module_name,'Get Ledger id from p_org_id');
3328 END IF;
3329 OPEN c_ledger_and_func_curr( p_org_id);
3330 FETCH c_ledger_and_func_curr
3331 INTO l_org_id, x_ledger_id, x_func_currency;
3332 IF (c_ledger_and_func_curr%NOTFOUND) THEN
3333 raise WSH_GET_LEDGER_ERROR;
3334 END IF;
3335 -- populate the cache
3336 G_OPERATING_UNIT_INFO.org_id := p_org_id;
3337 G_OPERATING_UNIT_INFO.ledger_id := x_ledger_id;
3338 G_OPERATING_UNIT_INFO.currency_code := x_func_currency;
3339 CLOSE c_ledger_and_func_curr;
3340 END IF;
3341 --
3342 -- Debug Statements
3343 --
3344 IF l_debug_on THEN
3345 WSH_DEBUG_SV.log(l_module_name,'LEDGER ID',x_ledger_id);
3346 WSH_DEBUG_SV.log(l_module_name,'FUNC CURRENCY',x_func_currency);
3347 WSH_DEBUG_SV.log(l_module_name,'x_return_status',x_return_status);
3348 WSH_DEBUG_SV.pop(l_module_name);
3349 END IF;
3350 --
3351 EXCEPTION
3352 WHEN WSH_GET_LEDGER_ERROR THEN
3353 IF c_ledger_and_func_curr%ISOPEN THEN
3354 CLOSE c_ledger_and_func_curr;
3355 END IF;
3356 x_ledger_id := NULL;
3357 x_func_currency := NULL;
3358 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3359 fnd_message.set_name('WSH', 'WSH_LEDGER_ID_NOT_FOUND');
3360 WSH_UTIL_CORE.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR);
3361
3362 IF l_debug_on THEN
3363 WSH_DEBUG_SV.pop(l_module_name);
3364 END IF;
3365
3366 WHEN others THEN
3367 x_ledger_id := NULL;
3368 x_func_currency := NULL;
3369 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3370 IF c_ledger_and_func_curr%ISOPEN THEN
3371 CLOSE c_ledger_and_func_curr;
3372 END IF;
3373 wsh_util_core.default_handler('WSH_UTIL_CORE.Get_Ledger_id_Func_Currency');
3374 -- Debug Statements
3375 --
3376 IF l_debug_on THEN
3377 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3378 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3379 END IF;
3380 --
3381 --
3382 END Get_Ledger_id_Func_Currency;
3383
3384
3385
3386 --
3387 -- Name Print_Label
3388 -- Purpose
3389 --
3390 -- Input Arguments
3391 --
3392 --
3393 PROCEDURE Print_Label(
3394 p_delivery_ids IN WSH_UTIL_CORE.Id_Tab_Type,
3395 p_stop_ids IN WSH_UTIL_CORE.Id_Tab_Type,
3396 x_return_status OUT NOCOPY VARCHAR2)
3397 IS
3398
3399 CURSOR get_delivery_wms(x_delivery_id NUMBER) IS
3400 SELECT mp.wms_enabled_flag,
3401 wnd.delivery_id
3402 FROM wsh_new_deliveries wnd,
3403 mtl_parameters mp
3404 WHERE wnd.delivery_id = x_delivery_id AND
3405 mp.organization_id = wnd.organization_id AND
3406 mp.wms_enabled_flag = 'Y';
3407
3408
3409 CURSOR pickup_deliveries_wms (l_stop_id NUMBER) IS
3410 SELECT dg.delivery_id,
3411 st.trip_id,
3412 dl.organization_id,
3413 mp.wms_enabled_flag
3414 FROM wsh_new_deliveries dl,
3415 wsh_delivery_legs dg,
3416 wsh_trip_stops st,
3417 mtl_parameters mp
3418 WHERE dg.delivery_id = dl.delivery_id AND
3419 nvl(dl.SHIPMENT_DIRECTION, 'O') IN ('O', 'IO') AND -- J Inbound Logistics jckwok
3420 st.stop_location_id = dl.initial_pickup_location_id AND
3421 st.stop_id = dg.pick_up_stop_id AND
3422 st.stop_id = l_stop_id AND
3423 dl.organization_id = mp.organization_id AND
3424 mp.wms_enabled_flag = 'Y';
3425
3426
3427 j NUMBER;
3428 l_label_return_status VARCHAR2(1);
3429 l_label_status VARCHAR2(1);
3430 l_msg_data VARCHAR2(2000);
3431 l_msg_count NUMBER;
3432 l_del_tab INV_LABEL_PUB.transaction_id_rec_type;
3433
3434 --
3435 l_debug_on BOOLEAN;
3436 --
3437 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'PRINT_LABEL';
3438 --
3439 BEGIN
3440 --
3441 -- Debug Statements
3442 --
3443 --
3444 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3445 --
3446 IF l_debug_on IS NULL
3447 THEN
3448 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3449 END IF;
3450 --
3451 IF l_debug_on THEN
3452 WSH_DEBUG_SV.push(l_module_name);
3453 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID.COUNT',p_delivery_ids.count);
3454 WSH_DEBUG_SV.log(l_module_name,'P_STOP_ID.COUNT',p_stop_ids.count);
3455 END IF;
3456 --
3457 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS ;
3458 l_del_tab.delete;
3459 j := 0;
3460 IF p_delivery_ids.count > 0 THEN
3461 FOR i in 1..p_delivery_ids.count LOOP
3462 FOR del IN get_delivery_wms(p_delivery_ids(i)) LOOP
3463 j := j+1;
3464 l_del_tab(j) := del.delivery_id;
3465 END LOOP;
3466 END LOOP;
3467 ELSIF p_stop_ids.count > 0 THEN
3468 FOR i in 1..p_stop_ids.count LOOP
3469 FOR del IN pickup_deliveries_wms (p_stop_ids(i)) LOOP
3470 j := j+1;
3471 l_del_tab(j) := del.delivery_id;
3472 END LOOP;
3473 END LOOP;
3474 END IF;
3475
3476 IF get_delivery_wms%ISOPEN THEN
3477 CLOSE get_delivery_wms;
3478 END IF;
3479 IF pickup_deliveries_wms%ISOPEN THEN
3480 CLOSE pickup_deliveries_wms;
3481 END IF;
3482 IF l_del_tab.count > 0 THEN
3483 /* call print_label API */
3484 --
3485 -- Debug Statements
3486 --
3487 IF l_debug_on THEN
3488 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit INV_LABEL_PUB.PRINT_LABEL',WSH_DEBUG_SV.C_PROC_LEVEL);
3489 END IF;
3490 --
3491 INV_LABEL_PUB.print_label (
3492 x_return_status => l_label_return_status,
3493 x_msg_count => l_msg_count,
3494 x_msg_data => l_msg_data,
3495 x_label_status => l_label_status,
3496 p_api_version => 1.0,
3497 p_init_msg_list => 'F',
3498 p_commit => 'F',
3499 p_business_flow_code => 21,
3500 p_transaction_id => l_del_tab);
3501
3502 IF (l_label_return_status <> 'S') THEN
3503 FND_MESSAGE.SET_NAME('WSH','WSH_PRINT_LABEL_ERROR');
3504 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
3505 wsh_util_core.add_message(x_return_status);
3506 END IF;
3507 END IF;
3508
3509 --
3510 -- Debug Statements
3511 --
3512 IF l_debug_on THEN
3513 WSH_DEBUG_SV.pop(l_module_name);
3514 END IF;
3515 --
3516 EXCEPTION
3517 WHEN others THEN
3518 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3519 IF get_delivery_wms%ISOPEN THEN
3520 CLOSE get_delivery_wms;
3521 END IF;
3522
3523 IF pickup_deliveries_wms%ISOPEN THEN
3524 CLOSE pickup_deliveries_wms;
3525 END IF;
3526 wsh_util_core.default_handler('WSH_UTIL_CORE.Print_Label');
3527
3528 --
3529 -- Debug Statements
3530 --
3531 IF l_debug_on THEN
3532 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3533 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3534 END IF;
3535 --
3536 END Print_Label;
3537
3538 /* H integration: Pricing integration csun
3539 */
3540 --
3541 -- Name FTE_Is_Installed
3542 -- Purpose To check if FTE is installed, it return 'Y' if
3543 -- FTE is installed, 'N' otherwise.
3544 -- History:
3545 -- Added by Suresh on Jun-14-2002
3546 -- Added validation to check FTE is enabled or not by calling
3547 -- wsh_fte_enabled.check_status function
3548 -- Initially FTE is always disabled for ONT.H
3549 --
3550 -- Input Arguments: No input arguments
3551 --
3552 --
3553 FUNCTION FTE_Is_Installed RETURN VARCHAR2 IS
3554
3555 l_fte_install_status VARCHAR2(30);
3556 l_industry VARCHAR2(30);
3557
3558 --
3559 l_debug_on BOOLEAN;
3560 --
3561 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'FTE_IS_INSTALLED';
3562 --
3563 BEGIN
3564 --
3565 -- Debug Statements
3566 --
3567 --
3568 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3569 --
3570 IF l_debug_on IS NULL
3571 THEN
3572 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3573 END IF;
3574 --
3575 IF l_debug_on THEN
3576 WSH_DEBUG_SV.push(l_module_name);
3577 END IF;
3578 --
3579 IF (wsh_fte_enabled.check_status = 'Y' AND
3580 Get_Otm_Install_Profile_Value = 'N') THEN -- OTM R12
3581 IF G_FTE_IS_INSTALLED is NULL THEN
3582 IF (fnd_installation.get(716, 716,l_fte_install_status,l_industry)) THEN
3583 IF (l_fte_install_status = 'I') THEN
3584 G_FTE_IS_INSTALLED := 'Y';
3585
3586 -- User customization starts (FP bug 4688529--bug 4602901)
3587 IF (fnd_profile.value('WSH_FTE_INSTALLATION_STATUS') = 'N') THEN
3588 G_FTE_IS_INSTALLED := 'N';
3589 END IF;
3590 -- User customization ends
3591 ELSE
3592 G_FTE_IS_INSTALLED := 'N';
3593 END IF;
3594 ELSE
3595 /* this happens only when invalid application id is passed */
3596 G_FTE_IS_INSTALLED := 'N';
3597 END IF;
3598
3599 END IF;
3600 ELSE
3601 G_FTE_IS_INSTALLED := 'N';
3602 END IF;
3603
3604 --
3605 -- Debug Statements
3606 --
3607 IF l_debug_on THEN
3608 WSH_DEBUG_SV.log(l_module_name,'G_FTE_IS_INSTALLED',G_FTE_IS_INSTALLED);
3609 WSH_DEBUG_SV.pop(l_module_name);
3610 END IF;
3611 --
3612 return G_FTE_IS_INSTALLED;
3613 END FTE_Is_Installed;
3614
3615 --
3616 -- Name TP_Is_Installed
3617 -- Purpose To check if TP is installed, it return 'Y' if
3618 -- TP is installed, 'N' otherwise.
3619 -- History:
3620 -- Added by Arindam on May-13-2003
3621 --
3622 -- Input Arguments: No input arguments
3623 --
3624 --
3625 FUNCTION TP_Is_Installed RETURN VARCHAR2 IS
3626
3627 l_tp_install_status VARCHAR2(30);
3628 l_industry VARCHAR2(30);
3629
3630 --
3631 l_debug_on BOOLEAN;
3632 --
3633 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'TP_IS_INSTALLED';
3634 --
3635 BEGIN
3636 --
3637 -- Debug Statements
3638 --
3639 --
3640 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3641 --
3642 IF l_debug_on IS NULL
3643 THEN
3644 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3645 END IF;
3646 --
3647 IF l_debug_on THEN
3648 WSH_DEBUG_SV.push(l_module_name);
3649 END IF;
3650 --
3651
3652 --
3653 IF G_TP_IS_INSTALLED is NULL THEN
3654 -- OTM R12
3655 IF Get_Otm_Install_Profile_Value = 'N' THEN
3656 IF fnd_installation.get(390, 390,l_tp_install_status,l_industry) THEN
3657 IF (l_tp_install_status = 'I') THEN
3658 G_TP_IS_INSTALLED := 'Y';
3659 ELSE
3660 G_TP_IS_INSTALLED := 'N';
3661 END IF;
3662
3663 --User customization starts
3664 IF fnd_profile.value('WSH_TP_INSTALLATION_STATUS') IN ('Y','N') THEN
3665 G_TP_IS_INSTALLED := fnd_profile.value('WSH_TP_INSTALLATION_STATUS');
3666 END IF;
3667 -- User customization ends
3668 ELSE
3669 /* this happens only when invalid application id is passed */
3670 G_TP_IS_INSTALLED := 'N';
3671 END IF;
3672 ELSE
3673 G_TP_IS_INSTALLED := 'N';
3674 END IF;
3675 END IF;
3676
3677 --
3678 -- Debug Statements
3679 --
3680 IF l_debug_on THEN
3681 WSH_DEBUG_SV.log(l_module_name,'G_TP_IS_INSTALLED',G_TP_IS_INSTALLED);
3682 WSH_DEBUG_SV.pop(l_module_name);
3683 END IF;
3684 --
3685 return G_TP_IS_INSTALLED;
3686 EXCEPTION
3687 WHEN OTHERS THEN
3688
3689 --
3690 -- Debug Statements
3691 --
3692 IF l_debug_on THEN
3693 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3694 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3695 END IF;
3696 --
3697 RETURN 'N';
3698 END TP_Is_Installed;
3699 -- ------------------------------------------------------------------------
3700 -- Name Get_Trip_Name
3701 -- Purpose This procedure gets the trip name from a delivery leg id
3702 -- Input Arguments
3703 -- delivery_leg_id
3704 -- ------------------------------------------------------------------------
3705
3706 PROCEDURE Get_Trip_Name_by_Leg(
3707 p_delivery_leg_id IN NUMBER,
3708 x_trip_name OUT NOCOPY VARCHAR2,
3709 x_reprice_required OUT NOCOPY VARCHAR2,
3710 x_return_status OUT NOCOPY VARCHAR2) IS
3711
3712 CURSOR c_get_trip_name IS
3713 SELECT TP.Name, DLG.reprice_required
3714 FROM WSH_DELIVERY_LEGS DLG,
3715 WSH_TRIP_STOPS TS,
3716 WSH_TRIPS TP
3717 WHERE DLG.delivery_leg_id = p_delivery_leg_id AND
3718 DLG.pick_up_stop_id = TS.stop_id AND
3719 TS.trip_id = TP.trip_id;
3720
3721 l_trip_name VARCHAR2(30) := NULL;
3722 l_reprice_required VARCHAR2(1) := NULL;
3723
3724 --
3725 l_debug_on BOOLEAN;
3726 --
3727 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_TRIP_NAME_BY_LEG';
3728 --
3729 BEGIN
3730
3731 --
3732 -- Debug Statements
3733 --
3734 --
3735 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3736 --
3737 IF l_debug_on IS NULL
3738 THEN
3739 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3740 END IF;
3741 --
3742 IF l_debug_on THEN
3743 WSH_DEBUG_SV.push(l_module_name);
3744 --
3745 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_LEG_ID',P_DELIVERY_LEG_ID);
3746 END IF;
3747 --
3748 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS ;
3749 OPEN c_get_trip_name;
3750 FETCH c_get_trip_name INTO l_trip_name, l_reprice_required;
3751 IF c_get_trip_name%NOTFOUND THEN
3752 x_trip_name := NULL;
3753 x_reprice_required := NULL;
3754 ELSE
3755 x_trip_name := l_trip_name;
3756 x_reprice_required := l_reprice_required;
3757 END IF;
3758 CLOSE c_get_trip_name;
3759
3760 --
3761 -- Debug Statements
3762 --
3763 IF l_debug_on THEN
3764 WSH_DEBUG_SV.log(l_module_name,'TRIP NAME',x_trip_name);
3765 WSH_DEBUG_SV.log(l_module_name,'Reprice Required',x_reprice_required);
3766 WSH_DEBUG_SV.pop(l_module_name);
3767 END IF;
3768 --
3769 EXCEPTION
3770 WHEN others THEN
3771 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3772 wsh_util_core.default_handler('WSH_UTIL_CORE.Print_Label');
3773
3774 --
3775 -- Debug Statements
3776 --
3777 IF l_debug_on THEN
3778 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3779 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3780 END IF;
3781 --
3782 END Get_Trip_Name_by_Leg;
3783
3784
3785 --Harmonization Project I **heali
3786 PROCEDURE api_post_call(
3787 p_return_status IN VARCHAR2,
3788 x_num_warnings IN OUT NOCOPY NUMBER,
3789 x_num_errors IN OUT NOCOPY NUMBER,
3790 p_msg_data IN VARCHAR2,
3791 p_raise_error_flag IN BOOLEAN
3792 )
3793 -- p_msg_data is defaulted to NULL.
3794 -- p_raise_error_flag is defaulted to TRUE
3795 IS
3796 --
3797 --
3798 --l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
3799 --
3800 --l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'API_POST_CALL';
3801 --
3802 --
3803 BEGIN
3804 --
3805 --
3806 /*
3807 IF l_debug_on THEN
3808 WSH_DEBUG_SV.push(l_module_name);
3809 --
3810 WSH_DEBUG_SV.log(l_module_name,'p_msg_data',p_msg_data);
3811 WSH_DEBUG_SV.log(l_module_name,'p_return_status',p_return_status);
3812 WSH_DEBUG_SV.log(l_module_name,'x_num_warnings',x_num_warnings);
3813 WSH_DEBUG_SV.log(l_module_name,'x_num_errors',x_num_errors);
3814 END IF;
3815 */
3816
3817 --
3818 IF p_msg_data IS NOT NULL THEN
3819 fnd_message.set_name('WSH','WSH_MESSAGE_DATA');
3820 fnd_message.set_token('MESSAGE_DATA',p_msg_data);
3821 END IF;
3822 --
3823 --
3824 IF p_return_status IS NULL THEN
3825 raise FND_API.G_EXC_UNEXPECTED_ERROR;
3826 ELSIF p_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
3827 x_num_errors := nvl(x_num_errors,0) + 1;
3828 IF p_raise_error_flag THEN
3829 raise FND_API.G_EXC_ERROR;
3830 END IF;
3831 ELSIF p_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
3832 x_num_errors := nvl(x_num_errors,0) + 1;
3833 IF p_raise_error_flag THEN
3834 raise FND_API.G_EXC_UNEXPECTED_ERROR;
3835 END IF;
3836 ELSIF p_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
3837 x_num_warnings := nvl(x_num_warnings,0) + 1;
3838 END IF;
3839 --
3840 --
3841 --
3842 /*
3843 IF l_debug_on THEN
3844 WSH_DEBUG_SV.log(l_module_name,'x_num_warnings',x_num_warnings);
3845 WSH_DEBUG_SV.log(l_module_name,'x_num_errors',x_num_errors);
3846 WSH_DEBUG_SV.pop(l_module_name);
3847 END IF;
3848 */
3849 --
3850 --
3851 EXCEPTION
3852 --
3853 --
3854 WHEN FND_API.G_EXC_ERROR THEN
3855 --
3856 raise FND_API.G_EXC_ERROR;
3857 --
3858 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3859 --
3860 raise FND_API.G_EXC_UNEXPECTED_ERROR;
3861 --
3862 WHEN OTHERS THEN
3863 --
3864 raise FND_API.G_EXC_UNEXPECTED_ERROR;
3865 --
3866 /*
3867 IF l_debug_on THEN
3868 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3869 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3870 END IF;
3871 */
3872 --
3873 --
3874 END api_post_call;
3875
3876 --Harmonization Project I **heali
3877 PROCEDURE api_post_call(
3878 p_return_status IN VARCHAR2,
3879 x_num_warnings IN OUT NOCOPY NUMBER,
3880 x_num_errors IN OUT NOCOPY NUMBER,
3881 p_module_name IN VARCHAR2,
3882 p_msg_data IN VARCHAR2,
3883 p_token1 IN VARCHAR2 DEFAULT NULL,
3884 p_value1 IN VARCHAR2 DEFAULT NULL,
3885 p_token2 IN VARCHAR2 DEFAULT NULL,
3886 p_value2 IN VARCHAR2 DEFAULT NULL,
3887 p_token3 IN VARCHAR2 DEFAULT NULL,
3888 p_value3 IN VARCHAR2 DEFAULT NULL,
3889 p_token4 IN VARCHAR2 DEFAULT NULL,
3890 p_value4 IN VARCHAR2 DEFAULT NULL,
3891 p_token5 IN VARCHAR2 DEFAULT NULL,
3892 p_value5 IN VARCHAR2 DEFAULT NULL,
3893 p_token6 IN VARCHAR2 DEFAULT NULL,
3894 p_value6 IN VARCHAR2 DEFAULT NULL,
3895 p_token7 IN VARCHAR2 DEFAULT NULL,
3896 p_value7 IN VARCHAR2 DEFAULT NULL,
3897 p_token8 IN VARCHAR2 DEFAULT NULL,
3898 p_value8 IN VARCHAR2 DEFAULT NULL,
3899 p_raise_error_flag IN BOOLEAN DEFAULT TRUE )
3900 IS
3901 --l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
3902 --
3903 --l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'API_POST_CALL';
3904 --
3905 --
3906 BEGIN
3907 /*
3908 IF l_debug_on THEN
3909 WSH_DEBUG_SV.push(l_module_name);
3910 --
3911 WSH_DEBUG_SV.log(l_module_name,'p_msg_data',p_msg_data);
3912 WSH_DEBUG_SV.log(l_module_name,'p_return_status',p_return_status);
3913 WSH_DEBUG_SV.log(l_module_name,'x_num_warnings',x_num_warnings);
3914 WSH_DEBUG_SV.log(l_module_name,'x_num_errors',x_num_errors);
3915 END IF;
3916 */
3917
3918 --
3919 IF (p_msg_data IS NOT NULL AND p_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS)THEN
3920 add_message(
3921 p_message_type => p_return_status,
3922 p_module_name => p_module_name,
3923 p_error_name => p_msg_data,
3924 p_token1 => p_token1,
3925 p_value1 => p_value1,
3926 p_token2 => p_token2,
3927 p_value2 => p_value2,
3928 p_token3 => p_token3,
3929 p_value3 => p_value3,
3930 p_token4 => p_token4,
3931 p_value4 => p_value4,
3932 p_token5 => p_token5,
3933 p_value5 => p_value5,
3934 p_token6 => p_token6,
3935 p_value6 => p_value6,
3936 p_value7 => p_value7,
3937 p_token7 => p_token7,
3938 p_value8 => p_value8,
3939 p_token8 => p_token8);
3940 END IF;
3941
3942 api_post_call(
3943 p_return_status => p_return_status,
3944 x_num_warnings => x_num_warnings,
3945 x_num_errors => x_num_errors,
3946 p_msg_data => NULL,
3947 p_raise_error_flag => p_raise_error_flag);
3948
3949 EXCEPTION
3950 WHEN FND_API.G_EXC_ERROR THEN
3951 raise FND_API.G_EXC_ERROR;
3952
3953 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3954 raise FND_API.G_EXC_UNEXPECTED_ERROR;
3955
3956 WHEN OTHERS THEN
3957 raise FND_API.G_EXC_UNEXPECTED_ERROR;
3958 END api_post_call;
3959 --Harmonization Project I **heali
3960
3961 FUNCTION get_operatingUnit_id ( p_delivery_id IN NUMBER )
3962 RETURN NUMBER
3963 IS
3964 l_cnt NUMBER;
3965 l_org_id NUMBER DEFAULT 0;
3966 l_debug_on BOOLEAN;
3967 --
3968 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' ||
3969 'get_operatingUnit_id';
3970 CURSOR c_orgs (v_delivery_id NUMBER) IS
3971 SELECT wdd.org_id org_id , count(*) cnt
3972 FROM wsh_delivery_assignments_v wda,
3973 wsh_delivery_details wdd
3974 WHERE wdd.delivery_detail_id = wda.delivery_detail_id
3975 AND wda.delivery_id = v_delivery_id
3976 AND wdd.container_flag = 'N'
3977 GROUP BY org_id
3978 ORDER BY cnt DESC;
3979
3980 BEGIN
3981 --
3982 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3983 --
3984 IF l_debug_on IS NULL
3985 THEN
3986 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3987 END IF;
3988 --
3989 IF l_debug_on THEN
3990 WSH_DEBUG_SV.push(l_module_name);
3991 --
3992 WSH_DEBUG_SV.log(l_module_name,'p_delivery_id',p_delivery_id);
3993 END IF;
3994
3995 OPEN c_orgs(p_delivery_id) ;
3996 FETCH c_orgs INTO l_org_id, l_cnt;
3997 IF c_orgs%NOTFOUND THEN
3998 l_org_id := -1;
3999 END IF;
4000 CLOSE c_orgs;
4001
4002 IF l_debug_on THEN
4003 WSH_DEBUG_SV.log(l_module_name,'l_org_id',l_org_id);
4004 WSH_DEBUG_SV.log(l_module_name,'l_cnt',l_cnt);
4005 WSH_DEBUG_SV.pop(l_module_name);
4006 END IF;
4007
4008 RETURN l_org_id;
4009 EXCEPTION
4010 WHEN OTHERS THEN
4011 wsh_util_core.default_handler('WSH_UTIL_CORE.GET_OPERATINGUNIT_ID',
4012 l_module_name);
4013 IF l_debug_on THEN
4014 WSH_DEBUG_SV.pop(l_module_name);
4015 END IF;
4016 raise FND_API.G_EXC_UNEXPECTED_ERROR;
4017 END get_operatingUnit_id;
4018
4019 --
4020 -- Name Store_Msg_In_Table
4021 -- Purpose This procedure takes a table of messages and push
4022 -- them to the FND stack and also returns number of errors,
4023 -- warns, unexpected errors, and successes.
4024 --
4025 -- Input Arguments
4026 -- p_store_flag
4027 --
4028 PROCEDURE Store_Msg_In_Table (
4029 p_store_flag IN Boolean,
4030 x_msg_rec_count OUT NOCOPY WSH_UTIL_CORE.MsgCountType,
4031 x_return_status OUT NOCOPY VARCHAR2) IS
4032 --
4033 l_debug_on BOOLEAN;
4034 --
4035 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'STORE_MSG_IN_TABLE';
4036 --
4037
4038 BEGIN
4039
4040 --
4041 -- Debug Statements
4042 --
4043 --
4044 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
4045 --
4046 IF l_debug_on IS NULL
4047 THEN
4048 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
4049 END IF;
4050 --
4051 IF l_debug_on THEN
4052 WSH_DEBUG_SV.push(l_module_name);
4053 --
4054 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_LEG_ID',P_STORE_FLAG);
4055 END IF;
4056 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS ;
4057 IF (p_store_flag = FALSE) THEN
4058 x_msg_rec_count.e_count := 0;
4059 x_msg_rec_count.w_count := 0;
4060 x_msg_rec_count.u_count := 0;
4061 x_msg_rec_count.s_count := 0;
4062 FOR i IN 1..WSH_INTEGRATION.G_MSG_TABLE.COUNT LOOP
4063 fnd_message.set_name('WSH','WSH_UTIL_MESSAGE_'||WSH_INTEGRATION.G_MSG_TABLE(i).MESSAGE_TYPE);
4064 fnd_message.set_token('MSG_TEXT',WSH_INTEGRATION.G_MSG_TABLE(i).MESSAGE_TEXT);
4065 fnd_msg_pub.add;
4066 IF ( WSH_INTEGRATION.G_MSG_TABLE(i).MESSAGE_TYPE = 'E' ) THEN
4067 x_msg_rec_count.e_count := x_msg_rec_count.e_count + 1 ;
4068 ELSIF ( WSH_INTEGRATION.G_MSG_TABLE(i).MESSAGE_TYPE = 'W' ) THEN
4069 x_msg_rec_count.w_count := x_msg_rec_count.w_count + 1 ;
4070 ELSIF ( WSH_INTEGRATION.G_MSG_TABLE(i).MESSAGE_TYPE = 'U' ) THEN
4071 x_msg_rec_count.u_count := x_msg_rec_count.u_count + 1 ;
4072 ELSIF ( WSH_INTEGRATION.G_MSG_TABLE(i).MESSAGE_TYPE = 'S' ) THEN
4073 x_msg_rec_count.s_count := x_msg_rec_count.s_count + 1 ;
4074 END IF ;
4075 END LOOP ;
4076 G_STORE_MSG_IN_TABLE := FALSE ;
4077 WSH_INTEGRATION.G_MSG_TABLE.delete ;
4078 ELSE
4079 G_STORE_MSG_IN_TABLE := TRUE;
4080 END IF;
4081
4082 --
4083 -- Debug Statements
4084 --
4085 IF l_debug_on THEN
4086 WSH_DEBUG_SV.log(l_module_name,'Error Count', x_msg_rec_count.e_count);
4087 WSH_DEBUG_SV.log(l_module_name,'Warning Count', x_msg_rec_count.w_count);
4088 WSH_DEBUG_SV.log(l_module_name,'Unexpected Error Count', x_msg_rec_count.u_count);
4089 WSH_DEBUG_SV.log(l_module_name,'Success Count', x_msg_rec_count.s_count);
4090 WSH_DEBUG_SV.pop(l_module_name);
4091 END IF;
4092 --
4093 EXCEPTION
4094 WHEN others THEN
4095 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4096 WSH_UTIL_CORE.Println('Unexpected Error in WSH_UTIL_CORE.Store_Msg_In_Table');
4097 --
4098 -- Debug Statements
4099 --
4100 IF l_debug_on THEN
4101 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4102 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
4103 END IF;
4104 --
4105
4106 END Store_Msg_In_Table;
4107
4108
4109
4110 --========================================================================
4111 -- PROCEDURE : get_cached_value
4112 --
4113 -- PARAMETERS: p_cache_tbl this table is used to hold the cache
4114 -- values, which key is less than 2^31
4115 -- p_cache_ext_tbl This table is used to hold the cache
4116 -- values, which key is more then 2^31
4117 -- p_value This the value to be either inserted
4118 -- or reterived from the cache.
4119 -- p_key This is the key that we use to access
4120 -- the cache table.
4121 -- p_action if 'PUT' is passed, then the p_value
4122 -- is put into the cache. If 'GET'is passed
4123 -- then the value will be retrieved from
4124 -- cache.
4125 -- x_return_status return status
4126 --
4127 -- COMMENT : This table will manage a cache (storing integer values)
4128 -- IF value 'PUT' is passed to p_action, then p_value will be set
4129 -- into the cache, where p_key is used to access the cache table.
4130 -- IF value 'GET' is passed to p_action, then the information
4131 -- on the cache is retrieved. The p_key is used to access the
4132 -- cache table.
4133 -- If the get operation is a miss, then a warning will be
4134 -- returned.
4135 --========================================================================
4136
4137
4138
4139 PROCEDURE get_cached_value(
4140 p_cache_tbl IN OUT NOCOPY key_value_tab_type,
4141 p_cache_ext_tbl IN OUT NOCOPY key_value_tab_type,
4142 p_value IN OUT NOCOPY NUMBER,
4143 p_key IN NUMBER,
4144 p_action IN VARCHAR2,
4145 x_return_status OUT NOCOPY VARCHAR2
4146 )
4147 IS
4148 l_debug_on BOOLEAN;
4149 --
4150 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME ||
4151 '.' || 'GET_CACHED_VALUE';
4152 l_index NUMBER;
4153 l_found BOOLEAN := FALSE;
4154 l_exist BOOLEAN := FALSE;
4155 j NUMBER;
4156
4157 BEGIN
4158 --
4159 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
4160 IF l_debug_on IS NULL
4161 THEN
4162 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
4163 END IF;
4164 --
4165 IF l_debug_on THEN
4166 wsh_debug_sv.push (l_module_name);
4167 WSH_DEBUG_SV.log(l_module_name, 'p_value', p_value);
4168 WSH_DEBUG_SV.log(l_module_name, 'p_key', p_key);
4169 WSH_DEBUG_SV.log(l_module_name, 'p_action', p_action);
4170 END IF;
4171 --
4172 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4173
4174 IF p_action = 'PUT' THEN --{
4175 IF p_key IS NULL THEN
4176 IF l_debug_on THEN
4177 WSH_DEBUG_SV.log(l_module_name, 'p_key cannot be null', p_key);
4178 END IF;
4179 RAISE FND_API.G_EXC_ERROR ;
4180 END IF;
4181 IF p_key < C_INDEX_LIMIT THEN
4182 p_cache_tbl(p_key).value := p_value;
4183 p_cache_tbl(p_key).key := p_key;
4184 ELSE
4185 j:= p_cache_ext_tbl.FIRST;
4186 WHILE j IS NOT NULL LOOP
4187 IF p_cache_ext_tbl(j).key = p_key THEN
4188 p_cache_ext_tbl(j).value := p_value;
4189 l_exist := TRUE;
4190 EXIT;
4191 END IF;
4192 j := p_cache_ext_tbl.NEXT(j);
4193 END LOOP;
4194 IF NOT l_exist THEN
4195 p_cache_ext_tbl(p_cache_ext_tbl.COUNT + 1).key := p_key;
4196 p_cache_ext_tbl(p_cache_ext_tbl.COUNT).value := p_value;
4197 END IF;
4198 END IF;
4199 ELSE --}{
4200 IF p_key < C_INDEX_LIMIT THEN --{
4201 IF p_cache_tbl.EXISTS(p_key) THEN
4202 p_value := p_cache_tbl(p_key).value;
4203 ELSE
4204 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
4205 END IF;
4206 ELSE --}{
4207 l_index := p_cache_ext_tbl.FIRST;
4208 WHILE l_index IS NOT NULL LOOP
4209 IF p_cache_ext_tbl(l_index).key = p_key THEN
4210 p_value := p_cache_ext_tbl(l_index).value;
4211 l_found := TRUE;
4212 EXIT;
4213 END IF;
4214 l_index := p_cache_ext_tbl.NEXT(l_index);
4215 END LOOP;
4216 IF NOT l_found THEN
4217 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
4218 END IF;
4219 END IF; --}
4220 END IF;--}
4221 IF l_debug_on THEN
4222 WSH_DEBUG_SV.pop(l_module_name);
4223 END IF;
4224 EXCEPTION
4225 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
4226 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4227 --
4228 IF l_debug_on THEN
4229 WSH_DEBUG_SV.logmsg(l_module_name,'Cache is missed',
4230 WSH_DEBUG_SV.C_EXCEP_LEVEL);
4231 WSH_DEBUG_SV.pop(l_module_name);
4232 END IF;
4233 --
4234
4235 WHEN FND_API.G_EXC_ERROR THEN
4236 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4237 --
4238 IF l_debug_on THEN
4239 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has '
4240 || 'occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4241 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
4242 END IF;
4243 --
4244 WHEN OTHERS THEN
4245 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
4246 wsh_util_core.default_handler('WSH_UTIL_CORE.GET_CACHED_VALUE');
4247 --
4248 IF l_debug_on THEN
4249 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. '||
4250 'Oracle error message is '||
4251 SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4252 WSH_DEBUG_SV.pop(l_module_name,
4253 'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
4254 END IF;
4255
4256 END get_cached_value;
4257
4258
4259
4260 --========================================================================
4261 -- PROCEDURE : get_cached_value
4262 --
4263 -- PARAMETERS: p_cache_tbl this table is used to hold the cache
4264 -- values, which key is less than 2^31
4265 -- p_cache_ext_tbl This table is used to hold the cache
4266 -- values, which key is more then 2^31
4267 -- p_value This the value to be either inserted
4268 -- or reterived from the cache.
4269 -- p_key This is the key that we use to access
4270 -- the cache table.
4271 -- p_action if 'PUT' is passed, then the p_value
4272 -- is put into the cache. If 'GET'is passed
4273 -- then the value will be retrieved from
4274 -- cache.
4275 -- x_return_status return status
4276 --
4277 -- COMMENT : This table will manage a cache (storing varchar2(500) values)
4278 -- IF value 'PUT' is passed to p_action, then p_value will be set
4279 -- into the cache, where p_key is used to access the cache table.
4280 -- IF value 'GET' is passed to p_action, then the information
4281 -- on the cache is retrieved. The p_key is used to access the
4282 -- cache table.
4283 -- If the get operation is a miss, then a warning will be
4284 -- returned.
4285 --========================================================================
4286
4287
4288
4289 PROCEDURE get_cached_value(
4290 p_cache_tbl IN OUT NOCOPY char500_tab_type,
4291 p_cache_ext_tbl IN OUT NOCOPY char500_tab_type,
4292 p_value IN OUT NOCOPY VARCHAR2,
4293 p_key IN NUMBER,
4294 p_action IN VARCHAR2,
4295 x_return_status OUT NOCOPY VARCHAR2
4296 )
4297 IS
4298 l_debug_on BOOLEAN;
4299 --
4300 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME ||
4301 '.' || 'GET_CACHED_VALUE';
4302
4303 l_index NUMBER;
4304 l_found BOOLEAN := FALSE;
4305 l_exist BOOLEAN := FALSE;
4306 j NUMBER;
4307
4308 BEGIN
4309 --
4310 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
4311 IF l_debug_on IS NULL
4312 THEN
4313 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
4314 END IF;
4315 --
4316 IF l_debug_on THEN
4317 wsh_debug_sv.push (l_module_name);
4318 WSH_DEBUG_SV.log(l_module_name, 'p_value', p_value);
4319 WSH_DEBUG_SV.log(l_module_name, 'p_key', p_key);
4320 WSH_DEBUG_SV.log(l_module_name, 'p_action', p_action);
4321 END IF;
4322 --
4323 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4324
4325 IF p_action = 'PUT' THEN --{
4326 IF p_key IS NULL THEN
4327 IF l_debug_on THEN
4328 WSH_DEBUG_SV.log(l_module_name, 'p_key cannot be null', p_key);
4329 END IF;
4330 RAISE FND_API.G_EXC_ERROR ;
4331 END IF;
4332 IF p_key < C_INDEX_LIMIT THEN
4333 p_cache_tbl(p_key).value := p_value;
4334 p_cache_tbl(p_key).key := p_key;
4335 ELSE
4336 j:= p_cache_ext_tbl.FIRST;
4337 WHILE j IS NOT NULL LOOP
4338 IF p_cache_ext_tbl(j).key = p_key THEN
4339 p_cache_ext_tbl(j).value := p_value;
4340 l_exist := TRUE;
4341 EXIT;
4342 END IF;
4343 j := p_cache_ext_tbl.NEXT(j);
4344 END LOOP;
4345 IF NOT l_exist THEN
4346 p_cache_ext_tbl(p_cache_ext_tbl.COUNT + 1).key := p_key;
4347 p_cache_ext_tbl(p_cache_ext_tbl.COUNT).value := p_value;
4348 END IF;
4349 END IF;
4350 ELSE --}{
4351 IF p_key < C_INDEX_LIMIT THEN --{
4352 IF p_cache_tbl.EXISTS(p_key) THEN
4353 p_value := p_cache_tbl(p_key).value;
4354 ELSE
4355 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
4356 END IF;
4357 ELSE --}{
4358 l_index := p_cache_ext_tbl.FIRST;
4359 WHILE l_index IS NOT NULL LOOP
4360 IF p_cache_ext_tbl(l_index).key = p_key THEN
4361 p_value := p_cache_ext_tbl(l_index).value;
4362 l_found := TRUE;
4363 EXIT;
4364 END IF;
4365 l_index := p_cache_ext_tbl.NEXT(l_index);
4366 END LOOP;
4367 IF NOT l_found THEN
4368 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
4369 END IF;
4370 END IF; --}
4371 END IF;--}
4372 IF l_debug_on THEN
4373 WSH_DEBUG_SV.pop(l_module_name);
4374 END IF;
4375
4376 EXCEPTION
4377 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
4378 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4379 --
4380 IF l_debug_on THEN
4381 WSH_DEBUG_SV.logmsg(l_module_name,'Cache is missed',
4382 WSH_DEBUG_SV.C_EXCEP_LEVEL);
4383 WSH_DEBUG_SV.pop(l_module_name);
4384 END IF;
4385 --
4386
4387 WHEN FND_API.G_EXC_ERROR THEN
4388 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4389 --
4390 IF l_debug_on THEN
4391 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has '
4392 || 'occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4393 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
4394 END IF;
4395 --
4396 WHEN OTHERS THEN
4397 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
4398 wsh_util_core.default_handler('WSH_UTIL_CORE.GET_CACHED_VALUE');
4399 --
4400 IF l_debug_on THEN
4401 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. '||
4402 'Oracle error message is '||
4403 SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4404 WSH_DEBUG_SV.pop(l_module_name,
4405 'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
4406 END IF;
4407
4408 END get_cached_value;
4409
4410 --========================================================================
4411 -- PROCEDURE : get_cached_value
4412 --
4413 -- PARAMETERS: p_cache_tbl this table is used to hold the cache
4414 -- values, which key is less than 2^31
4415 -- p_cache_ext_tbl This table is used to hold the cache
4416 -- values, which key is more then 2^31
4417 -- p_value This the value to be either inserted
4418 -- or reterived from the cache.
4419 -- p_key This is the key that we use to access
4420 -- the cache table.
4421 -- p_action if 'PUT' is passed, then the p_value
4422 -- is put into the cache. If 'GET'is passed
4423 -- then the value will be retrieved from
4424 -- cache.
4425 -- x_return_status return status
4426 --
4427 -- COMMENT : This table will manage a cache (storing BOOLEAN) values)
4428 -- IF value 'PUT' is passed to p_action, then p_value will be set
4429 -- into the cache, where p_key is used to access the cache table.
4430 -- IF value 'GET' is passed to p_action, then the information
4431 -- on the cache is retrieved. The p_key is used to access the
4432 -- cache table.
4433 -- If the get operation is a miss, then a warning will be
4434 -- returned.
4435 --========================================================================
4436
4437
4438
4439 PROCEDURE get_cached_value(
4440 p_cache_tbl IN OUT NOCOPY boolean_tab_type,
4441 p_cache_ext_tbl IN OUT NOCOPY boolean_tab_type,
4442 p_value IN OUT NOCOPY BOOLEAN,
4443 p_key IN NUMBER,
4444 p_action IN VARCHAR2,
4445 x_return_status OUT NOCOPY VARCHAR2
4446 )
4447 IS
4448 l_debug_on BOOLEAN;
4449 --
4450 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME ||
4451 '.' || 'GET_CACHED_VALUE';
4452
4453 l_index NUMBER;
4454 l_found BOOLEAN := FALSE;
4455 l_exist BOOLEAN := FALSE;
4456 j NUMBER;
4457
4458 BEGIN
4459 --
4460 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
4461 IF l_debug_on IS NULL
4462 THEN
4463 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
4464 END IF;
4465 --
4466 IF l_debug_on THEN
4467 wsh_debug_sv.push (l_module_name);
4468 WSH_DEBUG_SV.log(l_module_name, 'p_value', p_value);
4469 WSH_DEBUG_SV.log(l_module_name, 'p_key', p_key);
4470 WSH_DEBUG_SV.log(l_module_name, 'p_action', p_action);
4471 END IF;
4472 --
4473 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4474
4475 IF p_action = 'PUT' THEN --{
4476 IF p_key IS NULL THEN
4477 IF l_debug_on THEN
4478 WSH_DEBUG_SV.log(l_module_name, 'p_key cannot be null', p_key);
4479 END IF;
4480 RAISE FND_API.G_EXC_ERROR ;
4481 END IF;
4482 IF p_key < C_INDEX_LIMIT THEN
4483 p_cache_tbl(p_key).value := p_value;
4484 p_cache_tbl(p_key).key := p_key;
4485 ELSE
4486 j:= p_cache_ext_tbl.FIRST;
4487 WHILE j IS NOT NULL LOOP
4488 IF p_cache_ext_tbl(j).key = p_key THEN
4489 p_cache_ext_tbl(j).value := p_value;
4490 l_exist := TRUE;
4491 EXIT;
4492 END IF;
4493 j := p_cache_ext_tbl.NEXT(j);
4494 END LOOP;
4495 IF NOT l_exist THEN
4496 p_cache_ext_tbl(p_cache_ext_tbl.COUNT + 1).key := p_key;
4497 p_cache_ext_tbl(p_cache_ext_tbl.COUNT).value := p_value;
4498 END IF;
4499 END IF;
4500 ELSE --}{
4501 IF p_key < C_INDEX_LIMIT THEN --{
4502 IF p_cache_tbl.EXISTS(p_key) THEN
4503 p_value := p_cache_tbl(p_key).value;
4504 ELSE
4505 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
4506 END IF;
4507 ELSE --}{
4508 l_index := p_cache_ext_tbl.FIRST;
4509 WHILE l_index IS NOT NULL LOOP
4510 IF p_cache_ext_tbl(l_index).key = p_key THEN
4511 p_value := p_cache_ext_tbl(l_index).value;
4512 l_found := TRUE;
4513 EXIT;
4514 END IF;
4515 l_index := p_cache_ext_tbl.NEXT(l_index);
4516 END LOOP;
4517 IF NOT l_found THEN
4518 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
4519 END IF;
4520 END IF; --}
4521 END IF;--}
4522 IF l_debug_on THEN
4523 WSH_DEBUG_SV.pop(l_module_name);
4524 END IF;
4525
4526 EXCEPTION
4527 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
4528 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4529 --
4530 IF l_debug_on THEN
4531 WSH_DEBUG_SV.logmsg(l_module_name,'Cache is missed',
4532 WSH_DEBUG_SV.C_EXCEP_LEVEL);
4533 WSH_DEBUG_SV.pop(l_module_name);
4534 END IF;
4535 --
4536
4537 WHEN FND_API.G_EXC_ERROR THEN
4538 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4539 --
4540 IF l_debug_on THEN
4541 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has '
4542 || 'occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4543 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
4544 END IF;
4545 --
4546 WHEN OTHERS THEN
4547 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
4548 wsh_util_core.default_handler('WSH_UTIL_CORE.GET_CACHED_VALUE');
4549 --
4550 IF l_debug_on THEN
4551 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. '||
4552 'Oracle error message is '||
4553 SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4554 WSH_DEBUG_SV.pop(l_module_name,
4555 'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
4556 END IF;
4557
4558 END get_cached_value;
4559
4560 --HVOP heali
4561 PROCEDURE OpenDynamicCursor(
4562 p_cursor IN OUT NOCOPY RefCurType,
4563 p_statement IN VARCHAR2,
4564 p_dynamic_tab IN tbl_varchar) IS
4565 --
4566 l_debug_on BOOLEAN;
4567 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'OpenDynamicCursor';
4568 --
4569 BEGIN
4570 --
4571 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
4572 --
4573 IF l_debug_on IS NULL THEN
4574 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
4575 END IF;
4576 --
4577 IF l_debug_on THEN
4578 wsh_debug_sv.push(l_module_name);
4579 wsh_debug_sv.log(l_module_name, 'p_dynamic_tab.COUNT', p_dynamic_tab.COUNT);
4580 END IF;
4581 --
4582
4583 IF (p_dynamic_tab.COUNT > 50 ) THEN
4584 IF l_debug_on THEN
4585 wsh_debug_sv.logmsg(l_module_name, 'p_dynamic_tab.COUNT should not be grater than 50');
4586 wsh_debug_sv.pop(l_module_name);
4587 RETURN;
4588 END IF;
4589 END IF;
4590
4591
4592 IF (p_dynamic_tab.COUNT = 0) THEN
4593 OPEN p_cursor FOR p_statement;
4594 END IF;
4595
4596 IF (p_dynamic_tab.COUNT = 1) THEN
4597 OPEN p_cursor FOR p_statement USING
4598 p_dynamic_tab(1);
4599 END IF;
4600
4601 IF (p_dynamic_tab.COUNT = 2) THEN
4602 OPEN p_cursor FOR p_statement USING
4603 p_dynamic_tab(1),
4604 p_dynamic_tab(2);
4605 END IF;
4606
4607 IF (p_dynamic_tab.COUNT = 3) THEN
4608 OPEN p_cursor FOR p_statement USING
4609 p_dynamic_tab(1),
4610 p_dynamic_tab(2),
4611 p_dynamic_tab(3);
4612 END IF;
4613
4614 IF (p_dynamic_tab.COUNT = 4) THEN
4615 OPEN p_cursor FOR p_statement USING
4616 p_dynamic_tab(1),
4617 p_dynamic_tab(2),
4618 p_dynamic_tab(3),
4619 p_dynamic_tab(4);
4620 END IF;
4621
4622 IF (p_dynamic_tab.COUNT = 5) THEN
4623 OPEN p_cursor FOR p_statement USING
4624 p_dynamic_tab(1),
4625 p_dynamic_tab(2),
4626 p_dynamic_tab(3),
4627 p_dynamic_tab(4),
4628 p_dynamic_tab(5);
4629 END IF;
4630
4631 IF (p_dynamic_tab.COUNT = 6) THEN
4632 OPEN p_cursor FOR p_statement USING
4633 p_dynamic_tab(1),
4634 p_dynamic_tab(2),
4635 p_dynamic_tab(3),
4636 p_dynamic_tab(4),
4637 p_dynamic_tab(5),
4638 p_dynamic_tab(6);
4639 END IF;
4640
4641 IF (p_dynamic_tab.COUNT = 7) THEN
4642 OPEN p_cursor FOR p_statement USING
4643 p_dynamic_tab(1),
4644 p_dynamic_tab(2),
4645 p_dynamic_tab(3),
4646 p_dynamic_tab(4),
4647 p_dynamic_tab(5),
4648 p_dynamic_tab(6),
4649 p_dynamic_tab(7);
4650 END IF;
4651
4652 IF (p_dynamic_tab.COUNT = 8) THEN
4653 OPEN p_cursor FOR p_statement USING
4654 p_dynamic_tab(1),
4655 p_dynamic_tab(2),
4656 p_dynamic_tab(3),
4657 p_dynamic_tab(4),
4658 p_dynamic_tab(5),
4659 p_dynamic_tab(6),
4660 p_dynamic_tab(7),
4661 p_dynamic_tab(8);
4662 END IF;
4663
4664 IF (p_dynamic_tab.COUNT = 9) THEN
4665 OPEN p_cursor FOR p_statement USING
4666 p_dynamic_tab(1),
4667 p_dynamic_tab(2),
4668 p_dynamic_tab(3),
4669 p_dynamic_tab(4),
4670 p_dynamic_tab(5),
4671 p_dynamic_tab(6),
4672 p_dynamic_tab(7),
4673 p_dynamic_tab(8),
4674 p_dynamic_tab(9);
4675 END IF;
4676
4677 IF (p_dynamic_tab.COUNT = 10) THEN
4678 OPEN p_cursor FOR p_statement USING
4679 p_dynamic_tab(1),
4680 p_dynamic_tab(2),
4681 p_dynamic_tab(3),
4682 p_dynamic_tab(4),
4683 p_dynamic_tab(5),
4684 p_dynamic_tab(6),
4685 p_dynamic_tab(7),
4686 p_dynamic_tab(8),
4687 p_dynamic_tab(9),
4688 p_dynamic_tab(10);
4689 END IF;
4690
4691 IF (p_dynamic_tab.COUNT = 11) THEN
4692 OPEN p_cursor FOR p_statement USING
4693 p_dynamic_tab(1),
4694 p_dynamic_tab(2),
4695 p_dynamic_tab(3),
4696 p_dynamic_tab(4),
4697 p_dynamic_tab(5),
4698 p_dynamic_tab(6),
4699 p_dynamic_tab(7),
4700 p_dynamic_tab(8),
4701 p_dynamic_tab(9),
4702 p_dynamic_tab(10),
4703 p_dynamic_tab(11);
4704 END IF;
4705
4706 IF (p_dynamic_tab.COUNT = 12) THEN
4707 OPEN p_cursor FOR p_statement USING
4708 p_dynamic_tab(1),
4709 p_dynamic_tab(2),
4710 p_dynamic_tab(3),
4711 p_dynamic_tab(4),
4712 p_dynamic_tab(5),
4713 p_dynamic_tab(6),
4714 p_dynamic_tab(7),
4715 p_dynamic_tab(8),
4716 p_dynamic_tab(9),
4717 p_dynamic_tab(10),
4718 p_dynamic_tab(11),
4719 p_dynamic_tab(12);
4720 END IF;
4721
4722 IF (p_dynamic_tab.COUNT = 13) THEN
4723 OPEN p_cursor FOR p_statement USING
4724 p_dynamic_tab(1),
4725 p_dynamic_tab(2),
4726 p_dynamic_tab(3),
4727 p_dynamic_tab(4),
4728 p_dynamic_tab(5),
4729 p_dynamic_tab(6),
4730 p_dynamic_tab(7),
4731 p_dynamic_tab(8),
4732 p_dynamic_tab(9),
4733 p_dynamic_tab(10),
4734 p_dynamic_tab(11),
4735 p_dynamic_tab(12),
4736 p_dynamic_tab(13);
4737 END IF;
4738
4739 IF (p_dynamic_tab.COUNT = 14) THEN
4740 OPEN p_cursor FOR p_statement USING
4741 p_dynamic_tab(1),
4742 p_dynamic_tab(2),
4743 p_dynamic_tab(3),
4744 p_dynamic_tab(4),
4745 p_dynamic_tab(5),
4746 p_dynamic_tab(6),
4747 p_dynamic_tab(7),
4748 p_dynamic_tab(8),
4749 p_dynamic_tab(9),
4750 p_dynamic_tab(10),
4751 p_dynamic_tab(11),
4752 p_dynamic_tab(12),
4753 p_dynamic_tab(13),
4754 p_dynamic_tab(14);
4755 END IF;
4756
4757 IF (p_dynamic_tab.COUNT = 15) THEN
4758 OPEN p_cursor FOR p_statement USING
4759 p_dynamic_tab(1),
4760 p_dynamic_tab(2),
4761 p_dynamic_tab(3),
4762 p_dynamic_tab(4),
4763 p_dynamic_tab(5),
4764 p_dynamic_tab(6),
4765 p_dynamic_tab(7),
4766 p_dynamic_tab(8),
4767 p_dynamic_tab(9),
4768 p_dynamic_tab(10),
4769 p_dynamic_tab(11),
4770 p_dynamic_tab(12),
4771 p_dynamic_tab(13),
4772 p_dynamic_tab(14),
4773 p_dynamic_tab(15);
4774 END IF;
4775
4776 IF (p_dynamic_tab.COUNT = 16) THEN
4777 OPEN p_cursor FOR p_statement USING
4778 p_dynamic_tab(1),
4779 p_dynamic_tab(2),
4780 p_dynamic_tab(3),
4781 p_dynamic_tab(4),
4782 p_dynamic_tab(5),
4783 p_dynamic_tab(6),
4784 p_dynamic_tab(7),
4785 p_dynamic_tab(8),
4786 p_dynamic_tab(9),
4787 p_dynamic_tab(10),
4788 p_dynamic_tab(11),
4789 p_dynamic_tab(12),
4790 p_dynamic_tab(13),
4791 p_dynamic_tab(14),
4792 p_dynamic_tab(15),
4793 p_dynamic_tab(16);
4794 END IF;
4795
4796 IF (p_dynamic_tab.COUNT = 17) THEN
4797 OPEN p_cursor FOR p_statement USING
4798 p_dynamic_tab(1),
4799 p_dynamic_tab(2),
4800 p_dynamic_tab(3),
4801 p_dynamic_tab(4),
4802 p_dynamic_tab(5),
4803 p_dynamic_tab(6),
4804 p_dynamic_tab(7),
4805 p_dynamic_tab(8),
4806 p_dynamic_tab(9),
4807 p_dynamic_tab(10),
4808 p_dynamic_tab(11),
4809 p_dynamic_tab(12),
4810 p_dynamic_tab(13),
4811 p_dynamic_tab(14),
4812 p_dynamic_tab(15),
4813 p_dynamic_tab(16),
4814 p_dynamic_tab(17);
4815 END IF;
4816
4817 IF (p_dynamic_tab.COUNT = 18) THEN
4818 OPEN p_cursor FOR p_statement USING
4819 p_dynamic_tab(1),
4820 p_dynamic_tab(2),
4821 p_dynamic_tab(3),
4822 p_dynamic_tab(4),
4823 p_dynamic_tab(5),
4824 p_dynamic_tab(6),
4825 p_dynamic_tab(7),
4826 p_dynamic_tab(8),
4827 p_dynamic_tab(9),
4828 p_dynamic_tab(10),
4829 p_dynamic_tab(11),
4830 p_dynamic_tab(12),
4831 p_dynamic_tab(13),
4832 p_dynamic_tab(14),
4833 p_dynamic_tab(15),
4834 p_dynamic_tab(16),
4835 p_dynamic_tab(17),
4836 p_dynamic_tab(18);
4837 END IF;
4838
4839 IF (p_dynamic_tab.COUNT = 19) THEN
4840 OPEN p_cursor FOR p_statement USING
4841 p_dynamic_tab(1),
4842 p_dynamic_tab(2),
4843 p_dynamic_tab(3),
4844 p_dynamic_tab(4),
4845 p_dynamic_tab(5),
4846 p_dynamic_tab(6),
4847 p_dynamic_tab(7),
4848 p_dynamic_tab(8),
4849 p_dynamic_tab(9),
4850 p_dynamic_tab(10),
4851 p_dynamic_tab(11),
4852 p_dynamic_tab(12),
4853 p_dynamic_tab(13),
4854 p_dynamic_tab(14),
4855 p_dynamic_tab(15),
4856 p_dynamic_tab(16),
4857 p_dynamic_tab(17),
4858 p_dynamic_tab(18),
4859 p_dynamic_tab(19);
4860 END IF;
4861
4862 IF (p_dynamic_tab.COUNT = 20) THEN
4863 OPEN p_cursor FOR p_statement USING
4864 p_dynamic_tab(1),
4865 p_dynamic_tab(2),
4866 p_dynamic_tab(3),
4867 p_dynamic_tab(4),
4868 p_dynamic_tab(5),
4869 p_dynamic_tab(6),
4870 p_dynamic_tab(7),
4871 p_dynamic_tab(8),
4872 p_dynamic_tab(9),
4873 p_dynamic_tab(10),
4874 p_dynamic_tab(11),
4875 p_dynamic_tab(12),
4876 p_dynamic_tab(13),
4877 p_dynamic_tab(14),
4878 p_dynamic_tab(15),
4879 p_dynamic_tab(16),
4880 p_dynamic_tab(17),
4881 p_dynamic_tab(18),
4882 p_dynamic_tab(19),
4883 p_dynamic_tab(20);
4884 END IF;
4885
4886 IF (p_dynamic_tab.COUNT = 21) THEN
4887 OPEN p_cursor FOR p_statement USING
4888 p_dynamic_tab(1),
4889 p_dynamic_tab(2),
4890 p_dynamic_tab(3),
4891 p_dynamic_tab(4),
4892 p_dynamic_tab(5),
4893 p_dynamic_tab(6),
4894 p_dynamic_tab(7),
4895 p_dynamic_tab(8),
4896 p_dynamic_tab(9),
4897 p_dynamic_tab(10),
4898 p_dynamic_tab(11),
4899 p_dynamic_tab(12),
4900 p_dynamic_tab(13),
4901 p_dynamic_tab(14),
4902 p_dynamic_tab(15),
4903 p_dynamic_tab(16),
4904 p_dynamic_tab(17),
4905 p_dynamic_tab(18),
4906 p_dynamic_tab(19),
4907 p_dynamic_tab(20),
4908 p_dynamic_tab(21);
4909 END IF;
4910
4911 IF (p_dynamic_tab.COUNT = 22) THEN
4912 OPEN p_cursor FOR p_statement USING
4913 p_dynamic_tab(1),
4914 p_dynamic_tab(2),
4915 p_dynamic_tab(3),
4916 p_dynamic_tab(4),
4917 p_dynamic_tab(5),
4918 p_dynamic_tab(6),
4919 p_dynamic_tab(7),
4920 p_dynamic_tab(8),
4921 p_dynamic_tab(9),
4922 p_dynamic_tab(10),
4923 p_dynamic_tab(11),
4924 p_dynamic_tab(12),
4925 p_dynamic_tab(13),
4926 p_dynamic_tab(14),
4927 p_dynamic_tab(15),
4928 p_dynamic_tab(16),
4929 p_dynamic_tab(17),
4930 p_dynamic_tab(18),
4931 p_dynamic_tab(19),
4932 p_dynamic_tab(20),
4933 p_dynamic_tab(21),
4934 p_dynamic_tab(22);
4935 END IF;
4936
4937 IF (p_dynamic_tab.COUNT = 23) THEN
4938 OPEN p_cursor FOR p_statement USING
4939 p_dynamic_tab(1),
4940 p_dynamic_tab(2),
4941 p_dynamic_tab(3),
4942 p_dynamic_tab(4),
4943 p_dynamic_tab(5),
4944 p_dynamic_tab(6),
4945 p_dynamic_tab(7),
4946 p_dynamic_tab(8),
4947 p_dynamic_tab(9),
4948 p_dynamic_tab(10),
4949 p_dynamic_tab(11),
4950 p_dynamic_tab(12),
4951 p_dynamic_tab(13),
4952 p_dynamic_tab(14),
4953 p_dynamic_tab(15),
4954 p_dynamic_tab(16),
4955 p_dynamic_tab(17),
4956 p_dynamic_tab(18),
4957 p_dynamic_tab(19),
4958 p_dynamic_tab(20),
4959 p_dynamic_tab(21),
4960 p_dynamic_tab(22),
4961 p_dynamic_tab(23);
4962 END IF;
4963
4964 IF (p_dynamic_tab.COUNT = 24) THEN
4965 OPEN p_cursor FOR p_statement USING
4966 p_dynamic_tab(1),
4967 p_dynamic_tab(2),
4968 p_dynamic_tab(3),
4969 p_dynamic_tab(4),
4970 p_dynamic_tab(5),
4971 p_dynamic_tab(6),
4972 p_dynamic_tab(7),
4973 p_dynamic_tab(8),
4974 p_dynamic_tab(9),
4975 p_dynamic_tab(10),
4976 p_dynamic_tab(11),
4977 p_dynamic_tab(12),
4978 p_dynamic_tab(13),
4979 p_dynamic_tab(14),
4980 p_dynamic_tab(15),
4981 p_dynamic_tab(16),
4982 p_dynamic_tab(17),
4983 p_dynamic_tab(18),
4984 p_dynamic_tab(19),
4985 p_dynamic_tab(20),
4986 p_dynamic_tab(21),
4987 p_dynamic_tab(22),
4988 p_dynamic_tab(23),
4989 p_dynamic_tab(24);
4990 END IF;
4991
4992 IF (p_dynamic_tab.COUNT = 25) THEN
4993 OPEN p_cursor FOR p_statement USING
4994 p_dynamic_tab(1),
4995 p_dynamic_tab(2),
4996 p_dynamic_tab(3),
4997 p_dynamic_tab(4),
4998 p_dynamic_tab(5),
4999 p_dynamic_tab(6),
5000 p_dynamic_tab(7),
5001 p_dynamic_tab(8),
5002 p_dynamic_tab(9),
5003 p_dynamic_tab(10),
5004 p_dynamic_tab(11),
5005 p_dynamic_tab(12),
5006 p_dynamic_tab(13),
5007 p_dynamic_tab(14),
5008 p_dynamic_tab(15),
5009 p_dynamic_tab(16),
5010 p_dynamic_tab(17),
5011 p_dynamic_tab(18),
5012 p_dynamic_tab(19),
5013 p_dynamic_tab(20),
5014 p_dynamic_tab(21),
5015 p_dynamic_tab(22),
5016 p_dynamic_tab(23),
5017 p_dynamic_tab(24),
5018 p_dynamic_tab(25);
5019 END IF;
5020
5021 IF (p_dynamic_tab.COUNT = 26) THEN
5022 OPEN p_cursor FOR p_statement USING
5023 p_dynamic_tab(1),
5024 p_dynamic_tab(2),
5025 p_dynamic_tab(3),
5026 p_dynamic_tab(4),
5027 p_dynamic_tab(5),
5028 p_dynamic_tab(6),
5029 p_dynamic_tab(7),
5030 p_dynamic_tab(8),
5031 p_dynamic_tab(9),
5032 p_dynamic_tab(10),
5033 p_dynamic_tab(11),
5034 p_dynamic_tab(12),
5035 p_dynamic_tab(13),
5036 p_dynamic_tab(14),
5037 p_dynamic_tab(15),
5038 p_dynamic_tab(16),
5039 p_dynamic_tab(17),
5040 p_dynamic_tab(18),
5041 p_dynamic_tab(19),
5042 p_dynamic_tab(20),
5043 p_dynamic_tab(21),
5044 p_dynamic_tab(22),
5045 p_dynamic_tab(23),
5046 p_dynamic_tab(24),
5047 p_dynamic_tab(25),
5048 p_dynamic_tab(26);
5049 END IF;
5050
5051 IF (p_dynamic_tab.COUNT = 27) THEN
5052 OPEN p_cursor FOR p_statement USING
5053 p_dynamic_tab(1),
5054 p_dynamic_tab(2),
5055 p_dynamic_tab(3),
5056 p_dynamic_tab(4),
5057 p_dynamic_tab(5),
5058 p_dynamic_tab(6),
5059 p_dynamic_tab(7),
5060 p_dynamic_tab(8),
5061 p_dynamic_tab(9),
5062 p_dynamic_tab(10),
5063 p_dynamic_tab(11),
5064 p_dynamic_tab(12),
5065 p_dynamic_tab(13),
5066 p_dynamic_tab(14),
5067 p_dynamic_tab(15),
5068 p_dynamic_tab(16),
5069 p_dynamic_tab(17),
5070 p_dynamic_tab(18),
5071 p_dynamic_tab(19),
5072 p_dynamic_tab(20),
5073 p_dynamic_tab(21),
5074 p_dynamic_tab(22),
5075 p_dynamic_tab(23),
5076 p_dynamic_tab(24),
5077 p_dynamic_tab(25),
5078 p_dynamic_tab(26),
5079 p_dynamic_tab(27);
5080 END IF;
5081
5082 IF (p_dynamic_tab.COUNT = 28) THEN
5083 OPEN p_cursor FOR p_statement USING
5084 p_dynamic_tab(1),
5085 p_dynamic_tab(2),
5086 p_dynamic_tab(3),
5087 p_dynamic_tab(4),
5088 p_dynamic_tab(5),
5089 p_dynamic_tab(6),
5090 p_dynamic_tab(7),
5091 p_dynamic_tab(8),
5092 p_dynamic_tab(9),
5093 p_dynamic_tab(10),
5094 p_dynamic_tab(11),
5095 p_dynamic_tab(12),
5096 p_dynamic_tab(13),
5097 p_dynamic_tab(14),
5098 p_dynamic_tab(15),
5099 p_dynamic_tab(16),
5100 p_dynamic_tab(17),
5101 p_dynamic_tab(18),
5102 p_dynamic_tab(19),
5103 p_dynamic_tab(20),
5104 p_dynamic_tab(21),
5105 p_dynamic_tab(22),
5106 p_dynamic_tab(23),
5107 p_dynamic_tab(24),
5108 p_dynamic_tab(25),
5109 p_dynamic_tab(26),
5110 p_dynamic_tab(27),
5111 p_dynamic_tab(28);
5112 END IF;
5113
5114 IF (p_dynamic_tab.COUNT = 29) THEN
5115 OPEN p_cursor FOR p_statement USING
5116 p_dynamic_tab(1),
5117 p_dynamic_tab(2),
5118 p_dynamic_tab(3),
5119 p_dynamic_tab(4),
5120 p_dynamic_tab(5),
5121 p_dynamic_tab(6),
5122 p_dynamic_tab(7),
5123 p_dynamic_tab(8),
5124 p_dynamic_tab(9),
5125 p_dynamic_tab(10),
5126 p_dynamic_tab(11),
5127 p_dynamic_tab(12),
5128 p_dynamic_tab(13),
5129 p_dynamic_tab(14),
5130 p_dynamic_tab(15),
5131 p_dynamic_tab(16),
5132 p_dynamic_tab(17),
5133 p_dynamic_tab(18),
5134 p_dynamic_tab(19),
5135 p_dynamic_tab(20),
5136 p_dynamic_tab(21),
5137 p_dynamic_tab(22),
5138 p_dynamic_tab(23),
5139 p_dynamic_tab(24),
5140 p_dynamic_tab(25),
5141 p_dynamic_tab(26),
5142 p_dynamic_tab(27),
5143 p_dynamic_tab(28),
5144 p_dynamic_tab(29);
5145 END IF;
5146
5147 IF (p_dynamic_tab.COUNT = 30) THEN
5148 OPEN p_cursor FOR p_statement USING
5149 p_dynamic_tab(1),
5150 p_dynamic_tab(2),
5151 p_dynamic_tab(3),
5152 p_dynamic_tab(4),
5153 p_dynamic_tab(5),
5154 p_dynamic_tab(6),
5155 p_dynamic_tab(7),
5156 p_dynamic_tab(8),
5157 p_dynamic_tab(9),
5158 p_dynamic_tab(10),
5159 p_dynamic_tab(11),
5160 p_dynamic_tab(12),
5161 p_dynamic_tab(13),
5162 p_dynamic_tab(14),
5163 p_dynamic_tab(15),
5164 p_dynamic_tab(16),
5165 p_dynamic_tab(17),
5166 p_dynamic_tab(18),
5167 p_dynamic_tab(19),
5168 p_dynamic_tab(20),
5169 p_dynamic_tab(21),
5170 p_dynamic_tab(22),
5171 p_dynamic_tab(23),
5172 p_dynamic_tab(24),
5173 p_dynamic_tab(25),
5174 p_dynamic_tab(26),
5175 p_dynamic_tab(27),
5176 p_dynamic_tab(28),
5177 p_dynamic_tab(29),
5178 p_dynamic_tab(30);
5179 END IF;
5180
5181 IF (p_dynamic_tab.COUNT = 31) THEN
5182 OPEN p_cursor FOR p_statement USING
5183 p_dynamic_tab(1),
5184 p_dynamic_tab(2),
5185 p_dynamic_tab(3),
5186 p_dynamic_tab(4),
5187 p_dynamic_tab(5),
5188 p_dynamic_tab(6),
5189 p_dynamic_tab(7),
5190 p_dynamic_tab(8),
5191 p_dynamic_tab(9),
5192 p_dynamic_tab(10),
5193 p_dynamic_tab(11),
5194 p_dynamic_tab(12),
5195 p_dynamic_tab(13),
5196 p_dynamic_tab(14),
5197 p_dynamic_tab(15),
5198 p_dynamic_tab(16),
5199 p_dynamic_tab(17),
5200 p_dynamic_tab(18),
5201 p_dynamic_tab(19),
5202 p_dynamic_tab(20),
5203 p_dynamic_tab(21),
5204 p_dynamic_tab(22),
5205 p_dynamic_tab(23),
5206 p_dynamic_tab(24),
5207 p_dynamic_tab(25),
5208 p_dynamic_tab(26),
5209 p_dynamic_tab(27),
5210 p_dynamic_tab(28),
5211 p_dynamic_tab(29),
5212 p_dynamic_tab(30),
5213 p_dynamic_tab(31);
5214 END IF;
5215
5216 IF (p_dynamic_tab.COUNT = 32) THEN
5217 OPEN p_cursor FOR p_statement USING
5218 p_dynamic_tab(1),
5219 p_dynamic_tab(2),
5220 p_dynamic_tab(3),
5221 p_dynamic_tab(4),
5222 p_dynamic_tab(5),
5223 p_dynamic_tab(6),
5224 p_dynamic_tab(7),
5225 p_dynamic_tab(8),
5226 p_dynamic_tab(9),
5227 p_dynamic_tab(10),
5228 p_dynamic_tab(11),
5229 p_dynamic_tab(12),
5230 p_dynamic_tab(13),
5231 p_dynamic_tab(14),
5232 p_dynamic_tab(15),
5233 p_dynamic_tab(16),
5234 p_dynamic_tab(17),
5235 p_dynamic_tab(18),
5236 p_dynamic_tab(19),
5237 p_dynamic_tab(20),
5238 p_dynamic_tab(21),
5239 p_dynamic_tab(22),
5240 p_dynamic_tab(23),
5241 p_dynamic_tab(24),
5242 p_dynamic_tab(25),
5243 p_dynamic_tab(26),
5244 p_dynamic_tab(27),
5245 p_dynamic_tab(28),
5246 p_dynamic_tab(29),
5247 p_dynamic_tab(30),
5248 p_dynamic_tab(31),
5249 p_dynamic_tab(32);
5250 END IF;
5251
5252 IF (p_dynamic_tab.COUNT = 33) THEN
5253 OPEN p_cursor FOR p_statement USING
5254 p_dynamic_tab(1),
5255 p_dynamic_tab(2),
5256 p_dynamic_tab(3),
5257 p_dynamic_tab(4),
5258 p_dynamic_tab(5),
5259 p_dynamic_tab(6),
5260 p_dynamic_tab(7),
5261 p_dynamic_tab(8),
5262 p_dynamic_tab(9),
5263 p_dynamic_tab(10),
5264 p_dynamic_tab(11),
5265 p_dynamic_tab(12),
5266 p_dynamic_tab(13),
5267 p_dynamic_tab(14),
5268 p_dynamic_tab(15),
5269 p_dynamic_tab(16),
5270 p_dynamic_tab(17),
5271 p_dynamic_tab(18),
5272 p_dynamic_tab(19),
5273 p_dynamic_tab(20),
5274 p_dynamic_tab(21),
5275 p_dynamic_tab(22),
5276 p_dynamic_tab(23),
5277 p_dynamic_tab(24),
5278 p_dynamic_tab(25),
5279 p_dynamic_tab(26),
5280 p_dynamic_tab(27),
5281 p_dynamic_tab(28),
5282 p_dynamic_tab(29),
5283 p_dynamic_tab(30),
5284 p_dynamic_tab(31),
5285 p_dynamic_tab(32),
5286 p_dynamic_tab(33);
5287 END IF;
5288
5289 IF (p_dynamic_tab.COUNT = 34) THEN
5290 OPEN p_cursor FOR p_statement USING
5291 p_dynamic_tab(1),
5292 p_dynamic_tab(2),
5293 p_dynamic_tab(3),
5294 p_dynamic_tab(4),
5295 p_dynamic_tab(5),
5296 p_dynamic_tab(6),
5297 p_dynamic_tab(7),
5298 p_dynamic_tab(8),
5299 p_dynamic_tab(9),
5300 p_dynamic_tab(10),
5301 p_dynamic_tab(11),
5302 p_dynamic_tab(12),
5303 p_dynamic_tab(13),
5304 p_dynamic_tab(14),
5305 p_dynamic_tab(15),
5306 p_dynamic_tab(16),
5307 p_dynamic_tab(17),
5308 p_dynamic_tab(18),
5309 p_dynamic_tab(19),
5310 p_dynamic_tab(20),
5311 p_dynamic_tab(21),
5312 p_dynamic_tab(22),
5313 p_dynamic_tab(23),
5314 p_dynamic_tab(24),
5315 p_dynamic_tab(25),
5316 p_dynamic_tab(26),
5317 p_dynamic_tab(27),
5318 p_dynamic_tab(28),
5319 p_dynamic_tab(29),
5320 p_dynamic_tab(30),
5321 p_dynamic_tab(31),
5322 p_dynamic_tab(32),
5323 p_dynamic_tab(33),
5324 p_dynamic_tab(34);
5325 END IF;
5326
5327 IF (p_dynamic_tab.COUNT = 35) THEN
5328 OPEN p_cursor FOR p_statement USING
5329 p_dynamic_tab(1),
5330 p_dynamic_tab(2),
5331 p_dynamic_tab(3),
5332 p_dynamic_tab(4),
5333 p_dynamic_tab(5),
5334 p_dynamic_tab(6),
5335 p_dynamic_tab(7),
5336 p_dynamic_tab(8),
5337 p_dynamic_tab(9),
5338 p_dynamic_tab(10),
5339 p_dynamic_tab(11),
5340 p_dynamic_tab(12),
5341 p_dynamic_tab(13),
5342 p_dynamic_tab(14),
5343 p_dynamic_tab(15),
5344 p_dynamic_tab(16),
5345 p_dynamic_tab(17),
5346 p_dynamic_tab(18),
5347 p_dynamic_tab(19),
5348 p_dynamic_tab(20),
5349 p_dynamic_tab(21),
5350 p_dynamic_tab(22),
5351 p_dynamic_tab(23),
5352 p_dynamic_tab(24),
5353 p_dynamic_tab(25),
5354 p_dynamic_tab(26),
5355 p_dynamic_tab(27),
5356 p_dynamic_tab(28),
5357 p_dynamic_tab(29),
5358 p_dynamic_tab(30),
5359 p_dynamic_tab(31),
5360 p_dynamic_tab(32),
5361 p_dynamic_tab(33),
5362 p_dynamic_tab(34),
5363 p_dynamic_tab(35);
5364 END IF;
5365
5366 IF (p_dynamic_tab.COUNT = 36) THEN
5367 OPEN p_cursor FOR p_statement USING
5368 p_dynamic_tab(1),
5369 p_dynamic_tab(2),
5370 p_dynamic_tab(3),
5371 p_dynamic_tab(4),
5372 p_dynamic_tab(5),
5373 p_dynamic_tab(6),
5374 p_dynamic_tab(7),
5375 p_dynamic_tab(8),
5376 p_dynamic_tab(9),
5377 p_dynamic_tab(10),
5378 p_dynamic_tab(11),
5379 p_dynamic_tab(12),
5380 p_dynamic_tab(13),
5381 p_dynamic_tab(14),
5382 p_dynamic_tab(15),
5383 p_dynamic_tab(16),
5384 p_dynamic_tab(17),
5385 p_dynamic_tab(18),
5386 p_dynamic_tab(19),
5387 p_dynamic_tab(20),
5388 p_dynamic_tab(21),
5389 p_dynamic_tab(22),
5390 p_dynamic_tab(23),
5391 p_dynamic_tab(24),
5392 p_dynamic_tab(25),
5393 p_dynamic_tab(26),
5394 p_dynamic_tab(27),
5395 p_dynamic_tab(28),
5396 p_dynamic_tab(29),
5397 p_dynamic_tab(30),
5398 p_dynamic_tab(31),
5399 p_dynamic_tab(32),
5400 p_dynamic_tab(33),
5401 p_dynamic_tab(34),
5402 p_dynamic_tab(35),
5403 p_dynamic_tab(36);
5404 END IF;
5405
5406 IF (p_dynamic_tab.COUNT = 37) THEN
5407 OPEN p_cursor FOR p_statement USING
5408 p_dynamic_tab(1),
5409 p_dynamic_tab(2),
5410 p_dynamic_tab(3),
5411 p_dynamic_tab(4),
5412 p_dynamic_tab(5),
5413 p_dynamic_tab(6),
5414 p_dynamic_tab(7),
5415 p_dynamic_tab(8),
5416 p_dynamic_tab(9),
5417 p_dynamic_tab(10),
5418 p_dynamic_tab(11),
5419 p_dynamic_tab(12),
5420 p_dynamic_tab(13),
5421 p_dynamic_tab(14),
5422 p_dynamic_tab(15),
5423 p_dynamic_tab(16),
5424 p_dynamic_tab(17),
5425 p_dynamic_tab(18),
5426 p_dynamic_tab(19),
5427 p_dynamic_tab(20),
5428 p_dynamic_tab(21),
5429 p_dynamic_tab(22),
5430 p_dynamic_tab(23),
5431 p_dynamic_tab(24),
5432 p_dynamic_tab(25),
5433 p_dynamic_tab(26),
5434 p_dynamic_tab(27),
5435 p_dynamic_tab(28),
5436 p_dynamic_tab(29),
5437 p_dynamic_tab(30),
5438 p_dynamic_tab(31),
5439 p_dynamic_tab(32),
5440 p_dynamic_tab(33),
5441 p_dynamic_tab(34),
5442 p_dynamic_tab(35),
5443 p_dynamic_tab(36),
5444 p_dynamic_tab(37);
5445 END IF;
5446
5447 IF (p_dynamic_tab.COUNT = 38) THEN
5448 OPEN p_cursor FOR p_statement USING
5449 p_dynamic_tab(1),
5450 p_dynamic_tab(2),
5451 p_dynamic_tab(3),
5452 p_dynamic_tab(4),
5453 p_dynamic_tab(5),
5454 p_dynamic_tab(6),
5455 p_dynamic_tab(7),
5456 p_dynamic_tab(8),
5457 p_dynamic_tab(9),
5458 p_dynamic_tab(10),
5459 p_dynamic_tab(11),
5460 p_dynamic_tab(12),
5461 p_dynamic_tab(13),
5462 p_dynamic_tab(14),
5463 p_dynamic_tab(15),
5464 p_dynamic_tab(16),
5465 p_dynamic_tab(17),
5466 p_dynamic_tab(18),
5467 p_dynamic_tab(19),
5468 p_dynamic_tab(20),
5469 p_dynamic_tab(21),
5470 p_dynamic_tab(22),
5471 p_dynamic_tab(23),
5472 p_dynamic_tab(24),
5473 p_dynamic_tab(25),
5474 p_dynamic_tab(26),
5475 p_dynamic_tab(27),
5476 p_dynamic_tab(28),
5477 p_dynamic_tab(29),
5478 p_dynamic_tab(30),
5479 p_dynamic_tab(31),
5480 p_dynamic_tab(32),
5481 p_dynamic_tab(33),
5482 p_dynamic_tab(34),
5483 p_dynamic_tab(35),
5484 p_dynamic_tab(36),
5485 p_dynamic_tab(37),
5486 p_dynamic_tab(38);
5487 END IF;
5488
5489 IF (p_dynamic_tab.COUNT = 39) THEN
5490 OPEN p_cursor FOR p_statement USING
5491 p_dynamic_tab(1),
5492 p_dynamic_tab(2),
5493 p_dynamic_tab(3),
5494 p_dynamic_tab(4),
5495 p_dynamic_tab(5),
5496 p_dynamic_tab(6),
5497 p_dynamic_tab(7),
5498 p_dynamic_tab(8),
5499 p_dynamic_tab(9),
5500 p_dynamic_tab(10),
5501 p_dynamic_tab(11),
5502 p_dynamic_tab(12),
5503 p_dynamic_tab(13),
5504 p_dynamic_tab(14),
5505 p_dynamic_tab(15),
5506 p_dynamic_tab(16),
5507 p_dynamic_tab(17),
5508 p_dynamic_tab(18),
5509 p_dynamic_tab(19),
5510 p_dynamic_tab(20),
5511 p_dynamic_tab(21),
5512 p_dynamic_tab(22),
5513 p_dynamic_tab(23),
5514 p_dynamic_tab(24),
5515 p_dynamic_tab(25),
5516 p_dynamic_tab(26),
5517 p_dynamic_tab(27),
5518 p_dynamic_tab(28),
5519 p_dynamic_tab(29),
5520 p_dynamic_tab(30),
5521 p_dynamic_tab(31),
5522 p_dynamic_tab(32),
5523 p_dynamic_tab(33),
5524 p_dynamic_tab(34),
5525 p_dynamic_tab(35),
5526 p_dynamic_tab(36),
5527 p_dynamic_tab(37),
5528 p_dynamic_tab(38),
5529 p_dynamic_tab(39);
5530 END IF;
5531
5532 IF (p_dynamic_tab.COUNT = 40) THEN
5533 OPEN p_cursor FOR p_statement USING
5534 p_dynamic_tab(1),
5535 p_dynamic_tab(2),
5536 p_dynamic_tab(3),
5537 p_dynamic_tab(4),
5538 p_dynamic_tab(5),
5539 p_dynamic_tab(6),
5540 p_dynamic_tab(7),
5541 p_dynamic_tab(8),
5542 p_dynamic_tab(9),
5543 p_dynamic_tab(10),
5544 p_dynamic_tab(11),
5545 p_dynamic_tab(12),
5546 p_dynamic_tab(13),
5547 p_dynamic_tab(14),
5548 p_dynamic_tab(15),
5549 p_dynamic_tab(16),
5550 p_dynamic_tab(17),
5551 p_dynamic_tab(18),
5552 p_dynamic_tab(19),
5553 p_dynamic_tab(20),
5554 p_dynamic_tab(21),
5555 p_dynamic_tab(22),
5556 p_dynamic_tab(23),
5557 p_dynamic_tab(24),
5558 p_dynamic_tab(25),
5559 p_dynamic_tab(26),
5560 p_dynamic_tab(27),
5561 p_dynamic_tab(28),
5562 p_dynamic_tab(29),
5563 p_dynamic_tab(30),
5564 p_dynamic_tab(31),
5565 p_dynamic_tab(32),
5566 p_dynamic_tab(33),
5567 p_dynamic_tab(34),
5568 p_dynamic_tab(35),
5569 p_dynamic_tab(36),
5570 p_dynamic_tab(37),
5571 p_dynamic_tab(38),
5572 p_dynamic_tab(39),
5573 p_dynamic_tab(40);
5574 END IF;
5575
5576 IF (p_dynamic_tab.COUNT = 41) THEN
5577 OPEN p_cursor FOR p_statement USING
5578 p_dynamic_tab(1),
5579 p_dynamic_tab(2),
5580 p_dynamic_tab(3),
5581 p_dynamic_tab(4),
5582 p_dynamic_tab(5),
5583 p_dynamic_tab(6),
5584 p_dynamic_tab(7),
5585 p_dynamic_tab(8),
5586 p_dynamic_tab(9),
5587 p_dynamic_tab(10),
5588 p_dynamic_tab(11),
5589 p_dynamic_tab(12),
5590 p_dynamic_tab(13),
5591 p_dynamic_tab(14),
5592 p_dynamic_tab(15),
5593 p_dynamic_tab(16),
5594 p_dynamic_tab(17),
5595 p_dynamic_tab(18),
5596 p_dynamic_tab(19),
5597 p_dynamic_tab(20),
5598 p_dynamic_tab(21),
5599 p_dynamic_tab(22),
5600 p_dynamic_tab(23),
5601 p_dynamic_tab(24),
5602 p_dynamic_tab(25),
5603 p_dynamic_tab(26),
5604 p_dynamic_tab(27),
5605 p_dynamic_tab(28),
5606 p_dynamic_tab(29),
5607 p_dynamic_tab(30),
5608 p_dynamic_tab(31),
5609 p_dynamic_tab(32),
5610 p_dynamic_tab(33),
5611 p_dynamic_tab(34),
5612 p_dynamic_tab(35),
5613 p_dynamic_tab(36),
5614 p_dynamic_tab(37),
5615 p_dynamic_tab(38),
5616 p_dynamic_tab(39),
5617 p_dynamic_tab(40),
5618 p_dynamic_tab(41);
5619 END IF;
5620
5621 IF (p_dynamic_tab.COUNT = 42) THEN
5622 OPEN p_cursor FOR p_statement USING
5623 p_dynamic_tab(1),
5624 p_dynamic_tab(2),
5625 p_dynamic_tab(3),
5626 p_dynamic_tab(4),
5627 p_dynamic_tab(5),
5628 p_dynamic_tab(6),
5629 p_dynamic_tab(7),
5630 p_dynamic_tab(8),
5631 p_dynamic_tab(9),
5632 p_dynamic_tab(10),
5633 p_dynamic_tab(11),
5634 p_dynamic_tab(12),
5635 p_dynamic_tab(13),
5636 p_dynamic_tab(14),
5637 p_dynamic_tab(15),
5638 p_dynamic_tab(16),
5639 p_dynamic_tab(17),
5640 p_dynamic_tab(18),
5641 p_dynamic_tab(19),
5642 p_dynamic_tab(20),
5643 p_dynamic_tab(21),
5644 p_dynamic_tab(22),
5645 p_dynamic_tab(23),
5646 p_dynamic_tab(24),
5647 p_dynamic_tab(25),
5648 p_dynamic_tab(26),
5649 p_dynamic_tab(27),
5650 p_dynamic_tab(28),
5651 p_dynamic_tab(29),
5652 p_dynamic_tab(30),
5653 p_dynamic_tab(31),
5654 p_dynamic_tab(32),
5655 p_dynamic_tab(33),
5656 p_dynamic_tab(34),
5657 p_dynamic_tab(35),
5658 p_dynamic_tab(36),
5659 p_dynamic_tab(37),
5660 p_dynamic_tab(38),
5661 p_dynamic_tab(39),
5662 p_dynamic_tab(40),
5663 p_dynamic_tab(41),
5664 p_dynamic_tab(42);
5665 END IF;
5666
5667 IF (p_dynamic_tab.COUNT = 43) THEN
5668 OPEN p_cursor FOR p_statement USING
5669 p_dynamic_tab(1),
5670 p_dynamic_tab(2),
5671 p_dynamic_tab(3),
5672 p_dynamic_tab(4),
5673 p_dynamic_tab(5),
5674 p_dynamic_tab(6),
5675 p_dynamic_tab(7),
5676 p_dynamic_tab(8),
5677 p_dynamic_tab(9),
5678 p_dynamic_tab(10),
5679 p_dynamic_tab(11),
5680 p_dynamic_tab(12),
5681 p_dynamic_tab(13),
5682 p_dynamic_tab(14),
5683 p_dynamic_tab(15),
5684 p_dynamic_tab(16),
5685 p_dynamic_tab(17),
5686 p_dynamic_tab(18),
5687 p_dynamic_tab(19),
5688 p_dynamic_tab(20),
5689 p_dynamic_tab(21),
5690 p_dynamic_tab(22),
5691 p_dynamic_tab(23),
5692 p_dynamic_tab(24),
5693 p_dynamic_tab(25),
5694 p_dynamic_tab(26),
5695 p_dynamic_tab(27),
5696 p_dynamic_tab(28),
5697 p_dynamic_tab(29),
5698 p_dynamic_tab(30),
5699 p_dynamic_tab(31),
5700 p_dynamic_tab(32),
5701 p_dynamic_tab(33),
5702 p_dynamic_tab(34),
5703 p_dynamic_tab(35),
5704 p_dynamic_tab(36),
5705 p_dynamic_tab(37),
5706 p_dynamic_tab(38),
5707 p_dynamic_tab(39),
5708 p_dynamic_tab(40),
5709 p_dynamic_tab(41),
5710 p_dynamic_tab(42),
5711 p_dynamic_tab(43);
5712 END IF;
5713
5714 IF (p_dynamic_tab.COUNT = 44) THEN
5715 OPEN p_cursor FOR p_statement USING
5716 p_dynamic_tab(1),
5717 p_dynamic_tab(2),
5718 p_dynamic_tab(3),
5719 p_dynamic_tab(4),
5720 p_dynamic_tab(5),
5721 p_dynamic_tab(6),
5722 p_dynamic_tab(7),
5723 p_dynamic_tab(8),
5724 p_dynamic_tab(9),
5725 p_dynamic_tab(10),
5726 p_dynamic_tab(11),
5727 p_dynamic_tab(12),
5728 p_dynamic_tab(13),
5729 p_dynamic_tab(14),
5730 p_dynamic_tab(15),
5731 p_dynamic_tab(16),
5732 p_dynamic_tab(17),
5733 p_dynamic_tab(18),
5734 p_dynamic_tab(19),
5735 p_dynamic_tab(20),
5736 p_dynamic_tab(21),
5737 p_dynamic_tab(22),
5738 p_dynamic_tab(23),
5739 p_dynamic_tab(24),
5740 p_dynamic_tab(25),
5741 p_dynamic_tab(26),
5742 p_dynamic_tab(27),
5743 p_dynamic_tab(28),
5744 p_dynamic_tab(29),
5745 p_dynamic_tab(30),
5746 p_dynamic_tab(31),
5747 p_dynamic_tab(32),
5748 p_dynamic_tab(33),
5749 p_dynamic_tab(34),
5750 p_dynamic_tab(35),
5751 p_dynamic_tab(36),
5752 p_dynamic_tab(37),
5753 p_dynamic_tab(38),
5754 p_dynamic_tab(39),
5755 p_dynamic_tab(40),
5756 p_dynamic_tab(41),
5757 p_dynamic_tab(42),
5758 p_dynamic_tab(43),
5759 p_dynamic_tab(44);
5760 END IF;
5761
5762 IF (p_dynamic_tab.COUNT = 45) THEN
5763 OPEN p_cursor FOR p_statement USING
5764 p_dynamic_tab(1),
5765 p_dynamic_tab(2),
5766 p_dynamic_tab(3),
5767 p_dynamic_tab(4),
5768 p_dynamic_tab(5),
5769 p_dynamic_tab(6),
5770 p_dynamic_tab(7),
5771 p_dynamic_tab(8),
5772 p_dynamic_tab(9),
5773 p_dynamic_tab(10),
5774 p_dynamic_tab(11),
5775 p_dynamic_tab(12),
5776 p_dynamic_tab(13),
5777 p_dynamic_tab(14),
5778 p_dynamic_tab(15),
5779 p_dynamic_tab(16),
5780 p_dynamic_tab(17),
5781 p_dynamic_tab(18),
5782 p_dynamic_tab(19),
5783 p_dynamic_tab(20),
5784 p_dynamic_tab(21),
5785 p_dynamic_tab(22),
5786 p_dynamic_tab(23),
5787 p_dynamic_tab(24),
5788 p_dynamic_tab(25),
5789 p_dynamic_tab(26),
5790 p_dynamic_tab(27),
5791 p_dynamic_tab(28),
5792 p_dynamic_tab(29),
5793 p_dynamic_tab(30),
5794 p_dynamic_tab(31),
5795 p_dynamic_tab(32),
5796 p_dynamic_tab(33),
5797 p_dynamic_tab(34),
5798 p_dynamic_tab(35),
5799 p_dynamic_tab(36),
5800 p_dynamic_tab(37),
5801 p_dynamic_tab(38),
5802 p_dynamic_tab(39),
5803 p_dynamic_tab(40),
5804 p_dynamic_tab(41),
5805 p_dynamic_tab(42),
5806 p_dynamic_tab(43),
5807 p_dynamic_tab(44),
5808 p_dynamic_tab(45);
5809 END IF;
5810
5811 IF (p_dynamic_tab.COUNT = 46) THEN
5812 OPEN p_cursor FOR p_statement USING
5813 p_dynamic_tab(1),
5814 p_dynamic_tab(2),
5815 p_dynamic_tab(3),
5816 p_dynamic_tab(4),
5817 p_dynamic_tab(5),
5818 p_dynamic_tab(6),
5819 p_dynamic_tab(7),
5820 p_dynamic_tab(8),
5821 p_dynamic_tab(9),
5822 p_dynamic_tab(10),
5823 p_dynamic_tab(11),
5824 p_dynamic_tab(12),
5825 p_dynamic_tab(13),
5826 p_dynamic_tab(14),
5827 p_dynamic_tab(15),
5828 p_dynamic_tab(16),
5829 p_dynamic_tab(17),
5830 p_dynamic_tab(18),
5831 p_dynamic_tab(19),
5832 p_dynamic_tab(20),
5833 p_dynamic_tab(21),
5834 p_dynamic_tab(22),
5835 p_dynamic_tab(23),
5836 p_dynamic_tab(24),
5837 p_dynamic_tab(25),
5838 p_dynamic_tab(26),
5839 p_dynamic_tab(27),
5840 p_dynamic_tab(28),
5841 p_dynamic_tab(29),
5842 p_dynamic_tab(30),
5843 p_dynamic_tab(31),
5844 p_dynamic_tab(32),
5845 p_dynamic_tab(33),
5846 p_dynamic_tab(34),
5847 p_dynamic_tab(35),
5848 p_dynamic_tab(36),
5849 p_dynamic_tab(37),
5850 p_dynamic_tab(38),
5851 p_dynamic_tab(39),
5852 p_dynamic_tab(40),
5853 p_dynamic_tab(41),
5854 p_dynamic_tab(42),
5855 p_dynamic_tab(43),
5856 p_dynamic_tab(44),
5857 p_dynamic_tab(45),
5858 p_dynamic_tab(46);
5859 END IF;
5860
5861 IF (p_dynamic_tab.COUNT = 47) THEN
5862 OPEN p_cursor FOR p_statement USING
5863 p_dynamic_tab(1),
5864 p_dynamic_tab(2),
5865 p_dynamic_tab(3),
5866 p_dynamic_tab(4),
5867 p_dynamic_tab(5),
5868 p_dynamic_tab(6),
5869 p_dynamic_tab(7),
5870 p_dynamic_tab(8),
5871 p_dynamic_tab(9),
5872 p_dynamic_tab(10),
5873 p_dynamic_tab(11),
5874 p_dynamic_tab(12),
5875 p_dynamic_tab(13),
5876 p_dynamic_tab(14),
5877 p_dynamic_tab(15),
5878 p_dynamic_tab(16),
5879 p_dynamic_tab(17),
5880 p_dynamic_tab(18),
5881 p_dynamic_tab(19),
5882 p_dynamic_tab(20),
5883 p_dynamic_tab(21),
5884 p_dynamic_tab(22),
5885 p_dynamic_tab(23),
5886 p_dynamic_tab(24),
5887 p_dynamic_tab(25),
5888 p_dynamic_tab(26),
5889 p_dynamic_tab(27),
5890 p_dynamic_tab(28),
5891 p_dynamic_tab(29),
5892 p_dynamic_tab(30),
5893 p_dynamic_tab(31),
5894 p_dynamic_tab(32),
5895 p_dynamic_tab(33),
5896 p_dynamic_tab(34),
5897 p_dynamic_tab(35),
5898 p_dynamic_tab(36),
5899 p_dynamic_tab(37),
5900 p_dynamic_tab(38),
5901 p_dynamic_tab(39),
5902 p_dynamic_tab(40),
5903 p_dynamic_tab(41),
5904 p_dynamic_tab(42),
5905 p_dynamic_tab(43),
5906 p_dynamic_tab(44),
5907 p_dynamic_tab(45),
5908 p_dynamic_tab(46),
5909 p_dynamic_tab(47);
5910 END IF;
5911
5912 IF (p_dynamic_tab.COUNT = 48) THEN
5913 OPEN p_cursor FOR p_statement USING
5914 p_dynamic_tab(1),
5915 p_dynamic_tab(2),
5916 p_dynamic_tab(3),
5917 p_dynamic_tab(4),
5918 p_dynamic_tab(5),
5919 p_dynamic_tab(6),
5920 p_dynamic_tab(7),
5921 p_dynamic_tab(8),
5922 p_dynamic_tab(9),
5923 p_dynamic_tab(10),
5924 p_dynamic_tab(11),
5925 p_dynamic_tab(12),
5926 p_dynamic_tab(13),
5927 p_dynamic_tab(14),
5928 p_dynamic_tab(15),
5929 p_dynamic_tab(16),
5930 p_dynamic_tab(17),
5931 p_dynamic_tab(18),
5932 p_dynamic_tab(19),
5933 p_dynamic_tab(20),
5934 p_dynamic_tab(21),
5935 p_dynamic_tab(22),
5936 p_dynamic_tab(23),
5937 p_dynamic_tab(24),
5938 p_dynamic_tab(25),
5939 p_dynamic_tab(26),
5940 p_dynamic_tab(27),
5941 p_dynamic_tab(28),
5942 p_dynamic_tab(29),
5943 p_dynamic_tab(30),
5944 p_dynamic_tab(31),
5945 p_dynamic_tab(32),
5946 p_dynamic_tab(33),
5947 p_dynamic_tab(34),
5948 p_dynamic_tab(35),
5949 p_dynamic_tab(36),
5950 p_dynamic_tab(37),
5951 p_dynamic_tab(38),
5952 p_dynamic_tab(39),
5953 p_dynamic_tab(40),
5954 p_dynamic_tab(41),
5955 p_dynamic_tab(42),
5956 p_dynamic_tab(43),
5957 p_dynamic_tab(44),
5958 p_dynamic_tab(45),
5959 p_dynamic_tab(46),
5960 p_dynamic_tab(47),
5961 p_dynamic_tab(48);
5962 END IF;
5963
5964 IF (p_dynamic_tab.COUNT = 49) THEN
5965 OPEN p_cursor FOR p_statement USING
5966 p_dynamic_tab(1),
5967 p_dynamic_tab(2),
5968 p_dynamic_tab(3),
5969 p_dynamic_tab(4),
5970 p_dynamic_tab(5),
5971 p_dynamic_tab(6),
5972 p_dynamic_tab(7),
5973 p_dynamic_tab(8),
5974 p_dynamic_tab(9),
5975 p_dynamic_tab(10),
5976 p_dynamic_tab(11),
5977 p_dynamic_tab(12),
5978 p_dynamic_tab(13),
5979 p_dynamic_tab(14),
5980 p_dynamic_tab(15),
5981 p_dynamic_tab(16),
5982 p_dynamic_tab(17),
5983 p_dynamic_tab(18),
5984 p_dynamic_tab(19),
5985 p_dynamic_tab(20),
5986 p_dynamic_tab(21),
5987 p_dynamic_tab(22),
5988 p_dynamic_tab(23),
5989 p_dynamic_tab(24),
5990 p_dynamic_tab(25),
5991 p_dynamic_tab(26),
5992 p_dynamic_tab(27),
5993 p_dynamic_tab(28),
5994 p_dynamic_tab(29),
5995 p_dynamic_tab(30),
5996 p_dynamic_tab(31),
5997 p_dynamic_tab(32),
5998 p_dynamic_tab(33),
5999 p_dynamic_tab(34),
6000 p_dynamic_tab(35),
6001 p_dynamic_tab(36),
6002 p_dynamic_tab(37),
6003 p_dynamic_tab(38),
6004 p_dynamic_tab(39),
6005 p_dynamic_tab(40),
6006 p_dynamic_tab(41),
6007 p_dynamic_tab(42),
6008 p_dynamic_tab(43),
6009 p_dynamic_tab(44),
6010 p_dynamic_tab(45),
6011 p_dynamic_tab(46),
6012 p_dynamic_tab(47),
6013 p_dynamic_tab(48),
6014 p_dynamic_tab(49);
6015 END IF;
6016
6017 IF (p_dynamic_tab.COUNT = 50) THEN
6018 OPEN p_cursor FOR p_statement USING
6019 p_dynamic_tab(1),
6020 p_dynamic_tab(2),
6021 p_dynamic_tab(3),
6022 p_dynamic_tab(4),
6023 p_dynamic_tab(5),
6024 p_dynamic_tab(6),
6025 p_dynamic_tab(7),
6026 p_dynamic_tab(8),
6027 p_dynamic_tab(9),
6028 p_dynamic_tab(10),
6029 p_dynamic_tab(11),
6030 p_dynamic_tab(12),
6031 p_dynamic_tab(13),
6032 p_dynamic_tab(14),
6033 p_dynamic_tab(15),
6034 p_dynamic_tab(16),
6035 p_dynamic_tab(17),
6036 p_dynamic_tab(18),
6037 p_dynamic_tab(19),
6038 p_dynamic_tab(20),
6039 p_dynamic_tab(21),
6040 p_dynamic_tab(22),
6041 p_dynamic_tab(23),
6042 p_dynamic_tab(24),
6043 p_dynamic_tab(25),
6044 p_dynamic_tab(26),
6045 p_dynamic_tab(27),
6046 p_dynamic_tab(28),
6047 p_dynamic_tab(29),
6048 p_dynamic_tab(30),
6049 p_dynamic_tab(31),
6050 p_dynamic_tab(32),
6051 p_dynamic_tab(33),
6052 p_dynamic_tab(34),
6053 p_dynamic_tab(35),
6054 p_dynamic_tab(36),
6055 p_dynamic_tab(37),
6056 p_dynamic_tab(38),
6057 p_dynamic_tab(39),
6058 p_dynamic_tab(40),
6059 p_dynamic_tab(41),
6060 p_dynamic_tab(42),
6061 p_dynamic_tab(43),
6062 p_dynamic_tab(44),
6063 p_dynamic_tab(45),
6064 p_dynamic_tab(46),
6065 p_dynamic_tab(47),
6066 p_dynamic_tab(48),
6067 p_dynamic_tab(49),
6068 p_dynamic_tab(50);
6069 END IF;
6070 --
6071 IF l_debug_on THEN
6072 WSH_DEBUG_SV.pop(l_module_name);
6073 END IF;
6074 --
6075 EXCEPTION
6076 --
6077 WHEN OTHERS THEN
6078 --
6079 IF l_debug_on THEN
6080 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6081 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
6082 END IF;
6083 --
6084 END OpenDynamicCursor;
6085 --HVOP heali
6086
6087
6088 -- Start of comments
6089 -- API name : Get_Lookup_Meaning
6090 -- Type : Public
6091 -- Pre-reqs : None.
6092 -- Function : API to get meaning for lookup code and type.
6093 -- Parameters :
6094 -- IN:
6095 -- p_lookup_type IN Lookup Type.
6096 -- P_lookup_code IN Lookup Code.
6097 -- OUT:
6098 -- Api return meaning for lookup code and type.
6099 -- End of comments
6100 FUNCTION Get_Lookup_Meaning(p_lookup_type IN VARCHAR2,
6101 P_lookup_code IN VARCHAR2)
6102 return VARCHAR2 IS
6103
6104 CURSOR get_meaning IS
6105 SELECT meaning
6106 FROM WSH_LOOKUPS
6107 WHERE LOOKUP_TYPE = p_lookup_type
6108 AND LOOKUP_CODE = P_lookup_code;
6109
6110 l_meaning VARCHAR2(80);
6111
6112 l_debug_on BOOLEAN;
6113 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_LOOKUP_MEANING';
6114 --
6115 BEGIN
6116 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6117
6118 IF l_debug_on IS NULL THEN
6119 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6120 END IF;
6121
6122 IF l_debug_on THEN
6123 WSH_DEBUG_SV.push(l_module_name);
6124 WSH_DEBUG_SV.log(l_module_name,'p_lookup_type',p_lookup_type);
6125 WSH_DEBUG_SV.log(l_module_name,'P_lookup_code',P_lookup_code);
6126 END IF;
6127
6128 OPEN get_meaning;
6129 FETCH get_meaning INTO l_meaning;
6130 CLOSE get_meaning;
6131
6132
6133 IF l_debug_on THEN
6134 WSH_DEBUG_SV.log(l_module_name,'l_meaning',l_meaning);
6135 WSH_DEBUG_SV.pop(l_module_name);
6136 END IF;
6137
6138 IF (l_meaning IS NULL) THEN
6139 return P_lookup_code;
6140 ELSE
6141 return l_meaning;
6142 END IF;
6143
6144 EXCEPTION
6145 WHEN others THEN
6146 IF l_debug_on THEN
6147 WSH_DEBUG_SV.pop(l_module_name);
6148 END IF;
6149 return P_lookup_code;
6150 END Get_Lookup_Meaning;
6151
6152
6153 -- Start of comments
6154 -- API name : Get_Action_Meaning
6155 -- Type : Public
6156 -- Pre-reqs : None.
6157 -- Function : API to get meaning for Action code and type.
6158 -- Parameters :
6159 -- IN:
6160 -- p_entity IN Entity DLVB/DLVY/STOP/TRIP.
6161 -- P_action_code IN Action Code.
6162 -- OUT:
6163 -- Api return meaning for lookup code and type.
6164 -- End of comments
6165 FUNCTION Get_Action_Meaning(p_entity IN VARCHAR2,
6166 p_action_code IN VARCHAR2)
6167 return VARCHAR2 IS
6168
6169 l_meaning VARCHAR2(80);
6170 l_lookup_type VARCHAR2(30);
6171 l_lookup_code VARCHAR2(30);
6172
6173 l_debug_on BOOLEAN;
6174 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_ACTION_MEANING';
6175 --
6176 BEGIN
6177 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6178
6179 IF l_debug_on IS NULL THEN
6180 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6181 END IF;
6182
6183 IF l_debug_on THEN
6184 WSH_DEBUG_SV.push(l_module_name);
6185 WSH_DEBUG_SV.log(l_module_name,'p_entity',p_entity);
6186 WSH_DEBUG_SV.log(l_module_name,'p_action_code',p_action_code);
6187 END IF;
6188
6189 IF (p_entity ='DLVB') THEN
6190 l_lookup_type :='DLVB_PRIVILEGE';
6191
6192 IF l_debug_on THEN
6193 WSH_DEBUG_SV.log(l_module_name,'Inside DLVB l_lookup_type',l_lookup_type);
6194 END IF;
6195
6196 IF (p_action_code = 'PICK-RELEASE' ) THEN
6197 l_lookup_code:= 'DLVB_LAUNCH_PR';
6198
6199 ELSIF (p_action_code = 'SPLIT_DELIVERY') THEN
6200 l_lookup_code:= 'DLVB_SPLIT_DELIVERY'; --??
6201
6202 ELSIF (p_action_code = 'UNASSIGN') THEN
6203 l_lookup_code:= 'DLVB_UNASSIGN_DLVY';
6204
6205 ELSIF (p_action_code = 'ASSIGN') THEN
6206 l_lookup_code:= 'DLVB_ASSIGN_DLVY';
6207
6208 ELSIF (p_action_code = 'AUTOCREATE-DEL') THEN
6209 l_lookup_code:= 'DLVB_AUTOCREATE_DLVY';
6210
6211 ELSIF (p_action_code = 'PACK') THEN
6212 l_lookup_code:= 'DLVB_PACK';
6213
6214 ELSIF (p_action_code = 'SPLIT-LINE') THEN
6215 l_lookup_code:= 'DLVB_SPLIT_LINE';
6216
6217 ELSIF (p_action_code = 'CYCLE-COUNT') THEN
6218 l_lookup_code:= 'DLVB_CYCLE_COUNT';
6219
6220 ELSIF (p_action_code = 'PICK-RELEASE-UI') THEN
6221 l_lookup_code:= 'DLVB_PR_FORM';
6222
6223 ELSIF (p_action_code = 'RESOLVE-EXCEPTIONS-UI') THEN
6224 l_lookup_code:= 'DLVB_RESOLVE_EXC';
6225
6226 ELSIF (p_action_code = 'AUTOCREATE-TRIP') THEN
6227 l_lookup_code:= 'DLVB_AUTOCREATE_TRIP';
6228
6229 ELSIF (p_action_code = 'IGNORE_PLAN') THEN
6230 l_lookup_code:= 'DLVB_IGNORE_PLAN';
6231
6232 ELSIF (p_action_code = 'INCLUDE_PLAN') THEN
6233 l_lookup_code:= 'DLVB_INCLUDE_PLAN';
6234
6235 ELSIF (p_action_code = 'PICK-PACK-SHIP') THEN
6236 l_lookup_code:= 'DLVB_PICK_PACK_SHIP';
6237
6238 ELSIF (p_action_code = 'PICK-SHIP') THEN
6239 l_lookup_code:= 'DLVB_PICK_SHIP';
6240
6241 ELSIF (p_action_code = 'WT-VOL') THEN
6242 l_lookup_code:= 'DLVB_CALC_WV';
6243
6244 ELSIF (p_action_code = 'AUTO-PACK') THEN
6245 l_lookup_code:= 'DLVB_AUTOPACK';
6246
6247 ELSIF (p_action_code = 'AUTO-PACK-MASTER') THEN
6248 l_lookup_code:= 'DLVB_AUTOPACK_M';
6249
6250 ELSIF (p_action_code = 'PACKING-WORKBENCH') THEN
6251 l_lookup_code:= 'DLVB_PACKING_WB';
6252
6253 ELSIF (p_action_code = 'FREIGHT-COSTS-UI') THEN
6254 l_lookup_code:= 'DLVB_FREIGHT_COSTS';
6255
6256 ELSIF (p_action_code = 'RATE_WITH_UPS') THEN
6257 l_lookup_code:= 'DLVB_UPS_RS';
6258
6259 ELSIF (p_action_code = 'UPS_TRACKING') THEN
6260 l_lookup_code:= 'DLVB_UPS_TR';
6261
6262 ELSIF (p_action_code = 'UPS_TIME_IN_TRANSIT') THEN
6263 l_lookup_code:= 'DLVB_UPS_TT';
6264
6265 ELSIF (p_action_code = 'UPS_ADDRESS_VALIDATION') THEN
6266 l_lookup_code:= 'DLVB_UPS_AV';
6267
6268 ELSIF (p_action_code = 'CREATE') THEN
6269 l_lookup_code:= 'DLVB_CREATE';
6270
6271 ELSIF (p_action_code = 'DELETE') THEN
6272 l_lookup_code:= 'DLVB_DELETE';
6273
6274 ELSIF (p_action_code = 'UPDATE') THEN
6275 l_lookup_code:= 'DLVB_UPDATE';
6276
6277 ELSIF (p_action_code = 'CANCEL') THEN
6278 l_lookup_code:= 'DLVB_CANCEL';
6279 END IF;
6280
6281 ELSIF (p_entity ='DLVY') THEN
6282
6283 l_lookup_type :='DLVY_PRIVILEGE';
6284
6285 IF l_debug_on THEN
6286 WSH_DEBUG_SV.log(l_module_name,'Inside DLVY l_lookup_type',l_lookup_type);
6287 END IF;
6288
6289 IF (p_action_code = 'CONFIRM') THEN
6290 l_lookup_code:= 'DLVY_SHIP_CONFIRM';
6291
6292 ELSIF (p_action_code = 'PICK-SHIP') THEN
6293 l_lookup_code:= 'DLVY_PICK_SHIP';
6294
6295 ELSIF (p_action_code = 'PICK-RELEASE') THEN
6296 l_lookup_code:= 'DLVY_LAUNCH_PR';
6297
6298 ELSIF (p_action_code = 'PICK-PACK-SHIP') THEN
6299 l_lookup_code:= 'DLVY_PICK_PACK_SHIP';
6300
6301 ELSIF (p_action_code = 'UNASSIGN-TRIP') THEN
6302 l_lookup_code:= 'DLVY_UNASSIGN_TRIP';
6303
6304 ELSIF (p_action_code = 'ASSIGN-TRIP') THEN
6305 l_lookup_code:= 'DLVY_ASSIGN_TRIP';
6306
6307 ELSIF (p_action_code = 'AUTOCREATE-TRIP') THEN
6308 l_lookup_code:= 'DLVY_AUTOCREATE_TRIP';
6309
6310 ELSIF (p_action_code = 'OUTBOUND-DOCUMENT') THEN
6311 l_lookup_code:= 'DLVY_OUTBOUND_DOCUMENT';
6312
6313 ELSIF (p_action_code = 'PRINT-DOC-SETS') THEN
6314 l_lookup_code:= 'DLVY_PRINT_DS';
6315
6316 ELSIF (p_action_code = 'GENERATE-ROUTING-RESPONSE') THEN
6317 l_lookup_code:= 'DLVY_GENERATE_ROUTING_RESPONSE'; --??
6318
6319 ELSIF (p_action_code = 'PLAN') THEN
6320 l_lookup_code:= 'DLVY_PLAN';
6321
6322 ELSIF (p_action_code = 'UNPLAN') THEN
6323 l_lookup_code:= 'DLVY_UNPLAN';
6324
6325 ELSIF (p_action_code = 'FIRM') THEN
6326 l_lookup_code:= 'DLVY_FIRM';
6327
6328 ELSIF (p_action_code = 'IGNORE_PLAN') THEN
6329 l_lookup_code:= 'DLVY_IGNORE_PLAN';
6330
6331 ELSIF (p_action_code = 'INCLUDE_PLAN') THEN
6332 l_lookup_code:= 'DLVY_INCLUDE_PLAN';
6333
6334 ELSIF (p_action_code = 'WT-VOL') THEN
6335 l_lookup_code:= 'DLVY_CALC_WV';
6336
6337 ELSIF (p_action_code = 'AUTO-PACK') THEN
6338 l_lookup_code:= 'DLVY_AUTOPACK';
6339
6340 ELSIF (p_action_code = 'AUTO-PACK-MASTER') THEN
6341 l_lookup_code:= 'DLVY_AUTOPACK_M';
6342
6343 ELSIF (p_action_code = 'GEN-LOAD-SEQ') THEN
6344 l_lookup_code:= 'DLVY_GENERATE_LS';
6345
6346 ELSIF (p_action_code = 'RE-OPEN') THEN
6347 l_lookup_code:= 'DLVY_REOPEN';
6348
6349 ELSIF (p_action_code = 'CLOSE') THEN
6350 l_lookup_code:= 'DLVY_CLOSE';
6351
6352 ELSIF (p_action_code = 'TRIP-CONSOLIDATION') THEN
6353 l_lookup_code:= 'DLVY_TRIP_CONSOLIDATION'; --??
6354
6355 ELSIF (p_action_code = 'SELECT-CARRIER') THEN
6356 l_lookup_code:= 'DLVY_SELECT_CARRIER';
6357
6358 ELSIF (p_action_code = 'GENERATE-PACK-SLIP') THEN
6359 l_lookup_code:= 'DLVY_GENERATE_PS';
6360
6361 ELSIF (p_action_code = 'PICK-RELEASE-UI') THEN
6362 l_lookup_code:= 'DLVY_PR_FORM';
6363
6364 ELSIF (p_action_code = 'RESOLVE-EXCEPTIONS-UI') THEN
6365 l_lookup_code:= 'DLVY_RESOLVE_EXC';
6366
6367 ELSIF (p_action_code = 'TRANSACTION-HISTORY-UI') THEN
6368 l_lookup_code:= 'DLVY_VW_TRANS_HISTORY';
6369
6370 ELSIF (p_action_code = 'FREIGHT-COSTS-UI') THEN
6371 l_lookup_code:= 'DLVY_FREIGHT_COSTS';
6372
6373 ELSIF (p_action_code = 'CANCEL-SHIP-METHOD') THEN
6374 l_lookup_code:= 'DLVY_CANCEL_SHIP_METHOD';
6375
6376 ELSIF (p_action_code = 'ADJUST-PLANNED-FLAG') THEN
6377 l_lookup_code:= 'DLVY_ADJUST_PLANNED_FLAG'; --??
6378
6379 ELSIF (p_action_code = 'PRINT-PACK-SLIP') THEN
6380 l_lookup_code:= 'DLVY_GENERATE_PS';
6381
6382 ELSIF (p_action_code = 'PRINT-BOL') THEN
6383 l_lookup_code:= 'DLVY_GENERATE_BOL';
6384
6385 ELSIF (p_action_code = 'DLVY_LOG_EXCEP') THEN
6386 l_lookup_code:= 'DLVY-LOG-EXCEP';
6387
6388 ELSIF (p_action_code = 'RATE_WITH_UPS') THEN
6389 l_lookup_code:= 'DLVY_UPS_RS';
6390
6391 ELSIF (p_action_code = 'UPS_ADDRESS_VALIDATION') THEN
6392 l_lookup_code:= 'DLVY_UPS_AV';
6393
6394 ELSIF (p_action_code = 'UPS_TIME_IN_TRANSIT') THEN
6395 l_lookup_code:= 'DLVY_UPS_TT';
6396
6397 ELSIF (p_action_code = 'CREATE') THEN
6398 l_lookup_code:= 'DLVY_CREATE';
6399
6400 ELSIF (p_action_code = 'DELETE') THEN
6401 l_lookup_code:= 'DLVY_DELETE';
6402
6403 ELSIF (p_action_code = 'UPDATE') THEN
6404 l_lookup_code:= 'DLVY_UPDATE';
6405
6406 ELSIF (p_action_code = 'CANCEL') THEN
6407 l_lookup_code:= 'DLVY_CANCEL';
6408 END IF;
6409
6410 ELSIF (p_entity ='STOP') THEN
6411
6412 l_lookup_type :='STOP_PRIVILEGE';
6413
6414 IF l_debug_on THEN
6415 WSH_DEBUG_SV.log(l_module_name,'Inside STOP l_lookup_type',l_lookup_type);
6416 END IF;
6417
6418 IF (p_action_code = 'UPDATE-STATUS') THEN
6419 l_lookup_code:= 'STOP_UPDATE_STATUS';
6420
6421 ELSIF (p_action_code = 'PLAN') THEN
6422 l_lookup_code:= 'STOP_PLAN';
6423
6424 ELSIF (p_action_code = 'UNPLAN') THEN
6425 l_lookup_code:= 'STOP_UNPLAN';
6426
6427 ELSIF (p_action_code = 'PICK-RELEASE') THEN
6428 l_lookup_code:= 'STOP_LAUNCH_PR';
6429
6430 ELSIF (p_action_code = 'PRINT-DOC-SETS') THEN
6431 l_lookup_code:= 'STOP_PRINT_DS';
6432
6433 ELSIF (p_action_code = 'WT-VOL') THEN
6434 l_lookup_code:= 'STOP_CALC_WV';
6435
6436 ELSIF (p_action_code = 'PICK-RELEASE-UI') THEN
6437 l_lookup_code:= 'STOP_PR_FORM';
6438
6439 ELSIF (p_action_code = 'RESOLVE-EXCEPTIONS-UI') THEN
6440 l_lookup_code:= 'STOP_RESOLVE_EXC';
6441
6442 ELSIF (p_action_code = 'FREIGHT-COSTS-UI') THEN
6443 l_lookup_code:= 'STOP_FREIGHT_COSTS';
6444
6445 ELSIF (p_action_code = 'STOP_LOG_EXCEP') THEN
6446 l_lookup_code:= 'STOP-LOG-EXCEP';
6447
6448 ELSIF (p_action_code = 'CREATE') THEN
6449 l_lookup_code:= 'STOP_CREATE';
6450
6451 ELSIF (p_action_code = 'DELETE') THEN
6452 l_lookup_code:= 'STOP_DELETE';
6453
6454 ELSIF (p_action_code = 'UPDATE') THEN
6455 l_lookup_code:= 'STOP_UPDATE';
6456
6457 ELSIF (p_action_code = 'CANCEL') THEN
6458 l_lookup_code:= 'STOP_CANCEL';
6459 END IF;
6460
6461 ELSIF (p_entity ='TRIP') THEN
6462
6463 l_lookup_type :='TRIP_PRIVILEGE';
6464
6465 IF l_debug_on THEN
6466 WSH_DEBUG_SV.log(l_module_name,'Inside TRIP l_lookup_type',l_lookup_type);
6467 END IF;
6468
6469 IF (p_action_code = 'GENERATE-ROUTING-RESPONSE') THEN
6470 l_lookup_code:= 'TRIP_GENERATE_ROUTING_RESPONSE'; --??
6471
6472 ELSIF (p_action_code = 'PRINT-DOC-SETS') THEN
6473 l_lookup_code:= 'TRIP_PRINT_DS';
6474
6475 ELSIF (p_action_code = 'TRIP-CONFIRM') THEN
6476 l_lookup_code:= 'TRIP_SHIP_CONFIRM';
6477
6478 ELSIF (p_action_code = 'FIRM') THEN
6479 l_lookup_code:= 'TRIP_FIRM';
6480
6481 ELSIF (p_action_code = 'PLAN') THEN
6482 l_lookup_code:= 'TRIP_PLAN';
6483
6484 ELSIF (p_action_code = 'UNPLAN') THEN
6485 l_lookup_code:= 'UNPLAN';
6486
6487 ELSIF (p_action_code = 'PICK-RELEASE') THEN
6488 l_lookup_code:= 'TRIP_LAUNCH_PR';
6489
6490 ELSIF (p_action_code = 'WT-VOL') THEN
6491 l_lookup_code:= 'TRIP_CALC_WV';
6492
6493 ELSIF (p_action_code = 'PICK-RELEASE-UI') THEN
6494 l_lookup_code:= 'TRIP_PR_FORM';
6495
6496 ELSIF (p_action_code = 'RESOLVE-EXCEPTIONS-UI') THEN
6497 l_lookup_code:= 'TRIP_RESOLVE_EXC';
6498
6499 ELSIF (p_action_code = 'FREIGHT-COSTS-UI') THEN
6500 l_lookup_code:= 'TRIP_FREIGHT_COSTS';
6501
6502 ELSIF (p_action_code = 'PRINT-PACK-SLIP') THEN
6503 l_lookup_code:= 'DLVY_GENERATE_PS';
6504
6505 ELSIF (p_action_code = 'PRINT-BOL') THEN
6506 l_lookup_code:= 'DLVY_GENERATE_BOL';
6507
6508 ELSIF (p_action_code = 'PRINT-MBOL') THEN
6509 l_lookup_code:= 'TRIP_PRINT_MBOL';
6510
6511 ELSIF (p_action_code = 'TRIP_LOG_EXCEP') THEN
6512 l_lookup_code:= 'TRIP-LOG-EXCEP';
6513
6514 ELSIF (p_action_code = 'FTE_LOAD_TENDER') THEN
6515 l_lookup_code:= 'TRIP_LOAD_TENDER'; --??
6516
6517 ELSIF (p_action_code = 'CREATE') THEN
6518 l_lookup_code:= 'TRIP_CREATE';
6519
6520 ELSIF (p_action_code = 'DELETE') THEN
6521 l_lookup_code:= 'TRIP_DELETE';
6522
6523 ELSIF (p_action_code = 'UPDATE') THEN
6524 l_lookup_code:= 'TRIP_UPDATE';
6525
6526 ELSIF (p_action_code = 'CANCEL') THEN
6527 l_lookup_code:= 'TRIP_CANCEL';
6528 END IF;
6529
6530 END IF;
6531
6532
6533 l_meaning:= Get_Lookup_Meaning(l_lookup_type,l_lookup_code);
6534
6535 IF l_debug_on THEN
6536 WSH_DEBUG_SV.log(l_module_name,'l_meaning',l_meaning);
6537 WSH_DEBUG_SV.pop(l_module_name);
6538 END IF;
6539
6540 IF (l_meaning IS NULL) THEN
6541 return p_action_code;
6542 ELSE
6543 return l_meaning;
6544 END IF;
6545
6546 EXCEPTION
6547 WHEN others THEN
6548 IF l_debug_on THEN
6549 WSH_DEBUG_SV.pop(l_module_name);
6550 END IF;
6551 return p_action_code;
6552 END Get_action_Meaning;
6553
6554
6555 --
6556 --Procedure : Get_idtab_from_string
6557 --Purpose : Is used to Convert a comma-separated list of Ids of form '1,2,3,4'to
6558 -- a PL/SQL table numbers;
6559 --
6560 PROCEDURE get_idtab_from_string(
6561 p_string IN VARCHAR2,
6562 x_id_tab OUT NOCOPY WSH_UTIL_CORE.Id_Tab_Type,
6563 x_return_status OUT NOCOPY VARCHAR2) IS
6564
6565 l_new_pos NUMBER;
6566 l_old_pos NUMBER;
6567 l_id_len NUMBER;
6568 l_idx NUMBER:=0;
6569
6570 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
6571 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'get_idtab_from_string';
6572 BEGIN
6573 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6574 --
6575 IF l_debug_on THEN
6576 wsh_debug_sv.push (l_module_name);
6577 END IF;
6578 --
6579
6580 IF (p_string IS NOT NULL) THEN
6581 l_old_pos:= 1;
6582 LOOP
6583 l_idx := l_idx +1;
6584 l_new_pos :=INSTR(p_string,',',l_old_pos,1);
6585 EXIT WHEN (l_new_pos=0);
6586 l_id_len := l_new_pos-l_old_pos;
6587 x_id_tab(l_idx):=TO_NUMBER(SUBSTR(p_string,l_old_pos,l_id_len));
6588 l_old_pos := l_new_pos +1;
6589 END LOOP;
6590 x_id_tab(l_idx):= TO_NUMBER(SUBSTR(p_string,l_old_pos,(LENGTH(p_string)-l_old_pos+1)));
6591 END IF;
6592
6593 --
6594 IF l_debug_on THEN
6595 wsh_debug_sv.pop (l_module_name);
6596 END IF;
6597 --
6598
6599 EXCEPTION
6600 WHEN others THEN
6601 WSH_UTIL_CORE.default_handler('WSH_UTIL_CORE.GET_IDTAB_FROM_STRING');
6602 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6603 --
6604 IF l_debug_on THEN
6605 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6606 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
6607 END IF;
6608 --
6609 END get_idtab_from_string;
6610
6611
6612 --
6613 -- Procedure : Get_string_from_idtab
6614 -- Purpose : Used to convert a PL/SQL table of numbers to comma-separated list of form '1,2,3,4'
6615 --
6616
6617 PROCEDURE get_string_from_idtab(
6618 p_id_tab IN WSH_UTIL_CORE.Id_Tab_Type,
6619 x_string OUT NOCOPY VARCHAR2,
6620 x_return_status OUT NOCOPY VARCHAR2) IS
6621
6622 l_string VARCHAR2(32767);
6623 l_itr NUMBER;
6624 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
6625 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'get_string_from_idtab';
6626 BEGIN
6627 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6628 --
6629 IF l_debug_on THEN
6630 wsh_debug_sv.push (l_module_name);
6631 END IF;
6632 --
6633
6634 l_itr := p_id_tab.FIRST;
6635
6636 IF (l_itr IS NOT NULL) THEN
6637
6638 l_string := p_id_tab(l_itr);
6639
6640 LOOP
6641
6642 EXIT WHEN l_itr = p_id_tab.LAST;
6643 l_itr := p_id_tab.NEXT(l_itr);
6644 l_string := l_string||','||p_id_tab(l_itr);
6645
6646 END LOOP;
6647
6648 END IF;
6649 x_string := l_string;
6650
6651 --
6652 IF l_debug_on THEN
6653 wsh_debug_sv.pop (l_module_name);
6654 END IF;
6655 --
6656
6657 EXCEPTION
6658 WHEN others THEN
6659 WSH_UTIL_CORE.default_handler('WSH_UTIL_CORE.GET_STRING_FROM_IDTAB');
6660 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6661 --
6662 IF l_debug_on THEN
6663 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6664 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
6665 END IF;
6666 --
6667 END get_string_from_idtab;
6668
6669 -- Bug#3947506: Adding a new procedure Get_Entity_name
6670 --========================================================================
6671 -- PROCEDURE : Get_entity_name
6672 --
6673 -- COMMENT : This procedure will return the entity name for Trip, Stop,
6674 -- Delivery. For Line, Line_id will be returned.
6675 --========================================================================
6676
6677 PROCEDURE Get_Entity_Name
6678 (p_in_entity_id in NUMBER,
6679 p_in_entity_name in VARCHAR2,
6680 p_out_entity_id out NOCOPY VARCHAR2,
6681 p_out_entity_name out NOCOPY VARCHAR2,
6682 p_return_status out NOCOPY VARCHAR2
6683 ) IS
6684 l_debug_on BOOLEAN;
6685 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_ACTION_MEANING';
6686 --
6687 BEGIN
6688 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6689
6690 p_return_status := null;
6691
6692 IF l_debug_on IS NULL THEN
6693 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6694 END IF;
6695
6696 IF l_debug_on THEN
6697 WSH_DEBUG_SV.push(l_module_name);
6698 END IF;
6699
6700 IF p_in_entity_name = 'TRIP'
6701 THEN
6702 p_out_entity_name := 'Trip';
6703 p_out_entity_id := nvl(wsh_trips_pvt.get_name(p_in_entity_id), p_in_entity_id);
6704 ELSIF p_in_entity_name = 'STOP'
6705 THEN
6706 p_out_entity_name := 'Stop';
6707 p_out_entity_id := nvl(wsh_trip_stops_pvt.get_name(p_in_entity_id), p_in_entity_id);
6708 ELSIF p_in_entity_name = 'DELIVERY'
6709 THEN
6710 p_out_entity_name := 'Delivery';
6711 p_out_entity_id := nvl(wsh_new_deliveries_pvt.get_name(p_in_entity_id), p_in_entity_id);
6712 ELSIF p_in_entity_name = 'LINE'
6713 THEN
6714 p_out_entity_name := 'Line';
6715 p_out_entity_id := p_in_entity_id;
6716 END IF;
6717
6718 p_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6719
6720 IF l_debug_on THEN
6721 WSH_DEBUG_SV.push(l_module_name);
6722 END IF;
6723 EXCEPTION
6724 WHEN OTHERS
6725 THEN
6726 p_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6727 --
6728 IF l_debug_on THEN
6729 WSH_DEBUG_SV.logmsg(l_module_name,'Error has occured. Oracle error message is '|| SQLERRM);
6730 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
6731 END IF;
6732 --
6733 END Get_Entity_Name;
6734
6735
6736 --Bug 4070732 : The following two prcoedures added for this Bugfix
6737
6738 --========================================================================
6739 -- PROCEDURE : Process_stops_for_load_tender
6740 --
6741 -- COMMENT : This procedure will call the WSH_TRIPS_ACTIONS.Fte_Load_Tender
6742 -- for the Stop ID's present in the global cache table
6743 -- G_STOP_IDS_STOP_IDS_CACHE and G_STOP_IDS_STOP_IDS_EXT_CACHE.
6744 -- Once processed, this will call the API Reset_stops_for_load_tender
6745 -- to reset the global variables.
6746 --========================================================================
6747
6748 PROCEDURE Process_stops_for_load_tender (p_reset_flags IN BOOLEAN,x_return_status OUT NOCOPY VARCHAR2)
6749 IS
6750 -- added stop id for bug 5923014.
6751 cursor c_get_stop_info (c_stop_id NUMBER ) IS
6752 select stop_id,
6753 departure_gross_weight,
6754 departure_net_weight,
6755 departure_volume,
6756 departure_fill_percent
6757 from wsh_trip_stops
6758 where stop_id = c_stop_id;
6759
6760 l_debug_on BOOLEAN;
6761 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME ||'.' || 'PROCESS_STOPS_FOR_LOAD_TENDER';
6762
6763 l_stop_id NUMBER;
6764 l_gross_weight NUMBER;
6765 l_net_weight NUMBER;
6766 l_volume NUMBER;
6767 l_fill_percent NUMBER;
6768
6769 j NUMBER;
6770 l_ind NUMBER;
6771 l_return_status VARCHAR2(30);
6772 l_num_warnings NUMBER;
6773 l_num_errors NUMBER;
6774 l_db_stop_id NUMBER;
6775
6776
6777 BEGIN
6778 --
6779 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6780 IF l_debug_on IS NULL
6781 THEN
6782 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6783 END IF;
6784 --
6785 IF l_debug_on THEN
6786 wsh_debug_sv.push (l_module_name);
6787 wsh_debug_sv.log(l_module_name,'p_reset_flags',p_reset_flags);
6788 wsh_debug_sv.log(l_module_name,'count of stops : ',G_STOP_IDS_STOP_IDS_CACHE.count);
6789 wsh_debug_sv.log(l_module_name,'count of stops2 : ',G_STOP_IDS_STOP_IDS_EXT_CACHE.count);
6790 END IF;
6791 --
6792 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6793 l_num_warnings := 0;
6794 l_num_errors := 0;
6795 --l_stop_ids_tab.delete;
6796
6797 --unbundling into a contiguous table
6798 j := 1;
6799 l_ind := G_STOP_IDS_STOP_IDS_CACHE.FIRST;
6800 WHILE l_ind IS NOT NULL
6801 LOOP
6802 l_db_stop_id:= NULL; -- bug 5923014: reset stop id
6803 l_stop_id := G_STOP_IDS_STOP_IDS_CACHE(l_ind).value;
6804 --
6805 IF l_debug_on THEN
6806 WSH_DEBUG_SV.log(l_module_name,'Stop ID for FTE_LOAD_TENDER:',l_stop_id);
6807 END IF;
6808 --
6809 --
6810
6811 open c_get_stop_info(l_stop_id);
6812 fetch c_get_stop_info into l_db_stop_id,l_gross_weight,l_net_weight,l_volume,l_fill_percent;
6813 close c_get_stop_info;
6814
6815 /* bug 5923014: Do actions only when stop exists in the database so that stop id's maintained in cache are not
6816 validated in Fte_Load_Tender to prevent error message that 'stop has been deleted'. */
6817 IF (l_db_stop_id is not NULL) THEN
6818 --{
6819
6820 IF l_debug_on THEN
6821 WSH_DEBUG_SV.log(l_module_name,'Stop ID',l_stop_id);
6822 WSH_DEBUG_SV.log(l_module_name,'l_gross_weight',l_gross_weight);
6823 WSH_DEBUG_SV.log(l_module_name,'l_net_weight',l_net_weight);
6824 WSH_DEBUG_SV.log(l_module_name,'l_volume',l_volume);
6825 WSH_DEBUG_SV.log(l_module_name,'l_fill_percent',l_fill_percent);
6826 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIPS_ACTIONS.Fte_Load_Tender',WSH_DEBUG_SV.C_PROC_LEVEL);
6827 END IF;
6828
6829 WSH_TRIPS_ACTIONS.Fte_Load_Tender(
6830 p_stop_id => l_stop_id ,
6831 p_gross_weight => l_gross_weight ,
6832 p_net_weight => l_net_weight ,
6833 p_volume => l_volume ,
6834 p_fill_percent => l_fill_percent ,
6835 x_return_status => l_return_status);
6836
6837 IF l_debug_on THEN
6838 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
6839 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.API_POST_CALL',WSH_DEBUG_SV.C_PROC_LEVEL);
6840 END IF;
6841
6842 wsh_util_core.api_post_call
6843 (
6844 p_return_status => l_return_status,
6845 x_num_warnings => l_num_warnings,
6846 x_num_errors => l_num_errors
6847 );
6848 --}
6849 END IF; -- End of If for bug 5923014;
6850 --
6851 --
6852 l_ind := G_STOP_IDS_STOP_IDS_CACHE.NEXT(l_ind);
6853 END LOOP;
6854 --
6855 --
6856 l_ind := G_STOP_IDS_STOP_IDS_EXT_CACHE.FIRST;
6857 WHILE l_ind IS NOT NULL
6858 LOOP
6859 l_db_stop_id:= NULL; -- bug 5923014: reset stop id
6860 l_stop_id := G_STOP_IDS_STOP_IDS_EXT_CACHE(l_ind).value;
6861 --
6862 IF l_debug_on THEN
6863 WSH_DEBUG_SV.log(l_module_name,'Stop ID for FTE_LOAD_TENDER:',l_stop_id);
6864 END IF;
6865 --
6866 --
6867 open c_get_stop_info(l_stop_id);
6868 fetch c_get_stop_info into l_db_stop_id,l_gross_weight,l_net_weight,l_volume,l_fill_percent;
6869 close c_get_stop_info;
6870
6871 /* bug 5923014: Do actions only when stop exists in the database so that stop id's maintained in cache are not
6872 validated in Fte_Load_Tender to prevent error message that 'stop has been deleted'. */
6873 IF (l_db_stop_id is not NULL) THEN
6874 --{
6875
6876 IF l_debug_on THEN
6877 WSH_DEBUG_SV.log(l_module_name,'Stop ID',l_stop_id);
6878 WSH_DEBUG_SV.log(l_module_name,'l_gross_weight',l_gross_weight);
6879 WSH_DEBUG_SV.log(l_module_name,'l_net_weight',l_net_weight);
6880 WSH_DEBUG_SV.log(l_module_name,'l_volume',l_volume);
6881 WSH_DEBUG_SV.log(l_module_name,'l_fill_percent',l_fill_percent);
6882 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIPS_ACTIONS.Fte_Load_Tender',WSH_DEBUG_SV.C_PROC_LEVEL);
6883 END IF;
6884
6885 WSH_TRIPS_ACTIONS.Fte_Load_Tender(
6886 p_stop_id => l_stop_id ,
6887 p_gross_weight => l_gross_weight ,
6888 p_net_weight => l_net_weight ,
6889 p_volume => l_volume ,
6890 p_fill_percent => l_fill_percent ,
6891 x_return_status => l_return_status);
6892
6893 IF l_debug_on THEN
6894 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
6895 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.API_POST_CALL',WSH_DEBUG_SV.C_PROC_LEVEL);
6896 END IF;
6897
6898 wsh_util_core.api_post_call
6899 (
6900 p_return_status => l_return_status,
6901 x_num_warnings => l_num_warnings,
6902 x_num_errors => l_num_errors
6903 );
6904 --
6905 --
6906 --}
6907 END IF; -- End If for bug 5923014
6908 l_ind := G_STOP_IDS_STOP_IDS_EXT_CACHE.NEXT(l_ind);
6909 END LOOP;
6910
6911 IF l_debug_on THEN
6912 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
6913 END IF;
6914
6915
6916 --call to reset the global cache tables
6917 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags,x_return_status => l_return_status);
6918
6919 IF l_debug_on THEN
6920 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
6921 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.API_POST_CALL',WSH_DEBUG_SV.C_PROC_LEVEL);
6922 END IF;
6923
6924 wsh_util_core.api_post_call
6925 (
6926 p_return_status => l_return_status,
6927 x_num_warnings => l_num_warnings,
6928 x_num_errors => l_num_errors
6929 );
6930
6931
6932 IF l_num_warnings > 0
6933 THEN
6934 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
6935 ELSE
6936 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6937 END IF;
6938
6939 IF l_debug_on THEN
6940 WSH_DEBUG_SV.pop(l_module_name);
6941 END IF;
6942
6943
6944 EXCEPTION
6945 WHEN FND_API.G_EXC_ERROR THEN
6946 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6947 --
6948 -- Debug Statements
6949 --
6950 IF l_debug_on THEN
6951 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
6952 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
6953 END IF;
6954 --
6955 --call to reset the global cache tables
6956 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags,x_return_status => l_return_status);
6957
6958 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR
6959 THEN
6960 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6961 END IF;
6962 --
6963 IF l_debug_on THEN
6964 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
6965 END IF;
6966
6967
6968 WHEN others THEN
6969 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6970
6971 IF l_debug_on THEN
6972 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6973 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
6974 END IF;
6975 --
6976 --call to reset the global cache tables
6977 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags,x_return_status => l_return_status);
6978
6979 IF l_debug_on THEN
6980 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
6981 END IF;
6982 --
6983
6984 END Process_stops_for_load_tender;
6985
6986
6987 --========================================================================
6988 -- PROCEDURE : Reset_stops_for_load_tender
6989 --
6990 -- COMMENT : This procedure will delete the contents of the gloabal cache
6991 -- tables G_STOP_IDS_STOP_IDS_CACHE and G_STOP_IDS_STOP_IDS_EXT_CACHE
6992 -- and also set the Boolean Global Variable G_CALL_FTE_LOAD_TENDER_API
6993 -- to TRUE.
6994 --========================================================================
6995
6996 PROCEDURE Reset_stops_for_load_tender (p_reset_flags IN BOOLEAN,x_return_status OUT NOCOPY VARCHAR2)
6997 IS
6998
6999
7000 l_debug_on BOOLEAN;
7001 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME ||'.' || 'RESET_STOPS_FOR_LOAD_TENDER';
7002
7003
7004 BEGIN
7005 --
7006 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
7007 IF l_debug_on IS NULL
7008 THEN
7009 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
7010 END IF;
7011 --
7012 IF l_debug_on THEN
7013 wsh_debug_sv.push (l_module_name);
7014 wsh_debug_sv.log(l_module_name,'p_reset_flags',p_reset_flags);
7015 END IF;
7016 --
7017 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7018 --
7019 G_STOP_IDS_STOP_IDS_CACHE.delete;
7020 G_STOP_IDS_STOP_IDS_EXT_CACHE.delete;
7021 --
7022 IF p_reset_flags THEN
7023 G_CALL_FTE_LOAD_TENDER_API := TRUE;
7024 G_START_OF_SESSION_API := null;
7025 END IF;
7026
7027 IF l_debug_on THEN
7028 WSH_DEBUG_SV.pop(l_module_name);
7029 END IF;
7030
7031
7032 EXCEPTION
7033
7034
7035 WHEN others THEN
7036 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7037 --WSH_UTIL_CORE.Println('Unexpected Error in WSH_UTIL_CORE.Reset_stops_for_load_tender');
7038 --
7039 -- Debug Statements
7040 --
7041 IF l_debug_on THEN
7042 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
7043 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
7044 END IF;
7045 --
7046
7047 END Reset_stops_for_load_tender;
7048
7049
7050
7051 /*======================================================================
7052 FUNCTION : ValidateActualDepartureDate
7053
7054 COMMENT : This function is called from the following places
7055 - WSHASCSRS concurrent program
7056 - WSHPSRS concurrent program
7057 - WSHPRREL library
7058
7059 This function checks whether users can enter a future date for
7060 the Actual Departure Date parameter/field.
7061 This function returns
7062 - FALSE : if Global parameter Allow Future Ship Date = 'N'
7063 and Ship Confirm Rule indicates Set Delivery Intransit
7064 and Actual Departure Date is > SYSDATE
7065 - TRUE : under all other conditions
7066
7067 HISTORY : rlanka 03/01/2005 Created
7068 =======================================================================*/
7069 FUNCTION ValidateActualDepartureDate(p_ship_confirm_rule_id IN NUMBER,
7070 p_actual_departure_date IN DATE)
7071 RETURN BOOLEAN IS
7072 --
7073 l_global_params WSH_SHIPPING_PARAMS_GRP.Global_Params_Rec;
7074 l_return_status VARCHAR2(1);
7075 v_ACIntransitFlag VARCHAR2(1);
7076 --
7077 l_debug_on BOOLEAN;
7078 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'ValidateActualDepartureDate';
7079 --
7080 BEGIN
7081 --
7082 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
7083 --
7084 IF l_debug_on IS NULL THEN
7085 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
7086 END IF;
7087 --
7088 IF l_debug_on THEN
7089 WSH_DEBUG_SV.push(l_module_name);
7090 WSH_DEBUG_SV.log(l_module_name,'Ship Confirm Rule', p_ship_confirm_rule_id);
7091 WSH_DEBUG_SV.log(l_module_name,'Actual Departure Date', to_char(p_actual_departure_date,'DD/MM/YYYY HH24:MI:SS'));
7092 END IF;
7093 --
7094
7095 -- Bug 4712256
7096
7097 IF p_ship_confirm_rule_id IS NULL THEN
7098
7099 IF l_debug_on THEN
7100 WSH_DEBUG_SV.pop(l_module_name, 'Returning TRUE');
7101 END IF;
7102
7103 return TRUE;
7104
7105 END IF;
7106
7107 SELECT ac_intransit_flag
7108 INTO v_ACIntransitFlag
7109 FROM WSH_SHIP_CONFIRM_RULES
7110 WHERE ship_confirm_rule_id = p_ship_confirm_rule_id;
7111 --
7112 IF l_debug_on THEN
7113 WSH_DEBUG_SV.log(l_module_name, 'AC Intransit Flag', v_ACIntransitFlag);
7114 END IF;
7115 --
7116 IF v_ACIntransitFlag = 'Y' THEN
7117 --{
7118 WSH_SHIPPING_PARAMS_GRP.get_global_parameters(l_global_params,
7119 l_return_status);
7120 --
7121 IF l_global_params.allow_future_ship_date = 'N' AND p_actual_departure_date > SYSDATE
7122 THEN
7123 --
7124 IF l_debug_on THEN
7125 WSH_DEBUG_SV.pop(l_module_name, 'Returning FALSE');
7126 END IF;
7127 --
7128 RETURN FALSE;
7129 --
7130 ELSE
7131 --
7132 IF l_debug_on THEN
7133 WSH_DEBUG_SV.pop(l_module_name, 'Returning TRUE');
7134 END IF;
7135 --
7136 RETURN TRUE;
7137 --
7138 END IF;
7139 --}
7140 ELSE
7141 --
7142 IF l_debug_on THEN
7143 WSH_DEBUG_SV.pop(l_module_name, 'Returning TRUE');
7144 END IF;
7145 --
7146 RETURN TRUE;
7147 --
7148 END IF;
7149 --
7150 EXCEPTION
7151 --
7152 WHEN OTHERS THEN
7153 --
7154 WSH_UTIL_CORE.default_handler('ValidateActualDepartureDate');
7155 --
7156 IF l_debug_on THEN
7157 WSH_DEBUG_SV.pop(l_module_name, 'Exception: WHEN OTHERS');
7158 END IF;
7159 --
7160 RETURN FALSE;
7161 --
7162 END ValidateActualDepartureDate;
7163
7164
7165
7166
7167 /*=====================================================================
7168 FUNCTION : GetShipConfirmRule
7169
7170 COMMENT : This function is called from
7171 - WSHPSRS concurrent program
7172
7173 This function is used to obtain the Ship Confirm Rule tied
7174 to a particular picking rule. This function is used to
7175 populate a hidden parameter "Ship Confirm Rule ID" in WSHPSRS
7176 concurrent program.
7177
7178 HISTORY : rlanka 03/01/2005 Created
7179 =======================================================================*/
7180 FUNCTION GetShipConfirmRule(p_picking_rule_id IN NUMBER) RETURN NUMBER IS
7181 --
7182 v_SCRuleID wsh_picking_rules.ship_confirm_rule_id%TYPE;
7183 l_debug_on BOOLEAN;
7184 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GetShipConfirmRule';
7185 --
7186 BEGIN
7187 --
7188 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
7189 --
7190 IF l_debug_on IS NULL THEN
7191 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
7192 END IF;
7193 --
7194 IF l_debug_on THEN
7195 WSH_DEBUG_SV.push(l_module_name);
7196 WSH_DEBUG_SV.log(l_module_name,'p_picking_rule_id', p_picking_rule_id);
7197 END IF;
7198 --
7199 SELECT ship_confirm_rule_id
7200 INTO v_SCRuleID
7201 FROM wsh_picking_rules
7202 WHERE picking_rule_id = p_picking_rule_id;
7203 --
7204 IF l_debug_on THEN
7205 WSH_DEBUG_SV.log(l_module_name, 'Ship Confirm Rule', v_SCRuleID);
7206 END IF;
7207 --
7208 IF v_SCRuleID is NOT NULL THEN
7209 --
7210 IF l_debug_on THEN
7211 WSH_DEBUG_SV.pop(l_module_name);
7212 END IF;
7213 --
7214 RETURN v_SCRuleID;
7215 --
7216 ELSE
7217 --
7218 IF l_debug_on THEN
7219 WSH_DEBUG_SV.pop(l_module_name);
7220 END IF;
7221 --
7222 RETURN NULL;
7223 --
7224 END IF;
7225 --
7226 IF l_debug_on THEN
7227 WSH_DEBUG_SV.pop(l_module_name);
7228 END IF;
7229 --
7230 EXCEPTION
7231 --
7232 WHEN OTHERS THEN
7233 --
7234 WSH_UTIL_CORE.default_handler('GetShipConfirmRule');
7235 --
7236 IF l_debug_on THEN
7237 WSH_DEBUG_SV.pop(l_module_name, 'Exception: WHEN OTHERS');
7238 END IF;
7239 --
7240 RETURN NULL;
7241 --
7242 END GetShipConfirmRule;
7243
7244 FUNCTION WMS_Is_Installed
7245 RETURN VARCHAR2
7246 IS
7247 l_wms_application_id constant number := 385;
7248 l_wms_install_status VARCHAR2(30);
7249 l_industry VARCHAR2(30);
7250 --
7251 l_debug_on BOOLEAN;
7252 --
7253 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'WMS_IS_INSTALLED';
7254 --
7255 BEGIN
7256
7257 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
7258 --
7259 IF l_debug_on IS NULL
7260 THEN
7261 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
7262 END IF;
7263 --
7264 IF l_debug_on THEN
7265 WSH_DEBUG_SV.push(l_module_name);
7266 END IF;
7267 --
7268 IF G_WMS_IS_INSTALLED is NULL THEN
7269 IF (fnd_installation.get(l_wms_application_id, l_wms_application_id,l_wms_install_status,l_industry)) THEN
7270 IF (l_wms_install_status = 'I') THEN
7271 G_WMS_IS_INSTALLED := 'Y';
7272 ELSE
7273 G_WMS_IS_INSTALLED := 'N';
7274 END IF;
7275 ELSE
7276 /* this happens only when invalid application id is passed */
7277 G_WMS_IS_INSTALLED := 'N';
7278 END IF;
7279 END IF;
7280
7281 --
7282 -- Debug Statements
7283 --
7284 IF l_debug_on THEN
7285 WSH_DEBUG_SV.log(l_module_name,'G_WMS_IS_INSTALLED',G_WMS_IS_INSTALLED);
7286 WSH_DEBUG_SV.pop(l_module_name);
7287 END IF;
7288 --
7289 return G_WMS_IS_INSTALLED;
7290
7291 EXCEPTION
7292 WHEN OTHERS THEN
7293 IF l_debug_on THEN
7294 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
7295 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
7296 END IF;
7297 --
7298 RETURN 'N';
7299
7300 END WMS_Is_Installed;
7301
7302 --***************************************************************************--
7303 --========================================================================
7304 -- PROCEDURE : get_customer_from_loc PRIVATE
7305 --
7306 -- PARAMETERS: p_location_id Input Location id
7307 -- x_customer_id Carrier at the input location
7308 -- x_return_status Return status
7309 -- COMMENT :
7310 -- Returns the customer id of the customer
7311 -- having a location at input wsh location id
7312 --========================================================================
7313
7314 PROCEDURE get_customer_from_loc(
7315 p_location_id IN NUMBER,
7316 --x_customer_id OUT NOCOPY NUMBER,
7317 x_customer_id_tab OUT NOCOPY WSH_UTIL_CORE.id_tab_type,
7318 x_return_status OUT NOCOPY VARCHAR2)
7319 IS
7320
7321 CURSOR c_get_customer(c_location_id IN NUMBER) IS
7322 SELECT hcas.cust_account_id
7323 FROM wsh_locations wl,
7324 hz_party_sites hps,
7325 hz_cust_acct_sites_all hcas
7326 WHERE wl.wsh_location_id = c_location_id
7327 AND wl.location_source_code = 'HZ'
7328 AND wl.source_location_id = hps.location_id
7329 AND hps.party_site_id = hcas.party_site_id;
7330
7331 l_customer_id_tab WSH_UTIL_CORE.id_tab_type;
7332 itr NUMBER := 0;
7333 i NUMBER := 0;
7334 l_return_status VARCHAR2(1);
7335 l_cust_string VARCHAR2(2000);
7336
7337 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
7338 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'get_customer_from_loc';
7339
7340 BEGIN
7341
7342 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7343
7344 IF l_debug_on THEN
7345 wsh_debug_sv.push(l_module_name);
7346 END IF;
7347
7348 IF ( p_location_id < g_cache_max_size and g_customer_from_location.EXISTS(p_location_id)) THEN
7349
7350 wsh_util_core.get_idtab_from_string(
7351 p_string => g_customer_from_location(p_location_id),
7352 x_id_tab => l_customer_id_tab,
7353 x_return_status => l_return_status);
7354
7355 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
7356 raise FND_API.G_EXC_UNEXPECTED_ERROR;
7357 END IF;
7358
7359 itr := l_customer_id_tab.FIRST;
7360
7361 IF (l_customer_id_tab(itr) <> -1) THEN
7362
7363 x_customer_id_tab:=l_customer_id_tab;
7364
7365 END IF;
7366
7367 /*IF l_debug_on THEN
7368 wsh_debug_sv.push(l_module_name);
7369 END IF;*/
7370
7371 /*
7372 x_customer_id := g_customer_from_location(p_location_id);
7373
7374 IF (x_customer_id = -1) THEN
7375 x_customer_id := NULL;
7376 END IF;
7377 */
7378 ELSE
7379
7380 --Does not exist in the cache.
7381 OPEN c_get_customer(p_location_id);
7382 FETCH c_get_customer BULK COLLECT INTO l_customer_id_tab;
7383 /*
7384 IF c_get_customer%NOTFOUND THEN
7385 x_customer_id := NULL;
7386 END IF;
7387 */
7388 CLOSE c_get_customer;
7389
7390 x_customer_id_tab := l_customer_id_tab;
7391
7392 IF (p_location_id < g_cache_max_size ) THEN
7393
7394 itr:=l_customer_id_tab.FIRST;
7395
7396 IF (itr) IS NULL THEN
7397 l_cust_string := '-1';
7398 ELSE
7399
7400 wsh_util_core.get_string_from_idtab(
7401 p_id_tab => l_customer_id_tab,
7402 x_string => l_cust_string,
7403 x_return_status => l_return_status);
7404
7405 IF l_debug_on THEN
7406 WSH_DEBUG_SV.logmsg(l_module_name,'Org String '||l_cust_string);
7407 END IF;
7408
7409 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
7410 raise FND_API.G_EXC_UNEXPECTED_ERROR;
7411 END IF;
7412
7413 END IF;
7414
7415 g_customer_from_location(p_location_id) := l_cust_string;
7416
7417 END IF;
7418
7419 /*
7420 IF (p_location_id < g_cache_max_size ) THEN
7421 g_customer_from_location(p_location_id) := nvl(x_customer_id,-1);
7422 END IF;
7423 */
7424
7425 END IF;
7426
7427 --
7428 IF l_debug_on THEN
7429 i := x_customer_id_tab.FIRST;
7430 IF (i IS NOT NULL) THEN
7431
7432 WSH_DEBUG_SV.logmsg(l_module_name,'Number of Customers for the location '||p_location_id||'is :'|| x_customer_id_tab.COUNT);
7433 LOOP
7434 WSH_DEBUG_SV.logmsg(l_module_name,'Customer_id :'||x_customer_id_tab(i));
7435 EXIT WHEN i = x_customer_id_tab.LAST;
7436 i := x_customer_id_tab.NEXT(i);
7437 END LOOP;
7438
7439 ELSE
7440 WSH_DEBUG_SV.logmsg(l_module_name,'No Organization assocaited with location '||p_location_id);
7441
7442 END IF;
7443
7444 WSH_DEBUG_SV.pop(l_module_name);
7445 END IF;
7446 --
7447
7448 EXCEPTION
7449 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7450 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7451 --
7452 IF l_debug_on THEN
7453 WSH_DEBUG_SV.pop(l_module_name,'FND_API.EXCEPTION:G_EXC_UNEXPECTED_ERROR');
7454 END IF;
7455 WHEN others THEN
7456 IF c_get_customer%ISOPEN THEN
7457 CLOSE c_get_customer;
7458 END IF;
7459 WSH_UTIL_CORE.default_handler('WSH_UTIL_CORE.get_customer_from_loc');
7460 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7461 --
7462 IF l_debug_on THEN
7463 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
7464 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
7465 END IF;
7466 --
7467 END get_customer_from_loc;
7468
7469 --***************************************************************************--
7470 --========================================================================
7471 -- PROCEDURE : get_org_from_location PRIVATE
7472 --
7473 -- PARAMETERS: p_location_id Input Location id
7474 -- x_organization_tab Organizations for the input location
7475 -- x_return_status Return status
7476 -- COMMENT :
7477 -- Returns table of organizations for location.
7478 --========================================================================
7479 PROCEDURE get_org_from_location(
7480 p_location_id IN NUMBER,
7481 x_organization_tab OUT NOCOPY WSH_UTIL_CORE.id_tab_type,
7482 x_return_status OUT NOCOPY VARCHAR2)
7483 IS
7484 /*
7485 CURSOR c_get_org_from_loc(c_location_id IN NUMBER) IS
7486 SELECT owner_party_id
7487 FROM wsh_location_owners
7488 WHERE owner_type = 1
7489 AND wsh_location_id = c_location_id
7490 AND owner_party_id <> -1 ;
7491 */
7492 CURSOR c_get_org_from_loc(c_location_id IN NUMBER) IS
7493 SELECT organization_id
7494 FROM wsh_ship_from_orgs_v
7495 WHERE location_id = c_location_id;
7496
7497 l_organization_tab WSH_UTIL_CORE.id_tab_type;
7498
7499 itr NUMBER;
7500 i NUMBER;
7501 l_return_status VARCHAR2(1);
7502 l_org_string VARCHAR2(32767);
7503
7504 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
7505 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'get_org_from_location';
7506
7507 BEGIN
7508 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7509
7510 IF l_debug_on THEN
7511 wsh_debug_sv.push(l_module_name);
7512 END IF;
7513
7514 IF (p_location_id < g_cache_max_size and g_organization_from_location.EXISTS(p_location_id)) THEN
7515
7516 wsh_util_core.get_idtab_from_string(
7517 p_string => g_organization_from_location(p_location_id),
7518 x_id_tab => l_organization_tab,
7519 x_return_status => l_return_status);
7520
7521 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
7522 raise FND_API.G_EXC_UNEXPECTED_ERROR;
7523 END IF;
7524
7525 itr := l_organization_tab.FIRST;
7526
7527 IF (l_organization_tab(itr) <> -1) THEN
7528
7529 x_organization_tab:=l_organization_tab;
7530
7531 END IF;
7532
7533 /*IF l_debug_on THEN
7534 wsh_debug_sv.push(l_module_name);
7535 END IF;*/
7536
7537 ELSE
7538
7539 --Does not exist in the cache.
7540 OPEN c_get_org_from_loc(p_location_id);
7541 FETCH c_get_org_from_loc BULK COLLECT INTO l_organization_tab;
7542 CLOSE c_get_org_from_loc;
7543
7544 x_organization_tab := l_organization_tab;
7545
7546 IF (p_location_id < g_cache_max_size ) THEN
7547
7548 itr:=l_organization_tab.FIRST;
7549
7550 IF (itr) IS NULL THEN
7551 l_org_string := '-1';
7552 ELSE
7553
7554 wsh_util_core.get_string_from_idtab(
7555 p_id_tab => l_organization_tab,
7556 x_string => l_org_string,
7557 x_return_status => l_return_status);
7558
7559 IF l_debug_on THEN
7560 WSH_DEBUG_SV.logmsg(l_module_name,'Org String '||l_org_string);
7561 END IF;
7562
7563 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
7564 raise FND_API.G_EXC_UNEXPECTED_ERROR;
7565 END IF;
7566
7567 END IF;
7568
7569 g_organization_from_location(p_location_id) := l_org_string;
7570
7571 END IF;
7572
7573 END IF;
7574
7575 -- BUG 4120043 : Replaced FOR loop by iteration using NEXT.
7576 IF l_debug_on THEN
7577
7578 i := x_organization_tab.FIRST;
7579 IF (i IS NOT NULL) THEN
7580
7581 WSH_DEBUG_SV.logmsg(l_module_name,'Number of Organizations for the location '||p_location_id||'is :'|| x_organization_tab.COUNT);
7582 LOOP
7583 WSH_DEBUG_SV.logmsg(l_module_name,'Organization_id :'||x_organization_tab(i));
7584 EXIT WHEN i = x_organization_tab.LAST;
7585 i := x_organization_tab.NEXT(i);
7586 END LOOP;
7587
7588 ELSE
7589 WSH_DEBUG_SV.logmsg(l_module_name,'No Organization assocaited with location '||p_location_id);
7590
7591 END IF;
7592
7593 WSH_DEBUG_SV.pop(l_module_name);
7594
7595 END IF;
7596 --
7597
7598 EXCEPTION
7599 WHEN others THEN
7600 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7601
7602 IF c_get_org_from_loc%ISOPEN THEN
7603 CLOSE c_get_org_from_loc;
7604 END IF;
7605
7606 WSH_UTIL_CORE.default_handler('WSH_UTIL_CORE.get_org_from_loc');
7607
7608 --
7609 IF l_debug_on THEN
7610 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
7611 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
7612 END IF;
7613 --
7614 END get_org_from_location;
7615
7616 --========================================================================
7617 -- PROCEDURE : Get_Delivery_Status PRIVATE
7618 --
7619 -- PARAMETERS:
7620 -- p_entity_type either DELIVERY/DELIVERY DETAIL/LPN
7621 -- p_entity_id either delivery_id/delivery_detail_id/lpn_id
7622 -- x_status_code Status of delivery for the entity_type and
7623 -- entity id passed
7624 -- x_return_status return status
7625 --========================================================================
7626 PROCEDURE Get_Delivery_Status (
7627 p_entity_type IN VARCHAR2,
7628 p_entity_id IN NUMBER,
7629 x_status_code OUT NOCOPY VARCHAR2,
7630 x_return_status OUT NOCOPY VARCHAR2 )
7631 IS
7632 --
7633 -- Entity Type => Delivery
7634 cursor c_get_delivery_status( c_delivery_id NUMBER) is
7635 select status_code
7636 from wsh_new_deliveries
7637 where delivery_id = c_delivery_id;
7638
7639 -- Entity Type => Delivery Detail
7640 cursor c_get_detail_status( c_delivery_detail_id NUMBER) is
7641 select status_code
7642 from wsh_new_deliveries wnd,
7643 wsh_delivery_assignments_v wda
7644 where wnd.delivery_id (+) = wda.delivery_id
7645 and wda.delivery_detail_id = c_delivery_detail_id;
7646
7647 -- Entity Type => LPN
7648 -- Modified query for bug 4990527 as per WMS requirement
7649 cursor c_get_lpn_delivery_status( c_lpn_id NUMBER) is
7650 select distinct wnd.delivery_id, wnd.status_code
7651 from wsh_new_deliveries wnd,
7652 wsh_delivery_assignments_v wda,
7653 wsh_delivery_details wdd
7654 where wnd.delivery_id (+) = wda.delivery_id
7655 and wda.delivery_detail_id = wdd.delivery_detail_id
7656 --LPN Reuse project
7657 and wdd.released_status = 'X'
7658 and wdd.lpn_id in
7659 ( select wlpn.lpn_id
7660 from wms_license_plate_numbers wlpn
7661 where wlpn.outermost_lpn_id = c_lpn_id );
7662 --
7663
7664 l_delivery_id WSH_NEW_DELIVERIES.Delivery_Id%TYPE;
7665 l_status_code WSH_NEW_DELIVERIES.Status_Code%TYPE;
7666 l_error_flag BOOLEAN := FALSE;
7667
7668 --
7669 l_debug_on BOOLEAN;
7670 --
7671 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_DELIVERY_STATUS';
7672 --
7673 BEGIN
7674 --
7675 --
7676 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
7677 --
7678 IF l_debug_on IS NULL
7679 THEN
7680 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
7681 END IF;
7682 --
7683 IF l_debug_on THEN
7684 --
7685 WSH_DEBUG_SV.push(l_module_name);
7686 WSH_DEBUG_SV.log(l_module_name, 'p_entity_type', p_entity_type);
7687 WSH_DEBUG_SV.log(l_module_name, 'p_entity_id', p_entity_id);
7688 --
7689 END IF;
7690 --
7691 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7692 --
7693
7694 IF ( p_entity_type = 'DELIVERY' ) THEN
7695 --
7696 open c_get_delivery_status(p_entity_id);
7697 fetch c_get_delivery_status into l_status_code;
7698
7699 IF ( c_get_delivery_status%NOTFOUND ) THEN
7700 --
7701 l_error_flag := TRUE;
7702 --
7703 END IF;
7704
7705 close c_get_delivery_status;
7706 --
7707 ELSIF ( p_entity_type = 'DELIVERY DETAIL' ) then
7708 --
7709 open c_get_detail_status(p_entity_id);
7710 fetch c_get_detail_status into l_status_code;
7711
7712 IF ( c_get_detail_status%NOTFOUND ) then
7713 --
7714 l_error_flag := TRUE;
7715 --
7716 END IF;
7717 close c_get_detail_status;
7718 --
7719 ELSIF ( p_entity_type = 'LPN' ) then
7720 --
7721 open c_get_lpn_delivery_status(p_entity_id);
7722 fetch c_get_lpn_delivery_status into l_delivery_id, l_status_code;
7723
7724 IF ( c_get_lpn_delivery_status%NOTFOUND ) then
7725 --
7726 l_error_flag := TRUE;
7727 --
7728 IF l_debug_on THEN
7729 WSH_DEBUG_SV.log(l_module_name, 'Error: Delivery line not found for LPN_ID', p_entity_id);
7730 END IF;
7731 --
7732 END IF;
7733
7734 IF ( NOT l_error_flag ) THEN
7735 fetch c_get_lpn_delivery_status into l_delivery_id, l_status_code;
7736 IF ( c_get_lpn_delivery_status%FOUND ) THEN
7737 --
7738 l_error_flag := TRUE;
7739 --
7740 IF l_debug_on THEN
7741 WSH_DEBUG_SV.log(l_module_name, 'Error: There exists more than one delivery for LPN_ID', p_entity_id);
7742 END IF;
7743 --
7744 END IF;
7745 END IF;
7746
7747 close c_get_lpn_delivery_status;
7748 --
7749 ELSE
7750 --
7751 -- Debug Statements
7752 --
7753 IF l_debug_on THEN
7754 WSH_DEBUG_SV.logmsg(l_module_name,'Invalid Entity Type Passed');
7755 END IF;
7756 --
7757 FND_MESSAGE.SET_NAME ( 'WSH', 'WSH_INVALID_ENTITY_TYPE' );
7758 FND_MESSAGE.SET_TOKEN ('ENT_TYPE', p_entity_type );
7759 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7760 WSH_UTIL_CORE.add_message(x_return_status);
7761 --
7762 END IF;
7763
7764 --
7765 x_status_code := l_status_code;
7766 --
7767
7768 IF ( l_error_flag ) THEN
7769 --
7770 FND_MESSAGE.SET_NAME ( 'WSH', 'WSH_DET_INVALID_DEL' );
7771 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7772 WSH_UTIL_CORE.add_message(x_return_status);
7773 --
7774 END IF;
7775
7776 --
7777 IF l_debug_on THEN
7778 --
7779 WSH_DEBUG_SV.pop(l_module_name);
7780 --
7781 END IF;
7782 --
7783
7784 EXCEPTION
7785 WHEN OTHERS THEN
7786 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
7787 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.Get_Delivery_Status');
7788 --
7789 IF l_debug_on THEN
7790 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM, WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
7791 WSH_DEBUG_SV.pop(l_module_name, 'EXCEPTION:OTHERS');
7792 END IF;
7793 --
7794 IF ( c_get_delivery_status%ISOPEN ) THEN
7795 close c_get_delivery_status;
7796 END IF;
7797 --
7798 IF ( c_get_detail_status%ISOPEN ) THEN
7799 close c_get_detail_status;
7800 END IF;
7801 --
7802 IF ( c_get_lpn_delivery_status%ISOPEN ) THEN
7803 close c_get_lpn_delivery_status;
7804 END IF;
7805 --
7806 END Get_Delivery_Status;
7807
7808 -- OTM R12
7809
7810 --***************************************************************************--
7811 --
7812 -- Name Get_Otm_Install_Profile_Value
7813 -- Purpose This function returns the value of
7814 -- profile WSH_OTM_INSTALLED
7815 -- It returns 'P' if OTM is integrated for Inbound Purchasing
7816 -- 'O' if OTM is integrated for Outbound Sales Order
7817 -- 'Y' if OTM is integrated for both of the above
7818 -- 'N' if OTM is integrated for non of the above
7819 -- or if the profile value is NULL
7820 --
7821 -- Input Arguments
7822 -- No input argument
7823 --
7824 --***************************************************************************--
7825
7826 FUNCTION Get_Otm_Install_Profile_Value RETURN VARCHAR2 IS
7827
7828 l_debug_on BOOLEAN;
7829 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'Get_Otm_Install_Profile_Value';
7830 --
7831 BEGIN
7832 --
7833 -- Debug Statements
7834 --
7835 --
7836 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
7837 --
7838 IF l_debug_on IS NULL
7839 THEN
7840 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
7841 END IF;
7842 --
7843 IF l_debug_on THEN
7844 WSH_DEBUG_SV.push(l_module_name);
7845 END IF;
7846 --
7847
7848 IF G_OTM_PROFILE_VALUE IS NULL THEN
7849 -- profile value can be 'Y','N','O','P' or NULL
7850 G_OTM_PROFILE_VALUE := NVL(fnd_profile.value('WSH_OTM_INSTALLED'), 'N');
7851 END IF;
7852
7853 IF l_debug_on THEN
7854 WSH_DEBUG_SV.log(l_module_name,'G_OTM_PROFILE_VALUE',G_OTM_PROFILE_VALUE);
7855 WSH_DEBUG_SV.pop(l_module_name);
7856 END IF;
7857
7858 return G_OTM_PROFILE_VALUE;
7859 END Get_Otm_Install_Profile_Value;
7860
7861 --***************************************************************************--
7862 --
7863 -- Name GC3_Is_Installed
7864 -- Purpose This function returns whether OTM is integrated for
7865 -- Outbound Sales Order flow by looking at the
7866 -- value of profile WSH_OTM_INSTALLED
7867 -- It returns 'Y' if OTM is integrated for Outbound Sales Order
7868 -- 'N' otherwise
7869 --
7870 -- Input Arguments
7871 -- No input argument
7872 --
7873 --***************************************************************************--
7874
7875 FUNCTION GC3_Is_Installed RETURN VARCHAR2 IS
7876
7877 l_debug_on BOOLEAN;
7878 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GC3_IS_INSTALLED';
7879 --
7880 BEGIN
7881 --
7882 -- Debug Statements
7883 --
7884 --
7885 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
7886 --
7887 IF l_debug_on IS NULL THEN
7888 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
7889 END IF;
7890 --
7891 IF l_debug_on THEN
7892 WSH_DEBUG_SV.push(l_module_name);
7893 END IF;
7894 --
7895
7896 IF G_GC3_IS_INSTALLED IS NULL THEN
7897 -- G_OTM_PROFILE_VALUE might be set in Get_Otm_Install_Profile_Value
7898 IF G_OTM_PROFILE_VALUE IS NULL THEN
7899 G_OTM_PROFILE_VALUE := NVL(fnd_profile.value('WSH_OTM_INSTALLED'), 'N');
7900 END IF;
7901
7902 IF G_OTM_PROFILE_VALUE in ('Y','O') THEN
7903 G_GC3_IS_INSTALLED := 'Y';
7904 ELSE -- G_OTM_PROFILE_VALUE can be 'P' or 'N'
7905 G_GC3_IS_INSTALLED := 'N';
7906 END IF;
7907 END IF;
7908 --
7909 -- Debug Statements
7910 --
7911 IF l_debug_on THEN
7912 WSH_DEBUG_SV.log(l_module_name,'G_GC3_IS_INSTALLED',G_GC3_IS_INSTALLED);
7913 WSH_DEBUG_SV.pop(l_module_name);
7914 END IF;
7915 --
7916 return G_GC3_IS_INSTALLED;
7917 END GC3_Is_Installed;
7918
7919 --=======================================================================
7920
7921 --***************************************************************************--
7922 --
7923 --========================================================================
7924 -- PROCEDURE : GET_CURRENCY_CONVERSION_TYPE
7925 --
7926 -- API added for R12 Glog Integration Currency Conversion ECO
7927 --
7928 -- PURPOSE : To get the value for profile option WSH_OTM_CURR_CONV_TYPE
7929 -- (WSH: Currency Conversion Type for OTM)
7930 -- It returns the cached value if it is avaiable, otherwise
7931 -- fnd_profile.value api is called to get the profile value
7932 -- PARAMETERS:
7933 -- x_curr_conv_type currency conversion type
7934 -- x_return_status return status
7935 --========================================================================
7936
7937 PROCEDURE Get_Currency_Conversion_Type (
7938 x_curr_conv_type OUT NOCOPY VARCHAR2,
7939 x_return_status OUT NOCOPY VARCHAR2 ) IS
7940
7941 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'Get_Currency_Conversion_Type';
7942 l_debug_on BOOLEAN;
7943
7944 CURR_CONV_TYPE_UNDEFINED_EXP EXCEPTION;
7945
7946 BEGIN
7947
7948 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
7949
7950 IF l_debug_on IS NULL THEN
7951 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
7952 END IF;
7953
7954 IF l_debug_on THEN
7955 WSH_DEBUG_SV.push(l_module_name);
7956 END IF;
7957
7958 x_curr_conv_type := NULL;
7959 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7960
7961 -- no cached value, call fnd_profile.value
7962 IF G_CURRENCY_CONVERSION_TYPE IS NULL then
7963 IF l_debug_on THEN
7964 WSH_DEBUG_SV.logmsg(l_module_name, 'calling fnd_profile.value');
7965 END IF;
7966 G_CURRENCY_CONVERSION_TYPE := fnd_profile.value
7967 (name => 'WSH_OTM_CURR_CONV_TYPE');
7968 -- no value is defined for the profile option
7969 IF G_CURRENCY_CONVERSION_TYPE IS NULL then
7970 Raise CURR_CONV_TYPE_UNDEFINED_EXP;
7971 END IF;
7972 END IF;
7973 x_curr_conv_type := G_CURRENCY_CONVERSION_TYPE;
7974
7975 IF l_debug_on THEN
7976 WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
7977 WSH_DEBUG_SV.log(l_module_name, 'currency_conversion_type', x_curr_conv_type);
7978 WSH_DEBUG_SV.pop(l_module_name);
7979 END IF;
7980
7981 EXCEPTION
7982 when CURR_CONV_TYPE_UNDEFINED_EXP then
7983 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7984 fnd_message.set_name('WSH', 'WSH_CURR_CONV_TYPE_UNDEFINED');
7985 wsh_util_core.add_message(x_return_status);
7986 IF l_debug_on THEN
7987 WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
7988 WSH_DEBUG_SV.logmsg(l_module_name, 'WSH: Currency Conversion Type for OTM profile value is not defined.');
7989 WSH_DEBUG_SV.pop(l_module_name, 'EXCEPTION');
7990 END IF;
7991
7992 when OTHERS then
7993 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7994 WSH_UTIL_CORE.DEFAULT_HANDLER('WSH_UTIL_CORE.get_currency_conversion_type', l_module_name);
7995
7996 IF l_debug_on THEN
7997 WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
7998 WSH_DEBUG_SV.logmsg(l_module_name, 'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
7999 WSH_DEBUG_SV.pop(l_module_name, 'EXCEPTION:OTHERS');
8000 END IF;
8001 END Get_Currency_Conversion_Type;
8002
8003 /* OTM - R12 - o/b BPEL */
8004
8005 --========================================================================
8006 -- PROCEDURE : GET_TRIP_ORGANIZATION_ID
8007 --
8008 -- COMMENT : Return back organization id that is associated with the trip..
8009 -- MODIFIED :
8010 -- DESC: This procedure returns back organiation id that is associated with the trip.
8011 -- Steps
8012 -- For Outbound and Mixed trip's see if there is a organization at the location of first stop
8013 -- For inbound see if there is a organization at the location of the last stop.
8014 -- If there are no organizations associated then get the organization id of the delivery with
8015 -- least delivery id
8016 --========================================================================
8017
8018 FUNCTION GET_TRIP_ORGANIZATION_ID (p_trip_id NUMBER)
8019 RETURN NUMBER
8020 IS
8021
8022 --{
8023
8024 l_api_name CONSTANT VARCHAR2(30) := 'GET_TRIP_ORGANIZATION_ID';
8025 l_api_version CONSTANT NUMBER := 1.0;
8026 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
8027 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || l_api_name;
8028
8029
8030 l_first_stop_loc_id NUMBER;
8031 l_last_stop_loc_id NUMBER;
8032 l_first_stop_id NUMBER;
8033 l_last_stop_id NUMBER;
8034 l_arrival_date DATE;
8035 l_dept_date DATE;
8036
8037 l_typeflag VARCHAR2(1);
8038 l_organization_id NUMBER;
8039
8040 l_return_status VARCHAR2(1);
8041
8042 l_msg_count NUMBER;
8043 l_msg_data VARCHAR2(30000);
8044 l_number_of_warnings NUMBER;
8045 l_number_of_errors NUMBER;
8046
8047 BEGIN
8048
8049
8050 IF l_debug_on THEN
8051 WSH_DEBUG_SV.push(l_module_name);
8052 END IF;
8053
8054 l_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
8055 l_number_of_warnings := 0;
8056 l_number_of_errors := 0;
8057
8058
8059 l_organization_id := null;
8060
8061
8062 -- First get the type of trip. Depending on this we can get the
8063 -- location, Org Id and the there by carrier site.
8064
8065 IF l_debug_on
8066 THEN
8067 WSH_DEBUG_SV.logmsg(l_module_name,' Getting trip stop information ',
8068 WSH_DEBUG_SV.C_PROC_LEVEL);
8069 END IF;
8070
8071 GET_FIRST_LAST_STOP_INFO(x_return_status => l_return_status,
8072 x_arrival_date => l_arrival_date,
8073 x_departure_date => l_dept_date,
8074 x_first_stop_id => l_first_stop_id,
8075 x_last_stop_id => l_last_stop_id,
8076 x_first_stop_loc_id => l_first_stop_loc_id,
8077 x_last_stop_loc_id => l_last_stop_loc_id,
8078 p_trip_id => p_trip_id);
8079
8080 wsh_util_core.api_post_call(
8081 p_return_status =>l_return_status,
8082 x_num_warnings =>l_number_of_warnings,
8083 x_num_errors =>l_number_of_errors,
8084 p_msg_data =>l_msg_data);
8085
8086 IF ( (l_return_status = 'E')
8087 OR (l_return_status = 'U') )
8088 THEN
8089 RAISE FND_API.G_EXC_ERROR;
8090 END IF;
8091
8092 SELECT shipments_type_flag INTO l_typeflag
8093 FROM WSH_TRIPS
8094 WHERE TRIP_ID = p_trip_id;
8095
8096 -- Bug 6633529: Handling OTHERS EXCEPTION
8097 BEGIN
8098 IF (l_typeflag = 'O' OR l_typeflag = 'M')
8099 THEN
8100 -- outbound or mixed use first stop location id
8101 SELECT mp. organization_id
8102 INTO l_organization_id
8103 FROM hr_organization_units hou,mtl_parameters mp
8104 WHERE hou.organization_id = mp.organization_id
8105 AND hou.location_id = l_first_stop_loc_id
8106 AND trunc(sysdate) <= nvl( hou.date_to, trunc(sysdate));
8107 ELSE
8108 -- inbound so use last stop
8109 SELECT mp. organization_id
8110 INTO l_organization_id
8111 FROM hr_organization_units hou,mtl_parameters mp
8112 WHERE hou.organization_id = mp.organization_id
8113 AND hou.location_id = l_last_stop_loc_id
8114 AND trunc(sysdate) <= nvl( hou.date_to, trunc(sysdate));
8115 END IF;
8116 EXCEPTION
8117 WHEN OTHERS THEN
8118 IF l_debug_on THEN
8119 WSH_DEBUG_SV.logmsg(l_module_name,'In WHEN OTHERS',WSH_DEBUG_SV.C_PROC_LEVEL);
8120 WSH_DEBUG_SV.logmsg(l_module_name,'Getting organization from the corresponding delivery',WSH_DEBUG_SV.C_PROC_LEVEL);
8121 END IF;
8122 -- Bug 6633529: Adding Rownum = 1 for Trips having more than 1 delivery for the same organization
8123 SELECT dlvy.ORGANIZATION_ID
8124 INTO l_organization_id
8125 FROM WSH_TRIP_STOPS stops,
8126 WSH_DELIVERY_LEGS leg,
8127 WSH_NEW_DELIVERIES dlvy
8128 WHERE stops.stop_id = leg.pick_up_stop_id
8129 AND leg.delivery_id = dlvy.delivery_id
8130 AND stops.stop_id = l_first_stop_id
8131 AND ROWNUM = 1;
8132 END;
8133 -- Bug 6633529: End of fix
8134
8135 --
8136 --
8137
8138 -- if organiaztion id is null then we should get org id from the
8139 -- delivery that is getting picked up at the first stop
8140
8141 IF (l_organization_id IS NULL
8142 AND l_first_stop_id IS NOT NULL)
8143 THEN
8144 -- Bug 6633529: Adding Rownum = 1 for Trips having more than 1 delivery for the same organization
8145 SELECT dlvy.ORGANIZATION_ID
8146 INTO l_organization_id
8147 FROM WSH_TRIP_STOPS stops, WSH_DELIVERY_LEGS leg,
8148 WSH_NEW_DELIVERIES dlvy
8149 WHERE stops.stop_id = leg.pick_up_stop_id
8150 AND leg.delivery_id = dlvy.delivery_id
8151 AND stops.stop_id = l_first_stop_id
8152 AND ROWNUM = 1;
8153 END IF;
8154
8155
8156 IF l_debug_on THEN
8157 WSH_DEBUG_SV.pop(l_module_name);
8158 END IF;
8159
8160 return l_organization_id;
8161
8162 --}
8163 EXCEPTION
8164 --{
8165 WHEN FND_API.G_EXC_ERROR THEN
8166 IF l_debug_on THEN
8167 WSH_DEBUG_SV.pop(l_module_name);
8168 END IF;
8169 return null;
8170
8171 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8172 IF l_debug_on THEN
8173 WSH_DEBUG_SV.pop(l_module_name);
8174 END IF;
8175 return null;
8176
8177 WHEN OTHERS THEN
8178 IF l_debug_on THEN
8179 WSH_DEBUG_SV.pop(l_module_name);
8180 END IF;
8181 return null;
8182
8183 END GET_TRIP_ORGANIZATION_ID;
8184
8185 --{
8186 --========================================================================
8187 -- PROCEDURE : GET_FIRST_LAST_STOP_INFO
8188 --
8189 -- COMMENT : Return back first stop and last stop information..
8190 -- MODIFIED : OTM specific API use to get the pickup and drop off by Seq. No.
8191
8192 --========================================================================
8193
8194 PROCEDURE GET_FIRST_LAST_STOP_INFO(x_return_status OUT NOCOPY VARCHAR2,
8195 x_arrival_date OUT NOCOPY DATE,
8196 x_departure_date OUT NOCOPY DATE,
8197 x_first_stop_id OUT NOCOPY NUMBER,
8198 x_last_stop_id OUT NOCOPY NUMBER,
8199 x_first_stop_loc_id OUT NOCOPY NUMBER,
8200 x_last_stop_loc_id OUT NOCOPY NUMBER,
8201 p_trip_id NUMBER)
8202 IS
8203 --{
8204 /* Replaced this query to get pickup and drop off
8205 CURSOR GET_TRIP_STOPS IS
8206 SELECT stop_location_id, planned_arrival_date, planned_departure_date ,
8207 stops.stop_id
8208 FROM wsh_trip_stops stops, wsh_trips trips
8209 WHERE trips.trip_id = p_trip_id
8210 and trips.trip_id = stops.trip_id
8211 ORDER BY PLANNED_ARRIVAL_DATE,
8212 STOP_SEQUENCE_NUMBER;
8213 */
8214 --}
8215 CURSOR GET_TRIP_STOPS_PICKUP
8216 IS
8217 SELECT stop_location_id, planned_arrival_date, planned_departure_date,
8218 stops.stop_id,stops.tms_interface_flag
8219 FROM wsh_trip_stops stops,
8220 wsh_trips trips,
8221 wsh_delivery_legs wdg
8222 WHERE trips.trip_id = p_trip_id
8223 and trips.trip_id = stops.trip_id
8224 and wdg.pick_up_stop_id = stops.stop_id
8225 ORDER BY STOP_SEQUENCE_NUMBER;
8226
8227
8228 CURSOR GET_TRIP_STOPS_DROP
8229 IS
8230 SELECT stop_location_id, planned_arrival_date, planned_departure_date,
8231 stops.stop_id,stops.tms_interface_flag
8232 FROM wsh_trip_stops stops,
8233 wsh_trips trips,
8234 wsh_delivery_legs wdg
8235 WHERE trips.trip_id = p_trip_id
8236 and trips.trip_id = stops.trip_id
8237 and wdg.drop_off_stop_id = stops.stop_id
8238 ORDER BY STOP_SEQUENCE_NUMBER DESC;
8239
8240 --{
8241
8242 l_api_name CONSTANT VARCHAR2(30) := 'GET_FIRST_LAST_STOP_INFO';
8243 l_api_version CONSTANT NUMBER := 1.0;
8244 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
8245 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || l_api_name;
8246
8247 --l_stop_loc_id_tbl FTE_ID_TAB_TYPE; -- removed since is not used
8248 --l_stop_id_tbl FTE_ID_TAB_TYPE; -- removed since is not used
8249
8250 l_typeflag VARCHAR2(1);
8251 l_first_stop NUMBER;
8252 l_idx NUMBER;
8253
8254 BEGIN
8255
8256 IF l_debug_on THEN
8257 WSH_DEBUG_SV.push(l_module_name);
8258 END IF;
8259
8260 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
8261
8262 IF l_debug_on
8263 THEN
8264 WSH_DEBUG_SV.logmsg(l_module_name,' Getting trip stop information ',
8265 WSH_DEBUG_SV.C_PROC_LEVEL);
8266 END IF;
8267
8268 l_idx := 0;
8269
8270 /*
8271 FOR GET_TRIP_STOPS_REC IN GET_TRIP_STOPS
8272 LOOP
8273 IF (l_idx = 0)
8274 THEN
8275 -- This is first stop
8276 x_first_stop_id := GET_TRIP_STOPS_REC.STOP_ID;
8277 x_first_stop_loc_id := GET_TRIP_STOPS_REC.STOP_LOCATION_ID;
8278 x_departure_date := GET_TRIP_STOPS_REC.PLANNED_DEPARTURE_DATE;
8279 ELSE
8280 -- Need to find out if there is a way to go to last stop directly
8281 x_last_stop_id := GET_TRIP_STOPS_REC.STOP_ID;
8282 x_last_stop_loc_id := GET_TRIP_STOPS_REC.STOP_LOCATION_ID;
8283 x_arrival_date := GET_TRIP_STOPS_REC.PLANNED_ARRIVAL_DATE;
8284 END IF;
8285 l_idx := l_idx+1;
8286
8287 END LOOP;
8288 */
8289 -- Get 1st pickup Stop
8290 FOR GET_TRIP_STOPS_REC1 IN GET_TRIP_STOPS_PICKUP
8291 LOOP
8292 -- This is first stop
8293 x_first_stop_id := GET_TRIP_STOPS_REC1.STOP_ID;
8294 x_first_stop_loc_id := GET_TRIP_STOPS_REC1.STOP_LOCATION_ID;
8295 x_departure_date := GET_TRIP_STOPS_REC1.PLANNED_DEPARTURE_DATE;
8296 EXIT;
8297 END LOOP;
8298 -- Get Drop off Stop
8299 FOR GET_TRIP_STOPS_REC2 IN GET_TRIP_STOPS_DROP
8300 LOOP
8301 x_last_stop_id := GET_TRIP_STOPS_REC2.STOP_ID;
8302 x_last_stop_loc_id := GET_TRIP_STOPS_REC2.STOP_LOCATION_ID;
8303 x_arrival_date := GET_TRIP_STOPS_REC2.PLANNED_ARRIVAL_DATE;
8304 EXIT;
8305 END LOOP;
8306 --
8307 IF l_debug_on
8308 THEN
8309 WSH_DEBUG_SV.logmsg(l_module_name,' First stop STOP_ID ' || x_first_stop_id,
8310 WSH_DEBUG_SV.C_PROC_LEVEL);
8311 WSH_DEBUG_SV.logmsg(l_module_name,' First stop Stop Loc Id ' || x_first_stop_loc_id,
8312 WSH_DEBUG_SV.C_PROC_LEVEL);
8313 WSH_DEBUG_SV.logmsg(l_module_name,' First stop departure date ' || x_departure_date,
8314 WSH_DEBUG_SV.C_PROC_LEVEL);
8315 WSH_DEBUG_SV.logmsg(l_module_name,' Last stop STOP_ID ' || x_last_stop_id,
8316 WSH_DEBUG_SV.C_PROC_LEVEL);
8317 WSH_DEBUG_SV.logmsg(l_module_name,' Last stop Stop loc id ' || x_last_stop_loc_id,
8318 WSH_DEBUG_SV.C_PROC_LEVEL);
8319 WSH_DEBUG_SV.logmsg(l_module_name,' Last stop arrival date ' || x_arrival_date,
8320 WSH_DEBUG_SV.C_PROC_LEVEL);
8321 END IF;
8322
8323
8324
8325 IF GET_TRIP_STOPS_PICKUP%ISOPEN THEN
8326 CLOSE GET_TRIP_STOPS_PICKUP;
8327 END IF;
8328
8329
8330 IF GET_TRIP_STOPS_DROP%ISOPEN THEN
8331 CLOSE GET_TRIP_STOPS_DROP;
8332 END IF;
8333
8334 IF l_debug_on THEN
8335 WSH_DEBUG_SV.pop(l_module_name);
8336 END IF;
8337
8338 --}
8339 EXCEPTION
8340 --{
8341 WHEN FND_API.G_EXC_ERROR THEN
8342 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8343 IF l_debug_on THEN
8344 WSH_DEBUG_SV.pop(l_module_name);
8345 END IF;
8346
8347 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8348 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8349 IF l_debug_on THEN
8350 WSH_DEBUG_SV.pop(l_module_name);
8351 END IF;
8352 WHEN OTHERS THEN
8353 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8354
8355 IF GET_TRIP_STOPS_PICKUP%ISOPEN THEN
8356 CLOSE GET_TRIP_STOPS_PICKUP;
8357 END IF;
8358
8359
8360 IF GET_TRIP_STOPS_DROP%ISOPEN THEN
8361 CLOSE GET_TRIP_STOPS_DROP;
8362 END IF;
8363
8364 IF l_debug_on THEN
8365 WSH_DEBUG_SV.pop(l_module_name);
8366 END IF;
8367
8368 END GET_FIRST_LAST_STOP_INFO;
8369
8370 /* End of OTM R12 - O/B BPEL */
8371
8372 END WSH_UTIL_CORE;