PageSourceSearch

https://docs.365extensions.com/assets/js/7d819f6f.bb4ed24a.js

js 365extensions.com collected 2026-10-08 06:47:25 UTC 34,285 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkdocs_365extensions_com=self.webpackChunkdocs_365extensions_com||[]).push([["3247"],{61322(e,n,t){t.r(n),t.d(n,{metadata:()=>r,default:()=>h,frontMatter:()=>a,contentTitle:()=>o,toc:()=>l,assets:()=>d});var r=JSON.parse('{"id":"LDP/docs/Introduction","title":"Introduction","description":"Helpers for Lanham Demand Planner is a Microsoft Business Central app published by Theta Systems Limited. It extends the Lanham Demand Planning app, picking up the work a planning team does around the edges of the base product and making it part of the product.","source":"@site/docs/LDP/docs/Introduction.md","sourceDirName":"LDP/docs","slug":"/LDP/docs/Introduction","permalink":"/docs/LDP/docs/Introduction","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":10,"frontMatter":{"sidebar_position":10,"title":"Introduction"},"sidebar":"LDPSidebar","next":{"title":"Pricing","permalink":"/docs/LDP/docs/Pricing"}}'),s=t(74848),i=t(28453);let a={sidebar_position:10,title:"Introduction"},o="Helpers for Lanham Demand Planner",d={},l=[{value:"Feature Summary",id:"feature-summary",level:2},{value:"Collaborative Forecasting",id:"collaborative-forecasting",level:3},{value:"Procurement Units & Alert Lines",id:"procurement-units--alert-lines",level:3},{value:"Item Usage",id:"item-usage",level:3},{value:"Vendor Buying Calendar",id:"vendor-buying-calendar",level:3},{value:"Suggested Orders",id:"suggested-orders",level:3},{value:"Role Centres",id:"role-centres",level:3},{value:"Production Planning",id:"production-planning",level:3},{value:"Inventory Building & Inventory at Risk",id:"inventory-building--inventory-at-risk",level:3},{value:"Configuration & Administration",id:"configuration--administration",level:3},{value:"See Also",id:"see-also",level:2}];function c(e){let n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"helpers-for-lanham-demand-planner",children:"Helpers for Lanham Demand Planner"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Helpers for Lanham Demand Planner"})," is a Microsoft Business Central app published by ",(0,s.jsx)(n.a,{href:"https://www.theta.co.nz/",children:"Theta Systems Limited"}),". It extends the ",(0,s.jsx)(n.a,{href:"https://www.lanhamassoc.com/",children:"Lanham Demand Planning"})," app, picking up the work a planning team does around the edges of the base product and making it part of the product."]}),"\n",(0,s.jsx)(n.p,{children:"It began as a set of usability helpers \u2014 promoted actions, extra columns, better defaults \u2014 and much of that is still here, because it is what a planner notices every day. What has grown up alongside it is a second body of work: features that change what the planning engine actually sees, run overnight, and carry their own setup, scheduling and audit trail."}),"\n",(0,s.jsx)(n.p,{children:"Broadly, the app covers five things:"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Area"}),(0,s.jsx)(n.th,{children:"What it is for"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Forecasting"})}),(0,s.jsx)(n.td,{children:"Work the collaborative forecast in sales amounts as well as quantities and seed it from last year's actuals; import customer forecasts, and forecasts produced outside Business Central, from Excel or text files; and publish the Lanham net forecast into a Business Central demand forecast so Business Central planning works from the same demand the demand planner sees."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Planning"})}),(0,s.jsx)(n.td,{children:"Hold inventory back from everyday demand on purpose: plan a build ahead of a season, a shutdown or a campaign, and take lot-tracked inventory that is about to expire \u2014 or has been put on hold, or has failed inspection \u2014 out of what planning treats as available."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Production planning"})}),(0,s.jsx)(n.td,{children:"Replan production without throwing away the orders already under way, and run standard Business Central planning worksheet calculations in the background in a defined order."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Configuration"})}),(0,s.jsx)(n.td,{children:"Derive Lanham's own configuration from the Business Central master data it should agree with, and keep it there as that data moves \u2014 plus the bulk maintenance jobs that correct settings across a whole catalogue rather than one record at a time."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Everyday usability"})}),(0,s.jsx)(n.td,{children:"Promoted actions, lookup columns, sensible default sorts, role centre tiles and cues, and administration reports that can be left to the job queue."})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["The larger features are built to be scheduled rather than driven by hand. Each one has its own setup, writes what it did to Lanham's ",(0,s.jsx)(n.strong,{children:"Processing Log"}),", and \u2014 where it creates documents \u2014 rebuilds them from its own records every run, so an interrupted night is corrected by the next one rather than compounded."]}),"\n",(0,s.jsx)(n.admonition,{title:"Prerequisites",type:"info",children:(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["The ",(0,s.jsx)(n.strong,{children:"Lanham Demand Planning"})," app must be installed first."]}),"\n",(0,s.jsxs)(n.li,{children:["An active subscription for this app \u2014 see ",(0,s.jsx)(n.a,{href:"/docs/LDP/docs/Pricing",children:"Pricing"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:["The ",(0,s.jsx)(n.strong,{children:"Excellent Importer"})," app, but only if you want the Excel import features."]}),"\n"]})}),"\n",(0,s.jsx)(n.admonition,{title:"New here?",type:"tip",children:(0,s.jsxs)(n.p,{children:["Start with ",(0,s.jsx)(n.a,{href:"./Forecasting",children:"Forecasting"})," if your job is the forecast itself, ",(0,s.jsx)(n.a,{href:"./Planning",children:"Planning"})," if it is protecting inventory from demand, and ",(0,s.jsx)(n.a,{href:"./Production",children:"Production Planning"})," if it is getting orders onto the floor. ",(0,s.jsx)(n.a,{href:"./ConfigurationAssistant",children:"Configuration Assistant"})," is where the setup and bulk maintenance features live. The ",(0,s.jsx)(n.a,{href:"./Changelog",children:"Changelog"})," is the quickest way to see what a given version added."]})}),"\n",(0,s.jsx)(n.h2,{id:"feature-summary",children:"Feature Summary"}),"\n",(0,s.jsx)(n.p,{children:"The tables below list every feature the app adds, grouped by the part of the product it touches."}),"\n",(0,s.jsx)(n.h3,{id:"collaborative-forecasting",children:"Collaborative Forecasting"}),"\n",(0,s.jsxs)(n.p,{children:["See the ",(0,s.jsx)(n.a,{href:"./Forecasting",children:"Forecasting"})," page for the detail on these features."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Feature"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Advanced Forecast Worksheet"})}),(0,s.jsx)(n.td,{children:"A new forecast worksheet page that lets you toggle between viewing forecast quantities and sales amounts. Includes comparison modes (vs. last year or vs. existing forecast), a configurable price date, and period name display options."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Show Value Type on Forecast Customer"})}),(0,s.jsxs)(n.td,{children:["Adds a ",(0,s.jsx)(n.em,{children:"Show Value Type"})," control to the standard Forecast Customer page, allowing you to switch the sub-page between the quantity view and a sales-amount view without leaving the page."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Forecast Price Method"})}),(0,s.jsx)(n.td,{children:"A new setup option on the Collaborative Forecast Setup that controls how unit prices are calculated when displaying sales amounts. Options include using the customer's price/discount, the item unit price with a forecast discount group, or the plain item unit price."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Forecast Discount Group"})}),(0,s.jsx)(n.td,{children:"An additional setup field that lets you nominate a specific item discount group to use for forecast amount calculations, rather than relying on individual customer discounts."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Use Last Year Actual if no Forec
1ast"})}),(0,s.jsxs)(n.td,{children:["A setup option that automatically seeds the ",(0,s.jsx)(n.em,{children:"New Forecast"})," values from prior-year actuals when a new forecast is first generated for an item that has no existing forecast. Can be set to ",(0,s.jsx)(n.em,{children:"No"}),", ",(0,s.jsx)(n.em,{children:"Confirm First"}),", or ",(0,s.jsx)(n.em,{children:"Always"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Update Forecast with History"})}),(0,s.jsx)(n.td,{children:"An action on the Forecast Customer page that runs a report to copy last year's history into the new forecast for any items that do not yet have forecast values, saving manual data entry."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Customer Item Reference on Forecast"})}),(0,s.jsx)(n.td,{children:"Adds the customer's own item reference number as a lookup column on the Forecast Customer Item page and the Advanced Forecast Worksheet, making it easier to match items to customer part numbers."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Last Year Quantity on Forecast Lines"})}),(0,s.jsxs)(n.td,{children:["Adds a calculated ",(0,s.jsx)(n.em,{children:"Total Last Year (Qty.)"})," field and ",(0,s.jsx)(n.em,{children:"Sales Order Qty."})," field to collaborative forecast lines, giving side-by-side visibility of what sold last year and what is already on open sales orders."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Customer Forecast Import"})}),(0,s.jsxs)(n.td,{children:["Loads collaborative customer forecasts from an Excel or text file through the ",(0,s.jsx)(n.strong,{children:"Excellent Importer"}),", using the import type ",(0,s.jsx)(n.em,{children:"Customer Forecast (Lanham Demand Planner)"}),". Rows are validated a file at a time against the forecast customer, item and forecast periods, so a bad file is reported in full rather than one row at a time."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"External Forecast Alignment"})}),(0,s.jsxs)(n.td,{children:["Imports a forecast produced outside Business Central \u2014 attributed to a grouping such as a customer name that has no Business Central customer record \u2014 and makes it the forecast planning uses, without discarding what Lanham calculated. The statistical forecast is cancelled by a matching ",(0,s.jsx)(n.em,{children:"Statistical Offset"})," adjustment and the imported quantities added back as ",(0,s.jsx)(n.em,{children:"External Forecast"})," rows, so the planner can still compare the two: what Lanham forecast, what the business forecast, the net movement between them, and which groupings it came from. See ",(0,s.jsx)(n.a,{href:"./Forecasting#external-forecast-alignment",children:"External Forecast Alignment"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Demand Forecast Publish"})}),(0,s.jsxs)(n.td,{children:["Copies the Lanham net forecast \u2014 the statistical forecast, plus forecast adjustments, plus the collaborative customer forecast \u2014 into a Business Central demand forecast, so Business Central planning works from the same demand the demand planner sees. Anything that reaches the Lanham forecast reaches planning with it, the external forecast alignment included. A ",(0,s.jsx)(n.em,{children:"Publish Scope"})," setting decides where the demand lands in a hub-and-spoke network. See ",(0,s.jsx)(n.a,{href:"./Forecasting#demand-forecast-publish",children:"Demand Forecast Publish"}),"."]})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"procurement-units--alert-lines",children:"Procurement Units & Alert Lines"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Feature"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Item Classification Fields on Procurement Units"})}),(0,s.jsxs)(n.td,{children:["Adds lookup columns for ",(0,s.jsx)(n.em,{children:"Item Summary Code 1\u20133"}),", ",(0,s.jsx)(n.em,{children:"Item Category Code"}),", and ",(0,s.jsx)(n.em,{children:"Inventory Posting Group"})," to both the Procurement Unit list and card, drawn directly from the item record, to supp
1ort filtering and grouping by item classification."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Manual Bypass Replenishment Visible"})}),(0,s.jsxs)(n.td,{children:["Makes the previously hidden ",(0,s.jsx)(n.em,{children:"Manual Bypass Replenishment"})," field visible on the Procurement Unit card so buyers can set it without customising the page."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Promoted Actions on Procurement Units"})}),(0,s.jsxs)(n.td,{children:["Promotes the most-used actions \u2014 ",(0,s.jsx)(n.em,{children:"View Forecast"}),", ",(0,s.jsx)(n.em,{children:"Location Inventory Roll Up"}),", ",(0,s.jsx)(n.em,{children:"Item Usage"}),", ",(0,s.jsx)(n.em,{children:"Usage Ledger Entries"}),", and ",(0,s.jsx)(n.em,{children:"Vendor Performance"})," \u2014 onto the action bar of the Procurement Unit list and card for faster access."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Division Code & Item Description on Alert Lines"})}),(0,s.jsxs)(n.td,{children:["Adds ",(0,s.jsx)(n.em,{children:"Division Code"})," and ",(0,s.jsx)(n.em,{children:"Item Description"})," lookup fields to the DP Alert Lines page, pulled from the procurement unit and item record respectively, to improve item identification without drilling into each record."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Open Purchase Lines from Alert Lines"})}),(0,s.jsxs)(n.td,{children:["Adds an ",(0,s.jsx)(n.em,{children:"Open Purchase Lines"})," action to the Alert Lines page that navigates directly to outstanding purchase order lines for the alerted item, allowing buyers to check what is already on order without leaving the alert list."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Promoted Actions on Alert Lines"})}),(0,s.jsxs)(n.td,{children:["Promotes ",(0,s.jsx)(n.em,{children:"View Forecast"}),", ",(0,s.jsx)(n.em,{children:"Location Inventory Roll Up"}),", ",(0,s.jsx)(n.em,{children:"Surplus List"}),", and ",(0,s.jsx)(n.em,{children:"Open Purchase Lines"})," onto the Alert Lines action bar."]})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"item-usage",children:"Item Usage"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Feature"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Item Usage List Default Sort"})}),(0,s.jsx)(n.td,{children:"Changes the default sort order of the Item Usage list to descending, so the most recent usage periods are shown first."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Promoted Actions on Item Usage"})}),(0,s.jsxs)(n.td,{children:["Promotes ",(0,s.jsx)(n.em,{children:"Adjust Usage"}),", ",(0,s.jsx)(n.em,{children:"View Forecast"}),", ",(0,s.jsx)(n.em,{children:"Location Inventory Roll Up"}),", and ",(0,s.jsx)(n.em,{children:"Usage Ledger Entries"})," onto the Item Usage list action bar."]})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"vendor-buying-calendar",children:"Vendor Buying Calendar"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Feature"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Promoted Actions on Vendor Buying Calendar"})}),(0,s.jsxs)(n.td,{children:["Promotes the most frequently used actions \u2014 including ",(0,s.jsx)(n.em,{children:"Suggested Order"}),", ",(0,s.jsx)(n.em,{children:"Create Suggested Order"}),", ",(0,s.jsx)(n.em,{children:"Create Multiple Suggested Orders"}),", ",(0,s.jsx)(n.em,{children:"Open Purchase Orders"}),", and related reporting actions \u2014 onto the action bar for quicker access."]})]})})]}),"\n",(0,s.jsx)(n.h3,{id:"suggested-orders",children:"Suggested Orders"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Feature"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Promoted Actions on Suggested Orders"})}),(0,s.jsxs)(n.td,{children:["Promotes ",(0,s.jsx)(n.em,{children:"Create Purchase Order"}),", ",(0,s.jsx)(n.em,{children:"Create Transfer Order"})," and ",(0,s.jsx)(n.em,{children:"Statistics"})," onto the suggested order's action bar, with the suggested order line review, transfer orders, transfer lines and vendor performance grouped under ",(0,s.jsx)(n.em,{children:"Related"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Posted Vendor Performance on Suggested Orders"})}),(0,s.jsxs)(n.td,{children:["Adds a ",(0,s.jsx)(n.em,{children:"Posted Vendor Performance"})," action to the suggested order, showing how the vendor being bought from has performed on orders already received \u2014 the lead times actually achieved, the days each receipt ran overdue, and the quantities received against what was ordered."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Open Purchase Orders Created"})}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.em,{children:"Create Purchase Order"})," on a suggested order finishes by opening the orders it created, instead of leaving you to go and find them. One order opens on its own ",(0,s.jsx)(n.em,{children:"Purchase Order"})," card; several open in the standard ",(0,s.jsx)(n.em,{children:"Purchase Order List"})," filtered to that suggested order, so release, approval and everything else are exactly where you already know to look. Switched on with ",(0,s.jsx)(n.strong,{children:"Open Purchase Orders Created"})," on the ",(0,s.jsx)(n.em,{children:"Suggested Order"})," tab of Inventory Management Setup."]})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"role-centres",children:"Role Centres"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Feature"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Demand Planner Tiles on Business Manager Role Centre"})}),(0,s.jsxs)(n.td,{children:["Adds Buyer Activities, Current Inventory Level, and Historical Inventory Value tiles, plus a ",(0,s.jsx)(n.em,{children:"Demand Planner"})," action group with navigation links to key demand planning pages, to the Business Manager Role Centre."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Demand Planner Tiles on Purchasing Agent Role Centre"})}),(0,s.jsx)(n.td,{children:"Adds Buyer Activities, Current Inventory Level, Historical Inventory Value, and reporting actions (Stocking Decision Review, Inventory Turns, Forecast Accuracy, Surplus and Excess Inventory Value, Customer Forecast vs Actual) to the Purchasing Agent Role Centre."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Processing Errors Cue on Buyer Activities"})}),(0,s.jsxs)(n.td,{children:["Adds a ",(0,s.jsx)(n.em,{children:"Processing Errors"})," cue to the Buyer Activities tile showing the count of errors logged by the demand planning background processor in the last 10 days, with a drill-down to the full processing log."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Planning Cues on Buyer Activities"})}),(0,s.jsxs)(n.td,{children:["Adds a ",(0,s.jsx)(n.em,{children:"Planning"})," cue group counting the inventory building batches currently running, the inventory at risk lines still waiting for a decision, and the at-risk lines that have become transfer demand. Also adds a ",(0,s.jsx)(n.em,{children:"Late Purchase Order Lines"})," cue alongside the standard late orders count."]})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"production-planning",children:"Production Planning"}),"\n",(0,s.jsxs)(n.p,{children:["See the ",(0,s.jsx)(n.a,{href:"./Production",children:"Production Planning"})," page for the detail on these features."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Feature"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Net Regenerative Production Plan"})}),(0,s.jsxs)(n.td,{children:["A new action on the Production Plan page that reuses existing production orders when the BOM has not changed, instead of deleting and recreating them every run. This dramatically reduces processing time and preserves manual adjustments made to production orders between planning runs. See ",(0,s.jsx)(n.a,{href:"./Production#net-regenerative-production-plan",children:"Net Regenerative Production Plan"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Procurement Unit Filtering"})}),(0,s.jsx)(n.td,{children:"When running the Net Regenerative Production Plan from the UI, a filter page is shown allowing you to restrict the planning run to specific procurement units (e.g. by item, location, or variant). When the plan is run from the job queue, no filter is applied and all procurement units are processed."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"BOM Change Tracking"})}),(0,s.jsxs)(n.td,{children:["A persistent log tracks which Production BOM and version was used when each production order was created. On subsequent runs, if the BOM or version has changed the order is deleted and recreated with the new BOM; if unchanged, the order is reused. The log is visible on the ",(0,s.jsx)(n.em,{children:"Reusable Production Order BOM Log"})," page."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Get First Production Date From"})}),(0,s.jsxs)(n.td,{children:["A setup option in Inventory Management Setup that controls which production order statuses (Planned, Firm Planned, Released) are considered when calculating the first available production date for an item. Select ",(0,s.jsx)(n.em,{children:"Location Setup Only"})," to ignore production orders entirely and rely solely on the ",(0,s.jsx)(n.em,{children:"Production Plan Locked Through"})," date on the location card."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Planning Worksheet Schedule"})}),(0,s.jsxs)(n.td,{children:["Runs standard Business Central planning worksheet calculations in the background. Each schedule line carries its own worksheet, its own saved planning parameters including the forecast to use, and a sequence number, so several worksheet runs happen automatically in a defined order. Run status, duration and any captured planning errors are visible after each run. See ",(0,s.jsx)(n.a,{href:"./Production#planning-worksheet-scheduling-short-term-planning",children:"Planning Worksheet Scheduling"}),"."]})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"inventory-building--inventory-at-risk",children:"Inventory Building & Inventory at Risk"}),"\n",(0,s.jsxs)(n.p,{children:["Two ways of holding inventory back from everyday demand, both carried by transfer orders to a virtual location rather than by forecast adjustments \u2014 see the ",(0,s.jsx)(n.a,{href:"./Planning",children:"Planning"})," page for the detail."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Feature"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Inventory Building Batches"})}),(0,s.jsxs)(n.td,{children:["Plan a temporary build of inventory \u2014 a pre-season build, a shutdown cover, a campaign \u2014 and protect it from being consumed by everyday demand until you choose to release it. A batch such as ",(0,s.jsx)(n.code,{children:"FY27Build"})," covers a date range and holds a line per item, variant and location, each with a quantity per forecast period in a matrix you can switch between a ",(0,s.jsx)(n.em,{children:"Net"})," view of your own movements and an ",(0,s.jsx)(n.em,{children:"Accumulated"})," view of the running balance. Releasing the batch generates the transfer orders that carry it; unreleasing removes them and reopens the batch."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Inventory Building Without a Forecast"})}),(0,s.jsx)(n.td,{children:"The build is carried by transfer orders between your real location and a virtual inventory building location, not by forecast adjustments, so it works exactly the same for an item that has no forecast at all. Nothing in your forecast is read or changed. The generated orders are never released and never posted, and both are removed once the batch passes its end date, at which point what you built becomes ordinary inventory again."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Inventory at Risk"})}),(0,s.jsxs)(n.td,{children:["Finds lot-tracked inventory that is about to expire, or that a ",(0,s.jsx)(n.em,{children:"Lot No. Information"})," filter says is on hold or has failed inspection, and lists it on one review page with a suggested write-off quantity. Applying a line raises transfer demand to a virtual at-risk location, which takes the quantity out of what planning treats as available so the replacement gets planned before the shortfall arrives. See ",(0,s.jsx)(n.a,{href:"./Planning#inventory-at-risk",children:"Inventory at Risk"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"At-Risk Rules"})}),(0,s.jsx)(n.td,{children:"Priority-ordered rules decide what counts as at risk and what to suggest doing about it \u2014 an item filter, an expiry threshold, a lot information filter, an expected write-off percentage, and how long a suggestion stands before it is asked again. A rule can apply its own lines automatically, or leave them for a planner to decide on. The nightly run keeps a 
1standing suggestion's measurements honest without reopening a decision the planner has already made."})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"configuration--administration",children:"Configuration & Administration"}),"\n",(0,s.jsxs)(n.p,{children:["See the ",(0,s.jsx)(n.a,{href:"./ConfigurationAssistant",children:"Configuration Assistant"})," page for the detail on these features."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Feature"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Division Codes from Item Categories"})}),(0,s.jsxs)(n.td,{children:["Makes the item category the single place a procurement unit's division is decided. Division codes are mapped onto item categories and inherited down the parent chain, so a division set on a parent covers everything beneath it and only the exceptions need a value of their own. Procurement units take their division as they are created, follow an item that moves category, and follow the mapping when it changes. Optional, and only appropriate where categories and divisions genuinely align. See ",(0,s.jsx)(n.a,{href:"./ConfigurationAssistant#division-codes-from-item-categories",children:"Division Codes from Item Categories"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Update Division Codes from Item Categories"})}),(0,s.jsx)(n.td,{children:"A report that applies the item category mapping to procurement units that already exist, filtered by location, item, variant or current division code. Safe to run repeatedly and safe to leave to the job queue."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Delete Empty Vendor Buying Calendars"})}),(0,s.jsxs)(n.td,{children:["Removes vendor buying calendars that no procurement unit sits behind, so buyers are not scrolling past buying relationships nobody maintains. Lanham refuses to delete a calendar that still has procurement units, so only what is genuinely empty can go. Optional, and run on a schedule with the other configuration rules. See ",(0,s.jsx)(n.a,{href:"./ConfigurationAssistant#delete-empty-vendor-buying-calendars",children:"Delete Empty Vendor Buying Calendars"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"CONFIGMGT Job Queue Command"})}),(0,s.jsxs)(n.td,{children:["One job queue entry runs every configuration rule that is switched on, and writes what each did to Lanham's Processing Log. Schedule it on its own or add ",(0,s.jsx)(n.code,{children:"CONFIGMGT"})," to the Lanham overnight run. Rules added in future versions run from the same entry. See ",(0,s.jsx)(n.a,{href:"./ConfigurationAssistant#scheduling-the-configuration-rules",children:"Scheduling the configuration rules"}),"."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Create/Update Vendor Buying Calendars"})}),(0,s.jsxs)(n.td,{children:["A report that creates or updates Vendor Buying Calendar entries from procurement units in bulk, with an option to set a ",(0,s.jsx)(n.em,{children:"Frozen Review Cycle Days"})," value across all matching records."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Update Procurement Units"})}),(0,s.jsx)(n.td,{children:"A report that updates procurement units with replenishment source information derived from purchase order history, useful for correcting records where the replenishment source was missing."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Update Procurement Units from Items"})}),(0,s.jsx)(n.td,{children:"A report that synchronises procurement unit replenishment source settings from the item card, optionally updating the replenishment source type and production group code in bulk."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Periodic Setup Helper"})}),(0,s.jsxs)(n.td,{children:["An administration report designed to be scheduled in the job queue. It automatically updates the ",(0,s.jsx)(n.em,{children:"Production Plan Locked Through"})," date on location cards using a configurable date formula, eliminating the need for manual updates."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Initial Item Ledger Entry Update"})}),(0,s.jsx)(n.td,{children:"A report that backfills historical usage ledger entry date information for locations where advanced forecasting is enabled, typically run once during initial setup to ensure prior-year usage history is correctly reflected."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Vendor Buying Calendar Hotfix"})}),(0,s.jsxs)(n.td,{children:["A background event subscriber that prevents null datetime errors when modifying Vendor Buying Calendar records, ensuring ",(0,s.jsx)(n.em,{children:"Order Create Date"})," and ",(0,s.jsx)(n.em,{children:"Order Creation End"})," are always populated."]})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"See Also"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"./Forecasting",children:"Forecasting"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"./Planning",children:"Planning"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"./Production",children:"Production Planning"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"./ConfigurationAssistant",children:"Configuration Assistant"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"./Changelog",children:"Changelog"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/docs/LDP/docs/Pricing",children:"Pricing"})}),"\n"]})]})}function h(e={}){let{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453(e,n,t){t.d(n,{R:()=>a,x:()=>o});var r=t(96540);let s={},i=r.createContext(s);function a(e){let n=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.