Page 316 Allocation Policies

App
Base Application
Namespace
Microsoft.Inventory.Tracking
Versions
23-28
Source table
387

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Inventory/Tracking/AllocationPolicies.Page.al120 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.Tracking;

page 316 "Allocation Policies"
{
    PageType = List;
    ApplicationArea = Reservation;
    SourceTable = "Allocation Policy";
    Caption = 'Allocation Policy';
    PopulateAllFields = true;
    DelayedInsert = true;

    layout
    {
        area(Content)
        {
            field(PageDescription; PageDescriptionTxt)
            {
                ToolTip = 'Specifies the description of the page.';
                ShowCaption = false;
                Editable = false;
            }
            repeater(Shortage)
            {
                field("Step No."; Rec."Line No.")
                {
                    Caption = 'Step No.';
                }
                field("Name"; Rec."Allocation Rule")
                {
                    Caption = 'Name';

                    trigger OnAssistEdit()
                    begin
                        if (Rec."Allocation Rule" <> Rec."Allocation Rule"::" ") and GuiAllowed() then
                            Message(Rec.GetAllocationPolicyDescription());
                    end;
                }
            }
        }
    }

    actions
    {
        area(Processing)
        {
            action("Move Up")
            {
                Caption = 'Move Up';
                Image = MoveUp;
                ToolTip = 'Move the selected line up in the list.';

                trigger OnAction()
                var
                    AllocationPolicy: Record "Allocation Policy";
                begin
                    AllocationPolicy.SetRange("Journal Batch Name", Rec."Journal Batch Name");
                    AllocationPolicy := Rec;
                    if Rec.Find() and AllocationPolicy.Find('<') then begin
                        ExchangeLines(AllocationPolicy, Rec);
                        CurrPage.Update(false);
                    end;
                end;
            }
            action("Move Down")
            {
                Caption = 'Move Down';
                Image = MoveDown;
                ToolTip = 'Move the selected line down in the list.';

                trigger OnAction()
                var
                    AllocationPolicy: Record "Allocation Policy";
                begin
                    AllocationPolicy.SetRange("Journal Batch Name", Rec."Journal Batch Name");
                    AllocationPolicy := Rec;
                    if Rec.Find() and AllocationPolicy.Find('>') then begin
                        ExchangeLines(AllocationPolicy, Rec);
                        CurrPage.Update(false);
                    end;
                end;
            }
        }
        area(Promoted)
        {
            group(Category_Process)
            {
                actionref("Move Up_Promoted"; "Move Up") { }
                actionref("Move Down_Promoted"; "Move Down") { }
            }
        }
    }

    var
        PageDescriptionTxt: Label 'Specify one or more allocation policies to control how you distribute available inventory among demands.';

    trigger OnNewRecord(BelowxRec: Boolean)
    begin
        Rec."Line No." := Rec.GetNextLineNo();
    end;

    local procedure ExchangeLines(var AllocationPolicy1: Record "Allocation Policy"; var AllocationPolicy2: Record "Allocation Policy")
    var
        LineNo: Integer;
    begin
        AllocationPolicy1.Delete();
        AllocationPolicy2.Delete();

        LineNo := AllocationPolicy1."Line No.";
        AllocationPolicy1."Line No." := AllocationPolicy2."Line No.";
        AllocationPolicy2."Line No." := LineNo;

        AllocationPolicy1.Insert();
        AllocationPolicy2.Insert();
    end;
}