---
id: object/table/1304
type: object
title: Table 1304 "Sales Price and Line Disc Buff"
summary: Table 1304 "Sales Price and Line Disc Buff" in Base Application (Microsoft.Sales.Pricing). 21 fields, 7 public procedures, 15 events. Present since at least BC23, still in BC30, changed in BC24-26, BC28.
tier: official
language: en
tags:
  - table
  - 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: 5950abed9214bf7b873327efed8be57223f5a77155b0873b02dc0ce849774f5a
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Sales/Pricing/SalesPriceandLineDiscBuff.Table.al
    title: src/Layers/W1/BaseApp/Sales/Pricing/SalesPriceandLineDiscBuff.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: table
object_id: 1304
name: Sales Price and Line Disc Buff
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"
  - "26"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 21
  procedures: 50
  events: 15
  subscribers: 0
relations:
  out: 9
  referenced_by: 0
  pages: 2
  extended_by: 0
  event_subscribers: 0
  calls: 0
  called_by: 0
  implements: 0
---

# Table 1304 "Sales Price and Line Disc Buff"

> Table 1304 "Sales Price and Line Disc Buff" in Base Application (Microsoft.Sales.Pricing). 21 fields, 7 public procedures, 15 events. Present since at least BC23, still in BC30, changed in BC24-26, BC28.

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

## Properties

| Property | Value |
|---|---|
| Caption | Sales Price and Line Disc Buff |
| DataClassification | CustomerContent |

## Fields

Explanation: the field's ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | Code | Code[20] | Specifies a code for the sales line price or discount. | TableRelation [Table 27 "Item"](../table/27.md), [Table 341 "Item Discount Group"](../table/341.md) (if (Type = const(Item)) Item else if (Type = const("Item Disc. Group")) "Item Discount Group"); NotBlank; DataClassification SystemMetadata |
| 2 | Sales Code | Code[20] | Specifies the sales code of the price or discount. The sales code depends on the value in the Sales Type field. The code can represent an individual customer, a customer discount group, or for all customers. | TableRelation [Table 18 "Customer"](../table/18.md), [Table 340 "Customer Discount Group"](../table/340.md), [Table 6 "Customer Price Group"](../table/6.md) (if ("Sales Type" = const("Customer Price/Disc. Group"), "Line Type" = const("Sales Line Discount")) "Customer Discount Group" else if ("Sales Type" = const("Customer Price/Disc. Group"), "Line Type" = const("Sales Price")) "Customer Price Group" else if ("Sales Type" = const(Customer)) Customer); DataClassification SystemMetadata |
| 3 | Currency Code | Code[10] | Specifies the currency that must be used on the sales document line to warrant the sales price or discount. | TableRelation [Table 4 "Currency"](../table/4.md); DataClassification SystemMetadata |
| 4 | Starting Date | Date | Specifies the date from which the sales line discount is valid. | DataClassification SystemMetadata |
| 5 | Line Discount % | Decimal | Specifies the discount percentage that is granted for the item on the line. | DataClassification SystemMetadata |
| 6 | Unit Price | Decimal | Specifies the price of one unit of the item or resource. You can enter a price manually or have it entered according to the Price/Profit Calculation field on the related card. | DataClassification SystemMetadata |
| 7 | Price Includes VAT | Boolean | Specifies if the price that is granted includes VAT. | DataClassification SystemMetadata |
| 10 | Allow Invoice Disc. | Boolean | Specifies if an invoice discount will be calculated when the sales price is offered. | DataClassification SystemMetadata |
| 11 | VAT Bus. Posting Gr. (Price) | Code[20] | Specifies the VAT business posting group for customers who you want to apply the sales price to. This price includes VAT. <small>via [Page 1345 "Sales Price and Line Discounts"](../page/1345.md)</small> | TableRelation [Table 323 "VAT Business Posting Group"](../table/323.md) (VAT Business Posting Group); DataClassification SystemMetadata |
| 13 | Sales Type | Option | Specifies the sales type of the price or discount. The sales type defines whether the sales price or discount is for an individual customer, a customer discount group, or for all customers. | OptionCaption: Customer,Customer Price/Disc. Group,All Customers,Campaign; DataClassification SystemMetadata |
| 14 | Minimum Quantity | Decimal | Specifies the quantity that must be entered on the sales document to warrant the sales price or discount. | DataClassification SystemMetadata |
| 15 | Ending Date | Date | Specifies the date to which the sales line discount is valid. | DataClassification SystemMetadata |
| 21 | Type | Enum "Sales Line Discount Type" | Specifies if the discount is valid for an item or for an item discount group. | enum [Enum 7021 "Sales Line Discount Type"](../enum/7021.md); DataClassification SystemMetadata |
| 1300 | Line Type | Option | Specifies if the line is for a sales price or a sales line discount. | OptionCaption: ,Sales Line Discount,Sales Price; DataClassification SystemMetadata |
| 1301 | Loaded Item No. | Code[20] | — | not editable; DataClassification SystemMetadata |
| 1302 | Loaded Disc. Group | Code[20] | — | not editable; DataClassification SystemMetadata |
| 1303 | Loaded Customer No. | Code[20] | — | not editable; DataClassification SystemMetadata |
| 1304 | Loaded Price Group | Code[20] | — | not editable; DataClassification SystemMetadata |
| 5400 | Unit of Measure Code | Code[10] | 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. | TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md) (if (Type = const(Item)) "Item Unit of Measure".Code where("Item No." = field(Code))); DataClassification SystemMetadata |
| 5700 | Variant Code | Code[10] | Specifies the variant that must be used on the sales document line to warrant the sales price or discount. | TableRelation [Table 5401 "Item Variant"](../table/5401.md) (if (Type = const(Item)) "Item Variant".Code where("Item No." = field(Code))); DataClassification SystemMetadata |
| 7001 | Allow Line Disc. | Boolean | Specifies if line discounts are allowed. | DataClassification SystemMetadata |

