Automattic\WooCommerce\Admin\Features\Fulfillments

OrderFulfillmentsRestController::delete_fulfillmentpublicWC 1.0

Delete a specific fulfillment for the order.

Method of the class: OrderFulfillmentsRestController{}

Returns

WP_REST_Response. The deleted fulfillment, or an error if the request fails.

Usage

$OrderFulfillmentsRestController = new OrderFulfillmentsRestController();
$OrderFulfillmentsRestController->delete_fulfillment( $request );
$request(WP_REST_Request) (required)
The request object.

OrderFulfillmentsRestController::delete_fulfillment() code WC 10.7.0

public function delete_fulfillment( WP_REST_Request $request ) {
	$order_id        = (int) $request->get_param( 'order_id' );
	$fulfillment_id  = (int) $request->get_param( 'fulfillment_id' );
	$notify_customer = (bool) $request->get_param( 'notify_customer' );

	// Delete the fulfillment for the order.
	try {
		$fulfillment = new Fulfillment( $fulfillment_id );
		$this->validate_fulfillment( $fulfillment, $fulfillment_id, $order_id );
		$status = $fulfillment->get_status() ?? 'unfulfilled';
		$fulfillment->delete();
		FulfillmentsTracker::track_fulfillment_deletion(
			$this->check_request_source( $request ),
			$fulfillment_id,
			$status,
			$notify_customer
		);
	} catch ( ApiException $ex ) {
		FulfillmentsTracker::track_fulfillment_validation_error( 'delete', $ex->getErrorCode(), $this->check_request_source( $request ) );
		return $this->prepare_error_response(
			$ex->getErrorCode(),
			$ex->getMessage(),
			WP_Http::BAD_REQUEST
		);
	} catch ( \Exception $e ) {
		FulfillmentsTracker::track_fulfillment_validation_error( 'delete', (string) $e->getCode(), $this->check_request_source( $request ) );
		return $this->prepare_error_response(
			$e->getCode(),
			$e->getMessage(),
			WP_Http::BAD_REQUEST
		);
	}

	if ( $fulfillment->get_is_fulfilled() && $notify_customer ) {
		/**
		 * Trigger the fulfillment deleted notification.
		 *
		 * @since 10.1.0
		 */
		do_action( 'woocommerce_fulfillment_deleted_notification', $order_id, $fulfillment, wc_get_order( $order_id ) );
		FulfillmentsTracker::track_fulfillment_notification_sent( 'fulfillment_deleted', $fulfillment_id, $order_id );
	}

	return new WP_REST_Response(
		array(
			'message' => __( 'Fulfillment deleted successfully.', 'woocommerce' ),
		),
		WP_Http::OK
	);
}