/** * Create new transaction * * @param object $transaction_data * @param $transaction_status * @param $mode * @param bool $paypal_response * * @return int $transaction_id */ function insert_new_transaction($transaction_data, $transaction_status, $mode, $paypal_response = false) { global $WCMp; $trans_id = false; if (!empty($transaction_data)) { foreach ($transaction_data as $vendor_id => $transaction_detail) { $trans_details = array('post_type' => $this->post_type, 'post_title' => sprintf(__('Transaction - %s', $WCMp->text_domain), strftime(_x('%B %e, %Y @ %I:%M %p', 'Transaction date parsed by strftime', $WCMp->text_domain))), 'post_status' => $transaction_status, 'ping_status' => 'closed', 'post_author' => $vendor_id); $trans_id = wp_insert_post($trans_details); if ($trans_id) { update_post_meta($trans_id, 'transaction_mode', $mode); if (!isset($transaction_detail['transfer_charge'])) { $transaction_detail['transfer_charge'] = 0; } update_post_meta($trans_id, 'amount', $transaction_detail['amount'] - $transaction_detail['transfer_charge']); update_post_meta($trans_id, 'transfer_charge', $transaction_detail['transfer_charge']); if ($paypal_response) { update_post_meta($trans_id, 'paypal_response', $paypal_response); } update_post_meta($trans_id, 'commission_detail', $transaction_detail['commission_detail']); if ($transaction_status != 'wcmp_processing') { $email_admin = WC()->mailer()->emails['WC_Email_Vendor_Commission_Transactions']; $email_admin->trigger($trans_id, $vendor_id); $commission_id = false; foreach ($transaction_detail['commission_detail'] as $commission_id => $order_id) { update_post_meta($commission_id, '_paid_request', $mode); wcmp_paid_commission_status($commission_id); } } else { $commission_id = false; foreach ($transaction_detail['commission_detail'] as $commission_id => $order_id) { wcmp_paid_commission_status($commission_id); update_post_meta($commission_id, '_paid_request', $mode); } } } } } return $trans_id; }
/** * WCMp Transaction complete mark */ function transaction_done_button() { global $WCMp; $transaction_id = $_POST['trans_id']; $vendor_id = $_POST['vendor_id']; update_post_meta($transaction_id, 'paid_date', date("Y-m-d H:i:s")); $commission_detail = get_post_meta($transaction_id, 'commission_detail', true); foreach ($commission_detail as $commission_id => $order_id) { wcmp_paid_commission_status($commission_id); } $email_admin = WC()->mailer()->emails['WC_Email_Vendor_Commission_Transactions']; $email_admin->trigger($transaction_id, $vendor_id); update_post_meta($transaction_id, '_dismiss_to_do_list', 'true'); die; }
/** * Mark all unpaid commissions as paid * @return void */ public function wcmp_mark_all_commissions_paid() { global $WCMp; $screen = get_current_screen(); if (in_array($screen->id, array('edit-dc_commission'))) { // Confirm list table action $wp_list_table = _get_list_table('WP_Posts_List_Table'); $action = $wp_list_table->current_action(); // Get all unpaid commissions $args = array('post_type' => $this->post_type, 'post_status' => array('publish', 'private'), 'meta_key' => '_paid_status', 'meta_value' => 'unpaid', 'posts_per_page' => -1); $commissions = get_posts($args); switch ($action) { case 'mark_paid': $commissions_array = array(); $post_ids = array_map('absint', (array) $_REQUEST['post']); foreach ($commissions as $commission) { $commissions_array[] = $commission->ID; wcmp_paid_commission_status($commission->ID); } $WCMp->transaction->create_transactions($commissions_array); $redirect = add_query_arg('message', 'paid', $_REQUEST['_wp_http_referer']); break; case 'mark_unpaid': $post_ids = array_map('absint', (array) $_REQUEST['post']); foreach ($post_ids as $commission) { update_post_meta($commission, '_paid_status', 'unpaid', 'paid'); } $redirect = add_query_arg('message', 'unpaid', $_REQUEST['_wp_http_referer']); break; case 'mark_selected_paid': $commissions_array = array(); $post_ids = array_map('absint', (array) $_REQUEST['post']); foreach ($post_ids as $commission) { $commissions_array[] = $commission; wcmp_paid_commission_status($commission); } $WCMp->transaction->create_transactions($commissions_array); $redirect = add_query_arg('message', 'paid', $_REQUEST['_wp_http_referer']); break; case 'mark_selected_reverse': $post_ids = array_map('absint', (array) $_REQUEST['post']); foreach ($post_ids as $commission) { $vendor_id = get_post_meta($commission, '_commission_vendor', true); update_post_meta($commission, '_paid_status', 'reverse', 'unpaid'); } $redirect = add_query_arg('message', 'reverse', $_REQUEST['_wp_http_referer']); break; default: return; } wp_safe_redirect($redirect); exit; } }