Add Formula Library ratings, Job Profitability report, and Quote Revision History improvements
- Formula Library ratings: thumbs up/down per company per formula; toggle on/off; sorts by net score; own formulas not rateable; FormulaLibraryRating entity + migration AddFormulaLibraryRatings - Job Profitability report: actual labor cost (logged hours x StandardLaborRate) vs powder cost vs billed price per job; gross margin % color-coded; time-tracked-only filter; totals footer - Quote Revision History: track Total price changes on every save; log Sent/Resent events with recipient email; replace flat table with grouped timeline UI (icons per event type, total-change badge on header) - Setup Wizard: cap CompletedCount at TotalSteps so old 10-step data no longer shows 10/5 - Formula Library card: fix badge overflow on long titles; add Rate: label to make voting buttons discoverable - 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:
@@ -580,6 +580,43 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="revision-history" class="mb-5">
|
||||
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
|
||||
<i class="bi bi-clock-history text-primary me-2"></i>Revision History
|
||||
</h2>
|
||||
<p>
|
||||
Every change made to a quote after it is created is recorded in a <strong>Revision History</strong> timeline
|
||||
at the bottom of the Quote Details page. The timeline groups changes from the same save into a single
|
||||
entry so you can scan what changed in each revision at a glance.
|
||||
</p>
|
||||
|
||||
<h3 class="h6 fw-semibold mt-3 mb-2">What is tracked</h3>
|
||||
<ul class="mb-3">
|
||||
<li class="mb-1"><strong>Total price changes</strong> — whenever a save changes the grand total, the old and new amounts appear as a badge on the revision entry.</li>
|
||||
<li class="mb-1"><strong>Status changes</strong> — every status transition (Draft → Sent, Sent → Approved, etc.) is recorded with the old and new status names.</li>
|
||||
<li class="mb-1"><strong>Sent events</strong> — each time a quote email is sent or resent to a customer, a “Sent to customer” entry is added showing the recipient email address.</li>
|
||||
<li class="mb-1"><strong>Approval</strong> — when a quote is approved (by staff or by the customer via the approval portal), the approver’s name is recorded.</li>
|
||||
<li class="mb-1"><strong>Line item changes</strong> — items added, removed, or modified (description, quantity, unit price, surface area) are each logged.</li>
|
||||
<li class="mb-1"><strong>Field edits</strong> — changes to quote date, expiration date, terms, notes, tax percent, and discount are tracked individually.</li>
|
||||
</ul>
|
||||
|
||||
<h3 class="h6 fw-semibold mt-3 mb-2">Reading the timeline</h3>
|
||||
<p>
|
||||
Each timeline entry shows an icon indicating the type of event:
|
||||
</p>
|
||||
<ul class="mb-3">
|
||||
<li class="mb-1"><i class="bi bi-envelope-check-fill text-primary me-1"></i><strong>Blue envelope</strong> — quote was emailed to the customer.</li>
|
||||
<li class="mb-1"><i class="bi bi-check-circle-fill text-success me-1"></i><strong>Green check</strong> — quote was approved.</li>
|
||||
<li class="mb-1"><i class="bi bi-x-circle-fill text-danger me-1"></i><strong>Red X</strong> — quote was rejected or declined.</li>
|
||||
<li class="mb-1"><i class="bi bi-arrow-right-circle-fill text-purple me-1"></i><strong>Purple arrow</strong> — quote was converted to a job.</li>
|
||||
<li class="mb-1"><i class="bi bi-pencil-fill text-secondary me-1"></i><strong>Grey pencil</strong> — general edit (field or line item changes).</li>
|
||||
</ul>
|
||||
<p>
|
||||
If the total price changed in a revision, a badge showing <em>old → new</em> appears inline in the
|
||||
revision header so pricing history is visible without expanding the detail lines.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 d-none d-lg-block">
|
||||
@@ -600,6 +637,7 @@
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#ai-quick-quote">AI Quick Quote</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#changing-customer">Changing the Customer</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#pricing-breakdown">Pricing Breakdown</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#revision-history">Revision History</a>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user