Codeunit 6306 PBI Aged Acc. Calc, source in 29
Source29
src/Layers/W1/BaseApp/Integration/PowerBI/ReportingData/PBIAgedAccCalc.Codeunit.al113 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.Integration.PowerBI;
using Microsoft.Finance.ReceivablesPayables;
using Microsoft.Utilities;
using System.Environment;
using System.Visualization;
codeunit 6306 "PBI Aged Acc. Calc"
{
trigger OnRun()
begin
end;
var
BusinessChartBuffer: Record "Business Chart Buffer";
TempEntryNoAmountBuffer: Record "Entry No. Amount Buffer" temporary;
AgedAccReceivable: Codeunit "Aged Acc. Receivable";
AgedAccPayable: Codeunit "Aged Acc. Payable";
NoOfPeriods: Integer;
FormatedPeriod: Text[30];
[Scope('OnPrem')]
procedure GetValues(var TempPowerBIChartBuffer: Record "Power BI Chart Buffer" temporary; ChartCodeunitID: Integer; ChartName: Text)
begin
SetPeriodAndUpdateChart(TempPowerBIChartBuffer, ChartCodeunitID, ChartName);
end;
local procedure SetPeriodAndUpdateChart(var TempPowerBIChartBuffer: Record "Power BI Chart Buffer" temporary; ChartCodeunitID: Integer; ChartName: Text)
var
SelectedChartDefinition: Record "Chart Definition";
LogInManagement: Codeunit LogInManagement;
ChartManagement: Codeunit "Chart Management";
i: Integer;
begin
if SelectedChartDefinition.Get(ChartCodeunitID, ChartName) then
for i := 0 to 4 do begin
BusinessChartBuffer.Reset();
BusinessChartBuffer.DeleteAll();
TempEntryNoAmountBuffer.Reset();
TempEntryNoAmountBuffer.DeleteAll();
BusinessChartBuffer."Period Length" := i;
ChartManagement.SetPeriodLength(SelectedChartDefinition, BusinessChartBuffer, BusinessChartBuffer."Period Length", false);
BusinessChartBuffer."Period Filter Start Date" := LogInManagement.GetDefaultWorkDate();
case SelectedChartDefinition."Code Unit ID" of
CODEUNIT::"Aged Acc. Payable":
AgedAccPayable.UpdateData(BusinessChartBuffer, TempEntryNoAmountBuffer);
CODEUNIT::"Aged Acc. Receivable":
AgedAccReceivable.UpdateDataPerGroup(BusinessChartBuffer, TempEntryNoAmountBuffer);
end;
TempEntryNoAmountBuffer.Reset();
if TempEntryNoAmountBuffer.FindSet() then
repeat
FormatPeriod();
InsertToBuffer(TempPowerBIChartBuffer);
until TempEntryNoAmountBuffer.Next() = 0;
end
end;
local procedure FormatPeriod()
var
TempEntryNoAmountBuffer2: Record "Entry No. Amount Buffer" temporary;
PeriodLength: Text[1];
PeriodOption: Option " ",Next,Previous;
PeriodIndex: Integer;
begin
AgedAccReceivable.InitParameters(BusinessChartBuffer, PeriodLength, NoOfPeriods, TempEntryNoAmountBuffer2);
PeriodIndex := TempEntryNoAmountBuffer."Entry No.";
FormatedPeriod := CopyStr(AgedAccReceivable.FormatColumnName(PeriodIndex, PeriodLength, NoOfPeriods, PeriodOption), 1, 30);
end;
local procedure InsertToBuffer(var TempPowerBIChartBuffer: Record "Power BI Chart Buffer" temporary)
begin
if TempPowerBIChartBuffer.FindLast() then
TempPowerBIChartBuffer.ID += 1
else
TempPowerBIChartBuffer.ID := 1;
TempPowerBIChartBuffer.Value := TempEntryNoAmountBuffer.Amount;
TempPowerBIChartBuffer."Measure Name" := TempEntryNoAmountBuffer."Business Unit Code";
TempPowerBIChartBuffer.Date := FormatedPeriod;
TempPowerBIChartBuffer."Period Type" := BusinessChartBuffer."Period Length";
TempPowerBIChartBuffer."Period Type Sorting" := BusinessChartBuffer."Period Length";
case TempPowerBIChartBuffer."Period Type" of
BusinessChartBuffer."Period Length"::Day:
TempPowerBIChartBuffer."Date Sorting" := TempEntryNoAmountBuffer."Entry No.";
BusinessChartBuffer."Period Length"::Week:
TempPowerBIChartBuffer."Date Sorting" := TempEntryNoAmountBuffer."Entry No." * 10;
BusinessChartBuffer."Period Length"::Month:
TempPowerBIChartBuffer."Date Sorting" := TempEntryNoAmountBuffer."Entry No." * 100;
BusinessChartBuffer."Period Length"::Quarter:
TempPowerBIChartBuffer."Date Sorting" := TempEntryNoAmountBuffer."Entry No." * 1000;
BusinessChartBuffer."Period Length"::Year:
TempPowerBIChartBuffer."Date Sorting" := TempEntryNoAmountBuffer."Entry No." * 10000;
BusinessChartBuffer."Period Length"::"Accounting Period":
TempPowerBIChartBuffer."Date Sorting" := TempEntryNoAmountBuffer."Entry No." * 100000;
end;
if TempEntryNoAmountBuffer."Entry No." = 0 then
TempPowerBIChartBuffer."Date Sorting" := 0;
if TempEntryNoAmountBuffer."Entry No." = (NoOfPeriods - 1) then
TempPowerBIChartBuffer."Date Sorting" := 1000000;
TempPowerBIChartBuffer.Insert();
end;
}