getInfo(); return parent::getName().' - '.$info['city'].', '.$info['street'].', '.$info['description']; } public function getPointId() { return $this->data['id_point'] ?? null; } public function storeDeliveryInfo($data) { parent::storeDeliveryInfo($data); if (isset($data['sps_parcel_shop_point'])) { $point = $data['sps_parcel_shop_point']; $point = json_decode($point, true); if (isset($point['id'])) { $this->data += [ 'id_point' => $point['id'], 'zip' => $point['zip'], 'street' => $point['address'], 'city' => $point['city'], 'country' => $point['countryISO'], 'description' => $point['description'], ]; } else { $this->data += $point; } } return $this->data; } public function getInfo() { if (!empty($this->data)) { return $this->data; } else { return ['description' => 'Neznámá pobočka']; } } /** * @param $data admin order data * @param Order $order * * @return bool|string */ public function applyToOrder(&$data, $order) { parent::applyToOrder($data, $order); $info = $this->getInfo(); if (empty($info['id_point'])) { return 'Není zvolena pobočka SPS ParcelShop!'; } $data['delivery_zip'] = $info['zip']; $data['delivery_street'] = $info['street']; $data['delivery_city'] = $info['city']; $data['delivery_country'] = $info['country']; $data['delivery_firm'] = ''; return true; } /** * @param $cart CartBase */ public function applyToCart(CartBase $cart) { parent::applyToCart($cart); $info = $this->getInfo(); if (empty($info['id_point'])) { return; } if (isset($cart->invoice['name'])) { $cart->delivery['name'] = $cart->invoice['name']; $cart->delivery['surname'] = $cart->invoice['surname']; } $cart->delivery['zip'] = $info['zip']; $cart->delivery['street'] = $info['street']; $cart->delivery['city'] = $info['city']; $cart->delivery['country'] = $info['country']; $cart->delivery['firm'] = ''; } public function printDeliveryInfo() { $info = $this->getInfo(); return "{$info['city']}, {$info['street']}, {$info['description']}, {$info['zip']}"; } public function checkSelected(Cart $cart, ?Payment $payment = null) { if (empty($this->data['id_point']) && $cart->hasData('delivery')) { throw new \KupShop\OrderingBundle\Exception\DeliveryException(translate('branch_missing_zip', 'delivery')); } $info = $this->getInfo(); $currencyContext = ServiceContainer::getService(CurrencyContext::class); if (!empty($this->data['id_point']) && !in_array($info['country'], $this->getCountryByCurrency($currencyContext->getActiveId()))) { throw new \KupShop\OrderingBundle\Exception\DeliveryException('Vybraná pobočka SPS ParcelShop nepodporuje vaši měnu.'); } return parent::checkSelected($cart, $payment); } private function getCountryByCurrency($currency) { switch ($currency) { case 'CZK': return ['CZ']; break; case 'EUR': return ['SK', 'DE']; break; case 'HUF': return ['HU']; break; case 'RON': return ['RO']; break; case 'PLN': return ['PL']; break; default: return []; } } }