Codeunit 6477 Serv. Document No. Visibility

App
Base Application
Namespace
Microsoft.Utilities
Versions
25-28

Procedures, 3Events, 2

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Service/Utilities/ServDocumentNoVisibility.Codeunit.al116 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.Utilities;

using Microsoft.Foundation.NoSeries;
using Microsoft.Service.Setup;

codeunit 6477 "Serv. Document No. Visibility"
{
    var
        DocumentNoVisibility: Codeunit DocumentNoVisibility;
        ServiceDocsNoVisible: Dictionary of [Integer, Boolean];
        IsServiceItemNoInitialized: Boolean;
        ServiceItemNoVisible: Boolean;

    procedure ClearState()
    begin
        IsServiceItemNoInitialized := false;
        ServiceItemNoVisible := false;

        Clear(ServiceDocsNoVisible);
    end;

    procedure ServiceDocumentNoIsVisible(DocType: Option Quote,"Order",Invoice,"Credit Memo",Contract; DocNo: Code[20]): Boolean
    var
        NoSeries: Record "No. Series";
        ServiceNoSeriesSetup: Page "Service No. Series Setup";
        DocNoSeries: Code[20];
        IsHandled: Boolean;
        Result: Boolean;
    begin
        IsHandled := false;
        OnBeforeServiceDocumentNoIsVisible(DocType, DocNo, Result, IsHandled);
        if IsHandled then
            exit(Result);

        if DocNo <> '' then
            exit(false);

        if ServiceDocsNoVisible.ContainsKey(DocType) then
            exit(ServiceDocsNoVisible.Get(DocType));

        DocNoSeries := DetermineServiceSeriesNo(DocType);
        if not NoSeries.Get(DocNoSeries) then begin
            ServiceNoSeriesSetup.SetFieldsVisibility(DocType);
            ServiceNoSeriesSetup.RunModal();
            DocNoSeries := DetermineServiceSeriesNo(DocType);
        end;

        Result := DocumentNoVisibility.ForceShowNoSeriesForDocNo(DocNoSeries);
        ServiceDocsNoVisible.Add(DocType, Result);

        exit(Result);
    end;

    procedure ServiceItemNoIsVisible(): Boolean
    var
        NoSeriesCode: Code[20];
        IsHandled: Boolean;
        IsVisible: Boolean;
    begin
        IsHandled := false;
        IsVisible := false;
        OnBeforeServiceItemNoIsVisible(IsVisible, IsHandled);
        if IsHandled then
            exit(IsVisible);

        if IsServiceItemNoInitialized then
            exit(ServiceItemNoVisible);
        IsServiceItemNoInitialized := true;

        NoSeriesCode := DetermineServiceItemSeriesNo();
        ServiceItemNoVisible := DocumentNoVisibility.ForceShowNoSeriesForDocNo(NoSeriesCode);
        exit(ServiceItemNoVisible);
    end;

    local procedure DetermineServiceSeriesNo(DocType: Option Quote,"Order",Invoice,"Credit Memo",Contract): Code[20]
    var
        ServiceMgtSetup: Record "Service Mgt. Setup";
    begin
        ServiceMgtSetup.Get();
        case DocType of
            DocType::Quote:
                exit(ServiceMgtSetup."Service Quote Nos.");
            DocType::Order:
                exit(ServiceMgtSetup."Service Order Nos.");
            DocType::Invoice:
                exit(ServiceMgtSetup."Service Invoice Nos.");
            DocType::"Credit Memo":
                exit(ServiceMgtSetup."Service Credit Memo Nos.");
            DocType::Contract:
                exit(ServiceMgtSetup."Service Contract Nos.");
        end;
    end;

    local procedure DetermineServiceItemSeriesNo(): Code[20]
    var
        ServiceMgtSetup: Record "Service Mgt. Setup";
    begin
        ServiceMgtSetup.SetLoadFields("Service Item Nos.");
        ServiceMgtSetup.Get();
        exit(ServiceMgtSetup."Service Item Nos.");
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeServiceDocumentNoIsVisible(DocType: Option; DocNo: Code[20]; var IsVisible: Boolean; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeServiceItemNoIsVisible(var IsVisible: Boolean; var IsHandled: Boolean)
    begin
    end;
}