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, a warning modal appears with a countdown timer 5 minutes before automatic logout. Click "Stay Logged In" to extend your session. If you miss it, you are redirected to the login page — any work in progress that has not been saved is lost.

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 Colours, and you need Colours before you can generate QR codes).

Step 1: Add Models

Configuration > Models & Colours 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 successfully."
"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 Colours per Model

  1. Select a model from the dropdown at the top of the Models & Colours tab.
  2. Click "+ Add Colour".
  3. Enter Name (e.g., "Midnight Blue"), Code (e.g., "02"), and Default Price (MYR).
  4. Click Save.
The colour code becomes part of QR codes. For example, model code "FWB" + colour code "02" produces QR codes like FWB_02_001.
"Cannot delete: This colour has associated watches." — Deactivate the colour instead of 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. Toggle "Has Colour Variants" if this category needs colour options (e.g., straps come in different colours).
  5. Set Reorder Point if you want low-stock alerts for quantity-tracked items in this category.
  6. Click Save.

Step 4: Add Couriers

Configuration > Couriers tab.

  1. Click "+ Add".
  2. Enter Name and Default Shipping 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".
  2. Enter Name (e.g., "Stripe", "PayPal").
  3. Click Save.

Step 6: Add Payment Methods

Configuration > Payment Methods tab.

  1. Click "+ Add".
  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".
  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, and select Role (Admin / Operator / Technician).
  3. Click Save — system creates an authentication account and sends login credentials.
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).

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

3. Generating 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 Colours (for watches) or Categories (for accessories) must already exist in Configuration.

For Watches

Sidebar > QR Generator > Watch QR tab.

  1. Select Model (required).
  2. Select Colour (required) — options filter based on the selected model.
  3. Model Code and Colour 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 color" — Both fields are required.
"Model and color codes are required. Please set them in Admin settings." — The selected model or colour does not have a code configured. Go to Configuration > Models & Colours 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.

For Accessories

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

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/colour 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 Colour (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/colour.
    • If the dropdown is empty, no QR codes exist. Go to QR Generator 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 saved successfully" — Form clears and is ready for the next entry.
"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, Colour, 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, Colour, 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 Colour — only appears if the category supports colour 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 QR Generator > 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, Colour, 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/Colour. Message: "QR [code] - Type/Category/Colour 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 the Inventory QR Generator."
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 courierTracking 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.

Split Shipment (Partial Dispatch)

When an order contains both available items and pre-order items, you can ship the available items immediately without waiting for pre-orders to arrive.

  1. Load the draft order on the Dispatch page.
  2. The system detects pre-order items and allows partial dispatch — only available items are processed.
  3. Click Process Dispatch. The order status becomes "Partially Shipped".
  4. Pre-order items remain in the order with status "Awaiting Stock".
"Partial dispatch processed successfully. Pre-order items will remain pending."
Ship Remaining Items

When pre-order stock arrives and the items are replaced with real inventory:

  1. Go to the Orders page and find the Partially Shipped order.
  2. Click "Ship Remaining".
  3. The Dispatch page loads with only the remaining (previously pre-order) items.
  4. Fill in shipping details and click Process Dispatch.
  5. The order status changes to "Shipped" (displayed as "Completed").
You must replace all pre-order placeholder items with real items (with QR codes) before you can Ship Remaining. The system blocks dispatch if any pre-order placeholders remain.

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.

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
OtherOut - Other
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.

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. If the order also has available items, you can ship those first using split shipment (see Section 7 — Split Shipment).

Editing an Order

  • Click Edit on any Pending, Partially Shipped, 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 has both available and pre-order items → Available items are dispatched. Order becomes "Partially Shipped". Use "Ship Remaining" later (see Section 7 — Split Shipment).
• If the order has only pre-order items → System blocks dispatch: "Cannot dispatch: all items in this order are pre-order."

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 ShippedSome items dispatched, others awaiting stock (pre-order). A "Ship Remaining" button is available.
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. Use "Partially Shipped" to find orders with remaining items to ship. There is no separate "Draft" filter — use "Pending" to find draft orders.
Once an order is shipped (or partially shipped), track delivery in the Delivery Report (Section 17). For partially shipped orders, use "Ship Remaining" from the Orders page when stock arrives. 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, Colour, 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, with QC PASS and In Warehouse status, are shown.
  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 "X day(s) overdue" badge. Filter by Technician.

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". Any fulfilled accessory requests auto-link to the watch.
REJECT → Item stays "In Repair". Must enter Rejection Reason (required). Technician needs to continue work.
"Please enter a fix description."
"Please enter the end date."
"Rejection Reason is required when QC Status is REJECT."
"Repair completed! Item returned to inventory." (+ "X item(s) attached to watch" if accessory requests were fulfilled).

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 → Colour → 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).
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.
Items unlinked with "Wrong Item" or "Not Needed" return to available stock. Items unlinked as "Broken/Damaged" are marked Broken.

Completed Tab

View completed repairs. Filter by time range (Last 30 Days, Last 90 Days, Last 6 Months, This Year, All Time). Export to CSV/Excel/PDF.

Report Tab

Analytics charts: Repair Summary (bar), By Model (donut), By Technician (bar), Monthly Trend. Summary and detail tables. Export to CSV.

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.
"Item linked to watch."

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 → Accessory is marked as Broken and removed from available stock.
  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.
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, Colour, Status, QC Status, Date Range, Search (QR/Phone/Invoice). Click Apply to filter, Clear to reset.

If no results match your filters: "No watches found. Try adjusting your filters."
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, Colour, 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."

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, Colour, 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."
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.

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 → "Are you sure? This cannot be undone."

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, Colour, Group By (Day/Week/Month/Year).

Charts:

  • Model Breakdown (donut)
  • Colour 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 available."

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.

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, Colour, 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, colour, 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 as 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_COLOR_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 - 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 ShipmentWhen dispatching a watch that was previously returned — the system detects this and shows a blue banner with the previous customer's details.
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. Pre-order items can be left in an order during partial dispatch (split shipment).
Split ShipmentDispatching an order in multiple stages. Available items ship first (order becomes "Partially Shipped"), then remaining items ship later via "Ship Remaining" when stock arrives.
Partially ShippedOrder status indicating some items have been dispatched but pre-order items are still awaiting stock. Each item shows its own shipment badge (Shipped, Awaiting Stock, or Pending).
Working DaysBusiness days (excluding weekends). Used for calculating repair target end dates (default: 14 working days from start).