Interface Documents - Retention Period

App
Base Application
Namespace
Microsoft.Finance.GeneralLedger.Setup
Versions
24-28

Procedures, 4

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Finance/GeneralLedger/Setup/DocumentsRetentionPeriod.Interface.al46 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.Finance.GeneralLedger.Setup;

/// <summary>
/// Interface defining methods for managing document retention periods and deletion policies based on legal requirements.
/// Provides framework for implementing country-specific document retention compliance rules.
/// </summary>
/// <remarks>
/// Implemented by retention period enums to enforce legal document retention requirements.
/// Used in posted document deletion processes to ensure compliance with local regulations.
/// Extensible framework supporting different retention policies for various jurisdictions.
/// </remarks>
interface "Documents - Retention Period"
{
    ///
    /// The following methods are to verify whether posted document can be deleted from country law perspective.
    ///

    /// <summary>
    /// Returns the date - Documents with a Posting Date after this date cannot be deleted.
    /// </summary>
    /// <returns>Law enforced date after which is not possible to delete posted documents.</returns>
    procedure GetDeletionBlockedAfterDate(): Date

    /// <summary>
    /// Returns the date - Documents with a Posting Date before this date cannot be deleted.
    /// </summary>
    /// <returns>Law enforced date which prevents deletion of documents posted prior to that date.</returns>
    procedure GetDeletionBlockedBeforeDate(): Date

    /// <summary>
    /// Returns whether document deletion is allowed by law condiering the Posting Date.
    /// </summary>
    /// <param name="PostingDate">Posting Date of the document</param>
    /// <returns>True if Posting Date is out of date range defined by law.</returns>
    procedure IsDocumentDeletionAllowedByLaw(PostingDate: Date): Boolean

    /// <summary>
    /// Use it to run check on posted documents and block deletion if needed.
    /// </summary>
    /// <param name="PostingDate">Posting Date of the document</param>
    procedure CheckDocumentDeletionAllowedByLaw(PostingDate: Date)
}