InvenTree icon indicating copy to clipboard operation
InvenTree copied to clipboard

[FR] Add "Request for Quote" (RFQ) Feature to Inventree

Open jrobelia opened this issue 1 year ago • 11 comments

Please verify that this feature request has NOT been suggested before.

  • [x] I checked and didn't find a similar feature request

Problem statement

We build systems that include fabricated custom components (machined aluminum, bent sheet metal, etc.) that we design but 3rd party fabricators manufacture. These items, sometimes 10-20 parts at a time, need to be quoted before we know the price, sometimes from multiple suppliers/fabricators. We get prices by issuing RFQs or request for quotes. They look almost exactly like purchase orders but without a price. Currently it is somewhat time consuming to add supplier information to each part for each of the multiple fabricators getting the RFQ (maybe 2-3 different suppliers). Also, fabrication pricing changes over time just like off the shelf parts so the original RFQ pricing expires and RFQs need to be sent out multiple times if you are building something 30-60 days after the first build. Having a way to add pricing and supplier information for a larger number of parts quickly would be helpful and being able to save RFQ for reissue/duplicate at a later date for pricing updates would be helpful as well.

Suggested solution

This would end up looking a lot like the PO system.

Under the main BUY drop down there would be another section called RFQs. This would look almost exactly like the Purchase Order section. You could make new RFQs for a specific supplier and add IPNs to a list, just like POs. However, there would NOT be a requirement that the IPN have a supplier part for the given supplier at that time. When all IPNs are added to the RFQ a report can be generated with qtys to send to the supplier for pricing. The RFQ could also be duplicated allowing the same RFQ list be send to multiple suppliers for quoting. When the RFQ is returned from the supplier with pricing, the pricing at qty could be added to each line item of the RFQ and a supplier part, sku (usually the IPN), and price could be created automatically each line item. When the price information has been added to an RFQ there could be a button to automatically create a PO from the RFQ for the given supplier with price and QTYs transferred.

Interesting thoughts:

  • Just like POs, RFQ line items and qtys could be added directly from line items in Build Orders. Allowing you to pull items and qtys you need for a specific build into an RFQ.
  • There could be an upload button just like on POs that let you upload a list of IPNs to be added to the RFQ (again not requiring a supplier part for the IPN to exist). This would allow for advanced filtering of full multi-level BOMs in a spreadsheet.

Describe alternatives you've considered

We generate list of IPNs to quote by downloading BOMs with all levels and then selecting the groups of custom parts to be ordered. We have been adding IPN as supplier skus manually for each part for each supplier then generating a PO for the part and titling it as an RFQ instead of a PO (the add supplier part during the add PO line item step is helpful). Then going back to each part individually when we get the RFQ back and entering price information. Then actually issuing the PO to the supplier we choose to go with and deleting the POs of any suppliers we don't choose to use at that time.

Examples of other systems

The now retired Parts & Vendors by Trilogy Design did exactly this. RFQs could be generated for a specific vendor by adding IPNs to a list. When the RFQ came back from the vendor you could add the price for each IPN at a specific QTY and that data would be stored in each IPN. POs could be generated from RFQs with one click. RFQs could also be generated from assemblies by selecting items from a BOM or Build list.

Aside: Through what seems like a case of convergent evolution Inventree is approaching the complete functionality of Parts & Vendors 6.0 by Trilogy Design. The RFQs and ECOs are the only major features missing, minus some specific functionality of the other main features. I used P&V for many years at a small custom equipment manufacturer and loved it.

http://web.archive.org/web/20220115232512/http://www.trilogydesign.com/

A download of Software is still available. You can run it in Demo mode. Available here: http://web.archive.org/web/20220430085850/http://www.trilogydesign.com/downloads/Pv6setup.exe

Do you want to develop this?

  • [ ] I want to develop this.

jrobelia avatar Oct 15 '24 05:10 jrobelia

This could open up interesting interactions with POs / Builds and help streamline communications. Most needed structure is there but there would need to be a bit more specification around the workflows. Things like possible states, state transitions and needed core features (change tracking, metadata, transition hooks, ...) should be fixed before somebody can implement this. There is probably 15-20 hrs of coding work in here once the requirements are clear, maybe someone from the core team is interested in picking it up @inventree/triage?

matmair avatar Oct 15 '24 12:10 matmair

@jrobelia certainly this would be a feature that dovetails nicely with what we already have. Additionally, adding quotes for outgoing (sales) orders might fall under this scope too.

Would your company be willing to fund (or partially fund) the development of this feature?

SchrodingersGat avatar Oct 15 '24 23:10 SchrodingersGat

@jrobelia certainly this would be a feature that dovetails nicely with what we already have. Additionally, adding quotes for outgoing (sales) orders might fall under this scope too.

Would your company be willing to fund (or partially fund) the development of this feature?

We are a small open source hardware company and may not be able to offer any large amount of funding at this time, but I will bring it up with the team. I have been looking for a piece of software like Inventree for many years and am grateful that the team has put some much effort into making it as robust as it is, thank you all.

jrobelia avatar Oct 16 '24 16:10 jrobelia

We appreciate everything you can give towards it, partial funding is one of the big benefits with polar.sh

matmair avatar Oct 17 '24 22:10 matmair

@SchrodingersGat do you see this in main? Maybe for 1.0? I would be interested in sketching these flows and data structures out. The original FR is a bit much, and the first PR would be a bit simpler but I see great mid-term possibilities - especially in combo with #7950, #7951

