nopSolutions / nopCommerce

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

Phone orders in the admin area. Allow administrators to place orders in admin area (not the "Impersonate" functionality) #1920

Open AndreiMaz opened 7 years ago

AndreiMaz commented 7 years ago

Sometimes the customer calls directly the store and asks to buy something. So llet's allow merchant to take phone orders in the admin area. We already support a workaround with the "Impersonate customer" functionality. It works absolutely fine but sometimes managers prefer having this functionality available in the admin area. The store admin should be able to fill in a few customer details and add the products to the order

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

This is how it could work:

  1. There will be a "Create a new order" button on the order list page in the admin area.
  2. A store order will be able to choose a customer for the order or select "Create New Customer". I think there's no need to support guest checkout in the first version of this functionality, we can implement it later

Other way to go will be a new "Create a new order" button displayed on the existing "Place order (impersonate)" tab on the customer details page. In this case this tab will have two options: "Impersonate" (already exists) and "Create a new order". Of course, there should be some good description for both buttons.

Then the logic will be the same as in the public store (as below)

  1. Add products to the order
  2. Enter customer billing and shipping details
  3. Under "Shipping Method", click "Get shipping methods and rates" and choose a rate
  4. Under "Payment Method" select available options. Here we should allow an option to choose some payment method, but skip the payment itself (configurable). It could be helpful when a customer doesn't want to share his credit card number and complete the payment himself later (for example, using a payment link sent to his email address). Here is an interesting idea
  5. Complete an order (save it)
  6. All the rest workflow will stay the same We should find a way to minimize duplication of checkout logic and source code.
shoecake commented 7 years ago

One issue I had when setting up taking phone orders on my site (via impersonate user) was that I couldn't use the same payment providers as a customer would. i.e. most merchant providers have a separate 'virtual terminal' web page to take card details over the phone. I fixed this by creating a new dummy payment module which is only available if the impersonate user is active, and then take the payment manually. I am just highlighting that any phone payment system would need a way to use different payment providers or to be able to bypass the payment completely and be able to manually mark as paid.

SteveEmbry commented 7 years ago

I'd just like to suggest that admins handling incoming phone orders need a simple order form with minimal visible information.

The product info displayed on the simple order form should be configurable by admins. For example, we want to see a 100px thumbnail, product name, SKU...but other admins may want to see other info, or smaller thumb, or no thumb..

Each product row should be "expandable" to see and add any configured attribute combinations" to the cart, but collapsed by default. (product short description could be displayed on hover of the product thumb)

There should be a category filter at top of simple order form to show only products in currently selected category. Show all by default.

Opening the simple phone order form should initiate a "Phone Order session" Once all items are added to cart, the normal checkout system could be used, but the customer email requirement must be made optional when the phone order session is active. If no email provided, don't tell EmailService to send customer notification...and as shoecake said, admins will need to be able to show any/all payment method options when that phone order session is active.

We should create an order note saying "Phone order created by {CurrentAdminUsername}" for accountability.

Admin settings: Configuration >> Settings >> Order Settings >> Phone Orders (tab) --Enable Phone Orders (this makes new button to start new 'Phone Order' session appear in the admin order list view) --Checkout Payment Methods (this lets admin choose which payment methods will appear when phone order session is active) --Simple Order Form Designer (this lets admin choose which columns/and display order to appear in his simple order form)

I think we can use existing checkout logic with simple conditional coding in the checkout view, based on "phone order session" value, and not need to duplicate core logic.

rdiazc commented 6 years ago

Why in the name of God this feature was not included in 4.00???

brandon71 commented 5 years ago

Is this feature still a possibility in a future version or has it been abandoned?

cklenk commented 5 years ago

I am also wondering what happened to this, thanks!

nopsg commented 4 years ago

nowadays the chatbot can totally replace this feature, so I don't think this is needed - just my 2 cents.