Untitled

 avatar
unknown
plain_text
a year ago
2.7 kB
3
Indexable

add_action('woocommerce_checkout_order_processed', function($order_id){
	$order = wc_get_order($order_id);
	$user_id = $order->get_customer_id();

	if (b2bking()->is_b2b_user()){
		$order_total = $order->get_total();
		$amount = $order_total / 100; // 1% credit


		$note = esc_html__('Credit for order ','b2bkingcredit').'#'.$order_id;
		// get user history
		$user_credit_history = sanitize_text_field(get_user_meta($user_id,'b2bking_user_credit_history', true));

		// create reimbursed transaction
		$date = date_i18n( 'Y/m/d', time()+(get_option('gmt_offset')*3600) ); 
		$operation = 'reimburse';
		$consumed_balance = get_user_meta($user_id,'b2bking_user_credit_consumed_balance', true);
		$new_consumed_balance = floatval($consumed_balance) - floatval($amount);		
		$transaction_new = $date.':'.$operation.':'.$amount.':'.$new_consumed_balance.':'.$note;

		// update credit history
		update_user_meta($user_id,'b2bking_user_credit_history',$user_credit_history.';'.$transaction_new);
		// update user consumed balance
		update_user_meta($user_id,'b2bking_user_credit_consumed_balance',$new_consumed_balance);

		$order->update_meta_data('added_extra_credit', $amount);
		$order->save();
	}
}, 10, 1);

add_action( 'woocommerce_order_status_changed', 'custom_order_status_change_action', 10, 4 );
function custom_order_status_change_action( $order_id, $old_status, $new_status, $order ) {
    if ( in_array( $new_status, array( 'cancelled', 'failed', 'refunded' ) ) ) {
    	$customer_id = $order->get_customer_id();
    	$credit = floatval($order->get_meta('added_extra_credit'));
    	if ($credit > 0){
    		$total = $credit;
    		// remove credit from order
    		$note = esc_html__('Cancelled credit for order','b2bkingcredit').' #'.$order_id;

    		// get user history
    		$user_credit_history = sanitize_text_field(get_user_meta($customer_id,'b2bking_user_credit_history', true));

    		// create transaction
    		$date = date_i18n( 'Y/m/d', time()+(get_option('gmt_offset')*3600) ); 
    		$operation = 'purchase';
    		$consumed_balance = get_user_meta($customer_id,'b2bking_user_credit_consumed_balance', true);
    		$new_consumed_balance = floatval($consumed_balance) + floatval($total);		
    		$transaction_new = $date.':'.$operation.':'.$total.':'.$new_consumed_balance.':'.$note;

    		// update credit history
    		update_user_meta($customer_id,'b2bking_user_credit_history',$user_credit_history.';'.$transaction_new);
    		// update user consumed balance
    		update_user_meta($customer_id,'b2bking_user_credit_consumed_balance',$new_consumed_balance);


    		$order->update_meta_data('added_extra_credit', 0);
    		$order->save();

    	}
    }
}


Leave a Comment