businessdad icon

Ticket 5047 - Fix shipping conversion

businessdad | PRO | 04/27/17 03:03:20 PM UTC | 0 ⭐ | 958 👁️ | Never ⏰ | []
PHP |

3.65 KB

|

None

|

0 👍

/

0 👎

    public static function updateShipping($rates, $package) {
        $products=$package['contents'];
        $product=reset($products);
        $total=$package['contents_cost'];
        $total_brixen = $total*1.25;  /**** BRIXEN - INFO: To get total incl. tax (25%) when comparing with Free Shipping minimum amount (this amount is incl. tax, so total has to be incl. tax also) *****/
        
        $shipping=ThemexShop::getShipping(ThemexUser::getShop($product['data']->post->post_author));
        
        $country='';
        if(isset($package['destination']) && isset($package['destination']['country'])) {
            $country=$package['destination']['country'];
        }
        
        if(!empty($rates)) {
            foreach($rates as $key => $rate) {
                if(isset($shipping[$key]) && !empty($shipping[$key])) {
                    $method=$shipping[$key];
                    $enabled=themex_value('enabled', $method);
                    $available=themex_value('availability', $method);
                    //$amount=themex_value('min_amount', $method); // BRIXEN / ENIITO
                    
                    // Convert the amount from base currency to the active currency
                    // @author Aelia
                    $amount = aelia_convert_to_currency(themex_value('min_amount', $method));
                    
                    $countries=themex_array('countries', $method, array());
                        
 
                    //if($enabled=='no' || (!empty($amount) && $total<$amount) || ($available=='specific' && !in_array($country, $countries))) {
                    if($enabled=='no' || (!empty($amount) && $total_brixen<$amount) || ($available=='specific' && !in_array($country, $countries))) {   //****** BRIXEN */
                       /** echo '<script type="text/javascript">alert("amount: '.$amount.'");</script>'; **/
                        unset($rates[$key]);
                    } else if($key=='flat_rate') {
                        $default=round(floatval(themex_value('default_cost', $method)), 2);
                        $costs=themex_array('costs', $method);
 
                        $cost=$default;
 
                        $rates[$key]->cost=$cost;
                    } else if($key=='international_delivery') {
                        if(($available=='including' && !in_array($country, $countries)) || ($available=='excluding' && in_array($country, $countries))) {
                            unset($rates[$key]);
                        } else {
                            $default=round(floatval(themex_value('cost', $method)), 2);
                            $rates[$key]->cost=$default;
                        }
                    } else if($key=='local_delivery') {
                        $default=round(floatval(themex_value('cost', $method)), 2);
                        $rates[$key]->cost=$default;
                    }
                }
            }
        }
 
        return $rates;
    }
    
function aelia_convert_to_currency($price, $to_currency = null, $from_currency = null) {
    // If source currency is not specified, take the shop's base currency as a default
    if(empty($from_currency)) {
        $from_currency = get_option('woocommerce_currency');
    }
    // If target currency is not specified, take the active currency as a default.
    // The Currency Switcher sets this currency automatically, based on the context. Other
    // plugins can also override it, based on their own custom criteria, by implementing
    // a filter for the "woocommerce_currency" hook.
    //
    // For example, a subscription plugin may decide that the active currency is the one
    // taken from a previous subscription, because it's processing a renewal, and such
    // renewal should keep the original prices, in the original currency.
    if(empty($to_currency)) {
        $to_currency = get_woocommerce_currency();
    }
 
    // Call the currency conversion filter. Using a filter allows for loose coupling. If the
    // Aelia Currency Switcher is not installed, the filter call will return the original
    // amount, without any conversion being performed. Your plugin won't even need to know if
    // the multi-currency plugin is installed or active
    return apply_filters('wc_aelia_cs_convert', $price, $from_currency, $to_currency);
}

Comments