Automattic\WooCommerce\Internal\RestApi\Routes\V4\Orders\Schema

OrderSchema::get_item_responsepublicWC 1.0

Get an item response.

Method of the class: OrderSchema{}

No Hooks.

Returns

Array.

Usage

$OrderSchema = new OrderSchema();
$OrderSchema->get_item_response( $order, $request, $include_fields ): array;
$order(WC_Order) (required)
Order instance.
$request(WP_REST_Request) (required)
Request object.
$include_fields(array)
Fields to include in the response.
Default: array()

OrderSchema::get_item_response() code WC 10.8.1

public function get_item_response( $order, WP_REST_Request $request, array $include_fields = array() ): array {
	$dp   = is_null( $request['num_decimals'] ) ? wc_get_price_decimals() : absint( $request['num_decimals'] );
	$data = array(
		'id'                   => $order->get_id(),
		'parent_id'            => $order->get_parent_id(),
		'number'               => $order->get_order_number(),
		'order_key'            => $order->get_order_key(),
		'created_via'          => $order->get_created_via(),
		'version'              => $order->get_version(),
		'status'               => OrderUtil::remove_status_prefix( $order->get_status() ),
		'currency'             => $order->get_currency(),
		'currency_symbol'      => html_entity_decode( get_woocommerce_currency_symbol( $order->get_currency() ), ENT_QUOTES ),
		'date_created'         => wc_rest_prepare_date_response( $order->get_date_created(), false ),
		'date_created_gmt'     => wc_rest_prepare_date_response( $order->get_date_created() ),
		'date_modified'        => wc_rest_prepare_date_response( $order->get_date_modified(), false ),
		'date_modified_gmt'    => wc_rest_prepare_date_response( $order->get_date_modified() ),
		'discount_total'       => wc_format_decimal( $order->get_discount_total(), $dp ),
		'discount_tax'         => wc_format_decimal( $order->get_discount_tax(), $dp ),
		'shipping_total'       => wc_format_decimal( $order->get_shipping_total(), $dp ),
		'shipping_tax'         => wc_format_decimal( $order->get_shipping_tax(), $dp ),
		'cart_tax'             => wc_format_decimal( $order->get_cart_tax(), $dp ),
		'total'                => wc_format_decimal( $order->get_total(), $dp ),
		'total_tax'            => wc_format_decimal( $order->get_total_tax(), $dp ),
		'prices_include_tax'   => $order->get_prices_include_tax(),
		'customer_id'          => $order->get_customer_id(),
		'customer_ip_address'  => $order->get_customer_ip_address(),
		'customer_user_agent'  => $order->get_customer_user_agent(),
		'customer_note'        => $order->get_customer_note(),
		'billing'              => array(
			'first_name' => $order->get_billing_first_name(),
			'last_name'  => $order->get_billing_last_name(),
			'company'    => $order->get_billing_company(),
			'address_1'  => $order->get_billing_address_1(),
			'address_2'  => $order->get_billing_address_2(),
			'city'       => $order->get_billing_city(),
			'state'      => $order->get_billing_state(),
			'postcode'   => $order->get_billing_postcode(),
			'country'    => $order->get_billing_country(),
			'email'      => $order->get_billing_email(),
			'phone'      => $order->get_billing_phone(),
		),
		'shipping'             => array(
			'first_name' => $order->get_shipping_first_name(),
			'last_name'  => $order->get_shipping_last_name(),
			'company'    => $order->get_shipping_company(),
			'address_1'  => $order->get_shipping_address_1(),
			'address_2'  => $order->get_shipping_address_2(),
			'city'       => $order->get_shipping_city(),
			'state'      => $order->get_shipping_state(),
			'postcode'   => $order->get_shipping_postcode(),
			'country'    => $order->get_shipping_country(),
			'phone'      => $order->get_shipping_phone(),
		),
		'payment_method'       => $order->get_payment_method(),
		'payment_method_title' => $order->get_payment_method_title(),
		'transaction_id'       => $order->get_transaction_id(),
		'date_paid'            => wc_rest_prepare_date_response( $order->get_date_paid(), false ),
		'date_paid_gmt'        => wc_rest_prepare_date_response( $order->get_date_paid() ),
		'date_completed'       => wc_rest_prepare_date_response( $order->get_date_completed(), false ),
		'date_completed_gmt'   => wc_rest_prepare_date_response( $order->get_date_completed() ),
		'cart_hash'            => $order->get_cart_hash(),
		'payment_url'          => $order->get_checkout_payment_url(),
		'is_editable'          => $order->is_editable(),
		'needs_payment'        => $order->needs_payment(),
		'needs_processing'     => $order->needs_processing(),
		'fulfillment_status'   => FulfillmentUtils::get_order_fulfillment_status( $order ),
	);

	if ( in_array( 'refund_total', $include_fields, true ) ) {
		$data['refund_total'] = wc_format_decimal( $order->get_total_refunded(), $dp );
	}

	if ( in_array( 'refund_tax', $include_fields, true ) ) {
		$data['refund_tax'] = wc_format_decimal( $order->get_total_tax_refunded(), $dp );
	}

	if ( in_array( 'line_items', $include_fields, true ) ) {
		$line_items         = $order->get_items( OrderItemType::LINE_ITEM );
		$data['line_items'] = array();
		foreach ( $line_items as $line_item ) {
			$data['line_items'][] = $this->order_item_schema->get_item_response( $line_item, $request );
		}
	}

	if ( in_array( 'shipping_lines', $include_fields, true ) ) {
		$line_items             = $order->get_items( OrderItemType::SHIPPING );
		$data['shipping_lines'] = array();
		foreach ( $line_items as $line_item ) {
			$data['shipping_lines'][] = $this->order_shipping_schema->get_item_response( $line_item, $request );
		}
	}

	if ( in_array( 'coupon_lines', $include_fields, true ) ) {
		$line_items           = $order->get_items( OrderItemType::COUPON );
		$data['coupon_lines'] = array();
		foreach ( $line_items as $line_item ) {
			$data['coupon_lines'][] = $this->order_coupon_schema->get_item_response( $line_item, $request );
		}
	}

	if ( in_array( 'fee_lines', $include_fields, true ) ) {
		$line_items        = $order->get_items( OrderItemType::FEE );
		$data['fee_lines'] = array();
		foreach ( $line_items as $line_item ) {
			$data['fee_lines'][] = $this->order_fee_schema->get_item_response( $line_item, $request );
		}
	}

	if ( in_array( 'tax_lines', $include_fields, true ) ) {
		$line_items        = $order->get_items( OrderItemType::TAX );
		$data['tax_lines'] = array();
		foreach ( $line_items as $line_item ) {
			$data['tax_lines'][] = $this->order_tax_schema->get_item_response( $line_item, $request );
		}
	}

	if ( in_array( 'meta_data', $include_fields, true ) ) {
		$filtered_meta_data = $this->filter_internal_meta_keys( $order->get_meta_data() );
		$data['meta_data']  = array();
		foreach ( $filtered_meta_data as $meta_item ) {
			$data['meta_data'][] = array(
				'id'    => $meta_item->id,
				'key'   => $meta_item->key,
				'value' => $meta_item->value,
			);
		}
	}

	// Add COGS data.
	if ( $this->cogs_is_enabled() && in_array( 'cost_of_goods_sold', $include_fields, true ) ) {
		$data['cost_of_goods_sold']['total_value'] = $order->get_cogs_total_value();
	}

	$data = array_intersect_key( $data, array_flip( $include_fields ) );

	return $data;
}