/** * @inheritdoc */ public function getRules(Struct\Customer\Group $customerGroup, Struct\Country\Area $area = null, Struct\Country $country = null, Struct\Country\State $state = null) { $query = $this->connection->createQueryBuilder(); $query->select($this->fieldHelper->getTaxFields())->from('s_core_tax', 'tax'); /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */ $statement = $query->execute(); $data = $statement->fetchAll(\PDO::FETCH_ASSOC); $rules = []; $query = $this->getAreaQuery($customerGroup, $area, $country, $state); foreach ($data as $tax) { $query->setParameter(':taxId', $tax['__tax_id']); /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */ $statement = $query->execute(); $area = $statement->fetch(\PDO::FETCH_ASSOC); if (!empty($area['__taxRule_tax'])) { $area['__taxRule_name'] = $tax['__tax_description']; $rule = $this->taxHydrator->hydrateRule($area); } else { $rule = $this->taxHydrator->hydrate($tax); } $key = 'tax_' . $tax['__tax_id']; $rules[$key] = $rule; } return $rules; }
/** * @param Struct\ListProduct $product * @param array $data * @return Struct\ListProduct */ private function assignData(Struct\ListProduct $product, array $data) { $translation = $this->getProductTranslation($data); $data = array_merge($data, $translation); $this->assignProductData($product, $data); $product->setTax($this->taxHydrator->hydrate($data)); $this->assignPriceGroupData($product, $data); if ($data['__product_supplierID']) { $product->setManufacturer($this->manufacturerHydrator->hydrate($data)); } if ($data['__esd_id']) { $product->setEsd($this->esdHydrator->hydrate($data)); } $product->setUnit($this->unitHydrator->hydrate($data)); if (!empty($data['__productAttribute_id'])) { $this->assignAttributeData($product, $data); } return $product; }