Commit graph

182 commits

Author SHA1 Message Date
Arthur Bassi
8614f9415c feat(work-orders): relocate dispatcher filter under the title (SH-242)
Place dispatcher scoping under the Work Orders heading as a plain
trigger so the week/day bar stays boxed, without changing board params.
2026-08-20 15:53:03 -03:00
Arthur Bassi
4c9f8b7d81 fix(work-orders): treat vendor save as a live company assignment
Clear leftover primary dispatch status on vendor patch so Completed is not
blocked after a new company is chosen. Keep Jira keys out of source comments.
2026-08-20 14:17:20 -03:00
Arthur Bassi
72de2ea78d
Merge branch 'dev' into fix/sh-183-closability-company-not-tech 2026-08-20 13:40:53 -03:00
Alexandre Brandizzi
ef04008fa2
Merge branch 'dev' into feat/sh-249-fe-trades 2026-08-20 13:25:09 -03:00
Arthur Bassi
a156db70bc
Merge branch 'dev' into fix/sh-183-closability-company-not-tech 2026-08-20 13:24:51 -03:00
Alexandre Brandizzi
4d8e86b264
Merge branch 'dev' into feat/sh-249-fe-trades 2026-08-20 11:48:07 -03:00
Arthur Bassi
75c82e90a5
Merge branch 'dev' into feat/sh-241-wo-day-pagination 2026-08-20 11:37:01 -03:00
Arthur Bassi
5195749623
Merge branch 'dev' into fix/sh-183-closability-company-not-tech 2026-08-20 11:32:09 -03:00
Arthur Bassi
e6567c2c0a
Merge branch 'dev' into feat/sh-241-wo-day-pagination 2026-08-20 11:26:47 -03:00
Alexandre Brandizzi
3141adba13
Merge branch 'dev' into feat/sh-254-fe-deactivate-confirm 2026-08-20 11:24:12 -03:00
Arthur Bassi
91f30304a2 Merge branch 'dev' into feat/sh-241-wo-day-pagination 2026-08-20 11:16:17 -03:00
Alexandre Brandizzi
326ac18eb0
Merge branch 'dev' into feat/sh-254-fe-deactivate-confirm 2026-08-20 11:15:10 -03:00
Codex Review Integration
aebb2c6b1a Merge remote-tracking branch 'origin/dev' into feat/sh-253-vendor-detail-parity
# Conflicts:
#	src/test/app/(protected)/vendors/vendor-detail-drawer.test.tsx
2026-08-20 11:14:51 -03:00
Arthur Bassi
23a80a7a14 Merge branch 'dev' into fix/sh-183-closability-company-not-tech 2026-08-20 11:08:36 -03:00
Alexandre Brandizzi
98daf9832d
Merge branch 'dev' into feat/sh-255-deactivate-toggle-gate 2026-08-20 11:06:54 -03:00
Arthur Bassi
ee5eae8927 fix(work-orders): page-aware flash and Unassigned search empty (SH-241)
Empty search waits until the Unassigned queue has settled.

