---
id: object/page/97
type: object
title: Page 97 "Purchase Quote Subform"
summary: Page 97 "Purchase Quote Subform" in Base Application (Microsoft.Purchases.Document). 11 public procedures, 12 events. Present since at least BC23, still in BC30, changed in BC24, 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: 69ab9607b59f9d86046a5763eb386c71e1cd11a68abe02b7f32f7f622a0e39fc
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Purchases/Document/PurchaseQuoteSubform.Page.al
    title: src/Layers/W1/BaseApp/Purchases/Document/PurchaseQuoteSubform.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/purchasing-how-request-quotes
    title: Create a purchase quote to request an offer
    date: null
    commit: null
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/purchasing-how-request-quotes
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/purchasing
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/8959
object_type: page
object_id: 97
name: Purchase Quote Subform
caption: Lines
namespace: Microsoft.Purchases.Document
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "26"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids:
  - docs/learn-smb-docs/business-central/purchasing-how-request-quotes.md
counts:
  fields: 0
  procedures: 32
  events: 12
  subscribers: 0
  controls: 68
  actions: 17
relations:
  out: 1
  referenced_by: 0
  pages: 0
  extended_by: 1
  event_subscribers: 0
  calls: 11
  called_by: 0
  implements: 0
---

# Page 97 "Purchase Quote Subform"

> Page 97 "Purchase Quote Subform" in Base Application (Microsoft.Purchases.Document). 11 public procedures, 12 events. Present since at least BC23, still in BC30, changed in BC24, BC26.

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

## Properties

| Property | Value |
|---|---|
| Caption | Lines |
| SourceTable | Purchase Line |
| PageType | ListPart |

