MEGAINFRA-WEBAPP/scripts
DEls a41653ce87 fix(dn): date deliveries by the slip and orders by the PO's order date
The reader always read the slip date (and receiver, site name, customer
VAT, supplier registration), but dn_batch_notes never had those fields,
so they were dropped on save and every receipt was dated the moment it
was posted. The Financial dashboard dated orders by upload date, so 24
of 41 POs (R7.08M) sat in no month and deliveries piled up in the month
they were booked: 'R1.1M ordered, R2.4M delivered'.

- scripts/pb-add-dn-dates.py: adds the five header fields,
  delivery_notes.posted_at and purchase_orders.order_date (applied).
- scripts/dn-backfill-dates.py: filled 270 documents from the stored
  readings, moved 192 receipts to their slip date (booking time kept in
  posted_at) and read 36 PO order dates from the PDFs (applied; replaced
  values in docs/audits/2026-10-11-dates-backfill-backup.json).
- Posting refuses a slip without a delivery date instead of using today;
  receipts record posted_at. The review page shows the date and locks
  Post with a plain message when it is missing.
- PO intake reads 'PO Creation Date' from the PDF text (pdftotext).
- Dashboard tile and monthly chart date orders by order_date only; an
  order without one is undated, never put on its upload month.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 00:35:00 +02:00
