23

Right now Magento supports altering an order only in form of a reorder, which is may be due to complex ordering process and the database structure. But often reorder is not an option in case of customer credit card data is not stored or not possible to charge or refund

I'm curious about the decision of not making the order editable for adding or removing items, changing their quantity, applying discounts etc.

I'd also like to hear about the extensions which work-around the lack of the feature. The one I tried, e.g. True Edit Orders was a bit quirky when facing configurable products.

2 Answers 2

11

The answer lies in your question and I believe this is so in Magento and as well in lot of other e-commerce and accounting software cause of dependencies the "order document" has.

In commerce and accounting usually editing is not a way to do things and in order to achieve editing effect credit or debit balances on specific accounts are altered with adding new rows that either add or subtract values. It's not a bug and it's a feature as accounting means calculating the result based on actions not the count of the actions that are needed to achieve some result. Each edit is a action that needs to be stored in order to provide the possibility to calculate the balance, archive it and calculate or present it over and over again.

So in Magento the order in whole is not editable as it is not needed although it seems weird and unnecessary at first to almost all merchants don't get it. The fact that it makes harder to maintain your e-store is just a side-effect of doing things properly.

If you think further then even with altering all the order siblings (addresses, items, shipping and payment methods, applying the discounts) the same issues will happen if totals change due that. You still can't capture payments if you don't have the cc data , refund etc cause it needs a action from client. In e-commerce you only have the client attention at the time when he confirms the payment and everything that happens after that needs more attention from both partys

So even if in IRL at the store you are making some kind of ordering the same process of adding and subtracting actions are taken (by cash register or in our minds) to finalise your order and if you need to change after payment process the order is discarded and new one is created to record your new actions (payments, discounts, bonuses, items etc). Only thing that makes this possible in IRL more seamlessly is that client is usually there to confirm the changes and authorising the payments and all details and it still happens slightly faster in any brain cause relations are abstracted.

0
8

The reason of making order not editable is not a complexity but data consistency. For instance product can be modified or even deleted from catalog after order was placed. So modification of ordered products will make no sense. Same with a customer and his details.

Of course such things can be taken into consideration and tracked intelligently but this will require the whole level of complexity because in this case each entity will require modifications history to be saved (e.g. what was the price at the time order was placed, what customer group customer was at etc).

Regarding creditcard details .. storing this data is "no-no". Such things as partial capture, authorization in order to capture payment later or refund is possible in Magento and fully dependent on payment module implementation.

3
  • Thanks for the answer Tim. Regarding credit card data storage I didn't mean we should store it, but with services like Authorize.net CIM it's possible to charge or refund card on file
    – Zifius
    Jan 24, 2013 at 10:58
  • Regarding data consistency it's understood, but additional precautions and checks should help this cause
    – Zifius
    Jan 24, 2013 at 11:00
  • @Zifius: Please see my edit. Jan 24, 2013 at 11:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.