Skip to main content
POS Sales Order & Quotation from Register — Turn any POS session into a B2B counter: convert the cart to a back-office sale o — 1/1Illustrative preview

Turn any POS session into a B2B counter:

convert the cart to a back-office sale order or quotation, take a deposit, and hand off backorders and partial deliveries to Inventory — without leaving the register.

What is POS Sales Order & Quotation from Register?

Turn any POS session into a B2B counter: convert the cart to a back-office sale order or quotation, take a deposit, and hand off backorders and partial deliveries to Inventory — without leaving the register. 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

"Create Sale Order / Quotation" action inside the POS UI (OWL component injected into the `point_of_sale` asset bundle) that serializes the live cart
Cart-to-`sale.order` mapping preserving product, quantity, unit price, discount and tax lines — a real `sale.order`, not a `pos.order`
Choose the document outcome at the counter: draft quotation (`state='draft'`) or confirmed sale order that reserves stock
Deposit / advance capture via Odoo's down-payment product so prepaid amounts post against the final invoice instead of floating as loose POS tender
Partial-delivery handling through `stock.picking` — deliver available lines now, Odoo keeps the backorder open for the rest
Customer credit-limit check reading the partner's outstanding receivable, with configurable warn-vs-block behavior in `res.config.settings`
Customer account resolution from the register (`res.partner`), including on-the-fly create/select before raising the order
Branded QWeb PDF reports for pro-forma and quotation, driven off your report template and company layout
Role-scoped access via `ir.model.access.csv` plus record rules so only permitted POS users raise orders or override the credit block
Configurable quotation numbering / sequence and default deposit product exposed as Settings fields, no source edits to re-tune
Optional automated action (`base.automation`) to notify a sales rep or manager when a counter quotation crosses a value threshold
Register-to-order path callable over JSON-RPC / XML-RPC so external systems can trigger the same flow programmatically
Idempotent, upgrade-safe model inheritance (`models.Model`, `@api.depends` computes) that survives `-u` module upgrades
Verified across Odoo 17.0 / 18.0 / 19.0 with Community-vs-Enterprise down-payment behavior confirmed during scoping

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

Retail counters increasingly serve two customers at once: the walk-in who pays and leaves, and the B2B or special-order buyer who wants a formal quotation, an advance deposit, and delivery of goods you do not have in stock today. Native Odoo POS is optimized for the first case — an order closes atomically against on-hand stock, prints a receipt, and settles the payment immediately. The moment your cashier needs a sale.order with a proper quotation number, a credit check against the customer's property_account_receivable, or a partial delivery that leaves a backorder open, the register runs out of road. Staff drop the customer, walk to a back-office desktop, re-key the cart into Sales, and hope the two documents reconcile. That handoff is where margin, accuracy, and the customer's patience leak away.

This build-to-order module closes that gap by adding a "Create Sale Order / Quotation" action inside the POS UI (an OWL component wired into point_of_sale assets) that serializes the current order lines and customer into a real sale.order record via a controller/ORM path — not a pos.order. The customer set on the register maps straight through, product lines carry their unit price, taxes, and discounts, and you choose the outcome at the counter: a draft quotation (state='draft') to email and print, or a confirmed sale order that reserves stock and generates the delivery. Advance payments are captured as a deposit using Odoo's down-payment product on the order (Enterprise's down-payment wizard where available, an equivalent sale.advance.payment.inv flow on Community), so the deposit posts against the eventual invoice rather than floating as an unlinked POS payment. Where the customer wants some items now and some later, the confirmed order feeds stock.picking so Inventory can validate a partial delivery and Odoo keeps the backorder open automatically.

Technically, the module is a clean, upgrade-safe addon: a declared __manifest__.py depending on point_of_sale, sale_management, and stock; server-side extensions on pos.order/sale.order using models.Model inheritance with @api.depends computes for any derived totals; a credit-limit guard that reads the partner's outstanding receivable and blocks or warns per your policy via a configurable res.config.settings field; access controlled through ir.model.access.csv plus record rules so only permitted POS roles can raise orders or override the credit block; and QWeb reports for the pro-forma and quotation PDFs branded to your template. The register-to-order call is exposed cleanly so it also works over the JSON-RPC/XML-RPC API if you drive it from another system. Everything targets Odoo 17.0, 18.0, and 19.0, and we confirm Community vs Enterprise behavior for the down-payment and any studio-adjacent flows during scoping.

Because this is built to order, there is no instant download. After a short scoping call we confirm your exact flows — quotation numbering, deposit product, credit policy, which POS roles get the button, report layout — write a fixed scope, and build against your Odoo edition and version. Typical delivery is one working week from confirmed scope. You receive the installable source for your version, UAT on a staging copy of your database, a training session for counter and back-office staff, and a post-go-live support window. The Git repository is handed over to you at the end so the code is yours to keep and extend.

