A purchase batch links received products to their purchase price. Within the same batch, the same product can be held in several warehouses and warehouse slots. Editing the batch's basic information, correcting the original purchase price and setting the current unit value are separate actions with different effects.
Opening a purchase batch and access permissions
In the browser, open Manage warehouses → Warehouses and select the Purchase batches tab. Find the batch using the table's column filters, for example by product name or code, batch number or alternative batch number. Open the batch details using the number link in the Batch number column.
The warehouse feature must be enabled. Viewing requires access to the purchase batch and its products' warehouse information. You only see batches and product rows covered by your permissions. Editing also requires permission to edit purchase batches, which can be granted to a manager through permission to edit warehouses or warehouse events. Correcting a purchase price also requires access to the selected product row's warehouse slot information. Viewing average buy prices requires access to the product details.
With view-only permissions, the save and price editing actions are hidden. The system's default batch also has read-only basic information and prices in this form.
Understanding quantities, status and events
In the Batch products section, each product row represents a product from the batch in a particular warehouse slot. Products in stock is the row's current balance. Sales, usage, transfers, reservations, returns and inventory counts can change it.
Original number of products initially shows the quantity purchased into that slot. On a row created solely by a transfer, it can be zero even when there is a current balance. This field is not an unchanging record of receipt: if an inventoried balance exceeds the row's positive original quantity, the original quantity is also increased to the inventoried balance. A transfer row's zero original quantity is not increased this way. Check the purchase event for the actual quantity received.
The batch's status is determined by the balances of all its product rows. All used means all balances are zero. Partially used means at least one row's current quantity is below its original quantity. Otherwise, the status is Received. The status does not indicate expiry and does not remove the batch or its history.
Open Purchase batch product events using the row's event icon. The icon is in its own column on the right of the product row. The events help you investigate quantity changes. The quantity in an inventory event means the final balance that was set, not the quantity added or removed.
If the batch's balance has been increased by an inventory count, a red warning icon appears beside the current quantity in the form. Hover over the quantity to see the time of the inventory count, the previous and inventoried balances, the person who performed it and the description. The same details also appear in the batch's events for the inventory count that increased the balance. The warning indicates a historical increase; on its own, it does not mean the current balance is incorrect.
Correcting basic information and setting an expiry notification
In the batch's Basic info section, edit Alternative batch number, Additional info, Products received at or Expiry date as needed, then select Save at the bottom of the form. The batch number cannot be changed. Reopen the batch and check the saved information.
Products received at is a required date and time. Changing it saves the batch's receipt time, but saving this basic information does not change the times of existing events or trigger recalculation of average prices or warehouse value history. Changing the receipt time alone therefore does not correct the entire event history.
For an expiry email notification, fill in Expiry date and attach a suitable notification to the batch in the Choose email notification field. A date alone does not send a notification. If creating a new notification is available, Create new email notification opens a notification of type Batch Expiry Notification for this batch. Managers do not see this creation button, even if they are allowed to edit the batch.
Check the notification recipients, message language and Time of delivery. A negative day value means delivery before the expiry date, zero means on the expiry date and a positive value means after it. For example, −7 means seven days before expiry. Batches are checked daily by a background job at 8 a.m. in the service's time zone. The condition applies to that particular day; this check does not catch up on delivery dates that have already passed. Batches with the status All used are skipped.
The notification does not reset the balance to zero or change the batch's status. See also configuring an email notification.
Correcting the original purchase price
Use purchase price correction when the unit purchase price at receipt was incorrect. The correction applies to all allocations of the same product in the selected purchase batch, including those in other warehouses. It does not change other products' purchase prices, quantities or event dates.
- Open the pencil icon on the right of the product row in the Batch products section. Its action is Update the product's price in this batch.
- Enter a New price in the purchase price correction section of the price editing window. The price must be zero or greater. You do not need to fill in Current value per product.
- Select Preview price correction and check the calculations in the Review price correction window.
- If the correction is right, select Correct purchase price, then confirm by selecting Correct purchase price in the Confirm historical purchase-price correction window.
The entered purchase price is rounded to cents before previewing and saving: for example, 1.005 becomes 1.01. Entering the same purchase price does not produce a correction. If the same product has different prices in different warehouse slots within the batch, the preview is blocked and the discrepancy must be resolved.
Reading the preview
Purchase price change shows the price being replaced and the new price. In MAC calculations, MAC change at this purchase batch shows the change in the product's shared weighted average price at the time this batch was received, not the total change in current warehouse value.
Affected whole-event values shows the events' monetary effects before and after the correction. The figures apply to the whole event, including products from its other batches. They do not represent the sales amount or only the share belonging to the batch being corrected. For an inventory event, the quantity used in the calculation is the balance difference. For a warehouse transfer, the source and destination sides are shown separately with opposite effects.
Why included explains whether the event contains products from the batch being corrected or whether its value changes through the shared MAC price. This is why a later event from another purchase batch may be included. An event row for the batch being corrected may also show zero effect.
Affected historical warehouse snapshots compares separate saved warehouse valuations on their valuation dates. Changes from different dates are not added together: the same remaining product may be included in valuations for several days. The sum of the event rows is also not the total correction to historical warehouse values.
Events and warehouse values outside your permissions are hidden. The view reports the numbers of visible and hidden records. Hidden records can still affect the calculation, so the visible table does not always cover the full effect. Unavailable or an explanation about missing history does not mean zero. The calculation may be blocked, for example, by a missing purchase price, MAC history or manual unit value history. Physical warehouse value is not calculated for the internal Projektilla warehouse.
The preview does not change or save warehouse value history. It is valid for 15 minutes. If the price or history affecting the calculation changes, create a new preview. Validity and consistency with the history are also checked by the background job, so a correction accepted into the queue may still remain unapplied.
Effects of the correction and checking the result
The correction updates the batch product's purchase price in all warehouse slots, the price in the original purchase event and the purchase prices in related batch events. It does not replace the selling price in a sales event. However, the calculated effect of the sale on warehouse value may change.
The correction may change average buy prices for this and later purchase batches, even though the later batches' own purchase prices remain the same. With FIFO, the historical effect depends on the quantity remaining from the corrected batch in each valuation. With MAC, the change in the shared average price may also affect products from other batches and the values of other warehouses.
A manually set current value is retained. With FIFO, the historical purchase price correction no longer applies to valuations after the first current value was set. With MAC, manually valued batch quantities are not revalued according to the change in the shared MAC price. Old MAC warehouse values are not comprehensively corrected for periods where the average price history required for the correction is missing, and MAC valuations that could not be calculated in the preview are not corrected.
The change is processed in the background. A notification about the background job means the request has been accepted, not completed. Wait for processing and reopen the batch. Check Unit purchase price and use the clock icon beside it to open Unit purchase price history. The clock icon and number of changes appear once corrections have been saved. The history shows the correction time, the price before and after, and the person who made the correction.
The event link on a price history row lets you view the before-and-after values of whole events saved with the correction. Later corrections do not replace these values from the earlier correction. An older correction may lack a saved event comparison. Also check the product's average buy prices and the values of affected warehouses. If the price or history does not update, reopen the batch and create a new preview before trying the correction again.
Setting the current unit value
Current value per product is the manually set monetary unit value of the batch product. When valuing the batch product, it replaces the purchase price with FIFO and the shared average price with MAC. It does not change the purchase price, product quantity or shared average buy price.
Open the same pencil icon on the product row, fill in Current value per product and select Set the product's current value in this batch. Accept the separate confirmation. The value must be zero or greater and is rounded to cents before calculation. Zero is a valid unit value that sets the products' monetary value to zero; it does not remove the products or restore the use of the purchase price. An empty field does not remove a current value that has been set.
The change applies to all allocations of the same product in this batch. It takes effect from the time the change becomes effective, saves a change history and creates new values for the physical warehouses where products from the batch remain. This action does not correct previously saved warehouse values. Allocations with zero quantity and the Projektilla warehouse do not produce an effect on warehouse value.
The effect of the first change is calculated from the purchase price with FIFO and from the shared weighted average price immediately before the change with MAC. Later changes are compared with the previous manual value. Not set (purchase price: …) on the first row of the current value history shows the purchase price as a reference; with MAC, it is not the calculation basis for the first change.
Wait for background processing and reopen the batch. Check the saved value and use the clock icon beside it to open Current value history. You can see the old and new values, the Effective at time, the person who made the change, the visible affected warehouses and their value change. Use the value change link to open the effects for each warehouse. The visible total covers the warehouses you have permission to view.
Moving default batch products into batches with the correct prices
The default batch's purchase price or current value cannot be corrected using the actions described above. If you need to record the correct purchase price for its products, a separate Inventory and purchase action is available. It requires inventory and purchase permissions, as well as access to the warehouse slot.
Open the icon with two circular arrows on the default batch's product row. The action appears in an editable default batch when the row has at least one product and the warehouse is other than Projektilla. Enter an inventory event description or select Use default description. Enter the new batch's Unit purchase price and quantity. You can split the quantity into batches with different prices using Add a new batch. Each quantity must be positive, and the total must equal the entire current balance of the selected row. Select Inventory and purchase.
The action inventories the default batch balance in the selected warehouse slot to zero and records the same quantity as new purchases into new batches in the same slot. The total quantity stays the same, but the batches, event history and basis for price calculations change. This is not a retroactive price correction to the old default batch. Finally, check the default batch's zero balance, the new purchase batches and their prices, and the average buy prices.
Viewing average buy prices and their changes
In the browser, open Manage warehouses → Products, open the product and select the Product Pricing tab. Under Average buy prices, you can see the current weighted and unweighted average buy prices and the last update time. The current value is selected according to the latest purchase batch that has already become effective; updating an old batch does not make it the latest batch.
Select Average buy price history. For each purchase batch, you can see the original and current average buy prices, the original and current unit purchase prices, the total product quantity before purchase, the purchased quantity and the Effective from time. You can open the purchase batch using its batch number. The original prices represent the first saved calculation; the current prices and calculation quantities are updated during recalculation.
Open Average buy price change log using the change log icon at the right of the history row. The icon appears on rows with changes. You can see the reason for the change, the old and new prices, the person who made the change and the time. Purchase batch that caused the change opens the batch that triggered the change. The reason may be, for example, Purchase, Backdated purchase, Purchase price correction or Inventory increase.
For an inventory count, you can also see the Inventory event information. Hover over it to see the event time, warehouse, warehouse slot, inventoried balance and description. An inventory increase does not create a new purchase batch row in average buy price history: it updates the current weighted average price on the latest purchase row preceding it and adds a change log entry. The purchase row's Effective from time stays the same, so check the change log for the inventory count's own time.
How are average prices calculated?
The weighted average buy price is the product's company-wide moving average cost, or MAC. It is not an average of the prices of the remaining purchase batches in a single warehouse, nor is it a selling price. The calculation follows purchase and warehouse events in chronological order. The company's quantity includes all warehouses and products transferred to a reservation target.
After a purchase or an inventory count that increases the balance, the new average price is (previous total quantity × previous average price + added quantity × unit price of the addition) ÷ (previous total quantity + added quantity). If there is no previous balance, a positive purchase determines the new average price. A negative company-wide total quantity caused by incorrect history is treated as zero in the calculation for the next addition.
Example: there are 10 products and the previous average price is €5. Another 5 are purchased at €8 each. The new weighted average price is (10 × 5 + 5 × 8) ÷ 15 = €6. If these are the product's only two purchase batches, the unweighted average price is (5 + 8) ÷ 2 = €6.50.
For an inventory count, only a positive balance difference is valued at the selected purchase batch's purchase price, not the entire inventoried final balance or the manual current value. Sales, usage and inventory counts that reduce the balance do not themselves change the average price, but they reduce the quantity used in the calculation for the next addition. Internal transfers and reservations do not change the company-wide total quantity.
The unweighted average buy price is the arithmetic mean of the unit prices accumulated chronologically for each product and purchase batch. Each batch has equal weight, regardless of its quantity or remaining balance. An inventory increase does not add a new batch to this calculation. Splitting the same purchase across different warehouse slots also does not give it the weight of several batches.
Average buy prices are calculated using more precise values than the two decimal places shown in the view. Average buy prices and history figures are rounded to two decimal places for display; the more precise value appears in the tooltip. This means a result calculated from the displayed rounded figures may differ slightly from the saved calculation.
Inventory counts that increase the balance on the Android and iOS Product Inventory forms also affect the same average price calculation. On both forms, the batch selection is labelled Purchase Batch. Average buy price history and the price corrections described here are checked in the browser. If average buy price information is not yet available, the view reports this and explains that it will be calculated after the next purchase event; missing information does not mean a zero price.
See also interpreting warehouse value history, how warehouse value and product cost are determined and investigating a stock balance discrepancy.