45: G_PKG_NAME CONSTANT VARCHAR2(30):='GMIALLOC';
46:
47: procedure update_pending_allocations
48: ( p_api_version IN NUMBER
49: ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
50: ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
51: ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
52: ,x_return_status OUT NOCOPY VARCHAR2
53: ,x_msg_count OUT NOCOPY NUMBER
46:
47: procedure update_pending_allocations
48: ( p_api_version IN NUMBER
49: ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
50: ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
51: ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
52: ,x_return_status OUT NOCOPY VARCHAR2
53: ,x_msg_count OUT NOCOPY NUMBER
54: ,x_msg_data OUT NOCOPY VARCHAR2
47: procedure update_pending_allocations
48: ( p_api_version IN NUMBER
49: ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
50: ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
51: ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
52: ,x_return_status OUT NOCOPY VARCHAR2
53: ,x_msg_count OUT NOCOPY NUMBER
54: ,x_msg_data OUT NOCOPY VARCHAR2
55: ,pdoc_id IN NUMBER
152: l_user_id NUMBER := FND_GLOBAL.user_id;
153:
154: /*====================End of Variable Declarations==============================*/
155: BEGIN
156: IF FND_API.to_boolean(p_init_msg_list) THEN
157: FND_MSG_PUB.Initialize;
158: END IF;
159: SAVEPOINT update_pending_allocations;
160: -- Standard call to check for call compatibility.
157: FND_MSG_PUB.Initialize;
158: END IF;
159: SAVEPOINT update_pending_allocations;
160: -- Standard call to check for call compatibility.
161: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
162: p_api_version ,
163: l_api_name ,
164: G_PKG_NAME ) THEN
165: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
161: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
162: p_api_version ,
163: l_api_name ,
164: G_PKG_NAME ) THEN
165: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
166: END IF;
167: x_return_status :=FND_API.G_RET_STS_SUCCESS;
168:
169: --start of update of pending allocations
163: l_api_name ,
164: G_PKG_NAME ) THEN
165: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
166: END IF;
167: x_return_status :=FND_API.G_RET_STS_SUCCESS;
168:
169: --start of update of pending allocations
170: --first loop to get the move txns
171: FOR Cur_get_trans_cmp_rec in Cur_get_trans_cmp LOOP
238: END LOOP;
239:
240: END LOOP;
241:
242: IF FND_API.to_boolean(p_commit) THEN
243: COMMIT WORK;
244: END IF;
245: FND_MSG_PUB.Count_AND_GET
246: (p_count => x_msg_count, p_data => x_msg_data);
245: FND_MSG_PUB.Count_AND_GET
246: (p_count => x_msg_count, p_data => x_msg_data);
247:
248: EXCEPTION
249: WHEN FND_API.G_EXC_ERROR THEN
250: ROLLBACK to update_pending_allocations;
251: x_return_status := FND_API.G_RET_STS_ERROR;
252: FND_MSG_PUB.Count_AND_GET
253: (p_count => x_msg_count, p_data => x_msg_data);
247:
248: EXCEPTION
249: WHEN FND_API.G_EXC_ERROR THEN
250: ROLLBACK to update_pending_allocations;
251: x_return_status := FND_API.G_RET_STS_ERROR;
252: FND_MSG_PUB.Count_AND_GET
253: (p_count => x_msg_count, p_data => x_msg_data);
254:
255: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
251: x_return_status := FND_API.G_RET_STS_ERROR;
252: FND_MSG_PUB.Count_AND_GET
253: (p_count => x_msg_count, p_data => x_msg_data);
254:
255: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
256: ROLLBACK to update_pending_allocations;
257: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
258: FND_MSG_PUB.Count_AND_GET
259: (p_count => x_msg_count, p_data => x_msg_data);
253: (p_count => x_msg_count, p_data => x_msg_data);
254:
255: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
256: ROLLBACK to update_pending_allocations;
257: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
258: FND_MSG_PUB.Count_AND_GET
259: (p_count => x_msg_count, p_data => x_msg_data);
260:
261: WHEN OTHERS THEN
259: (p_count => x_msg_count, p_data => x_msg_data);
260:
261: WHEN OTHERS THEN
262: ROLLBACK to update_pending_allocations;
263: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
264: IF (SQLCODE IS NOT NULL) THEN
265: FND_MESSAGE.SET_NAME('GMI','GMI_DXFR_SQL_ERROR');
266: FND_MESSAGE.SET_TOKEN('ERRCODE',SQLCODE);
267: FND_MESSAGE.SET_TOKEN('ERRM',SQLERRM(SQLCODE));
320:
321:
322: PROCEDURE CHECK_ALLOC_QTY
323: ( p_api_version IN NUMBER
324: ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
325: ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
326: ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
327: ,x_return_status OUT NOCOPY VARCHAR2
328: ,x_msg_count OUT NOCOPY NUMBER
321:
322: PROCEDURE CHECK_ALLOC_QTY
323: ( p_api_version IN NUMBER
324: ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
325: ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
326: ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
327: ,x_return_status OUT NOCOPY VARCHAR2
328: ,x_msg_count OUT NOCOPY NUMBER
329: ,x_msg_data OUT NOCOPY VARCHAR2
322: PROCEDURE CHECK_ALLOC_QTY
323: ( p_api_version IN NUMBER
324: ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
325: ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
326: ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
327: ,x_return_status OUT NOCOPY VARCHAR2
328: ,x_msg_count OUT NOCOPY NUMBER
329: ,x_msg_data OUT NOCOPY VARCHAR2
330: ,pfrom_whse_code IN VARCHAR2
345: OMSO_txn_count NUMBER := 0;
346: OMSO_pick_confirmed_txn_count NUMBER := 0;
347:
348: BEGIN
349: IF FND_API.to_boolean(p_init_msg_list) THEN
350: FND_MSG_PUB.Initialize;
351: END IF;
352: -- Standard call to check for call compatibility.
353: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
349: IF FND_API.to_boolean(p_init_msg_list) THEN
350: FND_MSG_PUB.Initialize;
351: END IF;
352: -- Standard call to check for call compatibility.
353: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
354: p_api_version ,
355: l_api_name ,
356: G_PKG_NAME ) THEN
357: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
353: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
354: p_api_version ,
355: l_api_name ,
356: G_PKG_NAME ) THEN
357: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
358: END IF;
359: x_return_status :=FND_API.G_RET_STS_SUCCESS;
360:
361: /* Get onhand */
355: l_api_name ,
356: G_PKG_NAME ) THEN
357: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
358: END IF;
359: x_return_status :=FND_API.G_RET_STS_SUCCESS;
360:
361: /* Get onhand */
362: select NVL(sum(nvl(loct_onhand,0)),0)
363: into onhandqty
449: IF (pfrom_whse_code <> pto_whse_code) THEN
450:
451: FND_MESSAGE.SET_NAME('GMI','GMI_MOVE_TO_DIFF_WHSE');
452: FND_MSG_PUB.Add;
453: RAISE FND_API.G_EXC_ERROR;
454: END IF;--}
455: /* *****************************************************************
456: check if OMSO txns exist
457: if they exist and any OMSO allocation is pick confirmed then the
472: --{
473: IF (OMSO_pick_confirmed_txn_count > 0) THEN
474: FND_MESSAGE.SET_NAME('GMI','GMI_PICK_CNFRMD_ALLOC_EXISTS');
475: FND_MSG_PUB.Add;
476: RAISE FND_API.G_EXC_ERROR;
477: END IF;--}
478:
479: END IF;--}
480: --allocations can be moved.
481: x_move_allocations := 'Y';
482: ELSE
483: FND_MESSAGE.SET_NAME('GMI','GMI_UNABLE_TO_MOVE_ALLOCATIONS');
484: FND_MSG_PUB.Add;
485: RAISE FND_API.G_EXC_ERROR;
486: END IF;--}
487: ELSE
488: --no need to move allocations
489: x_move_allocations := 'N'; /* move qty is less than or equal to unallocated qty */
492: FND_MSG_PUB.Count_AND_GET
493: (p_count => x_msg_count, p_data => x_msg_data);
494:
495: EXCEPTION
496: WHEN FND_API.G_EXC_ERROR THEN
497: x_return_status := FND_API.G_RET_STS_ERROR;
498: FND_MSG_PUB.Count_AND_GET
499: (p_count => x_msg_count, p_data => x_msg_data);
500:
493: (p_count => x_msg_count, p_data => x_msg_data);
494:
495: EXCEPTION
496: WHEN FND_API.G_EXC_ERROR THEN
497: x_return_status := FND_API.G_RET_STS_ERROR;
498: FND_MSG_PUB.Count_AND_GET
499: (p_count => x_msg_count, p_data => x_msg_data);
500:
501: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
497: x_return_status := FND_API.G_RET_STS_ERROR;
498: FND_MSG_PUB.Count_AND_GET
499: (p_count => x_msg_count, p_data => x_msg_data);
500:
501: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
502: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
503: FND_MSG_PUB.Count_AND_GET
504: (p_count => x_msg_count, p_data => x_msg_data);
505:
498: FND_MSG_PUB.Count_AND_GET
499: (p_count => x_msg_count, p_data => x_msg_data);
500:
501: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
502: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
503: FND_MSG_PUB.Count_AND_GET
504: (p_count => x_msg_count, p_data => x_msg_data);
505:
506: WHEN OTHERS THEN
503: FND_MSG_PUB.Count_AND_GET
504: (p_count => x_msg_count, p_data => x_msg_data);
505:
506: WHEN OTHERS THEN
507: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
508: IF (SQLCODE IS NOT NULL) THEN
509: FND_MESSAGE.SET_NAME('GMI','GMI_DXFR_SQL_ERROR');
510: FND_MESSAGE.SET_TOKEN('ERRCODE',SQLCODE);
511: FND_MESSAGE.SET_TOKEN('ERRM',SQLERRM(SQLCODE));
555:
556:
557: PROCEDURE VALIDATE_MOVEALLOC_FORMASSMOVE
558: ( p_api_version IN NUMBER
559: ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
560: ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
561: ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
562: ,x_return_status OUT NOCOPY VARCHAR2
563: ,x_msg_count OUT NOCOPY NUMBER
556:
557: PROCEDURE VALIDATE_MOVEALLOC_FORMASSMOVE
558: ( p_api_version IN NUMBER
559: ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
560: ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
561: ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
562: ,x_return_status OUT NOCOPY VARCHAR2
563: ,x_msg_count OUT NOCOPY NUMBER
564: ,x_msg_data OUT NOCOPY VARCHAR2
557: PROCEDURE VALIDATE_MOVEALLOC_FORMASSMOVE
558: ( p_api_version IN NUMBER
559: ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
560: ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
561: ,p_validation_level IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
562: ,x_return_status OUT NOCOPY VARCHAR2
563: ,x_msg_count OUT NOCOPY NUMBER
564: ,x_msg_data OUT NOCOPY VARCHAR2
565: ,pfrom_whse_code IN VARCHAR2
573: OMSO_txn_count NUMBER := 0;
574: OMSO_pick_confirmed_txn_count NUMBER := 0;
575:
576: BEGIN
577: IF FND_API.to_boolean(p_init_msg_list) THEN
578: FND_MSG_PUB.Initialize;
579: END IF;
580: -- Standard call to check for call compatibility.
581: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
577: IF FND_API.to_boolean(p_init_msg_list) THEN
578: FND_MSG_PUB.Initialize;
579: END IF;
580: -- Standard call to check for call compatibility.
581: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
582: p_api_version ,
583: l_api_name ,
584: G_PKG_NAME ) THEN
585: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
581: IF NOT FND_API.Compatible_API_Call ( l_api_version ,
582: p_api_version ,
583: l_api_name ,
584: G_PKG_NAME ) THEN
585: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
586: END IF;
587: x_return_status :=FND_API.G_RET_STS_SUCCESS;
588:
589: SELECT count(1)
583: l_api_name ,
584: G_PKG_NAME ) THEN
585: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
586: END IF;
587: x_return_status :=FND_API.G_RET_STS_SUCCESS;
588:
589: SELECT count(1)
590: INTO OMSO_txn_count
591: FROM ic_tran_pnd pnd, ic_adjs_jnl jnl
612: IF (pfrom_whse_code <> pto_whse_code) THEN
613:
614: FND_MESSAGE.SET_NAME('GMI','GMI_MOVE_TO_DIFF_WHSE');
615: FND_MSG_PUB.Add;
616: RAISE FND_API.G_EXC_ERROR;
617: END IF;--}
618: /* *****************************************************************
619: check if OMSO txns exist
620: if they exist and any OMSO allocation is pick confirmed then the
638: --{
639: IF (OMSO_pick_confirmed_txn_count > 0) THEN
640: FND_MESSAGE.SET_NAME('GMI','GMI_PICK_CNFRMD_ALLOC_EXISTS');
641: FND_MSG_PUB.Add;
642: RAISE FND_API.G_EXC_ERROR;
643: END IF;--}
644:
645: END IF;--}
646:
647: FND_MSG_PUB.Count_AND_GET
648: (p_count => x_msg_count, p_data => x_msg_data);
649:
650: EXCEPTION
651: WHEN FND_API.G_EXC_ERROR THEN
652: x_return_status := FND_API.G_RET_STS_ERROR;
653: FND_MSG_PUB.Count_AND_GET
654: (p_count => x_msg_count, p_data => x_msg_data);
655:
648: (p_count => x_msg_count, p_data => x_msg_data);
649:
650: EXCEPTION
651: WHEN FND_API.G_EXC_ERROR THEN
652: x_return_status := FND_API.G_RET_STS_ERROR;
653: FND_MSG_PUB.Count_AND_GET
654: (p_count => x_msg_count, p_data => x_msg_data);
655:
656: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
652: x_return_status := FND_API.G_RET_STS_ERROR;
653: FND_MSG_PUB.Count_AND_GET
654: (p_count => x_msg_count, p_data => x_msg_data);
655:
656: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
657: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
658: FND_MSG_PUB.Count_AND_GET
659: (p_count => x_msg_count, p_data => x_msg_data);
660:
653: FND_MSG_PUB.Count_AND_GET
654: (p_count => x_msg_count, p_data => x_msg_data);
655:
656: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
657: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
658: FND_MSG_PUB.Count_AND_GET
659: (p_count => x_msg_count, p_data => x_msg_data);
660:
661: WHEN OTHERS THEN
658: FND_MSG_PUB.Count_AND_GET
659: (p_count => x_msg_count, p_data => x_msg_data);
660:
661: WHEN OTHERS THEN
662: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
663: IF (SQLCODE IS NOT NULL) THEN
664: FND_MESSAGE.SET_NAME('GMI','GMI_DXFR_SQL_ERROR');
665: FND_MESSAGE.SET_TOKEN('ERRCODE',SQLCODE);
666: FND_MESSAGE.SET_TOKEN('ERRM',SQLERRM(SQLCODE));