Automattic\WooCommerce\Internal\Orders

OrderActionsRestController::send_order_detailsprotectedWC 1.0

Handle the POST /orders/{id}/actions/send_order_details.

Method of the class: OrderActionsRestController{}

Returns

Array|WP_Error. Request response or an error.

Usage

// protected - for code of main (parent) or child class
$result = $this->send_order_details( $request );
$request(WP_REST_Request) (required)
The received request.

OrderActionsRestController::send_order_details() code WC 10.4.3

protected function send_order_details( WP_REST_Request $request ) {
	$order    = wc_get_order( $request->get_param( 'id' ) );
	$email    = $request->get_param( 'email' );
	$force    = wp_validate_boolean( $request->get_param( 'force_email_update' ) );
	$messages = array();

	if ( $email ) {
		$message = $this->maybe_update_billing_email( $order, $email, $force );
		if ( is_wp_error( $message ) ) {
			return $message;
		}
		$messages[] = $message;
	}

	if ( ! is_email( $order->get_billing_email() ) ) {
		return new WP_Error(
			'woocommerce_rest_missing_email',
			__( 'Order does not have an email address.', 'woocommerce' ),
			array( 'status' => 400 )
		);
	}

	// phpcs:disable WooCommerce.Commenting.CommentHooks.MissingSinceComment
	/** This action is documented in includes/admin/meta-boxes/class-wc-meta-box-order-actions.php */
	do_action( 'woocommerce_before_resend_order_emails', $order, 'customer_invoice' );

	WC()->payment_gateways();
	WC()->shipping();
	WC()->mailer()->customer_invoice( $order );

	$user_agent = esc_html( $request->get_header( 'User-Agent' ) );
	$messages[] = sprintf(
		// translators: %s is an email address.
		esc_html__( 'Order details sent to %s.', 'woocommerce' ),
		esc_html( $order->get_billing_email() )
	);

	$messages = array_filter( $messages );
	foreach ( $messages as $message ) {
		$order->add_order_note(
			$message,
			false,
			true,
			array(
				'user_agent' => $user_agent ? $user_agent : 'REST API',
				'note_title' => __( 'Order confirmation email', 'woocommerce' ),
				'note_group' => OrderNoteGroup::EMAIL_NOTIFICATION,
			)
		);
	}

	// phpcs:disable WooCommerce.Commenting.CommentHooks.MissingSinceComment
	/** This action is documented in includes/admin/meta-boxes/class-wc-meta-box-order-actions.php */
	do_action( 'woocommerce_after_resend_order_email', $order, 'customer_invoice' );

	return array(
		'message' => implode( ' ', $messages ),
	);
}