System Defaults
TimezoneAsia/Kuala_Lumpur (MYT, GMT+8)
CurrencyMYR (Malaysian Ringgit)
Date FormatDD/MM/YYYY
Time Format24-hour (e.g., 14:30)

1. Getting Started

First-Time Login

Goal: Access the system for the first time.
  1. Open the system URL in your browser.
  2. Enter your Email and Password.
  3. Click Sign In.
  4. System redirects to the Dashboard.
What can go wrong
"Login failed. Please check your credentials." — Email or password is incorrect. Re-enter carefully. If you have forgotten your password, use the Forgot Password flow below.
"User account is inactive. Please contact administrator." — Your account has been deactivated. Ask your Admin to reactivate it from Configuration > Users.
If you are already logged in on another tab, the system redirects to Dashboard automatically without requiring you to sign in again.

Forgot Password

  1. Click "Forgot Password?" on the login page.
  2. Enter your registered email address.
  3. Click "Send Reset Link".
  4. Check your email inbox for a reset link and follow the instructions.
The reset link expires after a limited time. If it has expired, repeat the process to receive a new link.

Session Timeout

After 30 minutes of inactivity you are logged out. There is no warning and no countdown: a plain browser alert says "Your session has expired after 30 minutes of inactivity", and dismissing it returns you to the login page. There is no way to extend the session — any unsaved work is lost. Save long entries as you go.
The inactivity timer only runs on the Dashboard. On every other page nothing counts down, so sitting on Dispatch or Orders will not log you out on a timer — but it also means the protection you might expect is not there.

Navigation

The sidebar on the left contains all navigation links. What you see depends on your role:

RoleSidebar Sections Visible
AdminEverything, including Configuration.
OperatorEverything except Configuration.
TechnicianDashboard (view only), Watch List (view only), Repairs, and Logout.
  • Sidebar toggle — Click the collapse/expand button. Your preference persists across sessions.
  • Mobile — Tap the hamburger menu icon to open. Swipe left to close.
  • Global search bar — At the top of the sidebar. Searches across watches, accessories, invoices, and QR codes.
  • Alert bell (Admin/Operator only) — Shows overdue repairs and low-stock warnings with an unread badge count.
Explore the Dashboard to see an overview of your inventory. If you are an Admin setting up the system for the first time, proceed to Section 2: System Setup.

2. System Setup (Admin Only) Admin

Goal: Configure the system before operational use.
When: First time setting up the system, or when adding new models, couriers, payment methods, etc.
You must be logged in with an Admin account. Navigate to Sidebar > Configuration.
The setup order matters. Complete these steps in sequence. Later steps depend on earlier ones (e.g., you need Models before you can add Variants, and you need Variants before you can generate QR codes).

Step 1: Add Models

Configuration > Models & Variants tab.

  1. Click "+ Add Model".
  2. Enter Name (e.g., "Forrest Walnut Brown") and Code (short code used in QR codes, e.g., "FWB").
  3. Click Save.
"Model added"
"Failed to add model" — Check your network connection and try again.
"Cannot delete: This model is used by existing watches. Deactivate it instead." — Toggle the model to Inactive rather than deleting it.

Step 2: Add Variants per Model

  1. Open the Models & Variants tab. Each model is listed as its own card — there is no model dropdown.
  2. On the card for the model you want, click its Variant button (the one with the + icon).
  3. Enter Name (e.g., "Midnight Blue"), Code (e.g., "02"), and Default Price (MYR).
  4. Click Save.
The variant code becomes part of QR codes. For example, model code "FWB" + variant code "02" produces QR codes like FWB_02_001.
"Cannot delete: This variant is used by existing watches. Deactivate it instead." — The message tells you the remedy: deactivate the variant rather than deleting it.

Step 3: Add Categories (for Accessories)

Configuration > Categories tab.

  1. Click "+ Add Category".
  2. Enter Name, Code.
  3. Optionally select a Parent category to create a hierarchy (e.g., "Leather Strap" under "Straps").
  4. Variant options are not part of this form. After saving, the category is listed with a "Variants: ON" / "Variants: OFF" button — click it to turn variants on for that category (e.g., straps come in different colours).
  5. There is no Reorder Point on this form. You set it per item when receiving a bulk, quantity-tracked accessory (Section 5), and you can change it later from the Accessories page.
  6. Click Save.

Step 4: Add Couriers

Configuration > Couriers tab.

  1. Click "+ Add Courier".
  2. Enter Name and Default Price (MYR).
  3. Click Save.
A courier whose name contains "Self" (e.g., "Self Collect") is treated as a self-pickup option. When this courier is selected during dispatch, the tracking number field is automatically hidden.

Step 5: Add Payment Providers

Configuration > Providers tab.

  1. Click "+ Add Provider".
  2. Enter Name (e.g., "Stripe", "PayPal").
  3. Click Save.

Step 6: Add Payment Methods

Configuration > Payment Methods tab.

  1. Click "+ Add Payment Method".
  2. Enter Name (e.g., "Credit Card", "Bank Transfer").
  3. Select Fee Type:
Decision: Fee Type
• MDR — Percentage fee (e.g., 1.5%). System auto-calculates gateway fees on each payment. MDR value must be between 0 and 100.
• Flat Rate — Fixed fee per transaction (e.g., RM 1.00). Must be ≥ 0.
• None — No fee applied.
  1. Select Provider (from Step 5).
  2. Click Save.

Step 7: Add Technicians

Configuration > Technicians tab.

  1. Click "+ Add Technician".
  2. Enter Name.
  3. Choose type:
Decision: Registered vs Unregistered
• Registered — Creates a login account for the technician. They can log in and see their repairs. Enter email (required).
• Unregistered — Record-only. Used for external technicians who do not need system access.
"Email is required for registered technicians" — You selected Registered but did not enter an email. Enter the technician's email address.
  1. Click Save.

Step 8: Add Users

Configuration > Users tab.

  1. Click "+ Add User".
  2. Enter Name, Email, a Password (minimum 6 characters), and select Role (Admin / Operator / Technician).
  3. Click Save — the system creates the sign-in account using the password you typed. Nothing is emailed. Hand the password to the person yourself and tell them to change it from Reset Password.
If the email already exists in the authentication system, an error is returned. Use a different email.
You cannot delete your own account. Another Admin must do it.

Reset password: Click Reset next to a user → confirmation dialog → system sends a password reset email to the user.

Audit Log Tab

View all system changes. Filter by Entity Type, Action, User, Date Range. Export to CSV. Click any row to see field-level changes (old → new values).

Adding a Subcategory

A category can be nested under another. You can do this in two ways:

  • While creating a category, pick a Parent Category; or
  • On an existing category's row, click Subcategory — the form opens titled "Add Subcategory to [parent name]" and the parent is already set.

