---
id: object/codeunit/7001
type: object
title: Codeunit 7001 "Price Calculation Mgt."
summary: Codeunit 7001 "Price Calculation Mgt." in Base Application (Microsoft.Pricing.Calculation). 10 public procedures, 3 events, 1 event subscribers. Present since at least BC23, still in BC30, changed in BC24-25, BC28.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "28"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 06047473276cee9a3977901ad883bb8de920416657388bc635968ec8054c71b9
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Pricing/Calculation/PriceCalculationMgt.Codeunit.al
    title: src/Layers/W1/BaseApp/Pricing/Calculation/PriceCalculationMgt.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/11321
object_type: codeunit
object_id: 7001
name: Price Calculation Mgt.
namespace: Microsoft.Pricing.Calculation
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"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 14
  events: 3
  subscribers: 1
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 2
  calls: 3
  called_by: 82
  implements: 0
---

# Codeunit 7001 "Price Calculation Mgt."

> Codeunit 7001 "Price Calculation Mgt." in Base Application (Microsoft.Pricing.Calculation). 10 public procedures, 3 events, 1 event subscribers. Present since at least BC23, still in BC30, changed in BC24-25, BC28.

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

## Events published

- `OnIsExtendedPriceCalculationEnabled(var Result: Boolean)` (integration)
- `OnFindSupportedSetup(var TempPriceCalculationSetup: Record "Price Calculation Setup" temporary)` (integration)
  - subscribers: [Codeunit 7002 "Price Calculation - V16"](../codeunit/7002.md) OnFindImplementationHandler, [Codeunit 7003 "Price Calculation - V15"](../codeunit/7003.md) OnFindImplementationHandler
- `OnGetHandlerOnAfterFindSetup(LineWithPrice: Interface "Line With Price"; var PriceCalculation: Interface "Price Calculation"; var Result: Boolean; var PriceCalculationSetup: Record "Price Calculation Setup")` (integration)

## Event subscriptions

- AfterValidateUseCustomizedLookup subscribes to Table "Sales & Receivables Setup" OnAfterValidateEvent (Use Customized Lookup)

## Procedures

- `RefreshSetup(): Boolean`
- `GetHandler(LineWithPrice: Interface "Line With Price"; var PriceCalculation: Interface "Price Calculation"): Boolean`
- `VerifyMethodImplemented(Method: Enum "Price Calculation Method"; PriceType: Enum "Price Type")`
- `FindActiveSubscriptions(): Text`
- `FindSetup(LineWithPrice: Interface "Line With Price"; var PriceCalculationSetup: Record "Price Calculation Setup"): Boolean`
- `IsExtendedPriceCalculationEnabled(): Boolean`
- `GetFeatureKey(): Text[50]`
- `GetFeatureTelemetryName(): Text[50]`
- `FeatureCustomizedLookupUsage(TableId: Integer)` (internal)
- `FeatureCustomizedLookupDiscovered()` (internal)

## Triggers

OnRun

## 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) (4 calls: `AfterValidateUseCustomizedLookup → LogUptake`, `FeatureCustomizedLookupDiscovered → LogUptake`, `FeatureCustomizedLookupUsage → LogUptake`, …)
- [Codeunit 2611 "Feature Management Facade"](../codeunit/2611.md) (1 call: `IsExtendedPriceCalculationEnabled → IsEnabled`)
- [Codeunit 7004 "Price Calculation Dtld. Setup"](../codeunit/7004.md) (1 call: `FindSetup → FindSetup`)

## Called by

