/** * Mark the entire order as being redeemed if it contains all redeemed vouchers. * Also, generate any voucher pdfs for items newly added from the admin * * @since 1.2 * @param int $post_id the order id * @param object $post the order */ public function maybe_complete_order($post_id, $post) { // generate any vouchers as needed wc_pdf_product_vouchers()->get_voucher_handler()->generate_voucher_pdf($post_id); $order = wc_get_order($post_id); $voucher_count = 0; // if the order status is not completed, and the entire order has not already been marked as 'voucher redeemed' if (!WC_PDF_Product_Vouchers_Order::vouchers_redeemed($order)) { foreach (WC_PDF_Product_Vouchers_Order::get_vouchers($order) as $voucher) { $voucher_count++; // an unredeemed voucher, bail if (!$voucher->is_redeemed()) { return; } } if ($voucher_count) { // if we made it here, it means this order contains only voucher items, and they are all redeemed WC_PDF_Product_Vouchers_Order::mark_vouchers_redeemed($order, $voucher_count); } } }