private function appendTaxRates($response, $taxID = null) { $this->loadLanguageFile('backend/DeliveryZone'); // 'default zone' $zones = array(); //default $taxRates = TaxRate::getRecordSetByDeliveryZone(null); $zones[] = array('ID' => -1, 'name' => $this->translate('_default_zone'), 'taxRates' => $taxRates ? $taxRates->toArray() : null); // custom foreach (DeliveryZone::getTaxZones() as $deliveryZone) { $zone = $deliveryZone->toArray(); $taxRates = $deliveryZone->getTaxRates(); $zones[] = array('ID' => $zone['ID'], 'name' => $zone['name'], 'taxRates' => $taxRates ? $taxRates->toArray() : null); } // reorder tax rates in structure $zone['taxRates'][<delivery zone id>][<tax class id>] = .. // (for default delivery zone and tax class id use -1) foreach ($zones as &$zone) { $filtered = array(); if (is_array($zone['taxRates'])) { foreach ($zone['taxRates'] as $taxRate) { if ($taxRate['Tax']['ID'] == $taxID) { $filtered[$zone['ID']][array_key_exists('taxClassID', $taxRate) ? $taxRate['taxClassID'] : -1] = $taxRate; } } } $zone['taxRates'] = $filtered; //pp($zone['taxRates']); } $classes = TaxClass::getAllClasses()->toArray(); $response->set('zones', $zones); $response->set('classes', $classes); return $response; }