I have a question on the BOM. I have a BOM with routing setup. The routing has 2 operations and has been set up with an operation time of 1 min . I have hence submiited the BOM. I now need to change the operation time in the routing to 2 mins. However the change made to the operation in the routing is not picked up in the previously submitted BOM. Is there any way of achieving that. Is redoing the BOM only choice ?
Similarly if i create a new operation on a routing that is used in a Submitted BOM, how can i make the new operation reflect on the previously existing BOMS.
Since i have several multi level BOMS, cancelling / deleting the BOMS is not an option for every small change
I don’t think there is another way than to redo the BOMs. Yes, you have a legitimate point. It CAN become very tedious to manage BOMs.
I think there is another discussion around this and maybe @kennethsequeira is in the midst of addressing these kinds of challenges.
Maybe you can think of a simple DocType that is maintained where the BOM information is updated and with a bit of scripting or customization you make the manufacturing entries from this DocType rather than from BOM.
I have another related question on BOM. I have a multi level BOM. If i need to create a new version of the BOM in one of the levels, will i have to recreate all the dependant BOMs or will the dependant nodes use the higher version (assuming it is made default BOM ) of the child nodes automatically ?
You have to create the BOM all over again. Else the nesting will not come out okay.
While building BOMs you need to consider how the BOM will get used. Let’s say you have a Nesting like this:
ProductA > AssemblyP > RawMaterialX
Now the Exploded BOM for both AssemblyP and ProductA is RawMaterialX if you build the BOM for AssemblyP first and call the AssemblyP BOM when building ProductA BOM. If you are not careful and if the Is Default is checked, the BOM will get automatically pulled when using an input item that has a BOM into the BOM for another item.
Now let’s say you make the entries just once after ItemA is made. Then all you need to do is flush out RawMaterialX. Because you never made AssemblyP, there is no need to flush it out.
But let’s say you make the manufacturing entries for AssemblyP which has flushed out RawMaterialX. Now you see AssemblyP in your Stock Balance report. Now, while making ItemA, you (rather the user making the manufacturing entry) should take care to ensure that Use Multi-Level BOM is unchecked. Else you run the risk of flushing out RawMaterialX twice, especially if you’ve called AssemblyP’s BOM in ItemA.
Since users cannot be expected to remember these details, I like to, for my clients implementations, build two BOMs; One for Raw Material Planning. And the other for passing Manufacturing entries.
The BOM for Raw Material Planning is a nested BOM, so that users can know the quantity of RawMaterialX that is necessary to make X quantity of ItemA. While the BOM for Manufacturing is built to ensure that only the Items that need to flushed out is in the Exploded BOM of the Item. This is just so that there is no chance of user errors.
So, managing BOMs on ERPNext is indeed complex and we need to make it simpler, yet have adequate controls for users.
Not sure if this helps, but that’s the complexity you have to deal with.
Do you have negative stock turned on? Because if you don’t and you are trying to flush out the raw materials of the transformed item from the vendor specific warehouse, you will see no availability of the raw material and the transaction should not go through right? This is when negative stock is not allowed.
Maybe then the vendor warehouse has quantities from a previous transaction. I don’t think there is a way to connect up an Outbound Transaction to an Inbound Transaction without customization. Your best bet is to use a Make button from the Outbound Transaction that populates the Inbound Transaction and disable being able to make direct Purchase Receipt for Subcontracting.