Skip to content

[Event Request] Codeunit 7150 "Update Item Analysis View" - Procedure UpdateAnalysisViewEntry - OnBeforeUpdateAnalysisViewEntry #28277

@mavohra

Description

@mavohra

Describe the request

Please add an Event OnBeforeUpdateAnalysisViewEntry in the procedure UpdateAnalysisViewEntry in Codeunit 7150 "Update Item Analysis View"

local procedure UpdateAnalysisViewEntry(DimValue1: Code[20]; DimValue2: Code[20]; DimValue3: Code[20]; EntryType: Enum "Item Ledger Entry Type")
    var
        PostingDate: Date;
        EntryNo: Integer;
        IsHandled: Boolean;
    begin

        OnBeforeUpdateAnalysisViewEntry(DimValue1, DimValue2, DimValue3, EntryType, IsHandled); // <--------- New Event
        if IsHandled then
            exit;

        PostingDate := ItemAnalysisViewSource.PostingDate;
        if PostingDate < ItemAnalysisView."Starting Date" then begin
            PostingDate := ItemAnalysisView."Starting Date" - 1;
            EntryNo := 0;
        end else begin
            PostingDate := CalculatePeriodStart(PostingDate, ItemAnalysisView."Date Compression");
            if PostingDate < ItemAnalysisView."Starting Date" then
                PostingDate := ItemAnalysisView."Starting Date";
            if ItemAnalysisView."Date Compression" <> ItemAnalysisView."Date Compression"::None then
                EntryNo := 0;
        end;
        TempItemAnalysisViewEntry.Init();
        TempItemAnalysisViewEntry."Analysis Area" := ItemAnalysisView."Analysis Area";
        TempItemAnalysisViewEntry."Analysis View Code" := ItemAnalysisView.Code;
        TempItemAnalysisViewEntry."Item No." := ItemAnalysisViewSource.ItemNo;
        TempItemAnalysisViewEntry."Source Type" := ItemAnalysisViewSource.SourceType;
        TempItemAnalysisViewEntry."Source No." := ItemAnalysisViewSource.SourceNo;
        TempItemAnalysisViewEntry."Entry Type" := ItemAnalysisViewSource.EntryType;
        TempItemAnalysisViewEntry."Item Ledger Entry Type" := EntryType;

        TempItemAnalysisViewEntry."Location Code" := ItemAnalysisViewSource.LocationCode;
        TempItemAnalysisViewEntry."Posting Date" := PostingDate;
        TempItemAnalysisViewEntry."Dimension 1 Value Code" := DimValue1;
        TempItemAnalysisViewEntry."Dimension 2 Value Code" := DimValue2;
        TempItemAnalysisViewEntry."Dimension 3 Value Code" := DimValue3;
        TempItemAnalysisViewEntry."Entry No." := EntryNo;

        OnAfterInitializeTempItemAnalysisViewEntry(TempItemAnalysisViewEntry, ItemAnalysisView, ItemAnalysisViewSource, ValueEntry);

        if TempItemAnalysisViewEntry.Find() then begin
            if (ItemAnalysisViewSource.EntryType = ItemAnalysisViewSource.EntryType::"Direct Cost") and
               (ItemAnalysisViewSource.ItemChargeNo = '')
            then
                AddValue(TempItemAnalysisViewEntry.Quantity, ItemAnalysisViewSource.ILEQuantity);
            AddValue(TempItemAnalysisViewEntry."Invoiced Quantity", ItemAnalysisViewSource.InvoicedQuantity);

            AddValue(TempItemAnalysisViewEntry."Sales Amount (Actual)", ItemAnalysisViewSource.SalesAmountActual);
            AddValue(TempItemAnalysisViewEntry."Cost Amount (Actual)", ItemAnalysisViewSource.CostAmountActual);
            AddValue(TempItemAnalysisViewEntry."Cost Amount (Non-Invtbl.)", ItemAnalysisViewSource.CostAmountNonInvtbl);

            AddValue(TempItemAnalysisViewEntry."Sales Amount (Expected)", ItemAnalysisViewSource.SalesAmountExpected);
            AddValue(TempItemAnalysisViewEntry."Cost Amount (Expected)", ItemAnalysisViewSource.CostAmountExpected);
            OnUpdateAnalysisViewEntryOnBeforeModifyTempItemAnalysisViewEntry(TempItemAnalysisViewEntry, ItemAnalysisViewSource, ValueEntry, ItemAnalysisView);
            TempItemAnalysisViewEntry.Modify();
        end else begin
            if (ItemAnalysisViewSource.EntryType = ItemAnalysisViewSource.EntryType::"Direct Cost") and
               (ItemAnalysisViewSource.ItemChargeNo = '')
            then
                TempItemAnalysisViewEntry.Quantity := ItemAnalysisViewSource.ILEQuantity;
            TempItemAnalysisViewEntry."Invoiced Quantity" := ItemAnalysisViewSource.InvoicedQuantity;

            TempItemAnalysisViewEntry."Sales Amount (Actual)" := ItemAnalysisViewSource.SalesAmountActual;
            TempItemAnalysisViewEntry."Cost Amount (Actual)" := ItemAnalysisViewSource.CostAmountActual;
            TempItemAnalysisViewEntry."Cost Amount (Non-Invtbl.)" := ItemAnalysisViewSource.CostAmountNonInvtbl;

            TempItemAnalysisViewEntry."Sales Amount (Expected)" := ItemAnalysisViewSource.SalesAmountExpected;
            TempItemAnalysisViewEntry."Cost Amount (Expected)" := ItemAnalysisViewSource.CostAmountExpected;
            OnUpdateAnalysisViewEntryOnBeforeInsertTempItemAnalysisViewEntry(TempItemAnalysisViewEntry, ItemAnalysisViewSource, ValueEntry, ItemAnalysisView);
            TempItemAnalysisViewEntry.Insert();
            NoOfEntries := NoOfEntries + 1;
        end;
        if NoOfEntries >= 10000 then
            FlushAnalysisViewEntry();
    end;
  [IntegrationEvent(false, false)]
    local procedure OnBeforeUpdateAnalysisViewEntry(DimValue1: Code[20]; DimValue2: Code[20]; DimValue3: Code[20]; EntryType: Enum "Item Ledger Entry Type"; var IsHandled: Boolean)
    begin
    end;

Additional context

We need to handle the following by overriding this procedure

  • support for alternate quantities in the Item Analysis View.
  • handle "Sales Amount (FOB)" and "Sales Amount (Freight)" fields to track these specific sales amount components separately.
    Internal work item: AB#567227

Metadata

Metadata

Assignees

No one assigned

    Labels

    SCMGitHub request for SCM areaevent-requestRequest for adding an eventships-in-future-updateFix ships in a future update

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions