Skip to main content
Total Items and Total Quantity in POS — A build-to-order Odoo Point of Sale extension that surfaces the total distinct line i — 1/1Illustrative preview

A build-to-order Odoo Point of Sale extension that surfaces the total distinct line items and the total ordered

quantity live on the POS order screen, receipt, and reporting.

ECOSIRE builds, installs, and supports it for your Odoo 17/18/19 estate after a short scoping call.

What is Total Items and Total Quantity in POS?

A build-to-order Odoo Point of Sale extension that surfaces the total distinct line items and the total ordered quantity live on the POS order screen, receipt, and reporting. ECOSIRE builds, installs, and supports it for your Odoo 17/18/19 estate after a short scoping call. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Real-time `total_items` (distinct line count) and `total_quantity` (summed `qty`) shown live on the POS order screen via a patched OWL component
Reactive recomputation subscribed to the POS order store — updates instantly as lines are added, merged, quantity-edited, or voided
Computed fields on `pos.order` using `@api.depends('lines', 'lines.qty')` so both totals persist to the database, not just the UI
Correct handling of fractional and weighed quantities, plus a configurable rule for negative return/refund lines
QWeb receipt override to print total items and total quantity in a header or footer position of your choice
Optional customer-facing display integration so shoppers see the running item/unit count
Configurable definition of an 'item' — distinct product vs distinct order line — decided during scoping and enforced in the compute
Bundle, combo, and gift-card line treatment configurable to match your merchandising rules
Per-`pos.config` scoping so the counters apply only to the shops/registers you choose
Values exposed over the XML-RPC/JSON-RPC API and included in POS order exports for downstream BI and reconciliation
`ir.model.access.csv` access rules scoped to your POS roles; no changes to core Odoo files
Upgrade-safe addon with its own `__manifest__.py` depending on `point_of_sale`, isolating it from core and future Odoo updates
Built and tested against your exact target major version (17.0 / 18.0 / 19.0) and edition (Community or Enterprise)
Optional roll-up into an order-report or dashboard field for shift and basket-size analytics

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Cashiers and shift supervisors constantly need a fast, glanceable answer to two questions during a sale: how many distinct products are on this ticket, and how many units in total are being sold. Odoo's native POS shows the per-line quantity and the order total, but it never rolls those lines up into a single "total items / total quantity" figure on the order screen. Staff end up mentally adding line quantities, which slows large baskets, invites miscounts at handover, and makes it hard to sanity-check a bag against a receipt. Once you try to expose that summary on the cashier UI, the payment screen, and the printed receipt, you are past what configuration or Studio can reach and into custom OWL components and QWeb overrides.

We build a focused POS extension that computes two derived values in real time — total_items (the count of distinct order lines) and total_quantity (the summed qty across all lines) — and renders them where your team actually needs them. On the front end the values live in a small OWL component patched into the order-widget, subscribed to the POS order store so they recompute reactively as lines are added, merged, or voided (including fractional and weighed quantities, and negative return lines handled per your rule). On the back end the same figures are exposed on pos.order via computed fields (@api.depends('lines', 'lines.qty')) so they persist to the database, flow into QWeb receipts and order reports, and are queryable over the XML-RPC/JSON-RPC API for downstream BI. Nothing is hard-coded to your data — the module is a clean, upgrade-safe addon with its own __manifest__.py, dependency on point_of_sale, and ir.model.access.csv entries scoped to your POS roles.

Because it is made to order, the behaviour is shaped to your operation during scoping: whether "items" counts distinct products or distinct line records, how combo/bundle lines and gift-card lines are treated, whether the counter appears on the receipt header or footer, whether it shows in the customer-facing display, and which POS configs it applies to. We build against your target Odoo major version (17.0, 18.0, or 19.0) and account for Community vs Enterprise differences in the POS module and receipt engine, so the extension installs cleanly on your edition without touching core files.

Delivery is build-to-order, not an instant download. After a scoping call we confirm the exact behaviour, edition, and version, then build and hand over installable source code with a git repository, deploy to your staging for UAT, and cut over to production with a rollback plan. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); multi-company POS estates, additional receipt/display surfaces, deeper localization of receipt layouts, and integration with external BI or loyalty systems increase the quoted scope.

What you get

  • Installable source code for your chosen Odoo major version (17.0, 18.0, or 19.0), edition-matched
  • Installation and configuration on your staging environment, including `pos.config` and access-rule setup
  • Technical documentation: model/field reference, OWL/QWeb override points, and upgrade notes
  • Short user guide plus a live training session for cashiers and POS administrators
  • UAT on a staging copy with a defined rollback plan before production cutover
  • Production deployment and go-live support
  • Post-go-live support window for defect fixes on the delivered scope
  • Handover of the private git repository with full commit history