Reschedule selects the destination day's page before flashing the row.
2026-08-20 11:00:25 -03:00
Alexandre Brandizzi
fc63948d4e
Merge branch 'dev' into feat/sh-254-fe-deactivate-confirm 2026-08-20 10:58:38 -03:00
Alexandre Brandizzi
4e36396868
Merge branch 'dev' into feat/sh-253-vendor-detail-parity 2026-08-20 10:58:34 -03:00
Alexandre Brandizzi
8684cb6c8b
Merge branch 'dev' into feat/sh-255-deactivate-toggle-gate 2026-08-20 10:58:31 -03:00
Alexandre Brandizzi
22bd392794
Merge branch 'dev' into feat/sh-249-fe-trades 2026-08-20 10:58:29 -03:00
Alexandre Brandizzi
8edcb6659d
Merge branch 'dev' into feat/sh-250-fe-additive-add 2026-08-20 10:58:26 -03:00
Arthur Bassi
e9b00bab57 fix(work-orders): ignore inactive primary dispatch on board closability (SH-183)
Board Completed must not treat Cancelled/Canceled/Refused leftover vendorId as a live company assignment.
2026-08-20 10:52:43 -03:00
Arthur Bassi
be975c792c fix(work-orders): wait for Unassigned queue before empty search (SH-240)
Keep SH-165 loading and error visible instead of a premature empty-search shell.
2026-08-20 10:28:04 -03:00
Arthur Bassi
0c514c9bad feat(work-orders): add per-day board pagination (SH-241)
Paginate the selected day's WOs client-side with AAP footer controls.
2026-08-20 10:08:34 -03:00
Arthur Bassi
0c75bd42f4 fix(work-orders): keep search and reschedule on the selected day (SH-240)
Empty search and Schedule On must follow the day-tab board, not the whole week or Unscheduled.
2026-08-20 09:21:45 -03:00
Arthur Bassi
2c14b08945 feat(work-orders): day-scoped week navigation (SH-240)
Let dispatchers pick one week and one weekday so the board
replaces rows instead of stacking the full week.
2026-08-19 14:45:59 -03:00
Codex Review Integration
22b03b8ac0 fix(vendors): deactivation dialog follows the approved design (SH-254)
The dialog's wording, its actions and its behaviour all diverged from the
design prototype. It refused deactivation outright when the vendor had
open work orders, which SH-44 and SH-82 left as an open question rather
than a decided requirement.

Deactivation with open work orders now proceeds on explicit confirmation:
the design's title and body copy, the affected work orders listed as
links, and "Deactivate anyway" in place of a disabled button. The API
call carries confirmOpenWorkOrders so the server-side guard is cleared
deliberately rather than removed.
2026-08-19 13:36:37 -03:00
Codex Review Integration
038ce263da fix(vendors): vendor detail parity with the design prototype (SH-253)
Three divergences in the vendor detail drawer:

- The header rendered the company as a subtitle under a title that had
  already fallen back to the company, printing the same name twice when
  the row carried no technician. The subtitle is now dropped when it
  would repeat the title.
- The Google Maps link appeared only when a URL was stored, unlabelled,
  so an empty value left no trace of the field. It is now a labelled
  field below Address that reads em-dash when unset, as every other
  field in the panel does.
- The status sat immediately beside Total Jobs. It now sits opposite it
  at the right edge, and reuses the vendors table's dot-plus-text badge
  so the state never reads by colour alone.
2026-08-19 13:22:11 -03:00
Codex Review Integration
90a5256dee fix(vendors): gate deactivation prompt on saved status (SH-255)
The drawer's Active toggle asked to deactivate whenever the switch moved
from on to off, reading the unsaved form value. An inactive vendor toggled
on and back off without saving therefore raised "Deactivate this vendor"
for a vendor that was already inactive.

Gate on the persisted technician status from the loaded roster instead,
falling back to the clicked row. Deactivation is a property of the saved
vendor, not of the toggle.
2026-08-19 13:18:17 -03:00
Arthur Bassi
1554cf30d0 fix(work-orders): require vendor company not technician to complete (SH-183) 2026-08-19 11:49:19 -03:00
Arthur Bassi
afdf667364
Merge branch 'dev' into feature/wo-multi-poc-contacts 2026-08-19 10:29:18 -03:00
Alexandre Brandizzi
a71407b426
Merge branch 'dev' into feat/sh-250-fe-additive-add 2026-08-19 10:28:04 -03:00
Alexandre Brandizzi
13d9aa2034
Merge branch 'dev' into feat/sh-249-fe-trades 2026-08-19 10:28:01 -03:00
Codex Review Integration
1305bf35dd fix(vendors): bypass the query cache when reloading after a conflict (SH-250)
The reload fix re-seeded the form from queryClient.fetchQuery, which inherits the
global 5-minute staleTime. A 409 never invalidates that key -
useSaveVendorCompanyRoster invalidates only in onSuccess and its onError returns
early for conflicts - and the Add flow has no mounted observer on it, so reload
returned the cached roster with the same stale rowVersion and every retry 409'd
again. Update mode was unaffected because it recovers via query.refetch(), which
bypasses staleTime.

