/** * Retrieve the Cart Content Details * * Includes prices, tax, etc of all items. * * @since 1.0 * @return array $details Cart content details */ function edd_get_cart_content_details() { global $edd_is_last_cart_item, $edd_flat_discount_total; $cart_items = edd_get_cart_contents(); if (empty($cart_items)) { return false; } $details = array(); $length = count($cart_items) - 1; foreach ($cart_items as $key => $item) { if ($key >= $length) { $edd_is_last_cart_item = true; } $item['quantity'] = edd_item_quantities_enabled() ? absint($item['quantity']) : 1; $price_id = isset($item['options']['price_id']) ? $item['options']['price_id'] : NULL; $item_price = edd_get_cart_item_price($item['id'], $item['options']); $discount = edd_get_cart_item_discount_amount($item); $discount = apply_filters('edd_get_cart_content_details_item_discount_amount', $discount, $item); $quantity = edd_get_cart_item_quantity($item['id'], $item['options']); $fees = edd_get_cart_fees('fee', $item['id'], $price_id); $subtotal = $item_price * $quantity; foreach ($fees as $fee) { if ($fee['amount'] < 0) { $subtotal += $fee['amount']; } } $tax = edd_get_cart_item_tax($item['id'], $item['options'], $subtotal - $discount); if (edd_prices_include_tax()) { $subtotal -= round($tax, edd_currency_decimal_filter()); } $total = $subtotal - $discount + $tax; // Do not allow totals to go negative if ($total < 0) { $total = 0; } $details[$key] = array('name' => get_the_title($item['id']), 'id' => $item['id'], 'item_number' => $item, 'item_price' => round($item_price, edd_currency_decimal_filter()), 'quantity' => $quantity, 'discount' => round($discount, edd_currency_decimal_filter()), 'subtotal' => round($subtotal, edd_currency_decimal_filter()), 'tax' => round($tax, edd_currency_decimal_filter()), 'fees' => $fees, 'price' => round($total, edd_currency_decimal_filter())); if ($edd_is_last_cart_item) { $edd_is_last_cart_item = false; $edd_flat_discount_total = 0.0; } } return $details; }
/** * Retrieve the Cart Content Details * * Includes prices, tax, etc of all items. * * @since 1.0 * @return array $details Cart content details */ function edd_get_cart_content_details() { $cart_items = edd_get_cart_contents(); if (empty($cart_items)) { return false; } $details = array(); foreach ($cart_items as $key => $item) { $item['quantity'] = edd_item_quantities_enabled() ? absint($item['quantity']) : 1; $item_price = edd_get_cart_item_price($item['id'], $item['options']); $discount = apply_filters('edd_get_cart_content_details_item_discount_amount', edd_get_cart_item_discount_amount($item), $item); $quantity = edd_get_cart_item_quantity($item['id'], $item['options']); $fees = edd_get_cart_fees('fee', $item['id']); $subtotal = $item_price * $quantity - $discount; $tax = edd_get_cart_item_tax($item['id'], $item['options'], $subtotal); if (edd_prices_include_tax()) { $subtotal -= $tax; } $total = round($subtotal + $tax, edd_currency_decimal_filter()); $details[$key] = array('name' => get_the_title($item['id']), 'id' => $item['id'], 'item_number' => $item, 'item_price' => round($item_price, edd_currency_decimal_filter()), 'quantity' => $quantity, 'discount' => round($discount, edd_currency_decimal_filter()), 'subtotal' => round($subtotal, edd_currency_decimal_filter()), 'tax' => round($tax, edd_currency_decimal_filter()), 'fees' => $fees, 'price' => $total); } return $details; }
/** * Returns whether or not a download has a discount * * @param array $item A cart item array. * * @return bool */ function download_has_discount($item) { $discount_amount = edd_get_cart_item_discount_amount($item); return 0 !== $discount_amount; }
/** * Retrieves Recent Sales * * @access public * @since 2.6 * @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[] = new EDD_Payment($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('fields' => 'ids', '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('fields' => 'ids', 'number' => $this->per_page(), 'page' => $this->get_paged(), 'status' => 'publish')); } if ($query) { $i = 0; foreach ($query as $payment) { if (is_numeric($payment)) { $payment = new EDD_Payment($payment); } $payment_meta = $payment->get_meta(); $user_info = $payment->user_info; $sales['sales'][$i]['ID'] = $payment->number; $sales['sales'][$i]['transaction_id'] = !empty($payment->transaction_id) ? $payment->transaction_id : null; $sales['sales'][$i]['key'] = $payment->key; $sales['sales'][$i]['subtotal'] = $payment->subtotal; $sales['sales'][$i]['tax'] = $payment->tax; $sales['sales'][$i]['fees'] = !empty($payment->fees) ? $payment->fees : null; $sales['sales'][$i]['total'] = $payment->total; $sales['sales'][$i]['gateway'] = $payment->gateway; $sales['sales'][$i]['email'] = $payment->email; $sales['sales'][$i]['date'] = $payment->date; $c = 0; $discounts = !empty($payment->discounts) ? explode(',', $payment->discounts) : array(); $discounts = array_map('trim', $discounts); $discount_values = array(); foreach ($discounts as $discount) { if ('none' === $discount) { continue; } $discount_values[$discount] = 0; } $cart_items = array(); foreach ($payment->cart_details as $key => $item) { $item_id = isset($item['id']) ? $item['id'] : $item; $price = isset($item['price']) ? $item['price'] : false; // The final price for the item $item_price = isset($item['item_price']) ? $item['item_price'] : false; // The price before discounts $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); } } $cart_items[$c]['id'] = $item_id; $cart_items[$c]['quantity'] = $quantity; $cart_items[$c]['name'] = get_the_title($item_id); $cart_items[$c]['price'] = $price; $cart_items[$c]['price_name'] = $price_name; // Determine the discount amount for the item, if there is one foreach ($discount_values as $discount => $amount) { $item_discount = edd_get_cart_item_discount_amount($item, $discount); $discount_values[$discount] += $item_discount; } $c++; } $sales['sales'][$i]['discounts'] = !empty($discount_values) ? $discount_values : null; $sales['sales'][$i]['products'] = $cart_items; $i++; } } return apply_filters('edd_api_sales', $sales, $this); }
?> <div class="three-seventh<?php if (!$title) { ?> offset-three-seventh<?php } ?> "> <?php echo esc_html($discount['name']); ?> </div> <div class="one-seventh"> <?php if ($cart_item) { ?> <?php echo esc_html(edd_currency_filter(edd_format_amount(-1 * edd_get_cart_item_discount_amount($cart_item)))); ?> <?php } else { ?> <?php echo esc_html(edd_currency_filter(edd_format_amount(-1 * edd_get_cart_discounted_amount()))); ?> <?php } ?> </div> </li> <?php