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.