Here :
tableextension 50001 WfsSalesHeaderExt extends "Sales Header"
{
trigger OnAfterInsert()
var
NewProjectCode: Code[20];
DimCode: Code[20];
SalesHeader: Record "Sales Header";
DimensionValue_Old: Record "Dimension Value";
DimensionValue_New: Record "Dimension Value";
DimVal: Record "Dimension Value";
DimSetEntry: Record "Dimension Set Entry";
DimSetEntryTmp: Record "Dimension Set Entry" temporary;
DImMgt: Codeunit DimensionManagement;
begin
Clear(SalesHeader);
// Find the last Dimension Value for the Dimension Code = Project & increment the value by 1.
DimensionValue_Old.SetFilter("Dimension Code", '=Project');
DimensionValue_Old.FindLast();
NewProjectCode := IncStr(DimensionValue_Old.Code);
//Add the incremented Dimension Value to the Master Table
DimensionValue_New.Init();
DimensionValue_New."Dimension Code" := DimensionValue_Old."Dimension Code";
DimensionValue_New.Code := NewProjectCode;
DimensionValue_New.Name := NewProjectCode;
DimensionValue_New."Dimension Value Type" := DimensionValue_Old."Dimension Value Type";
DimensionValue_New.Insert();
SalesHeader.SetFilter("Document Type", '=Quote');
SalesHeader.FindLast();
if SalesHeader."Dimension Set ID" = 0 then begin
DimSetEntryTmp.DeleteAll();
//Insert the incremented Dimension Value into a temporary Dimension Set Entry table.
DimVal.Get(DimensionValue_New."Dimension Code", NewProjectCode);
DimSetEntryTmp.Init();
DimSetEntryTmp.Validate("Dimension Code", DimensionValue_New."Dimension Code");
DimSetEntryTmp.Validate("Dimension Value Code", NewProjectCode);
DimSetEntryTmp."Dimension Value ID" := DimVal."Dimension Value ID";
DimSetEntryTmp.Insert();
// Get Dimension Set ID of the recently added dimension by calling function GetDimensionSetID of CU 408,
//Use the above mentioned temporary Dimension Set Entry table as parameter.
//Finally update this Dimension Set ID with that of the last entered Sales Quote.
SalesHeader."Dimension Set ID" := DImMgt.GetDimensionSetID(DimSetEntryTmp);
SalesHeader.Modify();
end
else begin
Clear(DimSetEntry);
DimSetEntryTmp.DeleteAll();
DimSetEntry.SetRange("Dimension Set ID", SalesHeader."Dimension Set ID");
DimCode := 'Project';
if (DimSetEntry.FindFirst()) then begin
repeat
if (DimSetEntry."Dimension Code" <> DimCode) then begin
DimSetEntryTmp.Init();
DimSetEntryTmp.Validate("Dimension Code", DimSetEntry."Dimension Code");
DimSetEntryTmp.Validate("Dimension Value Code", DimSetEntry."Dimension Value Code");
DimSetEntryTmp."Dimension Value ID" := DimSetEntry."Dimension Value ID";
DimSetEntryTmp.Insert();
end;
until DimSetEntry.Next = 0;
end;
//Insert the incremented Dimension Value into a temporary Dimension Set Entry table.
DimVal.Get(DimensionValue_New."Dimension Code", NewProjectCode);
DimSetEntryTmp.Init();
DimSetEntryTmp.Validate("Dimension Code", DimensionValue_New."Dimension Code");
DimSetEntryTmp.Validate("Dimension Value Code", NewProjectCode);
DimSetEntryTmp."Dimension Value ID" := DimVal."Dimension Value ID";
DimSetEntryTmp.Insert();
// Get Dimension Set ID of the recently added dimension by calling function GetDimensionSetID of CU 408,
//Use the above mentioned temporary Dimension Set Entry table as parameter.
//Finally update this Dimension Set ID with that of the last entered Sales Quote.
SalesHeader."Dimension Set ID" := DImMgt.GetDimensionSetID(DimSetEntryTmp);
SalesHeader.Modify();
end;
end;
end;