---
id: object/codeunit/5826
type: object
title: Codeunit 5826 "Matched Order Line Mgmt."
summary: Codeunit 5826 "Matched Order Line Mgmt." in Base Application (Microsoft.Inventory.Tracking). 42 public procedures, 10 events. Introduced in BC28, still in BC30, changed in BC29.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: "28"
  last_changed: "29"
  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: 27da5903be45a248785859ea7bb8e65d078f64af03f3ccc0d9a49d333c348af5
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/Tracking/MatchedOrderLineMgmt.Codeunit.al
    title: src/Layers/W1/BaseApp/Inventory/Tracking/MatchedOrderLineMgmt.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/11339
    - change/bcapps/11135
    - change/bcapps/10700
    - change/bcapps/10528
object_type: codeunit
object_id: 5826
name: Matched Order Line Mgmt.
namespace: Microsoft.Inventory.Tracking
app: Base Application
extends: null
first_version: "28"
last_version: "30"
present_in:
  - "28"
  - "29"
  - "30"
changed_in:
  - "29"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 56
  events: 10
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 1
  calls: 9
  called_by: 8
  implements: 0
---

# Codeunit 5826 "Matched Order Line Mgmt."

> Codeunit 5826 "Matched Order Line Mgmt." in Base Application (Microsoft.Inventory.Tracking). 42 public procedures, 10 events. Introduced in BC28, still in BC30, changed in BC29.

Base Application · Microsoft.Inventory.Tracking · BC28-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/Tracking/MatchedOrderLineMgmt.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Access | Public |
| Permissions | TableData "Posted Matched Order Line" = RIMD |

## Events published

- `OnInsertMatchedOrderLineOnBeforeInsert(var MatchedOrderLine: Record "Matched Order Line")` (integration)
- `OnGetPurchaseOrderLinesOnBeforeInsertPurchaseLineInvoice(var PurchaseLineInvoice: Record "Purchase Line"; PurchaseLineOrder: Record "Purchase Line")` (integration)
- `OnGetPurchaseOrderLinesOnAfterSetPurchaseLineOrderFilters(var PurchaseLineOrder: Record "Purchase Line"; PurchaseHeaderInvoice: Record "Purchase Header")` (integration)
  - subscribers: [Codeunit 20535 "Subc. Purch. Post Ext"](../codeunit/20535.md) ExcludeSubcontractingLinesOnGetPurchaseOrderLines
