FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
woocommerce
/
src
/
RestApi
/
Routes
/
V4
/
Orders
/
Schema
Edit File: OrderCouponSchema.php
<?php /** * OrderCouponSchema class. * * @package WooCommerce\RestApi */ declare( strict_types=1 ); namespace Automattic\WooCommerce\RestApi\Routes\V4\Orders\Schema; defined( 'ABSPATH' ) || exit; use WC_Order_Item_Coupon; use WP_REST_Request; use WC_Coupon; /** * OrderCouponSchema class. */ class OrderCouponSchema extends AbstractLineItemSchema { /** * The schema item identifier. * * @var string */ const IDENTIFIER = 'order-coupon'; /** * Return all properties for the item schema. * * Note that context determines under which context data should be visible. For example, edit would be the context * used when getting records with the intent of editing them. embed context allows the data to be visible when the * item is being embedded in another response. * * @return array */ public function get_item_schema_properties(): array { $schema = array( 'id' => array( 'description' => __( 'Item ID.', 'woocommerce' ), 'type' => 'integer', 'context' => self::VIEW_EDIT_EMBED_CONTEXT, 'readonly' => true, ), 'code' => array( 'description' => __( 'Coupon code.', 'woocommerce' ), 'type' => 'string', 'context' => self::VIEW_EDIT_EMBED_CONTEXT, 'readonly' => true, ), 'discount' => array( 'description' => __( 'Discount total.', 'woocommerce' ), 'type' => 'string', 'context' => self::VIEW_EDIT_EMBED_CONTEXT, 'readonly' => true, ), 'discount_tax' => array( 'description' => __( 'Discount total tax.', 'woocommerce' ), 'type' => 'string', 'context' => self::VIEW_EDIT_EMBED_CONTEXT, 'readonly' => true, ), 'discount_type' => array( 'description' => __( 'Discount type.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view' ), 'readonly' => true, ), 'nominal_amount' => array( 'description' => __( 'Discount amount as defined in the coupon (absolute value or a percent, depending on the discount type).', 'woocommerce' ), 'type' => 'number', 'context' => array( 'view' ), 'readonly' => true, ), 'free_shipping' => array( 'description' => __( 'Whether the coupon grants free shipping or not.', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view' ), 'readonly' => true, ), 'meta_data' => $this->get_meta_data_schema(), ); return $schema; } /** * Get an item response. * * @param WC_Order_Item_Coupon $order_item Order item instance. * @param WP_REST_Request $request Request object. * @param array $include_fields Fields to include in the response. * @return array */ public function get_item_response( $order_item, WP_REST_Request $request, array $include_fields = array() ): array { $dp = is_null( $request['num_decimals'] ) ? wc_get_price_decimals() : absint( $request['num_decimals'] ); $temp_coupon = new WC_Coupon(); $coupon_info = $order_item->get_meta( 'coupon_info', true ); if ( $coupon_info ) { $temp_coupon->set_short_info( $coupon_info ); } else { $coupon_meta = $order_item->get_meta( 'coupon_data', true ); if ( $coupon_meta ) { $temp_coupon->set_props( (array) $coupon_meta ); } } $data = array( 'id' => $order_item->get_id(), 'code' => $order_item->get_code(), 'discount' => wc_format_decimal( $order_item->get_discount(), $dp ), 'discount_tax' => wc_format_decimal( $order_item->get_discount_tax(), $dp ), 'discount_type' => $temp_coupon->get_discount_type(), 'nominal_amount' => (float) $temp_coupon->get_amount(), 'free_shipping' => $temp_coupon->get_free_shipping(), 'meta_data' => $this->prepare_meta_data( $order_item ), ); return $data; } }
Save
Back