function cart_updated() { global $woocommerce; $cart = $woocommerce->cart->get_cart(); if (empty($cart) || !self::cart_is_eligible_for_multi_shipping()) { wcms_session_delete('cart_item_addresses'); wcms_session_delete('cart_address_sigs'); wcms_session_delete('address_relationships'); wcms_session_delete('shipping_methods'); wcms_session_delete('wcms_original_cart'); } }
public function checkout_process($order_id) { global $woocommerce; $sess_item_address = wcms_session_get('cart_item_addresses'); $has_item_address = !wcms_session_isset('cart_item_addresses') || empty($sess_item_address) ? false : true; do_action('wc_ms_before_checkout_process', $order_id); $packages = $woocommerce->cart->get_shipping_packages(); $sess_item_address = wcms_session_isset('cart_item_addresses') ? wcms_session_get('cart_item_addresses') : false; $sess_packages = wcms_session_isset('wcms_packages') ? wcms_session_get('wcms_packages') : false; $sess_methods = wcms_session_isset('shipping_methods') ? wcms_session_get('shipping_methods') : false; $sess_rates = wcms_session_isset('wcms_package_rates') ? wcms_session_get('wcms_package_rates') : false; // Allow outside code to modify session data one last time $sess_item_address = apply_filters('wc_ms_checkout_session_item_address', $sess_item_address); $sess_packages = apply_filters('wc_ms_checkout_session_packages', $sess_packages); $sess_methods = apply_filters('wc_ms_checkout_session_methods', $sess_methods); $sess_rates = apply_filters('wc_ms_checkout_session_rates', $sess_rates); if ($has_item_address) { update_post_meta($order_id, '_multiple_shipping', 'yes'); } // update the taxes $packages = $this->calculate_taxes(null, $packages, true); $sess_packages = $this->calculate_taxes(null, $sess_packages, true); if ($packages) { update_post_meta($order_id, '_shipping_packages', $packages); } if ($sess_item_address !== false && !empty($sess_item_address)) { update_post_meta($order_id, '_shipping_addresses', $sess_item_address); wcms_session_delete('cart_item_addresses'); if ($sess_packages) { if ($has_item_address) { // remove the shipping address update_post_meta($order_id, '_shipping_first_name', ''); update_post_meta($order_id, '_shipping_last_name', ''); update_post_meta($order_id, '_shipping_company', ''); update_post_meta($order_id, '_shipping_address_1', ''); update_post_meta($order_id, '_shipping_address_2', ''); update_post_meta($order_id, '_shipping_city', ''); update_post_meta($order_id, '_shipping_postcode', ''); update_post_meta($order_id, '_shipping_country', ''); update_post_meta($order_id, '_shipping_state', ''); } } } if ($sess_packages !== false && !empty($sess_packages) && $has_item_address) { update_post_meta($order_id, '_wcms_packages', $sess_packages); } if ($sess_methods !== false && !empty($sess_methods) && $has_item_address) { $methods = $sess_methods; update_post_meta($order_id, '_shipping_methods', $methods); } else { $order = WC_MS_Compatibility::wc_get_order($order_id); $methods = $order->get_shipping_methods(); $ms_methods = array(); if ($sess_packages) { foreach ($sess_packages as $pkg_idx => $package) { foreach ($methods as $method) { $ms_methods[$pkg_idx] = array('id' => $method['method_id'], 'label' => $method['name']); continue 2; } } } update_post_meta($order_id, '_shipping_methods', $ms_methods); } if ($sess_rates !== false) { update_post_meta($order_id, '_shipping_rates', $sess_rates); } do_action('wc_ms_after_checkout_process', $order_id); }