Page 9231 Items by Location Matrix, source in 29
Source29
src/Layers/W1/BaseApp/Inventory/Analysis/ItemsbyLocationMatrix.Page.al759 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.Availability;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Ledger;
using Microsoft.Inventory.Location;
page 9231 "Items by Location Matrix"
{
Caption = 'Items by Location Matrix';
Editable = false;
LinksAllowed = false;
PageType = ListPart;
SourceTable = Item;
SourceTableView = where(Type = const(Inventory));
layout
{
area(content)
{
repeater(Control1)
{
ShowCaption = false;
field("No."; Rec."No.")
{
ApplicationArea = Location;
ToolTip = 'Specifies the number of the involved entry or record, according to the specified number series.';
}
field(Description; Rec.Description)
{
ApplicationArea = Location;
}
field(Field1; MATRIX_CellData[1])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[1];
DecimalPlaces = 0 : 5;
Visible = Field1Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(1);
end;
}
field(Field2; MATRIX_CellData[2])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[2];
DecimalPlaces = 0 : 5;
Visible = Field2Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(2);
end;
}
field(Field3; MATRIX_CellData[3])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[3];
DecimalPlaces = 0 : 5;
Visible = Field3Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(3);
end;
}
field(Field4; MATRIX_CellData[4])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[4];
DecimalPlaces = 0 : 5;
Visible = Field4Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(4);
end;
}
field(Field5; MATRIX_CellData[5])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[5];
DecimalPlaces = 0 : 5;
Visible = Field5Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(5);
end;
}
field(Field6; MATRIX_CellData[6])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[6];
DecimalPlaces = 0 : 5;
Visible = Field6Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(6);
end;
}
field(Field7; MATRIX_CellData[7])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[7];
DecimalPlaces = 0 : 5;
Visible = Field7Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(7);
end;
}
field(Field8; MATRIX_CellData[8])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[8];
DecimalPlaces = 0 : 5;
Visible = Field8Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(8);
end;
}
field(Field9; MATRIX_CellData[9])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[9];
DecimalPlaces = 0 : 5;
Visible = Field9Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(9);
end;
}
field(Field10; MATRIX_CellData[10])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[10];
DecimalPlaces = 0 : 5;
Visible = Field10Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(10);
end;
}
field(Field11; MATRIX_CellData[11])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[11];
DecimalPlaces = 0 : 5;
Visible = Field11Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(11);
end;
}
field(Field12; MATRIX_CellData[12])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[12];
DecimalPlaces = 0 : 5;
Visible = Field12Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(12);
end;
}
field(Field13; MATRIX_CellData[13])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[13];
DecimalPlaces = 0 : 5;
Visible = Field13Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(13);
end;
}
field(Field14; MATRIX_CellData[14])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[14];
DecimalPlaces = 0 : 5;
Visible = Field14Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(14);
end;
}
field(Field15; MATRIX_CellData[15])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[15];
DecimalPlaces = 0 : 5;
Visible = Field15Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(15);
end;
}
field(Field16; MATRIX_CellData[16])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[16];
DecimalPlaces = 0 : 5;
Visible = Field16Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(16);
end;
}
field(Field17; MATRIX_CellData[17])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[17];
DecimalPlaces = 0 : 5;
Visible = Field17Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(17);
end;
}
field(Field18; MATRIX_CellData[18])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[18];
DecimalPlaces = 0 : 5;
Visible = Field18Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(18);
end;
}
field(Field19; MATRIX_CellData[19])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[19];
DecimalPlaces = 0 : 5;
Visible = Field19Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(19);
end;
}
field(Field20; MATRIX_CellData[20])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[20];
DecimalPlaces = 0 : 5;
Visible = Field20Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(20);
end;
}
field(Field21; MATRIX_CellData[21])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[21];
DecimalPlaces = 0 : 5;
Visible = Field21Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(21);
end;
}
field(Field22; MATRIX_CellData[22])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[22];
DecimalPlaces = 0 : 5;
Visible = Field22Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(22);
end;
}
field(Field23; MATRIX_CellData[23])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[23];
DecimalPlaces = 0 : 5;
Visible = Field23Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(23);
end;
}
field(Field24; MATRIX_CellData[24])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[24];
DecimalPlaces = 0 : 5;
Visible = Field24Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(24);
end;
}
field(Field25; MATRIX_CellData[25])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[25];
DecimalPlaces = 0 : 5;
Visible = Field25Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(25);
end;
}
field(Field26; MATRIX_CellData[26])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[26];
DecimalPlaces = 0 : 5;
Visible = Field26Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(26);
end;
}
field(Field27; MATRIX_CellData[27])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[27];
DecimalPlaces = 0 : 5;
Visible = Field27Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(27);
end;
}
field(Field28; MATRIX_CellData[28])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[28];
DecimalPlaces = 0 : 5;
Visible = Field28Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(28);
end;
}
field(Field29; MATRIX_CellData[29])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[29];
DecimalPlaces = 0 : 5;
Visible = Field29Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(29);
end;
}
field(Field30; MATRIX_CellData[30])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[30];
DecimalPlaces = 0 : 5;
Visible = Field30Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(30);
end;
}
field(Field31; MATRIX_CellData[31])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[31];
DecimalPlaces = 0 : 5;
Visible = Field31Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(31);
end;
}
field(Field32; MATRIX_CellData[32])
{
ApplicationArea = Location;
AutoFormatType = 0;
BlankNumbers = BlankZero;
CaptionClass = '3,' + MATRIX_ColumnCaption[32];
DecimalPlaces = 0 : 5;
Visible = Field32Visible;
trigger OnDrillDown()
begin
MatrixOnDrillDown(32);
end;
}
}
}
}
actions
{
area(processing)
{
group("&Item")
{
Caption = '&Item';
Image = Item;
group("&Item Availability by")
{
Caption = '&Item Availability by';
Image = ItemAvailability;
action("<Action3>")
{
ApplicationArea = Location;
Caption = 'Event';
Image = "Event";
ToolTip = 'View how the actual and the projected available balance of an item will develop over time according to supply and demand events.';
trigger OnAction()
begin
ItemAvailFormsMgt.ShowItemAvailabilityFromItem(Rec, "Item Availability Type"::"Event");
end;
}
action(Period)
{
ApplicationArea = Location;
Caption = 'Period';
Image = Period;
RunObject = Page "Item Availability by Periods";
RunPageLink = "No." = field("No."),
"Global Dimension 1 Filter" = field("Global Dimension 1 Filter"),
"Global Dimension 2 Filter" = field("Global Dimension 2 Filter"),
"Location Filter" = field("Location Filter"),
"Drop Shipment Filter" = field("Drop Shipment Filter"),
"Variant Filter" = field("Variant Filter");
ToolTip = 'Show the projected quantity of the item over time according to time periods, such as day, week, or month.';
}
action(Variant)
{
ApplicationArea = Planning;
Caption = 'Variant';
Image = ItemVariant;
RunObject = Page "Item Availability by Variant";
RunPageLink = "No." = field("No."),
"Global Dimension 1 Filter" = field("Global Dimension 1 Filter"),
"Global Dimension 2 Filter" = field("Global Dimension 2 Filter"),
"Location Filter" = field("Location Filter"),
"Drop Shipment Filter" = field("Drop Shipment Filter"),
"Variant Filter" = field("Variant Filter");
ToolTip = 'View or edit the item''s variants. Instead of setting up each color of an item as a separate item, you can set up the various colors as variants of the item.';
}
action(Location)
{
ApplicationArea = Location;
Caption = 'Location';
Image = Warehouse;
RunObject = Page "Item Availability by Location";
RunPageLink = "No." = field("No."),
"Global Dimension 1 Filter" = field("Global Dimension 1 Filter"),
"Global Dimension 2 Filter" = field("Global Dimension 2 Filter"),
"Location Filter" = field("Location Filter"),
"Drop Shipment Filter" = field("Drop Shipment Filter"),
"Variant Filter" = field("Variant Filter");
ToolTip = 'View the actual and projected quantity of the item per location.';
}
action("BOM Level")
{
ApplicationArea = Location;
Caption = 'BOM Level';
Image = BOMLevel;
ToolTip = 'View availability figures for items on bills of materials that show how many units of a parent item you can make based on the availability of child items.';
trigger OnAction()
begin
ItemAvailFormsMgt.ShowItemAvailabilityFromItem(Rec, "Item Availability Type"::"Event");
end;
}
}
}
}
}
trigger OnAfterGetRecord()
var
MATRIX_CurrentColumnOrdinal: Integer;
begin
MATRIX_CurrentColumnOrdinal := 0;
if TempMatrixLocation.FindSet() then
repeat
MATRIX_CurrentColumnOrdinal := MATRIX_CurrentColumnOrdinal + 1;
MATRIX_OnAfterGetRecord(MATRIX_CurrentColumnOrdinal);
until (TempMatrixLocation.Next() = 0) or (MATRIX_CurrentColumnOrdinal = MATRIX_NoOfMatrixColumns);
end;
trigger OnInit()
begin
Field32Visible := true;
Field31Visible := true;
Field30Visible := true;
Field29Visible := true;
Field28Visible := true;
Field27Visible := true;
Field26Visible := true;
Field25Visible := true;
Field24Visible := true;
Field23Visible := true;
Field22Visible := true;
Field21Visible := true;
Field20Visible := true;
Field19Visible := true;
Field18Visible := true;
Field17Visible := true;
Field16Visible := true;
Field15Visible := true;
Field14Visible := true;
Field13Visible := true;
Field12Visible := true;
Field11Visible := true;
Field10Visible := true;
Field9Visible := true;
Field8Visible := true;
Field7Visible := true;
Field6Visible := true;
Field5Visible := true;
Field4Visible := true;
Field3Visible := true;
Field2Visible := true;
Field1Visible := true;
end;
trigger OnOpenPage()
begin
MATRIX_NoOfMatrixColumns := ArrayLen(MATRIX_CellData);
end;
var
ItemLedgerEntry: Record "Item Ledger Entry";
MatrixRecords: array[32] of Record Location;
TempMatrixLocation: Record Location temporary;
ItemAvailFormsMgt: Codeunit "Item Availability Forms Mgt";
MATRIX_NoOfMatrixColumns: Integer;
MATRIX_CellData: array[32] of Decimal;
MATRIX_ColumnCaption: array[32] of Text[1024];
MATRIX_CurrSetLength: Integer;
Field1Visible: Boolean;
Field2Visible: Boolean;
Field3Visible: Boolean;
Field4Visible: Boolean;
Field5Visible: Boolean;
Field6Visible: Boolean;
Field7Visible: Boolean;
Field8Visible: Boolean;
Field9Visible: Boolean;
Field10Visible: Boolean;
Field11Visible: Boolean;
Field12Visible: Boolean;
Field13Visible: Boolean;
Field14Visible: Boolean;
Field15Visible: Boolean;
Field16Visible: Boolean;
Field17Visible: Boolean;
Field18Visible: Boolean;
Field19Visible: Boolean;
Field20Visible: Boolean;
Field21Visible: Boolean;
Field22Visible: Boolean;
Field23Visible: Boolean;
Field24Visible: Boolean;
Field25Visible: Boolean;
Field26Visible: Boolean;
Field27Visible: Boolean;
Field28Visible: Boolean;
Field29Visible: Boolean;
Field30Visible: Boolean;
Field31Visible: Boolean;
Field32Visible: Boolean;
local procedure MATRIX_OnAfterGetRecord(ColumnID: Integer)
var
TempItem: Record Item temporary;
begin
TempItem.Copy(Rec);
TempItem.SetRange("Location Filter", MatrixRecords[ColumnID].Code);
TempItem.CalcFields(Inventory);
MATRIX_CellData[ColumnID] := TempItem.Inventory;
SetVisible();
OnAfterMATRIX_OnAfterGetRecord(MATRIX_CellData, MatrixRecords, TempItem, ColumnID);
end;
procedure Load(MatrixColumns1: array[32] of Text[1024]; var MatrixRecords1: array[32] of Record Location; var MatrixRecord1: Record Location; CurrSetLength: Integer)
begin
MATRIX_CurrSetLength := CurrSetLength;
CopyArray(MATRIX_ColumnCaption, MatrixColumns1, 1);
CopyArray(MatrixRecords, MatrixRecords1, 1);
TempMatrixLocation.Copy(MatrixRecord1, true);
end;
local procedure MatrixOnDrillDown(ColumnID: Integer)
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeMatrixOnDrillDown(Rec, ItemLedgerEntry, ColumnID, IsHandled, MatrixRecords);
if IsHandled then
exit;
ItemLedgerEntry.SetCurrentKey(
"Item No.", "Entry Type", "Variant Code", "Drop Shipment", "Location Code", "Posting Date");
ItemLedgerEntry.SetRange("Item No.", Rec."No.");
ItemLedgerEntry.SetRange("Location Code", MatrixRecords[ColumnID].Code);
OnMatrixOnDrillDownOnAfterItemLedgerEntrySetFilters(Rec, ItemLedgerEntry, ColumnID);
PAGE.Run(0, ItemLedgerEntry);
end;
procedure SetVisible()
begin
Field1Visible := MATRIX_CurrSetLength > 0;
Field2Visible := MATRIX_CurrSetLength > 1;
Field3Visible := MATRIX_CurrSetLength > 2;
Field4Visible := MATRIX_CurrSetLength > 3;
Field5Visible := MATRIX_CurrSetLength > 4;
Field6Visible := MATRIX_CurrSetLength > 5;
Field7Visible := MATRIX_CurrSetLength > 6;
Field8Visible := MATRIX_CurrSetLength > 7;
Field9Visible := MATRIX_CurrSetLength > 8;
Field10Visible := MATRIX_CurrSetLength > 9;
Field11Visible := MATRIX_CurrSetLength > 10;
Field12Visible := MATRIX_CurrSetLength > 11;
Field13Visible := MATRIX_CurrSetLength > 12;
Field14Visible := MATRIX_CurrSetLength > 13;
Field15Visible := MATRIX_CurrSetLength > 14;
Field16Visible := MATRIX_CurrSetLength > 15;
Field17Visible := MATRIX_CurrSetLength > 16;
Field18Visible := MATRIX_CurrSetLength > 17;
Field19Visible := MATRIX_CurrSetLength > 18;
Field20Visible := MATRIX_CurrSetLength > 19;
Field21Visible := MATRIX_CurrSetLength > 20;
Field22Visible := MATRIX_CurrSetLength > 21;
Field23Visible := MATRIX_CurrSetLength > 22;
Field24Visible := MATRIX_CurrSetLength > 23;
Field25Visible := MATRIX_CurrSetLength > 24;
Field26Visible := MATRIX_CurrSetLength > 25;
Field27Visible := MATRIX_CurrSetLength > 26;
Field28Visible := MATRIX_CurrSetLength > 27;
Field29Visible := MATRIX_CurrSetLength > 28;
Field30Visible := MATRIX_CurrSetLength > 29;
Field31Visible := MATRIX_CurrSetLength > 30;
Field32Visible := MATRIX_CurrSetLength > 31;
end;
[IntegrationEvent(true, false)]
local procedure OnAfterMATRIX_OnAfterGetRecord(var MATRIX_CellData: array[32] of Decimal; var MatrixRecords: array[32] of Record Location; var TempItem: Record Item temporary; ColumnID: Integer)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnMatrixOnDrillDownOnAfterItemLedgerEntrySetFilters(var Item: Record Item; var ItemLedgerEntry: Record "Item Ledger Entry"; ColumnID: integer)
begin
end;
#pragma warning disable AS0077
[IntegrationEvent(false, false)]
local procedure OnBeforeMatrixOnDrillDown(var Item: Record Item; var ItemLedgerEntry: Record "Item Ledger Entry"; ColumnID: Integer; var IsHandled: Boolean; var MatrixRecords: array[32] of Record Location)
begin
end;
#pragma warning restore AS0077
}