/**
  * 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;
 }
Пример #2
0
 /**
  * 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;
     }
 }