Commit graph

392 commits

Author SHA1 Message Date
Arthur Bassi
776d3ebd9c
Merge branch 'dev' into feat/sh-244-advanced-filter-fields 2026-08-20 22:07:10 -03:00
Arthur Bassi
1d9f3c3637 test(work-orders): drop Jira keys from advanced filter test names
Keep ticket identity on the branch and PR, not in Playwright or Vitest titles.
2026-08-20 22:02:59 -03:00
Codex Review Integration
f0f3485bee fix(vendors): preserve status during roster edits 2026-08-20 20:59:27 -03:00
Codex Review Integration
146491fafb fix(vendors): persist technician removal 2026-08-20 20:43:52 -03:00
Arthur Bassi
93ab14abf3 feat(work-orders): add SH-244 advanced filter fields and AAP indicator styles 2026-08-20 18:34:29 -03:00
Alexandre Brandizzi
35bfb9b7c8 fix(vendors): correct roster validation and editing 2026-08-20 18:25:34 -03:00
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
9a347a67fb test(work-orders): pin vendor PATCH producer row onto closability 2026-08-20 15:39:39 -03:00
Arthur Bassi
d8da3a5048 test(work-orders): pin vendor PATCH response as live company assignment
Round-trip: board PATCH emits vendorId only; a Pending response keeps Completed
unblocked, while a leftover Refused response still raises Missing: Company.
2026-08-20 15:09:35 -03:00
Arthur Bassi
972e5913f3 fix(work-orders): treat vendor status overlay as local-only on board patch
Board PATCH persists vendorId only. primaryDispatchStatus is optimistic until
the producer returns a live dispatch after vendor save.
2026-08-20 14:47:04 -03:00
Arthur Bassi
493104c56d fix(work-orders): narrow vendor patch type for inline drafts
Vendor assignment patch must not carry table-row status, which blocked tsc
because Canceled is not a draft status.
2026-08-20 14:29:57 -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
Arthur Bassi
f77428ab19 fix(work-orders): map only official primaryDispatchStatus (SH-183)
Drop undocumented board aliases so the Completed gate matches the backend DTO field.
2026-08-20 13:22:12 -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
1a54cbd2af
Merge branch 'dev' into feat/sh-240-week-day-nav 2026-08-20 09:44:33 -03:00
Arthur Bassi
959dda08fe fix(work-orders): stack week selector with day tabs in the filter bar
Keep SH-240 nav grouped under the type row and coerce the Live badge for JSX &&.
2026-08-20 09:40:02 -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
854267e213 test(work-orders): keep Verified and Completed as live company assignment (SH-183)
Cancelled/Canceled/Refused stay inactive; verified or completed dispatches still
gate Complete on the vendor that did the work.
2026-08-19 15:16:23 -03:00
Arthur Bassi
b3899d2a51 Merge branch 'dev' into fix/sh-183-closability-company-not-tech 2026-08-19 15:14:45 -03:00
Arthur Bassi
e3b8360a68 fix(work-orders): treat Canceled and Refused dispatches as inactive (SH-183)
Backend returns Cancelled, Canceled, and Refused; only Cancelled was skipped,
so Complete stayed enabled with no live vendor.
2026-08-19 15:04:50 -03:00
Arthur Bassi
8ab56d9782 refactor(work-orders): extract WoTable loading and empty shells
Keep the list table under the changed-file function length gate.
2026-08-19 14:48:04 -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
Adam Moussa
d5a04d318a
Merge branch 'dev' into feat/sh-245-login-parity 2026-08-19 11:03:37 -04:00
Arthur Bassi
a43de20ed4 fix(work-orders): ignore cancelled dispatches in detail closability (SH-183) 2026-08-19 12:02: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