---
title: "Codeunit 57 Document Totals"
author: "Jonas Paprotka"
url: https://jonas-paprotka.de/ref/codeunit/57-document-totals/
type: codeunit
id: 57
name: "Document Totals"
app: "Base Application"
namespace: Microsoft.Utilities
versions: "17-28"
build: 28.5.54151.54365
source: "https://jonas-paprotka.de/ref/codeunit/57-document-totals/source/29/"
checked: 2026-09-20
subject: "Microsoft Dynamics 365 Business Central"
license: "Content © 2026 Jonas Paprotka. Quote freely with attribution and a link."
---

# Codeunit 57 Document Totals

Jonas Paprotka, https://jonas-paprotka.de/ref/codeunit/57-document-totals/

| | |
| --- | --- |
| App | Base Application |
| Namespace | Microsoft.Utilities |
| Versions | 17-28 |
| Source file | Utilities/DocumentTotals.Codeunit.al |

## Procedures

| Name | Parameters | Returns | Access | Versions | Obsolete | Reason |
| --- | --- | --- | --- | --- | --- | --- |
| CalculateSalesPageTotals | (var Record Sales Line, var Decimal, var Record Sales Line) | - | public | 17-28 | - | - |
| CalculateSalesTotals | (var Record Sales Line, var Decimal, var Record Sales Line) | - | public | 17-28 | - | - |
| CalculateSalesSubPageTotals | (var Record Sales Header, var Record Sales Line, var Decimal, var Decimal, var Decimal) | - | public | 17-28 | - | - |
| CalculatePostedSalesInvoiceTotals | (var Record Sales Invoice Header, var Decimal, Record Sales Invoice Line) | - | public | 17-28 | - | - |
| CalculatePostedSalesCreditMemoTotals | (var Record Sales Cr.Memo Header, var Decimal, Record Sales Cr.Memo Line) | - | public | 17-28 | - | - |
| CalcTotalPurchAmountOnlyDiscountAllowed | (Record Purchase Line) | Decimal | public | 17-28 | - | - |
| CalcTotalSalesAmountOnlyDiscountAllowed | (Record Sales Line) | Decimal | public | 17-28 | - | - |
| RefreshSalesLine | (var Record Sales Line) | - | public | 17-28 | - | - |
| RefreshPurchaseLine | (var Record Purchase Line) | - | public | 17-28 | - | - |
| SalesUpdateTotalsControls | (Record Sales Line, var Record Sales Header, var Record Sales Line, var Boolean, var Text, var Text, var Boolean, Boolean, var Decimal) | - | public | 17-28 | - | - |
| SalesRedistributeInvoiceDiscountAmounts | (var Record Sales Line, var Decimal, var Record Sales Line) | - | public | 17-28 | - | - |
| SalesRedistributeInvoiceDiscountAmountsOnDocument | (Record Sales Header) | - | public | 17-28 | - | - |
| SalesDocTotalsNotUpToDate | () | - | public | 17-28 | - | - |
| SalesCheckIfDocumentChanged | (var Record Sales Line, var Record Sales Line) | - | public | 17-28 | - | - |
| SalesCheckAndClearTotals | (var Record Sales Line, var Record Sales Line, var Record Sales Line, var Decimal, var Decimal, var Decimal) | - | public | 17-28 | - | - |
| SalesDeltaUpdateTotals | (var Record Sales Line, var Record Sales Line, var Record Sales Line, var Decimal, var Decimal, var Decimal) | - | public | 17-28 | - | - |
| PurchaseUpdateTotalsControls | (Record Purchase Line, var Record Purchase Header, var Record Purchase Line, var Boolean, var Text, var Text, var Boolean, var Decimal) | - | public | 17-28 | - | - |
| PurchaseUpdateTotalsControlsForceable | (Record Purchase Line, var Record Purchase Header, var Record Purchase Line, var Boolean, var Text, var Text, var Boolean, var Decimal, Boolean) | - | public | 17-28 | - | - |
| PurchaseCalculateTotalsWithInvoiceRounding | (var Record Purchase Line, var Decimal, var Record Purchase Line) | - | public | 17-28 | - | - |
| PurchaseRedistributeInvoiceDiscountAmounts | (var Record Purchase Line, var Decimal, var Record Purchase Line) | - | public | 17-28 | - | - |
| PurchaseRedistributeInvoiceDiscountAmountsOnDocument | (Record Purchase Header) | - | public | 17-28 | - | - |
| PurchaseDocTotalsNotUpToDate | () | - | public | 17-28 | - | - |
| PurchaseCheckIfDocumentChanged | (var Record Purchase Line, var Record Purchase Line) | - | public | 17-28 | - | - |
| PurchaseCheckAndClearTotals | (var Record Purchase Line, var Record Purchase Line, var Record Purchase Line, var Decimal, var Decimal, var Decimal) | - | public | 17-28 | - | - |
| PurchaseDeltaUpdateTotals | (var Record Purchase Line, var Record Purchase Line, var Record Purchase Line, var Decimal, var Decimal, var Decimal) | - | public | 17-28 | - | - |
| CalculatePurchasePageTotals | (var Record Purchase Line, var Decimal, var Record Purchase Line) | - | public | 17-28 | - | - |
| CalculatePurchaseTotals | (var Record Purchase Line, var Decimal, var Record Purchase Line) | - | public | 17-28 | - | - |
| CalculatePurchaseSubPageTotals | (var Record Purchase Header, var Record Purchase Line, var Decimal, var Decimal, var Decimal) | - | public | 17-28 | - | - |
| CalculatePostedPurchInvoiceTotals | (var Record Purch. Inv. Header, var Decimal, Record Purch. Inv. Line) | - | public | 17-28 | - | - |
| CalculatePostedPurchCreditMemoTotals | (var Record Purch. Cr. Memo Hdr., var Decimal, Record Purch. Cr. Memo Line) | - | public | 17-28 | - | - |
| GetTotalVATCaption | (Code[10]) | Text | public | 17-28 | - | - |
| GetTotalInclVATCaption | (Code[10]) | Text | public | 17-28 | - | - |
| GetTotalExclVATCaption | (Code[10]) | Text | public | 17-28 | - | - |
| GetTotalSalesHeaderAndCurrency | (var Record Sales Line, var Record Sales Header, var Record Currency) | - | public | 17-28 | - | - |
| GetTotalPurchaseHeaderAndCurrency | (var Record Purchase Line, var Record Purchase Header, var Record Currency) | - | public | 17-28 | - | - |
| GetInvoiceDiscAmountWithVATCaption | (Boolean) | Text | public | 17-28 | - | - |
| GetInvoiceDiscAmountWithVATAndCurrencyCaption | (Text, Code[10]) | Text | public | 17-28 | - | - |
| GetTotalLineAmountWithVATAndCurrencyCaption | (Code[10], Boolean) | Text | public | 17-28 | - | - |
| SalesCheckNumberOfLinesLimit | (Record Sales Header) | Boolean | public | 17-28 | - | - |
| PurchaseCheckNumberOfLinesLimit | (Record Purchase Header) | Boolean | public | 17-28 | - | - |

