Warranty Tracker
Warranty Tracker registers a warranty, AMC or extended-warranty contract against a product and customer, tracks its expiry, prints a signed certificate, logs claim history, and can send a one-tap WhatsApp renewal reminder as the expiry date approaches.
Overview
Every warranty record stores product details (name, brand, model, serial, IMEI), customer details (name, phone), the sale/purchase date, warranty length in months, a Warranty Type, and free-text notes; the expiry date itself is calculated and stored by the backend from sale date + warranty months.
Five warranty types are supported — Manufacturer, Extended, In-Store, AMC and Insurance — and selecting Insurance reveals two extra fields (Insurer Name and Policy/Certificate Number) specific to insurance-backed cover.
A dedicated "Sell Extended Warranty" button opens the same registration form pre-set to warrantyType Extended, distinct from the general "Register Warranty" button used for warranties that came bundled with a sale.
Status badges are computed client-side from the expiry date and a RENEWED flag: Renewed (purple), Expired (red), Expiring (amber, within 30 days) or Active (green).
Before You Start
- No plan-tier restriction beyond the route's general "billing" feature gate.
- A customer phone number is required to use the WhatsApp reminder or renewal-reminder actions — records without a phone simply do not show that icon.
- Renewing an AMC contract only appears as an action for records with Warranty Type "AMC"; other warranty types have no renew shortcut.
Step-by-Step Guide
1 Register a new warranty
- Click Register Warranty.
- Fill in Product Name * (required) plus optional Brand, Model Number, Serial Number and IMEI (up to 20 characters).
- Fill in Customer Name, Customer Phone, Sale Date, Warranty (months) (1–120) and pick a Warranty Type — Manufacturer, Extended, In-Store, AMC or Insurance.
- If Warranty Type is Insurance, also fill Insurer Name and Policy/Certificate No.
- Add any Notes, then click Register.
2 Sell an extended warranty at time of sale
- Click Sell Extended Warranty instead of the general Register button — it opens the same form with Warranty Type pre-set to Extended and Warranty (months) defaulted to 12.
- Complete the remaining fields exactly as a normal registration and click Register.
3 Print a warranty certificate
- Click the print icon on any warranty row.
- A new browser tab opens a formatted certificate — product details, customer details, the warranty period with a from/to date pair, an ACTIVE/EXPIRED status line, any notes, and a signature line — and the print dialog is triggered automatically after a short delay.
4 Log a warranty claim
- Click the claim-history (clipboard) icon on a warranty row.
- Review any previously logged claims (each shows its date, description and outcome).
- Fill in Date, Outcome (Repaired under warranty, Part replaced, Rejected by OEM, Pending assessment, Escalated, or leave blank) and Description * (required), then click Log Claim.
5 Renew an AMC contract
- The renew (↻) icon appears only on AMC-type warranties with 60 days or fewer left and not already Renewed.
- Click it — a pre-filled "Register Warranty" form opens with the same product/customer details, today as the Sale Date, Warranty Type set to AMC, and a note referencing the old contract number.
- Adjust anything needed and click Register — this creates a brand-new warranty record for the renewed term, then automatically marks the original contract's status as Renewed.
6 Send a WhatsApp expiry/renewal reminder
- The WhatsApp icon appears on any row with a customer phone number where the warranty expires within 30 days (or has already expired) and is not Renewed.
- Click it to open WhatsApp Web/App with a pre-filled message naming the product and stating whether it expires soon or already expired, inviting the customer to extend cover with an extended warranty or AMC plan.
7 Search, filter and manage records
- Use the search box to filter by product name, customer name, serial number or IMEI.
- Use the All / Active / Expiring / Expired tabs to narrow the list — Expiring uses the same "within 30 days" window as the dashboard alert.
- Click the edit icon to update any field on an existing warranty, or the trash icon to permanently delete it after a confirmation prompt.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Sell Extended Warranty | Opens Register Warranty pre-set to Warranty Type = Extended, 12 months. |
Register Warranty | Opens a blank warranty registration form. |
Product Name * | Required; the device or product covered by the warranty. |
Brand / Model Number / Serial Number / IMEI | Optional identifying details for the covered device; IMEI capped at 20 characters. |
Customer Name / Customer Phone | Buyer contact details; phone is required to send WhatsApp reminders or renewals. |
Sale Date | Purchase date the warranty period is calculated from. |
Warranty (months) | Length of cover in months, 1–120; combined with Sale Date to compute the expiry date. |
Warranty Type | Manufacturer, Extended, In-Store, AMC or Insurance; selecting Insurance reveals Insurer Name and Policy/Certificate No. |
Insurer Name / Policy / Certificate No. | Only shown for Warranty Type = Insurance. |
Notes | Free-text notes on the warranty record. |
expiring-soon banner (page header) | Amber banner and count shown whenever any ACTIVE warranty is within 30 days of expiry; clicking View switches the table to the Expiring filter. |
Search box | Filters by product name, customer name, serial number or IMEI. |
All / Active / Expiring / Expired tabs | Active = status ACTIVE and not yet past expiry; Expiring = ACTIVE and 0–30 days left; Expired = no expiry date or expiry date in the past. |
Status badge | Renewed (purple), Expired (red), Expiring (amber, ≤30 days), or Active (green), computed live from the expiry date and RENEWED status. |
WhatsApp icon | Sends a pre-filled expiry/renewal reminder via wa.me; only shown when a phone number exists and days-left ≤ 30 (including negative/overdue) and status is not Renewed. |
Renew (↻) icon | Only shown for AMC-type warranties with ≤60 days left and not Renewed; opens a pre-filled new registration and marks the old contract Renewed once the new one saves. |
Claim History (clipboard) icon | Opens the claim log for that warranty — view past claims and log a new one. |
Print (printer) icon | Opens a print-ready warranty certificate in a new tab. |
Edit / Delete icons | Edit opens the form pre-filled; Delete permanently removes the record after a confirmation prompt. |
Tips & Best Practices
- Use "Sell Extended Warranty" at the point of sale rather than the general Register button — it saves a step by pre-setting the warranty type.
- Log every claim through Claim History, even minor ones — it becomes the audit trail you need if a customer disputes what was already covered or repaired.
- Renew AMC contracts as soon as the ↻ icon appears (60 days out) rather than waiting for expiry — it keeps the customer's cover continuous and avoids a lapsed-cover argument at claim time.
- Send the WhatsApp reminder as soon as it appears rather than waiting until the last few days — it is the same one-tap pattern used for khata/EMI reminders elsewhere in BazaarPOS.
Troubleshooting & FAQ
The Renew icon isn't showing on a warranty I expect to renew.
The WhatsApp icon is missing from a row.
I renewed an AMC contract but the old one still shows Active.
Insurer Name and Policy Number fields disappeared while editing.
The certificate print window opened blank or the print dialog didn't appear.
🧑💻 Developer Notes
Source component(s):
frontend-app/pos-app-electronics/src/pages/electronics/WarrantyPage.jsxfrontend-app/packages/pos-react-lib/src/pages/electronics/WarrantyPage.jsx
Backend endpoints used:
GET /electronics/warrantiesPOST /electronics/warrantiesPUT /electronics/warranties/:idDELETE /electronics/warranties/:id
Related tables (db-core repositories):
ElectronicsWarranty
Redux slices:
None — local component state only
Feature flag key: billing
Claim history is persisted as a JSON string in the ElectronicsWarranty.claimHistory column via a plain PUT of the whole record — there is no dedicated claims endpoint or table. The AMC renewal flow is entirely client-orchestrated: it issues a POST for the new warranty followed by a separate PUT to mark the old one RENEWED, wrapped in its own try/catch that silently swallows failure (no user-facing error) — if the PUT fails, the two warranties will both show as active until manually corrected. The certificate print (printWarrantyCertificate) builds raw HTML into a new window and calls window.print() on a 400ms timeout; it is entirely client-side with no backend template.