Intranet · Footfall (flows) & Yardi upload

Daily visitor-flow figures for the centre — footfall, cars, cinema admissions, plus day flags (open, bank holiday, comparable) — entered day by day or bulk-imported from a spreadsheet, with an optional Yardi upload.

AreaIntranet
Routesintranet.flows · intranet.flows.index · intranet.flows.import
Centre modulesflows · intranet · intranet-yardi
Staff levelsroot · admin · manager · scmanager · owner
Modelsintranet-flow · load · yardi-upload
UI labeltitle.header.footfall / menu.navbar.footfall
Coverage4 use cases · 2 happy · 5 failure

How it works

selectNextDay makes sequential daily entry fast, and isValidate/total give immediate feedback. The import warns about a real data-quality trap in its own copy: every field must carry an amount, zero included, because blank cells are not treated as zero (intranet.flow.import_warning_errors). Date-range filtering validates ordering locally (intranet.flows.index.date-error). The Yardi upload is behind yardiIsEnabled with its own modal (openModalYardi/uploadYardi).

Use cases

Why someone opens this (4)

  • Recording yesterday’s footfall, car-park entries and cinema admissions.
  • Loading a month of footfall exported from the counting system.
  • Marking bank holidays and comparable days so year-on-year analysis is fair.
  • Pushing footfall to Yardi alongside sales.

Path map

flowchart LR
    F(["Footfall flows and Yardi upload"]):::feat
    F --> H1["Daily figures entered"]:::ok
    F --> H2["Month imported"]:::ok
    F -.-> X1["Blank cells in the import"]:::bad
    F -.-> X2["Date range reversed"]:::bad
    F -.-> X3["Save fails"]:::bad
    F -.-> X4["Yardi upload fails"]:::bad
    F -.-> X5["Module off"]:::bad
    classDef feat fill:#26688f,stroke:#26688f,color:#ffffff,font-weight:bold
    classDef ok fill:#e3f1ea,stroke:#0d6b42,color:#0d4a2e
    classDef bad fill:#f7e6e2,stroke:#9a2d1c,color:#6e1f13

Happy paths

Daily figures entered

  1. User opens Footfall and selects the date.
  2. Enters footfall, cars and cinema figures and ticks the day flags.
  3. submit saves and info.footfall.success.message confirms.
  4. selectNextDay moves to the following day for the next entry.

Month imported

  1. User downloads the example, fills every numeric cell (zeros included) and imports.
  2. Columns map to date, footfall, cars, cinemas and the day flags.
  3. The import runs and the figures appear in the list.

Failure paths

QA checklist

Tick these off while regression-testing this feature. The boxes are plain Markdown, so progress is visible in git diffs.

  • ✅ Daily figures entered
  • ✅ Month imported
  • ⛔ Blank cells in the import
  • ⛔ Date range reversed
  • ⛔ Save fails
  • ⛔ Yardi upload fails
  • ⛔ Module off

Implementation


Generated from doc/feature-inventory.json · id intranet-footfall · commit 276788ca6