/** * Get shipping tax rates * * @param \XLite\Model\Shipping\Rate $rate Shipping rate * @param array $zones Zones list * @param \XLite\Model\Membership $membership Membership OPTIONAL * * @return void */ protected function getShippingTaxRates(\XLite\Model\Shipping\Rate $rate, array $zones, \XLite\Model\Membership $membership = null) { $method = $rate->getMethod(); $taxes = array(); $price = $rate->getTaxableBasis(); foreach ($this->getTaxes() as $tax) { $includedZones = $tax->getVATZone() ? array($tax->getVATZone()->getZoneId()) : array(); $included = $tax->getFilteredRate($includedZones, $tax->getVATMembership(), $method->getClasses()); $r = $tax->getFilteredRate($zones, $membership, $method->getClasses()); if ($included) { $price -= $included->calculateValueExcludingTax($price); } if ($r) { $taxes[$tax->getId()] = array('rate' => $r, 'base' => $price); } } return $taxes; }