---
id: object/page/7004
type: object
title: Page 7004 "Sales Line Discounts"
summary: Page 7004 "Sales Line Discounts" in Base Application (Microsoft.Sales.Pricing). 1 public procedures, 4 events. Present since at least BC23, still in BC30, changed in BC24-25, BC28.
tier: official
language: en
tags:
  - page
  - 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: 5c873b7e65614be80479ae2ba8bb6c82f5bd5d58109e587ff4d927c02983eb21
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Sales/Pricing/SalesLineDiscounts.Page.al
    title: src/Layers/W1/BaseApp/Sales/Pricing/SalesLineDiscounts.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/9445
object_type: page
object_id: 7004
name: Sales Line Discounts
namespace: Microsoft.Sales.Pricing
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 19
  events: 4
  subscribers: 0
  controls: 18
  actions: 2
relations:
  out: 1
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 2
  called_by: 2
  implements: 0
---

# Page 7004 "Sales Line Discounts"

> Page 7004 "Sales Line Discounts" in Base Application (Microsoft.Sales.Pricing). 1 public procedures, 4 events. Present since at least BC23, still in BC30, changed in BC24-25, BC28.

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

## Properties

| Property | Value |
|---|---|
| Caption | Sales Line Discounts |
| SourceTable | Sales Line Discount |
| PageType | List |

## 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 | Sales Type Filter | `SalesTypeFilter` | Specifies a filter for which sales line discounts to display. |
|  | Sales Code Filter | `SalesCodeFilter` | Specifies a filter for which sales line discounts to display. |
|  | Starting Date Filter | `StartingDateFilter` | Specifies a filter for which sales line discounts to display. |
|  | Type Filter | `ItemTypeFilter` | Specifies a filter for which sales line discounts to display. |
|  | Code Filter | `CodeFilter` | Specifies a filter for which sales line discounts to display. |
|  | Currency Code Filter | `CurrencyCodeFilter` | Specifies a filter for which sales line discounts to display. |
| Filters | FilterDescription | `GetFilterDescription()` | Specifies a filter for which sales line discounts to display. |
| Control1 | Sales Type | [Sales Type](../table/7004.md#fields) | Specifies the sales type of the sales line discount. The sales type defines whether the sales price is for an individual customer, customer discount group, all customers, or for a campaign. <small>from the table field</small> |
|  | Sales Code | [Sales Code](../table/7004.md#fields) | Specifies one of the following values, depending on the value in the Sales Type field. <small>from the table field</small> |
|  | Type | [Type](../table/7004.md#fields) | Specifies the type of item that the sales discount line is valid for. That is, either an item or an item discount group. <small>from the table field</small> |
|  | Code | [Code](../table/7004.md#fields) | Specifies one of two values, depending on the value in the Type field. <small>from the table field</small> |
|  | Variant Code | [Variant Code](../table/7004.md#fields) | Specifies the variant of the item on the line. <small>from the table field</small> |
|  | Currency Code | [Currency Code](../table/7004.md#fields) | Specifies the currency code of the sales line discount price. <small>from the table field</small> |
|  | Unit of Measure Code | [Unit of Measure Code](../table/7004.md#fields) | Specifies how each unit of the item or resource is measured, such as in pieces or hours. By default, the value in the Base Unit of Measure field on the item or resource card is inserted. <small>from the table field</small> |
|  | Minimum Quantity | [Minimum Quantity](../table/7004.md#fields) | Specifies the minimum quantity that the customer must purchase in order to gain the agreed discount. <small>from the table field</small> |
|  | Line Discount % | [Line Discount %](../table/7004.md#fields) | Specifies the discount percentage that is granted for the item on the line. |
|  | Starting Date | [Starting Date](../table/7004.md#fields) | Specifies the date from which the sales line discount is valid. <small>from the table field</small> |
|  | Ending Date | [Ending Date](../table/7004.md#fields) | Specifies the date to which the sales line discount is valid. <small>from the table field</small> |

## Actions

| Group | Action | ToolTip | Runs |
|---|---|---|---|
| Processing | Filter | Apply the filter. |  |
|  | Clear Filter | Clear filter. |  |

## Events published

- `OnLookupCodeFilterCaseElse(SalesLineDiscount: Record "Sales Line Discount"; var Text: Text; var Result: Boolean)` (integration): Raises an event to handle custom lookup for code filter when the type is not Item or Item Disc. Group.
- `OnGetTypeFilterCaseElse(var SalesLineDiscount: Record "Sales Line Discount"; var TypeFilter: Integer)` (integration): Raises an event to handle custom type filter conversion when the type is not Item or Item Disc. Group.
- `OnSetRecFiltersOnBeforeCurrPageUpdate(var SalesLineDiscount: Record "Sales Line Discount"; ItemTypeFilter: Option Item,"Item Discount Group","None")` (integration): Raises an event after the record filters have been applied and before the page is updated, allowing subscribers to apply additional filtering based on the current item type filter.
- `OnGetFilterDescriptionCaseElse(var SalesLineDiscount: Record "Sales Line Discount"; ItemTypeFilter: Option Item,"Item Discount Group","None"; var SourceTableName: Text; var Item: Record Item)` (integration): Raises an event to resolve the filter description when the item type filter is not Item or Item Discount Group, allowing subscribers to provide a custom source table name and item filtering.

## Procedures

- `SetRecFilters()`: Applies filter settings to the sales line discount records based on current filter values.

Plus 14 local procedures.

## Triggers

OnAfterGetCurrRecord, OnInit, OnOpenPage

## Relations

- source table [Table 7004 "Sales Line Discount"](../table/7004.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 4030 "Client Type Management"](../codeunit/4030.md) (1 call: `OnOpenPage → GetCurrentClientType`)
- [Codeunit 7049 "Feature - Price Calculation"](../codeunit/7049.md) (1 call: `OnInit → FailIfFeatureEnabled`)

## Called by

- [Page 22 "Customer List"](../page/22.md) (1 call: `ShowLineDiscounts → (object)`)
- [Page 31 "Item List"](../page/31.md) (1 call: `ShowLineDiscounts → (object)`)

## Recent changes

- 2026-07-15 [#9445 [Extensibility Request] issue 30173: add integration events to Sales Line Discounts page](../../changes/bcapps/9445.md) (main, BC30, feature)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-25, 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: "page", object_name: "Sales Line Discounts")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