On success you see "Subcategory added". Nesting is what lets Type and Category cascade when receiving an accessory (Section 5).

Once setup is complete, proceed to Section 3: Supply & QR Codes. You need QR codes before you can receive any watches or individually tracked accessories.

3. Supply & QR Codes

Goal: Create QR codes so you can receive watches or accessories.
When: Before receiving any new stock. You cannot register a watch or individual accessory without an available QR code.
Models and Variants (for watches) or Categories (for accessories) must already exist in Configuration.

Factory Orders (Supply Tab)

Sidebar > Supply & QR opens on the Supply tab. For each watch variant it shows how many pre-ordered watches customers are waiting for, how many are free in stock or awaiting QC, how many are on order from the factory and when the next batch is due, and whether there are enough unused QR labels to receive what is coming. The figures are the same as the dashboard's Pre-Orders vs Stock card.

  1. When you order from the factory, click Add Factory Order Admin.
  2. Select the Model and the Ordered On date, and add a Note such as the factory PO number.
  3. Type a quantity for each variant ordered. If the factory ships in lots, click + Add batch and give each batch its own Due date (leave it blank if the factory has not given one).
  4. Click Save. Each variant in each batch becomes its own line under Factory Orders.

Nothing is ticked off by hand: watches received on the Receive page on or after the ordered-on date count as arrived, filling each variant's earliest-due batch first. If a shipment comes short, edit the line and lower the quantity. Use Change date when the factory moves a whole batch, and delete a line only if it was entered by mistake.

When more watches are on order than there are unused labels, the variant shows Make N labels. It opens the Watch QR tab with the model, variant and the first free numbers filled in — change the numbers if the watches come already numbered, then click Generate QR Codes.

For Watches

Sidebar > Supply & QR > Watch QR tab.

  1. Select Model (required).
  2. Select Variant (required) — options filter based on the selected model.
  3. Model Code and Variant Code auto-fill (read-only). If these are blank, codes have not been set.
  4. Enter Start Number and End Number for the range.
  5. Format Preview shows the pattern (e.g., FWB_02_001).
  6. Click Generate QR Codes.
"Generated N QR codes successfully" — A preview card shows the first 50 codes.
"End number must be >= Start number" — End number is smaller than Start number. Correct the range.
"Please select both model and variant" — Both fields are required.
"Model and variant codes are required. Please set them in Admin settings." — The selected model or variant does not have a code configured. Go to Configuration > Models & Variants and set the codes first.
Download PDF Labels

Click the download button on a batch to create a PDF with QR code labels (35 per page in a 5x7 grid). File: qr-labels-[batchid].pdf.

Editing a Batch

You can change the range of an existing batch, but you cannot remove codes that are already assigned to watches.

"Cannot remove codes that are already assigned to watches." — Some codes in the range you are trying to shrink are in use.
Deleting a Batch
Destructive action. Deleting a batch that contains assigned codes will cascade-delete the watches, their orders, repairs, and stock-out records. This is irreversible. A confirmation dialog warns you before proceeding. The delete is refused while any of the batch's watches still carries accessories — the message names them; unlink those first.

For Accessories

Supply & QR > Accessory QR tab. Same flow: select Type > Category > optional Variant. Format uses 4-digit padding (e.g., TYPE_CATG_0001).

Printing the Labels

After a batch is generated, click Download Labels on that batch. The system builds an A4 PDF of the QR labels in your browser and downloads it — nothing is sent to a printer directly, so print the PDF yourself.

Deleting a Batch

A batch can be removed while its codes are still unused. Codes that have already been given to a watch or an accessory are protected: the system refuses with "Cannot remove codes that are already assigned to watches" (or "… to items"), and tells you how many are in use.

Deleting a batch destroys the unused codes in it. Anything already printed on a label for those codes becomes worthless — reprint from the new batch.

Changing a Batch's Range

Edit Batch Range lets you widen or narrow a batch after it was generated. The form shows the Current Range and how many Used Codes it already contains, then takes a New Start Number and New End Number. Extending a range mints the extra codes; narrowing it removes only codes that are still unused, and the same guard as deletion protects anything already assigned.

With QR codes generated, proceed to Section 4: Receiving Watches or Section 5: Receiving Accessories.

4. Receiving Watches

Goal: Register new watches into the system.
When: A shipment of watches arrives and needs to be booked into inventory.
QR codes must already be generated for the model/variant combination (Section 3). At least one QR code must be available (unused).

Sidebar > Receive > Watch tab.

Normal Flow (Single Watch)

  1. Select Model (required).
  2. Select Variant (required) — filters by the selected model.
  3. Date Received (required) — defaults to today. Cannot be a future date.
  4. Select QR Code (required) — dropdown shows available (unused) codes for this model/variant.
    • If the dropdown is empty, no QR codes exist. Go to Supply & QR first (Section 3).
    • Click the refresh button to reload the list. System shows: "QR code list refreshed".
  5. Select QC Status: PENDING (default), PASS, or REJECT.
  6. Enter Remarks (optional unless QC = REJECT).
  7. Click Save Watch.
"Watch created successfully" — Form clears and is ready for the next entry. Editing an existing watch shows "Watch updated successfully" instead.
"Failed to save watch: [error]" — Check all required fields and try again.
"Remarks are required when QC Status is REJECT." — You selected REJECT but left Remarks blank. Describe why the watch failed QC.

Bulk Receive (Multiple Watches)

  1. Fill in Model, Variant, Date Received as above.
  2. Check the Bulk Entry checkbox.
  3. Range selectors appear: select From and To QR codes.
    • Preview shows count: "X items will be created (START to END)".
    • If Start > End, a red warning appears.
  4. Select QC Status (applies to all items in the range).
  5. Click Save Watch.
"Successfully created X watches" — All items in the range were received.
"Created X items, Y failed" — Partial success. Check which QR codes failed (possibly already assigned).
"Failed to create any items" — None of the codes in the range could be used. Verify they exist and are unassigned.

Quick Scan Mode (Rapid Intake)

When: You have a large number of watches to receive quickly and they already have QR labels on them.
  1. Click the Quick Scan Mode button.
  2. A modal opens with a camera feed and statistics (Success / Skipped / Failed counts).
  3. Select QC Status (default PASS) — you can change this anytime during scanning.
  4. Scan QR codes continuously:
    • Code found & available → auto-receives the watch. Green checkmark; success count increases.
    • Code already assigned → "Already received" (grey; skipped count increases).
    • Code not found → "Not found in system" (red; failed count increases).
  5. Close the modal when done.
"Quick scan complete! X item(s) received."

Editing an Existing Watch

