spouliot
711cd01cd3
Add CRM features: Outstanding Pickups, Customer Notes, Clone Job, Preferred Powders
...
- Outstanding Pickups card on Customer Details shows jobs awaiting pickup with age badges
- Customer Notes log: inline add/delete notes with important flag, AJAX-backed
- Clone Job action on Jobs controller; Repeat Last Job button on Customer Details quick actions
- Preferred Powders per customer: typeahead inventory search, AJAX add/remove
- CustomerPreferredPowder entity + migration; unit tests for CRM stats/timeline logic
- Fix EF Core concurrency bug: parallel Task.WhenAll FindAsync replaced with sequential awaits
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-09 19:59:32 -04:00
..
2026-04-23 21:38:24 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-25 09:43:41 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-23 09:27:45 -04:00
2026-05-25 09:43:41 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-23 09:27:45 -04:00
2026-05-25 09:43:41 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-06-02 09:24:02 -04:00
2026-05-26 20:28:08 -04:00
2026-05-20 21:37:10 -04:00
2026-05-23 09:27:45 -04:00
2026-06-09 19:59:32 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-23 09:27:45 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-06-01 09:02:07 -04:00
2026-05-23 09:27:45 -04:00
2026-04-28 21:10:47 -04:00
2026-06-01 23:05:47 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-06-08 16:48:04 -04:00
2026-06-09 08:58:09 -04:00
2026-06-09 19:59:32 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-12 09:03:18 -04:00
2026-05-23 09:27:45 -04:00
2026-05-12 21:40:16 -04:00
2026-05-26 19:53:13 -04:00
2026-05-20 21:37:10 -04:00
2026-05-10 19:04:10 -04:00
2026-05-23 09:27:45 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-25 09:43:41 -04:00
2026-05-20 21:37:10 -04:00
2026-06-08 14:48:28 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-06-01 09:02:07 -04:00
2026-05-23 09:27:45 -04:00
2026-05-20 21:37:10 -04:00
2026-05-25 09:43:41 -04:00
2026-05-27 21:54:51 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-25 09:43:41 -04:00
2026-05-26 19:53:13 -04:00
2026-05-23 09:27:45 -04:00
2026-05-23 09:27:45 -04:00
2026-05-23 09:27:45 -04:00
2026-05-27 09:30:39 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-20 21:37:10 -04:00
2026-05-23 09:27:45 -04:00
2026-05-23 09:27:45 -04:00
2026-05-23 09:27:45 -04:00
2026-05-25 09:43:41 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00