76: --+=========================================================================+
77: PROCEDURE Validate_Inventory_Posting
78: ( p_trans_rec IN GMI_QUANTITY_PUB.trans_rec_typ
79: , x_item_id OUT ic_item_mst.item_id%TYPE
80: , x_lot_id OUT ic_lots_mst.lot_id%TYPE
81: , x_old_lot_status OUT ic_lots_sts.lot_status%TYPE
82: , x_old_qc_grade OUT qc_grad_mst.qc_grade%TYPE
83: , x_return_status OUT VARCHAR2
84: , x_msg_count OUT NUMBER
88: IS
89: l_trans_rec GMI_QUANTITY_PUB.trans_rec_typ;
90: l_ic_item_mst_rec ic_item_mst%ROWTYPE;
91: l_ic_item_cpg_rec ic_item_cpg%ROWTYPE;
92: l_ic_lots_mst_rec ic_lots_mst%ROWTYPE;
93: l_ic_lots_cpg_rec ic_lots_cpg%ROWTYPE;
94: l_ic_whse_mst_rec ic_whse_mst%ROWTYPE;
95: l_ic_loct_inv_rec_from ic_loct_inv%ROWTYPE;
96: l_ic_loct_inv_rec_to ic_loct_inv%ROWTYPE;
96: l_ic_loct_inv_rec_to ic_loct_inv%ROWTYPE;
97: l_sy_reas_cds_rec sy_reas_cds%ROWTYPE;
98: l_lot_rec GMI_LOTS_PUB.lot_rec_typ;
99: l_item_id ic_item_mst.item_id%TYPE;
100: l_lot_id ic_lots_mst.lot_id%TYPE;
101: l_qty2 NUMBER;
102: l_lot_onhand NUMBER :=0;
103: l_trans_type NUMBER(2);
104: l_msg_count NUMBER;
482:
483: GMI_GLOBAL_GRP.Get_Lot ( p_item_id => l_ic_item_mst_rec.item_id
484: , p_lot_no => l_trans_rec.lot_no
485: , p_sublot_no => l_trans_rec.sublot_no
486: , x_ic_lots_mst => l_ic_lots_mst_rec
487: , x_ic_lots_cpg => l_ic_lots_cpg_rec
488: );
489: -- Check for deleted or inactive lot
490: IF (l_ic_lots_mst_rec.delete_mark = 1) OR
486: , x_ic_lots_mst => l_ic_lots_mst_rec
487: , x_ic_lots_cpg => l_ic_lots_cpg_rec
488: );
489: -- Check for deleted or inactive lot
490: IF (l_ic_lots_mst_rec.delete_mark = 1) OR
491: (l_ic_lots_mst_rec.inactive_ind = 1)
492: THEN
493: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_NO');
494: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_trans_rec.item_no);
487: , x_ic_lots_cpg => l_ic_lots_cpg_rec
488: );
489: -- Check for deleted or inactive lot
490: IF (l_ic_lots_mst_rec.delete_mark = 1) OR
491: (l_ic_lots_mst_rec.inactive_ind = 1)
492: THEN
493: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_NO');
494: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_trans_rec.item_no);
495: FND_MESSAGE.SET_TOKEN('LOT_NO',l_trans_rec.lot_no);
495: FND_MESSAGE.SET_TOKEN('LOT_NO',l_trans_rec.lot_no);
496: FND_MESSAGE.SET_TOKEN('SUBLOT_NO',l_trans_rec.sublot_no);
497: FND_MSG_PUB.Add;
498: RAISE FND_API.G_EXC_ERROR;
499: ELSIF (l_ic_lots_mst_rec.lot_id = -2)
500: THEN
501: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
502: END IF;
503:
503:
504: -- If the was lot not found and not creating inventory then error
505: IF (l_trans_type <> 1)
506: THEN
507: IF (l_ic_lots_mst_rec.lot_id = -1)
508: THEN
509: FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_NO');
510: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_trans_rec.item_no);
511: FND_MESSAGE.SET_TOKEN('LOT_NO',l_trans_rec.lot_no);
514: RAISE FND_API.G_EXC_ERROR;
515: END IF;
516: ELSE
517: -- If the lot was not found when creating inventory then create it
518: IF (l_ic_lots_mst_rec.lot_id = -1)
519: THEN
520: -- Set up PL/SQL record and create the lot
521: l_lot_rec.item_no :=l_trans_rec.item_no;
522: l_lot_rec.lot_no :=l_trans_rec.lot_no;
544: -- Get lot details for lot created
545: GMI_GLOBAL_GRP.Get_Lot ( p_item_id => l_ic_item_mst_rec.item_id
546: , p_lot_no => l_trans_rec.lot_no
547: , p_sublot_no => l_trans_rec.sublot_no
548: , x_ic_lots_mst => l_ic_lots_mst_rec
549: , x_ic_lots_cpg => l_ic_lots_cpg_rec
550: );
551: END IF;
552: END IF;
551: END IF;
552: END IF;
553:
554: -- Store the lot_id and original QC grade locally
555: x_lot_id := l_ic_lots_mst_rec.lot_id;
556: l_lot_id := l_ic_lots_mst_rec.lot_id;
557: x_old_qc_grade := l_ic_lots_mst_rec.qc_grade;
558:
559: -- If QC grade change then check new QC grade differs from existing
552: END IF;
553:
554: -- Store the lot_id and original QC grade locally
555: x_lot_id := l_ic_lots_mst_rec.lot_id;
556: l_lot_id := l_ic_lots_mst_rec.lot_id;
557: x_old_qc_grade := l_ic_lots_mst_rec.qc_grade;
558:
559: -- If QC grade change then check new QC grade differs from existing
560: -- If not QC grade change then store lot QC grade as new QC grade
553:
554: -- Store the lot_id and original QC grade locally
555: x_lot_id := l_ic_lots_mst_rec.lot_id;
556: l_lot_id := l_ic_lots_mst_rec.lot_id;
557: x_old_qc_grade := l_ic_lots_mst_rec.qc_grade;
558:
559: -- If QC grade change then check new QC grade differs from existing
560: -- If not QC grade change then store lot QC grade as new QC grade
561: IF (l_trans_type = 5)
559: -- If QC grade change then check new QC grade differs from existing
560: -- If not QC grade change then store lot QC grade as new QC grade
561: IF (l_trans_type = 5)
562: THEN
563: IF (l_trans_rec.qc_grade = l_ic_lots_mst_rec.qc_grade)
564: THEN
565: FND_MESSAGE.SET_NAME('GMI','IC_API_SAME_QC_GRADE');
566: FND_MESSAGE.SET_TOKEN('ITEM_NO',l_trans_rec.item_no);
567: FND_MESSAGE.SET_TOKEN('LOT_NO',l_trans_rec.lot_no);
569: FND_MSG_PUB.Add;
570: RAISE FND_API.G_EXC_ERROR;
571: END IF;
572: ELSE
573: l_trans_rec.qc_grade :=l_ic_lots_mst_rec.qc_grade;
574: END IF;
575:
576: -- Validate 'from' warehouse code (not applicable for change QC Grade)
577: IF (l_trans_type <> 5)
1386: --| 01-OCT-1998 M.Godfrey Created |
1387: --+=========================================================================+
1388: FUNCTION Check_unposted_jnl_lot_status
1389: ( p_item_id IN ic_item_mst.item_id%TYPE
1390: , p_lot_id IN ic_lots_mst.lot_id%TYPE
1391: , p_whse_code IN ic_whse_mst.whse_code%TYPE
1392: , p_location IN ic_loct_mst.location%TYPE
1393: , p_lot_status IN ic_lots_sts.lot_status%TYPE
1394: )
1465: --| 01-OCT-1998 M.Godfrey Created |
1466: --+=========================================================================+
1467: FUNCTION Check_unposted_jnl_qc_grade
1468: ( p_item_id IN ic_item_mst.item_id%TYPE
1469: , p_lot_id IN ic_lots_mst.lot_id%TYPE
1470: , p_qc_grade IN qc_grad_mst.qc_grade%TYPE
1471: )
1472: RETURN BOOLEAN
1473: IS