Codeunit 7151 ItemAViewEntryToValueEntries, source in 29
Source29
src/Layers/W1/BaseApp/Inventory/Analysis/ItemAViewEntryToValueEntries.Codeunit.al171 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.Finance.Dimension;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Inventory.Ledger;
codeunit 7151 ItemAViewEntryToValueEntries
{
trigger OnRun()
begin
end;
var
ItemAnalysisView: Record "Item Analysis View";
GLSetup: Record "General Ledger Setup";
DimSetEntry: Record "Dimension Set Entry";
procedure GetValueEntries(var ItemAnalysisViewEntry: Record "Item Analysis View Entry"; var TempValueEntry: Record "Value Entry")
var
ValueEntry: Record "Value Entry";
ItemAnalysisViewFilter: Record "Item Analysis View Filter";
UpdateItemAnalysisView: Codeunit "Update Item Analysis View";
StartDate: Date;
EndDate: Date;
GlobalDimValue: Code[20];
begin
ItemAnalysisView.Get(
ItemAnalysisViewEntry."Analysis Area",
ItemAnalysisViewEntry."Analysis View Code");
if ItemAnalysisView."Date Compression" = ItemAnalysisView."Date Compression"::None then begin
if ValueEntry.Get(ItemAnalysisViewEntry."Entry No.") then begin
TempValueEntry := ValueEntry;
TempValueEntry.Insert();
end;
exit;
end;
GLSetup.Get();
StartDate := ItemAnalysisViewEntry."Posting Date";
EndDate := StartDate;
if StartDate < ItemAnalysisView."Starting Date" then
StartDate := 0D
else
if (ItemAnalysisViewEntry."Posting Date" = NormalDate(ItemAnalysisViewEntry."Posting Date")) and
not (ItemAnalysisView."Date Compression" in [ItemAnalysisView."Date Compression"::None, ItemAnalysisView."Date Compression"::Day])
then
case ItemAnalysisView."Date Compression" of
ItemAnalysisView."Date Compression"::Week:
EndDate := ItemAnalysisViewEntry."Posting Date" + 6;
ItemAnalysisView."Date Compression"::Month:
EndDate := CalcDate('<+1M-1D>', ItemAnalysisViewEntry."Posting Date");
ItemAnalysisView."Date Compression"::Quarter:
EndDate := CalcDate('<+3M-1D>', ItemAnalysisViewEntry."Posting Date");
ItemAnalysisView."Date Compression"::Year:
EndDate := CalcDate('<+1Y-1D>', ItemAnalysisViewEntry."Posting Date");
end;
ValueEntry.SetCurrentKey("Item No.", ValueEntry."Posting Date");
ValueEntry.SetRange("Item No.", ItemAnalysisViewEntry."Item No.");
ValueEntry.SetRange("Posting Date", StartDate, EndDate);
ValueEntry.SetRange("Entry No.", 0, ItemAnalysisView."Last Entry No.");
if ItemAnalysisViewEntry.GetFilter("Location Code") <> '' then
ItemAnalysisViewEntry.CopyFilter("Location Code", ValueEntry."Location Code");
if GetGlobalDimValue(GLSetup."Global Dimension 1 Code", ItemAnalysisViewEntry, GlobalDimValue) then
ValueEntry.SetRange("Global Dimension 1 Code", GlobalDimValue)
else
if ItemAnalysisViewFilter.Get(
ItemAnalysisView."Analysis Area",
ItemAnalysisViewEntry."Analysis View Code",
GLSetup."Global Dimension 1 Code")
then
ValueEntry.SetFilter("Global Dimension 1 Code", ItemAnalysisViewFilter."Dimension Value Filter");
if GetGlobalDimValue(GLSetup."Global Dimension 2 Code", ItemAnalysisViewEntry, GlobalDimValue) then
ValueEntry.SetRange("Global Dimension 2 Code", GlobalDimValue)
else
if ItemAnalysisViewFilter.Get(
ItemAnalysisView."Analysis Area",
ItemAnalysisViewEntry."Analysis View Code",
GLSetup."Global Dimension 2 Code")
then
ValueEntry.SetFilter("Global Dimension 2 Code", ItemAnalysisViewFilter."Dimension Value Filter");
if ValueEntry.Find('-') then
repeat
if DimEntryOK(ValueEntry."Dimension Set ID", ItemAnalysisView."Dimension 1 Code", ItemAnalysisViewEntry."Dimension 1 Value Code") and
DimEntryOK(ValueEntry."Dimension Set ID", ItemAnalysisView."Dimension 2 Code", ItemAnalysisViewEntry."Dimension 2 Value Code") and
DimEntryOK(ValueEntry."Dimension Set ID", ItemAnalysisView."Dimension 3 Code", ItemAnalysisViewEntry."Dimension 3 Value Code") and
UpdateItemAnalysisView.DimSetIDInFilter(ValueEntry."Dimension Set ID", ItemAnalysisView)
then
if ((ItemAnalysisView."Analysis Area" = ItemAnalysisView."Analysis Area"::Sales) and
(ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Sale) and
(ValueEntry."Entry Type" <> ValueEntry."Entry Type"::Revaluation)) or
((ItemAnalysisView."Analysis Area" = ItemAnalysisView."Analysis Area"::Purchase) and
(ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Purchase)) or
((ItemAnalysisView."Analysis Area" = ItemAnalysisView."Analysis Area"::Inventory) and
(ValueEntry."Item Ledger Entry Type" <> ValueEntry."Item Ledger Entry Type"::" "))
then
if not TempValueEntry.Get(ValueEntry."Entry No.") then begin
TempValueEntry := ValueEntry;
TempValueEntry.Insert();
end;
until ValueEntry.Next() = 0;
OnAfterGetValueEntries(ValueEntry, ItemAnalysisView, ItemAnalysisViewEntry, GlobalDimValue);
end;
local procedure DimEntryOK(DimSetID: Integer; Dim: Code[20]; DimValue: Code[20]) Result: Boolean
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeDimEntryOK(DimSetID, Dim, DimValue, Result, IsHandled);
if IsHandled then
exit(Result);
if Dim = '' then
exit(true);
if DimSetEntry.Get(DimSetID, Dim) then
exit(DimSetEntry."Dimension Value Code" = DimValue);
exit(DimValue = '');
end;
local procedure GetGlobalDimValue(GlobalDim: Code[20]; var ItemAnalysisViewEntry: Record "Item Analysis View Entry"; var GlobalDimValue: Code[20]): Boolean
var
IsGlobalDim: Boolean;
begin
case GlobalDim of
ItemAnalysisView."Dimension 1 Code":
begin
IsGlobalDim := true;
GlobalDimValue := ItemAnalysisViewEntry."Dimension 1 Value Code";
end;
ItemAnalysisView."Dimension 2 Code":
begin
IsGlobalDim := true;
GlobalDimValue := ItemAnalysisViewEntry."Dimension 2 Value Code";
end;
ItemAnalysisView."Dimension 3 Code":
begin
IsGlobalDim := true;
GlobalDimValue := ItemAnalysisViewEntry."Dimension 3 Value Code";
end;
end;
exit(IsGlobalDim);
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetValueEntries(var ValueEntry: Record "Value Entry"; ItemAnalysisView: Record "Item Analysis View"; ItemAnalysisViewEntry: Record "Item Analysis View Entry"; var GlobalDimValue: Code[20]);
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeDimEntryOK(DimSetID: Integer; Dim: Code[20]; DimValue: Code[20]; var Result: Boolean; var IsHandled: Boolean);
begin
end;
}