Add AI Quick Quote widget and inline customer reassignment

- New AI Quick Quote floating button: staff type a verbal description to
  get an instant price estimate for phone/walk-in customers; detected
  color names are fuzzy-matched against inventory for stock status;
  saves draft quote under a Walk-In / Phone customer with one click
- Inline customer change on Quote Details and Job Details: always-visible
  native select with inline confirmation banner (no TomSelect dependency);
  ChangeCustomer AJAX endpoints on QuotesController and JobsController
- Quote Edit page: customer dropdown is now editable (lock removed)
- Fix AutoMapper missing CatalogCategory -> UpdateCategoryDto mapping
  that caused a crash on the catalog category Edit page
- Help docs and AI knowledge base updated for all three features

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-24 17:02:03 -04:00
parent fc9ddc6d17
commit 8d94013895
18 changed files with 1611 additions and 37 deletions
@@ -37,6 +37,9 @@ namespace PowderCoating.Application.Mappings
.ForMember(dest => dest.SubCategories, opt => opt.Ignore())
.ForMember(dest => dest.Items, opt => opt.Ignore());
// CatalogCategory -> UpdateCategoryDto (reverse mapping for Edit GET)
CreateMap<CatalogCategory, UpdateCategoryDto>();
// UpdateCategoryDto -> CatalogCategory
CreateMap<UpdateCategoryDto, CatalogCategory>()
.ForMember(dest => dest.CompanyId, opt => opt.Ignore())