Пример #1
0
 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;
 }