Scan or search a QR code that is already assigned → opens in edit mode.

  • Title changes to "Edit Watch".
  • Locked fields (read-only): Model, Variant, QR Code, Date Received.
  • Editable fields: QC Status, Remarks.
  • A Repair & Return History card appears below with:
    • "+ Send to Repair" — opens a repair form (Technician required, Start Date defaults to today, Target End Date auto-calculates 14 working days, Problem optional).
    • "Process Customer Return" — switches to Return tab with QR pre-filled.

Tab Switch Warning

Decision: If you have unsaved changes and switch tabs, the system asks: "You have unsaved changes. Discard and switch?"
• Confirm → Changes are discarded, tab switches.
• Cancel → You stay on the current tab.
After receiving watches, proceed to Section 6: Quality Control to inspect them, or continue receiving more stock.

5. Receiving Accessories

Goal: Register accessories (straps, components, movements) into the system.
When: A shipment of accessories arrives. Accessories can be tracked individually (with QR codes) or by quantity.
For individually tracked items, QR codes must be generated first (Section 3). Categories must exist in Configuration.

Sidebar > Receive > Accessory tab.

Single Item (QR-Tracked)

  1. Select Type (required) — top-level category.
  2. Select Category (required) — filters by Type.
  3. Select Variant — only appears if the category supports variants.
  4. Date Received (required).
  5. Select QR Code (required) — from available codes for this category.
  6. Optional fields: Name, SKU, Location, Selling Price, Description.
  7. "Item arrived broken/damaged" checkbox — auto-sets QC to REJECT and status to Broken.
  8. Click Receive Item.
Status note: Accessories default to "In Stock" status (not "In Warehouse" like watches). This is a different status label but serves the same purpose — the item is available for dispatch and linking.
What can go wrong
"This QR code is for watches. Use the Watch tab." — You scanned a watch QR code on the Accessory tab.
"This QR code is already assigned to: [Name]" — The code is in use. A link is provided to view the existing item.
"Category not found for this QR code batch." — The QR code belongs to a batch whose category no longer exists or has been changed.
If no QR codes are available for this category, generate them first in Supply & QR > Accessory QR tab (Section 3).

Range Entry (Multiple QR-Tracked Items)

  1. Select the "Add multiple items using range (QR tracked)" radio button.
  2. Fill Type, Category, Variant, Date Received as above.
  3. Select From and To QR codes from the dropdowns.
  4. Fill optional fields (Name, SKU, Location, Selling Price) — these apply to all items in the range.
  5. Click Receive Item.
"Successfully created X accessories"

Bulk Quantity Entry

When: You have items tracked by quantity rather than individually (e.g., 50 screws, 20 spring bars).
  1. Select the "Add bulk item (quantity tracked)" radio button.
  2. Fill Type, Category.
  3. Enter Quantity Received and Unit (default "pcs").
  4. Optionally set a Reorder Point — the system triggers low-stock alerts when stock falls to this level.
  5. Fill Name, SKU, Location.
  6. Click Receive Item.
"Bulk item '[Name]' received: X [unit]"

Quick Search

Scan or enter a QR code in the search bar at the top of the tab:

Search result outcomes:
• Found & valid → Auto-fills Type/Category/Variant. Message: "QR [code] - Type/Category/Variant pre-selected."
• Found but already assigned → Opens in edit mode to modify the existing item.
• Not found → "QR code not found. Make sure it was generated in Supply & QR > Accessory QR."
After receiving accessories, proceed to Quality Control (Section 6) or link them to watches (Section 12).

6. Quality Control

Goal: Inspect items and update their QC status before they can be dispatched.
When: After receiving watches or accessories. An item with QC ≠ PASS cannot be dispatched.

QC Status Rules

StatusMeaningRules
PENDINGAwaiting inspectionDefault for newly received items.
PASSApproved for sale/dispatchRequired before dispatching.
REJECTFailed inspectionRemarks are required. Cannot dispatch.
When QC changes to PASS or REJECT, the system automatically records the QC date and the name of the inspector (current user).

Where to Perform QC

During Stock-In (Receive page)

Set QC Status when receiving a watch or accessory. Choose PENDING (default), PASS, or REJECT.

From Watch List (Bulk QC)
  1. Sidebar > Watch List > All Items tab.
  2. Select items via checkboxes.
  3. Click the bulk action dropdown > Bulk Edit QC Status.
  4. Select new QC Status (PASS or REJECT).
  5. If REJECT: enter Remarks (required).
  6. Confirm.
"Successfully updated X item(s)"
"Remarks are required when QC Status is REJECT." — Add a description of why items failed QC.
From Item Profile
  1. Open any item's profile (click on a QR code in any list).
  2. Click the Update QC button.
  3. Select PASS or REJECT, add Remarks if REJECT.
  4. Save.
Dispatch blocking: A watch with QC ≠ PASS cannot be dispatched. The system blocks it with: "Cannot dispatch: QC status is '[status]'. QC must be PASS."
Once items pass QC, they are ready for dispatch (Section 7) or to be linked to orders (Section 9).

7. Dispatching to a Customer

Goal: Send watches/accessories to a customer with full order details.
When: A customer has ordered and paid, and you are ready to ship.
Watch must be "In Warehouse" or "Ready for Delivery" status. Accessory must be "In Stock", "Repaired", or "Return Received" status. QC must be PASS. If the item is an accessory that is Reserved (linked to a watch), unlink it first or dispatch the watch (linked accessories cascade automatically).

Sidebar > Dispatch.

Step 1: Find Item

Select an item from the dropdown or scan its QR code. The system validates the item immediately:

"This watch is marked as BROKEN and cannot be processed for dispatch." — Item is damaged. Repair or replace it first.
"Item status is '[status]'. Only 'In Warehouse' or 'Ready for Delivery' items can be processed." — Item is not available for dispatch.
"Cannot dispatch: QC status is '[status]'. QC must be PASS." — Item has not passed QC. Go to QC first (Section 6).
"This accessory is reserved (linked to a watch). Unlink it first before dispatching independently." — The accessory is attached to a watch. Unlink it from the item profile or dispatch the watch instead (linked accessories dispatch automatically with their watch).
Valid item → Item Details card appears showing item information and repair/return history.

Step 2: Add More Items (Optional)

Click "+ Add Another Item" to add additional watches/accessories to the same dispatch. A running Order Total (MYR) is shown.

"This item is already in the dispatch list." — Duplicate detected.
"Item is no longer available (status: [status])." — Another user changed the item since you searched. Re-search.

Step 3: Select Dispatch Reason

The Dispatch Details form appears. Select Dispatch Reason: "Customer Delivery / Sale".

Step 4: Date and Time

Auto-filled with today's date and current time. Adjust if dispatching for a different date/time.