..
data/backups/2026-10-09-paid-hours chore(clock): keep the pre-recalc paid-hours backups 2026-10-11 00:03:35 +02:00
migrations feat(clock): pay against the real work schedule 2026-10-09 19:51:24 +02:00
n8n Integrate agent work and add dashboard attention indicators 2026-10-04 21:53:32 +02:00
backfill-fuel-log-previous-reading.py feat: add employee search and save pending fleet updates 2026-09-30 00:42:38 +02:00
build-icons.mjs feat(clock): replace icon with clock-on-cube design + OG share preview 2026-09-13 21:55:40 +02:00
build-og-image.mjs Add Open Graph image + social link preview metadata 2026-08-09 20:01:13 +02:00
check-connections.mjs feat: add remote purchasing MCP to existing app 2026-10-05 02:46:36 +02:00
clear-site-rows.py feat: add employee search and save pending fleet updates 2026-09-30 00:42:38 +02:00
compare-dn-pipelines.mts fix(dn): let staged ingestion run against the real PocketBase schema 2026-09-20 23:49:58 +02:00
dn-backfill-dates.py fix(dn): date deliveries by the slip and orders by the PO's order date 2026-10-11 00:35:00 +02:00
dn-board.mts chore(dn): add two read-only checks for the staged rollout 2026-09-21 01:00:44 +02:00
dn-replay-review.mts Integrate agent work and add dashboard attention indicators 2026-10-04 21:53:32 +02:00
dn-snapshot.mts chore(dn): add two read-only checks for the staged rollout 2026-09-21 01:00:44 +02:00
download-all-delivery-notes.py fix(dn-pipeline): enhance product resolution by incorporating article numbers 2026-09-17 22:59:09 +02:00
generate-mcp-key.mjs feat: add remote purchasing MCP to existing app 2026-10-05 02:46:36 +02:00
generate-plant-hours-template.ts fix(plant-hours-template): ESM-safe __dirname + freeze note 2026-08-28 12:55:08 +02:00
mcp-staging-smoke.mjs feat: add remote purchasing MCP to existing app 2026-10-05 02:46:36 +02:00
mcp-staging-smoke.test.mjs feat: add remote purchasing MCP to existing app 2026-10-05 02:46:36 +02:00
migrate-delivery-notes-ocr.py feat(delivery-notes): enhance delivery note upload and processing 2026-08-26 15:33:30 +02:00
migrate-dn-item-units.py chore: final review polish (trailing newlines, JSDoc, changelog tense) 2026-09-17 12:49:37 +02:00
migrate-plant-hours-backfill-vehicle.py refactor(plant): enhance PlantPage and PlantView for fuel log integration 2026-09-02 12:36:10 +02:00
patch-next-dev-blocker.cjs Fix Coolify build: skip postinstall in deps stage 2026-08-09 02:29:48 +02:00
pb-add-ask-collections.py fix(ask): migrate created/updated to autodate, sort ties by id 2026-09-27 03:05:23 +02:00
pb-add-dn-alias-keys.py fix(dn-pipeline): key aliases on what actually identifies a product 2026-09-17 22:47:55 +02:00
pb-add-dn-batch-uploaded-at.py fix(scripts): backfill uploaded_at from real sources, add a dry run 2026-09-17 21:25:33 +02:00
pb-add-dn-batches.py fix(dn-batches): heal created/updated fields on existing live collections 2026-09-17 15:17:17 +02:00
pb-add-dn-dates.py fix(dn): date deliveries by the slip and orders by the PO's order date 2026-10-11 00:35:00 +02:00
pb-add-dn-doc-type.py feat(dn-pipeline): classify document type instead of assuming delivery note 2026-09-17 21:45:08 +02:00
pb-add-dn-item-aliases.py feat(dn-pipeline): add the remembered product alias table 2026-09-17 21:34:37 +02:00
pb-add-dn-item-units.py feat(delivery-notes): add qty_raw/unit_raw/unit_converted to line items 2026-09-17 12:07:59 +02:00
pb-add-dn-note-dismissed.py feat(dn-batches): dismiss a single duplicate note, and stop erasing promoted counts 2026-09-18 00:44:57 +02:00
pb-add-dn-open-pages.py fix(delivery-notes): a stray page no longer condemns good notes 2026-09-17 21:49:16 +02:00
pb-add-dn-staged-ingestion.py Integrate agent work and add dashboard attention indicators 2026-10-04 21:53:32 +02:00
pb-add-employee-rates.py feat(workforce): add rate history and missing-rate editor 2026-10-07 13:19:50 +02:00
pb-add-fuel-prices.py feat(dashboard): enhance operations dashboard with rain outlook and coordinate support 2026-09-06 19:59:52 +02:00
pb-add-sick-note-ranges.py feat(workforce): add timesheet exports and duplicate protection 2026-10-07 23:53:47 +02:00
pb-add-sick-notes.py feat(workforce): add timesheet exports and duplicate protection 2026-10-07 23:53:47 +02:00
pb-add-site-coordinates.py feat(dashboard): enhance operations dashboard with rain outlook and coordinate support 2026-09-06 19:59:52 +02:00
pb-add-site-job-start-date.py feat(dashboard): enhance operations dashboard with rain outlook and coordinate support 2026-09-06 19:59:52 +02:00
pb-add-worker-status.py feat(workforce): add active and inactive workers 2026-10-07 13:41:05 +02:00
pb-backup-collection.py feat(dashboard): enhance operations dashboard with rain outlook and coordinate support 2026-09-06 19:59:52 +02:00
pb-bootstrap-schema.py feat(clock): fix a missing clock-in from Needs attention 2026-10-09 12:57:09 +02:00
pb-deduplicate-timesheets.py feat(workforce): add timesheet exports and duplicate protection 2026-10-07 23:53:47 +02:00
pb-delete-fixed-costs.py feat(dashboard): enhance operations dashboard with rain outlook and coordinate support 2026-09-06 19:59:52 +02:00
pb-enable-batch-api.py fix(dn): let staged ingestion run against the real PocketBase schema 2026-09-20 23:49:58 +02:00
pb-relax-dn-zero-fields.py fix(dn): let staged ingestion run against the real PocketBase schema 2026-09-20 23:49:58 +02:00
pb-relax-rules.py feat(clock): review missed scan-outs without changing phone flow 2026-09-25 07:27:12 +02:00
pb-show-fixed-costs.py feat(dashboard): enhance operations dashboard with rain outlook and coordinate support 2026-09-06 19:59:52 +02:00
pb-show-sites.py feat(dashboard): enhance operations dashboard with rain outlook and coordinate support 2026-09-06 19:59:52 +02:00
pb_env.py feat(dashboard): enhance operations dashboard with rain outlook and coordinate support 2026-09-06 19:59:52 +02:00
randomize-site-coords.py feat: add employee search and save pending fleet updates 2026-09-30 00:42:38 +02:00
tmp-w.mts feat: add employee search and save pending fleet updates 2026-09-30 00:42:38 +02:00