Sales Dashboard
From
To
Revenue & Orders
Revenue (excl. tax)
?
Total sales revenue from confirmed orders in the selected period, excl. GST.
Table: sale.order
Field: amount_untaxed (excl. GST)
Formula: SUM(amount_untaxed) WHERE state IN ('sale','done') AND date_order IN range
Avg. Order Value
?
The average dollar value of each confirmed order in the period, excl. GST.
Table: sale.order
Field: amount_untaxed (excl. GST)
Formula: SUM(amount_untaxed) ÷ COUNT(id)
Orders Received
?
All orders created in the period, regardless of whether they have been confirmed yet.
Table: sale.order
Formula: COUNT(id) WHERE create_date IN range AND state != 'cancel'
Orders Approved
?
Orders that have been confirmed and are currently in progress or complete.
Table: sale.order
Formula: COUNT(id) WHERE state IN ('sale','done') AND date_order IN range
Orders Completed
?
Orders that have been fully locked and closed in Odoo.
Table: sale.order
Formula: COUNT(id) WHERE state = 'done' AND date_order IN range
Orders by Type
?
Orders broken down by customer type — whether the buyer is an Agent, Owner, or Tenant.
Table: sale.order
Formula: COUNT(id) WHERE ordering_as = 'Agent' / 'Owner' / 'Tenant'
Agent
Owner
Tenant
Customer Refunds
?
Credit notes issued to customers in the period — used as a proxy for returns and refunds. All values excl. GST.
Table: account.move
Field: amount_untaxed (excl. GST)
Formula: COUNT(id) + SUM(amount_untaxed) WHERE move_type = 'out_refund' AND invoice_date IN range
Count
Total Value
Fulfilment
Active Order Fulfilment Performance
?
Live snapshot of all currently active orders, bucketed by how many days have passed since their Processing Start Date vs. the 10-day target. Not affected by the date range above.
Table: sale.order
Field: processing_start_date (set when WooComm status → Processing)
Formula: days = TODAY − processing_start_date; buckets: ≤10d / 11–17d / 18–24d / 25+d
Live · All Active Orders
On Track
Target ≥ 80%
1–7 Days Late
Target ≤ 15%
8–14 Days Late
Target ≤ 5%
14+ Days Late
Target < 5%
Avg. Fulfilment Time
?
The average number of days between the scheduled delivery date and when it was actually completed.
Table: stock.picking
Formula: AVG(date_done − scheduled_date) WHERE state = 'done'
Items Sent
?
Total units dispatched in the period, broken down by product type using product name keywords.
Table: sale.order.line
Formula: SUM(product_uom_qty) WHERE product name CONTAINS 'key' / 'fob' / 'remote'
Keys
Fobs
Remotes
Completed Fulfilment Performance
?
Completed deliveries bucketed by how many days they took from scheduled date to actual completion.
Table: stock.picking
Formula: COUNT WHERE (date_done − scheduled_date) <= 3 / <= 10 / > 10 days
Total Completed within 3 Days
Total Completed within 10 Days
Total Completed > 10 Days
% Completed within 3 Days
% Completed within 10 Days
% Completed > 10 Days
Fulfilment Performance by Product Type
?
Same fulfilment buckets as above, but filtered to deliveries containing each product type.
Table: stock.picking, stock.move
Filter: move_ids.product_id.name CONTAINS 'key' / 'fob' / 'remote'
Keys
Within 3 days
Within 10 days
Over 10 days
Fobs
Within 3 days
Within 10 days
Over 10 days
Remotes
Within 3 days
Within 10 days
Over 10 days
Analytics
Sales Revenue
?
Revenue from confirmed orders, grouped by the chosen period. Use the date presets on the right to independently control the chart range. All values excl. GST.
Table: sale.order
Field: amount_untaxed (excl. GST)
Formula: SUM(amount_untaxed) grouped by day / week / month
Top 10 Products
?
The highest-earning products by total revenue from confirmed order lines in the period, excl. GST.
Table: sale.order.line
Field: price_subtotal (excl. GST)
Formula: SUM(price_subtotal) GROUP BY product_id ORDER BY revenue DESC LIMIT 10
Loading...
Top 10 Categories
?
Revenue and order count grouped by product category from confirmed order lines in the period, excl. GST.
Tables: sale.order.line, product.product
Field: price_subtotal (excl. GST)
Formula: SUM(price_subtotal) GROUP BY product_id.categ_id ORDER BY revenue DESC LIMIT 10
Loading...
Top 10 Buildings / OCs
?
The customers with the most orders in the period — typically representing buildings or owners corporation accounts. Revenue excl. GST.
Table: sale.order
Field: amount_untaxed (excl. GST)
Formula: COUNT(id) + SUM(amount_untaxed) GROUP BY partner_id ORDER BY order count DESC LIMIT 10
Loading...
Top 10 Order Reasons
?
The most common reasons entered on confirmed orders in the period, by order count.
Table: sale.order
Field: reasons_for_order (char)
Loading...