Inline item editing on Job Details with live pricing and costing updates
- PatchItem: add case-insensitive JSON deserialization; add legacy fallback that computes a live breakdown from job items when PricingBreakdownJson is null - PatchItem: return itemsSubtotal, subtotalBeforeDiscount, subtotalAfterDiscount, taxAmount in JSON response for immediate DOM updates - GetCostingBreakdown: use job.FinalPrice as revenue (not invoice total) so costing figures reflect inline edits before an invoice exists - Details.cshtml: add data-pb attributes to visible pricing rows; add job-final-price-display class to visible Total element - Details.cshtml: wire afterSave callback to call costing.load() after each edit - inline-item-edit.js: add afterSave hook in commit(); clean up debug logging - Help docs: add Inline Price Editing sections to Jobs, Quotes, and Invoices help articles; add inline editing + job costing revenue notes to AI knowledge base Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -309,6 +309,35 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="inline-price-editing" class="mb-5">
|
||||
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
|
||||
<i class="bi bi-pencil-square text-primary me-2"></i>Inline Price Editing
|
||||
</h2>
|
||||
<p>
|
||||
On the Job Details page you can edit any item’s unit price, quantity, or description
|
||||
directly in the table — without opening the full Edit form.
|
||||
</p>
|
||||
<ol class="mb-3">
|
||||
<li class="mb-2">Click a <strong>unit price</strong>, <strong>quantity</strong>, or <strong>description</strong> cell in the Items table. The cell turns into an input field.</li>
|
||||
<li class="mb-2">Type the new value.</li>
|
||||
<li class="mb-2">Press <kbd>Enter</kbd> or click anywhere outside the field to save. Press <kbd>Esc</kbd> to cancel without saving.</li>
|
||||
</ol>
|
||||
<p>
|
||||
After saving, the line total updates immediately and the pricing summary card (Items
|
||||
Subtotal, Subtotal, Tax, and Grand Total) refreshes — no page reload required.
|
||||
The <strong>Job Costing</strong> card also recalculates automatically so your
|
||||
profit margin estimate stays current.
|
||||
</p>
|
||||
<div class="alert alert-permanent alert-info d-flex gap-2 mb-0" role="alert">
|
||||
<i class="bi bi-info-circle-fill flex-shrink-0 mt-1"></i>
|
||||
<div>
|
||||
The <strong>Job Costing</strong> section calculates revenue from the job’s
|
||||
current Final Price — not from the linked invoice total. Inline price edits
|
||||
are reflected in the costing analysis immediately, even before an invoice is created.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="converting-from-quote" class="mb-5">
|
||||
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
|
||||
<i class="bi bi-arrow-left-right text-primary me-2"></i>Converting from a Quote
|
||||
|
||||
Reference in New Issue
Block a user