Automattic\WooCommerce\Admin\API\Reports\Orders\Stats
DataStore::update()
Update the database with stats data.
Method of the class: DataStore{}
Hooks from the method
Return
Int|true|false
. Returns -1 if order won't be processed, or a boolean indicating processing success.
Usage
$result = DataStore::update( $order );
- $order(WC_Order|WC_Order_Refund) (required)
- Order or refund to update row for.
DataStore::update() DataStore::update code WC 8.7.0
public static function update( $order ) { global $wpdb; $table_name = self::get_db_table_name(); if ( ! $order->get_id() || ! $order->get_date_created() ) { return -1; } /** * Filters order stats data. * * @param array $data Data written to order stats lookup table. * @param WC_Order $order Order object. * * @since 4.0.0 */ $data = apply_filters( 'woocommerce_analytics_update_order_stats_data', array( '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_paid' => $order->get_date_paid() ? $order->get_date_paid()->date( 'Y-m-d H:i:s' ) : null, 'date_completed' => $order->get_date_completed() ? $order->get_date_completed()->date( 'Y-m-d H:i:s' ) : null, 'date_created_gmt' => gmdate( 'Y-m-d H:i:s', $order->get_date_created()->getTimestamp() ), 'num_items_sold' => self::get_num_items_sold( $order ), 'total_sales' => $order->get_total(), 'tax_total' => $order->get_total_tax(), 'shipping_total' => $order->get_shipping_total(), 'net_total' => self::get_net_total( $order ), 'status' => self::normalize_order_status( $order->get_status() ), 'customer_id' => $order->get_report_customer_id(), 'returning_customer' => $order->is_returning_customer(), ), $order ); $format = array( '%d', '%d', '%s', '%s', '%s', '%s', '%d', '%f', '%f', '%f', '%f', '%s', '%d', '%d', ); if ( 'shop_order_refund' === $order->get_type() ) { $parent_order = wc_get_order( $order->get_parent_id() ); if ( $parent_order ) { $data['parent_id'] = $parent_order->get_id(); $data['status'] = self::normalize_order_status( $parent_order->get_status() ); } /** * Set date_completed and date_paid the same as date_created to avoid problems * when they are being used to sort the data, as refunds don't have them filled */ $data['date_completed'] = $data['date_created']; $data['date_paid'] = $data['date_created']; } // Update or add the information to the DB. $result = $wpdb->replace( $table_name, $data, $format ); /** * Fires when order's stats reports are updated. * * @param int $order_id Order ID. * * @since 4.0.0. */ do_action( 'woocommerce_analytics_update_order_stats', $order->get_id() ); // Check the rows affected for success. Using REPLACE can affect 2 rows if the row already exists. return ( 1 === $result || 2 === $result ); }