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:
@@ -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.
|
||||
@@ -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).
|
||||
@@ -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 `Manager’s 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.
|
||||
@@ -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 `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.
|
||||
|
||||
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 `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, 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.
|
||||
Reference in New Issue
Block a user