116 lines
3.1 KiB
PHP
116 lines
3.1 KiB
PHP
<?php
|
|
|
|
class Lockers extends Delivery
|
|
{
|
|
public static $type = Delivery::TYPE_POINT;
|
|
public static $className = 'Lockers';
|
|
|
|
protected $templateDescription = 'deliveries/delivery.Lockers.widget.tpl';
|
|
protected $AdminTemplateSettings = 'deliveries/block.delivery.Lockers.tpl';
|
|
|
|
public function getName()
|
|
{
|
|
$info = self::getInfo();
|
|
|
|
return parent::getName().' - '.$info['box_name'];
|
|
}
|
|
|
|
public function storeDeliveryInfo($data)
|
|
{
|
|
$data = array_filter($data['lockers'] ?? []);
|
|
|
|
$data += $this->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 "<strong>{$info['box_name']}</strong>, {$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);
|
|
}
|
|
}
|