ThreadCount Community edition
Uniform stock management for healthcare linen rooms: the coordinator app, the phone counter and the staff app, for your own server. Built from 38e16eb on 2026-09-15. Licensed under the Functional Source License (FSL-1.1-ALv2).
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
---
|
||||
title: Delivery rounds
|
||||
section: counter
|
||||
order: 6
|
||||
summary: Take waiting pickups to the wards and have the receiver sign on screen. Which bags go on the round, how signatures are stored and removed, and the ward round for staff requests.
|
||||
screen: Today › Deliver on the round
|
||||
role: Admin or Issuer
|
||||
keywords: delivery round, delivery rounds, round, deliver on the round, start the round, ward, deliver, trolley, signature, sign, received by, handover photo, proof, ward desk, ward clerk
|
||||
---
|
||||
|
||||
ThreadCount has two rounds. `Delivery rounds` takes pickups, garments ordered in for a person, to the wards. Approved staff requests go on the ward round, signed for by the ward desk in the staff app.
|
||||
|
||||
## Which bags go on the round
|
||||
|
||||
`Today` lists bags for the round under `Deliver on the round`, one row per ward, with the names, the garment count and `signed for at the ward desk`. A pickup goes there when nobody has called about it and the person's ward has an active person with the ward-desk flag. Every other pickup stays on [Call to collect](/docs/counter/pickup-call-list).
|
||||
|
||||
`Start the round` opens `Delivery rounds` for that ward. The screen is not on the desktop menu; on a phone it is `Delivery rounds` in the `More` sheet.
|
||||
|
||||
## The rounds screen
|
||||
|
||||
`Delivery rounds` lists every pickup not yet picked up or delivered, whether or not it was put on the round, grouped by the ward on the person's staff record. A person with no ward recorded is listed under `Unknown`. Each ward panel shows its cost centre and how many are to deliver. With more than one ward, a `Ward` bar picks one or `All`.
|
||||
|
||||
Each row shows the days waiting, the person, their phone number, the garments and the order code. A pickup waiting 14 days or more is flagged.
|
||||
|
||||
## Handing over
|
||||
|
||||
1. **Press `Delivered — sign`** on the row.
|
||||
2. **Type the receiver's name** in `Received by (name)`.
|
||||
3. **Have them sign** in the `Signature` box. `Clear` wipes it.
|
||||
4. **Press `Add handover photo`** if you want one.
|
||||
5. **Press `Mark delivered`.**
|
||||
|
||||
The name, signature and photo are each optional. In the [counter app](/docs/apps/counter-app), `Work › Rounds` lists each ward. One signature, an optional name and an optional photo mark every bag for that ward delivered.
|
||||
|
||||
| Record | Change | Undo |
|
||||
|---|---|---|
|
||||
| Pickup | Picked up today, the name typed, the signature and photo linked, marked as delivered on a round | No screen reverses it |
|
||||
| Issue | One row per line, as `Picked up` writes, marked signed when a signature was drawn | Record a return |
|
||||
| Photo | The signature, and the handover photo if taken | See below |
|
||||
|
||||
Delivery refuses `Already handed over` when the pickup was picked up or delivered first, and `Size <size> is no longer on <garment> — fix the catalogue before marking this delivered`.
|
||||
|
||||
## How signatures are stored and removed
|
||||
|
||||
The signature is saved as a PNG image before the delivery is recorded. An image may be up to 700 KB. It is kept as a file on the server, and the database holds a pointer to it. A self-hosted server keeps the files in the folder named by `PHOTO_DIR`, or `.photos` in the app's folder when that is unset ([Configuration reference](/docs/selfhost/configuration-reference)).
|
||||
|
||||
No screen deletes a single signature. Images are removed in two cases:
|
||||
|
||||
- An image nothing refers to, such as a signature saved for a delivery that then failed, is deleted once it is more than 1 day old. The clean-up runs on about 1 image save in 20.
|
||||
- Wiping the facility's activity or starting fresh removes every image the facility holds, under `Settings › Data & audit log`.
|
||||
|
||||
A backup carries up to 2000 images, and up to 40 MB of them.
|
||||
|
||||
> **Careful** A wipe of activity removes every delivery signature at once, with no way to keep some.
|
||||
|
||||
## The ward round for staff requests
|
||||
|
||||
In the request queue, a request being picked has `Send on the ward round` ([Requests from staff](/docs/counter/requests-from-staff)). It refuses in two cases:
|
||||
|
||||
- `<first name> has no ward recorded, so there is no round to send this on. Hold it at the counter, or record their ward on the staff register first.`
|
||||
- `Nobody on <ward> can sign for a round bag — that needs somebody with the ward-desk flag and their own staff-app account. Hold it at the counter instead, or set the flag on their staff record first.`
|
||||
|
||||
The ward-desk flag is `On the ward desk`, set by an Admin in the `Staff app` panel of a person's `Details & access` tab.
|
||||
|
||||
The wearer is emailed when they have an account and email is set up. Somebody on that ward signs for the bag in the staff app. No drawn signature is taken; the queue shows `Signed by <name>` with their role, and whether it has been collected from the ward. See [Staff app](/docs/apps/staff-app).
|
||||
|
||||
## Ward delivery notes
|
||||
|
||||
The paper that travels with a request bag is the delivery slip, `Uniform ward delivery`. Its footer is `Delivery slip footer` under `Settings › Facility`, which reads `After hours deliveries are left with the manager or team leader on duty.` until changed. See [Slips and signatures](/docs/counter/slips-and-signatures).
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
title: Exchanges and returns
|
||||
section: counter
|
||||
order: 2
|
||||
summary: The counter's Return, Swap a size and Hand in modes, and the pre-loved pool. What each writes and how it moves the sets a person holds.
|
||||
screen: Counter
|
||||
role: Admin or Issuer
|
||||
keywords: return, returned, exchange, swap a size, wrong size, hand-in, hand in, pre-loved, preloved, rag, lost, written off, damaged, credit, receipt
|
||||
---
|
||||
|
||||
Garments come back three ways, each a mode on `Counter` once a person is chosen. A return closes one issue line with a condition. A swap changes the size of the same garment. A hand-in takes back whatever the person brings and sorts it into the pre-loved pool or rags.
|
||||
|
||||
## Returns
|
||||
|
||||
`Return` mode lists every garment the person holds under `Holding`, with `Return` on each line. `Return` also sits against lines under `Holding now` in `Issue` mode, and on the person's record under `Uniform` and `History`.
|
||||
|
||||
1. **Press `Return`** on the line.
|
||||
2. **Say how many are coming back** when the line is more than 1 garment. The rest stays out with the person.
|
||||
3. **Take a photo if you want one.** `Photo the garment (damage evidence)` is optional.
|
||||
4. **Press a condition:** `Returned – Good`, `Returned – Damaged`, `Lost` or `Written Off`.
|
||||
|
||||
Pressing the condition records the return. A garment issued from the shelf and returned `Returned – Good` counts back into the shelf figure; the other three conditions do not. A pre-loved garment returned `Returned – Good` goes back into the pre-loved pool instead. Today's returns are listed under `Returned today`.
|
||||
|
||||
Returns refuse `This issue has already been returned / written off` and `This garment was handed in on <date> — it's already back in the pool`.
|
||||
|
||||
## Swap a size
|
||||
|
||||
`Swap a size` mode lists each line the person holds.
|
||||
|
||||
1. **Choose the `New size`.** Each size shows how many are on the shelf, or in the pre-loved pool when the line was pre-loved.
|
||||
2. **Set the quantity** when the line is more than 1 garment.
|
||||
3. **Press `Swap`.**
|
||||
|
||||
A swap:
|
||||
|
||||
- marks the garments coming back `Returned - Good`, splitting the line when only part of it is swapped
|
||||
- issues the new size today, condition `New` at today's catalogue cost, or `Pre-loved` at cost 0 from the pool when the original was pre-loved
|
||||
- carries across `offGroup` and `offStyle` from the original line
|
||||
- changes the top or pants size on the staff record when the garment is a top or pants
|
||||
|
||||
It makes no ceiling check. It refuses `Pick a different size`, `Not enough size <size> on the shelf`, `Not enough pre-loved size <size> in the pool`, `That garment has already been returned` and `That garment was handed in on <date>`.
|
||||
|
||||
On a phone, the [counter app](/docs/apps/counter-app)'s `Hand back` segment takes returns and swaps together. Each line is one garment. Its condition chip records `Good` as `Returned - Good`, `Damaged` as `Returned - Damaged`, `Condemn` as `Written Off` and `Lost` as `Lost`. `Swap size` on a line issues the new size in the same record, with the same checks as `Swap a size`. `Record hand back` files every line at once, or none.
|
||||
|
||||
## Hand-ins
|
||||
|
||||
`Hand in` mode has `Record a hand-in`, and lists earlier hand-ins with `Receipt`. A person's record has `Record hand-in` under `History`.
|
||||
|
||||
1. **Add each garment and size.** Tap a size again to add one.
|
||||
2. **Mark each line** `Good` or `Rag`, and `Laundered` or `Unlaundered`.
|
||||
3. **Tick `Credit the good garments back`** if the approval and the yearly report figure should be credited.
|
||||
4. **Press `Record hand-in`**, or `Record & print receipt`.
|
||||
|
||||
ThreadCount matches each line to the person's issues of that garment and size that are not returned or handed in: new before pre-loved, newest first. Matched issues are stamped handed in today; part of a line is split off. Good lines join the pre-loved pool and rags are counted for disposal, whether or not they matched an issue.
|
||||
|
||||
Credit applies only to Good lines matched to new, not pre-loved, issues. The larger of the credited tops and credited pants is given back as sets to the person's manager's approvals, newest first.
|
||||
|
||||
A hand-in refuses only `Add at least one garment` and `Invalid hand-in line`.
|
||||
|
||||
`Hand-in without a person`, at the top of `Counter`, opens `Adjust quantity` on its `Pre-loved` mode. It adds garments to the pool and matches no issue.
|
||||
|
||||
A damage report from the staff app is cleared on the `Damage` tab of the request queue with `Handed in at the counter`. Clearing it does not return the garment ([Requests from staff](/docs/counter/requests-from-staff)).
|
||||
|
||||
## The pre-loved pool
|
||||
|
||||
The pool is a count per garment and size. It grows from Good hand-in lines, from pre-loved garments returned `Returned – Good`, and from pre-loved garments given back in a swap. It shrinks when a pre-loved line is issued or swapped out.
|
||||
|
||||
A pre-loved issue costs the ward nothing and never comes off a manager's approval. It does count towards the ceiling. `Reports`, on its `People` view, shows `Pool today`. A count can cover the pool on its own ([Stocktakes](/docs/stock/stocktakes)).
|
||||
|
||||
## What is written
|
||||
|
||||
| Record | Change | Undo |
|
||||
|---|---|---|
|
||||
| Return | Return date today and the condition on the issue; photo linked | No screen reverses a return |
|
||||
| Swap | Old line returned `Returned - Good`; new issue row today; staff record size | No screen reverses a swap |
|
||||
| Hand-in | A hand-in with its lines; matched issues stamped handed in; pool up by the Good lines | No screen reverses a hand-in |
|
||||
| Approval, on credit | Sets used go down | Issue the sets again |
|
||||
|
||||
A return, a swap or a hand-in matched to an issue takes those garments off the sets a person holds, credit ticked or not. A swap puts the new size on, so the count does not change. A hand-in line matching no issue changes nothing.
|
||||
|
||||
> **In plain terms** The credit tick is about approvals and reports; the hand-in itself is what makes room under the ceiling.
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: Issue a garment
|
||||
section: counter
|
||||
order: 1
|
||||
summary: Choose the person, add the garments, pick where each comes from, record it. What is written, and what the counter refuses.
|
||||
screen: Counter
|
||||
role: Admin or Issuer
|
||||
keywords: issue, issue stock, counter, scan, barcode, badge, six sets, ceiling, override, pre-loved, order in, usual sizes, repeat last, refusal, slip, hand out uniform
|
||||
---
|
||||
|
||||
`Counter` serves one person at a time. You choose the person first, then the mode: `Issue`, `Return`, `Hand in` or `Swap a size`. This page covers `Issue`; the other three are on [Exchanges and returns](/docs/counter/exchanges-and-returns). The server repeats every check the screen makes.
|
||||
|
||||
## At the counter
|
||||
|
||||
1. **Find the person.** Type a name or staff number into `Find a person`, or scan their badge. Up to 8 active people are listed, each with `Tops` and `Pants` meters. Enter picks an exact staff-number match, or else the first row. A badge scanned anywhere in the portal opens the counter with that person.
|
||||
2. **Check the person panel.** It shows their group, ward, cost centre, cut and usual sizes, then how they get uniform: `FTE table`, `Starting kit` or `Manager approval`, and what the manager has signed.
|
||||
3. **Add garments.** Scan into `Scan a garment, or type a name`, use `Scan with the camera`, or tap one of the usual chips. Typing 2 or more characters lists matching garments with a size strip; ones outside the person's group or cut are listed under `Other garments`. Tap a size again for one more.
|
||||
4. **Choose a source for each line** in `This pickup`: `Shelf`, `Pre-loved` (shown when the pool holds some) or `Order in`. A line that could come from the shelf or the pool reads `Pick a source` until you choose.
|
||||
5. **Read the line under the pickup.** It says `After this she holds 4 of 6 sets`, and names each reason the pickup needs an override.
|
||||
6. **Set `Sets off the signed form`** when the person has a manager's approval with sets left. It starts at the larger of the tops and the pants in the pickup, not counting pre-loved lines.
|
||||
7. **Print the `Collection slip`** if you need one, then press `Record issue`, or Ctrl+Enter (Cmd+Enter on a Mac).
|
||||
|
||||
`Repeat last · <date>` refills the pickup with every unreturned line from the person's most recent issue date, as shelf lines. `Change person` or Esc starts again; Esc does nothing while the pickup has lines in it.
|
||||
|
||||
An unknown barcode opens `Unknown barcode` for an Admin ([Barcodes](/docs/stock/barcodes)). An Issuer sees `No garment has <code>.`
|
||||
|
||||
## What is written
|
||||
|
||||
| Record | Change | Undo |
|
||||
|---|---|---|
|
||||
| Issue, from the shelf | One row per line: today's date, condition `New`, today's catalogue cost | Record a return |
|
||||
| Issue, pre-loved | Condition `Pre-loved`, cost 0; the pool goes down | Return it as `Returned – Good` |
|
||||
| Replenishment draft | Shelf lines added to the supplier's draft order | Edit the draft on `Orders` |
|
||||
| Order, for `Order in` | One order per supplier, status `Ordered`, for this person | Received lines join the [pickup call list](/docs/counter/pickup-call-list) |
|
||||
| Manager's approval | Sets used go up, oldest approval first | A credited hand-in gives sets back |
|
||||
|
||||
An override is stamped only on the rows it applies to: `override` for the ceiling, `offGroup` for a garment outside the staff group, `offStyle` for the wrong cut. For `Order in` lines it is written into the order's note.
|
||||
|
||||
## What the counter refuses
|
||||
|
||||
`Record issue` stays disabled while a line has no source, a line asks for more than the shelf or pool holds (`Not enough on the shelf`, `Not enough pre-loved`), the person is inactive, or a reason needs the override tick. The server refuses the same cases:
|
||||
|
||||
| Refusal | Why |
|
||||
|---|---|
|
||||
| `This staff member is inactive — reactivate them on their profile first` | The record is inactive |
|
||||
| `Not enough on the shelf for <garment> <size>` | Shelf below the pickup |
|
||||
| `Not enough pre-loved <garment> <size> in the pool` | Pool below the pickup |
|
||||
| `<garment> is discontinued` | The garment is archived |
|
||||
| `A. Hassan is holding 6 tops and 5 pairs. That would be 7 tops and 5 pairs, and the most anyone holds is 6 sets — 6 tops and 6 pairs. Hand a top in to make room, or a coordinator can record an override.` | Past the ceiling |
|
||||
| `<garment> is for <groups> — <name> is in <group>. Tick the coordinator override to issue it anyway.` | Outside their staff group |
|
||||
| `<garment> is the <cut> cut — <name> is set to <style>. Tick the coordinator override to issue it anyway.` | Not their cut |
|
||||
|
||||
A refusal ending `refresh and try again` means somebody changed the shelf, the pool, the approval or the person's holdings while you were serving. Refresh and record again.
|
||||
|
||||
## The ceiling and the override
|
||||
|
||||
The ceiling is sets held at any time: 6 unless the facility has set its own figure under `Settings › Issuing rules`. Tops and pants are counted separately. Garments outside a set have a ceiling of the same number, counted in garments. Holdings include garments on order, waiting to collect, and in approved request bags. Pre-loved garments count. See [The entitlement rule](/docs/people/entitlement-rule).
|
||||
|
||||
One tick, `Record as an override`, answers the ceiling, the staff group and the cut together. It clears when you change the person or anything in the pickup.
|
||||
|
||||
> **In plain terms** A hand-in makes room; an override records that somebody chose to go past the rule.
|
||||
|
||||
## On a phone
|
||||
|
||||
In the [counter app](/docs/apps/counter-app), open the person and stay on `Issue`.
|
||||
|
||||
1. **Add the lines.** Tap `+` on a size card, or `Scan a garment`. The meters fill as you add.
|
||||
2. **Answer each flag.** A line past the ceiling, outside their group or outside their cut is flagged `Over 6 sets`, `Not for <group>` or `Not for <cut>`. Pick one reason for each: `Soiled on shift`, `Replacing damaged`, `Manager asked` or `Other`.
|
||||
3. **Press `Review and sign`.** For a group whose raises need a manager, set how many sets come off the approval.
|
||||
4. **Have them sign**, and leave `Send the slip to their staff app` on if they have a staff app sign-in.
|
||||
5. **Press `Issue`.**
|
||||
|
||||
The server runs the same checks again and refuses a flagged line with no reason. Each flagged line's row stores its reason in `overrideReason`, beside `override`, `offGroup` and `offStyle`. The signature sets the signed tick on every row and files a slip; a slip sent to the staff app lists garments, sizes, the date and the signature only.
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
title: Manager approvals
|
||||
section: counter
|
||||
order: 4
|
||||
summary: One manager on each staff record approves that person's requests and signs their order form. Setting the manager, deciding in the app or by email, self-approval, and recording a signed form.
|
||||
screen: People › a person › Details & access
|
||||
role: Admin or Issuer
|
||||
keywords: manager, approval, approve, decline, approver, email link, self-approved, signed form, order form, record a signed form, sets, FTE, credit slip, delegate, reports to
|
||||
---
|
||||
|
||||
Each staff record names one manager. That person approves the wearer's requests in the staff app and signs their paper order form.
|
||||
|
||||
## One manager per record
|
||||
|
||||
The manager is set in the `Manager` panel on a person's `Details & access` tab. Search the register by name or staff number and choose; it saves at once. Only an Admin can set, change or remove it; an Issuer sees the name, or `None set.`
|
||||
|
||||
- Anyone may be their own manager. The panel then shows `Self-approved`.
|
||||
- An inactive person is not offered, and the server refuses one: `That manager is no longer active on the register.`
|
||||
- A manager whom others still name cannot be deactivated: `<n> people still name <first name> as their manager, and a request can't be sent to somebody who is off the register. Give them a new manager first.`
|
||||
|
||||
The same tab has `Whose requests <first name> approves`. An Admin can add somebody with `Add somebody who reports to them`, which asks `Change <first name>’s record` first because it rewrites that person's manager, or take somebody off with `Remove from list`.
|
||||
|
||||
Without a manager, the staff app refuses to raise a request: `Your manager isn't set yet — the linen room has to record who approves your requests.`
|
||||
|
||||
A request is addressed to the manager recorded when it was raised. Changing the manager later does not move it; re-address it in the request queue ([Requests from staff](/docs/counter/requests-from-staff)).
|
||||
|
||||
## Deciding in the app
|
||||
|
||||
The manager opens the request in the staff app and decides each garment. A declined garment needs one of 3 reasons: `Over allowance`, `Not needed right now` or `Wrong item for the role`. Every garment must be decided before sending.
|
||||
|
||||
When at least 1 garment is approved the request goes to the linen room; when none is, it is declined.
|
||||
|
||||
## Deciding by email
|
||||
|
||||
When a request is raised, its manager is emailed `Uniform request from <name>`, or `Uniform request for <name>` when somebody raised it on the wearer's behalf, provided they have a staff-app account and email is set up. The link opens a page showing the request. Nothing is decided until the manager chooses on that page.
|
||||
|
||||
- The link lasts 14 days.
|
||||
- It works once.
|
||||
|
||||
## Self-approval and the raise rule
|
||||
|
||||
Anybody may approve a request for their own uniform. It is never recorded as an ordinary approval: the history line names it as their own request, marked self-approved.
|
||||
|
||||
Nobody approves a request they raised for somebody else:
|
||||
|
||||
- Re-addressing to the raiser is refused: `<first name> raised this request, so it can't be sent back for <first name> to approve. Pick somebody else.`
|
||||
- Sending a request to its wearer is refused unless they are set as their own manager.
|
||||
- A decision by the raiser is refused: `You raised this request, so somebody else has to approve it — ask the linen room to re-address it.`
|
||||
|
||||
## Recording a signed order form
|
||||
|
||||
The `Approval` panel on a person's `Uniform` tab shows their route (`FTE table`, `Starting kit` or `Manager approval`), `Signed by the manager` and `Drawn`.
|
||||
|
||||
1. **Press `Print a new one`**, and have the manager sign it ([Slips and signatures](/docs/counter/slips-and-signatures)). `Order form` on the counter's person panel prints the same form.
|
||||
2. **Press `Record a signed form`, then enter** `Sets`, `FTE`, `Date signed` and any `Note`. A date after today reads `After today: check the year.` and cannot be recorded.
|
||||
3. **Press `Photo the signed form`** if you want the sheet on file.
|
||||
4. **Press `Record approval`.** It needs an active manager set: `Set their manager first.`
|
||||
|
||||
The approval is recorded under the manager in the `Manager` panel. When the sets are above what the FTE table proposes, ThreadCount writes a sentence saying so after your note, and previews it under `Recorded as:` before you record.
|
||||
|
||||
`View the form` opens the photo. Sets come off at the [counter](/docs/counter/issue-a-garment) under `Sets off the signed form`.
|
||||
|
||||
Each approval is listed on the `History` tab under `Previous order forms`, reading `<n> of <m> left` or `Fully collected`, with `Signed form`, `Print the form` and `Credit slip`. An Admin can remove an approval with `×`.
|
||||
|
||||
## What is written
|
||||
|
||||
| Record | Change | Undo |
|
||||
|---|---|---|
|
||||
| Staff record | The manager | An Admin changes or removes it |
|
||||
| Request and its lines | Each line approved or declined with a reason; status; a history line | None |
|
||||
| Approval | Date signed, manager's name as signed, link to the manager, sets, FTE, note, photo; sets used starts at 0 | An Admin removes it |
|
||||
|
||||
The name on an approval is a copy. It still reads as signed after the manager is renamed or leaves.
|
||||
|
||||
> **In plain terms** The manager on the record is the only approver, on screen and on paper.
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: Pickup call list
|
||||
section: counter
|
||||
order: 5
|
||||
summary: Garments ordered in for a person wait in Call to collect on Today until they are picked up. Days waiting, called, the slip and picked up.
|
||||
screen: Today
|
||||
role: Admin or Issuer
|
||||
keywords: pickup, call list, call to collect, awaiting pickup, collection, collected, picked up, contacted, mark called, ring, phone, waiting, fortnight, order in
|
||||
---
|
||||
|
||||
The call list is the `Call to collect` group on `Today`. It holds every pickup that has arrived and has not been picked up or delivered, except the bags going out on a delivery round.
|
||||
|
||||
## How a line joins it
|
||||
|
||||
A pickup starts as an order for a staff member, raised with `Order in` on [Counter](/docs/counter/issue-a-garment), or with `Order for a person` on `Orders` ([The To order list](/docs/stock/order-list)).
|
||||
|
||||
When the delivery is received, each line goes to `Shelf` or `Pickup`. Pickup lines become one pickup for that person; shelf lines go into stock. A short delivery is split off as a back order. See [Receiving and back orders](/docs/stock/receiving-and-back-orders).
|
||||
|
||||
The garments count towards the person's ceiling from the day they are ordered.
|
||||
|
||||
## Call to collect or the round
|
||||
|
||||
A pickup goes to `Deliver on the round` instead when nobody has called about it and the person's ward has an active person with the ward-desk flag. Pressing `Mark called` on a person's record moves it back to `Call to collect`. See [Delivery rounds](/docs/counter/delivery-rounds).
|
||||
|
||||
A group with nothing in it is not shown. When the whole queue is empty, `Today` reads `Nothing in the queue.`
|
||||
|
||||
## Reading the list
|
||||
|
||||
Rows are sorted by days waiting, longest first. Days waiting runs from the received date to today.
|
||||
|
||||
Each row shows the days waiting, the person's name and phone number (a call link where the device can dial), each garment with size and quantity, the order code, and `contacted` once called.
|
||||
|
||||
A pickup waiting 14 days or more is flagged. Those pickups count towards the `overdue` figure in the `Today` heading. The rail badge shows everything in the queue, not the overdue figure; an overdue pickup only changes the badge's colour.
|
||||
|
||||
## Called, slip, picked up
|
||||
|
||||
1. **Ring them, then press `Mark called`.** The button goes and the row reads `contacted`. No screen unmarks it.
|
||||
2. **Print the `Slip`** if the bag needs one. It carries the name, ward, number of garments, the order's reference (or its code), the date received, and a tick against `Phone` under `Staff notified` once called. `Date notified` prints blank. It does not list the garments.
|
||||
3. **Press `Picked up`** when they collect. The row leaves the list.
|
||||
|
||||
The same pickups are under `Waiting for her`, `him` or `them` on a person's `Uniform` tab, with `Mark called` and `Picked up`. The search panel lists them under `Waiting`, with `Picked up`.
|
||||
|
||||
When two people work the list at once, a refusal is shown above the rows. Pressing `Picked up` on a pickup already collected changes nothing.
|
||||
|
||||
## What is written
|
||||
|
||||
| Record | Change | Undo |
|
||||
|---|---|---|
|
||||
| Pickup | Contacted | No screen clears it |
|
||||
| Pickup | Picked up today | No screen reverses it |
|
||||
| Issue | One row per line: today's date, condition `New`, today's catalogue cost, the order code, marked as collected | Record a return from the person's record |
|
||||
|
||||
Picking up makes no ceiling check and stamps no ceiling override. It stamps `offGroup` or `offStyle` on a garment outside the person's staff group or uniform style.
|
||||
|
||||
It refuses one case: `Size <size> is no longer on <garment> — fix the catalogue before marking this picked up`. Put the size back on the garment, then press `Picked up` again.
|
||||
|
||||
## Hold period
|
||||
|
||||
A pickup has no hold period. Nothing expires: it stays until it is picked up or delivered. The 14-day flag marks it and does nothing else.
|
||||
|
||||
A staff request held at the counter carries a `Held until` note ([Requests from staff](/docs/counter/requests-from-staff)), and a waitlist offer is held for 48 hours. Neither applies to pickups.
|
||||
|
||||
> **In plain terms** The list is a queue of phone calls, and nothing leaves it on its own.
|
||||
|
||||
The counter app's `Work › Pickups` works the same list: `Call`, `Contacted` and `Collected` on each card. See [Counter app](/docs/apps/counter-app).
|
||||
@@ -0,0 +1,86 @@
|
||||
---
|
||||
title: Requests from staff
|
||||
section: counter
|
||||
order: 3
|
||||
summary: Staff ask for uniform in the staff app, their manager decides each garment, the linen room picks the bag. Where requests appear, the queue, codes, messages and the waitlist.
|
||||
screen: Requests
|
||||
role: Admin or Issuer
|
||||
keywords: request, ward request, staff request, requests queue, approve, declined, pick, start picking, bag, collection code, hold, messages, waitlist, needs an approver, withdraw, re-address
|
||||
---
|
||||
|
||||
A request is one ask for one person, raised in the staff app and approved by that person's manager before the linen room can act.
|
||||
|
||||
## What staff can ask for
|
||||
|
||||
- Up to 10 lines, and between 1 and 20 of each garment. The same garment and size asked for twice becomes one line.
|
||||
- A reason, from `Worn out`, `Damaged`, `Lost` and `Extra for shifts`, and a note of up to 400 characters.
|
||||
- Only garments for their own staff group, or for every group, and in their uniform style.
|
||||
|
||||
A person with no manager recorded cannot raise one. Each request gets a code such as `R-0042`. See [Staff app](/docs/apps/staff-app) and [Manager approvals](/docs/counter/manager-approvals).
|
||||
|
||||
## Where requests appear
|
||||
|
||||
- **Today.** `Pick for approved requests` lists approved requests. A row reads `in stock` with `Start picking`, or `none on the shelf` with `Order it in`, which opens `New order` for that person with the short lines filled in.
|
||||
- **A person's record.** The `Requests` tab lists theirs, `Open` or `All`, with `Open in the queue`.
|
||||
- **The queue.** The `Requests` button on `People` opens every request. On a phone it is `Requests` in the portal’s `More` sheet.
|
||||
|
||||
| Queue tab | Holds |
|
||||
|---|---|
|
||||
| `To do` | Approved and not yet handed over |
|
||||
| `Needs an approver` | Waiting, with nobody asked to approve |
|
||||
| `Open` | Everything not yet finished, waiting ones greyed |
|
||||
| `All` | Every loaded request |
|
||||
| `Record queries`, `Damage`, `Kit check & waitlist` | The staff app's other reports |
|
||||
|
||||
The queue loads the latest 400 requests; older ones are on the person's record. When any request has no approver, a line reads `<n> with no approver` with `Address them`. `Export CSV` writes the tab on screen.
|
||||
|
||||
On a phone, `Work › Picks` in the [counter app](/docs/apps/counter-app) lists approved requests. Tick or scan each line, then `Hand over`: the person signs and the request moves straight to collected.
|
||||
|
||||
Opening a request lists every line with its decision. A declined line is struck through with its reason and is never picked.
|
||||
|
||||
## The bag
|
||||
|
||||
1. **Press `Start picking`.**
|
||||
2. **Hold it at the counter or send it on the ward round.** `Hold at the counter` takes an optional `Held until` note, such as `Fri 6pm`. `Send on the ward round` is covered in [Delivery rounds](/docs/counter/delivery-rounds).
|
||||
3. **Match the code at the counter.** Holding gives the bag a 4-digit collection code, different from every other bag waiting at the counter.
|
||||
4. **Press `Collected`** when the person takes it.
|
||||
|
||||
Holding at the counter emails the person with the code and the held-until note, when they have a staff-app account and email is set up. The note is text; nothing expires on it.
|
||||
|
||||
`Collected` checks the shelf and refuses `Not enough <garment> <size> on the shelf to hand over — count the shelf or order it in first.` It writes an issue for each approved line and adds the garments to the supplier's replenishment draft.
|
||||
|
||||
A request moves only forward. A stale screen gets `A request that is "<status>" can't move to "<status>".` or `Somebody else moved that request just now — reopen it.`
|
||||
|
||||
`Collection slip`, `Delivery slip` and `Print order form` print the approved lines ([Slips and signatures](/docs/counter/slips-and-signatures)).
|
||||
|
||||
## Messages
|
||||
|
||||
Each request has its own messages. You reply in `Reply to this order` and press `Send`. Replies are named `(linen room)`. ThreadCount sends no email when you write a reply. The request's `History` lists every step, who took it and when.
|
||||
|
||||
## Stuck requests
|
||||
|
||||
A request waiting on nobody, or on a manager who will never answer, has two ways out:
|
||||
|
||||
- **Re-address it.** Choose a name and press `Ask them` or `Re-address`. People without a staff-app account are listed under `Can’t be asked — no staff-app account`. The person who raised it is left out. The wearer is listed only when set as their own manager, and choosing them is a self-approval.
|
||||
- **Withdraw it.** `Withdraw it` declines the request with the reason `Withdrawn — no approver available` and emails the person when they have an account.
|
||||
|
||||
Deactivating a person closes their waiting requests.
|
||||
|
||||
## The waitlist
|
||||
|
||||
Staff join a waitlist for a garment and size in the staff app. The `Kit check & waitlist` tab lists who is waiting under `Waiting for a size`.
|
||||
|
||||
When the size arrives, press `It’s in — offer it`. The garment is held for 48 hours, and the person is emailed when they have an account. Accepting in the staff app raises a request, which still needs their manager. After 48 hours the row reads `Hold lapsed — offer to the next person`.
|
||||
|
||||
An offer is refused when the garment is now outside the person's staff group or uniform style, with a message ending `Take them off this waitlist instead.`
|
||||
|
||||
Starting a kit check and closing it are Admin only.
|
||||
|
||||
## What is written
|
||||
|
||||
| Record | Change | Undo |
|
||||
|---|---|---|
|
||||
| Request | Status, collection code, held-until note, a history line per step | None; it only moves forward |
|
||||
| Issue | One row per approved line on `Collected` | Record a return |
|
||||
| Message | Your reply, with your name | None |
|
||||
| Waitlist entry | Offered time | None |
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
title: Slips and signatures
|
||||
section: counter
|
||||
order: 7
|
||||
summary: Every document the counter and a person's record print, where each prints from, what it carries, and which signatures ThreadCount records.
|
||||
screen: Counter
|
||||
role: Admin or Issuer
|
||||
keywords: slip, print, printing, collection slip, delivery slip, order form, credit slip, hand-in receipt, access slip, signature, signed, mark signed, receipt, receipts to sign, paper
|
||||
---
|
||||
|
||||
Each document opens in a new window and starts the browser's print dialog. If nothing opens, allow pop-ups for ThreadCount.
|
||||
|
||||
## The documents
|
||||
|
||||
| Document | Printed from | Paper |
|
||||
|---|---|---|
|
||||
| Collection slip | `Counter` (`This pickup`), `Today` (`Slip` in `Call to collect`), the request queue | A4 |
|
||||
| Delivery slip | The request queue | A4 |
|
||||
| Order form | `Counter` (`Order form`), a person's `Uniform` and `History` tabs, the request queue | A4 |
|
||||
| Credit slip | `Counter` (`Credit slip`), a person's `History` tab | A5 landscape |
|
||||
| Hand-in receipt | The hand-in dialog, `Counter` in `Hand in` mode, a person's `History` tab | A5 landscape |
|
||||
| Access slip | A person's `Details & access` tab | A5 landscape |
|
||||
|
||||
Garment labels and the supplier order sheet print from `Stock` and `Orders`: see [Barcodes](/docs/stock/barcodes) and [The To order list](/docs/stock/order-list).
|
||||
|
||||
## Collection and delivery slips
|
||||
|
||||
Both carry the facility logo, or `Organisation name on slips`, from `Settings › Facility`. Both carry `Staff name`, and `Collection code` beside it for a request held at the counter.
|
||||
|
||||
When garments are passed, `Garments — tick each one as it goes in the bag` lists them. Up to 10 lines print; the rest show as `+<n> more lines — see the request in ThreadCount.`
|
||||
|
||||
| Slip | Fields | Signature |
|
||||
|---|---|---|
|
||||
| `Uniform ready for collection` | Ward / Department, Date received, PO / Order no., Garments, Staff notified, Date notified | `Collected by (signature)`, `Date collected` |
|
||||
| `Uniform ward delivery` | Ward / Department, Deliver to, Garments, PO / Order no., Date received, Requested by, Delivered by, Date / time | `Received on ward by (name + sign)` |
|
||||
|
||||
The footer is `Collection slip footer` or `Delivery slip footer` from `Settings › Facility`.
|
||||
|
||||
What each screen fills in:
|
||||
|
||||
- **Counter.** The shelf and pre-loved lines in the pickup, marked `(pre-loved)` where they are; `Order in` lines are left off. The button works only when the pickup could be recorded and has a shelf or pre-loved line.
|
||||
- **Request queue.** The approved lines, with the cut named unless unisex. `PO / Order no.` is the request code. A request on the ward round prints a delivery slip, any other a collection slip. A waiting or declined request has no slip.
|
||||
- **Today.** Name, ward, garment count, the order reference, date received, and a `Phone` tick once called. No garment list.
|
||||
|
||||
## Order form
|
||||
|
||||
The form the manager signs. It prints three ways:
|
||||
|
||||
- From `Counter` or `Print a new one` on the `Uniform` tab, with the person's details and blank garment rows.
|
||||
- From `Print order form` in the request queue, or `Print the form` on a request row under `Previous order forms`, with the garments written on. A request still waiting prints with the manager's block blank.
|
||||
- From `Print the form` on a recorded approval, as a copy. It prints what was recorded, and `Signature (on the signed sheet)` stays empty.
|
||||
|
||||
It has a `Staff member signature` line, a `Manager / financial delegate approval` block, and a block for the linen room including `Date ordered`, `PO number`, `Invoice number`, `Stock received` and `Date collected`. See [Manager approvals](/docs/counter/manager-approvals).
|
||||
|
||||
## Credit slip, hand-in receipt and access slip
|
||||
|
||||
- **Credit slip.** `Uniform Credit`, the sets left on one approval (`2 of 5 sets remaining`), the person, who approved it and when, the FTE and notes. It tells the person to bring the slip or their payroll number to collect the rest. On `Counter` it prints the open approval.
|
||||
- **Hand-in receipt.** Each garment, size, quantity and condition, `unlaundered` where marked, how many went to the pre-loved pool and to rag disposal, and whether the allowance was credited ([Exchanges and returns](/docs/counter/exchanges-and-returns)).
|
||||
- **Access slip.** `Print the slip` after `Generate a code`: the one-time code a person uses to claim their staff-app account, with the steps ([Staff app](/docs/apps/staff-app)).
|
||||
|
||||
## Signatures
|
||||
|
||||
ThreadCount does not read ink. What it records:
|
||||
|
||||
| Where | What is recorded | By |
|
||||
|---|---|---|
|
||||
| An issue | The signed tick | You, after the slip is signed |
|
||||
| A delivery on `Delivery rounds` | The drawn signature as an image, the receiver's name, and the signed tick on the issues | The receiver, on screen |
|
||||
| A request bag on the ward round | The signer's name, role and time; no image | The ward desk, in the staff app |
|
||||
| An issue or request hand-over in the counter app | The drawn signature as an image, the signed tick, and a slip in the staff app when sent | The person, on the phone |
|
||||
| A manager's approval | A photo of the signed order form, if taken | You, when recording it |
|
||||
|
||||
The signed tick is `Mark signed` or `Signed` under `Holding` in the counter's `Return` and `Hand in` modes, and `signed` or `not signed` on a person's `Uniform` and `History` tabs.
|
||||
|
||||
`Today`'s month-end panel shows `<n> receipts to sign` when any issue lacks the tick, with `Chase`, which opens `People` filtered to `Receipts to sign`.
|
||||
|
||||
How drawn signatures and photos are stored and removed is on [Delivery rounds](/docs/counter/delivery-rounds).
|
||||
|
||||
> **In plain terms** Paper carries the signature; ThreadCount carries a tick, a name, or a picture of the paper.
|
||||
Reference in New Issue
Block a user