Sample BOM for car repair

From what I understood, a bill of materials (BOM) is an extensive list of [raw materials], components, and instructions required to construct, manufacture, or repair a product or service.

Now, I’m asking this in the context of a car repair business, am I right to think each time a car comes to the workshop for repairs, a BOM has to be created? But at the same time, I understood a BOM as a template?

Can someone clarify this?

@redgren BOM are used to describe the raw materials needed to produce something, in theory you should be able to issue “Work Orders” to “Services”, but ERPNext doesn’t handle this scenario, and in “Car Repair Service”, is exactly what we are talking about.

The issue with “BOM” for your case, is that it will get many items from your inventory, convert in another item, that you never “Delivery” it phisically for the customer, because you don’t produce anything.

The simplest scenario to handle “Car Repair Service” in ERPNext, is throught “Sales Order”

For generic services, you can create a “Product Bundle” describing how many parts a service contain.

You can also, create a project eg: “Toyota X-0129348102 2021-01”, with the tasks needed to give the maintenance for the car. So, you can make “Delivery Notes” linked within this project, to report the parts you have replaced into the car, and create an “Installation Note” from the “Delivery Note”.

At the end of day, each employee, can report the time spend against each project, and task over timesheets, and you can use these hours + the delivery notes to bill your customers.


Thanks for the timely response, I like your proposed solution, but if I may ask, will I be able to use Production Plans along with it? Bacause once a vehicle is on the Workshop Floor, we will need to monitor how its going, stages like Panel Beating, Mechanical etc.

When you create the project automatically u can have a kanban board on existing repairs

1 Like

Can I “Order” parts during a certain stage with this @SOLOSOFT?

You can update the delivery note as described


Thanks for the quick response, and apologies for asking somewhat “dumb” questions, I just discovered this ERP. Could you please show me how I can create a sample Job Card for a vehicle that goes throught the following operations:

Panel Beating, Preparation, Painting, Mechanical

And during that process, order “a tyre” on “Preparation” stage.

I would very much appreciate it.


Tell us a little bit more about your business. Is this standard service with standard consumption of consumables, lubricants and parts? Or is this customized for each car/client?

If it is standard service, it does make sense to create a BOM and use the Workstation/Operations feature.

If each service is different, you are better off using the Sales Order feature of ERPNext. You don’t have to call it Sales Order, you can always print it out as Job Card. You then may have a standard or a customized BOM for each item on the Sales Order. Like Engine Oil Change may include Engine Oil, Filter and some consumables.

Like Max said you can make the Project feature work for you in terms of booking time and parts to a project, but that’s a bit of a drag as you will have to create as many projects as the number of automobiles you service. You could book the time straight to a Sales Order by adding a custom field into the Timsheet document.

You can hack ERPNext from a users perspective to make it work for you, but if you can intest time/energies or money to do a bit of customization, you can actually build something that’s quite elegant and can work for you well.

Hope this helps.



Hi @JayRam

Thanks for the detailed explanation. So the services aren’t standard as such, but there is Panel Beating, Resprays, repair for accident damage, where new parts might need to be ordered to accomplish, and an accident damaged vehicle for instance might have more parts to order while another one might require less. So when we have a particular Job, we want to have costing, for materials used and also labour.

I don’t know if that gives you an idea of what I’m after.


Came accross this post, is this what your suggestion of using sales orders might look like?

Yes, it does. I guess you have a process of providing your customer an estimate - you probably call it job card or equivalent. You begin with that, get the customer sign off and as your employees work on the repair they may find deviations - like there is more damage than what you expected, so your employees call the customer, run it past her/him and then order out the parts.

I think rather than get too cute, how about you set up as many virtual warehouses as the number of automobiles you are servicing at any given time and then get your employees to make a Material Request into the appropriate warehouse. Depending on availability the request could be fulfilled from stock or could be procured. As an automobile is repaired, the valuation of the items in the virtual warehouse is the parts/consumables/spares, etc. that you used and the time sheet gives you the time spent by your people on each Sales Order. As you bill the client, you flush out the quantities in the virtual warehouse to the cost of goods sold (Stock Entry Purpose Material Issue, Difference/Expense Account: Cost of Goods Sold or Cost of Repairs, etc.). And once flushed out , you could reuse this virtual warehouse for the next car. Max will say that you could achieve more or less the same thing with his Project approach, but it’s harder to reuse Projects.

Hope this helps.



1 Like

This is exactly what happens. Thats how things are done currently, manually of course. In the previous post, I meant to post this link: Using ERPNext for Repair Services | Frappe Blog

Wow, that is an awesome suggestion Jay! I will have to add that to my list of configuration tricks for ERPNext. Re-using warehouses fixes a great number of issues that do not flow well otherwise. Only wish I had thought if that when I first started.



