Report 20 "Calc. and Post VAT Settlement"
Base Application · Microsoft.Finance.VAT.Reporting
Across versions
- BC23-24present
- BC251 procedures removed
- BC26unchanged
- BC273 events added, 1 events removed
- BC28unchanged
- BC291 procedures added
- BC30unchanged
Neighbourhood 8 connected objects and pages
Base Application · Microsoft.Finance.VAT.Reporting · captioned “Calculate and Post VAT Settlement” · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| Caption | Calculate and Post VAT Settlement |
| UsageCategory | ReportsAndAnalysis |
| ApplicationArea | Basic, Suite |
| Permissions | TableData “VAT Entry” = rimd |
Events published
OnAfterPreReport(var VATEntry: Record "VAT Entry")(integration): Integration event raised after VAT settlement report preparation is complete. Enables custom validation and data preparation before VAT settlement processing.OnAfterPostReport()(integration): Integration event raised after VAT settlement report processing is complete. Enables custom cleanup operations and finalization logic after settlement posting.OnBeforeCheckPrintVATEntries(var VATEntry: Record "VAT Entry")(integration): Integration event raised before checking VAT entries for print output. Enables custom filtering and validation of VAT entries included in settlement report.OnBeforePostGenJnlLineReverseChargeVAT(var GenJnlLine: Record "Gen. Journal Line"; var VATEntry: Record "VAT Entry"; var VATAmount: Decimal; var VATAmountAddCurr: Decimal)(integration): Integration event raised before posting general journal line for reverse charge VAT settlement. Enables custom amount calculations and journal line modifications for reverse charge scenarios.OnBeforePreReport(var VATPostingSetup: Record "VAT Posting Setup"; PostSettlement: Boolean; GLAccountSettle: Record "G/L Account"; var DocNo: Code[20])+ BC27 − BC27 (integration): Integration event raised before VAT settlement report execution begins. Enables custom setup validation and parameter modification before settlement processing starts.OnBeforeCloseVATEntriesOnPostSettlement(var VATEntry: Record "VAT Entry"; NextVATEntryNo: Integer; var IsHandled: Boolean)(integration): Integration event raised before closing VAT entries during settlement posting. Enables custom validation and modification of VAT entries before they are marked as closed.OnAfterIncrementGenPostingType(OldGenPostingType: Enum "General Posting Type"; var NewGenPostingType: Enum "General Posting Type")(integration): Integration event raised after incrementing general posting type during VAT settlement processing. Enables custom logic for posting type progression and settlement sequence control.OnClosingGLAndVATEntryOnAfterGetRecordOnAfterSetVATEntryFilters(VATPostingSetup: Record "VAT Posting Setup"; var VATEntry: Record "VAT Entry"; var VATEntry2: Record "VAT Entry")(integration): Integration event raised after setting VAT entry filters during settlement processing. Enables custom filter modifications and VAT entry selection logic for closing operations.OnCloseVATEntriesOnAfterPostGenJnlLineReverseChargeVATSales(var VATEntry: Record "VAT Entry"; GenJnlLine: Record "Gen. Journal Line"; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line"; VATPostingSetup: Record "VAT Posting Setup"; PostSettlement: Boolean; var ReversingEntry: Boolean; DocNo: Code[20]; PostingDate: Date; var GenJnlLine2: Record "Gen. Journal Line")(integration): Integration event raised after posting general journal line for reverse charge VAT sales during settlement. Enables custom processing and validation after reverse charge VAT entries are posted.OnClosingGLAndVATEntryOnAfterGetRecordOnNormalVATOnAfterVATEntrySetFilter(VATPostingSetup: Record "VAT Posting Setup"; VATType: enum "General Posting Type"; var VATEntry: Record "VAT Entry"; FindFirstEntry: Boolean)(integration): Integration event raised after setting VAT entry filters for normal VAT processing during settlement. Enables custom filter adjustments and VAT entry selection logic for normal VAT scenarios.OnClosingGLAndVATEntryOnAfterGetRecordOnSalesTaxOnAfterVATEntrySetFilter(VATPostingSetup: Record "VAT Posting Setup"; VATType: enum "General Posting Type"; var VATEntry: Record "VAT Entry"; FindFirstEntry: Boolean)(integration): Integration event raised after setting VAT entry filters for sales tax processing during settlement. Enables custom filter adjustments and VAT entry selection logic for sales tax scenarios.OnPostGenJnlLineOnBeforeGenJnlPostLineRun(var GenJnlLine: Record "Gen. Journal Line")(integration): Integration event raised before running general journal posting line during VAT settlement. Enables custom validation and modification of journal lines before posting to General Ledger.OnAfterCopyAmounts(var GenJournalLine: Record "Gen. Journal Line"; var VATEntry: Record "VAT Entry")(integration): Integration event raised after copying amounts from VAT entry to general journal line. Enables custom amount calculations and journal line adjustments during settlement processing.OnVATPostingSetupOnAfterOnPostDataItem(GenJnlLine: Record "Gen. Journal Line"; PostSettlement: Boolean)+ BC27 (integration): Integration event raised after processing VAT posting setup data item during settlement. Enables custom finalization logic and data validation after VAT posting setup processing.OnVATPostingSetupOnPostDataItemOnBeforePostSettlement(var GenJnlLine: Record "Gen. Journal Line")+ BC27 (integration): Integration event raised before posting settlement entry during VAT posting setup processing. Enables custom validation and modification of journal lines before settlement posting.
Procedures
InitializeRequest(NewStartDate: Date; NewEndDate: Date; NewPostingDate: Date; NewDocNo: Code[20]; NewSettlementAcc: Code[20]; ShowVATEntries: Boolean; Post: Boolean)− BC25: InitializeRequest with “VAT Date” default to “Posting Date”InitializeRequest(NewStartDate: Date; NewEndDate: Date; NewPostingDate: Date; NewVATDate: Date; NewDocNo: Code[20]; NewSettlementAcc: Code[20]; ShowVATEntries: Boolean; Post: Boolean)− BC25: InitializeRequest with specified “VAT Date”InitializeRequest2(NewUseAmtsInAddCurr: Boolean): Initializes the report to use amounts in additional reporting currency. Sets flag for currency conversion in VAT settlement calculations.SetInitialized(NewInitialized: Boolean): Sets the initialization status for the VAT settlement report. Controls whether the report parameters have been properly configured.
Plus 11 local procedures.
Triggers
OnPostReport, OnPreReport, OnInitReport
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 12 “Gen. Jnl.-Post Line” (5 calls:
GetSettlementVATEntryNo → GetNextVATEntryNo,OnPostReport → IsGLEntryInconsistent,OnPostReport → ShowInconsistentEntries, …) - Codeunit 408 “DimensionManagement” (2 calls:
PostGenJnlLine → AddDimSource,PostGenJnlLine → GetRecDefaultDimID) - Codeunit 27 “Confirm Management” (1 call:
OnPreReport → GetResponseOrDefault) - Codeunit 799 “VAT Reporting Date Mgt” (1 call:
OnInitReport → IsVATDateEnabled)
Recent changes
- 2026-09-21 #11493 [29.X]-VAT Settlement G/L Entries Do Not Populate Source Currency Amount and Source VAT Currency Amount After Running Calculate and Post VAT Settlement (releases/29.x, BC29, fix)
- 2026-09-15 [#11186 [Master]-]VAT Settlement G/L Entries Do Not Populate Source Currency Amount and Source VAT Currency Amount After Running Calculate and Post VAT Settlement](../../changes/bcapps/11186.md) (main, BC30, fix)
Countries that replace it
Documented on Microsoft Learn
- Value Added Tax management overview
- Built-in finance reports in Business Central
- Built-in VAT reports in Business Central
- Calculate and Post Tax Settlement (report)
Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "report", object_name: "Calc. and Post VAT Settlement"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.