Step 5: Order Information

Enter the Invoice Number manually, or type a WooCommerce invoice (FW + digits) and click Fetch Order.

Decision: WooCommerce Fetch outcomes
• Success → "Order data loaded from WooCommerce" — auto-fills customer, address, prices, courier, payment method, tracking.
• Format wrong → "Enter an invoice number first (e.g. FW383908)".
• Not found → API error message displayed.
• Payment method not matched → "Payment method '[code]' not matched — pick one on the new payment row." Select manually.
• Courier not matched → "Courier '[name]' not matched — please select manually."
• Duplicate → "Invoice number '[no]' already exists."

Step 6: Customer Details

Fill in: Name (required), Phone, Email, Billing Address, Shipping Address.

Step 7: Payments

Click "+ Add Payment" for each payment tranche.

  • Fill: Remark, Amount (MYR), Shipping, Provider, Method. Mark one row as Primary.
  • "Auto-balance last row" — fills the remaining amount automatically.
"Add at least one payment row."
"Payments total (RM X) must equal items + charges (RM Y)."
"One payment row must be marked Primary."
"Every payment row needs a payment method."
Payment summary: Items subtotal, Shipping, Additional charges, Grand total, Payments total, Gateway fees, Delivery Cost, Net received. Balance indicator: green checkmark (balanced), red (overpaid), yellow (underpaid).

Step 8: Shipping

Select Delivery Method (required).

Decision: Courier type
• Self-pickup courier → Tracking number field is hidden.
• Regular courier → Tracking Number (required) and Delivery Cost (MYR, internal cost to courier) are shown.

Step 9: Additional Charges (Optional)

Click "+ Add Charge" for extras (e.g., engraving, gift wrapping). Enter description and amount.

Step 10: Process Dispatch

  1. Click Process Dispatch.
  2. Confirmation modal shows a summary: items, customer, payments, courier. Review carefully.
  3. Click Confirm.
"Dispatch processed successfully. Reason: Customer Delivery / Sale, Status: Shipped."
What happens behind the scenes
  • Watch status changes to "Shipped".
  • Linked accessories are automatically dispatched with the watch (cascade).
  • Order record created with all payment/charge/shipping details.
  • Ownership history record created for the customer.
  • All changes are audit-logged.

Orders with Pre-Order Items

An order can be built with pre-order placeholders for watches that have not arrived yet. Such an order cannot be shipped in stages — every placeholder must be swapped for a real, QR-coded watch before any of it can be dispatched.

  1. Load the draft order on the Dispatch page. A yellow banner lists what is still a placeholder: "Pre-Order Items (N): [model] [variant]. Replace with real items in the order before dispatch."
  2. In Items in this Dispatch, click Replace on each pre-order row and pick the real watch that arrived. The banner updates as you go and disappears with the last one.
  3. Fill in shipping details and click Process Dispatch. The order status becomes "Shipped" (displayed as "Completed").
"This order still has pre-order items. In 'Items in this Dispatch' above, click Replace on each pre-order row and pick the real watch, then dispatch — an order cannot be shipped in parts." — At least one placeholder is still on the list.
The order stays a Pending draft for as long as any pre-order line remains, and then dispatches once, in full. Nothing is lost by leaving it as a draft until the stock arrives — its items stay Reserved in the meantime.

Return Shipment Detection

If you select a watch that was previously returned, a blue banner appears: "This item was returned by [Customer] on [Date]. Shipping back to the same customer." Customer fields auto-fill and lock. Click "Send to Different Customer" to override and enter new customer details.
Sending a watch back after a repair stays on the same order — it is not a new sale, so no second order is created. The return leg (courier, tracking number, dispatch date and delivery cost) is recorded against that watch's own line in the original order, and the order itself is never altered: it remains the record of what was originally sold and sent. The leg is marked as a return, so later it can be told apart from an ordinary separately-posted item.
If the watch goes back by self-collect, no tracking number is needed and none is asked for.

Concurrency Protection

"Item status has changed to '[status]' since you searched. Please re-search the item." — Another user modified the item between your search and your submit. Re-search to get the current state.
After dispatch, the order appears in Orders (Section 9). Track delivery in the Delivery Report (Section 17).

8. Dispatching for Internal Use

Goal: Send items out for non-sales purposes (photoshoot, marketing, exhibition, loan).
When: A watch needs to leave the warehouse but is not being sold to a customer.
Same as customer dispatch: item must be In Warehouse or Ready for Delivery with QC PASS.

Follow the same dispatch flow as Section 7, but in Step 3, select a different Dispatch Reason:

ReasonItem Status Becomes
PhotoshootOut - Photoshoot
Marketing / PromotionOut - Marketing
Exhibition / DisplayOut - Exhibition
Loan / BorrowingOut - Loan
GiftOut - Gift
OtherOut - Other

Gift Dispatch

Choosing Gift replaces the customer fields with a short gift form:

  • Recipient Name — required. Leaving it blank stops the dispatch with "Recipient Name is required".
  • Relationship — optional: Staff, Influencer, Business Partner, VIP Customer, Other.
  • Contact Number — optional.
  • Occasion — optional free text, e.g. Birthday, Appreciation, Collaboration.

The watch's status becomes Out - Gift. No customer record is created and no order is raised — a gift is not a sale, so it never appears in Sales Analytics.

An additional reason, "External Repair", is used when sending a watch to an external repair service. The item status becomes "In Repair" and a stockout record is created with reason repair_external.

Instead of customer and payment fields, the form shows:

  • Assigned To (Staff Name, required).
  • Department/Team.
  • Contact Number.
  • Location/Venue.
  • Purpose/Event Name.
  • Expected Return Date — important for tracking when items should come back.

Click Process Dispatch → confirmation → success.

Bringing an Internally Dispatched Item Back

A watch sent out for a photoshoot, exhibition, loan, gift or marketing use comes back through the Watch List, not the Receive page:

  1. Sidebar > Watch List > Dispatches tab.
  2. Find the dispatch and open it.
  3. Enter the Return Date and any Return Remarks.
  4. Click Confirm Return.

The dispatch is marked returned and the watch goes back to In Warehouse, ready to sell or dispatch again.

This is separate from a customer return (Section 10). Use this one for items that never left on an order — nothing here touches an order, a customer or ownership.
Track dispatched items in the Watch List > Dispatches tab (Section 13). Process returns in Section 10 when items come back.

9. Creating & Managing Orders

Goal: View, create, and manage customer orders.
When: Tracking all orders across their lifecycle, or creating draft orders before dispatch.

Sidebar > Orders.

Viewing Orders

  1. Filter by Status (All / Pending / Completed / Returned), Date Range.
  2. Click Apply. Click Clear to reset.
  3. Click any order row → Order Details modal with full information.

