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 $199.00 USD; request a quote for a scoped proposal.

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.
لا حاجة للدفع الآن. يؤدي هذا إلى إرسال طلب عرض سعر إلى فريقنا — وسنتواصل معك عبر البريد الإلكتروني بالأسعار والخطوات التالية.
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.
"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`
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 2 to 4 weeks 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.
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.
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.
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.
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.
قم بشراء الترخيص من موقع ecosire.com وقم بتنزيل وحدة POS Sales Order & Quotation from Register ZIP من لوحة تحكم حسابك.
قم باستخراج ملف ZIP إلى مجلد إضافات Odoo المخصصة على الخادم (أو تحميله عبر التطبيقات > التثبيت من ملف على Odoo.sh / runbot).
قم بتنشيط وضع المطور، وافتح التطبيقات، وانقر فوق تحديث قائمة التطبيقات، وابحث عن POS Sales Order & Quotation from Register، ثم اضغط على تثبيت.
افتح القائمة الجديدة، والصق مفتاح ترخيص ECOSIRE الخاص بك، وقم بتوصيل أي بيانات اعتماد خارجية (Shopify، وAmazon، وStripe، وما إلى ذلك)، ثم احفظها.
قم بتشغيل اختبار الاتصال المدمج، وقم بمزامنة أول 10 سجلات لديك، وقم بجدولة عملية cron المتكررة. اتصل بالدعم إذا فشل أي شيء.
| المعيار | ECOSIRE | بناء مخصص | منافس | أودو الأصلي |
|---|---|---|---|---|
| Fit to your B2B/special-order flow | Built to your scoped requirements | Fully custom but you own every decision | Fixed to the author's assumptions | |
| Deposit / advance capture | Down-payment product posts to final invoice | Depends on your developer's design | Often loose POS tender, not reconciled | |
| Backorder / partial delivery | Feeds `stock.picking`, backorder kept open | Build it yourself against Inventory | Varies; frequently unsupported | |
| Credit-limit check | Configurable warn-or-block on receivable | Extra scope to implement | Rarely included | |
| Odoo 17/18/19 support | Built and tested for your version | You maintain across upgrades | Depends on author's update cadence | |
| Ownership & source | Git repo handed over to you | You own it | Licensed, source often obfuscated | |
| Support & accountability | Post-go-live window + optional retainer | Whoever you hired | Author forum, best-effort | |
| Time to working solution | 2-4 weeks from confirmed scope | Longer; full spec-to-build cycle | Instant install, then adapt/fight it |
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.
Typical delivery is 2 to 4 weeks 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.
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.
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.
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.
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).
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.
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.