DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_CARRIERS_PUB

Source


1 PACKAGE BODY WSH_CARRIERS_PUB AS
2 /* $Header: WSHCAPBB.pls 120.0.12010000.2 2010/06/14 12:43:57 gbhargav noship $ */
3 
4 --===================
5 -- CONSTANTS
6 --===================
7 G_PKG_NAME CONSTANT VARCHAR2(30) := 'WSH_CARRIERS_PUB';
8 
9 --===================
10 -- PROCEDURES
11 --===================
12 
13    --========================================================================
14    -- PROCEDURE : Assign_Org_Carrier_Service         PUBLIC
15    --
16    -- PARAMETERS: p_api_version_number    known api version error number
17    --             p_init_msg_list         FND_API.G_TRUE to reset list
18    --             p_commit                FND_API.G_TRUE  to commit.
19    --             p_action_code            Valid action codes are
20    --                                     'ASSIGN','UNASSIGN'
21    --             p_org_info_tab          Input table variable containing org_id and org_code for which needs to be assigned/unassigned
22    --             p_carrier_id            Carrier Id of the carrier
23    --             p_freight_code          Freight code
24    --             p_carrier_service_id    Carrier service Id to be assigned/unassigned to Organization
25    --             p_ship_method_code      Ship Method code
26    --             p_ship_method           Ship Method meaning
27    --             x_car_out_rec_tab       Out table variable containing carrier_service_id and org_carrier_service_id updated/inserted
28    --             x_return_status         return status
29    --             x_msg_count             number of messages in the list
30    --             x_msg_data              text of messages
31    --
32    -- VERSION   : current version         1.0
33    --             initial version         1.0
34    -- COMMENT   : This procedure is used to perform an action specified in p_action_code on the carrier service
35    --
36    --             If p_action_code is 'ASSIGN' then new record will be inserted in WCSM ,WOCS and org_fieight_tl,
37    --                                  if records are already existing then existing records will be updated
38    --             If p_action_code is 'UNASSIGN' then existing record in WCSM and WOCS will be disabled .
39    --                                  if records are not existing then records will be inserted in disabled status
40    --                                  in WCSM ,WOCS and org_fieight_tl
41    --
42    --             If org_id and org_code are both passed in p_org_info_tab then only org_id is considered than org_code.
43    --
44    --             If p_carrier_service_id is passed then p_carrier_id , p_freight_code , p_ship_method_code and p_ship_method parameters are ignored
45    --
46    --             If p_ship_method_code or p_ship_method is passed then on associated carrier service action will be performed.
47    --             If p_ship_method_code and p_ship_method both are passed then only p_ship_method_code is used.
48    --             If p_ship_method_code or p_ship_method is passed then p_carrier_id/p_freight_code are ignored
49 
50    --             If p_carrier_id or p_freight_code is passed then action will be performed on all associated carrier services.
51    --             If p_carrier_id and p_freight_code  both are passed then only p_carrier_id is considered.
52   --
53    --DESCRIPTION: Organization Assignment/Unassignment for a carrier / carrier service / ship method is possible from Application .
54    --             This Public API is created to fulfill the same requirement.
55    --========================================================================
56 
57    PROCEDURE Assign_Org_Carrier_Service
58        ( p_api_version_number     IN   NUMBER,
59          p_init_msg_list          IN   VARCHAR2,
60          p_commit                 IN   VARCHAR2 DEFAULT FND_API.G_FALSE,
61          p_action_code            IN   VARCHAR2,
62          p_org_info_tab           IN   WSH_CARRIERS_PUB.Org_Info_Tab_Type,
63          p_carrier_id             IN   NUMBER DEFAULT NULL,
64          p_freight_code           IN   VARCHAR2 DEFAULT NULL,
65          p_carrier_service_id     IN   NUMBER DEFAULT NULL,
66          p_ship_method_code       IN   VARCHAR2 DEFAULT NULL,
67          p_ship_method            IN   VARCHAR2 DEFAULT NULL,
68          x_car_out_rec_tab        OUT NOCOPY wsh_carriers_grp.Org_Carrier_Ser_Out_Tab_Type,
69          x_return_status          OUT NOCOPY VARCHAR2,
70          x_msg_count              OUT NOCOPY NUMBER,
71          x_msg_data               OUT NOCOPY VARCHAR2 )
72    IS
73        l_api_version_number     CONSTANT NUMBER :=1.0 ;
74        l_api_name               CONSTANT VARCHAR2(30):= 'Assign_Org_Carrier_Service';
75        l_carrier_id             NUMBER ;
76        l_freight_code           WSH_CARRIERS.Freight_code%TYPE ;
77        l_org_info_tab           WSH_CARRIERS_PUB.Org_Info_Tab_Type;
78        l_carrier_service_id     NUMBER ;
79        l_carrier_service_info_tab Carrier_Ser_DFF_Tab_Type;
80        l_ship_method_code       WSH_CARRIER_SERVICES.Ship_Method_Code%TYPE ;
81        l_ship_method            WSH_CARRIER_SERVICES.Ship_Method_Meaning%TYPE ;
82        l_carrier_service_exists VARCHAR2(1);
83        l_shp_methods_dff        WSH_CARRIERS_GRP.Ship_Method_Dff_Type;
84        l_rec_org_car_ser_tab    WSH_CARRIERS_GRP.Org_Carrier_Service_Rec_Type;
85        l_rec_car_info_tab       WSH_CARRIERS_GRP.Carrier_Info_Dff_Type; --Passed as null in grp API
86        l_car_ser_out_rec        WSH_CARRIERS_GRP.Org_Carrier_Ser_Out_Rec_Type;
87        l_param_name             VARCHAR2(100);
88        l_num_errors             NUMBER ;
89        l_num_warnings           NUMBER ;
90        l_return_status          VARCHAR2(10);
91        l_msg_count              NUMBER;
92        l_msg_data               VARCHAR2(32767);
93        l_input_param_flag       BOOLEAN ;
94        l_temp                   NUMBER;
95 
96        --Cursor to fetch carrier service DFF.
97        CURSOR c_check_carrier_ser_exists(l_carrier_service_id NUMBER)    IS
98          SELECT CARRIER_SERVICE_ID,
99          ATTRIBUTE_CATEGORY ,
100          ATTRIBUTE1 ,
101          ATTRIBUTE2 ,
102          ATTRIBUTE3 ,
103          ATTRIBUTE4 ,
104          ATTRIBUTE5 ,
105          ATTRIBUTE6 ,
106          ATTRIBUTE7 ,
107          ATTRIBUTE8 ,
108          ATTRIBUTE9 ,
109          ATTRIBUTE10,
110          ATTRIBUTE11,
111          ATTRIBUTE12,
112          ATTRIBUTE13,
113          ATTRIBUTE14,
114          ATTRIBUTE15
115          FROM WSH_CARRIER_SERVICES
116          WHERE carrier_service_id = l_carrier_service_id
117          AND enabled_flag = 'Y';
118 
119        --Cursor to fetch carrier_service_id and DFF.
120        CURSOR c_check_carrier_sm_exists(l_ship_method_code VARCHAR2)    IS
121          SELECT CARRIER_SERVICE_ID,
122          ATTRIBUTE_CATEGORY ,
123          ATTRIBUTE1 ,
124          ATTRIBUTE2 ,
125          ATTRIBUTE3 ,
126          ATTRIBUTE4 ,
127          ATTRIBUTE5 ,
128          ATTRIBUTE6 ,
129          ATTRIBUTE7 ,
130          ATTRIBUTE8 ,
131          ATTRIBUTE9 ,
132          ATTRIBUTE10,
133          ATTRIBUTE11,
134          ATTRIBUTE12,
135          ATTRIBUTE13,
136          ATTRIBUTE14,
137          ATTRIBUTE15
138          FROM WSH_CARRIER_SERVICES
139          WHERE ship_method_code = l_ship_method_code
140          AND enabled_flag = 'Y';
141 
142        --Cursor to fetch carrier service details
143        CURSOR get_carrier_ser_info(l_carrier_id NUMBER) IS
144          SELECT CARRIER_SERVICE_ID,
145          ATTRIBUTE_CATEGORY,
146          ATTRIBUTE1,
147          ATTRIBUTE2,
148          ATTRIBUTE3,
149          ATTRIBUTE4,
150          ATTRIBUTE5,
151          ATTRIBUTE6,
152          ATTRIBUTE7,
153          ATTRIBUTE8,
154          ATTRIBUTE9,
155          ATTRIBUTE10,
156          ATTRIBUTE11,
157          ATTRIBUTE12,
158          ATTRIBUTE13,
159          ATTRIBUTE14,
160          ATTRIBUTE15
161          FROM WSH_CARRIER_SERVICES
162          WHERE carrier_id = l_carrier_id
163          AND enabled_flag = 'Y';
164 
165        --
166        l_debug_on BOOLEAN;
167        --
168        l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'Assign_Org_Carrier_Service';
169 
170    BEGIN
171 
172        l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
173 
174        IF l_debug_on IS NULL
175        THEN
176          l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
177        END IF;
178        IF NOT FND_API.Compatible_API_Call
179        (
180           l_api_version_number,
181           p_api_version_number,
182           l_api_name,
183           G_PKG_NAME
184        )
185        THEN
186          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
187        END IF;
188 
189        IF FND_API.to_Boolean(p_init_msg_list) THEN
190          FND_MSG_PUB.initialize;
191        END IF;
192 
193        IF l_debug_on THEN
194          wsh_debug_sv.push (l_module_name);
195          wsh_debug_sv.log (l_module_name,'Action_code',p_action_code);
196          wsh_debug_sv.log (l_module_name,'p_org_info_tab.count',p_org_info_tab.count);
197          wsh_debug_sv.log (l_module_name,'Carrier_id',p_carrier_id);
198          wsh_debug_sv.log (l_module_name,'Freight_code',p_freight_code);
199          wsh_debug_sv.log (l_module_name,'Carrier_service_id',p_carrier_service_id);
200          wsh_debug_sv.log (l_module_name,'Ship_method_code',p_ship_method_code);
201          wsh_debug_sv.log (l_module_name,'Ship_method',p_ship_method);
202        END IF;
203 
204        l_return_status       := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
205        l_carrier_id          := p_carrier_id ;
206        l_freight_code        := p_freight_code;
207        l_carrier_service_id  := p_carrier_service_id;
208        l_ship_method_code    := p_ship_method_code ;
209        l_ship_method         := p_ship_method ;
210        l_num_errors          := 0;
211        l_num_warnings        := 0;
212        l_input_param_flag    := TRUE;
213        l_temp                := 0;
214 
215        l_temp := p_org_info_tab.FIRST;
216 
217        IF l_temp is not null THEN
218              LOOP
219                 -- Exchange the org values from p_org_info_tab to l_org_info_tab only if either org_id / org_code is not null.
220                 IF ( NVL(p_org_info_tab(l_temp).org_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM ) OR
221                    ( NVL(p_org_info_tab(l_temp).org_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR ) THEN
222                 --{
223                    l_org_info_tab(l_org_info_tab.count+1).org_id := p_org_info_tab(l_temp).org_id;
224                    l_org_info_tab(l_org_info_tab.count).org_code := p_org_info_tab(l_temp).org_code;
225                 --}
226                 END IF;
227 
228                 EXIT WHEN ( l_temp = p_org_info_tab.LAST );
229                 l_temp := p_org_info_tab.NEXT(l_temp);
230              END LOOP;
231        END IF;
232 
233        IF p_action_code IS NULL THEN
234        --{
235             l_param_name := 'action_code';
236             l_input_param_flag := FALSE;
237        --}
238        ELSIF (l_org_info_tab.count = 0 ) THEN
239        --{
240             l_param_name := 'organization_id or organization_code';
241             l_input_param_flag := FALSE;
242        --}
243        ELSIF (l_carrier_service_id IS NULL AND l_ship_method_code IS NULL AND
244               l_ship_method IS NULL AND l_carrier_id IS NULL AND l_freight_code is NULL) THEN
245        --{
246             l_param_name := 'Carrier_service_id/Ship_method_code/Ship_method/Carrier_id/Freight_code';
247             l_input_param_flag := FALSE;
248        --}
249        END IF;
250 
251        IF NOT  l_input_param_flag THEN
252        --{
253             FND_MESSAGE.SET_NAME('WSH','WSH_REQUIRED_FIELD_NULL');
254             FND_MESSAGE.SET_TOKEN('FIELD_NAME',l_param_name);
255             x_return_status := wsh_util_core.g_ret_sts_error;
256             wsh_util_core.add_message(x_return_status,l_module_name);
257             RAISE FND_API.G_EXC_ERROR;
258        --}
259        END IF;
260 
261        IF p_action_code NOT IN ('ASSIGN','UNASSIGN') THEN
262        --{
263             FND_MESSAGE.SET_NAME('WSH','WSH_INVALID_ACTION_CODE');
264             FND_MESSAGE.SET_TOKEN('ACT_CODE',p_action_code);
265             x_return_status := wsh_util_core.g_ret_sts_error;
266             wsh_util_core.add_message(x_return_status,l_module_name);
267             RAISE FND_API.G_EXC_ERROR;
268        --}
269        END IF;
270 
271        IF l_debug_on THEN
272           wsh_debug_sv.log(l_module_name,'l_org_info_tab.count',l_org_info_tab.count);
273        END IF;
274 
275        --Organization validation
276        IF ( l_org_info_tab.count > 0 )  THEN
277        --{
278 
279             FOR i in l_org_info_tab.FIRST..l_org_info_tab.LAST LOOP
280             --{
281                IF l_debug_on THEN
282                   wsh_debug_sv.logmsg(l_module_name,'Calling wsh_util_validate.validate_org',WSH_DEBUG_SV.C_PROC_LEVEL);
283                   wsh_debug_sv.log(l_module_name,'l_org_info_tab('||i||').org_id',l_org_info_tab(i).org_id);
284                   wsh_debug_sv.log(l_module_name,'l_org_info_tab('||i||').org_code',l_org_info_tab(i).org_code);
285                END IF;
286 
287                WSH_UTIL_VALIDATE.validate_org(
288                       p_org_id         => l_org_info_tab(i).org_id,         --Out param
289                       p_org_code       => l_org_info_tab(i).org_code,
290                       x_return_status  => l_return_status );
291 
292                IF l_debug_on THEN
293                   wsh_debug_sv.log(l_module_name,'Return Status After Calling wsh_util_validate.validate_org',l_return_status);
294                END IF;
295 
296                WSH_UTIL_CORE.api_post_call(
297                       p_return_status     => l_return_status,
298                       x_num_warnings      => l_num_warnings,
299                       x_num_errors        => l_num_errors);
300             --}
301             END LOOP;
302 
303             --Carrier service validation
304             IF (l_carrier_service_id  IS NOT NULL ) THEN
305             --{
306                  IF l_debug_on THEN
307                      wsh_debug_sv.log(l_module_name,'Fetching wsh_carrier_services data for Carrier Service Id',l_carrier_service_id);
308                  END IF;
309                  OPEN c_check_carrier_ser_exists(l_carrier_service_id);
310                  FETCH c_check_carrier_ser_exists INTO  l_carrier_service_info_tab(1);
311 
312                  IF (c_check_carrier_ser_exists%NOTFOUND) THEN
313                  --{
314                       CLOSE c_check_carrier_ser_exists;
315                       FND_MESSAGE.SET_NAME('WSH','WSH_OI_INVALID_ATTRIBUTE');   --Bug 9706100  added error message
316                       FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Carrier Service Id');
317                       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
318                       wsh_util_core.add_message(x_return_status,l_module_name);
319                       RAISE  FND_API.G_EXC_ERROR;
320                  --}
321                  END IF;
322 
323                  CLOSE c_check_carrier_ser_exists;
324             --}End of Carrier service validation
325             --Ship method validation
326             ELSIF ((l_ship_method_code IS NOT NULL ) OR (l_ship_method IS NOT NULL )) THEN
327             --{
328 
329                  IF l_debug_on THEN
330                    WSH_DEBUG_SV.logmsg(l_module_name,'Calling wsh_util_validate.validate_ship_method',WSH_DEBUG_SV.C_PROC_LEVEL);
331                  END IF;
332 
333                  WSH_UTIL_VALIDATE.validate_ship_method(
334                         p_ship_method_code  => l_ship_method_code,   --Out param
335                         p_ship_method_name  => l_ship_method,        --Out param
336                         x_return_status     => l_return_status);
337 
338                  IF l_debug_on THEN
339                    wsh_debug_sv.log(l_module_name,'Return Status After Calling wsh_util_validate.validate_ship_method',l_return_status);
340                  END IF;
341 
342                  WSH_UTIL_CORE.api_post_call(
343                         p_return_status     => l_return_status,
344                         x_num_warnings      => l_num_warnings,
345                         x_num_errors        => l_num_errors);
346 
347                  IF l_debug_on THEN
348                      wsh_debug_sv.log(l_module_name,'Fetching wsh_carrier_services data for ship method code',l_ship_method_code);
349                  END IF;
350 
351                  --Fetch carrier_serivce_id and corresponding DFF.
352                  OPEN c_check_carrier_sm_exists (l_ship_method_code);
353                  FETCH c_check_carrier_sm_exists INTO l_carrier_service_info_tab(1) ;
354 
355                  IF (c_check_carrier_sm_exists%NOTFOUND) THEN
356                  --{
357                       CLOSE c_check_carrier_sm_exists;
358                       FND_MESSAGE.SET_NAME('WSH','WSH_OI_INVALID_SHIP_METHOD');  --Bug 9706100  added error message
359                       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
360                       wsh_util_core.add_message(x_return_status,l_module_name);
361                       RAISE  FND_API.G_EXC_ERROR;
362                  --}
363                  END IF;
364 
365                  CLOSE c_check_carrier_sm_exists;
366             --}--End of Ship method validation
367             --Carrier validation
368             ELSIF ((l_carrier_id  IS NOT NULL ) OR (l_freight_code IS NOT NULL))  THEN
369             --{
370                  IF l_debug_on THEN
371                    wsh_debug_sv.logmsg(l_module_name,'Calling WSH_UTIL_VALIDATE.Validate_Freight_Code',WSH_DEBUG_SV.C_PROC_LEVEL);
372                  END IF;
373 
374                  WSH_UTIL_VALIDATE.Validate_Freight_Code(
375                          x_Carrier_id      => l_carrier_id,  --out param
376                          p_freight_code    => l_freight_code,
377                          x_return_status   => l_return_status);
378 
379                  IF l_debug_on THEN
380                    wsh_debug_sv.log(l_module_name,'Return Status After Calling WSH_UTIL_VALIDATE.Validate_Freight_Code',l_return_status);
381                  END IF;
382 
383                  WSH_UTIL_CORE.api_post_call(
384                         p_return_status     => l_return_status,
385                         x_num_warnings      => l_num_warnings,
386                         x_num_errors        => l_num_errors);
387 
388                 OPEN get_carrier_ser_info(l_carrier_id);
389                 FETCH get_carrier_ser_info BULK COLLECT INTO  l_carrier_service_info_tab;
390                 CLOSE get_carrier_ser_info;
391             --}
392             END IF;
393             --End of Carrier validation
394 
395             IF l_carrier_service_info_tab.COUNT > 0 THEN
396             --{
397                  --Call Group API
398                  FOR l_index IN l_carrier_service_info_tab.FIRST..l_carrier_service_info_tab.LAST LOOP
399                  --{
400                       --Not populating WHO columns in l_shp_methods_dff as they are overridden in grp API.
401                       l_shp_methods_dff.ATTRIBUTE_CATEGORY := l_carrier_service_info_tab(l_index).ATTRIBUTE_CATEGORY;
402                       l_shp_methods_dff.ATTRIBUTE1 := l_carrier_service_info_tab(l_index).ATTRIBUTE1 ;
403                       l_shp_methods_dff.ATTRIBUTE2 := l_carrier_service_info_tab(l_index).ATTRIBUTE2 ;
404                       l_shp_methods_dff.ATTRIBUTE3 := l_carrier_service_info_tab(l_index).ATTRIBUTE3;
405                       l_shp_methods_dff.ATTRIBUTE4 := l_carrier_service_info_tab(l_index).ATTRIBUTE4 ;
406                       l_shp_methods_dff.ATTRIBUTE5 := l_carrier_service_info_tab(l_index).ATTRIBUTE5 ;
407                       l_shp_methods_dff.ATTRIBUTE6 := l_carrier_service_info_tab(l_index).ATTRIBUTE6 ;
408                       l_shp_methods_dff.ATTRIBUTE7 := l_carrier_service_info_tab(l_index).ATTRIBUTE7 ;
409                       l_shp_methods_dff.ATTRIBUTE8 := l_carrier_service_info_tab(l_index).ATTRIBUTE8 ;
410                       l_shp_methods_dff.ATTRIBUTE9 := l_carrier_service_info_tab(l_index).ATTRIBUTE9 ;
411                       l_shp_methods_dff.ATTRIBUTE10 := l_carrier_service_info_tab(l_index).ATTRIBUTE10;
412                       l_shp_methods_dff.ATTRIBUTE11 := l_carrier_service_info_tab(l_index).ATTRIBUTE11;
413                       l_shp_methods_dff.ATTRIBUTE12 := l_carrier_service_info_tab(l_index).ATTRIBUTE12 ;
414                       l_shp_methods_dff.ATTRIBUTE13 := l_carrier_service_info_tab(l_index).ATTRIBUTE13 ;
415                       l_shp_methods_dff.ATTRIBUTE14 := l_carrier_service_info_tab(l_index).ATTRIBUTE14 ;
416                       l_shp_methods_dff.ATTRIBUTE15 := l_carrier_service_info_tab(l_index).ATTRIBUTE15 ;
417 
418                       l_rec_org_car_ser_tab.CARRIER_SERVICE_ID := l_carrier_service_info_tab(l_index).carrier_service_id;
419 
420                       -- Assigning the carrier service to all orgs which are passed in the parameter.
421                       -- Org Loop
422                       FOR j in l_org_info_tab.FIRST..l_org_info_tab.LAST LOOP
423                       --{
424                          l_rec_org_car_ser_tab.ORGANIZATION_ID := l_org_info_tab(j).org_id; -- This keeps changing as we iterate through l_org_info_tab
425                          -- removing the reference of previous buffer.
426                          l_car_ser_out_rec := null;
427 
428                          IF l_debug_on THEN
429                             wsh_debug_sv.log(l_module_name,'Carrier_service_id',l_carrier_service_info_tab(l_index).carrier_service_id);
430                             wsh_debug_sv.log(l_module_name,'Organization_id',l_rec_org_car_ser_tab.ORGANIZATION_ID);
431                             wsh_debug_sv.logmsg(l_module_name,'Calling WSH_CARRIERS_GRP.Assign_Org_Carrier_Service',WSH_DEBUG_SV.C_PROC_LEVEL);
432                          END IF;
433 
434                          WSH_CARRIERS_GRP.Assign_Org_Carrier_Service(
435                                 p_api_version_number     => p_api_version_number,
436                                 p_init_msg_list          => p_init_msg_list,
437                                 p_commit                 => p_commit,
438                                 p_action_code            => p_action_code,
439                                 p_rec_org_car_ser_tab    => l_rec_org_car_ser_tab,
440                                 p_rec_car_dff_tab        => l_rec_car_info_tab,
441                                 p_shp_methods_dff        => l_shp_methods_dff,
442                                 x_orgcar_ser_out_rec_tab => l_car_ser_out_rec,
443                                 x_return_status          => l_return_status,
444                                 x_msg_count              => l_msg_count,
445                                 x_msg_data               => l_msg_data );
446 
447                          IF l_debug_on THEN
448                             wsh_debug_sv.log(l_module_name,'Return Status After Calling WSH_CARRIERS_GRP.Assign_Org_Carrier_Service',l_return_status);
449                          END IF;
450 
451                          WSH_UTIL_CORE.api_post_call(
452                                 p_return_status     => l_return_status,
453                                 x_num_warnings      => l_num_warnings,
454                                 x_num_errors        => l_num_errors);
455 
456                          x_car_out_rec_tab(x_car_out_rec_tab.count + 1) := l_car_ser_out_rec;
457 
458                          IF l_debug_on THEN
459                             wsh_debug_sv.log(l_module_name,'x_car_out_rec_tab(' || To_Char (x_car_out_rec_tab.count) || ').carrier_service_id',x_car_out_rec_tab(x_car_out_rec_tab.count).carrier_service_id);
460                             wsh_debug_sv.log(l_module_name,'x_car_out_rec_tab(' || To_Char (x_car_out_rec_tab.count) || ').org_carrier_service_id',x_car_out_rec_tab(x_car_out_rec_tab.count).org_carrier_service_id);
461                          END IF;
462                       --}
463                       END LOOP;
464                       --Org Loop
465                  --}
466                  END LOOP;
467 
468             --} If l_carrier_service_info_tab.COUNT > 0
469             ELSE
470             --{
471                  IF l_debug_on THEN
472                    wsh_debug_sv.logmsg(l_module_name,'** No eligible carrier services found **');
473                  END IF;
474             --}
475             END IF;
476        --}
477        END IF; --End of Organization validation
478 
479       IF l_num_warnings > 0 THEN
480          x_return_status := wsh_util_core.g_ret_sts_warning;
481        ELSE
482          x_return_status := wsh_util_core.g_ret_sts_success;
483        END IF;
484        --
485        FND_MSG_PUB.Count_And_Get (
486             p_count => x_msg_count,
487             p_data  => x_msg_data );
488        --
489        IF l_debug_on THEN
490          WSH_DEBUG_SV.pop(l_module_name);
491        END IF;
492 
493    EXCEPTION
494        WHEN FND_API.G_EXC_ERROR THEN
495        --{
496            IF c_check_carrier_ser_exists%ISOPEN THEN
497              CLOSE c_check_carrier_ser_exists;
498            END IF;
499 
500            IF c_check_carrier_sm_exists%ISOPEN THEN
501              CLOSE c_check_carrier_sm_exists;
502            END IF;
503 
504            IF get_carrier_ser_info%ISOPEN THEN
505              CLOSE get_carrier_ser_info;
506            END IF;
507 
508            x_return_status := FND_API.G_RET_STS_ERROR;
509            -- Get message count and data
510            FND_MSG_PUB.Count_And_Get (
511                  p_count => x_msg_count,
512                  p_data  => x_msg_data );
513            --
514            IF l_debug_on THEN
515              WSH_DEBUG_SV.logmsg(l_module_name,'Expected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_EXCEP_LEVEL);
516              WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
517            END IF;
518            --
519        --}
520        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
521        --{
522             IF c_check_carrier_ser_exists%ISOPEN THEN
523               CLOSE c_check_carrier_ser_exists;
524             END IF;
525 
526             IF c_check_carrier_sm_exists%ISOPEN THEN
527               CLOSE c_check_carrier_sm_exists;
528             END IF;
529 
530             IF get_carrier_ser_info%ISOPEN THEN
531               CLOSE get_carrier_ser_info;
532             END IF;
533 
534             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
535             -- Get message count and data
536             FND_MSG_PUB.Count_And_Get(
537                   p_count => x_msg_count ,
538                   p_data  => x_msg_data );
539             --
540             IF l_debug_on THEN
541               WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
542               WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
543             END IF;
544        --}
545        WHEN OTHERS THEN
546        --{
547             IF c_check_carrier_ser_exists%ISOPEN THEN
548               CLOSE c_check_carrier_ser_exists;
549             END IF;
550 
551             IF c_check_carrier_sm_exists%ISOPEN THEN
552               CLOSE c_check_carrier_sm_exists;
553             END IF;
554 
555             IF get_carrier_ser_info%ISOPEN THEN
556               CLOSE get_carrier_ser_info;
557             END IF;
558 
559             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
560             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
561               FND_MSG_PUB.Add_Exc_Msg
562               (
563                  G_PKG_NAME
564                  , '_x_'
565               );
566             END IF;
567 
568             -- Get message count and data
569             FND_MSG_PUB.Count_And_Get (
570                   p_count => x_msg_count ,
571                   p_data  => x_msg_data );
572             --
573             IF l_debug_on THEN
574               WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
575               WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
576             END IF;
577        --}
578 
579    END Assign_Org_Carrier_Service;
580 
581 END WSH_CARRIERS_PUB;