Add CRM features: Additional Contacts, Lead Source, Ship-To Address; update Help docs
- New CustomerContact entity + migration (AddCustomerContactsAndCrmFields) - Customer.LeadSource + ShipToAddress/City/State/ZipCode/Country fields - Additional Contacts card on Customer Details with AJAX add/edit/delete - Lead Source dropdown on Create/Edit; Ship-To section on Create/Edit - Customer Details: side-by-side billing/ship-to when ship-to is set - Help docs: Customers (contacts, ship-to, lead source, preferred powders, outstanding pickups) - Help docs: Jobs (clone job, project name), Quotes (project name), Invoices (project name), Inventory (low stock clickable filter) - HelpKnowledgeBase.cs updated for all features above Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -136,8 +136,26 @@
|
||||
</p>
|
||||
<p>The details page shows:</p>
|
||||
<ul>
|
||||
<li><strong>Contact information</strong> — name, email, phone, and address.</li>
|
||||
<li><strong>Account summary</strong> — current balance, credit limit, and pricing tier.</li>
|
||||
<li><strong>Contact information</strong> — name, email, phone, address, and lead source.</li>
|
||||
<li><strong>Account summary</strong> — current balance, credit limit, store credit, and pricing tier.</li>
|
||||
<li>
|
||||
<strong>Ready for Pickup</strong> — if any of this customer’s jobs are in “Ready for Pickup” status,
|
||||
a highlighted card appears in the right column showing each job number and how many days it has been waiting.
|
||||
Jobs waiting 3–6 days show in amber; 7+ days in red.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Additional Contacts</strong> — billing contacts, ops contacts, drop-off contacts, and so on.
|
||||
See the Additional Contacts section below.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Internal Notes</strong> — private notes added by your staff (not visible to the customer).
|
||||
Notes can be marked as important <span class="text-warning">★</span> to highlight them for the team.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Preferred Powders</strong> — inventory items this customer frequently uses. Staff can
|
||||
search and add powders here so that anyone creating a quote or job for this customer can quickly
|
||||
see which colors they prefer. See the Preferred Powders section below.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Jobs tab</strong> — every job created for this customer, with status and date. Click
|
||||
a job number to open it.
|
||||
@@ -153,7 +171,7 @@
|
||||
<li>
|
||||
<strong>Deposits tab</strong> — all deposits recorded for this customer across any job or quote.
|
||||
</li>
|
||||
<li><strong>Notes</strong> — any notes saved against the customer record.</li>
|
||||
<li><strong>Recent Activity</strong> — a combined timeline of the last 15 events (jobs, quotes, invoices, deposits) in reverse chronological order.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
@@ -195,6 +213,122 @@
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section id="additional-contacts" class="mb-5">
|
||||
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
|
||||
<i class="bi bi-people text-primary me-2"></i>Additional Contacts
|
||||
</h2>
|
||||
<p>
|
||||
Commercial customers often have more than one person involved in their account — a purchasing
|
||||
manager, a billing contact, or the person who actually drops off and picks up parts. The
|
||||
<strong>Additional Contacts</strong> section on the Customer Details page lets you store all of
|
||||
them in one place so your team always knows who to call.
|
||||
</p>
|
||||
<p>To add a contact, open the Customer Details page and click <strong>Add Contact</strong> in the
|
||||
Additional Contacts card. You can record:</p>
|
||||
<ul class="mb-3">
|
||||
<li><strong>Name</strong> — first and last name.</li>
|
||||
<li><strong>Job Title</strong> — their role at the company (e.g., “Purchasing Manager”).</li>
|
||||
<li><strong>Role</strong> — a category tag: Billing, Operations, Drop-Off, Sales, General, or Other.</li>
|
||||
<li><strong>Email & Phone</strong> — their direct contact details.</li>
|
||||
<li><strong>Notes</strong> — anything else your team should know about this person.</li>
|
||||
</ul>
|
||||
<div class="alert alert-permanent alert-warning d-flex gap-2 mb-0" role="alert">
|
||||
<i class="bi bi-exclamation-triangle-fill flex-shrink-0 mt-1"></i>
|
||||
<div>
|
||||
<strong>Notifications always go to the primary contact.</strong> Additional contacts are for
|
||||
staff reference only. All automated emails (job ready for pickup, invoice sent, quote
|
||||
approval links, etc.) and SMS messages are sent to the email address and phone number on the
|
||||
main customer record — not to the contacts listed here. If you need invoices routed to a
|
||||
different address, use the <strong>Billing / Accounting Email</strong> field on the main
|
||||
customer record instead.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="ship-to-address" class="mb-5">
|
||||
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
|
||||
<i class="bi bi-truck text-primary me-2"></i>Ship-To / Pickup Address
|
||||
</h2>
|
||||
<p>
|
||||
Some customers have a different address for pickups or deliveries than their billing address. You
|
||||
can record a separate <strong>Ship-To</strong> address on the Create or Edit form. Leave it blank
|
||||
if the customer picks up from the same address they bill from.
|
||||
</p>
|
||||
<p>
|
||||
When a ship-to address is on file, the Customer Details page splits the Address card into two
|
||||
columns — billing on the left, ship-to on the right — so the difference is immediately visible
|
||||
to anyone looking up the customer.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section id="lead-source" class="mb-5">
|
||||
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
|
||||
<i class="bi bi-signpost text-primary me-2"></i>Lead Source
|
||||
</h2>
|
||||
<p>
|
||||
The <strong>Lead Source</strong> field lets you record how a customer found your shop. Options
|
||||
include Walk-In, Google Search, Customer Referral, Social Media, Website, Repeat Customer, Trade
|
||||
Show / Event, Flyer / Print Ad, and Other.
|
||||
</p>
|
||||
<p>
|
||||
This field is optional and is shown on the Customer Details page under Business Information. It
|
||||
is useful for understanding which marketing channels are bringing in customers over time.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section id="preferred-powders" class="mb-5">
|
||||
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
|
||||
<i class="bi bi-droplet-half text-primary me-2"></i>Preferred Powders
|
||||
</h2>
|
||||
<p>
|
||||
The <strong>Preferred Powders</strong> card on the Customer Details page lets you tag inventory
|
||||
items that this customer regularly orders. It is a staff-reference tool — it does not auto-select
|
||||
powders on quotes or jobs, but it gives anyone creating a quote a quick look at what colors this
|
||||
customer has used before.
|
||||
</p>
|
||||
<p>To add a preferred powder:</p>
|
||||
<ol class="mb-3">
|
||||
<li class="mb-1">Open the Customer Details page.</li>
|
||||
<li class="mb-1">In the <strong>Preferred Powders</strong> card, type part of the powder name or SKU into the search box.</li>
|
||||
<li class="mb-1">Select the item from the dropdown and click <strong>Add</strong>.</li>
|
||||
</ol>
|
||||
<p>To remove a preferred powder, click the <strong>×</strong> button next to the item in the list.</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>
|
||||
Only items that already exist in your <strong>Inventory</strong> can be added as preferred powders.
|
||||
If a color isn’t appearing in the search, check that it has been added to inventory first.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="outstanding-pickups" class="mb-5">
|
||||
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
|
||||
<i class="bi bi-box-seam text-primary me-2"></i>Outstanding Pickups
|
||||
</h2>
|
||||
<p>
|
||||
When one or more of a customer’s jobs are in <strong>Ready for Pickup</strong> status, a
|
||||
highlighted card appears in the right column of their Customer Details page. This lets your front desk
|
||||
staff immediately see — without opening the Jobs list — whether a customer calling or walking
|
||||
in has finished work waiting for them.
|
||||
</p>
|
||||
<p>The card shows:</p>
|
||||
<ul class="mb-3">
|
||||
<li>The job number (clickable, opens the Job Details page).</li>
|
||||
<li>How many days the job has been waiting in “Ready for Pickup” status.</li>
|
||||
</ul>
|
||||
<p>Color coding helps prioritize follow-up calls:</p>
|
||||
<ul class="mb-3">
|
||||
<li><span class="badge bg-warning text-dark">Amber</span> — waiting 3–6 days.</li>
|
||||
<li><span class="badge bg-danger">Red</span> — waiting 7 or more days.</li>
|
||||
<li>No color — waiting 0–2 days (recently completed).</li>
|
||||
</ul>
|
||||
<p>
|
||||
The card disappears automatically once all jobs for this customer have moved out of
|
||||
“Ready for Pickup” status (e.g., to Delivered).
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section id="deactivating-a-customer" class="mb-5">
|
||||
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
|
||||
<i class="bi bi-person-dash text-primary me-2"></i>Deactivating a Customer
|
||||
@@ -235,6 +369,11 @@
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#customer-details">Customer Details Page</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#credit-limit">Credit Limit</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#tax-exempt">Tax Exempt</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#additional-contacts">Additional Contacts</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#ship-to-address">Ship-To Address</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#lead-source">Lead Source</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#preferred-powders">Preferred Powders</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#outstanding-pickups">Outstanding Pickups</a>
|
||||
<a class="nav-link py-1 px-3 small text-body" href="#deactivating-a-customer">Deactivating a Customer</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user