Rework lookup table data store sync methods to return a meaningful status.
This commit is contained in:
parent
9b1f6999aa
commit
9f3c95ae63
|
@ -315,19 +315,21 @@ class WC_Admin_Reports_Coupons_Data_Store extends WC_Admin_Reports_Data_Store im
|
||||||
*
|
*
|
||||||
* @since 3.5.0
|
* @since 3.5.0
|
||||||
* @param int $order_id Order ID.
|
* @param int $order_id Order ID.
|
||||||
* @return void
|
* @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
|
||||||
*/
|
*/
|
||||||
public static function sync_order_coupons( $order_id ) {
|
public static function sync_order_coupons( $order_id ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
$order = wc_get_order( $order_id );
|
$order = wc_get_order( $order_id );
|
||||||
if ( ! $order ) {
|
if ( ! $order ) {
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$coupon_items = $order->get_items( 'coupon' );
|
$coupon_items = $order->get_items( 'coupon' );
|
||||||
|
$num_updated = 0;
|
||||||
|
|
||||||
foreach ( $coupon_items as $coupon_item ) {
|
foreach ( $coupon_items as $coupon_item ) {
|
||||||
$wpdb->replace(
|
$result = $wpdb->replace(
|
||||||
$wpdb->prefix . self::TABLE_NAME,
|
$wpdb->prefix . self::TABLE_NAME,
|
||||||
array(
|
array(
|
||||||
'order_id' => $order_id,
|
'order_id' => $order_id,
|
||||||
|
@ -342,7 +344,11 @@ class WC_Admin_Reports_Coupons_Data_Store extends WC_Admin_Reports_Data_Store im
|
||||||
'%s',
|
'%s',
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$num_updated += intval( $result );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ( count( $coupon_items ) === $num_updated );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -360,18 +360,19 @@ class WC_Admin_Reports_Orders_Stats_Data_Store extends WC_Admin_Reports_Data_Sto
|
||||||
* Add order information to the lookup table when orders are created or modified.
|
* Add order information to the lookup table when orders are created or modified.
|
||||||
*
|
*
|
||||||
* @param int $post_id Post ID.
|
* @param int $post_id Post ID.
|
||||||
|
* @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
|
||||||
*/
|
*/
|
||||||
public static function sync_order( $post_id ) {
|
public static function sync_order( $post_id ) {
|
||||||
if ( 'shop_order' !== get_post_type( $post_id ) ) {
|
if ( 'shop_order' !== get_post_type( $post_id ) ) {
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$order = wc_get_order( $post_id );
|
$order = wc_get_order( $post_id );
|
||||||
if ( ! $order ) {
|
if ( ! $order ) {
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
self::update( $order );
|
return self::update( $order );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -388,14 +389,14 @@ class WC_Admin_Reports_Orders_Stats_Data_Store extends WC_Admin_Reports_Data_Sto
|
||||||
* Update the database with stats data.
|
* Update the database with stats data.
|
||||||
*
|
*
|
||||||
* @param WC_Order $order Order to update row for.
|
* @param WC_Order $order Order to update row for.
|
||||||
* @return int|bool|null Number or rows modified or false on failure.
|
* @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
|
||||||
*/
|
*/
|
||||||
public static function update( $order ) {
|
public static function update( $order ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$table_name = $wpdb->prefix . self::TABLE_NAME;
|
$table_name = $wpdb->prefix . self::TABLE_NAME;
|
||||||
|
|
||||||
if ( ! $order->get_id() || ! $order->get_date_created() ) {
|
if ( ! $order->get_id() || ! $order->get_date_created() ) {
|
||||||
return false;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = array(
|
$data = array(
|
||||||
|
@ -450,7 +451,9 @@ class WC_Admin_Reports_Orders_Stats_Data_Store extends WC_Admin_Reports_Data_Sto
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update or add the information to the DB.
|
// Update or add the information to the DB.
|
||||||
return $wpdb->replace( $table_name, $data, $format );
|
$result = $wpdb->replace( $table_name, $data, $format );
|
||||||
|
|
||||||
|
return ( 1 === $result );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -319,7 +319,7 @@ class WC_Admin_Reports_Products_Data_Store extends WC_Admin_Reports_Data_Store i
|
||||||
*
|
*
|
||||||
* @since 3.5.0
|
* @since 3.5.0
|
||||||
* @param int $order_id Order ID.
|
* @param int $order_id Order ID.
|
||||||
* @return void
|
* @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
|
||||||
*/
|
*/
|
||||||
public static function sync_order_products( $order_id ) {
|
public static function sync_order_products( $order_id ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
@ -328,10 +328,13 @@ class WC_Admin_Reports_Products_Data_Store extends WC_Admin_Reports_Data_Store i
|
||||||
|
|
||||||
// This hook gets called on refunds as well, so return early to avoid errors.
|
// This hook gets called on refunds as well, so return early to avoid errors.
|
||||||
if ( ! $order || 'shop_order_refund' === $order->get_type() ) {
|
if ( ! $order || 'shop_order_refund' === $order->get_type() ) {
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ( $order->get_items() as $order_item ) {
|
$order_items = $order->get_items();
|
||||||
|
$num_updated = 0;
|
||||||
|
|
||||||
|
foreach ( $order_items as $order_item ) {
|
||||||
$order_item_id = $order_item->get_id();
|
$order_item_id = $order_item->get_id();
|
||||||
$quantity_refunded = $order->get_item_quantity_refunded( $order_item );
|
$quantity_refunded = $order->get_item_quantity_refunded( $order_item );
|
||||||
$amount_refunded = $order->get_item_amount_refunded( $order_item );
|
$amount_refunded = $order->get_item_amount_refunded( $order_item );
|
||||||
|
@ -355,13 +358,13 @@ class WC_Admin_Reports_Products_Data_Store extends WC_Admin_Reports_Data_Store i
|
||||||
$net_revenue = $order_item->get_subtotal( 'edit' ) - $amount_refunded;
|
$net_revenue = $order_item->get_subtotal( 'edit' ) - $amount_refunded;
|
||||||
|
|
||||||
if ( $quantity_refunded >= $order_item->get_quantity( 'edit' ) ) {
|
if ( $quantity_refunded >= $order_item->get_quantity( 'edit' ) ) {
|
||||||
$wpdb->delete(
|
$result = $wpdb->delete(
|
||||||
$wpdb->prefix . self::TABLE_NAME,
|
$wpdb->prefix . self::TABLE_NAME,
|
||||||
array( 'order_item_id' => $order_item_id ),
|
array( 'order_item_id' => $order_item_id ),
|
||||||
array( '%d' )
|
array( '%d' )
|
||||||
); // WPCS: cache ok, DB call ok.
|
); // WPCS: cache ok, DB call ok.
|
||||||
} else {
|
} else {
|
||||||
$wpdb->replace(
|
$result = $wpdb->replace(
|
||||||
$wpdb->prefix . self::TABLE_NAME,
|
$wpdb->prefix . self::TABLE_NAME,
|
||||||
array(
|
array(
|
||||||
'order_item_id' => $order_item_id,
|
'order_item_id' => $order_item_id,
|
||||||
|
@ -398,7 +401,11 @@ class WC_Admin_Reports_Products_Data_Store extends WC_Admin_Reports_Data_Store i
|
||||||
)
|
)
|
||||||
); // WPCS: cache ok, DB call ok, unprepared SQL ok.
|
); // WPCS: cache ok, DB call ok, unprepared SQL ok.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$num_updated += intval( $result );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ( count( $order_items ) === $num_updated );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -255,17 +255,20 @@ class WC_Admin_Reports_Taxes_Data_Store extends WC_Admin_Reports_Data_Store impl
|
||||||
* Create or update an entry in the wc_order_tax_lookup table for an order.
|
* Create or update an entry in the wc_order_tax_lookup table for an order.
|
||||||
*
|
*
|
||||||
* @param int $order_id Order ID.
|
* @param int $order_id Order ID.
|
||||||
* @return void
|
* @return int|bool Returns -1 if order won't be processed, or a boolean indicating processing success.
|
||||||
*/
|
*/
|
||||||
public static function sync_order_taxes( $order_id ) {
|
public static function sync_order_taxes( $order_id ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$order = wc_get_order( $order_id );
|
$order = wc_get_order( $order_id );
|
||||||
if ( ! $order ) {
|
if ( ! $order ) {
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ( $order->get_items( 'tax' ) as $tax_item ) {
|
$tax_items = $order->get_items( 'tax' );
|
||||||
$wpdb->replace(
|
$num_updated = 0;
|
||||||
|
|
||||||
|
foreach ( $tax_items as $tax_item ) {
|
||||||
|
$result = $wpdb->replace(
|
||||||
$wpdb->prefix . self::TABLE_NAME,
|
$wpdb->prefix . self::TABLE_NAME,
|
||||||
array(
|
array(
|
||||||
'order_id' => $order->get_id(),
|
'order_id' => $order->get_id(),
|
||||||
|
@ -284,7 +287,11 @@ class WC_Admin_Reports_Taxes_Data_Store extends WC_Admin_Reports_Data_Store impl
|
||||||
'%f',
|
'%f',
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$num_updated += intval( $result );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ( count( $tax_items ) === $num_updated );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue