"; echo '

'.__('Payout Report Generated', 'affiliates-manager').'

'; } if (isset($_POST['wpam_generate_mass_pay_file'])) { echo wpam_create_mass_pay_file(); echo "
"; } if (isset($_REQUEST['wpam_mark_as_paid'])) { echo wpam_mark_payment_as_paid(); } $paypal_payouts_doc = 'https://wpaffiliatemanager.com/paypal-payouts-setup/'; ?>





this documentation.', 'affiliates-manager'), $paypal_payouts_doc); ?>




' . __('Affiliate ID', 'affiliates-manager') . ' ' . __('Name', 'affiliates-manager') . ' ' . __('PayPal Email', 'affiliates-manager') . ' ' . __('Pending Amount', 'affiliates-manager') . ' '; $min_payout = get_option(WPAM_PluginConfig::$MinPayoutAmountOption); $no_pending_payment = true; $counter = 0; global $referrers; global $payouts; global $wpdb; $affiliates_table = WPAM_AFFILIATES_TBL; $db = new WPAM_Data_DataAccess(); $aff_db = $db->getAffiliateRepository(); //Load and process affiliate records using the paging concept (so we are not trying to laod thousands of recoreds at once). $page = 1; $query_limit = 500;//Load 500 rows per query $total_rows = wpam_get_total_affiliates_count(); $total_pages = ceil($total_rows/$query_limit); //$resultset = $wpdb->get_results("SELECT * FROM $affiliates_table ORDER BY date", OBJECT); if ($total_rows >= 1) {//There are more than 1 affiliates in this site while ($page <= $total_pages){ $query_start = ($page - 1) * $query_limit;//Calculate the query start position for this iteration $query = "SELECT * FROM $affiliates_table LIMIT ".$query_start.", ".$query_limit;//Load affiliates in batches $resultset = $wpdb->get_results($query, OBJECT); foreach ($resultset as $wpam_aff_db) { $affiliate = $aff_db->loadAffiliateSummary(array('affiliateId' => $wpam_aff_db->affiliateId)); $affiliate = $affiliate[0]; $pending_payment = number_format($affiliate->balance, 2, '.', ''); if ($pending_payment >= $min_payout) { $affiliates_name = $wpam_aff_db->firstName . " " . $wpam_aff_db->lastName; $paypal_email = isset($wpam_aff_db->paypalEmail) && !empty($wpam_aff_db->paypalEmail) ? $wpam_aff_db->paypalEmail : ''; $output .= ''; $output .= '' . $wpam_aff_db->affiliateId . ''; $output .= ''.$affiliates_name.''; $output .= ''.$paypal_email.''; $output .= ''.$pending_payment.''; $output .= ''; $no_pending_payment = false; $referrers[$counter] = $wpam_aff_db->affiliateId; $payouts[$counter] = $pending_payment; $counter++; } }//End of foreach loop $page++;//Increment the page count for the next iteration }//End of while loop } else { $output .= ' ' . __('No Affiliates Found in the Database.', 'affiliates-manager') . ' '; } if ($no_pending_payment) { $output .= ' ' . __('No Pending Payment Found.', 'affiliates-manager') . ' '; } $output .= ''; update_option('wpam_payout_report_generated', true); update_option('wp_affiliates_manager_referrers', $referrers); update_option('wp_affiliates_manager_payouts', $payouts); return $output; } function wpam_create_mass_pay_file() { $referrers = get_option('wp_affiliates_manager_referrers'); $payouts = get_option('wp_affiliates_manager_payouts'); $currency_code = get_option(WPAM_PluginConfig::$AffCurrencyCode); global $wpdb; $affiliates_table = WPAM_AFFILIATES_TBL; $output = ''; if (empty($referrers) || empty($payouts)) { $output = '

'. __('There is no pending payment.','affiliates-manager').'

