The ERPNext pricing module feels outdated. If scripting is needed for even moderately complex configurations, it undermines the goal of being a user-friendly ERP.
The development team seems focused on fixing bugs, leaving little room for improving this core feature. For businesses with complex pricing needs like minimum order quantities, tiered pricing, or cumulative tiered pricing, the module becomes unusable.
This is frustrating, especially since such pricing models are common for agencies, wholesalers, and other modern businesses. The module seems designed only for basic products, excluding wholesalers or anyone needing advanced pricing logic.
Anyone else struggling with these limitations?
2 Likes
Yes, it is.
In our case, like any country with inflation, there is no single tool to update prices massively (importing new prices is not an easy option by any means). So on that basis, we had to make these modifications.
I never quite understood the pricing rules, for simple issues, they seem very complex, and in your case, for complex issues they are not useful either.
From what I read or I don’t remember if in the frappeverse, they mentioned that they are going to be with this, you would have to review the video in the ERPNext part.
I completely understand your frustration. The pricing rules in ERPNext are unnecessarily complex, and when you finally figure them out, it becomes clear they’re just a basic feature—not nearly as sophisticated as they claim. For even moderately complex pricing scenarios, which most other ERPs handle with ease, you’re forced to rely on custom scripts. Even then, the scripts don’t run in real time; they’re only triggered before saving or inserting data.
I attempted to modify the source code myself but quickly realized it’s not as straightforward as I thought. The way the pricing rule feature is built makes it nearly impossible to adapt without a complete overhaul. I genuinely believe the entire module needs to be reworked from the ground up.
For anyone in the service or wholesale business, I strongly recommend exploring alternative ERP solutions. ERPNext’s pricing module simply falls short and isn’t suitable for these industries.
Definitely.
Agree completely. I’ve modified the source code a little. This is difficult because:
- It’s complex and quite a mess.
- Very little inline documentation.
- Lots of scenarios where “args” is passed around. But the schema and meaning of “args” varies a lot depending on what’s happening. Quickly gets tricky when you need to decipher what’s going on, or make changes.
- Some pricing code only exists client-side. When you try to interact with the DocTypes purely with Python, there are holes.
- Some features simply don’t work at all, or only in limited use cases.
- A lot of the code tries to be “global” across modules. And its behavior greatly depends on consistent DocType names. It’s easy to break POs by adding SO features, and vice versa.
I could write pages about this, but it wouldn’t really help anyone here.
I’m doing what you already mentioned: starting from scratch, from the ground up.
It’s not ideal. But it’s the only way I’m going to solve my company’s challenges.
2 Likes
I completely agree with your points—it’s a real challenge to work with the pricing rule feature as it stands. A few approaches come to mind:
Requesting a feature update might help, though it’s clear the development team is focused on bug fixes for now. They ignore all feature requests on Github.
Branching the module and rebuilding it ourselves could be an option, but that requires significant effort and coordination to ensure it’s something that can fit all type of businesses. I am already taking a look at how Odoo ERP is handling the pricing rules, it’s not perfect, but seem way more organised and easy to improve.
Forming a small team to tackle the issues collaboratively might be the most practical solution if we want this done sooner rather than later. So getting some more developers here struggling with the same issue and that know the software well would help a lot.
It’s not ideal, but waiting for improvements might take longer than we can afford.