---
id: object/codeunit/6200
type: object
title: Codeunit 6200 "Non-Deductible VAT"
summary: Codeunit 6200 "Non-Deductible VAT" in Base Application (Microsoft.Finance.VAT.Calculation). 71 public procedures, 25 events. Present since at least BC23, still in BC30, changed in BC25-26, BC28.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "28"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 1bf346232c80668245c6339875bf026c3bba59033fe46633edc14ef87310e995
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/VAT/Calculation/NonDeductibleVAT.Codeunit.al
    title: src/Layers/W1/BaseApp/Finance/VAT/Calculation/NonDeductibleVAT.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 6200
name: Non-Deductible VAT
namespace: Microsoft.Finance.VAT.Calculation
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "25"
  - "26"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 96
  events: 25
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 1
  called_by: 25
  implements: 0
---

# Codeunit 6200 "Non-Deductible VAT"

> Codeunit 6200 "Non-Deductible VAT" in Base Application (Microsoft.Finance.VAT.Calculation). 71 public procedures, 25 events. Present since at least BC23, still in BC30, changed in BC25-26, BC28.

Base Application · Microsoft.Finance.VAT.Calculation · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/VAT/Calculation/NonDeductibleVAT.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Access | Public |

## Events published

- `OnBeforeGetNonDeductibleVATPctForPurchLine(var NonDeductibleVATPct: Decimal; PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration): Integration event raised before determining non-deductible VAT percentage for purchase line. Enables custom logic for non-deductible VAT percentage calculation.
- `OnBeforeGetNonDedVATPctForGenJnlLine(var NonDeductibleVATPct: Decimal; GenJournalLine: Record "Gen. Journal Line"; var IsHandled: Boolean)` (integration): Integration event raised before determining non-deductible VAT percentage for general journal line. Enables custom logic for non-deductible VAT percentage calculation in journal processing.
- `OnBeforeGetBalNonDedVATPctForGenJnlLine(var NonDeductibleVATPct: Decimal; GenJournalLine: Record "Gen. Journal Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeGetNonDeductibleVATPctForDeferrals(var NonDeductibleVATPct: Decimal; VATBusPostGroupCode: Code[20]; VATProdPostGroupCode: Code[20]; DeferralDocType: Enum "Deferral Document Type"; var IsHandled: Boolean)` (integration)
- `OnBeforeCalcNonDedAmountsInGenJnlLine(var GenJournalLine: Record "Gen. Journal Line"; Currency: Record Currency; var IsHandled: Boolean)` (integration)
- `OnBeforeCalcBalNonDedAmountsInGenJnlLine(var GenJournalLine: Record "Gen. Journal Line"; Currency: Record Currency; var IsHandled: Boolean)` (integration)
- `OnBeforeGetNonDeductibleVATPct(var NonDeductibleVATPct: Decimal; VATPostingSetup: Record "VAT Posting Setup"; GeneralPostingType: Enum "General Posting Type"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateNonDeductibleAmountsWithRoundingInPurchLine(var PurchaseLine: Record "Purchase Line"; var TempVATAmountLineRemainder: Record "VAT Amount Line" temporary; Currency: Record Currency; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateNonDeductibleAmountsInPurchLine(var PurchaseLine: Record "Purchase Line"; Currency: Record Currency; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateNonDeductibleAmountsWithFactorInPurchLine(var PurchaseLine: Record "Purchase Line"; Part: Decimal; Total: Decimal; AmountRoundingPrecision: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeDivideNonDeductibleVATInPurchaseLine(var PurchaseLine: Record "Purchase Line"; var VATAmountLineRemainder: Record "VAT Amount Line"; VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; Part: Decimal; Total: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateVATAmountInVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateNonDeductibleVATInVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateNonDeductibleAmountsInVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateNonDeductibleAmountsWithDiffInVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; var IsHandled: Boolean)` (integration)
- `OnBeforeAdjustVATAmountsFromGenJnlLine(var VATAmount: Decimal; var BaseAmount: Decimal; var VATAmountACY: Decimal; var BaseAmountACY: Decimal; var GenJournalLine: Record "Gen. Journal Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeSetNonDedVATAmountInPurchLine(var PurchaseLine: Record "Purchase Line"; NonDeductibleVATAmount: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeSetNonDedVATAmountDiffInPurchLine(var PurchaseLine: Record "Purchase Line"; var VATAmountLineRemainder: Record "VAT Amount Line"; var VATDifference: Decimal; VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; Part: Decimal; Total: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeGetNonDedVATAmountFromVATAmountLine(var NonDeductibleVATAmount: Decimal; var VATAmountLineRemainder: Record "VAT Amount Line"; VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; Part: Decimal; Total: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeAddNonDedAmountsOfPurchLineToVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; var VATAmountLineRemainder: Record "VAT Amount Line"; PurchaseLine: Record "Purchase Line"; Currency: Record Currency; Part: Decimal; Total: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeCopyNonDedVATFromPurchInvLineToVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; PurchInvLine: Record "Purch. Inv. Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCopyNonDedVATFromPurchCrMemoLineToVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; PurchCrMemoLine: Record "Purch. Cr. Memo Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckVATPostingSetupChangeIsAllowed(VATPostingSetup: Record "VAT Posting Setup"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckNonDeductibleVATPctIsAllowed(PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnAfterCalcRevChargeVATAmountInPurchLine(PurchaseLine: Record "Purchase Line"; var VATAmount: Decimal)` (integration)

## Procedures

- `IsNonDeductibleVATEnabled(): Boolean`: Returns true if the Non-Deductible VAT functionality is enabled
- `ShowNonDeductibleVATInLines(): Boolean`: Returns true if Non-Deductible VAT fields must be shown in document lines
- `GetNonDeductibleVATAmount(PurchaseLine: Record "Purchase Line"): Decimal`: Returns the non-deductible VAT amount of the current purchase line
- `GetNonDeductibleVATPct(VATBusPostGroupCode: Code[20]; VATProdPostGroupCode: Code[20]; GeneralPostingType: Enum "General Posting Type")`: Returns the non-deductible VAT percent for the combination of a VAT Business group, VAT Product group and a certain posting type
- `GetNonDeductibleVATPct(VATPostingSetup: Record "VAT Posting Setup"): Decimal`: Returns the non-deductible VAT percent of the current VAT posting setup
- `GetNonDeductibleVATAmount(GenJournalLine: Record "Gen. Journal Line"): Decimal`: Returns the non-deductible VAT amount of the current general journal line
- `GetNonDeductibleVATPct(VATBusPostGroupCode: Code[20]; VATProdPostGroupCode: Code[20]; DeferralDocType: Enum "Deferral Document Type"): Decimal`: Returns the non-deductible VAT percent for deferrals
- `GetNonDeductibleVATAccForDeferrals(DeferralDocType: Enum "Deferral Document Type"; PostingGLAccountNo: Code[20]; VATPostingSetup: Record "VAT Posting Setup"): Code[20]`: Returns the Non-Deductible VAT account for deferrals
- `GetNonDeductibleVATAmountForItemCost(PurchaseLine: Record "Purchase Line"): Decimal`: Get the Non-Deductible VAT amount to add to the item cost
- `GetNonDeductibleAmount(Amount: Decimal; NonDeductiblePercent: Decimal; AmountRoundingPrecision: Decimal; var Rounding: Decimal): Decimal`: Get Non-Deductible VAT amount
- `GetNonDeductibleVATBaseBothCurrencies(var NonDedVATBase: Decimal; var NonDedVATBaseACY: Decimal; VATEntry: Record "VAT Entry")`: Returns the non-deductible VAT base from the VAT entry in both LCY and ACY
- `SetNonDeductiblePct(var PurchaseLine: Record "Purchase Line")`: Sets the non-deductible VAT percent in the purchase line
- `SetNonDedVATAmountInPurchLine(var PurchaseLine: Record "Purchase Line"; NonDeductibleVATAmount: Decimal)`: Set the Non-Deductible VAT amount in the purchase line
- `SetNonDedVATAmountDiffInPurchLine(var PurchaseLine: Record "Purchase Line"; var VATAmountLineRemainder: Record "VAT Amount Line"; var VATDifference: Decimal; VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; Part: Decimal; Total: Decimal)`: Set the Non-Deductible VAT difference of the VAT amount line to the purchase line with factor multiplication
- `SetNonDeductibleVATAmount(var VATEntry: Record "VAT Entry"; NonDedVATAmount: Decimal; NonDedVATAmountACY: Decimal)`: Set Non-Deductible VAT base in the VAT Entry
- `SetNonDeductibleVATBase(var VATEntry: Record "VAT Entry"; NonDedVATBase: Decimal; NonDedVATBaseACY: Decimal)`: Set Non-Deductible VAT amount in the VAT Entry
- `SetNonDeductibleVAT(var InvoicePostingBuffer: Record "Invoice Posting Buffer"; TotalNonDedVATBase: Decimal; TotalNonDedVATAmount: Decimal; TotalNonDedVATBaseACY: Decimal; TotalNonDedVATAmountACY: Decimal; TotalNonDedVATDiff: Decimal)`: Set Non-Deductible VAT amounts in the invoice posting buffer
- `SetNonDedVATInVATEntry(var VATEntry: Record "VAT Entry"; NonDedBase: Decimal; NonDedVATAmount: Decimal; SrcCurrNonDedBaseAmount: Decimal; SrcCurrNonDedVATAmount: Decimal; NonDedVATDiff: Decimal; NonDedVATDiffACY: Decimal)`: Set Non-Deductible VAT amounts in the VAT entry
- `Init(var NonDedVATBase: Decimal; var NonDedVATAmount: Decimal; var NonDedVATBaseACY: Decimal; var NonDedVATAmountACY: Decimal; var NonDedVATDiff: Decimal; PurchaseLine: Record "Purchase Line"; PurchaseLineACY: Record "Purchase Line")`: Initialize the Non-Deductible VAT amount from purchase line
- `InitNonDeductibleVATDiff(var PurchaseLine: Record "Purchase Line")`: Clears Non-Deductible VAT difference in the purchase line
- `Update(var PurchaseLine: Record "Purchase Line"; var TempVATAmountLineRemainder: Record "VAT Amount Line" temporary; Currency: Record Currency)`: Updates the non-deductible VAT base and amount in the purchase line with rounding
- `Update(var PurchaseLine: Record "Purchase Line"; Currency: Record Currency)`: Updates the non-deductible VAT base and amount in the purchase line
- `Update(var PurchaseLine: Record "Purchase Line"; Part: Decimal; Total: Decimal; AmountRoundingPrecision: Decimal)`: Update the non-deductible VAT base and amount in the purchase line with factor multiplication
- `Update(var TotalNonDedVATBase: Decimal; var TotalNonDedVATAmount: Decimal; var TotalNonDedVATBaseACY: Decimal; var TotalNonDedVATAmountACY: Decimal; var TotalNonDedVATDiff: Decimal; InvoicePostingBuffer: Record "Invoice Posting Buffer")`: Updates total Non-Deductible VAT amounts in the invoice posting buffer
- `Update(var VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency)`: Update Non-Deductible VAT amounts in the VAT amount line
- `Update(var InvoicePostingBuffer: Record "Invoice Posting Buffer"; var RemainderInvoicePostingBuffer: Record "Invoice Posting Buffer"; AmountRoundingPrecision: Decimal)`: Update Non-Deductible VAT amounts in the invoice posting buffer with rounding
- `DivideNonDeductibleVATInPurchaseLine(var PurchaseLine: Record "Purchase Line"; var VATAmountLineRemainder: Record "VAT Amount Line"; VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; Part: Decimal; Total: Decimal)`: Divide Non-Deductible VAT amounts of VAT amount line for the purchase line
- `ValidateVATAmountInVATAmountLine(var VATAmountLine: Record "VAT Amount Line")`: Update Non-Deductible VAT amounts on VAT amount validation in the VAT amount line
- `ValidateNonDeductibleVATInVATAmountLine(var VATAmountLine: Record "VAT Amount Line")`: Update Non-Deductible VAT amounts on Non-Deductible VAT amount validation in the VAT amount line
- `UpdateNonDeductibleAmountsWithDiffInVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency)`: Update Non-Deductible VAT amounts in the VAT amount line with VAT difference
- `GetNonDedVATAmountFromVATAmountLine(var VATAmountLineRemainder: Record "VAT Amount Line"; VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; Part: Decimal; Total: Decimal): Decimal`: Get Non-Deductible VAT Amount from VAT amount line with factor multiplication
- `AddNonDedAmountsOfPurchLineToVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; var VATAmountLineRemainder: Record "VAT Amount Line"; PurchaseLine: Record "Purchase Line"; Currency: Record Currency; Part: Decimal; Total: Decimal)`: Adds the Non-Deductible VAT amounts to the VAT amount line from the purchase line with factor multiplication
- `CopyNonDedVATFromPurchInvLineToVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; PurchInvLine: Record "Purch. Inv. Line")`: Copy Non-Deductible VAT amounts from the purchase invoice line to VAT amount line
- `CopyNonDedVATFromPurchCrMemoLineToVATAmountLine(var VATAmountLine: Record "VAT Amount Line"; PurchCrMemoLine: Record "Purch. Cr. Memo Line")`: Copy Non-Deductible VAT amounts from the purchase credit memo line to VAT amount line
- `CopyNonDedVATAmountFromGenJnlLineToGLEntry(var GLEntry: Record "G/L Entry"; GenJournalLine: Record "Gen. Journal Line")`: Copy Non-Deductible VAT amount from general journal line to G/L entry
- `CopyNonDedVATFromGenJnlLineToFALedgEntry(var FALedgEntry: Record "FA Ledger Entry"; GenJnlLine: Record "Gen. Journal Line")`: Copy Non-Deductible VAT from general journal line to FA ledger Entry
- `CopyNonDedVATFromGenJnlLineToJobJnlLine(var JobJnlLine: Record "Job Journal Line"; GenJnlLine: Record "Gen. Journal Line")`: Copies non-deductible VAT information from general journal line to job journal line for job-related transactions.
- `CheckPrepmtWithNonDeductubleVATInPurchaseLine(PurchaseLine: Record "Purchase Line")`: Throws an error if purchase line contains prepayment and Non-Deductible VAT
- `CheckPrepmtVATPostingSetup(VATPostingSetup: Record "VAT Posting Setup")`: Throws the error about prepayment not compatible with Non-Deductible VAT if VAT Posting Setup contains Non-Deductible VAT
- `CheckUnrealizedVATWithNonDeductibleVATInVATPostingSetup(VATPostingSetup: Record "VAT Posting Setup")`: Throws an error if current VAT posting setup contains unrealized VAT and Non-Deductible VAT
- `CheckVATPostingSetupChangeIsAllowed(VATPostingSetup: Record "VAT Posting Setup")`: Check that a certain change of the VAT Posting Setup is allowed
- `CheckNonDeductibleVATPctIsAllowed(PurchaseLine: Record "Purchase Line")`: Check that a Non-Deductible VAT % is allowed in the purchase line
- `CheckNonDeductibleVATAmountDiff(var TempVATAmountLine: Record "VAT Amount Line" temporary; xTempVATAmountLine: Record "VAT Amount Line" temporary; AllowVATDifference: Boolean; Currency: Record Currency)`: Throws an error if the total Non-Deductible VAT difference is not allowed
- `DeductNonDedValuesFromVATAmountLine(var TotalVATAmountLine: Record "VAT Amount Line"; VATAmountLineDeduct: Record "VAT Amount Line")`: Deduct the Non-Deductible VAT amounts from the VAT amount line
- `Reverse(var PurchaseLine: Record "Purchase Line")`: Reverse the Non-Deductible VAT base and amount in the purchase line
- `Reverse(var InvoicePostingBuffer: Record "Invoice Posting Buffer")`: Reverse the Non-Deductible VAT base and amount in the invoice posting buffer
- `Reverse(var GLEntry: Record "G/L Entry"; GLEntryToReverse: Record "G/L Entry")`: Reverse Non-Deductible amount in G/L Entry
- `Reverse(var VATEntry: Record "VAT Entry")`: Reverse Non-Deductible amount in the VAT Entry
- `Increment(var TotalVATAmountLine: Record "VAT Amount Line"; VATAmountLine: Record "VAT Amount Line")`: Increment the Non-Deductible VAT amounts in the VAT amount line
- `Increment(var TotalPurchaseLine: Record "Purchase Line"; PurchaseLine: Record "Purchase Line")`: Increment Non-Deductible VAT amounts in the purchase line
- `Increment(var TotalInvoicePostingBuffer: Record "Invoice Posting Buffer"; InvoicePostingBuffer: Record "Invoice Posting Buffer")`: Increment Non-Deductible VAT amounts in the invoice posting buffer
- `IsNonDedFALedgEntryInFirstAcquisition(FALedgEntry: Record "FA Ledger Entry"): Boolean`: Identifies if the current FA ledger entry is a Non-Deductible VAT entry in the first acquisition
- `RoundNonDeductibleVAT(PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; TotalPurchaseLine: Record "Purchase Line"; TotalPurchaseLineLCY: Record "Purchase Line")`: Round Non-Deductible VAT amounts after exchanging to the local currency
- `ClearNonDeductibleVAT(var PurchaseLine: Record "Purchase Line")`: Clear Non-Deductible VAT in the purchase line
- `ClearNonDeductibleVAT(var InvoicePostingBuffer: Record "Invoice Posting Buffer")`: Clear Non-Deductible VAT in the invoice posting buffer
- `ClearNonDedVATACYInVATEntry(var VATEntry: Record "VAT Entry")`: Clear Non-Deductible VAT amounts in additional currency in VAT entry
- `ValidateNonDedVATPctInGenJnlLine(var GenJournalLine: Record "Gen. Journal Line")`: Validate the Non-Deductible VAT percent in the general journal line
- `ValidateBalNonDedVATPctInGenJnlLine(var GenJournalLine: Record "Gen. Journal Line")`: Validate the Non-Deductible VAT percent in the general journal line for the balance account
- `Calculate(var GenJournalLine: Record "Gen. Journal Line"; Currency: Record Currency)`: Calculate Non-Deductible VAT amounts in the general journal line
- `CalculateBalAcc(var GenJournalLine: Record "Gen. Journal Line"; Currency: Record Currency)`: Calculate Non-Deductible VAT amounts in the general journal line for the balance account
- `Calculate(var InvoicePostingBuffer: Record "Invoice Posting Buffer")`: Calculate Non-Deductible VAT amounts in the invoice posting buffer
- `Calculate(var NonDeductibleBaseAmount: Decimal; var NonDeductibleVATAmount: Decimal; var NonDeductibleVATAmtPerUnit: Decimal; var NonDeductibleVATAmtPerUnitLCY: Decimal; var NDVATAmountRounding: Decimal; var NDVATBaseRounding: Decimal; PurchHeader: Record "Purchase Header"; PurchaseLine: Record "Purchase Line")`: Calculate Non-Deductible VAT per unit
- `Copy(var InvoicePostingBuffer: Record "Invoice Posting Buffer"; PurchaseLine: Record "Purchase Line")`: Copy Non-Deductible VAT from the purchase line to the invoice posting buffer
- `Copy(var VATEntry: Record "VAT Entry"; GenJournalLine: Record "Gen. Journal Line")`: Copy Non-Deductible VAT from the general journal line to the VAT Entry
- `Copy(var GenJournalLine: Record "Gen. Journal Line"; InvoicePostingBuffer: Record "Invoice Posting Buffer")`: Copy Non-Deductible VAT from the invoice posting buffer to the general journal line
- `ExchangeAccGLJournalLine(var GenJournalLine: Record "Gen. Journal Line"; CopiedGenJournalLine: Record "Gen. Journal Line")`: Exchange Non-Deductible VAT fields with the balance side in general journaal line
- `AdjustVATAmountsFromGenJnlLine(var VATAmount: Decimal; var BaseAmount: Decimal; var VATAmountACY: Decimal; var BaseAmountACY: Decimal; var GenJournalLine: Record "Gen. Journal Line")`: Adjust VAT amounts with Non-Deductible VAT from general journal line
- `AdjustRoundingForInvoicePostingBufferUpdate(var RoundingInvoicePostingBuffer: Record "Invoice Posting Buffer"; var CurrInvoicePostingBuffer: Record "Invoice Posting Buffer")`: Adjust rounding for invoice posting buffer
- `UseNonDeductibleVATAmountForFixedAssetCost(): Boolean`: Returns true if the Non-Deductible VAT amount must be added to the fixed asset cost
- `UseNonDeductibleVATAmountForJobCost(): Boolean`: Returns true if the Non-Deductible VAT amount must be added to the job cost
- `ApplyRoundingForFinalPostingFromInvoicePostingBuffer(var RoundingInvoicePostingBuffer: Record "Invoice Posting Buffer"; var CurrInvoicePostingBuffer: Record "Invoice Posting Buffer")`: Apply rounding for the final posting from the invoice posting buffer

## 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 6201 "Non-Ded. VAT Impl."](../codeunit/6201.md) (53 calls: `AddNonDedAmountsOfPurchLineToVATAmountLine → AddNonDedAmountsOfPurchLineToVATAmountLine`, `AdjustRoundingForInvoicePostingBufferUpdate → AdjustRoundingForInvoicePostingBufferUpdate`, `AdjustVATAmountsFromGenJnlLine → AdjustVATAmountsFromGenJnlLine`, …)

## Called by

- [Codeunit 6201 "Non-Ded. VAT Impl."](../codeunit/6201.md) (18 calls: `AddNonDedAmountsOfPurchLineToVATAmountLine → OnBeforeAddNonDedAmountsOfPurchLineToVATAmountLine`, `AdjustVATAmountsFromGenJnlLine → OnBeforeAdjustVATAmountsFromGenJnlLine`, `CalcRevChargeVATAmountInPurchLine → OnAfterCalcRevChargeVATAmountInPurchLine`, …)
- [Table 39 "Purchase Line"](../table/39.md) (15 calls: `CalcInvDiscToInvoice → InitNonDeductibleVATDiff`, `CalcVATAmountLines → AddNonDedAmountsOfPurchLineToVATAmountLine`, `InitQtyToInvoice → InitNonDeductibleVATDiff`, …)
- [Codeunit 12 "Gen. Jnl.-Post Line"](../codeunit/12.md) (14 calls: `CalcPmtDiscVATBases → GetNonDeductibleVATBaseBothCurrencies`, `CreateReverseChargeVATGLEntries → IsNonDeductibleVATEnabled`, `InitVAT → CopyNonDedVATAmountFromGenJnlLineToGLEntry`, …)
- [Codeunit 816 "Purch. Post Invoice"](../codeunit/816.md) (7 calls: `CalculateVATAmounts → Update`, `InitTotalAmounts → Init`, `PrepareInvoicePostingBuffer → ClearNonDeductibleVAT`, …)
- [Codeunit 90 "Purch.-Post"](../codeunit/90.md) (6 calls: `CalcItemJnlLineToBeInvoicedAmounts → GetNonDeductibleVATAmountForItemCost`, `DivideAmount → DivideNonDeductibleVATInPurchaseLine`, `IncrAmount → Increment`, …)
- [Table 290 "VAT Amount Line"](../table/290.md) (6 calls: `CalcVATFields → Update`, `CopyFromPurchCrMemoLine → CopyNonDedVATFromPurchCrMemoLineToVATAmountLine`, `CopyFromPurchInvLine → CopyNonDedVATFromPurchInvLineToVATAmountLine`, …)
- [Table 55 "Invoice Posting Buffer"](../table/55.md) (6 calls: `AdjustRoundingForUpdate → AdjustRoundingForInvoicePostingBufferUpdate`, `ApplyRoundingForFinalPosting → ApplyRoundingForFinalPostingFromInvoicePostingBuffer`, `CalcDiscount → Calculate`, …)
- [Codeunit 1004 "Job Transfer Line"](../codeunit/1004.md) (3 calls: `FromGenJnlLineToJnlLine → CopyNonDedVATFromGenJnlLineToJobJnlLine`, `FromPurchaseLineToJnlLine → Calculate`, `FromPurchaseLineToJnlLine → UseNonDeductibleVATAmountForJobCost`)
- [Codeunit 17 "Gen. Jnl.-Post Reverse"](../codeunit/17.md) (2 calls: `ReverseGLEntry → Reverse`, `ReverseVAT → Reverse`)
- [Codeunit 366 "Exchange Acc. G/L Journal Line"](../codeunit/366.md) (1 call: `OnRun → ExchangeAccGLJournalLine`)
- [Codeunit 5604 "Make FA Ledger Entry"](../codeunit/5604.md) (1 call: `CopyFromGenJnlLine → CopyNonDedVATFromGenJnlLineToFALedgEntry`)
- [Codeunit 5632 "FA Jnl.-Post Line"](../codeunit/5632.md) (1 call: `PostDeprUntilDate → IsNonDedFALedgEntryInFirstAcquisition`)
- [Codeunit 815 "Sales Post Invoice"](../codeunit/815.md) (1 call: `PrepareInvoicePostingBuffer → ClearNonDeductibleVAT`)
- [Page 139 "Posted Purch. Invoice Subform"](../page/139.md) (1 call: `OnOpenPage → ShowNonDeductibleVATInLines`)
- [Page 1575 "VAT Entries Preview Flat Subf."](../page/1575.md) (1 call: `OnOpenPage → IsNonDeductibleVATEnabled`)
- [Page 315 "VAT Entries"](../page/315.md) (1 call: `OnOpenPage → IsNonDeductibleVATEnabled`)
- [Page 472 "VAT Posting Setup"](../page/472.md) (1 call: `OnOpenPage → IsNonDeductibleVATEnabled`)
- [Page 473 "VAT Posting Setup Card"](../page/473.md) (1 call: `OnOpenPage → IsNonDeductibleVATEnabled`)
- [Page 54 "Purchase Order Subform"](../page/54.md) (1 call: `SetOpenPage → ShowNonDeductibleVATInLines`)
- [Page 55 "Purch. Invoice Subform"](../page/55.md) (1 call: `SetOpenPage → ShowNonDeductibleVATInLines`)
- [Page 576 "VAT Specification Subform"](../page/576.md) (1 call: `OnInit → IsNonDeductibleVATEnabled`)
- [Page 6641 "Purchase Return Order Subform"](../page/6641.md) (1 call: `OnOpenPage → ShowNonDeductibleVATInLines`)
- [Page 9401 "VAT Amount Lines"](../page/9401.md) (1 call: `OnInit → IsNonDeductibleVATEnabled`)
- [Page 98 "Purch. Cr. Memo Subform"](../page/98.md) (1 call: `SetOpenPage → ShowNonDeductibleVATInLines`)
- [Table 254 "VAT Entry"](../table/254.md) (1 call: `CopyFromGenJnlLine → Copy`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC25-26, BC28

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: "codeunit", object_name: "Non-Deductible VAT")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
