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 a113353 on 2026-09-15. Licensed under the Functional Source License (FSL-1.1-ALv2).
This commit is contained in:
ThreadCount
2026-09-15 22:54:09 +10:00
commit a6f1059ddf
424 changed files with 53535 additions and 0 deletions
+69
View File
@@ -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. How signatures are stored and removed, and the ward round for staff requests.
screen: Delivery rounds
role: Admin or Issuer
keywords: delivery round, 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.
## What a round is
`Delivery rounds` lists every pickup not yet picked up or delivered, grouped by the ward on the person's staff record. A person with no ward recorded is listed under `Unknown`. Each ward shows its cost centre and how many pickups it has.
Three tiles sit above: `To deliver`, `Garments on the trolley` and `Waiting 14+ days`. The last is flagged when any pickup has waited 14 days or more.
Each row shows the person, their phone number, the garments, the order code and the days waiting.
## 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. The counter app's round takes a name and a signature, with no photo ([Counter app](/docs/apps/counter-app)).
## What is written
| 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)).
A signature is shown only to a signed-in user of the same facility.
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 resetting the facility removes every image the facility holds. Restoring a backup removes them and puts back the images the backup carries.
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
On `Requests`, 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 wearer is emailed `On the ward round` when they have an account and email is set up: `Whoever signs for it at the desk will be named on your order.`
Somebody on that ward signs for the bag in the staff app. No drawn signature is taken. ThreadCount records the signer's name, their role (`ward clerk` for somebody with the ward-desk flag), the time, and a history line `Delivered to <ward>`. The issues are written at that moment. The shelf is not checked at the ward, so a short shelf does not stop the hand-over; a later count corrects it. The wearer or the ward desk then marks the bag collected from the ward. See [Staff app](/docs/apps/staff-app).
## Ward delivery notes
The paper that travels with a bag is the delivery slip, `Uniform ward delivery`. Its footer is `Delivery slip footer` in Settings, 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,82 @@
---
title: Exchanges and returns
section: counter
order: 2
summary: Returns with a condition, size exchanges, hand-ins 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 size, wrong size, hand-in, hand in, pre-loved, preloved, rag, lost, written off, damaged, credit
---
Garments come back three ways. A return closes one issue line with a condition. An exchange swaps a 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` sits against each line in the issue history on `Counter` and on the person's staff record. The counter app has its own return screen.
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 stock 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.
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`.
## Exchanges
Size exchanges are made in the counter app, from the person's page: choose `Exchange`, pick or scan the garment that does not fit, then pick the size that does. It swaps 1 garment at a time. The `Counter` screen has no exchange. See [Counter app](/docs/apps/counter-app).
An exchange:
- marks the garment coming back `Returned - Good`, splitting the line if they hold more than 1
- 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 trousers size on the staff record when the garment is a top or trousers
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>`.
## Hand-ins
`Hand-in` appears on `Counter` once a person is chosen, and on their staff record.
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 allowance 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 trousers is given back as sets to the person's manager's approvals, newest first, and the year's report figure is credited.
A hand-in refuses only `Add at least one garment` and `Invalid hand-in line`.
A damage report from the staff app is cleared separately on `Requests`. 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 an exchange. It shrinks when a pre-loved line is issued or exchanged out.
A pre-loved issue costs the ward nothing and never comes off a manager's approval. It does count towards the ceiling. `Today` shows the pool's total under `Pre-loved pool`. A stocktake can count 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 |
| Exchange | Old line returned `Returned - Good`; new issue row today; staff record size | No screen reverses an exchange |
| 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 |
## How each moves sets held
Sets held count every issue that is not returned and not handed in, plus garments still owed.
| Action | Sets held |
|---|---|
| Return, any condition | The returned garments stop counting |
| Exchange | 1 garment out, 1 in: the count does not change |
| Hand-in, credit ticked or not | Matched garments stop counting |
| Hand-in line matching no issue | No change |
> **In plain terms** The credit tick is about approvals and reports; the hand-in itself is what makes room under the ceiling.
+66
View File
@@ -0,0 +1,66 @@
---
title: Issue a garment
section: counter
order: 1
summary: Pick the person, scan the garments, choose where each comes from, record it. What is written, and what the counter refuses.
screen: Counter
role: Admin or Issuer
keywords: issue, issue stock, scan, barcode, counter, six sets, ceiling, override, pre-loved, order in, refusal, slip, hand out uniform
---
`Counter` hands garments to one person at a time, and the server repeats every check.
## At the counter
1. **Find the person.** Search by name or staff number. Inactive staff are not listed. Each result shows the sets they hold against the ceiling.
2. **Scan the garments.** Scan into the barcode box and press Enter, use `Camera`, or tap a size under `Quick add`; tap again for one more. An unknown code opens a dialog to bind it ([Barcodes](/docs/stock/barcodes)).
3. **Choose a source for each line.** `From stock`, `Pre-loved` (shown when the pool holds that size) or `Order in`. A line with both shelf and pre-loved stock reads `Both available — pick a source` until you choose.
4. **Read the box under the bag.** It says `Inside what one person holds`, or names each reason the bag needs an override.
5. **Set the approval deduction.** When the person has a manager's approval with sets left, choose how many sets come off it. It starts at the larger of the tops and the trousers in the bag, not counting pre-loved lines.
6. **Print a slip if needed.** `Collection slip` and `Delivery slip` list the stock and pre-loved lines.
7. **Press `Record issue`.** Once the person signs, tick `signed` against the line in their issue history.
`Repeat last issue` fills the bag with the unreturned lines from the person's most recent issue date.
## What is written
| Record | Change | Undo |
|---|---|---|
| Issue, from stock | One row per line: today's date, condition `New`, today's catalogue cost | No screen deletes an issue; record a return |
| Issue, pre-loved | Condition `Pre-loved`, cost 0; the pool goes down | Return it as `Returned Good` |
| Replenishment draft | Stock lines added to the supplier's draft on `Orders` | Edit the draft |
| 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 hand-in with credit ticked gives sets back |
| Signed tick | Marks the issue signed | Untick it |
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
| Refusal | Why | What to do |
|---|---|---|
| `This staff member is inactive — reactivate them on their profile first` | The record is inactive | Reactivate them on `People` |
| `Not enough on the shelf for <garment> <size>` | Shelf count below the bag | Switch to `Order in`, or count the shelf |
| `Not enough pre-loved <garment> <size> in the pool` | Pool below the bag | Switch to `From stock` or `Order in` |
| `<garment> is discontinued` | The garment is archived | Choose a current garment |
| `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 | Record a hand-in first, or tick the override |
| `<garment> is for <groups> — <name> is in <group>. Tick the coordinator override to issue it anyway.` | Outside their staff group | Choose their group's garment, or tick the override |
| `<garment> is the <cut> cut — <name> is set to <style>. Tick the coordinator override to issue it anyway.` | Not their uniform style | Choose their cut, or tick the override |
A cart wrong on several counts gets one refusal naming every reason.
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 the bag again.
## The ceiling and the override
The ceiling is sets held at any time: 6 unless the facility has set its own figure. Tops and trousers are counted separately, so 7 tops and 2 pairs is past it. Garments outside a set, such as a fleece, have a ceiling of the same number, counted in garments. Holdings include garments on order, on the pickup list, and in approved request bags not yet collected. Pre-loved garments count. See [The entitlement rule](/docs/people/entitlement-rule).
One tick, `Issue anyway`, answers the ceiling, the staff group and the uniform style together. It clears when you change the person or the bag.
The `garments drawn since July` line is a running total for the reports. Nothing refuses on it.
> **In plain terms** A hand-in makes room; an override records that somebody chose to go past the rule.
## On a phone
The counter app has its own issue screen, recorded through the same server check. See [Counter app](/docs/apps/counter-app).
+74
View File
@@ -0,0 +1,74 @@
---
title: Manager approvals
section: counter
order: 4
summary: One manager on each staff record approves that person's requests and signs their order form. Deciding in the app or by email, self-approval, and recording a signed form.
screen: People a person Requests
role: Admin or Issuer
keywords: manager, approval, approve, decline, approver, email link, self-approved, signed form, order form, sets, FTE, credit slip, delegate
---
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` box under `Managers approval` on the staff record. Search the register by name or staff number and choose; it saves at once. Only an Admin can set, change or remove it.
- Anyone may be their own manager. The box then shows `Self-approved`.
- An inactive person cannot be chosen: `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.`
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; use re-address on `Requests` ([Requests from staff](/docs/counter/requests-from-staff)).
## Deciding in the app
The manager opens the request in the staff app. Every garment starts marked approved. They can decline a single garment, or the whole request, with 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. The wearer is emailed the result with the reason against each declined garment, when they have an account and email is set up.
## 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. The link opens a page showing the request. Nothing is decided until the manager chooses on that page.
- The link lasts 14 days.
- It decides the whole request: approve every garment, or decline every garment with one of the 3 reasons.
- It works once. After either choice, both links in the email stop working.
- It stops working when the manager or the wearer is no longer active on the register.
The decision is filed under the manager's name and marked as made from the email.
## 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 reads `Approved by <name> — their own request`, with `Self-approved` beside it.
Nobody approves a request they raised for somebody else:
- A manager's raise for one of their own staff goes to the manager's own manager. If there is none, or it would come back to them, the request waits on `Needs an approver`.
- 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
1. **Press `Print order form`** on the staff record, and have the manager sign it ([Slips and signatures](/docs/counter/slips-and-signatures)).
2. **Under `Record a signed order form`, enter** `Sets`, `FTE`, `Date signed` and any `Note on the form`. The date cannot be after today.
3. **Press `Photo the signed form`** if you want the sheet on file.
4. **Press `Record approval`.** It needs a manager set in the box: `Set their manager first.`
The approval is recorded under the manager in the box. When the sets are above what the FTE table proposes, ThreadCount writes a sentence saying so after your note, and shows it first under `This will go on the record as written:`.
Each approval then shows `<n> of <m> sets left` or `Fully collected`, with `Form` to view the photo and `Credit slip` to print the balance. Sets come off at [Counter](/docs/counter/issue-a-garment). 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 accepted or declined; decided time; 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 in the box is the only approver, on screen and on paper.
+61
View File
@@ -0,0 +1,61 @@
---
title: Pickup call list
section: counter
order: 5
summary: Garments ordered in for a person wait here until they are collected. Days waiting, contacted, the collection slip and picked up.
screen: Today
role: Admin or Issuer
keywords: pickup, call list, awaiting pickup, collection, collected, picked up, contacted, ring, phone, waiting, fortnight, order in
---
The call list is the `Awaiting pickup — call list` panel on `Today`. It holds every pickup that has arrived and has not been picked up or delivered.
## 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 on `Orders` ([Order list](/docs/stock/order-list)).
When the delivery is received, each line goes to `Shelf` or `Pickup`. On an order for a staff member every line starts on `Pickup`. Pickup lines become one pickup for that person, dated with the delivery date; shelf lines go into stock. A short delivery is split off as a back order, which becomes its own pickup when it arrives. 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.
## 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, and the order code.
A pickup waiting 14 days or more is flagged and reads `Waiting a fortnight or more`. The `Awaiting pickup` tile counts every pickup and says how many have reached 14 days.
## Contacted, slip, picked up
1. **Ring them, then press `Mark contacted`.** The button becomes a `Contacted` tag. No screen unmarks it.
2. **Print the `Collection 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 contacted. `Date notified` prints blank. It does not list the garments.
3. **Press `Picked up`** when they collect. The row leaves the list.
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 a pickup | Record a return from the person's history |
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. There is no hold date and nothing expires: it stays on the list 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.
## Delivering instead
[Delivery rounds](/docs/counter/delivery-rounds) lists the same pickups by ward. A delivery signed for there writes the same issue rows as `Picked up`, with the receiver's name and signature.
The counter app's `Pickups` screen has contacted and picked up. See [Counter app](/docs/apps/counter-app).
@@ -0,0 +1,78 @@
---
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. The queue, codes, messages and the waitlist.
screen: Requests
role: Admin or Issuer
keywords: request, ward request, staff request, approve, declined, pick, pick list, bag, collection code, hold, messages, waitlist, needs an approver, withdraw
---
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. `Requests` is the linen room's side.
## 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. Both are optional.
- 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. A manager may raise a request for somebody who reports to them; it then goes to the manager's own manager, never back to the raiser. Each request gets a code such as `R-0042`. See [Staff app](/docs/apps/staff-app) and [Manager approvals](/docs/counter/manager-approvals).
## The 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 most recent 400 requests; older ones are on the person's staff record. `Export CSV` writes the tab on screen, one row per garment.
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 `Ready to collect` with the code and the held-until note, when they have a staff-app account and email is set up. The `Held until` 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 at today's catalogue cost and adds the garments to the supplier's replenishment draft. It does not refuse on the ceiling; a line past it is stamped as an override.
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. Staff write from their order in the staff app; you reply in `Reply to this order` and press `Send`. Replies are named `(linen room)`. ThreadCount sends no email when a message is written. The request's `History` lists every step, who took it and when.
## Stuck requests
A request on `Needs an approver`, or one waiting 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 `Cant 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.
Deactivating a person closes their waiting requests.
## The waitlist
Staff join a waitlist for a garment and size in the staff app. No approval is needed to join. The `Kit check & waitlist` tab lists who is waiting.
When the size arrives, press `Its 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, reason `Extra for shifts`, which still needs their manager. After 48 hours the row reads `Hold lapsed — offer to the next person` and the staff app refuses the acceptance.
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.`
## What is written
| Record | Change | Undo |
|---|---|---|
| Request | Status, route, 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,76 @@
---
title: Slips and signatures
section: counter
order: 7
summary: Every document the counter prints, 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, receipt, 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`, the `Today` call list, `Requests` | A4 |
| Delivery slip | `Counter`, `Requests` | A4 |
| Order form | A staff record, `Requests`, a recorded approval | A4, one page |
| Credit slip | The approval block on `Counter`, a staff record's approvals | A5 landscape |
| Hand-in receipt | The hand-in dialog, a staff record's hand-ins | A5 landscape |
| Access slip | A staff record | A5 landscape |
Garment labels and the supplier purchase order print from the stock screens: see [Barcodes](/docs/stock/barcodes) and [Order list](/docs/stock/order-list).
## Collection and delivery slips
Both carry the facility logo, or `Organisation name on slips` from Settings, or the facility name. Both carry `Staff name`, and `Collection code` beside it for a request held at the counter.
When printed from a bag, `Garments — tick each one as it goes in the bag` lists each line. 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.
What each screen fills in:
- **Counter.** The stock and pre-loved lines, marked `(pre-loved)` where they are; ordered-in lines are left off. `Requested by` is the staff number and `Delivered by` is the coordinator named in Settings. The buttons work only when the bag could be recorded.
- **Requests.** 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 declined request has no slip.
- **Today.** Name, ward, garment count, the order reference, date received, and a `Phone` tick once contacted. No garment list.
## Order form
The form the manager signs. It prints three ways:
- From a staff record, with the person's details filled in and blank garment rows.
- From a request on `Requests`, with the garments written on and declined lines left off. A request still waiting prints with the manager's block blank.
- From a recorded approval, as a copy. It prints the date, sets, FTE and manager's name as signed. Every other field prints blank, and `Signature (on the signed sheet)` stays empty.
It has a `Staff member signature` line, a `Manager / financial delegate approval` block with signature, position and date, and a block for the linen room: date ordered, PO number, value, invoice number, stock received, date collected and staff signature. 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.
- **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.** 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, in the issue history, 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 |
| A manager's approval | A photo of the signed order form, if taken | You, when recording it |
`Today`'s `Receipts not yet signed` counts issues without the tick that have not been returned or handed in.
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.