Home / Help Center / pos-app-electronics / electronics / Electronics Reports
📈 electronics

Electronics Reports

Electronics Reports is a dedicated analytics screen with eight tabs covering everything specific to running a phone/electronics repair and resale counter — repair revenue and turnaround by technician, warranty expiries, IMEI stock movement and ageing, brand-level sales mix, and OEM warranty-claim tracking.

📍 Menu path: /electronics/reports
👤 Who uses it: Owner,Manager

Overview

The page loads all of its data once on open — repairs, warranties and IMEI records — via three parallel API calls, and every tab then filters/aggregates that same in-memory data client-side, so switching tabs is instant with no extra network round-trips.

The eight tabs (labelled RP1–RP8 in the tab strip) are: Repair Revenue, Repair TAT, Warranty Expiry, IMEI Movement, Brand Sales, Stock Ageing, Technician (performance), and OEM Claims.

Most tabs offer a From/To date range filter (applied to `createdAt`) and every tab has a one-click Export CSV button that downloads exactly the rows currently shown, using the same labels as the on-screen table.

If any one of the three underlying data calls fails, the report still renders using whatever data did load successfully — a failed warranties fetch, for example, will not block the Repair Revenue or IMEI tabs from showing their data.

Before You Start

Step-by-Step Guide

1 RP1 — Review repair revenue by technician

  1. Open the Repair Revenue tab (default tab on page load).
  2. Set a From/To date range to filter which repairs (by creation date) are included.
  3. Review the Total Jobs, Labour Revenue, Parts Revenue and Total Revenue summary tiles, then the per-technician table below with an Avg/Job column and a Total row at the bottom.
  4. Click Export CSV to download exactly this breakdown.

2 RP2 — Check repair turnaround time (TAT)

  1. Open the Repair TAT tab and set a date range.
  2. Note that only DELIVERED repairs with a recorded completion date are included in this analysis — repairs still in progress are excluded entirely.
  3. Review the two side-by-side tables: TAT by Technician (jobs, average/min/max days) and TAT by Device Type, both sorted fastest-average first.

3 RP3 — Monitor upcoming warranty expiries

  1. Open the Warranty Expiry tab and choose a window using the "Expiring within" pill filter — 30, 60 (default) or 90 days.
  2. Review the table of active warranties expiring within that window, sorted soonest-first, with a Days Left badge colored red (≤7 days), amber (≤30 days) or blue (further out).
  3. Only warranties with Status = Active are ever shown here — expired or claimed warranties never appear regardless of date.
  4. Click Export CSV to download the customer/product/expiry list, e.g. to plan renewal outreach calls.

