---
id: object/page/397
type: object
title: Page 397 "Sales Invoice Statistics"
summary: Page 397 "Sales Invoice Statistics" in Base Application (Microsoft.Sales.History). 5 events. Present since at least BC23, still in BC30, changed in BC26.
tier: official
language: en
tags:
  - page
  - base application
versions:
  introduced: null
  last_changed: "26"
  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: 879324893afa2a577387c32deb5e77d147f25769d2ef20312e0653c9158f9791
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Sales/History/SalesInvoiceStatistics.Page.al
    title: src/Layers/W1/BaseApp/Sales/History/SalesInvoiceStatistics.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: page
object_id: 397
name: Sales Invoice Statistics
namespace: Microsoft.Sales.History
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "26"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 6
  events: 5
  subscribers: 0
  controls: 22
  actions: 0
relations:
  out: 1
  referenced_by: 0
  pages: 0
  extended_by: 2
  event_subscribers: 0
  calls: 1
  called_by: 0
  implements: 0
---

# Page 397 "Sales Invoice Statistics"

> Page 397 "Sales Invoice Statistics" in Base Application (Microsoft.Sales.History). 5 events. Present since at least BC23, still in BC30, changed in BC26.

Base Application · Microsoft.Sales.History · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Sales/History/SalesInvoiceStatistics.Page.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Caption | Sales Invoice Statistics |
| SourceTable | Sales Invoice Header |
| PageType | ListPlus |

## Fields on this page

Layout controls in source order, grouped by the container they sit in. Shows: the table field a control is bound to (or its expression as written); ToolTip: the control's own, else the bound field's (marked).

| Group | Control | Shows | ToolTip |
|---|---|---|---|
| General | Amount | `CustAmount + InvDiscAmount` | Specifies the net amount of all the lines in the sales document. |
|  | Inv. Discount Amount | `InvDiscAmount` | Specifies the invoice discount amount for the sales document. |
|  | Total | `CustAmount` | Specifies the total amount, less any invoice discount amount, and excluding VAT for the sales document. |
|  | VAT Amount | `VATAmount` | Specifies the total VAT amount that has been calculated for all the lines in the sales document. |
|  | Total Incl. VAT | `AmountInclVAT` | Specifies the total amount, including VAT, that will be posted to the customer's account for all the lines in the sales document. |
|  | Sales (LCY) | `AmountLCY` | Specifies your total sales turnover in the fiscal year. |
|  | Original Profit (LCY) | `ProfitLCY` | Specifies the original profit that was associated with the sales when they were originally posted. |
|  | Adjusted Profit (LCY) | `AdjProfitLCY` | Specifies the profit, taking into consideration changes in the purchase prices of the goods. |
|  | Original Profit % | `ProfitPct` | Specifies the original percentage of profit that was associated with the sales when they were originally posted. |
|  | Adjusted Profit % | `AdjProfitPct` | Specifies the percentage of profit for all sales, including changes that occurred in the purchase prices of the goods. |
|  | Quantity | `LineQty` | Specifies the total quantity of G/L account entries, items and/or resources in the sales document. |
|  | Parcels | `TotalParcels` | Specifies the total number of parcels in the sales document. |
|  | Net Weight | `TotalNetWeight` | Specifies the total net weight of the items in the sales document. |
|  | Gross Weight | `TotalGrossWeight` | Specifies the total gross weight of the items in the sales document. |
|  | Volume | `TotalVolume` | Specifies the total volume of the items in the sales document. |
|  | Original Cost (LCY) | `CostLCY` | Specifies the total cost, in LCY, of the G/L account entries, items and/or resources in the sales document. |
|  | Adjusted Cost (LCY) | `TotalAdjCostLCY` | Specifies the total cost, in LCY, of the items in the posted sales invoice, adjusted for any changes in the original costs of these items. |
|  | Cost Adjmt. Amount (LCY) | `TotalAdjCostLCY - CostLCY` | Specifies the difference between the original cost and the total adjusted cost of the items in the posted sales invoice. |
| Content | Subform | part [Page 576 "VAT Specification Subform"](../page/576.md) | — |
| Customer | Balance (LCY) | `Cust."Balance (LCY)"` | Specifies the balance in LCY on the customer's account. |
|  | Credit Limit (LCY) | `Cust."Credit Limit (LCY)"` | Specifies the credit limit of the customer on the sales document. The value 0 represents unlimited credit. |
|  | Expended % of Credit Limit (LCY) | `CreditLimitLCYExpendedPct` | Specifies the expended percentage of the credit limit in (LCY). |

## Events published

- `OnAfterGetRecordOnAfterCalculateAdjProfitLCY(SalesInvoiceHeader: Record "Sales Invoice Header"; var AdjProfitLCY: Decimal)` (integration)
- `OnBeforeCalculateTotals(SalesInvoiceHeader: Record "Sales Invoice Header"; var CustAmount: Decimal; var AmountInclVAT: Decimal; var InvDiscAmount: Decimal; var CostLCY: Decimal; var TotalAdjCostLCY: Decimal; var LineQty: Decimal; var TotalNetWeight: Decimal; var TotalGrossWeight: Decimal; var TotalVolume: Decimal; var TotalParcels: Decimal; var IsHandled: Boolean; var VATPercentage: Decimal)` (integration)
- `OnCalculateTotalsOnAfterSalesInvLineSetFilters(var SalesInvoiceLine: Record "Sales Invoice Line"; SalesInvoiceHeader: Record "Sales Invoice Header")` (integration)
- `OnCalculateTotalsOnAfterAddLineTotals(var SalesInvLine: Record "Sales Invoice Line"; var CustAmount: Decimal; var AmountInclVAT: Decimal; var InvDiscAmount: Decimal; var CostLCY: Decimal; var TotalAdjCostLCY: Decimal; var LineQty: Decimal; var TotalNetWeight: Decimal; var TotalGrossWeight: Decimal; var TotalVolume: Decimal; var TotalParcels: Decimal; SalesInvoiceHeader: Record "Sales Invoice Header")` (integration)
- `OnAfterGetRecordOnBeforeCalculateProfitLCY(var SalesInvoiceHeader: Record "Sales Invoice Header"; var AmountLCY: Decimal; var CustAmount: Decimal; var InvDiscAmount: Decimal; var CostLCY: Decimal)` (integration)

## Procedures

1 local procedures, no public ones.

## Triggers

OnAfterGetRecord

## Relations

- source table [Table 112 "Sales Invoice Header"](../table/112.md)

## Extended by

- [Page extension 20286 "Posted Sales Stats Ext"](../pageextension/20286.md)
- [Page extension 6240 "Sust. Sales Invoice Stats."](../pageextension/6240.md)

## 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 5836 "Cost Calculation Management"](../codeunit/5836.md) (2 calls: `CalculateTotals → CalcSalesInvLineCostLCY`, `CalculateTotals → CalcSalesInvLineNonInvtblCostAmt`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC26

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: "page", object_name: "Sales Invoice Statistics")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
