From 5d872a33da6e27458a6f153863b73a0bbb26da9f Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Sun, 4 Nov 2018 13:52:18 +0100 Subject: [PATCH 1/4] register and display custom order statuses --- .../wiaas/includes/class-wiaas-order.php | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/backend/app/plugins/wiaas/includes/class-wiaas-order.php b/backend/app/plugins/wiaas/includes/class-wiaas-order.php index 868eee1..cf4c2a4 100644 --- a/backend/app/plugins/wiaas/includes/class-wiaas-order.php +++ b/backend/app/plugins/wiaas/includes/class-wiaas-order.php @@ -22,6 +22,12 @@ class Wiaas_Order { add_filter('woocommerce_register_post_type_shop_order', array(__CLASS__, 'manage_order_settings')); + add_filter( 'woocommerce_register_shop_order_post_statuses', array(__CLASS__, 'register_custom_wiaas_order_statuses'), 10, 1); + + add_filter( 'wc_order_statuses', array(__CLASS__, 'add_custom_wiaas_statuses_to_list' ), 10, 1); + + add_filter( 'bulk_actions-edit-shop_order', array(__CLASS__, 'add_custom_statuses_to_bulk_edit' ), 10, 1); + add_filter('woocommerce_rest_check_permissions', array( __CLASS__, 'check_order_access'), 10, 4); add_filter('woocommerce_rest_prepare_shop_order_object', array(__CLASS__, 'transform_rest_order'), 999, 3); @@ -203,6 +209,51 @@ class Wiaas_Order { return $order->get_meta('_wiaas_delivery_suppliers'); } + /** + * Register additional order statuses + * + * @param array $order_statuses + * + * @return array + */ + public static function register_custom_wiaas_order_statuses($order_statuses){ + // Status must start with "wc-" + $order_statuses['wc-open'] = array( + 'label' => _x( 'Open', 'Order status', 'woocommerce' ), + 'public' => false, + 'exclude_from_search' => false, + 'show_in_admin_all_list' => true, + 'show_in_admin_status_list' => true, + 'label_count' => _n_noop( 'Open (%s)', 'Open (%s)', 'woocommerce' ), + ); + return $order_statuses; + } + + /** + * display custom wiaas statuses in order status dropdown + * + * @param array $order_statuses + * + * @return array + */ + public static function add_custom_wiaas_statuses_to_list($order_statuses){ + $order_statuses['wc-open'] = _x( 'Open', 'Order status', 'woocommerce' ); + return $order_statuses; + } + + /** + * display custom wiaas statuses in bulk actions + * + * @param array $bulk_actions + * + * @return array + */ + public static function add_custom_statuses_to_bulk_edit($bulk_actions){ + // Note: "mark_" must be there instead of "wc" + $bulk_actions['mark_open'] = 'Change status to open'; + return $bulk_actions; + } + /** * Update `shop_order` post type settings before creation to enable better order management for wiaas * From bc310ed73851ad3ca7efe876998f58140c9505fe Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Sun, 4 Nov 2018 14:16:44 +0100 Subject: [PATCH 2/4] change order status to open --- backend/app/plugins/wiaas/includes/class-wiaas-checkout.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/app/plugins/wiaas/includes/class-wiaas-checkout.php b/backend/app/plugins/wiaas/includes/class-wiaas-checkout.php index 97ea33b..35ee75f 100644 --- a/backend/app/plugins/wiaas/includes/class-wiaas-checkout.php +++ b/backend/app/plugins/wiaas/includes/class-wiaas-checkout.php @@ -65,7 +65,8 @@ class Wiaas_Checkout { do_action( 'woocommerce_checkout_order_processed', $order_id, array(), $order ); - $order->payment_complete(); + //Change order status from default 'Pending payment' to open (custom wiaas status) + $order->update_status('open'); WC()->cart->empty_cart( true ); From 9e599617c4dc0c90a71dc08ae8d942558d9b6108 Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Sun, 4 Nov 2018 23:40:52 +0100 Subject: [PATCH 3/4] remove wiaas from method name --- backend/app/plugins/wiaas/includes/class-wiaas-order.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/app/plugins/wiaas/includes/class-wiaas-order.php b/backend/app/plugins/wiaas/includes/class-wiaas-order.php index cf4c2a4..46cb069 100644 --- a/backend/app/plugins/wiaas/includes/class-wiaas-order.php +++ b/backend/app/plugins/wiaas/includes/class-wiaas-order.php @@ -22,9 +22,9 @@ class Wiaas_Order { add_filter('woocommerce_register_post_type_shop_order', array(__CLASS__, 'manage_order_settings')); - add_filter( 'woocommerce_register_shop_order_post_statuses', array(__CLASS__, 'register_custom_wiaas_order_statuses'), 10, 1); + add_filter( 'woocommerce_register_shop_order_post_statuses', array(__CLASS__, 'register_custom_order_statuses'), 10, 1); - add_filter( 'wc_order_statuses', array(__CLASS__, 'add_custom_wiaas_statuses_to_list' ), 10, 1); + add_filter( 'wc_order_statuses', array(__CLASS__, 'add_custom_statuses_to_list' ), 10, 1); add_filter( 'bulk_actions-edit-shop_order', array(__CLASS__, 'add_custom_statuses_to_bulk_edit' ), 10, 1); @@ -216,7 +216,7 @@ class Wiaas_Order { * * @return array */ - public static function register_custom_wiaas_order_statuses($order_statuses){ + public static function register_custom_order_statuses($order_statuses){ // Status must start with "wc-" $order_statuses['wc-open'] = array( 'label' => _x( 'Open', 'Order status', 'woocommerce' ), @@ -236,7 +236,7 @@ class Wiaas_Order { * * @return array */ - public static function add_custom_wiaas_statuses_to_list($order_statuses){ + public static function add_custom_statuses_to_list($order_statuses){ $order_statuses['wc-open'] = _x( 'Open', 'Order status', 'woocommerce' ); return $order_statuses; } From 75a574279b5624513a4eb0c3d28a7174967a1b1f Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Sun, 4 Nov 2018 23:59:54 +0100 Subject: [PATCH 4/4] change order status to processing when process is assigned --- .../class-wiaas-admin-delivery-process-order.php | 2 +- .../plugins/wiaas/includes/class-wiaas-delivery-process.php | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/app/plugins/wiaas/includes/admin/delivery-process/class-wiaas-admin-delivery-process-order.php b/backend/app/plugins/wiaas/includes/admin/delivery-process/class-wiaas-admin-delivery-process-order.php index b6133fb..b3f0f21 100644 --- a/backend/app/plugins/wiaas/includes/admin/delivery-process/class-wiaas-admin-delivery-process-order.php +++ b/backend/app/plugins/wiaas/includes/admin/delivery-process/class-wiaas-admin-delivery-process-order.php @@ -18,7 +18,7 @@ class Wiaas_Admin_Delivery_Process_Order { add_action('add_meta_boxes', array(__CLASS__, 'add_delivery_process_metabox'), 100 ); - add_action('woocommerce_process_shop_order_meta', array(__CLASS__, 'maybe_assign_delivery_process')); + add_action('woocommerce_process_shop_order_meta', array(__CLASS__, 'maybe_assign_delivery_process'), 999); } /** diff --git a/backend/app/plugins/wiaas/includes/class-wiaas-delivery-process.php b/backend/app/plugins/wiaas/includes/class-wiaas-delivery-process.php index b1cd25d..160dcec 100644 --- a/backend/app/plugins/wiaas/includes/class-wiaas-delivery-process.php +++ b/backend/app/plugins/wiaas/includes/class-wiaas-delivery-process.php @@ -74,6 +74,11 @@ class Wiaas_Delivery_Process { update_post_meta($order_id, 'wiaas_delivery_process_id', $process_id); update_post_meta($order_id, 'wiaas_delivery_process_entry_id', $process_entry_id); + $order = wc_get_order($order_id); + + $order->set_status('processing', 'Started order delivery process.', true); + $order->save(); + return $process_entry_id; } return false;