[Home] [Help]
PACKAGE BODY: APPS.WMS_EXPRESS_PICK_TASK
Source
1 PACKAGE BODY WMS_EXPRESS_PICK_TASK AS
2 /* $Header: WMSEXPTB.pls 120.1 2005/10/11 11:28:40 methomas noship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'WMS_EXPRESS_PICK_TASK';
5
6 PROCEDURE MYDEBUG(MSG IN VARCHAR2) IS
7
8 L_MSG VARCHAR2(5100);
9 L_TS VARCHAR2(30);
10
11 l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
12 BEGIN
13
14 L_MSG := MSG;
15
16 INV_MOBILE_HELPER_FUNCTIONS.TRACELOG(
17 P_ERR_MSG => L_MSG,
18 P_MODULE => 'WMS_EXPRESS_PICK_TASK',
19 P_LEVEL => 4
20 );
21
22 -- DBMS_OUTPUT.PUT_LINE(L_MSG);
23
24 END;
25
26 /*
27 * Calls label printing API for the passed transaction temp Id
28 * The process should go through fine even if Label printing
29 * fails
30 */
31 PROCEDURE PRINT_LABEL(
32 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
33 X_MSG_COUNT OUT NOCOPY NUMBER,
34 X_MSG_DATA OUT NOCOPY VARCHAR2,
35 P_TEMP_ID IN NUMBER
36 ) IS
37 L_TRANSACTION_TYPE_ID NUMBER;
38 L_TRANSACTION_SOURCE_TYPE_ID NUMBER;
39 L_BUSINESS_FLOW_CODE NUMBER := INV_LABEL.WMS_BF_PICK_LOAD;
40 L_LABEL_STATUS VARCHAR2(100);
41
42 l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
43 BEGIN
44
45 IF (l_debug = 1) THEN
46 MYDEBUG('IN PROCEDURE PRINT_LABEL');
47 END IF;
48
49 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
50
51 SELECT TRANSACTION_TYPE_ID,
52 TRANSACTION_SOURCE_TYPE_ID
53 INTO L_TRANSACTION_TYPE_ID,
54 L_TRANSACTION_SOURCE_TYPE_ID
55 FROM MTL_MATERIAL_TRANSACTIONS_TEMP
56 WHERE TRANSACTION_TEMP_ID = P_TEMP_ID;
57
58 IF L_TRANSACTION_TYPE_ID = 52 THEN
59 -- Picking for sales order
60
61 L_BUSINESS_FLOW_CODE := INV_LABEL.WMS_BF_PICK_LOAD;
62
63 ELSIF L_TRANSACTION_TYPE_ID = 35 THEN
64 -- WIP issue
65
66 L_BUSINESS_FLOW_CODE := INV_LABEL.WMS_BF_WIP_PICK_LOAD;
67
68 ELSIF L_TRANSACTION_TYPE_ID = 51 AND L_TRANSACTION_SOURCE_TYPE_ID = 13 THEN
69 --Backflush
70
71 L_BUSINESS_FLOW_CODE := INV_LABEL.WMS_BF_WIP_PICK_LOAD;
72
73 ELSIF L_TRANSACTION_TYPE_ID = 64 AND L_TRANSACTION_SOURCE_TYPE_ID = 4 THEN
74 --Replenishment
75
76 L_BUSINESS_FLOW_CODE := INV_LABEL.WMS_BF_PICK_LOAD;
77
78 END IF;
79
80 INV_LABEL.PRINT_LABEL_WRAP(
81 X_RETURN_STATUS => X_RETURN_STATUS,
82 X_MSG_COUNT => X_MSG_COUNT,
83 X_MSG_DATA => X_MSG_DATA,
84 X_LABEL_STATUS => L_LABEL_STATUS,
85 P_BUSINESS_FLOW_CODE => L_BUSINESS_FLOW_CODE,
86 P_TRANSACTION_ID => P_TEMP_ID
87 );
88
89 IF (l_debug = 1) THEN
90 MYDEBUG('PRINT_LABEL : ' ||X_RETURN_STATUS||' LABEL:'||L_LABEL_STATUS);
91 END IF;
92
93 EXCEPTION
94 WHEN FND_API.G_EXC_ERROR THEN
95
96 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
97 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
98
99 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
100
101 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
102 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
103
104 WHEN OTHERS THEN
105
106 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
107 IF FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
108 FND_MSG_PUB.ADD_EXC_MSG( g_pkg_name, 'PRINT_LABEL');
109 END IF;
110 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
111
112 END PRINT_LABEL;
113
114 PROCEDURE HAS_EXPRESS_PICK_TASKS(
115 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
116 X_MSG_COUNT OUT NOCOPY NUMBER,
117 X_MSG_DATA OUT NOCOPY VARCHAR2,
118 P_USER_ID IN NUMBER,
119 P_ORG_ID IN NUMBER
120 ) IS
121
122 L_DUMMY NUMBER := 0;
123
124 l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
125 BEGIN
126
127 BEGIN
128
129 SELECT 1
130 INTO L_DUMMY
131 FROM WMS_DISPATCHED_TASKS
132 WHERE PERSON_ID = P_USER_ID
133 AND ORGANIZATION_ID = P_ORG_ID
134 AND TASK_TYPE IN (1, 3, 4)
135 AND STATUS <= 3
136 AND IS_EXPRESS_PICK_TASK(TASK_ID) = 'S'
137 AND ROWNUM < 2;
138
139 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
140
141 EXCEPTION
142 WHEN NO_DATA_FOUND THEN
143 RAISE FND_API.G_EXC_ERROR;
144 END;
145
146 EXCEPTION
147
148 WHEN FND_API.G_EXC_ERROR THEN
149
150 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
151 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
152
153 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
154
155 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
156 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
157
158 WHEN OTHERS THEN
159
160 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
161 IF FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
162 FND_MSG_PUB.ADD_EXC_MSG( g_pkg_name, 'HAS_EXPRESS_PICK_TASKS');
163 END IF;
164 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
165
166 END HAS_EXPRESS_PICK_TASKS;
167
168 FUNCTION IS_EXPRESS_PICK_TASK(
169 P_TASK_ID IN NUMBER
170 ) RETURN VARCHAR2 IS
171
172 X_RETURN_STATUS VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
173
174 l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
175 BEGIN
176
177 SELECT IS_EXPRESS_PICK_TASK_ELIGIBLE(WDT.TRANSACTION_TEMP_ID)
178 INTO X_RETURN_STATUS
179 FROM WMS_DISPATCHED_TASKS WDT
180 WHERE WDT.TASK_ID = P_TASK_ID;
181
182 RETURN X_RETURN_STATUS;
183
184 EXCEPTION
185
186 WHEN FND_API.G_EXC_ERROR THEN
187
188 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
189 RETURN X_RETURN_STATUS;
190
191 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
192
193 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
194 RETURN X_RETURN_STATUS;
195
196 WHEN OTHERS THEN
197
198 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
199 RETURN X_RETURN_STATUS;
200
201 END IS_EXPRESS_PICK_TASK;
202
203 FUNCTION IS_EXPRESS_PICK_TASK_ELIGIBLE(
204 P_TRANSACTION_TEMP_ID IN NUMBER
205 ) RETURN VARCHAR2 IS
206
207 X_RETURN_STATUS VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
208 L_SERIAL_CODE NUMBER := 1;
209 L_LOT_CODE NUMBER := 1;
210 L_DUMMY NUMBER := 1;
211 L_IS_BULK_PICK NUMBER := 0;
212 l_allocated_lpn_id NUMBER;
213
214 -- Start of Bugfix 2244633
215 l_api_version_number CONSTANT NUMBER := 1.0;
216 l_init_msg_lst VARCHAR2(10) := fnd_api.g_false;
217 l_return_status VARCHAR2(10);
218 l_msg_count NUMBER;
219 l_msg_data VARCHAR2(5000);
220 l_organization_id NUMBER;
221 l_inventory_item_id NUMBER;
222 l_is_revision_control VARCHAR2(5) := 'false';
223 l_is_lot_control VARCHAR2(5) := 'false';
224 l_is_serial_control VARCHAR2(5) := 'false';
225 l_revision VARCHAR2(30);
226 -- Increased lot size to 80 Char - Mercy Thomas - B4625329
227 l_lot_number VARCHAR2(80);
228 l_transaction_quantity NUMBER;
229 l_transaction_uom VARCHAR2(10);
230 l_subinventory_code VARCHAR2(10);
231 l_locator_id NUMBER;
232 l_revision_control_code NUMBER;
233 l_lot_control_code NUMBER;
234 s_ok_to_process VARCHAR2(10);
235 l_transfer_subinventory VARCHAR2(10);
236
237 -- end of part of bugfix 2244633
238
239 -- bug 2675498
240 l_sub_lpn_controlled_flag NUMBER;
241
242 -- bug 2675498
243
244
245 l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
246 BEGIN
247
248 IF (l_debug = 1) THEN
249 MYDEBUG('IS_EXPRESS_PICK_TASK_ELIGIBLE: TRANSACTION_TEMP_ID: '||TO_CHAR(P_TRANSACTION_TEMP_ID));
250 END IF;
251
252 BEGIN
253 -- Start of bugfix 2287341
254 -- Selecting the allocated_lpn_id also
255
256 SELECT NVL(MSI.SERIAL_NUMBER_CONTROL_CODE,1),
257 NVL(MSI.LOT_CONTROL_CODE,1),
258 mmtt.allocated_lpn_id,
259 Nvl(sub.lpn_controlled_flag, 1), -- bug 2675498
260 mmtt.inventory_item_id,
261 mmtt.subinventory_code,
262 mmtt.locator_id,
263 mmtt.organization_id
264 INTO L_SERIAL_CODE,
265 L_LOT_CODE,
266 l_allocated_lpn_id,
267 l_sub_lpn_controlled_flag, -- bug 2675498
268 l_inventory_item_id,
269 l_subinventory_code,
270 l_locator_id,
271 l_organization_id
272 FROM MTL_MATERIAL_TRANSACTIONS_TEMP MMTT,
273 MTL_SYSTEM_ITEMS_B msi,
274 mtl_secondary_inventories sub -- bug 2675498
275 WHERE MMTT.TRANSACTION_TEMP_ID = P_TRANSACTION_TEMP_ID
276 AND MMTT.ORGANIZATION_ID = MSI.ORGANIZATION_ID
277 AND sub.ORGANIZATION_ID = MSI.ORGANIZATION_ID -- Bug #2722444
278 AND MMTT.INVENTORY_ITEM_ID = MSI.inventory_item_id
279 AND mmtt.subinventory_code = sub.secondary_inventory_name -- bug 2675498
280 ;
281
282 -- bug 2675498
283
284 IF l_sub_lpn_controlled_flag = 1 THEN -- from sub is LPN controlled
285
286 IF (l_debug = 1) THEN
287 MYDEBUG('Pick from an LPN controlled sub. This task cannnot be express picked');
288 END IF;
289
290 RAISE fnd_api.g_exc_error;
291 END IF;
292
293 -- bug 2675498
294
295 -- Checking whether the lpn has been already allocated or not?
296
297 IF l_allocated_lpn_id IS NOT NULL THEN
298 IF (l_debug = 1) THEN
299 MYDEBUG('LPN Allocation is already done, Cannot Express Pick This Task');
300 END IF;
301 RAISE FND_API.G_EXC_ERROR;
302 END IF;
303
304 -- End of bugfix 2287341
305
306 IF L_SERIAL_CODE NOT IN ( 1, 6 ) THEN
307 IF (l_debug = 1) THEN
308 MYDEBUG('SERIAL CONTROL CODE: '||TO_CHAR(L_SERIAL_CODE));
309 END IF;
310 RAISE FND_API.G_EXC_ERROR;
311 END IF;
312
313 EXCEPTION
314 WHEN NO_DATA_FOUND THEN
315 IF (l_debug = 1) THEN
316 MYDEBUG('INVALID MMTT: ');
317 END IF;
318 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
319 END;
320
321 IF L_LOT_CODE <> 1 THEN
322
323 BEGIN
324
325 SELECT 1
326 INTO L_DUMMY
327 FROM MTL_TRANSACTION_LOTS_TEMP MTLT
328 WHERE MTLT.TRANSACTION_TEMP_ID = P_TRANSACTION_TEMP_ID;
329
330 EXCEPTION
331 WHEN NO_DATA_FOUND THEN
332 IF (l_debug = 1) THEN
333 MYDEBUG('INVALID LOT MMTT: ');
334 END IF;
335 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
336 WHEN TOO_MANY_ROWS THEN
337 IF (l_debug = 1) THEN
338 MYDEBUG('MULTIPLE LOTS FOR MMTT: ');
339 END IF;
340 RAISE FND_API.G_EXC_ERROR;
341 END;
342
343 END IF;
344
345 BEGIN
346
347 SELECT 1
348 INTO L_IS_BULK_PICK
349 FROM MTL_MATERIAL_TRANSACTIONS_TEMP
350 WHERE PARENT_LINE_ID = P_TRANSACTION_TEMP_ID
351 AND ROWNUM < 2;
352
353 IF (l_debug = 1) THEN
354 MYDEBUG('THIS IS A BULK PICK TASK');
355 END IF;
356 RAISE FND_API.G_EXC_ERROR;
357
358 EXCEPTION
359 WHEN NO_DATA_FOUND THEN
360 IF (l_debug = 1) THEN
361 MYDEBUG('THIS IS NOT A BULK PICK TASK');
362 END IF;
363 NULL;
364 END;
365
366
367 /* comment out for bug 2675498
368
369
370 -- Bugfix 2244633 contd..
371 BEGIN
372 IF (l_debug = 1) THEN
373 MYDEBUG('Is Express Pick Task? Checking for enough loose quantity');
374 END IF;
375 --Bug 2676657
376 SELECT
377 MMTT.ORGANIZATION_ID,
378 MMTT.INVENTORY_ITEM_ID,
379 MSI.REVISION_QTY_CONTROL_CODE,
380 MSI.LOT_CONTROL_CODE,
381 MMTT.REVISION,
382 MTLT.LOT_NUMBER,
386 MMTT.LOCATOR_ID,
383 MMTT.TRANSACTION_QUANTITY,
384 MMTT.TRANSACTION_UOM,
385 MMTT.SUBINVENTORY_CODE,
387 MMTT.TRANSFER_SUBINVENTORY
388 INTO L_ORGANIZATION_ID,
389 L_INVENTORY_ITEM_ID,
390 L_REVISION_CONTROL_CODE,
391 L_LOT_CONTROL_CODE,
392 L_REVISION,
393 L_LOT_NUMBER,
394 L_TRANSACTION_QUANTITY,
395 L_TRANSACTION_UOM,
396 L_SUBINVENTORY_CODE,
397 L_LOCATOR_ID,
398 L_TRANSFER_SUBINVENTORY
399
400
401 FROM MTL_MATERIAL_TRANSACTIONS_TEMP MMTT
402 ,MTL_SYSTEM_ITEMS_B MSI
403 ,MTL_TRANSACTION_LOTS_TEMP MTLT
404 WHERE MMTT.ORGANIZATION_ID = MSI.ORGANIZATION_ID
405 AND MMTT.INVENTORY_ITEM_ID = MSI.INVENTORY_ITEM_ID
406 AND MMTT.TRANSACTION_TEMP_ID = P_TRANSACTION_TEMP_ID
407 AND MMTT.TRANSACTION_TEMP_ID = MTLT.transaction_temp_id(+);
408
409 IF (l_revision_control_code = 2) THEN
410 IF (l_debug = 1) THEN
411 MYDEBUG('Revision Controlled item: ' || TO_CHAR(l_revision_control_code));
412 END IF;
413 l_is_revision_control := 'true';
414 END IF;
415
416 IF (l_lot_control_code = 2) THEN
417 IF (l_debug = 1) THEN
418 MYDEBUG('Lot Controlled item: ' || TO_CHAR(l_lot_control_code));
419 END IF;
420 l_is_lot_control := 'true';
421 END IF;
422
423 IF (l_debug = 1) THEN
424 MYDEBUG(' Before Calling Check_Loose_Quantity');
425 END IF;
426
427 INV_TXN_VALIDATIONS.CHECK_LOOSE_QUANTITY
428 ( p_api_version_number => l_api_version_number,
429 p_init_msg_lst => fnd_api.g_true,
430 x_return_status => l_return_status,
431 x_msg_count => l_msg_count,
432 x_msg_data => l_msg_data,
433 p_organization_id => l_organization_id,
434 p_inventory_item_id => l_inventory_item_id,
435 p_is_revision_control => l_is_revision_control,
436 p_is_lot_control => l_is_lot_control,
437 p_is_serial_control => l_is_serial_control,
438 p_revision => l_revision,
439 p_lot_number => l_lot_number,
440 p_transaction_quantity => l_transaction_quantity,
441 p_transaction_uom => l_transaction_uom,
442 p_subinventory_code => l_subinventory_code,
443 p_locator_id => l_locator_id,
444 p_transaction_temp_id => p_transaction_temp_id,
445 p_ok_to_process => s_ok_to_process,
446 p_transfer_subinventory => l_transfer_subinventory
447 );
448
449 IF (l_debug = 1) THEN
450 MYDEBUG(' After Calling Check_Loose_Quantity');
451 END IF;
452
453 IF l_return_status = fnd_api.g_ret_sts_error THEN
454 IF (l_debug = 1) THEN
455 MYDEBUG('return status = ' || l_return_status);
456 END IF;
457 RAISE fnd_api.g_exc_error;
458 END IF ;
459
460 IF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
461 IF (l_debug = 1) THEN
462 MYDEBUG('return status = ' || l_return_status);
463 END IF;
464 RAISE fnd_api.g_exc_unexpected_error;
465 END IF;
466
467 IF (l_debug = 1) THEN
468 MYDEBUG('s_ok_to_process = ' || s_ok_to_process);
469 END IF;
470
471 IF s_ok_to_process <> 'true' THEN
472 IF (l_debug = 1) THEN
473 MYDEBUG(' Not Enough Loose Quantity. This task cannnot be express picked');
474 END IF;
475 RAISE fnd_api.g_exc_error;
476 END IF;
477
478 X_RETURN_STATUS := l_return_status;
479
480 END;
481 -- end of bugfix 2244633
482
483 comment out for bug 2675498 */
484
485 RETURN X_RETURN_STATUS;
486
487
488 EXCEPTION
489
490 WHEN FND_API.G_EXC_ERROR THEN
491
492 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
493 RETURN X_RETURN_STATUS;
494
495 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
496
497 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
498 RETURN X_RETURN_STATUS;
499
500 WHEN OTHERS THEN
501
502 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
503 RETURN X_RETURN_STATUS;
504
505 END IS_EXPRESS_PICK_TASK_ELIGIBLE;
506
507 PROCEDURE LOAD_AND_DROP(
508 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
509 X_MSG_COUNT OUT NOCOPY NUMBER,
510 X_MSG_DATA OUT NOCOPY VARCHAR2,
511 P_ORG_ID IN NUMBER,
512 P_TEMP_ID IN NUMBER,
513 P_TO_LPN IN VARCHAR2,
514 P_TO_SUB IN VARCHAR2,
515 P_TO_LOC IN NUMBER,
516 P_ACTION IN VARCHAR2,
517 P_USER_ID IN NUMBER,
518 P_TASK_TYPE IN NUMBER
519 ) IS
520
521 L_LPN_ID NUMBER := 0;
522 L_TEMP_ID NUMBER := 0;
523 L_MMTT_TO_UPDATE VARCHAR2(100) := '';
524 L_OK_TO_PROCESS VARCHAR2(100) := 'false';
525 L_TXN_HDR_ID NUMBER := 0;
526
527 l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
528 BEGIN
529
530 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
531
532 BEGIN
533
534 SELECT LPN_ID
535 INTO L_LPN_ID
536 FROM WMS_LICENSE_PLATE_NUMBERS
537 WHERE LICENSE_PLATE_NUMBER = P_TO_LPN
538 AND ORGANIZATION_ID = P_ORG_ID;
539
540 IF (l_debug = 1) THEN
541 MYDEBUG('THE LPN ID IS '||TO_CHAR(L_LPN_ID));
542 END IF;
543
547 MYDEBUG('INVALID LPN'||P_TO_LPN);
544 EXCEPTION
545 WHEN NO_DATA_FOUND THEN
546 IF (l_debug = 1) THEN
548 END IF;
549 RAISE FND_API.G_EXC_ERROR;
550 WHEN OTHERS THEN
551 IF (l_debug = 1) THEN
552 MYDEBUG('UNEXPECTED ERROR IN FETCHING LPN '||SQLERRM);
553 END IF;
554 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
555 END;
556
557 IF (l_debug = 1) THEN
558 mydebug('current action is: ' || p_action);
559 END IF;
560
561 -- Check the value of p_action. If 'LOAD' then call procedure LOAD
562 -- If 'LOAD_AND_DROP' then call procedure call 'LOAD_TASK' and 'DROP_TASK'
563 IF (p_action = 'LOAD') THEN
564
565 WMS_EXPRESS_PICK_TASK.LOAD_TASK(
566 X_RETURN_STATUS => X_RETURN_STATUS,
567 X_MSG_COUNT => X_MSG_COUNT,
568 X_MSG_DATA => X_MSG_DATA,
569 P_TEMP_ID => P_TEMP_ID,
570 P_LPN_ID => L_LPN_ID,
571 P_USER_ID => P_USER_ID
572 );
573
574 IF X_RETURN_STATUS = FND_API.G_RET_STS_ERROR THEN
575 IF (l_debug = 1) THEN
576 MYDEBUG('ERROR IN LOAD_TASK ');
577 END IF;
578 RAISE FND_API.G_EXC_ERROR;
579 END IF;
580
581 IF X_RETURN_STATUS = FND_API.G_RET_STS_UNEXP_ERROR THEN
582 IF (l_debug = 1) THEN
583 MYDEBUG('UNEXPECTED ERROR IN LOAD_TASK ');
584 END IF;
585 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
586 END IF;
587
588 ELSIF (p_action = 'LOAD_AND_DROP') THEN
589
590 WMS_EXPRESS_PICK_TASK.LOAD_TASK(
591 X_RETURN_STATUS => X_RETURN_STATUS,
592 X_MSG_COUNT => X_MSG_COUNT,
593 X_MSG_DATA => X_MSG_DATA,
594 P_TEMP_ID => P_TEMP_ID,
595 P_LPN_ID => L_LPN_ID,
596 P_USER_ID => P_USER_ID
597 );
598
599 IF X_RETURN_STATUS = FND_API.G_RET_STS_ERROR THEN
600 IF (l_debug = 1) THEN
601 MYDEBUG('ERROR IN LOAD_TASK ');
602 END IF;
603 RAISE FND_API.G_EXC_ERROR;
604 END IF;
605
606 IF X_RETURN_STATUS = FND_API.G_RET_STS_UNEXP_ERROR THEN
607 IF (l_debug = 1) THEN
608 MYDEBUG('UNEXPECTED ERROR IN LOAD_TASK ');
609 END IF;
610 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
611 END IF;
612
613 WMS_EXPRESS_PICK_TASK.DROP_TASK(
614 X_RETURN_STATUS => X_RETURN_STATUS,
615 X_MSG_COUNT => X_MSG_COUNT,
616 X_MSG_DATA => X_MSG_DATA,
617 P_ORG_ID => P_ORG_ID,
618 P_TEMP_ID => P_TEMP_ID,
619 P_LPN_ID => L_LPN_ID,
620 P_TO_SUB => P_TO_SUB,
621 P_TO_LOC => P_TO_LOC,
622 P_USER_ID => P_USER_ID,
623 P_TASK_TYPE => P_TASK_TYPE
624 );
625
626 IF X_RETURN_STATUS = FND_API.G_RET_STS_ERROR THEN
627 IF (l_debug = 1) THEN
628 MYDEBUG('ERROR IN DROP_TASK ');
629 END IF;
630 RAISE FND_API.G_EXC_ERROR;
631 END IF;
632
633 IF X_RETURN_STATUS = FND_API.G_RET_STS_UNEXP_ERROR THEN
634 IF (l_debug = 1) THEN
635 MYDEBUG('UNEXPECTED ERROR IN DROP_TASK ');
636 END IF;
637 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
638 END IF;
639
640 END IF;
641
642 EXCEPTION
643
644 WHEN FND_API.G_EXC_ERROR THEN
645
646 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
647 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
648
649 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
650
651 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
652 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
653
654 WHEN OTHERS THEN
655
656 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
657 IF FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
658 FND_MSG_PUB.ADD_EXC_MSG( g_pkg_name, 'LOAD_AND_DROP');
659 END IF;
660 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
661
662 END LOAD_AND_DROP;
663
664 PROCEDURE LOAD_TASK(
665 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
666 X_MSG_COUNT OUT NOCOPY NUMBER,
667 X_MSG_DATA OUT NOCOPY VARCHAR2,
668 P_TEMP_ID IN NUMBER,
669 P_LPN_ID IN NUMBER,
670 P_USER_ID IN NUMBER
671 ) IS
672 l_lpn_id NUMBER := p_lpn_id;
673 l_temp_id NUMBER := p_temp_id;
674 l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
675 BEGIN
676 IF (l_debug = 1) THEN
677 mydebug('in procedure load_task');
678 END IF;
679 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
680
681 UPDATE mtl_material_transactions_temp
682 SET transfer_lpn_id = l_lpn_id,
683 last_update_date = SYSDATE,
684 last_updated_by = p_user_id
685 WHERE transaction_temp_id = l_temp_id;
686
687 IF (l_debug = 1) THEN
688 mydebug('Updated MTTT row count: ' || SQL%ROWCOUNT);
689 END IF;
690
691 --Set the task status to Loaded
692 UPDATE wms_dispatched_tasks
693 SET status = 4,
697 WHERE transaction_temp_id = l_temp_id;
694 loaded_time = SYSDATE,
695 last_update_date = SYSDATE,
696 last_updated_by = p_user_id
698
699 IF (l_debug = 1) THEN
700 mydebug('Updated WDT row count: ' || SQL%ROWCOUNT);
701 END IF;
702
703 PRINT_LABEL(
704 X_RETURN_STATUS => X_RETURN_STATUS,
705 X_MSG_COUNT => X_MSG_COUNT,
706 X_MSG_DATA => X_MSG_DATA,
707 P_TEMP_ID => P_TEMP_ID
708 );
709
710 IF (l_debug = 1) THEN
711 MYDEBUG('IGNORE RETURN STATUS FOR LABEL PRINTING');
712 END IF;
713
714 EXCEPTION
715 WHEN FND_API.G_EXC_ERROR THEN
716
717 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
718 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
719
720 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
721
722 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
723 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
724
725 WHEN OTHERS THEN
726
727 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
728 IF FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
729 FND_MSG_PUB.ADD_EXC_MSG( g_pkg_name, 'LOAD_TASK');
730 END IF;
731 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
732
733 END LOAD_TASK;
734
735 PROCEDURE DROP_TASK(
736 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
737 X_MSG_COUNT OUT NOCOPY NUMBER,
738 X_MSG_DATA OUT NOCOPY VARCHAR2,
739 P_ORG_ID IN NUMBER,
740 P_TEMP_ID IN NUMBER,
741 P_LPN_ID IN NUMBER,
742 P_TO_SUB IN VARCHAR2,
743 P_TO_LOC IN NUMBER,
744 P_USER_ID IN NUMBER,
745 P_TASK_TYPE IN NUMBER
746 ) IS
747 l_lpn_id NUMBER := p_lpn_id;
748 l_temp_id NUMBER := p_temp_id;
749 l_txn_hdr_id NUMBER := 0;
750 s_ok_to_process VARCHAR2(10);
751 l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
752 BEGIN
753
754 IF (l_debug = 1) THEN
755 mydebug('in prod drop_task');
756 END IF;
757
758 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
759
760 SELECT MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL
761 INTO L_TXN_HDR_ID
762 FROM DUAL;
763
764 IF (l_debug = 1) THEN
765 MYDEBUG('L_TXN_HDR_ID IS '|| L_TXN_HDR_ID);
766 END IF;
767
768 WMS_TASK_DISPATCH_GEN.COMPLETE_PICK(
769 P_LPN => NULL,
770 P_CONTAINER_ITEM_ID => NULL,
771 P_ORG_ID => P_ORG_ID,
772 P_TEMP_ID => P_TEMP_ID,
773 P_LOC => P_TO_LOC,
774 P_SUB => P_TO_SUB,
775 P_FROM_LPN_ID => L_LPN_ID ,
776 P_TXN_HDR_ID => L_TXN_HDR_ID,
777 P_USER_ID => P_USER_ID,
778 X_RETURN_STATUS => X_RETURN_STATUS,
779 X_MSG_COUNT => X_MSG_COUNT,
780 X_MSG_DATA => X_MSG_DATA,
781 P_OK_TO_PROCESS => S_OK_TO_PROCESS
782 );
783
784 IF (l_debug = 1) THEN
785 MYDEBUG('Finished Complete Pick. p_ok_to_process =' || s_ok_to_process);
786 END IF;
787
788 IF X_RETURN_STATUS = FND_API.G_RET_STS_ERROR THEN
789 IF (l_debug = 1) THEN
790 MYDEBUG('ERROR IN COMPLETE PICK ');
791 END IF;
792 RAISE FND_API.G_EXC_ERROR;
793 END IF;
794
795 IF X_RETURN_STATUS = FND_API.G_RET_STS_UNEXP_ERROR THEN
796 IF (l_debug = 1) THEN
797 MYDEBUG('UNEXPECTED ERROR IN COMPLETE PICK ');
798 END IF;
799 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
800 END IF;
801
802
803 WMS_TASK_DISPATCH_GEN.PICK_DROP(
804 P_TEMP_ID => P_TEMP_ID,
805 P_TXN_HEADER_ID => L_TXN_HDR_ID,
806 P_ORG_ID => P_ORG_ID,
807 X_RETURN_STATUS => X_RETURN_STATUS,
808 X_MSG_COUNT => X_MSG_COUNT,
809 X_MSG_DATA => X_MSG_DATA,
810 P_FROM_LPN_ID => L_LPN_ID ,
811 P_DROP_LPN => NULL,
812 P_LOC_REASON_ID => 0,
813 P_SUB => P_TO_SUB,
814 P_LOC => P_TO_LOC,
815 P_ORIG_SUB => P_TO_SUB,
816 P_ORIG_LOC => P_TO_LOC,
817 P_USER_ID => P_USER_ID,
818 P_TASK_TYPE => P_TASK_TYPE
819 );
820
821 IF X_RETURN_STATUS = FND_API.G_RET_STS_ERROR THEN
822 IF (l_debug = 1) THEN
823 MYDEBUG('ERROR IN PICK DROP ');
827
824 END IF;
825 RAISE FND_API.G_EXC_ERROR;
826 END IF;
828 IF X_RETURN_STATUS = FND_API.G_RET_STS_UNEXP_ERROR THEN
829 IF (l_debug = 1) THEN
830 MYDEBUG('UNEXPECTED ERROR IN PICK DROP ');
831 END IF;
832 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
833 END IF;
834
835 EXCEPTION
836
837 WHEN FND_API.G_EXC_ERROR THEN
838
839 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
840 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
841
842 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
843
844 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
845 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
846
847 WHEN OTHERS THEN
848
849 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
850 IF FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
851 FND_MSG_PUB.ADD_EXC_MSG( g_pkg_name, 'DROP_TASK');
852 END IF;
853 FND_MSG_PUB.COUNT_AND_GET( P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA );
854
855 END DROP_TASK;
856
857 END WMS_EXPRESS_PICK_TASK;