Inventory, purchases and operations

This article covers everyday physical inventory: setting up warehouses, receiving goods, controlling lots and expirations, reading movements, and running transfers, stocktakes and the controlled-drugs book.

Getting there

  1. Sidebar menu Pharmacy → any of the module screens.

1. Warehouses

Warehouses are the clinic’s physical or logical storerooms.

Field Description Required?
Name Storeroom name Yes
Type Central, Counter, Operating Room, Hospitalization, Mobile or Other Yes
Responsible Team member in charge (optional) No
Location Physical location (optional) No
Frozen Blocks every entry and exit No
Active Marks the warehouse as active No
Importante

A frozen warehouse rejects receipts, exits, returns, consumption and transfers with a warning. Unfreeze it only when the restriction ends (e.g. quarantine).

2. Purchase receiving

Registers goods entering a warehouse, by lot and expiration date.

Purchase receiving screen in inventory Figure 1. Purchase receiving with lot numbers and expiration dates.

Step by step

  1. In Purchase Receiving press New.
  2. Select the destination Warehouse (required).
  3. Select the Supplier and enter the Document number (invoice / delivery note).
  4. Add lines: Product, Lot number, Expiration date, Purchased quantity and Unit cost.
  5. Press Receive Purchase.

What the system does on receiving

  • Converts the quantity to the base unit using the product factor.
  • If the lot does not exist it creates it; if it exists it adds to that warehouse’s balance.
  • Recalculates the product’s average cost.
  • Records a Purchase in movement (PURCHASE_IN) in the kardex with an idempotency key (it is not duplicated even if you confirm again).
  • If the product is controlled, it generates its folio in the Controlled Drugs Book.

What the system does when receiving a purchase

Figure 2. What the system does when receiving a purchase.

Consejo

Enter the correct Document number: it is part of the traceability and prevents duplicate receipts.

Atención

A lot is identified by product + lot number. Check that you don’t repeat the same lot of the same product across two different invoices unintentionally.

3. Lots

The Lots screen is read-only and shows the traceability of each lot: product, SKU, lot number, expiration, base unit cost, total balance and status.

Lots traceability and statuses Figure 3. Lot traceability catalog with balances and statuses.

Status Color Meaning
Active Green Available
Exhausted Grey Balance reached zero
Expired Red Expiration date passed
Frozen Orange Blocked
  • Expired lots switch to Expired automatically before every inventory operation.
  • When an exit leaves the balance at zero, the lot becomes Exhausted.

4. Kardex

The Kardex is the immutable ledger of every inventory movement.

  • It can be filtered by warehouse and searched by product, warehouse or movement type.
  • Columns: date (DD/MM/YYYY HH:mm), product, warehouse, movement type, lot, base-unit quantity, unit cost and warehouse balance.
  • Movement types: Purchase in, Sale, Clinical consumption, Expiration, Discard, Return in, Sale void, Adjustments (+/-) and Transfers (in/out).

Kardex ledger movements Figure 4. Immutable inventory movements ledger.

Flow of inbound and outbound movements into the kardex

Figure 5. Every inventory movement is recorded in the kardex.

Importante

The kardex cannot be edited or deleted (not even from the database). Errors are corrected with new adjustment movements, never by deleting.

5. Transfers between warehouses

Transfers move stock from an origin to a destination warehouse and follow a state machine: Draft → Dispatched → Received (or Cancelled).

Warehouse inventory transfers Figure 6. Inventory transfers between warehouses.

Transfer state machine

Figure 7. States a warehouse transfer goes through.

Step by step

  1. Create: select the Origin warehouse, Destination warehouse and observations; add the lines choosing the concrete Lot and Quantity to dispatch (only active lots with stock and not expired are shown, ordered by expiration).
  2. Dispatch (row menu action): the system validates available stock and deducts from the origin with TRANSFER_OUT.
  3. Receive: confirm the Received quantity per line. If less than dispatched is received, the difference returns to the origin.
Nota

Only a Draft transfer can be edited or deleted. Once dispatched it can only be received.

6. Stocktakes

Stocktakes run cycle counts per warehouse with blind counting: the system-recorded quantity stays hidden until reconciliation, so the counter is not influenced.

Physical inventory stocktake and reconciliation Figure 8. Cycle stocktaking screen.

Stocktake cycle

Figure 9. Cycle-count flow and the adjustments it generates.

Step by step

  1. Create a stocktake selecting the Warehouse and observations. The system takes a snapshot of the warehouse stock (empty warehouses cannot be counted).
  2. Count (Start count action): enter the Counted quantity for each product/lot.
  3. Reconcile (only when every line has been counted): the system compares counted vs system and generates the adjustments automatically:
    • If you counted less → Adjustment out (ADJUSTMENT_OUT).
    • If you counted more → Adjustment in (ADJUSTMENT_IN).
Consejo

Blind counting works because the system quantity is hidden in the counting dialog. Don’t look it up in another screen before reconciling: it would defeat the purpose.

7. Controlled drugs book

The Controlled Drugs Book is the official log of controlled drugs with a yearly running folio (YEAR-NNNNN).

Official Controlled Drugs logbook Figure 10. Official logbook of controlled drugs movements and folios.

  • It is fed automatically from the kardex: any movement of a controlled product generates a record with folio, before/after balances and the authorizing user.
  • It can be filtered by date range and searched by folio, product, veterinarian or pet.
  • The Print button produces the official report with the clinic name.
Importante

Clinical consumption of a controlled drug requires a veterinarian with a license number; without it the system rejects the operation with a warning.

8. Stock alerts

The Alerts screen shows the expiration and low-stock traffic light for every product with balance, with chip filters: All, Critical, Expiration and Stock.

Expiration traffic light

Level Condition
Expired Date passed
Red Expires in ≤ 30 days
Yellow Expires in ≤ 90 days
Green The rest

Stock traffic light

Level Condition
Below minimum Balance ≤ minimum stock
Reorder Balance ≤ reorder point
OK The rest

Thresholds are configured per product in Products (minimum stock and reorder point). The Print button produces the alert report with the clinic name and date DD/MM/YYYY HH:mm.

What’s next

  • Products: define the categories, units and thresholds that feed these operations.