A pharmacy-specific Odoo Point of Sale that enforces batch and expiry selection, captures prescription and doctor details, flags controlled substances, and handles insurance co-pay lines. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $399.00 USD; request a quote for a scoped proposal.

A pharmacy-specific Odoo Point of Sale that enforces batch and expiry selection, captures prescription and doctor details, flags controlled substances, and handles insurance co-pay lines. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0.
今すぐのお支払いはありません。これはチームへの見積もり依頼を送信します。価格と次のステップをメールでご案内します。
Retail pharmacies live and die by traceability, yet Odoo's core point_of_sale treats medicines like any other product. Stock POS lets a cashier ring up a strip of tablets without ever recording which lot it came from, whether that lot expires next week, or whether the item is a scheduled drug that legally requires a prescription number and pharmacist sign-off. Odoo Enterprise adds lot/serial tracking on the inventory side and even lets you sell tracked products from POS, but the checkout screen was never designed to force FEFO (first-expiry-first-out) batch selection, block near-expiry stock, or capture a doctor and Rx reference against the sale line. When a regulator or an insurer asks "which batch did you dispense to this patient, and who prescribed it," native Odoo has no clean answer.
FEFO batch selection forced at the POS register, defaulting `stock.lot` to the soonest saleable expiry and blocking manual override for regulated products
Configurable expiry-buffer guard: an `@api.constrains` on the order line rejects any lot within N days of expiry, with a pharmacist-only override backed by a record rule
Prescription capture model linked to `pos.order` recording Rx number, prescribing doctor, patient reference, and dispensing pharmacist
Controlled-substance schedule field on `product.template` with per-transaction and rolling-period quantity limits enforced via `@api.depends` compute
Substitute/generic suggestion drawer in the OWL POS screen, sourced from a configurable same-molecule equivalence group
Insurance/co-pay split that posts patient-paid and payer-billed portions as distinct `pos.payment` lines so the session reconciles cleanly
This build-to-order module turns Odoo POS into a compliant dispensing terminal. We extend pos.order.line and stock.lot so that every regulated product forces a batch pick at the register, defaulting to the soonest-expiring saleable lot and hard-blocking lots past a configurable expiry buffer via a @api.constrains guard. New models — a prescription record linked to the order, and a controlled-substance schedule on product.template — capture prescription number, prescribing doctor, and patient reference, while a @api.depends compute enforces per-transaction and per-period quantity limits on scheduled items. A substitution helper surfaces generic or same-molecule alternatives from a configurable equivalence group directly in the POS UI so staff can offer a cheaper generic without leaving the sale. Insurance and co-pay handling splits a single dispense into a patient-paid portion and a payer-billed portion as distinct payment lines, so the till reconciles and the claimable amount is reportable.
Technically, the work ships as a proper Odoo addon: a versioned __manifest__.py declaring dependencies (point_of_sale, stock, and Enterprise lot tracking where present), server-side models.Model extensions, an OWL/JS POS screen extension for the batch/prescription/substitution flow, ir.model.access.csv plus record rules so only pharmacist roles can override a controlled-substance block, and QWeb reports for a compliant dispensing label and a controlled-drug register. Automated actions flag lots crossing the expiry threshold, and everything is exposed over Odoo's JSON-RPC/XML-RPC API so the prescription and dispensing data can feed an external regulator portal or a third-party insurance clearinghouse. We build against your exact Odoo 17.0, 18.0, or 19.0 database and reconcile Community vs Enterprise differences (Community lacks native POS lot selling, so we implement the batch-picking layer accordingly).
Because this is build-to-order, nothing is auto-downloaded. After a short scoping call we confirm your Odoo version, edition, drug-schedule rules, and insurance workflow, then build and unit-test the addon against a staging copy of your database. You get the installable source, UAT on staging with a rollback plan, and a go-live support window. Typical delivery is 2-4 weeks from confirmed scope, depending on how many regulatory and payer-specific rules you need encoded.
Runs one or a few retail drugstores on Odoo and needs the register to enforce batch/expiry discipline and a controlled-drug register without hiring a developer to bolt it on.
Standardizes dispensing across multiple branches and wants consistent controlled-substance limits, FEFO enforcement, and audit-ready reports feeding head-office analytics via the Odoo API.
Answerable to health authorities and insurers; needs prescription capture, per-schedule quantity limits, and traceable batch-to-patient records that survive an inspection or recall.
Owns the Odoo instance and wants a clean, version-matched addon with proper `ir.model.access.csv`, record rules, and a git handover rather than an unmaintainable customization.
ecosire.com でライセンスを購入し、アカウント ダッシュボードから POS Pharmacy Management モジュールの ZIP をダウンロードします。
ZIP をサーバー上の Odoo カスタム アドオン フォルダーに抽出します (または、[アプリ] > [Odoo.sh / runbot のファイルからインストール] を介してアップロードします)。
開発者モードをアクティブにし、アプリを開き、「アプリリストの更新」をクリックして、「POS Pharmacy Management」を検索し、「インストール」を押します。
新しいメニューを開き、ECOSIRE ライセンス キーを貼り付け、外部認証情報 (Shopify、Amazon、Stripe など) を接続して保存します。
組み込みの接続テストを実行し、最初の 10 レコードを同期し、定期的な cron をスケジュールします。何か問題が発生した場合はサポートにお問い合わせください。
| 基準 | エコシエール | カスタムビルド | 競合他社 | オドゥー ネイティブ |
|---|---|---|---|---|
| Batch/expiry enforcement at POS | FEFO forced with hard expiry-buffer block | Possible but you design and test the guard yourself | Often lot display only, no FEFO enforcement | |
| Prescription & doctor capture | Dedicated Rx model linked to the order | Buildable from scratch, weeks of effort | Rarely included or a free-text note | |
| Controlled-substance limits | Per-transaction and period limits with pharmacist override | Depends entirely on your spec | Seldom rule-enforced | |
| Insurance / co-pay split | Patient and payer posted as separate payment lines | Custom payment logic required | Usually single-payer only | |
| Odoo version fit | Built for your exact 17/18/19 and edition | Whatever your team targets | Generic build, may lag versions | |
| Compliance reporting | QWeb dispensing label + controlled-drug register | Design and build the reports yourself | Limited or generic receipts | |
| Source & handover | Full source, git repo, docs, training | You own it, you maintain it | Often encrypted or license-locked | |
| Support after go-live | Defined support window + optional upgrades | Your internal team | Varies, often ticket-only |
This is a build-to-order module, not an instant download. After a scoping call to confirm your Odoo version, edition, drug-schedule rules, and insurance workflow, typical delivery is 2-4 weeks from confirmed scope. More complex regulatory or multi-payer requirements can extend that, and we give you a firm timeline before we start.
Both. Odoo Enterprise supports lot/serial tracking and selling tracked products from POS natively; Community does not sell lot-tracked products from POS out of the box, so on Community we implement the batch-picking layer ourselves. We build against your exact edition and note any edition-specific differences during scoping.
We build for Odoo 17.0, 18.0, and 19.0. We target the single version your production database runs, and the `__manifest__.py` and code are written to match that version's POS and OWL framework.
Products carry a controlled-substance schedule field, and the module enforces per-transaction and rolling-period quantity limits with an `@api.depends` compute. Sales of scheduled items require a prescription number, prescribing doctor, and patient reference, and any override is restricted to pharmacist roles via record rules and logged for audit.
Yes. Prescription and dispensing records are exposed over Odoo's JSON-RPC/XML-RPC API, so an external insurance clearinghouse or regulator portal can read claim and dispensing data. Insurance/co-pay splits are posted as distinct payment lines so the claimable amount is cleanly reportable.
Every build includes a post-go-live support window for defect fixes and configuration tweaks. Because you receive the full source and git repository, your team can maintain it independently afterward, or you can engage ECOSIRE for version upgrades and enhancements. We do not push silent auto-updates to your production instance.
The module is written cleanly against a specific major version and does not monkey-patch core beyond documented extension points. When you move to a newer Odoo major release we can quote a migration; the git handover means the upgrade path is transparent rather than a black box.
A pharmacy-specific Odoo Point of Sale that enforces batch and expiry selection, captures prescription and doctor details, flags controlled substances, and handles insurance co-pay lines. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0.