跳至主要内容
产品详细信息以英文显示。翻译即将推出。
Pharmacy POS & Dispensing for ERPNext — A pharmacy checkout for ERPNext with FEFO batch/expiry control, prescription capture  — 1/1示意预览

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.

什么是 Pharmacy POS & Dispensing for ERPNext?

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

核心功能

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
Batch/expiry validation wired through `hooks.py` `doc_events` (`before_submit`/`on_submit`) so rules hold across POS, REST API and bulk imports
Custom POS screen (POS Profile extension or Frappe Page) with barcode scan-to-batch, keyboard-first workflow and substitute lookup inline
`scheduler_events` daily job that flags batches inside a configurable expiry window and lists refills due, feeding a manager dashboard
Role Profiles and permission rules separating cashier, dispensing pharmacist and manager, with restricted rights to void or amend controlled entries
Immutable audit trail: dispense entries are submittable documents; corrections go through cancel/amend, never silent edits, preserving the Stock Ledger
Whitelisted REST endpoints so an e-prescription feed, a mobile counter or a claims system can create prescriptions and read dispense history
Print formats for the dispensing label and controlled-drug register, built as Frappe Print Formats you can restyle
Delivered as a versioned Frappe app with fixtures and migration-safe schema, tested against ERPNext/Frappe v15 and v16

按需定制,全程代劳

无需自行搭建——由 ECOSIRE 构建、安装并提供支持的可用应用。

  1. 1

    您下单

    以一次性构建价格开始。我们在启动时与您共同确定范围。

  2. 2

    我们构建与安装

    ECOSIRE 在您的 ERPNext 上构建、配置并安装。

  3. 3

    上线 + 支持

    约一个工作周内上线,并包含两周上线支持。我们交付的代码中的缺陷免费修复。

技术规格

ERPNext 兼容性
—
许可证
许可证需要确认
Python 要求
Python 3.10+
数据库
MariaDB 10.6+

关于此产品

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.

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 one working week 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.

你得到什么

  • Installable Frappe app source code for your ERPNext version (v15 or v16), pinned and migration-safe
  • Installation and configuration on your bench or hosting, including POS Profile, Role Profiles and fixtures
  • Technical documentation: DocType reference, `hooks.py` doc events, whitelisted methods and scheduler jobs
  • End-user guide for counter and pharmacist workflows plus a live training session for your team
  • UAT on a staging bench with a signed-off test script and a documented rollback plan for cutover
  • Post-go-live support window for defect fixes and configuration adjustments
  • Full git repository handover — you own the code and can host it anywhere ERPNext runs
  • Print formats for dispensing labels and the controlled-drug register

这是给谁的

Independent pharmacy owner

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.

Retail pharmacy chain operations lead

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.

Dispensing pharmacist / pharmacy manager

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.

ERPNext implementation partner or in-house admin

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.

Pharmacy POS & Dispensing for ERPNext 如何比较

标准伊科西尔定制建造竞争对手ERPNext 原生
FEFO batch/expiry enforcementEnforced server-side on submit, near-expiry batch defaulted at POSPossible but you design and test the batch logic yourselfOften batch-aware but rarely enforces FEFO at the tillBatches exist; no FEFO enforcement in POS
Prescription & refill trackingDedicated DocTypes with refill limits enforced on submitBuilt from scratch to your spec, at your cost and timelineVaries; often basic notes rather than enforced refillsNo prescription or refill concept
Controlled-drug loggingAppend-only register with pharmacist, schedule and running balanceFeasible but needs careful audit-trail designSometimes present, depth varies by vendorNot available
Substitute suggestionsWhitelisted method returning in-stock generics with live batchesRequires you to build the molecule model and lookupRarely includedNot available
Ownership & code accessFull git repo handover, host anywhereYou own it but carry all build and maintenance effortUsually licensed, limited or no source accessCore code, but no pharmacy layer to own
ERPNext integrationNative Sales Invoice + Stock Ledger, no data siloDepends on your team's ERPNext depthIntegration quality varies; some run parallel dataFully native but missing the dispensing features
Delivery modelBuild-to-order, one working week from confirmed scope, UAT + rollbackOpen-ended timeline and internal resourcingInstant install but generic fitImmediate, but you build the gaps yourself
Support after launchPost-go-live support window plus optional maintenanceYou support it yourselfVendor support tiers, sometimes paid add-onCommunity/self-support only

关于Pharmacy POS & Dispensing的常见问题

How long does delivery take?

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 one working week from confirmed scope; tighter or broader scopes shift that window and we tell you before you commit.

Which ERPNext and Frappe versions are supported?

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.

How does support and updates work after go-live?

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.

Does it replace the ERPNext POS or sit alongside it?

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.

Can it enforce controlled-drug and prescription rules, not just record them?

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.

Will it integrate with an e-prescription feed or insurance/claims system?

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.

Do we own the code?

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.

申请报价

Pharmacy POS & Dispensing

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.

  • 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

申请报价

告诉我们您对 Pharmacy POS & Dispensing 的需求,我们将发送价格、许可选项和量身定制的方案,通常在一个工作日内。

现在无需付款。此操作会向我们的团队发送报价请求——我们会通过邮件跟进价格和后续步骤。