Codeunit 130 Consolidation Currency, source in 29

Source29

src/Layers/W1/BaseApp/Finance/Consolidation/ConsolidationCurrency.Codeunit.al72 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.Consolidation;

using Microsoft.Finance.GeneralLedger.Setup;

/// <summary>
/// Manages currency configuration and exchange rate setup for consolidation processing.
/// Provides business unit currency configuration and exchange rate management functionality.
/// </summary>
codeunit 130 "Consolidation Currency"
{
    /// <summary>
    /// Launches a configuration modal for the currency exchange rates used in the next consolidation for a BusinessUnit.
    /// Changes in this modal will be changed in the provided BusinessUnit, but no changes will be saved to the database.
    /// </summary>
    /// <param name="BusinessUnit">Business Unit to configure</param>
    procedure ConfigureBusinessUnitCurrencies(var BusinessUnit: Record "Business Unit")
    var
        SetupBusinessUnitCurrency: Page "Setup Business Unit Currency";
    begin
        ConfigureBusinessUnitCurrencies(SetupBusinessUnitCurrency, BusinessUnit);
    end;

    /// <summary>
    /// Launches a configuration modal for the currency exchange rates used in the ConsolidationProcess specified for a BusinessUnit.
    /// Changes in this modal will be changed in the provided BusinessUnit, but no changes will be saved to the database.
    /// </summary>
    /// <param name="BusinessUnit"></param>
    /// <param name="ConsolidationProcess"></param>
    procedure ConfigureBusinessUnitCurrencies(var BusinessUnit: Record "Business Unit"; ConsolidationProcess: Record "Consolidation Process")
    var
        SetupBusinessUnitCurrency: Page "Setup Business Unit Currency";
    begin
        SetupBusinessUnitCurrency.SetConsolidationProcess(ConsolidationProcess);
        ConfigureBusinessUnitCurrencies(SetupBusinessUnitCurrency, BusinessUnit);
    end;

    internal procedure GetConsolidationCompanyCurrencyCode(ConsolidationProcess: Record "Consolidation Process"): Code[10]
    begin
        if ConsolidationProcess."Parent Currency Code" <> '' then
            exit(ConsolidationProcess."Parent Currency Code");
        exit(GetCurrentCompanyCurrencyCode());
    end;

    internal procedure GetCurrentCompanyCurrencyCode(): Code[10]
    var
        GeneralLedgerSetup: Record "General Ledger Setup";
    begin
        GeneralLedgerSetup.Get();
        exit(GeneralLedgerSetup."LCY Code");
    end;

    local procedure ConfigureBusinessUnitCurrencies(var SetupBusinessUnitCurrency: Page "Setup Business Unit Currency"; var BusinessUnit: Record "Business Unit")
    begin
        SetupBusinessUnitCurrency.SetBusinessUnit(BusinessUnit);
        SetupBusinessUnitCurrency.LookupMode(true);
        if SetupBusinessUnitCurrency.RunModal() <> Action::LookupOK then
            exit;
        BusinessUnit."Income Currency Factor" := SetupBusinessUnitCurrency.GetIncomeCurrencyFactor();
        BusinessUnit.TestField("Income Currency Factor");
        BusinessUnit."Balance Currency Factor" := SetupBusinessUnitCurrency.GetBalanceCurrencyFactor();
        BusinessUnit.TestField("Balance Currency Factor");
        BusinessUnit."Last Balance Currency Factor" := SetupBusinessUnitCurrency.GetLastBalanceCurrencyFactor();
        BusinessUnit.TestField("Last Balance Currency Factor");
        BusinessUnit."Currency Exchange Rate Table" := SetupBusinessUnitCurrency.GetCurrencyExchangeRateTable();
    end;

}