Who this is for

Retail Operations Manager

Runs multiple shops on Odoo POS and wants cashiers to confirm item and unit counts at a glance to speed large baskets and cut handover miscounts. Needs the summary on-screen and on the receipt, consistent across every register.

Odoo Administrator / Internal IT

Owns the Odoo instance and refuses core patches. Wants an upgrade-safe addon with clean `__manifest__.py`, scoped `ir.model.access.csv`, and a git repo they can maintain and re-deploy across 17/18/19 upgrades.

Finance / BI Analyst

Reconciles POS activity and studies basket size. Needs `total_items` and `total_quantity` persisted on `pos.order` and reachable via the XML-RPC/JSON-RPC API so they land in reports and BI without manual line summing.

Warehouse / Fulfilment Lead

Uses the printed receipt to verify a bag or order against total units picked. Wants the total quantity printed clearly on the receipt to reduce short-picks and disputes at pickup.

How Total Items and Total Quantity in POS Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Total items + total quantity on order screenBuilt to your rule, live via OWLPossible but you build and maintain itFixed behaviour, may not match your ruleNot shown; only per-line qty
Persisted on `pos.order` for reportingComputed fields, DB-persisted, API-queryableOnly if you design itOften UI-only, not storedNo roll-up field
Definition of 'item' (product vs line)Configured to your operationWhatever you codeVendor's fixed choiceN/A
Receipt / customer-display placementYour chosen QWeb position + optional displayExtra dev per surfaceLimited to what shipsNot available
Odoo 17/18/19 + edition fitBuilt and tested for your exact version/editionYour team's responsibilityDepends on listing supportVersion behaviour as-is
Upgrade-safety & isolationSelf-contained addon, no core editsDepends on your disciplineVaries by vendor qualityN/A
Ownership & source handoverFull source + git repo handed overYou own it entirelyLicensed binary/source per termsN/A
Support & accountabilityScoped support window + single ownerSelf-supportedVendor ticket queueCommunity/Enterprise SLA only

Frequently Asked Questions about Total Items and Total Quantity in POS

Is this an existing app I can download and install right now?

No. This is a build-to-order Odoo extension. We build it to your confirmed scope, edition, and version, then install and support it. There is no instant download — you receive installable source code and a git repository as part of delivery.

How long does delivery take?

Typical delivery is one working week from confirmed scope. After a short scoping call we lock the behaviour, target Odoo version, and edition; the timeline then depends on how many surfaces (order screen, receipt, customer display, BI export) and how many POS configs are in scope.

How does pricing and scoping work?

Pricing starts from $999 as an indicative single-company base scope. We confirm your exact requirements on a scoping call and then issue a fixed quote before any build begins. Multi-company estates, extra receipt/display surfaces, deeper receipt localization, and external integrations increase the quote.

Do you support Odoo 17, 18, and 19, and both Community and Enterprise?

Yes. We build against your specific major version — 17.0, 18.0, or 19.0 — and account for Community vs Enterprise differences in the POS module and receipt engine so it installs cleanly on your edition without touching core files.

What happens with support and future Odoo updates?

Delivery includes a post-go-live support window for defect fixes on the delivered scope. Because the extension is a self-contained, upgrade-safe addon, it isolates cleanly from core. Migration to a future Odoo major version or new feature work is quoted separately as a change request.

Will it slow down the POS or interfere with checkout?

No. The two totals are lightweight derived values — a distinct-line count and a summed quantity — computed reactively in the existing POS order store on the front end and via `@api.depends` compute on the back end. There are no extra network calls during a sale.

Can we control exactly what counts as an 'item'?

Yes. During scoping we define whether 'items' means distinct products or distinct order lines, and how bundles, combos, gift-card lines, and negative return lines are treated. That rule is enforced in the compute so the on-screen, receipt, and reporting figures all agree.

Request a quote

Total Items and Total Quantity in POS

A build-to-order Odoo Point of Sale extension that surfaces the total distinct line items and the total ordered quantity live on the POS order screen, receipt, and reporting. ECOSIRE builds, installs, and supports it for your Odoo 17/18/19 estate after a short scoping call.

  • Real-time `total_items` (distinct line count) and `total_quantity` (summed `qty`) shown live on the POS order screen via a patched OWL component
  • Reactive recomputation subscribed to the POS order store — updates instantly as lines are added, merged, quantity-edited, or voided
  • Computed fields on `pos.order` using `@api.depends('lines', 'lines.qty')` so both totals persist to the database, not just the UI
  • Correct handling of fractional and weighed quantities, plus a configurable rule for negative return/refund lines

Request a Quotation

Tell us about your Total Items and Total Quantity in POS requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.