Skip to main content
Optical Store & Lab Management (ERP + POS) — A build-to-order Odoo optical retail platform that ties patient prescriptions, f — 1/1Illustrative preview

A build-to-order Odoo optical retail platform that ties patient prescriptions,

frame and lens catalogs, lens configuration and lab job orders into a single POS-driven workflow.

ECOSIRE scopes, builds, installs and supports it on your Odoo 17/18/19.

What is Optical Store & Lab Management (ERP + POS)?

A build-to-order Odoo optical retail platform that ties patient prescriptions, frame and lens catalogs, lens configuration and lab job orders into a single POS-driven workflow. ECOSIRE scopes, builds, installs and supports it on your Odoo 17/18/19. 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

Patient prescription (`optical.prescription`) model linked to `res.partner`, capturing OD/OS sphere, cylinder, axis, add, prism and PD with dated Rx history
`@api.constrains` validation rejecting out-of-range powers or invalid axis (0–180) at entry, and `@api.depends` computes for distance vs reading breakdown
Frame catalog using `product.attribute`/variants for material, shape, rim type, color and eye/bridge/temple sizing
Lens catalog with configurable options — index (1.5/1.6/1.67/1.74), anti-reflective, blue-light, hard coat, tint and photochromic — priced per variant
POS extension (OWL) to attach the active patient Rx to an order line and configure frame + lens + coatings with combined pricing
Automatic `optical.lab.order` job creation on order confirmation via an automated action, with technician assignment and computed target date
Lab pipeline stages (queued → surfacing/edging → fitting/mounting → QC → ready for collection) with status-change logging and chatter
Insurance/scheme split at checkout — insurer portion to a claim journal, patient co-pay at the till, with allowance/co-pay handling per scheme
QWeb reports: printable clinical Rx for the lab bench, spectacle/lab job ticket, and customer collection receipt
Role-based access via `ir.model.access.csv` plus record rules for front-desk, optometrist and lab-technician profiles
Reorder and stock visibility for frames tied to Odoo `stock` so fast-selling models trigger replenishment
Collection/ready-for-pickup notifications wired to Odoo activities or email so staff and customers are alerted when a job is done
XML-RPC/JSON-RPC-accessible models so a website appointment/Rx-upload form or an external edging machine can read/write orders
Kanban and list views plus filters for open lab jobs, overdue collections and per-branch throughput

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

Optical retail is a manufacturing business hiding inside a shop. Every sale starts with a clinical prescription, turns into a made-to-order lens ground to a specific sphere, cylinder and axis, gets edged and fitted into a chosen frame, and often has to be split between a customer co-pay and an insurance claim. Odoo core has the raw ingredients — product.template with variant attributes, pos.order, stock.picking, mrp.production, account.move — but nothing that understands an Rx, a lab job, or a coating add-on. Opticians end up tracking prescriptions in spreadsheets, keying lens parameters into order notes, and reconciling insurance by hand. That is where Odoo native runs out of road.

ECOSIRE builds a dedicated optical layer on top of your Odoo. We add a patient prescription model (an optical.prescription record linked to res.partner) that captures OD/OS values — sphere, cylinder, axis, add, prism, PD — with @api.constrains validation so an impossible axis or out-of-range power is caught at entry, and computed @api.depends fields that derive the reading vs distance breakdown. Frames and lenses live in a properly attributed catalog: frame material, shape, color and size as product.attribute variants, and lens options (index, coatings like anti-reflective or blue-light, tint, photochromic) modeled as configurable line options so a single lens SKU generates the right variant and price at point of sale.

The POS is where it comes together. We extend the Odoo POS (OWL frontend + pos.order backend) so a cashier picks the patient, pulls the active Rx onto the order line, configures the lens, and the system prices frame + lens + coatings together. When the order confirms, an optical.lab.order job is created automatically via an automated action, moving through a status pipeline — queued, surfacing/edging, fitting/mounting, QC, ready for collection — with the lab technician assigned and the target date computed. Insurance is handled as a split on the order: an insurer/scheme portion routed to a claim journal and the patient co-pay taken at the till, with a QWeb spectacle-order/collection ticket and the clinical Rx printed for the lab bench. All of it is guarded by ir.model.access.csv plus record rules so front-desk, optometrist and lab roles see only what they should, and the same data is reachable over the XML-RPC/JSON-RPC API if you want to feed a website booking form or an external edger.

Because this is build-to-order, nothing ships blind. We start with a scoping call to map your exact Rx fields, lens catalog, lab stages and insurance schemes, then build against your Odoo edition and version (17.0, 18.0 or 19.0; we flag anything that needs Enterprise such as full MRP or advanced accounting versus what runs on Community). You get the work on a staging instance for UAT first, a documented __manifest__.py-defined module with migration-safe data, and a defined go-live with rollback. Typical delivery is one working week from confirmed scope, and the module is yours — handed over as a git repository you own.

