Table 5771 Warehouse Source Filter, source in 29

Source29

src/Layers/W1/BaseApp/Warehouse/Request/WarehouseSourceFilter.Table.al478 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.Foundation.Shipping;
using Microsoft.Foundation.UOM;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Tracking;
using Microsoft.Inventory.Transfer;
using Microsoft.Projects.Project.Job;
using Microsoft.Purchases.History;
using Microsoft.Purchases.Vendor;
using Microsoft.Sales.Customer;
using Microsoft.Sales.History;

table 5771 "Warehouse Source Filter"
{
    Caption = 'Warehouse Source Filter';
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Code"; Code[10])
        {
            Caption = 'Code';
            ToolTip = 'Specifies the code that identifies the filter record.';
            NotBlank = true;
        }
        field(2; Description; Text[100])
        {
            Caption = 'Description';
            ToolTip = 'Specifies the description of filter combinations in the Source Document Filter Card window to retrieve lines from source documents.';
        }
        field(3; "Item No. Filter"; Code[100])
        {
            Caption = 'Item No. Filter';
            ToolTip = 'Specifies the item number used to filter the source documents to get.';
            TableRelation = Item;
            ValidateTableRelation = false;
        }
        field(4; "Variant Code Filter"; Code[100])
        {
            Caption = 'Variant Code Filter';
            ToolTip = 'Specifies the item variant used to filter the source documents to get.';
            TableRelation = "Item Variant".Code;
            ValidateTableRelation = false;
        }
        field(5; "Unit of Measure Filter"; Code[100])
        {
            Caption = 'Unit of Measure Filter';
            ToolTip = 'Specifies the unit of measure used to filter the source documents to get.';
            TableRelation = "Unit of Measure";
            ValidateTableRelation = false;
        }
        field(6; "Sell-to Customer No. Filter"; Code[100])
        {
            Caption = 'Sell-to Customer No. Filter';
            ToolTip = 'Specifies the sell-to customer number used to filter the source documents to get.';
            TableRelation = Customer;
            ValidateTableRelation = false;
        }
        field(7; "Buy-from Vendor No. Filter"; Code[100])
        {
            Caption = 'Buy-from Vendor No. Filter';
            ToolTip = 'Specifies the buy-from vendor number used to filter the source documents to get.';
            TableRelation = Vendor;
            ValidateTableRelation = false;
        }
        field(8; "Customer No. Filter"; Code[100])
        {
            Caption = 'Customer No. Filter';
            ToolTip = 'Specifies which customers are included when you use the Filters to Get Source Docs. window to retrieve source document lines.';
            TableRelation = Customer;
            ValidateTableRelation = false;
        }
        field(10; "Planned Delivery Date Filter"; Date)
        {
            Caption = 'Planned Delivery Date Filter';
            FieldClass = FlowFilter;
        }
        field(11; "Shipment Method Code Filter"; Code[100])
        {
            Caption = 'Shipment Method Code Filter';
            ToolTip = 'Specifies the shipment method code used to filter the source documents to get.';
            TableRelation = "Shipment Method";
            ValidateTableRelation = false;
        }
        field(12; "Shipping Agent Code Filter"; Code[100])
        {
            Caption = 'Shipping Agent Code Filter';
            ToolTip = 'Specifies the shipping agent code used to filter the source documents.';
            TableRelation = "Shipping Agent";
            ValidateTableRelation = false;
        }
        field(13; "Shipping Advice Filter"; Code[100])
        {
            Caption = 'Shipping Advice Filter';
        }
        field(15; "Do Not Fill Qty. to Handle"; Boolean)
        {
            Caption = 'Do Not Fill Qty. to Handle';
            ToolTip = 'Specifies that inventory quantities are assigned when you get outbound source document lines for shipment.';
        }
        field(16; "Show Filter Request"; Boolean)
        {
            Caption = 'Show Filter Request';
            ToolTip = 'Specifies if the Filters to Get Source Docs. window appears when you choose Use Filters to Get Source Docs on a warehouse shipment or receipt.';
        }
        field(17; "Shipping Agent Service Filter"; Code[100])
        {
            Caption = 'Shipping Agent Service Filter';
            ToolTip = 'Specifies the shipping agent service used to filter the source documents.';
            TableRelation = "Shipping Agent Services".Code;
            ValidateTableRelation = false;
        }
        field(18; "In-Transit Code Filter"; Code[100])
        {
            Caption = 'In-Transit Code Filter';
            ToolTip = 'Specifies the in-transit code used to filter the source documents.';
            TableRelation = Location where("Use As In-Transit" = const(true));
            ValidateTableRelation = false;
        }
        field(19; "Transfer-from Code Filter"; Code[100])
        {
            Caption = 'Transfer-from Code Filter';
            ToolTip = 'Specifies the transfer-from code used to filter the source documents.';
            TableRelation = Location where("Use As In-Transit" = const(false));
            ValidateTableRelation = false;
        }
        field(20; "Transfer-to Code Filter"; Code[100])
        {
            Caption = 'Transfer-to Code Filter';
            ToolTip = 'Specifies the transfer-to code used to filter the source documents to get.';
            TableRelation = Location where("Use As In-Transit" = const(false));
            ValidateTableRelation = false;
        }
        field(21; "Planned Shipment Date Filter"; Date)
        {
            Caption = 'Planned Shipment Date Filter';
            FieldClass = FlowFilter;
        }
        field(22; "Planned Receipt Date Filter"; Date)
        {
            Caption = 'Planned Receipt Date Filter';
            FieldClass = FlowFilter;
        }
        field(23; "Expected Receipt Date Filter"; Date)
        {
            Caption = 'Expected Receipt Date Filter';
            FieldClass = FlowFilter;
        }
        field(24; "Shipment Date Filter"; Date)
        {
            Caption = 'Outbound Date Filter';
            FieldClass = FlowFilter;
        }
        field(25; "Receipt Date Filter"; Date)
        {
            Caption = 'Inbound Date Filter';
            FieldClass = FlowFilter;
        }
        field(28; "Sales Shipment Date Filter"; Date)
        {
            Caption = 'Sales Shipment Date Filter';
            FieldClass = FlowFilter;
        }
        field(45; "Job No."; Code[20])
        {
            Caption = 'Project No.';
            TableRelation = Job;
        }
        field(96; "Reserved From Stock"; Enum "Reservation From Stock")
        {
            Caption = 'Reserved from Stock';
            ValuesAllowed = " ", "Full and Partial", Full;
        }
        field(98; "Source No. Filter"; Code[100])
        {
            Caption = 'Source No. Filter';
            ToolTip = 'Specifies the number, or number range, that is used to filter the source documents to get.';
        }
        field(99; "Source Document"; Code[250])
        {
            Caption = 'Source Document';
        }
        field(100; Type; Option)
        {
            Caption = 'Type';
            OptionCaption = 'Inbound,Outbound';
            OptionMembers = Inbound,Outbound;

            trigger OnValidate()
            begin
                CheckType();
            end;
        }
        field(101; "Sales Orders"; Boolean)
        {
            AccessByPermission = TableData "Sales Shipment Header" = R;
            Caption = 'Sales Orders';
            ToolTip = 'Specifies that sales orders are retrieved when you choose Use Filters to Get Src. Docs in the Warehouse Shipment window.';
            InitValue = true;

            trigger OnValidate()
            begin
                if Type = Type::Outbound then
                    CheckOutboundSourceDocumentChosen();
            end;
        }
        field(102; "Sales Return Orders"; Boolean)
        {
            AccessByPermission = TableData "Return Receipt Header" = R;
            Caption = 'Sales Return Orders';
            ToolTip = 'Specifies that sales return orders are retrieved when you choose Use Filters to Get Src. Docs in the Warehouse Shipment window.';
            InitValue = true;

            trigger OnValidate()
            begin
                if Type = Type::Inbound then
                    CheckInboundSourceDocumentChosen();
            end;
        }
        field(103; "Purchase Orders"; Boolean)
        {
            AccessByPermission = TableData "Purch. Rcpt. Header" = R;
            Caption = 'Purchase Orders';
            ToolTip = 'Specifies that purchase orders are retrieved when you choose Use Filters to Get Src. Docs in the Warehouse Receipt window.';
            InitValue = true;

            trigger OnValidate()
            begin
                if Type = Type::Inbound then
                    CheckInboundSourceDocumentChosen();
            end;
        }
        field(104; "Purchase Return Orders"; Boolean)
        {
            AccessByPermission = TableData "Return Shipment Header" = R;
            Caption = 'Purchase Return Orders';
            ToolTip = 'Specifies that purchase return orders are retrieved when you choose Use Filters to Get Src. Docs in the Warehouse Shipment window.';
            InitValue = true;

            trigger OnValidate()
            begin
                if Type = Type::Outbound then
                    CheckOutboundSourceDocumentChosen();
            end;
        }
        field(105; "Inbound Transfers"; Boolean)
        {
            AccessByPermission = TableData "Transfer Header" = R;
            Caption = 'Inbound Transfers';
            ToolTip = 'Specifies that inbound transfer orders are retrieved when you choose Use Filters to Get Src. Docs in the Warehouse Receipt.';
            InitValue = true;

            trigger OnValidate()
            begin
                if Type = Type::Inbound then
                    CheckInboundSourceDocumentChosen();
            end;
        }
        field(106; "Outbound Transfers"; Boolean)
        {
            AccessByPermission = TableData "Transfer Header" = R;
            Caption = 'Outbound Transfers';
            ToolTip = 'Specifies that outbound transfer orders are retrieved when you choose Use Filters to Get Src. Docs in the Warehouse Shipment window.';
            InitValue = true;

            trigger OnValidate()
            begin
                if Type = Type::Outbound then
                    CheckOutboundSourceDocumentChosen();
            end;
        }
        field(108; Partial; Boolean)
        {
            Caption = 'Partial';
            ToolTip = 'Specifies the Shipping Advice field on sales orders must contain Partial when you choose Use Filters to Get Src. Docs.';
            InitValue = true;

            trigger OnValidate()
            begin
                if not Partial and not Complete then
                    Error(MustBeChosenErr, FieldCaption("Shipping Advice Filter"));
            end;
        }
        field(109; Complete; Boolean)
        {
            Caption = 'Complete';
            ToolTip = 'Specifies the Shipping Advice field on sales orders must contain Complete when you choose Use Filters to Get Src. Docs.';
            InitValue = true;

            trigger OnValidate()
            begin
                if not Partial and not Complete then
                    Error(MustBeChosenErr, FieldCaption("Shipping Advice Filter"));
            end;
        }
        field(1001; "Job Task No. Filter"; Code[100])
        {
            Caption = 'Project Task No. Filter';
            TableRelation = "Job Task"."Job Task No." where("Job No." = field("Job No."));
            ValidateTableRelation = false;
        }
        field(7300; "Planned Delivery Date"; Text[250])
        {
            Caption = 'Planned Delivery Date';
        }
        field(7301; "Planned Shipment Date"; Text[250])
        {
            Caption = 'Planned Shipment Date';
        }
        field(7302; "Planned Receipt Date"; Text[250])
        {
            Caption = 'Planned Receipt Date';
        }
        field(7303; "Expected Receipt Date"; Text[250])
        {
            Caption = 'Expected Receipt Date';
        }
        field(7304; "Shipment Date"; Text[250])
        {
            Caption = 'Shipment Date';
        }
        field(7305; "Receipt Date"; Text[250])
        {
            Caption = 'Receipt Date';
        }
        field(7306; "Sales Shipment Date"; Text[250])
        {
            Caption = 'Sales Shipment Date';
        }
    }

    keys
    {
        key(Key1; Type, "Code")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    protected var
        MustBeChosenErr: Label '%1 must be chosen.', Comment = '%1 - source type';

    procedure SetFilters(var GetSourceDocuments: Report "Get Source Documents"; LocationCode: Code[10])
    var
        WarehouseRequest: Record "Warehouse Request";
    begin
        "Source Document" := '';

        if "Sales Orders" then begin
            WarehouseRequest."Source Document" := WarehouseRequest."Source Document"::"Sales Order";
            AddFilter("Source Document", Format(WarehouseRequest."Source Document"));
        end;

        if "Sales Return Orders" then begin
            WarehouseRequest."Source Document" := WarehouseRequest."Source Document"::"Sales Return Order";
            AddFilter("Source Document", Format(WarehouseRequest."Source Document"));
        end;

        if "Outbound Transfers" then begin
            WarehouseRequest."Source Document" := WarehouseRequest."Source Document"::"Outbound Transfer";
            AddFilter("Source Document", Format(WarehouseRequest."Source Document"));
        end;

        if "Purchase Orders" then begin
            WarehouseRequest."Source Document" := WarehouseRequest."Source Document"::"Purchase Order";
            AddFilter("Source Document", Format(WarehouseRequest."Source Document"));
        end;

        if "Purchase Return Orders" then begin
            WarehouseRequest."Source Document" := WarehouseRequest."Source Document"::"Purchase Return Order";
            AddFilter("Source Document", Format(WarehouseRequest."Source Document"));
        end;

        if "Inbound Transfers" then begin
            WarehouseRequest."Source Document" := WarehouseRequest."Source Document"::"Inbound Transfer";
            AddFilter("Source Document", Format(WarehouseRequest."Source Document"));
        end;

        OnSetFiltersOnAfterSetSourceFilters(Rec, WarehouseRequest);

        if "Source Document" = '' then
            Error(MustBeChosenErr, FieldCaption("Source Document"));

        WarehouseRequest.SetFilter("Source Document", "Source Document");
        WarehouseRequest.SetFilter("Source No.", "Source No. Filter");
        WarehouseRequest.SetFilter("Shipment Method Code", "Shipment Method Code Filter");

        "Shipping Advice Filter" := '';

        if Partial then begin
            WarehouseRequest."Shipping Advice" := WarehouseRequest."Shipping Advice"::Partial;
            AddFilter("Shipping Advice Filter", Format(WarehouseRequest."Shipping Advice"));
        end;

        if Complete then begin
            WarehouseRequest."Shipping Advice" := WarehouseRequest."Shipping Advice"::Complete;
            AddFilter("Shipping Advice Filter", Format(WarehouseRequest."Shipping Advice"));
        end;

        WarehouseRequest.SetFilter("Shipping Advice", "Shipping Advice Filter");
        WarehouseRequest.SetRange("Location Code", LocationCode);

        OnSetFiltersOnSourceTables(Rec, GetSourceDocuments, WarehouseRequest);

        GetSourceDocuments.SetTableView(WarehouseRequest);
        GetSourceDocuments.SetDoNotFillQtytoHandle("Do Not Fill Qty. to Handle");
        GetSourceDocuments.SetReservedFromStock("Reserved From Stock");

        OnAfterSetFilters(GetSourceDocuments, Rec);
    end;

    local procedure AddFilter(var CodeField: Code[250]; NewFilter: Text[100])
    begin
        if CodeField = '' then
            CodeField := NewFilter
        else
            CodeField := CodeField + '|' + NewFilter;
    end;

    local procedure CheckInboundSourceDocumentChosen()
    begin
        if not ("Sales Return Orders" or "Purchase Orders" or "Inbound Transfers") then
            Error(MustBeChosenErr, FieldCaption("Source Document"));
    end;

    local procedure CheckOutboundSourceDocumentChosen()
    begin
        if not ("Sales Orders" or "Purchase Return Orders" or "Outbound Transfers") then
            Error(MustBeChosenErr, FieldCaption("Source Document"));
    end;

    local procedure CheckType()
    begin
        if Type = Type::Inbound then begin
            "Sales Orders" := false;
            "Purchase Return Orders" := false;
            "Outbound Transfers" := false;
        end else begin
            "Purchase Orders" := false;
            "Sales Return Orders" := false;
            "Inbound Transfers" := false;
        end;

        OnAfterCheckType(Rec);
    end;

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

    [IntegrationEvent(false, false)]
    local procedure OnSetFiltersOnSourceTables(var WarehouseSourceFilter: Record "Warehouse Source Filter"; var GetSourceDocuments: Report "Get Source Documents"; var WarehouseRequest: Record "Warehouse Request")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterCheckType(var WarehouseSourceFilter: Record "Warehouse Source Filter")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnSetFiltersOnAfterSetSourceFilters(var WarehouseSourceFilter: Record "Warehouse Source Filter"; var WarehouseRequest: Record "Warehouse Request")
    begin
    end;
}