I'm using Wordpress 4.9.6 and WooCommerce 3.4.2 on a Woocommerce site and where I have a custom feature that creates invoices for event registrations.
Right now I'm working on a script that will just remove one item from an existing order. The items remove fine, but the total doesn't recalculate. I can view the order in wp-admin and recalculate the totals from there fine, but I need it to happen in this script.
I can't for the life of me figure out what's keeping this from working...
My actual code:
$order = wc_get_order($event_registration['OrderID']);
if ( count($order->get_items()) > 1 ) {
if ( !wc_delete_order_item($event_registration['OrderItemID']) ) {
return array('error' => 'Problem removing order item');
}
$updated_order = wc_get_order($event_registration['OrderID']);
if ( count($updated_order->get_items()) > 0) {
$updated_order->calculate_totals();
PluginWoo::update_invoice($updated_order->get_id());
return true;
} else {
if ( !wp_delete_post( $event_registration['OrderID'], true ) ) {
return array('error' => 'Problem deleting order after deleting items');
}
return true;
}
} else {
if ( !wp_delete_post( $event_registration['OrderID'], true ) ) {
return array('error' => 'Problem deleting order');
}
return true;
}
Any help on this is appreciated.