diff --git a/Apps/AT/ContosoCoffeeDemoDatasetAT/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateAT.Codeunit.al b/Apps/AT/ContosoCoffeeDemoDatasetAT/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateAT.Codeunit.al index 7790b87081..a595ea2741 100644 --- a/Apps/AT/ContosoCoffeeDemoDatasetAT/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateAT.Codeunit.al +++ b/Apps/AT/ContosoCoffeeDemoDatasetAT/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateAT.Codeunit.al @@ -189,4 +189,14 @@ codeunit 11154 "Create Currency Ex. Rate AT" CurrencyExchangeRate.Validate("Relational Exch. Rate Amount", RelationalExchRateAmount); CurrencyExchangeRate.Validate("Relational Adjmt Exch Rate Amt", RelationalAdjmtExchRateAmt); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsAT(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateATGLAccount: Codeunit "Create AT GL Account"; + begin + FXGainsAccount := CreateATGLAccount.FCYRealizedExchangeGains(); + FXLossesAccount := CreateATGLAccount.FCYRealizedExchangeLosses(); + IsHandled := true; + end; } diff --git a/Apps/BE/ContosoCoffeeDemoDatasetBE/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateBE.Codeunit.al b/Apps/BE/ContosoCoffeeDemoDatasetBE/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateBE.Codeunit.al index 38572b64f3..2034ef83c0 100644 --- a/Apps/BE/ContosoCoffeeDemoDatasetBE/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateBE.Codeunit.al +++ b/Apps/BE/ContosoCoffeeDemoDatasetBE/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateBE.Codeunit.al @@ -199,4 +199,14 @@ codeunit 11367 "Create Currency Ex. Rate BE" CurrencyExchangeRate.Validate("Relational Exch. Rate Amount", RelationalExchRateAmount); CurrencyExchangeRate.Validate("Relational Adjmt Exch Rate Amt", RelationalAdjmtExchRateAmt); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsBE(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateBEGLAccount: Codeunit "Create GL Account BE"; + begin + FXGainsAccount := CreateBEGLAccount.RealizedExchRateDiffIncome(); + FXLossesAccount := CreateBEGLAccount.RealizedExchRateDiffExpense(); + IsHandled := true; + end; } diff --git a/Apps/CH/ContosoCoffeeDemoDatasetCH/app/DemoData/Finance/2.Master Data/CreateCHCurrencyExRate.Codeunit.al b/Apps/CH/ContosoCoffeeDemoDatasetCH/app/DemoData/Finance/2.Master Data/CreateCHCurrencyExRate.Codeunit.al index df2253f499..aef2bd458e 100644 --- a/Apps/CH/ContosoCoffeeDemoDatasetCH/app/DemoData/Finance/2.Master Data/CreateCHCurrencyExRate.Codeunit.al +++ b/Apps/CH/ContosoCoffeeDemoDatasetCH/app/DemoData/Finance/2.Master Data/CreateCHCurrencyExRate.Codeunit.al @@ -203,4 +203,14 @@ codeunit 11630 "Create CH Currency Ex. Rate" CurrencyExchangeRate.Validate("Relational Exch. Rate Amount", RelationalExchRateAmount); CurrencyExchangeRate.Validate("Relational Adjmt Exch Rate Amt", RelationalAdjmtExchRateAmt); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsCH(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateCHGLAccounts: Codeunit "Create CH GL Accounts"; + begin + FXGainsAccount := CreateCHGLAccounts.UnrealizedExchRateAdjmts(); + FXLossesAccount := CreateCHGLAccounts.UnrealizedExchRateAdjmts(); + IsHandled := true; + end; } diff --git a/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateCZ.Codeunit.al b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateCZ.Codeunit.al index cced4322a3..1955b8c2a1 100644 --- a/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateCZ.Codeunit.al +++ b/Apps/CZ/ContosoCoffeeDemoDatasetCZ/app/DemoData/Finance/2. Master Data/CreateCurrencyExRateCZ.Codeunit.al @@ -60,4 +60,14 @@ codeunit 31337 "Create Currency Ex. Rate CZ" begin exit(0.026618); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsCZ(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateGLAccountCZ: Codeunit "Create G/L Account CZ"; + begin + FXGainsAccount := CreateGLAccountCZ.ExchangeGainsRealized(); + FXLossesAccount := CreateGLAccountCZ.ExchangeLossesRealized(); + IsHandled := true; + end; } \ No newline at end of file diff --git a/Apps/DE/ContosoCoffeeDemoDatasetDE/app/DemoData/Finance/2. Master data/CreateDECurrencyExRate.Codeunit.al b/Apps/DE/ContosoCoffeeDemoDatasetDE/app/DemoData/Finance/2. Master data/CreateDECurrencyExRate.Codeunit.al index 2949a35cb3..969cccaff8 100644 --- a/Apps/DE/ContosoCoffeeDemoDatasetDE/app/DemoData/Finance/2. Master data/CreateDECurrencyExRate.Codeunit.al +++ b/Apps/DE/ContosoCoffeeDemoDatasetDE/app/DemoData/Finance/2. Master data/CreateDECurrencyExRate.Codeunit.al @@ -195,4 +195,14 @@ codeunit 11376 "Create DE Currency Ex. Rate" CurrencyExchangeRate.Validate("Relational Exch. Rate Amount", RelationalExchRateAmount); CurrencyExchangeRate.Validate("Relational Adjmt Exch Rate Amt", RelationalAdjmtExchRateAmt); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsDe(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateDEGLAcc: Codeunit "Create DE GL Acc."; + begin + FXGainsAccount := CreateDEGLAcc.CurrencyGains(); + FXLossesAccount := CreateDEGLAcc.CurrencyLosses(); + IsHandled := true; + end; } diff --git a/Apps/ES/ContosoCoffeeDemoDatasetES/app/DemoData/Finance/2.Master Data/CreateESCurrencyExch.Codeunit.al b/Apps/ES/ContosoCoffeeDemoDatasetES/app/DemoData/Finance/2.Master Data/CreateESCurrencyExch.Codeunit.al index c9a5e423cf..8acebb9f31 100644 --- a/Apps/ES/ContosoCoffeeDemoDatasetES/app/DemoData/Finance/2.Master Data/CreateESCurrencyExch.Codeunit.al +++ b/Apps/ES/ContosoCoffeeDemoDatasetES/app/DemoData/Finance/2.Master Data/CreateESCurrencyExch.Codeunit.al @@ -189,4 +189,14 @@ codeunit 10834 "Create ES Currency Exch" CurrencyExchangeRate.Validate("Relational Exch. Rate Amount", RelationalExchRateAmount); CurrencyExchangeRate.Validate("Relational Adjmt Exch Rate Amt", RelationalAdjmtExchRateAmt); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsES(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateESGLAccount: Codeunit "Create ES GL Accounts"; + begin + FXGainsAccount := CreateESGLAccount.ExchangeGainPosting(); + FXLossesAccount := CreateESGLAccount.RealizedLossesOnExchange(); + IsHandled := true; + end; } diff --git a/Apps/FI/ContosoCoffeeDemoDatasetFI/app/DemoData/Finance/2.Master Data/CreateCurrencyExRateFI.Codeunit.al b/Apps/FI/ContosoCoffeeDemoDatasetFI/app/DemoData/Finance/2.Master Data/CreateCurrencyExRateFI.Codeunit.al index e63c30199a..54e6e0bc44 100644 --- a/Apps/FI/ContosoCoffeeDemoDatasetFI/app/DemoData/Finance/2.Master Data/CreateCurrencyExRateFI.Codeunit.al +++ b/Apps/FI/ContosoCoffeeDemoDatasetFI/app/DemoData/Finance/2.Master Data/CreateCurrencyExRateFI.Codeunit.al @@ -200,4 +200,14 @@ codeunit 13433 "Create Currency Ex. Rate FI" CurrencyExchangeRate.Validate("Relational Exch. Rate Amount", RelationalExchRateAmount); CurrencyExchangeRate.Validate("Relational Adjmt Exch Rate Amt", RelationalAdjmtExchRateAmt); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsFI(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateFIGLAccount: Codeunit "Create FI GL Accounts"; + begin + FXGainsAccount := CreateFIGLAccount.Otherfinancialincome2(); + FXLossesAccount := CreateFIGLAccount.Financialexpenses9(); + IsHandled := true; + end; } diff --git a/Apps/GB/ContosoCoffeeDemoDatasetGB/app/DemoData/Finance/2.Master Data/CreateGBCurrency.Codeunit.al b/Apps/GB/ContosoCoffeeDemoDatasetGB/app/DemoData/Finance/2.Master Data/CreateGBCurrency.Codeunit.al index 2ba940674a..e320e1b3b8 100644 --- a/Apps/GB/ContosoCoffeeDemoDatasetGB/app/DemoData/Finance/2.Master Data/CreateGBCurrency.Codeunit.al +++ b/Apps/GB/ContosoCoffeeDemoDatasetGB/app/DemoData/Finance/2.Master Data/CreateGBCurrency.Codeunit.al @@ -78,4 +78,14 @@ codeunit 11500 "Create GB Currency" Currency.Validate("Realized Gains Acc.", RealizedGainsAcc); Currency.Validate("Realized Losses Acc.", RealizedLossesAcc); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsGB(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateGLAccount: Codeunit "Create G/L Account"; + begin + FXGainsAccount := CreateGLAccount.InterestIncome(); + FXLossesAccount := CreateGLAccount.InterestIncome(); + IsHandled := true; + end; } diff --git a/Apps/NL/ContosoCoffeeDemoDatasetNL/app/DemoData/Finance/2.Master Data/CreateCurrencyNL.Codeunit.al b/Apps/NL/ContosoCoffeeDemoDatasetNL/app/DemoData/Finance/2.Master Data/CreateCurrencyNL.Codeunit.al index cc9f9e7d32..cc47f73177 100644 --- a/Apps/NL/ContosoCoffeeDemoDatasetNL/app/DemoData/Finance/2.Master Data/CreateCurrencyNL.Codeunit.al +++ b/Apps/NL/ContosoCoffeeDemoDatasetNL/app/DemoData/Finance/2.Master Data/CreateCurrencyNL.Codeunit.al @@ -6,6 +6,7 @@ namespace Microsoft.DemoData.Finance; using Microsoft.Finance.Currency; +using Microsoft.DemoData.Localization; codeunit 11536 "Create Currency NL" { @@ -80,4 +81,14 @@ codeunit 11536 "Create Currency NL" Currency.Validate("Realized Gains Acc.", ''); Currency.Validate("Realized Losses Acc.", ''); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsNL(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateNLGLAccount: Codeunit "Create NL GL Accounts"; + begin + FXGainsAccount := CreateNLGLAccount.CurrencyGains(); + FXLossesAccount := CreateNLGLAccount.CurrencyLosses(); + IsHandled := true; + end; } diff --git a/Apps/US/ContosoCoffeeDemoDatasetUS/app/DemoData/Finance/1.Setup Data/CreateCurrencyUS.Codeunit.al b/Apps/US/ContosoCoffeeDemoDatasetUS/app/DemoData/Finance/1.Setup Data/CreateCurrencyUS.Codeunit.al index 19531c10ac..c9c7171d97 100644 --- a/Apps/US/ContosoCoffeeDemoDatasetUS/app/DemoData/Finance/1.Setup Data/CreateCurrencyUS.Codeunit.al +++ b/Apps/US/ContosoCoffeeDemoDatasetUS/app/DemoData/Finance/1.Setup Data/CreateCurrencyUS.Codeunit.al @@ -35,4 +35,14 @@ codeunit 11486 "Create Currency US" Currency.Validate("Realized Gains Acc.", RealizedGainsAcc); Currency.Validate("Realized Losses Acc.", RealizedLossesAcc); end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Create Add. Reporting Currency", OnBeforeGetResidualCurrencyAccounts, '', false, false)] + local procedure GetResidualCurrencyAccountsUS(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + var + CreateUSGLAccount: Codeunit "Create US GL Accounts"; + begin + FXGainsAccount := CreateUSGLAccount.CurrencyGains(); + FXLossesAccount := CreateUSGLAccount.CurrencyLosses(); + IsHandled := true; + end; } diff --git a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/2.Master data/CreateAddReportingCurrency.Codeunit.al b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/2.Master data/CreateAddReportingCurrency.Codeunit.al new file mode 100644 index 0000000000..1ffcf7b17e --- /dev/null +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/2.Master data/CreateAddReportingCurrency.Codeunit.al @@ -0,0 +1,71 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ + +namespace Microsoft.DemoData.Finance; + +using Microsoft.Finance.Currency; +using Microsoft.Finance.GeneralLedger.Setup; + +codeunit 5627 "Create Add. Reporting Currency" +{ + InherentEntitlements = X; + InherentPermissions = X; + Permissions = + tabledata "General Ledger Setup" = rm, + tabledata Currency = rm; + + trigger OnRun() + begin + ConfigureAdditionalReportingCurrency(); + UpdateCurrencyResidualAccounts(); + end; + + procedure ConfigureAdditionalReportingCurrency() + var + GeneralLedgerSetup: Record "General Ledger Setup"; + CreateCurrency: Codeunit "Create Currency"; + ACYCode: Code[10]; + begin + GeneralLedgerSetup.Get(); + ACYCode := GeneralLedgerSetup."LCY Code" = CreateCurrency.EUR() ? CreateCurrency.USD() : CreateCurrency.EUR(); + GeneralLedgerSetup."Additional Reporting Currency" := ACYCode; + GeneralLedgerSetup.Modify(true); + end; + + procedure UpdateCurrencyResidualAccounts() + var + Currency: Record "Currency"; + CreateCurrency: Codeunit "Create Currency"; + FXGainsAccount: Code[20]; + FXLossesAccount: Code[20]; + begin + GetResidualCurrencyAccounts(FXGainsAccount, FXLossesAccount); + Currency.SetFilter(Code, '%1|%2', CreateCurrency.EUR(), CreateCurrency.USD()); + if Currency.FindSet(true) then + repeat + Currency.Validate("Residual Gains Account", FXGainsAccount); + Currency.Validate("Residual Losses Account", FXLossesAccount); + Currency.Modify(true); + until Currency.Next() = 0; + end; + + local procedure GetResidualCurrencyAccounts(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]) + var + CreateGLAccount: Codeunit "Create G/L Account"; + IsHandled: Boolean; + begin + OnBeforeGetResidualCurrencyAccounts(FXGainsAccount, FXLossesAccount, IsHandled); + if IsHandled then + exit; + + FXGainsAccount := CreateGLAccount.RealizedFXGains(); + FXLossesAccount := CreateGLAccount.RealizedFXLosses(); + end; + + [IntegrationEvent(false, false)] + local procedure OnBeforeGetResidualCurrencyAccounts(var FXGainsAccount: Code[20]; var FXLossesAccount: Code[20]; var IsHandled: Boolean) + begin + end; +} \ No newline at end of file diff --git a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/FinanceModule.Codeunit.al b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/FinanceModule.Codeunit.al index 2e509adb08..79dc9792fe 100644 --- a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/FinanceModule.Codeunit.al +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/FinanceModule.Codeunit.al @@ -76,6 +76,7 @@ codeunit 5415 "Finance Module" implements "Contoso Demo Data Module" Codeunit.Run(Codeunit::"Create Currency Exchange Rate"); Codeunit.Run(Codeunit::"Create Resource"); Codeunit.Run(Codeunit::"Create Allocation Account"); + Codeunit.Run(Codeunit::"Create Add. Reporting Currency"); end; procedure CreateTransactionalData()