---
id: object/page/7018
type: object
title: Page 7018 "Purchase Price List"
summary: Page 7018 "Purchase Price List" in Base Application (Microsoft.Purchases.Pricing). 2 public procedures, 3 events. Present since at least BC23, still in BC30.
tier: official
language: en
tags:
  - page
  - base application
versions:
  introduced: null
  last_changed: null
  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: 1964f6751431093077bdbe5290cd6ee2714a103eb58672a259a62f46330b50c5
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Purchases/Pricing/PurchasePriceList.Page.al
    title: src/Layers/W1/BaseApp/Purchases/Pricing/PurchasePriceList.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/across-prices-and-discounts
    title: Set up prices and discounts
    date: null
    commit: null
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/purchasing-how-record-purchase-price-discount-payment-agreements
    title: Record special purchase prices and discounts
    date: null
    commit: null
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/across-prices-and-discounts
    - https://learn.microsoft.com/dynamics365/business-central/purchasing-how-record-purchase-price-discount-payment-agreements
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/set-up-business-central/set-up-purchase
    - topic/business-central/business-functionality/set-up-business-central/set-up-sales
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: page
object_id: 7018
name: Purchase Price List
namespace: Microsoft.Purchases.Pricing
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids:
  - docs/learn-smb-docs/business-central/across-prices-and-discounts.md
  - docs/learn-smb-docs/business-central/purchasing-how-record-purchase-price-discount-payment-agreements.md
counts:
  fields: 0
  procedures: 8
  events: 3
  subscribers: 0
  controls: 17
  actions: 3
relations:
  out: 1
  referenced_by: 0
  pages: 2
  extended_by: 0
  event_subscribers: 0
  calls: 3
  called_by: 1
  implements: 0
---

# Page 7018 "Purchase Price List"

> Page 7018 "Purchase Price List" in Base Application (Microsoft.Purchases.Pricing). 2 public procedures, 3 events. Present since at least BC23, still in BC30.

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

## Properties

