updated plugin Easy Digital Downloads
version 3.1.0.4
This commit is contained in:
@ -370,102 +370,118 @@ class EDD_API_V2 extends EDD_API_V1 {
|
||||
|
||||
$sales = array();
|
||||
|
||||
if( ! user_can( $this->user_id, 'view_shop_reports' ) && ! $this->override ) {
|
||||
if ( ! user_can( $this->user_id, 'view_shop_reports' ) && ! $this->override ) {
|
||||
return $sales;
|
||||
}
|
||||
|
||||
if( isset( $wp_query->query_vars['id'] ) ) {
|
||||
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[] = edd_get_order( $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' => 'complete' ) );
|
||||
$query[] = edd_get_order_by( 'payment_key', $wp_query->query_vars['purchasekey'] );
|
||||
} elseif ( isset( $wp_query->query_vars['email'] ) ) {
|
||||
$query = edd_get_orders(
|
||||
array(
|
||||
'type' => 'sale',
|
||||
'email' => $wp_query->query_vars['email'],
|
||||
'number' => $this->per_page(),
|
||||
'offset' => ( $this->get_paged() - 1 ) * $this->per_page(),
|
||||
'status__in' => edd_get_net_order_statuses(),
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$query = edd_get_payments( array( 'fields' => 'ids', 'number' => $this->per_page(), 'page' => $this->get_paged(), 'status' => 'complete' ) );
|
||||
$query = edd_get_orders(
|
||||
array(
|
||||
'type' => 'sale',
|
||||
'number' => $this->per_page(),
|
||||
'offset' => ( $this->get_paged() - 1 ) * $this->per_page(),
|
||||
'status__in' => edd_get_net_order_statuses(),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if ( $query ) {
|
||||
$i = 0;
|
||||
foreach ( $query as $payment ) {
|
||||
if ( is_numeric( $payment ) ) {
|
||||
$payment = new EDD_Payment( $payment );
|
||||
foreach ( $query as $order ) {
|
||||
/** @var EDD\Orders\Order $order An Order object. */
|
||||
|
||||
$localized_time = edd_get_edd_timezone_equivalent_date_from_utc( EDD()->utils->date( $order->date_created ) );
|
||||
|
||||
$sales['sales'][ $i ]['ID'] = $order->get_number();
|
||||
$sales['sales'][ $i ]['mode'] = $order->mode;
|
||||
$sales['sales'][ $i ]['status'] = $order->status;
|
||||
$sales['sales'][ $i ]['transaction_id'] = $order->get_transaction_id();
|
||||
$sales['sales'][ $i ]['key'] = $order->payment_key;
|
||||
$sales['sales'][ $i ]['subtotal'] = $order->subtotal;
|
||||
$sales['sales'][ $i ]['tax'] = $order->tax;
|
||||
$sales['sales'][ $i ]['total'] = $order->total;
|
||||
$sales['sales'][ $i ]['gateway'] = $order->gateway;
|
||||
$sales['sales'][ $i ]['customer_id'] = $order->customer_id;
|
||||
$sales['sales'][ $i ]['user_id'] = $order->user_id;
|
||||
$sales['sales'][ $i ]['email'] = $order->email;
|
||||
$sales['sales'][ $i ]['date'] = $localized_time->copy()->format( 'Y-m-d H:i:s' );
|
||||
$sales['sales'][ $i ]['date_utc'] = $order->date_created;
|
||||
|
||||
$fees = array();
|
||||
$discounts = array();
|
||||
|
||||
foreach ( $order->adjustments as $adjustment ) {
|
||||
switch ( $adjustment->type ) {
|
||||
case 'fee':
|
||||
$fees[] = array(
|
||||
'amount' => $adjustment->total,
|
||||
'label' => $adjustment->description,
|
||||
'no_tax' => empty( $adjustment->tax ),
|
||||
'type' => $adjustment->type,
|
||||
'price_id' => null,
|
||||
'download_id' => null,
|
||||
'id' => $adjustment->type_key,
|
||||
);
|
||||
break;
|
||||
|
||||
case 'discount':
|
||||
$discounts[ $adjustment->description ] = $adjustment->total;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$payment_meta = $payment->get_meta();
|
||||
$user_info = $payment->user_info;
|
||||
|
||||
$sales['sales'][ $i ]['ID'] = $payment->number;
|
||||
$sales['sales'][ $i ]['mode'] = $payment->mode;
|
||||
$sales['sales'][ $i ]['status'] = $payment->status;
|
||||
$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 ]['customer_id'] = $payment->customer_id;
|
||||
$sales['sales'][ $i ]['user_id'] = $payment->user_id;
|
||||
$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 ) {
|
||||
foreach ( $order->items as $item ) {
|
||||
$cart_items[ $c ]['object_id'] = $item->id;
|
||||
$cart_items[ $c ]['id'] = $item->product_id;
|
||||
$cart_items[ $c ]['quantity'] = $item->quantity;
|
||||
$cart_items[ $c ]['name'] = $item->product_name;
|
||||
$cart_items[ $c ]['price'] = $item->total;
|
||||
|
||||
$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
|
||||
// Keeping this here for backwards compatibility.
|
||||
$cart_items[ $c ]['price_name'] = null === $item->price_id
|
||||
? ''
|
||||
: edd_get_price_name( $item->product_id, array( 'price_id' => $item->price_id ) );
|
||||
|
||||
$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 );
|
||||
// Check for any item level fees to include in the fees array.
|
||||
foreach ( $item->adjustments as $adjustment ) {
|
||||
if ( 'fee' === $adjustment->type ) {
|
||||
$fees[] = array(
|
||||
'amount' => $adjustment->total,
|
||||
'label' => $adjustment->description,
|
||||
'no_tax' => empty( $adjustment->tax ),
|
||||
'type' => $adjustment->type,
|
||||
'price_id' => $item->price_id,
|
||||
'download_id' => $item->product_id,
|
||||
'id' => $adjustment->type_key,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$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;
|
||||
$sales['sales'][ $i ]['fees'] = ! empty( $fees ) ? $fees : null;
|
||||
$sales['sales'][ $i ]['discounts'] = ! empty( $discounts ) ? $discounts : null;
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
Reference in New Issue
Block a user