本文整理汇总了PHP中WC_Subscriptions::format_total方法的典型用法代码示例。如果您正苦于以下问题:PHP WC_Subscriptions::format_total方法的具体用法?PHP WC_Subscriptions::format_total怎么用?PHP WC_Subscriptions::format_total使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WC_Subscriptions
的用法示例。
在下文中一共展示了WC_Subscriptions::format_total方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: prefill_order_item_meta
/**
* Add subscription related order item meta when a subscription product is added as an item to an order via Ajax.
*
* @param item_id int An order_item_id as returned by the insert statement of @see woocommerce_add_order_item()
* @since 1.2.5
* @version 1.4
* @return void
*/
public static function prefill_order_item_meta($item, $item_id)
{
$order_id = $_POST['order_id'];
$product_id = $item['variation_id'] ? $item['variation_id'] : $item['product_id'];
if ($item_id && WC_Subscriptions_Product::is_subscription($product_id)) {
$order = new WC_Order($order_id);
$_product = get_product($product_id);
$recurring_amount = $_product->get_price_excluding_tax();
$sign_up_fee = $_product->get_sign_up_fee_excluding_tax();
$free_trial_length = WC_Subscriptions_Product::get_trial_length($product_id);
woocommerce_add_order_item_meta($item_id, '_subscription_period', WC_Subscriptions_Product::get_period($product_id));
woocommerce_add_order_item_meta($item_id, '_subscription_interval', WC_Subscriptions_Product::get_interval($product_id));
woocommerce_add_order_item_meta($item_id, '_subscription_length', WC_Subscriptions_Product::get_length($product_id));
woocommerce_add_order_item_meta($item_id, '_subscription_trial_length', $free_trial_length);
woocommerce_add_order_item_meta($item_id, '_subscription_trial_period', WC_Subscriptions_Product::get_trial_period($product_id));
woocommerce_add_order_item_meta($item_id, '_subscription_recurring_amount', $recurring_amount);
woocommerce_add_order_item_meta($item_id, '_subscription_sign_up_fee', $sign_up_fee);
woocommerce_add_order_item_meta($item_id, '_recurring_line_total', $recurring_amount);
woocommerce_add_order_item_meta($item_id, '_recurring_line_tax', 0);
woocommerce_add_order_item_meta($item_id, '_recurring_line_subtotal', $recurring_amount);
woocommerce_add_order_item_meta($item_id, '_recurring_line_subtotal_tax', 0);
WC_Subscriptions_Manager::create_pending_subscription_for_order($order_id, $item['product_id']);
switch ($order->status) {
case 'completed':
case 'processing':
woocommerce_update_order_item_meta($item_id, '_subscription_status', 'active');
break;
case 'on-hold':
woocommerce_update_order_item_meta($item_id, '_subscription_status', 'on-hold');
break;
case 'failed':
case 'cancelled':
woocommerce_add_order_item_meta($item_id, '_subscription_status', 'cancelled');
break;
}
// We need to override the line totals to $0 when there is a free trial
if ($free_trial_length > 0 || $sign_up_fee > 0) {
$line_total_keys = array('line_subtotal', 'line_total');
// Make sure sign up fees are included in the total (or $0 if no sign up fee and a free trial)
foreach ($line_total_keys as $line_total_key) {
$item[$line_total_key] = $sign_up_fee;
}
// If there is no free trial, make sure line totals include sign up fee and recurring fees
if (0 == $free_trial_length) {
foreach ($line_total_keys as $line_total_key) {
$item[$line_total_key] += $recurring_amount;
}
}
foreach ($line_total_keys as $line_total_key) {
$item[$line_total_key] = WC_Subscriptions::format_total($item[$line_total_key], 2);
}
} else {
$item['line_subtotal'] = $recurring_amount;
$item['line_total'] = $recurring_amount;
}
woocommerce_update_order_item_meta($item_id, '_line_subtotal', $item['line_subtotal']);
woocommerce_update_order_item_meta($item_id, '_line_total', $item['line_total']);
}
return $item;
}
示例2: add_order_meta
/**
* When a new order is inserted, add subscriptions related order meta.
*
* @since 1.0
*/
public static function add_order_meta($order_id, $posted)
{
global $woocommerce;
if (!WC_Subscriptions_Cart::cart_contains_subscription_renewal('child') && WC_Subscriptions_Order::order_contains_subscription($order_id)) {
// This works because the 'woocommerce_add_order_item_meta' runs before the 'woocommerce_checkout_update_order_meta' hook
// Set the recurring totals so totals display correctly on order page
update_post_meta($order_id, '_order_recurring_discount_cart', WC_Subscriptions_Cart::get_recurring_discount_cart());
update_post_meta($order_id, '_order_recurring_discount_cart_tax', WC_Subscriptions_Cart::get_recurring_discount_cart_tax());
update_post_meta($order_id, '_order_recurring_discount_total', WC_Subscriptions_Cart::get_recurring_discount_total());
update_post_meta($order_id, '_order_recurring_shipping_tax_total', WC_Subscriptions_Cart::get_recurring_shipping_tax_total());
update_post_meta($order_id, '_order_recurring_shipping_total', WC_Subscriptions_Cart::get_recurring_shipping_total());
update_post_meta($order_id, '_order_recurring_tax_total', WC_Subscriptions_Cart::get_recurring_total_tax());
update_post_meta($order_id, '_order_recurring_total', WC_Subscriptions_Cart::get_recurring_total());
// Set the recurring payment method - it starts out the same as the original by may change later
update_post_meta($order_id, '_recurring_payment_method', get_post_meta($order_id, '_payment_method', true));
update_post_meta($order_id, '_recurring_payment_method_title', get_post_meta($order_id, '_payment_method_title', true));
$order = new WC_Order($order_id);
$order_fees = $order->get_fees();
// the fee order items have already been set, we just need to to add the recurring total meta
$cart_fees = $woocommerce->cart->get_fees();
foreach ($order->get_fees() as $item_id => $order_fee) {
// Find the matching fee in the cart
foreach ($cart_fees as $fee_index => $cart_fee) {
if (sanitize_title($order_fee['name']) == $cart_fee->id) {
woocommerce_add_order_item_meta($item_id, '_recurring_line_total', wc_format_decimal($cart_fee->recurring_amount));
woocommerce_add_order_item_meta($item_id, '_recurring_line_tax', wc_format_decimal($cart_fee->recurring_tax));
unset($cart_fees[$fee_index]);
break;
}
}
}
// Get recurring taxes into same format as _order_taxes
$order_recurring_taxes = array();
foreach (WC_Subscriptions_Cart::get_recurring_taxes() as $tax_key => $tax_amount) {
$item_id = woocommerce_add_order_item($order_id, array('order_item_name' => WC_Tax::get_rate_code($tax_key), 'order_item_type' => 'recurring_tax'));
if ($item_id) {
wc_add_order_item_meta($item_id, 'rate_id', $tax_key);
wc_add_order_item_meta($item_id, 'label', WC_Tax::get_rate_label($tax_key));
wc_add_order_item_meta($item_id, 'compound', absint(WC_Tax::is_compound($tax_key) ? 1 : 0));
wc_add_order_item_meta($item_id, 'tax_amount', wc_format_decimal(isset(WC()->cart->recurring_taxes[$tax_key]) ? WC()->cart->recurring_taxes[$tax_key] : 0));
wc_add_order_item_meta($item_id, 'shipping_tax_amount', wc_format_decimal(isset(WC()->cart->recurring_shipping_taxes[$tax_key]) ? WC()->cart->recurring_shipping_taxes[$tax_key] : 0));
}
}
$payment_gateways = $woocommerce->payment_gateways->payment_gateways();
if ('yes' == get_option(WC_Subscriptions_Admin::$option_prefix . '_turn_off_automatic_payments', 'no')) {
update_post_meta($order_id, '_wcs_requires_manual_renewal', 'true');
} elseif (isset($payment_gateways[$posted['payment_method']]) && !$payment_gateways[$posted['payment_method']]->supports('subscriptions')) {
update_post_meta($order_id, '_wcs_requires_manual_renewal', 'true');
}
$cart_item = WC_Subscriptions_Cart::cart_contains_subscription_renewal();
if (isset($cart_item['subscription_renewal']) && 'parent' == $cart_item['subscription_renewal']['role']) {
update_post_meta($order_id, '_original_order', $cart_item['subscription_renewal']['original_order']);
}
// WC 2.1+
if (!WC_Subscriptions::is_woocommerce_pre('2.1')) {
// Recurring coupons
if ($applied_coupons = $woocommerce->cart->get_coupons()) {
foreach ($applied_coupons as $code => $coupon) {
if (!isset($woocommerce->cart->recurring_coupon_discount_amounts[$code])) {
continue;
}
$item_id = woocommerce_add_order_item($order_id, array('order_item_name' => $code, 'order_item_type' => 'recurring_coupon'));
// Add line item meta
if ($item_id) {
woocommerce_add_order_item_meta($item_id, 'discount_amount', isset($woocommerce->cart->recurring_coupon_discount_amounts[$code]) ? $woocommerce->cart->recurring_coupon_discount_amounts[$code] : 0);
}
}
}
// Add recurring shipping order items
if (WC_Subscriptions_Cart::cart_contains_subscriptions_needing_shipping()) {
$packages = $woocommerce->shipping->get_packages();
$checkout = $woocommerce->checkout();
foreach ($packages as $i => $package) {
if (isset($package['rates'][$checkout->shipping_methods[$i]])) {
$method = $package['rates'][$checkout->shipping_methods[$i]];
$item_id = woocommerce_add_order_item($order_id, array('order_item_name' => $method->label, 'order_item_type' => 'recurring_shipping'));
if ($item_id) {
woocommerce_add_order_item_meta($item_id, 'method_id', $method->id);
woocommerce_add_order_item_meta($item_id, 'cost', WC_Subscriptions::format_total($method->cost));
woocommerce_add_order_item_meta($item_id, 'taxes', array_map('wc_format_decimal', $method->taxes));
do_action('woocommerce_subscriptions_add_recurring_shipping_order_item', $order_id, $item_id, $i);
}
}
}
}
// Remove shipping on original order if it was added but is not required
if (!WC_Subscriptions_Cart::charge_shipping_up_front()) {
foreach ($order->get_shipping_methods() as $order_item_id => $shipping_method) {
woocommerce_update_order_item_meta($order_item_id, 'cost', WC_Subscriptions::format_total(0));
}
}
} else {
update_post_meta($order_id, '_recurring_shipping_method', get_post_meta($order_id, '_shipping_method', true), true);
update_post_meta($order_id, '_recurring_shipping_method_title', get_post_meta($order_id, '_shipping_method_title', true), true);
}
//.........这里部分代码省略.........
示例3: generate_renewal_order
//.........这里部分代码省略.........
if (is_object($cart_item['data'])) {
woocommerce_update_order_item_meta($recurring_item_id, '_tax_class', $cart_item['data']->get_tax_class());
}
}
$cart_items = $woocommerce->cart->get_cart();
}
$item_meta = new WC_Order_Item_Meta($order_item['item_meta']);
// Remove recurring line items and set item totals based on recurring line totals
foreach ($item_meta->meta as $meta_key => $meta) {
// $meta is an array, so the item needs to be extracted from $meta[0] (just like order meta on a WC Order)
$meta_value = $meta[0];
if (false === $args['checkout_renewal']) {
// Already set earlier
// Map line item totals based on recurring line totals
switch ($meta_key) {
case '_recurring_line_total':
woocommerce_delete_order_item_meta($recurring_item_id, '_line_total');
woocommerce_update_order_item_meta($recurring_item_id, '_line_total', woocommerce_format_decimal($failed_payment_multiplier * $meta_value));
break;
case '_recurring_line_tax':
woocommerce_delete_order_item_meta($recurring_item_id, '_line_tax');
woocommerce_update_order_item_meta($recurring_item_id, '_line_tax', woocommerce_format_decimal($failed_payment_multiplier * $meta_value));
break;
case '_recurring_line_subtotal':
woocommerce_delete_order_item_meta($recurring_item_id, '_line_subtotal');
woocommerce_update_order_item_meta($recurring_item_id, '_line_subtotal', woocommerce_format_decimal($failed_payment_multiplier * $meta_value));
break;
case '_recurring_line_subtotal_tax':
woocommerce_delete_order_item_meta($recurring_item_id, '_line_subtotal_tax');
woocommerce_update_order_item_meta($recurring_item_id, '_line_subtotal_tax', woocommerce_format_decimal($failed_payment_multiplier * $meta_value));
break;
default:
break;
}
}
// Copy over line item meta data, with some parent/child role based exceptions for recurring amounts
$copy_to_renewal_item = true;
switch ($meta_key) {
case '_recurring_line_total':
case '_recurring_line_tax':
case '_recurring_line_subtotal':
case '_recurring_line_subtotal_tax':
case '_subscription_recurring_amount':
case '_subscription_sign_up_fee':
case '_subscription_period':
case '_subscription_interval':
case '_subscription_length':
case '_subscription_trial_period':
case '_subscription_end_date':
case '_subscription_expiry_date':
case '_subscription_start_date':
case '_subscription_status':
case '_subscription_completed_payments':
if ('child' == $args['new_order_role']) {
$copy_to_renewal_item = false;
}
break;
case '_subscription_trial_length':
// We never want to duplicate free trials on renewal orders
$copy_to_renewal_item = false;
break;
case '_subscription_suspension_count':
// We want to reset some values for the new order
// We want to reset some values for the new order
case '_subscription_trial_expiry_date':
case '_subscription_failed_payments':
$copy_to_renewal_item = false;
$meta_value = 0;
break;
default:
break;
}
// Copy existing item over to new recurring order item
if ($copy_to_renewal_item) {
woocommerce_add_order_item_meta($recurring_item_id, $meta_key, $meta_value);
}
}
}
if (false == $args['checkout_renewal']) {
// Add fees
foreach ($original_order->get_fees() as $item_id => $order_fee) {
if (!isset($order_fee['recurring_line_total'])) {
continue;
}
$item_id = woocommerce_add_order_item($renewal_order_id, array('order_item_name' => $order_fee['name'], 'order_item_type' => 'fee'));
woocommerce_add_order_item_meta($item_id, '_tax_class', $order_fee['tax_class']);
woocommerce_add_order_item_meta($item_id, '_line_total', WC_Subscriptions::format_total($order_fee['recurring_line_total']));
woocommerce_add_order_item_meta($item_id, '_line_tax', WC_Subscriptions::format_total($order_fee['recurring_line_tax']));
}
}
// Keep a record of the original order's ID on the renewal order
update_post_meta($renewal_order_id, '_original_order', $original_order->id, true);
$renewal_order = new WC_Order($renewal_order_id);
if ('parent' == $args['new_order_role']) {
WC_Subscriptions_Manager::process_subscriptions_on_checkout($renewal_order_id);
$original_order->add_order_note(sprintf(__('Order superseded by Renewal Order %s.', 'woocommerce-subscriptions'), $renewal_order->get_order_number()));
}
do_action('woocommerce_subscriptions_renewal_order_created', $renewal_order, $original_order, $product_id, $args['new_order_role']);
return apply_filters('woocommerce_subscriptions_renewal_order_id', $renewal_order_id, $original_order, $product_id, $args['new_order_role']);
}
开发者ID:jgabrielfreitas,项目名称:MultipagosTestesAPP,代码行数:101,代码来源:class-wc-subscriptions-renewal-order.php
示例4: pre_process_shop_order_meta
//.........这里部分代码省略.........
}
// Save tax rows
$total_tax = 0;
$total_shipping_tax = 0;
if (isset($_POST['recurring_order_taxes_id'])) {
// WC 2.0+
$tax_keys = array('recurring_order_taxes_id', 'recurring_order_taxes_rate_id', 'recurring_order_taxes_amount', 'recurring_order_taxes_shipping_amount');
foreach ($tax_keys as $tax_key) {
${$tax_key} = isset($_POST[$tax_key]) ? $_POST[$tax_key] : array();
}
foreach ($recurring_order_taxes_id as $item_id => $value) {
$item_id = absint($item_id);
$rate_id = absint($recurring_order_taxes_rate_id[$item_id]);
if ($rate_id) {
$rate = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}woocommerce_tax_rates WHERE tax_rate_id = %s", $rate_id));
$label = $rate->tax_rate_name ? $rate->tax_rate_name : $woocommerce->countries->tax_or_vat();
$compound = $rate->tax_rate_compound ? 1 : 0;
$code = array();
$code[] = $rate->tax_rate_country;
$code[] = $rate->tax_rate_state;
$code[] = $rate->tax_rate_name ? $rate->tax_rate_name : 'TAX';
$code[] = absint($rate->tax_rate_priority);
$code = strtoupper(implode('-', array_filter($code)));
} else {
$code = '';
$label = $woocommerce->countries->tax_or_vat();
}
$wpdb->update($wpdb->prefix . "woocommerce_order_items", array('order_item_name' => woocommerce_clean($code)), array('order_item_id' => $item_id), array('%s'), array('%d'));
woocommerce_update_order_item_meta($item_id, 'rate_id', $rate_id);
woocommerce_update_order_item_meta($item_id, 'label', $label);
woocommerce_update_order_item_meta($item_id, 'compound', $compound);
if (isset($recurring_order_taxes_amount[$item_id])) {
woocommerce_update_order_item_meta($item_id, 'tax_amount', woocommerce_clean($recurring_order_taxes_amount[$item_id]));
$total_tax += WC_Subscriptions::format_total($recurring_order_taxes_amount[$item_id]);
}
if (isset($recurring_order_taxes_shipping_amount[$item_id])) {
woocommerce_update_order_item_meta($item_id, 'shipping_tax_amount', woocommerce_clean($recurring_order_taxes_shipping_amount[$item_id]));
$total_shipping_tax += WC_Subscriptions::format_total($recurring_order_taxes_shipping_amount[$item_id]);
}
}
}
if (!isset($_POST['_order_recurring_tax_total']) && function_exists('wc_round_tax_total')) {
// WC 2.1+
update_post_meta($post_id, '_order_recurring_tax_total', wc_round_tax_total($total_tax));
}
if (!isset($_POST['_order_recurring_shipping_tax_total']) && function_exists('wc_round_tax_total')) {
// WC 2.1+
update_post_meta($post_id, '_order_recurring_shipping_tax_total', wc_round_tax_total($total_shipping_tax));
}
// And that shipping methods are updated as required
if (isset($_POST['_recurring_shipping_method']) || isset($_POST['_recurring_shipping_method_title'])) {
// WC < 2.1
update_post_meta($post_id, '_recurring_shipping_method', stripslashes($_POST['_recurring_shipping_method']));
update_post_meta($post_id, '_recurring_shipping_method_title', stripslashes($_POST['_recurring_shipping_method_title']));
}
// Shipping Rows
$recurring_order_shipping = 0;
if (isset($_POST['recurring_shipping_method_id'])) {
// WC 2.1+
$get_values = array('recurring_shipping_method_id', 'recurring_shipping_method_title', 'recurring_shipping_method', 'recurring_shipping_cost');
foreach ($get_values as $value) {
${$value} = isset($_POST[$value]) ? $_POST[$value] : array();
}
foreach ($recurring_shipping_method_id as $item_id => $value) {
if ('new' == $item_id) {
foreach ($value as $new_key => $new_value) {
示例5: upgrade_database_to_1_2
//.........这里部分代码省略.........
}
// Set recurring taxes to order taxes, if using WC 2.0, this will be migrated to the new format in @see self::upgrade_to_latest_wc()
update_post_meta($order_id, '_order_recurring_taxes', $order_taxes);
$sign_up_fee_taxes = WC_Subscriptions_Order::get_meta($order, '_sign_up_fee_taxes', array());
// Update order taxes to include sign up fee taxes
foreach ($sign_up_fee_taxes as $index => $sign_up_tax) {
if ($has_trial && $sign_up_fee_total > 0) {
// Order taxes need to be set to the same as the sign up fee taxes
if (isset($sign_up_tax['cart_tax']) && $sign_up_tax['cart_tax'] > 0) {
$order_taxes[$index]['cart_tax'] = $sign_up_tax['cart_tax'];
}
} elseif (!$has_trial && $sign_up_fee_total > 0) {
// Sign up fee taxes need to be added to order taxes
if (isset($sign_up_tax['cart_tax']) && $sign_up_tax['cart_tax'] > 0) {
$order_taxes[$index]['cart_tax'] += $sign_up_tax['cart_tax'];
}
}
}
if (false == self::$is_wc_version_2) {
// Doing it right: updated Subs *before* updating WooCommerce, the WooCommerce updater will take care of data migration
update_post_meta($order_id, '_order_taxes', $order_taxes);
} else {
// Doing it wrong: updated Subs *after* updating WooCommerce, need to store in WC2.0 tax structure
$index = 0;
$new_order_taxes = $order->get_taxes();
foreach ($new_order_taxes as $item_id => $order_tax) {
$index = $index + 1;
if (!isset($order_taxes[$index]['label']) || !isset($order_taxes[$index]['cart_tax']) || !isset($order_taxes[$index]['shipping_tax'])) {
continue;
}
// Add line item meta
if ($item_id) {
woocommerce_update_order_item_meta($item_id, 'compound', absint(isset($order_taxes[$index]['compound']) ? $order_taxes[$index]['compound'] : 0));
woocommerce_update_order_item_meta($item_id, 'tax_amount', WC_Subscriptions::format_total($order_taxes[$index]['cart_tax']));
woocommerce_update_order_item_meta($item_id, 'shipping_tax_amount', WC_Subscriptions::format_total($order_taxes[$index]['shipping_tax']));
}
}
}
/* Upgrade each order item to use new Item Meta schema */
$order_subscription_periods = WC_Subscriptions_Order::get_meta($order_id, '_order_subscription_periods', array());
$order_subscription_intervals = WC_Subscriptions_Order::get_meta($order_id, '_order_subscription_intervals', array());
$order_subscription_lengths = WC_Subscriptions_Order::get_meta($order_id, '_order_subscription_lengths', array());
$order_subscription_trial_lengths = WC_Subscriptions_Order::get_meta($order_id, '_order_subscription_trial_lengths', array());
$order_items = $order->get_items();
foreach ($order_items as $index => $order_item) {
$product_id = WC_Subscriptions_Order::get_items_product_id($order_item);
if (WC_Subscriptions::is_woocommerce_pre('2.4')) {
$item_meta = new WC_Order_Item_Meta($order_item['item_meta']);
} else {
$item_meta = new WC_Order_Item_Meta($order_item);
}
$subscription_interval = isset($order_subscription_intervals[$product_id]) ? $order_subscription_intervals[$product_id] : 1;
$subscription_length = isset($order_subscription_lengths[$product_id]) ? $order_subscription_lengths[$product_id] : 0;
$subscription_trial_length = isset($order_subscription_trial_lengths[$product_id]) ? $order_subscription_trial_lengths[$product_id] : 0;
$subscription_sign_up_fee = WC_Subscriptions_Order::get_meta($order, '_cart_contents_sign_up_fee_total', 0);
if ($sign_up_fee_total > 0) {
// Discounted price * Quantity
$sign_up_fee_line_total = WC_Subscriptions_Order::get_meta($order, '_cart_contents_sign_up_fee_total', 0);
$sign_up_fee_line_tax = WC_Subscriptions_Order::get_meta($order, '_sign_up_fee_tax_total', 0);
// Base price * Quantity
$sign_up_fee_line_subtotal = WC_Subscriptions_Order::get_meta($order, '_cart_contents_sign_up_fee_total', 0) + WC_Subscriptions_Order::get_meta($order, '_sign_up_fee_discount_cart', 0);
$sign_up_fee_propotion = $sign_up_fee_line_total > 0 ? $sign_up_fee_line_subtotal / $sign_up_fee_line_total : 0;
$sign_up_fee_line_subtotal_tax = WC_Subscriptions_Manager::get_amount_from_proportion(WC_Subscriptions_Order::get_meta($order, '_sign_up_fee_tax_total', 0), $sign_up_fee_propotion);
if ($has_trial) {
// Set line item totals equal to sign up fee totals
$order_item['line_subtotal'] = $sign_up_fee_line_subtotal;
示例6: generate_renewal_order
//.........这里部分代码省略.........
update_post_meta($renewal_order_id, '_cart_discount', $cart_discount);
update_post_meta($renewal_order_id, '_order_discount', $order_discount);
update_post_meta($renewal_order_id, '_order_shipping_tax', $order_shipping_tax);
update_post_meta($renewal_order_id, '_order_shipping', $order_shipping);
update_post_meta($renewal_order_id, '_order_tax', $order_tax);
update_post_meta($renewal_order_id, '_order_total', $order_total);
// Set shipping for orders created with WC 2.0.n (or when we are using WC 2.0.n)
if (WC_Subscriptions::is_woocommerce_pre('2.1') || isset($original_order->recurring_shipping_method)) {
update_post_meta($renewal_order_id, '_shipping_method', $original_order->recurring_shipping_method);
update_post_meta($renewal_order_id, '_shipping_method_title', $original_order->recurring_shipping_method_title);
// Also set recurring shipping as it's a parent renewal order
if ('parent' == $args['new_order_role']) {
update_post_meta($renewal_order_id, '_recurring_shipping_method', $original_order->recurring_shipping_method);
update_post_meta($renewal_order_id, '_recurring_shipping_method_title', $original_order->recurring_shipping_method_title);
}
}
// Apply the recurring shipping & payment methods to child renewal orders
if ('child' == $args['new_order_role']) {
update_post_meta($renewal_order_id, '_payment_method', $original_order->recurring_payment_method);
update_post_meta($renewal_order_id, '_payment_method_title', $original_order->recurring_payment_method_title);
}
// Set order taxes based on recurring taxes from the original order
$recurring_order_taxes = WC_Subscriptions_Order::get_recurring_taxes($original_order);
foreach ($recurring_order_taxes as $index => $recurring_order_tax) {
$item_ids = array();
$item_ids[] = woocommerce_add_order_item($renewal_order_id, array('order_item_name' => $recurring_order_tax['name'], 'order_item_type' => 'tax'));
// Also set recurring taxes on parent renewal orders
if ('parent' == $args['new_order_role']) {
$item_ids[] = woocommerce_add_order_item($renewal_order_id, array('order_item_name' => $recurring_order_tax['name'], 'order_item_type' => 'recurring_tax'));
}
// Add line item meta
foreach ($item_ids as $item_id) {
woocommerce_add_order_item_meta($item_id, 'compound', absint(isset($recurring_order_tax['compound']) ? $recurring_order_tax['compound'] : 0));
woocommerce_add_order_item_meta($item_id, 'tax_amount', $failed_payment_multiplier * WC_Subscriptions::format_total($recurring_order_tax['tax_amount']));
woocommerce_add_order_item_meta($item_id, 'shipping_tax_amount', $failed_payment_multiplier * WC_Subscriptions::format_total($recurring_order_tax['shipping_tax_amount']));
if (isset($recurring_order_tax['rate_id'])) {
woocommerce_add_order_item_meta($item_id, 'rate_id', $recurring_order_tax['rate_id']);
}
if (isset($recurring_order_tax['label'])) {
woocommerce_add_order_item_meta($item_id, 'label', $recurring_order_tax['label']);
}
}
}
// Set up shipping items on renewal order
$recurring_shipping_items = WC_Subscriptions_Order::get_recurring_shipping_methods($original_order);
foreach ($recurring_shipping_items as $recurring_shipping_item_id => $recurring_shipping_item) {
$item_ids = array();
$item_ids[] = woocommerce_add_order_item($renewal_order_id, array('order_item_name' => $recurring_shipping_item['name'], 'order_item_type' => 'shipping'));
// Also set recurring shipping as it's a parent renewal order
if ('parent' == $args['new_order_role']) {
$item_ids[] = woocommerce_add_order_item($renewal_order_id, array('order_item_name' => $recurring_shipping_item['name'], 'order_item_type' => 'recurring_shipping'));
}
// Add shipping item meta
foreach ($item_ids as $item_id) {
woocommerce_add_order_item_meta($item_id, 'method_id', $recurring_shipping_item['method_id']);
woocommerce_add_order_item_meta($item_id, 'cost', $failed_payment_multiplier * WC_Subscriptions::format_total($recurring_shipping_item['cost']));
// Set line taxes for shipping
if (isset($recurring_shipping_item['taxes'])) {
$taxes = maybe_unserialize($recurring_shipping_item['taxes']);
} else {
// try to determine recurring shipping taxes from original order's shipping taxes
$taxes = array();
foreach ($original_order->get_shipping_methods() as $original_shipping_item_id => $original_shipping_item) {
// We need to use the amount of the same shipping method as this one
if ($recurring_shipping_item['method_id'] != $original_shipping_item['method_id']) {
continue;