- `OnGetPurchaseOrderLinesOnBeforeModifyPurchaseLineInvoice(var PurchaseLineInvoice: Record "Purchase Line"; PurchaseLineOrder: Record "Purchase Line")` (integration)
- `OnValidateQtyToInvoiceOnBeforeModifyMatchedOrderLine(var MatchedOrderLine: Record "Matched Order Line"; DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (integration)
- `OnValidateQtyToInvoiceOnBeforeUpdateQtyOnParentLines(MatchedOrderLine: Record "Matched Order Line"; DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; xDetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (integration)
- `OnInsertPostedMatchedOrderLinesOnBeforeInsertPostedMatchedOrderLine(var PostedMatchedOrderLine: Record "Posted Matched Order Line"; MatchedOrderLine: Record "Matched Order Line"; var PurchInvLine: Record "Purch. Inv. Line"; PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterLoadOneLineForPurchaseInvoice(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; SourceLineSystemId: Guid; PurchaseLineInvoice: Record "Purchase Line")` (integration)
- `OnUpdateQtyOnParentLinesOnBeforeModifyTempDetailedMatchedOrderLine(var TempDetailedMatchedOrderLine: Record "Detailed Matched Order Line" temporary; var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; UpdateInvoiceLine: Boolean; QtyToInvoiceDiff: Decimal; QtyToInvoiceBaseDiff: Decimal)` (integration)
- `OnAfterLoadOneLineForPostedPurchaseInvoice(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; SourceLineSystemId: Guid; PurchInvLine: Record "Purch. Inv. Line")` (integration)

## Procedures

- `ApplyVendorsReceiptOnInvoicePolicy(var PurchaseHeader: Record "Purchase Header")` (internal)
- `ApplyReceiptOnInvoiceToLines(PurchaseHeader: Record "Purchase Header")` (internal)
- `ProcessMatchedReceiptOnInvoice(var PurchaseLine: Record "Purchase Line")` (internal)
- `InsertMatchedOrderLineReceipt(PurchaseLineOrder: Record "Purchase Line"; var PurchRcptLine: Record "Purch. Rcpt. Line")` (internal)
- `CheckMatchedOrderLine(var PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line")` (internal)
- `SetMatchedReceiptLinesFilter(var PurchRcptLine: Record "Purch. Rcpt. Line"; PurchaseLineInvoice: Record "Purchase Line")` (internal)
- `SetQtyToBeInvoiced(var QtyToBeInvoiced: Decimal; var QtyToBeInvoicedBase: Decimal; PurchaseLineInvoice: Record "Purchase Line"; PurchRcptLine: Record "Purch. Rcpt. Line")` (internal)
- `UpdateMatchedOrderLines(var TempPurchaseLine: Record "Purchase Line" temporary; var PurchaseHeader: Record "Purchase Header")` (internal)
- `InsertPostedMatchedOrderLines(var PurchInvLine: Record "Purch. Inv. Line"; PurchaseLine: Record "Purchase Line")` (internal)
- `IsLineMatchedToReceiptShipment(PurchaseLine: Record "Purchase Line"): Boolean` (internal)
- `CheckLineCanBeMatched(PurchaseLine: Record "Purchase Line")` (internal)
- `IsLineMatched(PurchaseLine: Record "Purchase Line"; ShowError: Boolean): Boolean` (internal)
- `DeleteMatchedOrderLines(var PurchaseLine: Record "Purchase Line")` (internal)
- `DeleteAllMatchedOrderLines(var PurchaseHeader: Record "Purchase Header")` (internal)
- `DeleteMatchedLinesForPurchReceipt(var PurchRcptLine: Record "Purch. Rcpt. Line")` (internal)
- `DeleteMatchedLinesFromPostedPurchaseInvoice(var PurchInvLine: Record "Purch. Inv. Line")` (internal)
- `LoadLines(MatchedOrderLineSource: Enum "Matched Order Line Source"; var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; ShowFromHeader: Boolean; SourceRecordSystemId: Guid)` (internal)
- `LoadLinesForPurchaseInvoice(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; ShowFromHeader: Boolean; SourceRecordSystemId: Guid)` (internal)
- `LoadLinesForPostedPurchaseInvoice(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; ShowFromHeader: Boolean; SourceRecordSystemId: Guid)` (internal)
- `LoadOneLineForPurchaseInvoice(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; SourceLineSystemId: Guid)` (internal)
- `LoadOneLineForPostedPurchaseInvoice(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; SourceLineSystemId: Guid)` (internal)
- `GetOrderLines(MatchedOrderLineSource: Enum "Matched Order Line Source"; DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `GetOrderLinesForPurchaseInvoice(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `GetReceiptShipmentLines(MatchedOrderLineSource: Enum "Matched Order Line Source"; DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `GetPurchaseReceiptLines(DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `ShowItemTrackingEntries(MatchedOrderLineSource: Enum "Matched Order Line Source"; DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `ShowItemTrackingEntriesForPurchaseInvoice(DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `ShowDocument(MatchedOrderLineSource: Enum "Matched Order Line Source"; DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `ShowPurchaseInvoiceDocument(DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `ValidateQtyToInvoice(MatchedOrderLineSource: Enum "Matched Order Line Source"; var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; var xDetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `UpdateQtyOnParentLines(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; UpdateInvoiceLine: Boolean; QtyToInvoiceDiff: Decimal; QtyToInvoiceBaseDiff: Decimal)` (internal)
- `ValidateQtyToInvoiceForPurchaseInvoice(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line")` (internal)
- `GetPurchaseOrderLines(PurchaseLine: Record "Purchase Line")`
- `CheckReceiptOnInvoiceAllowed(PurchaseHeader: Record "Purchase Header")` (internal)
- `CheckLineReceiptOnInvoiceAllowed(PurchaseLine: Record "Purchase Line")` (internal)
- `IsLineReceiptOnInvoiceAllowed(PurchaseLine: Record "Purchase Line"; var ErrorMessage: Text): Boolean` (internal)
- `IsReceiptOnInvoiceAllowedForItem(Item: Record Item): Boolean` (internal)
- `IsReceiptOnInvoiceAllowedForLocation(LocationCode: Code[10]): Boolean` (internal)
- `ApplyPurchaseLineReceiptSettingToMatches(PurchaseLine: Record "Purchase Line")` (internal)
- `RefreshMatchedOrderLineReceipt(PurchaseHeader: Record "Purchase Header")` (internal)
- `LineCanBeDeleted(var DetailedMatchedOrderLine: Record "Detailed Matched Order Line"; SourceIsOpenDocument: Boolean): Boolean` (internal)
- `ShowMatchedInvoiceLines(PurchaseLineOrder: Record "Purchase Line")`

Plus 4 local procedures.

## 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 8703 "Feature Telemetry"](../codeunit/8703.md) (7 calls: `GetOrderLinesForPurchaseInvoice → LogUsage`, `GetPurchaseOrderLines → LogUsage`, `GetPurchaseReceiptLines → LogUsage`, …)
- [Codeunit 6500 "Item Tracking Management"](../codeunit/6500.md) (3 calls: `GetOrderLinesForPurchaseInvoice → CopyMatchedItemTrkgToPurchLine`, `GetPurchaseOrderLines → CopyMatchedItemTrkgToPurchLine`, `GetPurchaseReceiptLines → CopyMatchedItemTrkgToPurchLine`)
- [Codeunit 6503 "Item Tracking Doc. Management"](../codeunit/6503.md) (2 calls: `LoadOneLineForPurchaseInvoice → RetrieveEntriesFromShptRcpt`, `ValidateQtyToInvoiceForPurchaseInvoice → RetrieveEntriesFromShptRcpt`)
- [Codeunit 90 "Purch.-Post"](../codeunit/90.md) (2 calls: `ProcessMatchedReceiptOnInvoice → (object)`, `ProcessMatchedReceiptOnInvoice → SetSuppressCommit`)
- [Codeunit 46 "SelectionFilterManagement"](../codeunit/46.md) (1 call: `ShowItemTrackingEntriesForPurchaseInvoice → GetSelectionFilter`)
- [Codeunit 5402 "Unit of Measure Management"](../codeunit/5402.md) (1 call: `ValidateQtyToInvoiceForPurchaseInvoice → RoundAndValidateQty`)
- [Codeunit 99000834 "Purch. Line-Reserve"](../codeunit/99000834.md) (1 call: `ShowItemTrackingEntriesForPurchaseInvoice → CallItemTracking`)
- [Page 136 "Posted Purchase Receipt"](../page/136.md) (1 call: `ShowPurchaseInvoiceDocument → (object)`)
- [Page 50 "Purchase Order"](../page/50.md) (1 call: `ShowPurchaseInvoiceDocument → (object)`)

## Called by

- [Codeunit 90 "Purch.-Post"](../codeunit/90.md) (10 calls: `DeleteAfterPosting → DeleteAllMatchedOrderLines`, `PostItemTrackingForReceipt → IsLineMatchedToReceiptShipment`, `PostItemTrackingForReceipt → SetMatchedReceiptLinesFilter`, …)
- [Table 39 "Purchase Line"](../table/39.md) (3 calls: `CheckLineNotShippedOrReceived → IsLineMatched`, `CopyFromItem → IsReceiptOnInvoiceAllowedForItem`, `OnDelete → DeleteMatchedOrderLines`)
- [Page 5818 "Matched Order Lines"](../page/5818.md) (2 calls: `OnDeleteRecord → LineCanBeDeleted`, `OnOpenPage → LoadLines`)
- [Report 402 "Purchase Document - Test"](../report/402.md) (2 calls: `CheckRcptLines → IsLineMatchedToReceiptShipment`, `CheckRcptLines → SetMatchedReceiptLinesFilter`)
- [Table 121 "Purch. Rcpt. Line"](../table/121.md) (1 call: `OnDelete → DeleteMatchedLinesForPurchReceipt`)
- [Table 123 "Purch. Inv. Line"](../table/123.md) (1 call: `OnDelete → DeleteMatchedLinesFromPostedPurchaseInvoice`)
- [Table 38 "Purchase Header"](../table/38.md) (1 call: `TestPurchLineFieldsBeforeRecreate → IsLineMatched`)
- [Table 5818 "Detailed Matched Order Line"](../table/5818.md) (1 call: `OnDelete → UpdateQtyOnParentLines`)

## Recent changes

- 2026-09-14 [#11339 Prevent order matching for invoice lines created by Get Receipt Lines](../../changes/bcapps/11339.md) (main, BC30, fix)
- 2026-09-08 [#11135 Fix dimensions not populated by "Get Order Lines" on Purchase Invoices](../../changes/bcapps/11135.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)

## Across versions

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

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