---
id: object/table/39
type: object
title: Table 39 "Purchase Line"
summary: Table 39 "Purchase Line" in Base Application (Microsoft.Purchases.Document). 217 fields, 184 public procedures, 420 events. Present since at least BC23, still in BC30, changed in BC24-30.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "30"
  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: 094ab1ba4ea71792f3e3e176ed8fb243295c111610759e66f4f0c16261d75ab4
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Purchases/Document/PurchaseLine.Table.al
    title: src/Layers/W1/BaseApp/Purchases/Document/PurchaseLine.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/purchasing-how-purchase-products-sale
    - https://learn.microsoft.com/dynamics365/business-central/purchasing-how-record-purchases
    - https://learn.microsoft.com/dynamics365/business-central/quick-start-procurement
    - https://learn.microsoft.com/dynamics365/business-central/ad-hoc-analysis-purchasing
    - https://learn.microsoft.com/dynamics365/business-central/purchasing-analytics-overview
    - https://learn.microsoft.com/dynamics365/business-central/purchasing-how-request-quotes
    - https://learn.microsoft.com/dynamics365/business-central/projects-how-manage-project-supplies
    - https://learn.microsoft.com/dynamics365/business-central/inventory-how-availability-overview
    - https://learn.microsoft.com/dynamics365/business-central/purchasing-how-process-purchase-returns-cancellations
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/inventory
    - topic/business-central/business-functionality/project-management
    - topic/business-central/business-functionality/purchasing
    - topic/business-central/business-functionality/purchasing/purchasing-analytics
    - topic/business-central/get-started/quick-starts
  localizations:
    - localization/at
    - localization/au
    - localization/be
    - localization/ca
    - localization/ch
    - localization/de
    - localization/es
    - localization/fi
    - localization/gb
    - localization/it
    - localization/mx
    - localization/nl
    - localization/no
    - localization/nz
    - localization/ru
    - localization/se
    - localization/us
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/11436
    - change/bcapps/11208
    - change/bcapps/11095
    - change/bcapps/10381
    - change/bcapps/10700
    - change/bcapps/10528
    - change/bcapps/9444
    - change/bcapps/10631
    - change/bcapps/10176
    - change/bcapps/9947
    - change/bcapps/9984
    - change/bcapps/9985
    - change/bcapps/9688
    - change/bcapps/8959
object_type: table
object_id: 39
name: Purchase Line
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"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
source_major: "29"
obsolete: null
countries:
  - at
  - au
  - be
  - ca
  - ch
  - de
  - es
  - fi
  - gb
  - it
  - mx
  - nl
  - "no"
  - nz
  - ru
  - se
  - us
ms_search_form_ids: []
counts:
  fields: 217
  procedures: 701
  events: 420
  subscribers: 0
relations:
  out: 69
  referenced_by: 63
  pages: 20
  extended_by: 8
  event_subscribers: 76
  calls: 39
  called_by: 0
  implements: 0
---

# Table 39 "Purchase Line"

> Table 39 "Purchase Line" in Base Application (Microsoft.Purchases.Document). 217 fields, 184 public procedures, 420 events. Present since at least BC23, still in BC30, changed in BC24-30.

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

