Table 5801 Cost Adj. Item Bucket
- App
- Base Application
- Namespace
- Microsoft.Inventory.Costing
- Versions
- 24-28
Fields, 13Keys, 1Procedures, 4
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Inventory/Costing/CostAdjItemBucket.Table.al187 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.Costing;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Setup;
using System.Environment;
using System.Text;
table 5801 "Cost Adj. Item Bucket"
{
DataClassification = CustomerContent;
Caption = 'Cost Adj. Item Bucket';
InherentPermissions = RIMDX;
fields
{
field(1; "Line No."; Integer)
{
Caption = 'Line No.';
ToolTip = 'Specifies the line number of the item batch.';
}
field(2; "Item Filter"; Text[2048])
{
Caption = 'Item Filter';
ToolTip = 'Specifies the item filter that is used to select the items to be adjusted.';
TableRelation = Item where("Cost is Adjusted" = const(false));
ValidateTableRelation = false;
}
field(3; Status; Enum "Cost Adjustment Run Status")
{
Caption = 'Status';
ToolTip = 'Specifies the status of the cost adjustment process.';
}
field(4; "Starting Date-Time"; DateTime)
{
Caption = 'Starting Date-Time';
ToolTip = 'Specifies the date and time when the cost adjustment process started.';
}
field(5; "Ending Date-Time"; DateTime)
{
Caption = 'Ending Date-Time';
ToolTip = 'Specifies the date and time when the cost adjustment process ended or was canceled.';
}
field(6; "Timeout (Minutes)"; Integer)
{
Caption = 'Timeout (Minutes)';
MinValue = 0;
MaxValue = 720;
InitValue = 60;
BlankZero = true;
}
field(7; Company; Text[30])
{
Caption = 'Company';
TableRelation = Company;
ValidateTableRelation = false;
}
field(8; "Post to G/L"; Boolean)
{
Caption = 'Post to G/L';
ToolTip = 'Specifies whether the cost adjustment process should post the cost adjustment entries to the general ledger.';
}
field(9; Trace; Boolean)
{
Caption = 'Trace';
ToolTip = 'Specifies whether you want to trace the next cost adjustment run. It can be used to pinpoint issues in the cost adjustment process.';
}
field(11; "Last Error"; Text[2048])
{
Caption = 'Last Error';
ToolTip = 'Specifies the last error that occurred during the cost adjustment process.';
}
field(12; "Last Error Call Stack"; Text[2048])
{
Caption = 'Last Error Call Stack';
ToolTip = 'Specifies the call stack of the last error that occurred during the cost adjustment process.';
}
field(13; "Failed Item No."; Code[20])
{
Caption = 'Failed Item No.';
TableRelation = Item;
}
field(20; "Reschedule Count"; Integer)
{
Caption = 'Reschedule Count';
ToolTip = 'Specifies the number of times that the cost adjustment process is allowed to be retried if it fails.';
MinValue = 0;
MaxValue = 100;
InitValue = 10;
}
}
keys
{
key(PK; "Line No.")
{
Clustered = true;
}
}
procedure CancelBucket(Cancel: Boolean)
begin
if Cancel then
ModifyAll(Status, Status::"Canceled")
else
ModifyAll(Status, Status::"Not started");
end;
procedure GetLastLineNo(): Integer
var
CostAdjItemBucket: Record "Cost Adj. Item Bucket";
begin
CostAdjItemBucket.SetLoadFields("Line No.");
if CostAdjItemBucket.FindLast() then
exit(CostAdjItemBucket."Line No.");
exit(0);
end;
procedure AddItemsToBucket(var Item: Record Item)
var
SelectionFilterManagement: Codeunit SelectionFilterManagement;
ItemFilter: Text;
begin
if Item.GetFilters() = '' then
ItemFilter := '*'
else
ItemFilter := SelectionFilterManagement.GetSelectionFilterForItem(Item);
InsertNotStartedCostAdjItemBucket(ItemFilter);
end;
procedure AddMissingItems()
var
Item: Record Item;
TempItem: Record Item temporary;
CostAdjItemBucket: Record "Cost Adj. Item Bucket";
SelectionFilterManagement: Codeunit SelectionFilterManagement;
begin
Item.SetLoadFields("No.");
if Item.FindSet() then
repeat
TempItem."No." := Item."No.";
TempItem.Insert()
until Item.Next() = 0;
if CostAdjItemBucket.FindSet() then
repeat
TempItem.SetFilter("No.", CostAdjItemBucket."Item Filter");
TempItem.DeleteAll();
until CostAdjItemBucket.Next() = 0;
TempItem.Reset();
if TempItem.FindSet() then
repeat
Item.Get(TempItem."No.");
Item.Mark(true);
until TempItem.Next() = 0;
Item.MarkedOnly(true);
if not Item.IsEmpty() then
InsertNotStartedCostAdjItemBucket(SelectionFilterManagement.GetSelectionFilterForItem(Item));
end;
local procedure InsertNotStartedCostAdjItemBucket(ItemFilter: Text)
var
CostAdjItemBucket: Record "Cost Adj. Item Bucket";
InventorySetup: Record "Inventory Setup";
begin
InventorySetup.SetLoadFields("Automatic Cost Posting");
InventorySetup.Get();
CostAdjItemBucket.Init();
CostAdjItemBucket."Line No." := CostAdjItemBucket.GetLastLineNo() + 10000;
CostAdjItemBucket."Item Filter" := CopyStr(ItemFilter, 1, MaxStrLen(CostAdjItemBucket."Item Filter"));
CostAdjItemBucket.Status := CostAdjItemBucket.Status::"Not started";
CostAdjItemBucket."Timeout (Minutes)" := 60;
CostAdjItemBucket."Reschedule Count" := 10;
CostAdjItemBucket.Company := CopyStr(CompanyName(), 1, MaxStrLen(CostAdjItemBucket.Company));
CostAdjItemBucket."Post to G/L" := InventorySetup."Automatic Cost Posting";
CostAdjItemBucket.Insert();
end;
}