Page 31 Item List
- App
- Base Application
- Namespace
- Microsoft.Inventory.Item
- Versions
- 17-28
- Source table
- 27
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Inventory/Item/ItemList.Page.al2465 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.Item;
using Microsoft.Finance.Dimension;
using Microsoft.Foundation.Attachment;
using Microsoft.Foundation.Comment;
using Microsoft.Foundation.ExtendedText;
using Microsoft.Integration.Dataverse;
using Microsoft.Integration.SyncEngine;
using Microsoft.Inventory.Analysis;
using Microsoft.Inventory.Availability;
using Microsoft.Inventory.BOM;
using Microsoft.Inventory.Costing;
using Microsoft.Inventory.Counting.Journal;
using Microsoft.Inventory.Item.Attribute;
using Microsoft.Inventory.Item.Catalog;
using Microsoft.Inventory.Item.Picture;
using Microsoft.Inventory.Item.Substitution;
using Microsoft.Inventory.Journal;
using Microsoft.Inventory.Ledger;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Reports;
using Microsoft.Inventory.Requisition;
using Microsoft.Inventory.Tracking;
using Microsoft.Pricing.Calculation;
using Microsoft.Pricing.PriceList;
using Microsoft.Pricing.Reports;
using Microsoft.Purchases.Document;
using Microsoft.Purchases.Pricing;
using Microsoft.Sales.Document;
using Microsoft.Sales.Pricing;
using Microsoft.Warehouse.ADCS;
using Microsoft.Warehouse.Ledger;
using Microsoft.Warehouse.Setup;
using Microsoft.Warehouse.Structure;
using System.Automation;
using System.Environment;
using System.Environment.Configuration;
using System.Integration.PowerBI;
using System.Reflection;
using System.Text;
#pragma warning disable AS0106 // Protected variable PowerBIVisible was removed before AS0106 was introduced.
page 31 "Item List"
#pragma warning restore AS0106
{
AdditionalSearchTerms = 'Product, Finished Good, Component, Raw Material, Assembly Item, Product Details, Merchandise Profile, Item Info, Commodity Info, Product Data, Article Details, Goods Profile, Item Detail';
ApplicationArea = Basic, Suite, Assembly, Service;
Caption = 'Items';
CardPageID = "Item Card";
Editable = false;
PageType = List;
QueryCategory = 'Item List';
SourceTable = Item;
UsageCategory = Lists;
AboutTitle = 'About items';
AboutText = '**Items** represent the products and services you buy and sell. For each item, you can manage the default sales and purchase prices used when creating documents, as well as track inventory numbers. With [Item Templates](?page=1383 "Opens the Item Templates") you can quickly create new items having common details defined by the template.';
layout
{
area(content)
{
repeater(Control1)
{
Caption = 'Item';
field("No."; Rec."No.")
{
ApplicationArea = All;
ToolTip = 'Specifies a number to identify the item. You can use ranges of item numbers to logically group products or to imply information about them. Or use simple numbers and item categories to group items.';
}
field(Description; Rec.Description)
{
ApplicationArea = All;
ToolTip = 'Specifies a default text to describe the item on related documents such as orders or invoices. You can translate the descriptions so that they show up in the language of the customer or vendor.';
}
field("Description 2"; Rec."Description 2")
{
ApplicationArea = All;
Visible = false;
}
field(Type; Rec.Type)
{
ApplicationArea = Basic, Suite;
Visible = IsFoundationEnabled;
}
field(InventoryField; Rec.Inventory)
{
ApplicationArea = Basic, Suite;
HideValue = IsNonInventoriable;
}
field("Created From Nonstock Item"; Rec."Created From Nonstock Item")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Substitutes Exist"; Rec."Substitutes Exist")
{
ApplicationArea = Suite;
}
field("Stockkeeping Unit Exists"; Rec."Stockkeeping Unit Exists")
{
ApplicationArea = Warehouse;
Visible = false;
}
field("Assembly BOM"; Rec."Assembly BOM")
{
AccessByPermission = TableData "BOM Component" = R;
ApplicationArea = Assembly;
}
field("Base Unit of Measure"; Rec."Base Unit of Measure")
{
ApplicationArea = Basic, Suite;
}
field("Shelf No."; Rec."Shelf No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Costing Method"; Rec."Costing Method")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Cost is Adjusted"; Rec."Cost is Adjusted")
{
ApplicationArea = Basic, Suite;
}
field("Standard Cost"; Rec."Standard Cost")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Unit Cost"; Rec."Unit Cost")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the cost per unit of the item.';
}
field("Last Direct Cost"; Rec."Last Direct Cost")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the most recent direct unit cost that was paid for the item.';
Visible = false;
}
field("Price/Profit Calculation"; Rec."Price/Profit Calculation")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Profit %"; Rec."Profit %")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Unit Price"; Rec."Unit Price")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the price for one unit of the item, in LCY.';
}
field("Inventory Posting Group"; Rec."Inventory Posting Group")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Gen. Prod. Posting Group"; Rec."Gen. Prod. Posting Group")
{
ApplicationArea = Suite;
Visible = false;
}
field("VAT Prod. Posting Group"; Rec."VAT Prod. Posting Group")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Item Disc. Group"; Rec."Item Disc. Group")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Vendor No."; Rec."Vendor No.")
{
ApplicationArea = Basic, Suite;
}
field("Vendor Item No."; Rec."Vendor Item No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("No. 2"; Rec."No. 2")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Common Item No."; Rec."Common Item No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Alternative Item No."; Rec."Alternative Item No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Tariff No."; Rec."Tariff No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Search Description"; Rec."Search Description")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Overhead Rate"; Rec."Overhead Rate")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Indirect Cost %"; Rec."Indirect Cost %")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Item Category Code"; Rec."Item Category Code")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field(Blocked; Rec.Blocked)
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Last Date Modified"; Rec."Last Date Modified")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Sales Unit of Measure"; Rec."Sales Unit of Measure")
{
ApplicationArea = Suite;
Visible = false;
}
field("Replenishment System"; Rec."Replenishment System")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Purch. Unit of Measure"; Rec."Purch. Unit of Measure")
{
ApplicationArea = Suite;
Visible = false;
}
field("Lead Time Calculation"; Rec."Lead Time Calculation")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Manufacturing Policy"; Rec."Manufacturing Policy")
{
ApplicationArea = Manufacturing;
Visible = false;
}
field("Flushing Method"; Rec."Flushing Method")
{
ApplicationArea = Manufacturing;
Visible = false;
}
field("Assembly Policy"; Rec."Assembly Policy")
{
ApplicationArea = Assembly;
Visible = false;
}
field("Item Tracking Code"; Rec."Item Tracking Code")
{
ApplicationArea = ItemTracking;
ToolTip = 'Specifies how items are tracked in the supply chain.';
Visible = false;
}
field("Default Deferral Template Code"; Rec."Default Deferral Template Code")
{
ApplicationArea = Suite;
Caption = 'Default Deferral Template';
Importance = Additional;
}
field("Coupled to Dataverse"; Rec."Coupled to Dataverse")
{
ApplicationArea = All;
Visible = CRMIntegrationEnabled;
}
field(GTIN; Rec.GTIN)
{
ApplicationArea = All;
ToolTip = 'Specifies Global Trade Item Number for tracking.';
Visible = false;
}
}
}
area(factboxes)
{
part(ItemPicture; "Item Picture")
{
ApplicationArea = All;
Caption = 'Picture';
SubPageLink = "No." = field("No.");
Visible = false;
}
part(PowerBIEmbeddedReportPart; "Power BI Embedded Report Part")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
part(Control1901314507; "Item Invoicing FactBox")
{
ApplicationArea = Basic, Suite;
SubPageLink = "No." = field("No."),
"Date Filter" = field("Date Filter"),
"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"),
"Bin Filter" = field("Bin Filter"),
"Variant Filter" = field("Variant Filter"),
"Lot No. Filter" = field("Lot No. Filter"),
"Serial No. Filter" = field("Serial No. Filter");
}
part(Control1903326807; "Item Replenishment FactBox")
{
ApplicationArea = Basic, Suite;
SubPageLink = "No." = field("No."),
"Date Filter" = field("Date Filter"),
"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"),
"Bin Filter" = field("Bin Filter"),
"Variant Filter" = field("Variant Filter"),
"Lot No. Filter" = field("Lot No. Filter"),
"Serial No. Filter" = field("Serial No. Filter");
Visible = false;
}
part(Control1906840407; "Item Planning FactBox")
{
ApplicationArea = Basic, Suite;
SubPageLink = "No." = field("No."),
"Date Filter" = field("Date Filter"),
"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"),
"Bin Filter" = field("Bin Filter"),
"Variant Filter" = field("Variant Filter"),
"Lot No. Filter" = field("Lot No. Filter"),
"Serial No. Filter" = field("Serial No. Filter");
}
part(Control1901796907; "Item Warehouse FactBox")
{
ApplicationArea = Basic, Suite;
SubPageLink = "No." = field("No."),
"Date Filter" = field("Date Filter"),
"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"),
"Bin Filter" = field("Bin Filter"),
"Variant Filter" = field("Variant Filter"),
"Lot No. Filter" = field("Lot No. Filter"),
"Serial No. Filter" = field("Serial No. Filter");
Visible = false;
}
part("Attached Documents List"; "Doc. Attachment List Factbox")
{
ApplicationArea = All;
Caption = 'Documents';
UpdatePropagation = Both;
SubPageLink = "Table ID" = const(Database::Item), "No." = field("No.");
}
part(ItemAttributesFactBox; "Item Attributes Factbox")
{
ApplicationArea = Basic, Suite;
}
systempart(Control1900383207; Links)
{
ApplicationArea = RecordLinks;
}
systempart(Control1905767507; Notes)
{
ApplicationArea = Notes;
}
}
}
actions
{
area(processing)
{
group(History)
{
Caption = 'History';
Image = History;
group("E&ntries")
{
Caption = 'E&ntries';
Image = Entries;
action("Ledger E&ntries")
{
ApplicationArea = Suite;
Caption = 'Ledger E&ntries';
Image = ItemLedger;
//The property 'PromotedCategory' can only be set if the property 'Promoted' is set to 'true'
//PromotedCategory = Category5;
RunObject = Page "Item Ledger Entries";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.")
order(descending);
Scope = Repeater;
ShortCutKey = 'Ctrl+F7';
ToolTip = 'View the history of transactions that have been posted for the selected record.';
}
action("&Phys. Inventory Ledger Entries")
{
ApplicationArea = Warehouse;
Caption = '&Phys. Inventory Ledger Entries';
Image = PhysicalInventoryLedger;
//The property 'PromotedCategory' can only be set if the property 'Promoted' is set to 'true'
//PromotedCategory = Category5;
RunObject = Page "Phys. Inventory Ledger Entries";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.");
Scope = Repeater;
ToolTip = 'View how many units of the item you had in stock at the last physical count.';
}
action("&Reservation Entries")
{
ApplicationArea = Reservation;
Caption = '&Reservation Entries';
Image = ReservationLedger;
RunObject = Page "Reservation Entries";
RunPageLink = "Reservation Status" = const(Reservation),
"Item No." = field("No.");
RunPageView = sorting("Item No.", "Variant Code", "Location Code", "Reservation Status");
ToolTip = 'View all reservations that are made for the item, either manually or automatically.';
}
action("&Value Entries")
{
ApplicationArea = Suite;
Caption = '&Value Entries';
Image = ValueLedger;
RunObject = Page "Value Entries";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.");
ToolTip = 'View the history of posted amounts that affect the value of the item. Value entries are created for every transaction with the item.';
}
action("Item &Tracking Entries")
{
ApplicationArea = ItemTracking;
Caption = 'Item &Tracking Entries';
Image = ItemTrackingLedger;
ToolTip = 'View serial, lot or package numbers that are assigned to items.';
trigger OnAction()
var
ItemTrackingDocMgt: Codeunit "Item Tracking Doc. Management";
begin
ItemTrackingDocMgt.ShowItemTrackingForEntity(3, '', Rec."No.", '', '');
end;
}
action("&Warehouse Entries")
{
ApplicationArea = Warehouse;
Caption = '&Warehouse Entries';
Image = BinLedger;
RunObject = Page "Warehouse Entries";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.", "Bin Code", "Location Code", "Variant Code", "Unit of Measure Code", "Lot No.", "Serial No.", "Entry Type", Dedicated);
ToolTip = 'View the history of quantities that are registered for the item in warehouse activities. ';
}
}
}
group(PricesandDiscounts)
{
Caption = 'Sales Prices & Discounts';
action(Prices_Prices)
{
ApplicationArea = Basic, Suite;
Caption = 'Sales Prices';
Image = Price;
Scope = Repeater;
Visible = not ExtendedPriceEnabled;
ToolTip = 'Set up sales prices for the selected item. An item price is automatically used on invoice lines when the specified criteria are met, such as customer, quantity, or ending date.';
trigger OnAction()
begin
ShowPrices();
end;
}
action(Prices_LineDiscounts)
{
ApplicationArea = Basic, Suite;
Caption = 'Sales Discounts';
Image = LineDiscount;
Scope = Repeater;
Visible = not ExtendedPriceEnabled;
ToolTip = 'Set up sales discounts for the selected item. An item discount is automatically granted on invoice lines when the specified criteria are met, such as customer, quantity, or ending date.';
trigger OnAction()
begin
ShowLineDiscounts();
end;
}
action(PricesDiscountsOverview)
{
ApplicationArea = Basic, Suite;
Caption = 'Sales Prices & Discounts Overview';
Image = PriceWorksheet;
Visible = not ExtendedPriceEnabled;
ToolTip = 'View the sales prices and line discounts that you grant for this item when certain criteria are met, such as vendor, quantity, or ending date.';
trigger OnAction()
var
SalesPriceAndLineDiscounts: Page "Sales Price and Line Discounts";
begin
SalesPriceAndLineDiscounts.InitPage(true);
SalesPriceAndLineDiscounts.LoadItem(Rec);
SalesPriceAndLineDiscounts.RunModal();
end;
}
action("Sales Price Worksheet")
{
ApplicationArea = Basic, Suite;
Caption = 'Sales Price Worksheet';
Image = PriceWorksheet;
Visible = not IsOnPhone and not ExtendedPriceEnabled;
RunObject = Page "Sales Price Worksheet";
ToolTip = 'Change to the unit price for the item or specify how you want to enter changes in the price agreement for one customer, a group of customers, or all customers.';
}
action(SalesPriceLists)
{
AccessByPermission = TableData "Sales Price Access" = R;
ApplicationArea = Basic, Suite;
Caption = 'Sales Prices';
Image = Price;
Scope = Repeater;
Visible = ExtendedPriceEnabled;
ToolTip = 'Set up sales prices for the item. An item price is automatically granted on invoice lines when the specified criteria are met, such as customer, quantity, or ending date.';
trigger OnAction()
var
AmountType: Enum "Price Amount Type";
PriceType: Enum "Price Type";
begin
Rec.ShowPriceListLines(PriceType::Sale, AmountType::Price);
end;
}
action(SalesPriceListsDiscounts)
{
AccessByPermission = TableData "Sales Discount Access" = R;
ApplicationArea = Basic, Suite;
Caption = 'Sales Discounts';
Image = LineDiscount;
Scope = Repeater;
Visible = ExtendedPriceEnabled;
ToolTip = 'Set up sales discounts for the item. An item discount is automatically granted on invoice lines when the specified criteria are met, such as customer, quantity, or ending date.';
trigger OnAction()
var
AmountType: Enum "Price Amount Type";
PriceType: Enum "Price Type";
begin
Rec.ShowPriceListLines(PriceType::Sale, AmountType::Discount);
end;
}
}
group(PurchPricesandDiscounts)
{
Caption = 'Purchase Prices & Discounts';
action("Set Special Prices")
{
ApplicationArea = Suite;
Caption = 'Purchase Prices';
Image = Price;
Visible = not ExtendedPriceEnabled;
RunObject = Page "Purchase Prices";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.");
ToolTip = 'Set up purchase prices for the item. An item price is automatically granted on invoice lines when the specified criteria are met, such as vendor, quantity, or ending date.';
}
action("Set Special Discounts")
{
ApplicationArea = Suite;
Caption = 'Purchase Discounts';
Image = LineDiscount;
Visible = not ExtendedPriceEnabled;
RunObject = Page "Purchase Line Discounts";
RunPageLink = "Item No." = field("No.");
ToolTip = 'Set up purchase discounts for the item. An item discount is automatically granted on invoice lines when the specified criteria are met, such as vendor, quantity, or ending date.';
}
action(PurchPricesDiscountsOverview)
{
ApplicationArea = Suite;
Caption = 'Purchase Prices & Discounts Overview';
Image = PriceWorksheet;
Visible = not ExtendedPriceEnabled;
ToolTip = 'View the purchase prices and line discounts that you grant for this item when certain criteria are met, such as vendor, quantity, or ending date.';
trigger OnAction()
var
PurchasesPriceAndLineDisc: Page "Purchases Price and Line Disc.";
begin
PurchasesPriceAndLineDisc.LoadItem(Rec);
PurchasesPriceAndLineDisc.RunModal();
end;
}
action(PurchPriceLists)
{
AccessByPermission = TableData "Purchase Price Access" = R;
ApplicationArea = Suite;
Caption = 'Purchase Prices';
Image = Price;
Visible = ExtendedPriceEnabled;
Scope = Repeater;
ToolTip = 'Set up purchase prices for the item. An item price is automatically granted on invoice lines when the specified criteria are met, such as vendor, quantity, or ending date.';
trigger OnAction()
var
AmountType: Enum "Price Amount Type";
PriceType: Enum "Price Type";
begin
Rec.ShowPriceListLines(PriceType::Purchase, AmountType::Price);
end;
}
action(PurchPriceListsDiscounts)
{
AccessByPermission = TableData "Purchase Price Access" = R;
ApplicationArea = Suite;
Caption = 'Purchase Discounts';
Image = LineDiscount;
Visible = ExtendedPriceEnabled;
Scope = Repeater;
ToolTip = 'Set up purchase discounts for the item. An item discount is automatically granted on invoice lines when the specified criteria are met, such as vendor, quantity, or ending date.';
trigger OnAction()
var
AmountType: Enum "Price Amount Type";
PriceType: Enum "Price Type";
begin
Rec.ShowPriceListLines(PriceType::Purchase, AmountType::Discount);
end;
}
}
group(PeriodicActivities)
{
Caption = 'Periodic Activities';
action("Adjust Cost - Item Entries")
{
ApplicationArea = Basic, Suite;
Caption = 'Adjust Cost - Item Entries';
Image = AdjustEntries;
//The property 'PromotedCategory' can only be set if the property 'Promoted' is set to 'true'
//PromotedCategory = Category8;
RunObject = Report "Adjust Cost - Item Entries";
}
action("Post Inventory Cost to G/L")
{
ApplicationArea = Basic, Suite;
Caption = 'Post Inventory Cost to G/L';
Image = PostInventoryToGL;
//The property 'PromotedCategory' can only be set if the property 'Promoted' is set to 'true'
//PromotedCategory = Category8;
RunObject = Report "Post Inventory Cost to G/L";
}
action("Physical Inventory Journal")
{
ApplicationArea = Basic, Suite;
Caption = 'Physical Inventory Journal';
Image = PhysicalInventory;
//The property 'PromotedCategory' can only be set if the property 'Promoted' is set to 'true'
//PromotedCategory = Category8;
RunObject = Page "Phys. Inventory Journal";
ToolTip = 'Select how you want to maintain an up-to-date record of your inventory at different locations.';
}
action("Revaluation Journal")
{
ApplicationArea = Basic, Suite;
Caption = 'Revaluation Journal';
Image = Journal;
//The property 'PromotedCategory' can only be set if the property 'Promoted' is set to 'true'
//PromotedCategory = Category8;
RunObject = Page "Revaluation Journal";
ToolTip = 'View or edit the inventory value of items, which you can change, such as after doing a physical inventory.';
}
}
group(RequestApproval)
{
Caption = 'Request Approval';
Image = SendApprovalRequest;
action(SendApprovalRequest)
{
ApplicationArea = Suite;
Caption = 'Send A&pproval Request';
Enabled = (not OpenApprovalEntriesExist) and EnabledApprovalWorkflowsExist and CanRequestApprovalForFlow;
Image = SendApprovalRequest;
ToolTip = 'Request approval to change the record.';
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
if ApprovalsMgmt.CheckItemApprovalsWorkflowEnabled(Rec) then
ApprovalsMgmt.OnSendItemForApproval(Rec);
end;
}
action(CancelApprovalRequest)
{
ApplicationArea = Suite;
Caption = 'Cancel Approval Re&quest';
Enabled = CanCancelApprovalForRecord or CanCancelApprovalForFlow;
Image = CancelApprovalRequest;
ToolTip = 'Cancel the approval request.';
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
WorkflowWebhookManagement: Codeunit "Workflow Webhook Management";
begin
ApprovalsMgmt.OnCancelItemApprovalRequest(Rec);
WorkflowWebhookManagement.FindAndCancel(Rec.RecordId);
end;
}
}
group(Workflow)
{
Caption = 'Workflow';
action(CreateApprovalWorkflow)
{
ApplicationArea = Suite;
Caption = 'Create Approval Workflow';
Enabled = not EnabledApprovalWorkflowsExist;
Image = CreateWorkflow;
ToolTip = 'Set up an approval workflow for creating or changing items, by going through a few pages that will guide you.';
trigger OnAction()
begin
PAGE.RunModal(PAGE::"Item Approval WF Setup Wizard");
end;
}
action(ManageApprovalWorkflow)
{
ApplicationArea = Suite;
Caption = 'Manage Approval Workflow';
Enabled = EnabledApprovalWorkflowsExist;
Image = WorkflowSetup;
ToolTip = 'View or edit existing approval workflows for creating or changing items.';
trigger OnAction()
var
WorkflowManagement: Codeunit "Workflow Management";
begin
WorkflowManagement.NavigateToWorkflows(DATABASE::Item, EventFilter);
end;
}
}
group(Functions)
{
Caption = 'F&unctions';
Image = "Action";
action("&Create Stockkeeping Unit")
{
AccessByPermission = TableData "Stockkeeping Unit" = R;
ApplicationArea = Warehouse;
Caption = '&Create Stockkeeping Unit';
Image = CreateSKU;
ToolTip = 'Create an instance of the item at each location that is set up.';
trigger OnAction()
var
Item: Record Item;
begin
Item.SetRange("No.", Rec."No.");
REPORT.RunModal(REPORT::"Create Stockkeeping Unit", true, false, Item);
end;
}
action("C&alculate Counting Period")
{
AccessByPermission = TableData "Phys. Invt. Item Selection" = R;
ApplicationArea = Warehouse;
Caption = 'C&alculate Counting Period';
Image = CalculateCalendar;
ToolTip = 'Prepare for a physical inventory by calculating which items or SKUs need to be counted in the current period.';
trigger OnAction()
var
Item: Record Item;
PhysInvtCountMgt: Codeunit "Phys. Invt. Count.-Management";
begin
CurrPage.SetSelectionFilter(Item);
PhysInvtCountMgt.UpdateItemPhysInvtCount(Item);
end;
}
action(CopyItem)
{
AccessByPermission = TableData Item = I;
ApplicationArea = Basic, Suite;
Caption = 'Copy Item';
Image = Copy;
ToolTip = 'Create a copy of the current item.';
trigger OnAction()
begin
CODEUNIT.Run(CODEUNIT::"Copy Item", Rec);
end;
}
action(NewFromPicture)
{
ApplicationArea = Basic, Suite;
Caption = 'New from picture';
Image = NewItem;
Visible = NewFromPictureVisible;
ToolTip = 'Create a new item from a picture and specify details such as item attributes.';
trigger OnAction()
var
ItemFromPicture: Codeunit "Item From Picture";
begin
ItemFromPicture.ItemFromImage();
end;
}
action(AdjustInventory)
{
ApplicationArea = Basic, Suite;
Caption = 'Adjust Inventory';
Enabled = IsInventoriable;
Image = InventoryCalculation;
Scope = Repeater;
ToolTip = 'Increase or decrease the item''s inventory quantity manually by entering a new quantity. Adjusting the inventory quantity manually may be relevant after a physical count or if you do not record purchased quantities.';
Visible = IsInventoryAdjmtAllowed;
trigger OnAction()
var
AdjustInventory: Page "Adjust Inventory";
begin
Commit();
AdjustInventory.SetItem(Rec."No.");
AdjustInventory.RunModal();
end;
}
}
action(FilterByAttributes)
{
AccessByPermission = TableData "Item Attribute" = R;
ApplicationArea = Basic, Suite;
Caption = 'Filter by Attributes';
Image = EditFilter;
ToolTip = 'Find items that match specific attributes. To make sure you include recent changes made by other users, clear the filter and then reset it.';
trigger OnAction()
var
ItemAttributeManagement: Codeunit "Item Attribute Management";
TypeHelper: Codeunit "Type Helper";
CloseAction: Action;
FilterText: Text;
FilterPageID: Integer;
ParameterCount: Integer;
begin
FilterPageID := PAGE::"Filter Items by Attribute";
if ClientTypeManagement.GetCurrentClientType() = CLIENTTYPE::Phone then
FilterPageID := PAGE::"Filter Items by Att. Phone";
CloseAction := PAGE.RunModal(FilterPageID, TempFilterItemAttributesBuffer);
if (ClientTypeManagement.GetCurrentClientType() <> CLIENTTYPE::Phone) and (CloseAction <> ACTION::LookupOK) then
exit;
if TempFilterItemAttributesBuffer.IsEmpty() then begin
ClearAttributesFilter();
exit;
end;
TempItemFilteredFromAttributes.Reset();
TempItemFilteredFromAttributes.DeleteAll();
ItemAttributeManagement.FindItemsByAttributes(TempFilterItemAttributesBuffer, TempItemFilteredFromAttributes);
FilterText := ItemAttributeManagement.GetItemNoFilterText(TempItemFilteredFromAttributes, ParameterCount);
if ParameterCount < TypeHelper.GetMaxNumberOfParametersInSQLQuery() - 100 then begin
Rec.FilterGroup(0);
Rec.MarkedOnly(false);
Rec.SetFilter("No.", FilterText);
end;
RunOnTempRec := true;
end;
}
action(ClearAttributes)
{
AccessByPermission = TableData "Item Attribute" = R;
ApplicationArea = Basic, Suite;
Caption = 'Clear Attributes Filter';
Image = RemoveFilterLines;
ToolTip = 'Remove the filter for specific item attributes.';
trigger OnAction()
begin
ClearAttributesFilter();
TempItemFilteredFromAttributes.Reset();
TempItemFilteredFromAttributes.DeleteAll();
RunOnTempRec := false;
RestoreTempItemFilteredFromAttributes();
end;
}
action("Requisition Worksheet")
{
ApplicationArea = Planning;
Caption = 'Requisition Worksheet';
Image = Worksheet;
RunObject = Page "Req. Worksheet";
ToolTip = 'Calculate a supply plan to fulfill item demand with purchases or transfers.';
}
action("Item Journal")
{
ApplicationArea = Basic, Suite;
Caption = 'Item Journal';
Image = Journals;
RunObject = Page "Item Journal";
ToolTip = 'Open a list of journals where you can adjust the physical quantity of items on inventory.';
}
action("Item Reclassification Journal")
{
ApplicationArea = Warehouse;
Caption = 'Item Reclassification Journal';
Image = Journals;
RunObject = Page "Item Reclass. Journal";
ToolTip = 'Change information on item ledger entries, such as dimensions, location codes, bin codes, and serial, lot or package numbers.';
}
action("Item Tracing")
{
ApplicationArea = Basic, Suite;
Caption = 'Item Tracing';
Image = ItemTracing;
RunObject = Page "Item Tracing";
ToolTip = 'Trace where a serial, lot or package number assigned to the item was used, for example, to find which lot a defective component came from or to find all the customers that have received items containing the defective component.';
}
action("Adjust Item Cost/Price")
{
ApplicationArea = Basic, Suite;
Caption = 'Adjust Item Cost/Price';
Image = AdjustItemCost;
RunObject = Report "Adjust Item Costs/Prices";
}
action(ApplyTemplate)
{
ApplicationArea = Basic, Suite;
Caption = 'Apply Template';
Image = ApplyTemplate;
ToolTip = 'Apply a template to update one or more entities with your standard settings for a certain type of entity.';
trigger OnAction()
var
Item: Record Item;
ItemTemplMgt: Codeunit "Item Templ. Mgt.";
begin
CurrPage.SetSelectionFilter(Item);
ItemTemplMgt.UpdateItemsFromTemplate(Item);
end;
}
}
area(reporting)
{
action(PrintLabel)
{
AccessByPermission = TableData Item = I;
ApplicationArea = Basic, Suite;
Image = Print;
Caption = 'Print Label';
ToolTip = 'Print Label';
trigger OnAction()
var
Item: Record Item;
ItemGTINLabel: Report "Item GTIN Label";
begin
Item := Rec;
CurrPage.SetSelectionFilter(Item);
ItemGTINLabel.SetTableView(Item);
ItemGTINLabel.RunModal();
end;
}
group(Inventory)
{
Caption = 'Inventory';
action("Inventory by Location")
{
ApplicationArea = InventoryAnalysis;
Caption = 'Analyze Inventory by Location';
Image = NonStockItem;
RunObject = Query "Inventory by Location";
ToolTip = 'Analyze (group, summarize, pivot) your Item Ledger Entries with related Location master data.';
}
action("Inventory - List")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory - List';
Image = "Report";
RunObject = Report "Inventory - List";
}
#if not CLEAN28
action("Inventory - Availability Plan")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory - Availability Plan (Obsolete)';
Image = ItemAvailability;
RunObject = Report "Inventory - Availability Plan";
ToolTip = 'View a list of the quantity of each item in customer, purchase, and transfer orders and the quantity available in inventory. The list is divided into columns that cover six periods with starting and ending dates as well as the periods before and after those periods. The list is useful when you are planning your inventory purchases.';
ObsoleteState = Pending;
ObsoleteReason = 'This report has been replaced by the report Inventory - Availability Plan (Excel). This report will be removed in a future release.';
ObsoleteTag = '28.0';
}
#endif
action("Inventory - Availability Plan Excel")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory - Availability Plan (Excel)';
Image = ItemAvailability;
RunObject = Report "Inv. Availability Plan";
}
action("Item/Vendor Catalog")
{
ApplicationArea = Basic, Suite;
Caption = 'Item/Vendor Catalog';
Image = "Report";
RunObject = Report "Item/Vendor Catalog";
}
action("Phys. Inventory List")
{
ApplicationArea = Warehouse;
Caption = 'Phys. Inventory List';
Image = "Report";
RunObject = Report "Phys. Inventory List";
}
action("Catalog Item Sales")
{
ApplicationArea = Basic, Suite;
Caption = 'Catalog Item Sales';
Image = "Report";
RunObject = Report "Catalog Item Sales";
}
action("Item Substitutions")
{
ApplicationArea = Suite;
Caption = 'Item Substitutions';
Image = "Report";
RunObject = Report "Item Substitutions";
}
action("Price List")
{
ApplicationArea = Basic, Suite;
Caption = 'Price List';
Image = "Report";
Visible = not ExtendedPriceEnabled;
RunObject = Report "Price List";
}
action("Item Price List")
{
ApplicationArea = Basic, Suite;
Caption = 'Price List';
Image = "Report";
Visible = ExtendedPriceEnabled;
RunObject = Report "Item Price List";
}
action("Inventory Cost and Price List")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory Cost and Price List';
Image = "Report";
RunObject = Report "Inventory Cost and Price List";
}
action("Inventory Availability")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory Availability';
Image = "Report";
RunObject = Report "Inventory Availability";
}
group("Item Register")
{
Caption = 'Item Register';
Image = ItemRegisters;
action("Item Register - Quantity")
{
ApplicationArea = Basic, Suite;
Caption = 'Item Register - Quantity';
Image = "Report";
RunObject = Report "Item Register - Quantity";
}
action("Item Register - Value")
{
ApplicationArea = Basic, Suite;
Caption = 'Item Register - Value';
Image = "Report";
RunObject = Report "Item Register - Value";
}
}
group(Action130)
{
Caption = 'Costing';
Image = ItemCosts;
action("Inventory - Cost Variance")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory - Cost Variance';
Image = ItemCosts;
RunObject = Report "Inventory - Cost Variance";
}
action("Invt. Valuation - Cost Spec.")
{
ApplicationArea = Basic, Suite;
Caption = 'Invt. Valuation - Cost Spec.';
Image = "Report";
RunObject = Report "Invt. Valuation - Cost Spec.";
}
}
group("Inventory Details")
{
Caption = 'Inventory Details';
Image = "Report";
action("Inventory - Transaction Detail")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory - Transaction Detail';
Image = "Report";
RunObject = Report "Inventory - Transaction Detail";
}
action("Item Charges - Specification")
{
ApplicationArea = ItemCharges;
Caption = 'Item Charges - Specification';
Image = "Report";
RunObject = Report "Item Charges - Specification";
}
#if not CLEAN28
action("Item Age Composition - Quantity")
{
ApplicationArea = Basic, Suite;
Caption = 'Item Age Composition - Quantity (Obsolete)';
ObsoleteState = Pending;
ObsoleteReason = 'This report has been deprecated and will be removed in a future release.';
ObsoleteTag = '28.0';
Image = "Report";
RunObject = Report "Item Age Composition - Qty.";
ToolTip = 'View, print, or save an overview of the current age composition of selected items in your inventory.';
}
#endif
action("Item Expiration - Quantity")
{
ApplicationArea = ItemTracking;
Caption = 'Item Expiration - Quantity';
Image = "Report";
RunObject = Report "Item Expiration - Quantity";
}
}
group(Reports)
{
Caption = 'Inventory Statistics';
Image = "Report";
action("Inventory - Sales Statistics")
{
ApplicationArea = Suite;
Caption = 'Inventory - Sales Statistics';
Image = "Report";
RunObject = Report "Inventory - Sales Statistics";
}
action("Inventory - Customer Sales")
{
ApplicationArea = Suite;
Caption = 'Inventory - Customer Sales';
Image = "Report";
RunObject = Report "Inventory - Customer Sales";
}
action("Inventory - Top 10 List")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory - Top 10 List';
Image = "Report";
RunObject = Report "Inventory - Top 10 List";
}
}
group("Finance Reports")
{
Caption = 'Finance Reports';
Image = "Report";
action("Inventory Valuation")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory Valuation';
Image = "Report";
RunObject = Report "Inventory Valuation";
}
action(Status)
{
ApplicationArea = Basic, Suite;
Caption = 'Status';
Image = "Report";
RunObject = Report Status;
ToolTip = 'View, print, or save the status of partially filled or unfilled orders so you can determine what effect filling these orders may have on your inventory.';
}
action("Item Age Composition - Value")
{
ApplicationArea = Basic, Suite;
Caption = 'Item Age Composition - Value';
Image = "Report";
RunObject = Report "Item Age Composition - Value";
}
}
}
group(Orders)
{
Caption = 'Orders';
action("Inventory Order Details")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory Order Details';
Image = "Report";
RunObject = Report "Inventory Order Details";
}
action("Inventory Purchase Orders")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory Purchase Orders';
Image = "Report";
RunObject = Report "Inventory Purchase Orders";
}
action("Inventory - Vendor Purchases")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory - Vendor Purchases';
Image = "Report";
RunObject = Report "Inventory - Vendor Purchases";
}
action("Inventory - Reorders")
{
ApplicationArea = Planning;
Caption = 'Inventory - Reorders';
Image = "Report";
RunObject = Report "Inventory - Reorders";
}
action("Inventory - Sales Back Orders")
{
ApplicationArea = Basic, Suite;
Caption = 'Inventory - Sales Back Orders';
Image = "Report";
RunObject = Report "Inventory - Sales Back Orders";
}
}
}
area(navigation)
{
group(Action126)
{
Caption = 'Item';
action(ApprovalEntries)
{
AccessByPermission = TableData "Approval Entry" = R;
ApplicationArea = Suite;
Caption = 'Approvals';
Image = Approvals;
ToolTip = 'View a list of the records that are waiting to be approved. For example, you can see who requested the record to be approved, when it was sent, and when it is due to be approved.';
trigger OnAction()
begin
ApprovalsMgmt.OpenApprovalEntriesPage(Rec.RecordId);
end;
}
action(Attributes)
{
AccessByPermission = TableData "Item Attribute" = R;
ApplicationArea = Suite;
Caption = 'Attributes';
Image = Category;
//The property 'PromotedCategory' can only be set if the property 'Promoted' is set to 'true'
//PromotedCategory = Category4;
Scope = Repeater;
ToolTip = 'View or edit the item''s attributes, such as color, size, or other characteristics that help to describe the item.';
trigger OnAction()
begin
PAGE.RunModal(PAGE::"Item Attribute Value Editor", Rec);
CurrPage.SaveRecord();
CurrPage.ItemAttributesFactBox.PAGE.LoadItemAttributesData(Rec."No.");
end;
}
action("Va&riants")
{
ApplicationArea = Planning;
Caption = 'Va&riants';
Image = ItemVariant;
RunObject = Page "Item Variants";
RunPageLink = "Item No." = field("No.");
ToolTip = 'View how the inventory level of an item will develop over time according to the variant that you select.';
}
action(Identifiers)
{
ApplicationArea = Warehouse;
Caption = 'Identifiers';
Image = BarCode;
RunObject = Page "Item Identifiers";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.", "Variant Code", "Unit of Measure Code");
ToolTip = 'View a unique identifier for each item that you want warehouse employees to keep track of within the warehouse when using handheld devices. The item identifier can include the item number, the variant code and the unit of measure.';
}
group(Dimensions)
{
Caption = 'Dimensions';
Image = Dimensions;
action(DimensionsSingle)
{
ApplicationArea = Dimensions;
Caption = 'Dimensions-Single';
Image = Dimensions;
RunObject = Page "Default Dimensions";
RunPageLink = "Table ID" = const(27),
"No." = field("No.");
Scope = Repeater;
ShortCutKey = 'Alt+D';
ToolTip = 'View or edit the single set of dimensions that are set up for the selected record.';
}
action(DimensionsMultiple)
{
AccessByPermission = TableData Dimension = R;
ApplicationArea = Dimensions;
Caption = 'Dimensions-&Multiple';
Image = DimensionSets;
ToolTip = 'View or edit dimensions for a group of records. You can assign dimension codes to transactions to distribute costs and analyze historical information.';
trigger OnAction()
var
Item: Record Item;
DefaultDimMultiple: Page "Default Dimensions-Multiple";
begin
CurrPage.SetSelectionFilter(Item);
DefaultDimMultiple.SetMultiRecord(Item, Rec.FieldNo("No."));
DefaultDimMultiple.RunModal();
end;
}
}
action("Item Refe&rences")
{
AccessByPermission = TableData "Item Reference" = R;
ApplicationArea = Suite, ItemReferences;
Caption = 'Item References';
Image = Change;
RunObject = Page "Item Reference Entries";
RunPageLink = "Item No." = field("No.");
Scope = Repeater;
ToolTip = 'Set up a customer''s or vendor''s own identification of the selected item. References to the customer''s item number means that the item number is automatically shown on sales documents instead of the number that you use.';
}
action("&Units of Measure")
{
ApplicationArea = Suite;
Caption = '&Units of Measure';
Image = UnitOfMeasure;
RunObject = Page "Item Units of Measure";
RunPageLink = "Item No." = field("No.");
Scope = Repeater;
ToolTip = 'Set up the different units that the item can be traded in, such as piece, box, or hour.';
}
action("E&xtended Texts")
{
ApplicationArea = Suite;
Caption = 'E&xtended Texts';
Image = Text;
RunObject = Page "Extended Text List";
RunPageLink = "Table Name" = const(Item),
"No." = field("No.");
RunPageView = sorting("Table Name", "No.", "Language Code", "All Language Codes", "Starting Date", "Ending Date");
Scope = Repeater;
ToolTip = 'Select or set up additional text for the description of the item. Extended text can be inserted under the Description field on document lines for the item.';
}
action(Translations)
{
ApplicationArea = Suite;
Caption = 'Translations';
Image = Translations;
RunObject = Page "Item Translations";
RunPageLink = "Item No." = field("No."),
"Variant Code" = const('');
Scope = Repeater;
ToolTip = 'Set up translated item descriptions for the selected item. Translated item descriptions are automatically inserted on documents according to the language code.';
}
action("Substituti&ons")
{
ApplicationArea = Suite;
Caption = 'Substituti&ons';
Image = ItemSubstitution;
RunObject = Page "Item Substitution Entry";
RunPageLink = Type = const(Item),
"No." = field("No.");
ToolTip = 'View or edit substitute items that are set up to be traded instead of the item in case it is not available.';
}
action(ItemStatistics)
{
ApplicationArea = Basic, Suite;
Caption = 'Item Statistics';
Image = Statistics;
RunObject = Page "Item Statistics 2";
RunPageLink = "Item No." = field("No.");
ToolTip = 'View item statistics. Summarised sales, inventory value, turnover and aging based on the selected filters, with drill-down to related ledger and value entries.';
}
}
group(Availability)
{
Caption = 'Availability';
Image = Item;
action("Items b&y Location")
{
AccessByPermission = TableData Location = R;
ApplicationArea = Location;
Caption = 'Items b&y Location';
Image = ItemAvailbyLoc;
ToolTip = 'Show a list of items grouped by location.';
trigger OnAction()
begin
PAGE.Run(PAGE::"Items by Location", Rec);
end;
}
group("&Item Availability by")
{
Caption = '&Item Availability by';
Image = ItemAvailability;
Enabled = IsInventoriable;
action("<Action5>")
{
ApplicationArea = Suite;
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 = Suite;
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 the current and projected quantity of the item for each variant.';
}
action(Location)
{
ApplicationArea = Suite;
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(Lot)
{
ApplicationArea = ItemTracking;
Caption = 'Lot';
Image = LotInfo;
RunObject = Page "Item Availability by Lot No.";
RunPageLink = "No." = field("No.");
ToolTip = 'View the current and projected quantity of the item for each lot.';
}
action("BOM Level")
{
ApplicationArea = Assembly;
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"::BOM);
end;
}
action("Unit of Measure")
{
ApplicationArea = Basic, Suite;
Caption = 'Unit of Measure';
Image = UnitOfMeasure;
RunObject = Page "Item Availability by UOM";
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 item''s availability by a unit of measure.';
}
}
}
group(ActionGroupCRM)
{
Caption = 'Dynamics 365 Sales';
Visible = CRMIntegrationEnabled;
Enabled = (BlockedFilterApplied and (not Rec.Blocked)) or not BlockedFilterApplied;
action(CRMGoToProduct)
{
ApplicationArea = Suite;
Caption = 'Product';
Image = CoupledItem;
ToolTip = 'Open the coupled Dynamics 365 Sales product.';
trigger OnAction()
var
CRMIntegrationManagement: Codeunit "CRM Integration Management";
begin
CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
end;
}
action(CRMSynchronizeNow)
{
AccessByPermission = TableData "CRM Integration Record" = IM;
ApplicationArea = Suite;
Caption = 'Synchronize';
Image = Refresh;
ToolTip = 'Send updated data to Dynamics 365 Sales.';
trigger OnAction()
var
Item: Record Item;
CRMIntegrationManagement: Codeunit "CRM Integration Management";
ItemRecordRef: RecordRef;
begin
CurrPage.SetSelectionFilter(Item);
Item.Next();
if Item.Count = 1 then
CRMIntegrationManagement.UpdateOneNow(Item.RecordId)
else begin
ItemRecordRef.GetTable(Item);
CRMIntegrationManagement.UpdateMultipleNow(ItemRecordRef);
end
end;
}
group(Coupling)
{
Caption = 'Coupling', Comment = 'Coupling is a noun';
Image = LinkAccount;
ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Dynamics 365 Sales record.';
action(ManageCRMCoupling)
{
AccessByPermission = TableData "CRM Integration Record" = IM;
ApplicationArea = Suite;
Caption = 'Set Up Coupling';
Image = LinkAccount;
ToolTip = 'Create or modify the coupling to a Dynamics 365 Sales product.';
trigger OnAction()
var
CRMIntegrationManagement: Codeunit "CRM Integration Management";
begin
CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
end;
}
action(MatchBasedCoupling)
{
AccessByPermission = TableData "CRM Integration Record" = IM;
ApplicationArea = Suite;
Caption = 'Match-Based Coupling';
Image = CoupledItem;
ToolTip = 'Couple items to products in Dynamics 365 Sales based on criteria.';
trigger OnAction()
var
Item: Record Item;
CRMIntegrationManagement: Codeunit "CRM Integration Management";
RecRef: RecordRef;
begin
CurrPage.SetSelectionFilter(Item);
RecRef.GetTable(Item);
CRMIntegrationManagement.MatchBasedCoupling(RecRef);
end;
}
action(DeleteCRMCoupling)
{
AccessByPermission = TableData "CRM Integration Record" = D;
ApplicationArea = Suite;
Caption = 'Delete Coupling';
Enabled = CRMIsCoupledToRecord;
Image = UnLinkAccount;
ToolTip = 'Delete the coupling to a Dynamics 365 Sales product.';
trigger OnAction()
var
Item: Record Item;
CRMCouplingManagement: Codeunit "CRM Coupling Management";
RecRef: RecordRef;
begin
CurrPage.SetSelectionFilter(Item);
RecRef.GetTable(Item);
CRMCouplingManagement.RemoveCoupling(RecRef);
end;
}
}
action(ShowLog)
{
ApplicationArea = Suite;
Caption = 'Synchronization Log';
Image = Log;
ToolTip = 'View integration synchronization jobs for the item table.';
trigger OnAction()
var
CRMIntegrationManagement: Codeunit "CRM Integration Management";
begin
CRMIntegrationManagement.ShowLog(Rec.RecordId);
end;
}
}
group("Assembly/Production")
{
Caption = 'Assembly/Production';
Image = Production;
action(Structure)
{
ApplicationArea = Assembly;
Caption = 'Structure';
Image = Hierarchy;
ToolTip = 'View which child items are used in an item''s assembly BOM or production BOM. Each item level can be collapsed or expanded to obtain an overview or detailed view.';
trigger OnAction()
var
BOMStructure: Page "BOM Structure";
begin
BOMStructure.InitItem(Rec);
BOMStructure.Run();
end;
}
action("Cost Shares")
{
ApplicationArea = Suite;
Caption = 'Cost Shares';
Image = CostBudget;
ToolTip = 'View how the costs of underlying items in the BOM roll up to the parent item. The information is organized according to the BOM structure to reflect at which levels the individual costs apply. Each item level can be collapsed or expanded to obtain an overview or detailed view.';
trigger OnAction()
var
BOMCostShares: Page "BOM Cost Shares";
begin
BOMCostShares.InitItem(Rec);
BOMCostShares.Run();
end;
}
group(Assembly)
{
Caption = 'Assemb&ly';
Image = AssemblyBOM;
action("<Action32>")
{
ApplicationArea = Assembly;
Caption = 'Assembly BOM';
Image = BOM;
RunObject = Page "Assembly BOM";
RunPageLink = "Parent Item No." = field("No.");
ToolTip = 'View or edit the bill of material that specifies which items and resources are required to assemble the assembly item.';
}
action("Where-Used")
{
ApplicationArea = Assembly;
Caption = 'Where-Used';
Image = Track;
RunObject = Page "Where-Used List";
RunPageLink = Type = const(Item),
"No." = field("No.");
RunPageView = sorting(Type, "No.");
ToolTip = 'View a list of assembly BOMs in which the item is used.';
}
action("Calc. Stan&dard Cost")
{
AccessByPermission = TableData "BOM Component" = R;
ApplicationArea = Assembly;
Caption = 'Calc. Assembly Std. Cost';
Image = CalculateCost;
ToolTip = 'Calculate the unit cost of the item by rolling up the unit cost of each component and resource in the item''s assembly BOM. The unit cost of a parent item must equal the total of the unit costs of its components, subassemblies, and any resources.';
trigger OnAction()
var
CalculateAssemblyCost: Codeunit Microsoft.Assembly.Costing."Calculate Assembly Cost";
begin
CalculateAssemblyCost.CalcItem(Rec."No.");
end;
}
action("Calc. Unit Price")
{
AccessByPermission = TableData "BOM Component" = R;
ApplicationArea = Assembly;
Caption = 'Calc. Unit Price';
Image = SuggestItemPrice;
ToolTip = 'Calculate the unit price based on the unit cost and the profit percentage.';
trigger OnAction()
var
CalculateAssemblyCost: Codeunit Microsoft.Assembly.Costing."Calculate Assembly Cost";
begin
CalculateAssemblyCost.CalcAssemblyItemPrice(Rec."No.");
end;
}
}
group(Statistics)
{
Caption = 'Statistics';
Image = Statistics;
action(Action16)
{
ApplicationArea = Suite;
Caption = 'Advanced Statistics';
Image = Statistics;
ShortCutKey = 'F7';
ToolTip = 'View statistical information, such as the value of posted entries, for the record.';
trigger OnAction()
var
ItemStatistics: Page "Item Statistics";
begin
ItemStatistics.SetItem(Rec);
ItemStatistics.RunModal();
end;
}
action("Entry Statistics")
{
ApplicationArea = Suite;
Caption = 'Entry Statistics';
Image = EntryStatistics;
RunObject = Page "Item Entry Statistics";
RunPageLink = "No." = field("No."),
"Date Filter" = field("Date Filter"),
"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 statistics for item ledger entries.';
}
action("T&urnover")
{
ApplicationArea = Suite;
Caption = 'T&urnover';
Image = Turnover;
RunObject = Page "Item Turnover";
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 a detailed account of item turnover by periods after you have set the relevant filters for location and variant.';
}
}
action("Co&mments")
{
ApplicationArea = Comments;
Caption = 'Co&mments';
Image = ViewComments;
RunObject = Page "Comment Sheet";
RunPageLink = "Table Name" = const(Item),
"No." = field("No.");
ToolTip = 'View or add comments for the record.';
}
}
group(Sales)
{
Caption = 'S&ales';
Image = Sales;
action(Sales_Prices)
{
ApplicationArea = Suite;
Visible = false;
Caption = 'Sales Prices';
Image = Price;
ToolTip = 'View or set up sales prices for the item. An item price is automatically granted on invoice lines when the specified criteria are met, such as vendor, quantity, or ending date.';
trigger OnAction()
begin
ShowPrices();
end;
}
action(Sales_LineDiscounts)
{
ApplicationArea = Suite;
Visible = false;
Caption = 'Sales Discounts';
Image = LineDiscount;
ToolTip = 'View or set up sales discounts for the item. An item discount is automatically granted on invoice lines when the specified criteria are met, such as vendor, quantity, or ending date.';
trigger OnAction()
begin
ShowLineDiscounts();
end;
}
action("Prepa&yment Percentages")
{
ApplicationArea = Prepayments;
Caption = 'Sales Prepa&yment Percentages';
Image = PrepaymentPercentages;
RunObject = Page "Sales Prepayment Percentages";
RunPageLink = "Item No." = field("No.");
ToolTip = 'View or edit the percentages of the sales price that can be paid as a prepayment.';
}
action(Action37)
{
ApplicationArea = Suite;
Caption = 'Sales Orders';
Image = Document;
RunObject = Page "Sales Orders";
RunPageLink = Type = const(Item),
"No." = field("No.");
RunPageView = sorting("Document Type", Type, "No.");
ToolTip = 'View a list of ongoing sales orders for the item.';
}
action("Returns Orders")
{
ApplicationArea = SalesReturnOrder;
Caption = 'Sales Returns Orders';
Image = ReturnOrder;
RunObject = Page "Sales Return Orders";
RunPageLink = Type = const(Item),
"No." = field("No.");
RunPageView = sorting("Document Type", Type, "No.");
ToolTip = 'View ongoing sales return orders for the item.';
}
}
group(Purchases)
{
Caption = '&Purchases';
Image = Purchasing;
action("Ven&dors")
{
ApplicationArea = Planning;
Caption = 'Ven&dors';
Image = Vendor;
RunObject = Page "Item Vendor Catalog";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.");
ToolTip = 'View the list of vendors who can supply the item, and at which lead time.';
}
action(Prices)
{
ApplicationArea = Advanced;
Caption = 'Purchase Prices';
Image = Price;
Visible = false;
RunObject = Page "Purchase Prices";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.");
ToolTip = 'View or set up purchase prices for the item. An item price is automatically granted on invoice lines when the specified criteria are met, such as vendor, quantity, or ending date.';
}
action("Line Discounts")
{
ApplicationArea = Advanced;
Caption = 'Purchase Discounts';
Image = LineDiscount;
Visible = false;
RunObject = Page "Purchase Line Discounts";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.");
ToolTip = 'View or set up purchase discounts for the item. An item discount is automatically granted on invoice lines when the specified criteria are met, such as vendor, quantity, or ending date.';
}
action(Action125)
{
ApplicationArea = Prepayments;
Caption = 'Purchase Prepa&yment Percentages';
Image = PrepaymentPercentages;
RunObject = Page "Purchase Prepmt. Percentages";
RunPageLink = "Item No." = field("No.");
ToolTip = 'View or edit the percentages of the purchase price that can be paid as a prepayment.';
}
action(Action40)
{
ApplicationArea = Suite;
Caption = 'Purchase Orders';
Image = Document;
RunObject = Page "Purchase Orders";
RunPageLink = Type = const(Item),
"No." = field("No.");
RunPageView = sorting("Document Type", Type, "No.");
ToolTip = 'View a list of ongoing purchase orders for the item.';
}
action("Return Orders")
{
ApplicationArea = PurchReturnOrder;
Caption = 'Purchase Return Orders';
Image = ReturnOrder;
RunObject = Page "Purchase Return Orders";
RunPageLink = Type = const(Item),
"No." = field("No.");
RunPageView = sorting("Document Type", Type, "No.");
ToolTip = 'Open the list of ongoing purchase return orders for the item.';
}
action("Ca&talog Items")
{
ApplicationArea = Basic, Suite;
Caption = 'Ca&talog Items';
Image = NonStockItem;
RunObject = Page "Catalog Item List";
ToolTip = 'View the list of items that you do not carry in inventory. ';
}
}
group(Warehouse)
{
Caption = 'Warehouse';
Image = Warehouse;
action("&Bin Contents")
{
ApplicationArea = Warehouse;
Caption = '&Bin Contents';
Image = BinContent;
RunObject = Page "Bin Content";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.");
ToolTip = 'View the quantities of the item in each bin where it exists. You can see all the important parameters relating to bin content, and you can modify certain bin content parameters in this window.';
}
action("Stockkeepin&g Units")
{
ApplicationArea = Warehouse;
Caption = 'Stockkeepin&g Units';
Image = SKU;
RunObject = Page "Stockkeeping Unit List";
RunPageLink = "Item No." = field("No.");
RunPageView = sorting("Item No.");
ToolTip = 'Open the item''s SKUs to view or edit instances of the item at different locations or with different variants. ';
}
}
}
area(Promoted)
{
group(Category_New)
{
actionref(NewFromPicturePromoted; NewFromPicture)
{
}
}
group(Category_Process)
{
Caption = 'Process', Comment = 'Generated from the PromotedActionCategories property index 1.';
actionref(AdjustInventory_Promoted; AdjustInventory)
{
}
actionref(CopyItem_Promoted; CopyItem)
{
}
}
group(Category_Category7)
{
Caption = 'Request Approval', Comment = 'Generated from the PromotedActionCategories property index 6.';
}
group(Category_Category4)
{
Caption = 'Item', Comment = 'Generated from the PromotedActionCategories property index 3.';
group(Category_Dimensions)
{
Caption = 'Dimensions';
ShowAs = SplitButton;
actionref(DimensionsMultiple_Promoted; DimensionsMultiple)
{
}
actionref(DimensionsSingle_Promoted; DimensionsSingle)
{
}
}
actionref(ApprovalEntries_Promoted; ApprovalEntries)
{
}
actionref(Action16_Promoted; Action16)
{
}
actionref("Co&mments_Promoted"; "Co&mments")
{
}
separator(Navigate_Separator)
{
}
actionref("Items b&y Location_Promoted"; "Items b&y Location")
{
}
group("Category_Item Availability by")
{
Caption = 'Item Availability by';
actionref("<Action5>_Promoted"; "<Action5>")
{
}
actionref("BOM Level_Promoted"; "BOM Level")
{
}
actionref(Period_Promoted; Period)
{
}
actionref(Variant_Promoted; Variant)
{
}
actionref(Location_Promoted; Location)
{
}
actionref(Lot_Promoted; Lot)
{
}
actionref("Unit of Measure_Promoted"; "Unit of Measure")
{
}
}
actionref(Structure_Promoted; Structure)
{
}
actionref("Cost Shares_Promoted"; "Cost Shares")
{
}
actionref("Item Refe&rences_Promoted"; "Item Refe&rences")
{
}
}
group(Category_Category5)
{
Caption = 'History', Comment = 'Generated from the PromotedActionCategories property index 4.';
}
group(Category_Category6)
{
Caption = 'Prices & Discounts', Comment = 'Generated from the PromotedActionCategories property index 5.';
actionref(Prices_Prices_Promoted; Prices_Prices)
{
}
actionref(SalesPriceLists_Promoted; SalesPriceLists)
{
}
actionref(PurchPriceLists_Promoted; PurchPriceLists)
{
}
actionref(PricesDiscountsOverview_Promoted; PricesDiscountsOverview)
{
}
actionref(Prices_LineDiscounts_Promoted; Prices_LineDiscounts)
{
}
actionref(PurchPricesDiscountsOverview_Promoted; PurchPricesDiscountsOverview)
{
}
actionref(SalesPriceListsDiscounts_Promoted; SalesPriceListsDiscounts)
{
}
actionref(PurchPriceListsDiscounts_Promoted; PurchPriceListsDiscounts)
{
}
actionref("Set Special Prices_Promoted"; "Set Special Prices")
{
}
actionref("Sales Price Worksheet_Promoted"; "Sales Price Worksheet")
{
Visible = false;
}
actionref("Set Special Discounts_Promoted"; "Set Special Discounts")
{
}
}
group(Category_Category8)
{
Caption = 'Periodic Activities', Comment = 'Generated from the PromotedActionCategories property index 7.';
}
group(Category_Category9)
{
Caption = 'Inventory', Comment = 'Generated from the PromotedActionCategories property index 8.';
}
group(Category_Category10)
{
Caption = 'Attributes', Comment = 'Generated from the PromotedActionCategories property index 9.';
actionref(Attributes_Promoted; Attributes)
{
}
actionref(FilterByAttributes_Promoted; FilterByAttributes)
{
}
actionref(ClearAttributes_Promoted; ClearAttributes)
{
}
}
group(Category_Report)
{
Caption = 'Report', Comment = 'Generated from the PromotedActionCategories property index 2.';
actionref("Inventory by Location_Promoted"; "Inventory by Location")
{
}
actionref("Price List_Promoted"; "Price List")
{
}
actionref("Item Price List_Promoted"; "Item Price List")
{
}
actionref("Inventory - Reorders_Promoted"; "Inventory - Reorders")
{
}
actionref("Inventory - Sales Back Orders_Promoted"; "Inventory - Sales Back Orders")
{
}
}
group(Category_Synchronize)
{
Caption = 'Synchronize';
Visible = CRMIntegrationEnabled;
group(Category_Coupling)
{
Caption = 'Coupling';
ShowAs = SplitButton;
actionref(ManageCRMCoupling_Promoted; ManageCRMCoupling)
{
}
actionref(DeleteCRMCoupling_Promoted; DeleteCRMCoupling)
{
}
actionref(MatchBasedCoupling_Promoted; MatchBasedCoupling)
{
}
}
actionref(CRMSynchronizeNow_Promoted; CRMSynchronizeNow)
{
}
actionref(CRMGoToProduct_Promoted; CRMGoToProduct)
{
}
actionref(ShowLog_Promoted; ShowLog)
{
}
}
}
}
views
{
view(ItemsWithNegativeInventory)
{
Caption = 'Items with Negative Inventory';
Filters = where(Inventory = filter(< 0));
}
}
trigger OnAfterGetCurrRecord()
var
FilteredItem: Record Item;
CRMCouplingManagement: Codeunit "CRM Coupling Management";
WorkflowWebhookManagement: Codeunit "Workflow Webhook Management";
begin
if CRMIntegrationEnabled then
CRMIsCoupledToRecord := CRMCouplingManagement.IsRecordCoupledToCRM(Rec.RecordId);
OpenApprovalEntriesExist := ApprovalsMgmt.HasOpenApprovalEntries(Rec.RecordId);
CanCancelApprovalForRecord := ApprovalsMgmt.CanCancelApprovalForRecord(Rec.RecordId);
CurrPage.ItemAttributesFactBox.PAGE.LoadItemAttributesData(Rec."No.");
WorkflowWebhookManagement.GetCanRequestAndCanCancel(Rec.RecordId, CanRequestApprovalForFlow, CanCancelApprovalForFlow);
SetWorkflowManagementEnabledState();
CurrPage.SetSelectionFilter(FilteredItem);
CurrPage.PowerBIEmbeddedReportPart.PAGE.SetFilterToMultipleValues(FilteredItem, FilteredItem.FieldNo("No."));
end;
trigger OnAfterGetRecord()
begin
EnableControls();
end;
trigger OnFindRecord(Which: Text): Boolean
var
Found: Boolean;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeFindRecord(Rec, Which, CrossColumnSearchFilter, Found, IsHandled);
if IsHandled then
exit(Found);
if RunOnTempRec then begin
TempItemFilteredFromAttributes.Copy(Rec);
Found := TempItemFilteredFromAttributes.Find(Which);
if Found then
Rec := TempItemFilteredFromAttributes;
exit(Found);
end;
exit(Rec.Find(Which));
end;
trigger OnInit()
begin
CurrPage.PowerBIEmbeddedReportPart.PAGE.SetPageContext(CurrPage.ObjectId(false));
end;
trigger OnNextRecord(Steps: Integer): Integer
var
ResultSteps: Integer;
begin
if RunOnTempRec then begin
TempItemFilteredFromAttributes.Copy(Rec);
ResultSteps := TempItemFilteredFromAttributes.Next(Steps);
if ResultSteps <> 0 then
Rec := TempItemFilteredFromAttributes;
exit(ResultSteps);
end;
exit(Rec.Next(Steps));
end;
trigger OnOpenPage()
var
IntegrationTableMapping: Record "Integration Table Mapping";
ItemFromPicture: Codeunit "Item From Picture";
CRMIntegrationManagement: Codeunit "CRM Integration Management";
AdjustItemInventory: Codeunit "Adjust Item Inventory";
begin
CRMIntegrationEnabled := CRMIntegrationManagement.IsCRMIntegrationEnabled();
if CRMIntegrationEnabled then
if IntegrationTableMapping.Get('ITEM-PRODUCT') then
BlockedFilterApplied := IntegrationTableMapping.GetTableFilter().Contains('Field54=1(0)');
ExtendedPriceEnabled := PriceCalculationMgt.IsExtendedPriceCalculationEnabled();
IsFoundationEnabled := ApplicationAreaMgmtFacade.IsFoundationEnabled();
IsInventoryAdjmtAllowed := AdjustItemInventory.GetInventoryAdjustmentAllowed();
SetWorkflowManagementEnabledState();
IsOnPhone := ClientTypeManagement.GetCurrentClientType() = CLIENTTYPE::Phone;
NewFromPictureVisible := ItemFromPicture.GetNewFromPictureActionVisible();
if ShowNotification then
NotAllItemsShownNotification();
end;
var
TempItemFilteredFromPickItem: Record Item temporary;
ApplicationAreaMgmtFacade: Codeunit "Application Area Mgmt. Facade";
ItemAvailFormsMgt: Codeunit "Item Availability Forms Mgt";
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
ClientTypeManagement: Codeunit "Client Type Management";
PriceCalculationMgt: Codeunit "Price Calculation Mgt.";
IsInventoryAdjmtAllowed: Boolean;
ShowNotification: Boolean;
protected var
TempFilterItemAttributesBuffer: Record "Filter Item Attributes Buffer" temporary;
TempItemFilteredFromAttributes: Record Item temporary;
IsFoundationEnabled: Boolean;
CRMIntegrationEnabled: Boolean;
CRMIsCoupledToRecord: Boolean;
BlockedFilterApplied: Boolean;
ExtendedPriceEnabled: Boolean;
NewFromPictureVisible: Boolean;
OpenApprovalEntriesExist: Boolean;
EnabledApprovalWorkflowsExist: Boolean;
CanCancelApprovalForRecord: Boolean;
IsOnPhone: Boolean;
RunOnTempRec: Boolean;
EventFilter: Text;
CrossColumnSearchFilter: Text;
CanRequestApprovalForFlow: Boolean;
CanCancelApprovalForFlow: Boolean;
RunOnPickItem: Boolean;
IsNonInventoriable: Boolean;
IsInventoriable: Boolean;
procedure SelectActiveItems(): Text
var
Item: Record Item;
begin
exit(SelectInItemList(Item));
end;
procedure SelectActiveItemsForService(var Item: Record Item): Text
begin
Item.SetRange("Service Blocked", false);
exit(SelectInItemList(Item));
end;
procedure SelectActiveItemsForSale(): Text
var
Item: Record Item;
begin
Item.SetRange("Sales Blocked", false);
exit(SelectInItemList(Item));
end;
procedure SelectActiveItemsForPurchase(): Text
var
Item: Record Item;
begin
Item.SetRange("Purchasing Blocked", false);
exit(SelectInItemList(Item));
end;
procedure SelectActiveItemsForTransfer(): Text
var
SelectedItem: Record Item;
begin
SelectedItem.SetRange(Type, SelectedItem.Type::Inventory);
OnSelectActiveItemsForTransferAfterSetFilters(SelectedItem);
exit(SelectInItemList(SelectedItem));
end;
procedure SelectInItemList(var Item: Record Item): Text
var
ItemListPage: Page "Item List";
begin
Item.SetRange(Blocked, false);
ItemListPage.SetTableView(Item);
ItemListPage.LookupMode(true);
if ItemListPage.RunModal() = ACTION::LookupOK then
exit(ItemListPage.GetSelectionFilter());
end;
procedure GetSelectionFilter(): Text
var
Item: Record Item;
SelectionFilterManagement: Codeunit SelectionFilterManagement;
begin
CurrPage.SetSelectionFilter(Item);
exit(SelectionFilterManagement.GetSelectionFilterForItem(Item));
end;
procedure SetSelection(var Item: Record Item)
begin
CurrPage.SetSelectionFilter(Item);
end;
local procedure EnableControls()
begin
IsNonInventoriable := Rec.IsNonInventoriableType();
IsInventoriable := Rec.IsInventoriableType();
end;
local procedure SetWorkflowManagementEnabledState()
var
WorkflowManagement: Codeunit "Workflow Management";
WorkflowEventHandling: Codeunit "Workflow Event Handling";
begin
EventFilter := WorkflowEventHandling.RunWorkflowOnSendItemForApprovalCode() + '|' +
WorkflowEventHandling.RunWorkflowOnItemChangedCode();
EnabledApprovalWorkflowsExist := WorkflowManagement.EnabledWorkflowExist(DATABASE::Item, EventFilter);
end;
local procedure ClearAttributesFilter()
begin
Rec.ClearMarks();
Rec.MarkedOnly(false);
TempFilterItemAttributesBuffer.Reset();
TempFilterItemAttributesBuffer.DeleteAll();
Rec.FilterGroup(0);
Rec.SetRange("No.");
end;
procedure SetTempFilteredItemRec(var Item: Record Item)
begin
TempItemFilteredFromAttributes.Reset();
TempItemFilteredFromAttributes.DeleteAll();
TempItemFilteredFromPickItem.Reset();
TempItemFilteredFromPickItem.DeleteAll();
RunOnTempRec := true;
RunOnPickItem := true;
if Item.FindSet() then
repeat
TempItemFilteredFromAttributes := Item;
TempItemFilteredFromAttributes.Insert();
TempItemFilteredFromPickItem := Item;
TempItemFilteredFromPickItem.Insert();
until Item.Next() = 0;
end;
local procedure RestoreTempItemFilteredFromAttributes()
begin
if not RunOnPickItem then
exit;
TempItemFilteredFromAttributes.Reset();
TempItemFilteredFromAttributes.DeleteAll();
RunOnTempRec := true;
if TempItemFilteredFromPickItem.FindSet() then
repeat
TempItemFilteredFromAttributes := TempItemFilteredFromPickItem;
TempItemFilteredFromAttributes.Insert();
until TempItemFilteredFromPickItem.Next() = 0;
end;
internal procedure DoShowNotification()
begin
ShowNotification := true;
end;
local procedure NotAllItemsShownNotification()
var
NarrowFilterNotification: Notification;
NarrowDownFilterMsg: Label 'Some items are not shown. If you did not find what you are looking for, please narrow down the filter to show fewer items.';
begin
NarrowFilterNotification.Message := NarrowDownFilterMsg;
NarrowFilterNotification.Send();
end;
local procedure ShowLineDiscounts()
var
SalesLineDiscount: Record "Sales Line Discount";
begin
SalesLineDiscount.SetCurrentKey(Type, Code);
SalesLineDiscount.SetRange(Type, SalesLineDiscount.Type::Item);
SalesLineDiscount.SetRange(Code, Rec."No.");
Page.Run(Page::"Sales Line Discounts", SalesLineDiscount);
end;
local procedure ShowPrices()
var
SalesPrice: Record "Sales Price";
begin
SalesPrice.SetCurrentKey("Item No.");
SalesPrice.SetRange("Item No.", Rec."No.");
Page.Run(Page::"Sales Prices", SalesPrice);
end;
[IntegrationEvent(false, false)]
local procedure OnSelectActiveItemsForTransferAfterSetFilters(var Item: Record Item)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeFindRecord(var Rec: Record Item; Which: Text; var CrossColumnSearchFilter: Text; var Found: Boolean; var IsHandled: Boolean)
begin
end;
}