8f11e00a0a
When multiple jobs need the same powder, the 'Powder in Queue to be Ordered' panel now collapses them into a single line (summed lbs) rather than showing one row per coat. 'Mark as Ordered' marks all contributing coats at once and injects each into the 'Awaiting Receipt' panel individually so per-coat receiving still works unchanged. - Add PowderOrderJobRefDto; PowderOrderLineDto gains CoatIds + Jobs lists (scalar CoatId/JobId/etc. become computed accessors for backward compat) - MapPowderOrderGroupsMerged: secondary GroupBy on (ColorName, ColorCode, Finish, SKU) within vendor group for the 'needed' panel - MapPowderOrderGroups kept per-coat for the 'awaiting receipt' panel - MarkPowderOrdered accepts comma-separated coatIds, returns coats array - Dashboard view: Customer column loops job refs for merged rows; JS posts coatIds and iterates data.coats to populate awaiting-receipt panel Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>