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
Add-on "Machine park": if you look after your customers' chainsaws, mowers or bicycles over the years, book the Machine park module in addition to the workshop: a device file per customer with serial-number scan, warranty and history. → Machine park: the device file for each customer
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 |
| Machine | Stihl MS 261 | Only with the Machine park module: selects a machine of the customer; model and serial number are copied from it |
| 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"
Machine park: the device file for each customer¶
If you repair chainsaws, lawn mowers, robotic mowers or bicycles, you see the same devices again and again. The machine park keeps one file per device for each customer: model, serial number, purchase date, warranty and a history of every repair and note. At the counter, scanning the serial number is enough to bring the file up.
Getting the module¶
The machine park is an add-on to the workshop module and needs its licence. You book it in addition to the workshop. Afterwards the customer gets a "Machine park" tab, the workshop settings get a tab of the same name, and the workshop page gets the scan entry. Without the module the workshop keeps the free-text fields "Item" and "Serial Number" described above. If you switch the module off later, the recorded machines stay saved; they are just no longer shown.
What a machine card contains¶
| Item | Meaning |
|---|---|
| Note | Shown at the very top of the card, e.g. "Customer wants a call-back before any repair over 100 €". |
| Model | Required. |
| Serial number | Required. Each number exists only once per business; spaces at the edges and upper/lower case do not matter. |
| Purchase date | When the customer bought the device. |
| Warranty period (months) | Shown as "until" with the end date. Once the warranty has expired, the date is shown in red with the word "expired". |
| More details | Your own custom fields, e.g. "Chassis number" or "Cutting length" (see Settings). |
| History | All notes, notices and system entries for this machine, newest first. |
The list in the customer tab shows Device, Serial number, Purchased, Warranty until and Last service for each machine. "Last service" is the day an order for this machine was last marked completed. Use the search field to find a machine by model or serial number.
Adding a machine¶
- Admin → Customers, open the customer, tab "Machine park".
- "Add machine" (for the first device: "Add the first machine").
- Enter model and serial number. Everything else, such as purchase date, warranty and custom fields, can be added later.
- Save.
If the serial number already belongs to another machine, DiKAS refuses it ("This serial number already belongs to another machine.") and offers "Go to the existing machine".
You can also add machines from the call pop-up and at the counter (see below).
The history: append only¶
Below the card is the History. Entries cannot be changed or deleted, so the story of the machine stays traceable.
- "+ Note" adds an entry. As type, choose Note or Notice. Enter saves, Shift+Enter starts a new line. Entries marked "Management only" are visible to management only.
- Correction: if an entry is wrong, write a new one. It points to the earlier entry ("Correction of an earlier entry"); the old one stays.
- System entries are written by DiKAS itself, type "System": on creation, on every change to a device detail (e.g. "Garantie: 24 → 36"), on a change of owner and when an order is marked completed, with the work, parts and time of that order.
Scanning a machine at the counter¶
On the workshop page (POS → Workshop) scan the barcode, usually the serial number, into the search field. A barcode reader sends Enter at the end; if you type the number by hand, press Enter.
- Known number: the machine card opens above all other results (status tabs and orders). You see the note and history before deciding anything. "+ Work order" creates an order at once, with customer and machine already filled in.
- Unknown number: "Record machine" opens with the scanned number. Choose the customer (search or "New customer"), enter the model and save with "Add machine". "Create + work order" also creates the order in one step. A machine cannot be added without a customer.
Enter without a match
DiKAS first treats everything you confirm with Enter in the workshop search as a serial number. If you typed a customer name instead and no machine matches, "Record machine" appears. This is harmless: close it with "Close".
A work order for the machine¶
The order dialog has a "Machine" field. Only machines of the selected customer are offered, or "No machine". Model and serial number are copied into the order. If you come from the machine card, the scan or the call pop-up, the machine is already filled in.
In the order itself you can change or remove the machine until it is marked completed; "Open machine file" unfolds the file there. Once the order is marked completed, the assignment can no longer be changed. Marking completed automatically adds an entry to the machine's history. The workshop search also finds orders by the machine's serial number.
The order keeps its state
Model and serial number in the order are the state at the time of assignment. If you change them on the machine later, the order still shows the old state; the change is recorded in the machine's history.
Change owner¶
When a device changes hands, for example because someone bought a used saw, the file moves with it:
machine card → "Change owner" → search for the new customer or create one with "New customer" →
confirm the question "Hand over
Finish open orders beforehand if possible: DiKAS does not warn you if an order is still running for the machine. Whatever it writes to the history later belongs to the new owner.
Cost estimate from the card¶
The "Cost estimate" button on the machine card leads to the cost estimate when the workshop is available:
- If the machine has an open order (New, In Progress or Paused), that order opens. Create the estimate there as described in the workshop module.
- Otherwise the order dialog opens with customer and machine filled in.
The cost estimate takes the customer from the order and names the machine in its notes.
Call pop-up with machines¶
If a phone line with caller display is set up (or you use the phone magnifier on the POS), the pop-up shows the block "Caller’s machines" for a known caller: a tile per machine with model, serial number, warranty (red when expired) and note. The first five are shown; "Show all n machines" opens the rest. Each tile offers:
- "Open machine card" and
- "Workshop job for
" (only if the workshop is on).
If the caller has no machine yet, "Add machine" leads to the customer tab with the form open. For an unknown number, the pop-up offers its usual "new customer" button; add the machine afterwards in the "Machine park" tab.
Machine park settings¶
Admin → Workshop, tab "Machine park". Only management can change these.
| Setting | Effect |
|---|---|
| Name of the tab | The name of the tab at the customer, e.g. "Bicycles" or "Devices". Leave empty for "Machine park". |
| Custom fields | Further device data you record for every machine. For each field you set a name and a type (Text, Number or Date); "Add field" creates it. |
About custom fields:
- The type cannot be changed after the field is created.
- "Delete" only hides a field. Values already recorded are kept.
- Reserved names: a name must not begin with model, serial number, purchase date, warranty, machine created or owner changed. DiKAS uses these words for its system entries in the history; the form points this out and blocks saving.
Data protection: when a customer is deleted¶
When you delete a customer, DiKAS first clears the free text written about their machines: notes and notices in the history become "[gelöscht]", as do the note at the top of the card and the custom text fields. Serial number, model, purchase date and warranty stay, so you can still trace warranty cases. If the machine now has another owner, that owner's details are untouched.
Example: the used saw¶
Situation: forestry equipment dealer. Ms Berger bought a chainsaw two years ago; the file is with her, 24 months of warranty, red for three months now. Mr Kraus buys the saw second-hand and brings it in for a defective chain.
- Scan: the employee scans the serial number in the workshop search field. Ms Berger's card appears, with two earlier services in the history and the note "Chain guard missing".
- Change owner: "Change owner" → Mr Kraus (not yet a customer, so "New customer") → "Hand over". The history moves along and records the change.
- Order: "+ Work order". Customer and machine are filled in; add the fault description "Chain defective".
- Cost estimate: the order is In Progress, the manager creates the cost estimate and calls Mr Kraus. The warranty has expired; you set the prices yourself.
- Done: mark the order completed. The saw's history now has a system entry with work, parts and time, and "Last service" in the list shows today's date.
Good to know¶
- Machines are added one by one; there is no import from spreadsheets.
- There is no customer portal: your customers cannot see their machines themselves.
- DiKAS does not calculate with the warranty automatically: the end date is a display; you decide the prices for warranty cases in the order.
- Machines cannot be deleted. A mistake in model or number is corrected on the card; the history records the change.
- An order that is marked completed can no longer be assigned to another machine.
- If two devices create the same serial number before they synchronise, they remain two machines; a scan shows one of them. Preferably add each machine at one workstation only.
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