/** * Retrieves subtotal for payment (this is the amount before taxes) and then * returns a full formatted amount. This function essentially calls * edd_get_payment_subtotal() * * @since 1.3.3 * * @param int $payment_id Payment ID * * @see edd_get_payment_subtotal() * * @return array Fully formatted payment subtotal */ function edd_payment_subtotal($payment_id = 0) { $subtotal = edd_get_payment_subtotal($payment_id); return edd_currency_filter(edd_format_amount($subtotal), edd_get_payment_currency_code($payment_id)); }
/** * Retrieves Recent Sales * * @access public * @since 1.5 * @return array */ public function get_recent_sales() { $sales = array(); $query = edd_get_payments(array('number' => $this->per_page(), 'page' => $this->get_paged(), 'status' => 'publish')); if ($query) { $i = 0; foreach ($query as $payment) { $payment_meta = edd_get_payment_meta($payment->ID); $user_info = edd_get_payment_meta_user_info($payment->ID); $cart_items = edd_get_payment_meta_cart_details($payment->ID); $sales['sales'][$i]['ID'] = $payment->ID; $sales['sales'][$i]['key'] = edd_get_payment_key($payment->ID); $sales['sales'][$i]['subtotal'] = edd_get_payment_subtotal($payment->ID); $sales['sales'][$i]['tax'] = edd_get_payment_tax($payment->ID); $sales['sales'][$i]['fees'] = edd_get_payment_fees($payment->ID); $sales['sales'][$i]['total'] = edd_get_payment_amount($payment->ID); $sales['sales'][$i]['gateway'] = edd_get_payment_gateway($payment->ID); $sales['sales'][$i]['email'] = edd_get_payment_user_email($payment->ID); $sales['sales'][$i]['date'] = $payment->post_date; $sales['sales'][$i]['products'] = array(); $c = 0; foreach ($cart_items as $key => $item) { $price_override = isset($payment_meta['cart_details']) ? $item['price'] : null; $price = edd_get_download_final_price($item['id'], $user_info, $price_override); if (isset($cart_items[$key]['item_number'])) { $price_name = ''; $price_options = $cart_items[$key]['item_number']['options']; if (isset($price_options['price_id'])) { $price_name = edd_get_price_option_name($item['id'], $price_options['price_id'], $payment->ID); } } $sales['sales'][$i]['products'][$c]['name'] = get_the_title($item['id']); $sales['sales'][$i]['products'][$c]['price'] = $price; $sales['sales'][$i]['products'][$c]['price_name'] = $price_name; $c++; } $i++; } } return $sales; }
/** * Retrieves Recent Sales * * @access public * @since 1.5 * @return array */ public function get_recent_sales() { global $wp_query; $sales = array(); if( ! user_can( $this->user_id, 'view_shop_reports' ) && ! $this->override ) { return $sales; } if( isset( $wp_query->query_vars['id'] ) ) { $query = array(); $query[] = edd_get_payment_by( 'id', $wp_query->query_vars['id'] ); } elseif( isset( $wp_query->query_vars['purchasekey'] ) ) { $query = array(); $query[] = edd_get_payment_by( 'key', $wp_query->query_vars['purchasekey'] ); } elseif( isset( $wp_query->query_vars['email'] ) ) { $query = edd_get_payments( array( 'meta_key' => '_edd_payment_user_email', 'meta_value' => $wp_query->query_vars['email'], 'number' => $this->per_page(), 'page' => $this->get_paged(), 'status' => 'publish' ) ); } else { $query = edd_get_payments( array( 'number' => $this->per_page(), 'page' => $this->get_paged(), 'status' => 'publish' ) ); } if ( $query ) { $i = 0; foreach ( $query as $payment ) { $payment_meta = edd_get_payment_meta( $payment->ID ); $user_info = edd_get_payment_meta_user_info( $payment->ID ); $cart_items = edd_get_payment_meta_cart_details( $payment->ID ); $sales['sales'][ $i ]['ID'] = edd_get_payment_number( $payment->ID ); $sales['sales'][ $i ]['transaction_id'] = edd_get_payment_transaction_id( $payment->ID ); $sales['sales'][ $i ]['key'] = edd_get_payment_key( $payment->ID ); $sales['sales'][ $i ]['discount'] = isset( $user_info['discount'] ) && $user_info['discount'] != 'none' ? explode( ',', $user_info['discount'] ) : array(); $sales['sales'][ $i ]['subtotal'] = edd_get_payment_subtotal( $payment->ID ); $sales['sales'][ $i ]['tax'] = edd_get_payment_tax( $payment->ID ); $sales['sales'][ $i ]['fees'] = edd_get_payment_fees( $payment->ID ); $sales['sales'][ $i ]['total'] = edd_get_payment_amount( $payment->ID ); $sales['sales'][ $i ]['gateway'] = edd_get_payment_gateway( $payment->ID ); $sales['sales'][ $i ]['email'] = edd_get_payment_user_email( $payment->ID ); $sales['sales'][ $i ]['date'] = $payment->post_date; $sales['sales'][ $i ]['products'] = array(); $c = 0; foreach ( $cart_items as $key => $item ) { $item_id = isset( $item['id'] ) ? $item['id'] : $item; $price = isset( $item['price'] ) ? $item['price'] : false; $price_id = isset( $item['item_number']['options']['price_id'] ) ? $item['item_number']['options']['price_id'] : null; $quantity = isset( $item['quantity'] ) && $item['quantity'] > 0 ? $item['quantity'] : 1; if( ! $price ) { // This function is only used on payments with near 1.0 cart data structure $price = edd_get_download_final_price( $item_id, $user_info, null ); } $price_name = ''; if ( isset( $item['item_number'] ) && isset( $item['item_number']['options'] ) ) { $price_options = $item['item_number']['options']; if ( isset( $price_options['price_id'] ) ) { $price_name = edd_get_price_option_name( $item['id'], $price_options['price_id'], $payment->ID ); } } $sales['sales'][ $i ]['products'][ $c ]['quantity'] = $quantity; $sales['sales'][ $i ]['products'][ $c ]['name'] = get_the_title( $item['id'] ); $sales['sales'][ $i ]['products'][ $c ]['price'] = $price; $sales['sales'][ $i ]['products'][ $c ]['price_name'] = $price_name; $c++; } $i++; } } return $sales; }
/** * Email template tag: subtotal * Price of purchase before taxes * * @param int $payment_id * * @return string subtotal */ function edd_email_tag_subtotal($payment_id) { $subtotal = edd_currency_filter(edd_format_amount(edd_get_payment_subtotal($payment_id)), edd_get_payment_currency_code($payment_id)); return html_entity_decode($subtotal, ENT_COMPAT, 'UTF-8'); }
/** * Setup PayPal receivers when a purchase is made * * @since 2.7 * @param $receivers string The default receivers and their percentages as defined in the Payment Gateway settings * @param $payment_id int The payment ID of the purchase * @return receivers $string The modified receivers string */ function eddc_paypal_adaptive_autopay($receivers, $payment_id) { if (!edd_get_option('edd_commissions_autopay_pa')) { return $receivers; } $cart = edd_get_payment_meta_cart_details($payment_id); if ('subtotal' == edd_get_option('edd_commissions_calc_base', 'subtotal')) { $total = edd_get_payment_subtotal($payment_id); } else { $total = edd_get_payment_amount($payment_id); } $final = array(); foreach ($cart as $item) { $recipients = eddc_get_recipients($item['id']); if ('subtotal' == edd_get_option('edd_commissions_calc_base', 'subtotal')) { $price = $item['subtotal']; } else { $price = $item['price']; } foreach ($recipients as $recipient) { $type = eddc_get_commission_type($item['id']); $rate = eddc_get_recipient_rate($item['id'], $recipient); $args = array('price' => $price, 'rate' => $rate, 'type' => $type, 'download_id' => $item['id'], 'recipient' => $recipient, 'payment_id' => $payment_id); $amount = eddc_calc_commission_amount($args); $percentage = round(100 / $total * $amount, 2); $user = get_userdata($recipient); $custom_paypal = get_user_meta($recipient, 'eddc_user_paypal', true); $email = is_email($custom_paypal) ? $custom_paypal : $user->user_email; if ($percentage !== 0) { if (isset($final[$email])) { $final[$email] = $percentage + $final[$email]; } else { $final[$email] = $percentage; } } } } $return = ''; $counter = 0; $taken = 0; // Add up the total commissions foreach ($final as $person => $val) { $taken = $taken + $val; } // Calculate the final percentage the store owners should receive $remaining = 100 - $taken; $owners = $receivers; $owners = explode("\n", $owners); foreach ($owners as $key => $val) { $val = explode('|', $val); $email = $val[0]; $percentage = $val[1]; $remainder = $percentage / 100 * $remaining; if (isset($final[$email])) { $final[$email] = $final[$email] + $remainder; } else { $final[$email] = $remainder; } } // Rebuild the final PayPal receivers string foreach ($final as $person => $val) { if ($counter === 0) { $return = $person . "|" . $val; } else { $return = $return . "\n" . $person . "|" . $val; } $counter++; } //echo '<pre>'; print_r( $return ); echo '</pre>'; exit; return $return; }
/** * Get the referral total * * @access public * @since 1.3.1 */ public function get_referral_total($payment_id = 0, $affiliate_id = 0) { $downloads = apply_filters('affwp_get_edd_cart_details', edd_get_payment_meta_cart_details($payment_id)); if (is_array($downloads)) { // Calculate the referral amount based on product prices $referral_total = 0.0; foreach ($downloads as $key => $download) { if (get_post_meta($download['id'], '_affwp_' . $this->context . '_referrals_disabled', true)) { continue; // Referrals are disabled on this product } if (affiliate_wp()->settings->get('exclude_tax')) { $amount = $download['price'] - $download['tax']; } else { $amount = $download['price']; } if (class_exists('EDD_Simple_Shipping')) { if (isset($download['fees'])) { foreach ($download['fees'] as $fee_id => $fee) { if (false !== strpos($fee_id, 'shipping')) { if (!affiliate_wp()->settings->get('exclude_shipping')) { $amount += $fee['amount']; } } } } } $referral_total += $this->calculate_referral_amount($amount, $payment_id, $download['id']); } } else { if (affiliate_wp()->settings->get('exclude_tax')) { $amount = edd_get_payment_subtotal($payment_id); } else { $amount = edd_get_payment_amount($payment_id); } $referral_total = $this->calculate_referral_amount($amount, $payment_id); } return $referral_total; }
/** * Retrieve payments. * * The query can be modified in two ways; either the action before the * query is run, or the filter on the arguments (existing mainly for backwards * compatibility). * * @access public * @since 1.8 * @return object */ public function get_payments() { do_action('edd_pre_get_payments', $this); $query = new WP_Query($this->args); if ('payments' != $this->args['output']) { return $query->posts; } if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $details = new stdClass(); $payment_id = get_post()->ID; $details->ID = $payment_id; $details->date = get_post()->post_date; $details->post_status = get_post()->post_status; $details->total = edd_get_payment_amount($payment_id); $details->subtotal = edd_get_payment_subtotal($payment_id); $details->tax = edd_get_payment_tax($payment_id); $details->fees = edd_get_payment_fees($payment_id); $details->key = edd_get_payment_key($payment_id); $details->gateway = edd_get_payment_gateway($payment_id); $details->user_info = edd_get_payment_meta_user_info($payment_id); $details->cart_details = edd_get_payment_meta_cart_details($payment_id, true); if (edd_get_option('enable_sequential')) { $details->payment_number = edd_get_payment_number($payment_id); } $this->payments[] = apply_filters('edd_payment', $details, $payment_id, $this); } wp_reset_postdata(); } do_action('edd_post_get_payments', $this); return $this->payments; }
/** * Retrieves subtotal for payment * * This is the amount before taxes * * Returns a full formatted amount * * @param int $payment_id * @param bool $payment_meta * @access public * @since 1.3.3 * @return string */ function edd_payment_subtotal($payment_id = 0, $payment_meta = false) { $subtotal = edd_get_payment_subtotal($payment_id, $payment_meta); return edd_currency_filter(edd_format_amount($subtotal)); }