Codeunit 7154 ItemStatisticsCache
- App
- Base Application
- Namespace
- Microsoft.Inventory.Analysis
- Versions
- 28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Inventory/Analysis/ItemStatisticsCache.Codeunit.al87 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.Inventory.Analysis;
using Microsoft.Inventory.Item;
codeunit 7154 ItemStatisticsCache
{
var
TempItemStatisticsCache: Record "Item Statistics Cache" temporary;
Params: Dictionary of [Text, Text];
trigger OnRun()
var
Item: Record Item;
ItemStatisticsCache: Record "Item Statistics Cache";
Results: Dictionary of [Text, Text];
CurrentDate: Date;
ItemDateFilters: array[4] of Text[30];
PriorPeriodItemDateFilters: array[4] of Text[30];
begin
Params := Page.GetBackgroundParameters();
GetCurrentDate(CurrentDate);
GetItemDateFilters(ItemDateFilters);
GetPriorPeriodItemDateFilters(PriorPeriodItemDateFilters);
Item.Get(CopyStr(Params.Get('ItemNo'), 1, 20));
ItemStatisticsCache.Get(Item."No.");
TempItemStatisticsCache.Init();
TempItemStatisticsCache.Copy(ItemStatisticsCache);
TempItemStatisticsCache.Insert(false);
TempItemStatisticsCache.UpdateIfNeeded(Item, CurrentDate, ItemDateFilters, PriorPeriodItemDateFilters);
SetResults(Results);
Page.SetBackgroundTaskResult(Results);
end;
local procedure GetCurrentDate(var CurrentDate: Date)
begin
Evaluate(CurrentDate, Params.Get('CurrentDate'));
end;
local procedure GetItemDateFilters(var ItemDateFilters: array[4] of Text[30])
begin
ItemDateFilters[1] := CopyStr(Params.Get('ItemDateFilter1'), 1, 30);
ItemDateFilters[2] := CopyStr(Params.Get('ItemDateFilter2'), 1, 30);
ItemDateFilters[3] := CopyStr(Params.Get('ItemDateFilter3'), 1, 30);
ItemDateFilters[4] := CopyStr(Params.Get('ItemDateFilter4'), 1, 30);
end;
local procedure GetPriorPeriodItemDateFilters(var PriorPeriodItemDateFilters: array[4] of Text[30])
begin
PriorPeriodItemDateFilters[1] := CopyStr(Params.Get('PriorPeriodItemDateFilter1'), 1, 30);
PriorPeriodItemDateFilters[2] := CopyStr(Params.Get('PriorPeriodItemDateFilter2'), 1, 30);
PriorPeriodItemDateFilters[3] := CopyStr(Params.Get('PriorPeriodItemDateFilter3'), 1, 30);
end;
local procedure SetResults(var Results: Dictionary of [Text, Text])
begin
Results.Add('LastUpdated', Format(TempItemStatisticsCache."LastUpdated"));
Results.Add('CurrentInventoryValue', Format(TempItemStatisticsCache.CurrentInventoryValue));
Results.Add('ExpiredStockValue', Format(TempItemStatisticsCache.ExpiredStockValue));
Results.Add('SalesGrowthRateThisPeriod', Format(TempItemStatisticsCache.SalesGrowthRateThisPeriod));
Results.Add('SalesGrowthRateThisFY', Format(TempItemStatisticsCache.SalesGrowthRateThisFY));
Results.Add('SalesGrowthRateLastFY', Format(TempItemStatisticsCache.SalesGrowthRateLastFY));
Results.Add('ReturnRateThisPeriod', Format(TempItemStatisticsCache.ReturnRateThisPeriod));
Results.Add('ReturnRateThisFY', Format(TempItemStatisticsCache.ReturnRateThisFY));
Results.Add('ReturnRateLastFY', Format(TempItemStatisticsCache.ReturnRateLastFY));
Results.Add('ReturnRateLifetime', Format(TempItemStatisticsCache.ReturnRateLifetime));
Results.Add('NetSalesLCYThisPeriod', Format(TempItemStatisticsCache.NetSalesLCYThisPeriod));
Results.Add('NetSalesLCYThisFY', Format(TempItemStatisticsCache.NetSalesLCYThisFY));
Results.Add('NetSalesLCYLastFY', Format(TempItemStatisticsCache.NetSalesLCYLastFY));
Results.Add('NetSalesLCYLifetime', Format(TempItemStatisticsCache.NetSalesLCYLifetime));
Results.Add('GrossMarginThisPeriod', Format(TempItemStatisticsCache.GrossMarginThisPeriod));
Results.Add('GrossMarginThisFY', Format(TempItemStatisticsCache.GrossMarginThisFY));
Results.Add('GrossMarginLastFY', Format(TempItemStatisticsCache.GrossMarginLastFY));
Results.Add('GrossMarginLifetime', Format(TempItemStatisticsCache.GrossMarginLifetime));
end;
}