Page 5786 Source Document Filter Card, source in 29

Source29

src/Layers/W1/BaseApp/Warehouse/Request/SourceDocumentFilterCard.Page.al337 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.Warehouse.Request;

using Microsoft.Warehouse.Document;

page 5786 "Source Document Filter Card"
{
    Caption = 'Source Document Filter Card';
    LinksAllowed = false;
    PageType = Card;
    SourceTable = "Warehouse Source Filter";

    layout
    {
        area(content)
        {
            group(General)
            {
                Caption = 'General';
                field("Code"; Rec.Code)
                {
                    ApplicationArea = Warehouse;
                }
                field(Description; Rec.Description)
                {
                    ApplicationArea = Warehouse;
                }
                field("Source No. Filter"; Rec."Source No. Filter")
                {
                    ApplicationArea = Warehouse;
                }
                field("Item No. Filter"; Rec."Item No. Filter")
                {
                    ApplicationArea = Warehouse;
                }
                field("Variant Code Filter"; Rec."Variant Code Filter")
                {
                    ApplicationArea = Planning;
                }
                field("Unit of Measure Filter"; Rec."Unit of Measure Filter")
                {
                    ApplicationArea = Warehouse;
                }
                field("Shipment Method Code Filter"; Rec."Shipment Method Code Filter")
                {
                    ApplicationArea = Warehouse;
                }
                field("Show Filter Request"; Rec."Show Filter Request")
                {
                    ApplicationArea = Warehouse;
                }
                field("Sales Return Orders"; Rec."Sales Return Orders")
                {
                    ApplicationArea = Warehouse;
                    Enabled = SalesReturnOrdersEnable;
                }
                field("Purchase Orders"; Rec."Purchase Orders")
                {
                    ApplicationArea = Warehouse;
                    Enabled = PurchaseOrdersEnable;
                }
                field("Inbound Transfers"; Rec."Inbound Transfers")
                {
                    ApplicationArea = Warehouse;
                    Enabled = InboundTransfersEnable;

                    trigger OnValidate()
                    begin
                        EnableControls();
                    end;
                }
                field("Shipping Agent Code Filter"; Rec."Shipping Agent Code Filter")
                {
                    ApplicationArea = Warehouse;
                    Enabled = ShippingAgentCodeFilterEnable;
                }
                field("Shipping Agent Service Filter"; Rec."Shipping Agent Service Filter")
                {
                    ApplicationArea = Warehouse;
                    Enabled = ShippingAgentServiceFilterEnable;
                }
                field("Do Not Fill Qty. to Handle"; Rec."Do Not Fill Qty. to Handle")
                {
                    ApplicationArea = Warehouse;
                }
                group("Source Document:")
                {
                    Caption = 'Source Document:';
                    field("Sales Orders"; Rec."Sales Orders")
                    {
                        ApplicationArea = Warehouse;
                        Enabled = SalesOrdersEnable;

                        trigger OnValidate()
                        begin
                            EnableControls();
                        end;
                    }
                    field("Purchase Return Orders"; Rec."Purchase Return Orders")
                    {
                        ApplicationArea = Warehouse;
                        Enabled = PurchaseReturnOrdersEnable;
                    }
                    field("Outbound Transfers"; Rec."Outbound Transfers")
                    {
                        ApplicationArea = Warehouse;
                        Enabled = OutboundTransfersEnable;

                        trigger OnValidate()
                        begin
                            EnableControls();
                        end;
                    }
                }
                group("Shipping Advice Filter:")
                {
                    Caption = 'Shipping Advice Filter:';
                    field(Partial; Rec.Partial)
                    {
                        ApplicationArea = Warehouse;
                    }
                    field(Complete; Rec.Complete)
                    {
                        ApplicationArea = Warehouse;
                    }
                }
            }
            group(Sales)
            {
                Caption = 'Sales';
                field("Sell-to Customer No. Filter"; Rec."Sell-to Customer No. Filter")
                {
                    ApplicationArea = Warehouse;
                }
            }
            group(Purchase)
            {
                Caption = 'Purchase';
                field("Buy-from Vendor No. Filter"; Rec."Buy-from Vendor No. Filter")
                {
                    ApplicationArea = Warehouse;
                }
            }
            group(Transfer)
            {
                Caption = 'Transfer';
                field("In-Transit Code Filter"; Rec."In-Transit Code Filter")
                {
                    ApplicationArea = Location;
                }
                field("Transfer-from Code Filter"; Rec."Transfer-from Code Filter")
                {
                    ApplicationArea = Location;
                }
                field("Transfer-to Code Filter"; Rec."Transfer-to Code Filter")
                {
                    ApplicationArea = Location;
                }
            }
            group(Service)
            {
                Caption = 'Service';
                field("Customer No. Filter"; Rec."Customer No. Filter")
                {
                    ApplicationArea = Warehouse;
                }
            }
        }
    }

    actions
    {
        area(processing)
        {
            action(Run)
            {
                ApplicationArea = Warehouse;
                Caption = '&Run';
                Image = Start;
                ToolTip = 'Get the specified source documents.';

                trigger OnAction()
                var
                    GetSourceBatch: Report "Get Source Documents";
                begin
                    Rec."Planned Delivery Date" := CopyStr(Rec.GetFilter("Planned Delivery Date Filter"), 1, MaxStrLen(Rec."Planned Delivery Date"));
                    Rec."Planned Shipment Date" := CopyStr(Rec.GetFilter("Planned Shipment Date Filter"), 1, MaxStrLen(Rec."Planned Shipment Date"));
                    Rec."Sales Shipment Date" := CopyStr(Rec.GetFilter("Sales Shipment Date Filter"), 1, MaxStrLen(Rec."Sales Shipment Date"));
                    Rec."Planned Receipt Date" := CopyStr(Rec.GetFilter("Planned Receipt Date Filter"), 1, MaxStrLen(Rec."Planned Receipt Date"));
                    Rec."Expected Receipt Date" := CopyStr(Rec.GetFilter("Expected Receipt Date Filter"), 1, MaxStrLen(Rec."Expected Receipt Date"));
                    Rec."Shipment Date" := CopyStr(Rec.GetFilter("Shipment Date Filter"), 1, MaxStrLen(Rec."Shipment Date"));
                    Rec."Receipt Date" := CopyStr(Rec.GetFilter("Receipt Date Filter"), 1, MaxStrLen(Rec."Receipt Date"));

                    case RequestType of
                        RequestType::Receive:
                            begin
                                GetSourceBatch.SetOneCreatedReceiptHeader(WhseReceiptHeader);
                                Rec.SetFilters(GetSourceBatch, WhseReceiptHeader."Location Code");
                            end;
                        RequestType::Ship:
                            begin
                                GetSourceBatch.SetOneCreatedShptHeader(WhseShptHeader);
                                Rec.SetFilters(GetSourceBatch, WhseShptHeader."Location Code");
                            end;
                    end;

                    GetSourceBatch.UseRequestPage(Rec."Show Filter Request");
                    OnActionRunOnBeforeGetSourceBatchRunModal(Rec, GetSourceBatch);
                    GetSourceBatch.RunModal();
                    OnActionRunOnAfterGetSourceBatchRunModal(Rec, GetSourceBatch);
                    if GetSourceBatch.NotCancelled() then
                        CurrPage.Close();
                end;
            }
        }
        area(Promoted)
        {
            group(Category_Process)
            {
                Caption = 'Process';

                actionref(Run_Promoted; Run)
                {
                }
            }
        }
    }

    trigger OnInit()
    begin
    end;

    trigger OnOpenPage()
    begin
        InitializeControls();

        DataCaption := CurrPage.Caption();
        Rec.FilterGroup := 2;
        if Rec.GetFilter(Type) <> '' then
            DataCaption := DataCaption + ' - ' + Rec.GetFilter(Type);
        Rec.FilterGroup := 0;
        CurrPage.Caption(DataCaption);

        EnableControls();
    end;

    protected var
        WhseShptHeader: Record "Warehouse Shipment Header";
        WhseReceiptHeader: Record "Warehouse Receipt Header";
        DataCaption: Text;
        RequestType: Option Receive,Ship;
        SalesOrdersEnable: Boolean;
        PurchaseReturnOrdersEnable: Boolean;
        OutboundTransfersEnable: Boolean;
        PurchaseOrdersEnable: Boolean;
        SalesReturnOrdersEnable: Boolean;
        InboundTransfersEnable: Boolean;
        ShippingAgentCodeFilterEnable: Boolean;
        ShippingAgentServiceFilterEnable: Boolean;

    procedure SetOneCreatedShptHeader(WhseShptHeader2: Record "Warehouse Shipment Header")
    begin
        RequestType := RequestType::Ship;
        WhseShptHeader := WhseShptHeader2;
    end;

    procedure SetOneCreatedReceiptHeader(WhseReceiptHeader2: Record "Warehouse Receipt Header")
    begin
        RequestType := RequestType::Receive;
        WhseReceiptHeader := WhseReceiptHeader2;
    end;

    protected procedure EnableControls()
    begin
        OnBeforeEnableControls();
        case Rec.Type of
            Rec.Type::Inbound:
                begin
                    SalesOrdersEnable := false;
                    PurchaseReturnOrdersEnable := false;
                    OutboundTransfersEnable := false;
                end;
            Rec.Type::Outbound:
                begin
                    PurchaseOrdersEnable := false;
                    SalesReturnOrdersEnable := false;
                    InboundTransfersEnable := false;
                end;
        end;
        if Rec."Sales Orders" or Rec."Inbound Transfers" or Rec."Outbound Transfers" then begin
            ShippingAgentCodeFilterEnable := true;
            ShippingAgentServiceFilterEnable := true;
        end else begin
            ShippingAgentCodeFilterEnable := false;
            ShippingAgentServiceFilterEnable := false;
        end;
    end;

    protected procedure InitializeControls()
    begin
        ShippingAgentServiceFilterEnable := true;
        ShippingAgentCodeFilterEnable := true;
        InboundTransfersEnable := true;
        SalesReturnOrdersEnable := true;
        PurchaseOrdersEnable := true;
        OutboundTransfersEnable := true;
        PurchaseReturnOrdersEnable := true;
        SalesOrdersEnable := true;

        OnAfterInitializeControls();
    end;

    [IntegrationEvent(true, false)]
    local procedure OnAfterInitializeControls()
    begin
    end;

    [IntegrationEvent(true, false)]
    local procedure OnActionRunOnBeforeGetSourceBatchRunModal(var WhseSourceFilter: Record "Warehouse Source Filter"; var GetSourceBatch: Report "Get Source Documents")
    begin
    end;

    [IntegrationEvent(true, false)]
    local procedure OnBeforeEnableControls()
    begin
    end;

    [IntegrationEvent(true, false)]
    local procedure OnActionRunOnAfterGetSourceBatchRunModal(var WhseSourceFilter: Record "Warehouse Source Filter"; var GetSourceBatch: Report "Get Source Documents")
    begin
    end;
}