From 02e425d02b4d2a76c2aa244dc1b33cbba0c727b4 Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Wed, 11 Jun 2025 14:30:03 +1000 Subject: [PATCH 1/6] Set Additional Reporting Currency --- .../Finance/1.Setup data/CreateGeneralLedgerSetup.Codeunit.al | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGeneralLedgerSetup.Codeunit.al b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGeneralLedgerSetup.Codeunit.al index 00513df617..99ce4cac68 100644 --- a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGeneralLedgerSetup.Codeunit.al +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGeneralLedgerSetup.Codeunit.al @@ -25,6 +25,8 @@ codeunit 5230 "Create General Ledger Setup" procedure InsertData(JobQueueCategoryCode: Code[10]; InvoiceRoundingPrecisionLCY: Decimal; LocalContAddrFormat: Integer; BankAccountNo: Code[20]; LCYCode: Code[10]; DataCheck: Boolean; AccReceivablesCategory: Integer) var GeneralLedgerSetup: Record "General Ledger Setup"; + CreateCurrency: Codeunit "Create Currency"; + ACYCode: Code[10]; begin if not GeneralLedgerSetup.Get() then GeneralLedgerSetup.Insert(); @@ -36,6 +38,8 @@ codeunit 5230 "Create General Ledger Setup" GeneralLedgerSetup.Validate("LCY Code", LCYCode); GeneralLedgerSetup.Validate("Enable Data Check", DataCheck); GeneralLedgerSetup.Validate("Acc. Receivables Category", AccReceivablesCategory); + ACYCode := LCYCode = CreateCurrency.EUR() ? CreateCurrency.USD() : CreateCurrency.EUR(); + GeneralLedgerSetup."Additional Reporting Currency" := ACYCode; GeneralLedgerSetup.Modify(true); end; } From 346f42487fa97037ead42fecf68548f898337cdc Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Wed, 11 Jun 2025 14:30:20 +1000 Subject: [PATCH 2/6] Created residual FX accounts --- .../1.Setup data/CreateGLAccount.Codeunit.al | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGLAccount.Codeunit.al b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGLAccount.Codeunit.al index 50b578fba1..7776c8cc59 100644 --- a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGLAccount.Codeunit.al +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGLAccount.Codeunit.al @@ -396,6 +396,12 @@ codeunit 5208 "Create G/L Account" SubCategory := Format(GLAccountCategory."Account Category"::Expense, 80); ContosoGLAccount.InsertGLAccount(RealizedFXLosses(), RealizedFXLossesName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, SubCategory, Enum::"G/L Account Type"::Posting, '', '', 0, '', Enum::"General Posting Type"::" ", '', '', false, false, false); + SubCategory := Format(GLAccountCategory."Account Category"::Income, 80); + ContosoGLAccount.InsertGLAccount(ResidualFXGains(), ResidualFXGainsName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Income, SubCategory, Enum::"G/L Account Type"::Posting, '', '', 0, '', Enum::"General Posting Type"::" ", '', '', false, false, false); + + SubCategory := Format(GLAccountCategory."Account Category"::Expense, 80); + ContosoGLAccount.InsertGLAccount(ResidualFXLosses(), ResidualFXLossesName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, SubCategory, Enum::"G/L Account Type"::Posting, '', '', 0, '', Enum::"General Posting Type"::" ", '', '', false, false, false); + ContosoGLAccount.InsertGLAccount(NIBEFOREEXTRITEMSTAXES(), NIBEFOREEXTRITEMSTAXESName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::" ", Enum::"G/L Account Type"::Total, '', '', 1, IncomeStatement() + '..' + NIBEFOREEXTRITEMSTAXES(), Enum::"General Posting Type"::" ", '', '', false, false, false); SubCategory := Format(GLAccountCategory."Account Category"::Income, 80); @@ -677,6 +683,8 @@ codeunit 5208 "Create G/L Account" ContosoGLAccount.AddAccountForLocalization(UnrealizedFXLossesName(), '9320'); ContosoGLAccount.AddAccountForLocalization(RealizedFXGainsName(), '9330'); ContosoGLAccount.AddAccountForLocalization(RealizedFXLossesName(), '9340'); + ContosoGLAccount.AddAccountForLocalization(ResidualFXGainsName(), '9350'); + ContosoGLAccount.AddAccountForLocalization(ResidualFXLossesName(), '9360'); ContosoGLAccount.AddAccountForLocalization(NIBEFOREEXTRITEMSTAXESName(), '9395'); ContosoGLAccount.AddAccountForLocalization(ExtraordinaryIncomeName(), '9410'); ContosoGLAccount.AddAccountForLocalization(ExtraordinaryExpensesName(), '9420'); @@ -3298,6 +3306,26 @@ codeunit 5208 "Create G/L Account" exit(RealizedFXLossesLbl); end; + procedure ResidualFXGains(): Code[20] + begin + exit(ContosoGLAccount.GetAccountNo(ResidualFXGainsName())); + end; + + procedure ResidualFXGainsName(): Text[100] + begin + exit(ResidualFXGainsLbl); + end; + + procedure ResidualFXLosses(): Code[20] + begin + exit(ContosoGLAccount.GetAccountNo(ResidualFXLossesName())); + end; + + procedure ResidualFXLossesName(): Text[100] + begin + exit(ResidualFXLossesLbl); + end; + procedure NIBEFOREEXTRITEMSTAXES(): Code[20] begin exit(ContosoGLAccount.GetAccountNo(NIBEFOREEXTRITEMSTAXESName())); @@ -3628,6 +3656,8 @@ codeunit 5208 "Create G/L Account" UnrealizedFXLossesLbl: Label 'Unrealized FX Losses', MaxLength = 100; RealizedFXGainsLbl: Label 'Realized FX Gains', MaxLength = 100; RealizedFXLossesLbl: Label 'Realized FX Losses', MaxLength = 100; + ResidualFXGainsLbl: Label 'Residual FX Gains', MaxLength = 100; + ResidualFXLossesLbl: Label 'Residual FX Losses', MaxLength = 100; NIBEFOREEXTRITEMSTAXESLbl: Label 'NI BEFORE EXTR. ITEMS & TAXES', MaxLength = 100; ExtraordinaryIncomeLbl: Label 'Extraordinary Income', MaxLength = 100; ExtraordinaryExpensesLbl: Label 'Extraordinary Expenses', MaxLength = 100; From edb7458af69c15057254c13bbf21ba43147c8700 Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Wed, 11 Jun 2025 14:30:42 +1000 Subject: [PATCH 3/6] Set residual FX accounts to EUR & GBP currencies --- .../Contoso Helpers/ContosoCurrency.Codeunit.al | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al index 6bf872c322..e54aa23a6c 100644 --- a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al @@ -5,13 +5,16 @@ namespace Microsoft.DemoTool.Helpers; using Microsoft.Finance.Currency; +using Microsoft.DemoData.Finance; +using Microsoft.Finance.GeneralLedger.Setup; codeunit 5587 "Contoso Currency" { InherentEntitlements = X; InherentPermissions = X; Permissions = tabledata Currency = rim, - tabledata "Currency Exchange Rate" = rim; + tabledata "Currency Exchange Rate" = rim, + tabledata "General Ledger Setup" = r; var OverwriteData: Boolean; @@ -24,6 +27,8 @@ codeunit 5587 "Contoso Currency" procedure InsertCurrency(Code: Code[10]; ISONumericCode: Code[3]; Description: Text[30]; UnrealizedGainsAcc: Code[20]; RealizedGainsAcc: Code[20]; UnrealizedLossesAcc: Code[20]; RealizedLossesAcc: Code[20]; InvoiceRoundingPrecision: Decimal; InvoiceRoundingType: Option Nearest,Up,Down; AmountRoundingPrecision: Decimal; UnitAmountRoundingPrecision: Decimal; EMUCurrency: Boolean; AmountDecimalPlaces: Text[5]; UnitAmountDecimalPlaces: Text[5]) var Currency: Record "Currency"; + GLSetup: Record "General Ledger Setup"; + CreateGLAccount: Codeunit "Create G/L Account"; Exists: Boolean; begin if Currency.Get(Code) then begin @@ -52,6 +57,15 @@ codeunit 5587 "Contoso Currency" Currency.Validate("Unit-Amount Decimal Places", UnitAmountDecimalPlaces); Currency.Validate("EMU Currency", EMUCurrency); + if Currency.Code in ['EUR', 'GBP'] then begin + if GLSetup.Get() then begin + if GLSetup."Additional Reporting Currency" <> '' then begin + Currency.Validate("Residual Gains Account", CreateGLAccount.ResidualFXGains()); + Currency.Validate("Residual Losses Account", CreateGLAccount.ResidualFXLosses()); + end; + end; + end; + if Exists then Currency.Modify(true) else From 523359fda5af1c437fab5a8c2b3781d95a0ea164 Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Thu, 26 Jun 2025 16:45:29 +1000 Subject: [PATCH 4/6] Changed hardcoded currency codes to use the currency functions --- .../app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al index e54aa23a6c..15af7a5480 100644 --- a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al @@ -29,6 +29,7 @@ codeunit 5587 "Contoso Currency" Currency: Record "Currency"; GLSetup: Record "General Ledger Setup"; CreateGLAccount: Codeunit "Create G/L Account"; + CreateCurrency: Codeunit "Create Currency"; Exists: Boolean; begin if Currency.Get(Code) then begin @@ -57,7 +58,7 @@ codeunit 5587 "Contoso Currency" Currency.Validate("Unit-Amount Decimal Places", UnitAmountDecimalPlaces); Currency.Validate("EMU Currency", EMUCurrency); - if Currency.Code in ['EUR', 'GBP'] then begin + if Currency.Code in [CreateCurrency.EUR(), CreateCurrency.GBP()] then begin if GLSetup.Get() then begin if GLSetup."Additional Reporting Currency" <> '' then begin Currency.Validate("Residual Gains Account", CreateGLAccount.ResidualFXGains()); From 908b84c601cb886f65b27799c9f3a94b11f46b10 Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Thu, 3 Jul 2025 10:24:45 +1000 Subject: [PATCH 5/6] Added "Create Add. Reporting Currency" codeunit and moved data creation logic --- .../1.Setup data/CreateGLAccount.Codeunit.al | 30 ------ .../CreateGeneralLedgerSetup.Codeunit.al | 4 - .../CreateAddReportingCurrency.Codeunit.al | 96 +++++++++++++++++++ .../Finance/FinanceModule.Codeunit.al | 1 + .../ContosoCurrency.Codeunit.al | 17 +--- 5 files changed, 98 insertions(+), 50 deletions(-) create mode 100644 Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/2.Master data/CreateAddReportingCurrency.Codeunit.al diff --git a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGLAccount.Codeunit.al b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGLAccount.Codeunit.al index 7776c8cc59..50b578fba1 100644 --- a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGLAccount.Codeunit.al +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGLAccount.Codeunit.al @@ -396,12 +396,6 @@ codeunit 5208 "Create G/L Account" SubCategory := Format(GLAccountCategory."Account Category"::Expense, 80); ContosoGLAccount.InsertGLAccount(RealizedFXLosses(), RealizedFXLossesName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, SubCategory, Enum::"G/L Account Type"::Posting, '', '', 0, '', Enum::"General Posting Type"::" ", '', '', false, false, false); - SubCategory := Format(GLAccountCategory."Account Category"::Income, 80); - ContosoGLAccount.InsertGLAccount(ResidualFXGains(), ResidualFXGainsName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Income, SubCategory, Enum::"G/L Account Type"::Posting, '', '', 0, '', Enum::"General Posting Type"::" ", '', '', false, false, false); - - SubCategory := Format(GLAccountCategory."Account Category"::Expense, 80); - ContosoGLAccount.InsertGLAccount(ResidualFXLosses(), ResidualFXLossesName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, SubCategory, Enum::"G/L Account Type"::Posting, '', '', 0, '', Enum::"General Posting Type"::" ", '', '', false, false, false); - ContosoGLAccount.InsertGLAccount(NIBEFOREEXTRITEMSTAXES(), NIBEFOREEXTRITEMSTAXESName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::" ", Enum::"G/L Account Type"::Total, '', '', 1, IncomeStatement() + '..' + NIBEFOREEXTRITEMSTAXES(), Enum::"General Posting Type"::" ", '', '', false, false, false); SubCategory := Format(GLAccountCategory."Account Category"::Income, 80); @@ -683,8 +677,6 @@ codeunit 5208 "Create G/L Account" ContosoGLAccount.AddAccountForLocalization(UnrealizedFXLossesName(), '9320'); ContosoGLAccount.AddAccountForLocalization(RealizedFXGainsName(), '9330'); ContosoGLAccount.AddAccountForLocalization(RealizedFXLossesName(), '9340'); - ContosoGLAccount.AddAccountForLocalization(ResidualFXGainsName(), '9350'); - ContosoGLAccount.AddAccountForLocalization(ResidualFXLossesName(), '9360'); ContosoGLAccount.AddAccountForLocalization(NIBEFOREEXTRITEMSTAXESName(), '9395'); ContosoGLAccount.AddAccountForLocalization(ExtraordinaryIncomeName(), '9410'); ContosoGLAccount.AddAccountForLocalization(ExtraordinaryExpensesName(), '9420'); @@ -3306,26 +3298,6 @@ codeunit 5208 "Create G/L Account" exit(RealizedFXLossesLbl); end; - procedure ResidualFXGains(): Code[20] - begin - exit(ContosoGLAccount.GetAccountNo(ResidualFXGainsName())); - end; - - procedure ResidualFXGainsName(): Text[100] - begin - exit(ResidualFXGainsLbl); - end; - - procedure ResidualFXLosses(): Code[20] - begin - exit(ContosoGLAccount.GetAccountNo(ResidualFXLossesName())); - end; - - procedure ResidualFXLossesName(): Text[100] - begin - exit(ResidualFXLossesLbl); - end; - procedure NIBEFOREEXTRITEMSTAXES(): Code[20] begin exit(ContosoGLAccount.GetAccountNo(NIBEFOREEXTRITEMSTAXESName())); @@ -3656,8 +3628,6 @@ codeunit 5208 "Create G/L Account" UnrealizedFXLossesLbl: Label 'Unrealized FX Losses', MaxLength = 100; RealizedFXGainsLbl: Label 'Realized FX Gains', MaxLength = 100; RealizedFXLossesLbl: Label 'Realized FX Losses', MaxLength = 100; - ResidualFXGainsLbl: Label 'Residual FX Gains', MaxLength = 100; - ResidualFXLossesLbl: Label 'Residual FX Losses', MaxLength = 100; NIBEFOREEXTRITEMSTAXESLbl: Label 'NI BEFORE EXTR. ITEMS & TAXES', MaxLength = 100; ExtraordinaryIncomeLbl: Label 'Extraordinary Income', MaxLength = 100; ExtraordinaryExpensesLbl: Label 'Extraordinary Expenses', MaxLength = 100; diff --git a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGeneralLedgerSetup.Codeunit.al b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGeneralLedgerSetup.Codeunit.al index 99ce4cac68..00513df617 100644 --- a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGeneralLedgerSetup.Codeunit.al +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/1.Setup data/CreateGeneralLedgerSetup.Codeunit.al @@ -25,8 +25,6 @@ codeunit 5230 "Create General Ledger Setup" procedure InsertData(JobQueueCategoryCode: Code[10]; InvoiceRoundingPrecisionLCY: Decimal; LocalContAddrFormat: Integer; BankAccountNo: Code[20]; LCYCode: Code[10]; DataCheck: Boolean; AccReceivablesCategory: Integer) var GeneralLedgerSetup: Record "General Ledger Setup"; - CreateCurrency: Codeunit "Create Currency"; - ACYCode: Code[10]; begin if not GeneralLedgerSetup.Get() then GeneralLedgerSetup.Insert(); @@ -38,8 +36,6 @@ codeunit 5230 "Create General Ledger Setup" GeneralLedgerSetup.Validate("LCY Code", LCYCode); GeneralLedgerSetup.Validate("Enable Data Check", DataCheck); GeneralLedgerSetup.Validate("Acc. Receivables Category", AccReceivablesCategory); - ACYCode := LCYCode = CreateCurrency.EUR() ? CreateCurrency.USD() : CreateCurrency.EUR(); - GeneralLedgerSetup."Additional Reporting Currency" := ACYCode; GeneralLedgerSetup.Modify(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..6ce098324d --- /dev/null +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/2.Master data/CreateAddReportingCurrency.Codeunit.al @@ -0,0 +1,96 @@ +// ------------------------------------------------------------------------------------------------ +// 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.GeneralLedger.Setup; +using Microsoft.DemoTool.Helpers; +using Microsoft.Finance.GeneralLedger.Account; +using Microsoft.Foundation.Enums; +using Microsoft.Finance.Currency; + +codeunit 5627 "Create Add. Reporting Currency" +{ + InherentEntitlements = X; + InherentPermissions = X; + Permissions = + tabledata "General Ledger Setup" = rm, + tabledata Currency = rm; + + trigger OnRun() + begin + ConfigureAdditionalReportingCurrency(); + GenerateGLAccountsForReportingCurrency(); + 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 GenerateGLAccountsForReportingCurrency() + var + GLAccountCategory: Record "G/L Account Category"; + SubCategory: Text[80]; + begin + ContosoGLAccount.AddAccountForLocalization(ResidualFXGainsName(), '9350'); + ContosoGLAccount.AddAccountForLocalization(ResidualFXLossesName(), '9360'); + + SubCategory := Format(GLAccountCategory."Account Category"::Income, 80); + ContosoGLAccount.InsertGLAccount(ResidualFXGains(), ResidualFXGainsName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Income, SubCategory, Enum::"G/L Account Type"::Posting, '', '', 0, '', Enum::"General Posting Type"::" ", '', '', false, false, false); + + SubCategory := Format(GLAccountCategory."Account Category"::Expense, 80); + ContosoGLAccount.InsertGLAccount(ResidualFXLosses(), ResidualFXLossesName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Expense, SubCategory, Enum::"G/L Account Type"::Posting, '', '', 0, '', Enum::"General Posting Type"::" ", '', '', false, false, false); + end; + + procedure UpdateCurrencyResidualAccounts() + var + Currency: Record "Currency"; + CreateGLAccount: Codeunit "Create G/L Account"; + CreateCurrency: Codeunit "Create Currency"; + begin + Currency.SetFilter(Code, '%1|%2', CreateCurrency.EUR(), CreateCurrency.USD()); + if Currency.FindSet(true) then begin + repeat + Currency.Validate("Residual Gains Account", ResidualFXGains()); + Currency.Validate("Residual Losses Account", ResidualFXLosses()); + Currency.Modify(true); + until Currency.Next() = 0; + end; + end; + + procedure ResidualFXGains(): Code[20] + begin + exit(ContosoGLAccount.GetAccountNo(ResidualFXGainsName())); + end; + + procedure ResidualFXGainsName(): Text[100] + begin + exit(ResidualFXGainsLbl); + end; + + procedure ResidualFXLosses(): Code[20] + begin + exit(ContosoGLAccount.GetAccountNo(ResidualFXLossesName())); + end; + + procedure ResidualFXLossesName(): Text[100] + begin + exit(ResidualFXLossesLbl); + end; + + var + ContosoGLAccount: Codeunit "Contoso GL Account"; + ResidualFXGainsLbl: Label 'Residual FX Gains', MaxLength = 100; + ResidualFXLossesLbl: Label 'Residual FX Losses', MaxLength = 100; +} \ 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 3bccc4a6a7..57208acc0e 100644 --- a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/FinanceModule.Codeunit.al +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoData/Finance/FinanceModule.Codeunit.al @@ -73,6 +73,7 @@ codeunit 5415 "Finance Module" implements "Contoso Demo Data Module" Codeunit.Run(Codeunit::"Categ. Generate Acc. Schedules"); Codeunit.Run(Codeunit::"Create Currency Exchange Rate"); Codeunit.Run(Codeunit::"Create Resource"); + Codeunit.Run(Codeunit::"Create Add. Reporting Currency") end; procedure CreateTransactionalData() diff --git a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al index 15af7a5480..6bf872c322 100644 --- a/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al +++ b/Apps/W1/ContosoCoffeeDemoDataset/app/DemoTool/Contoso Helpers/ContosoCurrency.Codeunit.al @@ -5,16 +5,13 @@ namespace Microsoft.DemoTool.Helpers; using Microsoft.Finance.Currency; -using Microsoft.DemoData.Finance; -using Microsoft.Finance.GeneralLedger.Setup; codeunit 5587 "Contoso Currency" { InherentEntitlements = X; InherentPermissions = X; Permissions = tabledata Currency = rim, - tabledata "Currency Exchange Rate" = rim, - tabledata "General Ledger Setup" = r; + tabledata "Currency Exchange Rate" = rim; var OverwriteData: Boolean; @@ -27,9 +24,6 @@ codeunit 5587 "Contoso Currency" procedure InsertCurrency(Code: Code[10]; ISONumericCode: Code[3]; Description: Text[30]; UnrealizedGainsAcc: Code[20]; RealizedGainsAcc: Code[20]; UnrealizedLossesAcc: Code[20]; RealizedLossesAcc: Code[20]; InvoiceRoundingPrecision: Decimal; InvoiceRoundingType: Option Nearest,Up,Down; AmountRoundingPrecision: Decimal; UnitAmountRoundingPrecision: Decimal; EMUCurrency: Boolean; AmountDecimalPlaces: Text[5]; UnitAmountDecimalPlaces: Text[5]) var Currency: Record "Currency"; - GLSetup: Record "General Ledger Setup"; - CreateGLAccount: Codeunit "Create G/L Account"; - CreateCurrency: Codeunit "Create Currency"; Exists: Boolean; begin if Currency.Get(Code) then begin @@ -58,15 +52,6 @@ codeunit 5587 "Contoso Currency" Currency.Validate("Unit-Amount Decimal Places", UnitAmountDecimalPlaces); Currency.Validate("EMU Currency", EMUCurrency); - if Currency.Code in [CreateCurrency.EUR(), CreateCurrency.GBP()] then begin - if GLSetup.Get() then begin - if GLSetup."Additional Reporting Currency" <> '' then begin - Currency.Validate("Residual Gains Account", CreateGLAccount.ResidualFXGains()); - Currency.Validate("Residual Losses Account", CreateGLAccount.ResidualFXLosses()); - end; - end; - end; - if Exists then Currency.Modify(true) else From bb87255636ef07218603d3ef11821b6e5d14eef0 Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Fri, 22 Aug 2025 20:16:04 +1000 Subject: [PATCH 6/6] Updated account numbers for residual FX gains/losses --- .../2.Master data/CreateAddReportingCurrency.Codeunit.al | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 index 6ce098324d..7d2cdab4d1 100644 --- 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 @@ -43,8 +43,8 @@ codeunit 5627 "Create Add. Reporting Currency" GLAccountCategory: Record "G/L Account Category"; SubCategory: Text[80]; begin - ContosoGLAccount.AddAccountForLocalization(ResidualFXGainsName(), '9350'); - ContosoGLAccount.AddAccountForLocalization(ResidualFXLossesName(), '9360'); + ContosoGLAccount.AddAccountForLocalization(ResidualFXGainsName(), '9335'); + ContosoGLAccount.AddAccountForLocalization(ResidualFXLossesName(), '9345'); SubCategory := Format(GLAccountCategory."Account Category"::Income, 80); ContosoGLAccount.InsertGLAccount(ResidualFXGains(), ResidualFXGainsName(), Enum::"G/L Account Income/Balance"::"Income Statement", Enum::"G/L Account Category"::Income, SubCategory, Enum::"G/L Account Type"::Posting, '', '', 0, '', Enum::"General Posting Type"::" ", '', '', false, false, false);