WC_REST_Order_Refunds_Controller::prepare_object_for_database
Prepares one object for create or update operation.
Метод класса: WC_REST_Order_Refunds_Controller{}
Хуки из метода
Возвращает
WP_Error|WC_Data. The prepared item, or WP_Error object on failure.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->prepare_object_for_database( $request, $creating );
- $request(WP_REST_Request) (обязательный)
- Request object.
- $creating(true|false)
- If is creating a new object.
По умолчанию:false
Список изменений
| С версии 3.0.0 | Введена. |
Код WC_REST_Order_Refunds_Controller::prepare_object_for_database() WC REST Order Refunds Controller::prepare object for database WC 10.8.1
protected function prepare_object_for_database( $request, $creating = false ) {
RestApiParameterUtil::adjust_create_refund_request_parameters( $request );
$order = wc_get_order( (int) $request['order_id'] );
if ( ! $order ) {
return new WP_Error( 'woocommerce_rest_invalid_order_id', __( 'Invalid order ID.', 'woocommerce' ), 404 );
}
if ( 0 > $request['amount'] ) {
return new WP_Error( 'woocommerce_rest_invalid_order_refund', __( 'Refund amount must be greater than zero.', 'woocommerce' ), 400 );
}
// Create the refund.
$refund = wc_create_refund(
array(
'order_id' => $order->get_id(),
'amount' => $request['amount'],
'reason' => $request['reason'],
'line_items' => $request['line_items'],
'refund_payment' => $request['api_refund'],
'restock_items' => $request['api_restock'],
)
);
if ( is_wp_error( $refund ) ) {
return new WP_Error( 'woocommerce_rest_cannot_create_order_refund', $refund->get_error_message(), 500 );
}
if ( ! $refund ) {
return new WP_Error( 'woocommerce_rest_cannot_create_order_refund', __( 'Cannot create order refund, please try again.', 'woocommerce' ), 500 );
}
if ( ! empty( $request['meta_data'] ) ) {
MetaDataUtil::update( $request['meta_data'], $refund );
$refund->save_meta_data();
}
/**
* Filters an object before it is inserted via the REST API.
*
* The dynamic portion of the hook name, `$this->post_type`,
* refers to the object type slug.
*
* @param WC_Data $coupon Object object.
* @param WP_REST_Request $request Request object.
* @param bool $creating If is creating a new object.
*/
return apply_filters( "woocommerce_rest_pre_insert_{$this->post_type}_object", $refund, $request, $creating );
}