Function Reference: geodir_payment_invoice_coupon_usage_count

Summary

This function has not been documented yet.

Source Code

function geodir_payment_invoice_coupon_usage_count($invoice_id) {
	global $wpdb;
	
	$invoice_info = geodir_get_invoice($invoice_id);

	if (empty($invoice_info)) {
		return false;
	}
	
	if (empty($invoice_info->coupon_code) || !geodir_payment_allow_coupon_usage(array('cart_id' => $invoice_id))) {
		return false;
	}

	$status = $invoice_info->status;
	$code = $invoice_info->coupon_code;
	$usage_status = $invoice_info->coupon_usage;
		
	$increase = false;
	$decrease = false;

	switch($usage_status) {
		case 'increase':
			if (in_array($status, array('cancelled'))) {
				$decrease = true;
			}
		break;
		case 'decrease':
			if (in_array($status, array('confirmed', 'pending', 'onhold', 'failed'))) {
				$increase = true;
			}
		break;
		default:
			if (in_array($status, array('confirmed', 'pending', 'onhold', 'failed'))) {
				$increase = true;
			}
			
			if (in_array($status, array('cancelled'))) {
				$decrease = true;
			}
		break;
	}

	if ($increase || $decrease) {
		$data = array();
		if ($increase) {
			geodir_payment_increase_coupon_usage_count($code);
			$data['coupon_usage'] = 'increase';
		}
		
		if ($decrease) {
			geodir_payment_decrease_coupon_usage_count($code);
			$data['coupon_usage'] = 'decrease';
		}
		
		return $wpdb->update(INVOICE_TABLE, $data, array('id' => $invoice_id));
	}
}