@@ 516-549 (lines=34) @@ | ||
513 | 'tax_class' => $tax_class |
|
514 | ) ); |
|
515 | ||
516 | } else { |
|
517 | ||
518 | // This will be per order shipping - loop through the order and find the highest tax class rate |
|
519 | $cart_tax_classes = WC()->cart->get_cart_item_tax_classes(); |
|
520 | ||
521 | // If multiple classes are found, use the first one. Don't bother with standard rate, we can get that later. |
|
522 | if ( sizeof( $cart_tax_classes ) > 1 && ! in_array( '', $cart_tax_classes ) ) { |
|
523 | $tax_classes = self::get_tax_classes(); |
|
524 | ||
525 | foreach ( $tax_classes as $tax_class ) { |
|
526 | $tax_class = sanitize_title( $tax_class ); |
|
527 | if ( in_array( $tax_class, $cart_tax_classes ) ) { |
|
528 | $matched_tax_rates = self::find_shipping_rates( array( |
|
529 | 'country' => $country, |
|
530 | 'state' => $state, |
|
531 | 'postcode' => $postcode, |
|
532 | 'city' => $city, |
|
533 | 'tax_class' => $tax_class |
|
534 | ) ); |
|
535 | break; |
|
536 | } |
|
537 | } |
|
538 | ||
539 | // If a single tax class is found, use it |
|
540 | } elseif ( sizeof( $cart_tax_classes ) == 1 ) { |
|
541 | $matched_tax_rates = self::find_shipping_rates( array( |
|
542 | 'country' => $country, |
|
543 | 'state' => $state, |
|
544 | 'postcode' => $postcode, |
|
545 | 'city' => $city, |
|
546 | 'tax_class' => $cart_tax_classes[0] |
|
547 | ) ); |
|
548 | } |
|
549 | } |
|
550 | ||
551 | // Get standard rate if no taxes were found |
|
552 | if ( ! sizeof( $matched_tax_rates ) ) { |
@@ 1525-1550 (lines=26) @@ | ||
1522 | $order_item_tax_classes = array_unique( array_values( $order_item_tax_classes ) ); |
|
1523 | ||
1524 | // If multiple classes are found, use the first one. Don't bother with standard rate, we can get that later. |
|
1525 | if ( sizeof( $order_item_tax_classes ) > 1 && ! in_array( '', $order_item_tax_classes ) ) { |
|
1526 | $tax_classes = WC_Tax::get_tax_classes(); |
|
1527 | ||
1528 | foreach ( $tax_classes as $tax_class ) { |
|
1529 | $tax_class = sanitize_title( $tax_class ); |
|
1530 | if ( in_array( $tax_class, $order_item_tax_classes ) ) { |
|
1531 | $matched_tax_rates = WC_Tax::find_shipping_rates( array( |
|
1532 | 'country' => $country, |
|
1533 | 'state' => $state, |
|
1534 | 'postcode' => $postcode, |
|
1535 | 'city' => $city, |
|
1536 | 'tax_class' => $tax_class, |
|
1537 | ) ); |
|
1538 | break; |
|
1539 | } |
|
1540 | } |
|
1541 | // If a single tax class is found, use it |
|
1542 | } elseif ( sizeof( $order_item_tax_classes ) === 1 ) { |
|
1543 | $matched_tax_rates = WC_Tax::find_shipping_rates( array( |
|
1544 | 'country' => $country, |
|
1545 | 'state' => $state, |
|
1546 | 'postcode' => $postcode, |
|
1547 | 'city' => $city, |
|
1548 | 'tax_class' => $order_item_tax_classes[0] |
|
1549 | ) ); |
|
1550 | } |
|
1551 | ||
1552 | // Get standard rate if no taxes were found |
|
1553 | if ( ! sizeof( $matched_tax_rates ) ) { |