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