true]; public function __construct() { $this->currencyContext = ServiceContainer::getService(CurrencyContext::class); $this->countryContext = ServiceContainer::getService(CountryContext::class); $this->contextManager = ServiceContainer::getService(ContextManager::class); } public function get_vars() { $vars = parent::get_vars(); $pageVars = getVal('body', $vars); $vat = getAdminVat()['value']; $dbcfg = Settings::getDefault(); $pageVars['data']['priceWithVat'] = $dbcfg['prod_prefer_price_vat'] == 'Y' || $dbcfg['prod_prefer_price_vat'] == 'F'; if (isset($pageVars['data']) && !empty($pageVars['data']['price']) && $pageVars['data']['priceWithVat']) { $pageVars['data']['price'] = toDecimal($pageVars['data']['price'])->mul(toDecimal(1 + ($vat / 100))); } if (!empty($pageVars['data']['price_registered'])) { $pageVars['data']['price_registered'] *= 1 + ($vat / 100); } if (!empty($pageVars['data']['countries'])) { $pageVars['data']['countries'] = json_decode($pageVars['data']['countries']); } if (findModule('delivery_pricelist')) { $pageVars['deliveryPricelists'] = $this->getDeliveryPricelists(); } $pageVars['data']['currencies'] = $this->currencyContext->getAll(); if ($this->getAction() == 'add') { $pageVars['data']['currency'] = $this->currencyContext->getDefaultId(); } $pageVars['data']['template'] = $this->getDeliveryObject()->getAdminWindowTemplate(); $pageVars['data']['custom_data'] = $this->getCustomData(); $vars['body'] = $pageVars; return $vars; } private function getDeliveryPricelists() { /** @var \Doctrine\ORM\EntityManager $em */ $em = \KupShop\KupShopBundle\Util\Compat\ServiceContainer::getService('doctrine.orm.entity_manager'); $repository = $em->getRepository(\KupShop\DeliveryPriceListBundle\Entity\PriceList::class); return $repository->findAll(); } protected function getObject() { $data = parent::getObject(); $data['photo_array'] = $this->getDeliveryObject()->getPhoto(); return $data; } public function getData() { global $cfg; $data = parent::getData(); if (getVal('Submit')) { $data['price'] = $this->prepareVatPrice($data['price']); $data['price_registered'] = $this->prepareVatPrice($data['price_registered']); if (!empty($data['price_buy'])) { $data['price_buy'] = $this->prepareVatPrice($data['price_buy']); } if (!empty($data['countries']) && count(array_diff(array_keys($this->countryContext->getAll()), $data['countries'])) != 0) { $data['countries'] = json_encode($data['countries']); } else { $data['countries'] = null; } if ($widgetOptions = $data['custom_data']['widget_options'] ?? false) { if (is_array($widgetOptions)) { $data['custom_data']['widget_options'] = $widgetOptions; } else { $data['custom_data']['widget_options'] = json_decode($widgetOptions, true); if (json_last_error()) { $this->returnError(sprintf( '%s: %s', translate('widgetOptions', 'deliveryDelivery', true, true), json_last_error_msg(), )); } } } else { unset($data['custom_data']['widget_options']); } if (empty($data['custom_data']['users_groups'])) { unset($data['custom_data']['users_groups_invert']); } } $delivery = Delivery::getClass($data['class'] ?? null); $custom_data = $delivery->processAdminWindowData($data['custom_data'] ?? []); $oldCustomData = $this->getCustomData(); if (isset($oldCustomData['restrictions'])) { $custom_data['restrictions'] = $oldCustomData['restrictions']; // preserve restrictions - already saved in DeliveryRestrictions tab } if (isset($oldCustomData['balikobot'])) { $custom_data['balikobot'] = $oldCustomData['balikobot']; // preserve balikobot - already saved in BalikobotDeliveryTab } $this->setCustomData($custom_data); return $data; } public function handleUpdate() { $data = $this->getData(); $SQL = parent::handleUpdate(); clearCache('freeDelivery_', true); if (findModule('delivery_pricelist')) { // Pricelist id update if ($SQL) { if (!empty($data['pricelist']['id_pricelist'])) { $pricelistId = $data['pricelist']['id_pricelist']; if ($pricelistId == 'null') { $pricelistId = null; } $this->updateSQL($this->getTableName(), ['id_pricelist' => $pricelistId], ['id' => $this->getID()]); } } } // Add photo $img = new Photos('delivery'); $img->newImage($this->getID()); if (!empty($_FILES['photo']['name'])) { $img->uploadImage($_FILES['photo']); if ($img->checkFileType()) { $img->insertImageIntoDB(); } else { $this->addError(getTextString('producers', 'errorBadPhoto')); } } // Clear delivery thumbnail $img->clearThumbnails([9]); return $SQL; } public function handleDelete() { // Delete photo $img = new Photos('delivery'); $img->newImage($this->getID()); $img->deletePhoto(false); parent::handleDelete(); } public function handleErasephoto() { // ######################################################################## $img = new Photos('delivery'); $img->newImage($this->getID()); $img->deletePhoto(); // ######################################################################## $this->returnOK(); } public function getDeliveryObject() { if (!$this->delivery) { $data = parent::getObject(); $this->delivery = Delivery::getClass($data['class'] ?? null); if ($this->getID()) { $this->delivery->createFromArray($data); } } return $this->delivery; } }