- [Codeunit 7017 "Price List Management"](../codeunit/7017.md) (3 calls: `CreateDefaultPriceList → GetFeatureTelemetryName`, `DefineDefaultPriceList → GetFeatureTelemetryName`, `ImplementNewPrices → GetFeatureTelemetryName`)
- [Codeunit 7049 "Feature - Price Calculation"](../codeunit/7049.md) (3 calls: `AfterUpdate → (object)`, `FailIfFeatureDisabled → IsExtendedPriceCalculationEnabled`, `FailIfFeatureEnabled → IsExtendedPriceCalculationEnabled`)
- [Codeunit 265 "Feature Key Management"](../codeunit/265.md) (2 calls: `HandleOnAfterUpdateData → GetFeatureKey`, `HandleOnAfterUpdateData → GetFeatureTelemetryName`)
- [Codeunit 5334 "CRM Setup Defaults"](../codeunit/5334.md) (2 calls: `GetTableIDCRMEntityNameMapping → IsExtendedPriceCalculationEnabled`, `ResetConfiguration → IsExtendedPriceCalculationEnabled`)
- [Codeunit 6113 "Item Data Migration Facade"](../codeunit/6113.md) (2 calls: `CreateSalesLineDiscountIfNeeded → IsExtendedPriceCalculationEnabled`, `CreateSalesPriceIfNeeded → IsExtendedPriceCalculationEnabled`)
- [Codeunit 7110 "Analysis Report Management"](../codeunit/7110.md) (2 calls: `CalcUnitPrice → GetHandler`, `DrillDownUnitPrice → GetHandler`)
- [Page 459 "Sales & Receivables Setup"](../page/459.md) (2 calls: `OnOpenPage → FeatureCustomizedLookupDiscovered`, `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 9098 "Job No. of Prices FactBox"](../page/9098.md) (2 calls: `CalcOldNoOfRecords → IsExtendedPriceCalculationEnabled`, `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 9108 "Resource Details FactBox"](../page/9108.md) (2 calls: `CalcOldNoOfRecords → IsExtendedPriceCalculationEnabled`, `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Table 1003 "Job Planning Line"](../table/1003.md) (2 calls: `ApplyPrice → GetHandler`, `IsQuantityChangedForPrice → IsExtendedPriceCalculationEnabled`)
- [Table 210 "Job Journal Line"](../table/210.md) (2 calls: `ApplyPrice → GetHandler`, `IsQuantityChangedForPrice → IsExtendedPriceCalculationEnabled`)
- [Codeunit 104000 "Upgrade - BaseApp"](../codeunit/104000.md) (1 call: `UseCustomLookupInPrices → FindActiveSubscriptions`)
- [Codeunit 5341 "CRM Int. Table. Subscriber"](../codeunit/5341.md) (1 call: `UpdateCRMSalesOrderPriceList → IsExtendedPriceCalculationEnabled`)
- [Codeunit 5812 "Calculate Standard Cost"](../codeunit/5812.md) (1 call: `FindResourceCost → GetHandler`)
- [Codeunit 7002 "Price Calculation - V16"](../codeunit/7002.md) (1 call: `OnCompanyInitializeHandler → (object)`)
- [Codeunit 7006 "Price Helper - V16"](../codeunit/7006.md) (1 call: `CopyJobPrices → IsExtendedPriceCalculationEnabled`)
- [Codeunit 7009 "CopyFromToPriceListLine"](../codeunit/7009.md) (1 call: `InsertHeader → GetFeatureTelemetryName`)
- [Codeunit 7019 "Price Helper - V15"](../codeunit/7019.md) (1 call: `CopyJobPrices → IsExtendedPriceCalculationEnabled`)
- [Codeunit 7030 "Campaign Target Group Mgt"](../codeunit/7030.md) (1 call: `NoPriceDiscForCampaign → IsExtendedPriceCalculationEnabled`)
- [Codeunit 912 "Calculate Assembly Cost"](../codeunit/912.md) (1 call: `FindResourceCost → GetHandler`)
- [Page 1003 "Job Task Card"](../page/1003.md) (1 call: `ActivateFields → IsExtendedPriceCalculationEnabled`)
- [Page 1007 "Job Planning Lines"](../page/1007.md) (1 call: `OnInit → IsExtendedPriceCalculationEnabled`)
- [Page 1015 "Job Planning Lines Part"](../page/1015.md) (1 call: `OnInit → IsExtendedPriceCalculationEnabled`)
- [Page 114 "Item Vendor Catalog"](../page/114.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 1382 "Customer Templ. Card"](../page/1382.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 17 "G/L Account Card"](../page/17.md) (1 call: `SetControlVisibility → IsExtendedPriceCalculationEnabled`)
- [Page 18 "G/L Account List"](../page/18.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 201 "Job Journal"](../page/201.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 21 "Customer Card"](../page/21.md) (1 call: `OnOpenPageFunc → IsExtendedPriceCalculationEnabled`)
- [Page 22 "Customer List"](../page/22.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 26 "Vendor Card"](../page/26.md) (1 call: `OnOpenPageFunc → IsExtendedPriceCalculationEnabled`)
- [Page 27 "Vendor List"](../page/27.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 291 "Req. Worksheet"](../page/291.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 297 "Vendor Item Catalog"](../page/297.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 30 "Item Card"](../page/30.md) (1 call: `OnOpenPageFunc → IsExtendedPriceCalculationEnabled`)
- [Page 31 "Item List"](../page/31.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 40 "Item Journal"](../page/40.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 46 "Sales Order Subform"](../page/46.md) (1 call: `SetOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 460 "Purchases & Payables Setup"](../page/460.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 463 "Jobs Setup"](../page/463.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 47 "Sales Invoice Subform"](../page/47.md) (1 call: `SetOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 5050 "Contact Card"](../page/5050.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 5052 "Contact List"](../page/5052.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 508 "Blanket Sales Order Subform"](../page/508.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 5086 "Campaign Card"](../page/5086.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 5087 "Campaign List"](../page/5087.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 512 "Customer Disc. Groups"](../page/512.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 513 "Item Disc. Groups"](../page/513.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 517 "Requisition Lines"](../page/517.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- [Page 5177 "Job Archive Card"](../page/5177.md) (1 call: `OnOpenPage → IsExtendedPriceCalculationEnabled`)
- and 32 more: data/code/graph/29/calls.json

## Recent changes

- 2026-09-28 [#11321 Update default Pricing implementation (v.30)](../../changes/bcapps/11321.md) (main, BC30, fix)

## Across versions

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

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