## Events

| Kind | Name | Parameters | Versions | Obsolete | Reason |
| --- | --- | --- | --- | --- | --- |
| Integration event | OnAfterCalculatePostedSalesInvoiceTotals | (var Record Sales Invoice Header, Record Sales Invoice Line, var Decimal) | 17-28 | - | - |
| Integration event | OnAfterCalculatePostedSalesCreditMemoTotals | (var Record Sales Cr.Memo Header, Record Sales Cr.Memo Line, var Decimal) | 17-28 | - | - |
| Integration event | OnAfterCalculateSalesSubPageTotals | (var Record Sales Header, var Record Sales Line, var Decimal, var Decimal, var Decimal, var Record Sales Line) | 17-28 | - | - |
| Integration event | OnAfterCalculatePostedPurchInvoiceTotals | (var Record Purch. Inv. Header, var Decimal, var Record Purch. Inv. Line) | 17-28 | - | - |
| Integration event | OnAfterCalculatePurchaseSubPageTotals | (var Record Purchase Header, var Record Purchase Line, var Decimal, var Decimal, var Decimal, var Record Purchase Line) | 17-28 | - | - |
| Integration event | OnAfterSalesCheckIfDocumentChanged | (Record Sales Line, Record Sales Line, var Boolean) | 17-28 | - | - |
| Integration event | OnAfterSalesLineSetFilters | (var Record Sales Line, Record Sales Line) | 17-28 | - | - |
| Integration event | OnAfterSalesRedistributeInvoiceDiscountAmounts | (var Record Sales Line, var Record Sales Line, var Decimal) | 17-28 | - | - |
| Integration event | OnAfterPurchaseCheckIfDocumentChanged | (Record Purchase Line, Record Purchase Line, var Boolean) | 17-28 | - | - |
| Integration event | OnAfterPurchaseLineSetFilters | (var Record Purchase Line, Record Purchase Line) | 17-28 | - | - |
| Integration event | OnAfterPurchaseRedistributeInvoiceDiscountAmounts | (var Record Purchase Line, var Record Purchase Line, var Decimal) | 17-28 | - | - |
| Integration event | OnAfterPurchDeltaUpdateTotals | (var Record Purchase Line, var Record Purchase Line, var Record Purchase Line, var Decimal, var Decimal, var Decimal) | 17-28 | - | - |
| Integration event | OnAfterSalesDeltaUpdateTotals | (var Record Sales Line, var Record Sales Line, var Record Sales Line, var Decimal, var Decimal, var Decimal) | 17-28 | - | - |
| Integration event | OnBeforeSalesDeltaUpdateTotals | (var Record Sales Line, var Record Sales Line, var Record Sales Line, var Decimal, var Decimal, var Decimal, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeCalculatePostedPurchCreditMemoTotals | (var Record Purch. Cr. Memo Hdr., var Decimal, Record Purch. Cr. Memo Line, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeCalculatePostedPurchInvoiceTotals | (var Record Purch. Inv. Header, var Decimal, Record Purch. Inv. Line, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeCalculatePostedSalesCreditMemoTotals | (var Record Sales Cr.Memo Header, var Decimal, Record Sales Cr.Memo Line, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeCalculatePostedSalesInvoiceTotals | (var Record Sales Invoice Header, var Decimal, Record Sales Invoice Line, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeCalculatePurchaseSubPageTotals | (var Record Purchase Header, var Record Purchase Line, var Decimal, var Decimal, var Decimal, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeCalculateSalesSubPageTotals | (var Record Sales Header, var Record Sales Line, var Decimal, var Decimal, var Decimal, var Boolean) | 17-26 | - | - |
| Integration event | OnBeforeSalesRedistributeInvoiceDiscountAmounts | (var Record Sales Line, var Decimal, var Record Sales Line, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeSalesUpdateTotalsControls | (var Record Sales Header, var Boolean, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforePurchaseRedistributeInvoiceDiscountAmounts | (var Record Purchase Line, var Decimal, var Record Purchase Line, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforePurchUpdateTotalsControls | (var Record Purchase Header, var Boolean, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforePurchaseDeltaUpdateTotals | (var Record Purchase Line, var Record Purchase Line, var Record Purchase Line, var Decimal, var Decimal, var Decimal, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforePurchaseUpdateTotalsControls | (Record Purchase Line, var Record Purchase Header, var Record Purchase Line, var Boolean, var Text, var Text, var Boolean, var Decimal, var Boolean) | 17-28 | - | - |
| Integration event | OnCalculateSalesSubPageTotalsOnAfterSetFilters | (var Record Sales Line, Record Sales Header) | 17-28 | - | - |
| Integration event | OnSalesUpdateTotalsControlsOnBeforeCheckDocumentNo | (Record Sales Line, var Record Sales Header, var Record Sales Line, var Boolean, var Text, var Text, var Boolean, Boolean, var Decimal, var Boolean) | 17-28 | - | - |
| Integration event | OnAfterCalculatePostedPurchCreditMemoTotals | (var Record Purch. Cr. Memo Hdr., var Decimal, var Record Purch. Cr. Memo Line) | 18-28 | - | - |
| Integration event | OnAfterCalculateTotalPurchaseLineAndVATAmount | (Record Purchase Header, var Decimal, var Record Purchase Line) | 18-28 | - | - |
| Integration event | OnBeforeSalesUpdateTotals | (var Record Sales Header, Record Sales Header, var Boolean, Decimal, var Boolean, var Boolean) | 20-28 | - | - |
| Integration event | OnCalculatePurchaseSubPageTotalsOnAfterRecalculate | (var Record Purchase Line) | 20-28 | - | - |
| Integration event | OnCalculatePurchaseSubPageTotalsOnAfterSetFilter | (var Record Purchase Line, Record Purchase Header) | 22-28 | - | - |
| Integration event | OnBeforePurchaseCheckNumberOfLinesLimit | (var Record Purchase Header, var Boolean, var Boolean) | 22-28 | - | - |
| Integration event | OnBeforeSalesCheckNumberOfLinesLimit | (var Record Sales Header, var Boolean, var Boolean) | 24-28 | - | - |
| Integration event | OnCalculatePurchasePageTotalsOnAfterCalculateVATAmount | (var Record Purchase Line, var Decimal, var Record Purchase Line, var Record Purchase Line) | 24-28 | - | - |
| Integration event | OnBeforePurchaseUpdateTotals | (var Record Purchase Header, var Record Purchase Header, Record Purchase Line, var Record Purchase Line, var Decimal, Boolean, var Boolean, var Boolean) | 25-28 | - | - |
| Integration event | OnAfterSalesCalculateTotalsWithInvoiceRounding | (var Record Sales Header) | 25-28 | - | - |
| Integration event | OnBeforeCalculateSalesTotals | (var Record Sales Line) | 26-28 | - | - |
| Integration event | OnBeforeCalcTotalSalesAmountOnlyDiscountAllowed | (var Record Sales Line) | 26-28 | - | - |
| Integration event | OnBeforeCalculateSalesSubPageTotals | (var Record Sales Header, var Record Sales Line, var Decimal, var Decimal, var Decimal, var Boolean, var Boolean, var Boolean) | 27-28 | - | - |

## Source

Symbols: Microsoft.BaseApplication.symbols.437dbf0e-84ff-417a-965d-ed2bb9650972, https://dynamicssmb2.pkgs.visualstudio.com/DynamicsBCPublicFeeds/_packaging/MSSymbols/nuget/v3/index.json, highest build per major on 2026-09-20.
AL source 29: https://github.com/microsoft/BCApps, MIT, releases/29.x at a66254c3b8b5bb1cea290dc8f9d097aec4381153.

Jonas Paprotka, 2026-09-20.