Creating a Draft Order

  1. Click "+ Create Order".
  2. Add items (watches, accessories, or pre-order placeholders).
    • Each added item is immediately Reserved in the system.
  3. Fill customer details, payments, charges.
  4. Click Save → draft created in "Pending" status.
"Duplicate item detected." — You tried to add the same item twice.
Pre-order items are placeholders. They must be replaced with real items (with QR codes) before the order can be dispatched — including when the order also holds items that are in stock, because an order ships once, in full (see Section 7 — Orders with Pre-Order Items).

Editing an Order

  • Click Edit on any Pending or Completed order.
  • You can modify customer, payments, charges, add or remove items.
  • Removing an item releases it back to available stock (confirmation required).
"Returned orders cannot be edited." — Orders that have been returned are locked.

Completing a Draft (Dispatching)

From the Orders page or via the Dispatch page with a draft order ID.

Decision: Pre-order items
• If the order has only available items → All items are dispatched. Order becomes "Shipped".
• If the order still holds any pre-order line → System blocks dispatch. Replace every placeholder on the Dispatch page first (see Section 7 — Orders with Pre-Order Items), then dispatch the whole order at once.

Fill shipping details, finalize payments, and confirm to dispatch.

Deleting a Draft

Confirmation: "Delete this draft order? All reserved items will be released back to available stock."
• Confirm → Draft deleted, all reserved items return to their previous status.
• Cancel → No change.

Order Statuses

DB StatusDisplayed AsMeaning
PendingDraft (Pending)Draft order created but not yet dispatched. Items are reserved.
Partially ShippedPartially ShippedNot a real status. The database permits only Pending, Shipped and Returned, so no order has ever held this value. The filter option and the "Ship Remaining" button are leftovers of a dropped design and match nothing.
ShippedCompletedAll items dispatched to customer. The UI displays both "Shipped" and "Completed" as "Completed".
ReturnedReturnedAll items returned. Order is locked and cannot be edited.
The Orders filter dropdown shows "Completed" which matches both "Shipped" and "Completed" statuses in the database. The "Partially Shipped" option matches nothing (see the table above). There is no separate "Draft" filter — use "Pending" to find draft orders.

Deleting a Draft Order

Open a Pending order and click Delete Draft. You are asked to confirm, because the items on the draft are currently Reserved and deleting it releases them: each watch returns to In Warehouse and each accessory to In Stock, free to sell to somebody else.

The button only appears on a draft you are editing. A Shipped order cannot be deleted from here — that is deliberate, because it is the record of a real sale.
Once an order is shipped, track delivery in the Delivery Report (Section 17). Process returns in Section 10.

10. Processing Returns

Goal: Process watches coming back from customers or internal use.
When: A customer returns a watch, or an item returns from a photoshoot/exhibition/loan.

Sidebar > Receive > Return tab.

Step 1: Select Return Type

Decision: Return Type
• Customer Return — Watch returning from a customer order. Must currently be in "Shipped" status.
• Internal Return — Watch returning from internal use (photoshoot, loan, exhibition, etc.). Cannot be "In Warehouse" already.
"Customer returns require status Shipped." — The item is not in Shipped status. Check you have the right QR code.
"This watch has no associated order. Use Internal Return instead." — Switch to Internal Return.
"Watch is already in warehouse." — The item is already in stock. No return needed.

Step 2: Scan QR Code

Scan or enter the watch QR code. System shows an item summary: Model, Variant, QR Code, Status, QC Status, Customer, Order/Invoice.

"QR code not found in system: [code]." — Verify the code is correct and exists in the system.

Step 3: Choose Return Action

Decision: What should happen to the returned item?

Option A — Send to Repair
The item needs servicing before it can go back into stock or be re-shipped.

Option B — Return to Warehouse
The item is fine and goes straight back into available stock.

Option C — Replace Watch
The customer receives a replacement; the returned item is either scrapped (Broken) or returned to warehouse (Good condition).
Option A: Send to Repair
  1. Select Technician (required).
  2. Start Date defaults to today.
  3. Target End Date auto-calculates (start + 14 working days).
  4. Enter Problem Description (required).
  5. Click Process Return.
"Please select a technician for the repair."
"Please describe the problem for the repair."
Item status → "In Repair". QC resets to "PENDING". Outstanding dispatch records auto-closed. Linked accessories cascade back to "Reserved".
Option B: Return to Warehouse

Simple return, no repair needed. Click Process Return.

Item status → "In Warehouse". QC set to "PASS". Linked accessories cascade back to "Reserved".
Option C: Replace Watch
  1. Select Replacement Watch from the dropdown (required). Only watches of the same model AND the same variant, with QC PASS and In Warehouse status, are shown (the watch being replaced is itself excluded). If the dropdown looks empty, a different variant of the same model will not appear — that is the variant filter, not a missing watch.
  2. Choose condition of the returned watch:
Decision: Condition of returned watch
• Broken → Returned watch status → "Broken", QC → "REJECT". Replacement → "Shipped" to customer. Minimal dispatch record created.
• Good condition → Returned watch status → "In Warehouse", QC → "PASS". Replacement → "Shipped". Full dispatch details required: Delivery Method (required), Shipping Address, Tracking Number, Delivery Cost, Dispatch Date.
"No replacement watches available for this model." — No same-model watches with QC PASS are in warehouse. Receive more stock or use a different return action.
"Please select a courier for the replacement dispatch." — Delivery method is required for good-condition replacements.
  1. Click Process Return.
Ownership transfers to the replacement watch. Linked accessories transfer to the replacement.
"Replacement assigned but accessory transfer failed. Please re-link accessories manually from the item profile." — This is a non-blocking warning. The replacement went through, but accessories need manual re-linking.

Optional: Return Reason

Describe why the customer returned the item. This is recorded for reporting purposes.

If the item was sent to repair, manage it in Section 11: Managing Repairs. If returned to warehouse, it is immediately available for re-dispatch.

11. Managing Repairs

Goal: Track and manage repair jobs from start to completion.
When: A watch has been sent to a technician for servicing.

Sidebar > Repairs.

Active Repairs Tab

Shows all current repairs as cards. Each card displays: item info, technician, dates, problem, status badge. Overdue repairs show a red "OVERDUE 3d"-style badge (the number is days past the target end date). Filter by Technician.

Arriving from a watch's Item Profile via Open in Repairs shows just that one repair, with a banner naming the watch. Click Show all active repairs in the banner to go back to the full list.
Starting a Repair

Repairs can be started from the Receive page (during a return) or from an Item Profile. The form requires:

  • Technician (required).
  • Start Date (defaults to today).
  • Target End Date (auto-calculates: start + 14 working days).
  • Problem Description.
