Automattic\WooCommerce\Admin\API\Reports\Taxes

DataStore::sync_order_taxes()public staticWC 1.0

Create or update an entry in the wc_order_tax_lookup table for an order.

Метод класса: DataStore{}

Хуки из метода

Возвращает

int|true|false. Returns -1 if order won't be processed, or a boolean indicating processing success.

Использование

$result = DataStore::sync_order_taxes( $order_id );
$order_id(int) (обязательный)
Order ID.

Код DataStore::sync_order_taxes() WC 8.7.0

public static function sync_order_taxes( $order_id ) {
	global $wpdb;

	$order = wc_get_order( $order_id );
	if ( ! $order ) {
		return -1;
	}

	$tax_items   = $order->get_items( 'tax' );
	$num_updated = 0;

	foreach ( $tax_items as $tax_item ) {
		$result = $wpdb->replace(
			self::get_db_table_name(),
			array(
				'order_id'     => $order->get_id(),
				'date_created' => $order->get_date_created( 'edit' )->date( TimeInterval::$sql_datetime_format ),
				'tax_rate_id'  => $tax_item->get_rate_id(),
				'shipping_tax' => $tax_item->get_shipping_tax_total(),
				'order_tax'    => $tax_item->get_tax_total(),
				'total_tax'    => (float) $tax_item->get_tax_total() + (float) $tax_item->get_shipping_tax_total(),
			),
			array(
				'%d',
				'%s',
				'%d',
				'%f',
				'%f',
				'%f',
			)
		);

		/**
		 * Fires when tax's reports are updated.
		 *
		 * @param int $tax_rate_id Tax Rate ID.
		 * @param int $order_id    Order ID.
		 */
		do_action( 'woocommerce_analytics_update_tax', $tax_item->get_rate_id(), $order->get_id() );

		// Sum the rows affected. Using REPLACE can affect 2 rows if the row already exists.
		$num_updated += 2 === intval( $result ) ? 1 : intval( $result );
	}

	return ( count( $tax_items ) === $num_updated );
}