Question

We have a client that we've set up a store for B2B sales to their wholesale customers. Since they have a specific customer list that they allow to make purchases on their site, they would like to invoice them for the purchase for them to make payment offline (send a check, etc). So basically a Purchase Order. No CC needed. Complete order and then they'll invoice them.

But they also will be freight shipping since most things are large packages. They don't want to try and calculate shipping real-time at this time, but rather follow up with the customer with their final Invoice that includes the ACTUAL shipping charge once they ship out.

So... I'm trying to figure out the best way to:

  1. Allow the customer to not have a shipping charge as part of their steps on checkout. Right now, I have Free Shipping, but renamed it to basically explain that Shipping will be calculated with the final invoice sent with products.
  2. Allow the customer to not have to use a credit card as part of the steps during checkout. Right now, I have it as a Check/Money Order (mainly because Purchase Order doesn't seem to work... doesn't go to the next step). Same thing here, I update the text of the Check payment method to state "we'll send you a final invoice or charge any card we have on file for your account."
  3. IN the Admin, would like to be able to modify/add a charge for the final shipping fees, along with providing the tracking info, so the customer gets an email follow up when they ship the order, and can see their final invoice to be paid. THIS, I'm not sure how to accomplish.

Items 1 and 2 sort of work, but shows the modified text on emails/invoices. Maybe there's a better way, like bypass the payment and shipping steps altogether, and the text is just displayed somewhere statically on the checkout page.

How would you try to accomplish this?

Was it helpful?

Solution

Interesting problem. The first solution that comes to mind for me is to use the workflow that you have at the moment, This is providing the first part of the requirements where offline payments are taken and no extra charges are being displayed.

The change that I would look to make is to introduce wither a observer so that when the order changes its status ( If you are using the order status ) as an example a new status could be payment_complete. Alternative would be time based system but the following steps are still the same. When this criteria is met I would programatically create a temporally order and calculate the shipping rates. For this you would need to have a new shipping method that has the correct pricing but is hidden from selection via the website.

This is relatively straight forward to achieve. You have access to the items that have been ordered as part of the order. Iterate over these and add to basket in effect creating a quote item. Then call calculate shipping rates passing the chargeable shipping method. You now have the shipping price based on the items order so you can update the real order object with shipping price and shipping information ( Tracking link date etc etc ).

This is the first idea that came to mind to achieve this. There will be many more alternatives such as creation of a new payment method and as part of that payment method in the checkout another shipping cost is created and saved.

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top