Table 99000850 Planning Assignment, source in 29
Source29
src/Layers/W1/BaseApp/Inventory/Planning/PlanningAssignment.Table.al223 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.Planning;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Location;
table 99000850 "Planning Assignment"
{
Caption = 'Planning Assignment';
Permissions = TableData "Planning Assignment" = rimd;
DataClassification = CustomerContent;
fields
{
field(1; "Item No."; Code[20])
{
Caption = 'Item No.';
TableRelation = Item."No.";
}
field(2; "Variant Code"; Code[10])
{
Caption = 'Variant Code';
TableRelation = "Item Variant".Code where("Item No." = field("Item No."));
}
field(3; "Location Code"; Code[10])
{
Caption = 'Location Code';
TableRelation = Location;
}
field(10; "Latest Date"; Date)
{
Caption = 'Latest Date';
}
field(12; Inactive; Boolean)
{
Caption = 'Inactive';
}
field(13; "Action Msg. Response Planning"; Boolean)
{
Caption = 'Action Msg. Response Planning';
trigger OnValidate()
begin
if "Action Msg. Response Planning" then
Inactive := false;
end;
}
field(14; "Net Change Planning"; Boolean)
{
Caption = 'Net Change Planning';
trigger OnValidate()
begin
if "Net Change Planning" then
Inactive := false;
end;
}
}
keys
{
key(Key1; "Item No.", "Variant Code", "Location Code")
{
Clustered = true;
}
}
fieldgroups
{
}
procedure ItemChange(var NewItem: Record Item; var OldItem: Record Item)
begin
case NewItem."Reordering Policy" of
NewItem."Reordering Policy"::" ":
if OldItem."Reordering Policy" <> OldItem."Reordering Policy"::" " then
AnnulAllAssignment(NewItem."No.")
else
exit;
else
OnItemChange(Rec, NewItem, OldItem);
end;
end;
procedure PlanningParametersChanged(NewItem: Record Item; OldItem: Record Item) Result: Boolean
begin
Result := (NewItem."Safety Stock Quantity" <> OldItem."Safety Stock Quantity") or
(NewItem."Safety Lead Time" <> OldItem."Safety Lead Time") or
(NewItem."Lead Time Calculation" <> OldItem."Lead Time Calculation") or
(NewItem."Reorder Point" <> OldItem."Reorder Point") or
(NewItem."Reordering Policy" <> OldItem."Reordering Policy") or
(NewItem."Replenishment System" <> OldItem."Replenishment System") or
(NewItem."Include Inventory" <> OldItem."Include Inventory");
OnAfterPlanningParametersChanged(NewItem, OldItem, Result);
end;
procedure SKUChange(var NewSKU: Record "Stockkeeping Unit"; var OldSKU: Record "Stockkeeping Unit")
begin
if NewSKU."Reordering Policy" = NewSKU."Reordering Policy"::" " then
if OldSKU."Reordering Policy" <> OldSKU."Reordering Policy"::" " then begin
SetRange("Item No.", NewSKU."Item No.");
SetRange("Variant Code", NewSKU."Variant Code");
SetRange("Location Code", NewSKU."Location Code");
if Find() then begin
"Net Change Planning" := false;
Modify();
end;
end else
exit
else
if PlanningSKUParametersChanged(NewSKU, OldSKU) then
AssignOne(NewSKU."Item No.", NewSKU."Variant Code", NewSKU."Location Code", WorkDate());
end;
local procedure PlanningSKUParametersChanged(NewSKU: Record "Stockkeeping Unit"; OldSKU: Record "Stockkeeping Unit") Result: Boolean
begin
Result := (NewSKU."Safety Stock Quantity" <> OldSKU."Safety Stock Quantity") or
(NewSKU."Safety Lead Time" <> OldSKU."Safety Lead Time") or
(NewSKU."Lead Time Calculation" <> OldSKU."Lead Time Calculation") or
(NewSKU."Reorder Point" <> OldSKU."Reorder Point") or
(NewSKU."Reordering Policy" <> OldSKU."Reordering Policy") or
(NewSKU."Replenishment System" <> OldSKU."Replenishment System") or
(NewSKU."Include Inventory" <> OldSKU."Include Inventory");
OnAfterPlanningSKUParametersChanged(NewSKU, OldSKU, Result);
end;
procedure AssignOne(ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10]; UpdateDate: Date)
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeAssignOne(IsHandled);
if IsHandled then
exit;
LockTable();
"Item No." := ItemNo;
"Variant Code" := VariantCode;
"Location Code" := LocationCode;
if Find() then begin
Validate("Net Change Planning", true);
if UpdateDate > "Latest Date" then
"Latest Date" := UpdateDate;
Modify();
end else begin
Init();
Validate("Net Change Planning", true);
"Latest Date" := UpdateDate;
Insert();
end
end;
procedure ChkAssignOne(ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10]; UpdateDate: Date)
var
Item: Record Item;
SKU: Record "Stockkeeping Unit";
ReorderingPolicy: Enum "Reordering Policy";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeChkAssignOne(ItemNo, VariantCode, LocationCode, UpdateDate, IsHandled);
if IsHandled then
exit;
ReorderingPolicy := Item."Reordering Policy"::" ";
if SKU.Get(LocationCode, ItemNo, VariantCode) then
ReorderingPolicy := SKU."Reordering Policy"
else
if Item.Get(ItemNo) then
ReorderingPolicy := Item."Reordering Policy";
if ReorderingPolicy <> Item."Reordering Policy"::" " then
AssignOne(ItemNo, VariantCode, LocationCode, UpdateDate);
end;
local procedure AnnulAllAssignment(ItemNo: Code[20])
begin
SetRange("Item No.", ItemNo);
ModifyAll("Net Change Planning", false);
end;
procedure SKUExists(ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10]): Boolean
var
SKU: Record "Stockkeeping Unit";
begin
SKU.SetRange("Item No.", ItemNo);
SKU.SetRange("Variant Code", VariantCode);
SKU.SetRange("Location Code", LocationCode);
exit(not SKU.IsEmpty);
end;
[IntegrationEvent(false, false)]
local procedure OnAfterPlanningParametersChanged(NewItem: Record Item; OldItem: Record Item; var Result: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterPlanningSKUParametersChanged(NewSKU: Record "Stockkeeping Unit"; OldSKU: Record "Stockkeeping Unit"; var Result: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeChkAssignOne(ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10]; UpdateDate: Date; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeAssignOne(var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnItemChange(var PlanningAssignment: Record "Planning Assignment"; var NewItem: Record Item; var OldItem: Record Item)
begin
end;
}