Codeunit 99000780 Mfg. Dimension Management, source in 29
Source29
src/Layers/W1/BaseApp/Manufacturing/Finance/Dimension/MfgDimensionManagement.Codeunit.al65 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.Finance.Dimension;
using Microsoft.Manufacturing.WorkCenter;
using Microsoft.Purchases.Document;
/// <summary>
/// Manages dimension functionality specific to manufacturing objects including work center dimension integration.
/// Handles global dimension updates for manufacturing master data and supports dimension validation for manufacturing-related transactions.
/// </summary>
codeunit 99000780 "Mfg. Dimension Management"
{
[EventSubscriber(ObjectType::Table, Database::"Default Dimension", 'OnAfterUpdateGlobalDimCode', '', true, false)]
local procedure OnAfterUpdateGlobalDimCode(GlobalDimCodeNo: Integer; TableID: Integer; AccNo: Code[20]; NewDimValue: Code[20])
begin
if TableID = Database::"Work Center" then
UpdateWorkCenterGlobalDimCode(GlobalDimCodeNo, AccNo, NewDimValue);
end;
local procedure UpdateWorkCenterGlobalDimCode(GlobalDimCodeNo: Integer; WorkCenterNo: Code[20]; NewDimValue: Code[20])
var
WorkCenter: Record "Work Center";
begin
if WorkCenter.Get(WorkCenterNo) then begin
case GlobalDimCodeNo of
1:
WorkCenter."Global Dimension 1 Code" := NewDimValue;
2:
WorkCenter."Global Dimension 2 Code" := NewDimValue;
else
OnUpdateWorkCenterGlobalDimCodeCaseElse(GlobalDimCodeNo, WorkCenterNo, NewDimValue);
end;
WorkCenter.Modify(true);
end;
end;
/// <summary>
/// Integration event raised for handling additional global dimension code updates on work centers beyond global dimensions 1 and 2.
/// Enables custom dimension management for work center records when shortcut dimensions are updated.
/// </summary>
/// <param name="GlobalDimCodeNo">Global dimension number being updated (3-8)</param>
/// <param name="WorkCenterNo">Work center number being updated</param>
/// <param name="NewDimValue">New dimension value code to assign</param>
[IntegrationEvent(false, false)]
local procedure OnUpdateWorkCenterGlobalDimCodeCaseElse(GlobalDimCodeNo: Integer; WorkCenterNo: Code[20]; NewDimValue: Code[20])
begin
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Check Dimensions", 'OnCheckDimValuePostingOnAfterCreateDimTableIDs', '', true, false)]
local procedure OnCheckDimValuePostingOnAfterCreateDimTableIDs(RecordVariant: Variant; var TableIDArr: array[10] of Integer; var NumberArr: array[10] of Code[20])
var
PurchaseLine: Record "Purchase Line";
RecRef: RecordRef;
begin
RecRef.GetTable(RecordVariant);
if RecRef.Number = Database::"Purchase Line" then begin
RecRef.SetTable(PurchaseLine);
TableIDArr[3] := Database::"Work Center";
NumberArr[3] := PurchaseLine."Work Center No.";
end;
end;
}