Reduce stock and other notices

This commit is contained in:
Mike Jolley 2016-08-09 14:15:04 +01:00
parent 8d58febaf8
commit f4a4f6c361
15 changed files with 62 additions and 49 deletions

View File

@ -296,35 +296,37 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
*/ */
protected function save_items() { protected function save_items() {
foreach ( $this->_items as $item_group => $items ) { foreach ( $this->_items as $item_group => $items ) {
foreach ( $items as $item_key => $item ) { if ( is_array( $items ) ) {
$item->set_order_id( $this->get_id() ); foreach ( $items as $item_key => $item ) {
$item_id = $item->save(); $item->set_order_id( $this->get_id() );
$item_id = $item->save();
// If ID changed (new item saved to DB)... // If ID changed (new item saved to DB)...
if ( $item_id !== $item_key ) { if ( $item_id !== $item_key ) {
$this->_items[ $item_group ][ $item_id ] = $item; $this->_items[ $item_group ][ $item_id ] = $item;
unset( $this->_items[ $item_group ][ $item_key ] ); unset( $this->_items[ $item_group ][ $item_key ] );
// Legacy action handler // Legacy action handler
switch ( $item_group ) { switch ( $item_group ) {
case 'fee_lines' : case 'fee_lines' :
if ( has_action( 'woocommerce_add_order_fee_meta' ) && isset( $item->legacy_fee, $item->legacy_fee_key ) ) { if ( has_action( 'woocommerce_add_order_fee_meta' ) && isset( $item->legacy_fee, $item->legacy_fee_key ) ) {
_deprecated_function( 'Action: woocommerce_add_order_fee_meta', '2.7', 'Use woocommerce_new_order_item action instead.' ); _deprecated_function( 'Action: woocommerce_add_order_fee_meta', '2.7', 'Use woocommerce_new_order_item action instead.' );
do_action( 'woocommerce_add_order_fee_meta', $this->get_id(), $item_id, $item->legacy_fee, $item->legacy_fee_key ); do_action( 'woocommerce_add_order_fee_meta', $this->get_id(), $item_id, $item->legacy_fee, $item->legacy_fee_key );
} }
break; break;
case 'shipping_lines' : case 'shipping_lines' :
if ( has_action( 'woocommerce_add_shipping_order_item' ) && isset( $item->legacy_package_key ) ) { if ( has_action( 'woocommerce_add_shipping_order_item' ) && isset( $item->legacy_package_key ) ) {
_deprecated_function( 'Action: woocommerce_add_shipping_order_item', '2.7', 'Use woocommerce_new_order_item action instead.' ); _deprecated_function( 'Action: woocommerce_add_shipping_order_item', '2.7', 'Use woocommerce_new_order_item action instead.' );
do_action( 'woocommerce_add_shipping_order_item', $item_id, $item->legacy_package_key ); do_action( 'woocommerce_add_shipping_order_item', $item_id, $item->legacy_package_key );
} }
break; break;
case 'line_items' : case 'line_items' :
if ( has_action( 'woocommerce_add_order_item_meta' ) && isset( $item->legacy_values, $item->legacy_cart_item_key ) ) { if ( has_action( 'woocommerce_add_order_item_meta' ) && isset( $item->legacy_values, $item->legacy_cart_item_key ) ) {
_deprecated_function( 'Action: woocommerce_add_order_item_meta', '2.7', 'Use woocommerce_new_order_item action instead.' ); _deprecated_function( 'Action: woocommerce_add_order_item_meta', '2.7', 'Use woocommerce_new_order_item action instead.' );
do_action( 'woocommerce_add_order_item_meta', $item_id, $item->legacy_values, $item->legacy_cart_item_key ); do_action( 'woocommerce_add_order_item_meta', $item_id, $item->legacy_values, $item->legacy_cart_item_key );
} }
break; break;
}
} }
} }
} }
@ -831,18 +833,29 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
* @return Array of WC_Order_item * @return Array of WC_Order_item
*/ */
public function get_items( $types = 'line_item' ) { public function get_items( $types = 'line_item' ) {
$type_to_group = array(
'line_item' => 'line_items',
'tax' => 'tax_lines',
'shipping' => 'shipping_lines',
'fee' => 'fee_lines',
'coupon' => 'coupon_lines',
);
if ( is_array( $types ) ) { if ( is_array( $types ) ) {
foreach ( $types as $type ) { foreach ( $types as $type ) {
if ( is_null( $this->_items[ $type ] ) ) { if ( isset( $type_to_group[ $type ] ) && is_null( $this->_items[ $type_to_group[ $type ] ] ) ) {
$this->_items[ $type ] = $this->get_items_from_db( $type ); $this->_items[ $type_to_group[ $type ] ] = $this->get_items_from_db( $type );
} }
} }
} }
$items = array(); $items = array();
$types = (array) $types;
foreach ( $types as $type ) { foreach ( $types as $type ) {
$items = array_merge( $items, $this->_items[ $type ] ); if ( isset( $type_to_group[ $type ] ) && isset( $this->_items[ $type_to_group[ $type ] ] ) ) {
$items = array_merge( $items, $this->_items[ $type_to_group[ $type ] ] );
}
} }
return apply_filters( 'woocommerce_order_get_items', $items, $this ); return apply_filters( 'woocommerce_order_get_items', $items, $this );

View File

@ -128,7 +128,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller {
'id' => $order->get_id(), 'id' => $order->get_id(),
'parent_id' => $post->post_parent, 'parent_id' => $post->post_parent,
'status' => $order->get_status(), 'status' => $order->get_status(),
'order_key' => $order->order_key, 'order_key' => $order->get_order_key(),
'number' => $order->get_order_number(), 'number' => $order->get_order_number(),
'currency' => $order->get_currency(), 'currency' => $order->get_currency(),
'version' => $order->order_version, 'version' => $order->order_version,

View File

@ -161,7 +161,7 @@ class WC_API_Orders extends WC_API_Resource {
$order_data = array( $order_data = array(
'id' => $order->get_id(), 'id' => $order->get_id(),
'order_number' => $order->get_order_number(), 'order_number' => $order->get_order_number(),
'order_key' => $order->order_key, 'order_key' => $order->get_order_key(),
'created_at' => $this->server->format_datetime( $order_post->post_date_gmt ), 'created_at' => $this->server->format_datetime( $order_post->post_date_gmt ),
'updated_at' => $this->server->format_datetime( $order_post->post_modified_gmt ), 'updated_at' => $this->server->format_datetime( $order_post->post_modified_gmt ),
'completed_at' => $this->server->format_datetime( $order->completed_date, true ), 'completed_at' => $this->server->format_datetime( $order->completed_date, true ),

View File

@ -288,7 +288,7 @@ class WC_Form_Handler {
$order_id = absint( $wp->query_vars['order-pay'] ); $order_id = absint( $wp->query_vars['order-pay'] );
$order = wc_get_order( $order_id ); $order = wc_get_order( $order_id );
if ( $order->get_id() == $order_id && $order->order_key == $order_key && $order->needs_payment() ) { if ( $order->get_id() == $order_id && $order->get_order_key() == $order_key && $order->needs_payment() ) {
do_action( 'woocommerce_before_pay_action', $order ); do_action( 'woocommerce_before_pay_action', $order );
@ -660,7 +660,7 @@ class WC_Form_Handler {
if ( $order->has_status( 'cancelled' ) ) { if ( $order->has_status( 'cancelled' ) ) {
// Already cancelled - take no action // Already cancelled - take no action
} elseif ( $user_can_cancel && $order_can_cancel && $order->get_id() === $order_id && $order->order_key === $order_key ) { } elseif ( $user_can_cancel && $order_can_cancel && $order->get_id() === $order_id && $order->get_order_key() === $order_key ) {
// Cancel the order + restore stock // Cancel the order + restore stock
$order->cancel_order( __('Order cancelled by customer.', 'woocommerce' ) ); $order->cancel_order( __('Order cancelled by customer.', 'woocommerce' ) );

View File

@ -337,7 +337,7 @@ class WC_Gateway_BACS extends WC_Payment_Gateway {
$order->update_status( 'on-hold', __( 'Awaiting BACS payment', 'woocommerce' ) ); $order->update_status( 'on-hold', __( 'Awaiting BACS payment', 'woocommerce' ) );
// Reduce stock levels // Reduce stock levels
$order->reduce_order_stock(); wc_reduce_stock_levels( $order_id );
// Remove cart // Remove cart
WC()->cart->empty_cart(); WC()->cart->empty_cart();

View File

@ -116,7 +116,7 @@ class WC_Gateway_Cheque extends WC_Payment_Gateway {
$order->update_status( 'on-hold', _x( 'Awaiting check payment', 'Check payment method', 'woocommerce' ) ); $order->update_status( 'on-hold', _x( 'Awaiting check payment', 'Check payment method', 'woocommerce' ) );
// Reduce stock levels // Reduce stock levels
$order->reduce_order_stock(); wc_reduce_stock_levels( $order_id );
// Remove cart // Remove cart
WC()->cart->empty_cart(); WC()->cart->empty_cart();

View File

@ -203,7 +203,7 @@ class WC_Gateway_COD extends WC_Payment_Gateway {
$order->update_status( apply_filters( 'woocommerce_cod_process_payment_order_status', $order->has_downloadable_item() ? 'on-hold' : 'processing', $order ), __( 'Payment to be made upon delivery.', 'woocommerce' ) ); $order->update_status( apply_filters( 'woocommerce_cod_process_payment_order_status', $order->has_downloadable_item() ? 'on-hold' : 'processing', $order ), __( 'Payment to be made upon delivery.', 'woocommerce' ) );
// Reduce stock levels // Reduce stock levels
$order->reduce_order_stock(); wc_reduce_stock_levels( $order_id );
// Remove cart // Remove cart
WC()->cart->empty_cart(); WC()->cart->empty_cart();

View File

@ -77,7 +77,7 @@ class WC_Gateway_Paypal_Request {
'paymentaction' => $this->gateway->get_option( 'paymentaction' ), 'paymentaction' => $this->gateway->get_option( 'paymentaction' ),
'bn' => 'WooThemes_Cart', 'bn' => 'WooThemes_Cart',
'invoice' => $this->gateway->get_option( 'invoice_prefix' ) . $order->get_order_number(), 'invoice' => $this->gateway->get_option( 'invoice_prefix' ) . $order->get_order_number(),
'custom' => json_encode( array( 'order_id' => $order->get_id(), 'order_key' => $order->order_key ) ), 'custom' => json_encode( array( 'order_id' => $order->get_id(), 'order_key' => $order->get_order_key() ) ),
'notify_url' => $this->notify_url, 'notify_url' => $this->notify_url,
'first_name' => $order->get_billing_first_name(), 'first_name' => $order->get_billing_first_name(),
'last_name' => $order->get_billing_last_name(), 'last_name' => $order->get_billing_last_name(),

View File

@ -40,7 +40,7 @@ abstract class WC_Gateway_Paypal_Response {
$order = wc_get_order( $order_id ); $order = wc_get_order( $order_id );
} }
if ( ! $order || $order->order_key !== $order_key ) { if ( ! $order || $order->get_order_key() !== $order_key ) {
WC_Gateway_Paypal::log( 'Error: Order Keys do not match.' ); WC_Gateway_Paypal::log( 'Error: Order Keys do not match.' );
return false; return false;
} }
@ -66,7 +66,7 @@ abstract class WC_Gateway_Paypal_Response {
*/ */
protected function payment_on_hold( $order, $reason = '' ) { protected function payment_on_hold( $order, $reason = '' ) {
$order->update_status( 'on-hold', $reason ); $order->update_status( 'on-hold', $reason );
$order->reduce_order_stock(); wc_reduce_stock_levels( $order_id );
WC()->cart->empty_cart(); WC()->cart->empty_cart();
} }
} }

View File

@ -214,7 +214,7 @@ class WC_Addons_Gateway_Simplify_Commerce extends WC_Gateway_Simplify_Commerce {
} }
// Reduce stock levels // Reduce stock levels
$order->reduce_order_stock(); wc_reduce_stock_levels( $order_id );
// Remove cart // Remove cart
WC()->cart->empty_cart(); WC()->cart->empty_cart();

View File

@ -90,7 +90,7 @@ class WC_Shortcode_Checkout {
return; return;
} }
if ( $order->get_id() == $order_id && $order->order_key == $order_key ) { if ( $order->get_id() == $order_id && $order->get_order_key() == $order_key ) {
if ( $order->needs_payment() ) { if ( $order->needs_payment() ) {
@ -133,7 +133,7 @@ class WC_Shortcode_Checkout {
$order_key = isset( $_GET['key'] ) ? wc_clean( $_GET['key'] ) : ''; $order_key = isset( $_GET['key'] ) ? wc_clean( $_GET['key'] ) : '';
$order = wc_get_order( $order_id ); $order = wc_get_order( $order_id );
if ( $order->get_id() == $order_id && $order->order_key == $order_key ) { if ( $order->get_id() == $order_id && $order->get_order_key() == $order_key ) {
if ( $order->needs_payment() ) { if ( $order->needs_payment() ) {
@ -200,7 +200,7 @@ class WC_Shortcode_Checkout {
if ( $order_id > 0 ) { if ( $order_id > 0 ) {
$order = wc_get_order( $order_id ); $order = wc_get_order( $order_id );
if ( $order->order_key != $order_key ) { if ( $order->get_order_key() != $order_key ) {
$order = false; $order = false;
} }
} }

View File

@ -162,7 +162,7 @@ function wc_clear_cart_after_payment() {
if ( $order_id > 0 ) { if ( $order_id > 0 ) {
$order = wc_get_order( $order_id ); $order = wc_get_order( $order_id );
if ( $order->order_key === $order_key ) { if ( $order->get_order_key() === $order_key ) {
WC()->cart->empty_cart(); WC()->cart->empty_cart();
} }
} }

View File

@ -432,7 +432,7 @@ function wc_downloadable_file_permission( $download_id, $product_id, $order, $qt
'user_id' => absint( $order->get_user_id() ), 'user_id' => absint( $order->get_user_id() ),
'user_email' => $user_email, 'user_email' => $user_email,
'order_id' => $order->get_id(), 'order_id' => $order->get_id(),
'order_key' => $order->order_key, 'order_key' => $order->get_order_key(),
'downloads_remaining' => $limit, 'downloads_remaining' => $limit,
'access_granted' => current_time( 'mysql' ), 'access_granted' => current_time( 'mysql' ),
'download_count' => 0 'download_count' => 0

View File

@ -456,7 +456,7 @@ function wc_get_customer_available_downloads( $customer_id ) {
'product_id' => $product_id, 'product_id' => $product_id,
'download_name' => $download_name, 'download_name' => $download_name,
'order_id' => $order->get_id(), 'order_id' => $order->get_id(),
'order_key' => $order->order_key, 'order_key' => $order->get_order_key(),
'downloads_remaining' => $result->downloads_remaining, 'downloads_remaining' => $result->downloads_remaining,
'access_expires' => $result->access_expires, 'access_expires' => $result->access_expires,
'file' => $download_file 'file' => $download_file

View File

@ -23,10 +23,10 @@ if ( ! defined( 'ABSPATH' ) ) {
<header><h2><?php _e( 'Customer Details', 'woocommerce' ); ?></h2></header> <header><h2><?php _e( 'Customer Details', 'woocommerce' ); ?></h2></header>
<table class="shop_table customer_details"> <table class="shop_table customer_details">
<?php if ( $order->customer_note ) : ?> <?php if ( $order->get_customer_note() ) : ?>
<tr> <tr>
<th><?php _e( 'Note:', 'woocommerce' ); ?></th> <th><?php _e( 'Note:', 'woocommerce' ); ?></th>
<td><?php echo wptexturize( $order->customer_note ); ?></td> <td><?php echo wptexturize( $order->get_customer_note() ); ?></td>
</tr> </tr>
<?php endif; ?> <?php endif; ?>