Bia

Inventory guide for treatments

How to control supply inventory in an aesthetic clinic?

Control supplies by recording each material with a unit, current balance and minimum, linking a service recipe and letting a completed appointment deduct the exact quantity; the shopping list calculates the shortage, but staff still decide the purchase.

An aesthetic clinic inventory is more than a list of bottles. The team needs to know which material belongs to each service, what remains before the next appointment and what needs replenishment. Bia keeps procedure supplies separate from products sold through the point of sale, stores quantities as integer milliunits and links a recipe to each active service. When a confirmed appointment is completed, the server checks the recipe, prevents a negative balance and records what was consumed. This guide turns that real flow into a review routine. It does not invent a supplier, purchase order, payment or automatic procedure cost.

Published: Updated:

  • Procedure supplies separated from the product catalog
  • Unit, current balance and minimum set by the clinic
  • A service recipe with an exact quantity per appointment
  • Atomic deduction at completion with no negative or partial balance
  • A shopping list that calculates the shortage to the minimum
  • Deduplicated, audited low-supply notifications

1. Separate a supply from a product you sell

Start by deciding what the team is tracking. A point-of-sale product has its own catalog, price, cost, barcode and stock because it can be sold to a client. A supply is material used to perform a service: its recipe says how much is used when the appointment is completed. Mixing them turns a retail serum sale into treatment consumption and makes the balance impossible to explain.

The supply module stores a name, unit, balance in milliunits, minimum and active state. The clinic chooses the record type instead of asking the application to guess what a bottle means. The product area has a different route and permission. That separation also prevents a commercial catalog edit from silently changing a procedure recipe.

Count the starting material with the team and register what the clinic actually uses in its active services. Bia does not count a cabinet, look up a supplier lot or decide that similar names are interchangeable. If packaging changes, review the unit and recipe before changing the balance. The system organizes the fact entered; physical verification remains a human task.

  • Sold products and consumed supplies use different records.
  • Inventory is scoped to one clinic tenant.
  • Initial counts and material equivalence stay with the team.

2. Record a unit, current balance and minimum

Every supply needs a repeatable unit such as ml, g, unit or another label used by the clinic. The editor accepts up to three decimal places and sends integer milliunits. For example, 1.25 of the chosen unit becomes 1,250 in the contract, so a floating-point rounding error cannot decide whether material fits an appointment.

The current balance is what the clinic counted, and the minimum is the point at which it wants an alert. A zero minimum means there is no automatic low-stock alert. Negative quantities, zero in a recipe and values outside the safe integer range are rejected. The API repeats these checks on the server; a client-side message is not the only boundary.

Creating or editing requires the supplies capability, keeps the session tenant and records an audit with name, unit, balance, minimum and state. A duplicate name does not create a silent second line. A material can be deactivated when it is no longer linked to a recipe, without erasing its history.

  • Up to three decimal places; integer milliunit calculations.
  • A zero minimum means no low-stock alert.
  • Create, edit and deactivate actions pass the contract and audit.

3. Build one service recipe for each active service

Open each active service and choose the supplies used when it is completed. The recipe stores the service-to-material relationship and the quantity per appointment. It is not a note in a procedure name: the API returns the recipe, replaces the complete set and audits the previous and new values so the team can explain a change.

A supply cannot appear twice in the same recipe. Replacement confirms that the service and every chosen material belong to the clinic and accepts active supplies only. If a material has been deactivated, remove it from the recipe first; hiding a line must not leave the next appointment without a consumption explanation.

Use the registered unit when entering the per-service quantity and review the recipe when a treatment changes. The editor accepts positive quantities, but it does not convert ml to g or assume concentration. A service without a recipe has no material to deduct. That is a configuration decision, not permission to estimate consumption.

  • One recipe describes a quantity per service.
  • Duplicate, missing or inactive items are rejected.
  • Units are clinic configuration; there is no automatic unit conversion.

4. Use the minimum to turn balance into a shopping list

The shopping tab collects active supplies whose balance is below the configured minimum. For each one, the API calculates the shortage as minimum minus balance and displays the unit. The list changes when staff corrects a record or an appointment consumes material; it is not a demand forecast and does not know a supplier delivery date.

The low-supply notification uses one key per supply and does not create a new alert on every load. When the balance is no longer below the minimum, the service resolves an open or acknowledged notification. The central list can therefore show a real pending item without counting the same bottle repeatedly. An alert is operational evidence, not proof that a purchase happened.

Read the list alongside a physical count. A high minimum creates unnecessary work; a low one can leave the team without material between purchases. Bia shows the calculation but does not choose a supplier, create an order, negotiate price or mark anything paid. A replenishment list must not be sold as automatic procurement.

  • Shortage equals configured minimum minus current balance.
  • Alerts are deduplicated and resolved when the balance recovers.
  • Supplier, order, timing and payment are outside this list.

5. Let completion consume the recipe once

Deduction does not happen when a client books or when someone opens the screen. The appointment must be confirmed and past its start time. During completion, the server loads the service, locks the recipe, reads the current balance and checks every material before changing any row. If one supply is short, the operation stops with an insufficient-inventory conflict.