All my implementations use virtual warehouses fairly extensively. You can simulate workstations, operations, processes, etc. etc. using virtual warehouses. ERPNext supports warehouse level valuations, so we are trying a new implementation where an item has to go through 4-10 different processes to be manufactured and rather than create different item codes for each of these processes (which I think you still need to do on ERPNext if you want to flush out raw material at each process level) we are building the context sensitivity of the same Item (say ItemA) in different warehouses. Like ItemA in Warehouse P means that it’s completed Operation X and so on.

Maybe we should do a Hack Challenge. We state a Business Scenario and we open it up to people to say how they will hack ERPNext to accomplish the required outcome. ERPNext enthusiasts not just say it, they show it on their instance of ERPNext. The winner of the Hack gets bragging rights and we also publish the optimum way to hack it. Then we move on to the next Business Scenario. And so on. :slight_smile:




A hack challenge sounds like a great idea, because since I’ve discovered ERPNext, I’m seeing a lot of ways to tackle a single scenario, but now, the issue is finding the optimal way to do it.

Thanks @JayRam


I think the hack challenge is a good idea. However, I believe it would have limited participation. Most of us using ERPNext are business owners that still have businesses to run even under these challenging pandemic times. So right out of the gate there is a limited pool of possible participants.

The next challenge is to have a running ERPNext system that can be hacked without interfering with your day-to-day business needs. I know that I keep many virtual servers running with several different versions of ERPNext at all times so that I can test ideas. I believe though, that I am more the exception than the rule when it comes to having the resources to participate in a challenge.

Even more problematic is the wide variety of business use cases that are possible. The field of potential participants narrows significantly when we start looking for solutions to business use cases that will not affect more than a third of the community at any given time. In order to participate is such a challenge the participant would need a running system not only on an expendable server, but one with appropriate data sets to allow the challenge to be exercised.

For example…
If we were to run the first challenge on the business scenario that come up in this thread for a car repair shop, a participant would need to expend a great deal of effort just in making up the data for testing as well as configuring the system for the intended scenario. All of this even before they attempted to then hack it further to meet the challenge.

If this were a college course it would be great. And maybe that is how we could actually get such a challenge up and running by not only proposing the challenge, but by also requiring each participant to submit a white paper explaining every step of the process and why those steps are needed. In this way, each entry (even the ones that are not very sophisticated or not winners) serves as a course in how to approach the same problem in multiple ways.

The reason I think this is the right approach is that many of us are not good programmers or developers. Many of the participants will suggest paths to success that may be out of reach for more than 80% of the user base. So by making ALL of the participants use cases each their own mini course, we can provide multiple levels of success based on the audience skill level. In this way, almost every possible user can benefit from the results of the challenge.

I think it is fine to post a winner, but it is also important to post every participating result with a skill level commentary by the judges of the event in order to layout the multitude of skill level approaches to the same problem solving exercise.

I believe this is really the way to make such a proposed event useful to the community at large.

I know the beginning of my post here sounds anti-climactic, but that is because I want everyone to understand that if such a challenge is proposed as a winner take all event, then it will be discouraging to much of the community that does not see themselves as very good at developing application or modifying them. But if it is framed as an event for even the beginner to attempt, then we might see such an exceptional level of participation because it will not feel like something aimed at only the best of the best. It has the possibility to provide a solution for everybody, even if it is not the contest winning solution.

For that matter, maybe it is not even staged as a judged winner type of contest, but instead as a published HOW-TO hacking contest that makes all of the results open for public review and commentary. Only then can you actually judge the value of the hacking contest to the rest of the community. It provides the community with solutions at every skill level that might finally get even beginners motivated to add to our knowledge base along with those of us a bit more seasoned at this.

My entire point here is to find a way to encourage the greatest possible participation in such an event. Only by examining the challenges to such an exercise can we then plan for better participation. Hence, my early break down of the participants at the top of this post.

As Always, this is just my opinion… and…

Your mileage may vary! :sunglasses:


1 Like

Hi JayRam

I like your idea of virtual warehouses. Just want to understand that if we are keeping the same item (ItemA) throughout the manufacturing cycle then how the cost will be added in the product cost?

Hi Saeed,

Our customizations load up cost of raw materials consumed and out sourced labor to the valuation of the item as it flows from one process to the next.



Hi Jay

Thanks a lot for your clarification. Little curious to know which feature of ERPNEXT you are using to load the cost of RM and labor to the same item.

Thanks in advance

Hi Saeed,

It’s a feature we built through our customizations. So the same item in a different warehouses means different things. For instance, ItemA in the Process X Outbound warehouse could mean that the Item is ready to go out for the first process. Whereas in the Process Z Inbound Warehouse means that the item has finished Processes X, Y & Z and is ready to be shipped to the customer. At each process the raw material and the labour costs (and other overheads too, if required to be loaded) gets loaded onto Item A.

Hope this helps.