コード例 #1
0
/**
 * 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));
}
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
	/**
	 * 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;
	}
コード例 #4
0
/**
 * 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');
}
コード例 #5
0
/**
 * 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;
}
コード例 #6
0
ファイル: class-edd.php プロジェクト: jwondrusch/AffiliateWP
 /**
  * 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;
 }
コード例 #7
0
 /**
  * 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;
 }
コード例 #8
0
/**
 * 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));
}