WC_Order_Item_Fee::set_taxespublicWC 10.5.0

Set taxes.

This is an array of tax ID keys with total amount values.

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

Хуков нет.

Возвращает

null. Ничего (null).

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

$WC_Order_Item_Fee = new WC_Order_Item_Fee();
$WC_Order_Item_Fee->set_taxes( $raw_tax_data );
$raw_tax_data(массив) (обязательный)
Raw tax data.

Список изменений

С версии 10.5.0 Введена.
С версии 10.5.0 Handles legacy scalar tax values by converting to arrays.

Код WC_Order_Item_Fee::set_taxes() WC 10.7.0

public function set_taxes( $raw_tax_data ) {
	$raw_tax_data = maybe_unserialize( $raw_tax_data );
	$tax_data     = array(
		'total' => array(),
	);
	if ( ! empty( $raw_tax_data['total'] ) ) {
		$total = $raw_tax_data['total'];

		// Handle legacy data where total might be a float/string instead of an array.
		if ( ! is_array( $total ) ) {
			$order = $this->get_order();
			$total = $this->convert_legacy_tax_value_to_array( $total, $order );

			// Log legacy data format for debugging purposes.
			wc_get_logger()->warning(
				sprintf(
					/* translators: %d: order item ID */
					__( 'Order item #%d contains legacy tax data format. Tax rate ID information is unavailable.', 'woocommerce' ),
					$this->get_id()
				),
				array(
					'source'        => 'woocommerce-order-item-fee',
					'order_item_id' => $this->get_id(),
					'order_id'      => $order ? $order->get_id() : 0,
				)
			);
		}

		$tax_data['total'] = array_map( 'wc_format_decimal', $total );
	}
	$this->set_prop( 'taxes', $tax_data );

	if ( 'yes' === get_option( 'woocommerce_tax_round_at_subtotal' ) ) {
		$this->set_total_tax( NumberUtil::array_sum( $tax_data['total'] ) );
	} else {
		$this->set_total_tax( NumberUtil::array_sum( array_map( 'wc_round_tax_total', $tax_data['total'] ) ) );
	}
}