The Question we received:
What we are trying to do:
Place orders for customers in the admin backend and be able to adjust the price without using a discount code.
To keep inventory levels in sync when we have to send out a replacement to a customer. Also, entering the replacement shipment in Magento would allow the shipping software to import the order and less hands on copying/pasting for customer service reps.
On the Order details page, click the Reorder button. The same items and customer details are brought over. I’ve noticed that some Magento installs allow the admin to edit the price when the Reorder button is used. We are able to modify the quantity of the item on this page, but we’d like to be able to change the price to $0.00 so that reports remain accurate when a replacement item is being sent out.
We’d also like to, if possible:
1. Have a payment method called REPLACEMENT, that would only be visible for admins. This would help with reporting.
2. Have a shipping method called REPLACEMENT, that would only be visible to admins. This would help with reporting also.
3. Have the order number, for these types of replacement orders, to start with a different number. This would be helpful in the shipping room. Currently we have 2 carts, a retail and a wholesale. Retail order numbers start with 100….. wholesale order numbers start with 300…
I’m assuming that the only way to make this kind of modification would be to create the order in another cart called Replacement cart. But we are using the customer records from the retail cart to create the order. We would like the customer to remain in the Retail cart customer list, but just this one replacement order would be in the Replacement cart. I’m not sure if this is possible, but I thought I’d ask. Being able to have the admin only payment and shipment methods would be alright.
Woo! That’s a lot. Okay. Let’s try to take these requirements one at a time.
$0 Custom Price for Replacement Orders
First off, you want to have a custom price of $0 when you send out a replacement item via the re-order button for a customer. I’m not sure what version of Magento you are using, but this functionality exists in Magento 1.7. Perhaps you aren’t finding it. Let me walk you through it:
1. First go into Sales > Orders and hit the “Create New Order” button in the upper right.
2. Next, find and select the customer you are creating the order for.
3. On the next screen, add the items you want to ship out to the order.
4. Once you add them, they will appear in the ‘Items Ordered’ box. Each item will have a checkbox that says “Custom Price”. Click that checkbox for all items and enter in 0.00 for your custom price.
5. Hit the button under that says “Update Items and Qtys”
6. Go through and place the order – voila! You have a custom $0 price for your replacement items.
Add a New Payment Method called Replacement, used only by admins
The easiest way to do this is to overload the check/money order payment method that magento supports naturally. Chances are, you aren’t accepting checks from your customers anyway, so we can override this payment method to show up ONLY in the admin, and name it what we wish.
1. First you’ll want to enable checks as a payment method in system > configuration. Change its name to ‘Replacement’
2. Next, we need to disable the payment method from showing up in checkout. Go into \app\code\core\Mage\Payment\Model\Method\Checkmo.php
3. Find this line:
protected $_code = 'checkmo';
4. Add these two lines under it:
protected $_canUseCheckout = false;
protected $_canUseForMultishipping = false;
Save. Refresh compilation. Refresh cache.
You should, at this point, be able to see checks as a valid payment method in the admin, but not in any of your checkout flows. If it works, copy the file you just edited to \app\code\local\Mage\Payment\Model\Method\Checkmo.php to make sure it’s upgradeable.
I’m going to follow up on your shipping method and order number requests in a different post when I have a little more time. So stay tuned!