Merge pull request #13369 from woocommerce/fix-order-refund-methods

Fix order refund methods
This commit is contained in:
Mike Jolley 2017-02-27 18:02:22 +00:00 committed by GitHub
commit 8cc23eacdf
4 changed files with 42 additions and 21 deletions

View File

@ -1475,22 +1475,6 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
}
}
if ( $this->get_total() > 0 && $this->get_payment_method_title() ) {
$total_rows['payment_method'] = array(
'label' => __( 'Payment method:', 'woocommerce' ),
'value' => $this->get_payment_method_title(),
);
}
if ( $refunds = $this->get_refunds() ) {
foreach ( $refunds as $id => $refund ) {
$total_rows[ 'refund_' . $id ] = array(
'label' => $refund->get_reason() ? $refund->get_reason() : __( 'Refund', 'woocommerce' ) . ':',
'value' => wc_price( '-' . $refund->get_amount(), array( 'currency' => $this->get_currency() ) ),
);
}
}
$total_rows['order_total'] = array(
'label' => __( 'Total:', 'woocommerce' ),
'value' => $this->get_formatted_order_total( $tax_display ),

View File

@ -366,12 +366,15 @@ class WC_Emails {
/**
* Add customer details to email templates.
*
* @param mixed $order
* @param WC_Order $order
* @param bool $sent_to_admin (default: false)
* @param bool $plain_text (default: false)
* @return string
*/
public function customer_details( $order, $sent_to_admin = false, $plain_text = false ) {
if ( ! is_a( 'WC_Order', $order ) ) {
return;
}
$fields = array();
if ( $order->get_customer_note() ) {
@ -386,14 +389,14 @@ class WC_Emails {
'label' => __( 'Email address', 'woocommerce' ),
'value' => wptexturize( $order->get_billing_email() ),
);
}
}
if ( $order->get_billing_phone() ) {
if ( $order->get_billing_phone() ) {
$fields['billing_phone'] = array(
'label' => __( 'Phone', 'woocommerce' ),
'value' => wptexturize( $order->get_billing_phone() ),
);
}
}
$fields = array_filter( apply_filters( 'woocommerce_email_customer_details_fields', $fields, $sent_to_admin, $order ), array( $this, 'customer_detail_field_is_valid' ) );
@ -408,6 +411,9 @@ class WC_Emails {
* Get the email addresses.
*/
public function email_addresses( $order, $sent_to_admin = false, $plain_text = false ) {
if ( ! is_a( 'WC_Order', $order ) ) {
return;
}
if ( $plain_text ) {
wc_get_template( 'emails/plain/email-addresses.php', array( 'order' => $order ) );
} else {

View File

@ -1685,4 +1685,35 @@ class WC_Order extends WC_Abstract_Order {
public function get_remaining_refund_items() {
return absint( $this->get_item_count() - $this->get_item_count_refunded() );
}
/**
* Get totals for display on pages and in emails.
*
* @param mixed $tax_display
* @return array
*/
public function get_order_item_totals( $tax_display = '' ) {
$total_rows = parent::get_order_item_totals( $tax_display );
$total_row = array_pop( $total_rows );
if ( $this->get_total() > 0 && $this->get_payment_method_title() ) {
$total_rows['payment_method'] = array(
'label' => __( 'Payment method:', 'woocommerce' ),
'value' => $this->get_payment_method_title(),
);
}
if ( $refunds = $this->get_refunds() ) {
foreach ( $refunds as $id => $refund ) {
$total_rows[ 'refund_' . $id ] = array(
'label' => $refund->get_reason() ? $refund->get_reason() : __( 'Refund', 'woocommerce' ) . ':',
'value' => wc_price( '-' . $refund->get_amount(), array( 'currency' => $this->get_currency() ) ),
);
}
}
$total_rows['order_total'] = $total_row;
return apply_filters( 'woocommerce_get_order_item_totals', $total_rows, $this );
}
}

View File

@ -328,7 +328,7 @@ class WC_Structured_Data {
* @param bool $plain_text Plain text email (default: false).
*/
public function generate_order_data( $order, $sent_to_admin = false, $plain_text = false ) {
if ( $plain_text ) {
if ( $plain_text || ! is_a( $order, 'WC_Order' ) ) {
return;
}