4 RP4 — Track IMEI stock movement

  1. Open the IMEI Movement tab and set a date range (filtered on the IMEI's creation/date-added).
  2. Review the Total, In Stock, Sold and Returned summary tiles, then the full table of individual IMEI entries with their status and linked customer/supplier.

5 RP5 — Compare brand-level sales performance

  1. Open the Brand Sales tab (no date filter — it covers all IMEI records ever entered).
  2. Review each brand's row: a proportional bar showing relative total unit volume, plus In Stock/Sold/Returned/Defective counts and a Sold % figure colored green (≥70%), yellow (≥40%) or grey (below).

6 RP6 — Find ageing IMEI stock

  1. Open the Stock Ageing tab and use the "Show stock older than" pill filter — All, 30d+, 60d+ or 90d+ — to focus on units that have sat In Stock the longest.
  2. Review each row's Days In Stock badge, colored grey (≤30d), yellow (31-60d), orange (61-90d) or red (>90d), sorted oldest-first.

7 RP7 — Review technician performance

  1. Open the Technician tab and set a date range.
  2. Review Total Jobs, Completed and Total Revenue summary tiles, then the per-technician table showing Jobs, Done, Active, Avg TAT (delivered jobs only), Labour, Parts and Total revenue, sorted highest-revenue technician first.

8 RP8 — Track OEM warranty claims

  1. Open the OEM Claims tab — only repairs that have an OEM Claim Number recorded are shown here, sorted most-recent claim date first.
  2. Use the All/Pending/Approved/Rejected pill filter (each showing a live count) to narrow the list by OEM Claim Status.
  3. Review each claim's Job #, Customer, Device, OEM Claim No, Claim Date, Claim Status and the underlying repair's own Status.

9 Export or refresh any tab

  1. Click Export CSV in the top-right of whichever tab is active to download that tab's current filtered view as a CSV file.
  2. Click Refresh in the page header to reload repairs, warranties and IMEI data from the server without leaving the current tab.

Every Field & Button, Explained

Field / ButtonWhat it does
Tab strip (RP1–RP8)Switches between Repair Revenue, Repair TAT, Warranty Expiry, IMEI Movement, Brand Sales, Stock Ageing, Technician and OEM Claims.
RefreshReloads all three underlying datasets (repairs, warranties, IMEI) from the server.
From / To date rangeFilters rows by creation date; present on Revenue, TAT, IMEI Movement and Technician tabs.
Export CSVDownloads the currently visible, currently filtered rows of the active tab as a CSV file with the same column labels shown on screen.
Expiring within (30/60/90 days)Warranty Expiry tab filter controlling how far ahead to look for active warranties nearing their expiry date; defaults to 60 days.
Show stock older than (All/30d+/60d+/90d+)Stock Ageing tab filter limiting the list to In Stock IMEI units at or above the selected age.
OEM claim status filter (All/Pending/Approved/Rejected)OEM Claims tab filter with a live count per option.
Days Left badge (Warranty Expiry)Red at 7 days or fewer, amber at 30 or fewer, blue otherwise.
Days In Stock badge (Stock Ageing)Grey ≤30 days, yellow 31-60, orange 61-90, red beyond 90.
Sold % (Brand Sales)Percentage of a brand's total IMEI units currently marked Sold; green ≥70%, yellow ≥40%, grey below.
Avg TAT (Repair TAT / Technician)Average days between repair creation and completion, computed only from DELIVERED jobs with a completion date.
Total row (Repair Revenue)A summary row at the bottom of the technician table totalling Jobs, Labour, Parts and Total Revenue across everyone.

Tips & Best Practices

Troubleshooting & FAQ

A tab shows no data at all.
Each tab depends on real records existing on the Repairs, Warranty or IMEI Registry pages first — if none exist yet for the relevant module, or none fall inside your chosen date range/filter, the tab will show an empty-state message rather than an error.
Repair TAT looks empty even though I have repairs.
The TAT tabs only include repairs with Status = DELIVERED and a recorded completion date — repairs still open or in progress are intentionally excluded from turnaround-time analysis.
One tab is missing but the others loaded fine.
The three data sources (repairs, warranties, IMEI) are fetched independently and tolerate partial failure — if one endpoint failed, only the tabs relying on that dataset will appear empty; click Refresh to retry.
The CSV I exported doesn't match what I see on screen.
Export CSV always exports exactly the currently filtered/visible rows for the active tab — check your date range and pill filters, since the export respects them the same way the table does.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/pos-app-electronics/src/pages/electronics/ElectronicsReportsPage.jsx
  • frontend-app/packages/pos-react-lib/src/pages/electronics/ElectronicsReportsPage.jsx (actual implementation)

Backend endpoints used:

  • GET /electronics/repairs
  • GET /electronics/warranties
  • GET /electronics/imei

Related tables (db-core repositories):

  • ElectronicsRepair
  • ElectronicsWarranty
  • ElectronicsIMEI

Feature flag key: billing

Thin re-export in pos-app-electronics; real component lives in shared pos-react-lib package. All three data sources are fetched once via `Promise.allSettled` on mount (not per-tab), and every one of the 8 tabs is a pure client-side filter/aggregation (`useMemo`) over that same in-memory data — there is no dedicated reports API, so this page will not scale gracefully to very large repair/IMEI histories since all rows are downloaded up front. Mounted at `/electronics/reports` behind `` with no minTier restriction.