Workshop Module¶
The workshop module extends DiKAS with job order and repair management — ideal for businesses that offer repair services alongside hospitality (e.g., bicycle café, phone repair, locksmith with snack bar).
Activation: Admin → Settings → Operations → Workshop
Job Order Lifecycle¶
A workshop job order goes through 7 statuses:
| Status | Description | Color | Next Steps |
|---|---|---|---|
| New | Job order has been created | Blue | Start, Cancel |
| In Progress | Currently being worked on | Yellow | Pause, Complete, Cancel |
| Paused | Waiting for parts or clarification | Orange | Resume, Cancel |
| Completed | Repair finished | Green | Invoice, Cancel |
| Invoiced | Invoice has been created | Purple | Record payment |
| Paid | Fully completed | Gray | Job order archived |
| Cancelled | Aborted | Red | Reopen |
Status Transitions¶
| From | To | Action |
|---|---|---|
| New | In Progress | Start |
| In Progress | Paused | Pause (e.g., spare part ordered) |
| Paused | In Progress | Resume |
| In Progress / Paused | Completed | Complete |
| Completed | Invoiced | Invoice (invoice is created) |
| Invoiced | Paid | Record payment |
| Any status | Cancelled | Cancel |
| Cancelled / Paid | New | Reopen |
Creating a Job Order¶
In the POS¶
- POS → Workshop → "+ New Job Order"
- Fill in:
| Field | Example | Description |
|---|---|---|
| Customer | Thomas Müller | Optional: select regular customer |
| Fault Description | Gear shift defective, chain skipping | What needs to be repaired? |
| Item | Canyon Roadlite 7.0 | What is being repaired? (model, type) |
| Serial Number | WME12345678 | Serial number / frame number |
| Notes | Key with customer | Internal notes |
| Technician | Max Mechaniker | Assigned employee |
| Estimated Completion Date | 08.03.2026 | Pickup date |
- "Create" → job order is created with a unique number (e.g., WS-0042)
Label Printing¶
After creation, you can print a label (Code128 barcode):
┌──────────────────────────────────┐
│ WS-0042 │
│ ||||||||||||||||||||||||||| │
│ Thomas Müller │
│ Canyon Roadlite 7.0 │
│ Gear shift defective │
│ 05.03.2026 │
└──────────────────────────────────┘
The label is attached to the item being repaired. The barcode can be scanned at the POS to quickly retrieve the job order.
Automatic label printing: Automatic printing upon job order creation can be enabled in the workshop settings.
Editing a Job Order¶
Time Tracking¶
Employees can record work hours for the job order:
- Open job order → "Add time entry"
- Enter start and end time
- Duration is calculated automatically
| Field | Description |
|---|---|
| Start Time | Work start |
| End Time | Work end |
| Duration (Minutes) | Automatically calculated |
Adding Materials¶
Used spare parts and materials:
- Open job order → "Add material"
- Select article from inventory (or enter manually)
- Enter quantity and price
| Field | Description |
|---|---|
| Article | From article master data or free text |
| Article Number | Part number |
| Quantity | Consumed quantity |
| Unit Price | Price per unit |
| Total Price | Quantity × unit price |
| Tax Rate | VAT rate |
Activities¶
Free-text notes on the job order progress:
- "+ Activity" → enter description
- Saved with timestamp
Examples: - "Gear shift disassembled, cable torn" - "Spare part ordered from Shimano (ETA 3 days)" - "Test ride completed, everything in order"
Cost Calculation¶
DiKAS automatically calculates the total costs:
| Item | Calculation |
|---|---|
| Labor | Total minutes × hourly rate / 60 |
| Materials | Sum of all material costs |
| Total Costs | Labor + materials |
Hourly rate: The default hourly rate is configured in the workshop settings (e.g., 45.00 € / hour).
Example¶
Job Order WS-0042: Bicycle Gear Shift
Labor:
05.03. 14:00–15:30 90 min
06.03. 09:00–09:45 45 min
────────────────────────────
Total: 135 min × 45.00 €/h = 101.25 €
Materials:
1× Shift cable 4.50 €
1× Derailleur hanger 12.90 €
2× Cable end cap 0.80 €
────────────────────────────────
Total materials: 18.20 €
══════════════════════════════════
Total costs: 119.45 €
Invoicing¶
When the job order is completed:
- Set status to "Completed"
- Click "Invoice"
- DiKAS creates a customer invoice with:
- Labor (hours × hourly rate)
- Materials (articles × quantity)
- Job order number as reference
- Invoice is linked to the customer
- Job order status changes to "Invoiced"
- Collect payment as usual: cash, card, invoice
How labour appears on the invoice and the cost estimate
Labour appears as a line "Arbeitszeit 45 Min." with the unit "Std." (hours): quantity = hours (e.g. 0.75), unit price = hourly rate. The amount is exactly the same, to the cent, as minutes × hourly rate. If the amount cannot be represented to the cent with an hour quantity (this happens with high hourly rates and odd minute values) or the job order has no hourly rate, labour is shown as 1 "Pauschal" (flat rate) at the amount, with minutes and hourly rate in the text. The amount does not change.
Invoicing Without a Customer¶
Walk-in customers can also be served — without customer master data: - Create job order without customer - Upon invoicing: direct payment at the POS (cash or debit card)
POS View¶
In the POS, you can see all job orders as cards, color-coded by status:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ WS-0042 │ │ WS-0041 │ │ WS-0040 │ │ WS-0039 │
│ In Prog. ⬤ │ │ Paused ⬤ │ │ Completed ⬤ │ │ Paid ⬤ │
│─────────────│ │─────────────│ │─────────────│ │─────────────│
│ Bicycle │ │ Phone │ │ Laptop │ │ Coffee mach.│
│ Gear shift │ │ Display │ │ Battery │ │ Descaling │
│ Müller │ │ Schmidt │ │ Weber │ │ Bakery M. │
│ 05.03.2026 │ │ 04.03.2026 │ │ 03.03.2026 │ │ 01.03.2026 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
Filters: - Filter by status (New, In Progress, Completed, etc.) - Search by customer - Filter by date
Real-time updates: Job orders are synchronized in real time via SignalR — when an employee changes the status, all others see it immediately.
Workshop Settings¶
Admin → Settings → Workshop
| Setting | Description | Default |
|---|---|---|
| Workshop enabled | Module on/off | Off |
| Hourly Rate | Default hourly rate for labor | 45.00 € |
| Job Order Number Prefix | Prefix for job order numbers | "WS" |
| Label Printer | Assigned printer for labels | — |
| Automatic Label Printing | Print label automatically upon creation | No |
| Task Templates | Predefined tasks with default duration | — |
Task Templates¶
Common tasks can be stored as templates:
| Task | Default Duration |
|---|---|
| Bicycle inspection | 45 min |
| Tire change | 15 min |
| Brake adjustment | 20 min |
| Display repair | 60 min |
| Battery replacement | 30 min |
Practical Example: Bicycle Café¶
Situation: Café with an attached bicycle workshop.
- Customer arrives: bicycle has a problem → new job order at the POS
- Print label: attach Code128 barcode to the bicycle
- Mechanic starts: status → "In Progress", time entry begins
- Spare part needed: status → "Paused", activity "Derailleur hanger ordered"
- Part arrived: status → "In Progress", add material
- Repair completed: status → "Completed"
- Customer returns: scan label → job order appears → "Invoice"
- Payment: 119.45 € via debit card → status → "Paid"
- During the wait: customer has coffee → normal POS sale
Next Step¶
→ Time Tracking — Record work hours