## 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 |
|---|---|---|---|
| Control1 | Type | [Type](../table/39.md#fields) | Specifies the line type. <small>from the table field</small> |
|  | Type | `TypeAsText` | Specifies the type of entity that will be posted for this purchase line, such as Item or G/L Account. |
|  | No. | [No.](../table/39.md#fields) | Specifies the number of a general ledger account, item, additional cost, or fixed asset, depending on what you selected in the Type field. |
|  | Item Reference No. | [Item Reference No.](../table/39.md#fields) | Specifies the referenced item number. <small>from the table field</small> |
|  | Variant Code | [Variant Code](../table/39.md#fields) | Specifies the variant of the item on the line. <small>from the table field</small> |
|  | Nonstock | [Nonstock](../table/39.md#fields) | Specifies that this item is a catalog item. <small>from the table field</small> |
|  | Gen. Bus. Posting Group | [Gen. Bus. Posting Group](../table/39.md#fields) | Specifies the vendor's or customer's trade type to link transactions made for this business partner with the appropriate general ledger account according to the general posting setup. <small>from the table field</small> |
|  | Gen. Prod. Posting Group | [Gen. Prod. Posting Group](../table/39.md#fields) | Specifies the item's product type to link transactions made for this item with the appropriate general ledger account according to the general posting setup. <small>from the table field</small> |
|  | VAT Bus. Posting Group | [VAT Bus. Posting Group](../table/39.md#fields) | Specifies the vendor's VAT specification to link transactions made for this vendor with the appropriate general ledger account according to the VAT posting setup. <small>from the table field</small> |
|  | VAT Prod. Posting Group | [VAT Prod. Posting Group](../table/39.md#fields) | Specifies the VAT product posting group. Links business transactions made for the item, resource, or G/L account with the general ledger, to account for VAT amounts resulting from trade with that record. <small>from the table field</small> |
|  | Description | [Description](../table/39.md#fields) | Specifies a description of the entry of the product to be purchased. To add a non-transactional text line, fill in the Description field only. <small>from the table field</small> |
|  | Description 2 | [Description 2](../table/39.md#fields) | Specifies information in addition to the description. <small>from the table field</small> |
|  | Location Code | [Location Code](../table/39.md#fields) | Specifies a code for the location where you want to receive the items. |
|  | Quantity | [Quantity](../table/39.md#fields) | Specifies the number of units of the item specified on the line. <small>from the table field</small> |
|  | Unit of Measure Code | [Unit of Measure Code](../table/39.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> |
|  | Unit of Measure | [Unit of Measure](../table/39.md#fields) | Specifies the unit of measure. <small>from the table field</small> |
|  | Direct Unit Cost | [Direct Unit Cost](../table/39.md#fields) | Specifies the cost of one unit of the selected item or resource. <small>from the table field</small> |
|  | Indirect Cost % | [Indirect Cost %](../table/39.md#fields) | Specifies the percentage of the item's last purchase cost that includes indirect costs, such as freight that is associated with the purchase of the item. <small>from the table field</small> |
|  | Unit Cost (LCY) | [Unit Cost (LCY)](../table/39.md#fields) | Specifies the cost, in LCY, of one unit of the item or resource on the line. |
|  | Unit Price (LCY) | [Unit Price (LCY)](../table/39.md#fields) | Specifies the price, in LCY, 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. |
|  | Tax Liable | [Tax Liable](../table/39.md#fields) | Specifies if this vendor charges you sales tax for purchases. <small>from the table field</small> |
|  | Tax Area Code | [Tax Area Code](../table/39.md#fields) | Specifies the tax area that is used to calculate and post sales tax. <small>from the table field</small> |
|  | Tax Group Code | [Tax Group Code](../table/39.md#fields) | Specifies the tax group that is used to calculate and post sales tax. <small>from the table field</small> |
|  | Use Tax | [Use Tax](../table/39.md#fields) | Specifies a U.S. sales tax that is paid on items purchased by a company that are used by the company, instead of being sold to a customer. <small>from the table field</small> |
|  | Line Discount % | [Line Discount %](../table/39.md#fields) | Specifies the discount percentage that is granted for the item on the line. <small>from the table field</small> |
|  | Line Amount | [Line Amount](../table/39.md#fields) | Specifies the net amount, excluding any invoice discount amount, that must be paid for products on the line. <small>from the table field</small> |
|  | Line Discount Amount | [Line Discount Amount](../table/39.md#fields) | Specifies the discount amount that is granted for the item on the line. <small>from the table field</small> |
|  | Allow Invoice Disc. | [Allow Invoice Disc.](../table/39.md#fields) | Specifies if the invoice line is included when the invoice discount is calculated. <small>from the table field</small> |
|  | Allow Item Charge Assignment | [Allow Item Charge Assignment](../table/39.md#fields) | Specifies that you can assign item charges to this line. <small>from the table field</small> |
|  | Qty. to Assign | [Qty. to Assign](../table/39.md#fields) | Specifies how many units of the item charge will be assigned to the line. <small>from the table field</small> |
|  | Qty. Assigned | [Qty. Assigned](../table/39.md#fields) | Specifies how much of the item charge that has been assigned. <small>from the table field</small> |
|  | Blanket Order No. | [Blanket Order No.](../table/39.md#fields) | Specifies the number of the blanket order that the record originates from. <small>from the table field</small> |
|  | Blanket Order Line No. | [Blanket Order Line No.](../table/39.md#fields) | Specifies the number of the blanket order line that the record originates from. <small>from the table field</small> |
|  | Appl.-to Item Entry | [Appl.-to Item Entry](../table/39.md#fields) | Specifies the number of the item ledger entry that the document or journal line is applied to. |
|  | Shortcut Dimension 1 Code | [Shortcut Dimension 1 Code](../table/39.md#fields) | Specifies the code for Shortcut Dimension 1, which is one of two global dimension codes that you set up in the General Ledger Setup window. <small>from the table field</small> |
|  | Shortcut Dimension 2 Code | [Shortcut Dimension 2 Code](../table/39.md#fields) | Specifies the code for Shortcut Dimension 2, which is one of two global dimension codes that you set up in the General Ledger Setup window. <small>from the table field</small> |
|  | ShortcutDimCode3 | `ShortcutDimCode[3]` | — |
|  | ShortcutDimCode4 | `ShortcutDimCode[4]` | — |
|  | ShortcutDimCode5 | `ShortcutDimCode[5]` | — |
|  | ShortcutDimCode6 | `ShortcutDimCode[6]` | — |
|  | ShortcutDimCode7 | `ShortcutDimCode[7]` | — |
|  | ShortcutDimCode8 | `ShortcutDimCode[8]` | — |
|  | Unit Gross Weight | [Gross Weight](../table/39.md#fields) | Specifies the gross weight of one unit of the item. In the purchase statistics window, the gross weight on the line is included in the total gross weight of all the lines for the particular purchase document. <small>from the table field</small> |
|  | Unit Net Weight | [Net Weight](../table/39.md#fields) | Specifies the net weight of one unit of the item. In the purchase statistics window, the net weight on the line is included in the total net weight of all the lines for the particular purchase document. <small>from the table field</small> |
|  | Unit Volume | [Unit Volume](../table/39.md#fields) | Specifies the volume of one unit of the item. In the purchase statistics window, the volume of one unit of the item on the line is included in the total volume of all the lines for the particular purchase document. <small>from the table field</small> |
|  | Units per Parcel | [Units per Parcel](../table/39.md#fields) | Specifies the number of units per parcel of the item. In the purchase statistics window, the number of units per parcel on the line helps to determine the total number of units for all the lines for the particular purchase document. <small>from the table field</small> |
|  | Expected Receipt Date | [Expected Receipt Date](../table/39.md#fields) | Specifies the date you expect the items to be available in your warehouse. If you leave the field blank, it will be calculated as follows: Planned Receipt Date + Safety Lead Time + Inbound Warehouse Handling Time = Expected Receipt Date. |
|  | Allocation Account No. | [Selected Alloc. Account No.](../table/39.md#fields) | Specifies the allocation account number that will be used to distribute the amounts during the posting process. <small>from the table field</small> |
|  | Job No. | [Job No.](../table/39.md#fields) | Specifies the number of the related project. If you fill in this field and the Project Task No. field, then a project ledger entry will be posted together with the purchase line. <small>from the table field</small> |
|  | Job Task No. | [Job Task No.](../table/39.md#fields) | Specifies the number of the related project task. <small>from the table field</small> |
|  | Job Planning Line No. | [Job Planning Line No.](../table/39.md#fields) | Specifies the project planning line number that the usage should be linked to when the project journal is posted. You can only link to project planning lines that have the Apply Usage Link option enabled. <small>from the table field</small> |
|  | Job Line Type | [Job Line Type](../table/39.md#fields) | Specifies the type of planning line that was created when the project ledger entry is posted from the purchase line. If the field is empty, no planning lines were created for this entry. |
|  | Job Unit Price | [Job Unit Price](../table/39.md#fields) | Specifies the sales price per unit that applies to the item or general ledger expense that will be posted. <small>from the table field</small> |
|  | Job Line Amount | [Job Line Amount](../table/39.md#fields) | Specifies the line amount of the project ledger entry that is related to the purchase line. <small>from the table field</small> |
|  | Job Line Discount Amount | [Job Line Discount Amount](../table/39.md#fields) | Specifies the line discount amount of the project ledger entry that is related to the purchase line. <small>from the table field</small> |
|  | Job Line Discount % | [Job Line Discount %](../table/39.md#fields) | Specifies the line discount percentage of the project ledger entry that is related to the purchase line. <small>from the table field</small> |
|  | Job Total Price | [Job Total Price](../table/39.md#fields) | Specifies the gross amount of the line that the purchase line applies to. <small>from the table field</small> |
|  | Job Unit Price (LCY) | [Job Unit Price (LCY)](../table/39.md#fields) | Specifies the sales price per unit that applies to the item or general ledger expense that will be posted. |
|  | Job Total Price (LCY) | [Job Total Price (LCY)](../table/39.md#fields) | Specifies the gross amount of the line, in the local currency. |
|  | Job Line Amount (LCY) | [Job Line Amount (LCY)](../table/39.md#fields) | Specifies the line amount of the project ledger entry that is related to the purchase line. |
|  | Job Line Disc. Amount (LCY) | [Job Line Disc. Amount (LCY)](../table/39.md#fields) | Specifies the line discount amount of the project ledger entry that is related to the purchase line. |
|  | Spend Request No. | [Spend Request No.](../table/39.md#fields) | Specifies the spend request that this purchase document relates to. <small>from the table field</small> |
| Control31 | Subtotal Excl. VAT | `TotalPurchaseLine."Line Amount"` | Specifies the sum of the value in the Line Amount Excl. VAT field on all lines in the document. |
|  | Invoice Discount Amount | `InvoiceDiscountAmount` | Specifies a discount amount that is deducted from the value of the Total Incl. VAT field, based on purchase lines where the Allow Invoice Disc. field is selected. You can enter or change the amount manually. |
|  | Invoice Discount % | `InvoiceDiscountPct` | Specifies a discount percentage that is applied to the invoice, based on purchase lines where the Allow Invoice Disc. field is selected. The percentage and criteria are defined in the Vendor Invoice Discounts page, but you can enter or change the percentage manually. |
| Control17 | Total Amount Excl. VAT | `TotalPurchaseLine.Amount` | Specifies the sum of the value in the Line Amount Excl. VAT field on all lines in the document minus any discount amount in the Invoice Discount Amount field. |
|  | Total VAT | `VATAmount` | Specifies the sum of VAT amounts on all lines in the document. |
|  | Total Amount Incl. VAT | `TotalPurchaseLine."Amount Including VAT"` | Specifies the sum of the value in the Line Amount Incl. VAT field on all lines in the document minus any discount amount in the Invoice Discount Amount field. |

## Actions

| Group | Action | ToolTip | Runs |
|---|---|---|---|
| Processing | Select items | Add two or more items from the full list of your inventory items. |  |
| Functions | Explode BOM | Add a line for each component on the bill of materials for the selected item. For example, this is useful for selling the parent item as a kit. CAUTION: The line for the parent item will be deleted and only its description will display. To undo this action, delete the component lines and add a line ... |  |
|  | Insert Ext. Texts | Insert the extended item description that is set up for the item that is being processed on the line. |  |
| Item Availability by | Event | View how the actual and the projected available balance of an item will develop over time according to supply and demand events. |  |
|  | Period | View the projected quantity of the item over time according to time periods, such as day, week, or month. |  |
|  | Variant | View or edit the item's variants. Instead of setting up each color of an item as a separate item, you can set up the various colors as variants of the item. |  |
|  | Location | View the actual and projected quantity of the item per location. |  |
|  | Lot | View the current and projected quantity of the item in each lot. | [Page 520 "Item Availability by Lot No."](../page/520.md) |
|  | BOM Level | View availability figures for items on bills of materials that show how many units of a parent item you can make based on the availability of child items. |  |
| Line | Dimensions | View or edit dimensions, such as area, project, or department, that you can assign to sales and purchase documents to distribute costs and analyze transaction history. |  |
|  | Comments | View or add comments for the record. |  |
|  | Item Charge Assignment | Record additional direct costs, for example for freight. This action is available only for Charge (Item) line types. |  |
|  | Item Tracking Lines | View or edit serial, lot and package numbers for the selected item. This action is available only for lines that contain an item. |  |
|  | Attachments | Add a file as an attachment. You can attach images as well as documents. |  |
|  | Redistribute Account Allocations | Use this action to redistribute the account allocations for this line. |  |
|  | Generate lines from Allocation Account Line | Use this action to replace the Allocation Account line with the actual lines that would be generated from the line itself. |  |
| Page | Edit in Excel | Send the data in the sub page to an Excel file for analysis or editing |  |

## Events published

- `OnAfterNoOnAfterValidate(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterUpdateEditableOnRow(PurchaseLine: Record "Purchase Line"; var IsCommentLine: Boolean; var IsBlankNumber: Boolean)` (integration)
- `OnAfterValidateShortcutDimCode(var PurchaseLine: Record "Purchase Line"; var ShortcutDimCode: array[8] of Code[20]; DimIndex: Integer)` (integration)
- `OnBeforeInsertExtendedText(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckSendLineInvoiceDiscountResetNotification(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeSetDefaultType(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateTypeText(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnItemReferenceNoOnLookup(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeSetOpenPage()` (integration)
- `OnAfterSetDimensionsVisibility()` (integration)
- `OnBeforeDeltaUpdateTotals(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeDeleteReservationEntries(var PurchaseLine: Record "Purchase Line")` (integration)

## Procedures

- `ApproveCalcInvDisc()`
- `InsertExtendedText(Unconditionally: Boolean)`
- `UpdateForm(SetSaveRecord: Boolean)`
- `NoOnAfterValidate()`
- `RedistributeTotalsOnAfterValidate()`
- `ClearTotalPurchaseHeader()`
- `CalculateTotals()`
- `DeltaUpdateTotals()`
- `ForceTotalsCalculation()`
- `UpdateEditableOnRow()`
- `UpdateTypeText()`

Plus 9 local procedures.

## Triggers

OnAfterGetCurrRecord, OnAfterGetRecord, OnDeleteRecord, OnFindRecord, OnInit, OnModifyRecord, OnNewRecord, OnOpenPage

## Relations

- source table [Table 39 "Purchase Line"](../table/39.md)

## Extended by

- [Page extension 99000766 "Mfg. Purchase Quote Subform"](../pageextension/99000766.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 57 "Document Totals"](../codeunit/57.md) (13 calls: `ApproveCalcInvDisc → PurchaseDocTotalsNotUpToDate`, `CalculateTotals → CalculatePurchaseSubPageTotals`, `CalculateTotals → PurchaseCheckIfDocumentChanged`, …)
- [Codeunit 378 "Transfer Extended Text"](../codeunit/378.md) (3 calls: `InsertExtendedText → InsertPurchExtText`, `InsertExtendedText → MakeUpdate`, `InsertExtendedText → PurchCheckIfAnyExtText`)
- [Codeunit 99000834 "Purch. Line-Reserve"](../codeunit/99000834.md) (2 calls: `OnDeleteRecord → DeleteLine`, `OnDeleteRecord → DeleteLineConfirm`)
- [Codeunit 2675 "Allocation Account Mgt."](../codeunit/2675.md) (1 call: `OnOpenPage → UseAllocationAccountNoField`)
- [Codeunit 27 "Confirm Management"](../codeunit/27.md) (1 call: `ValidateInvoiceDiscountAmount → GetResponseOrDefault`)
- [Codeunit 408 "DimensionManagement"](../codeunit/408.md) (1 call: `SetDimensionsVisibility → UseShortcutDims`)
- [Codeunit 66 "Purch - Calc Disc. By Type"](../codeunit/66.md) (1 call: `ValidateInvoiceDiscountAmount → ApplyInvDiscBasedOnAmt`)
- [Codeunit 6723 "Server Setting"](../codeunit/6723.md) (1 call: `SetOpenPage → GetIsSaasExcelAddinEnabled`)
- [Codeunit 71 "Purch.-Disc. (Yes/No)"](../codeunit/71.md) (1 call: `ApproveCalcInvDisc → (object)`)
- [Codeunit 73 "Purch.-Explode BOM"](../codeunit/73.md) (1 call: `ExplodeBOM → (object)`)
- [Codeunit 9179 "Application Area Mgmt. Facade"](../codeunit/9179.md) (1 call: `OnInit → IsFoundationEnabled`)

## Recent changes

- 2026-07-31 [#8959 Deliverable 638799: Spend Requests in Base App](../../changes/bcapps/8959.md) (main, BC30, feature)

## Across versions

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

## Documented on Microsoft Learn

- [Create a purchase quote to request an offer](https://learn.microsoft.com/dynamics365/business-central/purchasing-how-request-quotes)

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 Quote Subform")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
