A pharmacy checkout for ERPNext with FEFO batch/expiry control, prescription capture and refill tracking, and generic-substitute suggestions — built, installed and supported by ECOSIRE as a build-to-order Frappe app on v15/v16. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $499.00 USD; request a quote for a scoped proposal.

A pharmacy checkout for ERPNext with FEFO batch/expiry control, prescription capture and refill tracking, and generic-substitute suggestions — built, installed and supported by ECOSIRE as a build-to-order Frappe app on v15/v16.
Şimdi ödeme yok. Bu, ekibimize bir teklif talebi gönderir — fiyat ve sonraki adımlarla e-posta ile dönüş yapacağız.
Running a pharmacy on stock ERPNext means fighting the checkout instead of using it. The standard POS Profile does not enforce First-Expiry-First-Out, so counter staff can dispense a longer-dated batch while a near-expiry pack quietly ages into a write-off. There is no place to record who wrote the prescription, how many refills remain, or which schedule a controlled drug belongs to. Insurance claim references live in spreadsheets or the customer's memory. ERPNext gives you Item, Batch, Stock Ledger and Sales Invoice — a solid foundation — but the dispensing layer that a compliant pharmacy actually needs is simply not in the box, and bolting it on with a few Custom Fields never covers batch logic, refill state or an audit trail.
FEFO dispensing that ranks batches by Batch `expiry_date` and defaults the near-expiry pack at the POS line, with server-side enforcement so a longer-dated batch cannot be picked silently
Dedicated `Prescription` DoctType capturing prescriber, patient, drug lines, dosage and total authorized quantity, linked to each dispense
`Refill Schedule` tracking remaining refills and next-due date, decremented on submit so over-dispensing beyond the authorized count is blocked
Generic/substitute suggestion via a `@frappe.whitelist()` method that reads a molecule/generic link on Item and returns in-stock alternatives with live batch availability
Controlled-drug / schedule logging to an append-only `Controlled Drug Log` DocType recording pharmacist, schedule class, quantity and running balance on submit
Insurance/claim reference fields captured at point of sale and carried onto the Sales Invoice for downstream reconciliation and reporting
ECOSIRE builds this as a proper Frappe app installed into your ERPNext bench — not a themed spreadsheet and not a fork of core. We add first-class DocTypes such as Prescription, Dispense Entry, Refill Schedule and Controlled Drug Log, each with its own permissions, and we ship a custom POS screen (a Page/Portal or a POS Profile extension, chosen to fit your workflow) that suggests batches in true FEFO order using the Batch expiry_date. Dispensing quantity, batch and expiry are validated server-side inside hooks.py doc_events (before_submit/on_submit on Sales Invoice and Stock Entry) so the rule holds no matter whether the sale comes from the counter, the REST API or a bulk import — validation never lives only in the browser.
Technically, the substitute-suggestion engine is a whitelisted server method (@frappe.whitelist()) that reads a generic/molecule link field on the Item and returns in-stock alternatives with live batch availability, called from a Client Script on the POS screen. Controlled-drug schedules are captured on submit and written to an immutable log with the dispensing pharmacist, quantity and running balance. A scheduler_events hook runs a daily job to flag batches inside your configurable expiry window and to surface refills that are due, so near-expiry stock and lapsed patients are worked proactively rather than discovered at the till. Role Profiles and permission rules separate the counter cashier, the dispensing pharmacist and the manager who can void or adjust controlled entries. Everything targets ERPNext/Frappe v15 and v16 and is delivered as versioned, migratable source with fixtures.
Because this is build-to-order, nothing is auto-provisioned and there is no instant download. We start with a short scoping call to confirm your dispensing rules, controlled-drug schedules, insurance fields and reporting needs, then build against a staging bench, run UAT with your team, and cut over on a scheduled go-live. Typical delivery is 2–4 weeks from confirmed scope. You receive the full git repository, install and configuration on your environment, technical and user documentation, a training session, and a post-go-live support window — you own the code and can host it anywhere ERPNext runs.
Runs one or two counters on ERPNext and needs FEFO enforcement, prescription records and a controlled-drug register without paying for a heavyweight hospital system or leaving Sales Invoices as the only record.
Standardizes dispensing rules, schedules and insurance capture across branches and wants one Frappe app deployed to every bench, with role separation and a manager dashboard for expiry and refill exposure.
Needs the near-expiry batch surfaced automatically, substitute suggestions at the counter, refill limits enforced, and an immutable controlled-drug log that stands up to inspection.
Wants a clean, upgrade-safe Frappe app with proper DocTypes, doc events and whitelisted methods rather than a pile of Custom Fields and client-only validation, delivered with the git repo and docs to maintain it.
Lisansı ecosire.com adresinden satın alın ve hesap kontrol panelinizden Pharmacy POS & Dispensing for ERPNext uygulamasının ZIP dosyasını indirin.
ZIP dosyasını tezgahınızın uygulamalar klasörüne çıkarın veya çıkarılan uygulamanın yolunu içeren "bench get-app" komutunu çalıştırın.
Pharmacy POS & Dispensing for ERPNext yüklemek ve şemasını uygulamak için `bench --site SITE_NAME install-app APP_NAME` komutunu ve ardından `bench move'u çalıştırın.
Sitenizdeki ECOSIRE Lisans ayarlarını açın ve lisans anahtarınızı etkinleştirin. Ücretsiz ecosire_connect ve ecosire_license_client uygulamalarını gerektirir.
| Kriter | ECOSIRE | Özel Yapı | Rakip | Odoo Yerlisi |
|---|---|---|---|---|
| FEFO batch/expiry enforcement | Enforced server-side on submit, near-expiry batch defaulted at POS | Possible but you design and test the batch logic yourself | Often batch-aware but rarely enforces FEFO at the till | |
| Prescription & refill tracking | Dedicated DocTypes with refill limits enforced on submit | Built from scratch to your spec, at your cost and timeline | Varies; often basic notes rather than enforced refills | |
| Controlled-drug logging | Append-only register with pharmacist, schedule and running balance | Feasible but needs careful audit-trail design | Sometimes present, depth varies by vendor | |
| Substitute suggestions | Whitelisted method returning in-stock generics with live batches | Requires you to build the molecule model and lookup | Rarely included | |
| Ownership & code access | Full git repo handover, host anywhere | You own it but carry all build and maintenance effort | Usually licensed, limited or no source access | |
| ERPNext integration | Native Sales Invoice + Stock Ledger, no data silo | Depends on your team's ERPNext depth | Integration quality varies; some run parallel data | |
| Delivery model | Build-to-order, 2–4 weeks from confirmed scope, UAT + rollback | Open-ended timeline and internal resourcing | Instant install but generic fit | |
| Support after launch | Post-go-live support window plus optional maintenance | You support it yourself | Vendor support tiers, sometimes paid add-on |
This is a build-to-order product, so there is no instant download. After a short scoping call to confirm your dispensing rules, controlled-drug schedules and insurance fields, we build against a staging bench, run UAT, and schedule go-live. Typical delivery is 2–4 weeks from confirmed scope; tighter or broader scopes shift that window and we tell you before you commit.
We target ERPNext/Frappe v15 and v16 and pin the app to your exact version at handover. The app is a proper Frappe app with migration-safe schema, so `bench migrate` handles minor upgrades. Tell us your bench version on the scoping call and we build to it.
Every build includes a post-go-live support window for defect fixes and configuration tweaks. Because you receive the full git repository, your own team or any Frappe developer can extend it afterward, and ECOSIRE can quote ongoing maintenance or new features separately when you need them.
It extends ERPNext's own POS and stock engine rather than replacing it. Dispensing still produces standard Sales Invoices and Stock Ledger entries, so accounting, inventory valuation and reporting stay native. We add the dispensing DocTypes, the batch/FEFO logic and the pharmacy POS screen on top.
Yes. Refill limits, controlled-drug schedules and batch/expiry rules are enforced server-side through `hooks.py` doc events on submit, so they hold whether the sale comes from the counter, the REST API or an import. The controlled-drug log is append-only and corrections go through cancel/amend, preserving the audit trail.
The app exposes whitelisted REST endpoints so an external e-prescription source can create `Prescription` records and a claims system can read dispense history and claim references. We scope the specific integration on the call; connectors to a named third-party system can be added as part of the build or quoted separately.
Yes. You receive the complete git repository at handover with no per-seat licensing lock-in. You can host it on your own bench, Frappe Cloud, or any ERPNext hosting, and maintain or extend it independently.
A pharmacy checkout for ERPNext with FEFO batch/expiry control, prescription capture and refill tracking, and generic-substitute suggestions — built, installed and supported by ECOSIRE as a build-to-order Frappe app on v15/v16.