REPORTS.md — report placement, exceptions & approvals (catalogue)
Round 24 (2026-09-02) — rebuilt to the owner's philosophy. This catalogue is built step by step, one workflow step at a time: for each step we decide what report/dashboard lives there, how exceptions are reported, and how approvals happen. Nothing is final until the owner signs each point.
Standing caveat (owner, round 24): the existing inventory system is buggy and haphazardly built — its numbers and formats are taken with a grain of salt. Everything derived from it here is indicative: verify before trusting, ask when unsure. Same rule applies to every old-system upload we decode.
1. Principles (owner — binding on every design)
- No report silo. Reports are NOT a separate menu/module. Each report or dashboard is placed where it is used — in the workflow screen of the step whose decision it supports. The user never goes hunting for a report.
- A report is the finished product. Anything that needs further processing (export to Excel, pivot, manual calc) is not a report. If the user has to process it further, it is a dump — and dumps are only utility exports (form-entry listings with filters), clearly labelled as such, never presented as reports. Every placed report must end in the decision it supports (a number the user can act on), computed in-system.
- Exceptions are reported where they occur. Every workflow step flags its own exceptions in-system (queues, tiles, diff columns) at the moment and place the user is already working — not in a separate "exception report".
- Approvals happen in-system. All approvals/acknowledgements —
hishob accept/object, amendments beyond tolerance, reconciliation
acceptances, sample waivers, job-rate renegotiations — are inside the
system. The user leaves the system only to communicate with external
parties (WhatsApp), and even those confirmations come back in-system via
tokenized confirm-links (round 20:
/confirm/<token>, no login). Scope refinement (round 25): printed, stamped/signed documents exist ONLY where goods cross our boundary to/from EXTERNAL parties (trader, sizer, weaver, buyer); internal movements (dept↔dept, godown↔gate, transporter in our custody) are system-approval only — intimation → due-list → tap → confirm, no paper. - Every form dumps. The universal dump station (docs/DUMPS.md) is a MUST: any form exports its raw records to Excel/CSV with filters drawn from its own fields (date range, party, quality/design, status…). Dumps cover the long tail of analysis without prebuilt reports and are the sensor for what the team needs next (the dump loop: recurring export → build it in-system → the recurring export retires). Dumps are deliberately NOT reports (§1.2) and never masquerade as one.
- One event journal (ARCHITECTURE.md §2): everything is a computed view over typed events; live by default, stamped with an as-of time when exported.
- Statuses are never manual (DASHBOARDS §5.3): a status is either workflow-derived (the entry IS the work), aging-derived (system assumes after N days), or system-prompted (a task on the user's personal dashboard — "no update in N days, reply with the reason"; the reply becomes the status). No manual status dropdowns anywhere.
Decision tags: R = printable/exportable statement (records, audit; paper prints only at the external boundary — round 25: internal moves are system-approval only) · L = live dashboard tile · RL = both · D = utility dump/export (form listing + filters — explicitly not a report; the dump station, DUMPS.md).
2. The two uploaded reports (decoded 2026-09-02 — reports/; buggy-source caveat above applies — verify the old system's numbers)
2.1 Job-work hishob — "In/Out/Consumption Statement" (per contract)
Source: 20260902-25a21f06-job_work_hishob.pdf (2 pages, contract 3 /
party KEN ENTERPRISES LIMITED, P. Contract No 270052). The format we
reproduce in-system as the per-contract hishob statement (A6). Sections:
| Section | What it carries | Source events |
|---|---|---|
| BEAM INWARD DETAIL | per set: set no, date, design, F.No (flange), beam no, cuts, sizing mtr, RS (reed space), sizing name, production mtr, beam ret.; totals | C1–C3 beam register + D production mtrs |
| Getting / Knotting Less (105.00) — warp mtrs lost at knot join | beam-end/knot events | C5/D5 |
| Shrinkage % (4.52%) = (sized warp mtrs − production mtrs) ÷ sized warp mtrs | sizing mtrs vs production mtrs | C3 + D |
| YARN OPENING DETAIL | per yarn: from-set no, yarn, mill, net wt (opening balances) | B movement events |
| YARN INWARD DETAILS | per inward: GP no, PGPno, date, mill, yarn, bags, cones, net wt, rec. count, cal wt; totals | B2 inward |
| COLTH OUTWARD DETAILS | per dispatch slip: slip no, date, design, pick, tags/rolls, total mtr, fold, fold-less mtr; totals | F2 dispatch |
| YARN CONSUMPTION | per tag-batch: design, yarn, pick, tags, mtrs, consumed kgs | consumed = mtrs × per-mtr req (standard!) |
| SUMMARY | per set no: opening bal, inward, consumed, return/trans, balance; contract totals | the four legs above |
| YARN RETURN / TRANSFER | GP no, date, mill, yarn, bag, net wt, count, cal wt, set no | B5 movements |
| WEFT YARN REQ | count, RS, pick, count, Y Req, wastage %, PER Mtr Yarn Req | costing engine (COSTING.md §2) |
Key math verified: Per Mtr Yarn Req 0.095139 = Y Req 0.090608 × (1 + 5%);
Y Req = pick × RS(m) × (0.5905/Ne)/1000; Consumed = mtrs × Per Mtr Yarn Req (checked 3710×0.095139 = 352.97 ✓, 41817×0.095139 = 3978.43 ✓).
→ The hishob's consumption is at STANDARD rate (engine factor), not
weighed actual — it is a yarn-account statement, not a consumption study.
Balance = opening + inward − consumed − returns/transfers per set; contract
total here −49.47 kg (consumed exceeded yarn given) = the per-contract
hishob difference — the exception this statement surfaces.
Approval (today, from the print): "Any complaint in report, inform within week, otherwise it is considered as accepted by you." In-system version: the statement is generated at the contract's last dispatch; status hishob-pending → hishob-sent (WhatsApp confirm-link to the party) → party Accept or Object (reason + photo) in-system → hishob-accepted → contract closes (PLANNING.md §13 p.2 / §12 flow). Exceptions: balance outside agreed tolerance (short yarn) → flagged on the contract + owner queue; hishob not accepted within N days → follow-up tile.
Placement: the contract screen itself (button "Generate hishob", status chip, objection thread) — RL: live per-contract status + printable statement in exactly this format.
2.2 Actual vs Standard yarn consumption (the why of weft-issue + barcoding)
Source: 20260902-d7f118d0-actual_vs_standard_consumtption.pdf (4 pages,
period 01–31 Aug 2026). Purpose (owner): shows why every weft cone is
barcode-issued to a loom/beam — without that, actual consumption per design
does not exist, only standard estimates.
| Column block | Meaning |
|---|---|
| Party · Type of Loom · Design · Yarn Name · Count | grouping |
| WeftIssue Cone | cones issued to looms in the period (barcode-scanned weft issues, D2) — the ACTUAL basis |
| Physical Diff. Cone | stock-take difference (barcode stock vs physical count) |
| Per Cone Wt · WeftIssue NetWt · WeftIssue CalWt | actual issued kgs (weighed) vs calculated |
| Production Mtr | mtrs produced per party/design in the period |
| Standard Consuma. | mtrs × engine per-mtr weft req (like hishob §2.1) |
| Diff Consuma. | issue wt − standard (positive = over-issue/wastage; negative = saved weft) |
Grand total (Aug): 18,169 cones, physical diff 255 cones, issue net 38,354.29 kg, production 764,226 m, standard 42,527.97 kg, diff −3,594.47 kg — the factory wove with ~3.6 t LESS weft than standard (saved weft → weaver account/transfer, B6). Page 4 rolls up per yarn: diff wt + standard consumption.
Exceptions visible in the data (each becomes an in-system flag): rows with mtrs but zero issue (weft from opening balance/party yarn — must explain); rows with issue but zero mtrs (weft issued late in period); standard = 0 for 20S-SLUB (construction-master gap — flagged so the engine factor is fixed, not silently zero); physical-diff cones → stock-take exception.
Owner's instruction: we build consumption DIFFERENTLY — not a month-end 4-page dump. Placement: at the weft-issue / weaving step (D2, D3): a live per-loom per-beam consumption tile (actual issued vs engine standard, per design), exceptions flagged as they appear (over-limit diff, missing factor, no-issue-but-mtrs), period rollups only as downloads from the same tile. Actual consumption is a D2 by-product, not a report run.
3. Universal form dumps (the dump station — MUST)
Every form ships with a dump export: raw records to CSV/Excel with filters from the form's own fields (date range, party, quality/design, status, and per-form keys — set/beam/lot/loom/vehicle…). One Dump section indexes every form; the same export action sits on each form's list screen. The full per-form filter map, the dump-loop discovery (recurring export → build the analysis in-system → retire the export), formats, and integrity rules are in docs/DUMPS.md. A form without its dump is not done.
4. Placement map — step by step (A→F, +G hooks)
Per step: reports/dashboards placed there (R/L/RL/D), exceptions, approvals. Stage A is reviewed (round 23); stages B–F are initial placement only — exceptions/approvals to be reviewed at their step. Old-software menu names in brackets.
STAGE A — COMMERCIAL (✓ reviewed round 23)
| Step | Placed reports / dashboards | Exceptions (in-system) | Approvals (in-system) |
|---|---|---|---|
| A1 Lead/enquiry (trading) | Lead pipeline tile (commercial board); lead log dump (D) | follow-ups due queue; stuck-lead age | — (capture is autopilot, Phase 4) |
| A1b Job-work contract entry | Contract screen; broker-confirmation document attached (R, print) | OCR-extraction low-confidence queue | contract confirm taps (prefill requires explicit confirm) |
| A2 Requirement calc | Procurement need tile at the requirement screen (Σ demand − free − in-transit) — the buy decision itself, not a dump | nothing-to-procure / over-allocation flags | — |
| A3 Samples / strike-offs | Sample tracker + pending-samples tile (commercial board) | follow-up due; sample not responded | sample charge auto-priced; waiver = explicit owner action |
| A4 Order confirm / SO | SO screen with live balance & delivery position; amendment history on the order (R print, D export) | amendments beyond tolerance (Diff. Mtr./Beam) queue | amendment within tolerance = auto; beyond = owner approve (logged, never rewritten) |
| A5 Hand-off | Pending-references list (approx beams per contract/JW/prod-order → planner taps) | unassigned park-lot aging flag | — |
| A6 Status + hishob | Job-work hishob at the contract (RL — §2.1); per-party yarn-account list; status timeline | balance outside tolerance (short yarn); hishob not accepted in N days | hishob accept/object by party via confirm-link → hishob-accepted closes contract |
STAGE B — YARN (placement; review pending)
Gatepass/intimation/challan prints (R) · yarn stock statement with LOCATION (L+CSV) · Yarn Hishob (ledger = statement, RL) · Yarn hishob difference (RL) · stock-take difference (L) · procurement board (open POs, partial receipts, to-procure). Exceptions/approvals: review at step B.
STAGE C — WARP PREP (placement; review pending)
Sizing tippan print (R) · beam card (R) · sizer reconciliation (RL) · winder reconciliation (RL) · beam in-flight board section (L) · beam-end intimations. Exceptions/approvals: review at step C.
STAGE D — WEAVING (placement; review pending)
Production planning board (L; D1) · weft-issue consumption tile (L — §2.2) · out-house weaver section + rounder capture (L) · daily efficiency register live table (L, read-only — PLANNING §3.4) · beam-end/knot-gat changeover & downtime (L) · weaver reconciliation (RL). Exceptions/ approvals: review at step D.
STAGE E — CHECKING (& PACKING) (placement; review pending)
Checking report at the checking screen (RL — E1) · grade-mix tile today (L) · FG stock by grade (L) · lumps → bales (L). In-house variant graded at MENDING. Exceptions/approvals: review at step E.
STAGE F — DISPATCH (placement; review pending)
Dispatch pre-slip (F1) at planning/office — the plan created earlier, office marks graded rolls/lumps against the order (balance visible) → transporter + guard due-lists tap-load → on completion the final dispatch slip is generated (actuals vs plan, tolerance check) · SO vs delivery position by grade (L) · dispatch pending queue (L) · party-wise delivery performance (L). Print + stamped copies only at the external boundary (buyer crossing, round 25) with role copies (office/transport/ customer) + PDF + confirm-link. Exceptions/approvals: review at step F.
STAGE G — TALLY HOOKS (later)
Voucher exports per BRIDGE contract (yarn booking GST, receipts, dispatch, job-work billing) — D to Tally, never a placed report.
5. Cross-step runtime boards (DASHBOARDS.md §1–2)
Company / per-setup / floor-TV / commercial boards remain the live roll-ups; every tile maps to step events (DASHBOARDS.md §2). A placed report and a board tile share the same underlying aggregate — the report is the downloaded, as-of-stamped view of the tile where the step needs it.
6. Valuation decision — the one open owner decision (unchanged, round 22)
Owner decision pending (PLANNING §13 p.7; BUSINESS.md §4): stock-mode P&L needs FIFO vs weighted-avg; job-work needs none.
- Scope: against-order trading = direct P&L per SO (no valuation); stock & sell trading consumes FG stock → COGS per the chosen method; job-work = conversion income on party material — never valued into our stock (ARCHITECTURE.md §2), only tracked given/WIP/returned + wastage recovery.
- Lane cost per production lot, stored per lot, never aggregated away:
yarn actual (booking/gatepass rate + freight) + conversion actual (sizing + weaving + checking/mending booked to the beam/lot). Yarn rates change daily (rate board exists) — lots of one design differ. - Recommendation: implement both as computed views (the method is a reporting choice, not an architecture decision); formal P&L defaults to weighted-avg per design-quality for Phase 1 (Tally-aligned, no per-lot chain risk), FIFO as the comparison view. Seconds/bales valuation waits on the grade-pricing decision (§13 p.11).
7. Owner inputs — cadence changed to step-by-step
Uploads land at the separate drop /upload-reports (files in
reports/; distinct from the forms/gatepass drop at /upload). With the
step-by-step review, reports arrive per workflow step as we review it.
- Received (2026-09-02): job-work hishob statement (format, §2.1); actual-vs-standard consumption (context, §2.2). Received slips for OCR intake and the reconciliation formats (sizer/winder/weaver) still pending.
- Decisions: valuation default (§5) · GST config per supplier · numbering sequences (FIELDMAP §10 q.17) · LTOL/UTL · grade pricing A/B/C/R · "Booking Entries" meaning · promised-completion vs target-date calendars.
8. Build note
Reports/dashboards/tiles are views over the event journal; print via
daisyUI print CSS; exports CSV/XLSX/PDF with an as-of timestamp
(DASHBOARDS.md §4). Placement is enforced in the screen map: a report that
does not anchor to a workflow screen is a dump (D), not a placed report.
New report screens are added to the full-flow map
(static/full-flow.html) as designed — regenerate per the generator when
the flow changes.
9. Boards added in the design freeze (rounds 37–43) — spec = BOARDS-A.md
| Board (component page) | Where it lives | Key semantics |
|---|---|---|
Capacity bar view (#cap) |
Company | Gantt (days⇄months), in-house + outsourced rows, machine drill, next-order from pipeline quotes (start ≥15d → weaving → check/pack → dispatch), over-run → outsourced JW contract (15d floor, tolerance) |
Cover days (#cov) |
Company | planned-use profile (rise + date), contract-wise drill, Create PO |
Party weft cover (#wf) |
B·Yarn | days of weft stock per party vs running qualities, danger levels, 📲 WhatsApp replenish |
Weft consumption (#wc) |
D·Weaving | DAY-END (24h from issue), count-wise summary incl. production mtrs, drill per count |
Prod-start promise (#pd) |
D·Weaving | promised vs expected start + reasons; JW blocked by weft-not-given |
Fabric quality (#gm) |
E·Checking | packing %, C/R 24h, frequent damages loom-wise / quality-wise |
Mending (#mn) · Checking (#cq) |
E | packing %, C/R 24h with reasons, checking reports 24h (weaver + customer/SO) |
Sell list w/ interest (#sl) |
Stock & sell | value + 1%/mo interest + resultant — the sales tipping point |
SS orders vs stock (#fg) |
Stock & sell | SO ↔ assigned FG, free-floating ready-not-out by stage |
Beam book (#bi) · Sizing (#sj) · Winding (#wd) |
C | beam-wise drills, sizing-outward-wise pending, tippan-no-GP track, wastage % |
| Hishob (#hi) | JW | REPORT w/ final OWNER approval → print/send + bill-hold release (JW, sizing, winding); ⬇PDF/🖨/📲; auto-remove when nothing pending; PDF archive in dump station |
Party yarn (#py) |
JW | contract-end target-vs-actual saving; saved-weft transfer suggestion (nets cross-party use) → user confirms |
Also adopted: every dashboard = period bars; every table = sort/search/ filter; every component = hover + ⓘ What·Data·Who/System; day-end vs live semantics; WhatsApp links to real numbers.