[Home] [Help]
PACKAGE BODY: APPS.GMO_DVC_INTG_PVT
Source
1 PACKAGE BODY GMO_DVC_INTG_PVT AS
2 /* $Header: GMOVDVCB.pls 120.4 2005/10/25 01:02 rahugupt noship $ */
3
4
5 -- internal constants used in this package body
6 ACTION_INSERT_RESPONSE CONSTANT VARCHAR2(30) := 'INSERT_RESPONSE';
7 ACTION_UPDATE_RESPONSE CONSTANT VARCHAR2(30) := 'UPDATE_RESPONSE';
8 ACTION_INSERT_REQUEST CONSTANT VARCHAR2(30) := 'INSERT_REQUEST';
9 ACTION_UPDATE_DEVICE_STATUS CONSTANT VARCHAR2(30) := 'UPDATE_DEVICE_STATUS';
10 ACTION_UPDATE_DEVICE_RESPONSE CONSTANT VARCHAR2(30) := 'UPDATE_DEVICE_RESPONSE';
11
12
13 --This procedure would lock the device.
14 procedure LOCK_DEVICE (P_DEVICE_ID IN NUMBER,
15 P_REQUESTER IN NUMBER,
16 P_ORGANIZATION_ID IN NUMBER,
17 X_DEVICE_TYPE OUT NOCOPY VARCHAR2,
18 X_DEVICE_DESC OUT NOCOPY VARCHAR2,
19 X_SUBINVENTORY OUT NOCOPY VARCHAR2,
20 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
21 X_MSG_COUNT OUT NOCOPY NUMBER,
22 X_MSG_DATA OUT NOCOPY VARCHAR2)
23
24 IS PRAGMA AUTONOMOUS_TRANSACTION;
25
26 l_device_name varchar2(30);
27 l_signon_wrk_stn varchar2(100);
28 cursor c_get_device_details is select name from wms_devices_vl where device_id = P_DEVICE_ID;
29
30 BEGIN
31
32 open c_get_device_details;
33 fetch c_get_device_details into l_device_name;
34 close c_get_device_details;
35
36 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
37
38 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_LOCK_DEVICE_MSG');
39 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
40 FND_MESSAGE.SET_TOKEN('DEVICE_NAME',l_device_name);
41 FND_MESSAGE.SET_TOKEN('REQUESTER',P_REQUESTER);
42 FND_MESSAGE.SET_TOKEN('ORGANIZATION_ID',P_ORGANIZATION_ID);
43
44 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.lock_device', FALSE);
45 end if;
46
47 -- call the wms api to lock the device
48 WMS_WCS_DEVICE_GRP.DEVICE_SIGN_ON
49 (
50 P_DEVICE_ID => P_DEVICE_ID,
51 P_DEVICE_NAME => L_DEVICE_NAME,
52 P_EMPLOYEE_ID => P_REQUESTER,
53 P_ORGANIZATION_ID => P_ORGANIZATION_ID,
54 X_DEVICE_TYPE => X_DEVICE_TYPE,
55 X_DEVICE_DESC => X_DEVICE_DESC,
56 X_SUBINVENTORY => X_SUBINVENTORY,
57 X_SIGNON_WRK_STN => l_signon_wrk_stn,
58 X_RETURN_STATUS => X_RETURN_STATUS,
59 X_MSG_COUNT => X_MSG_COUNT,
60 X_MSG_DATA => X_MSG_DATA
61 );
62 COMMIT;
63 EXCEPTION
64 WHEN OTHERS THEN
65 ROLLBACK;
66 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
67 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_UNEXPECTED_DB_ERR');
68 FND_MESSAGE.SET_TOKEN('ERROR_TEXT',SQLERRM);
69 FND_MESSAGE.SET_TOKEN('ERROR_CODE',SQLCODE);
70 FND_MSG_PUB.ADD;
71 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
72 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
73 FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_dvc_intg_pvt.lock_device', FALSE);
74 end if;
75 END LOCK_DEVICE;
76
77 --This procdeure would unlock the device.
78 procedure UNLOCK_DEVICE (P_DEVICE_ID IN NUMBER,
79 P_REQUESTER IN NUMBER,
80 P_ORGANIZATION_ID IN NUMBER,
81 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
82 X_MSG_COUNT OUT NOCOPY NUMBER,
83 X_MSG_DATA OUT NOCOPY VARCHAR2)
84
85
86 IS PRAGMA AUTONOMOUS_TRANSACTION;
87
88 BEGIN
89
90 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
91
92 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_UNLOCK_DEVICE_MSG');
93 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
94 FND_MESSAGE.SET_TOKEN('REQUESTER',P_REQUESTER);
95 FND_MESSAGE.SET_TOKEN('ORGANIZATION_ID',P_ORGANIZATION_ID);
96
97 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.unlock_device', FALSE);
98 end if;
99
100 -- call the wms api to unlock the device
101 WMS_WCS_DEVICE_GRP.SINGLE_DEVICE_SIGN_OFF
102 (
103 P_EMPLOYEE_ID => P_REQUESTER,
104 P_ORG_ID => P_ORGANIZATION_ID,
105 P_DEVICE_ID => P_DEVICE_ID,
106 X_RETURN_STATUS => X_RETURN_STATUS,
107 X_MSG_COUNT => X_MSG_COUNT,
108 X_MSG_DATA => X_MSG_DATA
109 );
110 COMMIT;
111 EXCEPTION
112 WHEN OTHERS THEN
113 ROLLBACK;
114 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
115 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_UNEXPECTED_DB_ERR');
116 FND_MESSAGE.SET_TOKEN('ERROR_TEXT',SQLERRM);
117 FND_MESSAGE.SET_TOKEN('ERROR_CODE',SQLCODE);
118 FND_MSG_PUB.ADD;
119 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
120 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
121 FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_dvc_intg_pvt.unlock_device', FALSE);
122 end if;
123 END UNLOCK_DEVICE;
124
125 -- this is an internal procedure to invoke wms device request api
126 PROCEDURE DEVICE_REQUEST (P_BUS_EVENT IN NUMBER,
127 P_ORG_ID IN NUMBER,
128 P_SUBINV IN VARCHAR2,
129 P_DEVICE_ID IN NUMBER,
130 X_REQUEST_MSG OUT NOCOPY VARCHAR2,
131 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
132 X_MSG_COUNT OUT NOCOPY NUMBER,
133 X_MSG_DATA OUT NOCOPY VARCHAR2,
134 X_REQUEST_ID OUT NOCOPY VARCHAR2)
135
136 IS PRAGMA AUTONOMOUS_TRANSACTION;
137
138 BEGIN
139 WMS_WCS_DEVICE_GRP.DEVICE_REQUEST
140 (
141 P_INIT_MSG_LIST => fnd_api.g_false,
142 P_BUS_EVENT => P_BUS_EVENT,
143 P_CALL_CTX => 'U',
144 P_TASK_TRX_ID => NULL,
145 P_ORG_ID => P_ORG_ID,
146 P_ITEM_ID => -1,
147 P_SUBINV => P_SUBINV,
148 P_LOCATOR_ID => -1,
149 P_LPN_ID => -1,
150 P_XFR_ORG_ID => -1,
151 P_XFR_SUBINV => null,
152 P_XFR_LOCATOR_ID => -1,
153 P_TRX_QTY => -1,
154 P_TRX_UOM => '###',
155 P_REV => '###',
156 X_REQUEST_MSG => X_REQUEST_MSG,
157 X_RETURN_STATUS => X_RETURN_STATUS,
158 X_MSG_COUNT => X_MSG_COUNT,
159 X_MSG_DATA => X_MSG_DATA,
160 P_REQUEST_ID => X_REQUEST_ID,
161 P_DEVICE_ID => P_DEVICE_ID
162 );
163 COMMIT;
164 EXCEPTION
165 WHEN OTHERS THEN
166 ROLLBACK;
167 END DEVICE_REQUEST;
168
169 --This procdeure would clean the data from the temporary tables.
170 procedure TEMP_DATA_CLEANUP (P_CLEANUP_TO_DATE IN DATE DEFAULT NULL,
171 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
172 X_MSG_COUNT OUT NOCOPY NUMBER,
173 X_MSG_DATA OUT NOCOPY VARCHAR2)
174
175 IS
176
177 l_cleanup_to_date date;
178
179 BEGIN
180
181 l_cleanup_to_date := P_CLEANUP_TO_DATE;
182
183 IF (l_cleanup_to_date IS NULL) THEN
184 l_cleanup_to_date := sysdate -2;
185 END IF;
186
187 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
188
189 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_CLEANUP_DATA_MSG');
190 FND_MESSAGE.SET_TOKEN('CLEANUP_TO_DATE',P_CLEANUP_TO_DATE);
191 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.temp_data_cleanup', FALSE);
192 end if;
193
194 DELETE FROM GMO_DEVICE_RESPONSES_T WHERE REQUEST_ID IN
195 (SELECT REQUEST_ID FROM GMO_DEVICE_REQUESTS_T
196 WHERE CREATION_DATE < l_cleanup_to_date );
197
198 DELETE FROM GMO_DEVICE_REQUESTS_T WHERE CREATION_DATE < l_cleanup_to_date;
199
200 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
201
202 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_CLEANUP_SUCCESS_MSG');
203 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.temp_data_cleanup', FALSE);
204 end if;
205
206 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
207 EXCEPTION
208 WHEN OTHERS THEN
209 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
210 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_UNEXPECTED_DB_ERR');
211 FND_MESSAGE.SET_TOKEN('ERROR_TEXT',SQLERRM);
212 FND_MESSAGE.SET_TOKEN('ERROR_CODE',SQLCODE);
213 FND_MSG_PUB.ADD;
214 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
215 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
216 FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_dvc_intg_grp.temp_data_cleanup', FALSE);
217 end if;
218 END TEMP_DATA_CLEANUP;
219
220 -- Internal procedure to insert the device response component for a request
221 -- This procedure is autonoumous as device request and response are in different db sessions
222 -- and we want the request to be available for response
223
224 PROCEDURE POST_RESPONSE (P_ACTION IN VARCHAR2, P_REQUEST_ID IN NUMBER, P_RESP_COMP_CODE IN VARCHAR2, P_RESP_COMP_CODE_VALUE IN VARCHAR2)
225 IS PRAGMA AUTONOMOUS_TRANSACTION;
226 BEGIN
227
228 IF (P_ACTION = ACTION_INSERT_RESPONSE) then
229 insert into gmo_device_responses_t
230 (
231 RESPONSE_ID,
232 REQUEST_ID,
233 RESP_COMP_CODE,
234 RESP_COMP_CODE_VALUE,
235 CREATED_BY,
236 CREATION_DATE,
237 LAST_UPDATED_BY,
238 LAST_UPDATE_LOGIN,
239 LAST_UPDATE_DATE
240 ) values(
241 GMO_DEVICE_RESPONSES_T_S.nextval,
242 P_REQUEST_ID,
243 P_RESP_COMP_CODE,
244 P_RESP_COMP_CODE_VALUE,
245 FND_GLOBAL.USER_ID,
246 sysdate,
247 FND_GLOBAL.USER_ID,
248 FND_GLOBAL.LOGIN_ID,
249 sysdate
250 );
251 ELSIF (P_ACTION = ACTION_UPDATE_RESPONSE) then
252
253 update gmo_device_responses_t set
254 RESP_COMP_CODE_VALUE = P_RESP_COMP_CODE_VALUE,
255 LAST_UPDATED_BY = FND_GLOBAL.USER_ID,
256 LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID,
257 LAST_UPDATE_DATE = sysdate
258 where REQUEST_ID = P_REQUEST_ID
259 and RESP_COMP_CODE = P_RESP_COMP_CODE;
260
261 END IF;
262
263 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
264 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_REQUEST_COMP_OPRN_MSG');
265 FND_MESSAGE.SET_TOKEN('ACTION', P_ACTION);
266 FND_MESSAGE.SET_TOKEN('REQUEST_ID',P_REQUEST_ID);
267 FND_MESSAGE.SET_TOKEN('COMPONENT',P_RESP_COMP_CODE);
268 FND_MESSAGE.SET_TOKEN('COMPONENT_VALUE',P_RESP_COMP_CODE_VALUE);
269 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.post_response', FALSE);
270 end if;
271
272 commit;
273
274 EXCEPTION
275 WHEN OTHERS THEN
276 ROLLBACK;
277 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
278 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_REQUEST_COMP_OPRN_ERR');
279 FND_MESSAGE.SET_TOKEN('ACTION', P_ACTION);
280 FND_MESSAGE.SET_TOKEN('REQUEST_ID',P_REQUEST_ID);
281 FND_MESSAGE.SET_TOKEN('COMPONENT',P_RESP_COMP_CODE);
282 FND_MESSAGE.SET_TOKEN('COMPONENT_VALUE',P_RESP_COMP_CODE_VALUE);
283 FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_dvc_intg_grp.post_response', FALSE);
284 end if;
285 RAISE;
286 END;
287
288 -- Internal procedure to insert the device request
289 -- This procedure is autonoumous as device request and response are in different db sessions
290 -- and we want the request to be available for response
291
292 PROCEDURE POST_REQUEST (P_ACTION IN VARCHAR2, P_REQUEST_ID IN NUMBER, P_DEVICE_ID IN NUMBER, P_REQUESTER IN NUMBER, P_DEVICE_STATUS IN VARCHAR2)
293 IS PRAGMA AUTONOMOUS_TRANSACTION;
294 BEGIN
295
296 IF (P_ACTION = ACTION_INSERT_REQUEST) then
297
298 INSERT INTO GMO_DEVICE_REQUESTS_T (REQUEST_ID, DEVICE_ID, REQUESTER, RESPONSE_STATUS, DEVICE_STATUS, REQUEST_DATE, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN, LAST_UPDATE_DATE)
299 VALUES (P_REQUEST_ID, P_DEVICE_ID, P_REQUESTER, '', P_DEVICE_STATUS, SYSDATE, FND_GLOBAL.USER_ID, SYSDATE, FND_GLOBAL.USER_ID, FND_GLOBAL.LOGIN_ID, SYSDATE);
300
301 ELSIF (P_ACTION = ACTION_UPDATE_DEVICE_STATUS) then
302
303 UPDATE GMO_DEVICE_REQUESTS_T SET
304 DEVICE_STATUS = P_DEVICE_STATUS,
305 LAST_UPDATE_DATE = sysdate,
306 LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID,
307 LAST_UPDATED_BY = FND_GLOBAL.USER_ID
308 WHERE REQUEST_ID = P_REQUEST_ID AND DEVICE_ID = P_DEVICE_ID;
309
310 ELSIF (P_ACTION = ACTION_UPDATE_DEVICE_RESPONSE) then
311 -- update process_device_response
312 UPDATE GMO_DEVICE_REQUESTS_T SET
313 RESPONSE_STATUS = FND_API.G_RET_STS_SUCCESS,
314 LAST_UPDATE_DATE = sysdate,
315 LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID,
316 LAST_UPDATED_BY = FND_GLOBAL.USER_ID
317 WHERE REQUEST_ID = P_REQUEST_ID AND DEVICE_ID = P_DEVICE_ID;
318 END IF;
319
320 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
321 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_REQUEST_OPRN_MSG');
322 FND_MESSAGE.SET_TOKEN('ACTION', P_ACTION);
323 FND_MESSAGE.SET_TOKEN('REQUEST_ID',P_REQUEST_ID);
324 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
325 FND_MESSAGE.SET_TOKEN('REQUESTER',P_REQUESTER);
326 FND_MESSAGE.SET_TOKEN('DEVICE_STATUS',P_DEVICE_STATUS);
327 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.post_request', FALSE);
328 end if;
329
330 commit;
331
332 EXCEPTION
333 WHEN OTHERS THEN
334 ROLLBACK;
335 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
336 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_REQUEST_OPRN_ERR');
337 FND_MESSAGE.SET_TOKEN('ACTION', P_ACTION);
338 FND_MESSAGE.SET_TOKEN('REQUEST_ID',P_REQUEST_ID);
339 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
340 FND_MESSAGE.SET_TOKEN('REQUESTER',P_REQUESTER);
341 FND_MESSAGE.SET_TOKEN('DEVICE_STATUS',P_DEVICE_STATUS);
342 FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_dvc_intg_grp.post_request', FALSE);
343 end if;
344 RAISE;
345 END;
346
347
348 --This procedure reads the device.
349 procedure READ_DEVICE (P_RESOURCE_ID IN NUMBER,
350 P_DEVICE_ID IN NUMBER,
351 P_ORGANIZATION_ID IN NUMBER,
352 P_EVENT_ID IN NUMBER,
353 P_LOCK_UNLOCK IN VARCHAR2 DEFAULT GMO_CONSTANTS_GRP.YES,
354 P_REQUESTER IN NUMBER,
355 P_PARAMETER_ID IN FND_TABLE_OF_VARCHAR2_255,
356 P_PARAMETER_UOM_DEFN IN FND_TABLE_OF_VARCHAR2_255,
357 X_PARAMETER_VALUE OUT NOCOPY FND_TABLE_OF_VARCHAR2_255,
358 X_PARAMETER_UOM OUT NOCOPY FND_TABLE_OF_VARCHAR2_255,
359 X_DEVICE_STATUS OUT NOCOPY VARCHAR2,
360 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
361 X_MSG_COUNT OUT NOCOPY NUMBER,
362 X_MSG_DATA OUT NOCOPY VARCHAR2)
363
364 IS
365 l_msg_component fnd_table_of_varchar2_255;
366 l_param_id number;
367 l_response_code varchar2(30);
368 l_response_uom varchar2(30);
369 l_counter binary_integer;
370 l_param_error varchar2(4000);
371 l_parameter_name varchar2(300);
372 l_parameter_map_err exception;
373 l_response_values fnd_table_of_varchar2_255;
374 l_uom_counter binary_integer;
375 l_value_counter binary_integer;
376
377 l_uom_mismatch_err exception;
378
379
380
381 cursor c_get_msg_component is select RESP_COMP_CODE_VALUE, RESP_COMP_CODE_UOM from gmp_resource_device_messages where resource_id = P_RESOURCE_ID and device_id = P_DEVICE_ID and process_param_id = L_PARAM_ID AND EVENT_ID = P_EVENT_ID;
382 cursor c_get_parameter_details is select parameter_name from gmp_process_parameters where parameter_id = l_param_id;
383 BEGIN
384
385 l_msg_component := fnd_table_of_varchar2_255();
386 l_counter := 0;
387
388 FOR J IN 1..P_PARAMETER_ID.count LOOP
389 l_param_id := P_PARAMETER_ID(J);
390
391 -- get the message components (code, and uom) for the parameter
392 open c_get_msg_component;
393 fetch c_get_msg_component into l_response_code, l_response_uom;
394 close c_get_msg_component;
395
396 -- check if they exist, add them to the list
397 if (l_response_code is not null and l_response_uom is not null) then
398 l_msg_component.extend;
399 l_counter := l_counter + 1;
400 l_msg_component(l_counter) := l_response_code;
401
402 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
403
404 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_READ_COMPONENT_MSG');
405 FND_MESSAGE.SET_TOKEN('COMPONENT',l_response_code);
406 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
407 end if;
408
409 l_msg_component.extend;
410 l_counter := l_counter + 1;
411 l_msg_component(l_counter) := l_response_uom;
412
413 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
414
415 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_READ_COMPONENT_MSG');
416 FND_MESSAGE.SET_TOKEN('COMPONENT',l_response_uom);
417 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
418 end if;
419
420 else
421 -- if the parameter has no message components, create the error parameter list
422 if (l_param_error is not null and length(l_param_error) > 0) then
423 l_param_error := l_param_error || ',';
424 end if;
425 open c_get_parameter_details;
426 fetch c_get_parameter_details into l_parameter_name;
427 close c_get_parameter_details;
428 if (l_parameter_name is null) then
429 l_parameter_name := l_param_id;
430 end if;
431 l_param_error := l_param_error || l_parameter_name;
432 end if;
433
434 END LOOP;
435
436 -- validate if there were any parameters not mapped
437 IF (l_param_error is not null and length(l_param_error) > 0) then
438 raise l_parameter_map_err;
439 end if;
440
441 READ_DEVICE
442 (
443 P_DEVICE_ID => P_DEVICE_ID,
444 P_ORGANIZATION_ID => P_ORGANIZATION_ID,
445 P_EVENT_ID => P_EVENT_ID,
446 P_LOCK_UNLOCK => P_LOCK_UNLOCK,
447 P_REQUESTER => P_REQUESTER,
448 P_MSG_COMPONENT => L_MSG_COMPONENT,
449 X_VALUE => l_response_values,
450 X_DEVICE_STATUS => X_DEVICE_STATUS ,
451 X_RETURN_STATUS => X_RETURN_STATUS,
452 X_MSG_COUNT => X_MSG_COUNT ,
453 X_MSG_DATA => X_MSG_DATA
454 );
455
456 X_PARAMETER_UOM := fnd_table_of_varchar2_255();
457 X_PARAMETER_VALUE := fnd_table_of_varchar2_255();
458
459 IF (X_RETURN_STATUS = FND_API.G_RET_STS_SUCCESS) THEN
460
461 l_uom_counter := 0;
462 l_value_counter := 0;
463
464 FOR K IN 1..l_response_values.count LOOP
465 -- when we added the message components, code was added first
466 -- and then uom, so all odd elements are value for code
467 -- and all even element are value for parameter UOM
468 IF (MOD(K,2) = 0) THEN
469 l_uom_counter := l_uom_counter + 1;
470 X_PARAMETER_UOM.extend;
471 X_PARAMETER_UOM(l_uom_counter) := l_response_values(K);
472 else
473 l_value_counter := l_value_counter + 1;
474 X_PARAMETER_VALUE.extend;
475 X_PARAMETER_VALUE(l_value_counter) := l_response_values(K);
476 END IF;
477 END LOOP;
478
479 l_param_error := '';
480
481 -- validate if the parameter definition uom are passed
482 -- if yes match them against the device uom
483
484 IF (P_PARAMETER_UOM_DEFN is not null and P_PARAMETER_UOM_DEFN.count > 0) THEN
485 FOR I IN 1..P_PARAMETER_UOM_DEFN.count LOOP
486
487 IF (P_PARAMETER_UOM_DEFN(I) <> X_PARAMETER_UOM(I)) THEN
488
489 if (l_param_error is not null and length(l_param_error) > 0) then
490 l_param_error := l_param_error || ',';
491 end if;
492
493 l_param_id := P_PARAMETER_ID(I);
494
495 open c_get_parameter_details;
496 fetch c_get_parameter_details into l_parameter_name;
497 close c_get_parameter_details;
498
499 if (l_parameter_name is null) then
500 l_parameter_name := l_param_id;
501 end if;
502
503 l_param_error := l_param_error || l_parameter_name;
504
505 END IF;
506
507 END LOOP;
508 END IF;
509
510 IF (l_param_error is not null and length(l_param_error) > 0) then
511 raise l_uom_mismatch_err;
512 end if;
513
514 end if;
515
516 EXCEPTION
517 WHEN L_PARAMETER_MAP_ERR THEN
518 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
519 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_PARAM_MAP_ERR');
520 FND_MESSAGE.SET_TOKEN('PARAMS',l_param_error);
521 FND_MSG_PUB.ADD;
522 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
523 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
524 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
525 end if;
526 -- APP_EXCEPTION.RAISE_EXCEPTION;
527 WHEN L_UOM_MISMATCH_ERR THEN
528 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
529 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_PARAM_UOM_MISMATCH_ERR');
530 FND_MESSAGE.SET_TOKEN('PARAMS',l_param_error);
531 FND_MSG_PUB.ADD;
532 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
533 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
534 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
535 end if;
536 -- APP_EXCEPTION.RAISE_EXCEPTION;
537 WHEN OTHERS THEN
538 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
539 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_UNEXPECTED_DB_ERR');
540 FND_MESSAGE.SET_TOKEN('ERROR_TEXT',SQLERRM);
541 FND_MESSAGE.SET_TOKEN('ERROR_CODE',SQLCODE);
542 FND_MSG_PUB.ADD;
543 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
544 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
545 FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_dvc_intg_grp.batchstep_material_available', FALSE);
546 end if;
547 -- APP_EXCEPTION.RAISE_EXCEPTION;
548 END READ_DEVICE;
549
550 --This procedure reads the device.
551 procedure READ_DEVICE (P_DEVICE_ID IN NUMBER,
552 P_ORGANIZATION_ID IN NUMBER,
553 P_EVENT_ID IN NUMBER,
554 P_LOCK_UNLOCK IN VARCHAR2 DEFAULT GMO_CONSTANTS_GRP.YES,
555 P_REQUESTER IN NUMBER,
556 P_MSG_COMPONENT IN FND_TABLE_OF_VARCHAR2_255,
557 X_VALUE OUT NOCOPY FND_TABLE_OF_VARCHAR2_255,
558 X_DEVICE_STATUS OUT NOCOPY VARCHAR2,
559 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
560 X_MSG_COUNT OUT NOCOPY NUMBER,
561 X_MSG_DATA OUT NOCOPY VARCHAR2)
562
563 IS
564
565 l_wcs_enabled varchar2(1);
566 l_wcs_disabled_err exception;
567 l_device_op_method_err exception;
568 l_org_code varchar2(3);
569 l_output_method varchar2(30);
570 l_output_method_id varchar2(30);
571 l_device_name varchar2(100);
572 l_device_type varchar2(100);
573 l_device_desc varchar2(100);
574 l_subinventory varchar2(30);
575 l_return_status varchar2(10);
576 l_msg_count number;
577 l_msg_data varchar2(4000);
578 l_lock_device_err exception;
579 l_unlock_device_err exception;
580 l_request_id number;
581 l_read_device_err exception;
582 l_response_code varchar2(300);
583 l_response_value varchar2(4000);
584 l_profile_value varchar2(300);
585 l_request_msg varchar2(4000);
586 l_request_start_date date;
587 l_request_current_date date;
588 l_timeout_profile_value number;
589 l_request_exec_time number;
590 l_response_status varchar2(300);
591 L_DEVICE_RESPONSE_ERR exception;
592 L_DEVICE_REQUEST_END boolean;
593 L_TIMEOUT_ERR exception;
594 l_device_subinv_err exception;
595
596 l_is_device_locked boolean;
597
598 l_no_msg_components_err exception;
599 cursor c_get_org_details is select organization_code from mtl_parameters where organization_id = P_ORGANIZATION_ID;
600 cursor c_get_device_details is select output_method, output_method_id, name, subinventory_code from wms_devices_vl where device_id = P_DEVICE_ID;
601 cursor c_get_device_response is select RESP_COMP_CODE_VALUE from gmo_device_responses_t where request_id = l_request_id and RESP_COMP_CODE = l_response_code;
602
603
604
605 BEGIN
606 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
607
608 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_READ_DEVICE_MSG');
609 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
610 FND_MESSAGE.SET_TOKEN('ORGANIZATION_ID',P_ORGANIZATION_ID);
611 FND_MESSAGE.SET_TOKEN('REQUESTER',P_REQUESTER);
612 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
613 end if;
614
615 -- validate if any message components were passed
616 IF (P_MSG_COMPONENT is null or P_MSG_COMPONENT.COUNT = 0) THEN
617 raise l_no_msg_components_err;
618 END IF;
619
620 l_wcs_enabled := WMS_WCS_DEVICE_GRP.IS_WCS_ENABLED (P_ORGANIZATION_ID);
621
622 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
623
624 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_WCS_ORG_ENABLED_MSG');
625 FND_MESSAGE.SET_TOKEN('ORGANIZATION_ID',P_ORGANIZATION_ID);
626 FND_MESSAGE.SET_TOKEN('ENABLED_FLAG',l_wcs_enabled);
627 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
628 end if;
629
630 -- check if the organization is wcs enabled
631 -- this is required from wms architecture perspective
632
633 if (nvl (l_wcs_enabled, GMO_CONSTANTS_GRP.NO) = GMO_CONSTANTS_GRP.NO) then
634
635 open c_get_org_details;
636 fetch c_get_org_details into l_org_code;
637 close c_get_org_details;
638
639 raise l_wcs_disabled_err;
640 end if;
641
642 open c_get_device_details;
643 fetch c_get_device_details into l_output_method, l_output_method_id, l_device_name, l_subinventory;
644 close c_get_device_details;
645
646 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
647
648 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_OUTPUT_METHOD_MSG');
649 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
650 FND_MESSAGE.SET_TOKEN('DEVICE',l_device_name);
651 FND_MESSAGE.SET_TOKEN('OUTPUT_METHOD',l_output_method);
652 FND_MESSAGE.SET_TOKEN('OUTPUT_METHOD_ID',l_output_method_id);
653 FND_MESSAGE.SET_TOKEN('SUBINVENTORY', l_subinventory);
654 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
655 end if;
656
657 -- for device response, the output method should always be API (outputmethod id 2).
658 if (l_output_method_id <> '2') then
659 raise l_device_op_method_err;
660 end if;
661
662 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
663
664 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_REQUEST_ID_MSG');
665 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
666 FND_MESSAGE.SET_TOKEN('REQUEST_ID',l_request_id);
667 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
668 end if;
669
670
671
672 if (P_LOCK_UNLOCK = GMO_CONSTANTS_GRP.YES) THEN
673 l_is_device_locked := true;
674 LOCK_DEVICE (P_DEVICE_ID => P_DEVICE_ID,
675 P_REQUESTER => P_REQUESTER,
676 P_ORGANIZATION_ID => P_ORGANIZATION_ID,
677 X_DEVICE_TYPE => l_device_type,
678 X_DEVICE_DESC => l_device_desc,
679 X_SUBINVENTORY => l_subinventory,
680 X_RETURN_STATUS => l_return_status,
681 X_MSG_COUNT => l_msg_count,
682 X_MSG_DATA => l_msg_data);
683 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
684 RAISE L_LOCK_DEVICE_ERR;
685 end if;
686 end if;
687
688 -- validate the device is associated to a subinventory.
689 if (l_subinventory is null or length(l_subinventory) = 0) then
690 raise l_device_subinv_err;
691 end if;
692
693 select sysdate into l_request_start_date from dual;
694
695
696 DEVICE_REQUEST
697 (
698 P_BUS_EVENT => p_event_id, -- business event id 18 or 19
699 P_ORG_ID => p_organization_id, -- organization id
700 P_SUBINV => l_subinventory, -- it will have the device sub inventory
701 P_DEVICE_ID => p_device_id, -- device id
702 X_REQUEST_MSG => l_request_msg, -- out parameter
703 X_RETURN_STATUS => l_return_status, -- out parameter
704 X_MSG_COUNT => l_msg_count, -- out parameter
705 X_MSG_DATA => l_msg_data, -- out parameter
706 X_REQUEST_ID => l_request_id -- out parameter
707 );
708
709 POST_REQUEST (P_ACTION => ACTION_INSERT_REQUEST, P_REQUEST_ID => l_request_id, P_DEVICE_ID => P_DEVICE_ID , P_REQUESTER => P_REQUESTER , P_DEVICE_STATUS => '');
710
711 FOR I IN 1..P_MSG_COMPONENT.count LOOP
712 POST_RESPONSE (P_ACTION => ACTION_INSERT_RESPONSE, P_REQUEST_ID => l_request_id, P_RESP_COMP_CODE => P_MSG_COMPONENT(I), P_RESP_COMP_CODE_VALUE => '');
713 END LOOP;
714
715 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
716 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_READ_DEVICE_STATUS_MSG');
717 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
718 FND_MESSAGE.SET_TOKEN('DEVICE_STATUS',l_return_status);
719 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
720 end if;
721
722 POST_REQUEST (P_ACTION => ACTION_UPDATE_DEVICE_STATUS, P_REQUEST_ID => l_request_id, P_DEVICE_ID => P_DEVICE_ID , P_REQUESTER => P_REQUESTER , P_DEVICE_STATUS => l_return_status);
723 X_DEVICE_STATUS := l_return_status;
724
725 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
726 RAISE l_read_device_err;
727 end if;
728
729 L_DEVICE_REQUEST_END := FALSE;
730
731 l_timeout_profile_value := -1;
732 l_profile_value := fnd_profile.value(NAME => 'GMO_DVC_READ_TIMEOUT');
733 if (l_profile_value is not null) then
734 l_timeout_profile_value := to_number(l_profile_value);
735 end if;
736
737 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
738
739 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_TIMEOUT_VALUE_MSG');
740 FND_MESSAGE.SET_TOKEN('TIMEOUT',l_profile_value);
741 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
742 end if;
743
744
745 -- we will loop till the response is recevied or timeout (based on profile) has reached.
746
747 WHILE NOT L_DEVICE_REQUEST_END LOOP
748
749 select sysdate into l_request_current_date from dual;
750 l_request_exec_time := (l_request_current_date - l_request_start_date)*24*60*60;
751
752 select RESPONSE_STATUS into l_response_status from gmo_device_requests_t where request_id = l_request_id;
753
754 if (l_response_status is not null) then
755 L_DEVICE_REQUEST_END := TRUE;
756
757 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
758 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_RESPONSE_RECD_MSG');
759 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
760 end if;
761
762 IF (l_response_status <> FND_API.G_RET_STS_SUCCESS) THEN
763 RAISE L_DEVICE_RESPONSE_ERR;
764 END IF;
765 elsif (l_timeout_profile_value > -1 and l_request_exec_time > l_timeout_profile_value) then
766 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
767 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_READ_TIMEOUT_MSG');
768 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
769 end if;
770 L_DEVICE_REQUEST_END := TRUE;
771
772 raise l_timeout_err;
773 end if;
774
775 END LOOP;
776
777 X_VALUE := fnd_table_of_varchar2_255();
778
779 if (P_LOCK_UNLOCK = GMO_CONSTANTS_GRP.YES) THEN
780 UNLOCK_DEVICE(P_DEVICE_ID => P_DEVICE_ID,
781 P_REQUESTER => P_REQUESTER,
782 P_ORGANIZATION_ID => P_ORGANIZATION_ID,
783 X_RETURN_STATUS => l_return_status,
784 X_MSG_COUNT => l_msg_count,
785 X_MSG_DATA => l_msg_data);
786 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
787 RAISE L_UNLOCK_DEVICE_ERR;
788 end if;
789 end if;
790
791 FOR K IN 1..P_MSG_COMPONENT.count LOOP
792 l_response_code := P_MSG_COMPONENT(K);
793 open c_get_device_response;
794 fetch c_get_device_response into l_response_value;
795 close c_get_device_response;
796
797 X_VALUE.extend;
798 X_VALUE(K) := l_response_value;
799
800 END LOOP;
801
802 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
803
804 EXCEPTION
805 WHEN L_NO_MSG_COMPONENTS_ERR THEN
806 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
807 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_NO_MSG_COMP_ERR');
808 FND_MSG_PUB.ADD;
809 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
810 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
811 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
812 end if;
813 -- APP_EXCEPTION.RAISE_EXCEPTION;
814 WHEN L_WCS_DISABLED_ERR THEN
815 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
816 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_WCS_DISABLED_ORG_ERR');
817 FND_MESSAGE.SET_TOKEN('ORGN',L_ORG_CODE);
818 FND_MSG_PUB.ADD;
819 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
820 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
821 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
822 end if;
823 -- APP_EXCEPTION.RAISE_EXCEPTION;
824 WHEN L_DEVICE_OP_METHOD_ERR THEN
825 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
826 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_OUTPUT_METHOD_ERR');
827 FND_MESSAGE.SET_TOKEN('DEVICE',L_DEVICE_NAME);
828 FND_MSG_PUB.ADD;
829 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
830 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
831 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
832 end if;
833 -- APP_EXCEPTION.RAISE_EXCEPTION;
834 WHEN L_LOCK_DEVICE_ERR THEN
835 if (l_is_device_locked = true) then
836 UNLOCK_DEVICE(P_DEVICE_ID => P_DEVICE_ID, P_REQUESTER => P_REQUESTER, P_ORGANIZATION_ID => P_ORGANIZATION_ID,
837 X_RETURN_STATUS => l_return_status, X_MSG_COUNT => l_msg_count, X_MSG_DATA => l_msg_data);
838 end if;
839 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
840 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_LOCK_DEVICE_ERR');
841 FND_MESSAGE.SET_TOKEN('DEVICE',L_DEVICE_NAME);
842 FND_MSG_PUB.ADD;
843 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
844 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
845 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
846 end if;
847 -- APP_EXCEPTION.RAISE_EXCEPTION;
848 WHEN l_device_subinv_err THEN
849 if (l_is_device_locked = true) then
850 UNLOCK_DEVICE(P_DEVICE_ID => P_DEVICE_ID, P_REQUESTER => P_REQUESTER, P_ORGANIZATION_ID => P_ORGANIZATION_ID,
851 X_RETURN_STATUS => l_return_status, X_MSG_COUNT => l_msg_count, X_MSG_DATA => l_msg_data);
852 end if;
853 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
854 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_SUBINV_DEVICE_ERR');
855 FND_MESSAGE.SET_TOKEN('DEVICE',L_DEVICE_NAME);
856 FND_MSG_PUB.ADD;
857 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
858 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
859 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
860 end if;
861 -- APP_EXCEPTION.RAISE_EXCEPTION;
862 WHEN L_READ_DEVICE_ERR THEN
863 if (l_is_device_locked = true) then
864 UNLOCK_DEVICE(P_DEVICE_ID => P_DEVICE_ID, P_REQUESTER => P_REQUESTER, P_ORGANIZATION_ID => P_ORGANIZATION_ID,
865 X_RETURN_STATUS => l_return_status, X_MSG_COUNT => l_msg_count, X_MSG_DATA => l_msg_data);
866 end if;
867 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
868 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_READ_DEVICE_ERR');
869 FND_MESSAGE.SET_TOKEN('DEVICE',L_DEVICE_NAME);
870 FND_MSG_PUB.ADD;
871 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
872 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
873 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
874 end if;
875 -- APP_EXCEPTION.RAISE_EXCEPTION;
876 WHEN L_TIMEOUT_ERR THEN
877 if (l_is_device_locked = true) then
878 UNLOCK_DEVICE(P_DEVICE_ID => P_DEVICE_ID, P_REQUESTER => P_REQUESTER, P_ORGANIZATION_ID => P_ORGANIZATION_ID,
879 X_RETURN_STATUS => l_return_status, X_MSG_COUNT => l_msg_count, X_MSG_DATA => l_msg_data);
880 end if;
881 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
882 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_READ_TIMEOUT_ERR');
883 FND_MESSAGE.SET_TOKEN('DEVICE',L_DEVICE_NAME);
884 FND_MSG_PUB.ADD;
885 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
886 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
887 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
888 end if;
889 -- APP_EXCEPTION.RAISE_EXCEPTION;
890 WHEN L_DEVICE_RESPONSE_ERR THEN
891 if (l_is_device_locked = true) then
892 UNLOCK_DEVICE(P_DEVICE_ID => P_DEVICE_ID, P_REQUESTER => P_REQUESTER, P_ORGANIZATION_ID => P_ORGANIZATION_ID,
893 X_RETURN_STATUS => l_return_status, X_MSG_COUNT => l_msg_count, X_MSG_DATA => l_msg_data);
894 end if;
895 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
896 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_RESPONSE_ERR');
897 FND_MESSAGE.SET_TOKEN('DEVICE',L_DEVICE_NAME);
898 FND_MSG_PUB.ADD;
899 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
900 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
901 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
902 end if;
903 -- APP_EXCEPTION.RAISE_EXCEPTION;
904 WHEN L_UNLOCK_DEVICE_ERR THEN
905 if (l_is_device_locked = true) then
906 UNLOCK_DEVICE(P_DEVICE_ID => P_DEVICE_ID, P_REQUESTER => P_REQUESTER, P_ORGANIZATION_ID => P_ORGANIZATION_ID,
907 X_RETURN_STATUS => l_return_status, X_MSG_COUNT => l_msg_count, X_MSG_DATA => l_msg_data);
908 end if;
909 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
910 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_UNLOCK_DEVICE_ERR');
911 FND_MESSAGE.SET_TOKEN('DEVICE',L_DEVICE_NAME);
912 FND_MSG_PUB.ADD;
913 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
914 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
915 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
916 end if;
917 -- APP_EXCEPTION.RAISE_EXCEPTION;
918 WHEN OTHERS THEN
919 if (l_is_device_locked = true) then
920 UNLOCK_DEVICE(P_DEVICE_ID => P_DEVICE_ID, P_REQUESTER => P_REQUESTER, P_ORGANIZATION_ID => P_ORGANIZATION_ID,
921 X_RETURN_STATUS => l_return_status, X_MSG_COUNT => l_msg_count, X_MSG_DATA => l_msg_data);
922 end if;
923 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
924 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_UNEXPECTED_DB_ERR');
925 FND_MESSAGE.SET_TOKEN('ERROR_TEXT',SQLERRM);
926 FND_MESSAGE.SET_TOKEN('ERROR_CODE',SQLCODE);
927 FND_MSG_PUB.ADD;
928 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
929 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
930 FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_dvc_intg_grp.read_device', FALSE);
931 end if;
932 -- APP_EXCEPTION.RAISE_EXCEPTION;
933 END READ_DEVICE;
934
935
936 --This procedure would process the device response
937 PROCEDURE PROCESS_DEVICE_RESPONSE ( P_REQUEST_ID IN NUMBER,
938 P_DEVICE_ID IN NUMBER,
939 P_PARAM_VALUES_RECORD IN WMS_WCS_DEVICE_GRP.MSG_COMPONENT_LOOKUP_TYPE,
940 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
941 X_MSG_COUNT OUT NOCOPY NUMBER,
942 X_MSG_DATA OUT NOCOPY VARCHAR2)
943
944 IS
945
946 l_count number;
947 l_request_not_found_err exception;
948
949 BEGIN
950
951 if (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
952 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_PROCESS_RESPONSE_MSG');
953 FND_MESSAGE.SET_TOKEN('REQUEST_ID',P_REQUEST_ID);
954 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
955 FND_LOG.MESSAGE(FND_LOG.LEVEL_EVENT,'gmo.plsql.gmo_dvc_intg_pvt.read_device', FALSE);
956 end if;
957
958 select count(*) into l_count from GMO_DEVICE_REQUESTS_T WHERE REQUEST_ID = P_REQUEST_ID AND DEVICE_ID = P_DEVICE_ID;
959
960 if (l_count = 0) then
961 raise l_request_not_found_err;
962 end if;
963
964 -- the P_RESP_COMP_CODE is based on the lookup type WMS_DEVICE_MSG_COMPONENTS,
965 -- which was used during resource-device mapping
966
967 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'1' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.ORGANIZATION);
968 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'2' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.ORDER_NUMBER);
969 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'3' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.ITEM);
970 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'4' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.BUSINESS_EVENT);
971 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'10' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.LPN);
972 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'11' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.LOT);
973 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'12' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.UOM);
974 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'13' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.CYCLE_COUNT_ID);
975 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'14' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.QUANTITY);
976 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'15' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.REQUESTED_QUANTITY);
977 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'16' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.WEIGHT);
978 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'17' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.WEIGHT_UOM_CODE);
979 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'18' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.VOLUME);
980 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'19' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.VOLUME_UOM_CODE);
981 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'20' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.LENGTH);
982 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'21' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.WIDTH);
983 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'22' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.HEIGHT);
984 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'23' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DIMENSIONAL_WEIGHT);
985 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'24' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DIMENSIONAL_WEIGHT_FACTOR);
986 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'25' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.NET_WEIGHT);
987 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'26' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.RECEIVED_REQUEST_DATE_AND_TIME);
988 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'27' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.MEASUREMENT_DATE_AND_TIME);
989 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'28' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.RESPONSE_DATE_AND_TIME);
990 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'29' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.TEMPERATURE);
991 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'30' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.TEMPERATURE_UOM);
992 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'31' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.REASON_ID);
993 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'32' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.REASON_TYPE);
994 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'33' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.SENSOR_MEASUREMENT_TYPE);
995 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'34' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.VALUE);
996 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'35' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.QUALITY);
997 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'36' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.OPC_VARIANT_CODE);
998 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'37' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.EPC);
999 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'38' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.UNUSED);
1000 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'39' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.BATCH);
1001 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'40' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_1);
1002 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'41' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_2);
1003 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'42' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_3);
1004 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'43' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_4);
1005 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'44' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_5);
1006 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'45' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_6);
1007 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'46' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_7);
1008 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'47' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_8);
1009 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'48' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_9);
1010 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'49' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_COMPONENT_10);
1011 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'50' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.RELATION_ID);
1012 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'51' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.TASK_ID);
1013 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'52' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.TASK_SUMMARY);
1014 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'53' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.ORGANIZATION_ID);
1015 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'54' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.INVENTORY_ITEM_ID);
1016 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'55' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DEVICE_STATUS);
1017 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'56' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.TRANSFER_LPN_ID);
1018 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'57' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DESTINATION_SUBINVENTORY);
1019 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'58' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.DESTINATION_LOCATOR_ID);
1020 POST_RESPONSE (P_ACTION => ACTION_UPDATE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_RESP_COMP_CODE =>'59' , P_RESP_COMP_CODE_VALUE => P_PARAM_VALUES_RECORD.SOURCE_LOCATOR_ID);
1021
1022 -- update process_device_response
1023 POST_REQUEST (P_ACTION => ACTION_UPDATE_DEVICE_RESPONSE, P_REQUEST_ID => P_REQUEST_ID, P_DEVICE_ID => P_DEVICE_ID , P_REQUESTER => FND_GLOBAL.USER_ID , P_DEVICE_STATUS => '');
1024
1025 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
1026
1027 EXCEPTION
1028 WHEN L_REQUEST_NOT_FOUND_ERR THEN
1029 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
1030 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_REQUEST_FOR_RESP_ERR');
1031 FND_MESSAGE.SET_TOKEN('REQUEST_ID',P_REQUEST_ID);
1032 FND_MESSAGE.SET_TOKEN('DEVICE_ID',P_DEVICE_ID);
1033 FND_MSG_PUB.ADD;
1034 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1035 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1036 FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_dvc_intg_grp.process_device_response', FALSE);
1037 end if;
1038 WHEN OTHERS THEN
1039 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
1040 FND_MESSAGE.SET_NAME('GMO','GMO_DVC_UNEXPECTED_DB_ERR');
1041 FND_MESSAGE.SET_TOKEN('ERROR_TEXT',SQLERRM);
1042 FND_MESSAGE.SET_TOKEN('ERROR_CODE',SQLCODE);
1043 FND_MSG_PUB.ADD;
1044 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1045 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1046 FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_dvc_intg_grp.process_device_response', FALSE);
1047 end if;
1048 END PROCESS_DEVICE_RESPONSE;
1049
1050 END GMO_DVC_INTG_PVT;