ECOs would also be very interesting to move into general MES territory - see #4826

matmair avatar Nov 11 '24 23:11 matmair

Now that https://github.com/inventree/InvenTree/issues/7950, https://github.com/inventree/InvenTree/issues/7951 are done and merged, I am looking into how this could be done. @jrobelia can you please sketch out your specific requirements:

  • data fields (what data should be tracked per rfq)
  • intended workflow (with what the system should do, validate at each step)
  • permissions / actors for rfq and what restrictions are needed

matmair avatar Jun 25 '25 06:06 matmair

Now that #7950, #7951 are done and merged, I am looking into how this could be done. @jrobelia can you please sketch out your specific requirements:

* data fields (what data should be tracked per rfq)

* intended workflow (with what the system should do, validate at each step)

* permissions / actors for rfq and what restrictions are needed

I'll take my best stab at this based on my past use cases and current intended uses:

Data Fields (see attached image for reference): Per the FR this is similar to a PO. However, we are asking a company to respond to this document with the price and possibly lead time/s for the production of a specific part/s at specific quantities.

  1. Info for Company the RFQ is being sent to(supplier):
  • Company Name
  • Address
  • Contact Name
  • Phone Number
  1. Info for Company that is sending the RFQ (more than likely the company with the inventree installation)
  • Company Name
  • Address
  • Technical Contact Name
  • Buyer Name (could be "Responsible")
  • Phone Number
  1. RFQ Info
  • RFQ Number
  • Date Issued
  • Date Required/Lead Time (This is an optional field if there is a specific date the parts are need by, or this could be filled in after the response is received if an overall lead time is given)(this equates with the target date in the PO system)
  • Other standard data field like, "link", "currency", and "project code" could also apply
  1. List of IPNs to be Quoted
  • Line number (when discussing RFQ one can refer to specific lines, line item 1 or line item 2, etc.)
  • IPN
  • Description
  • Revision
  • QTY (QTY could be handled a couple of ways: a line item for each qty to be quoted (simplest, but possibly confusing to suppliers), or the ability to add multiple QTYs per line item (possibly clearer as to the intent of a single parts quoted at multiple qtys but probably harder to implement)
  • Unit
  • Lead Time (entered after response)
  • Price (entered after response)
  1. Notes

Intended Workflow (with what the system should do, validate at each step) RFQ Status Variables: Pending, Issued, Complete, Canceled

  1. RFQ overview page exists similar to the PO overview page
  2. New RFQ created with New RFQ button
  3. On RFQ creation pop-up window: a. data from lines 1-3 above would be entered
  4. Status: Pending
  5. Once RFQ is created IPN can be added similar to a PO with an add line item button
  6. On line item creation pop-up screen: a. Part list drop down would not need to be filtered by supplier (the IPN would not have to have a supplier part at this time from this supplier) b. All data fields here the same as PO except price, target date, and merge item c. (Price and LeadTime/TargetDate may want to be included on this screen but would typically not be filled out until a response from the supplier was received)
  7. Once all line items were entered the status could be changed to "Issued" and a report printed and sent to a supplier
  8. When the RFQ is returned from the supplier price and lead time(optional) could be entered for each line item/qty and status would be set to "Completed" a. There could be a line item option/s (like receive button on PO line item) that allows you to add price and lead time for a given qty and then give the option of automatically(or manually with another button) creating a supplier part for the IPN and also filling in part pricing at that qty. b. There could also be a "Convert to PO" button next to the "Add line item" button that would bring up a pop-up window letting you select which line items would be included and then add them automatically to a PO with qty and pricing info filled out. Lead Times, whether in the RFQ data and/or line item data, could convert to a target date based on the current date.

Permissions / actors for rfq and what restrictions are needed I'm not sure I understand the current Permissions and restriction that are in place for POs so I'm not sure I can answer this one.

Image

jrobelia avatar Jul 15 '25 17:07 jrobelia

Thank you for providing this information @jrobelia - I will try to make an MVP in the next few months and will tag you once it is ready for a first review

@SchrodingersGat is this something for core or should this be a plugin?

matmair avatar Jul 16 '25 05:07 matmair

This feels like it might be a good plugin candidtate - especially as the UI plugin ecosystem is quite advanced now. I could see this going either way, either an (optional) first-party feature or a plugin...

How would you prefer to see it implemented?

SchrodingersGat avatar Jul 25 '25 11:07 SchrodingersGat

I think the answer really dependents upon the larger goal for sales / purchase orders. If we want to extend functions of those and make state transitions a part of them, then it would make sense to have it in core, as having a whole state handling mechanism in a plugin sounds quite fragile.

If this were to be a one-and-done single feature with a simple, unconnected data structure, then a plugin is probably the right way

matmair avatar Jul 27 '25 21:07 matmair

Hello, Rather than a full-blown RFQ tool, I'm looking for a quick way to determine what the BOM cost of a certain quantity of assemblies would be, given supplier quantity discounts. For example, if I have an assembly with many parts from several different suppliers, and I want to quickly determine what buying 55 of them would cost, is there a way to quickly determine that other than: create a "test" build order -> create purchase order x num. of suppliers (tediously adding each line item from dropdowns) -> adding up PO costs manually -> delete previously made BO/POs. Such an automatic tool could give a cost range if parts have multiple suppliers. The trick is I want a cost estimate for the whole assembly based on quantity discounts of parts. Thank you!

aortiz2323 avatar Oct 23 '25 18:10 aortiz2323