What you get

  • Installable source code built for your exact Odoo edition and version (17.0, 18.0 or 19.0)
  • Installation and configuration on your environment, including Settings, deposit product, sequences and role permissions
  • Technical documentation: models, fields, security rules, report templates and the JSON-RPC entry point
  • User guide plus a live training session for counter and back-office staff
  • UAT on a staging copy of your database with a documented rollback plan before production
  • Post-go-live support window for defect fixes and configuration adjustments
  • Git repository handover so the code is yours to keep, audit and extend

Who this is for

B2B / trade-counter retailer

Sells to businesses that expect a formal quotation and a delivery note rather than a cash receipt. Needs the counter to raise a real `sale.order` with correct taxes and terms without staff leaving the register.

Special-order and made-to-order shop

Takes deposits on items that are not in stock — furniture, appliances, custom kit. Needs advance-payment capture at the counter and a clean backorder so the balance and delivery are tracked in Inventory and Sales.

Retail operations / store manager

Owns credit exposure and process consistency across cashiers. Needs a credit-limit guard, role-scoped permissions, and pro-forma/quotation PDFs that match company branding — configurable without touching code.

Odoo admin / finance controller

Cares that deposits reconcile against the eventual invoice and that the addon is upgrade-safe across 17/18/19. Needs documented models, security via `ir.model.access.csv`, and a Git handover for audit.

How POS Sales Order & Quotation from Register Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Fit to your B2B/special-order flowBuilt to your scoped requirementsFully custom but you own every decisionFixed to the author's assumptionsNo sale-order-from-POS path
Deposit / advance captureDown-payment product posts to final invoiceDepends on your developer's designOften loose POS tender, not reconciledPOS payment only, no deposit-on-order
Backorder / partial deliveryFeeds `stock.picking`, backorder kept openBuild it yourself against InventoryVaries; frequently unsupportedPOS closes against on-hand stock only
Credit-limit checkConfigurable warn-or-block on receivableExtra scope to implementRarely includedNot enforced at the register
Odoo 17/18/19 supportBuilt and tested for your versionYou maintain across upgradesDepends on author's update cadenceVersion-native, feature absent
Ownership & sourceGit repo handed over to youYou own itLicensed, source often obfuscatedCore, not modifiable safely
Support & accountabilityPost-go-live window + optional retainerWhoever you hiredAuthor forum, best-effortCommunity/Enterprise general support
Time to working solutionone working week from confirmed scopeLonger; full spec-to-build cycleInstant install, then adapt/fight itImmediate but missing the feature

Frequently Asked Questions about POS Sales Order & Quotation from Register

Is this an existing app I can download and install today?

No. It is build-to-order. ECOSIRE builds the module against your Odoo edition and version, installs it, and supports it. There is no instant download because the credit policy, deposit product, numbering and report layout are configured to your business during scoping.

How long does delivery take?

Typical delivery is one working week from confirmed scope. After the scoping call we write a fixed scope covering your exact flows; the clock starts once you approve it. Simpler configurations land nearer two weeks, heavier credit or multi-report requirements nearer four.

Does it create a real sale order or just another POS order?

A real `sale.order` in the back office — with your quotation sequence, taxes, discounts and terms — not a `pos.order`. That is the whole point: the document flows into Sales and Inventory exactly as a desk-entered order would, including delivery pickings and invoicing.

How are deposits and partial deliveries handled?

Advance payments are captured using Odoo's down-payment product so the deposit posts against the final invoice rather than sitting as loose POS tender. Confirmed orders feed `stock.picking`, so you can validate a partial delivery now and Odoo keeps the backorder open for the balance.

Will it work on Odoo Community or only Enterprise?

Both. Core behavior — raising the order, credit check, backorders, QWeb reports — is Community-compatible. Some down-payment conveniences differ between editions; we confirm your edition during scoping and implement the equivalent flow so the outcome is the same.

How do updates and support work after go-live?

Every build includes a post-go-live support window for defect fixes and configuration tweaks. Because you receive the Git repository, the code is yours to maintain or extend. We also offer version-migration and ongoing support engagements when you upgrade Odoo (for example 18 to 19).

Can other systems trigger the order creation?

Yes. The register-to-order path is exposed cleanly so it is callable over Odoo's JSON-RPC / XML-RPC API, letting an external system, kiosk or integration raise the same sale order or quotation programmatically with the same validation.

Request a quote

POS Sales Order & Quotation from Register

Turn any POS session into a B2B counter: convert the cart to a back-office sale order or quotation, take a deposit, and hand off backorders and partial deliveries to Inventory — without leaving the register.

  • "Create Sale Order / Quotation" action inside the POS UI (OWL component injected into the `point_of_sale` asset bundle) that serializes the live cart
  • Cart-to-`sale.order` mapping preserving product, quantity, unit price, discount and tax lines — a real `sale.order`, not a `pos.order`
  • Choose the document outcome at the counter: draft quotation (`state='draft'`) or confirmed sale order that reserves stock
  • Deposit / advance capture via Odoo's down-payment product so prepaid amounts post against the final invoice instead of floating as loose POS tender

Request a Quotation

Tell us about your POS Sales Order & Quotation from Register 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.