Codeunit 398 "Sales Tax Calculate"
Base Application · Microsoft.Finance.SalesTax
Across versions
- BC23-30present
Neighbourhood 7 connected objects and pages
Base Application · Microsoft.Finance.SalesTax · BC23-30 · source at ea08af5e · facts from BC29
Events published
OnBeforeCalculateTaxProcedure(TaxAreaCode: Code[20]; TaxGroupCode: Code[20]; TaxLiable: Boolean; Date: Date; Amount: Decimal; Quantity: Decimal; ExchangeRate: Decimal; var TaxAmount: Decimal; var IsHandled: Boolean)(integration): Integration event raised before starting the main tax calculation procedure. Enables custom tax calculation logic or external tax service integration.OnBeforeInitSalesTaxLines(var TaxAreaCode: Code[20]; var TaxGroupCode: Code[20]; TaxLiable: Boolean; Amount: Decimal; Quantity: Decimal; Date: Date; DesiredTaxAmount: Decimal; var TMPTaxDetail: Record "Tax Detail"; var IsHandled: Boolean; var Initialised: Boolean; var FirstLine: Boolean; var TotalForAllocation: Decimal)(integration): Integration event raised before initializing sales tax lines for detailed calculations. Enables custom tax line initialization or external tax service integration.
Procedures
CalculateTax(TaxAreaCode: Code[20]; TaxGroupCode: Code[20]; TaxLiable: Boolean; Date: Date; Amount: Decimal; Quantity: Decimal; ExchangeRate: Decimal): Decimal: Calculates total sales tax amount for a transaction based on tax area and group codes. Handles multiple jurisdictions, tax-on-tax scenarios, and currency conversion.ReverseCalculateTax(TaxAreaCode: Code[20]; TaxGroupCode: Code[20]; TaxLiable: Boolean; Date: Date; TotalAmount: Decimal; Quantity: Decimal; ExchangeRate: Decimal): Decimal: Reverse calculates the net amount from a total amount including tax. Determines the base amount when given an amount that includes sales tax.InitSalesTaxLines(TaxAreaCode: Code[20]; TaxGroupCode: Code[20]; TaxLiable: Boolean; Amount: Decimal; Quantity: Decimal; Date: Date; DesiredTaxAmount: Decimal): Initializes detailed sales tax lines for allocation across multiple tax jurisdictions. Prepares temporary tax detail records for posting and distribution calculations.GetSalesTaxLine(var TaxDetail2: Record "Tax Detail"; var ReturnTaxAmount: Decimal; var ReturnTaxBaseAmount: Decimal): Boolean: Retrieves the next sales tax line from initialized tax details for posting allocation. Returns individual tax jurisdiction amounts with proper rounding adjustments.
Triggers
OnRun
Called by
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” (4 calls:
InitVAT → CalculateTax,InitVAT → ReverseCalculateTax,PostVAT → GetSalesTaxLine, …) - Table 5902 “Service Line” (3 calls:
InitOutstandingAmount → CalculateTax,UpdateVATAmounts → CalculateTax,UpdateVATAmounts → ReverseCalculateTax) - Table 290 “VAT Amount Line” (2 calls:
UpdateLines → CalculateTax,UpdateLines → ReverseCalculateTax) - Table 37 “Sales Line” (2 calls:
UpdateVATAmounts → CalculateTax,UpdateVATAmounts → ReverseCalculateTax) - Table 39 “Purchase Line” (2 calls:
UpdateVATAmounts → CalculateTax,UpdateVATAmounts → ReverseCalculateTax) - Codeunit 57 “Document Totals” (1 call:
CalculateSalesTaxForTempTotalPurchaseLine → CalculateTax) - Codeunit 816 “Purch. Post Invoice” (1 call:
CalculateVATAmounts → CalculateTax)
Countries that replace it
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: "Sales Tax Calculate"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.