336 lines
12 KiB
PHP
336 lines
12 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Shortcode: Receipt - [edd_receipt]
|
||
|
*
|
||
|
* @package EDD
|
||
|
* @category Template
|
||
|
*
|
||
|
* @since 3.0 Check status of order item when showing download link, instead of order itself.
|
||
|
* Show "Refunded" next to any refunded order items.
|
||
|
*/
|
||
|
|
||
|
global $edd_receipt_args;
|
||
|
$order = edd_get_order( $edd_receipt_args['id'] );
|
||
|
|
||
|
// Display a notice if the order was not found in the database.
|
||
|
if ( ! $order ) : ?>
|
||
|
|
||
|
<div class="edd_errors edd-alert edd-alert-error">
|
||
|
<?php esc_html_e( 'The specified receipt ID appears to be invalid.', 'easy-digital-downloads' ); ?>
|
||
|
</div>
|
||
|
|
||
|
<?php
|
||
|
return;
|
||
|
endif;
|
||
|
|
||
|
/**
|
||
|
* Allows additional output before displaying the receipt table.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
*
|
||
|
* @param \EDD\Orders\Order $order Current order.
|
||
|
* @param array $edd_receipt_args [edd_receipt] shortcode arguments.
|
||
|
*/
|
||
|
do_action( 'edd_order_receipt_before_table', $order, $edd_receipt_args );
|
||
|
?>
|
||
|
<table id="edd_purchase_receipt" class="edd-table">
|
||
|
<thead>
|
||
|
<?php do_action( 'edd_order_receipt_before', $order, $edd_receipt_args ); ?>
|
||
|
|
||
|
<?php if ( filter_var( $edd_receipt_args['payment_id'], FILTER_VALIDATE_BOOLEAN ) ) : ?>
|
||
|
<tr>
|
||
|
<th><strong><?php echo esc_html_x( 'Order', 'heading', 'easy-digital-downloads' ); ?>:</strong></th>
|
||
|
<th><?php echo esc_html( $order->get_number() ); ?></th>
|
||
|
</tr>
|
||
|
<?php endif; ?>
|
||
|
</thead>
|
||
|
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td class="edd_receipt_payment_status"><strong><?php esc_html_e( 'Order Status', 'easy-digital-downloads' ); ?>:</strong></td>
|
||
|
<td class="edd_receipt_payment_status <?php echo esc_attr( strtolower( $order->status ) ); ?>"><?php echo esc_html( edd_get_status_label( $order->status ) ); ?></td>
|
||
|
</tr>
|
||
|
|
||
|
<?php if ( filter_var( $edd_receipt_args['payment_key'], FILTER_VALIDATE_BOOLEAN ) ) : ?>
|
||
|
<tr>
|
||
|
<td><strong><?php esc_html_e( 'Payment Key', 'easy-digital-downloads' ); ?>:</strong></td>
|
||
|
<td><?php echo esc_html( $order->payment_key ); ?></td>
|
||
|
</tr>
|
||
|
<?php endif; ?>
|
||
|
|
||
|
<?php if ( filter_var( $edd_receipt_args['payment_method'], FILTER_VALIDATE_BOOLEAN ) ) : ?>
|
||
|
<tr>
|
||
|
<td><strong><?php esc_html_e( 'Payment Method', 'easy-digital-downloads' ); ?>:</strong></td>
|
||
|
<td><?php echo esc_html( edd_get_gateway_checkout_label( $order->gateway ) ); ?></td>
|
||
|
</tr>
|
||
|
<?php endif; ?>
|
||
|
<?php if ( filter_var( $edd_receipt_args['date'], FILTER_VALIDATE_BOOLEAN ) ) : ?>
|
||
|
<tr>
|
||
|
<td><strong><?php esc_html_e( 'Date', 'easy-digital-downloads' ); ?>:</strong></td>
|
||
|
<td><?php echo esc_html( edd_date_i18n( EDD()->utils->date( $order->date_created, null, true )->toDateTimeString() ) ); ?></td>
|
||
|
</tr>
|
||
|
<?php endif; ?>
|
||
|
|
||
|
<?php if ( filter_var( $edd_receipt_args['price'], FILTER_VALIDATE_BOOLEAN ) && $order->subtotal > 0 ) : ?>
|
||
|
<tr>
|
||
|
<td><strong><?php esc_html_e( 'Subtotal', 'easy-digital-downloads' ); ?>:</strong></td>
|
||
|
<td>
|
||
|
<?php echo esc_html( edd_payment_subtotal( $order->id ) ); ?>
|
||
|
</td>
|
||
|
</tr>
|
||
|
<?php endif; ?>
|
||
|
|
||
|
<?php
|
||
|
if ( filter_var( $edd_receipt_args['discount'], FILTER_VALIDATE_BOOLEAN ) ) :
|
||
|
$order_discounts = $order->get_discounts();
|
||
|
if ( $order_discounts ) :
|
||
|
$label = _n( 'Discount', 'Discounts', count( $order_discounts ), 'easy-digital-downloads' );
|
||
|
?>
|
||
|
<tr>
|
||
|
<td colspan="2"><strong><?php echo esc_html( $label ); ?>:</strong></td>
|
||
|
</tr>
|
||
|
<?php
|
||
|
foreach ( $order_discounts as $order_discount ) {
|
||
|
$label = $order_discount->description;
|
||
|
if ( 'percent' === edd_get_discount_type( $order_discount->type_id ) ) {
|
||
|
$rate = edd_format_discount_rate( 'percent', edd_get_discount_amount( $order_discount->type_id ) );
|
||
|
$label .= " ({$rate})";
|
||
|
}
|
||
|
?>
|
||
|
<tr>
|
||
|
<td><?php echo esc_html( $label ); ?></td>
|
||
|
<td><?php echo esc_html( edd_display_amount( edd_negate_amount( $order_discount->total ), $order->currency ) ); ?></td>
|
||
|
</tr>
|
||
|
<?php
|
||
|
}
|
||
|
?>
|
||
|
</tr>
|
||
|
<?php endif; ?>
|
||
|
<?php endif; ?>
|
||
|
|
||
|
<?php
|
||
|
$fees = $order->get_fees();
|
||
|
if ( ! empty( $fees ) ) :
|
||
|
?>
|
||
|
<tr>
|
||
|
<td colspan="2"><strong><?php echo esc_html( _n( 'Fee', 'Fees', count( $fees ), 'easy-digital-downloads' ) ); ?>:</strong></td>
|
||
|
</tr>
|
||
|
<?php
|
||
|
foreach ( $fees as $fee ) :
|
||
|
$label = __( 'Fee', 'easy-digital-downloads' );
|
||
|
if ( ! empty( $fee->description ) ) {
|
||
|
$label = $fee->description;
|
||
|
}
|
||
|
?>
|
||
|
<tr>
|
||
|
<td><span class="edd_fee_label"><?php echo esc_html( $label ); ?></span></td>
|
||
|
<td><span class="edd_fee_amount"><?php echo esc_html( edd_display_amount( $fee->subtotal, $order->currency ) ); ?></span></td>
|
||
|
</tr>
|
||
|
<?php endforeach; ?>
|
||
|
<?php endif; ?>
|
||
|
|
||
|
<?php if ( $order->tax > 0 ) : ?>
|
||
|
<tr>
|
||
|
<td><strong><?php esc_html_e( 'Tax', 'easy-digital-downloads' ); ?>:</strong></td>
|
||
|
<td><?php echo esc_html( edd_payment_tax( $order->id ) ); ?></td>
|
||
|
</tr>
|
||
|
<?php endif; ?>
|
||
|
<?php
|
||
|
$credits = $order->get_credits();
|
||
|
if ( $credits ) {
|
||
|
?>
|
||
|
<tr>
|
||
|
<td colspan="2"><strong><?php echo esc_html( _n( 'Credit', 'Credits', count( $credits ), 'easy-digital-downloads' ) ); ?>:</strong></td>
|
||
|
</tr>
|
||
|
<?php
|
||
|
foreach ( $credits as $credit ) {
|
||
|
$label = __( 'Credit', 'easy-digital-downloads' );
|
||
|
if ( ! empty( $credit->description ) ) {
|
||
|
$label = $credit->description;
|
||
|
}
|
||
|
?>
|
||
|
<tr>
|
||
|
<td><?php echo esc_html( $label ); ?></td>
|
||
|
<td><?php echo esc_html( edd_display_amount( edd_negate_amount( $credit->total ), $order->currency ) ); ?></td>
|
||
|
</tr>
|
||
|
<?php
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
<?php if ( filter_var( $edd_receipt_args['price'], FILTER_VALIDATE_BOOLEAN ) ) : ?>
|
||
|
<tr>
|
||
|
<td><strong><?php esc_html_e( 'Total', 'easy-digital-downloads' ); ?>:</strong></td>
|
||
|
<td><?php echo esc_html( edd_payment_amount( $order->id ) ); ?></td>
|
||
|
</tr>
|
||
|
<?php endif; ?>
|
||
|
|
||
|
<?php
|
||
|
/**
|
||
|
* Fires at the end of the order receipt `tbody`.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
* @param \EDD\Orders\Order $order Current order.
|
||
|
* @param array $edd_receipt_args [edd_receipt] shortcode arguments.
|
||
|
*/
|
||
|
do_action( 'edd_order_receipt_after', $order, $edd_receipt_args );
|
||
|
?>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
|
||
|
<?php
|
||
|
/**
|
||
|
* Fires after the order receipt table.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
* @param \EDD\Orders\Order $order Current order.
|
||
|
* @param array $edd_receipt_args [edd_receipt] shortcode arguments.
|
||
|
*/
|
||
|
do_action( 'edd_order_receipt_after_table', $order, $edd_receipt_args );
|
||
|
|
||
|
if ( ! filter_var( $edd_receipt_args['products'], FILTER_VALIDATE_BOOLEAN ) ) {
|
||
|
return;
|
||
|
}
|
||
|
$order_items = $order->get_items();
|
||
|
if ( empty( $order_items ) ) {
|
||
|
return;
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
<h3><?php echo esc_html( apply_filters( 'edd_payment_receipt_products_title', __( 'Products', 'easy-digital-downloads' ) ) ); ?></h3>
|
||
|
|
||
|
<table id="edd_purchase_receipt_products" class="edd-table">
|
||
|
<thead>
|
||
|
<th><?php esc_html_e( 'Name', 'easy-digital-downloads' ); ?></th>
|
||
|
<?php if ( edd_use_skus() ) { ?>
|
||
|
<th><?php esc_html_e( 'SKU', 'easy-digital-downloads' ); ?></th>
|
||
|
<?php } ?>
|
||
|
<?php if ( edd_item_quantities_enabled() ) : ?>
|
||
|
<th><?php esc_html_e( 'Quantity', 'easy-digital-downloads' ); ?></th>
|
||
|
<?php endif; ?>
|
||
|
<th><?php esc_html_e( 'Price', 'easy-digital-downloads' ); ?></th>
|
||
|
</thead>
|
||
|
|
||
|
<tbody>
|
||
|
<?php foreach ( $order_items as $key => $item ) : ?>
|
||
|
<?php
|
||
|
// Skip this item if we can't view it.
|
||
|
if ( ! apply_filters( 'edd_user_can_view_receipt_item', true, $item ) ) {
|
||
|
continue;
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
<tr>
|
||
|
<td>
|
||
|
<?php $download_files = edd_get_download_files( $item->product_id, $item->price_id ); ?>
|
||
|
|
||
|
<div class="edd_purchase_receipt_product_name">
|
||
|
<?php
|
||
|
echo esc_html( $item->product_name );
|
||
|
|
||
|
if ( ! empty( $item->status ) && 'complete' !== $item->status ) {
|
||
|
echo ' – ' . esc_html( edd_get_status_label( $item->status ) );
|
||
|
}
|
||
|
?>
|
||
|
</div>
|
||
|
<?php
|
||
|
$notes = edd_get_product_notes( $item->product_id );
|
||
|
if ( ! empty( $notes ) ) : ?>
|
||
|
<div class="edd_purchase_receipt_product_notes"><?php echo wp_kses_post( wpautop( $notes ) ); ?></div>
|
||
|
<?php endif; ?>
|
||
|
|
||
|
<?php if ( 'refunded' !== $item->status && edd_receipt_show_download_files( $item->product_id, $edd_receipt_args, $item ) ) : ?>
|
||
|
<ul class="edd_purchase_receipt_files">
|
||
|
<?php
|
||
|
if ( ! empty( $download_files ) && is_array( $download_files ) ) :
|
||
|
foreach ( $download_files as $filekey => $file ) :
|
||
|
?>
|
||
|
<li class="edd_download_file">
|
||
|
<a href="<?php echo esc_url( edd_get_download_file_url( $order->payment_key, $order->email, $filekey, $item->product_id, $item->price_id ) ); ?>" class="edd_download_file_link"><?php echo esc_html( edd_get_file_name( $file ) ); ?></a>
|
||
|
</li>
|
||
|
<?php
|
||
|
/**
|
||
|
* Fires at the end of the order receipt files list.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
* @param int $filekey Index of array of files returned by edd_get_download_files() that this download link is for.
|
||
|
* @param array $file The array of file information.
|
||
|
* @param int $item->product_id The product ID.
|
||
|
* @param int $order->id The order ID.
|
||
|
*/
|
||
|
do_action( 'edd_order_receipt_files', $filekey, $file, $item->product_id, $order->id );
|
||
|
endforeach;
|
||
|
elseif ( edd_is_bundled_product( $item->product_id ) ) :
|
||
|
$bundled_products = edd_get_bundled_products( $item->product_id, $item->price_id );
|
||
|
|
||
|
foreach ( $bundled_products as $bundle_item ) :
|
||
|
?>
|
||
|
|
||
|
<li class="edd_bundled_product">
|
||
|
<span class="edd_bundled_product_name"><?php echo esc_html( edd_get_bundle_item_title( $bundle_item ) ); ?></span>
|
||
|
<ul class="edd_bundled_product_files">
|
||
|
<?php
|
||
|
$bundle_item_id = edd_get_bundle_item_id( $bundle_item );
|
||
|
$bundle_item_price_id = edd_get_bundle_item_price_id( $bundle_item );
|
||
|
$download_files = edd_get_download_files( $bundle_item_id, $bundle_item_price_id );
|
||
|
|
||
|
if ( $download_files && is_array( $download_files ) ) :
|
||
|
foreach ( $download_files as $filekey => $file ) :
|
||
|
?>
|
||
|
<li class="edd_download_file">
|
||
|
<a href="<?php echo esc_url( edd_get_download_file_url( $order->payment_key, $order->email, $filekey, $bundle_item, $bundle_item_price_id ) ); ?>" class="edd_download_file_link"><?php echo esc_html( edd_get_file_name( $file ) ); ?></a>
|
||
|
</li>
|
||
|
<?php
|
||
|
/**
|
||
|
* Fires at the end of the order receipt bundled files list.
|
||
|
*
|
||
|
* @since 3.0
|
||
|
* @param int $filekey Index of array of files returned by edd_get_download_files() that this download link is for.
|
||
|
* @param array $file The array of file information.
|
||
|
* @param int $item->product_id The product ID.
|
||
|
* @param array $bundle_item The array of information about the bundled item.
|
||
|
* @param int $order->id The order ID.
|
||
|
*/
|
||
|
do_action( 'edd_order_receipt_bundle_files', $filekey, $file, $item->product_id, $bundle_item, $order->id );
|
||
|
endforeach;
|
||
|
else :
|
||
|
echo '<li>' . esc_html__( 'No downloadable files found for this bundled item.', 'easy-digital-downloads' ) . '</li>';
|
||
|
endif;
|
||
|
?>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<?php
|
||
|
endforeach;
|
||
|
|
||
|
else :
|
||
|
echo '<li>' . esc_html( apply_filters( 'edd_receipt_no_files_found_text', __( 'No downloadable files found.', 'easy-digital-downloads' ), $item->product_id ) ) . '</li>';
|
||
|
endif;
|
||
|
?>
|
||
|
</ul>
|
||
|
<?php endif; ?>
|
||
|
|
||
|
<?php
|
||
|
/**
|
||
|
* Allow extensions to extend the product cell.
|
||
|
* @since 3.0
|
||
|
* @param \EDD\Orders\Order_Item $item The current order item.
|
||
|
* @param \EDD\Orders\Order $order The current order object.
|
||
|
*/
|
||
|
do_action( 'edd_order_receipt_after_files', $item, $order );
|
||
|
?>
|
||
|
</td>
|
||
|
<?php if ( edd_use_skus() ) : ?>
|
||
|
<td><?php echo esc_html( edd_get_download_sku( $item->product_id ) ); ?></td>
|
||
|
<?php endif; ?>
|
||
|
<?php if ( edd_item_quantities_enabled() ) { ?>
|
||
|
<td><?php echo esc_html( $item->quantity ); ?></td>
|
||
|
<?php } ?>
|
||
|
<td>
|
||
|
<?php echo esc_html( edd_display_amount( $item->total, $order->currency ) ); ?>
|
||
|
</td>
|
||
|
</tr>
|
||
|
<?php endforeach; ?>
|
||
|
</tbody>
|
||
|
|
||
|
</table>
|