Codeunit 99000867 Mfg. Order Planning Mgt.
- App
- Base Application
- Namespace
- Microsoft.Inventory.Requisition
- Versions
- 27-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Manufacturing/Inventory/Requisition/MfgOrderPlanningMgt.Codeunit.al81 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Inventory.Requisition;
using Microsoft.Inventory.Item.Substitution;
using Microsoft.Inventory.Planning;
using Microsoft.Manufacturing.Document;
codeunit 99000867 "Mfg. Order Planning Mgt."
{
SingleInstance = true;
var
ProdOrderComp: Record "Prod. Order Component";
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Order Planning Mgt.", 'OnInsertAltSupplyLocationOnAfterSelectSubstitution', '', true, false)]
local procedure OnInsertAltSupplyLocationOnAfterSelectSubstitution(var RequisitionLine: Record "Requisition Line"; var TempItemSub: Record "Item Substitution" temporary)
var
MfgItemSubstitution: Codeunit "Mfg. Item Substitution";
begin
ProdOrderComp.Get(RequisitionLine."Demand Subtype", RequisitionLine."Demand Order No.", RequisitionLine."Demand Line No.", RequisitionLine."Demand Ref. No.");
MfgItemSubstitution.UpdateProdOrderComp(ProdOrderComp, TempItemSub."Substitute No.", TempItemSub."Substitute Variant Code");
ProdOrderComp.Modify(true);
ProdOrderComp.AutoReserve();
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Order Planning Mgt.", 'OnInsertAltSupplyLocationOnUpdateReqLine', '', true, false)]
local procedure OnInsertAltSupplyLocationOnUpdateReqLine(var RequisitionLine: Record "Requisition Line"; var TempItemSub: Record "Item Substitution" temporary)
var
TempReqLine2: Record "Requisition Line" temporary;
OrderPlanningMgt: Codeunit "Order Planning Mgt.";
PlanningLineMgt: Codeunit "Planning Line Management";
UnAvailableQtyBase: Decimal;
begin
TempReqLine2 := RequisitionLine; // Save Original Line
UnAvailableQtyBase :=
OrderPlanningMgt.CalcNeededQty(TempItemSub."Quantity Avail. on Shpt. Date", TempReqLine2."Demand Quantity (Base)");
// Update Req.Line
RequisitionLine."Worksheet Template Name" := TempReqLine2."Worksheet Template Name";
RequisitionLine."Journal Batch Name" := TempReqLine2."Journal Batch Name";
RequisitionLine."Line No." := TempReqLine2."Line No.";
RequisitionLine."Location Code" := ProdOrderComp."Location Code";
RequisitionLine."Bin Code" := ProdOrderComp."Bin Code";
RequisitionLine.Validate("No.", ProdOrderComp."Item No.");
RequisitionLine.Validate("Variant Code", ProdOrderComp."Variant Code");
RequisitionLine."Unit Of Measure Code (Demand)" := ProdOrderComp."Unit of Measure Code";
RequisitionLine."Qty. per UOM (Demand)" := ProdOrderComp."Qty. per Unit of Measure";
RequisitionLine.SetSupplyQty(TempReqLine2."Demand Quantity (Base)", UnAvailableQtyBase);
RequisitionLine.SetSupplyDates(TempReqLine2."Demand Date");
RequisitionLine."Original Item No." := TempReqLine2."No.";
RequisitionLine."Original Variant Code" := TempReqLine2."Variant Code";
OnBeforeReqLineModify(RequisitionLine, TempReqLine2, ProdOrderComp);
#if not CLEAN27
OrderPlanningMgt.RunOnBeforeReqLineModify(RequisitionLine, TempReqLine2, ProdOrderComp);
#endif
RequisitionLine.Modify();
PlanningLineMgt.Calculate(RequisitionLine, 1, true, true, 0);
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Order Planning Mgt.", 'OnSubstitutionPossibleOnAfterCheckReqLine', '', true, false)]
local procedure OnSubstitutionPossibleOnAfterCheckReqLine(var RequisitionLine: Record "Requisition Line"; var ShouldExit: Boolean)
begin
if ProdOrderComp.Get(
RequisitionLine."Demand Subtype",
RequisitionLine."Demand Order No.",
RequisitionLine."Demand Line No.",
RequisitionLine."Demand Ref. No.")
then
if ProdOrderComp."Supplied-by Line No." <> 0 then
ShouldExit := true;
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeReqLineModify(var RequisitionLine: Record "Requisition Line"; RequisitionLine2: Record "Requisition Line"; ProdOrderComponent: Record Microsoft.Manufacturing.Document."Prod. Order Component")
begin
end;
}