Page 324 Reservation Wksh. Batch Card

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

Versions171819202122232425262728

Source29

Source in 29

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

using Microsoft.Inventory.Item;
using Microsoft.Inventory.Location;
using System.Automation;

page 324 "Reservation Wksh. Batch Card"
{
    PageType = Card;
    ApplicationArea = Reservation;
    SourceTable = "Reservation Wksh. Batch";

    layout
    {
        area(Content)
        {
            group(General)
            {
                Caption = 'General';

                field(Name; Rec.Name)
                {
                    Caption = 'Name';
                }
                field(Description; Rec.Description)
                {
                    Caption = 'Description';
                }
            }
            group(Filters)
            {
                Caption = 'Filters';

                field("Demand Type"; Rec."Demand Type")
                {
                    Caption = 'Demand Type';
                }
                field("Start Date Formula"; Rec."Start Date Formula")
                {
                    Caption = 'Start Date Formula';
                }
                field("End Date Formula"; Rec."End Date Formula")
                {
                    Caption = 'End Date Formula';
                }
                field("Item Filter"; ItemFilter)
                {
                    Caption = 'Item Filter';
                    ToolTip = 'Specifies the filter that is used to select the items that will be included in the reservation worksheet.';
                    Editable = false;

                    trigger OnDrillDown()
                    var
                        ItemFilterXMLText: Text;
                    begin
                        ItemFilterXMLText := ItemFilterDrillDown(Rec.GetItemFilterBlobAsText());
                        if ItemFilterXMLText <> '' then begin
                            Rec.SetTextFilterToItemFilterBlob(ItemFilterXMLText);
                            Rec.Modify();
                            ItemFilter := Rec.GetItemFilterAsDisplayText();
                        end;
                    end;
                }
                field("Variant Filter"; VariantFilter)
                {
                    Caption = 'Variant Filter';
                    ToolTip = 'Specifies the filter that is used to select the variants that will be included in the reservation worksheet.';

                    trigger OnLookup(var Text: Text): Boolean
                    begin
                        exit(LookupVariantFilter(Text));
                    end;

                    trigger OnValidate()
                    var
                        ItemVariant: Record "Item Variant";
                    begin
                        ItemVariant.SetFilter(Code, VariantFilter);
                        VariantFilter := ItemVariant.GetFilter(Code);
                        Rec.SetTextFilterToVariantFilterBlob(VariantFilter);
                        Rec.Modify();
                    end;
                }
                field("Location Filter"; LocationFilter)
                {
                    Caption = 'Location Filter';
                    ToolTip = 'Specifies the filter that is used to select the locations that will be included in the reservation worksheet.';

                    trigger OnLookup(var Text: Text): Boolean
                    begin
                        exit(LookupLocationFilter(Text));
                    end;

                    trigger OnValidate()
                    var
                        Location: Record Location;
                    begin
                        Location.SetFilter(Code, LocationFilter);
                        LocationFilter := Location.GetFilter(Code);
                        Rec.SetTextFilterToLocationFilterBlob(LocationFilter);
                        Rec.Modify();
                    end;
                }
            }
        }
    }

    actions
    {
        area(Navigation)
        {
            action("Allocation Policies")
            {
                Caption = 'Allocation Policies';
                Image = Allocations;
                Ellipsis = true;
                ToolTip = 'Set up allocation policies for the batch';

                trigger OnAction();
                var
                    AllocationPolicy: Record "Allocation Policy";
                begin
                    AllocationPolicy.SetRange("Journal Batch Name", Rec.Name);
                    if Page.RunModal(Page::"Allocation Policies", AllocationPolicy) = Action::LookupOK then;
                end;
            }
        }
        area(Promoted)
        {
            actionref("Allocation Policies_Promoted"; "Allocation Policies")
            {

            }
        }
    }

    var
        ItemFilter: Text;
        VariantFilter: Text;
        LocationFilter: Text;

    trigger OnAfterGetRecord()
    begin
        ItemFilter := Rec.GetItemFilterAsDisplayText();
        VariantFilter := Rec.GetVariantFilterBlobAsText();
        LocationFilter := Rec.GetLocationFilterBlobAsText();
    end;

    local procedure ItemFilterDrillDown(ItemFilterBlobText: Text): Text
    var
        Item: Record Item;
        RequestPageParametersHelper: Codeunit "Request Page Parameters Helper";
        FilterPage: FilterPageBuilder;
        ItemCaptionTxt: Code[20];
    begin
        ItemCaptionTxt := CopyStr(Item.TableCaption(), 1, MaxStrLen(ItemCaptionTxt));
        RequestPageParametersHelper.BuildDynamicRequestPage(FilterPage, ItemCaptionTxt, Database::Item);
        RequestPageParametersHelper.SetViewOnDynamicRequestPage(FilterPage, ItemFilterBlobText, ItemCaptionTxt, Database::Item);
        FilterPage.PageCaption := ItemCaptionTxt;
        if not FilterPage.RunModal() then
            exit;
        exit(RequestPageParametersHelper.GetViewFromDynamicRequestPage(FilterPage, ItemCaptionTxt, Database::Item));
    end;

    local procedure LookupLocationFilter(var LookupText: Text): Boolean
    var
        Location: Record Location;
        LocationList: Page "Location List";
    begin
        Location.SetRange("Use As In-Transit", false);
        LocationList.SetTableView(Location);
        LocationList.LookupMode(true);
        if LocationList.RunModal() = ACTION::LookupOK then begin
            LookupText := LocationList.GetSelectionFilter();
            exit(true);
        end;

        exit(false);
    end;

    local procedure LookupVariantFilter(var LookupText: Text): Boolean
    var
        ItemVariant: Record "Item Variant";
        ItemVariantList: Page "Item Variants";
    begin
        ItemVariantList.LookupMode(true);
        ItemVariantList.SetTableView(ItemVariant);
        if ItemVariantList.RunModal() = ACTION::LookupOK then begin
            LookupText := ItemVariantList.GetSelectionFilter();
            exit(true);
        end;

        exit(false);
    end;
}