Pass staleTime: 0 on that fetch, since its sole purpose is the freshest
rowVersion. The regression test uses a client with the app's real staleTime; the
default test client uses 0, which masked this entirely.
2026-08-19 10:26:28 -03:00
Arthur Bassi
15dbda3c8f
Merge branch 'dev' into feature/sh-114-wo-closability-gate 2026-08-19 09:43:05 -03:00
Arthur Bassi
5718ca2b92
Merge branch 'dev' into feature/wo-multi-poc-contacts 2026-08-19 09:42:54 -03:00
Arthur Bassi
28846a0c5a test(work-orders): add additionalContacts to uplift affordances fixture after merging origin/dev 2026-08-19 09:40:22 -03:00
Arthur Bassi
d534e92d03
Merge branch 'dev' into feature/wo-advanced-filters-parity 2026-08-19 09:33:07 -03:00
Arthur Bassi
a75b094564
Merge branch 'dev' into feature/wo-multi-poc-contacts 2026-08-19 09:32:29 -03:00
arthur.bassi
1485903898 merge(dev): resolve SH-114 closability conflicts with uplifts overlays 2026-08-19 09:28:05 -03:00
arthur.bassi
9801d6a50e chore(work-orders): merge origin/dev and keep both search date windows
Keep SH-121 all-weeks constants and the SH-165 unassigned Custom range.
2026-08-18 22:13:51 -03:00
arthur.bassi
c2a7044905 test(work-orders): add additionalContacts to Unassigned/uplift fixtures after merging origin/dev 2026-08-18 21:53:37 -03:00
arthur.bassi
081d9b67c6 Merge remote-tracking branch 'origin/dev' into feature/wo-multi-poc-contacts
# Conflicts:
#	src/test/domain/work-orders/mappers/work-order-mapper.test.ts
2026-08-18 21:52:04 -03:00
arthur.bassi
fe86d46bec Merge remote-tracking branch 'origin/dev' into feature/wo-uplifts-column-and-tab
# Conflicts:
#	src/domain/work-orders/mappers/work-order-table-row-mapper.ts
#	src/domain/work-orders/types/work-order-table-row.ts
2026-08-18 21:42:53 -03:00
arthur.bassi
ce6e19ebaa Merge remote-tracking branch 'origin/dev' into feature/sh-114-wo-closability-gate
# Conflicts:
#	src/app/(protected)/workorders/_components/list/table/cells/status-cell.tsx
#	src/domain/work-orders/utils/wo-closability.ts
#	src/test/domain/work-orders/utils/wo-closability.test.ts
2026-08-18 21:18:49 -03:00
arthur.bassi
07c8c72ee6 Merge remote-tracking branch 'origin/dev' into feat/SH-165-unscheduled-pin 2026-08-18 20:53:13 -03:00
arthur.bassi
2554e40fd8 test(work-orders): assert all-weeks total and Clear All restores the bar 2026-08-18 18:13:43 -03:00
Alexandre Brandizzi
5ad13d38ca
Merge branch 'dev' into feature/sh-114-wo-closability-gate 2026-08-18 17:46:59 -03:00
Alexandre Brandizzi
2c10d2b7cb
Merge branch 'dev' into feature/wo-advanced-filters-parity 2026-08-18 17:46:53 -03:00
Alexandre Brandizzi
0de695362a
Merge branch 'dev' into feat/sh-250-fe-additive-add 2026-08-18 17:46:49 -03:00