public static function companyList() { $companyList = DDeliveryUI::getCompanySubInfo(); $companyNameList = array(); global $APPLICATION; foreach ($companyList as $id => $company) { $companyNameList[$id] = $APPLICATION->ConvertCharsetArray($company['name'], 'utf-8', SITE_CHARSET); } $courier = array(45, 29, 23, 27, 28, 20, 35, 36, 30, 31, 22, 43, 17, 48, 46, 14, 41, 13, 44, 40, 26, 24, 49, 50, 51, 52, 53, 54, 55, 58, 61, 63, 66); $result = array(DDeliverySDK::TYPE_SELF => array(), DDeliverySDK::TYPE_COURIER => array()); foreach ($courier as $companyId) { if (isset($companyNameList[$companyId])) { $result[DDeliverySDK::TYPE_COURIER][$companyId] = $companyNameList[$companyId]; } } $self = array(4, 21, 11, 16, 42, 17, 37, 3, 1, 7, 39, 47, 41, 38, 40, 25); foreach ($self as $companyId) { if (isset($companyNameList[$companyId])) { $result[DDeliverySDK::TYPE_SELF][$companyId] = $companyNameList[$companyId]; } } return $result; }
static function Calculate($profile, $arConfig, $arOrder = false, $STEP = false, $TEMP = false) { global $APPLICATION; $itemList = array(); if (!empty($arOrder) && !empty($arOrder['ITEMS'][0]['PRODUCT_ID']) && !empty($arOrder['ITEMS'][0]['QUANTITY']) && !empty($arOrder['ITEMS'][0]['PRICE']) && !empty($arOrder['ITEMS'][0]['NAME'])) { $itemList = $arOrder['ITEMS']; } if (substr($_SERVER['PHP_SELF'], 0, 14) == '/bitrix/admin/' && substr($_SERVER['PHP_SELF'], 0, 33) != '/bitrix/admin/sale_order_new.php' && substr($_SERVER['PHP_SELF'], 0, 42) != '/bitrix/admin/ddelivery.ddelivery_ajax.php') { return array("RESULT" => "ERROR", 'TEXT' => GetMessage('DDELIVERY_ADMIN_PAGE')); } if (substr($_SERVER['PHP_SELF'], 0, 33) == '/bitrix/admin/sale_order_new.php' || substr($_SERVER['PHP_SELF'], 0, 42) == '/bitrix/admin/ddelivery.ddelivery_ajax.php') { if (isset($_REQUEST['bx_order_id'])) { $cmsOrderId = $_REQUEST['bx_order_id']; } else { $cmsOrderId = $_REQUEST['ORDER_AJAX'] == 'Y' ? $_REQUEST['id'] : $_REQUEST['ID']; } $orderDeliveryTableData = OrderDeliveryTable::getList(array('filter' => array('ORDER_ID' => $cmsOrderId)))->fetch(); if (empty($orderDeliveryTableData)) { return array("RESULT" => "ERROR", 'TEXT' => GetMessage('DDELIVERY_ERROR_ORDER')); } $property = unserialize($orderDeliveryTableData['PARAMS']); $ddOrderId = false; if (empty($property) || empty($property['DD_LOCAL_ID'])) { $property = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $cmsOrderId, 'CODE' => 'DDELIVERY_ID'))->Fetch(); if (!$property) { return array("RESULT" => "ERROR", 'TEXT' => GetMessage('DDELIVERY_ERROR_ORDER')); } else { $ddOrderId = $property['VALUE']; } } else { $ddOrderId = $property['DD_LOCAL_ID']; } if (!$ddOrderId) { $APPLICATION->ThrowException(GetMessage('DDELIVERY_ADMIN_PAGE')); return array("RESULT" => "ERROR", 'TEXT' => GetMessage('DDELIVERY_ADMIN_PAGE')); } $dbBasketItems = CSaleBasket::GetList(array("ID" => "ASC"), array("ORDER_ID" => $cmsOrderId)); $itemList = array(); while ($arBasket = $dbBasketItems->Fetch()) { $itemList[] = $arBasket; } } else { $userId = CSaleBasket::GetBasketUserID(); $cmsOrderId = "NULL"; if (!empty($_SESSION['DIGITAL_DELIVERY']) && !empty($_SESSION['DIGITAL_DELIVERY']['ORDER_ID'])) { $ddOrderId = $_SESSION['DIGITAL_DELIVERY']['ORDER_ID']; } } if (!empty($ddOrderId)) { if (empty($itemList)) { // TODO $dbBasketItems = CSaleBasket::GetList(array("ID" => "ASC"), array("FUSER_ID" => $userId, "ORDER_ID" => $cmsOrderId), false, false, array('PRODUCT_ID', 'PRICE', 'QUANTITY', 'NAME')); while ($arBasket = $dbBasketItems->Fetch()) { $itemList[] = $arBasket; } //END TODO } if (empty($itemList)) { return array("RESULT" => "ERROR", 'TEXT' => GetMessage('DDELIVERY_BASKET_EMPTY')); } $IntegratorShop = self::getShopObject($arConfig, $itemList, array()); $IntegratorShop->useTaxRate = false; $ddeliveryUI = new \DDelivery\DDeliveryUI($IntegratorShop); $order = $ddeliveryUI->initOrder($ddOrderId); $order->getProductParams(); $ddeliveryUI->saveFullOrder($order); if (!empty($order)) { $price = $ddeliveryUI->getClientPrice($order->getPoint(), $order); return array("RESULT" => "OK", 'VALUE' => (double) $price); } else { return array("RESULT" => "ERROR", 'TEXT' => 'Not Find order'); } } return array("RESULT" => "ERROR", "ERROR" => GetMessage('DDELIVERY_EMPTY_POINT')); }
public function DoInstall() { if ($GLOBALS['APPLICATION']->GetGroupRight('main') < 'W') { return; } if (is_array($this->NEED_MODULES) && !empty($this->NEED_MODULES)) { foreach ($this->NEED_MODULES as $module) { if (!IsModuleInstalled($module)) { $this->ShowForm('ERROR', $this->GetMessage('DDELIVERY_NEED_MODULES', array('#MODULE#' => $module, '#NEED#' => $this->NEED_MODULES))); return; } include $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $module . '/install/version.php'; if (!CheckVersion($arModuleVersion['VERSION'], $this->NEED_MAIN_VERSION)) { $this->ShowForm('ERROR', $this->GetMessage('DDELIVERY_NEED_MODULES', array('#MODULE#' => $module, '#NEED#' => $this->NEED_MAIN_VERSION))); return; } } } if (!function_exists('curl_init')) { $this->ShowForm('ERROR', $this->GetMessage('DDELIVERY_NEED_MODULES_CURL', array('#MODULE#' => 'cURL'))); return; } if (CheckVersion(SM_VERSION, $this->NEED_MAIN_VERSION)) { RegisterModuleDependences('sale', 'onSaleDeliveryHandlersBuildList', self::MODULE_ID, 'DDeliveryEvents', 'Init'); RegisterModuleDependences('sale', 'OnOrderNewSendEmail', self::MODULE_ID, 'DDeliveryEvents', 'OnOrderNewSendEmail'); RegisterModuleDependences('sale', 'OnSaleBeforeStatusOrder', self::MODULE_ID, 'DDeliveryEvents', 'OnSaleBeforeStatusOrder'); if (!symlink(__DIR__ . "/components/ddelivery", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/components/ddelivery")) { CopyDirFiles(__DIR__ . "/components", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/components", true, true); } RegisterModule(self::MODULE_ID); CModule::IncludeModule("sale"); $ddeliveryConfig = CSaleDeliveryHandler::GetBySID('ddelivery')->Fetch(); $ddeliveryConfig['ACTIVE'] = 'N'; CSaleDeliveryHandler::Set('ddelivery', $ddeliveryConfig, false); include_once __DIR__ . '/../include.php'; include_once __DIR__ . '/../DDeliveryEvents.php'; include_once __DIR__ . '/../DDeliveryShop.php'; // Добавляем свойства в бд CSaleOrderProps::add(array('PERSON_TYPE_ID' => '1', 'NAME' => 'DDelivery LocalID', 'TYPE' => 'TEXT', 'REQUIED' => 'N', 'DEFAULT_VALUE' => '', 'SORT' => '10000', 'USER_PROPS' => 'N', 'IS_LOCATION' => 'N', 'PROPS_GROUP_ID' => '2', 'IS_EMAIL' => 'N', 'IS_PROFILE_NAME' => 'N', 'IS_PAYER' => 'N', 'IS_LOCATION4TAX' => 'N', 'IS_ZIP' => 'N', 'CODE' => 'DDELIVERY_ID', 'IS_FILTERED' => 'Y', 'ACTIVE' => 'Y', 'UTIL' => 'Y', 'INPUT_FIELD_LOCATION' => '0', 'MULTIPLE' => 'N')); $IntegratorShop = new DDeliveryShop($ddeliveryConfig['CONFIG']['CONFIG'], array(), array()); $ddeliveryUI = new DDeliveryUI($IntegratorShop, true); $ddeliveryUI->createTables(); $this->ShowForm('OK', GetMessage('MOD_INST_OK'), true); } else { $this->ShowForm('ERROR', $this->GetMessage('DDELIVERY_NEED_RIGHT_VER', array('#NEED#' => $this->NEED_MAIN_VERSION))); } }