nopSolutions / nopCommerce

ASP.NET Core eCommerce software. nopCommerce is a free and open-source shopping cart.
https://www.nopcommerce.com
Other
9.34k stars 5.34k forks source link

"Request for quote" and "Quote" support #279

Open mariannk opened 8 years ago

mariannk commented 8 years ago

This tasks contains several subtasks. Here is a simplified workflow:

  1. Allow customer to "request for quote" of some products
  2. Allow merchants to create a "quote" for customers. These "quotes" will be in admin area with the "Create a quote from an RFQ" functionality (FRQ = request a quote)
  3. Convert "quote" to an "order". A customer can then view his quotes and change them to orders.

Good examples of third-party implementations are available internally (check with Andrei)

So a customer has to submit an RFQ first. RFQs are used by sales representatives to assist customers and meet their needs through negotiations on a better price, more convenient quantities of products, or additional services.

Let's think and decide whether quotes will be saved to. We have two ways to go (each has pros and cons):

  1. Create new "Quote" and "QuoteItems" tables. It'll require some minor code logic duplication but will help us to keep our logic simple
  2. Store them in the "Order", "OrderItem" tables in order to avoid logic duplication. In order to distinguish them with real orders will add new flags for such purposes. It'll require some further investigation. But most probably it'll be some kind "OrderType" enum ith values such as "Standard order" (our current type of orders) and "Quote".
    • Then we'll add some other properties related to quotes such as "Expiration date", "Quote status" (submitted by customer, declined by customer, approved by customer, expired, converted to order, etc - this list should be discussed and finalized).
    • Some information will be missing in quotes (such as shipping details, payment details, etc). It'll be entered later
    • We also have to exclude such "quote" orders from existing reports or "Order list" pages

In order to avoid bugs and keep it simple the first way seems to be a better way to go!

So once "request for quote" submitted by a customer is saved, a store owner will be able to process it and convert to a final "quote".

Also add the following option (settings):

There's no need to support guest quotes. Display the "Request a quote" button but forward to the login page once clicked

viewtance commented 8 years ago

Hi @AndreiMaz , is there a planed date to implement this feature? I want to get this feature ASAP.

AndreiMaz commented 8 years ago

@viewtance Not yet. maybe in the next version

suddenelfilio commented 8 years ago

I implemented this back in version 1.9 :-) I just added a column to the order table isQuote, and then override all Order related methods with a Quote override which would set the column to true. Also updated the UI as well as the email templates to differentiate Order and Quote.

You can still see it at http://www.visuatech.be

SteveLedo commented 7 years ago

Hi @AndreiMaz, this feature had been removed from Version 4.00 on June 11th. Is it postpone to next version, abandonned ? I'm Also looking forward for this feature for our B2B.

AndreiMaz commented 7 years ago

Hi @SteveLedo Its label is not "onhold" so we'll implement it. But not in version 4.00, later

SteveLedo commented 6 years ago

Hi, On our side the main use we would like to do with this option is the possibility Select several items and set a price for each one, then send an offer to the customer and have them to accept or reject the offer.

As a technical B2B business, we need sometime to make a selection for our customers of the exact items required for their specific needs. Quite often our customer are unsure of the best suitable Item or groups of Item they should select. Our trained team can make the best selection for them and send a proposal.

SteveLedo commented 6 years ago

InFact operation should be very similar to the whislist syetm, But the link should be individual (one individual links per proposal) and permanent pricing and items until the expiration date of the proposal.

Currently the whislist system allow to send the wihlist and have somene else to place an order from the wihlist, what is good. But the whislist links content change as soon as the sender change the content of the wishlist, what is normal (for the whislist purpose). But does not allow us to use it for quote proposal purpose.

SteveLedo commented 6 years ago

Hi @AndreiMaz see attached a detailed information on how we see the Quote proposal from our side. Let see if this can help Quote proposal_Nop_v2.pdf

zootie commented 6 years ago

Probably, the simplest and most elegant implementation is by using the Order table, as the OP points out. IMO, rather than using an IsQuote column, use OrderStatusId, as a Pre-Order status, or (better yet) add an OrderTypeId column, akin to Product Templates (so nopC would filter/deal only with OrderTypeId in (Order, SavedCart, etc.), allow plugins and end users to define different OrderTypeIds to suit their needs). Same idea could be used to implement multiple saved shopping carts (just add a column to name them). Semantically similar/identical to a Pending or Canceled order.

This avoids duplicating Order functionality in other entities, and could use the same ID namespace (so users can refer to them by ID before and after it is approved to become an order). It could be up to the shop on how to activate a quote (either by changing its type, or by cloning it with an order status).

Only new useful functionality to implement would be to having an UI (or just a method/SP) to copy an order (ie, do a deep copy of all elements related to an order), to allow to copy a quote (or a cart), which is a common requirement when doing quotes (being able to create multiple similar quotes from the same base products). It would also be useful to have a compare side by side feature.

Quote expiration could be implemented also as a status, semantically identical to a canceled order. Or if using OrderTypeId, just set it to canceled.

maximilianmosimann commented 5 years ago

Hi @AndreiMaz does nopCommerce have any updates on the status of this feature? Thanks!