Item status → "In Repair". QC → "PENDING".
Updating a Repair

Click Update on a repair card. Change technician, target date, problem, or remarks.

"Repair updated successfully."
Completing a Repair
  1. Click "Complete Repair" on a card.
  2. Modal shows repair information.
  3. Enter Fix Description (required).
  4. Enter End Date (required, defaults to today).
  5. Select QC Status: PASS or REJECT.
Decision: QC Status on completion
• PASS → Item returns to "In Warehouse". Accessories fulfilled for the repair were already linked to the watch when they were issued.
• REJECT → The repair is closed either way. The item returns to "In Warehouse" but is tagged QC REJECT, which blocks it from being dispatched. Must enter Rejection Reason (required). The watch does not stay in the technician's queue — to work on it again, raise a new repair from the Watch List.
A rejected watch is nobody's job until you give it one. It sits in the warehouse, unsellable, with no open repair against it. Raise the new repair straight away, or it will not appear on anyone's queue.
"Please enter a fix description."
"Please enter the end date."
"Rejection Reason is required when QC Result is REJECT"
"Repair completed! Item returned to inventory."

Requesting Accessories for Repair

When: A technician needs parts (e.g., new strap, replacement movement) to complete a repair.
  1. On a repair card, click "Request Accessory".
  2. Select Type → Category → Variant → Item from cascading dropdowns.
  3. Enter Quantity (min 1; for individual items, locked to 1).
  4. Optional Remarks.
  5. Click Submit.
"Accessory request submitted."

Fulfilling Requests Admin Operator

Pending Requests tab shows all accessory requests from technicians.

Decision: Fulfill or Reject
• Fulfill — If stock is sufficient → "Request fulfilled - item linked to watch." If insufficient → "Insufficient stock. Available: X" (button disabled). If the watch already carries that accessory (its packaging, for instance) → "This watch already carries …" and nothing is issued: unlink the old one on the watch's page first (reason Broken if the part is being replaced).
• Reject — Enter optional rejection reason → "Request rejected."
Unlinking a Fulfilled Item

If the wrong item was linked, click Unlink on the request.

  1. Select reason: "Wrong Item - Return to Stock", "Not Needed - Return to Stock", or "Broken/Damaged - Remove from Stock".
  2. Enter optional notes.
  3. Confirm.
"Please select a reason" — You must choose a reason before unlinking.
"Wrong Item" and "Not Needed" put the part back: an individually-tracked accessory returns to "In Stock", and a quantity-tracked one is credited back to its stock count. "Broken/Damaged" does not. An individually-tracked accessory is marked Broken; a quantity-tracked one was consumed when the request was fulfilled, so its count stays down, nothing is credited back, and the row is not marked Broken — the unit is simply gone. That is deliberate: crediting a broken unit would overstate what is on the shelf.

Completed Tab

Every completed repair. The default is All Time, so nothing is hidden from you. Narrow it with the preset buttons — Today, Last 7 Days, Last 30 Days, This Month, This Year, All Time — or type an exact Completed From / Completed To range. Filter further by Technician and QC Status (PASS, REJECT, PENDING). Reset puts everything back to All Time. Export to CSV/Excel/PDF; the export follows whatever you have filtered.

Until 7 September 2026 this tab always showed only the last 30 days and gave you no way to change it, so anything older simply was not listed and nothing on screen said why. If you remember completed repairs "disappearing", that was this.

Report Tab

Two tables. Summary by Model gives total repairs, QC rejected, completed and in progress per model. Breakdown by Variant gives repairs and QC rejected per model and variant. Export to CSV.

Filter with the same preset buttons plus Started From / Started To, Technician and Status. A line under the filters reads "N of M repairs match these filters", so a partial figure is never silent.

This tab is dated by start date, not end date. A repair still in progress has no end date, and the summary counts in-progress work — dating it by end date would drop every open repair from its own report.

Status Board

Visual overview: technician cards showing current workload. Overdue items are highlighted for quick identification.

Once a repair is completed with QC PASS, the item returns to "In Warehouse" and is ready for dispatch (Section 7) or re-assignment.

12. Working with Accessories (Linking, Unlinking)

Goal: Attach accessories to watches so they ship together, or detach them when needed.
When: Including a strap, box, or other accessory with a watch before dispatch.

Linking an Accessory to a Watch

From the Accessories page (Linked or Not Linked tab), or from a watch's Item Profile.

  1. Click "Link to Watch" on an accessory.
  2. Search/select a watch — only watches with QC PASS, In Warehouse or Ready for Delivery, and compatible model are shown.
  3. Confirm.
"Linked to watch successfully"

Unlinking an Accessory

  1. Click Unlink on a linked accessory.
  2. Select reason:
Decision: Unlink reason
• Wrong Item → Accessory returns to available stock.
• Not Needed → Accessory returns to available stock.
• Broken → An individually-tracked accessory is marked Broken and removed from available stock. A quantity-tracked one is simply consumed: its stock count stays down and nothing is credited back, because the unit left the count when it was linked.
  1. Confirm.

Automatic Cascade Behaviour

These happen automatically — no manual action needed:
• When a watch is dispatched, all linked accessories are automatically dispatched with it.
• When a watch returns, linked accessories cascade back to "Reserved" status.
• When a replacement watch is assigned during a return, accessories transfer to the replacement watch.

Linking One Accessory to a Range of Watches

A bulk (quantity-tracked) accessory can be attached to many watches in one pass — useful when a whole intake needs the same strap or box.

  1. Start the link as above, then set Link Mode to Range of Watches instead of Single Watch.
  2. Choose From Watch and To Watch. Every watch between them, in QR-code order, is included.
  3. Set Quantity per Watch. The form shows how many units are available, and the total taken is quantity multiplied by the number of watches in the range.
  4. Confirm.
Watches in the range that already carry this accessory are skipped rather than double-linked, so re-running a range is safe. The preview tells you how many watches will actually be affected before you confirm.
View linked accessories for any watch in the Item Profile > Linked Items tab (Section 15).

13. Browsing Watch Inventory

Goal: Find, filter, and manage watches across the inventory.
When: Looking for a specific watch, checking stock levels, performing bulk operations.

Sidebar > Watch List.

All Items Tab

Filters: Model, Variant, Status, QC Status, Date Range, Search (QR/Phone/Invoice). Click Apply to filter, Clear to reset.

If no results match your filters the table shows "No records found" (or "No items found", depending on the tab).
Bulk Actions

Select items via checkboxes, then use the bulk action dropdown:

