Add Custom Powder Order line item and fix CSV import FinalPrice crash
Custom powder/incoming powder material cost now flows into a separate auto-generated 'Custom Powder Order' line item instead of rolling into individual item prices, so users can add shipping charges before the customer sees the total. A dashed yellow preview card in the wizard shows the material cost and lets users edit the total (including shipping) before saving. After first save the price is user-owned. Also fixes a fatal CSV import crash when FinalPrice contains a non-numeric value (e.g. 'false' from a spreadsheet formula): the job CSV importer now streams rows one at a time with a lenient decimal converter, treating bad values as $0 with a per-row warning instead of aborting the entire import. Updated HelpKnowledgeBase.cs and Help articles (Jobs, Quotes) with Custom Powder Order behavior and a new Data Import / Export section. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -327,11 +327,13 @@ public class PricingCalculationServiceTests
|
||||
|
||||
var result = await service.CalculateQuoteItemPriceAsync(item, companyId: 1);
|
||||
|
||||
Assert.Equal(10m, result.MaterialCost);
|
||||
// Custom powder material ($10) is excluded from the item price — it moves to the
|
||||
// auto-generated "Custom Powder Order" line item so users can add shipping.
|
||||
Assert.Equal(0m, result.MaterialCost);
|
||||
Assert.Equal(30m, result.LaborCost);
|
||||
Assert.Equal(0m, result.EquipmentCost);
|
||||
Assert.Equal(70m, result.UnitPrice);
|
||||
Assert.Equal(140m, result.TotalPrice);
|
||||
Assert.Equal(65m, result.UnitPrice); // catalog $50 + prep $15/unit
|
||||
Assert.Equal(130m, result.TotalPrice);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user