01
About this report
Net sales by the class set on each item record, by month for the last 24 months. Net sales are invoices and cash sales less credit memos, before tax, in base currency. Items with no class are grouped as (no class).
Group by Quarter or Year for longer comparisons. On a dashboard, a line chart with Class as the series shows how the mix changes.
02
Sample preview
Fictional figures in the shape you will see. Yours come from your account.
| Month | Class | Quantity | Net sales |
|---|---|---|---|
| 2026-09 | Services | 1,280 | 243,100 |
| 2026-09 | Subscriptions | 22 | 96,000 |
| 2026-09 | Hardware | 41 | 38,950.40 |
| 2026-09 | (no class) | 6 | 2,210 |
| 2026-08 | Services | 1,395 | 261,875 |
03
The SuiteQL
This is the query each report runs. Read it, copy it, or change it after import.
SELECT TO_CHAR(t.trandate, 'YYYY-MM') AS period,
NVL(BUILTIN.DF(i.class), '(no class)') AS item_class,
SUM(-tl.quantity) AS quantity,
SUM(-tl.foreignamount * t.exchangerate) AS sales
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id
JOIN item i ON i.id = tl.item
WHERE t.type IN ('CustInvc', 'CashSale', 'CustCred')
AND t.posting = 'T'
AND tl.mainline = 'F'
AND tl.taxline = 'F'
AND NVL(tl.iscogs, 'F') = 'F'
AND tl.itemtype NOT IN ('TaxGroup', 'TaxItem', 'Subtotal', 'Description', 'EndGroup')
AND t.trandate >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -23)
GROUP BY TO_CHAR(t.trandate, 'YYYY-MM'), NVL(BUILTIN.DF(i.class), '(no class)')
ORDER BY period DESC, sales DESC