What you get

  • Installable Odoo module source code targeting your exact version (17.0, 18.0 or 19.0) and edition (Community/Enterprise)
  • Installation and configuration on your environment, including POS, lab pipeline and insurance-scheme setup
  • Technical documentation — data model, `__manifest__.py`, security rules, automated actions and API endpoints
  • User guide plus a live training session for front-desk, optometry and lab-technician roles
  • UAT on a staging instance with sign-off, plus a documented rollback plan before go-live
  • Post-go-live support window for defect fixes and adjustments
  • Git repository handover — full source, commit history and branch, owned by you
  • Seed/demo data (sample Rx, frame and lens catalog) to validate the workflow end to end

Who this is for

Independent optical retailer / optometrist

Runs a single practice combining eye tests and dispensing. Needs prescriptions, dispensing and lab jobs in one place instead of paper Rx cards and spreadsheet order tracking, without paying for enterprise optical suites.

Multi-branch eyewear chain owner

Operates several stores that share a central lab. Needs consistent Rx capture and a single lab queue across branches, per-store POS and stock, and role separation so head office sees throughput and margins.

In-house lab / dispensing manager

Manages surfacing, edging, fitting and QC. Needs a job pipeline with clear stages, technician assignment, target dates and printable bench tickets so nothing stalls between order and collection.

Optical retailer with insurance/vision-plan billing

Sells against vision schemes and co-pays. Needs the till to split insurer and patient portions cleanly, route claims to the right journal and reconcile them without manual re-keying.

How Optical Store & Lab Management (ERP + POS) Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Optical-specific fitPurpose-built for Rx, lenses, lab and optical POSWhatever you specify and can buildGeneric optical features, rarely a full fitNo optical concepts at all
Prescription (Rx) handlingValidated OD/OS model with history and PD/prismBuild from scratch, DIY validationBasic Rx fields if presentOrder notes / spreadsheets only
Lens configurationSphere/cylinder/axis + coatings priced per variantDesign and build the config logic yourselfLimited preset optionsManual product variants only
Lab job workflowAuto-created jobs with staged pipeline and QCModel and wire the pipeline yourselfOften no lab trackingGeneric MRP, not optical-aware
Insurance / co-pay splitScheme split at POS routed to claim journalBuild the split and journals yourselfRarely supportedSingle-payer POS only
Version & edition supportBuilt for your 17/18/19, Community or EnterpriseDepends on your teamVersion support varies, upgrades lagCore only, no optical layer
Ownership & lock-inFull git repo handover, you own itYou own it (if delivered)Vendor-licensed, limited source accessN/A
Support & deliveryScoped build, UAT, training, support windowYour own time and riskGeneric vendor support tiersCommunity/self-support

Frequently Asked Questions about Optical Store & Lab Management

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

No. This is a build-to-order module. ECOSIRE scopes it to your Rx fields, lens catalog, lab stages and insurance schemes, then builds, installs and supports it on your Odoo. There is no instant self-service download.

How long does delivery take?

Typically one working week from confirmed scope. After a short scoping call we agree the exact fields, workflows and integrations; that signed-off scope starts the clock. Larger multi-branch or heavy-integration builds can run longer and we tell you upfront.

Which Odoo versions and editions does it support?

We build for Odoo 17.0, 18.0 and 19.0, on either Community or Enterprise. During scoping we flag any capability that depends on Enterprise (for example full MRP or advanced accounting) versus what runs on Community, so there are no surprises.

How do you handle support and future updates?

Every build includes a post-go-live support window for defect fixes and adjustments. Because you receive the full git repository, you can maintain it yourself or retain ECOSIRE for version upgrades (e.g. moving from 18.0 to 19.0) and enhancements under a separate agreement.

Can it integrate with our website, edging machine or existing systems?

Yes. The optical models are exposed over Odoo's XML-RPC/JSON-RPC API, so a website Rx-upload or appointment form, an external edger, or another system can read and write orders and prescriptions. We scope the specific integrations you need before building.

Do we own the code, or are we locked in?

You own it. We hand over the complete module source as a git repository with commit history. There is no runtime license lock-in beyond your own Odoo licensing, and you are free to maintain or extend it with any developer.

How is patient prescription and insurance data protected?

Access is enforced with Odoo's `ir.model.access.csv` and record rules so front-desk, optometry and lab roles see only what they should. Clinical Rx and insurance splits sit inside your own Odoo database under your existing hosting and security controls — nothing is sent to a third-party service.

Request a quote

Optical Store & Lab Management

A build-to-order Odoo optical retail platform that ties patient prescriptions, frame and lens catalogs, lens configuration and lab job orders into a single POS-driven workflow. ECOSIRE scopes, builds, installs and supports it on your Odoo 17/18/19.

  • Patient prescription (`optical.prescription`) model linked to `res.partner`, capturing OD/OS sphere, cylinder, axis, add, prism and PD with dated Rx history
  • `@api.constrains` validation rejecting out-of-range powers or invalid axis (0–180) at entry, and `@api.depends` computes for distance vs reading breakdown
  • Frame catalog using `product.attribute`/variants for material, shape, rim type, color and eye/bridge/temple sizing
  • Lens catalog with configurable options — index (1.5/1.6/1.67/1.74), anti-reflective, blue-light, hard coat, tint and photochromic — priced per variant

Request a Quotation

Tell us about your Optical Store & Lab Management 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.