Codeunit 1607 GLN Calculator

App
Base Application
Namespace
Microsoft.Utilities
Versions
17-28

Procedures, 2Events, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Utilities/GLNCalculator.Codeunit.al56 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;

codeunit 1607 "GLN Calculator"
{

    trigger OnRun()
    begin
    end;

    var
#pragma warning disable AA0470
        GLNLengthErr: Label 'The GLN length should be %1 and not %2.';
        GLNCheckDigitErr: Label 'The GLN %1 is not valid.';
#pragma warning restore AA0470

    procedure AssertValidCheckDigit13(GLNValue: Code[20])
    begin
        if not IsValidCheckDigit(GLNValue, 13) then
            Error(GLNCheckDigitErr, GLNValue);
    end;

    procedure IsValidCheckDigit13(GLNValue: Code[20]): Boolean
    begin

        exit(IsValidCheckDigit(GLNValue, 13));
    end;

    local procedure IsValidCheckDigit(GLNValue: Code[20]; ExpectedSize: Integer) IsValid: Boolean
    var
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeIsValidCheckDigit(GLNValue, ExpectedSize, IsValid, Ishandled);
        if IsHandled then
            exit(IsValid);

        if GLNValue = '' then
            exit(false);

        if StrLen(GLNValue) <> ExpectedSize then
            Error(GLNLengthErr, ExpectedSize, StrLen(GLNValue));

        exit(Format(StrCheckSum(CopyStr(GLNValue, 1, ExpectedSize - 1), '131313131313')) = Format(GLNValue[ExpectedSize]));
    end;

    [IntegrationEvent(false, false)]
    procedure OnBeforeIsValidCheckDigit(GLNValue: Code[20]; ExpectedSize: Integer; var IsValid: Boolean; var IsHandled: Boolean)
    begin
    end;
}