## Keys

- Key1: Line Type, Type, Code, Sales Type, Sales Code, Starting Date, Currency Code, Variant Code, Unit of Measure Code, Minimum Quantity, Loaded Item No., Loaded Disc. Group, Loaded Customer No., Loaded Price Group (clustered)

## Events published

- `OnAfterVATPostingSetupGet(var VATPostingSetup: Record "VAT Posting Setup")` (integration)
- `OnBeforeDeleteOldRecordVersion(var SalesPriceAndLineDiscBuff: Record "Sales Price and Line Disc Buff"; xSalesPriceAndLineDiscBuff: Record "Sales Price and Line Disc Buff"; var IsHandled: Boolean)` (integration)
- `OnBeforeDeleteOldRecordVersionFromPrices(xSalesPriceAndLineDiscBuff: Record "Sales Price and Line Disc Buff"; var IsHandled: Boolean)` (integration)
- `OnInsertNewDiscountLineOnBeforeInsert(var SalesLineDiscount: Record "Sales Line Discount"; SalesPriceAndLineDiscBuff: Record "Sales Price and Line Disc Buff")` (integration)
- `OnInsertNewPriceLineOnBeforeInsert(var SalesPrice: Record "Sales Price"; SalesPriceAndLineDiscBuff: Record "Sales Price and Line Disc Buff")` (integration)
- `OnLoadSalesLineDiscountOnBeforeInsert(var SalesPriceAndLineDiscBuff: Record "Sales Price and Line Disc Buff"; SalesLineDiscount: Record "Sales Line Discount")` (integration)
- `OnLoadSalesPriceOnBeforeInsert(var SalesPriceAndLineDiscBuff: Record "Sales Price and Line Disc Buff"; SalesPrice: Record "Sales Price")` (integration)
- `OnLoadDataForCustomerOnAfterSetLoadedCustomerFields(var Customer: Record Customer; MaxNoOfLines: Integer; var SalesPriceAndLineDiscBuff: Record "Sales Price and Line Disc Buff")` (integration)
- `OnLoadDataForCustomerOnAfterCalcLoadedLines(var LoadedLines: Integer; var RemainingLinesToLoad: Integer; var SalesPriceAndLineDiscBuff: Record "Sales Price and Line Disc Buff"; var Customer: Record Customer; MaxNoOfLines: Integer)` (integration)
- `OnLookupCodeCaseElse()` (integration)
- `OnValidateTypeCaseElse()` (integration)
- `OnAfterSetFiltersOnSalesPrice(var SalesPriceandLineDiscBuff: Record "Sales Price and Line Disc Buff"; var SalesPrice: Record "Sales Price")` (integration)
- `OnAfterSetFiltersOnSalesLineDiscountItem(var SalesPriceandLineDiscBuff: Record "Sales Price and Line Disc Buff"; var SalesLineDiscount: Record "Sales Line Discount")` (integration)
- `OnAfterSetFiltersOnSalesLineDiscountItemGroup(var SalesPriceandLineDiscBuff: Record "Sales Price and Line Disc Buff"; var SalesLineDiscount: Record "Sales Line Discount")` (integration)
- `OnAfterFilterToActualRecords(var SalesPriceandLineDiscBuff: Record "Sales Price and Line Disc Buff")` (integration)

## Procedures

- `LoadDataForItem(Item: Record Item)`: Loads sales prices and line discounts for the specified item into the buffer.
- `LoadDataForCustomer(Customer: Record Customer)`: Loads sales prices and line discounts for the specified customer into the buffer.
- `LoadDataForCustomer(var Customer: Record Customer; MaxNoOfLines: Integer): Integer`: Loads sales prices and line discounts for the specified customer into the buffer with a maximum number of lines.
- `FilterToActualRecords()`: Filters the buffer to show only active records that have not expired.
- `CustHasLines(Cust: Record Customer): Boolean`: Checks whether any sales prices or line discounts exist for the specified customer.
- `ItemHasLines(Item: Record Item): Boolean`: Checks whether any sales prices or line discounts exist for the specified item.
- `UpdatePriceIncludesVatAndPrices(Item: Record Item; IncludesVat: Boolean)`: Updates the Price Includes VAT flag and recalculates unit prices for the item.

Plus 28 local procedures.

## Triggers

OnDelete, OnInsert, OnModify, OnRename

## Relations

- Sales Code: TableRelation [Table 18 "Customer"](../table/18.md) (conditional)
- Code: TableRelation [Table 27 "Item"](../table/27.md) (conditional)
- VAT Bus. Posting Gr. (Price): TableRelation [Table 323 "VAT Business Posting Group"](../table/323.md)
- Sales Code: TableRelation [Table 340 "Customer Discount Group"](../table/340.md) (conditional)
- Code: TableRelation [Table 341 "Item Discount Group"](../table/341.md) (conditional)
- Currency Code: TableRelation [Table 4 "Currency"](../table/4.md)
- Variant Code: TableRelation [Table 5401 "Item Variant"](../table/5401.md)
- Unit of Measure Code: TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md)
- Sales Code: TableRelation [Table 6 "Customer Price Group"](../table/6.md) (conditional)

## Pages and codeunits on this table

- [Page 1345 "Sales Price and Line Discounts"](../page/1345.md) (source table)
- [Page 1347 "Sales Pr. & Line Disc. Part"](../page/1347.md) (source table)

## Across versions

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