[EventSubscriber(ObjectType::Table, Database::"Sales Header", OnAfterInsertEvent, '', false, false)]
local procedure OnafterInsertEvent(var Rec: Record "Sales Header")
var
dims: Record "Dimension Set Entry" temporary;
DimMgt: Codeunit DimensionManagement;
Dimval2: Code[20];
begin
Dimval2 := 'SALES';
if Rec.IsTemporary then
Exit;
Message('OnAfterInsertEvent1');//debug
dims.init();
dims.validate("Dimension Code", 'DEPARTMENT');
dims.validate("Dimension Value Code", 'SALES');
Dims.Insert();
UpdateDimSetOnSalesHeader(Rec, Dims);
Rec.Modify()
end;
procedure UpdateDimSetOnSalesHeader(var SH: Record "Sales Header"; var ToAddDims: Record "Dimension Set Entry" temporary)
var
DimMgt: Codeunit DimensionManagement;
NewDimSet: Record "Dimension Set Entry" temporary;
begin
DimMgt.GetDimensionSet(NewDimSet, SH."Dimension Set ID");
if ToAddDims.FindSet() then
repeat
if NewDimSet.Get(SH."Dimension Set ID", ToAddDims."Dimension Code") then begin
NewDimSet.validate("Dimension Value Code", ToAddDims."Dimension Value Code");
NewDimSet.Modify();
end else begin
NewDimSet := ToAddDims;
NewDimSet."Dimension Set ID" := SH."Dimension Set ID";
NewDimSet.Insert();
end;
until ToAddDims.Next() = 0;
SH."Dimension Set ID" := DimMgt.GetDimensionSetID(NewDimSet);
DimMgt.UpdateGlobalDimFromDimSetID(SH."Dimension Set ID", SH."Shortcut Dimension 1 Code", SH."Shortcut Dimension 2 Code");
end;