A completed appointment consumes the supplies configured in its service recipe within the same operation.

The deduction, `completedAt`, completed-appointment event and audit are part of one transaction. A service lock and row locks protect two concurrent completions. The remaining balance is calculated in milliunits and the low-supply notification is synchronized. There is no partial deduction that makes the appointment look complete.

  • Only a confirmed, started appointment can consume.
  • The complete recipe is checked before the first update.
  • Event, audit and balance share one transactional operation.

6. Keep shortage, deactivation and repetition separate

Insufficient inventory is not a decorative warning. The API returns `INSUFFICIENT_SUPPLY` with the material, unit, available balance and required quantity, and completion does not proceed. Staff can correct the count, review the recipe or decide not to perform the service; it must not lower the balance to force success. An inactive recipe item returns `INACTIVE_SUPPLY` and asks for correction first.

A repeated attempt after completion returns the appointment with `alreadyCompleted: true` and no second deduction. This protects inventory when someone refreshes or clicks twice. The appointment `status` field keeps its legacy contract; `completedAt` is the completion marker and should not be replaced with an invented inventory state.

Deactivating a supply linked to a recipe is rejected until the relationship is removed. That preserves the historical explanation and prevents a service from failing because its record was hidden. Quantity and recipe edits are audited. Lots, expiry, equivalent substitutions and consumption reversals are product decisions, not promises on this page.

  • Shortage stops completion without a partial deduction.
  • A repeated completion does not consume twice.
  • A supply in use cannot be silently deactivated.

7. Replenish manually after checking the list

The shopping list is the owner’s starting point. Check the cabinet, confirm the unit and choose how the clinic records a purchase outside Bia. After material arrives, update the counted balance; the alert stops being pending once the minimum is reached. Do not enter a receipt before the material exists physically.

The module does not keep suppliers, lots, expiry dates, invoices, acquisition cost or purchase orders. It also does not calculate the treatment cost automatically or send money. Products sold through the point of sale use their own catalog and stock fields. Promising procurement integration would confuse two different intentions and fail at the first count.

For a weekly routine, choose a day to count material, review minimums and read open alerts. Record who corrected a balance and compare the change with completed appointments. The audit explains a change but does not replace an invoice or physical count. A larger need belongs in a product opportunity record rather than hidden in sales copy.

  • Update balance only after a physical check.
  • Supplier, lot, expiry, order and payment remain outside.
  • The list guides a purchase; it does not confirm one.

8. Close the week with permissions, isolation and limits

Read and change inventory through the clinic’s authenticated flow. The API applies capability and role permissions before reading or saving; hiding a tab would not be protection. Database queries use `tenantId`, and completion records the responsible user. One clinic cannot discover another clinic’s recipe or balance through a convenient search.

At the weekly close, review active supplies, recipes for services performed, minimum alerts, conflicted completions and audited changes. Separate a configuration error from a real shortage: the first calls for a recipe review, the second for replenishment. Do not use inventory to claim margin because this module does not calculate an automatic financial cost for the procedure.

The useful result is an explanation reception can repeat: which service consumed which quantity, why the balance fell below minimum and who decided to replenish. Bia provides records, recipes, transactional deduction, alerts and a list. It does not promise a perfect count, automatic buying, accounting, suppliers or margin.

  • Permission and tenant scope are enforced on the server.
  • Audits and states help review the week without rewriting history.
  • Supply inventory is not accounting, procurement or automatic margin.

What this control does — and what stays separate

Bia organizes supplies, service recipes, consumption and calculated replenishment. This page does not promise suppliers, orders, lots, expiry, accounting or automatic cost.

  • Service supplies and products sold at the point of sale use different records and balances.
  • A recipe links active materials to a service and defines quantity per appointment.
  • Valid completion blocks a shortage and never performs a partial deduction.
  • The list shows the difference to the minimum; it does not create an order or make a payment.
  • Physical counting, unit equivalence, lots, expiry and cost remain clinic decisions.

Frequently asked questions

Questions about controlling aesthetic clinic supplies

What is the difference between a product and a supply?

A product belongs to the point-of-sale catalog. A supply is material linked to a service recipe and consumed when a confirmed appointment is completed.

How is quantity calculated?

The editor accepts up to three decimal places and sends integer milliunits. The clinic’s chosen unit is used for balance, minimum and consumption.

What happens when material is insufficient?

Completion returns an insufficient-inventory conflict before updating any supply. Staff must review the balance or recipe; there is no partial deduction.

Does the shopping list place the order?

No. It shows the balance below minimum and the calculated shortage. Supplier, order, timing and payment remain outside the module.

Can a repeated completion deduct inventory twice?

No. Completion uses a lock and a completed marker. A repeated attempt returns the processed appointment without consuming again.

Test inventory with a fictional procedure

Register a supply, build a service recipe and check the replenishment list before using the clinic’s real routine.

Create my account
How to control supply inventory in an aesthetic clinic | Bia