How AI, IoT and event-driven systems are redefining the world
Sensors notice, events carry the news and AI decides. What the combination means for farms, factories, cities and the people who run them.
When ERPNext's settings are enough, when a script will do, and when it's worth building a custom Frappe app.
Every business that adopts ERPNext reaches the same moment: the standard system does 80% of what you need, and the remaining 20% is how your business actually works. Do you change your settings, write a little code, or build something new?
ERPNext is flexible enough to do all three. The art is choosing the lightest approach that does the job, because every step towards custom code adds power but also adds something to maintain and test at every upgrade. Here is how we help clients decide.
We think of ERPNext changes in three levels, from lightest to heaviest:
Our rule of thumb: always start at level 1 and move up only when there's a clear reason.
A surprising amount can be done without writing any code. ERPNext includes tools for the most common adjustments:
Configuration is the cheapest to set up and the safest at upgrade time, because you're using features the ERPNext team maintains.
When configuration can't express a rule, ERPNext lets you add small pieces of code without building a full application:
For example, a distributor might use a Client Script to fill in delivery charges automatically based on the customer's region, and a Server Script to stop a sales order being submitted if the customer is over their credit limit with an unpaid invoice older than 60 days.
Scripts are quick to write, but they live inside the database rather than in version control. A handful is easy to manage. Dozens become hard to track, test and move between your test and live systems.
When the requirement is big enough, the right answer is a custom Frappe app: a separate code package installed alongside ERPNext. This is where we use Frappe and Python for deeper changes, such as:
hooks.py and doc_events to act when an invoice is submitted or a stock entry is cancelled.A custom app lives in Git, can be reviewed and tested properly, and is installed the same way on every environment. It takes more effort to build, but for complex requirements it's much easier to maintain than many scattered scripts.
| If you need to… | Use |
|---|---|
| Rename, hide, reorder or add a field | Customize Form and custom fields |
| Add an approval step | Workflow |
| Change how a document prints | Print format |
| Alert someone when something happens | Notification |
| Calculate or validate values as users type | Client Script |
| Enforce a business rule on save or submit | Server Script, or a custom app if the logic is complex |
| Track something ERPNext has no document for | Custom app with a new DocType |
| Connect ERPNext to another system | Custom app |
ERPNext releases improvements and security fixes regularly, and you want to be able to take them. These habits make that painless:
When we implement ERPNext, we begin by mapping your processes against the standard system. Each gap gets a label: change the process, configure, script, or build. We agree that list with you before any development starts, so you know exactly what is standard, what is custom and what each custom piece will cost to maintain.