Home › Forums › Ticket Products › Event Tickets Plus › WooCommerce Refunds
- This topic has 25 replies, 2 voices, and was last updated 9 years ago by
smscmarketing.
-
AuthorPosts
-
March 8, 2017 at 3:01 pm #1251377
smscmarketing
ParticipantHow exactly are Event Ticket refunds in WooCommerce recommended to be processed? It appears that when we refund a ticket sale via WooCommerce, it doesn’t remove the total sold when you are looking at an event. It still counts that sale in the sold total on the Event list, the Event Ticket details and if you do a query like Tribe__Tickets__Tickets::get_all_event_tickets( $post->ID). The qty_sold includes those that are refunded.
Further more, if I go into the attendee list and delete that refunded one, that qty_sold doesn’t update (as well as any of the other places you see the number sold in the admin).
This is pretty problematic as we are trying to keep track of number of tickets that were sold compared to remaining inventory to ensure we haven’t over sold. As far as I can tell, there isn’t a way to do this, as the Tribe__Tickets__Tickets::get_all_event_tickets( $post->ID) doesn’t include any data related to the number of tickets refunded or deleted, even though when I view the attendee list, it does show the Deleted Attendees number.
Maybe we aren’t processing things properly? When we want to cancel an order, we go to the WooCommerce order and refund the quantity, so that it is moved back into inventory (which works). But, the quantity sold isn’t correct. Is there a function we can add that would reduce that value when a WooCommerce refund occurs? Where is that value stored – if I know that, I can possibly write my own function too.
NOW – I know – you are going to say “disable all other plugins and themes, yada yada…”. That I can’t do on our production site. I have also found others questioning this, so I am fairly certain these issues aren’t related to any other plugins or theme elements. I understand your need for this, but I feel like this is more of a core relationship between WooCommerce and your tracking of the quantity sold.
March 9, 2017 at 4:27 pm #1252089Barry
MemberHi smscmarketing,
Thanks for your question (and I don’t think there’s any reason to deactivate other plugins, here 🙂 ).
When we want to cancel an order, we go to the WooCommerce order and refund the quantity, so that it is moved back into inventory (which works). But, the quantity sold isn’t correct
The total sales count and the inventory level track two separate things and, currently in WooCommerce, the total sales is just that: a count of all sales that took place, regardless of each order’s final disposal. The fact that one or more orders may have been refunded (or even cancelled) does not change the count.
This isn’t something that is specific to our ticketing plugin, except perhaps by virtue of the fact that we directly expose the total sales data in a number of locations that don’t exist when you use WooCommerce by itself. Underneath it all, though, this is fundamentally a behaviour of the ecommerce provider itself – WooCommerce in this case.
Where is that value stored – if I know that, I can possibly write my own function too.
Each ‘ticket’ is a simple WooCommerce product and the count you are referring to is stored in the total_sales post meta field in each case.
Does that help here?
March 10, 2017 at 7:53 am #1252335smscmarketing
ParticipantThanks for replying – but I think I still have some thoughts and need guidance.
First off – I do think that the qty_sold should reflect the number actually sold. This is very misleading when you need to keep close track of the number of people attending. I believe this is the same value that is displayed when you are viewing an Event and looking at the number sold in the Ticket section. Basically, if the ticket is refunded, there isn’t any reason to including it as part of the qty_sold total, it isn’t a sale any longer. If it is a premium class, we didn’t collect that money. At the very least provide a separate qty_refunded value I can minus from the qty_sold. Perhaps that does exist and I have just missed it?
I may need to spend more time tearing it apart to find my own solution. Maybe I can query all the WooCommerce orders for refunds per product to minus from the qty_sold amount to get the end result I need in a custom report.
But I feel like there is a piece missing here. It doesn’t seem like a person could operate with accurate sales totals from the admin panel when using your plugins in conjunction with WooCommerce. Or back to my original question – is there a proper way to do refunds that I may not be doing?
I am going to keep working toward a custom report solution (because I just need to get it done), but I feel like you also need to address this. If you are going to offer WooCommerce integration, people should be able to easily access accurate ticket sales information without having to write custom reports. The only way I can accurately know how many people are attending a class is to go and count the number of people on the attendee list. Which is not user friendly, we have quite a few classes and going one to one to view the attendee list is slow and cumbersome.
Thanks!
-
This reply was modified 9 years, 1 month ago by
smscmarketing.
March 10, 2017 at 9:06 am #1252478Barry
MemberBasically, if the ticket is refunded, there isn’t any reason to including it as part of the qty_sold total, it isn’t a sale any longer.
So total_sales (as reflected by the qty_sold property) can be thought of as gross sales: that is, it is a record of all sales that took place as opposed to an adjusted net sales figure.
But I feel like there is a piece missing here. It doesn’t seem like a person could operate with accurate sales totals from the admin panel when using your plugins in conjunction with WooCommerce.
I’m definitely interested in exploring this aspect further as of course we want to provide you (and other ticket vendors) with the information you need.
Let’s say I’ve sold 10 units and have 90 units remaining. If I edit and order, refunding (and restocking) 2 units of those, then the information I’m presented with in the attendee screen is basically as follows:
10 sold (92 remaining)
This isn’t inaccurate. 10 units were sold and, following the restocking of 2 units, 92 are available for sale. If I’m understanding you correctly this is also what you are experiencing, it’s just you’d rather the information be presented as something like:
8 sales (92 remaining)
That is, you wish the sales figure to be adjusted so that it ignores refunds and possibly cancellations. Does that essentially summarize your viewpoint here?
March 10, 2017 at 10:08 am #1252503smscmarketing
Participant“8 sales (92 remaining)
That is, you wish the sales figure to be adjusted so that it ignores refunds and possibly cancellations. Does that essentially summarize your viewpoint here?”
Yes, that is the end goal. Your example is correct. We have 100 tickets, sell 10 and then refund 2, it would look like as you said – 8 sales (92 remaining). Right now it is “10 sales (92 remaining)”.
I am also trying to access this same data in more comprehensive custom reports, which isn’t your concern directly. But, I’d also like to be able to access the same data there as well (querying the events).
Thanks!
-
This reply was modified 9 years, 1 month ago by
smscmarketing.
March 10, 2017 at 10:54 am #1252530Barry
MemberOK, so in that case what you’re seeing is indeed the currently expected (and deliberate) behaviour.
I can definitely understand why you might want to see a change here, but it’s also true that if a refund is issued – even if the inventory is re-stocked – the issued tickets themselves haven’t necessarily been rendered void and can still be checked in.
That to say, we do need to be mindful of the fact that an adjusted sales figure isn’t for everyone. Right at this time, that part of the report isn’t too easy to modify, either, but we’d certainly welcome any feature requests you might propose about this:
This would also allow us to see how much demand there might be for a change along the lines of what you have described. To come back to the core reason you need this:
The only way I can accurately know how many people are attending a class is to go and count the number of people on the attendee list. Which is not user friendly, we have quite a few classes and going one to one to view the attendee list is slow and cumbersome.
Is there a reason the summary information in the top right of the attendee screen doesn’t work for you here? The 'complete' figure (underneath 'Total Tickets Sold'), which excludes refunded and cancelled tickets, seems like it would fill this need — at least it would in your case, where it sounds like the potential for refunded tickets to remain valid does not exist?
March 10, 2017 at 12:19 pm #1252566smscmarketing
ParticipantI understand there could be specific reasons to refund money to a customer, yet keep their ticket valid, such as someone who was upset about service or something – get money back, but still have valid ticket.
But, I’d think the most common situation would be that if you refund someone their money for a ticket, it is because they are cancelling and wouldn’t expect to still have a valid ticket. In fact, I am 99.9% sure when I do a refund for a ticket in WooCommerce, that ticket is listed as cancelled in the attendee list. So it is a cancelled ticket, counted as a sale and money returned to customer. That is strange from a business standpoint.
The attendee list page data is in theory helpful – but you are asking us to literally go into each attendee list to see the where sales are at? Is there a query we can use to get that same data (for a custom report)?
I will make a suggestion there, but this seems like something that should be default behavior. Example: If I return a physical item to Best Buy (purchased online or not), I send it back to them and their inventory goes back up (assuming they are reselling it) and they don’t count it as a sale anymore. I guess the naming of calling a cancelled ticket a sale still is what is odd to me. It is more like a count of “sale transactions” which seems a mostly useless bit of data. Maybe I am not thinking of a good example where this would be useful?
I know I sound upset… I am not, just trying to be logical here. I appreciate your time discussing this.
March 13, 2017 at 9:06 am #1253331Barry
MemberLikewise, I appreciate your time and this is a really helpful discussion from our standpoint.
Please do log one or more feature requests, though we’ll also take many of the points you raised here and discuss them further internally. I can’t guarantee what the outcome of those discussions will be — but know that we value this feedback and are, as you would expect, interested in making further enhancements here.
The attendee list page data is in theory helpful – but you are asking us to literally go into each attendee list to see the where sales are at? Is there a query we can use to get that same data (for a custom report)?
For each event there is also an orders report (which can be accessed using the links below each event in the main events admin list) though I’m not sure if that will satisfy your needs here.
If neither that nor WooCommerce’s own reporting tools are suitable, it may be that you need to build a custom reporting solution. Again, if you feel that will be generally useful to others feel free to post a feature request for that aspect specifically.
March 13, 2017 at 9:07 am #1253333Barry
MemberThis reply is private.
March 16, 2017 at 6:52 am #1255015smscmarketing
ParticipantThis reply is private.
March 16, 2017 at 6:58 am #1255017smscmarketing
ParticipantThis reply is private.
March 16, 2017 at 12:47 pm #1255480Barry
MemberPerhaps a helper function along these lines (adjust as needed, according to what you consider an active ticket to be) would help?
function count_active_attendees( $event_id ) { $active = 0; $attendees = Tribe__Tickets__Tickets::get_event_attendees( $event_id ); foreach ( $attendees as $attendee ) { $order = wc_get_order( $attendee[ 'order_id' ] ); // Skip if not linked to a WooCommerce order (alternatively, if RSVPs or another // ticketing provider is active, we could perform additional tests as needed) if ( ! $order ) { continue; } $status = $order->get_status(); // Skip refunded and cancelled orders if ( $status === 'refunded' || $status === 'cancelled' ) { continue; } $active++; } return $active; }March 16, 2017 at 1:50 pm #1255537smscmarketing
ParticipantI will try this out and get back to you. Thanks for taking the time to work this up. I think it will work.
March 16, 2017 at 2:08 pm #1255546smscmarketing
ParticipantHmmm… this seems like the way to go, but Tribe__Tickets__Tickets::get_event_attendees is only getting data for one of my 30+ events. I have double checked the Event id being passed into the function is correct, but only one is returning any attendees (which is the correct amount for that event) – any thoughts on that? The other events, almost all of them, have attendees.
-
This reply was modified 9 years, 1 month ago by
smscmarketing.
March 16, 2017 at 2:17 pm #1255551smscmarketing
ParticipantExample:
For event id 2192 – Tribe__Tickets__Tickets::get_event_attendees( $event_id ) returns 0 results.Image herE: http://imgur.com/a/IYgvG
But, as you can see in that screen shot of that event, it has 2 attendees. All of the other events are behaving the same way with that function – only 1 out of them all is returning any results, which is correct.
I don’t know much about that function – any reason it wouldn’t be returning data?
-
This reply was modified 9 years, 1 month ago by
smscmarketing.
-
This reply was modified 9 years, 1 month ago by
-
AuthorPosts
- The topic ‘WooCommerce Refunds’ is closed to new replies.
