Page 5802 Value Entries
- App
- Base Application
- Namespace
- Microsoft.Inventory.Ledger
- Versions
- 17-28
- Source table
- 5802
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Inventory/Ledger/ValueEntries.Page.al597 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.Ledger;
using Microsoft.Finance.Dimension;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Foundation.Navigate;
using Microsoft.Inventory.Analysis;
using Microsoft.Inventory.Item;
using Microsoft.Purchases.Vendor;
using Microsoft.Sales.Customer;
using System.Globalization;
using System.Security.User;
page 5802 "Value Entries"
{
AdditionalSearchTerms = 'costing,inventory cost,inventory valuation';
ApplicationArea = Basic, Suite;
Caption = 'Value Entries';
DataCaptionExpression = GetCaption();
Editable = false;
PageType = List;
AboutTitle = 'About Value Entries';
AboutText = 'Track and analyze the detailed cost and value changes for inventory items, including actual and expected costs, sales and purchase amounts, adjustments, and links to related documents for comprehensive inventory valuation and costing.';
SourceTable = "Value Entry";
SourceTableView = sorting("Entry No.")
order(descending);
UsageCategory = History;
layout
{
area(content)
{
repeater(Control1)
{
ShowCaption = false;
field("Posting Date"; Rec."Posting Date")
{
ApplicationArea = Basic, Suite;
}
field("Valuation Date"; Rec."Valuation Date")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Item Ledger Entry Type"; Rec."Item Ledger Entry Type")
{
ApplicationArea = Basic, Suite;
}
field("Entry Type"; Rec."Entry Type")
{
ApplicationArea = Basic, Suite;
}
field("Variance Type"; Rec."Variance Type")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field(Adjustment; Rec.Adjustment)
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies this field was inserted by the Adjust Cost - Item Entries batch job, if it contains a check mark.';
}
field("Document Type"; Rec."Document Type")
{
ApplicationArea = Basic, Suite;
}
field("Document No."; Rec."Document No.")
{
ApplicationArea = Basic, Suite;
}
field("Document Line No."; Rec."Document Line No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Item Charge No."; Rec."Item Charge No.")
{
ApplicationArea = Basic, Suite;
}
field(Description; Rec.Description)
{
ApplicationArea = Basic, Suite;
}
field("Return Reason Code"; Rec."Return Reason Code")
{
ApplicationArea = Suite;
Visible = false;
}
field("Sales Amount (Expected)"; Rec."Sales Amount (Expected)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the expected price of the item for a sales entry, which means that it has not been invoiced yet.';
Visible = false;
}
field("Sales Amount (Actual)"; Rec."Sales Amount (Actual)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the price of the item for a sales entry.';
}
field("Cost Amount (Expected)"; Rec."Cost Amount (Expected)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the expected cost of the items, which is calculated by multiplying the Cost per Unit by the Valued Quantity.';
}
field("Cost Amount (Actual)"; Rec."Cost Amount (Actual)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the cost of invoiced items.';
}
field("Cost Amount (Non-Invtbl.)"; Rec."Cost Amount (Non-Invtbl.)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the non-inventoriable cost, that is an item charge assigned to an outbound entry.';
}
field("Cost Posted to G/L"; Rec."Cost Posted to G/L")
{
ApplicationArea = Basic, Suite;
}
field("Expected Cost Posted to G/L"; Rec."Expected Cost Posted to G/L")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Cost Amount (Expected) (ACY)"; Rec."Cost Amount (Expected) (ACY)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the expected cost of the items in the additional reporting currency.';
Visible = false;
}
field("Cost Amount (Actual) (ACY)"; Rec."Cost Amount (Actual) (ACY)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the cost of the items that have been invoiced, if you post in an additional reporting currency.';
Visible = false;
}
field("Cost Amount (Non-Invtbl.)(ACY)"; Rec."Cost Amount (Non-Invtbl.)(ACY)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the non-inventoriable cost, that is an item charge assigned to an outbound entry in the additional reporting currency.';
Visible = false;
}
field("Cost Posted to G/L (ACY)"; Rec."Cost Posted to G/L (ACY)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the amount that has been posted to the general ledger if you post in an additional reporting currency.';
Visible = false;
}
field("Item Ledger Entry Quantity"; Rec."Item Ledger Entry Quantity")
{
ApplicationArea = Basic, Suite;
}
field("Valued Quantity"; Rec."Valued Quantity")
{
ApplicationArea = Basic, Suite;
}
field("Invoiced Quantity"; Rec."Invoiced Quantity")
{
ApplicationArea = Basic, Suite;
}
field("Cost per Unit"; Rec."Cost per Unit")
{
ApplicationArea = Basic, Suite;
}
field("Cost per Unit (ACY)"; Rec."Cost per Unit (ACY)")
{
ApplicationArea = Suite;
ToolTip = 'Specifies the cost of one unit of the item in the entry.';
}
field("Item No."; Rec."Item No.")
{
ApplicationArea = Basic, Suite;
}
field("Item Description"; Rec."Item Description")
{
ApplicationArea = Basic, Suite;
DrillDown = false;
Visible = false;
}
field("Location Code"; Rec."Location Code")
{
ApplicationArea = Location;
Visible = false;
}
field(Type; Rec.Type)
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("No."; Rec."No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Discount Amount"; Rec."Discount Amount")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Salespers./Purch. Code"; Rec."Salespers./Purch. Code")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("User ID"; Rec."User ID")
{
ApplicationArea = Basic, Suite;
Visible = false;
trigger OnDrillDown()
var
UserMgt: Codeunit "User Management";
begin
UserMgt.DisplayUserInformation(Rec."User ID");
end;
}
field("Source Posting Group"; Rec."Source Posting Group")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Source Code"; Rec."Source Code")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Gen. Bus. Posting Group"; Rec."Gen. Bus. Posting Group")
{
ApplicationArea = Basic, Suite;
}
field("Gen. Prod. Posting Group"; Rec."Gen. Prod. Posting Group")
{
ApplicationArea = Basic, Suite;
}
field("Global Dimension 1 Code"; Rec."Global Dimension 1 Code")
{
ApplicationArea = Dimensions;
Visible = Dim1Visible;
}
field("Global Dimension 2 Code"; Rec."Global Dimension 2 Code")
{
ApplicationArea = Dimensions;
Visible = Dim2Visible;
}
field("Source Type"; Rec."Source Type")
{
ApplicationArea = Basic, Suite;
}
field("Source No."; Rec."Source No.")
{
ApplicationArea = Basic, Suite;
}
field("Source Description"; InventoryLedgerSourceMgt.GetSourceDescription(Rec."Source Type", Rec."Source No."))
{
ApplicationArea = Basic, Suite;
Caption = 'Source Description';
ToolTip = 'Specifies the name or description of the source. Analysis mode must be used for sorting and filtering on this field.';
Visible = false;
}
field("Source Order No."; InventoryLedgerSourceMgt.GetSourceOrderNo(Rec."Document Type", Rec."Document No."))
{
ApplicationArea = Basic, Suite;
Caption = 'Source Order No.';
ToolTip = 'Specifies the order number of the source document this entry is associated with. Analysis mode must be used for sorting and filtering on this field.';
Visible = false;
}
field("Document Date"; Rec."Document Date")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("External Document No."; Rec."External Document No.")
{
ApplicationArea = Basic, Suite;
}
field("Order Type"; Rec."Order Type")
{
ApplicationArea = Basic, Suite;
}
field("Order No."; Rec."Order No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Valued By Average Cost"; Rec."Valued By Average Cost")
{
ApplicationArea = Basic, Suite;
}
field("Item Ledger Entry No."; Rec."Item Ledger Entry No.")
{
ApplicationArea = Basic, Suite;
}
field("Capacity Ledger Entry No."; Rec."Capacity Ledger Entry No.")
{
ApplicationArea = Manufacturing;
}
field("Entry No."; Rec."Entry No.")
{
ApplicationArea = Basic, Suite;
}
field("Job No."; Rec."Job No.")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job Task No."; Rec."Job Task No.")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job Ledger Entry No."; Rec."Job Ledger Entry No.")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Dimension Set ID"; Rec."Dimension Set ID")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Shortcut Dimension 3 Code"; Rec."Shortcut Dimension 3 Code")
{
ApplicationArea = Dimensions;
Editable = false;
Visible = Dim3Visible;
}
field("Shortcut Dimension 4 Code"; Rec."Shortcut Dimension 4 Code")
{
ApplicationArea = Dimensions;
Editable = false;
Visible = Dim4Visible;
}
field("Shortcut Dimension 5 Code"; Rec."Shortcut Dimension 5 Code")
{
ApplicationArea = Dimensions;
Editable = false;
Visible = Dim5Visible;
}
field("Shortcut Dimension 6 Code"; Rec."Shortcut Dimension 6 Code")
{
ApplicationArea = Dimensions;
Editable = false;
Visible = Dim6Visible;
}
field("Shortcut Dimension 7 Code"; Rec."Shortcut Dimension 7 Code")
{
ApplicationArea = Dimensions;
Editable = false;
Visible = Dim7Visible;
}
field("Shortcut Dimension 8 Code"; Rec."Shortcut Dimension 8 Code")
{
ApplicationArea = Dimensions;
Editable = false;
Visible = Dim8Visible;
}
}
}
area(factboxes)
{
systempart(Control1900383207; Links)
{
ApplicationArea = RecordLinks;
Visible = false;
}
systempart(Control1905767507; Notes)
{
ApplicationArea = Notes;
Visible = false;
}
}
}
actions
{
area(navigation)
{
group("Ent&ry")
{
Caption = 'Ent&ry';
Image = Entry;
action(Dimensions)
{
AccessByPermission = TableData Dimension = R;
ApplicationArea = Dimensions;
Caption = 'Dimensions';
Image = Dimensions;
ShortCutKey = 'Alt+D';
ToolTip = 'View or edit dimensions, such as area, project, or department, that you can assign to sales and purchase documents to distribute costs and analyze transaction history.';
trigger OnAction()
begin
Rec.ShowDimensions();
end;
}
action(SetDimensionFilter)
{
ApplicationArea = Dimensions;
Caption = 'Set Dimension Filter';
Ellipsis = true;
Image = "Filter";
ToolTip = 'Limit the entries according to the dimension filters that you specify. NOTE: If you use a high number of dimension combinations, this function may not work and can result in a message that the SQL server only supports a maximum of 2100 parameters.';
trigger OnAction()
begin
Rec.SetFilter("Dimension Set ID", DimensionSetIDFilter.LookupFilter());
end;
}
action("General Ledger")
{
ApplicationArea = Basic, Suite;
Caption = 'General Ledger';
Image = GLRegisters;
ToolTip = 'Open the general ledger.';
trigger OnAction()
begin
Rec.ShowGL();
end;
}
}
}
area(processing)
{
action("&Navigate")
{
ApplicationArea = Basic, Suite;
Caption = 'Find entries...';
Image = Navigate;
ShortCutKey = 'Ctrl+Alt+Q';
ToolTip = 'Find entries and documents that exist for the document number and posting date on the selected document. (Formerly this action was named Navigate.)';
trigger OnAction()
begin
Navigate.SetDoc(Rec."Posting Date", Rec."Document No.");
Navigate.Run();
end;
}
}
area(Promoted)
{
group(Category_Process)
{
Caption = 'Process', Comment = 'Generated from the PromotedActionCategories property index 1.';
actionref("&Navigate_Promoted"; "&Navigate")
{
}
group(Category_Category4)
{
Caption = 'Entry', Comment = 'Generated from the PromotedActionCategories property index 3.';
actionref("General Ledger_Promoted"; "General Ledger")
{
}
actionref(Dimensions_Promoted; Dimensions)
{
}
actionref(SetDimensionFilter_Promoted; SetDimensionFilter)
{
}
}
}
group(Category_Report)
{
Caption = 'Report', Comment = 'Generated from the PromotedActionCategories property index 2.';
}
}
}
trigger OnOpenPage()
begin
FilterGroupNo := Rec.FilterGroup; // Trick: FILTERGROUP is used to transfer an integer value
SetDimVisibility();
end;
var
InventoryLedgerSourceMgt: Codeunit "Invt. Ledger Source Mgt.";
Navigate: Page Navigate;
DimensionSetIDFilter: Page "Dimension Set ID Filter";
FilterGroupNo: Integer;
protected var
Dim1Visible: Boolean;
Dim2Visible: Boolean;
Dim3Visible: Boolean;
Dim4Visible: Boolean;
Dim5Visible: Boolean;
Dim6Visible: Boolean;
Dim7Visible: Boolean;
Dim8Visible: Boolean;
local procedure SetDimVisibility()
var
DimensionManagement: Codeunit DimensionManagement;
begin
DimensionManagement.UseShortcutDims(Dim1Visible, Dim2Visible, Dim3Visible, Dim4Visible, Dim5Visible, Dim6Visible, Dim7Visible, Dim8Visible);
end;
local procedure GetCaption(): Text
var
GLSetup: Record "General Ledger Setup";
ObjTransl: Record "Object Translation";
Item: Record Item;
Cust: Record Customer;
Vend: Record Vendor;
Dimension: Record Dimension;
DimValue: Record "Dimension Value";
SourceTableName: Text;
SourceFilter: Text;
SourceDescription: Text;
begin
SourceDescription := '';
case true of
Rec.GetFilter("Item Ledger Entry No.") <> '':
begin
SourceTableName := ObjTransl.TranslateObject(ObjTransl."Object Type"::Table, 32);
SourceFilter := Rec.GetFilter("Item Ledger Entry No.");
end;
Rec.GetFilter("Capacity Ledger Entry No.") <> '':
begin
SourceTableName := ObjTransl.TranslateObject(ObjTransl."Object Type"::Table, 5832);
SourceFilter := Rec.GetFilter("Capacity Ledger Entry No.");
end;
Rec.GetFilter("Item No.") <> '':
begin
SourceTableName := ObjTransl.TranslateObject(ObjTransl."Object Type"::Table, 27);
SourceFilter := Rec.GetFilter("Item No.");
if MaxStrLen(Item."No.") >= StrLen(SourceFilter) then
if Item.Get(SourceFilter) then
SourceDescription := Item.Description;
end;
Rec.GetFilter("Source No.") <> '':
case Rec."Source Type" of
Rec."Source Type"::Customer:
begin
SourceTableName := ObjTransl.TranslateObject(ObjTransl."Object Type"::Table, 18);
SourceFilter := Rec.GetFilter("Source No.");
if MaxStrLen(Cust."No.") >= StrLen(SourceFilter) then
if Cust.Get(SourceFilter) then
SourceDescription := Cust.Name;
end;
Rec."Source Type"::Vendor:
begin
SourceTableName :=
ObjTransl.TranslateObject(ObjTransl."Object Type"::Table, 23);
SourceFilter := Rec.GetFilter("Source No.");
if MaxStrLen(Vend."No.") >= StrLen(SourceFilter) then
if Vend.Get(SourceFilter) then
SourceDescription := Vend.Name;
end;
end;
Rec.GetFilter("Global Dimension 1 Code") <> '':
begin
GLSetup.Get();
Dimension.Code := GLSetup."Global Dimension 1 Code";
SourceFilter := Rec.GetFilter("Global Dimension 1 Code");
SourceTableName := Dimension.GetMLName(GlobalLanguage);
if MaxStrLen(DimValue.Code) >= StrLen(SourceFilter) then
if DimValue.Get(GLSetup."Global Dimension 1 Code", SourceFilter) then
SourceDescription := DimValue.Name;
end;
Rec.GetFilter("Global Dimension 2 Code") <> '':
begin
GLSetup.Get();
Dimension.Code := GLSetup."Global Dimension 2 Code";
SourceFilter := Rec.GetFilter("Global Dimension 2 Code");
SourceTableName := Dimension.GetMLName(GlobalLanguage);
if MaxStrLen(DimValue.Code) >= StrLen(SourceFilter) then
if DimValue.Get(GLSetup."Global Dimension 2 Code", SourceFilter) then
SourceDescription := DimValue.Name;
end;
Rec.GetFilter("Document Type") <> '':
begin
SourceTableName := Rec.GetFilter("Document Type");
SourceFilter := Rec.GetFilter("Document No.");
SourceDescription := Rec.GetFilter("Document Line No.");
end;
FilterGroupNo = DATABASE::"Item Analysis View Entry":
begin
if Item."No." <> Rec."Item No." then
if not Item.Get(Rec."Item No.") then
Clear(Item);
SourceTableName := ObjTransl.TranslateObject(ObjTransl."Object Type"::Table, DATABASE::"Item Analysis View Entry");
SourceFilter := Item."No.";
SourceDescription := Item.Description;
end;
end;
exit(StrSubstNo('%1 %2 %3', SourceTableName, SourceFilter, SourceDescription));
end;
}