'; return $output; } for ($i = 0; $i < sizeof($referrers); $i++) { $row = $wpdb->get_row("select * from $affiliates_table where affiliateId = '$referrers[$i]'", OBJECT); if(isset($row->paypalEmail) && !empty($row->paypalEmail)){ $output .= $row->paypalEmail; $output .= ","; $output .= $payouts[$i]; $output .= ","; $output .= $currency_code; $output .= "\n"; } } $paypal_payout_file_path = WPAM_PATH . '/paypal_payout.csv'; $Handle = fopen($paypal_payout_file_path, 'w') or die(__("can't open file named 'paypal_payout.csv'", 'affiliates-manager')); fwrite($Handle, $output); fclose($Handle); $separator = ", "; $csv_output = ""; $csv_output.= "Commission Amount" . $separator; $csv_output.= "Currency" . $separator; $csv_output.= "Affiliate ID" . $separator; $csv_output.= "First Name" . $separator; $csv_output.= "Last Name" . $separator; $csv_output.= "Email" . $separator; $csv_output.= "Street" . $separator; $csv_output.= "City" . $separator; $csv_output.= "State" . $separator; $csv_output.= "Postal Code" . $separator; $csv_output.= "Country" . $separator; $csv_output.= "Phone" . $separator; $csv_output.= "PayPal Email Address" . $separator; $csv_output.= "Payment Method" . $separator; $csv_output.= "\n"; for ($i = 0; $i < sizeof($referrers); $i++) { $row = $wpdb->get_row("select * from $affiliates_table where affiliateId = '$referrers[$i]'", OBJECT); $csv_output.= wpam_escape_csv_value($payouts[$i]) . $separator; $csv_output.= wpam_escape_csv_value($currency_code) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->affiliateId)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->firstName)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->lastName)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->email)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->addressLine1)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->addressCity)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->addressState)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->addressZipCode)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->addressCountry)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->phoneNumber)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->paypalEmail)) . $separator; $csv_output.= wpam_escape_csv_value(stripslashes($row->paymentMethod)) . $separator; $csv_output.= "\n"; } $aff_payout_report_abs_path = WPAM_PATH . '/affiliate_payout_report.csv'; $Handle = fopen($aff_payout_report_abs_path, 'w') or die(__("can't open file named 'affiliate_payout_report.csv'", 'affiliates-manager')); fwrite($Handle, $csv_output); fclose($Handle); $output = nl2br($output); if (empty($output)) { $output .= '

'.__('Note: Please make sure that the PayPal email address field of the affiliates that are about to get paid via PayPal are not empty. PayPal payouts do not work without PayPal email address. You can ignore this warning if you are going to pay your affiliates via other means.', 'affiliates-manager').'

'; } else { $paypal_payout_file = WPAM_URL.'/paypal_payout.csv'; $output .= '

'.sprintf(__('PayPal payout file created. Download the PayPal Payout File (Right click and choose "Save Link As"). You can use this file to make a PayPal mass payment and pay the commissions in one go.', 'affiliates-manager'), $paypal_payout_file).'

'; } $affiliate_payout_report_file = WPAM_URL.'/affiliate_payout_report.csv'; //Show link for the affiliate payouts report file $output .= '

'.sprintf(__('CSV file with outstanding affiliate commission details created. Download the Affiliate Payout Report File (Right click and choose "Save Link As"). You can use this file to manually send money to your affiliates.', 'affiliates-manager'), $affiliate_payout_report_file).'

'; return $output; } function wpam_mark_payment_as_paid() { $referrers = get_option('wp_affiliates_manager_referrers'); $payouts = get_option('wp_affiliates_manager_payouts'); global $wpdb; $table = WPAM_TRANSACTIONS_TBL; $data = array(); if (sizeof($referrers) == 0) { $output = '

'.__('There is no pending payment to mark', 'affiliates-manager').'

'; return $output; } for ($i = 0; $i < sizeof($referrers); $i++) { $amount = $payouts[$i] * -1; $data['dateModified'] = date("Y-m-d H:i:s", time()); $data['dateCreated'] = date("Y-m-d H:i:s", time()); $data['affiliateId'] = $referrers[$i]; $data['amount'] = number_format($amount, 2, '.', ''); $data['type'] = 'payout'; $data['description'] = __('Payout', 'affiliates-manager'); //$data['status'] = 'confirmed'; $wpdb->insert($table, $data); } $output = '

'.__('Marked payments as paid', 'affiliates-manager').'

'; return $output; }