From 8bc2261c8ae6c70f9df61e7e1f877038d07222ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Wed, 12 Jun 2019 11:21:56 +0200 Subject: [PATCH] Add date_created_gmt property to orders endpoint (https://github.com/woocommerce/woocommerce-admin/pull/2086) * Add date_created_gmt property to orders enpoint * Make date_created properties of type date-time and improve descriptions --- ...c-admin-rest-reports-orders-controller.php | 28 ++++++++------ .../includes/class-wc-admin-install.php | 1 + ...ass-wc-admin-reports-orders-data-store.php | 38 ++++++++++--------- ...-admin-reports-orders-stats-data-store.php | 2 + .../tests/api/reports-orders.php | 3 +- 5 files changed, 42 insertions(+), 30 deletions(-) diff --git a/plugins/woocommerce-admin/includes/api/class-wc-admin-rest-reports-orders-controller.php b/plugins/woocommerce-admin/includes/api/class-wc-admin-rest-reports-orders-controller.php index 2e6f171709f..73cee0242ed 100644 --- a/plugins/woocommerce-admin/includes/api/class-wc-admin-rest-reports-orders-controller.php +++ b/plugins/woocommerce-admin/includes/api/class-wc-admin-rest-reports-orders-controller.php @@ -157,55 +157,61 @@ class WC_Admin_REST_Reports_Orders_Controller extends WC_Admin_REST_Reports_Cont 'title' => 'report_orders', 'type' => 'object', 'properties' => array( - 'order_id' => array( + 'order_id' => array( 'description' => __( 'Order ID.', 'woocommerce-admin' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'order_number' => array( + 'order_number' => array( 'description' => __( 'Order Number.', 'woocommerce-admin' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'date_created' => array( - 'description' => __( 'Date the order was created.', 'woocommerce-admin' ), - 'type' => 'string', + 'date_created' => array( + 'description' => __( "Date the order was created, in the site's timezone.", 'woocommerce-admin' ), + 'type' => 'date-time', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'status' => array( + 'date_created_gmt' => array( + 'description' => __( 'Date the order was created, as GMT.', 'woocommerce-admin' ), + 'type' => 'date-time', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'status' => array( 'description' => __( 'Order status.', 'woocommerce-admin' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'customer_id' => array( + 'customer_id' => array( 'description' => __( 'Customer ID.', 'woocommerce-admin' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'num_items_sold' => array( + 'num_items_sold' => array( 'description' => __( 'Number of items sold.', 'woocommerce-admin' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'net_total' => array( + 'net_total' => array( 'description' => __( 'Net total revenue.', 'woocommerce-admin' ), 'type' => 'float', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'customer_type' => array( + 'customer_type' => array( 'description' => __( 'Returning or new customer.', 'woocommerce-admin' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'extended_info' => array( + 'extended_info' => array( 'products' => array( 'type' => 'array', 'readonly' => true, diff --git a/plugins/woocommerce-admin/includes/class-wc-admin-install.php b/plugins/woocommerce-admin/includes/class-wc-admin-install.php index f40dd0aa20e..c7ff6579d16 100644 --- a/plugins/woocommerce-admin/includes/class-wc-admin-install.php +++ b/plugins/woocommerce-admin/includes/class-wc-admin-install.php @@ -94,6 +94,7 @@ class WC_Admin_Install { order_id bigint(20) unsigned NOT NULL, parent_id bigint(20) unsigned DEFAULT 0 NOT NULL, date_created datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, + date_created_gmt datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, num_items_sold int(11) DEFAULT 0 NOT NULL, gross_total double DEFAULT 0 NOT NULL, tax_total double DEFAULT 0 NOT NULL, diff --git a/plugins/woocommerce-admin/includes/data-stores/class-wc-admin-reports-orders-data-store.php b/plugins/woocommerce-admin/includes/data-stores/class-wc-admin-reports-orders-data-store.php index dc475ab6d87..65bdad47449 100644 --- a/plugins/woocommerce-admin/includes/data-stores/class-wc-admin-reports-orders-data-store.php +++ b/plugins/woocommerce-admin/includes/data-stores/class-wc-admin-reports-orders-data-store.php @@ -25,15 +25,16 @@ class WC_Admin_Reports_Orders_Data_Store extends WC_Admin_Reports_Data_Store imp * @var array */ protected $column_types = array( - 'order_id' => 'intval', - 'parent_id' => 'intval', - 'date_created' => 'strval', - 'status' => 'strval', - 'customer_id' => 'intval', - 'net_total' => 'floatval', - 'gross_total' => 'floatval', - 'num_items_sold' => 'intval', - 'customer_type' => 'strval', + 'order_id' => 'intval', + 'parent_id' => 'intval', + 'date_created' => 'strval', + 'date_created_gmt' => 'strval', + 'status' => 'strval', + 'customer_id' => 'intval', + 'net_total' => 'floatval', + 'gross_total' => 'floatval', + 'num_items_sold' => 'intval', + 'customer_type' => 'strval', ); /** @@ -51,15 +52,16 @@ class WC_Admin_Reports_Orders_Data_Store extends WC_Admin_Reports_Data_Store imp $table_name = $wpdb->prefix . self::TABLE_NAME; // Avoid ambigious columns in SQL query. $this->report_columns = array( - 'order_id' => "{$table_name}.order_id", - 'parent_id' => "{$table_name}.parent_id", - 'date_created' => "{$table_name}.date_created", - 'status' => "REPLACE({$table_name}.status, 'wc-', '') as status", - 'customer_id' => "{$table_name}.customer_id", - 'net_total' => "{$table_name}.net_total", - 'gross_total' => "{$table_name}.gross_total", - 'num_items_sold' => "{$table_name}.num_items_sold", - 'customer_type' => "(CASE WHEN {$table_name}.returning_customer = 1 THEN 'returning' WHEN {$table_name}.returning_customer = 0 THEN 'new' ELSE '' END) as customer_type", + 'order_id' => "{$table_name}.order_id", + 'parent_id' => "{$table_name}.parent_id", + 'date_created' => "{$table_name}.date_created", + 'date_created_gmt' => "{$table_name}.date_created_gmt", + 'status' => "REPLACE({$table_name}.status, 'wc-', '') as status", + 'customer_id' => "{$table_name}.customer_id", + 'net_total' => "{$table_name}.net_total", + 'gross_total' => "{$table_name}.gross_total", + 'num_items_sold' => "{$table_name}.num_items_sold", + 'customer_type' => "(CASE WHEN {$table_name}.returning_customer = 1 THEN 'returning' WHEN {$table_name}.returning_customer = 0 THEN 'new' ELSE '' END) as customer_type", ); } diff --git a/plugins/woocommerce-admin/includes/data-stores/class-wc-admin-reports-orders-stats-data-store.php b/plugins/woocommerce-admin/includes/data-stores/class-wc-admin-reports-orders-stats-data-store.php index cdc07a2c582..008cd7c160c 100644 --- a/plugins/woocommerce-admin/includes/data-stores/class-wc-admin-reports-orders-stats-data-store.php +++ b/plugins/woocommerce-admin/includes/data-stores/class-wc-admin-reports-orders-stats-data-store.php @@ -410,6 +410,7 @@ class WC_Admin_Reports_Orders_Stats_Data_Store extends WC_Admin_Reports_Data_Sto 'order_id' => $order->get_id(), 'parent_id' => $order->get_parent_id(), 'date_created' => $order->get_date_created()->date( 'Y-m-d H:i:s' ), + 'date_created_gmt' => gmdate( 'Y-m-d H:i:s', $order->get_date_created()->getTimestamp() ), 'num_items_sold' => self::get_num_items_sold( $order ), 'gross_total' => $order->get_total(), 'tax_total' => $order->get_total_tax(), @@ -423,6 +424,7 @@ class WC_Admin_Reports_Orders_Stats_Data_Store extends WC_Admin_Reports_Data_Sto '%d', '%d', '%s', + '%s', '%d', '%f', '%f', diff --git a/plugins/woocommerce-admin/tests/api/reports-orders.php b/plugins/woocommerce-admin/tests/api/reports-orders.php index cf0315a0795..c697b0593ee 100644 --- a/plugins/woocommerce-admin/tests/api/reports-orders.php +++ b/plugins/woocommerce-admin/tests/api/reports-orders.php @@ -114,7 +114,8 @@ class WC_Tests_API_Reports_Orders extends WC_REST_Unit_Test_Case { $data = $response->get_data(); $properties = $data['schema']['properties']; - $this->assertEquals( 9, count( $properties ) ); + $this->assertEquals( 10, count( $properties ) ); + $this->assertArrayHasKey( 'date_created_gmt', $properties ); $this->assertArrayHasKey( 'order_id', $properties ); $this->assertArrayHasKey( 'order_number', $properties ); $this->assertArrayHasKey( 'date_created', $properties );