| Property | Value |
|---|---|
| Caption | Purchase Price List |
| SourceTable | Price List 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 |
|---|---|---|---|
| LeftColumn | Code | [Code](../table/7000.md#fields) | Specifies the unique identifier of the price list. |
|  | Description | [Description](../table/7000.md#fields) | Specifies the description of the price list. |
|  | Assign-to Type | `SourceType` | Specifies the type of entity to which the price list is assigned. The options are relevant to the entity you are currently viewing. |
|  | Assign-to Type | `JobSourceType` | Specifies the type of entity to which the price list is assigned. The options are relevant to the entity you are currently viewing. |
| AssignToParentNoGroup | AssignToParentNo | [Assign-to Parent No.](../table/7000.md#fields) | Specifies the entity to which the prices are assigned. The options depend on the selection in the Assign-to Type field. If you choose an entity, the price list will be used only for that entity. |
| LeftColumn | SourceNo | [Source No.](../table/7000.md#fields) | Specifies the entity to which the prices are assigned. The options depend on the selection in the Assign-to Type field. If you choose an entity, the price list will be used only for that entity. |
|  | AssignToNo | [Assign-to No.](../table/7000.md#fields) | Specifies the entity to which the prices are assigned. The options depend on the selection in the Assign-to Type field. If you choose an entity, the price list will be used only for that entity. |
| VAT | PriceIncludesVAT | [Price Includes VAT](../table/7000.md#fields) | Specifies if prices include VAT. <small>from the table field</small> |
| View | View Columns for | `ViewAmountType` | Specifies the amount type filter that defines the columns shown in the price list lines. |
| RightColumn | Status | [Status](../table/7000.md#fields) | Specifies whether the price list is in Draft status and can be edited, Inactive and cannot be edited or used, or Active and can be edited (when Allow Editing Active Price is enabled) and used for price calculations. |
|  | CurrencyCode | [Currency Code](../table/7000.md#fields) | Specifies the currency code of the price list. |
|  | StartingDate | [Starting Date](../table/7000.md#fields) | Specifies the date from which the price is valid. |
|  | EndingDate | [Ending Date](../table/7000.md#fields) | Specifies the last date that the price is valid. |
| Line Defaults | AllowUpdatingDefaults | [Allow Updating Defaults](../table/7000.md#fields) | Specifies whether users can change the values in the fields on the price list lines that contain default values from the header. This does not affect the ability to allow line or invoice discounts. |
|  | AllowInvoiceDisc | [Allow Invoice Disc.](../table/7000.md#fields) | Specifies whether invoice discount is allowed. You can change this value on the lines. |
|  | AllowLineDisc | [Allow Line Disc.](../table/7000.md#fields) | Specifies whether line discounts are allowed. You can change this value on the lines. |
| Content | Lines | part [Page 7011 "Purchase Price List Lines"](../page/7011.md) | — |

## Actions

| Group | Action | ToolTip | Runs |
|---|---|---|---|
| Processing | Suggest Lines | Creates the purchase price list lines based on the unit cost in the product cards, like item or resource. Change the price list status to 'Draft' to run this action. |  |
|  | Copy Lines | Copies the lines from the existing price list. New prices can be adjusted by a factor and rounded differently. Change the price list status to 'Draft' to run this action unless Allow Editing Active Price is enabled. |  |
|  | Verify Lines | Checks data consistency in the new and modified price list lines. Finds the duplicate price lines and suggests the resolution of the line conflicts. |  |

## Events published

- `OnUpdateSourceTypeOnCaseElse(PriceListHeader: Record "Price List Header"; var SourceType: Enum "Purchase Price Source Type"; var IsJobGroup: Boolean)` (integration)
- `OnQueryClosePageOnBeforeDraftLineCheck(var PriceListHeader: Record "Price List Header"; var Result: Boolean; var IsHandled: Boolean)` (integration)
- `OnAfterGetDefaultSourceType(PriceSourceGroup: Enum "Price Source Group"; var DefaultPriceSourceType: Enum "Price Source Type")` (integration)

## Procedures

- `SetSourceNoEnabled()` (protected)
- `ValidateSourceType(SourceType2: Integer)` (protected)

Plus 3 local procedures.

## Triggers

OnInit, OnOpenPage, OnAfterGetCurrRecord, OnNewRecord, OnQueryClosePage, OnClosePage

## Relations

- source table [Table 7000 "Price List Header"](../table/7000.md)

## Pages and codeunits on this table

- [Page 7017 "Purchase Price Lists"](../page/7017.md) (card page)
- [Page 7020 "Purchase Job Price Lists"](../page/7020.md) (card page)

## 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 7017 "Price List Management"](../codeunit/7017.md) (3 calls: `OnAfterGetCurrRecord → SendVerifyLinesNotification`, `OnOpenPage → VerifySourceGroupInLines`, `OnQueryClosePage → SendVerifyLinesNotification`)
- [Codeunit 7018 "Price UX Management"](../codeunit/7018.md) (2 calls: `OnNewRecord → IsAmountTypeFiltered`, `OnOpenPage → GetFirstSourceFromFilter`)
- [Codeunit 7049 "Feature - Price Calculation"](../codeunit/7049.md) (1 call: `OnInit → FailIfFeatureDisabled`)

## Called by

- [Codeunit 7018 "Price UX Management"](../codeunit/7018.md) (1 call: `EditPriceList → (object)`)

## Across versions

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

## Documented on Microsoft Learn

- [Set up prices and discounts](https://learn.microsoft.com/dynamics365/business-central/across-prices-and-discounts)
- [Record special purchase prices and discounts](https://learn.microsoft.com/dynamics365/business-central/purchasing-how-record-purchase-price-discount-payment-agreements)

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: "Purchase Price List")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
