Codeunit 7328 Whse. Navigate Mgt.

App
Base Application
Namespace
Microsoft.Foundation.Navigate
Versions
26-28

Events, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Warehouse/Foundation/Navigate/WhseNavigateMgt.Codeunit.al165 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.Foundation.Navigate;

using Microsoft.Warehouse.History;
using Microsoft.Warehouse.Ledger;

codeunit 7328 "Whse. Navigate Mgt."
{
    var
        [SecurityFiltering(SecurityFilter::Filtered)]
        PostedWhseRcptLine: Record "Posted Whse. Receipt Line";
        [SecurityFiltering(SecurityFilter::Filtered)]
        PostedWhseShptLine: Record "Posted Whse. Shipment Line";
        [SecurityFiltering(SecurityFilter::Filtered)]
        WarehouseEntry: Record "Warehouse Entry";

    [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterFindLedgerEntries', '', false, false)]
    local procedure OnAfterFindLedgerEntries(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
    begin
        FindWarehouseEntries(DocumentEntry, DocNoFilter, PostingDateFilter);
    end;

    local procedure FindWarehouseEntries(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
    begin
        if (DocNoFilter = '') and (PostingDateFilter = '') then
            exit;
        if WarehouseEntry.ReadPermission() then begin
            SetWarehouseEntryFilters(DocNoFilter, PostingDateFilter);
            DocumentEntry.InsertIntoDocEntry(Database::"Warehouse Entry", WarehouseEntry.TableCaption(), WarehouseEntry.Count());
        end;
    end;

    [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnAfterFindPostedDocuments', '', false, false)]
    local procedure OnAfterFindPostedDocuments(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
    begin
        FindPostedWhseShptLine(DocumentEntry, DocNoFilter, PostingDateFilter);
        FindPostedWhseRcptLine(DocumentEntry, DocNoFilter, PostingDateFilter);
    end;

    local procedure FindPostedWhseShptLine(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
    begin
        if (DocNoFilter = '') and (PostingDateFilter = '') then
            exit;
        if PostedWhseShptLine.ReadPermission() then begin
            SetPostedWhseShptLineFilters(DocNoFilter, PostingDateFilter);
            DocumentEntry.InsertIntoDocEntry(Database::"Posted Whse. Shipment Line", PostedWhseShptLine.TableCaption(), PostedWhseShptLine.Count);
        end;
    end;

    local procedure FindPostedWhseRcptLine(var DocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text)
    begin
        if (DocNoFilter = '') and (PostingDateFilter = '') then
            exit;
        if PostedWhseRcptLine.ReadPermission() then begin
            SetPostedWhseRcptLineFilters(DocNoFilter, PostingDateFilter);
            DocumentEntry.InsertIntoDocEntry(Database::"Posted Whse. Receipt Line", PostedWhseRcptLine.TableCaption(), PostedWhseRcptLine.Count);
        end;
    end;

    [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnBeforeShowRecords', '', false, false)]
    local procedure OnBeforeShowRecords(var TempDocumentEntry: Record "Document Entry"; DocNoFilter: Text; PostingDateFilter: Text; var IsHandled: Boolean; ContactNo: Code[250])
    begin
        case TempDocumentEntry."Table ID" of
            Database::"Posted Whse. Shipment Line":
                begin
                    SetPostedWhseShptLineFilters(DocNoFilter, PostingDateFilter);
                    PAGE.Run(0, PostedWhseShptLine);
                end;
            Database::"Posted Whse. Receipt Line":
                begin
                    SetPostedWhseRcptLineFilters(DocNoFilter, PostingDateFilter);
                    PAGE.Run(0, PostedWhseRcptLine);
                end;
            Database::"Warehouse Entry":
                begin
                    SetWarehouseEntryFilters(DocNoFilter, PostingDateFilter);
                    PAGE.Run(0, WarehouseEntry);
                end;
        end;
    end;

    local procedure SetPostedWhseRcptLineFilters(DocNoFilter: Text; PostingDateFilter: Text)
    begin
        PostedWhseRcptLine.Reset();
        PostedWhseRcptLine.SetCurrentKey("Posted Source No.", "Posting Date");
        PostedWhseRcptLine.SetFilter("Posted Source No.", DocNoFilter);
        PostedWhseRcptLine.SetFilter("Posting Date", PostingDateFilter);
    end;

    local procedure SetPostedWhseShptLineFilters(DocNoFilter: Text; PostingDateFilter: Text)
    begin
        PostedWhseShptLine.Reset();
        PostedWhseShptLine.SetCurrentKey("Posted Source No.", "Posting Date");
        PostedWhseShptLine.SetFilter("Posted Source No.", DocNoFilter);
        PostedWhseShptLine.SetFilter("Posting Date", PostingDateFilter);
    end;

    local procedure SetWarehouseEntryFilters(DocNoFilter: Text; PostingDateFilter: Text)
    begin
        WarehouseEntry.Reset();
        WarehouseEntry.SetCurrentKey("Reference No.", "Registering Date");
        WarehouseEntry.SetFilter("Reference No.", DocNoFilter);
        WarehouseEntry.SetFilter("Registering Date", PostingDateFilter);
    end;

    [EventSubscriber(ObjectType::Page, Page::Navigate, 'OnFindRecordsOnAfterSetSource', '', false, false)]
    local procedure OnFindRecordsOnAfterSetSource(
        var DocumentEntry: Record "Document Entry"; var PostingDate: Date;
        var DocType2: Text[100]; var DocNo: Code[20];
        var SourceType2: Integer; var SourceNo: Code[20];
        var DocNoFilter: Text; var PostingDateFilter: Text;
        var IsHandled: Boolean)
    var
        SkipFindPostedShptLine: Boolean;
        SkipFindPostedRcptLine: Boolean;
    begin
        OnBeforeOnFindRecordsOnAfterSetSource(DocumentEntry, PostingDate, DocType2, DocNo, SourceType2, SourceNo, DocNoFilter, PostingDateFilter, IsHandled, SkipFindPostedShptLine, SkipFindPostedRcptLine);

        if not SkipFindPostedRcptLine then
            if NoOfRecords(DocumentEntry, Database::"Posted Whse. Receipt Line") = 1 then begin
                SetPostedWhseRcptLineFilters(DocNoFilter, PostingDateFilter);
                PostedWhseRcptLine.FindFirst();
                PostingDate := PostedWhseRcptLine."Posting Date";
                DocType2 := Format(DocumentEntry."Table Name");
                DocNo := PostedWhseRcptLine."Posted Source No.";
                SourceType2 := 2;
                SourceNo := '';
                IsHandled := true;
            end;

        if not SkipFindPostedShptLine then
            if NoOfRecords(DocumentEntry, Database::"Posted Whse. Shipment Line") = 1 then begin
                SetPostedWhseShptLineFilters(DocNoFilter, PostingDateFilter);
                PostedWhseShptLine.FindFirst();
                PostingDate := PostedWhseShptLine."Posting Date";
                DocType2 := Format(DocumentEntry."Table Name");
                DocNo := PostedWhseShptLine."Posted Source No.";
                SourceType2 := 1;
                SourceNo := PostedWhseShptLine."Destination No.";
                IsHandled := true;
            end;
    end;

    local procedure NoOfRecords(var DocumentEntry: Record "Document Entry"; TableID: Integer): Integer
    var
        DocEntryNoOfRecords: Integer;
    begin
        DocumentEntry.SetRange(DocumentEntry."Table ID", TableID);
        if not DocumentEntry.FindFirst() then
            DocumentEntry.Init();
        DocumentEntry.SetRange(DocumentEntry."Table ID");
        DocEntryNoOfRecords := DocumentEntry."No. of Records";
        if not DocumentEntry.FindLast() then
            DocumentEntry.Init();
        exit(DocEntryNoOfRecords);
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeOnFindRecordsOnAfterSetSource(var DocumentEntry: Record "Document Entry"; var PostingDate: Date; var DocType2: Text[100]; var DocNo: Code[20]; var SourceType2: Integer; var SourceNo: Code[20]; var DocNoFilter: Text; var PostingDateFilter: Text; var IsHandled: Boolean; var SkipFindPostedShptLine: Boolean; var SkipFindPostedRcptLine: Boolean)
    begin
    end;
}