Untitled
webwizards
plain_text
3 months ago
2.7 kB
5
Indexable
function b2bking_check_quarterly_updates() {
// Configuration
$basic_group_id = 123; // change this with the group ID of this group
$premium_group_id = 234; // change this with the group ID of this group
$quarterly_threshold = 3750;
// Check if today is first day of quarter (Jan 1, Apr 1, Jul 1, Oct 1)
$month = (int) date('n');
$day = (int) date('j');
if ($day !== 1 || !in_array($month, [1, 4, 7, 10])) {
return;
}
// Prevent running multiple times on same day
$last_run = get_option('b2bking_last_quarterly_update', '');
$today = date('Y-m-d');
if ($last_run === $today) {
return;
}
// Update all customers
$customers = get_users(['role' => 'customer', 'fields' => 'ID']);
foreach ($customers as $customer_id) {
$previous_quarter_sales = b2bking_get_previous_quarter_sales($customer_id);
$new_group_id = ($previous_quarter_sales >= $quarterly_threshold)
? $premium_group_id
: $basic_group_id;
if (b2bking()->get_user_group($customer_id) != $new_group_id) {
b2bking()->update_user_group($customer_id, $new_group_id);
}
}
update_option('b2bking_last_quarterly_update', $today);
}
add_action('wp_loaded', 'b2bking_check_quarterly_updates');
/**
* Get customer's previous quarter sales total
*/
function b2bking_get_previous_quarter_sales($customer_id) {
$dates = b2bking_get_previous_quarter_dates();
$orders = wc_get_orders([
'customer_id' => $customer_id,
'status' => 'wc-completed', // Fixed: added 'wc-' prefix
'date_created' => $dates['start'] . '...' . $dates['end'],
'limit' => -1
]);
return array_sum(array_map(function($order) {
return $order->get_total();
}, $orders));
}
/**
* Get previous quarter date range
*/
function b2bking_get_previous_quarter_dates() {
$year = date('Y');
$current_quarter = ceil(date('n') / 3);
// Quarter start months and previous quarter logic
$quarters = [
1 => ['01-01', '03-31'],
2 => ['04-01', '06-30'],
3 => ['07-01', '09-30'],
4 => ['10-01', '12-31']
];
if ($current_quarter === 1) {
// Previous quarter is Q4 of last year
$prev_year = $year - 1;
$prev_quarter = 4;
} else {
$prev_year = $year;
$prev_quarter = $current_quarter - 1;
}
return [
'start' => $prev_year . '-' . $quarters[$prev_quarter][0] . ' 00:00:00',
'end' => $prev_year . '-' . $quarters[$prev_quarter][1] . ' 23:59:59'
];
}Editor is loading...
Leave a Comment