ActionWhat It DoesConfirmation
Bulk Reset to WarehouseResets selected items to "In Warehouse" status."Reset X watch(es) to 'In Warehouse'?" Auto-returns active stockout records.
Bulk Edit QCChanges QC status for all selected items.Select PASS/REJECT. Remarks required if REJECT.
Bulk DeletePermanently deletes selected watches.Warning shown. Blocked if item has active relationships, stockouts, pending orders, or repairs. Frees QR codes for reuse. Irreversible.
Bulk Set LocationSets storage location for all selected items."Set location to '[location]' for X watch(es)?"
Individual Actions
  • Mark Broken — Click on any item → "Mark this watch as Broken?" → status changes, removed from available stock.
  • View Profile — Opens the Item Profile page (Section 15).
Export

CSV and Excel buttons export data with current filters applied.

Other Tabs

TabShows
ReceivedRecently stocked-in watches by date range.
DispatchesItems sent out with dispatch reason, status (Out/Returned), expected return date. Badge shows active count.
ReturnedItems received back with return details.

14. Browsing Accessory Inventory

Goal: Find, filter, and manage accessories across the inventory.
When: Looking for a specific accessory, checking stock, linking items to watches.

Sidebar > Accessories.

All Items Tab

Filters: Type, Category, Variant, Status, Tracking Type (Individual/Quantity), Search, Date Range.

Individual items show a QR code; quantity-tracked items show a stock count.

Tabs

TabShows
ReceivedRecently received accessories.
DispatchesDispatched accessories.
LinkedAccessories currently linked to watches. Shows which watch each is attached to.
Not LinkedAvailable accessories not attached to any watch. Can be linked from here.

Bulk actions and export work the same as Watch List (Section 13).

Send to Repair from List

Select an accessory and use the "Send to Repair" action. Technician (required) and Problem (required) must be provided.

"Repair started."

Printing Accessory Labels

Every row has a Print Label action for a single item. To do several at once, tick the items and use Print Labels in the bulk bar — the count in the button is how many are selected.

Bulk Actions

Ticking items reveals a bulk bar. From it you can:

Bulk delete cannot be undone, and it does not ask item by item. Check the count in the button before confirming — it is the number that will be destroyed.

Copying a QR Code

Copy QR Code puts the code on your clipboard, so you can paste it into the Dispatch or Receive search instead of retyping it. You will see "copied to clipboard" when it works.

15. Viewing Item Profiles

Goal: See complete details and history for any single item.
When: You need full information about a specific watch or accessory — its current state, history, repairs, linked items, and orders.

Click any QR code or item name in any list → opens the Item Profile page.

Watch Profile Tabs

TabContent
OverviewModel, Variant, Status, QC Status, Date Received, Location, Customer, QR Code.
TimelineChronological history of all events (stock-in, QC, dispatch, repair, return). Empty → "No timeline entries."
RepairsAll repair records for this watch. Empty → "No repairs." A repair still In Progress carries an Open in Repairs button that takes you straight to it on the Repairs page (Section 11), already filtered to that one repair.
Linked ItemsAccessories attached to this watch. Can link/unlink from here.
Orders & DispatchesEvery order this watch has been part of.

Accessory Profile Tabs

TabContent
OverviewName, SKU, Category, Type, Status, Tracking Type, Quantity, Location.
TimelineAll events for this item.
Linked WatchesWatches this accessory is linked to.
Transaction HistoryStock in/out, adjustments, returns, transfers.

Quick Actions from Profile

Depending on the item's current state, the following actions are available:

  • Edit Item — Modify editable fields.
  • Send to Repair — Opens repair form.
  • Mark as Broken — Changes status to Broken.
  • Change Status — Update item status.
  • Update QC — Change QC status.

Recording an Owner by Hand Admin

Ownership is normally written for you when a watch is dispatched to a customer. An Admin can also record one directly — for a sale made before the system existed, or to correct a mistake:

  1. Open the watch's profile and go to Ownership History.
  2. Click Add New Owner. The button is only shown to Admins.
  3. Type the Name. Matching customers are suggested as you type — pick one to reuse their record instead of creating a duplicate.
  4. Fill Phone, Email and Shipping Address if this is a new customer.
  5. Set the Acquired Date (defaults to today) and choose an Acquisition Method: Purchased from Store, Purchased from Previous Owner, Gift, Warranty Replacement, or Other.
  6. Optionally attach the Order this ownership came from.
  7. Save.
This writes history only — it does not move stock, raise an order or take payment. Use Dispatch (Section 7) for an actual sale.

An existing entry can be corrected too: an Admin sees an edit action on each row of Ownership History, which reopens the same fields — Name, Phone, Email, Shipping Address, Acquired Date and Acquisition Method — as Edit Ownership Record. Operators and Technicians see the history but cannot add or change it.

16. Managing Customers

Goal: Add, edit, or remove customer records.
When: A new customer places an order, or you need to update existing customer information.

Sidebar > Customers.

Adding a Customer

  1. Click "+ Add Customer".
  2. Enter Name (required), Phone, Email (validated format), Address.
  3. Click Save.
"Customer added."
Invalid email format → Validation error shown. Correct the email and try again.

Editing a Customer

Click the edit action on a customer row → modify fields → Save.

"Customer updated."

Deleting a Customer

Click the delete action → a confirmation naming what you are deleting, e.g. "Are you sure you want to delete this category?"

If the customer has active orders, deletion is blocked. Resolve or complete the orders first.
Ownership history records for this customer are cascade-deleted.

Invoice Badges

Each customer row shows invoice badges for their orders. Click a badge → navigates to the order details for that invoice.

17. Reports

Sales Analytics

Goal: Analyse sales performance across time periods, models, and payment methods.

Sidebar > Sales Analytics.

Filters: Date range presets (All Time, This Month, Last 7/30 Days, This Year, Custom), Item Type, Model, Variant, Group By (Day/Week/Month/Year).

Charts:

  • Model Breakdown (donut)
  • Variant Breakdown (donut)
  • Period Sales (bar/line)
  • Payment Method (donut)
  • Net Received vs Fees (bar)
Click a period in the chart → drill-down modal showing individual orders for that period.
Empty state: "No sales data for the selected period".

Delivery Report

Goal: Track delivery performance and shipping costs.

Sidebar > Delivery Report.

Filters: Date presets, Item Type, Model, Courier, Status.

Charts: Delivery Method split, Courier Performance, Delivery Cost ranges, Cost vs Fees.

Monthly table: Click "Details" for item-level breakdown. Download CSV per month.

Movements table: All dispatched items with status, tracking, replacements. Broken items highlighted in red. Returned items show return badge and reason.

Orders that came back in full are included. Once every line of an order is returned the order's status becomes "Returned", and such orders used to drop out of this report entirely — taking with them the postage you had actually paid to send them. Returning goods does not un-spend the delivery cost, so it is still reported, along with the cost of posting the item back after a repair.

