PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.11.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.11.0
6.12.1 6.12.0 6.11.0 6.10.0 6.9.1 6.9.0 6.8.1 6.8.0 6.7.4 6.7.3 6.7.2 6.7.0 4.21.7 4.22.0 4.22.1 4.23.0 4.23.1 4.23.2 4.23.3 4.24.0 4.24.1 4.24.10 4.24.11 4.24.12 4.24.13 4.24.14 4.24.15 4.24.16 4.24.17 4.24.18 4.24.19 4.24.2 4.24.4 4.24.6 4.24.7 4.24.8 4.24.9 4.25.0 4.25.1 4.25.2 4.25.4 4.25.5 4.25.6 4.25.7 4.25.8 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 4.8.0 4.8.1 4.8.3 4.8.4 4.8.5 4.9.0 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.0 5.1.1 5.1.2 5.1.3 5.2.0 5.3.0 5.3.1 5.3.3 5.3.4 5.3.5 6.0.0 6.1.0 6.1.1 6.1.2 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.3.0 trunk 6.4.0 1.4 6.4.1 1.4.1 6.4.2 1.5 6.4.3 1.6 6.4.5 1.6.1 6.5.0 1.6.2 6.5.1 1.7 6.5.2 1.8 6.5.3 1.9 6.5.4 1.9.1 6.5.5 1.9.10 6.5.6 1.9.11 6.5.7 1.9.12 6.5.8 1.9.2 6.6.0 1.9.3 6.6.1 1.9.4 6.6.2 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0 2.0.1 2.1 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.6 3.0.7 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.11.4 3.12.0 3.13.0 3.14.0 3.14.1 3.14.2 3.14.3 3.14.4 3.15.0 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.2.0 3.3.1 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.8.0 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 3.9.2 3.9.20 3.9.21 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.9 4.0.0 4.0.1 4.0.10 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.11.0 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.11.8 4.11.9 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.14.0 4.14.1 4.14.2 4.15.0 4.16.0 4.16.1 4.16.2 4.17.0 4.18.0 4.18.1 4.18.2 4.18.3 4.18.4 4.18.5 4.18.6 4.19.0 4.19.1 4.2.0 4.20.0 4.20.1 4.20.2 4.20.3 4.21.0 4.21.1 4.21.2 4.21.3 4.21.4 4.21.5
flexible-shipping / src / WPDesk / FS / TableRate / Tax / TaxCalculator.php
flexible-shipping / src / WPDesk / FS / TableRate / Tax Last commit date
TaxCalculator.php 1 week ago Tracker.php 1 week ago
TaxCalculator.php
75 lines
1 <?php
2 /**
3 * Class TaxCalculator
4 *
5 * @package WPDesk\FS\TableRate\Tax
6 */
7
8 namespace WPDesk\FS\TableRate\Tax;
9
10 use FSVendor\WPDesk\FS\TableRate\Settings\MethodSettingsImplementation;
11
12 /**
13 * Can calculate taxes for rates.
14 */
15 class TaxCalculator {
16
17 const TAXABLE = 'taxable';
18 const COST = 'cost';
19
20 /**
21 * @var MethodSettingsImplementation
22 */
23 private $method_settings;
24
25 /**
26 * @var array
27 */
28 private $tax_rates;
29
30 /**
31 * TaxCalculator constructor.
32 *
33 * @param MethodSettingsImplementation $method_settings .
34 */
35 public function __construct( MethodSettingsImplementation $method_settings, array $tax_rates ) {
36 $this->method_settings = $method_settings;
37 $this->tax_rates = $tax_rates;
38 }
39
40 /**
41 * @param array $rate .
42 * @param bool $is_customer_vat_exempt .
43 */
44 public function append_taxes_to_rate_if_enabled( array $rate, $is_customer_vat_exempt ) {
45 if ( wc_tax_enabled() && 'yes' === $this->method_settings->get_prices_include_tax()
46 && self::TAXABLE === $this->method_settings->get_tax_status()
47 && isset( $rate[ self::COST ] ) && 0.0 !== (float) $rate[ self::COST ]
48 ) {
49 return $this->append_taxes_to_rate( $rate, $is_customer_vat_exempt );
50 }
51
52 return $rate;
53 }
54
55 /**
56 * @param array $rate .
57 * @param bool $is_customer_vat_exempt .
58 *
59 * @return array
60 */
61 private function append_taxes_to_rate( array $rate, bool $is_customer_vat_exempt ) {
62 $total_cost = $rate[ self::COST ];
63 $taxes = \WC_Tax::calc_tax( $total_cost, $this->tax_rates, true );
64
65 $rate[ self::COST ] = $total_cost - array_sum( $taxes );
66
67 $rate['taxes'] = $is_customer_vat_exempt ? [] : \WC_Tax::calc_shipping_tax( $rate[ self::COST ], $this->tax_rates );
68
69 $rate['price_decimals'] = '4'; // Prevent the cost from being rounded before the tax is added.
70
71 return $rate;
72 }
73
74 }
75