---
id: object/page/1850
type: object
title: Page 1850 "Sales Forecast"
summary: Page 1850 "Sales Forecast" in SalesAndInventoryForecast (Microsoft.Inventory.InventoryForecast). 2 public procedures, 1 events. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - page
  - salesandinventoryforecast
versions:
  introduced: "29"
  last_changed: null
  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: 780437114ed61ba663908b22684c1cc6dc9a6569192c88c807902f988b6f9d9c
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/SalesAndInventoryForecast/app/src/pages/SalesForecast.Page.al
    title: src/Apps/W1/SalesAndInventoryForecast/app/src/pages/SalesForecast.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/ui-extensions-sales-forecast
    title: Using the Sales and Inventory Forecast extension to manage inventory
    date: null
    commit: null
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/ui-extensions-sales-forecast
  objects: []
  features: []
  topics:
    - topic/business-central/development-and-administration/customize-business-central/customize-with-extensions
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: page
object_id: 1850
name: Sales Forecast
caption: Forecast
namespace: Microsoft.Inventory.InventoryForecast
app: SalesAndInventoryForecast
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids:
  - docs/learn-smb-docs/business-central/ui-extensions-sales-forecast.md
counts:
  fields: 0
  procedures: 18
  events: 1
  subscribers: 0
  controls: 3
  actions: 6
relations:
  out: 1
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 2
  called_by: 0
  implements: 0
---

# Page 1850 "Sales Forecast"

> Page 1850 "Sales Forecast" in SalesAndInventoryForecast (Microsoft.Inventory.InventoryForecast). 2 public procedures, 1 events. Introduced in BC29, still in BC30.

SalesAndInventoryForecast · Microsoft.Inventory.InventoryForecast · captioned "Forecast" · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/SalesAndInventoryForecast/app/src/pages/SalesForecast.Page.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Caption | Forecast |
| SourceTable | Item |
| PageType | CardPart |

## Fields on this page

Layout controls in source order, grouped by the container they sit in. Shows: the table field a control is bound to (or its expression as written); ToolTip: the control's own, else the bound field's (marked).

| Group | Control | Shows | ToolTip |
|---|---|---|---|
| Disclaimer | DisclaimerText | `DisclaimerValueMsg` | AI generated suggestions may not always be accurate. Please validate results for correctness before using content provided. |
| Content | ForecastBusinessChart | add-in BusinessChart | — |
|  | Status | `StatusTextValue` | Specifies the status of the forecast based on the current setup data. |

## Actions

| Group | Action | ToolTip | Runs |
|---|---|---|---|
| Processing | Create Purchase Invoice | Creates a purchase invoice for this item |  |
|  | Create Purchase Order | Creates a purchase order for this item |  |
|  | Show Inventory Forecast | View Item Inventory Forecast |  |
|  | Show Sales Forecast | View Item Sales Forecast |  |
|  | Forecast Settings | View or edit the setup for the forecast. |  |
|  | Delete Sales Forecast | Deletes the sales forecast for this item |  |

## Events published

- `OnAfterHasMinimumSIHistData(ItemNo: Code[20]; var HasMinimumHistoryLoc: boolean; var NumberOfPeriodsWithHistoryLoc: Integer; PeriodType: Integer; ForecastStartDate: Date; var StatusType: Option " ","No columns due to high variance","Limited columns due to high variance","Forecast expired","Forecast period type changed","Not enough historical data","Zero Forecast","No Forecast available")` (integration)

## Procedures

- `UpdateStatus()`
- `TestGetStatusText(): Text`

Plus 15 local procedures.

## Triggers

OnAfterGetCurrRecord, OnOpenPage

## Relations

- source table [Table 27 "Item"](../table/27.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 2000 "Time Series Management"](../codeunit/2000.md) (3 calls: `UpdateStatus → HasMinimumHistoricalData`, `UpdateStatus → SetMaximumHistoricalPeriods`, `UpdateStatus → SetMinimumHistoricalPeriods`)
- [Codeunit 1850 "Sales Forecast Handler"](../codeunit/1850.md) (1 call: `UpdateStatus → SetItemLedgerEntryFilters`)

## Across versions

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

## Documented on Microsoft Learn

- [Using the Sales and Inventory Forecast extension to manage inventory](https://learn.microsoft.com/dynamics365/business-central/ui-extensions-sales-forecast)

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "page", object_name: "Sales Forecast")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