Ownership History

Goal: View the chain of custody for watches — who owned what and when.

Sidebar > Ownership History.

Filters: Date range, Customer, Acquisition Method, Model, "Show current owners only" checkbox.

Table columns: QR Code (linked to profile), Model, Variant, Customer, Date From/To, Acquisition Method, Status (Current/Previous Owner).

Export to CSV.

18. Dashboard

Goal: Get a real-time overview of all inventory operations at a glance.
When: This is your landing page after login. Use it to check KPIs, spot issues, and drill into activity.

Sidebar > Dashboard (landing page after login).

Always-Live KPI Cards

Four cards at the top, updated in real time:

CardShowsNote
Total StockWatches + Accessories countAdmin/Operator only
On-HandIn Warehouse + ReservedAll roles
Pending QCItems awaiting QCYellow highlight if > 10
In RepairItems being servicedAll roles

Inventory Health (Live — Not Date-Filtered)

  • Watch Status Breakdown — Stacked bar chart.
  • Inline KPIs — In Warehouse, Reserved, Watches Broken, Accessories Broken.
  • QC Readiness — Donut chart (Pending/Pass/Reject).
  • Accessories by Category — Bar chart.

Period Activity (Date-Filtered)

Date filter presets: All Time, Today, This Week, This Month, Last 30 Days, This Year, Custom. All sections below update when you change the filter.

Pipeline Funnel

Received → QC Passed → Dispatched → Returned with counts and conversion percentages.

Stock-In
  • Items Received by Model (bar)
  • Received Over Time (line)
  • QC Outcome (donut)
Dispatch
  • Delivery Method split (Courier vs Self-Collect)
  • By Courier (bar)
  • Pending Orders count (highlighted if > 0)
Repair (Live)
  • Status bar (Completed / In Progress / Overdue)
  • By Technician (bar)
  • Top 5 Overdue Repairs with days overdue
Returns
  • Return Rate %
  • QC Status bar (Pending / Passed / Rejected)
  • By Model (bar)
  • Return Rate Trend (weekly)
Recent Activity

Last 10 audit log entries showing user, action, entity, and timestamp.

Real-time updates: The Dashboard auto-refreshes when data changes (item, repair, order, stockout tables). No manual refresh needed.

19. Global Search & Alerts

Global Search

Available on every page via the search bar in the sidebar.
  1. Type a search term and press Enter.
  2. The system searches across: watches (QR, model, variant, remarks), accessories (name, SKU, QR), invoices (invoice#, tracking#, WooCommerce ID), QR codes.
  3. Flexible matching: "FWB01001" matches "FWB_01_001".
  4. Results appear in a modal grouped by type.
  5. Click a result → navigates to item profile or order.
Keyboard Navigation
KeyAction
Arrow Up / DownNavigate through results
EnterOpen selected result
EscClose the search modal

Alert Centre Admin Operator

Bell icon in the sidebar header. Badge shows unread count.

Alert Types
AlertSeverityCondition
Overdue RepairsCriticalMore than 7 days overdue
Overdue RepairsWarning3–7 days overdue
Overdue RepairsInfoLess than 3 days overdue
Out of StockCriticalQuantity-tracked item has 0 stock
Low StockWarningQuantity at or below reorder point
Managing Alerts
  • Click an alert to mark it as read.
  • Dismiss individual alerts or use "Mark all read".
  • Alerts auto-resolve when the underlying issue is fixed (repair completed, stock replenished).

Toast Notifications

Brief messages in the bottom-right corner of the screen:

TypeColourDurationUsage
SuccessGreen5sOperation completed successfully
ErrorRed8sOperation failed — longer display for reading
WarningOrange5sPotential issue or caution
InfoBlue5sGeneral information

20. Glossary

TermDefinition
QR CodeUnique identifier assigned to each watch or individual accessory, in the format MODEL_VARIANT_NUMBER (e.g., FWB_02_001).
QC StatusQuality Control status: PENDING (awaiting inspection), PASS (approved for dispatch), REJECT (failed — requires remarks, cannot dispatch).
In WarehouseWatch status. Watch is in stock and available for dispatch or linking. (Note: accessories use "In Stock" instead of "In Warehouse".)
In StockAccessory status. Accessory is in stock and available for dispatch or linking. Equivalent of "In Warehouse" for watches.
ReservedItem is set aside — linked to an order or attached to a watch — but not yet dispatched.
Ready for DeliveryItem has been prepared for shipment but not yet dispatched.
ShippedItem has been dispatched to a customer or external location.
DispatchedSame as Shipped — item sent out of the warehouse.
In RepairItem is currently being serviced by a technician.
BrokenItem is damaged or defective. Removed from available stock.
Out - [Reason]Item dispatched for internal use: Out - Photoshoot, Out - Marketing, Out - Exhibition, Out - Loan, Out - Gift, Out - Other.
OverdueA repair that has passed its target end date without being completed.
Invoice NumberOrder reference number. WooCommerce invoices use the format FW + digits (e.g., FW383908).
MDRMerchant Discount Rate — percentage fee charged by the payment provider for processing a transaction.
Delivery CostThe actual cost paid to the courier (internal cost, not customer-facing).
Shipping PriceThe shipping amount charged to the customer.
Gateway FeeFee charged by the payment gateway/provider for processing the payment. Calculated automatically based on MDR or flat rate.
Reorder PointQuantity threshold below which a low-stock alert is triggered for quantity-tracked accessories.
Tracking TypeHow an inventory item is tracked: "Individual" (each has a QR code) or "Quantity" (tracked by count, no QR codes).
ProviderPayment service provider (e.g., Stripe, PayPal, bank).
Linked ItemsAccessories attached to or included with a watch. They dispatch and return together automatically.
Ownership HistoryChain-of-custody record showing every customer who owned a watch, with dates and acquisition method.
Return ShipmentDispatching a watch that was previously returned. The system detects it and shows a blue banner with the previous customer's details. It goes back on the same order — the return leg is recorded on that watch's own order line and the original order is left untouched. No second order is created.
CascadeAutomatic propagation of status changes. For example, dispatching a watch automatically dispatches its linked accessories.
Pre-orderA placeholder item in a draft order, representing a watch or accessory that has not yet been assigned a specific QR code. Every pre-order line must be replaced with a real, QR-coded item before the order can be dispatched.
Split ShipmentDispatching an order in stages. Not supported: an order ships once, in full, and every pre-order line must be replaced with a real item first (Section 7).
Partially ShippedA status the system cannot write — the database permits only Pending, Shipped and Returned. Filters and buttons that still mention it are leftovers and match nothing.
Working DaysBusiness days (excluding weekends). Used for calculating repair target end dates (default: 14 working days from start).