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
Arthur Bassi
23a80a7a14
Merge branch 'dev' into fix/sh-183-closability-company-not-tech
2026-08-20 11:08:36 -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
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
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
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
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
Alexandre Brandizzi
a71407b426
Merge branch 'dev' into feat/sh-250-fe-additive-add
2026-08-19 10:28:04 -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
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
0182345ba3
refactor(work-orders): address SH-114 review naming and utils placement
2026-08-19 09:28:32 -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
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
93df28335f
fix(work-orders): keep SH-196 uplift mapping typed after merging origin/dev
2026-08-18 21:44:55 -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
Codex Review Integration
4449e49149
fix(work-orders): align detail type mapping with Add-On indicator (SH-114)
...
Merging dev broke this branch: SH-126/SH-184 made Add-On a backend-authoritative
indicator (isAddOn) and removed it from the WOType union, but
read-detail-closability-fields still accepted "Add-On" and mapped "AddOn" onto
it, so tsc failed on both the mapper and the closability test.
Drop Add-On from the detail type set so a legacy payload normalizes to "", and
cover the normalization directly instead of asserting it through
detailToClosabilityInput, which only forwards the already-typed value.
2026-08-18 17:53:41 -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
arthur.bassi
bea2858c81
fix(work-orders): search all weeks when advanced filters are applied
2026-08-18 17:40:47 -03:00
Codex Review Integration
9a066092b3
fix(vendors): correct additive add reload, phone and contact (SH-250, SH-246)
...
Three review findings on the additive add path:
- Create-mode reload refreshed selectedRoster (including rowVersion) but left
the form company fields on their pre-conflict values, so a retry diffed stale
fields against the reloaded roster and could overwrite the concurrent company
update that caused the 409. Reload now resets the form from the fresh roster,
matching the select path.
- mapVendorRosterAdditivePatchToBackend copied companyFields verbatim while the
reconcile write mapper canonicalizes companyPhone, so PATCH and PUT could send
different phone shapes for the same input.
- emptyRosterTechnician seeded preferredContact "Phone" even though that
control was removed from the form, so filling the first blank row submitted a
fabricated value. append already omitted it; both paths now agree.
2026-08-18 17:28:48 -03:00
arthur.bassi
a109a68f40
fix(work-orders): keep SH-188 tooltip when mixed with other gaps
...
Stop copying WO lifecycle status into uplift primaryStatus on flat board rows.
2026-08-18 17:28:14 -03:00
Codex Review Integration
9624c264de
fix(vendors): send only user-edited company fields on additive add (SH-250)
...
Adversarial review found a last-writer-wins window: after a stale 409 the
roster is refetched while the form keeps its pre-conflict values, so the
form-vs-roster diff resent our stale value for any company field another
user changed in that window, silently reverting their edit.
Transmit only fields the user actually edited, taken from react-hook-form
dirty state. Selecting a company calls reset(), so loaded values are never
dirty and only genuine edits are sent.
dirtyFields is resolved during render: formState is a Proxy that only tracks
properties read at render time, so reading it inside the submit callback
returned empty. The vendors E2E caught that; unit tests could not, since
they pass the flags in directly.
2026-08-18 14:42:01 -03:00
arthur.bassi
090130a2c0
chore(work-orders): merge origin/dev into uplifts PR
...
Keep upliftSummary fixtures and add isAddOn after the Add-On indicator landed on dev.
2026-08-18 13:24:21 -03:00
arthur.bassi
0c2ef6ac5e
merge origin/dev into feature/wo-multi-poc-contacts
...
Use the extracted inline Schedule On cell from dev and keep additional-contacts fixtures complete.
2026-08-18 13:19:45 -03:00
arthur.bassi
dc9e146080
merge origin/dev into feat/SH-165-unscheduled-pin
...
Keep SH-165 non-terminal lifecycle statuses next to the Add-On type mapping from dev.
2026-08-18 13:19:44 -03:00
Codex Review Integration
a710e21281
fix(vendors): additive technician add for existing companies (SH-250, SH-246)
2026-08-18 13:09:33 -03:00
arthur.bassi
bf1def809b
chore(work-orders): merge origin/dev into SH-188 closability gate
...
Keep PastDueStatusCell extraction and SH-185 Schedule On copy from merged #102 .
2026-08-18 12:01:23 -03:00
arthur.bassi
d93ae683c7
fix(work-orders): restore additionalContacts contract and name+phone extras (SH-218)
...
Document the backend #66 producer, drop incomplete extras from persist, and show the same required-field errors on POC 2+.
2026-08-18 10:03:14 -03:00
arthur.bassi
b60d0474bc
fix(work-orders): keep admin-approved revoke off the WO dialog (SH-214)
...
SH-214/SH-212 own that action on Uplift Approvals; the WO surface only revokes the requester's auto-approved uplift.
2026-08-18 09:28:49 -03:00
Arthur Bassi
8d1a3340a8
fix(work-orders): align Past Due overlay and copy to Schedule On (SH-185)
...
Dispatchers were told to change Due Date, which cannot clear Past Due.
Drive the table overlay from Schedule On and match the 422 contract.
2026-08-18 09:20:18 -03:00
arthur.bassi
958467fe40
fix(work-orders): load SH-165 Unassigned queue from global board search
2026-08-17 14:57:39 -03:00
arthur.bassi
e1667702e1
chore(work-orders): merge origin/dev into SH-165 Unassigned pin
2026-08-17 14:39:19 -03:00
Arthur Bassi
260f57ff23
chore(work-orders): merge origin/dev into SH-121 advanced filters
2026-08-17 14:21:09 -03:00
arthur.bassi
0d609124d1
fix(work-orders): omit extraServices on create and persist slide-over POCs (SH-218)
2026-08-17 14:12:25 -03:00
arthur.bassi
1e88c3d039
chore(work-orders): merge origin/dev and keep SH-218 additional POCs
2026-08-17 14:05:49 -03:00