DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_ITM_UTIL

Source


1 PACKAGE BODY WSH_ITM_UTIL AS
2 /* $Header: WSHUTITB.pls 120.0.12010000.3 2009/09/23 12:39:51 gbhargav ship $ */
3 
4 
5   -- Name
6   --   GET_SERVICE_DETAILS
7   --   Purpose
8   --   On passing the p_application_id, p_master_organization_id and
9   --   p_organization_id this procedure returns the services defined for
10   --   user and the additional country codes for all the services.
11   -- Arguments
12   --   p_application_id               p_application_id of a request
13   --   p_master_organization_id       p_master_organization_id of a request
14   --   p_organization_id              p_organization_id of a request
15   --   x_service_tbl                  service types and addl_country_codes
16   --                                  returned as a PLSQL table Service_Rec_Type
17   --   x_supports_combination_flag    A flag indicating whether a combined
18   --                                  request for all the services returned
19   --                                  by x_service_types_rec is supported or
20   --                                  not.
21   --   x_return_status                Return Status
22   -- Notes
23   --   Refer the record T_SERVICE_TYPES_REC
24 
25 
26 
27 PROCEDURE GET_SERVICE_DETAILS (
28        p_application_id              IN  NUMBER,
29        p_master_organization_id      IN  NUMBER,
30        p_organization_id             IN  NUMBER,
31        x_service_tbl                 OUT NOCOPY  Service_Tbl_Type,
32        x_supports_combination_flag   OUT NOCOPY  VARCHAR2,
33        x_return_status               OUT NOCOPY  VARCHAR2)
34 IS
35     priority               NUMBER := 0;
36     service_tbl            Service_Tbl_Type;
37     G_MISS_SERVICE_TBL     Service_Tbl_Type;
38     vendor_id              WSH_ITM_VENDORS.VENDOR_ID%TYPE := 0;
39     comb_flag              WSH_ITM_VENDORS.SUPPORTS_COMBINATION_FLAG%TYPE := 'Y';
40     l_addl_country_code    VARCHAR2(5);
41     l_sql_error            VARCHAR2(2000);
42     i                      NUMBER := 1;
43 
44     CURSOR Get_Services(
45 	p_application_id NUMBER,
46 	p_master_organization_id NUMBER) IS
47     --Bug3330869        SELECT * from (
48     SELECT      priority                        ,
49                 service_type                    ,
50                 addl_country_check_req          ,
51                 vendor_id                       ,
52                 supports_combination_flag
53     FROM (
54        SELECT 1 priority,
55               s.service_type,
56               s.addl_country_check_req,
57               v.vendor_id,
58               v.supports_combination_flag
59        FROM   WSH_ITM_SERVICE_PREFERENCES us1,
60 	      WSH_ITM_VENDOR_SERVICES s,
61 	      WSH_ITM_VENDORS v
62        WHERE  us1.application_id         = p_application_id   and
63               us1.master_organization_id = p_master_organization_id  and
64               us1.vendor_service_id      = s.vendor_service_id and
65               us1.active_flag            = 'Y'and
66               s.vendor_id                = v.vendor_id
67        UNION
68        SELECT 2 priority,
69               s.service_type,
70               s.addl_country_check_req,
71               v.vendor_id,
72               v.supports_combination_flag
73        FROM   WSH_ITM_SERVICE_PREFERENCES us1,
74 	      WSH_ITM_VENDOR_SERVICES s,
75 	      WSH_ITM_VENDORS v
76        WHERE  us1.application_id         = p_application_id   and
77               us1.master_organization_id   is null  and
78               us1.active_flag            = 'Y'and
79               us1.vendor_service_id      = s.vendor_service_id and
80               s.vendor_id                = v.vendor_id
81 	     ) order by priority;
82 
83   BEGIN
84     --
85     x_return_status := FND_API.G_RET_STS_SUCCESS;
86     oe_debug_pub.add('***Inside the procedure WSH_ITM_UTIL.GET_SERVICE_DETAILS***');
87     oe_debug_pub.add('Application Id ' || p_application_id);
88     oe_debug_pub.add('Master Organization  Id ' || p_master_organization_id);
89     oe_debug_pub.add('Organization Id ' || p_organization_id);
90 
91     service_tbl := G_MISS_SERVICE_TBL;
92 
93     BEGIN
94         SELECT ITM_ADDITIONAL_COUNTRY_CODE
95         INTO l_addl_country_code
96         FROM WSH_SHIPPING_PARAMETERS
97         WHERE organization_id = p_organization_id;
98     EXCEPTION
99         WHEN NO_DATA_FOUND THEN
100            l_addl_country_code := '';
101     END;
102 
103     oe_debug_pub.add('Additional Country Code is ' || l_addl_country_code);
104 
105     FOR ser_details IN Get_Services(p_application_id, p_master_organization_id)
106     LOOP
107 
108       IF ser_details.priority >= priority THEN
109        priority := ser_details.priority;
110       ELSE
111        EXIT;
112       END IF;
113 
114       service_tbl(i).service_type_code := ser_details.service_type;
115       IF ser_details.addl_country_check_req = 'Y' then
116         service_tbl(i).addl_country_code := l_addl_country_code;
117       ELSE
118         service_tbl(i).addl_country_code := '';
119       END IF;
120 
121       oe_debug_pub.add('Service Type ' || service_tbl(i).service_type_code);
122       oe_debug_pub.add('Additional Country Code ' || service_tbl(i).addl_country_code );
123 
124       i := i + 1;
125 
126       IF vendor_id = 0 then
127         vendor_id := ser_details.vendor_id;
128       END IF;
129 
130       IF vendor_id <> ser_details.vendor_id OR ser_details.supports_combination_flag = 'N' THEN
131         comb_flag := 'N';
132       END IF;
133 
134       vendor_id := ser_details.vendor_id;
135 
136     END LOOP;
137 
138     oe_debug_pub.add('Supports Combination Flag ' || comb_flag );
139     x_supports_combination_flag := comb_flag;
140     x_service_tbl               := service_tbl;
141     oe_debug_pub.add('***End of  the procedure WSH_ITM_UTIL.GET_SERVICE_DETAILS***');
142 
143 
144   EXCEPTION
145 
146     WHEN OTHERS THEN
147       l_sql_error := SQLERRM;
148       OE_DEBUG_PUB.Add('Processing Failed with an Error');
149       OE_DEBUG_PUB.Add('The unexpected error is :' || l_sql_error);
150       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
151 
152   END GET_SERVICE_DETAILS;
153 
154 
155   -- Name
156   --   UPDATE_PROCESS_FLAG
157   --   Purpose
158   --   To update the process_flag of a request.
159   -- Arguments
160   --   p_control_id_list              A PLSQL Table containing the list of transaction control id values
161   --   p_process_flag                 process_flag value
162   --   x_return_status                Return Status
163 
164 
165 PROCEDURE UPDATE_PROCESS_FLAG (
166        p_control_id_list             IN  CONTROL_ID_LIST,
167        p_process_flag                IN  NUMBER,
168        x_return_status               OUT NOCOPY  VARCHAR2)
169 IS
170     l_sql_error            VARCHAR2(2000);
171     i                      NUMBER;
172 
173   BEGIN
174 
175     --
176     x_return_status := FND_API.G_RET_STS_SUCCESS;
177     oe_debug_pub.add('In the procedure WSH_ITM_UTIL.UPDATE_PROCESS_FLAG');
178 
179     FORALL i IN p_control_id_list.FIRST..p_control_id_list.LAST
180      UPDATE WSH_ITM_REQUEST_CONTROL
181      SET
182         PROCESS_FLAG = p_process_flag
183      WHERE REQUEST_CONTROL_ID = p_control_id_list(i);
184 
185     oe_debug_pub.add('End of the procedure WSH_ITM_UTIL.UPDATE_PROCESS_FLAG');
186 
187   EXCEPTION
188 
189     WHEN OTHERS THEN
190       l_sql_error := SQLERRM;
191       oe_debug_pub.add('Processing Failed with an Error');
192       oe_debug_pub.add('The unexpected error is :' || l_sql_error);
193       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
194 
195   END UPDATE_PROCESS_FLAG;
196 
197   -- Name
198   --   get vendor
199   --   Purpose
200   --   To get the Vendor name from the Request Control ID
201   -- Arguments
202   --   p_request_control_id        p_request_control_id of a request
203   --   x_service_provider          VendorName
204   PROCEDURE GET_SERVICE_PROVIDER(
205         p_request_control_id    IN NUMBER,
206         x_service_provider      OUT NOCOPY VARCHAR2) IS
207   BEGIN
208 	SELECT VENDOR INTO x_service_provider FROM
209 	( SELECT 1 PRIORITY, V.SERVICE_PROVIDER VENDOR
210   	  FROM WSH_ITM_SERVICE_PREFERENCES US1,
211 	  WSH_ITM_VENDOR_SERVICES S, WSH_ITM_VENDORS V,
212   		WSH_ITM_REQUEST_CONTROL RC
213   	  WHERE US1.APPLICATION_ID = RC.APPLICATION_ID AND
214   	        US1.MASTER_ORGANIZATION_ID = RC.MASTER_ORGANIZATION_ID  AND
215   		US1.VENDOR_SERVICE_ID = S.VENDOR_SERVICE_ID AND
216   		S.VENDOR_ID = V.VENDOR_ID AND
217   		US1.ACTIVE_FLAG = 'Y' AND
218   		S.SERVICE_TYPE = RC.SERVICE_TYPE_CODE AND
219   		RC.REQUEST_CONTROL_ID = p_request_control_id
220   	 UNION
221   	 SELECT 2 PRIORITY, V.SERVICE_PROVIDER VENDOR
222   	 FROM WSH_ITM_SERVICE_PREFERENCES US1,
223   		WSH_ITM_VENDOR_SERVICES S, WSH_ITM_VENDORS V,
224   		WSH_ITM_REQUEST_CONTROL RC
225   	 WHERE US1.APPLICATION_ID = RC.APPLICATION_ID AND
226   		US1.MASTER_ORGANIZATION_ID IS NULL AND
227   		US1.VENDOR_SERVICE_ID = S.VENDOR_SERVICE_ID AND
228   		S.VENDOR_ID = V.VENDOR_ID AND
229   		US1.ACTIVE_FLAG = 'Y' AND
230   		S.SERVICE_TYPE = RC.SERVICE_TYPE_CODE AND
231   		RC.REQUEST_CONTROL_ID = p_request_control_id
232   	ORDER BY PRIORITY
233 	) WHERE ROWNUM < 2;
234     EXCEPTION
235 	WHEN NO_DATA_FOUND THEN
236 	   x_service_provider := NULL;
237         WHEN OTHERS THEN
238 	   x_service_provider := NULL;
239   END GET_SERVICE_PROVIDER;
240 
241 --Added in Bug 8916313
242 --===================================================================================================
243    -- Start of comments
244    --
245    -- API Name          : GET_COMPLIANCE_STATUS
246    -- Type              : Public
247    -- Purpose           : Called by OM to get the ITM request control compliance status.
248    -- Pre-reqs          : None
249    -- Function          : This API can be used to get the compliance status of the ITM request control lines
250    --                     In case if multiple request lines are present this will only return the first record
251    --                     found with the matching i/p criteria
252    --                     Before OM inserts a record in Wsh_Itm_Request_Control table, if there exists a record
253    --                     in WIRC table for same order line then OM (OEXVITMB.pls) calls API
254    --                     WSH_ITM_UTIL.Update_process_Flag to update the process_flag value to 4.
255    --                     So, while querying from WIRC table ignore record with process_flag value 4.
256    --
257    -- PARAMETERS        : p_appliciation_id                 i/p Appliciation id
258    --                     p_original_sys_reference          i/p Original system reference
259    --                     p_original_sys_line_reference     i/p Original system line reference
260    --                     x_process_flag                    o/p compliance status.
261    --                     x_request_control_id              o/p request_control_id ,
262    --                     x_request_set_id                  o/p request_set_id  ,
263    --                     x_return_status                   o/p return status
264    -- VERSION          :  current version                   1.0
265    --                     initial version                   1.0
266    -- End of comments
267 --===================================================================================================
268 
269 PROCEDURE  GET_COMPLIANCE_STATUS ( p_appliciation_id  IN NUMBER,
270                             p_original_sys_reference  IN NUMBER,
271                             p_original_sys_line_reference IN NUMBER,
272                             x_process_flag OUT NOCOPY NUMBER,
273                             x_request_control_id OUT NOCOPY NUMBER,
274                             x_request_set_id OUT NOCOPY NUMBER,
275                             x_return_status OUT NOCOPY VARCHAR2)
276 IS
277   l_sql_error   VARCHAR2(2000);
278   l_process_flag NUMBER ;
279   l_request_control_id  NUMBER;
280   l_request_set_id NUMBER  ;
281 
282   --Cursor to get the compliance details of the ITM request lines
283   CURSOR c_get_compliance_details(l_appliciation_id NUMBER,l_original_sys_reference NUMBER ,l_original_sys_line_reference NUMBER) IS
284   SELECT process_flag,
285          request_control_id,
286          request_set_id
287   FROM   wsh_itm_request_control WRC
288   WHERE  wrc.application_id = l_appliciation_id     AND
289          wrc.original_system_reference = l_original_sys_reference  AND
290          wrc.original_system_line_reference  = l_original_sys_line_reference AND
291          wrc.process_flag <> 4;
292 
293   MISSING_INPUT EXCEPTION;
294   INVALID_APPLICATION EXCEPTION;
295 
296 BEGIN
297 
298    --
299    x_return_status := FND_API.G_RET_STS_SUCCESS;
300    oe_debug_pub.add('In the procedure WSH_ITM_UTIL.GET_COMPLIANCE_STATUS');
301    oe_debug_pub.add('p_appliciation_id :' || p_appliciation_id );
302    oe_debug_pub.add('p_original_sys_reference :' || p_original_sys_reference );
303    oe_debug_pub.add('p_original_sys_line_reference :' || p_original_sys_line_reference );
304 
305    IF p_appliciation_id IS NOT NULL THEN
306    --{
307 
308        IF p_appliciation_id = 660 THEN
309        --{
310             IF ( p_original_sys_reference IS NULL OR p_original_sys_line_reference IS NULL ) THEN
311             --{
312                  oe_debug_pub.add('P_original_sys_reference and p_original_sys_line_reference are mandatory parameter for appplication_id 660');
313                  RAISE MISSING_INPUT ;
314             --}
315             END IF;
316 
317             --Get the compliance details of the ITM request lines
318             --API will return compliance data for only first reqest line (in case of multiple lines are present)
319             OPEN c_get_compliance_details(p_appliciation_id,p_original_sys_reference,p_original_sys_line_reference);
320             FETCH c_get_compliance_details INTO l_process_flag , l_request_control_id ,l_request_set_id;
321             CLOSE c_get_compliance_details;
322        --}
323        ELSE
324        --{
325             oe_debug_pub.add('Applciation_id is invalid');
326             RAISE INVALID_APPLICATION;
327        --}
328        END IF;
329    --}
330    ELSE
331    --{
332         oe_debug_pub.add('Application_id is mandatory');
333         RAISE MISSING_INPUT ;
334    --}
335    END IF;
336 
337    x_process_flag := l_process_flag;
338    x_request_control_id := l_request_control_id;
339    x_request_set_id := l_request_set_id;
340 
341    oe_debug_pub.add('End of the procedure WSH_ITM_UTIL.GET_COMPLIANCE_STATUS');
342    --
343   EXCEPTION
344 
345     WHEN INVALID_APPLICATION THEN
346       oe_debug_pub.add('Processing Failed as application_id provided is invalid ');
347       x_return_status := FND_API.G_RET_STS_ERROR;
348 
349     WHEN MISSING_INPUT THEN
350       oe_debug_pub.add('Processing Failed as some mandatory parameters are missing ');
351       x_return_status := FND_API.G_RET_STS_ERROR;
352 
353     WHEN OTHERS THEN
354 
355       IF c_get_compliance_details%ISOPEN THEN
356         CLOSE c_get_compliance_details;
357       END IF;
358       l_sql_error := SQLERRM;
359       oe_debug_pub.add('Processing Failed with an Error');
360       oe_debug_pub.add('The unexpected error is :' || l_sql_error);
361       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
362 
363 END GET_COMPLIANCE_STATUS;
364 
365 END WSH_ITM_UTIL;