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

# Page 7022 "Price Worksheet"

> Page 7022 "Price Worksheet" in Base Application (Microsoft.Pricing.Worksheet). 2 public procedures, 3 events. Present since at least BC23, still in BC30, changed in BC28.

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

## Properties

| Property | Value |
|---|---|
| Caption | Price Worksheet |
| SourceTable | Price Worksheet Line |
| PageType | Worksheet |
| UsageCategory | Tasks |
| ApplicationArea | Basic, Suite |

## 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 | Price Type | `PriceType` | Specifies a filter for which prices to display: sale or purchase. |
|  | Defaults | `Defaults` | Specifies the fields of the price list header that is used as defaults for new lines created in the worksheet. |
|  | Assign-to Group | `SourceGroup` | Specifies a filter for which group the prices apply to: customer, vendor, or project. |
|  | Update multiple price lists | `UpdateMultiplePriceLists` | Specifies if the worksheet is in the mode when user can add new lines and modify the existing lines suggested by the copy lines action. |
| Lines | Price List Code | [Price List Code](../table/7022.md#fields) | Specifies the unique identifier of the price list. <small>from the table field</small> |
|  | Existing Line | [Existing Line](../table/7022.md#fields) | Specifies if the current line is a copy of the existing price list line. <small>from the table field</small> |
|  | Status | [Status](../table/7022.md#fields) | Specifies whether the price list line is in Draft status and can be edited, Inactive and cannot be edited or used, or Active and used for price calculations. <small>from the table field</small> |
|  | Assign-to Type | `CustomerSourceType` | 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 | `VendorSourceType` | 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. |
|  | Parent Source No. | [Parent Source No.](../table/7022.md#fields) | Specifies the project to which the prices are assigned. If you choose an entity, the price list will be used only for that entity. <small>from the table field</small> |
|  | Source No. | [Source No.](../table/7022.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. <small>from the table field</small> |
|  | Assign-to Parent No. | [Assign-to Parent No.](../table/7022.md#fields) | Specifies the project to which the prices are assigned. If you choose an entity, the price list will be used only for that entity. <small>from the table field</small> |
|  | Assign-to No. | [Assign-to No.](../table/7022.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. <small>from the table field</small> |
|  | Asset Type | [Asset Type](../table/7022.md#fields) | Specifies the type of the product. <small>from the table field</small> |
|  | Asset No. | [Asset No.](../table/7022.md#fields) | Specifies the identifier of the product. If no product is selected, the price and discount values will apply to all products of the selected product type for which those values are not specified. For example, if you choose Item as the product type but do not specify a specific item, the price will a... <small>from the table field</small> |
|  | Product No. | [Product No.](../table/7022.md#fields) | Specifies the identifier of the product. If no product is selected, the price and discount values will apply to all products of the selected product type for which those values are not specified. For example, if you choose Item as the product type but do not specify a specific item, the price will a... <small>from the table field</small> |
|  | Variant Code | [Variant Code](../table/7022.md#fields) | Specifies the variant of the item on the line. <small>from the table field</small> |
|  | Variant Code Lookup | [Variant Code Lookup](../table/7022.md#fields) | Specifies the variant of the item on the line. <small>from the table field</small> |
|  | Work Type Code | [Work Type Code](../table/7022.md#fields) | Specifies the work type code for the resource. <small>from the table field</small> |
|  | Currency Code | [Currency Code](../table/7022.md#fields) | Specifies the currency code of the price list line. <small>from the table field</small> |
|  | Unit of Measure Code | [Unit of Measure Code](../table/7022.md#fields) | Specifies the unit of measure for the product. <small>from the table field</small> |
|  | Unit of Measure Code Lookup | [Unit of Measure Code Lookup](../table/7022.md#fields) | Specifies the unit of measure for the product. <small>from the table field</small> |
|  | Minimum Quantity | [Minimum Quantity](../table/7022.md#fields) | Specifies the minimum quantity of the product. <small>from the table field</small> |
|  | Amount Type | [Amount Type](../table/7022.md#fields) | Specifies whether the price list line defines prices, discounts, or both. <small>from the table field</small> |
|  | Existing Unit Price | [Existing Unit Price](../table/7022.md#fields) | Specifies the current unit price of the product. <small>from the table field</small> |
|  | New Unit Price | [Unit Price](../table/7022.md#fields) | Specifies the new unit price of the product. <small>from the table field</small> |
|  | Cost Factor | [Cost Factor](../table/7022.md#fields) | Specifies the unit cost factor for project-related prices, if you have agreed with your customer that he should pay certain item usage by cost value plus a certain percent value to cover your overhead expenses. <small>from the table field</small> |
|  | Existing Direct Unit Cost | [Existing Direct Unit Cost](../table/7022.md#fields) | Specifies the current direct unit cost of the product. <small>from the table field</small> |
|  | New Direct Unit Cost | [Direct Unit Cost](../table/7022.md#fields) | Specifies the new direct unit cost of the product. <small>from the table field</small> |
|  | Existing Unit Cost | [Existing Unit Cost](../table/7022.md#fields) | Specifies the current unit cost of the product. <small>from the table field</small> |
|  | Unit Cost | [Unit Cost](../table/7022.md#fields) | Specifies the unit cost of the resource. <small>from the table field</small> |
|  | Line Discount % | [Line Discount %](../table/7022.md#fields) | Specifies the line discount percentage for the product. <small>from the table field</small> |
|  | Starting Date | [Starting Date](../table/7022.md#fields) | Specifies the date from which the price is valid. <small>from the table field</small> |
|  | Ending Date | [Ending Date](../table/7022.md#fields) | Specifies the last date that the price is valid. <small>from the table field</small> |
|  | Allow Line Disc. | [Allow Line Disc.](../table/7022.md#fields) | Specifies if a line discount will be calculated when the price is offered. <small>from the table field</small> |
|  | Allow Invoice Disc. | [Allow Invoice Disc.](../table/7022.md#fields) | Specifies if an invoice discount will be calculated when the price is offered. <small>from the table field</small> |
|  | VAT Bus. Posting Gr. (Price) | [VAT Bus. Posting Gr. (Price)](../table/7022.md#fields) | Specifies the VAT business posting group for customers for whom you want the price (which includes VAT) to apply. |
|  | Price Includes VAT | [Price Includes VAT](../table/7022.md#fields) | Specifies if the price includes VAT. <small>from the table field</small> |

## Actions

| Group | Action | ToolTip | Runs |
|---|---|---|---|
| Navigation | Open Price List | View or edit the price list. |  |
| Functions | Suggest Lines | Creates the sales price list lines based on the unit price 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. |  |
|  | Implement Price Change | Update the alternate prices with the ones in the Price Worksheet window. |  |
| Page | Edit in Excel | Send the data in the worksheet to an Excel file for analysis or editing. |  |

## Events published

- `OnAfterGetDefaults(var Result: Text; TempWorksheetPriceListHeader: Record "Price List Header")` (integration)
- `OnBeforeOnInit()` (integration)
- `OnBeforeOpenPage(var TempWorksheetPriceListHeader: Record "Price List Header" temporary; var TempWorksheetPriceListLine: Record "Price List Line" temporary; var UpdateMultiplePriceLists: Boolean)` (integration)

## Procedures

- `SetPriceType(NewPriceType: Enum "Price Type")`
- `SetDefaults(PriceListHeader: Record "Price List Header")`

Plus 18 local procedures.

## Triggers

OnInit, OnNewRecord, OnOpenPage, OnAfterGetRecord, OnAfterGetCurrRecord

## Relations

- source table [Table 7022 "Price Worksheet Line"](../table/7022.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 7017 "Price List Management"](../codeunit/7017.md) (3 calls: `OnOpenPage → VerifySourceGroupInLines`, `SetDefaultPriceListCode → GetDefaultPriceListCode`, `SetDefaultPriceListCode → IsAllowedEditingActivePrice`)
- [Codeunit 6723 "Server Setting"](../codeunit/6723.md) (1 call: `OnOpenPage → GetIsSaasExcelAddinEnabled`)
- [Codeunit 7049 "Feature - Price Calculation"](../codeunit/7049.md) (1 call: `OnInit → FailIfFeatureDisabled`)

## Across versions

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

## Documented on Microsoft Learn

- [Record special sales prices and discounts](https://learn.microsoft.com/dynamics365/business-central/sales-how-record-sales-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: "Price Worksheet")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
