X orders required for bacs

<?php

// ceramic
//Require 3 previous orders before a customer can buy on credit or if allowed by an admin
add_filter( 'woocommerce_available_payment_gateways', function ( $available_gateways ) {
	global $woocommerce;
	//Query previous orders from current customer
	$customer_orders = get_posts( array(
    'numberposts' => 5,
    'meta_key'    => '_customer_user',
    'meta_value'  => get_current_user_id(),
    'post_type'   => wc_get_order_types(),
    'post_status' => 'wc-completed', )
		) ;

	//Retrieve on credit boolean
	$currentuserID = get_current_user_id();
	$currentuser = 'user_'.$currentuserID;
	global $oncreditAllowed;
	$oncreditAllowed = get_field('oncredit', $currentuser);
	global $ordersNeededForCredit;
	if($oncreditAllowed) {
		$ordersNeededForCredit = 0;
	}
	else{
		$ordersNeededForCredit = max(3 - count($customer_orders),0);
	}

	//Check if 3 previous orders are made by the customer, or if the admin has the option manually enabled for this client
	if(isset( $available_gateways['bacs'] ) && (count($customer_orders) < 3) && ($oncreditAllowed != true)) {
		unset($available_gateways['bacs']);
	}
	return $available_gateways;
});

//Message how many orders to make before you can pay on credit
add_action( 'woocommerce_review_order_before_payment', function(){
		global $ordersNeededForCredit;
		global $oncreditAllowed;
		if(!$oncreditAllowed && $ordersNeededForCredit > 0) {

			echo '<div class="woocommerce-info">'. __('U moet nog', 'ceramicnature').' '.$ordersNeededForCredit.' '.__('bestellingen voltooien zodat u ook op rekening kunt bestellen bij ons!','ceramicnature') .'</div>';
		}
}, 10, 1);
Last Updated:
Contributors: Niek Vlam, Suite Seven