/** * Vendor Commission withdrawl */ function vendor_withdrawl() { global $WCMp; if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST['vendor_get_paid'])) { $vendor = get_wcmp_vendor(get_current_user_id()); //check unpaid commission threshold $total_vendor_due = $vendor->wcmp_vendor_get_total_amount_due(); $get_vendor_thresold = 0; if (isset($WCMp->vendor_caps->payment_cap['commission_threshold'])) { $get_vendor_thresold = (double) $WCMp->vendor_caps->payment_cap['commission_threshold']; } if ($get_vendor_thresold > $total_vendor_due) { return; } $transaction_data = array(); if (!empty($_POST['check_order_number'])) { foreach ($_POST['check_order_number'] as $commission) { $commisssion_status = get_post_meta($commission, '_paid_status', true); if ($commisssion_status == 'paid') { continue; } $WCMp_Commission = new WCMp_Commission(); $commission_data = $WCMp_Commission->get_commission($commission); $commission_order_id = get_post_meta($commission, '_commission_order_id', true); $vendor_shipping = get_post_meta($commission, '_shipping', true); $vendor_tax = get_post_meta($commission, '_tax', true); $order = new WC_Order($commission_order_id); $due_vendor = $vendor->wcmp_get_vendor_part_from_order($order, $vendor->term_id); if ($vendor_shipping) { $vendor_shipping = $due_vendor['shipping']; } if ($vendor_tax) { $vendor_tax = $due_vendor['tax']; } $vendor_due = 0; $vendor_due = (double) $commission_data->amount + (double) $vendor_shipping + (double) $vendor_tax; if ($commission_data->vendor->term_id != $vendor->term_id) { continue; } if (array_key_exists($commission_data->vendor->term_id, $transaction_data)) { $commission_totals[$commission_data->vendor->term_id]['amount'] += apply_filters('paypal_masspay_amount', $vendor_due, $commission_order_id, $commission_data->vendor->term_id); } else { $commission_totals[$commission_data->vendor->term_id]['amount'] = apply_filters('paypal_masspay_amount', $vendor_due, $commission_order_id, $commission_data->vendor->term_id); } $transaction_data[$commission_data->vendor->term_id]['commission_detail'][$commission] = $commission_order_id; $transaction_data[$commission_data->vendor->term_id]['amount'] = $commission_totals[$commission_data->vendor->term_id]['amount']; } $transfer_charge = $WCMp->vendor_caps->payment_cap['commission_transfer']; if (isset($transfer_charge)) { $no_of_thresold_orders = $WCMp->vendor_caps->payment_cap['no_of_orders']; if (!$no_of_thresold_orders) { $no_of_thresold_orders = 0; } $no_of_paid_transaction = $no_of_paid_transaction = count($WCMp->transaction->get_transactions($vendor->term_id)); //20;//count($vendor->wcmp_vendor_transaction()); if ((int) $no_of_paid_transaction > (int) $no_of_thresold_orders) { $commission_totals[$vendor->term_id]['transfer_charge'] = $transfer_charge; $transaction_data[$vendor->term_id]['transfer_charge'] = $transfer_charge; } } $commission_payment_mode = get_user_meta($vendor->id, '_vendor_payment_mode', true); if ($commission_payment_mode == 'paypal_masspay') { // Set info for all payouts $currency = get_woocommerce_currency(); $payout_note = sprintf(__('Total commissions earned from %1$s as at %2$s on %3$s', $WCMp->text_domain), get_bloginfo('name'), date('H:i:s'), date('d-m-Y')); $commissions_data = array(); if (!empty($commission_totals)) { foreach ($commission_totals as $vendor_id => $total) { if (!isset($total['amount'])) { $total['amount'] = 0; } if (isset($total['transfer_charge'])) { $total_payable = $total['amount'] + $total['transfer_charge']; } else { $total_payable = $total['amount']; } // Get vendor data $vendor_paypal_email = get_user_meta($vendor->id, '_vendor_paypal_email', true); // Set vendor recipient field if (isset($vendor_paypal_email) && strlen($vendor_paypal_email) > 0) { $recipient = $vendor_paypal_email; $commissions_data[] = array('recipient' => $recipient, 'total' => $total_payable, 'currency' => $currency, 'vendor_id' => $vendor_id, 'payout_note' => $payout_note); } } $result = $WCMp->paypal_masspay->call_masspay_api($commissions_data); if ($result) { // create a new transaction by vendor if (!empty($transaction_data)) { $transaction_id = $WCMp->transaction->insert_new_transaction($transaction_data, 'wcmp_completed', 'paypal_masspay', $result); } $email_admin = WC()->mailer()->emails['WC_Email_Admin_Widthdrawal_Request']; $email_admin->trigger($transaction_id, $vendor->term_id); } } } else { if ($commission_payment_mode == 'direct_bank') { if (!empty($commission_totals)) { // create a new transaction by vendor if (!empty($transaction_data)) { $transaction_id = $WCMp->transaction->insert_new_transaction($transaction_data, 'wcmp_processing', 'direct_bank'); foreach ($commission_totals as $vendor_id => $total) { $email_vendor = WC()->mailer()->emails['WC_Email_Vendor_Direct_Bank']; $email_vendor->trigger($transaction_id, $vendor_id); $email_admin = WC()->mailer()->emails['WC_Email_Admin_Widthdrawal_Request']; $email_admin->trigger($transaction_id, $vendor_id); } } } } } do_action('wcmp_vendor_commission_payment_mode'); $wcmp_pages = get_option('wcmp_pages_settings_name'); $get_transaction_thankyou_page = $wcmp_pages['vendor_transaction_thankyou']; if (isset($get_transaction_thankyou_page)) { if (isset($transaction_id)) { $location = add_query_arg('transaction_id', $transaction_id, get_permalink($get_transaction_thankyou_page)); } else { $location = get_permalink($get_transaction_thankyou_page); } wp_safe_redirect($location); exit; } } } } }
/** * Process PayPal masspay */ public function do_paypal_masspay() { global $WCMp; $commissions = $this->get_query_commission(); $commission_data = $commission_totals = $commissions_data = array(); if ($commissions) { $transaction_data = array(); foreach ($commissions as $commission) { $WCMp_Commission = new WCMp_Commission(); $commission_data = $WCMp_Commission->get_commission($commission->ID); $commission_order_id = get_post_meta($commission->ID, '_commission_order_id', true); $vendor_shipping = get_post_meta($commission->ID, '_shipping', true); $vendor_tax = get_post_meta($commission->ID, '_tax', true); $order = new WC_Order($commission_order_id); $vendor = get_wcmp_vendor_by_term($commission_data->vendor->term_id); $payment_type = get_user_meta($vendor->id, '_vendor_payment_mode', true); if ($payment_type == 'direct_bank') { continue; } $due_vendor = $vendor->wcmp_get_vendor_part_from_order($order, $vendor->term_id); if (!$vendor_shipping) { $vendor_shipping = $due_vendor['shipping']; } if (!$vendor_tax) { $vendor_tax = $due_vendor['tax']; } $vendor_due = 0; $vendor_due = (double) $commission_data->amount + (double) $vendor_shipping + (double) $vendor_tax; //check unpaid commission threshold $total_vendor_due = $vendor->wcmp_vendor_get_total_amount_due(); $get_vendor_thresold = 0; if (isset($WCMp->vendor_caps->payment_cap['commission_threshold'])) { $get_vendor_thresold = (double) $WCMp->vendor_caps->payment_cap['commission_threshold']; } if ($get_vendor_thresold > $total_vendor_due) { continue; } if (array_key_exists($commission_data->vendor->term_id, $transaction_data)) { $commission_totals[$commission_data->vendor->term_id]['amount'] += apply_filters('paypal_masspay_amount', $vendor_due, $commission_order_id, $commission_data->vendor->term_id); } else { $commission_totals[$commission_data->vendor->term_id]['amount'] = apply_filters('paypal_masspay_amount', $vendor_due, $commission_order_id, $commission_data->vendor->term_id); } $transaction_data[$commission_data->vendor->term_id]['commission_detail'][$commission->ID] = $commission_order_id; $transaction_data[$commission_data->vendor->term_id]['amount'] = $commission_totals[$commission_data->vendor->term_id]['amount']; } // Set info for all payouts $currency = get_woocommerce_currency(); $payout_note = sprintf(__('Total commissions earned from %1$s as at %2$s on %3$s', $WCMp->text_domain), get_bloginfo('name'), date('H:i:s'), date('d-m-Y')); $commissions_data = array(); foreach ($commission_totals as $vendor_id => $total) { if (!isset($total['amount'])) { $total['amount'] = 0; } if (isset($total['transaction_fee'])) { $total_payable = $total['amount'] + $total['transaction_fee']; } else { $total_payable = $total['amount']; } // Get vendor data $vendor = get_wcmp_vendor_by_term($vendor_id); $vendor_paypal_email = get_user_meta($vendor->id, '_vendor_paypal_email', true); // Set vendor recipient field if (isset($vendor_paypal_email) && strlen($vendor_paypal_email) > 0) { $recipient = $vendor_paypal_email; $commissions_data[] = array('recipient' => $recipient, 'total' => $total_payable, 'currency' => $currency, 'vendor_id' => $vendor_id, 'payout_note' => $payout_note); } } $result = $this->call_masspay_api($commissions_data); if ($result) { // create a new transaction by vendor $WCMp->transaction->insert_new_transaction($transaction_data, 'wcmp_completed', 'paypal_masspay', $result); } } }