Add pricing breakdown and powder pre-fill to Job Details; surface voided invoice history
- Job Details: collapsible internal pricing breakdown card mirrors quote details breakdown (items subtotal, shop supplies, discount, rush fee, tax, total) - Job Details: voided invoice history section shows previous invoices instead of hiding them - Complete Job modal: pre-fills powder usage from QR-scanned / manually logged entries so staff don't double-log; consumes pre-logged credit per InventoryItemId before deducting net delta - JobProfile: map ShopSuppliesAmount, ShopSuppliesPercent, IsRushJob, DiscountType/Value/Reason so the pricing breakdown has the data it needs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
@model PowderCoating.Application.DTOs.Job.JobDto
|
||||
@{
|
||||
var emailDefault = ViewBag.EmailDefaultOnComplete == true;
|
||||
var preLoggedPowder = ViewBag.PreLoggedPowder as Dictionary<int, decimal> ?? new Dictionary<int, decimal>();
|
||||
// Track remaining credit per InventoryItemId as we allocate it across coat rows
|
||||
var remainingCredit = preLoggedPowder.ToDictionary(kv => kv.Key, kv => kv.Value);
|
||||
}
|
||||
<div class="modal fade" id="completeJobModal" tabindex="-1">
|
||||
<div class="modal-dialog modal-dialog-centered modal-lg">
|
||||
@@ -76,12 +79,27 @@
|
||||
<small class="text-muted">@((coat.PowderToOrder ?? 0).ToString("0.##"))</small>
|
||||
</td>
|
||||
<td>
|
||||
@{
|
||||
decimal preFilledLbs = 0m;
|
||||
if (coat.InventoryItemId.HasValue && remainingCredit.TryGetValue(coat.InventoryItemId.Value, out var availCredit) && availCredit > 0)
|
||||
{
|
||||
preFilledLbs = availCredit;
|
||||
remainingCredit[coat.InventoryItemId.Value] = 0m;
|
||||
}
|
||||
}
|
||||
<input type="hidden" name="CoatUsages[@coatIndex].JobItemCoatId" value="@coat.Id" />
|
||||
<input type="number"
|
||||
class="form-control form-control-sm"
|
||||
name="CoatUsages[@coatIndex].ActualPowderUsedLbs"
|
||||
step="0.01" min="0" placeholder="0.00"
|
||||
value="@(preFilledLbs > 0 ? preFilledLbs.ToString("0.##") : "")"
|
||||
style="max-width: 120px;">
|
||||
@if (preFilledLbs > 0)
|
||||
{
|
||||
<small class="text-success d-block mt-1">
|
||||
<i class="bi bi-check-circle me-1"></i>Already logged — inventory adjusted
|
||||
</small>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
coatIndex++;
|
||||
@@ -104,7 +122,7 @@
|
||||
</div>
|
||||
<div class="alert alert-info mb-0">
|
||||
<i class="bi bi-info-circle me-2"></i>
|
||||
<small>Enter the actual amount of powder used for each coat. Leave blank if not tracked.</small>
|
||||
<small>Pre-filled values were already logged via scan — inventory is already adjusted for those. You can edit the amount; only the difference will be applied to inventory.</small>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user