Codeunit 99000861 Mfg. Planning Integration, source in 29
Source29
src/Layers/W1/BaseApp/Manufacturing/Inventory/Planning/MfgPlanningIntegration.Codeunit.al155 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.Planning;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Requisition;
using Microsoft.Inventory.Setup;
using Microsoft.Inventory.Tracking;
using Microsoft.Manufacturing.Document;
using Microsoft.Manufacturing.Forecast;
using Microsoft.Manufacturing.MachineCenter;
using Microsoft.Manufacturing.ProductionBOM;
using Microsoft.Manufacturing.Routing;
using Microsoft.Manufacturing.Setup;
using Microsoft.Manufacturing.WorkCenter;
codeunit 99000861 "Mfg. Planning Integration"
{
[EventSubscriber(ObjectType::Table, Database::"Planning Assignment", 'OnItemChange', '', true, false)]
local procedure PlanningAssignmentOnItemChange(var NewItem: Record Item; var OldItem: Record Item; var PlanningAssignment: Record "Planning Assignment")
var
InventorySetup: Record "Inventory Setup";
ManufacturingSetup: Record "Manufacturing Setup";
begin
if PlanningAssignment.PlanningParametersChanged(NewItem, OldItem) then begin
InventorySetup.Get();
ManufacturingSetup.Get();
if (ManufacturingSetup."Components at Location" <> '') or not InventorySetup."Location Mandatory" then
PlanningAssignment.AssignOne(NewItem."No.", '', ManufacturingSetup."Components at Location", WorkDate());
end;
end;
[EventSubscriber(ObjectType::Table, Database::"Planning Component", 'OnAfterGetUpdateFromSKU', '', true, false)]
local procedure OnAfterGetUpdateFromSKU(var PlanningComponent: Record "Planning Component"; StockeepingUnit: Record "Stockkeeping Unit")
begin
PlanningComponent.Validate("Flushing Method", StockeepingUnit."Flushing Method");
end;
[EventSubscriber(ObjectType::Table, Database::"Planning Component", 'OnAfterValidateCalculationFormula', '', true, false)]
local procedure PlanningCompomentOnAfterValidateCalculationFormula(var PlanningComponent: Record "Planning Component")
begin
if PlanningComponent."Calculation Formula" <> PlanningComponent."Calculation Formula"::"Fixed Quantity" then
PlanningComponent.UpdateExpectedQuantityForPlanningNeeds();
end;
[EventSubscriber(ObjectType::Table, Database::"Planning Component", 'OnGetToBinOnBeforeGetWMSDefaultCode', '', true, false)]
local procedure OnGetToBinOnBeforeGetWMSDefaultCode(var PlanningComponent: Record "Planning Component"; var BinCode: Code[20])
begin
BinCode := PlanningComponent.GetRefOrderTypeBin();
end;
[EventSubscriber(ObjectType::Table, Database::"Planning Error Log", 'OnShowError', '', true, false)]
local procedure PlanningErrorLogOnShowError(RecRef: RecordRef; TableID: Integer)
var
ProdBOMHeader: Record "Production BOM Header";
ProdBOMVersion: Record "Production BOM Version";
RtngHeader: Record "Routing Header";
RtngVersion: Record "Routing Version";
WorkCenter: Record "Work Center";
MachCenter: Record "Machine Center";
MfgSetup: Record "Manufacturing Setup";
begin
case TableID of
DATABASE::"Production BOM Header":
begin
RecRef.SetTable(ProdBOMHeader);
ProdBOMHeader.SetRecFilter();
PAGE.RunModal(PAGE::"Production BOM", ProdBOMHeader);
end;
DATABASE::"Routing Header":
begin
RecRef.SetTable(RtngHeader);
RtngHeader.SetRecFilter();
PAGE.RunModal(PAGE::Routing, RtngHeader);
end;
DATABASE::"Production BOM Version":
begin
RecRef.SetTable(ProdBOMVersion);
ProdBOMVersion.SetRecFilter();
PAGE.RunModal(PAGE::"Production BOM Version", ProdBOMVersion);
end;
DATABASE::"Routing Version":
begin
RecRef.SetTable(RtngVersion);
RtngVersion.SetRecFilter();
PAGE.RunModal(PAGE::"Routing Version", RtngVersion);
end;
DATABASE::"Machine Center":
begin
RecRef.SetTable(MachCenter);
MachCenter.SetRecFilter();
PAGE.RunModal(PAGE::"Machine Center Card", MachCenter);
end;
DATABASE::"Work Center":
begin
RecRef.SetTable(WorkCenter);
WorkCenter.SetRecFilter();
PAGE.RunModal(PAGE::"Work Center Card", WorkCenter);
end;
DATABASE::"Manufacturing Setup":
begin
RecRef.SetTable(MfgSetup);
PAGE.RunModal(0, MfgSetup);
end;
end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Planning Transparency", 'OnSurplusQtyOnSetReservEntryFilters', '', true, false)]
local procedure OnSurplusQtyOnSetReservEntryFilters(var ReservEntry: Record "Reservation Entry"; var RequisitionLine: Record "Requisition Line")
begin
case RequisitionLine."Ref. Order Type" of
RequisitionLine."Ref. Order Type"::"Prod. Order":
begin
ReservEntry.SetRange("Source ID", RequisitionLine."Ref. Order No.");
ReservEntry.SetRange("Source Type", Database::"Prod. Order Line");
ReservEntry.SetRange("Source Subtype", RequisitionLine."Ref. Order Status");
ReservEntry.SetRange("Source Prod. Order Line", RequisitionLine."Ref. Line No.");
end;
end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Planning Transparency", 'OnFindReasonOnAfterSetSurplusType', '', true, false)]
local procedure OnFindReasonOnAfterSetSurplusType(var DemandInventoryProfile: Record "Inventory Profile"; var SurplusType: Enum "Planning Surplus Type")
begin
case DemandInventoryProfile."Source Type" of
Database::"Production Forecast Entry":
SurplusType := SurplusType::Forecast;
end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Planning-Get Parameters", 'OnAtSKUOnBeforeSetSafetyLeadTime', '', true, false)]
local procedure OnAtSKUOnBeforeSetSafetyLeadTime(var GlobalSKU: Record "Stockkeeping Unit"; ManualScheduling: Boolean)
var
ManufacturingSetup: Record "Manufacturing Setup";
begin
if ManualScheduling then begin
ManufacturingSetup.Get();
if ManufacturingSetup."Manual Scheduling" then
GlobalSKU."Safety Lead Time" := ManufacturingSetup."Safety Lead Time for Man. Sch.";
end;
end;
[EventSubscriber(ObjectType::Table, Database::"Inventory Setup", 'OnGetComponentsAtLocation', '', true, false)]
local procedure OnGetComponentsAtLocation(var LocationCode: Code[10])
var
ManufacturingSetup: Record "Manufacturing Setup";
begin
if ManufacturingSetup.Get() then
LocationCode := ManufacturingSetup."Components at Location";
end;
}