[Home] [Help]
832: l_item_id := x_consol_item_repl_tbl(i).item_id;
833: l_org_id := x_consol_item_repl_tbl(i).organization_id;
834:
835: -- Get all item details
836: IF inv_cache.set_item_rec(L_ORG_ID, L_item_id) THEN
837:
838: IF inv_cache.item_rec.revision_qty_control_code = 2 THEN
839: l_is_revision_ctrl := TRUE;
840: ELSE
834:
835: -- Get all item details
836: IF inv_cache.set_item_rec(L_ORG_ID, L_item_id) THEN
837:
838: IF inv_cache.item_rec.revision_qty_control_code = 2 THEN
839: l_is_revision_ctrl := TRUE;
840: ELSE
841: l_is_revision_ctrl := FALSE;
842: END IF;
840: ELSE
841: l_is_revision_ctrl := FALSE;
842: END IF;
843:
844: IF inv_cache.item_rec.lot_control_code = 2 THEN
845: l_is_lot_ctrl := TRUE;
846: ELSE
847: l_is_lot_ctrl := FALSE;
848: END IF;
846: ELSE
847: l_is_lot_ctrl := FALSE;
848: END IF;
849:
850: IF inv_cache.item_rec.serial_number_control_code NOT IN (1,6) THEN
851: l_is_serial_ctrl := FALSE;
852: ELSE
853: l_is_serial_ctrl := TRUE;
854: END IF;
859: print_debug('Error: Item detail not found');
860: END IF ;
861:
862: RAISE no_data_found;
863: END IF; -- for inv_cache.set_item_rec
864:
865:
866: --uom conversio would already be defined, otherwise it will not come here
867: -- get the final repl qty in the primary UOM
867: -- get the final repl qty in the primary UOM
868: l_prim_repl_qty :=
869: ROUND((x_consol_item_repl_tbl(i).total_demand_qty * get_conversion_rate(l_Item_id,
870: x_consol_item_repl_tbl(i).repl_uom_code,
871: inv_cache.item_rec.primary_uom_code
872: )),
873: g_conversion_precision);
874:
875:
1170:
1171: l_split_wdd_id := l_action_out_rec.result_id_tab(l_action_out_rec.result_id_tab.FIRST);
1172:
1173: l_new_qty_in_repl_uom := ROUND((l_atr * get_conversion_rate(l_item_id,
1174: inv_cache.item_rec.primary_uom_code,
1175: x_consol_item_repl_tbl(i).repl_uom_code )), g_conversion_precision);
1176:
1177: -- update the qty in the existing GTMP record
1178: UPDATE wms_repl_demand_gtmp
1286: --3- For the Item, Adjust the QTY in the CONSOLIDATED TABLE
1287: IF l_prim_repl_qty > 0 THEN
1288: x_consol_item_repl_tbl(i).total_demand_qty :=
1289: ROUND((l_prim_repl_qty * get_conversion_rate(l_item_id,
1290: inv_cache.item_rec.primary_uom_code,
1291: x_consol_item_repl_tbl(i).repl_uom_code
1292: )),
1293: g_conversion_precision);
1294:
2673:
2674:
2675: IF l_source_sub_atr = -9999 THEN
2676: -- Get all item details
2677: IF inv_cache.set_item_rec(p_ORGANIZATION_ID, p_inventory_item_id) THEN
2678: IF (l_debug = 1) THEN
2679: print_debug('Getting Item Attribute Details' );
2680: END IF;
2681: IF inv_cache.item_rec.revision_qty_control_code = 2 THEN
2677: IF inv_cache.set_item_rec(p_ORGANIZATION_ID, p_inventory_item_id) THEN
2678: IF (l_debug = 1) THEN
2679: print_debug('Getting Item Attribute Details' );
2680: END IF;
2681: IF inv_cache.item_rec.revision_qty_control_code = 2 THEN
2682: l_is_revision_ctrl := TRUE;
2683: ELSE
2684: l_is_revision_ctrl := FALSE;
2685: END IF;
2683: ELSE
2684: l_is_revision_ctrl := FALSE;
2685: END IF;
2686:
2687: IF inv_cache.item_rec.lot_control_code = 2 THEN
2688: l_is_lot_ctrl := TRUE;
2689: ELSE
2690: l_is_lot_ctrl := FALSE;
2691: END IF;
2689: ELSE
2690: l_is_lot_ctrl := FALSE;
2691: END IF;
2692:
2693: IF inv_cache.item_rec.serial_number_control_code NOT IN (1,6) THEN
2694: l_is_serial_ctrl := FALSE;
2695: ELSE
2696: l_is_serial_ctrl := TRUE;
2697: END IF;
2701: print_debug('Error: Item detail not found');
2702: END IF;
2703: x_return_status := fnd_api.g_ret_sts_success;
2704: x_create_qty := 0;
2705: END IF; -- for inv_cache.set_item_rec
2706:
2707: IF (l_debug = 1) THEN
2708: print_debug('Clearing Qty Tree' );
2709: END IF;
3466: IF p_consol_item_repl_tbl(i).final_replenishment_qty > 0 THEN
3467: -- Upp the replenishment qty appropriately
3468:
3469: --set the item info in cache
3470: IF inv_cache.set_item_rec(p_consol_item_repl_tbl(i).ORGANIZATION_ID, p_consol_item_repl_tbl(i).item_id) THEN
3471:
3472: -- for Dynamic replenishment or next level repl, p_Repl_Lot_Size will be passed as NULL
3473: IF p_repl_lot_size IS NULL THEN
3474: IF l_debug = 1 THEN
3487: ELSIF l_src_pick_uom IS NOT NULL THEN
3488: -- GET THE MULITPLE OF THE "UNIT QTY CONVERSION OF the source sub pick UOM"
3489: l_conversion := ROUND(get_conversion_rate(p_consol_item_repl_tbl(i).Item_id,
3490: l_src_pick_uom,
3491: inv_cache.item_rec.primary_uom_code),
3492: g_conversion_precision);
3493:
3494:
3495: IF l_debug = 1 THEN
3512: -- would not have been marked otherwise
3513: l_txn_prim_qty :=
3514: ROUND((p_consol_item_repl_tbl(i).final_replenishment_qty * get_conversion_rate(p_consol_item_repl_tbl(i).Item_id,
3515: p_consol_item_repl_tbl(i).repl_uom_code,
3516: inv_cache.item_rec.primary_uom_code)),
3517: g_conversion_precision);
3518:
3519: -- UPP the PRIMARY QTY in the INTEGRAL MULITPLE of l_repl_lot_size_prim
3520: -- to habndle the case in which Repl_Lot_Size is exact multiple of repl qty
3528: IF l_conversion > 0 THEN
3529: -- convert the final qty into apporopriate qty based on l_src_pick_uom
3530: p_consol_item_repl_tbl(i).final_replenishment_qty :=
3531: ROUND((l_txn_prim_qty * get_conversion_rate(p_consol_item_repl_tbl(i).Item_id,
3532: inv_cache.item_rec.primary_uom_code,
3533: l_src_pick_uom )),
3534: g_conversion_precision);
3535:
3536: -- UPDATE THE UOM CODE AS WELL
3541: --ADJUST THE INCREASED QTY IN THE p_consol_item_repl_tbl(i).repl_uom_code uom only
3542: IF l_conversion > 0 THEN
3543: p_consol_item_repl_tbl(i).final_replenishment_qty :=
3544: ROUND((l_txn_prim_qty * get_conversion_rate(p_consol_item_repl_tbl(i).Item_id,
3545: inv_cache.item_rec.primary_uom_code,
3546: p_consol_item_repl_tbl(i).Repl_UOM_Code )),
3547: g_conversion_precision);
3548:
3549: -- UOM_CODE remains same here
3568: l_Repl_Lot_Size * (1 + FLOOR(p_consol_item_repl_tbl(i).final_replenishment_qty / l_Repl_Lot_Size));
3569: END IF;
3570: END IF; -- for p_repl_lot_size IS NOT NULL
3571:
3572: END IF; -- FOR inv_cache.set_item_rec
3573:
3574: ELSE -- menas final_replenishment_qty <= 0
3575: -- Mark negative qty to avoid further considerations and creating MO
3576: p_consol_item_repl_tbl(i).final_replenishment_qty := -9999;
3939:
3940: -----------------------
3941: -- this is within the loop for each item
3942:
3943: IF inv_cache.set_item_rec(p_consol_item_repl_tbl(i).ORGANIZATION_ID, p_consol_item_repl_tbl(i).item_id) THEN
3944: l_txn_prim_qty :=
3945: ROUND((p_consol_item_repl_tbl(i).final_replenishment_qty * get_conversion_rate(p_consol_item_repl_tbl(i).Item_id,
3946: p_consol_item_repl_tbl(i).repl_uom_code,
3947: inv_cache.item_rec.primary_uom_code)),
3943: IF inv_cache.set_item_rec(p_consol_item_repl_tbl(i).ORGANIZATION_ID, p_consol_item_repl_tbl(i).item_id) THEN
3944: l_txn_prim_qty :=
3945: ROUND((p_consol_item_repl_tbl(i).final_replenishment_qty * get_conversion_rate(p_consol_item_repl_tbl(i).Item_id,
3946: p_consol_item_repl_tbl(i).repl_uom_code,
3947: inv_cache.item_rec.primary_uom_code)),
3948: g_conversion_precision);
3949:
3950:
3951: INSERT INTO wms_replenishment_details
3982: demand_line_id,
3983: demand_line_detail_id, -- stored as -9999 for next level
3984: demand_type_id, -- stored as 4 for next level
3985: p_consol_item_repl_tbl(i).item_id, -- Inventory_item_id,
3986: inv_cache.item_rec.primary_uom_code, -- Primary_UOM,
3987: l_txn_prim_qty, -- Primary_Quantity,
3988: repl_sequence_id , --demand_sort_order,
3989: repl_level,
3990: repl_type,
4111:
4112: IF (l_debug = 1) THEN
4113: print_debug('primary l_quantity detailed is :'|| l_prim_quantity_detailed);
4114: print_debug('l_num_detail_recs is :'|| l_num_detail_recs);
4115: print_debug('Primary UOM code :'||inv_cache.item_rec.primary_uom_code);
4116: END IF;
4117:
4118: --Convert the MOL detailed qty into MOL UOM code qty
4119: IF inv_cache.item_rec.primary_uom_code <> p_consol_item_repl_tbl(i).repl_uom_code THEN
4115: print_debug('Primary UOM code :'||inv_cache.item_rec.primary_uom_code);
4116: END IF;
4117:
4118: --Convert the MOL detailed qty into MOL UOM code qty
4119: IF inv_cache.item_rec.primary_uom_code <> p_consol_item_repl_tbl(i).repl_uom_code THEN
4120:
4121: l_quantity_detailed :=
4122: ROUND((l_prim_quantity_detailed* get_conversion_rate(p_consol_item_repl_tbl(i).item_id,
4123: inv_cache.item_rec.primary_uom_code,
4119: IF inv_cache.item_rec.primary_uom_code <> p_consol_item_repl_tbl(i).repl_uom_code THEN
4120:
4121: l_quantity_detailed :=
4122: ROUND((l_prim_quantity_detailed* get_conversion_rate(p_consol_item_repl_tbl(i).item_id,
4123: inv_cache.item_rec.primary_uom_code,
4124: p_consol_item_repl_tbl(i).Repl_UOM_Code )),
4125: g_conversion_precision);
4126:
4127: ELSE
4996: l_prev_sub_code <> x_consol_item_repl_tbl(i).repl_to_subinventory_code ) THEN
4997:
4998: l_atr := 0;
4999: -- Get all item details
5000: IF inv_cache.set_item_rec(x_consol_item_repl_tbl(i).ORGANIZATION_ID, x_consol_item_repl_tbl(i).item_id) THEN
5001:
5002: IF (l_debug = 1) THEN
5003: print_debug('Getting Item Attribute Details' );
5004: END IF;
5002: IF (l_debug = 1) THEN
5003: print_debug('Getting Item Attribute Details' );
5004: END IF;
5005:
5006: IF inv_cache.item_rec.revision_qty_control_code = 2 THEN
5007: l_is_revision_ctrl := TRUE;
5008: ELSE
5009: l_is_revision_ctrl := FALSE;
5010: END IF;
5008: ELSE
5009: l_is_revision_ctrl := FALSE;
5010: END IF;
5011:
5012: IF inv_cache.item_rec.lot_control_code = 2 THEN
5013: l_is_lot_ctrl := TRUE;
5014: ELSE
5015: l_is_lot_ctrl := FALSE;
5016: END IF;
5014: ELSE
5015: l_is_lot_ctrl := FALSE;
5016: END IF;
5017:
5018: IF inv_cache.item_rec.serial_number_control_code NOT IN (1,6) THEN
5019: l_is_serial_ctrl := FALSE;
5020: ELSE
5021: l_is_serial_ctrl := TRUE;
5022: END IF;
5026: print_debug('Error: Item detail not found');
5027: END IF;
5028: l_return_status := fnd_api.g_ret_sts_error;
5029: GOTO next_onhd_consol_rec;
5030: END IF; -- for inv_cache.set_item_rec
5031:
5032:
5033: IF (l_debug = 1) THEN
5034: print_debug('Clearing Qty Tree' );
7072: -- Scan each locator in the sub for capacity
7073: L_CUR_SUB_HAS_CAPACITY := FALSE;
7074:
7075: -- Setting Item information in the Cache
7076: IF inv_cache.set_item_rec(l_open_repl_mo.organization_id, l_open_repl_mo.inventory_item_id) THEN
7077: NULL;
7078: IF (l_debug = 1) THEN
7079: print_debug('Primary UOM for the Item:' ||inv_cache.item_rec.primary_uom_code);
7080: END IF;
7075: -- Setting Item information in the Cache
7076: IF inv_cache.set_item_rec(l_open_repl_mo.organization_id, l_open_repl_mo.inventory_item_id) THEN
7077: NULL;
7078: IF (l_debug = 1) THEN
7079: print_debug('Primary UOM for the Item:' ||inv_cache.item_rec.primary_uom_code);
7080: END IF;
7081: END IF;
7082:
7083: OPEN c_locators_in_sub(l_open_repl_mo.organization_id, l_open_repl_mo.TO_SUBINVENTORY_CODE);
7142: , p_organization_id => l_open_repl_mo.organization_id
7143: , p_subinventory_code => l_open_repl_mo.TO_SUBINVENTORY_CODE
7144: , p_locator_id => l_loc_id
7145: , p_inventory_item_id => l_open_repl_mo.inventory_item_id
7146: , p_unit_volume => inv_cache.item_rec.unit_volume
7147: , p_unit_volume_uom_code =>inv_cache.item_rec.volume_uom_code
7148: , p_unit_weight =>inv_cache.item_rec.unit_weight
7149: , p_unit_weight_uom_code =>inv_cache.item_rec.weight_uom_code
7150: , p_primary_uom =>inv_cache.item_rec.primary_uom_code
7143: , p_subinventory_code => l_open_repl_mo.TO_SUBINVENTORY_CODE
7144: , p_locator_id => l_loc_id
7145: , p_inventory_item_id => l_open_repl_mo.inventory_item_id
7146: , p_unit_volume => inv_cache.item_rec.unit_volume
7147: , p_unit_volume_uom_code =>inv_cache.item_rec.volume_uom_code
7148: , p_unit_weight =>inv_cache.item_rec.unit_weight
7149: , p_unit_weight_uom_code =>inv_cache.item_rec.weight_uom_code
7150: , p_primary_uom =>inv_cache.item_rec.primary_uom_code
7151: , p_transaction_uom => l_open_repl_mo.uom_code
7144: , p_locator_id => l_loc_id
7145: , p_inventory_item_id => l_open_repl_mo.inventory_item_id
7146: , p_unit_volume => inv_cache.item_rec.unit_volume
7147: , p_unit_volume_uom_code =>inv_cache.item_rec.volume_uom_code
7148: , p_unit_weight =>inv_cache.item_rec.unit_weight
7149: , p_unit_weight_uom_code =>inv_cache.item_rec.weight_uom_code
7150: , p_primary_uom =>inv_cache.item_rec.primary_uom_code
7151: , p_transaction_uom => l_open_repl_mo.uom_code
7152: , p_base_uom => l_base_uom_code
7145: , p_inventory_item_id => l_open_repl_mo.inventory_item_id
7146: , p_unit_volume => inv_cache.item_rec.unit_volume
7147: , p_unit_volume_uom_code =>inv_cache.item_rec.volume_uom_code
7148: , p_unit_weight =>inv_cache.item_rec.unit_weight
7149: , p_unit_weight_uom_code =>inv_cache.item_rec.weight_uom_code
7150: , p_primary_uom =>inv_cache.item_rec.primary_uom_code
7151: , p_transaction_uom => l_open_repl_mo.uom_code
7152: , p_base_uom => l_base_uom_code
7153: , p_transaction_quantity => (l_open_repl_mo.mol_qty - l_open_repl_mo.mol_detailed_qty - l_open_repl_mo.mol_delivered_qty));
7146: , p_unit_volume => inv_cache.item_rec.unit_volume
7147: , p_unit_volume_uom_code =>inv_cache.item_rec.volume_uom_code
7148: , p_unit_weight =>inv_cache.item_rec.unit_weight
7149: , p_unit_weight_uom_code =>inv_cache.item_rec.weight_uom_code
7150: , p_primary_uom =>inv_cache.item_rec.primary_uom_code
7151: , p_transaction_uom => l_open_repl_mo.uom_code
7152: , p_base_uom => l_base_uom_code
7153: , p_transaction_quantity => (l_open_repl_mo.mol_qty - l_open_repl_mo.mol_detailed_qty - l_open_repl_mo.mol_delivered_qty));
7154:
7207: END IF;
7208:
7209: L_UNIT_CONV_QTY := ROUND(1* get_conversion_rate(l_open_repl_mo.inventory_item_id,
7210: l_pick_uom_code,
7211: inv_cache.item_rec.primary_uom_code),
7212: g_conversion_precision);
7213:
7214: IF (l_debug = 1) THEN
7215: print_debug(' L_UNIT_CONV_QTY:' ||L_UNIT_CONV_QTY);
7336: END;
7337:
7338:
7339: --Convert the MOL detailed qty into MOL UOM code qty
7340: IF inv_cache.item_rec.primary_uom_code <> l_open_repl_mo.uom_code THEN
7341:
7342: l_quantity_detailed :=
7343: ROUND((l_prim_quantity_detailed* get_conversion_rate(l_open_repl_mo.inventory_item_id,
7344: inv_cache.item_rec.primary_uom_code,
7340: IF inv_cache.item_rec.primary_uom_code <> l_open_repl_mo.uom_code THEN
7341:
7342: l_quantity_detailed :=
7343: ROUND((l_prim_quantity_detailed* get_conversion_rate(l_open_repl_mo.inventory_item_id,
7344: inv_cache.item_rec.primary_uom_code,
7345: l_open_repl_mo.UOM_Code )),
7346: g_conversion_precision);
7347:
7348: ELSE