Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Ubercart needs a clean way to handle returns. There should be a clean interface to:
- Enter that some or all of the products in an order have been returned.
- Log the financial transaction of the return
- Log the returned items actually arriving.
- Optionally return the item to stock (it might be too damaged).
- Possibly interact with the payment processor to actually refund the money.
- Generate an RMA number.
- Attach the return to an order.
- If we're really clever, generate a shipping label for the return mail.
- Generate reports on the items returned and the money involved.
- Notify the customer that the return was received and either accepted or rejected.
There should be some options associated with this. For instance, shipping might or might not be refundable.
This might be a D8 thing, but it won't require much reworking of existing code.
Comments
Comment #1
SilviuChingaru CreditAttribution: SilviuChingaru commentedNice... This definetly should be added. Also a waranty module I think...
Comment #2
milovan CreditAttribution: milovan commentedYes I agree. Refunds is the next big feature that UC is missing and should have. There are no known ways or modules to handle refunds, except maybe uberpos custom system.
Comment #3
SilviuChingaru CreditAttribution: SilviuChingaru commentedI think a return is nothing than a current order with:
SKU * -X qty
So in the order admin form we could add a button and a form with Add return (similar to the current add product form but only with products bought by that user. If user has no account or we want to return from another order (user has multiple accounts - I'm not sure that we should add this option becouse we could do return from that account and here only allow admin to select from orders with no uid assigned) add also a form for selecting order in which the product was delivered.
Everything else should work like now. It is no special case for refund / return.
The payment will be like for regular orders but with -(minus), the shipment will be the same. The stock will be increased also because of -X * -Y = +Z, so I think it is quite an easy task.
I'll look into it when I'll finish #2060649: Make uc_shipments fieldable entities.
Comment #4
SilviuChingaru CreditAttribution: SilviuChingaru commentedComment #5
sigveio CreditAttribution: sigveio commentedThis is currently one of the few major weakness in Ubercart imo - and it surprises me that there's not more people out there screaming for it. I guess a lot of the ones using Ubercart for things like selling clothing (where having a good returns workflow is important) have either made their own solutions (without contributing it back) or found various hacky ways to work around it. E.g. altering the original order and maintaining records in 3rd party accounting software.
In many countries around the world there are however laws governing what you can do with an order or receipt once it's been created - especially when VAT is in play, and/or the company is large enough to undergo accounting audits. Altering an existing order to remove products or such can represent a serious issue (e.g. be breaking the law) if there's no way to see it's fully original state.
Being able to create a so called credit slip against an original order (essentially a new order with reference to the original one, and negative quantities/sums) would be a good first step towards offering essential support for this - as suggested by fiftyz here. :-)
So... here's a big +1 from me. <3
Comment #5.0
sigveio CreditAttribution: sigveio commentedAdded notification and D8 stuff.
Comment #6
sigveio CreditAttribution: sigveio commentedAny news/progress on this? :-)
Comment #7
SilviuChingaru CreditAttribution: SilviuChingaru commentedI don't have time to work on this right now, sorry.
Comment #8
TR CreditAttribution: TR commentedComment #9
asb CreditAttribution: asb as a volunteer commentedIs anyone still working on this issue?
Are there any contributed modules that could mitigate the lack of refunds/returns handling?