Learn documents this table through its pages: [Page 56 "Purchase Orders"](../page/56.md) (3 Learn pages), [Page 518 "Purchase Lines"](../page/518.md) (2), [Page 97 "Purchase Quote Subform"](../page/97.md) (1), [Page 98 "Purch. Cr. Memo Subform"](../page/98.md) (1), [Page 501 "Available - Purchase Lines"](../page/501.md) (1), [Page 6643 "Purchase Return Orders"](../page/6643.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | Purchase Line |
| DataClassification | CustomerContent |
| Permissions | TableData "Purchase Line" = m |

## 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 | Document Type | Enum "Purchase Document Type" | Specifies the type of document that you are about to create. | enum [Enum 38 "Purchase Document Type"](../enum/38.md) |
| 2 | Buy-from Vendor No. | Code[20] | Specifies the name of the vendor who delivered the items. | TableRelation [Table 23 "Vendor"](../table/23.md); not editable |
| 3 | Document No. | Code[20] | Specifies the document number. | TableRelation [Table 38 "Purchase Header"](../table/38.md) ("Purchase Header"."No." where("Document Type" = field("Document Type"))) |
| 4 | Line No. | Integer | Specifies the line's number. |  |
| 5 | Type | Enum "Purchase Line Type" | Specifies the line type. | enum [Enum 39 "Purchase Line Type"](../enum/39.md) |
| 6 | No. | Code[20] | Specifies the number of the involved entry or record, according to the specified number series. | TableRelation [Table 15 "G/L Account"](../table/15.md), [Table 7 "Standard Text"](../table/7.md) (if (Type = const(" ")) "Standard Text" else if (Type = const("G/L Account"), "System-Created Entry" = const(false)) "G/L Account" where("Direct Posting" = const(true), "Account Type" = const(Posting), Blocked = const(false)) else if (Type = const("G/L Account"), "System-Created Entry" = const(true))...) |
| 7 | Location Code | Code[10] | Specifies the code for the location where the items on the line will be located. | TableRelation [Table 14 "Location"](../table/14.md) (Location where("Use As In-Transit" = const(false))) |
| 8 | Posting Group | Code[20] | — | TableRelation [Table 5606 "FA Posting Group"](../table/5606.md), [Table 94 "Inventory Posting Group"](../table/94.md) (if (Type = const(Item)) "Inventory Posting Group" else if (Type = const("Fixed Asset")) "FA Posting Group"); not editable |
| 10 | Expected Receipt Date | Date | Specifies the date that you expect the items to be available in your warehouse. |  |
| 11 | Description | Text[100] | 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. | TableRelation [Table 15 "G/L Account"](../table/15.md) (if (Type = const("G/L Account"), "System-Created Entry" = const(false)) "G/L Account".Name where("Direct Posting" = const(true), "Account Type" = const(Posting), Blocked = const(false)) else if (Type = const("G/L Account"), "System-Created Entry" = const(true)) "G/L Account".Name else if (Type = con...) |
| 12 | Description 2 | Text[50] | Specifies information in addition to the description. |  |
| 13 | Unit of Measure | Text[50] | Specifies the unit of measure. |  |
| 15 | Quantity | Decimal | Specifies the number of units of the item specified on the line. |  |
| 16 | Outstanding Quantity | Decimal | Specifies how many units on the order line have not yet been received. | not editable |
| 17 | Qty. to Invoice | Decimal | Specifies the quantity that remains to be invoiced. It is calculated as Quantity - Qty. Invoiced. |  |
| 18 | Qty. to Receive | Decimal | Specifies the quantity of items that remains to be received. |  |
| 22 | Direct Unit Cost | Decimal | Specifies the cost of one unit of the selected item or resource. |  |
| 23 | Unit Cost (LCY) | Decimal | Specifies the cost, in LCY, of one unit of the item or resource on the line. |  |
| 25 | VAT % | Decimal | — | not editable |
| 27 | Line Discount % | Decimal | Specifies the discount percentage that is granted for the item on the line. |  |
| 28 | Line Discount Amount | Decimal | Specifies the discount amount that is granted for the item on the line. |  |
| 29 | Amount | Decimal | Specifies the net amount, excluding any invoice discount amount, that must be paid for products on the line. | not editable |
| 30 | Amount Including VAT | Decimal | — | not editable |
| 31 | Unit Price (LCY) | Decimal | 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. |  |
| 32 | Allow Invoice Disc. | Boolean | Specifies if the invoice line is included when the invoice discount is calculated. |  |
| 34 | Gross Weight | Decimal | 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. |  |
| 35 | Net Weight | Decimal | 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. |  |
| 36 | Units per Parcel | Decimal | 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. |  |
| 37 | Unit Volume | Decimal | 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. |  |
| 38 | Appl.-to Item Entry | Integer | Specifies the number of the item ledger entry that the document or journal line is applied -to. |  |
| 40 | Shortcut Dimension 1 Code | Code[20] | 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. | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(1), Blocked = const(false))) |
| 41 | Shortcut Dimension 2 Code | Code[20] | 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. | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(2), Blocked = const(false))) |
| 45 | Job No. | Code[20] | 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. | TableRelation [Table 167 "Job"](../table/167.md) |
| 54 | Indirect Cost % | Decimal | 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. |  |
| 56 | Recalculate Invoice Disc. | Boolean | — | not editable |
| 57 | Outstanding Amount | Decimal | — | not editable |
| 58 | Qty. Rcd. Not Invoiced | Decimal | — | not editable |
| 59 | Amt. Rcd. Not Invoiced | Decimal | — | not editable |
| 60 | Quantity Received | Decimal | Specifies how many units of the item on the line have been posted as received. | not editable |
| 61 | Quantity Invoiced | Decimal | Specifies how many units of the item on the line have been posted as invoiced. | not editable |
| 63 | Receipt No. | Code[20] | — | not editable |
| 64 | Receipt Line No. | Integer | — | not editable |
| 65 | Order No. | Code[20] | Specifies the order number this line is associated with. |  |
| 66 | Order Line No. | Integer | — |  |
| 67 | Profit % | Decimal | — | not editable |
| 68 | Pay-to Vendor No. | Code[20] | — | TableRelation [Table 23 "Vendor"](../table/23.md); not editable |
| 69 | Inv. Discount Amount | Decimal | Specifies the total calculated invoice discount amount for the line. | not editable |
| 70 | Vendor Item No. | Text[50] | — |  |
| 71 | Sales Order No. | Code[20] | — | TableRelation [Table 36 "Sales Header"](../table/36.md) (if ("Drop Shipment" = const(true)) "Sales Header"."No." where("Document Type" = const(Order))); not editable |
| 72 | Sales Order Line No. | Integer | — | TableRelation [Table 37 "Sales Line"](../table/37.md) (if ("Drop Shipment" = const(true)) "Sales Line"."Line No." where("Document Type" = const(Order), "Document No." = field("Sales Order No."))); not editable |
| 73 | Drop Shipment | Boolean | Specifies if your vendor ships the items directly to your customer. | not editable |
| 74 | Gen. Bus. Posting Group | Code[20] | 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. | TableRelation [Table 250 "Gen. Business Posting Group"](../table/250.md) (Gen. Business Posting Group) |
| 75 | Gen. Prod. Posting Group | Code[20] | 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. | TableRelation [Table 251 "Gen. Product Posting Group"](../table/251.md) (Gen. Product Posting Group) |
| 77 | VAT Calculation Type | Enum "Tax Calculation Type" | — | enum [Enum 254 "Tax Calculation Type"](../enum/254.md); not editable |
| 78 | Transaction Type | Code[10] | — | TableRelation [Table 258 "Transaction Type"](../table/258.md) (Transaction Type) |
| 79 | Transport Method | Code[10] | — | TableRelation [Table 259 "Transport Method"](../table/259.md) (Transport Method) |
| 80 | Attached to Line No. | Integer | Specifies the line number to which this purchase line is attached. | TableRelation [Table 39 "Purchase Line"](../table/39.md) ("Purchase Line"."Line No." where("Document Type" = field("Document Type"), "Document No." = field("Document No."))); not editable |
| 81 | Entry Point | Code[10] | — | TableRelation [Table 282 "Entry/Exit Point"](../table/282.md) (Entry/Exit Point) |
| 82 | Area | Code[10] | — | TableRelation [Table 284 "Area"](../table/284.md) |
| 83 | Transaction Specification | Code[10] | — | TableRelation [Table 285 "Transaction Specification"](../table/285.md) (Transaction Specification) |
| 85 | Tax Area Code | Code[20] | Specifies the tax area that is used to calculate and post sales tax. | TableRelation [Table 318 "Tax Area"](../table/318.md) (Tax Area) |
| 86 | Tax Liable | Boolean | Specifies if this vendor charges you sales tax for purchases. |  |
| 87 | Tax Group Code | Code[20] | Specifies the tax group that is used to calculate and post sales tax. | TableRelation [Table 321 "Tax Group"](../table/321.md) (Tax Group) |
| 88 | Use Tax | Boolean | 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. |  |
| 89 | VAT Bus. Posting Group | Code[20] | 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. | TableRelation [Table 323 "VAT Business Posting Group"](../table/323.md) (VAT Business Posting Group) |
| 90 | VAT Prod. Posting Group | Code[20] | 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. | TableRelation [Table 324 "VAT Product Posting Group"](../table/324.md) (VAT Product Posting Group) |
| 91 | Currency Code | Code[10] | Specifies the currency that is used on the entry. | TableRelation [Table 4 "Currency"](../table/4.md); not editable |
| 92 | Outstanding Amount (LCY) | Decimal | Specifies the amount for the items on the order that have not yet been received in LCY. | not editable |
| 93 | Amt. Rcd. Not Invoiced (LCY) | Decimal | Specifies the sum, in LCY, for items that have been received but have not yet been invoiced. The value in the Amt. Rcd. Not Invoiced (LCY) field is used for entries in the Purchase Line table of document type Order to calculate and update the contents of this field. | not editable |
| 95 | Reserved Quantity | Decimal | Specifies how many item units on this line have been reserved. | FlowField: sum("Reservation Entry".Quantity where("Source ID" = field("Document No."), "Source Ref. No." = field("Line No."), "Source Type" = const(39), #pragma warning disable AL0603 "Source Subtype" = field("Document Type"), #pragma warning restore "Reservation Status" = const(Reservation))); not editable |
| 97 | Blanket Order No. | Code[20] | Specifies the number of the blanket order that the record originates from. | TableRelation [Table 38 "Purchase Header"](../table/38.md) ("Purchase Header"."No." where("Document Type" = const("Blanket Order"))) |
| 98 | Blanket Order Line No. | Integer | Specifies the number of the blanket order line that the record originates from. | TableRelation [Table 39 "Purchase Line"](../table/39.md) ("Purchase Line"."Line No." where("Document Type" = const("Blanket Order"), "Document No." = field("Blanket Order No."))) |
| 99 | VAT Base Amount | Decimal | — | not editable |
| 100 | Unit Cost | Decimal | — | not editable |
| 101 | System-Created Entry | Boolean | — | not editable |
| 103 | Line Amount | Decimal | Specifies the net amount, excluding any invoice discount amount, that must be paid for products on the line. |  |
| 104 | VAT Difference | Decimal | — | not editable |
| 105 | Inv. Disc. Amount to Invoice | Decimal | Specifies the actual invoice discount amount that will be posted for the line on the invoice. | not editable |
| 106 | VAT Identifier | Code[20] | — | not editable |
| 107 | IC Partner Ref. Type | Enum "IC Partner Reference Type" | Specifies the item or account in your IC partner's company that corresponds to the item or account on the line. | enum [Enum 107 "IC Partner Reference Type"](../enum/107.md) |
| 108 | IC Partner Reference | Code[20] | Specifies the IC partner. If the line is being sent to one of your intercompany partners, this field is used together with the IC Partner Ref. Type field to indicate the item or account in your partner's company that corresponds to the line. |  |
| 109 | Prepayment % | Decimal | Specifies the prepayment percentage to use to calculate the prepayment for purchases. |  |
| 110 | Prepmt. Line Amount | Decimal | Specifies the prepayment amount of the line in the currency of the purchase document if a prepayment percentage is specified for the purchase line. |  |
| 111 | Prepmt. Amt. Inv. | Decimal | Specifies the prepayment amount that has already been invoiced to the customer for this purchase line. | not editable |
| 112 | Prepmt. Amt. Incl. VAT | Decimal | — | not editable |
| 113 | Prepayment Amount | Decimal | — | not editable |
| 114 | Prepmt. VAT Base Amt. | Decimal | — | not editable |
| 115 | Prepayment VAT % | Decimal | — | not editable |
| 116 | Prepmt. VAT Calc. Type | Enum "Tax Calculation Type" | — | enum [Enum 254 "Tax Calculation Type"](../enum/254.md); not editable |
| 117 | Prepayment VAT Identifier | Code[20] | — | not editable |
| 118 | Prepayment Tax Area Code | Code[20] | — | TableRelation [Table 318 "Tax Area"](../table/318.md) (Tax Area) |
| 119 | Prepayment Tax Liable | Boolean | — |  |
| 120 | Prepayment Tax Group Code | Code[20] | — | TableRelation [Table 321 "Tax Group"](../table/321.md) (Tax Group) |
| 121 | Prepmt Amt to Deduct | Decimal | Specifies the prepayment amount that has already been deducted from ordinary invoices posted for this purchase order line. |  |
| 122 | Prepmt Amt Deducted | Decimal | Specifies the prepayment amount that has already been deducted from ordinary invoices posted for this purchase order line. | not editable |
| 123 | Prepayment Line | Boolean | — | not editable |
| 124 | Prepmt. Amount Inv. Incl. VAT | Decimal | — | not editable |
| 129 | Prepmt. Amount Inv. (LCY) | Decimal | — | not editable |
| 130 | IC Partner Code | Code[20] | Specifies the code of the intercompany partner that the transaction is related to if the entry was created from an intercompany transaction. | TableRelation [Table 413 "IC Partner"](../table/413.md) (IC Partner) |
| 132 | Prepmt. VAT Amount Inv. (LCY) | Decimal | — | not editable |
| 135 | Prepayment VAT Difference | Decimal | — | not editable |
| 136 | Prepmt VAT Diff. to Deduct | Decimal | — | not editable |
| 137 | Prepmt VAT Diff. Deducted | Decimal | — | not editable |
| 138 | IC Item Reference No. | Code[50] | — |  |
| 140 | Outstanding Amt. Ex. VAT (LCY) | Decimal | — |  |
| 141 | A. Rcd. Not Inv. Ex. VAT (LCY) | Decimal | — |  |
| 145 | Pmt. Discount Amount | Decimal | — |  |
| 146 | Prepmt. Pmt. Discount Amount | Decimal | — | not editable |
| 147 | Spend Request No. | Code[20] | Specifies the spend request that this purchase document relates to. | TableRelation [Table 6840 "Spend Request"](../table/6840.md) ("Spend Request" where(Status = const(Approved), "Document Type" = const(" "))) |
| 148 | Spend Request Close | Boolean | Specifies that the spend request will be closed when the purchase document is posted. |  |
| 480 | Dimension Set ID | Integer | — | TableRelation [Table 480 "Dimension Set Entry"](../table/480.md) (Dimension Set Entry); not editable |
| 1001 | Job Task No. | Code[20] | Specifies the number of the related project task. | TableRelation [Table 1001 "Job Task"](../table/1001.md) ("Job Task"."Job Task No." where("Job No." = field("Job No."))) |
| 1002 | Job Line Type | Enum "Job Line Type" | Specifies a Project Planning Line together with the posting of a project ledger entry. | enum [Enum 1002 "Job Line Type"](../enum/1002.md) |
| 1003 | Job Unit Price | Decimal | Specifies the sales price per unit that applies to the item or general ledger expense that will be posted. |  |
| 1004 | Job Total Price | Decimal | Specifies the gross amount of the line that the purchase line applies to. | not editable |
| 1005 | Job Line Amount | Decimal | Specifies the line amount of the project ledger entry that is related to the purchase line. |  |
| 1006 | Job Line Discount Amount | Decimal | Specifies the line discount amount of the project ledger entry that is related to the purchase line. |  |
| 1007 | Job Line Discount % | Decimal | Specifies the line discount percentage of the project ledger entry that is related to the purchase line. |  |
| 1008 | Job Unit Price (LCY) | Decimal | Specifies the sales price per unit that applies to the item or general ledger expense that will be posted. <small>via [Page 54 "Purchase Order Subform"](../page/54.md)</small> | not editable |
| 1009 | Job Total Price (LCY) | Decimal | Specifies the gross amount of the line, in the local currency. <small>via [Page 54 "Purchase Order Subform"](../page/54.md)</small> | not editable |
| 1010 | Job Line Amount (LCY) | Decimal | Specifies the line amount of the project ledger entry that is related to the purchase line. <small>via [Page 54 "Purchase Order Subform"](../page/54.md)</small> | not editable |
| 1011 | Job Line Disc. Amount (LCY) | Decimal | Specifies the line discount amount of the project ledger entry that is related to the purchase line. <small>via [Page 54 "Purchase Order Subform"](../page/54.md)</small> | not editable |
| 1012 | Job Currency Factor | Decimal | Project Currency Factor <small>caption</small> |  |
| 1013 | Job Currency Code | Code[20] | Project Currency Code <small>caption</small> |  |
| 1019 | Job Planning Line No. | Integer | 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. |  |
| 1030 | Job Remaining Qty. | Decimal | Specifies the quantity that remains to complete a project. |  |
| 1031 | Job Remaining Qty. (Base) | Decimal | Project Remaining Qty. (Base) <small>caption</small> |  |
| 1700 | Deferral Code | Code[10] | Specifies the deferral template that governs how expenses paid with this purchase document are deferred to the different accounting periods when the expenses were incurred. | TableRelation [Table 1700 "Deferral Template"](../table/1700.md) ("Deferral Template"."Deferral Code") |
| 1702 | Returns Deferral Start Date | Date | Specifies the starting date of the returns deferral period. |  |
| 2675 | Selected Alloc. Account No. | Code[20] | Specifies the allocation account number that will be used to distribute the amounts during the posting process. | TableRelation [Table 2670 "Allocation Account"](../table/2670.md) (Allocation Account) |
| 2677 | Alloc. Acc. Modified by User | Boolean | Allocation Account Distributions Modified <small>caption</small> | FlowField: exist(Microsoft.Finance.AllocationAccount."Alloc. Acc. Manual Override" where("Parent System Id" = field(SystemId), "Parent Table Id" = const(Database::"Purchase Line"))) |
| 2678 | Allocation Account No. | Code[20] | Posting Allocation Account No. <small>caption</small> | TableRelation [Table 2670 "Allocation Account"](../table/2670.md) (Allocation Account) |
| 2679 | Alloc. Purch. Line SystemId | Guid | Allocation Purchase Line SystemId <small>caption</small> | DataClassification SystemMetadata |
| 2700 | Invoicing From Line SystemId | Guid | — | not editable; DataClassification SystemMetadata |
| 2701 | Matched Order Lines | Integer | Specifies the number of purchase order lines to which this line is matched. <small>via [Page 55 "Purch. Invoice Subform"](../page/55.md)</small> | FlowField: count("Matched Order Line" where("Document Line SystemId" = field(SystemId), "Matched Rcpt./Shpt. Line SysId" = const('00000000-0000-0000-0000-000000000000'))); not editable |
| 2702 | Matched Inv./Cr. Memo Lines | Integer | Specifies the number of purchase invoice lines to which this purchase order line is matched. <small>via [Page 54 "Purchase Order Subform"](../page/54.md)</small> | FlowField: count("Matched Order Line" where("Matched Order Line SystemId" = field(SystemId), "Matched Rcpt./Shpt. Line SysId" = const('00000000-0000-0000-0000-000000000000'))); not editable |
| 5402 | Variant Code | Code[10] | Specifies the variant of the item on the line. | TableRelation [Table 5401 "Item Variant"](../table/5401.md) (if (Type = const(Item), "Document Type" = filter(<> "Credit Memo" & <> "Return Order")) "Item Variant".Code where("Item No." = field("No."), Blocked = const(false), "Purchasing Blocked" = const(false)) else if (Type = const(Item), "Document Type" = filter("Credit Memo" \| "Return Order")) "Item Varia...) |
| 5403 | Bin Code | Code[20] | Specifies the bin where the items are picked or put away. | TableRelation [Table 7302 "Bin Content"](../table/7302.md) (if ("Document Type" = filter(Order \| Invoice), Quantity = filter(< 0)) "Bin Content"."Bin Code" where("Location Code" = field("Location Code"), "Item No." = field("No."), "Variant Code" = field("Variant Code")) else if ("Document Type" = filter("Return Order" \| "Credit Memo"), Quantity = filter(>= 0...) |
| 5404 | Qty. per Unit of Measure | Decimal | — | not editable |
| 5405 | Qty. Rounding Precision | Decimal | — | not editable |
| 5406 | Qty. Rounding Precision (Base) | Decimal | — | not editable |
| 5407 | 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 205 "Resource Unit of Measure"](../table/205.md), [Table 5404 "Item Unit of Measure"](../table/5404.md) (if (Type = const(Item), "No." = filter(<> '')) "Item Unit of Measure".Code where("Item No." = field("No.")) else if (Type = const(Resource), "No." = filter(<> '')) "Resource Unit of Measure".Code where("Resource No." = field("No.")) else if (Type = filter("Charge (Item)" \| "Fixed Asset" \| "G/L Accou...) |
| 5415 | Quantity (Base) | Decimal | — |  |
| 5416 | Outstanding Qty. (Base) | Decimal | Specifies the outstanding quantity expressed in the base units of measure. <small>via [Page 501 "Available - Purchase Lines"](../page/501.md)</small> | not editable |
| 5417 | Qty. to Invoice (Base) | Decimal | — |  |
| 5418 | Qty. to Receive (Base) | Decimal | — |  |
| 5458 | Qty. Rcd. Not Invoiced (Base) | Decimal | — | not editable |
| 5460 | Qty. Received (Base) | Decimal | — | not editable |
| 5461 | Qty. Invoiced (Base) | Decimal | — | not editable |
| 5495 | Reserved Qty. (Base) | Decimal | Specifies the value in the Reserved Quantity field, expressed in the base unit of measure. | FlowField: sum("Reservation Entry"."Quantity (Base)" where("Source Type" = const(39), #pragma warning disable AL0603 "Source Subtype" = field("Document Type"), #pragma warning restore "Source ID" = field("Document No."), "Source Ref. No." = field("Line No."), "Reservation Status" = const(Reservation))); not editable |
| 5600 | FA Posting Date | Date | Specifies the FA posting date if you have selected Fixed Asset in the Type field for this line. |  |
| 5601 | FA Posting Type | Enum "Purchase FA Posting Type" | Specifies the FA posting type if you have selected Fixed Asset in the Type field for this line. | enum [Enum 5607 "Purchase FA Posting Type"](../enum/5607.md) |
| 5602 | Depreciation Book Code | Code[10] | Specifies the code for the depreciation book to which the line will be posted if you have selected Fixed Asset in the Type field for this line. | TableRelation [Table 5611 "Depreciation Book"](../table/5611.md) (Depreciation Book) |
| 5603 | Salvage Value | Decimal | — |  |
| 5605 | Depr. until FA Posting Date | Boolean | Specifies if depreciation was calculated until the FA posting date of the line. |  |
| 5606 | Depr. Acquisition Cost | Boolean | Specifies if, when this line was posted, the additional acquisition cost posted on the line was depreciated in proportion to the amount by which the fixed asset had already been depreciated. |  |
| 5609 | Maintenance Code | Code[10] | — | TableRelation [Table 5626 "Maintenance"](../table/5626.md) |
| 5610 | Insurance No. | Code[20] | Specifies an insurance number if you have selected the Acquisition Cost option in the FA Posting Type field. | TableRelation [Table 5628 "Insurance"](../table/5628.md) |
| 5611 | Budgeted FA No. | Code[20] | Specifies the number of a fixed asset with the Budgeted Asset check box selected. When you post the journal or document line, an additional entry is created for the budgeted fixed asset where the amount has the opposite sign. | TableRelation [Table 5600 "Fixed Asset"](../table/5600.md) (Fixed Asset) |
| 5612 | Duplicate in Depreciation Book | Code[10] | Specifies a depreciation book code if you want the journal line to be posted to that depreciation book, as well as to the depreciation book in the Depreciation Book Code field. | TableRelation [Table 5611 "Depreciation Book"](../table/5611.md) (Depreciation Book) |
| 5613 | Use Duplication List | Boolean | Specifies, if the type is Fixed Asset, that information on the line is to be posted to all the assets defined depreciation books. |  |
| 5700 | Responsibility Center | Code[10] | — | TableRelation [Table 5714 "Responsibility Center"](../table/5714.md) (Responsibility Center); not editable |
| 5709 | Item Category Code | Code[20] | — | TableRelation [Table 5722 "Item Category"](../table/5722.md) (Item Category) |
| 5710 | Nonstock | Boolean | Specifies that this item is a catalog item. |  |
| 5711 | Purchasing Code | Code[10] | Specifies the purchasing code associated with the purchase line. | TableRelation [Table 5721 "Purchasing"](../table/5721.md); not editable |
| 5713 | Special Order | Boolean | — |  |
| 5714 | Special Order Sales No. | Code[20] | — | TableRelation [Table 36 "Sales Header"](../table/36.md) (if ("Special Order" = const(true)) "Sales Header"."No." where("Document Type" = const(Order))) |
| 5715 | Special Order Sales Line No. | Integer | — | TableRelation [Table 37 "Sales Line"](../table/37.md) (if ("Special Order" = const(true)) "Sales Line"."Line No." where("Document Type" = const(Order), "Document No." = field("Special Order Sales No."))) |
| 5725 | Item Reference No. | Code[50] | Specifies the referenced item number. |  |
| 5726 | Item Reference Unit of Measure | Code[10] | Specifies item reference unit of measure code. <small>via [Page 6405 "Purchase Document Line Entity"](../page/6405.md)</small> | TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md) (if (Type = const(Item)) "Item Unit of Measure".Code where("Item No." = field("No."))) |
| 5727 | Item Reference Type | Enum "Item Reference Type" | Specifies item reference type. <small>via [Page 6405 "Purchase Document Line Entity"](../page/6405.md)</small> | enum [Enum 5726 "Item Reference Type"](../enum/5726.md) |
| 5728 | Item Reference Type No. | Code[30] | Specifies item reference type number. <small>via [Page 6405 "Purchase Document Line Entity"](../page/6405.md)</small> |  |
| 5750 | Whse. Outstanding Qty. (Base) | Decimal | Specifies how many units on the purchase order line remain to be handled in warehouse documents. <small>via [Page 54 "Purchase Order Subform"](../page/54.md)</small> | FlowField: sum("Warehouse Receipt Line"."Qty. Outstanding (Base)" where("Source Type" = const(39), #pragma warning disable AL0603 "Source Subtype" = field("Document Type"), #pragma warning restore "Source No." = field("Document No."), "Source Line No." = field("Line No."))); not editable |
| 5752 | Completely Received | Boolean | — | not editable |
| 5790 | Requested Receipt Date | Date | Specifies the date that you want the vendor to deliver to the ship-to address. The value in the field is used to calculate the latest date you can order the items to have them delivered on the requested receipt date. If you do not need delivery on a specific date, you can leave the field blank. |  |
| 5791 | Promised Receipt Date | Date | Specifies the date that the vendor has promised to deliver the order. |  |
| 5792 | Lead Time Calculation | DateFormula | Specifies a date formula for the amount of time it takes to replenish the item. |  |
| 5793 | Inbound Whse. Handling Time | DateFormula | Specifies the time it takes to make items part of available inventory, after the items have been posted as received. |  |
| 5794 | Planned Receipt Date | Date | Specifies the date when the item is planned to arrive in inventory. Forward calculation: planned receipt date = order date + vendor lead time (per the vendor calendar and rounded to the next working day in first the vendor calendar and then the location calendar). If no vendor calendar exists, then:... |  |
| 5795 | Order Date | Date | Specifies the date when the order was created. |  |
| 5800 | Allow Item Charge Assignment | Boolean | Specifies that you can assign item charges to this line. |  |
| 5801 | Qty. to Assign | Decimal | Specifies how many units of the item charge will be assigned to the line. | FlowField: sum("Item Charge Assignment (Purch)"."Qty. to Assign" where("Document Type" = field("Document Type"), "Document No." = field("Document No."), "Document Line No." = field("Line No."))); not editable |
| 5802 | Qty. Assigned | Decimal | Specifies how much of the item charge that has been assigned. | FlowField: sum("Item Charge Assignment (Purch)"."Qty. Assigned" where("Document Type" = field("Document Type"), "Document No." = field("Document No."), "Document Line No." = field("Line No."))); not editable |
| 5803 | Return Qty. to Ship | Decimal | Specifies the quantity of items that remains to be shipped. |  |
| 5804 | Return Qty. to Ship (Base) | Decimal | — |  |
| 5805 | Return Qty. Shipped Not Invd. | Decimal | — | not editable |
| 5806 | Ret. Qty. Shpd Not Invd.(Base) | Decimal | — | not editable |
| 5807 | Return Shpd. Not Invd. | Decimal | — | not editable |
| 5808 | Return Shpd. Not Invd. (LCY) | Decimal | — | not editable |
| 5809 | Return Qty. Shipped | Decimal | Specifies how many units of the item on the line have been posted as shipped. | not editable |
| 5810 | Return Qty. Shipped (Base) | Decimal | — | not editable |
| 5812 | Item Charge Qty. to Handle | Decimal | Specifies how many items the item charge will be assigned to on the line. It can be either equal to Qty. to Assign or to zero. If it is zero, the item charge will not be assigned to the line. | FlowField: sum("Item Charge Assignment (Purch)"."Qty. to Handle" where("Document Type" = field("Document Type"), "Document No." = field("Document No."), "Document Line No." = field("Line No."))); not editable |
| 6200 | Non-Deductible VAT % | Decimal | — |  |
| 6201 | Non-Deductible VAT Base | Decimal | Specifies the amount of VAT that is not deducted due to the type of goods or services purchased. | not editable |
| 6202 | Non-Deductible VAT Amount | Decimal | Specifies the amount of the transaction for which VAT is not applied, due to the type of goods or services purchased. | not editable |
| 6203 | Non-Deductible VAT Diff. | Decimal | Non-Deductible VAT Difference <small>caption</small> | not editable |
| 6204 | Prepmt. Non-Deduct. VAT Base | Decimal | Prepmt. Non-Deductible VAT Base <small>caption</small> | not editable |
| 6205 | Prepmt. Non-Deduct. VAT Amount | Decimal | Prepmt. on-Deductible VAT Amount <small>caption</small> | not editable |
| 6206 | Item Charge Has Non.Ded. VAT | Boolean | Item Charge Has Non-Deductible VAT <small>caption</small> | not editable |
| 6600 | Return Shipment No. | Code[20] | — | not editable |
| 6601 | Return Shipment Line No. | Integer | — | not editable |
| 6608 | Return Reason Code | Code[10] | Specifies the code explaining why the item was returned. | TableRelation [Table 6635 "Return Reason"](../table/6635.md) (Return Reason) |
| 6609 | Subtype | Option | — | OptionCaption: ,Item - Inventory,Item - Service,Comment |
| 6610 | Copied From Posted Doc. | Boolean | — |  |
| 7000 | Price Calculation Method | Enum "Price Calculation Method" | — | enum [Enum 7000 "Price Calculation Method"](../enum/7000.md) |
| 7010 | Attached Doc Count | Integer | Specifies the number of attachments. | FlowField: count("Document Attachment" where("Table ID" = const(39), "No." = field("Document No."), "Document Type" = field("Document Type"), "Line No." = field("Line No."))) |
| 7011 | Attached Lines Count | Integer | Specifies the number of non-inventory product lines attached to the purchase line. | FlowField: count("Purchase Line" where("Document Type" = field("Document Type"), "Document No." = field("Document No."), "Attached to Line No." = field("Line No."), Quantity = filter(<> 0))); not editable |
| 8509 | Over-Receipt Quantity | Decimal | Specifies over-receipt quantity. |  |
| 8510 | Over-Receipt Code | Code[20] | Specifies over-receipt code. | TableRelation [Table 8510 "Over-Receipt Code"](../table/8510.md) (Over-Receipt Code) |
| 8511 | Over-Receipt Approval Status | Enum "Over-Receipt Approval Status" | — | enum [Enum 8511 "Over-Receipt Approval Status"](../enum/8511.md) |
| 8512 | Buy-from Vendor Name | Text[100] | — | FlowField: lookup(Vendor.Name where("No." = field("Buy-from Vendor No."))); not editable |
| 8513 | Receipt on Invoice | Boolean | Specifies whether the receipt is posted automatically with the invoice. |  |
| 12100 | No. of Fixed Asset Cards | Integer | Specifies the number of fixed assets that is being purchased. |  |
| 99000755 | Overhead Rate | Decimal | — |  |
| 99000756 | MPS Order | Boolean | — |  |
| 99000757 | Planning Flexibility | Enum "Reservation Planning Flexibility" | Specifies whether the supply represented by this line is considered by the planning system when calculating action messages. | enum [Enum 340 "Reservation Planning Flexibility"](../enum/340.md) |
| 99000758 | Safety Lead Time | DateFormula | — |  |

## Keys

- Key1: Document Type, Document No., Line No. (clustered)
- Key3: Document Type, Type, No., Variant Code, Drop Shipment, Location Code, Expected Receipt Date
- Key4: Document Type, Pay-to Vendor No., Currency Code, Document No.
- Key7: Document Type, Blanket Order No., Blanket Order Line No.
- Key9: Document Type, Document No., Location Code
- Key10: Document Type, Receipt No., Receipt Line No.
- Key11: Type, No., Variant Code, Drop Shipment, Location Code, Document Type, Expected Receipt Date
- Key12: Document Type, Buy-from Vendor No.
- Key13: Document Type, Job No., Job Task No., Document No.
- Key16: Recalculate Invoice Disc.
- Key18: Location Code, Quantity Invoiced
- Key19: Completely Received
- Key20: Document Type, Document No., Drop Shipment
- Key21: Document Type, Document No., Type, No., System-Created Entry
- Key22: Document Type, Document No., VAT Identifier, Line No.
- Key23: Attached to Line No.
- Key24: No., Type

## Events published

- `OnAfterInitDefaultDimensionSources(var PurchaseLine: Record "Purchase Line"; var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]; FieldNo: Integer)` (integration)
  - subscribers: [Codeunit 99000789 "Mfg. Purchase Document Mgt."](../codeunit/99000789.md) OnAfterInitDefaultDimensionSources
- `OnAfterAddItem(var PurchaseLine: Record "Purchase Line"; LastPurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeTransferExtendedTexts(var PurchaseLine: Record "Purchase Line"; var LastPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnAfterAssignFieldsForNo(var PurchLine: Record "Purchase Line"; var xPurchLine: Record "Purchase Line"; PurchHeader: Record "Purchase Header")` (integration)
- `OnAfterAssignHeaderValues(var PurchLine: Record "Purchase Line"; PurchHeader: Record "Purchase Header")` (integration)
- `OnAfterAssignStdTxtValues(var PurchLine: Record "Purchase Line"; StandardText: Record "Standard Text")` (integration)
- `OnAfterAssignGLAccountValues(var PurchLine: Record "Purchase Line"; GLAccount: Record "G/L Account"; PurchHeader: Record "Purchase Header"; xPurchaseLine: Record "Purchase Line"; var TempPurchaseLine: Record "Purchase Line" temporary)` (integration)
  - subscribers: [Codeunit 6784 "Wthldg Tax Purch. Subscribers"](../codeunit/6784.md) AssignGLAccValue
- `OnAfterAssignItemValues(var PurchLine: Record "Purchase Line"; Item: Record Item; CurrentFieldNo: Integer; PurchHeader: Record "Purchase Header")` (integration)
  - subscribers: [Codeunit 5012 "Service Declaration Mgt."](../codeunit/5012.md) OnAfterAssignItemValuesInPurchLine, [Codeunit 6225 "Sust. Purchase Subscriber"](../codeunit/6225.md) OnAfterAssignItemValues, [Codeunit 6784 "Wthldg Tax Purch. Subscribers"](../codeunit/6784.md) AssignItemValue
- `OnAfterAssignItemChargeValues(var PurchLine: Record "Purchase Line"; ItemCharge: Record "Item Charge"; PurchHeader: Record "Purchase Header")` (integration)
  - subscribers: [Codeunit 5012 "Service Declaration Mgt."](../codeunit/5012.md) OnAfterAssignItemChargeValuesInPurchLine, [Codeunit 6225 "Sust. Purchase Subscriber"](../codeunit/6225.md) OnAfterAssignItemChargeValues
- `OnAfterAssignFixedAssetValues(var PurchLine: Record "Purchase Line"; FixedAsset: Record "Fixed Asset"; PurchHeader: Record "Purchase Header")` (integration)
  - subscribers: [Codeunit 6225 "Sust. Purchase Subscriber"](../codeunit/6225.md) OnAfterAssignFixedAssetValues, [Codeunit 6784 "Wthldg Tax Purch. Subscribers"](../codeunit/6784.md) AssignFAValue
- `OnAfterAssignItemUOM(var PurchLine: Record "Purchase Line"; Item: Record Item; CurrentFieldNo: Integer)` (integration)
- `OnAfterBlanketOrderLookup(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterDeleteItemChargeAssignment(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer)` (integration)
- `OnAfterDeleteChargeChargeAssgntProcedure(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer)` (integration)
- `OnAfterGetDeferralAmount(PurchaseLine: Record "Purchase Line"; var DeferralAmount: Decimal)` (integration)
- `OnAfterGetItem(var Item: Record Item; var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterGetItemTranslation(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header"; ItemTranslation: Record "Item Translation")` (integration)
- `OnAfterGetPurchHeader(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header"; var Currency: Record Currency)` (integration)
- `OnAfterGetPurchSetup(var PurchaseLine: Record "Purchase Line"; var PurchSetup: Record "Purchases & Payables Setup")` (integration)
- `OnAfterGetFAPostingGroup(var PurchaseLine: Record "Purchase Line"; GLAccount: Record "G/L Account")` (integration)
- `OnAfterGetLineWithPrice(var LineWithPrice: Interface "Line With Price")` (integration)
- `OnAfterGetReservationQty(var PurchLine: Record "Purchase Line"; var QtyReserved: Decimal; var QtyReservedBase: Decimal; var QtyToReserve: Decimal; var QtyToReserveBase: Decimal; var Result: Decimal)` (integration)
- `OnAfterFilterLinesWithItemToPlan(var PurchaseLine: Record "Purchase Line"; var Item: Record Item; DocumentType: Option)` (integration)
  - subscribers: [Codeunit 20518 "Subc. Planning Line Mgmt Ext."](../codeunit/20518.md) PurchaseLine_OnAfterFilterLinesWithItemToPlan
- `OnAfterFilterLinesForReservation(var PurchaseLine: Record "Purchase Line"; ReservationEntry: Record "Reservation Entry"; DocumentType: Enum "Purchase Document Type"; AvailabilityFilter: Text; Positive: Boolean)` (integration)
- `OnAfterFindDefaultFADeprBook(var PurchaseLine: Record "Purchase Line"; var Result: Boolean)` (integration)
- `OnAfterHasTypeToFillMandatoryFields(var PurchaseLine: Record "Purchase Line"; var ReturnValue: Boolean)` (integration)
- `OnAfterInitType(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header")` (integration)
- `OnAfterUpdateDirectUnitCost(var PurchLine: Record "Purchase Line"; xPurchLine: Record "Purchase Line"; CalledByFieldNo: Integer; CurrFieldNo: Integer)` (integration)
- `OnAfterUpdateLineDiscPct(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeAssignFieldsForQtyPerUOM(var PurchaseLine: Record "Purchase Line"; Item: Record Item; FieldNo: Integer; var IsHandled: Boolean; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeHandleDedicatedBin(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; IssueWarning: Boolean)` (integration)
- `OnBeforeGetAbsMin(PurchaseLine: Record "Purchase Line"; QtyToHandle: Decimal; QtyHandled: Decimal; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateItemReference(var Rec: Record "Purchase Line"; xRec: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateItemChargeAssgnt(var PurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateDirectUnitCost(var PurchLine: Record "Purchase Line"; xPurchLine: Record "Purchase Line"; CalledByFieldNo: Integer; CurrFieldNo: Integer; var Handled: Boolean)` (integration)
  - subscribers: [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnBeforeUpdateDirectUnitCost
- `OnBeforeUpdateDirectUnitCostProcedure(var PurchLine: Record "Purchase Line"; CalledByFieldNo: Integer; var Handled: Boolean)` (integration)
- `OnBeforeUpdateOrderDateFromPlannedReceiptDate(var PurchaseLine: Record "Purchase Line"; CustomCalendarChange: array[2] of Record "Customized Calendar Change"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdatePlannedReceiptDateFromOrderDate(var PurchaseLine: Record "Purchase Line"; CustomCalendarChange: array[2] of Record "Customized Calendar Change"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateOrderDateFromRequestedReceiptDate(var PurchaseLine: Record "Purchase Line"; CustomCalendarChange: array[2] of Record "Customized Calendar Change"; var IsHandled: Boolean)` (integration)
- `OnBeforeVerifyReservedQty(var PurchLine: Record "Purchase Line"; xPurchLine: Record "Purchase Line"; CalledByFieldNo: Integer)` (integration)
- `OnAfterInitHeaderDefaults(var PurchLine: Record "Purchase Line"; PurchHeader: Record "Purchase Header"; var TempPurchLine: record "Purchase Line" temporary)` (integration)
  - subscribers: [Codeunit 6784 "Wthldg Tax Purch. Subscribers"](../codeunit/6784.md) CopyHeaderInfo
- `OnAfterInitOutstandingQty(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterInitOutstandingAmount(var PurchLine: Record "Purchase Line"; xPurchLine: Record "Purchase Line"; PurchHeader: Record "Purchase Header"; Currency: Record Currency)` (integration)
- `OnAfterInitQtyToInvoice(var PurchLine: Record "Purchase Line"; CurrFieldNo: Integer)` (integration)
- `OnAfterInitQtyToShip(var PurchLine: Record "Purchase Line"; CurrFieldNo: Integer)` (integration)
- `OnAfterInitQtyToReceive(var PurchLine: Record "Purchase Line"; CurrFieldNo: Integer)` (integration)
- `OnAfterInitQtyToReceive2(var PurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer)` (integration)
- `OnAfterInitQtyToReceive2Procedure(var PurchLine: Record "Purchase Line")` (integration)
- `OnAfterSetDefaultQuantity(var PurchLine: Record "Purchase Line"; var xPurchLine: Record "Purchase Line")` (integration)
- `OnBeforeSetDefaultGLAccountQuantity(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnAfterCalcInvDiscToInvoice(var PurchaseLine: Record "Purchase Line"; OldInvDiscAmtToInv: Decimal)` (integration)
- `OnAfterCalcLineAmount(var PurchaseLine: Record "Purchase Line"; var LineAmount: Decimal)` (integration)
- `OnAfterCalcVATAmountLines(var PurchHeader: Record "Purchase Header"; var PurchLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line"; QtyType: Option General,Invoicing,Shipping)` (integration)
- `OnAfterCalcQtyPerUnitOfMeasure(var PurchaseLine: Record "Purchase Line"; Item: Record Item; CallingFieldNo: Integer)` (integration)
- `OnAfterCalcTotalAmtToAssign(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header"; Currency: Record Currency; TotalQtyToAssign: Decimal; var TotalAmtToAssign: Decimal)` (integration)
- `OnAfterCheckReceiptRelation(PurchaseLine: Record "Purchase Line"; PurchRcptLine: Record "Purch. Rcpt. Line")` (integration)
- `OnAfterCheckRetShptRelation(var PurchaseLine: Record "Purchase Line"; ReturnShipmentLine: Record "Return Shipment Line")` (integration)
- `OnAfterCreateDim(var PurchLine: Record "Purchase Line"; CallingFieldNo: Integer; xPurchLine: Record "Purchase Line")` (integration)
- `OnAfterGetDeferralPostDate(var PurchaseLine: Record "Purchase Line"; PurchHeader: Record "Purchase Header"; var DeferralPostDate: Date)` (integration)
- `OnAfterGetLineAmountToHandle(PurchLine: Record "Purchase Line"; QtyToHandle: Decimal; var LineAmount: Decimal; var LineDiscAmount: Decimal)` (integration)
- `OnAfterGetQtyPerUOM(var QtyPerUOM: Decimal)` (integration)
- `OnAfterSalesTaxCalculate(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header"; Currency: Record Currency)` (integration)
- `OnAfterSalesTaxCalculateReverse(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header"; Currency: Record Currency)` (integration)
- `OnAfterSelectMultipleItems(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterSetReservationFilters(var ReservEntry: Record "Reservation Entry"; PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterShowDimensions(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterShowItemChargeAssgnt(var PurchaseLine: Record "Purchase Line"; var ItemChargeAssgnmtPurch: Record "Item Charge Assignment (Purch)"; var ItemChargeAssignmentPurchPage: Page "Item Charge Assignment (Purch)")` (integration)
- `OnAfterTestStatusOpen(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header")` (integration)
- `OnAfterUpdateDates(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterUpdateAmounts(var PurchLine: Record "Purchase Line"; var xPurchLine: Record "Purchase Line"; CurrFieldNo: Integer)` (integration)
- `OnAfterUpdateAmountsDone(var PurchLine: Record "Purchase Line"; var xPurchLine: Record "Purchase Line"; CurrFieldNo: Integer)` (integration)
  - subscribers: [Codeunit 20286 "Use Case Event Handling"](../codeunit/20286.md) BusinessRuleOnAfterUpdatePurchUnitPrice
- `OnAfterUpdateBaseAmounts(var PurchLine: Record "Purchase Line"; var xPurchLine: Record "Purchase Line"; CurrFieldNo: Integer; NewAmount: Decimal; NewAmountIncludingVAT: Decimal; NewVATBaseAmount: Decimal)` (integration)
- `OnAfterUpdateUnitCost(var PurchLine: Record "Purchase Line"; xPurchLine: Record "Purchase Line"; PurchHeader: Record "Purchase Header"; Item: Record Item; StockkeepingUnit: Record "Stockkeeping Unit"; Currency: Record Currency; GLSetup: Record "General Ledger Setup")` (integration)
- `OnAfterUpdateICPartner(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header")` (integration)
- `OnAfterUpdateJobPrices(var PurchLine: Record "Purchase Line"; JobJnlLine: Record "Job Journal Line"; PurchRcptLine: Record "Purch. Rcpt. Line")` (integration)
- `OnAfterUpdateWithWarehouseReceive(PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterUpdateVATAmounts(var PurchaseLine: Record "Purchase Line"; TotalLineAmount: Decimal; TotalInvDiscAmount: Decimal; TotalAmount: Decimal; TotalAmountInclVAT: Decimal; TotalVATDifference: Decimal; TotalQuantityBase: Decimal)` (integration)
- `OnAfterUpdateVATOnLines(var PurchHeader: Record "Purchase Header"; var PurchLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line"; QtyType: Option General,Invoicing,Shipping)` (integration)
- `OnAfterUpdateSalesCost(var PurchaseLine: Record "Purchase Line"; var SalesOrderLine: Record "Sales Line")` (integration)
- `OnAfterUpdateTotalAmounts(var PurchaseLine: Record "Purchase Line"; var PurchaseLine2: Record "Purchase Line"; var TotalAmount: Decimal; var TotalAmountInclVAT: Decimal; var TotalLineAmount: Decimal; var TotalInvDiscAmount: Decimal)` (integration)
- `OnBeforeAddItems(var PurchaseLine: Record "Purchase Line"; SelectionFilter: Text; var IsHandled: Boolean)` (integration)
- `OnBeforeAssignHeaderValues(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header")` (integration)
- `OnBeforeCalcBaseQty(var PurchaseLine: Record "Purchase Line"; Qty: Decimal; FromFieldName: Text; ToFieldName: Text)` (integration)
- `OnBeforeCalcInvDiscToInvoiceProcedure(var PurchaseLine: Record "Purchase Line"; Currency: Record Currency; var IsHandled: Boolean)` (integration)
- `OnBeforeCalcIndirectCostPercent(var PurchaseLine: Record "Purchase Line"; UnitCostCurrency: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeCalcPrepaymentToDeduct(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeClearQtyIfBlank(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckAssosiatedSalesOrder(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckAssosiatedProdOrder(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckPrepmtAmounts(var PurchaseLine: Record "Purchase Line"; PurchHeader: Record "Purchase Header"; CurrentFieldNo: Integer; var IsHandled: Boolean; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeCheckPrepmtAmtInvEmpty(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeCheckWarehouse(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; var ShowDialogMessage: Boolean)` (integration)
- `OnBeforeCheckLocationOnWMS(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnCheckWMSOnBeforeCheckLocationOnWMS(var PurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer; var SkipCheckLocationOnWMS: Boolean)` (integration)
- `OnBeforeCheckNoAndQuantityForItemChargeAssgnt(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCopyFromItem(var PurchaseLine: Record "Purchase Line"; var Item: Record Item; var IsHandled: Boolean)` (integration)
- `OnBeforeCopyFromGLAccount(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
  - subscribers: [Codeunit 4850 "AA Codes Posting Helper"](../codeunit/4850.md) OnBeforeCopyFromGLAccount
- `OnNotHandledCopyFromGLAccount(var PurchaseLine: Record "Purchase Line"; GLAccount: Record "G/L Account")` (integration)
  - subscribers: [Codeunit 6225 "Sust. Purchase Subscriber"](../codeunit/6225.md) OnAfterAssignGLAccountValues
- `OnBeforeCreateDim(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; CurrentFieldNo: Integer; DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])` (integration)
- `OnBeforeBlanketOrderLookup(var PurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeCalcInvDiscToInvoice(var PurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer)` (integration)
- `OnBeforeCalcVATAmountLines(PurchHeader: Record "Purchase Header"; var PurchLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line"; var IsHandled: Boolean; QtyType: Option General,Invoicing,Shipping)` (integration)
- `OnBeforeCheckDirectUnitCost(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCreateTempJobJnlLine(var TempJobJournalLine: Record "Job Journal Line" temporary; PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; GetPrices: Boolean; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeGetDefaultBin(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; xPurchaseLine: record "Purchase Line")` (integration)
- `OnBeforeGetDeferralAmount(var PurchaseLine: Record "Purchase Line"; var DeferralAmount: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeGetItemTranslation(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeGetFAPostingGroup(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnAfterGetSKU(PurchaseLine: Record "Purchase Line"; var Result: Boolean)` (integration)
- `OnBeforeEnsureDirectedPutawayandPickFalse(var PurchaseLine: Record "Purchase Line"; Location: Record Location; var IsHandled: Boolean)` (integration)
- `OnBeforeFindOrCreateRecordByNo(var PurchLine: Record "Purchase Line"; xPurchLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeFormatType(PurchaseLine: Record "Purchase Line"; var FormattedType: Text[20]; var IsHandled: Boolean)` (integration, obsolete 29.0)
- `OnBeforeFormatTypeAsText(PurchaseLine: Record "Purchase Line"; var FormattedType: Text[30]; var IsHandled: Boolean)` (integration): Raised before the purchase line type is formatted as text.
- `OnBeforeGetVPGInvRoundAcc(PurchHeader: Record "Purchase Header"; Vendor: Record Vendor; var AccountNo: Code[20]; var IsHandled: Boolean)` (integration)
- `OnBeforeGetReservationQty(var PurchaseLine: Record "Purchase Line"; var QtyReserved: Decimal; var QtyReservedBase: Decimal; var QtyToReserve: Decimal; var QtyToReserveBase: Decimal; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeInitJobFields(var PurchLine: Record "Purchase Line"; var xPurchLine: Record "Purchase Line"; var IsHandled: Boolean; CurrentFieldNo: Integer)` (integration)
- `OnBeforeInitDeferralCode(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeInitQtyToInvoice(var PurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeInitQtyToReceive(var PurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeInitQtyToShip(var PurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeInitOutstandingAndQtyToShipReceive(var PurchaseLine: Record "Purchase Line"; var TempPurchLine: Record "Purchase Line" temporary; var IsHandled: Boolean; var xPurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeJobSetCurrencyFactor(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeJobTaskIsSet(PurchLine: Record "Purchase Line"; var IsJobLine: Boolean)` (integration)
- `OnBeforeLookupBinCode(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeLookupBlanketOrderNo(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeLookupShortcutDimCode(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; FieldNumber: Integer; var ShortcutDimCode: Code[20]; var IsHandled: Boolean)` (integration)
- `OnBeforeMaxQtyToInvoice(PurchaseLine: Record "Purchase Line"; var MaxQty: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeMaxQtyToInvoiceBase(PurchaseLine: Record "Purchase Line"; var MaxQty: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeOpenItemTrackingLines(PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
  - subscribers: [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OpenProdOrderLineItemTrackingOnBeforeOpenItemTrackingLines
- `OnBeforeSelectMultipleItems(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeSetUnitOfMeasure(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeSetVendorItemNo(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeShowDeferrals(PurchaseLine: Record "Purchase Line"; var ReturnValue: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeShowDimensions(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
  - subscribers: [Codeunit 2679 "Purchase Alloc. Acc. Mgt."](../codeunit/2679.md) HandleShowDimensions
- `OnBeforeShowReservation(PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeShowReservationEntries(PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeShowBinCodeCannotBeChangedError(PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnShowEarlyOrderDateMessageOnAfterCalcShowMessage(PurchaseLine: Record "Purchase Line"; var ShowMessage: Boolean)` (integration)
- `OnBeforeTestStatusOpen(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header"; xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateDates(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateJobFields(var PurchLine: Record "Purchase Line"; var xPurchLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateJobPrices(var PurchLine: Record "Purchase Line"; JobJnlLine: Record "Job Journal Line"; PurchRcptLine: Record "Purch. Rcpt. Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateLeadTimeFields(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateLineDiscPct(var PurchaseLine: Record "Purchase Line"; Currency: Record Currency; var IsHandled: Boolean; CurrentFiledNo: Integer)` (integration)
- `OnBeforeUpdatePrepmtAmounts(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header"; var IsHandled: Boolean; CurrentFieldNo: Integer)` (integration)
- `OnBeforeUpdatePrepmtSetupFields(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnUpdatePrepmtSetupFieldsOnBeforeGetVATPostingSetup(var PurchaseLine: Record "Purchase Line"; GLAccount: Record "G/L Account"; var VATPostingSetup: Record "VAT Posting Setup"; var VATPostingSetupRetrieved: Boolean)` (integration)
- `OnUpdatePrepmtSetupFieldsOnBeforeClearVATPostingSetup(var PurchaseLine: Record "Purchase Line"; var VATPostingSetup: Record "VAT Posting Setup"; var SkipClear: Boolean)` (integration)
- `OnBeforeUpdateAmounts(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateVATAmounts(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateSalesCost(var PurchaseLine: Record "Purchase Line"; var SalesOrderLine: Record "Sales Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateSpecialSalesOrderLineFromOnDelete(var PurchaseLine: Record "Purchase Line"; var SalesOrderLine: Record "Sales Line"; var IsHandled: Boolean)` (integration)
- `OnUpdateSalesCostOnBeforeGetSalesOrderLine(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateSalesCostFromUnitCostLCY(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateUnitCost(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateUnitPriceLCYFromItem(var PurchaseLine: Record "Purchase Line"; Item: Record "Item"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateUOMQtyPerStockQty(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var Item: Record Item; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateWithWarehouseReceive(var PurchaseLine: Record "Purchase Line"; var InHandled: Boolean)` (integration)
- `OnBeforeValidateBlanketOrderLineNo(var PurchaseLine: Record "Purchase Line"; var InHandled: Boolean)` (integration)
- `OnBeforeValidateDescription(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var InHandled: Boolean)` (integration)
- `OnBeforeValidateGenProdPostingGroup(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var InHandled: Boolean)` (integration)
- `OnBeforeValidateJobPlanningLineNo(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateOrderDate(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; TrackingBlocked: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateVATProdPostingGroupFromGLAcc(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateLeadTimeCalculation(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var InHandled: Boolean)` (integration)
- `OnBeforeValidatePlannedReceiptDate(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; TrackingBlocked: Boolean; var InHandled: Boolean)` (integration)
- `OnBeforeValidateItemDescription(var PurchaseLine: Record "Purchase Line"; var InHandled: Boolean)` (integration)
- `OnBeforeValidateLineDiscountAmount(var PurchaseLine: Record "Purchase Line"; var InHandled: Boolean)` (integration)
- `OnBeforeValidatePlannedReceiptDateWithCustomCalendarChange(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; var InHandled: Boolean)` (integration)
- `OnBeforeValidatePrepmtLineAmount(var PurchaseLine: Record "Purchase Line"; PrePaymentLineAmountEntered: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeValidatePromisedReceiptDate(var PurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeValidateLineDiscountPctForNotItemType(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateQuantityInvIsBalanced(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateQuantityReceiveIsBalanced(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateQuantityReturnIsBalanced(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateReturnReasonCode(var PurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateType(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateQtytoInvoiceBase(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var InHandled: Boolean)` (integration)
- `OnBeforeValidateQtytoReceiveBase(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var InHandled: Boolean)` (integration)
- `OnBeforeValidateReturnQtytoShipBase(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var InHandled: Boolean)` (integration)
- `OnBeforeCheckLineAmount(var PurchaseLine: Record "Purchase Line"; MaxLineAmount: Decimal; var IsHandled: Boolean; CalledByFieldNo: Integer)` (integration)
- `OnBeforeCheckLineTypeOnIndirectCostPercentUpdate(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeVerifyLineTypeForJob(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnAfterCreateTempJobJnlLine(var JobJournalLine: Record "Job Journal Line"; PurchLine: Record "Purchase Line"; xPurchLine: Record "Purchase Line"; GetPrices: Boolean; CurrFieldNo: Integer)` (integration)
- `OnAfterValidateShortcutDimCode(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnAfterValidateLocationCode(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeValidateShortcutDimCode(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; FieldNumber: Integer; var ShortcutDimCode: Code[20]; var IsHandled: Boolean)` (integration)
- `OnCalcVATAmountLinesOnAfterCalcLineTotals(var VATAmountLine: Record "VAT Amount Line"; PurchaseHeader: Record "Purchase Header"; PurchaseLine: Record "Purchase Line"; Currency: Record Currency; QtyType: Option General,Invoicing,Shipping; var TotalVATAmount: Decimal)` (integration)
- `OnCalcVATAmountLinesAfterVATAmountLineInsertNewLine(var PurchaseLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line")` (integration)
- `OnCalcVATAmountLinesOnAfterSetFilters(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header")` (integration)
- `OnCalcVATAmountLinesOnBeforeVATAmountLineSumLine(PurchaseLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line"; QtyType: Option General,Invoicing,Shipping; var PurchaseLine2: Record "Purchase Line")` (integration)
- `OnCalcVATAmountLinesOnBeforeProcessPurchLine(var PurchaseLine: Record "Purchase Line"; var PurchHeader: Record "Purchase Header"; var VATAmountLine: Record "VAT Amount Line"; QtyType: Option General,Invoicing,Shipping)` (integration)
- `OnCalcVATAmountLinesOnQtyTypeInvoicingOnBeforeCalcAmtToHandle(var PurchLine: Record "Purchase Line"; var PurchHeader: Record "Purchase Header"; var QtyToHandle: Decimal; var VATAmountLine: record "VAT Amount Line")` (integration)
- `OnCheckLocationRequireReceiveOnBeforePurchaseLineVerifyChange(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnCheckWarehouseOnBeforeShowDialog(var PurchLine: Record "Purchase Line"; Location2: Record Location; var ShowDialog: Option " ",Message,Error; var DialogText: Text[50])` (integration)
- `OnCopyFromItemOnAfterCheck(var PurchaseLine: Record "Purchase Line"; Item: Record Item; CallingFieldNo: Integer)` (integration)
- `OnCreateDimOnBeforeUpdateGlobalDimFromDimSetID(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnCreateTempJobJnlLineOnBeforeTempJobJnlLineValidateNo(var TempJobJnlLine: Record "Job Journal Line" temporary; PurchaseLine: Record "Purchase Line")` (integration)
- `OnDeleteOnAfterSetPurchLineFilters(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnDeleteOnBeforePurchLineDeleteAll(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnDeleteOnBeforeTestStatusOpen(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnGetFAPostingGroupOnBeforeLocalGLAccGet(PurchaseLine: Record "Purchase Line"; FAPostingGroup: Record "FA Posting Group"; var GLAccount: Record "G/L Account"; var IsHandled: Boolean)` (integration)
- `OnBeforeSendLineInvoiceDiscountResetNotification(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnFilterLinesForReservationOnBeforeSetFilterVariantCode(var PurchaseLine: Record "Purchase Line"; var ReservationEntry: Record "Reservation Entry"; var Positive: Boolean; var IsHandled: Boolean)` (integration)
- `OnInitQtyToReceive2OnBeforeCalcInvDiscToInvoice(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line")` (integration)
- `OnInitOutstandingOnBeforeInitOutstandingAmount(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnShowItemChargeAssgntOnBeforeCalcItemCharge(var PurchaseLine: Record "Purchase Line"; var ItemChargeAssgntLineAmt: Decimal; Currency: Record Currency; var IsHandled: Boolean; var ItemChargeAssgntPurch: Record "Item Charge Assignment (Purch)")` (integration)
- `OnUpdateDirectUnitCostOnBeforeFindPrice(PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; CalledByFieldNo: Integer; CallingFieldNo: Integer; var IsHandled: Boolean; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnUpdateDeferralAmountsOnBeforeSetDeferralPostDate(var PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; var DeferralPostDate: Date)` (integration)
- `OnUpdateUnitCostOnBeforeUpdateUnitCostLCY(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header"; CurrentFieldNo: Integer; Item: Record Item; SKU: Record "Stockkeeping Unit"; Currency: Record Currency; GLSetup: Record "General Ledger Setup")` (integration)
- `OnUpdateVATOnLinesOnAfterSetFilters(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header")` (integration)
- `OnUpdateVATOnLinesOnAfterCalculateAmounts(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header")` (integration)
- `OnUpdateVATOnLinesOnAfterCalculateNewAmount(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header"; VATAmountLine: Record "VAT Amount Line"; VATAmountLineReminder: Record "VAT Amount Line"; var NewAmountIncludingVAT: Decimal; VATAmount: Decimal; var NewAmount: Decimal; var NewVATBaseAmount: Decimal; var CurrentPurchaseLine: Record "Purchase Line")` (integration)
- `OnUpdateVATOnLinesOnAfterCalculateVATDifference(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header"; VATAmountLine: Record "VAT Amount Line"; var TempVATAmountLineReminder: Record "VAT Amount Line" temporary; QtyType: Option General,Invoicing,Shipping; var CurrentPurchaseLine: Record "Purchase Line"; LineAmountToInvoice: Decimal; InvDiscAmount: Decimal)` (integration)
- `OnUpdateVATOnLinesOnBeforeCalculateAmounts(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header")` (integration)
- `OnUpdateVATOnLinesOnBeforeInitOutstanding(var PurchaseLine: Record "Purchase Line"; QtyType: Option General,Invoicing,Shipping)` (integration)
- `OnUpdateVATOnLinesOnBeforeTempVATAmountLineRemainderModify(var PurchaseLine: Record "Purchase Line"; var TempVATAmountLineRemainder: Record "VAT Amount Line"; VATAmount: Decimal; NewVATBaseAmount: Decimal; var CurrentPurchaseLine: Record "Purchase Line")` (integration)
- `OnUpdateVATOnLinesOnBeforeCalcNotFullVATAmount(var PurchaseLine: Record "Purchase Line"; PurchaseHeader: Record "Purchase Header"; var Currency: record Currency; var VATAmountLine: Record "VAT Amount Line"; var TempVATAmountLineRemainder: Record "VAT Amount Line"; NewVATBaseAmount: decimal; VATAmount: decimal; var IsHandled: Boolean)` (integration)
- `OnValidateJobNoOnBeforeGetJob(var PurchLine: Record "Purchase Line"; var xPurchLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateBinCodeOnBeforeTestFields(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateDescriptionOnAfterCalcShouldErrorForFindDescription(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; var ShouldErrorForFindDescription: Boolean)` (integration)
- `OnValidateExpectedReceiptDateOnBeforeCheckDateConflict(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateLineAmountOnAfterCalcMaxLineAmount(var PurchaseLine: Record "Purchase Line"; var MaxLineAmount: Decimal; var Currency: Record Currency)` (integration)
- `OnValidateLineDiscountPercentOnAfterTestStatusOpen(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateLineDiscountPercentOnBeforeUpdateAmounts(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateLocationCodeOnBeforeDropShipmentError(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateLocationCodeOnBeforeSpecialOrderError(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; CurrFieldNo: Integer; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateLocationCodeOnBeforePlanPriceCalcByField(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; CurrFieldNo: Integer; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateTypeOnAfterCheckItem(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateTypeOnBeforeInitRec(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer)` (integration)
- `OnValidateTypeOnCopyFromTempPurchLine(var PurchLine: Record "Purchase Line"; TempPurchaseLine: Record "Purchase Line" temporary; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateNoOnCopyFromTempPurchLine(var PurchLine: Record "Purchase Line"; TempPurchaseLine: Record "Purchase Line" temporary; xPurchLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateNoOnAfterAssignQtyFromXRec(var PurchaseLine: Record "Purchase Line"; TempPurchaseLine: Record "Purchase Line" temporary)` (integration)
- `OnValidateNoOnAfterChecks(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer)` (integration)
- `OnValidateNoOnAfterVerifyChange(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateNoOnBeforeInitRec(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer)` (integration)
- `OnValidatePurchasingCodeOnAfterAssignFields(var PurchaseLine: Record "Purchase Line"; Purchasing: Record Purchasing)` (integration)
- `OnValidateQtyToReceiveOnAfterCheck(var PurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateQtyToReceiveOnAfterInitQty(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateQtyToReceiveOnBeforeInitQtyToReceive(var PurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateQtyToReceiveOnAfterCalcQtyToReceiveBase(var PurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer)` (integration)
- `OnValidateQtyToReceiveOnAfterCalcShouldCheckLocationRequireReceive(var PurchaseLine: Record "Purchase Line"; var ShouldCheckLocationRequireReceive: Boolean)` (integration)
- `OnValidateQuantityOnBeforeDropShptCheck(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateQuantityOnBeforeInitQtyToReceive(var PurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateQuantityOnBeforePurchaseLineVerifyChange(var PurchaseLine: Record "Purchase Line"; StatusCheckSuspended: Boolean; var IsHandled: Boolean; var xPurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateReturnQtyToShipOnAfterCheck(var PurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer)` (integration)
- `OnValidateReturnQtyToShipOnAfterInitQty(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateUnitCostLCYOnAfterUpdateUnitCostCurrency(var PurchaseLine: Record "Purchase Line"; var UnitCostCurrency: Decimal)` (integration)
- `OnValidateUnitOfMeasureCodeOnBeforeDropShipmentError(PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer)` (integration)
- `OnValidateUnitOfMeasureCodeOnAfterCalcShouldUpdateItemReference(var PurchaseLine: Record "Purchase Line"; var ShouldUpdateItemReference: Boolean; var ShouldUpdateNonSubcontractingDocument: Boolean)` (integration)
- `OnValidateVariantCodeOnAfterValidationChecks(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer)` (integration)
- `OnValidateVariantCodeOnBeforeDropShipmentError(PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
  - subscribers: [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnValidateVariantCodeOnBeforeDropShipmentError
- `OnValidateVATProdPostingGroupOnAfterVATPostingSetupGet(var VATPostingSetup: Record "VAT Posting Setup")` (integration)
- `OnValidateVATProdPostingGroupOnAfterCalcShouldUpdateUnitCost(var PurchaseLine: Record "Purchase Line"; VATPostingSetup: Record "VAT Posting Setup"; var ShouldUpdateUnitCost: Boolean)` (integration)
- `OnValidateVATProdPostingGroupOnBeforeCheckVATCalcType(var PurchaseLine: Record "Purchase Line"; var VATPostingSetup: Record "VAT Posting Setup"; var IsHandled: Boolean; CurrentFieldNo: Integer)` (integration)
- `OnValidateOverReceiptQuantity(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CalledByFieldNo: Integer; var Handled: Boolean)` (integration)
- `OnAfterAssignResourceValues(var PurchaseLine: Record "Purchase Line"; Resource: Record Resource)` (integration)
  - subscribers: [Codeunit 5012 "Service Declaration Mgt."](../codeunit/5012.md) OnAfterAssignResourceValuesInPurchLine, [Codeunit 6225 "Sust. Purchase Subscriber"](../codeunit/6225.md) OnAfterAssignResourceValues
- `OnAfterAssignResourceUOM(var PurchaseLine: Record "Purchase Line"; Resource: Record Resource; CurrentFieldNo: Integer)` (integration)
- `OnAfterUpdateVendorItemNoFromItemReference(var Rec: Record "Purchase Line"; xRec: Record "Purchase Line")` (integration)
- `OnValidateBlanketOrderNoOnAfterCheck(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckBuyFromVendorNo(PurchaseHeader: Record "Purchase Header"; var IsHandled: Boolean)` (integration)
- `OnAfterInternalLeadTimeDays(PurchaseLine: Record "Purchase Line"; PurchDate: Date; var TotalDays: DateFormula)` (integration)
- `OnBeforeGetPurchHeader(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header"; var IsHandled: Boolean; var Currency: Record Currency; var HasPurchHeader: Boolean)` (integration): Raised before getting the purchase header for the purchase line.
- `OnBeforeUpdateLineAmount(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; Currency: Record Currency; var LineAmountChanged: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobTaskNo(xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; CurrentFieldNo: Integer; var TempJobJournalLine: Record "Job Journal Line" temporary)` (integration)
- `OnBeforeValidateNo(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
  - subscribers: [Codeunit 2679 "Purchase Alloc. Acc. Mgt."](../codeunit/2679.md) HandleValidateLineNo
- `OnBeforeCheckLocationRequireReceive(var PurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckLineNotShippedOrReceived(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnAfterIsCreditDocType(PurchaseLine: Record "Purchase Line"; var Result: Boolean)` (integration)
- `OnAfterIsInvoiceDocType(var PurchaseLine: Record "Purchase Line"; var Result: Boolean)` (integration)
- `OnValidateQuantityOnBeforeCheckRcptRetShptRelation(var PurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer)` (integration)
- `OnValidateQuantityOnAfterCalcBaseQty(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateQuantityOnAfterCalcDoInitOutstanding(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var DoInitOutstanding: Boolean)` (integration)
- `OnValidateQuantityOnAfterPlanPriceCalcByField(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeValidateQtyToInvoice(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateQuantityBase(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateVariantCodeOnBeforeUpdateItemReference(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateVariantCodeOnAfterUpdateItemReference(var PurchaseLine: Record "Purchase Line"; CallingFeildNo: Integer)` (integration)
- `OnBeforeValidateRequestedReceiptDate(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var CustomCalendarChange: array[2] of Record "Customized Calendar Change"; CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckApplToItemLedgEntry(var PurchaseLine: Record "Purchase Line"; ItemLedgEntry: Record "Item Ledger Entry"; var Result: Code[10]; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckReceiptRelation(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckRetShptRelation(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeGetOverheadRateFCY(var PurchaseLine: Record "Purchase Line"; var QtyPerUOM: Decimal; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnDeleteOnBeforePurchaseLineDelete(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnDeleteOnBeforeCheckQtyNotInvoiced(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnCopyFromItemOnBeforeAssignUnitPriceLCY(var PurchaseLine: Record "Purchase Line"; var GLSetup: Record "General Ledger Setup"; var VATPostingSetup: Record "VAT Posting Setup"; var IsHandled: Boolean)` (integration)
- `OnSelectItemEntryOnBeforeSetRangeLocationCode(var PurchaseLine: Record "Purchase Line"; var ItemLedgEntry: Record "Item Ledger Entry")` (integration)
- `OnSelectItemEntryOnAfterItemLedgEntrySetFilters(var PurchaseLine: Record "Purchase Line"; var ItemLedgEntry: Record "Item Ledger Entry")` (integration)
- `OnUpdateDirectUnitCostByFieldOnBeforeUpdateItemReference(var PurchaseLine: Record "Purchase Line"; var CalledByFieldNo: Integer)` (integration)
- `OnUpdateVATAmountsOnAfterCalcNormalVATAmountsForPricesIncludingVAT(var PurchaseLine: Record "Purchase Line"; PurchHeader: Record "Purchase Header"; Currency: Record Currency; TotalAmount: Decimal; TotalAmountInclVAT: Decimal; var PurchaseLine2: Record "Purchase Line")` (integration)
- `OnUpdateVATAmountsOnAfterCalcNormalVATAmountsForPricesExcludingVAT(var PurchaseLine: Record "Purchase Line"; PurchHeader: Record "Purchase Header"; Currency: Record Currency; TotalAmount: Decimal; TotalAmountInclVAT: Decimal; var PurchaseLine2: Record "Purchase Line")` (integration)
- `OnUpdateVATAmountsOnAfterSetFilters(var PurchaseLine: Record "Purchase Line"; var PurchaseLine2: Record "Purchase Line")` (integration)
- `OnUpdateVATAmountsOnBeforePurchLineModify(var PurchaseLine: Record "Purchase Line"; var PurchLine2: Record "Purchase Line")` (integration)
- `OnUpdateVATOnLinesOnBeforeProcessPurchLines(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var PurchHeader: Record "Purchase Header"; var VATAmountLine: Record "VAT Amount Line"; var TempVATAmountLineRemainder: Record "VAT Amount Line" temporary; var LineWasModified: Boolean; var IsHandled: Boolean; QtyType: Option General,Invoicing,Shipping)` (integration)
- `OnUpdateVATOnLinesOnBeforeProcessPurchLine(var PurchaseLine: Record "Purchase Line"; var PurchHeader: Record "Purchase Header"; var VATAmountLine: Record "VAT Amount Line"; QtyType: Option General,Invoicing,Shipping)` (integration)
- `OnBeforeInitType(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var PurchHeader: Record "Purchase Header"; var IsHandled: Boolean)` (integration)
- `OnBeforeOverReceiptProcessing(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer; var Result: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeTestFieldQuantity(var PurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateVATProdPostingGroup(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
  - subscribers: [Codeunit 2674 "Alloc. Acc. Handle Doc. Post"](../codeunit/2674.md) PurchaseBeforeValidateVATProdPostingGroup
- `OnBeforeValidateLineDiscountPercent(var PurchaseLine: Record "Purchase Line"; DropInvoiceDiscountAmount: Boolean; var IsHandled: Boolean)` (integration)
- `OnValidateLocationCodeOnAfterTestStatusOpen(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; var ShouldExit: Boolean)` (integration)
- `OnBeforeUpdateDimensionsFromJobTask(var PurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnInitHeaderDefaultsOnBeforeSetVATBusPostingGroup(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateNoOnBeforeAssignQtyFromXRec(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnAddItemOnBeforeInsert(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateVATProdPostingGroupOnAfterTestStatusOpen(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; var xPurchaseLine: Record "Purchase Line")` (integration)
  - subscribers: [Codeunit 2674 "Alloc. Acc. Handle Doc. Post"](../codeunit/2674.md) BeforeValidateVATProdPostingGroupTrigger
- `OnAfterSetReservationEntry(var ReservEntry: Record "Reservation Entry"; var PurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeSetDefaultQuantity(var PurchLine: Record "Purchase Line"; var xPurchLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateICPartner(var PurchLine: Record "Purchase Line"; GLAcc: Record "G/L Account"; var PurchHeader: Record "Purchase Header"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidatePurchasingCode(var PurchLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateLineAmountBeforeValidateLineDiscountAmount(var PurchLine: Record "Purchase Line"; Currency: Record Currency; var IsHandled: Boolean; CurrFieldNo: Integer)` (integration)
- `OnBeforeInitOutstanding(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateQuantity(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnAfterValidateOrderDate(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer)` (integration)
- `OnValidateAmountOnAfterCalculateNormalVAT(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header"; var Currency: Record Currency)` (integration)
- `OnValidateAmountIncludingVATOnAfterCalculateNormalVAT(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header"; var Currency: Record Currency)` (integration)
- `OnValidateQuantityOnBeforeCheckWithQuantityReceived(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateQuantityOnAfterShouldCheckWithReturnQtyShipped(var PurchaseLine: Record "Purchase Line"; var ShouldCalcWithReturnQtyShipped: Boolean)` (integration)
- `OnValidateQuantityOnBeforeCheckWMS(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateQuantityOnAfterInitQty(var PurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer)` (integration)
- `OnUpdateVATAmountsOnBeforeValidateLineDiscountPercent(PurchaseLine: Record "Purchase Line"; var PurchLine2: Record "Purchase Line")` (integration)
- `OnValidateUnitOfMeasureCodeOnBeforeValidateQuantity(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; Item: Record Item)` (integration)
- `OnDeleteOnAfterCalcShouldModifySalesOrderLine(var PurchaseLine: Record "Purchase Line"; var ShouldModifySalesOrderLine: Boolean)` (integration)
- `OnBeforeGetLineAmountToHandle(PurchaseLine: Record "Purchase Line"; var Currency: Record Currency; QtyToHandle: Decimal; var LineAmount: Decimal; var LineDiscAmount: Decimal; var IsHandled: Boolean)` (integration)
- `OnUpdateUnitCostOnAfterCalcDiscountAmountPerQty(var PurchaseLine: Record "Purchase Line"; var DiscountAmountPerQty: Decimal)` (integration)
- `OnDeleteOnAfterPurchLineDeleteAll(var PurchaseLine: Record "Purchase Line"; var PurchLine2: Record "Purchase Line")` (integration)
- `OnUpdateUnitCostOnAfterCalcStandardUnitCostLCY(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateQtyToReceiveOnAfterCheckQty(var PurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer)` (integration)
- `OnValidateVATProdPostingGroupOnBeforeGetVATPostingSetup(var PurchaseLine: Record "Purchase Line"; var VATPostingSetup: Record "VAT Posting Setup"; var IsHandled: Boolean; var xPurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateQuantityOnBeforeResetAmounts(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")` (integration)
  - subscribers: [Codeunit 6225 "Sust. Purchase Subscriber"](../codeunit/6225.md) OnValidateQuantityOnBeforeResetAmounts
- `OnBeforeValidateJobLineDiscAmountLCY(var PurchaseLine: Record "Purchase Line"; var TempJobJnlLine: Record "Job Journal Line" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobLineType(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobUnitPrice(var PurchaseLine: Record "Purchase Line"; var TempJobJnlLine: Record "Job Journal Line" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobNo(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobLineDiscountPercent(var PurchaseLine: Record "Purchase Line"; var TempJobJnlLine: Record "Job Journal Line" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobLineDiscountAmount(var PurchaseLine: Record "Purchase Line"; var TempJobJnlLine: Record "Job Journal Line" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobUnitPriceLCY(var PurchaseLine: Record "Purchase Line"; var TempJobJnlLine: Record "Job Journal Line" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobLineAmount(var PurchaseLine: Record "Purchase Line"; var TempJobJnlLine: Record "Job Journal Line" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobLineAmountLCY(var PurchaseLine: Record "Purchase Line"; var TempJobJnlLine: Record "Job Journal Line" temporary; var IsHandled: Boolean)` (integration)
- `OnLineDiscountAmountOnValidateOnBeforeUpdateAmounts(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnModifyOnAfterSetFilters(var PurchaseLine: Record "Purchase Line"; var PurchaseLine2: Record "Purchase Line")` (integration)
- `OnUpdateVATOnLinesOnAfterUpdateBaseAmounts(var PurchHeader: Record "Purchase Header"; var PurchLine: Record "Purchase Line"; var TempVATAmountLineRemainder: Record "VAT Amount Line" temporary; var VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency)` (integration)
- `OnValidateNoOnBeforeCheckReceiptNo(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnDeleteOnAfterUpdateAmounts(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnDeleteOnBeforeUpdateAmounts(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnBeforeInitTableValuePair(var TableValuePair: Dictionary of [Integer, Code[20]]; FieldNo: Integer; var IsHandled: Boolean; var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterInitTableValuePair(var TableValuePair: Dictionary of [Integer, Code[20]]; FieldNo: Integer; var PurchaseLine: Record "Purchase Line")` (integration)
- `OnCheckWarehouseOnAfterSetLocation2(var PurchaseLine: Record "Purchase Line"; var Location2: Record Location)` (integration)
- `OnBeforeValidateLineAmount(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CurrentFieldNo: Integer; var IsHandled: Boolean; Currency: Record Currency)` (integration)
- `OnBeforeZeroAmountLine(var PurchaseLine: Record "Purchase Line"; QtyType: Option General,Invoicing,Shipping; var Result: Boolean; var IsHandled: Boolean)` (integration)
- `OnCalcVATAmountLinesOnBeforeAssignQuantities(var PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; var VATAmountLine: record "VAT Amount Line"; var QtyToHandle: Decimal; var IsHandled: Boolean)` (integration)
- `OnCreateDimFromDefaultDimOnBeforeCreateDim(PurchaseLine: Record "Purchase Line"; DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]; FieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnAfterCreateDimFromDefaultDim(var PurchaseLine: Record "Purchase Line"; var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]; FieldNo: Integer)` (integration)
- `OnAfterGetDefaultBin(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnUpdateVATAmountsOnBeforeCalcAmounts(var PurchaseLine: Record "Purchase Line"; var PurchaseLine2: Record "Purchase Line"; var TotalAmount: Decimal; TotalAmountInclVAT: Decimal; var TotalLineAmount: Decimal; var TotalInvDiscAmount: Decimal; var TotalQuantityBase: Decimal; TotalVATDifference: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeGetDate(var PurchaseLine: Record "Purchase Line"; var ResultDate: Date; var IsHandled: Boolean)` (integration)
- `OnGetSignedValue(var PurchaseLine: Record "Purchase Line"; Value: Decimal; var Result: Decimal)` (integration)
- `OnAfterValidateTypePurchaseLine(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; var TempPurchaseLine: Record "Purchase Line" temporary)` (integration)
- `OnAfterValidateNoPurchaseLine(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; var TempPurchaseLine: Record "Purchase Line" temporary; PurchaseHeader: Record "Purchase Header")` (integration)
- `OnBeforeAttachToInventoryItemLine(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateJobPlanningLineNoOnBeforeGLAccountTest(var PurchaseLine: Record "Purchase Line"; var JobPlanningLine: Record "Job Planning Line"; var IsHandled: Boolean)` (integration)
- `OnValidateJobPlanningLineNoOnBeforeTestFields(var PurchaseLine: Record "Purchase Line"; var JobPlanningLine: Record "Job Planning Line"; var IsHandled: Boolean)` (integration)
- `OnAfterIsInbound(PurchaseLine: Record "Purchase Line"; var IsInboundDocument: Boolean)` (integration)
- `OnBeforeBlanketOrderIsRelated(var CurrentPurchaseLine: Record "Purchase Line"; var BlanketOrderPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; var Result: Boolean)` (integration)
- `OnBlanketOrderIsRelatedOnAfterSetLoadFields(var BlanketOrderPurchaseLine: Record "Purchase Line")` (integration)
- `OnUpdateDirectUnitCostByFieldOnAfterSetBlanketOrderPriceFields(PurchaseHeader: Record "Purchase Header"; BlanketOrderPurchaseLine: Record "Purchase Line"; var CurrentPurchaseLine: Record "Purchase Line"; CalledByFieldNo: Integer; CurrentFieldNo: Integer)` (integration)
- `OnAfterUpdatePrePaymentAmounts(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnValidateNoOnBeforeJobTaskIsSet(PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; TempPurchaseLine: Record "Purchase Line" temporary; var IsHandled: Boolean)` (integration)
- `OnValidateVariantCodeBeforeCheckBlocked(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnAfterValidateBlanketOrderLineNo(var PurchaseLine: Record "Purchase Line"; BlanketOrderPurchLine: Record "Purchase Line")` (integration)
- `OnCheckIfPurchaseLineMeetsReservedFromStockSetting(QtyToPost: Decimal; ReservedFromStock: Enum "Reservation From Stock"; var Result: Boolean)` (integration)
- `OnCalcVATAmountLinesOnAfterCalcShouldProcessRounding(var PurchaseLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line"; var TotalVATAmount: Decimal; Currency: Record Currency; var ShouldProcessRounding: Boolean)` (integration)
- `OnCalcVATAmountLinesOnBeforeVATAmountLineUpdateLines(var PurchaseLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line"; var TotalVATAmount: Decimal)` (integration)
- `OnAfterSetVendorItemNo(var PurchaseLine: Record "Purchase Line"; ItemVendor: Record "Item Vendor"; Item: Record Item)` (integration)
- `OnShowDimensionsOnAfterEditDimensionSet(var PurchaseLine: Record "Purchase Line"; OldDimensionSetId: Integer)` (integration)
- `OnCopyFromItemOnBeforeGetItemTranslation(var PurchaseLine: Record "Purchase Line"; var Item: Record Item; var IsHandled: Boolean)` (integration)
- `OnCopyFromItemOnAfterGetItemTranslation(var PurchaseLine: Record "Purchase Line"; var Item: Record Item)` (integration)
- `OnValidateDirectUnitCostOnBeforeValidateLineDiscPct(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeConfirmReceivedShippedItemDimChange(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; var Result: Boolean)` (integration)
- `OnAfterGetVatBaseDiscountPct(var PurchaseLine: Record "Purchase Line"; var PurchaseHeader: Record "Purchase Header"; var Result: Decimal)` (integration)
- `OnUpdateDirectUnitCostByFieldOnAfterCalcShouldExit(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; CalledByFieldNo: Integer; CurrFieldNo: Integer; var ShouldExit: Boolean)` (integration)
- `OnAfterUpdateDimensionsFromJobTask(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterClearQtyIfBlank(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; PurchasePayablesSetup: Record "Purchases & Payables Setup")` (integration)
- `OnTestProdOrderNo(var PurchaseLine: Record "Purchase Line")` (integration)
  - subscribers: [Codeunit 99000789 "Mfg. Purchase Document Mgt."](../codeunit/99000789.md) OnTestProdOrderNo
- `OnTestWorkCenterNo(var PurchaseLine: Record "Purchase Line")` (integration)
  - subscribers: [Codeunit 99000789 "Mfg. Purchase Document Mgt."](../codeunit/99000789.md) OnTestWorkCenterNo
- `OnSumVATAmountLineOnBeforeModify(var PurchaseLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line")` (integration)
- `OnIsProdOrder(var PurchaseLine: Record "Purchase Line"; var Result: Boolean)` (integration)
  - subscribers: [Codeunit 99000789 "Mfg. Purchase Document Mgt."](../codeunit/99000789.md) OnIsProdOrder
- `OnIsWorkCenter(var PurchaseLine: Record "Purchase Line"; var Result: Boolean)` (integration)
  - subscribers: [Codeunit 99000789 "Mfg. Purchase Document Mgt."](../codeunit/99000789.md) OnIsWorkCenter
- `OnInsertVATAmountOnBeforeInsert(var PurchaseLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line")` (integration)
- `OnIsSubcontractingCreditMemo(var PurchaseLine: Record "Purchase Line"; var Result: Boolean)` (integration)
  - subscribers: [Codeunit 99000789 "Mfg. Purchase Document Mgt."](../codeunit/99000789.md) OnIsSubcontractingCreditMemo
- `OnOpenItemTrackingLinesOnAfterCheck(var PurchaseLine: Record "Purchase Line")` (integration)
  - subscribers: [Codeunit 99000789 "Mfg. Purchase Document Mgt."](../codeunit/99000789.md) OnOpenItemTrackingLinesOnAfterCheck
- `OnAfterCheckAssosiatedProdOrder(var PurchaseLine: Record "Purchase Line")` (integration)
  - subscribers: [Codeunit 99000789 "Mfg. Purchase Document Mgt."](../codeunit/99000789.md) OnAfterCheckAssosiatedProdOrder
- `OnFindVATAmountLineOnAfterSetFilters(var PurchaseLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line")` (integration)
- `OnAfterReversedInternalLeadTimeDays(PurchaseLine: Record "Purchase Line"; PurchDate: Date; ReversedWhseHandlingTime: DateFormula; var TotalDays: DateFormula)` (integration)
- `OnAfterGetPostingSetup(var PurchaseLine: Record "Purchase Line"; var VATPostingSetup: Record "VAT Posting Setup")` (integration)
- `OnAfterClearVATPct(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterClearPrepaymentVATPct(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterClearVATDifference(var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterGetVATPct(var PurchaseLine: Record "Purchase Line"; var VATPct: Decimal)` (integration)
- `OnAfterGetPrepaymentVATPct(var PurchaseLine: Record "Purchase Line"; var PrepaymentVATPct: Decimal)` (integration)
- `OnAfterCopyFromVATPostingSetup(var PurchaseLine: Record "Purchase Line"; var VATPostingSetupFrom: Record "VAT Posting Setup")` (integration)
- `OnAfterCopyPrepaymentFromVATPostingSetup(var PurchaseLine: Record "Purchase Line"; var VATPostingSetupFrom: Record "VAT Posting Setup")` (integration)
- `OnGetFAPostingGroupOnBeforeCheckGLAcc(var PurchaseLine: Record "Purchase Line"; var GLAccount: Record "G/L Account"; FADeprBook: Record "FA Depreciation Book"; var IsHandled: Boolean)` (integration)
- `OnAfterUpdateLineAmount(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; Currency: Record Currency; var LineAmountChanged: Boolean)` (integration)
- `OnValidateLocationCodeOnBeforeSetInboundWhseHandlingTime(CurrFieldNo: Integer; var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnValidateOrderDateOnBeforeCheckDateConflict(var PurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnUpdateUnitCostOnBeforeCalcStandardUnitCostLCY(var PurchaseLine: Record "Purchase Line"; var ShouldCalcStandardUnitCostLCY: Boolean)` (integration)
- `OnValidateIndirectCostOnAfterCalcShouldCheckCostingMethod(var PurchaseLine: Record "Purchase Line"; var ShouldCheckCostingMethod: Boolean)` (integration)
- `OnUpdateVATOnLinesOnBeforeModifyPurchLine(var PurchaseLine: Record "Purchase Line"; VATAmount: Decimal)` (integration)
- `OnBeforeTestPurchaseJobFields(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnInsertOnAfterLockTable(var PurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer)` (integration)
- `OnAfterModifyOnAfterVerifyChange(var PurchaseLine: Record "Purchase Line"; CurrFieldNo: Integer)` (integration)
- `OnUpdateItemChargeAssgntOnBeforeItemChargeAssignmentPurchModify(var PurchaseLine: Record "Purchase Line"; var ItemChargeAssignmentPurch: Record "Item Charge Assignment (Purch)")` (integration)
  - subscribers: [Codeunit 6225 "Sust. Purchase Subscriber"](../codeunit/6225.md) OnUpdateItemChargeAssgntOnBeforeItemChargeAssignmentPurchModify
- `OnBeforeCheckAcquisitionCost(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnAfterCheckIsLineAmountToInvoiceSimple(PurchHeader: Record "Purchase Header"; var IsLineAmountToInvoiceSimple: Boolean)` (integration)
- `OnCalcVATAmountLinesOnBeforeAssignShippingQuantities(var PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; var VATAmountLine: record "VAT Amount Line"; var QtyToHandle: Decimal; var IsHandled: Boolean)` (integration)
- `OnCalcVATAmountLinesOnQtyTypeShippingOnBeforeCalcAmtToHandle(var PurchLine: Record "Purchase Line"; var PurchHeader: Record "Purchase Header"; var QtyToHandle: Decimal; var VATAmountLine: record "VAT Amount Line")` (integration)
- `OnAfterIsServiceCharge(var PurchaseLine: Record "Purchase Line"; var ServiceCharged: Boolean)` (integration)
- `OnValidateGenBusPostingGroupOnBeforeValidateVATBusPostingGroup(var PurchaseLine: Record "Purchase Line"; var ValidateVATBusPostingGroup: Boolean)` (integration)
- `OnAfterSetHideValidationDialog(var PurchaseLine: Record "Purchase Line"; NewHideValidationDialog: Boolean)` (integration): Raised after setting the hide validation dialog flag on the purchase line.

## Trigger event subscribers

- OnAfterDeleteEvent: [Codeunit 1173 "Document Attachment Mgmt"](../codeunit/1173.md) DeleteAttachedDocumentsOnAfterDeletePurchaseLine, [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnAfterDeleteEvent, [Codeunit 5497 "Graph Mgt - Purch Order Buffer"](../codeunit/5497.md) OnAfterDeletePurchaseLine, [Codeunit 5511 "Graph Mgt - Purch. Cr. Memo"](../codeunit/5511.md) OnAfterDeletePurchaseLine, [Codeunit 5529 "Purch. Inv. Aggregator"](../codeunit/5529.md) OnAfterDeletePurchaseLine, [Codeunit 8028 "Usage Based Contr. Subscribers"](../codeunit/8028.md) DeleteOrResetRelatedUsageBillingLinesOnAfterDeletePurchaseLineEvent
- OnAfterInsertEvent: [Codeunit 1173 "Document Attachment Mgmt"](../codeunit/1173.md) DocAttachFlowForPurchaseLineInsert, [Codeunit 5497 "Graph Mgt - Purch Order Buffer"](../codeunit/5497.md) OnAfterInsertPurchaseLine, [Codeunit 5511 "Graph Mgt - Purch. Cr. Memo"](../codeunit/5511.md) OnAfterInsertPurchaseLine, [Codeunit 5529 "Purch. Inv. Aggregator"](../codeunit/5529.md) OnAfterInsertPurchaseLine
- OnAfterModifyEvent: [Codeunit 5497 "Graph Mgt - Purch Order Buffer"](../codeunit/5497.md) OnAfterModifyPurchaseLine, [Codeunit 5511 "Graph Mgt - Purch. Cr. Memo"](../codeunit/5511.md) OnAfterModifyPurchaseLine, [Codeunit 5529 "Purch. Inv. Aggregator"](../codeunit/5529.md) OnAfterModifyPurchaseLine
- OnAfterValidateEvent(Expected Receipt Date): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnAfterValidateExpectedReceiptDate
- OnAfterValidateEvent(No.): [Codeunit 1173 "Document Attachment Mgmt"](../codeunit/1173.md) DocAttachFlowForPurchaseLineItemChg
- OnAfterValidateEvent(Order Date): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnAfterValidateOrderDate
- OnAfterValidateEvent(Planned Receipt Date): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnAfterValidatePlannedReceiptDate
- OnAfterValidateEvent(Quantity): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnAfterValidateQuantity
- OnAfterValidateEvent(Unit of Measure Code): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnAfterValidateUnitOfMeasureCode
- OnBeforeDeleteEvent: [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) CheckTransferOnBeforeDeleteEvent, [Codeunit 8066 "Purchase Documents"](../codeunit/8066.md) PurchaseLineOnAfterDeleteEvent
- OnBeforeModifyEvent: [Codeunit 2679 "Purchase Alloc. Acc. Mgt."](../codeunit/2679.md) CheckBeforeModifyLine, [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangeOnPurchaseLine
- OnBeforeValidateEvent(Amount): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineAmount
- OnBeforeValidateEvent(Bin Code): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnBeforeValidateBinCode
- OnBeforeValidateEvent(Line Amount): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineLineAmount
- OnBeforeValidateEvent(Line Discount %): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineLineDiscount
- OnBeforeValidateEvent(Line Discount Amount): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineLineDiscountAmount
- OnBeforeValidateEvent(Location Code): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnBeforeValidateLocationCode
- OnBeforeValidateEvent(No.): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnBeforeValidateNo, [Codeunit 6250 "Sust. Certificate Subscribers"](../codeunit/6250.md) OnAfterValidatePurchaseLineNoEvent, [Codeunit 8055 "Sub. Contracts Item Management"](../codeunit/8055.md) PurchaseLineOnBeforeValidateEvent, [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineNo
- OnBeforeValidateEvent(Quantity): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnBeforeValidateQuantity, [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineQuantity
- OnBeforeValidateEvent(Recurring Billing from): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineRecurringBillingfrom
- OnBeforeValidateEvent(Recurring Billing to): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineRecurringBillingto
- OnBeforeValidateEvent(Shortcut Dimension 1 Code): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineShortcutDimension1Code
- OnBeforeValidateEvent(Shortcut Dimension 2 Code): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineShortcutDimension2Code
- OnBeforeValidateEvent(Type): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineType
- OnBeforeValidateEvent(Unit Cost): [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineUnitPrice
- OnBeforeValidateEvent(Unit of Measure Code): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnBeforeValidateUnitOfMeasureCode, [Codeunit 8074 "Document Change Management"](../codeunit/8074.md) PreventChangePurchaseLineUnitofMeasureCode
- OnBeforeValidateEvent(Variant Code): [Codeunit 20534 "Subc. Purchase Line Ext"](../codeunit/20534.md) OnBeforeValidateVariantCode

## Procedures

- `SetSkipEnsurePositiveLineNo(NewSkipEnsurePositiveLineNo: Boolean)` (obsolete 28.0: Not used for anything)
- `InitOutstanding()`: Initializes outstanding quantities and amounts of the purchase line.
- `InitOutstandingAmount()`: Initializes the outstanding amounts of the purchase line.
- `InitQtyToReceive()`: Initializes the quantity to receive and quantity to invoice of the purchase line.
- `InitQtyToShip()`: Initializes the return quantity to ship and quantity to invoice of the purchase line.
- `InitQtyToInvoice()`: Initializes the quantity to invoice and vat of the purchase line. Calculates invoice disc. amount to invoice.
- `InitHeaderDefaults(PurchHeader: Record "Purchase Header"; var TempPurchLine: Record "Purchase Line" temporary)`
- `MaxQtyToInvoice(): Decimal`: Calculates maximum quantity that can be invoiced for the purchase line.
- `MaxQtyToInvoiceBase(): Decimal`: Calculates maximum quantity (base) that can be invoiced for the purchase line.
- `MaxQtyToReceiveBase(QtyToReceiveBase: Decimal): Decimal`: Returns the maximum quantity (base) that can be received for a given quantity.
- `GetVatBaseDiscountPct(PurchaseHeader: Record "Purchase Header"): Decimal` (internal)
- `CalcInvDiscToInvoice()`: Calculates and sets the invoices discount amount to invoice and updates vat.
- `CalcLineAmount(): Decimal`: Calculates the line amount minus inv. discount amount for the purchase line.
- `CheckLineAmount(MaxLineAmount: Decimal)`
- `CheckLineTypeOnIndirectCostPercentUpdate()`
- `SetPurchHeader(NewPurchHeader: Record "Purchase Header")`: Assigns given purchase header to the global variable and initializes the currency variable.
- `SetSuppressPurchaseHeaderExistsVerification(NewSuppressPurchaseHeaderExistsVerification: Boolean)`: Sets the value of the SuppressPurchaseHeaderExistsVerification variable.
- `GetPurchHeader(): Record "Purchase Header"`: Retrieves the global purchase header for the current purchase line.
- `GetPurchHeader(var OutPurchHeader: Record "Purchase Header"; var OutCurrency: Record Currency)`: Gets the purchase header and currency for the current purchase line.
- `GetItem(): Record Item`: Returns the item record.
- `GetRemainingQty(var RemainingQty: Decimal; var RemainingQtyBase: Decimal)`: Returns remaining unreserved quantity and quantity (base) of the purchase line.
- `GetReservationQty(var QtyReserved: Decimal; var QtyReservedBase: Decimal; var QtyToReserve: Decimal; var QtyToReserveBase: Decimal): Decimal`: Returns reservation quantities.
- `GetSourceCaption(): Text`: Returns a text that consists of the document type, document no. and line number separated by a space.
- `SetReservationEntry(var ReservEntry: Record "Reservation Entry")`: Initializes the reservation entries from the purchase line.
- `SetReservationFilters(var ReservEntry: Record "Reservation Entry")`: Filters reservation entry from the purchase line.
- `ReservEntryExist(): Boolean`: Checks if reservation entry exists for the purchase line.
- `GetLineAmountExclVAT(): Decimal`: Returns line amount excluding VAT for the purchase line.
- `GetLineAmountInclVAT(): Decimal`: Returns line amount including VAT for the purchase line.
- `SetHasBeenShown()`: Sets the global flag HasBeenShown to true.
- `IsPriceCalcCalledByField(CurrPriceFieldNo: Integer): Boolean`: Checks if the procedure has been called from the field that was previously planned.
- `PlanPriceCalcByField(CurrPriceFieldNo: Integer)`: Sets the field that initiates the price calculation if it is not already set.
- `ClearFieldCausedPriceCalculation()`: Clears the field number that is planned to initiate the price calculation.
- `UpdateDirectUnitCost(CalledByFieldNo: Integer)`: Updates the direct unit cost of the purchase line.
- `GetPriceCalculationHandler(PurchaseHeader: Record "Purchase Header"; var PriceCalculation: Interface "Price Calculation")`: Gets price calculation interface implementation for the purchase line.
- `GetLineWithPrice(var LineWithPrice: Interface "Line With Price")`: Gets the default or overridden line with price interface implementation.
- `CountDiscount(ShowAll: Boolean): Integer`: Wrapper for price calculation method CountDiscount. Returns the count of price list lines containing discounts suitable for the purchase line.
- `CountPrice(ShowAll: Boolean): Integer`: Wrapper for price calculation method CountPrice. Returns the count of price list lines containing prices suitable for the purchase line.
- `DiscountExists(ShowAll: Boolean): Boolean`: Wrapper for price calculation method IsDiscountExists. Returns true if there are any price list lines containing discounts that are applicable to the purchase line.
- `PriceExists(ShowAll: Boolean): Boolean`: Wrapper for price calculation method IsPriceExists. Returns true if there are any price list lines containing prices that are applicable to the purchase line.
- `PickDiscount()`: Wrapper for price calculation method PickDiscount. Opens a price list selection to choose discounts suitable for the purchase line. The discounts are assigned to the purchase line after selection.
- `PickPrice()`: Wrapper for price calculation method PickPrice. Opens a price list selection to choose prices suitable for the purchase line. The prices are assigned to the purchase line after selection.
- `UpdateReferencePriceAndDiscount()`: Updates the purchase line's price and discount based on the item reference number.
- `UpdateUnitCost()`: Updates the unit cost of the purchase line.
- `UpdateAmounts()`: Updates line, vat, prepayment and deferral amounts of the purchase line. Initializes outstanding amounts.
- `UpdateVATAmounts()`: Updates amounts, vat amounts and vat procentage of the purchase line.
- `UpdatePrepmtSetupFields()`: Checks prepayment setups and assigns prepayment fields to the purchase line.
- `UpdateSalesCost()`: Updates unit costs of the purchase line.
- `GetFAPostingGroup()`
- `UpdateUOMQtyPerStockQty()`: Updates unit cost, unit price and direct unit cost for the purchase line.
- `SelectMultipleItems()`: Opens a selection of items page. After that, selected items are added to purchase lines.
- `AddItems(SelectionFilter: Text)`: Adds items to the purchase lines based on a selection filter.
- `AddItem(var PurchLine: Record "Purchase Line"; ItemNo: Code[20])`: Inserts an item to the purchase line.
- `TransferExtendedTexts(var PurchaseLine: Record "Purchase Line"; var LastPurchaseLine: Record "Purchase Line")`: Transfers extended texts for the purchase line.
- `InitNewLine(var NewPurchLine: Record "Purchase Line")`: Initializes a new purchase line based on the current purchase line.
- `ShowOrderTracking()`
- `ShowReservation()`: Opens the reservation page for an item in a purchase line.
- `ShowReservationEntries(Modal: Boolean)`: Opens a reservation entries page for the current purchase line.
- `GetDate(): Date`: Returns the posting date from the related purchase header if it's available, otherwise it returns the current work date.
- `Signed(Value: Decimal): Decimal`: Returns a signed decimal value based on the document type of the purchase line.
- `BlanketOrderLookup()`: Opens a page to select blanket order line for the current purchase line. Selected blanket order line information is assigned to the purchase line.
- `BlockDynamicTracking(SetBlock: Boolean)`: Sets TrackingBlocked flag to the given value. Also sets global Blocked flag of purchase line reserve codeunit.
- `ShowDimensions(): Boolean`: Opens a page for editing dimensions for the purchase line. Upon closing the page, it updates the dimensions on the purcahse line.
- `OpenItemTrackingLines()`: Opens a page for editing item tracking lines for the purchase line.
- `CreateDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])`: Creates dimensions for the purchase line based on the provided default dimension sources.
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`: Verifies whether the provided shortcut dimension code and value are valid.
- `LookupShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`: Opens a page for selecting a dimension code, then assigns the selected value to the presented number of the shortcut dimension.
- `ShowShortcutDimCode(var ShortcutDimCode: array[8] of Code[20])`: Gets an array of shortcut dimension values from the dimensions of the purchase line.
- `ShowItemChargeAssgnt()`: Opens item charge assignment page, where receipt lines can be selected and additional cost is passed to the selected items.
- `UpdateItemChargeAssgnt()`: Updates item chage assignment amounts and unit cost for the pruchase line.
- `DeleteItemChargeAssignment(DocType: Enum "Purchase Document Type"; DocNo: Code[20]; DocLineNo: Integer)`: Deletes item charge assignments that are applied to purchase document line. The provided parameters filter out item charge assignments to delete.
- `DeleteChargeChargeAssgnt(DocType: Enum "Purchase Document Type"; DocNo: Code[20]; DocLineNo: Integer)`: Deletes item charge assignments for a purchase document line. The provided parameters filter out item charge assignments to delete.
- `CheckItemChargeAssgnt()`: Checks if there are any item charge assignments assigned for the purchase line. If so, it checks if item charge assignment is allowed and if the quantity to assign is zero.
- `CheckAssociatedSalesOrder()`
- `GetSkipTaxCalculation(): Boolean`: Returns the value of global SkipTaxCalculation flag.
- `SetSkipTaxCalulation(Skip: Boolean)`: Sets the global flag SkipTaxCalculation value.
- `SetHideValidationDialog(NewHideValidationDialog: Boolean)`: Sets the global HideValidationDialog flag.
- `GetHideValidationDialog(): Boolean`: Gets the global HideValidationDialog flag.
- `GetCaptionClass(FieldNumber: Integer): Text[80]`: Gets a caption class for a field.
- `TestStatusOpen()`: Checks whether the purchase header of the line is open.
- `GetSuspendedStatusCheck(): Boolean`: Returns the value of the global variable StatusCheckSuspended.
- `SuspendStatusCheck(Suspend: Boolean)`: Sets the value of the global variable StatusCheckSuspended.
- `UpdateLeadTimeFields()`: Updates Lead Time fields based on the item, location, variant, and vendor for the purchase line.
- `GetUpdateBasicDates()`: Updates the expected receipt date or order date of a purchase line with the corresponding date in the purchase header.
- `UpdateDates()`: Updates purchase line dates based on the promised receipt date or requested receipt date. If both dates are empty, the procedure updates the expected receipt date or oreder date of a purchase line with the corresponding date in the purchase header.
- `InternalLeadTimeDays(PurchDate: Date): Text[30]`: Returns the total lead time in days for a purchase line, taking into account the safety lead time and inbound whse. handling time. Used to calculate expected receipt date for the purchase line.
- `UpdateVATOnLines(QtyType: Option General,Invoicing,Shipping; var PurchHeader: Record "Purchase Header"; var PurchLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line"): Boolean`: Updates VAT and related amounts on all lines of the document.
- `CalcVATAmountLines(QtyType: Option General,Invoicing,Shipping; var PurchHeader: Record "Purchase Header"; var PurchLine: Record "Purchase Line"; var VATAmountLine: Record "VAT Amount Line")`: Calculates the VAT amounts for purchase lines based on the quantity type, and updates the VAT amount lines accordingly.
- `GetVATAmountLineOfMaxAmt(var VATAmountLine: Record "VAT Amount Line"; PurchaseLine: Record "Purchase Line"): Boolean`: Retrieves the VAT amount line corresponding to the purchase line with the highest absolute amount from the set of VAT amount lines.
- `UpdateWithWarehouseReceive()`: Updates the quantities to receive or return for a purchase line based on the document type, quantity, and the location.
- `CheckWarehouse(ShowDialogMessage: Boolean)`: Checks warehouse requirements for a purchase line.
- `GetOverheadRateFCY(): Decimal` (protected): Calculates the overhead rate in foreign currency for the purchase line.
- `GetItemTranslation()`: Gets the translation of an item's description based on the language code of the purchase header and updates the description fields of the purchase line.
- `AdjustDateFormula(DateFormulatoAdjust: DateFormula): Text[30]`: Formats a date formula parameter and returns it as a text.
- `RowID1(): Text[250]`: Generates a unique identifier text for a purchase line record which is used for item tracking or drop shipment creation.
- `IsInbound(): Boolean`: Determines if a purchase line is inbound based on the document type and quantity.
- `ItemExists(ItemNo: Code[20]): Boolean`: Checks if an item with a given item number exists in the Item table, but only if the type of the purchase line is item.
- `FindOrCreateRecordByNo(SourceNo: Code[20]): Code[20]`: Finds or creates a record by a given number and returns the number of the found or created record.
- `GetAbsMin(QtyToHandle: Decimal; QtyHandled: Decimal): Decimal`: Returns smaller absolute value between QtyToHandle and QtyHandled to ensure that the quantity being handled does not exceed the quantity that is available to handle.
- `CalcPrepaymentToDeduct()`: Updates prepayment amount to deduct of the purchase line.
- `IsFinalInvoice(): Boolean`: Determines if the current purchase line is the final invoice based on the quantity and quantity to invoice.
- `GetLineAmountToHandle(QtyToHandle: Decimal): Decimal`: Calculates the line amount to handle for a purchase line based on the quantity to handle.
- `GetLineAmountToHandleInclPrepmt(QtyToHandle: Decimal): Decimal`: Returns the line amount to handle for a purchase line, including prepayment.
- `JobTaskIsSet(): Boolean`: Determines if the purchase line has a job task set.
- `CreateTempJobJnlLine(GetPrices: Boolean)`: Creates a temporary global job journal line based on the purchase line.
- `UpdateJobPrices()`: Updates the job prices in the purchase line record based on the purchase receipt line, or the global job journal line if receipt line doesn't exist.
- `JobSetCurrencyFactor()`: Updates the job currency factor from the temporary global job journal line.
- `SetUpdateFromVAT(UpdateFromVAT2: Boolean)`: Sets the value of the global variable UpdateFromVAT.
- `InitQtyToReceive2()`: Initializes the quantity to receive and invoice. Additionally, claculates the invoice discount and prepayment amounts.
- `SwitchLinesWithErrorsFilter(var ShowAllLinesEnabled: Boolean)`: Toggles the filter for lines with errors between displaying all lines and only lines with errors.
- `ClearQtyIfBlank()`: Resets qty. to receive values to zero if the document type is an order and the purchase setup has default qty. to receive blank.
- `ShowLineComments()`: Opens a page to show comments for the purchase line.
- `SetDefaultQuantity()`: Resets quantities to receive/return and invoice to zero based on the purchase setup setting for default qty. to receive.
- `UpdatePrePaymentAmounts()`: Recalculates prepayment amounts to reflect changes in quantity.
- `SetVendorItemNo()`: Sets the vendor item number for the purchase line.
- `ZeroAmountLine(QtyType: Option General,Invoicing,Shipping): Boolean`: Determines if the line has a zero amount. It always returns true for a line with a blank type.
- `FilterLinesWithItemToPlan(var Item: Record Item; DocumentType: Enum "Purchase Document Type")`: Sets filters on the purchase line for item lines, a specified document type, and various flow filters set in the provided item record.
- `FindLinesWithItemToPlan(var Item: Record Item; DocumentType: Enum "Purchase Document Type"): Boolean`: Retrieves a record set of item purchase lines that match the provided document type and various filters set on the item.
- `LinesWithItemToPlanExist(var Item: Record Item; DocumentType: Enum "Purchase Document Type"): Boolean`: Determines if any purchase lines exist that match the provided document type and various flow filters set on the item.
- `FilterLinesForReservation(ReservationEntry: Record "Reservation Entry"; DocumentType: Enum "Purchase Document Type"; AvailabilityFilter: Text; Positive: Boolean)`: Sets filters on the purchase line for item lines that match the provided reservation entry.
- `GetVPGInvRoundAcc(var PurchHeader: Record "Purchase Header"): Code[20]`: Retrieves the invoice rounding account number from the vendor posting group associated with the purchase header.
- `IsReceivedShippedItemDimChanged(): Boolean`: Determines if the dimensions have changed on an already received or shipped item line.
- `IsServiceCharge(): Boolean`: Checks if the purchase line is a service charge.
- `ConfirmReceivedShippedItemDimChange(): Boolean`: Raises a confirmation dialog to confirm the change of dimensions on an already received or shipped item line.
- `InitType()`: Initializes the type of the purchase line.
- `GetDefaultLineType(): Enum "Purchase Line Type"`: Returns the default document line type from the purchase setup if it is not blank.
- `CheckLocationOnWMS()`: Checks if the line has receipt/shipment when it's mandatory by the location, but only performs this check if the item in the line is inventoriable.
- `IsNonInventoriableItem(): Boolean`: Determines if the line is a non-inventoriable item line.
- `IsInventoriableItem(): Boolean`: Determines if the line is an inventoriable item line.
- `IsExtendedText(): Boolean`: Determines if the line is an extended text line.
- `IsSubcontractingCreditMemo(): Boolean`
- `GetJnlTemplateName(): Code[10]`: Retrieves the journal template name if g/l setup has a journal template name mandatory field set to true.
- `ValidateLineDiscountPercent(DropInvoiceDiscountAmount: Boolean)`: Updates the line discount percentage for the purchase line. Additionally, updates line, vat, prepayment and deferral amounts, initializes outstanding amounts and updates the unit cost.
- `UpdateICPartner()`: Updates the intercompany partner information on the purchase line if the purchase header has outgoing intercompany direction.
- `HasTypeToFillMandatoryFields(): Boolean`: Checks if the current purchase line record has a type that requires mandatory fields to be filled.
- `GetDeferralAmount(): Decimal`: Gets the defferal amount for the purchase line to be used in deferral schedules.
- `UpdateDeferralAmounts()`: Removes or updates the deferral schedule for the purchase line.
- `ShowDeferrals(PostingDate: Date; CurrencyCode: Code[10]): Boolean`: Opens a page with deferral schedule for the purchase line.
- `InitDeferralCode()`: Initializes the deferral code for the purchase line based on its type.
- `DefaultDeferralCode()`: Initializes the deferral code for the purchase if the type is g/l account, item or resource.
- `IsCreditDocType(): Boolean`: Determines if the document type is a credit document.
- `IsInvoiceDocType(): Boolean`: Determines if the document type of the line is order or invoice.
- `IsReceivedFromOcr(): Boolean`: Determines if incoming document came from OCR.
- `CanEditUnitOfMeasureCode(): Boolean`: Checks if item unit of measure code can be edited.
- `TestItemFields(ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10])`: Verifies that the pruchase line is an item line and the fields match the provided values. If the values do not match, an error is thrown.
- `ClearPurchaseHeader()`: Clears global PurchHeader variable.
- `SendLineInvoiceDiscountResetNotification()`: Sends a notification when the invoice discount amount for the purchase line record has been reset.
- `FormatType(): Text[20]` (obsolete 29.0: Use FormatTypeAsText() instead.): Gets the formated text of the line type for the purchase line.
- `FormatTypeAsText(): Text[30]`: Gets the text representation of the line type for the purchase line.
- `RenameNo(LineType: Enum "Purchase Document Type"; OldNo: Code[20]; NewNo: Code[20])`: Renames the number of all purchase lines corresponding to the specified line type and number.
- `UpdateBaseAmounts(NewAmount: Decimal; NewAmountIncludingVAT: Decimal; NewVATBaseAmount: Decimal)`: Updates the base amounts for the purchase line.
- `UpdatePrepmtAmounts()`: Updates the prepayment amounts for the purchase line.
- `GetResource(): Record Resource`: Returns resource record from the resource number on the purchase line.
- `ShowBlanketOrderPurchaseLines(DocumentType: Enum "Purchase Document Type")`: Open a page with the purchase lines related to the blanket order line.
- `ShowBlanketOrderPostedReceiptLines()`: Open a page with the posted purchase receipt lines related to the blanket order line.
- `ShowBlanketOrderPostedInvoiceLines()`: Open a page with the posted purchase invoice lines related to the blanket order line.
- `ShowBlanketOrderPostedReturnReceiptLines()`: Open a page with the posted return shipment lines related to the blanket order line.
- `ShowBlanketOrderPostedCreditMemoLines()`: Open a page with the posted purchase credit memo lines related to the blanket order line.
- `CalcBaseQty(Qty: Decimal; FromFieldName: Text; ToFieldName: Text): Decimal`
- `CreateDimFromDefaultDim(FieldNo: Integer)`: Initializes the dimensions for the purchase line if default dimensions are defined for the related entry.
- `GetTableValuePair(FieldNo: Integer): Dictionary of [Integer, Code[20]]`: Returns a dictionary mapping table IDs to field values for the purchase line for a specified field no.
- `SaveLookupSelection(SelectedRecordRef: RecordRef)`: Saves the selected record from the lookup to the lookup state manager.
- `AttachToInventoryItemLine(var SelectedPurchLine: Record "Purchase Line")`
- `RestoreLookupSelection()`: Restores the selected record from the lookup state manager to the purchase line.
- `GetDateForCalculations(): Date`: Gets the date required for purchase line calculations.
- `GetDateForCalculations(FromPurchaseHeader: Record "Purchase Header"): Date`: Gets the date required for purchase line calculations.
- `CheckIfPurchaseLineMeetsReservedFromStockSetting(QtyToPost: Decimal; ReservedFromStock: Enum "Reservation From Stock"): Boolean`: Checks if the quantity to post for the purchase line meets the specified quantity in the reservation entries.
- `IsProdOrder(): Boolean`
- `IsWorkCenter(): Boolean`
- `TestProdOrderNo()`
- `TestWorkCenterNo()`
- `ClearVATPct()` (internal)
- `ClearPrepaymentVATPct()` (internal)
- `ClearVATDifference()` (internal)
- `GetVATPct(): Decimal`
- `GetPrepaymentVATPct(): Decimal` (internal)
- `CopyFromVATPostingSetup(var VATPostingSetupFrom: Record "VAT Posting Setup")` (internal)
- `CopyPrepaymentFromVATPostingSetup(var VATPostingSetupFrom: Record "VAT Posting Setup")` (internal)
- `TestPurchaseJobFields()` (internal)
- `IsMatchedToReceiptOrOrder(): Boolean` (internal)
- `IsMatchedToOrder(): Boolean` (internal)
- `IsMatchedToInvoiceCreditMemo(): Boolean` (internal)
- `AssignedItemCharge(): Boolean`: Determines if the line is a charge item line that has been at least partially assigned.
- `ShowDeferralSchedule()`: Opens a page with deferral schedule for the purchase line.
- `RecalculateAmounts(DocumentType: Enum "Purchase Document Type"; DocumentNo: Code[20]; ExcludeLineNo: Integer)`

Plus 97 local procedures.

## Triggers

OnDelete, OnInsert, OnModify, OnRename

## Relations

- drill-down page [Page 518 "Purchase Lines"](../page/518.md)
- lookup page [Page 518 "Purchase Lines"](../page/518.md)
- Job Task No.: TableRelation [Table 1001 "Job Task"](../table/1001.md)
- Attached Doc Count: CalcFormula [Table 1173 "Document Attachment"](../table/1173.md)
- Location Code: TableRelation [Table 14 "Location"](../table/14.md)
- Description: TableRelation [Table 15 "G/L Account"](../table/15.md) (conditional)
- No.: TableRelation [Table 15 "G/L Account"](../table/15.md) (conditional)
- Job No.: TableRelation [Table 167 "Job"](../table/167.md)
- Deferral Code: TableRelation [Table 1700 "Deferral Template"](../table/1700.md)
- Unit of Measure Code: TableRelation [Table 205 "Resource Unit of Measure"](../table/205.md) (conditional)
- Buy-from Vendor Name: CalcFormula [Table 23 "Vendor"](../table/23.md)
- Buy-from Vendor No.: TableRelation [Table 23 "Vendor"](../table/23.md)
- Pay-to Vendor No.: TableRelation [Table 23 "Vendor"](../table/23.md)
- Gen. Bus. Posting Group: TableRelation [Table 250 "Gen. Business Posting Group"](../table/250.md)
- Gen. Prod. Posting Group: TableRelation [Table 251 "Gen. Product Posting Group"](../table/251.md)
- Transaction Type: TableRelation [Table 258 "Transaction Type"](../table/258.md)
- Transport Method: TableRelation [Table 259 "Transport Method"](../table/259.md)
- Allocation Account No.: TableRelation [Table 2670 "Allocation Account"](../table/2670.md)
- Selected Alloc. Account No.: TableRelation [Table 2670 "Allocation Account"](../table/2670.md)
- Alloc. Acc. Modified by User: CalcFormula [Table 2673 "Alloc. Acc. Manual Override"](../table/2673.md)
- Entry Point: TableRelation [Table 282 "Entry/Exit Point"](../table/282.md)
- Area: TableRelation [Table 284 "Area"](../table/284.md)
- Transaction Specification: TableRelation [Table 285 "Transaction Specification"](../table/285.md)
- Prepayment Tax Area Code: TableRelation [Table 318 "Tax Area"](../table/318.md)
- Tax Area Code: TableRelation [Table 318 "Tax Area"](../table/318.md)
- Prepayment Tax Group Code: TableRelation [Table 321 "Tax Group"](../table/321.md)
- Tax Group Code: TableRelation [Table 321 "Tax Group"](../table/321.md)
- VAT Bus. Posting Group: TableRelation [Table 323 "VAT Business Posting Group"](../table/323.md)
- VAT Prod. Posting Group: TableRelation [Table 324 "VAT Product Posting Group"](../table/324.md)
- Reserved Qty. (Base): CalcFormula [Table 337 "Reservation Entry"](../table/337.md)
- Reserved Quantity: CalcFormula [Table 337 "Reservation Entry"](../table/337.md)
- Shortcut Dimension 1 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Shortcut Dimension 2 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Sales Order No.: TableRelation [Table 36 "Sales Header"](../table/36.md)
- Special Order Sales No.: TableRelation [Table 36 "Sales Header"](../table/36.md)
- Sales Order Line No.: TableRelation [Table 37 "Sales Line"](../table/37.md)
- Special Order Sales Line No.: TableRelation [Table 37 "Sales Line"](../table/37.md)
- Blanket Order No.: TableRelation [Table 38 "Purchase Header"](../table/38.md)
- Document No.: TableRelation [Table 38 "Purchase Header"](../table/38.md)
- Attached Lines Count: CalcFormula [Table 39 "Purchase Line"](../table/39.md)
- Attached to Line No.: TableRelation [Table 39 "Purchase Line"](../table/39.md)
- Blanket Order Line No.: TableRelation [Table 39 "Purchase Line"](../table/39.md)
- Currency Code: TableRelation [Table 4 "Currency"](../table/4.md)
- IC Partner Code: TableRelation [Table 413 "IC Partner"](../table/413.md)
- Dimension Set ID: TableRelation [Table 480 "Dimension Set Entry"](../table/480.md)
- Variant Code: TableRelation [Table 5401 "Item Variant"](../table/5401.md) (conditional)
- Item Reference Unit of Measure: TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md)
- Unit of Measure Code: TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md) (conditional)
- Budgeted FA No.: TableRelation [Table 5600 "Fixed Asset"](../table/5600.md)
- Posting Group: TableRelation [Table 5606 "FA Posting Group"](../table/5606.md) (conditional)
- Depreciation Book Code: TableRelation [Table 5611 "Depreciation Book"](../table/5611.md)
- Duplicate in Depreciation Book: TableRelation [Table 5611 "Depreciation Book"](../table/5611.md)
- Maintenance Code: TableRelation [Table 5626 "Maintenance"](../table/5626.md)
- Insurance No.: TableRelation [Table 5628 "Insurance"](../table/5628.md)
- Responsibility Center: TableRelation [Table 5714 "Responsibility Center"](../table/5714.md)
- Purchasing Code: TableRelation [Table 5721 "Purchasing"](../table/5721.md)
- Item Category Code: TableRelation [Table 5722 "Item Category"](../table/5722.md)
- Item Charge Qty. to Handle: CalcFormula [Table 5805 "Item Charge Assignment (Purch)"](../table/5805.md)
- Qty. Assigned: CalcFormula [Table 5805 "Item Charge Assignment (Purch)"](../table/5805.md)
- Qty. to Assign: CalcFormula [Table 5805 "Item Charge Assignment (Purch)"](../table/5805.md)
- Matched Inv./Cr. Memo Lines: CalcFormula [Table 5817 "Matched Order Line"](../table/5817.md)
- Matched Order Lines: CalcFormula [Table 5817 "Matched Order Line"](../table/5817.md)
- Return Reason Code: TableRelation [Table 6635 "Return Reason"](../table/6635.md)
- Spend Request No.: TableRelation [Table 6840 "Spend Request"](../table/6840.md)
- No.: TableRelation [Table 7 "Standard Text"](../table/7.md) (conditional)
- Bin Code: TableRelation [Table 7302 "Bin Content"](../table/7302.md) (conditional)
- Whse. Outstanding Qty. (Base): CalcFormula [Table 7317 "Warehouse Receipt Line"](../table/7317.md)
- Over-Receipt Code: TableRelation [Table 8510 "Over-Receipt Code"](../table/8510.md)
- Posting Group: TableRelation [Table 94 "Inventory Posting Group"](../table/94.md) (conditional)

## Referenced by

63 fields in 29 objects relate to this table (TableRelation or CalcFormula).

- [Table extension 6212 "Sustainability Purch. Header"](../tableextension/6212.md): Emission C02, Emission CH4, Emission N2O, Energy Consumption, Posted Emission C02, Posted Emission CH4, Posted Emission N2O, Posted Energy Consumption, Posted Total Emission Cost, Sustainability Lines Exist, Total Emission Cost
- [Table 38 "Purchase Header"](../table/38.md): A. Rcd. Not Inv. Ex. VAT (LCY), Amount, Amount Including VAT, Amt. Rcd. Not Invoiced (LCY), Completely Received, Invoice Discount Amount, Partially Invoiced, Recalculate Invoice Disc., Received Not Invoiced
- [Table 23 "Vendor"](../table/23.md): Amt. Rcd. Not Invoiced, Amt. Rcd. Not Invoiced (LCY), Outstanding Invoices, Outstanding Invoices (LCY), Outstanding Orders, Outstanding Orders (LCY)
- [Table 27 "Item"](../table/27.md): Qty. on Blanket Purch. Order, Qty. on Purch. Order, Qty. on Purch. Return
- [Table 39 "Purchase Line"](../table/39.md): Attached Lines Count, Attached to Line No., Blanket Order Line No.
- [Table 1001 "Job Task"](../table/1001.md): Amt. Rcd. Not Invoiced, Outstanding Orders
- [Table 37 "Sales Line"](../table/37.md): Purch. Order Line No., Special Order Purch. Line No.
- [Table 4 "Currency"](../table/4.md): Vendor Amt. Rcd. Not Invoiced, Vendor Outstanding Orders
- [Table 5108 "Sales Line Archive"](../table/5108.md): Purch. Order Line No., Special Order Purch. Line No.
- [Table 5700 "Stockkeeping Unit"](../table/5700.md): Qty. on Blanket Purch. Order, Qty. on Purch. Order
- [Table 5805 "Item Charge Assignment (Purch)"](../table/5805.md): Applies-to Doc. Line No., Document Line No.
- [Table extension 20529 "Subc. Manufacturing Cue"](../tableextension/20529.md): Subc. Purch. Lines Outstd., Subc. Purch. Lines Total
- [Table 121 "Purch. Rcpt. Line"](../table/121.md): Blanket Order Line No.
- [Table 123 "Purch. Inv. Line"](../table/123.md): Blanket Order Line No.
- [Table 125 "Purch. Cr. Memo Line"](../table/125.md): Blanket Order Line No.
- [Table 246 "Requisition Line"](../table/246.md): Blanket Purch. Order Exists
- [Table 5110 "Purchase Line Archive"](../table/5110.md): Blanket Order Line No.
- [Table 5477 "Purch. Inv. Entity Aggregate"](../table/5477.md): Recalculate Invoice Disc.
- [Table 5496 "Purchase Order Entity Buffer"](../table/5496.md): Recalculate Invoice Disc.
- [Table 6114 "E-Doc. Purchase Line PO Match"](../table/6114.md): Purchase Line SystemId
- [Table 6117 "E-Doc. Finalized PO Match"](../table/6117.md): Purchase Line SystemId
- [Table 6163 "E-Doc. PO Match Prop. Buffer"](../table/6163.md): Document Line No.
- [Table 6164 "E-Doc. Order Match"](../table/6164.md): Document Line No.
- [Table extension 20500 "Subc. Item Ledger Entry"](../tableextension/20500.md): Subc. Purch. Order Line No.
- [Table extension 20504 "Subc. Cap Ledger Entry Ext."](../tableextension/20504.md): Subc. Purch. Order Line No.
- [Table extension 20508 "Subc. Item Journal Line Ext."](../tableextension/20508.md): Subc. Purch. Order Line No.
- [Table extension 20509 "Subc. Purchase Header"](../tableextension/20509.md): Subc. Order
- [Table extension 20511 "Subc. Purchase Header Arch"](../tableextension/20511.md): Subc. Order
- [Table extension 6169 "E-Doc. Purchase Header"](../tableextension/6169.md): Amount Incl. VAT To Inv.

## Pages and codeunits on this table

- [Page 20518 "Subc. Purchase Line Factbox"](../page/20518.md) (source table)
- [Page 30201 "APIV2 - Bl. Purch. Ord. Lines"](../page/30201.md) (source table)
- [Page 30248 "APIV2 - Purch. Quote Lines"](../page/30248.md) (source table)
- [Page 30249 "APIV2 - Purch. Ret. Ord. Lines"](../page/30249.md) (source table)
- [Page 501 "Available - Purchase Lines"](../page/501.md) (source table)
- [Page 510 "Blanket Purchase Order Subform"](../page/510.md) (source table)
- [Page 518 "Purchase Lines"](../page/518.md) (source table)
- [Page 54 "Purchase Order Subform"](../page/54.md) (source table)
- [Page 55 "Purch. Invoice Subform"](../page/55.md) (source table)
- [Page 56 "Purchase Orders"](../page/56.md) (source table)
- [Page 6116 "E-Doc. Select PO Lines"](../page/6116.md) (source table)
- [Page 6168 "E-Doc. Purchase Order Sub"](../page/6168.md) (source table)
- [Page 6171 "E-Doc. Create Purch Order Line"](../page/6171.md) (source table)
- [Page 6336 "Sustainability Purchase Line"](../page/6336.md) (source table)
- [Page 6405 "Purchase Document Line Entity"](../page/6405.md) (source table)
- [Page 6641 "Purchase Return Order Subform"](../page/6641.md) (source table)
- [Page 6643 "Purchase Return Orders"](../page/6643.md) (source table)
- [Page 9100 "Purchase Line FactBox"](../page/9100.md) (source table)
- [Page 97 "Purchase Quote Subform"](../page/97.md) (source table)
- [Page 98 "Purch. Cr. Memo Subform"](../page/98.md) (source table)
- [Codeunit 66 "Purch - Calc Disc. By Type"](../codeunit/66.md) (codeunit runs on it)
- [Codeunit 6648 "Purch.-Get Return Shipments"](../codeunit/6648.md) (codeunit runs on it)
- [Codeunit 70 "Purch.-Calc.Discount"](../codeunit/70.md) (codeunit runs on it)
- [Codeunit 71 "Purch.-Disc. (Yes/No)"](../codeunit/71.md) (codeunit runs on it)
- [Codeunit 73 "Purch.-Explode BOM"](../codeunit/73.md) (codeunit runs on it)
- [Codeunit 74 "Purch.-Get Receipt"](../codeunit/74.md) (codeunit runs on it)
- [Codeunit 9066 "Check Purchase Document Line"](../codeunit/9066.md) (codeunit runs on it)

## Extended by

- [Table extension 20512 "Subc. Purchase Line"](../tableextension/20512.md)
- [Table extension 4856 "AutoAcc Purchase Line"](../tableextension/4856.md)
- [Table extension 5017 "Serv. Decl. Purch. Line"](../tableextension/5017.md)
- [Table extension 6168 "E-Doc. Purchase Line"](../tableextension/6168.md)
- [Table extension 6211 "Sustainability Purch. Line"](../tableextension/6211.md)
- [Table extension 6789 "Withholding Purch. Line Ext"](../tableextension/6789.md)
- [Table extension 8065 "Purchase Line"](../tableextension/8065.md)
- [Table extension 99000751 "Mfg. Purchase Line"](../tableextension/99000751.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 6200 "Non-Deductible VAT"](../codeunit/6200.md) (15 calls: `CalcInvDiscToInvoice → InitNonDeductibleVATDiff`, `CalcVATAmountLines → AddNonDedAmountsOfPurchLineToVATAmountLine`, `InitQtyToInvoice → InitNonDeductibleVATDiff`, …)
- [Codeunit 408 "DimensionManagement"](../codeunit/408.md) (14 calls: `CreateDim → GetRecDefaultDimID`, `CreateDim → UpdateGlobalDimFromDimSetID`, `CreateDimFromDefaultDim → IsDefaultDimDefinedForTable`, …)
- [Codeunit 5402 "Unit of Measure Management"](../codeunit/5402.md) (10 calls: `AssignFieldsForQtyPerUOM → GetQtyRoundingPrecision`, `AssignFieldsForQtyPerUOM → QtyRndPrecision`, `CalcBaseQty → CalcBaseQty`, …)
- [Codeunit 99000834 "Purch. Line-Reserve"](../codeunit/99000834.md) (6 calls: `BlockDynamicTracking → Block`, `CheckIfPurchaseLineMeetsReservedFromStockSetting → GetReservedQtyFromInventory`, `OnDelete → DeleteLine`, …)
- [Codeunit 7600 "Calendar Management"](../codeunit/7600.md) (5 calls: `ReversedInternalLeadTimeDays → ReverseDateFormula`, `UpdateOrderDateFromPlannedReceiptDate → CalcDateBOC2`, `UpdateOrderDateFromRequestedReceiptDate → CalcDateBOC2`, …)
- [Codeunit 109 "Lookup State Manager"](../codeunit/109.md) (4 calls: `RestoreLookupSelection → ClearSavedRecord`, `RestoreLookupSelection → GetSavedRecord`, `RestoreLookupSelection → IsRecordSaved`, …)
- [Codeunit 1511 "Notification Lifecycle Mgt."](../codeunit/1511.md) (3 calls: `SendBlockedItemNotification → SendNotification`, `SendBlockedItemVariantNotification → SendNotification`, `SendLineInvoiceDiscountResetNotification → SendNotification`)
- [Codeunit 1720 "Deferral Utilities"](../codeunit/1720.md) (3 calls: `OnDelete → DeferralCodeOnDelete`, `ShowDeferrals → OpenLineScheduleEdit`, `UpdateDeferralAmounts → RemoveOrSetDeferralSchedule`)
- [Codeunit 5826 "Matched Order Line Mgmt."](../codeunit/5826.md) (3 calls: `CheckLineNotShippedOrReceived → IsLineMatched`, `CopyFromItem → IsReceiptOnInvoiceAllowedForItem`, `OnDelete → DeleteMatchedOrderLines`)
- [Page 518 "Purchase Lines"](../page/518.md) (3 calls: `AttachToInventoryItemLine → (object)`, `BlanketOrderLookup → (object)`, `ShowBlanketOrderPurchaseLines → (object)`)
- [Codeunit 28 "Error Message Management"](../codeunit/28.md) (2 calls: `CannotInvoiceErrorInfo → BuildActionableErrorInfo`, `CannotReceiveErrorInfo → BuildActionableErrorInfo`)
- [Codeunit 378 "Transfer Extended Text"](../codeunit/378.md) (2 calls: `TransferExtendedTexts → InsertPurchExtTextRetLast`, `TransferExtendedTexts → PurchCheckIfAnyExtText`)
- [Codeunit 398 "Sales Tax Calculate"](../codeunit/398.md) (2 calls: `UpdateVATAmounts → CalculateTax`, `UpdateVATAmounts → ReverseCalculateTax`)
- [Codeunit 5404 "Lead-Time Management"](../codeunit/5404.md) (2 calls: `UpdateLeadTimeFields → PurchaseLeadTime`, `UpdateLeadTimeFields → SafetyLeadTime`)
- [Codeunit 5992 "Purchases Warehouse Mgt."](../codeunit/5992.md) (2 calls: `CheckLocationRequireReceive → PurchaseLineVerifyChange`, `OnDelete → PurchaseLineDelete`)
- [Codeunit 65 "Discount Notification Mgt."](../codeunit/65.md) (2 calls: `NotifyOnMissingSetup → NotifyAboutMissingSetup`, `NotifyOnMissingSetup → RecallNotification`)
- [Codeunit 7302 "WMS Management"](../codeunit/7302.md) (2 calls: `CheckWarehouse → CheckWarehouse`, `GetDefaultBin → GetDefaultBin`)
- [Codeunit 8510 "Over-Receipt Mgt."](../codeunit/8510.md) (2 calls: `OverReceiptProcessing → GetDefaultOverReceiptCode`, `OverReceiptProcessing → IsOverReceiptAllowed`)
- [Codeunit 27 "Confirm Management"](../codeunit/27.md) (1 call: `ConfirmReceivedShippedItemDimChange → GetResponseOrDefault`)
- [Codeunit 346 "Purch. Line CaptionClass Mgmt"](../codeunit/346.md) (1 call: `GetCaptionClass → GetPurchaseLineCaptionClass`)
- [Codeunit 441 "Prepayment Mgt."](../codeunit/441.md) (1 call: `CopyFromItem → SetPurchPrepaymentPct`)
- [Codeunit 444 "Purchase-Post Prepayments"](../codeunit/444.md) (1 call: `GetLineAmountToHandleInclPrepmt → PrepmtAmount`)
- [Codeunit 48 "PostingSetupManagement"](../codeunit/48.md) (1 call: `CopyFromItem → CheckInvtPostingSetupInventoryAccount`)
- [Codeunit 5703 "Catalog Item Management"](../codeunit/5703.md) (1 call: `OnDelete → DelNonStockPurch`)
- [Codeunit 5720 "Item Reference Management"](../codeunit/5720.md) (1 call: `UpdateItemReference → EnterPurchaseItemReference`)
- [Codeunit 5777 "Whse. Validate Source Line"](../codeunit/5777.md) (1 call: `CheckWarehouse → WhseLinesExist`)
- [Codeunit 5805 "Item Charge Assgnt. (Purch.)"](../codeunit/5805.md) (1 call: `ShowItemChargeAssgnt → CreateDocChargeAssgnt`)
- [Codeunit 6500 "Item Tracking Management"](../codeunit/6500.md) (1 call: `RowID1 → ComposeRowID`)
- [Codeunit 7001 "Price Calculation Mgt."](../codeunit/7001.md) (1 call: `GetPriceCalculationHandler → GetHandler`)
- [Codeunit 703 "Find Record Management"](../codeunit/703.md) (1 call: `FindOrCreateRecordByNo → FindNoFromTypedValue`)
- [Codeunit 7317 "Whse. Integration Management"](../codeunit/7317.md) (1 call: `HandleDedicatedBin → CheckIfBinDedicatedOnSrcDoc`)
- [Codeunit 9070 "Document Errors Mgt."](../codeunit/9070.md) (1 call: `SwitchLinesWithErrorsFilter → GetErrorMessages`)
- [Codeunit 9178 "Application Area Mgmt."](../codeunit/9178.md) (1 call: `GetFAPostingGroup → IsSalesTaxEnabled`)
- [Page 38 "Item Ledger Entries"](../page/38.md) (1 call: `SelectItemEntry → (object)`)
- [Page 497 "Reservation Entries"](../page/497.md) (1 call: `ShowReservationEntries → (object)`)
- [Page 528 "Posted Purchase Receipt Lines"](../page/528.md) (1 call: `ShowBlanketOrderPostedReceiptLines → (object)`)
- [Page 529 "Posted Purchase Invoice Lines"](../page/529.md) (1 call: `ShowBlanketOrderPostedInvoiceLines → (object)`)
- [Page 530 "Posted Purchase Cr. Memo Lines"](../page/530.md) (1 call: `ShowBlanketOrderPostedCreditMemoLines → (object)`)
- [Page 6653 "Posted Return Shipment Lines"](../page/6653.md) (1 call: `ShowBlanketOrderPostedReturnReceiptLines → (object)`)

## Recent changes

- 2026-09-16 [#11436 [29.X]-Purchase invoice lines of type G/L Account where enabling 'Prices Including VAT' and changing the VAT Prod. Posting Group causes recalculation of the Direct Unit Cost Incl. VAT and Line Amount - Related to Bug 632380](../../changes/bcapps/11436.md) (releases/29.x, BC29, fix)
- 2026-09-14 [#11208 [Master]-Purchase invoice lines of type G/L Account where enabling 'Prices Including VAT' and changing the VAT Prod. Posting Group causes recalculation of the Direct Unit Cost Incl. VAT and Line Amount - Related to Bug 632380](../../changes/bcapps/11208.md) (main, BC30, fix)
- 2026-09-10 [#11095 [main] Bug 649204 Validation missing for Deferral Code field on Released Purchase documents.](../../changes/bcapps/11095.md) (main, BC30, fix)
- 2026-09-03 [#10381 [Main] Inconsistent Non-Deductible VAT calculations on Purchase & Sales Invoices containing lines with Full VAT calculation type](../../changes/bcapps/10381.md) (main, BC30, fix)
- 2026-09-01 [#10700 29.x: PO matching API, E-Documents integration and receipt-on-invoice line tracking](../../changes/bcapps/10700.md) (releases/29.x, BC29, feature)
- 2026-08-31 [#10528 Track receipt on invoice per purchase order line](../../changes/bcapps/10528.md) (main, BC30, feature)
- 2026-08-27 [#9444 [Extensibility Request] issue 30223: add IsHandled events to Purchase Line (translation, price calc, WMS)](../../changes/bcapps/9444.md) (main, BC30, feature)
- 2026-08-26 [#10631 Integration/main to releases 29.x 31a860b5](../../changes/bcapps/10631.md) (releases/29.x, BC29, feature)
- 2026-08-21 [#10176 [Main][all-e]Prepayment Invoice and Quantity Change Issue in Business Central](../../changes/bcapps/10176.md) (main, BC30, fix)
- 2026-08-13 [#9947 Allow long localized sales and purchase line type captions](../../changes/bcapps/9947.md) (main, BC30, fix)
- 2026-08-11 [#9984 [Main] Error with unposted prepayment amounts on Order](../../changes/bcapps/9984.md) (main, BC30, fix)
- 2026-08-07 [#9985 [Master]-For an Item of 'Type' Service or Non-Inventory we allow you to increase the Quantity of the Corrective Credit Memo which then if posted updates the Purchase Order with a negative Received and Invoiced values](../../changes/bcapps/9985.md) (main, BC30, fix)
- 2026-08-04 [#9688 [main] Hidden breaking change and instability on sales/purchase line insert](../../changes/bcapps/9688.md) (main, BC30, fix)
- 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-30

## Countries that replace it

[AT](../../localizations/at.md), [AU](../../localizations/au.md), [BE](../../localizations/be.md), [CA](../../localizations/ca.md), [CH](../../localizations/ch.md), [DE](../../localizations/de.md), [ES](../../localizations/es.md), [FI](../../localizations/fi.md), [GB](../../localizations/gb.md), [IT](../../localizations/it.md), [MX](../../localizations/mx.md), [NL](../../localizations/nl.md), [NO](../../localizations/no.md), [NZ](../../localizations/nz.md), [RU](../../localizations/ru.md), [SE](../../localizations/se.md), [US](../../localizations/us.md)

## Deprecations

- procedure SetSkipEnsurePositiveLineNo: Pending 28.0 (#if not CLEAN28), "Not used for anything"
- procedure FormatType: Pending 29.0 (#if not CLEAN29), "Use FormatTypeAsText() instead."
- procedure OnBeforeFormatType: Pending 29.0 (#if not CLEAN29), "Use OnBeforeFormatTypeAsText instead."

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