diff --git a/build/groups.json b/build/groups.json index a9f4624046c..1c96c26a5be 100644 --- a/build/groups.json +++ b/build/groups.json @@ -9717,6 +9717,26 @@ } ] }, + { + "name": "Expense Withholding Tax", + "groups": [ + { + "name": "AllExtensions" + }, + { + "name": "Financials" + }, + { + "name": "FinancialsExtensions" + }, + { + "name": "OnPrem" + }, + { + "name": "OnPremExtensions" + } + ] + }, { "name": "Excise Taxes", "groups": [ diff --git a/build/projects.json b/build/projects.json index 28918414ec0..e07eb6a42ba 100644 --- a/build/projects.json +++ b/build/projects.json @@ -7177,6 +7177,36 @@ "ruleSetPath": "$ENV:INETROOT\\App\\Rulesets\\app.ruleset.json", "ruleSetPathMinorRelease": "$ENV:INETROOT\\App\\Rulesets\\MinorRelease\\app.ruleset.json" }, + "Expense Withholding Tax": { + "projectPath": "$env:INETROOT\\App\\Apps\\W1\\ExpenseWithholdingTax\\app", + "hasTranslations": true, + "supportedCountries": [ + "AT", + "BE", + "CA", + "CH", + "CZ", + "DE", + "DK", + "ES", + "FI", + "FR", + "GB", + "IS", + "MX", + "NL", + "NO", + "RU", + "SE", + "US", + "W1" + ], + "installOnEnvironmentUpdate": true, + "runStaticCodeAnalysis": true, + "logLevel": "warning", + "ruleSetPath": "$ENV:INETROOT\\App\\BCApps\\src\\rulesets\\base.ruleset.json", + "ruleSetPathMinorRelease": "$ENV:INETROOT\\App\\Rulesets\\MinorRelease\\app.ruleset.json" + }, "Payment Management FR": { "projectPath": "$env:INETROOT\\App\\Apps\\FR\\PaymentManagementFR\\app", "dvdFolder": "Applications\\PaymentManagementFR\\Source", diff --git a/build/projects/Apps AT/.AL-Go/settings.json b/build/projects/Apps AT/.AL-Go/settings.json index a941ae80704..8925fd4adc8 100644 --- a/build/projects/Apps AT/.AL-Go/settings.json +++ b/build/projects/Apps AT/.AL-Go/settings.json @@ -56,6 +56,7 @@ "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", "../../../src/Apps/W1/ExpenseAgent/demo data", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps BE/.AL-Go/settings.json b/build/projects/Apps BE/.AL-Go/settings.json index 9913c57c51b..a3dc5383d9a 100644 --- a/build/projects/Apps BE/.AL-Go/settings.json +++ b/build/projects/Apps BE/.AL-Go/settings.json @@ -55,6 +55,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps CA/.AL-Go/settings.json b/build/projects/Apps CA/.AL-Go/settings.json index 3226cfa9235..2c62e4cc996 100644 --- a/build/projects/Apps CA/.AL-Go/settings.json +++ b/build/projects/Apps CA/.AL-Go/settings.json @@ -64,6 +64,7 @@ "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", "../../../src/Apps/W1/ExpenseAgent/demo data", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps CH/.AL-Go/settings.json b/build/projects/Apps CH/.AL-Go/settings.json index 8b60f5d68a5..7d308bd26a2 100644 --- a/build/projects/Apps CH/.AL-Go/settings.json +++ b/build/projects/Apps CH/.AL-Go/settings.json @@ -53,6 +53,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps CZ/.AL-Go/settings.json b/build/projects/Apps CZ/.AL-Go/settings.json index 851ea669fe3..60c6c360d14 100644 --- a/build/projects/Apps CZ/.AL-Go/settings.json +++ b/build/projects/Apps CZ/.AL-Go/settings.json @@ -67,6 +67,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps DE/.AL-Go/settings.json b/build/projects/Apps DE/.AL-Go/settings.json index 58702be9d19..4a9ed998bb8 100644 --- a/build/projects/Apps DE/.AL-Go/settings.json +++ b/build/projects/Apps DE/.AL-Go/settings.json @@ -59,6 +59,7 @@ "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", "../../../src/Apps/W1/ExpenseAgent/demo data", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps DK/.AL-Go/settings.json b/build/projects/Apps DK/.AL-Go/settings.json index 1e2f2f3fffb..d8e001a5f5b 100644 --- a/build/projects/Apps DK/.AL-Go/settings.json +++ b/build/projects/Apps DK/.AL-Go/settings.json @@ -66,6 +66,7 @@ "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", "../../../src/Apps/W1/ExpenseAgent/demo data", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps ES/.AL-Go/settings.json b/build/projects/Apps ES/.AL-Go/settings.json index f383309ac4f..bbf76af5dbd 100644 --- a/build/projects/Apps ES/.AL-Go/settings.json +++ b/build/projects/Apps ES/.AL-Go/settings.json @@ -59,6 +59,7 @@ "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", "../../../src/Apps/W1/ExpenseAgent/demo data", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps FI/.AL-Go/settings.json b/build/projects/Apps FI/.AL-Go/settings.json index c85a6613aaa..f164fb1f050 100644 --- a/build/projects/Apps FI/.AL-Go/settings.json +++ b/build/projects/Apps FI/.AL-Go/settings.json @@ -54,6 +54,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps FR/.AL-Go/settings.json b/build/projects/Apps FR/.AL-Go/settings.json index 323da3a8324..f7cfe2ef5cf 100644 --- a/build/projects/Apps FR/.AL-Go/settings.json +++ b/build/projects/Apps FR/.AL-Go/settings.json @@ -62,6 +62,7 @@ "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", "../../../src/Apps/W1/ExpenseAgent/demo data", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps GB/.AL-Go/settings.json b/build/projects/Apps GB/.AL-Go/settings.json index f3eb657b20f..e01674c6cb8 100644 --- a/build/projects/Apps GB/.AL-Go/settings.json +++ b/build/projects/Apps GB/.AL-Go/settings.json @@ -65,6 +65,7 @@ "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", "../../../src/Apps/W1/ExpenseAgent/demo data", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps IS/.AL-Go/settings.json b/build/projects/Apps IS/.AL-Go/settings.json index bc9d705e083..235bd934fe9 100644 --- a/build/projects/Apps IS/.AL-Go/settings.json +++ b/build/projects/Apps IS/.AL-Go/settings.json @@ -52,6 +52,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps MX/.AL-Go/settings.json b/build/projects/Apps MX/.AL-Go/settings.json index add984a89ec..a3f60de2458 100644 --- a/build/projects/Apps MX/.AL-Go/settings.json +++ b/build/projects/Apps MX/.AL-Go/settings.json @@ -54,6 +54,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps NL/.AL-Go/settings.json b/build/projects/Apps NL/.AL-Go/settings.json index eede5ff5f0e..08c6b0fbcd0 100644 --- a/build/projects/Apps NL/.AL-Go/settings.json +++ b/build/projects/Apps NL/.AL-Go/settings.json @@ -53,6 +53,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps NO/.AL-Go/settings.json b/build/projects/Apps NO/.AL-Go/settings.json index cd59a99e255..81d3f98883d 100644 --- a/build/projects/Apps NO/.AL-Go/settings.json +++ b/build/projects/Apps NO/.AL-Go/settings.json @@ -56,6 +56,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps RU/.AL-Go/settings.json b/build/projects/Apps RU/.AL-Go/settings.json index 44f7cbc7e03..c69d2fdf8ef 100644 --- a/build/projects/Apps RU/.AL-Go/settings.json +++ b/build/projects/Apps RU/.AL-Go/settings.json @@ -46,6 +46,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps SE/.AL-Go/settings.json b/build/projects/Apps SE/.AL-Go/settings.json index cf8c5bb5aef..fd01bd63406 100644 --- a/build/projects/Apps SE/.AL-Go/settings.json +++ b/build/projects/Apps SE/.AL-Go/settings.json @@ -56,6 +56,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps US/.AL-Go/settings.json b/build/projects/Apps US/.AL-Go/settings.json index d2061923cc1..afa66b83c09 100644 --- a/build/projects/Apps US/.AL-Go/settings.json +++ b/build/projects/Apps US/.AL-Go/settings.json @@ -67,6 +67,7 @@ "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", "../../../src/Apps/W1/ExpenseAgent/demo data", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/build/projects/Apps W1/.AL-Go/settings.json b/build/projects/Apps W1/.AL-Go/settings.json index 190e361cae6..3ff3dfc6e65 100644 --- a/build/projects/Apps W1/.AL-Go/settings.json +++ b/build/projects/Apps W1/.AL-Go/settings.json @@ -47,6 +47,7 @@ "../../../src/Apps/W1/ExcelReports/App", "../../../src/Apps/W1/ExciseTaxes/app", "../../../src/Apps/W1/ExpenseAgent/app", + "../../../src/Apps/W1/ExpenseWithholdingTax/app", "../../../src/Apps/W1/External File Storage - Azure Blob Service Connector/App", "../../../src/Apps/W1/External File Storage - Azure File Service Connector/App", "../../../src/Apps/W1/External File Storage - SFTP Connector/App", diff --git a/src/Apps/W1/ExpenseAgent/app/app.json b/src/Apps/W1/ExpenseAgent/app/app.json index fadf16fcbc8..b333f76c336 100644 --- a/src/Apps/W1/ExpenseAgent/app/app.json +++ b/src/Apps/W1/ExpenseAgent/app/app.json @@ -122,6 +122,11 @@ "id": "b299c435-af71-4b42-b15b-f1cdddd1a561", "name": "Expense Agent (Preview) (GB)", "publisher": "Microsoft" + }, + { + "id": "4cb44e6c-9a37-4d4e-b45f-1b3054ddc59a", + "name": "Expense Withholding Tax", + "publisher": "Microsoft" } ], "screenshots": [], diff --git a/src/Apps/W1/ExpenseAgent/app/src/ExpenseReport/Codeunits/ExpenseReportPost.Codeunit.al b/src/Apps/W1/ExpenseAgent/app/src/ExpenseReport/Codeunits/ExpenseReportPost.Codeunit.al index 815d674c65d..8c966e93545 100644 --- a/src/Apps/W1/ExpenseAgent/app/src/ExpenseReport/Codeunits/ExpenseReportPost.Codeunit.al +++ b/src/Apps/W1/ExpenseAgent/app/src/ExpenseReport/Codeunits/ExpenseReportPost.Codeunit.al @@ -203,6 +203,7 @@ codeunit 6987 "Expense Report-Post" InsertExpenseLedgerEntry(GlobalExpenseLedgerEntry); + OnAfterProcessExpenseReportLine(ExpenseReportHeader, ExpenseReportLine, PostedExpenseReportLine, PostedExpenseReportHeader); until ExpenseReportLine.Next() = 0; if not PreviewMode then @@ -655,7 +656,10 @@ codeunit 6987 "Expense Report-Post" SetupSourceCodeAndDimensions(GenJournalLine, ExpenseReportHeader."Dimension Set ID"); GenJournalLine."System-Created Entry" := true; + + OnBeforePostEmployeeEntry(GenJournalLine, ExpenseReportHeader, PostedExpenseReportHeader); GenJnlPostLine.RunWithCheck(GenJournalLine); + OnAfterPostEmployeeEntry(GenJournalLine, ExpenseReportHeader, PostedExpenseReportHeader); end; local procedure UpdateLastPostingNos(var ExpenseReportHeader: Record "Expense Report Header") @@ -1253,4 +1257,19 @@ codeunit 6987 "Expense Report-Post" // Delete the source aggregate rows now that they are safely in the posted table. ExpenseReportLineVATSpec.DeleteAll(); end; + + [IntegrationEvent(false, false)] + local procedure OnAfterProcessExpenseReportLine(ExpenseReportHeader: Record "Expense Report Header"; ExpenseReportLine: Record "Expense Report Line"; PostedExpenseReportLine: Record "Posted Expense Report Line"; PostedExpenseReportHeader: Record "Posted Expense Report Header") + begin + end; + + [IntegrationEvent(false, false)] + local procedure OnBeforePostEmployeeEntry(var GenJournalLine: Record "Gen. Journal Line"; ExpenseReportHeader: Record "Expense Report Header"; PostedExpenseReportHeader: Record "Posted Expense Report Header") + begin + end; + + [IntegrationEvent(false, false)] + local procedure OnAfterPostEmployeeEntry(GenJournalLine: Record "Gen. Journal Line"; ExpenseReportHeader: Record "Expense Report Header"; PostedExpenseReportHeader: Record "Posted Expense Report Header") + begin + end; } diff --git a/src/Apps/W1/ExpenseWithholdingTax/app/src/ExpWithholdingTax.PermissionSet.al b/src/Apps/W1/ExpenseWithholdingTax/app/src/ExpWithholdingTax.PermissionSet.al new file mode 100644 index 00000000000..e48016013dd --- /dev/null +++ b/src/Apps/W1/ExpenseWithholdingTax/app/src/ExpWithholdingTax.PermissionSet.al @@ -0,0 +1,17 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ +namespace Microsoft.ExpenseTaxIntegration; + +permissionset 7058 "Exp. Withholding Tax" +{ + Assignable = true; + Caption = 'Expense Withholding Tax'; + + Permissions = + tabledata "WHT Exp. Report Buffer" = RIMD, + table "WHT Exp. Report Buffer" = X, + codeunit "WHT Expense Category Mgt." = X, + codeunit "WHT Exp. Report Post Handler" = X; +} diff --git a/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpReportBuffer.Table.al b/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpReportBuffer.Table.al new file mode 100644 index 00000000000..fe3e0da323d --- /dev/null +++ b/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpReportBuffer.Table.al @@ -0,0 +1,62 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ +namespace Microsoft.ExpenseTaxIntegration; + +using Microsoft.WithholdingTax; + +table 7059 "WHT Exp. Report Buffer" +{ + Caption = 'Expense Report Withholding Tax Buffer'; + Access = Internal; + + fields + { + field(1; "Document No."; Code[20]) + { + Caption = 'Document No.'; + DataClassification = SystemMetadata; + } + field(2; "Line No."; Integer) + { + Caption = 'Line No.'; + DataClassification = SystemMetadata; + } + field(10; "Wthldg. Tax Bus. Post. Group"; Code[20]) + { + Caption = 'Withholding Tax Bus. Posting Group'; + TableRelation = "Wthldg. Tax Bus. Post. Group"; + DataClassification = SystemMetadata; + } + field(11; "Wthldg. Tax Prod. Post. Group"; Code[20]) + { + Caption = 'Withholding Tax Prod. Posting Group'; + TableRelation = "Wthldg. Tax Prod. Post. Group"; + DataClassification = SystemMetadata; + } + field(12; "Expense Category"; Code[20]) + { + Caption = 'Expense Category'; + DataClassification = SystemMetadata; + } + field(20; "WHT Base Amount (LCY)"; Decimal) + { + Caption = 'Withholding Tax Base Amount (LCY)'; + DataClassification = SystemMetadata; + } + field(21; "WHT Amount (LCY)"; Decimal) + { + Caption = 'Withholding Tax Amount (LCY)'; + DataClassification = SystemMetadata; + } + } + + keys + { + key(PK; "Document No.", "Line No.") + { + Clustered = true; + } + } +} \ No newline at end of file diff --git a/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpReportPostHandler.Codeunit.al b/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpReportPostHandler.Codeunit.al new file mode 100644 index 00000000000..de0dc9f0d3e --- /dev/null +++ b/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpReportPostHandler.Codeunit.al @@ -0,0 +1,260 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ +namespace Microsoft.ExpenseTaxIntegration; + +using Microsoft.ExpenseAgent; +using Microsoft.Finance.GeneralLedger.Journal; +using Microsoft.Finance.GeneralLedger.Ledger; +using Microsoft.Finance.GeneralLedger.Posting; +using Microsoft.Finance.GeneralLedger.Setup; +using Microsoft.HumanResources.Employee; +using Microsoft.HumanResources.Payables; +using Microsoft.WithholdingTax; +using Microsoft.WithholdingTax.Employee; + +codeunit 7057 "WHT Exp. Report Post Handler" +{ + Access = Internal; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Expense Report-Post", 'OnAfterProcessExpenseReportLine', '', false, false)] + local procedure OnAfterProcessExpenseReportLine(ExpenseReportHeader: Record "Expense Report Header"; ExpenseReportLine: Record "Expense Report Line"; PostedExpenseReportLine: Record "Posted Expense Report Line"; PostedExpenseReportHeader: Record "Posted Expense Report Header") + begin + if CheckWithholdingTaxDisabled() then + exit; + + AccumulateLineWHT(ExpenseReportHeader, ExpenseReportLine, PostedExpenseReportHeader."No."); + end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Expense Report-Post", 'OnBeforePostEmployeeEntry', '', false, false)] + local procedure OnBeforePostEmployeeEntry(var GenJournalLine: Record "Gen. Journal Line"; ExpenseReportHeader: Record "Expense Report Header"; PostedExpenseReportHeader: Record "Posted Expense Report Header") + var + WHTExpReportBuffer: Record "WHT Exp. Report Buffer"; + TotalWHTAmountLCY: Decimal; + FCYReduction: Decimal; + begin + if CheckWithholdingTaxDisabled() then + exit; + + WHTExpReportBuffer.SetRange("Document No.", PostedExpenseReportHeader."No."); + WHTExpReportBuffer.CalcSums("WHT Amount (LCY)"); + TotalWHTAmountLCY := WHTExpReportBuffer."WHT Amount (LCY)"; + + if TotalWHTAmountLCY = 0 then + exit; + + if GenJournalLine."Amount (LCY)" <> 0 then + FCYReduction := Round(TotalWHTAmountLCY * (GenJournalLine.Amount / GenJournalLine."Amount (LCY)")) + else + FCYReduction := TotalWHTAmountLCY; + + GenJournalLine.Amount += FCYReduction; + GenJournalLine."Amount (LCY)" += TotalWHTAmountLCY; + GenJournalLine."Source Currency Amount" := GenJournalLine.Amount; + end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Expense Report-Post", 'OnAfterPostEmployeeEntry', '', false, false)] + local procedure OnAfterPostEmployeeEntry(GenJournalLine: Record "Gen. Journal Line"; ExpenseReportHeader: Record "Expense Report Header"; PostedExpenseReportHeader: Record "Posted Expense Report Header") + var + WHTExpReportBuffer: Record "WHT Exp. Report Buffer"; + begin + WHTExpReportBuffer.SetRange("Document No.", PostedExpenseReportHeader."No."); + WHTExpReportBuffer.DeleteAll(); + end; + + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Gen. Jnl.-Post Line", 'OnAfterPostEmployee', '', false, false)] + local procedure OnAfterPostEmployeeApplyExpenseWHT(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer; sender: Codeunit "Gen. Jnl.-Post Line") + var + WHTExpReportBuffer: Record "WHT Exp. Report Buffer"; + begin + if CheckWithholdingTaxDisabled() then + exit; + + if GenJnlLine."Document No." = '' then + exit; + + WHTExpReportBuffer.SetRange("Document No.", GenJnlLine."Document No."); + if WHTExpReportBuffer.IsEmpty() then + exit; + + PostBufferedWHT(GenJnlLine, NextTransactionNo, NextTaxEntryNo, sender); + end; + + local procedure AccumulateLineWHT(ExpenseReportHeader: Record "Expense Report Header"; ExpenseReportLine: Record "Expense Report Line"; DocumentNo: Code[20]) + var + WHTExpReportBuffer: Record "WHT Exp. Report Buffer"; + ExpenseCategory: Record "Expense Category"; + ExpenseUser: Record "Expense User"; + Employee: Record Employee; + TempGenJnlLine: Record "Gen. Journal Line" temporary; + WHTEmployeeCalc: Codeunit "WHT Employee Calculation"; + WHTAmount: Decimal; + WHTBaseAmount: Decimal; + begin + if ExpenseReportLine."Reimbursable Amount (LCY)" = 0 then + exit; + + if not ExpenseCategory.Get(ExpenseReportLine."Expense Category") then + exit; + + if (ExpenseCategory."Wthldg. Tax Prod. Post. Group" = '') and (ExpenseCategory."Withholding Group Code" = '') then + exit; + + if not ExpenseUser.Get(ExpenseReportHeader."Expense User No.") then + exit; + + if not Employee.Get(ExpenseUser."Employee No.") then + exit; + + if Employee."Withholding Tax Exempt" then + exit; + + if Employee."Wthldg. Tax Bus. Post. Group" = '' then + exit; + + BuildTempEmployeeLine(TempGenJnlLine, ExpenseReportHeader, ExpenseReportLine, Employee, ExpenseCategory, DocumentNo); + + if not WHTEmployeeCalc.IsEmployeeWHTApplicable(TempGenJnlLine) then + exit; + + WHTEmployeeCalc.CalcEmployeeWHT(TempGenJnlLine, WHTAmount, WHTBaseAmount); + if WHTBaseAmount = 0 then + exit; + + WHTExpReportBuffer.Init(); + WHTExpReportBuffer."Document No." := DocumentNo; + WHTExpReportBuffer."Line No." := NextBufferLineNo(DocumentNo); + WHTExpReportBuffer."Wthldg. Tax Bus. Post. Group" := TempGenJnlLine."Wthldg. Tax Bus. Post. Group"; + WHTExpReportBuffer."Wthldg. Tax Prod. Post. Group" := TempGenJnlLine."Wthldg. Tax Prod. Post. Group"; + WHTExpReportBuffer."Expense Category" := ExpenseReportLine."Expense Category"; + WHTExpReportBuffer."WHT Base Amount (LCY)" := WHTBaseAmount; + WHTExpReportBuffer."WHT Amount (LCY)" := WHTAmount; + WHTExpReportBuffer.Insert(); + end; + + local procedure NextBufferLineNo(DocumentNo: Code[20]): Integer + var + WHTExpReportBuffer: Record "WHT Exp. Report Buffer"; + begin + WHTExpReportBuffer.SetRange("Document No.", DocumentNo); + if WHTExpReportBuffer.FindLast() then + exit(WHTExpReportBuffer."Line No." + 10000); + exit(10000); + end; + + local procedure BuildTempEmployeeLine(var TempGenJnlLine: Record "Gen. Journal Line" temporary; ExpenseReportHeader: Record "Expense Report Header"; ExpenseReportLine: Record "Expense Report Line"; Employee: Record Employee; ExpenseCategory: Record "Expense Category"; DocumentNo: Code[20]) + begin + TempGenJnlLine.Init(); + TempGenJnlLine."Account Type" := TempGenJnlLine."Account Type"::Employee; + TempGenJnlLine."Account No." := Employee."No."; + TempGenJnlLine."Posting Date" := ExpenseReportHeader."Posting Date"; + TempGenJnlLine."Document Type" := TempGenJnlLine."Document Type"::Invoice; + TempGenJnlLine."Document No." := DocumentNo; + TempGenJnlLine."Expense Category" := ExpenseReportLine."Expense Category"; + TempGenJnlLine."Wthldg. Tax Bus. Post. Group" := Employee."Wthldg. Tax Bus. Post. Group"; + TempGenJnlLine."Wthldg. Tax Prod. Post. Group" := ExpenseCategory."Wthldg. Tax Prod. Post. Group"; + + TempGenJnlLine."Currency Code" := ''; + TempGenJnlLine.Amount := -Abs(ExpenseReportLine."Reimbursable Amount (LCY)"); + TempGenJnlLine."Amount (LCY)" := TempGenJnlLine.Amount; + end; + + local procedure PostBufferedWHT(EmployeeGenJnlLine: Record "Gen. Journal Line"; NextTransactionNo: Integer; var NextTaxEntryNo: Integer; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line") + var + WHTExpReportBuffer: Record "WHT Exp. Report Buffer"; + WorkGenJnlLine: Record "Gen. Journal Line"; + WHTEmployeeCalc: Codeunit "WHT Employee Calculation"; + WHTGroupCode: Code[20]; + begin + WHTExpReportBuffer.SetRange("Document No.", EmployeeGenJnlLine."Document No."); + if WHTExpReportBuffer.FindSet() then + repeat + WorkGenJnlLine := EmployeeGenJnlLine; + WorkGenJnlLine."Currency Code" := ''; + WorkGenJnlLine."Wthldg. Tax Bus. Post. Group" := WHTExpReportBuffer."Wthldg. Tax Bus. Post. Group"; + WorkGenJnlLine."Wthldg. Tax Prod. Post. Group" := WHTExpReportBuffer."Wthldg. Tax Prod. Post. Group"; + WorkGenJnlLine."Expense Category" := WHTExpReportBuffer."Expense Category"; + + if WHTEmployeeCalc.ResolveWHTGroupComponents(WorkGenJnlLine, WHTGroupCode) then + PostWHTGroup(WorkGenJnlLine, WHTGroupCode, WHTExpReportBuffer."WHT Base Amount (LCY)", NextTransactionNo, NextTaxEntryNo, GenJnlPostLine) + else + PostWHTSingle(WorkGenJnlLine, WHTExpReportBuffer."WHT Amount (LCY)", WHTExpReportBuffer."WHT Base Amount (LCY)", NextTransactionNo, NextTaxEntryNo, GenJnlPostLine); + until WHTExpReportBuffer.Next() = 0; + + WHTExpReportBuffer.SetRange("Document No.", EmployeeGenJnlLine."Document No."); + WHTExpReportBuffer.DeleteAll(); + end; + + local procedure PostWHTSingle(GenJnlLine: Record "Gen. Journal Line"; WHTAmount: Decimal; WHTBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line") + var + WHTPostingSetup: Record "Withholding Tax Posting Setup"; + GLEntry: Record "G/L Entry"; + WHTEmployeeCalc: Codeunit "WHT Employee Calculation"; + begin + if not WHTPostingSetup.Get(GenJnlLine."Wthldg. Tax Bus. Post. Group", GenJnlLine."Wthldg. Tax Prod. Post. Group") then begin + if (WHTAmount = 0) and (WHTBaseAmount <> 0) then + WHTEmployeeCalc.AccumulateBaseForPeriodThreshold(GenJnlLine, WHTBaseAmount); + exit; + end; + + if WHTAmount <> 0 then begin + WHTPostingSetup.TestField("Payable Wthldg. Tax Acc. Code"); + GenJnlPostLine.InitGLEntry( + GenJnlLine, GLEntry, WHTPostingSetup."Payable Wthldg. Tax Acc. Code", -WHTAmount, 0, false, true, 0); + GenJnlPostLine.InsertGLEntry(GenJnlLine, GLEntry, true); + end; + + WHTEmployeeCalc.InsertEmployeeWithholdingTaxEntry(GenJnlLine, WHTAmount, WHTBaseAmount, NextTransactionNo, NextTaxEntryNo); + + if (WHTAmount = 0) and (WHTBaseAmount <> 0) then + WHTEmployeeCalc.AccumulateBaseForPeriodThreshold(GenJnlLine, WHTBaseAmount); + end; + + local procedure PostWHTGroup(GenJnlLine: Record "Gen. Journal Line"; WHTGroupCode: Code[20]; WHTBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line") + var + WHTGroupLine: Record "Withholding Tax Group Line"; + ComponentSetup: Record "Withholding Tax Posting Setup"; + ParentSetup: Record "Withholding Tax Posting Setup"; + GLEntry: Record "G/L Entry"; + WHTEmployeeCalc: Codeunit "WHT Employee Calculation"; + CompoundBase: Decimal; + ComponentWHT: Decimal; + begin + CompoundBase := WHTBaseAmount; + + WHTGroupLine.SetCurrentKey("Group Code", "Component Order"); + WHTGroupLine.SetRange("Group Code", WHTGroupCode); + if WHTGroupLine.FindSet() then + repeat + ParentSetup.Get(GenJnlLine."Wthldg. Tax Bus. Post. Group", WHTGroupLine."Wthldg. Tax Prod. Post. Group"); + ComponentWHT := Round(WHTEmployeeCalc.CalcComponentWHT(WHTGroupLine, CompoundBase, GenJnlLine)); + if ComponentWHT <> 0 then begin + if (WHTGroupLine."Wthldg. Tax Prod. Post. Group" <> '') and + ComponentSetup.Get(GenJnlLine."Wthldg. Tax Bus. Post. Group", WHTGroupLine."Wthldg. Tax Prod. Post. Group") + then begin + GenJnlPostLine.InitGLEntry( + GenJnlLine, GLEntry, ComponentSetup."Payable Wthldg. Tax Acc. Code", + -ComponentWHT, 0, false, true, 0); + GenJnlPostLine.InsertGLEntry(GenJnlLine, GLEntry, true); + end; + + WHTEmployeeCalc.InsertEmployeeWHTComponentEntry( + GenJnlLine, WHTGroupLine, ComponentWHT, WHTBaseAmount, NextTransactionNo, NextTaxEntryNo); + end; + + if ParentSetup."Calculation Method" = ParentSetup."Calculation Method"::Compound then + CompoundBase := CompoundBase + ComponentWHT; + until WHTGroupLine.Next() = 0; + end; + + local procedure CheckWithholdingTaxDisabled(): Boolean + var + GeneralLedgerSetup: Record "General Ledger Setup"; + begin + if not GeneralLedgerSetup.Get() then + exit(true); + + exit(not GeneralLedgerSetup."Enable Withholding Tax"); + end; +} diff --git a/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpenseCategoryMgt.Codeunit.al b/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpenseCategoryMgt.Codeunit.al index a6bdf25b645..cc6e245e890 100644 --- a/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpenseCategoryMgt.Codeunit.al +++ b/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTExpenseCategoryMgt.Codeunit.al @@ -70,6 +70,15 @@ codeunit 7056 "WHT Expense Category Mgt." Result := false; end; + [EventSubscriber(ObjectType::Codeunit, Codeunit::"WHT Employee Calculation", OnAfterIsEmployeeWHTApplicable, '', false, false)] + local procedure OnAfterIsEmployeeWHTApplicable(GenJnlLine: Record "Gen. Journal Line"; var IsApplicable: Boolean) + begin + if (GenJnlLine."Wthldg. Tax Prod. Post. Group" = '') and IsExpenseCategorySingleTax(GenJnlLine) then + IsApplicable := false + else + IsApplicable := true; + end; + local procedure IsExpenseCategorySingleTax(GenJnlline: Record "Gen. Journal Line"): Boolean var ExpenseCategory: Record "Expense Category"; diff --git a/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTGeneralJournal.PageExt.al b/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTGeneralJournal.PageExt.al new file mode 100644 index 00000000000..d867ce18d5f --- /dev/null +++ b/src/Apps/W1/ExpenseWithholdingTax/app/src/WHTGeneralJournal.PageExt.al @@ -0,0 +1,22 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ +namespace Microsoft.ExpenseTaxIntegration; + +using Microsoft.Finance.GeneralLedger.Journal; + +pageextension 7058 "WHT General Journal" extends "General Journal" +{ + layout + { + addafter("Bal. Gen. Prod. Posting Group") + { + field("Expense Category"; Rec."Expense Category") + { + ApplicationArea = Basic, Suite; + ToolTip = 'Specifies the expense category for the journal line.'; + } + } + } +} diff --git a/src/Apps/W1/WithholdingTax/app/src/Employee/Transaction/WHTEmployeeCalculation.Codeunit.al b/src/Apps/W1/WithholdingTax/app/src/Employee/Transaction/WHTEmployeeCalculation.Codeunit.al index 2238cd68be6..659175ce9fb 100644 --- a/src/Apps/W1/WithholdingTax/app/src/Employee/Transaction/WHTEmployeeCalculation.Codeunit.al +++ b/src/Apps/W1/WithholdingTax/app/src/Employee/Transaction/WHTEmployeeCalculation.Codeunit.al @@ -20,6 +20,7 @@ codeunit 6790 "WHT Employee Calculation" procedure IsEmployeeWHTApplicable(GenJnlLine: Record "Gen. Journal Line"): Boolean var Employee: Record Employee; + IsApplicable: Boolean; begin if not IsWithholdingTaxEnabled() then exit(false); @@ -33,10 +34,10 @@ codeunit 6790 "WHT Employee Calculation" if GenJnlLine."Wthldg. Tax Bus. Post. Group" = '' then exit(false); - if GenJnlLine."Wthldg. Tax Prod. Post. Group" = '' then - exit(false); + IsApplicable := true; - exit(true); + OnAfterIsEmployeeWHTApplicable(GenJnlLine, Employee, IsApplicable); + exit(IsApplicable); end; procedure CalcEmployeeWHT(var GenJnlLine: Record "Gen. Journal Line"; var WHTAmount: Decimal; var WHTBaseAmount: Decimal) @@ -73,13 +74,14 @@ codeunit 6790 "WHT Employee Calculation" if LineAmount = 0 then exit; - PostingSetup.Get(GenJnlLine."Wthldg. Tax Bus. Post. Group", GenJnlLine."Wthldg. Tax Prod. Post. Group"); + HasGroup := ResolveWHTGroupComponents(GenJnlLine, WHTGroupCode); + + if not HasGroup then + PostingSetup.Get(GenJnlLine."Wthldg. Tax Bus. Post. Group", GenJnlLine."Wthldg. Tax Prod. Post. Group"); CalcBase := PostingSetup."Calculation Base"; CalcMethod := PostingSetup."Calculation Method"; - HasGroup := ResolveWHTGroupComponents(GenJnlLine, WHTGroupCode); - if CalcBase = CalcBase::Net then begin LineAmount := CalcGrossUpAmount(LineAmount, PostingSetup, WHTGroupCode, HasGroup); if GenJnlLine.Amount < 0 then @@ -583,6 +585,11 @@ codeunit 6790 "WHT Employee Calculation" ThresholdApplied := ThresholdCalculated; end; + [IntegrationEvent(false, false)] + local procedure OnAfterIsEmployeeWHTApplicable(GenJnlLine: Record "Gen. Journal Line"; Employee: Record Employee; var IsApplicable: Boolean) + begin + end; + [IntegrationEvent(false, false)] local procedure OnBeforeCalcEmployeeWHT(var GenJnlLine: Record "Gen. Journal Line"; var WHTAmount: Decimal; var WHTBaseAmount: Decimal; var IsHandled: Boolean) begin diff --git a/src/Apps/W1/WithholdingTax/app/src/Employee/Transaction/WthldgTaxEmplSubscribers.Codeunit.al b/src/Apps/W1/WithholdingTax/app/src/Employee/Transaction/WthldgTaxEmplSubscribers.Codeunit.al index 152b42dbefd..528ffb5c43a 100644 --- a/src/Apps/W1/WithholdingTax/app/src/Employee/Transaction/WthldgTaxEmplSubscribers.Codeunit.al +++ b/src/Apps/W1/WithholdingTax/app/src/Employee/Transaction/WthldgTaxEmplSubscribers.Codeunit.al @@ -8,6 +8,7 @@ using Microsoft.Finance.GeneralLedger.Journal; using Microsoft.Finance.GeneralLedger.Ledger; using Microsoft.Finance.GeneralLedger.Posting; using Microsoft.Finance.GeneralLedger.Setup; +using Microsoft.Finance.ReceivablesPayables; using Microsoft.HumanResources.Employee; using Microsoft.HumanResources.Payables; using Microsoft.WithholdingTax; @@ -84,7 +85,7 @@ codeunit 6791 "Wthldg Tax Empl. Subscribers" GenJnlPostLine.InitGLEntry( GenJnlLine, GLEntry, WHTPostingSetup."Payable Wthldg. Tax Acc. Code", - TaxAmount, 0, false, true, 0); + -TaxAmount, 0, false, true, 0); GenJnlPostLine.InsertGLEntry(GenJnlLine, GLEntry, true); end; @@ -117,7 +118,7 @@ codeunit 6791 "Wthldg Tax Empl. Subscribers" GenJnlPostLine.InitGLEntry( GenJnlLine, GLEntry, ComponentSetup."Payable Wthldg. Tax Acc. Code", - ComponentWHT, 0, false, true, 0); + -ComponentWHT, 0, false, true, 0); GenJnlPostLine.InsertGLEntry(GenJnlLine, GLEntry, true); end; @@ -148,11 +149,6 @@ codeunit 6791 "Wthldg Tax Empl. Subscribers" WHTEmployeeCalc.CalcEmployeeWHT(GenJnlLine, TaxAmount, TaxAmountLCY); WHTEmployeeCalc.IsThresholdIncludeded(false); - if (GenJnlLine.Amount > 0) then begin - TaxAmount := -TaxAmount; - TaxAmountLCY := -TaxAmountLCY; - end; - sender.InitGLEntry( GenJnlLine, GLEntry, GenJnlLine."Account No.", GenJnlLine."Amount (LCY)" + TaxAmount, GenJnlLine."Source Currency Amount" + TaxAmount, true, GenJnlLine."System-Created Entry", @@ -160,6 +156,28 @@ codeunit 6791 "Wthldg Tax Empl. Subscribers" IsHandled := true; end; + [EventSubscriber(ObjectType::Codeunit, Codeunit::"Gen. Jnl.-Post Line", OnPostEmployeeAfterTempDtldCVLedgEntryBufInit, '', false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + var + GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line"; + WHTEmployeeCalc: Codeunit "WHT Employee Calculation"; + begin + if CheckWithholdingTaxDisabled() then + exit; + + if not WHTEmployeeCalc.IsEmployeeWHTApplicable(GenJnlLine) then + exit; + + if GenJnlLine.Amount > 0 then + exit; + + TempDtldCVLedgEntryBuf.Amount := TempDtldCVLedgEntryBuf.Amount + GenJnlPostLine.ExchangeAmtLCYToFCY2(TaxAmount); + TempDtldCVLedgEntryBuf."Amount (LCY)" := TempDtldCVLedgEntryBuf."Amount (LCY)" + TaxAmount; + if GenJnlLine."WHT Vendor Exchange Rate (ACY)" <> 0 then + TempDtldCVLedgEntryBuf."Additional-Currency Amount" := GenJnlLine."WHT Amount Including VAT (ACY)" - GenJnlLine."WHT Interest Amount" + else + TempDtldCVLedgEntryBuf."Additional-Currency Amount" := GenJnlLine.Amount; + end; local procedure CalcSourceCurrVATBaseAmount(var GenJnlLine: Record "Gen. Journal Line"; WithholdingAmountLCY: Decimal; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line"): Decimal var diff --git a/src/Layers/APAC/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/APAC/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index a2f67418bc9..bed09d94eef 100644 --- a/src/Layers/APAC/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/APAC/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1637,6 +1637,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -13656,4 +13658,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/BE/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/BE/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index be02d4b70d8..5ba261c54ed 100644 --- a/src/Layers/BE/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/BE/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1551,6 +1551,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -11257,4 +11259,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/CH/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/CH/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index 783a8e0c532..e0822702d20 100644 --- a/src/Layers/CH/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/CH/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1546,6 +1546,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -11279,4 +11281,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/ES/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/ES/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index 01754337de9..df8ec345681 100644 --- a/src/Layers/ES/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/ES/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1666,6 +1666,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -13044,4 +13046,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/FI/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/FI/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index 0363b151994..83215716dbc 100644 --- a/src/Layers/FI/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/FI/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1536,6 +1536,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -11280,4 +11282,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/FR/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/FR/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index 11b607b5349..4f5ef3f0f97 100644 --- a/src/Layers/FR/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/FR/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1535,6 +1535,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -11583,4 +11585,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/IT/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/IT/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index 6a460f13990..e073965776d 100644 --- a/src/Layers/IT/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/IT/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1860,6 +1860,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -12348,4 +12350,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/NA/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/NA/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index ca0847da745..a8007a6e486 100644 --- a/src/Layers/NA/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/NA/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1609,6 +1609,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -11706,4 +11708,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/NO/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/NO/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index 29b0a108ffa..ed5e510fd77 100644 --- a/src/Layers/NO/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/NO/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1545,6 +1545,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -11318,4 +11320,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/RU/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/RU/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index 780850855a0..dbffb1ee4a4 100644 --- a/src/Layers/RU/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/RU/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1874,6 +1874,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -13749,4 +13751,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } \ No newline at end of file diff --git a/src/Layers/W1/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al b/src/Layers/W1/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al index ee49175df46..7322e1711a7 100644 --- a/src/Layers/W1/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al +++ b/src/Layers/W1/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostLine.Codeunit.al @@ -1522,6 +1522,8 @@ codeunit 12 "Gen. Jnl.-Post Line" TempDtldCVLedgEntryBuf.Init(); TempDtldCVLedgEntryBuf.CopyFromGenJnlLine(GenJnlLine); TempDtldCVLedgEntryBuf."CV Ledger Entry No." := EmployeeLedgerEntry."Entry No."; + OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(GenJnlLine, TempDtldCVLedgEntryBuf, TaxAmount, TaxBaseAmount); + CVLedgEntryBuf.CopyFromEmplLedgEntry(EmployeeLedgerEntry); TempDtldCVLedgEntryBuf.InsertDtldCVLedgEntry(TempDtldCVLedgEntryBuf, CVLedgEntryBuf, true); CVLedgEntryBuf.Open := CVLedgEntryBuf."Remaining Amount" <> 0; @@ -11215,4 +11217,9 @@ codeunit 12 "Gen. Jnl.-Post Line" local procedure OnAfterPostEmployee(GenJnlLine: Record "Gen. Journal Line"; EmployeeLedgerEntry: Record "Employee Ledger Entry"; TaxAmount: Decimal; TaxBaseAmount: Decimal; NextTransactionNo: Integer; var NextTaxEntryNo: Integer) begin end; + + [IntegrationEvent(false, false)] + local procedure OnPostEmployeeAfterTempDtldCVLedgEntryBufInit(var GenJnlLine: Record "Gen. Journal Line"; var TempDtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer" temporary; TaxAmount: Decimal; TaxBaseAmount: Decimal) + begin + end; } diff --git a/src/rulesets/base.ruleset.json b/src/rulesets/base.ruleset.json index 9fc44ea19bb..c1f93b31ad4 100644 --- a/src/rulesets/base.ruleset.json +++ b/src/rulesets/base.ruleset.json @@ -491,10 +491,6 @@ { "id": "AA0241", "action": "None" - }, - { - "id": "AS0054", - "action": "Warning" } ] } \ No newline at end of file