Codeunit 8367 DimPerspectiveDimension, source in 29
Source29
src/Layers/W1/BaseApp/Finance/FinancialReports/DimPerspectiveDimension.Codeunit.al276 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.FinancialReports;
using Microsoft.CashFlow.Forecast;
using Microsoft.Finance.Analysis;
using Microsoft.Finance.Dimension;
using Microsoft.Finance.GeneralLedger.Budget;
using Microsoft.Finance.GeneralLedger.Ledger;
using Microsoft.Finance.GeneralLedger.Setup;
codeunit 8367 DimPerspectiveDimension implements IDimensionPerspective
{
var
DimPerspectiveMgt: Codeunit DimensionPerspectiveMgt;
procedure PopulateLineBufferForReporting(DimPerspectiveName: Record "Dimension Perspective Name"; var TempDimPerspectiveLine: Record "Dimension Perspective Line")
var
AnalysisView: Record "Analysis View";
DimValue: Record "Dimension Value";
TempDimValue: Record "Dimension Value" temporary;
GLSetup: Record "General Ledger Setup";
begin
if not TempDimPerspectiveLine.IsTemporary() then
exit;
if DimPerspectiveName."Analysis View Name" <> '' then begin
AnalysisView.Get(DimPerspectiveName."Analysis View Name");
case DimPerspectiveName."Perspective Type" of
"Dimension Perspective Type"::Dimension1:
DimValue.SetRange("Dimension Code", AnalysisView."Dimension 1 Code");
"Dimension Perspective Type"::Dimension2:
DimValue.SetRange("Dimension Code", AnalysisView."Dimension 2 Code");
"Dimension Perspective Type"::Dimension3:
DimValue.SetRange("Dimension Code", AnalysisView."Dimension 3 Code");
"Dimension Perspective Type"::Dimension4:
DimValue.SetRange("Dimension Code", AnalysisView."Dimension 4 Code");
else
exit;
end;
end else begin
GLSetup.Get();
case DimPerspectiveName."Perspective Type" of
"Dimension Perspective Type"::Dimension1:
DimValue.SetRange("Dimension Code", GLSetup."Global Dimension 1 Code");
"Dimension Perspective Type"::Dimension2:
DimValue.SetRange("Dimension Code", GLSetup."Global Dimension 2 Code");
"Dimension Perspective Type"::Dimension3:
DimValue.SetRange("Dimension Code", GLSetup."Shortcut Dimension 3 Code");
"Dimension Perspective Type"::Dimension4:
DimValue.SetRange("Dimension Code", GLSetup."Shortcut Dimension 4 Code");
"Dimension Perspective Type"::Dimension5:
DimValue.SetRange("Dimension Code", GLSetup."Shortcut Dimension 5 Code");
"Dimension Perspective Type"::Dimension6:
DimValue.SetRange("Dimension Code", GLSetup."Shortcut Dimension 6 Code");
"Dimension Perspective Type"::Dimension7:
DimValue.SetRange("Dimension Code", GLSetup."Shortcut Dimension 7 Code");
"Dimension Perspective Type"::Dimension8:
DimValue.SetRange("Dimension Code", GLSetup."Shortcut Dimension 8 Code");
else
exit;
end;
end;
if DimValue.FindSet() then
repeat
TempDimPerspectiveLine.Init();
TempDimPerspectiveLine.Name := DimPerspectiveName.Name;
TempDimPerspectiveLine."Line No." += 10000;
TempDimPerspectiveLine."Perspective Header" := CopyStr(DimValue.Name, 1, MaxStrLen(TempDimPerspectiveLine."Perspective Header"));
TempDimValue := DimValue;
TempDimValue.SetRecFilter();
case DimPerspectiveName."Perspective Type" of
"Dimension Perspective Type"::Dimension1:
SetDimTotalingFilter(TempDimPerspectiveLine."Dimension 1 Totaling", TempDimValue.GetFilter(Code));
"Dimension Perspective Type"::Dimension2:
SetDimTotalingFilter(TempDimPerspectiveLine."Dimension 2 Totaling", TempDimValue.GetFilter(Code));
"Dimension Perspective Type"::Dimension3:
SetDimTotalingFilter(TempDimPerspectiveLine."Dimension 3 Totaling", TempDimValue.GetFilter(Code));
"Dimension Perspective Type"::Dimension4:
SetDimTotalingFilter(TempDimPerspectiveLine."Dimension 4 Totaling", TempDimValue.GetFilter(Code));
"Dimension Perspective Type"::Dimension5:
SetDimTotalingFilter(TempDimPerspectiveLine."Dimension 5 Totaling", TempDimValue.GetFilter(Code));
"Dimension Perspective Type"::Dimension6:
SetDimTotalingFilter(TempDimPerspectiveLine."Dimension 6 Totaling", TempDimValue.GetFilter(Code));
"Dimension Perspective Type"::Dimension7:
SetDimTotalingFilter(TempDimPerspectiveLine."Dimension 7 Totaling", TempDimValue.GetFilter(Code));
"Dimension Perspective Type"::Dimension8:
SetDimTotalingFilter(TempDimPerspectiveLine."Dimension 8 Totaling", TempDimValue.GetFilter(Code));
end;
TempDimPerspectiveLine.Insert();
until DimValue.Next() = 0;
OnAfterPopulateLineBufferForReporting(DimPerspectiveName, TempDimPerspectiveLine);
end;
local procedure SetDimTotalingFilter(var DimTotaling: Text[80]; FilterText: Text)
begin
DimTotaling := CopyStr(FilterText, 1, MaxStrLen(DimTotaling));
end;
procedure FilterGLEntryByPerspectiveTotaling(DimPerspectiveLine: Record "Dimension Perspective Line"; var GLEntry: Record "G/L Entry")
begin
DimPerspectiveMgt.FilterGLEntryByDimension(DimPerspectiveLine, GLEntry);
end;
procedure FilterGLBudgetEntryByPerspectiveTotaling(DimPerspectiveLine: Record "Dimension Perspective Line"; var GLBudgetEntry: Record "G/L Budget Entry")
begin
DimPerspectiveMgt.FilterGLBudgetEntryByDimension(DimPerspectiveLine, GLBudgetEntry);
end;
procedure FilterCFEntryByPerspectiveTotaling(DimPerspectiveLine: Record "Dimension Perspective Line"; var CFForecastEntry: Record "Cash Flow Forecast Entry")
begin
DimPerspectiveMgt.FilterCFEntryByDimension(DimPerspectiveLine, CFForecastEntry);
end;
procedure FilterAnalysisViewEntryByPerspectiveTotaling(DimPerspectiveLine: Record "Dimension Perspective Line"; var AnalysisViewEntry: Record "Analysis View Entry")
begin
DimPerspectiveMgt.FilterAnalysisViewEntryByDimension(DimPerspectiveLine, AnalysisViewEntry);
end;
procedure FilterAnalysisViewBudgetEntryByPerspectiveTotaling(DimPerspectiveLine: Record "Dimension Perspective Line"; var AnalysisViewBudgetEntry: Record "Analysis View Budget Entry")
begin
DimPerspectiveMgt.FilterAnalysisViewBudgetEntryByDimension(DimPerspectiveLine, AnalysisViewBudgetEntry);
end;
procedure PerspectiveTypeToText(DimPerspectiveName: Record "Dimension Perspective Name"; Type: Enum "Dimension Perspective Type"; var Text: Text): Boolean
var
AnalysisView: Record "Analysis View";
GLSetup: Record "General Ledger Setup";
begin
if DimPerspectiveName."Analysis View Name" = '' then begin
GLSetup.Get();
case Type of
Type::Dimension1:
Text := GLSetup."Global Dimension 1 Code";
Type::Dimension2:
Text := GLSetup."Global Dimension 2 Code";
Type::Dimension3:
Text := GLSetup."Shortcut Dimension 3 Code";
Type::Dimension4:
Text := GLSetup."Shortcut Dimension 4 Code";
Type::Dimension5:
Text := GLSetup."Shortcut Dimension 5 Code";
Type::Dimension6:
Text := GLSetup."Shortcut Dimension 6 Code";
Type::Dimension7:
Text := GLSetup."Shortcut Dimension 7 Code";
Type::Dimension8:
Text := GLSetup."Shortcut Dimension 8 Code";
else
exit(false);
end;
end else begin
AnalysisView.Get(DimPerspectiveName."Analysis View Name");
case Type of
Type::Dimension1:
Text := AnalysisView."Dimension 1 Code";
Type::Dimension2:
Text := AnalysisView."Dimension 2 Code";
Type::Dimension3:
Text := AnalysisView."Dimension 3 Code";
Type::Dimension4:
Text := AnalysisView."Dimension 4 Code";
else
exit(false);
end;
end;
exit(true);
end;
procedure TextToPerspectiveType(DimPerspectiveName: Record "Dimension Perspective Name"; Text: Text; var Type: Enum "Dimension Perspective Type"): Boolean
var
AnalysisView: Record "Analysis View";
GLSetup: Record "General Ledger Setup";
begin
if DimPerspectiveName."Analysis View Name" = '' then begin
GLSetup.Get();
case Text of
GLSetup."Global Dimension 1 Code":
Type := Type::Dimension1;
GLSetup."Global Dimension 2 Code":
Type := Type::Dimension2;
GLSetup."Shortcut Dimension 3 Code":
Type := Type::Dimension3;
GLSetup."Shortcut Dimension 4 Code":
Type := Type::Dimension4;
GLSetup."Shortcut Dimension 5 Code":
Type := Type::Dimension5;
GLSetup."Shortcut Dimension 6 Code":
Type := Type::Dimension6;
GLSetup."Shortcut Dimension 7 Code":
Type := Type::Dimension7;
GLSetup."Shortcut Dimension 8 Code":
Type := Type::Dimension8;
else
exit(false);
end;
end else begin
AnalysisView.Get(DimPerspectiveName."Analysis View Name");
case Text of
AnalysisView."Dimension 1 Code":
Type := Type::Dimension1;
AnalysisView."Dimension 2 Code":
Type := Type::Dimension2;
AnalysisView."Dimension 3 Code":
Type := Type::Dimension3;
AnalysisView."Dimension 4 Code":
Type := Type::Dimension4;
else
exit(false);
end;
end;
exit(true);
end;
procedure InsertBufferForPerspectiveTotalingLookup(DimPerspectiveName: Record "Dimension Perspective Name"; Type: Enum "Dimension Perspective Type"; var DimSelection: Page "Dimension Selection")
var
AnalysisView: Record "Analysis View";
GLSetup: Record "General Ledger Setup";
begin
if DimPerspectiveName."Analysis View Name" = '' then begin
GLSetup.Get();
case Type of
"Dimension Perspective Type"::Dimension1:
if GLSetup."Global Dimension 1 Code" <> '' then
DimSelection.InsertDimSelBuf(false, GLSetup."Global Dimension 1 Code", '');
"Dimension Perspective Type"::Dimension2:
if GLSetup."Global Dimension 2 Code" <> '' then
DimSelection.InsertDimSelBuf(false, GLSetup."Global Dimension 2 Code", '');
"Dimension Perspective Type"::Dimension3:
if GLSetup."Shortcut Dimension 3 Code" <> '' then
DimSelection.InsertDimSelBuf(false, GLSetup."Shortcut Dimension 3 Code", '');
"Dimension Perspective Type"::Dimension4:
if GLSetup."Shortcut Dimension 4 Code" <> '' then
DimSelection.InsertDimSelBuf(false, GLSetup."Shortcut Dimension 4 Code", '');
"Dimension Perspective Type"::Dimension5:
if GLSetup."Shortcut Dimension 5 Code" <> '' then
DimSelection.InsertDimSelBuf(false, GLSetup."Shortcut Dimension 5 Code", '');
"Dimension Perspective Type"::Dimension6:
if GLSetup."Shortcut Dimension 6 Code" <> '' then
DimSelection.InsertDimSelBuf(false, GLSetup."Shortcut Dimension 6 Code", '');
"Dimension Perspective Type"::Dimension7:
if GLSetup."Shortcut Dimension 7 Code" <> '' then
DimSelection.InsertDimSelBuf(false, GLSetup."Shortcut Dimension 7 Code", '');
"Dimension Perspective Type"::Dimension8:
if GLSetup."Shortcut Dimension 8 Code" <> '' then
DimSelection.InsertDimSelBuf(false, GLSetup."Shortcut Dimension 8 Code", '');
end;
end else begin
AnalysisView.Get(DimPerspectiveName."Analysis View Name");
case Type of
"Dimension Perspective Type"::Dimension1:
if AnalysisView."Dimension 1 Code" <> '' then
DimSelection.InsertDimSelBuf(false, AnalysisView."Dimension 1 Code", '');
"Dimension Perspective Type"::Dimension2:
if AnalysisView."Dimension 2 Code" <> '' then
DimSelection.InsertDimSelBuf(false, AnalysisView."Dimension 2 Code", '');
"Dimension Perspective Type"::Dimension3:
if AnalysisView."Dimension 3 Code" <> '' then
DimSelection.InsertDimSelBuf(false, AnalysisView."Dimension 3 Code", '');
"Dimension Perspective Type"::Dimension4:
if AnalysisView."Dimension 4 Code" <> '' then
DimSelection.InsertDimSelBuf(false, AnalysisView."Dimension 4 Code", '');
end;
end;
end;
[IntegrationEvent(false, false)]
local procedure OnAfterPopulateLineBufferForReporting(DimPerspectiveName: Record "Dimension Perspective Name"; var TempDimPerspectiveLine: Record "Dimension Perspective Line")
begin
end;
}