369 lines
10 KiB
PHP
369 lines
10 KiB
PHP
<?php
|
|
/**
|
|
* Refund Details Sections
|
|
*
|
|
* @package EDD
|
|
* @subpackage Admin/Orders
|
|
* @copyright Copyright (c) 2021, Sandhills Development, LLC
|
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
|
* @since 3.0
|
|
*/
|
|
|
|
use EDD\Orders\Order;
|
|
|
|
// Exit if accessed directly
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/** Header ******************************************************************/
|
|
|
|
/**
|
|
* Outputs Refund header region/notice of Refund vs. Order.
|
|
*
|
|
* @since 3.0
|
|
*
|
|
* @param Order $refund Current Refund.
|
|
*/
|
|
function edd_refund_details_notice( $refund ) {
|
|
$order_url = edd_get_admin_url(
|
|
array(
|
|
'id' => absint( $refund->parent ),
|
|
'page' => 'edd-payment-history',
|
|
'view' => 'view-order-details',
|
|
)
|
|
);
|
|
?>
|
|
|
|
<div class="edit-post-editor-regions__header">
|
|
<div class="edit-post-header notice-warning" style="border-left-width: 4px; border-left-style: solid;">
|
|
|
|
<div class="edit-post-header__settings">
|
|
<a href="<?php echo esc_url( $order_url ); ?>" class="button button-secondary" autofocus>
|
|
<?php esc_html_e( 'View Original Order', 'easy-digital-downloads' ); ?>
|
|
</a>
|
|
</div>
|
|
|
|
<div class="edit-post-header__toolbar">
|
|
<span alt="f223" class="edd-help-tip dashicons dashicons-editor-help" title="<?php _e( 'A refund is a read-only record to help balance your store's books.', 'easy-digital-downloads' ); ?>"></span>
|
|
<?php esc_html_e( 'You are viewing a refund record.', 'easy-digital-downloads' ); ?>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
|
|
/** Main **********************************************************************/
|
|
|
|
/**
|
|
* Outputs the Refund Items box.
|
|
*
|
|
* @since 3.0
|
|
*
|
|
* @param Order $refund Current Refund.
|
|
*/
|
|
function edd_refund_details_items( $refund ) {
|
|
$_items = array();
|
|
$_adjustments = array();
|
|
|
|
$items = edd_get_order_items( array(
|
|
'order_id' => $refund->id,
|
|
'number' => 999,
|
|
) );
|
|
|
|
foreach ( $items as $item ) {
|
|
$item_adjustments = array();
|
|
|
|
$adjustments = edd_get_order_adjustments( array(
|
|
'object_id' => $item->id,
|
|
'number' => 999,
|
|
'object_type' => 'order_item',
|
|
'type' => array(
|
|
'discount',
|
|
'credit',
|
|
'fee',
|
|
),
|
|
) );
|
|
|
|
foreach ( $adjustments as $adjustment ) {
|
|
// @todo edd_get_order_adjustment_to_json()?
|
|
$adjustment_args = array(
|
|
'id' => esc_html( $adjustment->id ),
|
|
'objectId' => esc_html( $adjustment->object_id ),
|
|
'objectType' => esc_html( $adjustment->object_type ),
|
|
'typeId' => esc_html( $adjustment->type_id ),
|
|
'type' => esc_html( $adjustment->type ),
|
|
'description' => esc_html( $adjustment->description ),
|
|
'subtotal' => esc_html( $adjustment->subtotal ),
|
|
'tax' => esc_html( $adjustment->tax ),
|
|
'total' => esc_html( $adjustment->total ),
|
|
'dateCreated' => esc_html( $adjustment->date_created ),
|
|
'dateModified' => esc_html( $adjustment->date_modified ),
|
|
'uuid' => esc_html( $adjustment->uuid ),
|
|
);
|
|
|
|
$item_adjustments[] = $adjustment_args;
|
|
$_adjustments[] = $adjustment_args;
|
|
}
|
|
|
|
// @todo edd_get_order_item_to_json()?
|
|
$_items[] = array(
|
|
'id' => esc_html( $item->id ),
|
|
'orderId' => esc_html( $item->order_id ),
|
|
'productId' => esc_html( $item->product_id ),
|
|
'productName' => esc_html( $item->get_order_item_name() ),
|
|
'priceId' => esc_html( $item->price_id ),
|
|
'cartIndex' => esc_html( $item->cart_index ),
|
|
'type' => esc_html( $item->type ),
|
|
'status' => esc_html( $item->status ),
|
|
'quantity' => esc_html( $item->quantity ),
|
|
'amount' => esc_html( $item->amount ),
|
|
'subtotal' => esc_html( $item->subtotal ),
|
|
'discount' => esc_html( $item->discount ),
|
|
'tax' => esc_html( $item->tax ),
|
|
'total' => esc_html( $item->total ),
|
|
'dateCreated' => esc_html( $item->date_created ),
|
|
'dateModified' => esc_html( $item->date_modified ),
|
|
'uuid' => esc_html( $item->uuid ),
|
|
);
|
|
}
|
|
|
|
$adjustments = edd_get_order_adjustments( array(
|
|
'object_id' => $refund->id,
|
|
'number' => 999,
|
|
'object_type' => 'order',
|
|
'type' => array(
|
|
'discount',
|
|
'credit',
|
|
'fee',
|
|
),
|
|
) );
|
|
|
|
foreach ( $adjustments as $adjustment ) {
|
|
// @todo edd_get_order_adjustment_to_json()?
|
|
$_adjustments[] = array(
|
|
'id' => esc_html( $adjustment->id ),
|
|
'objectId' => esc_html( $adjustment->object_id ),
|
|
'objectType' => esc_html( $adjustment->object_type ),
|
|
'typeId' => esc_html( $adjustment->type_id ),
|
|
'type' => esc_html( $adjustment->type ),
|
|
'description' => esc_html( $adjustment->description ),
|
|
'subtotal' => esc_html( $adjustment->subtotal ),
|
|
'tax' => esc_html( $adjustment->tax ),
|
|
'total' => esc_html( $adjustment->total ),
|
|
'dateCreated' => esc_html( $adjustment->date_created ),
|
|
'dateModified' => esc_html( $adjustment->date_modified ),
|
|
'uuid' => esc_html( $adjustment->uuid ),
|
|
);
|
|
}
|
|
|
|
$has_tax = 'none';
|
|
$tax_rate = $refund->id ? $refund->get_tax_rate() : false;
|
|
$location = array(
|
|
'rate' => $tax_rate,
|
|
'country' => '',
|
|
'region' => '',
|
|
);
|
|
if ( $tax_rate ) {
|
|
$has_tax = $location;
|
|
$has_tax['rate'] = $tax_rate;
|
|
if ( $refund->tax_rate_id ) {
|
|
$tax_rate_object = $refund->get_tax_rate_object();
|
|
if ( $tax_rate_object ) {
|
|
$has_tax['country'] = $tax_rate_object->name;
|
|
$has_tax['region'] = $tax_rate_object->description;
|
|
}
|
|
}
|
|
}
|
|
|
|
wp_localize_script(
|
|
'edd-admin-orders',
|
|
'eddAdminOrderOverview',
|
|
array(
|
|
'items' => $_items,
|
|
'adjustments' => $_adjustments,
|
|
'refunds' => array(),
|
|
'isAdding' => false,
|
|
'isRefund' => true,
|
|
'hasQuantity' => true,
|
|
'hasTax' => $has_tax,
|
|
'order' => array(
|
|
'currency' => $refund->currency,
|
|
'currencySymbol' => html_entity_decode( edd_currency_symbol( $refund->currency ) ),
|
|
'subtotal' => $refund->subtotal,
|
|
'discount' => $refund->discount,
|
|
'tax' => $refund->tax,
|
|
'total' => $refund->total,
|
|
),
|
|
)
|
|
);
|
|
|
|
$templates = array(
|
|
'no-items',
|
|
'subtotal',
|
|
'tax',
|
|
'total',
|
|
'item',
|
|
'adjustment',
|
|
'adjustment-discount',
|
|
);
|
|
|
|
foreach ( $templates as $tmpl ) {
|
|
echo '<script type="text/html" id="tmpl-edd-admin-order-' . esc_attr( $tmpl ) . '">';
|
|
require_once EDD_PLUGIN_DIR . 'includes/admin/views/tmpl-order-' . $tmpl . '.php';
|
|
echo '</script>';
|
|
}
|
|
?>
|
|
|
|
<div id="edd-order-overview" class="postbox edd-edit-purchase-element edd-order-overview">
|
|
<table id="edd-order-overview-summary" class="widefat wp-list-table edd-order-overview-summary edd-order-overview-summary--refund">
|
|
<thead>
|
|
<tr>
|
|
<th class="column-name column-primary"><?php echo esc_html( edd_get_label_singular() ); ?></th>
|
|
<th class="column-amount"><?php esc_html_e( 'Unit Price', 'easy-digital-downloads' ); ?></th>
|
|
<th class="column-quantity"><?php esc_html_e( 'Quantity', 'easy-digital-downloads' ); ?></th>
|
|
<th class="column-subtotal column-right"><?php esc_html_e( 'Amount', 'easy-digital-downloads' ); ?></th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Outputs Refund Notes box.
|
|
*
|
|
* @since 3.0
|
|
*
|
|
* @param Order $refund Current Refund.
|
|
*/
|
|
function edd_refund_details_notes( $refund ) {
|
|
?>
|
|
|
|
<div id="edd-order-items" class="postbox edd-edit-purchase-element">
|
|
<h2 class="hndle">
|
|
<?php esc_html_e( 'Refund Notes', 'easy-digital-downloads' ); ?>
|
|
</h2>
|
|
|
|
<div class="inside">
|
|
<?php edd_order_details_notes( $refund ); ?>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Outputs "Refund Details" box.
|
|
*
|
|
* @since 3.0
|
|
*
|
|
* @param Order $refund Current Refund.
|
|
*/
|
|
function edd_refund_details_attributes( $refund ) {
|
|
$refund_date = edd_get_edd_timezone_equivalent_date_from_utc( EDD()->utils->date( $refund->date_created, 'utc', true ) );
|
|
|
|
$trash_url = wp_nonce_url(
|
|
edd_get_admin_url( array(
|
|
'edd-action' => 'trash_order',
|
|
'purchase_id' => absint( $refund->id ),
|
|
'order_type' => 'refund',
|
|
'page' => 'edd-payment-history',
|
|
) ),
|
|
'edd_payment_nonce'
|
|
);
|
|
|
|
$order_url = edd_get_admin_url(
|
|
array(
|
|
'id' => absint( $refund->parent ),
|
|
'page' => 'edd-payment-history',
|
|
'view' => 'view-order-details',
|
|
)
|
|
);
|
|
|
|
$order = edd_get_order( $refund->parent );
|
|
?>
|
|
|
|
<div class="postbox">
|
|
<h2 class="hndle">
|
|
<?php esc_html_e( 'Refund Attributes', 'easy-digital-downloads' ); ?>
|
|
</h2>
|
|
|
|
<div class="edd-admin-box-inside">
|
|
<time datetime="<?php echo esc_attr( EDD()->utils->date( $refund->date_created, null, true )->toDateTimeString() ); ?>" style="line-height: normal">
|
|
<?php echo edd_date_i18n( $refund->date_created, 'M. d, Y' ) . '<br />' . edd_date_i18n( strtotime( $refund->date_created ), 'H:i' ); ?> <?php echo esc_html( edd_get_timezone_abbr() ); ?>
|
|
</time>
|
|
|
|
<br /><br />
|
|
|
|
<a href="<?php echo esc_url( $trash_url ); ?>" class="edd-delete-payment edd-delete">
|
|
<?php esc_html_e( 'Move to Trash', 'easy-digital-downloads' ); ?>
|
|
</a>
|
|
</div>
|
|
|
|
<div class="edd-admin-box-inside edd-admin-box-inside--row">
|
|
<div class="edd-form-group">
|
|
<span class="edd-form-group__label">
|
|
<?php esc_html_e( 'Original Order', 'easy-digital-downloads' ); ?>
|
|
</span>
|
|
<div class="edd-form-group__control">
|
|
<a href="<?php echo esc_url( $order_url ); ?>"><?php echo esc_html( $order->number ); ?></a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Outputs related Refunds.
|
|
*
|
|
* @since 3.0
|
|
*
|
|
* @param Order $refund
|
|
*/
|
|
function edd_refund_details_related_refunds( $refund ) {
|
|
$refunds = array_filter(
|
|
edd_get_order_refunds( $refund->parent ),
|
|
function( $related_refund ) use ( $refund ) {
|
|
return $related_refund->id !== $refund->id;
|
|
}
|
|
);
|
|
|
|
if ( empty( $refunds ) ) {
|
|
return;
|
|
}
|
|
?>
|
|
|
|
<div class="postbox edd-order-data">
|
|
<h2 class="hndle">
|
|
<?php esc_html_e( 'Related Refunds', 'easy-digital-downloads' ); ?>
|
|
</h2>
|
|
|
|
<?php
|
|
foreach( $refunds as $refund ) :
|
|
$refund_url = edd_get_admin_url( array(
|
|
'page' => 'edd-payment-history',
|
|
'view' => 'view-refund-details',
|
|
'id' => absint( $refund->id ),
|
|
) );
|
|
?>
|
|
<div class="edd-admin-box-inside">
|
|
<div class="edd-form-group">
|
|
<a href="<?php echo esc_url( $refund_url ); ?>" class="edd-form-group__label">
|
|
<?php echo esc_html( $refund->number ); ?>
|
|
</a>
|
|
<div class="edd-form-group__control">
|
|
<time datetime="<?php echo esc_attr( EDD()->utils->date( $refund->date_created, null, true )->toDateTimeString() ); ?>" style="line-height: normal">
|
|
<?php echo edd_date_i18n( $refund->date_created, 'M. d, Y' ) . '<br />' . edd_date_i18n( strtotime( $refund->date_created ), 'H:i' ); ?> <?php echo esc_html( edd_get_timezone_abbr() ); ?>
|
|
</time>
|
|
</div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
|
|
<?php
|
|
}
|