inventree / InvenTree

Open Source Inventory Management System
https://docs.inventree.org
MIT License
4.32k stars 781 forks source link

[FR] External Processing for Build Routing #2860

Open rotofyne opened 2 years ago

rotofyne commented 2 years ago

Problem Build Orders sometimes require sending an item externally for processing (e.g. anodizing) prior to completion . Ideally, the Build Order module would allow you to mark an item as requiring external processing and then allow you to pull the item to a purchase order or sales order (sometimes called a Repair Order in other systems). This would require a change in the purchase order/sales order module. This could potentially tie into issue #2817 as it would be a part of build routing.

Suggested solution Assuming build routing is implemented as described in issue #2817, each routing step would have the option to have a property indicating whether the step is internal or external. If the property is labeled as external then it becomes possible to label the items as corresponding to a specific purchase order or sales order. If using the purchase order module, the purchase order could then have a virtual P/N corresponding to the external processing step and would additionally have meta data notifying the user of the link to the BO. The purchase order module would then need similar structure to the Sales order module for creating shipping. Alternatively the BO could be pulled to a sales order even though the build outputs aren't complete if it is marked as an external process item. The sales order module would then just need a way to differentiate between selling something and sending something out for external processing. I think integrating it into the sales order module would be preferable to the purchase order module as most of the structure seems to already exists regarding linkages to build orders.

Describe alternatives you've considered You could potentially use the test framework for this in conjunction with a SO however that would not allow you to pull items from the partial BO to the SO. A custom report could be used to create a form to send to vendors based on the SO to complete the required work.

Examples of other systems The suggested solution above is similar to how most ERP systems handle routing of items for external processing although they sometimes refer to Repair Orders instead of Sales Orders or Purchase Orders.

Do you want to develop this? Yes, I have experience in python. I am not sure if this is feasible as a plugin or would require some other approach.

github-actions[bot] commented 2 years ago

Welcome to InvenTree! Please check the contributing docs on how to help.\nIf you experience setup / install issues please read all install docs.

SchrodingersGat commented 2 years ago

@rotofyne thanks for the input - it is interesting that you also thought of anodizing as your example, this is very similar to https://github.com/inventree/InvenTree/issues/1071 (a very old issue now)

I think the idea of this being a process step as part of a build order makes a lot of sense.

Perhaps, the conceptual ProcessStep model could have an associated PurchaseOrder field, and as such the user could look at the current "process state" of the Build Order, see it is in "andozing", with a reference to the purchase order for the external supplier. Once the anodized parts are received, the PO is closed, and the build progresses to the next step.

I do not think this makes sense as the "SalesOrder" model, as you are purchasing goods / services here.

It would be good to make some progress towards this, I know of at least a couple of companies which would make use of such a feature.

rotofyne commented 2 years ago

@SchrodingersGat Thanks for the reply. I think what you are proposing makes sense as far as process states. The field would then need access to all open POs for selecting where it is going. Ideally the PO would also link back to the BO (maybe in the reference column?) The part I liked about sales orders is they seemed to already have the logic in place for creating shipping which would be necessary for the process step as well as already being able to be tied to specific BOs. Could those features be integrated into the PO module? Do you think this makes sense as a plugin or as a modification to the core features? As a first step it might it might be good to look at being able to create shipping in conjunction to a PO. It may be worth looking at decoupling shipping from the sales order module as theoretically you could buy something and need to create shipping (as in this use case), sell something and need to create shipping (as in the standard use case) or neither (in the case of an RMA).

matmair commented 2 years ago

@rotofyne just a heads up - this might take a while as there is a lot to implement and test before this can go ahead. We have a lot of items on the roadmap and only so much dev time. Please keep an eye on #2817 as that needs to be done before this issue is resolved.

rotofyne commented 2 years ago

@matmair Thanks, that makes sense.

matmair commented 2 years ago

@rotofyne if you need this feature fast please do not hesitate to reach out - we will try to find a way for you.

rotofyne commented 2 years ago

@matmair I'm not in a rush and as mentioned above I'd like to help if I can.

mabroens commented 1 year ago

@SchrodingersGat thanks for pointing to this conversation and yes I agree with @rotofyne his approach seems like a good thought. and the linking between SO/PO/BO should be trackable.

Br Martijn