getInfo($data['lockers_id'], $data['lockers_carrier']); return empty($data) ? [] : ($this->data = $data); } public function getInfo($id = null, $carrier = null) { if (is_null($id)) { $id = getVal('lockers_id', $this->data); } if (is_null($carrier)) { $carrier = getVal('lockers_carrier', $this->data); } if (!$id || !$carrier) { return ['box_name' => translate_shop('branch_unknown', 'delivery')]; } $data = $this->data; $data['lockers_id'] = $id; $data['carrier'] = $carrier; $box_name = $data['lockers_box_name'] ?? null; if (!$box_name) { $data['box_name'] = translate_shop('branch_unknown', 'delivery'); $data['address'] = ''; } else { $box_name = explode(',', $box_name); $data['box_name'] = array_shift($box_name); $data['address'] = trim(implode(',', $box_name)); } return $data; } /** * @param $data admin order data * @param Order $order * * @return bool|string */ public function applyToOrder(&$data, $order) { $info = $this->getInfo(); if (empty($info['lockers_id'])) { return translate_shop('branch_not_selected', 'delivery'); } return true; } /** * @param $cart CartBase */ public function applyToCart(CartBase $cart) { $info = $this->getInfo(); if (empty($info['lockers_id'])) { return; } if (isset($cart->invoice['name'])) { $cart->delivery['name'] = $cart->invoice['name']; $cart->delivery['surname'] = $cart->invoice['surname']; $cart->delivery['firm'] = $info['box_name']; $cart->delivery['custom_address'] = $info['address']; } } public function printDeliveryInfo() { $info = $this->getInfo(); if (empty($info['lockers_id'])) { return $info['box_name']; } return "{$info['box_name']}, {$info['address']}"; } public function isInPerson() { return true; } public function checkSelected(Cart $cart, ?Payment $payment = null) { if (empty($this->data['lockers_id']) && $cart->hasData('delivery')) { throw new \KupShop\OrderingBundle\Exception\DeliveryException(translate_shop('branch_not_selected', 'delivery')); } return parent::checkSelected($cart, $payment); } }