function GetDeliveries() { // старой ядро не правильно делает выборку // $db_dtype = CSaleDelivery::GetList( // array( // "SORT" => "ASC", // "NAME" => "ASC" // ), // array( // "ACTIVE" => "Y" // ), // false, // false, // array() // ); // $arrDeliveries = []; // while ($ar_dtype = $db_dtype->Fetch()) // { // $arrDeliveries[ $ar_dtype['ID'] ] = $ar_dtype; // } $dbResultList = \Bitrix\Sale\Delivery\Services\Table::GetList(array('order' => array("SORT" => "ASC"), 'filter' => array('ACTIVE' => 'Y', 'PARENT_ID' => 0), 'select' => array('*'))); $arrDeliveries = []; while ($arResult = $dbResultList->fetch()) { $arrDeliveries[$arResult['ID']] = $arResult; } if (is_array($arrDeliveries)) { return $arrDeliveries; } }
protected static function convertDeliveryIds($oldDeliveryIds = array(), $oldProfiles = array()) { if (!is_array($oldDeliveryIds)) { $oldDeliveryIds = trim(strval($oldDeliveryIds)) != "" ? array($oldDeliveryIds) : array(); } if (!is_array($oldProfiles)) { $oldProfiles = trim(strval($oldProfiles)) != "" ? array($oldProfiles) : array(); } if (empty($oldDeliveryIds) && empty($oldProfiles)) { return array(); } $qParams = array("LOGIC" => "AND"); if (!empty($oldDeliveryIds)) { $params = array("LOGIC" => "OR", "%CODE" => array()); foreach ($oldDeliveryIds as $id) { $params["%CODE"][] = $id . ":"; $params["%CODE"][] = $id; } $qParams[] = $params; } if (!empty($oldProfiles)) { $params = array("LOGIC" => "OR", "%CODE" => array()); foreach ($oldProfiles as $id) { $params["%CODE"][] = ":" . $id; } $qParams[] = $params; } $res = Delivery\Services\Table::getList(array('filter' => $qParams, 'select' => array("ID"))); $result = array(); while ($delivery = $res->fetch()) { $result[] = $delivery["ID"]; } return $result; }
/** * Return html for choose group control. * * @param int|string $selectedGroupId Selected group. * @param string $name Group name. * @param string $addParams Additional params for select tag. * @param bool $anyGroup Allowed select any group. * @return string */ public static function getGroupChooseControl($selectedGroupId, $name, $addParams = "", $anyGroup = false) { $groups = array(); $dbRes = \Bitrix\Sale\Delivery\Services\Table::getList(array("filter" => array("=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Services\\Group'), "select" => array("ID", "NAME", "PARENT_ID"), "order" => array("PARENT_ID" => "ASC", "NAME" => "ASC"))); while ($group = $dbRes->fetch()) { $groups[$group["ID"]] = $group; } //$groups = self::createTreeFromGroups($groups); $result = '<select name=' . $name . ' id="sale_delivery_group_choose"' . $addParams . '>'; if ($anyGroup) { $result .= '<option value="-1"' . ($selectedGroupId == "-1" ? ' selected' : '') . '>' . Loc::getMessage('SALE_DELIVERY_HELPER_ANY_LEVEL') . '</option>'; } $result .= '<option value="0"' . ($selectedGroupId == 0 ? ' selected' : '') . '>' . Loc::getMessage('SALE_DELIVERY_HELPER_UPPER_LEVELL') . '</option>'; foreach ($groups as $groupId => $group) { $result .= '<option value="' . $groupId . '"' . ($selectedGroupId == $groupId ? ' selected' : '') . '>' . htmlspecialcharsbx($group["NAME"]) . '</option>'; } $result .= '</select>'; return $result; }
protected function getChildren($parentId = 0) { $result = array(); $dbRes = \Bitrix\Sale\Delivery\Services\Table::getList(array("filter" => array("PARENT_ID" => $parentId), "select" => array("ID", "NAME", "DESCRIPTION", "CLASS_NAME"), "order" => array("NAME" => "ASC"))); while ($service = $dbRes->fetch()) { $canHasChildren = is_callable($service["CLASS_NAME"] . '::canHasChildren') ? $service["CLASS_NAME"]::canHasChildren() : false; $children = $canHasChildren ? $this->getChildren($service["ID"]) : array(); foreach ($children as $key => $child) { if (!$child["can_has_children"]) { unset($children[$key]); } } $item = array("text" => htmlspecialcharsbx($service["NAME"]), "title" => htmlspecialcharsbx($service["DESCRIPTION"]), "url" => "sale_delivery_service_list.php?lang=" . LANGUAGE_ID . "&filter_group=" . $service["ID"], "page_icon" => "sale_page_icon", "can_has_children" => $canHasChildren, "more_url" => array("sale_delivery_service_edit.php?lang=" . LANGUAGE_ID . "&PARENT_ID=" . $service["ID"])); if ($canHasChildren && !empty($children)) { $item["items"] = $children; $item["dynamic"] = true; $item["items_id"] = "menu_sale_delivery_" . $service["ID"]; } $result[] = $item; } return $result; }
if ($service && $showRestrictions && $ID > 0) { $aTabs[] = array("DIV" => "edit_restriction", "TAB" => Loc::getMessage("SALE_DSE_TAB_RESTRICTIONS"), "ICON" => "sale", "TITLE" => Loc::getMessage("SALE_DSE_TAB_RESTRICTIONS_DESCR")); } if ($showExtraServices && $ID > 0) { $aTabs[] = array("DIV" => "edit_extraservices", "TAB" => Loc::getMessage("SALE_DSE_TAB_EXTRA_SERVICES"), "ICON" => "sale", "TITLE" => Loc::getMessage("SALE_DSE_TAB_EXTRA_SERVICES_DESCR")); } if ($service && $ID > 0 && strlen($service->getTrackingClass()) > 0) { $aTabs[] = array("DIV" => "edit_tracking", "TAB" => Loc::getMessage("SALE_DSE_TAB_TRACKING"), "ICON" => "sale", "TITLE" => Loc::getMessage("SALE_DSE_TAB_TRACKING_DESCR")); } $tabControl = new CAdminTabControl("tabControl", $aTabs); /* Profiles */ if ($canHasProfiles) { $sTableIDSubService = "tbl_sale_delivery_subservice"; $oSortSubService = new CAdminSorting($sTableIDSubService); $lAdminSubServices = new CAdminList($sTableIDSubService, $oSortSubService); $dbSubServicesRes = \Bitrix\Sale\Delivery\Services\Table::getList(array("filter" => array("PARENT_ID" => $ID), "select" => array("ID", "NAME", "ACTIVE", "LOGOTIP", "PARENT_ID"), "order" => isset($_REQUEST["by"]) && isset($_REQUEST["order"]) ? array($_REQUEST["by"] => $_REQUEST["order"]) : array("NAME" => "ASC"))); $profilesList = new CAdminResult($dbSubServicesRes, $sTableIDSubService); $profilesList->NavStart(); $lAdminSubServices->NavText($profilesList->GetNavPrint("PROFILES")); $profileHeader = array(array("id" => "ID", "content" => "ID", "sort" => "ID", "default" => true), array("id" => "NAME", "content" => Loc::getMessage("SALE_DSE_PROF_HEAD_NAME"), "sort" => "NAME", "default" => true), array("id" => "ACTIVE", "content" => Loc::getMessage("SALE_DSE_PROF_HEAD_ACTIVE"), "sort" => "ACTIVE", "default" => true), array("id" => "LOGOTIP", "content" => Loc::getMessage("SALE_DSE_PROF_HEAD_LOGOTIP"), "sort" => "LOGOTIP", "default" => true)); $lAdminSubServices->AddHeaders($profileHeader); while ($profileParams = $profilesList->NavNext(true, "f_")) { $actUrl = "sale_delivery_service_edit.php?lang=" . LANG . "&PARENT_ID=" . $f_PARENT_ID . "&ID=" . $f_ID . '&' . $tabControl->ActiveTabParam() . "&back_url=" . urlencode($APPLICATION->GetCurPageParam()); $row =& $lAdminSubServices->AddRow($f_ID, $profileParams, $actUrl, Loc::getMessage("SALE_DSE_EDIT_DESCR")); $row->AddField("NAME", '<a href="' . $actUrl . '" class="adm-list-table-icon-link">' . '<span class="adm-list-table-link">' . $f_NAME . '</span>' . '</a>'); $row->AddField("ID", $f_ID); $logoHtml = intval($f_LOGOTIP) > 0 ? CFile::ShowImage(CFile::GetFileArray($f_LOGOTIP), 150, 150, "border=0", "", false) : ""; $row->AddField("LOGOTIP", $logoHtml); $row->AddField("ACTIVE", $f_ACTIVE == "Y" ? Loc::getMessage("SALE_DSE_YES") : Loc::getMessage("SALE_DSE_NO")); $row->AddField("CLASS_NAME", $f_CLASS_NAME); $arActions = array();
public static function Add($arFields) { if (!isset($arFields["DELIVERY_ID"]) || strlen(trim($arFields["DELIVERY_ID"])) <= 0 || !isset($arFields["PAYSYSTEM_ID"]) || intval($arFields["PAYSYSTEM_ID"]) <= 0) { return false; } if (isset($arFields["DELIVERY_PROFILE_ID"]) && strlen($arFields["DELIVERY_PROFILE_ID"]) > 0) { $arFields["DELIVERY_ID"] .= ":" . $arFields["DELIVERY_PROFILE_ID"]; unset($arFields["DELIVERY_PROFILE_ID"]); } $arFields["DELIVERY_ID"] = Delivery\Services\Table::getIdByCode($arFields["DELIVERY_ID"]); $res = DeliveryPaySystemTable::add($arFields); return new CDBResult($res); }
/** * @return int * @throws \Bitrix\Main\ArgumentException */ public static function getEmptyDeliveryServiceId() { $res = Table::getList(array('select' => array('ID'), 'filter' => array('=CLASS_NAME' => '\\Bitrix\\Sale\\Delivery\\Services\\EmptyDeliveryService'))); $data = $res->fetch(); return $data ? $data['ID'] : 0; }
public static function init() { IncludeModuleLangFile(__FILE__); if (!self::$fInit) { self::$fInit = true; self::$siteCookieId = md5('SALE_REPORT_SITE_ID'); // Initializing list of sites. $result = Bitrix\Main\SiteTable::getList(array('select' => array('LID', 'DEF', 'NAME'))); $i = 0; while ($row = $result->fetch()) { self::$sitelist[$row['LID']] = $row['NAME']; if (++$i === 1) { self::$defaultSiteId = $row['LID']; } else { if ($row['DEF'] === 'Y') { self::$defaultSiteId = $row['LID']; } } self::$weightOptions[$row['LID']] = array('unit' => COption::GetOptionString('sale', 'weight_unit', null, $row['LID']), 'koef' => COption::GetOptionInt('sale', 'weight_koef', null, $row['LID'])); } unset($i, $row, $result); // hack, add virtual ID field into StatusLang entity for filtering $statusEntity = Entity\Base::getInstance('\\Bitrix\\Sale\\Internals\\StatusLang'); if ($statusEntity instanceof \Bitrix\Main\Entity\Base) { $statusEntity->addField(array('data_type' => 'string', 'expression' => array('%s', 'STATUS_ID')), 'ID'); } unset($statusEntity); // hack, add virtual REPS_ORDER field into Shipment entity for filtering system records $shipmentEntity = Entity\Base::getInstance('\\Bitrix\\Sale\\Internals\\Shipment'); if ($shipmentEntity instanceof \Bitrix\Main\Entity\Base) { $shipmentEntity->addField(array('data_type' => 'Order', 'reference' => array('=ref.ID' => 'this.ORDER_ID', '!=this.SYSTEM' => array('?', 'Y'))), 'REPS_ORDER'); } unset($shipmentEntity); // Initializing list of statuses of orders. $result = Bitrix\Sale\Internals\StatusLangTable::getList(array('select' => array('STATUS_ID', 'NAME'), 'filter' => array('=LID' => LANGUAGE_ID))); while ($row = $result->fetch()) { self::$statuslist[$row['STATUS_ID']] = $row['NAME']; } unset($row, $result); self::$genders = array('M' => GetMessage('USER_MALE'), 'F' => GetMessage('USER_FEMALE')); // Initializing list of person types. $result = Bitrix\Sale\Internals\PersonTypeTable::getList(array('select' => array('ID', 'LID', 'NAME'))); while ($row = $result->fetch()) { self::$personTypes[$row['ID']] = array('LID' => $row['LID'], 'NAME' => $row['NAME']); } unset($row, $result); // Initializing list of pay systems of orders. $result = Bitrix\Sale\PaySystemTable::getList(array('select' => array('ID', 'LID', 'NAME'))); while ($row = $result->fetch()) { self::$paySystemList[$row['ID']] = array('value' => $row['NAME'], 'site_id' => $row['LID']); } unset($row, $result); // Initializing list of services and methods of delivery. $result = \Bitrix\Sale\Delivery\Services\Table::getList(array('select' => array('ID', 'NAME'))); while ($row = $result->fetch()) { self::$deliveryList[$row['ID']] = array('value' => $row['NAME'], 'site_id' => ''); } unset($row, $result); // Obtaining table of correspondences of iblocks to sites. $result = Bitrix\Iblock\IblockSiteTable::getList(); while ($row = $result->fetch()) { self::$iblockSite[$row['SITE_ID']][] = $row['IBLOCK_ID']; } unset($row, $result); // Obtaining the list of iblocks which are directories and filling // a property $catalogSections with sections of these units. $ent = new CCatalog(); $result = $ent->GetList(); while ($ibRow = $result->Fetch()) { // Obtaining list of sections of the catalog. self::$catalogs[] = $ibRow; $path = array(); $curLevel = $prevLevel = 0; $sections = CIBlockSection::GetTreeList(array('=IBLOCK_ID' => $ibRow['IBLOCK_ID'])); $row = null; while ($row = $sections->GetNext()) { // Formation of an array of identifiers of current and parent sections. $curLevel = $row['DEPTH_LEVEL']; for ($i = 0; $i <= $prevLevel - $curLevel; $i++) { array_pop($path); } array_push($path, $row['ID']); $prevLevel = $curLevel; self::$catalogSections[$row['ID']] = array('name' => ltrim(str_repeat(' . ', $curLevel) . $row['NAME']), 'path' => $path, 'catalog' => array('ID' => $ibRow['ID'], 'NAME' => $ibRow['NAME'])); } } unset($ent, $ibRow, $row, $sections, $result); // Initialization of the list of warehouses. $result = Bitrix\Catalog\StoreTable::getList(array('select' => array('ID', 'TITLE'))); while ($row = $result->fetch()) { self::$productStores[$row['ID']] = $row['TITLE']; } unset($row, $result); // Getting currencies $obj = new CCurrency(); $by = ''; $order = ''; $result = $obj->GetList($by, $order, LANGUAGE_ID); while ($row = $result->Fetch()) { self::$currencies[$row['CURRENCY']] = array('name' => $row['FULL_NAME']); } unset($row, $result, $obj, $by, $order); // Getting types of prices $obj = new CCatalogGroup(); $result = $obj->GetListEx(array('SORT'), array(), false, false, array('ID', 'NAME', 'BASE', 'NAME_LANG')); while ($row = $result->Fetch()) { self::$priceTypes[$row['ID']] = array('name' => empty($row['NAME_LANG']) ? $row['NAME'] : $row['NAME_LANG'], 'base' => $row['BASE'] === 'Y' ? true : false); } unset($row, $result, $obj); // Getting option, which means, it is necessary to display a fractional quantity of goods of no. self::$fDecimalQuant = COption::GetOptionString('sale', 'QUANTITY_FACTORIAL') == 'Y'; self::initOwners(); } }
function CheckFields($ACTION, &$arFields, $ID = 0) { global $USER_FIELD_MANAGER, $DB, $APPLICATION; if (is_set($arFields, "SITE_ID") && strlen($arFields["SITE_ID"]) > 0) { $arFields["LID"] = $arFields["SITE_ID"]; } if ((is_set($arFields, "LID") || $ACTION == "ADD") && strlen($arFields["LID"]) <= 0) { $APPLICATION->ThrowException(Loc::getMessage("SKGO_EMPTY_SITE"), "EMPTY_SITE_ID"); return false; } if ((is_set($arFields, "PERSON_TYPE_ID") || $ACTION == "ADD") && IntVal($arFields["PERSON_TYPE_ID"]) <= 0) { $APPLICATION->ThrowException(Loc::getMessage("SKGO_EMPTY_PERS_TYPE"), "EMPTY_PERSON_TYPE_ID"); return false; } if ((is_set($arFields, "USER_ID") || $ACTION == "ADD") && IntVal($arFields["USER_ID"]) <= 0) { $APPLICATION->ThrowException(Loc::getMessage("SKGO_EMPTY_USER_ID"), "EMPTY_USER_ID"); return false; } if (is_set($arFields, "PAYED") && $arFields["PAYED"] != "Y") { $arFields["PAYED"] = "N"; } if (is_set($arFields, "CANCELED") && $arFields["CANCELED"] != "Y") { $arFields["CANCELED"] = "N"; } if (is_set($arFields, "STATUS_ID") && strlen($arFields["STATUS_ID"]) <= 0) { $arFields["STATUS_ID"] = "N"; } if (is_set($arFields, "ALLOW_DELIVERY") && $arFields["ALLOW_DELIVERY"] != "Y") { $arFields["ALLOW_DELIVERY"] = "N"; } if (is_set($arFields, "EXTERNAL_ORDER") && $arFields["EXTERNAL_ORDER"] != "Y") { $arFields["EXTERNAL_ORDER"] = "N"; } if (is_set($arFields, "PRICE") || $ACTION == "ADD") { $arFields["PRICE"] = str_replace(",", ".", $arFields["PRICE"]); $arFields["PRICE"] = DoubleVal($arFields["PRICE"]); } if (is_set($arFields, "PRICE_DELIVERY") || $ACTION == "ADD") { $arFields["PRICE_DELIVERY"] = str_replace(",", ".", $arFields["PRICE_DELIVERY"]); $arFields["PRICE_DELIVERY"] = DoubleVal($arFields["PRICE_DELIVERY"]); } if (is_set($arFields, "SUM_PAID") || $ACTION == "ADD") { $arFields["SUM_PAID"] = str_replace(",", ".", $arFields["SUM_PAID"]); $arFields["SUM_PAID"] = DoubleVal($arFields["SUM_PAID"]); } if (is_set($arFields, "DISCOUNT_VALUE") || $ACTION == "ADD") { $arFields["DISCOUNT_VALUE"] = str_replace(",", ".", $arFields["DISCOUNT_VALUE"]); $arFields["DISCOUNT_VALUE"] = DoubleVal($arFields["DISCOUNT_VALUE"]); } if (is_set($arFields, "TAX_VALUE") || $ACTION == "ADD") { $arFields["TAX_VALUE"] = str_replace(",", ".", $arFields["TAX_VALUE"]); $arFields["TAX_VALUE"] = DoubleVal($arFields["TAX_VALUE"]); } if (!is_set($arFields, "LOCKED_BY") && (!is_set($arFields, "UPDATED_1C") || is_set($arFields, "UPDATED_1C") && $arFields["UPDATED_1C"] != "Y")) { $arFields["UPDATED_1C"] = "N"; $arFields["~VERSION"] = "VERSION+0+1"; } if ((is_set($arFields, "CURRENCY") || $ACTION == "ADD") && strlen($arFields["CURRENCY"]) <= 0) { $APPLICATION->ThrowException(Loc::getMessage("SKGO_EMPTY_CURRENCY"), "EMPTY_CURRENCY"); return false; } if (is_set($arFields, "CURRENCY")) { if (!($arCurrency = CCurrency::GetByID($arFields["CURRENCY"]))) { $APPLICATION->ThrowException(str_replace("#ID#", $arFields["CURRENCY"], Loc::getMessage("SKGO_WRONG_CURRENCY")), "ERROR_NO_CURRENCY"); return false; } } if (is_set($arFields, "LID")) { $dbSite = CSite::GetByID($arFields["LID"]); if (!$dbSite->Fetch()) { $APPLICATION->ThrowException(str_replace("#ID#", $arFields["LID"], Loc::getMessage("SKGO_WRONG_SITE")), "ERROR_NO_SITE"); return false; } } if (is_set($arFields, "USER_ID")) { $dbUser = CUser::GetByID($arFields["USER_ID"]); if (!$dbUser->Fetch()) { $APPLICATION->ThrowException(str_replace("#ID#", $arFields["USER_ID"], Loc::getMessage("SKGO_WRONG_USER")), "ERROR_NO_USER_ID"); return false; } } if (is_set($arFields, "PERSON_TYPE_ID")) { if (!($arPersonType = CSalePersonType::GetByID($arFields["PERSON_TYPE_ID"]))) { $APPLICATION->ThrowException(str_replace("#ID#", $arFields["PERSON_TYPE_ID"], Loc::getMessage("SKGO_WRONG_PERSON_TYPE")), "ERROR_NO_PERSON_TYPE"); return false; } } if (is_set($arFields, "PAY_SYSTEM_ID") && IntVal($arFields["PAY_SYSTEM_ID"]) > 0) { if (!($arPaySystem = CSalePaySystem::GetByID(IntVal($arFields["PAY_SYSTEM_ID"])))) { $APPLICATION->ThrowException(str_replace("#ID#", $arFields["PAY_SYSTEM_ID"], Loc::getMessage("SKGO_WRONG_PS")), "ERROR_NO_PAY_SYSTEM"); return false; } } if (is_set($arFields, "DELIVERY_ID") && IntVal($arFields["DELIVERY_ID"]) > 0) { if (!($delivery = \Bitrix\Sale\Delivery\Services\Table::getById($arFields["DELIVERY_ID"]))) { $APPLICATION->ThrowException(str_replace("#ID#", $arFields["DELIVERY_ID"], Loc::getMessage("SKGO_WRONG_DELIVERY")), "ERROR_NO_DELIVERY"); return false; } } if (is_set($arFields, "STATUS_ID")) { if (!($arStatus = CSaleStatus::GetByID($arFields["STATUS_ID"]))) { $APPLICATION->ThrowException(str_replace("#ID#", $arFields["STATUS_ID"], Loc::getMessage("SKGO_WRONG_STATUS")), "ERROR_NO_STATUS_ID"); return false; } } if (is_set($arFields, "ACCOUNT_NUMBER") && $ACTION == "UPDATE") { if (strlen($arFields["ACCOUNT_NUMBER"]) <= 0) { $APPLICATION->ThrowException(Loc::getMessage("SKGO_EMPTY_ACCOUNT_NUMBER"), "EMPTY_ACCOUNT_NUMBER"); return false; } else { $dbres = $DB->Query("SELECT ID, ACCOUNT_NUMBER FROM b_sale_order WHERE ACCOUNT_NUMBER = '" . $DB->ForSql($arFields["ACCOUNT_NUMBER"]) . "'", true); if ($arRes = $dbres->GetNext()) { if (is_array($arRes) && $arRes["ID"] != $ID) { $APPLICATION->ThrowException(Loc::getMessage("SKGO_EXISTING_ACCOUNT_NUMBER"), "EXISTING_ACCOUNT_NUMBER"); return false; } } } } if ($ACTION == "ADD") { $arFields["VERSION"] = 1; } if (!$USER_FIELD_MANAGER->CheckFields("ORDER", $ID, $arFields)) { return false; } return True; }
/** * @return \Bitrix\Sale\Result|bool * @throws Exception * @throws \Bitrix\Main\SystemException */ public static function convertToNew($renameTable = false) { $result = new \Bitrix\Sale\Result(); $con = \Bitrix\Main\Application::getConnection(); if (!$con->isTableExists("b_sale_delivery_handler")) { return true; } $sqlHelper = $con->getSqlHelper(); $deliveryRes = $con->query('SELECT * FROM b_sale_delivery_handler WHERE CONVERTED != \'Y\''); $tablesToUpdate = array('b_sale_order', 'b_sale_order_history'); \CSaleDeliveryHandler::Initialize(); $handlers = \CSaleDeliveryHandler::__getRegisteredHandlers(); while ($delivery = $deliveryRes->fetch()) { if (strlen($delivery["PROFILES"]) > 0) { $delivery["PROFILES"] = unserialize($delivery["PROFILES"]); } else { $delivery["PROFILES"] = $handlers[$delivery["HID"]]["PROFILES"]; foreach ($delivery["PROFILES"] as $id => $params) { $delivery["PROFILES"][$id]["ACTIVE"] = $delivery["ACTIVE"]; } } // Something strange it probably not used if ($delivery["PROFILES"] == false || !is_array($delivery["PROFILES"]) || empty($delivery["PROFILES"])) { $result->addError(new \Bitrix\Main\Entity\EntityError("Can't receive info about profiles. Delivery HID: \"" . $delivery["HID"] . "\"")); continue; } unset($delivery["ID"]); $delivery["CONFIG"] = array(); if (strlen($delivery["SETTINGS"]) > 0) { if (isset($handlers[$delivery["HID"]]["DBGETSETTINGS"]) && is_callable($handlers[$delivery["HID"]]["DBGETSETTINGS"])) { $delivery["CONFIG"] = call_user_func($handlers[$delivery["HID"]]["DBGETSETTINGS"], $delivery["SETTINGS"]); } else { $delivery["CONFIG"] = $delivery["SETTINGS"]; } } elseif (is_callable($handlers[$delivery["HID"]]["GETCONFIG"])) { $config = call_user_func($handlers[$delivery["HID"]]["GETCONFIG"], strlen($delivery["LID"]) > 0 ? $delivery["LID"] : false); foreach ($config["CONFIG"] as $key => $arConfig) { if (!empty($arConfig["DEFAULT"])) { $delivery["CONFIG"][$key] = $arConfig["DEFAULT"]; } } } $delivery["SID"] = $handlers[$delivery["HID"]]["SID"]; $id = \CSaleDeliveryHandler::Set($delivery["HID"], $delivery, strlen($delivery["LID"]) > 0 ? $delivery["LID"] : false); if (intval($id) <= 0) { $result->addError(new \Bitrix\Main\Entity\EntityError("Can't convert delivery handler with hid: " . $delivery["HID"] . (strlen($delivery["LID"]) > 0 ? " for site: " . $delivery["LID"] : ""))); continue; } $con->queryExecute('UPDATE b_sale_delivery_handler SET CONVERTED="Y" WHERE HID="' . $sqlHelper->forSql($delivery["HID"]) . '"'); $ids = array($id); foreach ($delivery["PROFILES"] as $profileName => $profileData) { $fullSid = $delivery["HID"] . ":" . $profileName; $profileId = \Bitrix\Sale\Delivery\Services\Table::getIdByCode($fullSid); $ids[] = $profileId; if (intval($profileId) > 0) { foreach ($tablesToUpdate as $table) { $con->queryExecute("UPDATE " . $table . " SET DELIVERY_ID=" . $sqlHelper->forSql($profileId) . " WHERE DELIVERY_ID = '" . $sqlHelper->forSql($fullSid) . "'"); } $con->queryExecute("UPDATE b_sale_delivery2paysystem SET DELIVERY_ID=" . $sqlHelper->forSql($profileId) . ", DELIVERY_PROFILE_ID='' WHERE DELIVERY_ID = '" . $sqlHelper->forSql($delivery["HID"]) . "' AND DELIVERY_PROFILE_ID='" . $profileName . "'"); } else { $result->addError(new \Bitrix\Main\Entity\EntityError("Cant determine id for profile code: " . $fullSid)); } } $con->queryExecute("UPDATE b_sale_delivery2paysystem SET DELIVERY_ID=" . $sqlHelper->forSql($id) . ", DELIVERY_PROFILE_ID='' WHERE DELIVERY_ID = '" . $sqlHelper->forSql($delivery["HID"]) . "' AND (DELIVERY_PROFILE_ID='' OR DELIVERY_PROFILE_ID IS NULL)"); $d2pRes = \Bitrix\Sale\Internals\DeliveryPaySystemTable::getList(array('filter' => array('DELIVERY_ID' => $ids), 'select' => array("DELIVERY_ID"), 'group' => array("DELIVERY_ID"))); while ($d2p = $d2pRes->fetch()) { $res = \Bitrix\Sale\Delivery\Restrictions\Table::add(array("DELIVERY_ID" => $d2p["DELIVERY_ID"], "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPaySystem', "SORT" => 100)); if (!$res->isSuccess()) { $result->addErrors($res->getErrors()); } } } if ($renameTable && $result->isSuccess()) { $con->queryExecute("ALTER TABLE b_sale_delivery_handler RENAME b_sale_delivery_handler_old"); } return $result; }
/** * @return array Fields witch user will see on delivery admin page */ public static function getAdminFieldsList() { return Table::getMap(); }
if ($arParams["SEND_NEW_USER_NOTIFY"] == "Y") { CUser::SendUserInfo($USER->GetID(), SITE_ID, GetMessage("INFO_REQ"), true); } } else { $arResult["ERROR"][] = GetMessage("STOF_ERROR_REG_CONFIRM"); } } } else { $arResult["ERROR"][] = GetMessage("STOF_ERROR_EMAIL"); } } if ($arUserResult["PAY_SYSTEM_ID"] <= 0 && $arUserResult["PAY_CURRENT_ACCOUNT"] != "Y") { $arResult["ERROR"][] = GetMessage("STOF_ERROR_PAY_SYSTEM"); } if ($USER->IsAuthorized() && empty($arResult["ERROR"])) { $arFields = array("LID" => SITE_ID, "PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "PAYED" => "N", "CANCELED" => "N", "STATUS_ID" => "N", "PRICE" => $orderTotalSum, "CURRENCY" => $arResult["BASE_LANG_CURRENCY"], "USER_ID" => (int) $USER->GetID(), "PAY_SYSTEM_ID" => $arUserResult["PAY_SYSTEM_ID"], "PRICE_DELIVERY" => $arResult["DELIVERY_PRICE"], "DELIVERY_ID" => intval($arUserResult["DELIVERY_ID"]) > 0 ? \Bitrix\Sale\Delivery\Services\Table::getCodeById($arUserResult["DELIVERY_ID"]) : "", "DISCOUNT_VALUE" => $arResult["DISCOUNT_PRICE"], "TAX_VALUE" => $arResult["bUsingVat"] == "Y" ? $arResult["VAT_SUM"] : $arResult["TAX_PRICE"], "USER_DESCRIPTION" => $arUserResult["~ORDER_DESCRIPTION"]); $arOrderDat['USER_ID'] = $arFields['USER_ID']; if (IntVal($_POST["BUYER_STORE"]) > 0 && $arUserResult["DELIVERY_ID"] == $arUserResult["DELIVERY_STORE"]) { $arFields["STORE_ID"] = IntVal($_POST["BUYER_STORE"]); } // add Guest ID if (Loader::includeModule("statistic")) { $arFields["STAT_GID"] = CStatistic::GetEventParam(); } $affiliateID = CSaleAffiliate::GetAffiliate(); if ($affiliateID > 0) { $dbAffiliat = CSaleAffiliate::GetList(array(), array("SITE_ID" => SITE_ID, "ID" => $affiliateID)); $arAffiliates = $dbAffiliat->Fetch(); if (count($arAffiliates) > 1) { $arFields["AFFILIATE_ID"] = $affiliateID; }
public static function adapt(array $row) { $data = OrderCompatibility::convertDateFieldsToOldFormat($row); if (isset($data['DELIVERY_ID']) && intval($data['DELIVERY_ID']) > 0) { $data['DELIVERY_ID'] = \Bitrix\Sale\Delivery\Services\Table::getCodeById($data['DELIVERY_ID']); } return $data; }
public static function DoProcessOrder(&$arOrder, $arOptions, &$arErrors) { if (empty($arOrder['BASKET_ITEMS']) || !is_array($arOrder['BASKET_ITEMS'])) { return; } $isOrderConverted = \Bitrix\Main\Config\Option::get("main", "~sale_converted_15", 'N'); $oldDelivery = ''; if ($isOrderConverted == 'Y') { if (isset($arOrder['DELIVERY_ID']) && $arOrder['DELIVERY_ID'] != '') { $oldDelivery = $arOrder['DELIVERY_ID']; $arOrder['DELIVERY_ID'] = \Bitrix\Sale\Delivery\Services\Table::getIdByCode($arOrder['DELIVERY_ID']); } Sale\Compatible\DiscountCompatibility::clearDiscountResult(); Sale\Compatible\DiscountCompatibility::fillBasketData($arOrder['BASKET_ITEMS']); Sale\Compatible\DiscountCompatibility::calculateBasketDiscounts($arOrder['BASKET_ITEMS']); Sale\Compatible\DiscountCompatibility::setApplyMode($arOrder['BASKET_ITEMS']); } $arIDS = array(); $groupDiscountIterator = Sale\Internals\DiscountGroupTable::getList(array('select' => array('DISCOUNT_ID'), 'filter' => array('@GROUP_ID' => CUser::GetUserGroup($arOrder['USER_ID']), '=ACTIVE' => 'Y'))); while ($groupDiscount = $groupDiscountIterator->fetch()) { $groupDiscount['DISCOUNT_ID'] = (int) $groupDiscount['DISCOUNT_ID']; if ($groupDiscount['DISCOUNT_ID'] > 0) { $arIDS[$groupDiscount['DISCOUNT_ID']] = true; } } if (!empty($arIDS)) { $arIDS = array_keys($arIDS); $couponList = Sale\DiscountCouponsManager::getForApply(array('MODULE' => 'sale', 'DISCOUNT_ID' => $arIDS), array(), true); $arExtend = array('catalog' => array('fields' => true, 'props' => true)); foreach (GetModuleEvents('sale', 'OnExtendBasketItems', true) as $arEvent) { ExecuteModuleEventEx($arEvent, array(&$arOrder['BASKET_ITEMS'], $arExtend)); } foreach ($arOrder['BASKET_ITEMS'] as &$arOneItem) { if (array_key_exists('PRODUCT_PROVIDER_CLASS', $arOneItem) && empty($arOneItem['PRODUCT_PROVIDER_CLASS']) && array_key_exists('CALLBACK_FUNC', $arOneItem) && empty($arOneItem['CALLBACK_FUNC']) && (!isset($arOneItem['CUSTOM_PRICE']) || $arOneItem['CUSTOM_PRICE'] != 'Y')) { if (isset($arOneItem['DISCOUNT_PRICE'])) { $arOneItem['PRICE'] += $arOneItem['DISCOUNT_PRICE']; $arOneItem['DISCOUNT_PRICE'] = 0; $arOneItem['BASE_PRICE'] = $arOneItem['PRICE']; } } } if (isset($arOneItem)) { unset($arOneItem); } if (empty(self::$cacheDiscountHandlers)) { self::$cacheDiscountHandlers = CSaleDiscount::getDiscountHandlers($arIDS); } else { $needDiscountHandlers = array(); foreach ($arIDS as &$discountID) { if (!isset(self::$cacheDiscountHandlers[$discountID])) { $needDiscountHandlers[] = $discountID; } } unset($discountID); if (!empty($needDiscountHandlers)) { $discountHandlersList = CSaleDiscount::getDiscountHandlers($needDiscountHandlers); if (!empty($discountHandlersList)) { foreach ($discountHandlersList as $discountID => $discountHandlers) { self::$cacheDiscountHandlers[$discountID] = $discountHandlers; } unset($discountHandlers, $discountID); } unset($discountHandlersList); } unset($needDiscountHandlers); } $currentDatetime = new Main\Type\DateTime(); $discountSelect = array('ID', 'PRIORITY', 'SORT', 'LAST_DISCOUNT', 'UNPACK', 'APPLICATION', 'USE_COUPONS', 'EXECUTE_MODULE', 'NAME', 'CONDITIONS_LIST', 'ACTIONS_LIST'); $discountOrder = array('PRIORITY' => 'DESC', 'SORT' => 'ASC', 'ID' => 'ASC'); $discountFilter = array('@ID' => $arIDS, '=LID' => $arOrder['SITE_ID'], array('LOGIC' => 'OR', 'ACTIVE_FROM' => '', '<=ACTIVE_FROM' => $currentDatetime), array('LOGIC' => 'OR', 'ACTIVE_TO' => '', '>=ACTIVE_TO' => $currentDatetime)); if (empty($couponList)) { $discountFilter['=USE_COUPONS'] = 'N'; } else { $discountFilter[] = array('LOGIC' => 'OR', '=USE_COUPONS' => 'N', array('=USE_COUPONS' => 'Y', '=COUPON.COUPON' => array_keys($couponList))); $discountSelect['DISCOUNT_COUPON'] = 'COUPON.COUPON'; } $discountIterator = Sale\Internals\DiscountTable::getList(array('select' => $discountSelect, 'filter' => $discountFilter, 'order' => $discountOrder)); $discountApply = array(); $resultDiscountList = array(); $resultDiscountKeys = array(); $resultDiscountIndex = 0; while ($discount = $discountIterator->fetch()) { $discount['ID'] = (int) $discount['ID']; if (isset($discountApply[$discount['ID']])) { continue; } $discount['MODULE'] = 'sale'; $discount['MODULE_ID'] = 'sale'; if ($discount['USE_COUPONS'] == 'Y') { $discount['COUPON'] = $couponList[$discount['DISCOUNT_COUPON']]; } $discountApply[$discount['ID']] = true; $applyFlag = true; if (isset(self::$cacheDiscountHandlers[$discount['ID']])) { $moduleList = self::$cacheDiscountHandlers[$discount['ID']]['MODULES']; if (!empty($moduleList)) { foreach ($moduleList as &$moduleID) { if (!isset(self::$usedModules[$moduleID])) { self::$usedModules[$moduleID] = Loader::includeModule($moduleID); } if (!self::$usedModules[$moduleID]) { $applyFlag = false; break; } } unset($moduleID); if ($applyFlag) { $discount['MODULES'] = $moduleList; } } unset($moduleList); } if ($isOrderConverted == 'Y') { Sale\Compatible\DiscountCompatibility::setOrderData($arOrder); } if ($applyFlag && self::__Unpack($arOrder, $discount['UNPACK'])) { $oldOrder = $arOrder; self::__ApplyActions($arOrder, $discount['APPLICATION']); if ($isOrderConverted == 'Y') { if (Sale\Compatible\DiscountCompatibility::calculateSaleDiscount($arOrder, $discount)) { $resultDiscountList[$resultDiscountIndex] = array('MODULE_ID' => $discount['MODULE_ID'], 'ID' => $discount['ID'], 'NAME' => $discount['NAME'], 'PRIORITY' => $discount['PRIORITY'], 'SORT' => $discount['SORT'], 'LAST_DISCOUNT' => $discount['LAST_DISCOUNT'], 'CONDITIONS' => serialize($discount['CONDITIONS_LIST']), 'UNPACK' => $discount['UNPACK'], 'ACTIONS' => serialize($discount['ACTIONS_LIST']), 'APPLICATION' => $discount['APPLICATION'], 'RESULT' => self::getDiscountResult($oldOrder, $arOrder, false), 'HANDLERS' => self::$cacheDiscountHandlers[$discount['ID']], 'USE_COUPONS' => $discount['USE_COUPONS'], 'COUPON' => $discount['USE_COUPONS'] == 'Y' ? $couponList[$discount['DISCOUNT_COUPON']] : false); $resultDiscountKeys[$discount['ID']] = $resultDiscountIndex; $resultDiscountIndex++; if ($discount['LAST_DISCOUNT'] == 'Y') { break; } } } else { $discountResult = self::getDiscountResult($oldOrder, $arOrder, false); if (!empty($discountResult['DELIVERY']) || !empty($discountResult['BASKET'])) { if ($discount['USE_COUPONS'] == 'Y' && !empty($discount['DISCOUNT_COUPON'])) { if ($couponList[$discount['DISCOUNT_COUPON']]['TYPE'] == Sale\Internals\DiscountCouponTable::TYPE_BASKET_ROW) { self::changeDiscountResult($oldOrder, $arOrder, $discountResult); } $couponApply = Sale\DiscountCouponsManager::setApply($discount['DISCOUNT_COUPON'], $discountResult); unset($couponApply); } $resultDiscountList[$resultDiscountIndex] = array('MODULE_ID' => $discount['MODULE_ID'], 'ID' => $discount['ID'], 'NAME' => $discount['NAME'], 'PRIORITY' => $discount['PRIORITY'], 'SORT' => $discount['SORT'], 'LAST_DISCOUNT' => $discount['LAST_DISCOUNT'], 'CONDITIONS' => serialize($discount['CONDITIONS_LIST']), 'UNPACK' => $discount['UNPACK'], 'ACTIONS' => serialize($discount['ACTIONS_LIST']), 'APPLICATION' => $discount['APPLICATION'], 'RESULT' => $discountResult, 'HANDLERS' => self::$cacheDiscountHandlers[$discount['ID']], 'USE_COUPONS' => $discount['USE_COUPONS'], 'COUPON' => $discount['USE_COUPONS'] == 'Y' ? $couponList[$discount['DISCOUNT_COUPON']] : false); $resultDiscountKeys[$discount['ID']] = $resultDiscountIndex; $resultDiscountIndex++; if ($discount['LAST_DISCOUNT'] == 'Y') { break; } } unset($discountResult); } } } unset($discount, $discountIterator); $arOrder["ORDER_PRICE"] = 0; $arOrder["ORDER_WEIGHT"] = 0; $arOrder["USE_VAT"] = false; $arOrder["VAT_RATE"] = 0; $arOrder["VAT_SUM"] = 0; $arOrder["DISCOUNT_PRICE"] = 0.0; $arOrder["DISCOUNT_VALUE"] = $arOrder["DISCOUNT_PRICE"]; $arOrder["PRICE_DELIVERY"] = roundEx($arOrder["PRICE_DELIVERY"], SALE_VALUE_PRECISION); $arOrder["DELIVERY_PRICE"] = $arOrder["PRICE_DELIVERY"]; foreach ($arOrder['BASKET_ITEMS'] as &$arShoppingCartItem) { if (!CSaleBasketHelper::isSetItem($arShoppingCartItem)) { $customPrice = isset($arShoppingCartItem['CUSTOM_PRICE']) && ($arShoppingCartItem['CUSTOM_PRICE'] = 'Y'); if (!$customPrice) { $arShoppingCartItem['DISCOUNT_PRICE'] = roundEx($arShoppingCartItem['DISCOUNT_PRICE'], SALE_VALUE_PRECISION); if ($arShoppingCartItem['DISCOUNT_PRICE'] > 0) { $arShoppingCartItem['PRICE'] = $arShoppingCartItem['BASE_PRICE'] - $arShoppingCartItem['DISCOUNT_PRICE']; } else { $arShoppingCartItem['PRICE'] = roundEx($arShoppingCartItem['PRICE'], SALE_VALUE_PRECISION); } } else { $arShoppingCartItem['DISCOUNT_PRICE'] = 0; } $arOrder["ORDER_PRICE"] += $arShoppingCartItem["PRICE"] * $arShoppingCartItem["QUANTITY"]; $arOrder["ORDER_WEIGHT"] += $arShoppingCartItem["WEIGHT"] * $arShoppingCartItem["QUANTITY"]; $arShoppingCartItem["PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arShoppingCartItem["PRICE"], $arShoppingCartItem["CURRENCY"], true); $arShoppingCartItem["DISCOUNT_PRICE_PERCENT"] = 0; if ($arShoppingCartItem["DISCOUNT_PRICE"] + $arShoppingCartItem["PRICE"] > 0) { $arShoppingCartItem["DISCOUNT_PRICE_PERCENT"] = $arShoppingCartItem["DISCOUNT_PRICE"] * 100 / ($arShoppingCartItem["DISCOUNT_PRICE"] + $arShoppingCartItem["PRICE"]); } $arShoppingCartItem["DISCOUNT_PRICE_PERCENT_FORMATED"] = roundEx($arShoppingCartItem["DISCOUNT_PRICE_PERCENT"], SALE_VALUE_PRECISION) . "%"; if ($arShoppingCartItem["VAT_RATE"] > 0) { $arOrder["USE_VAT"] = true; if ($arShoppingCartItem["VAT_RATE"] > $arOrder["VAT_RATE"]) { $arOrder["VAT_RATE"] = $arShoppingCartItem["VAT_RATE"]; } $arOrder["VAT_SUM"] += $arShoppingCartItem["VAT_VALUE"] * $arShoppingCartItem["QUANTITY"]; } } } unset($arShoppingCartItem); $arOrder['DISCOUNT_LIST'] = $resultDiscountList; if ($isOrderConverted == 'Y') { Sale\Compatible\DiscountCompatibility::setOldDiscountResult($resultDiscountList); } } if ($isOrderConverted == 'Y' && $oldDelivery != '') { $arOrder['DELIVERY_ID'] = $oldDelivery; } $arOrder["ORDER_PRICE"] = roundEx($arOrder["ORDER_PRICE"], SALE_VALUE_PRECISION); }
function getSaleDelivery() { $delivery = array(); $dbDeliveryList = \Bitrix\Sale\Delivery\Services\Table::GetList(); while ($service = $dbDeliveryList->fetch()) { $deliveryObj = Bitrix\Sale\Delivery\Services\Manager::createObject($service); $delivery[$deliveryObj->GetId()] = $deliveryObj->isProfile() ? $deliveryObj->getNameWithParent() : $deliveryObj->getName(); } return $delivery; }
/** @deprecated */ public static function ResetAll() { $serviceRes = \Bitrix\Sale\Delivery\Services\Table::getList(array('filter' => array("=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Services\\Automatic'), 'select' => array("CODE"))); while ($service = $serviceRes->fetch()) { self::Reset($service["CODE"]); } return; }
$result['ERROR'] = true; $message .= "<br>" . $error; } $result['DATA'] = $message; break; case 17: $id = \Bitrix\Sale\Delivery\Services\EmptyDeliveryService::getEmptyDeliveryServiceId(); if ($id <= 0) { $fields["NAME"] = Loc::getMessage('SALE_CONVERTER_EMPTY_DELIVERY_SERVICE'); $fields["CLASS_NAME"] = '\\Bitrix\\Sale\\Delivery\\Services\\EmptyDeliveryService'; $fields["PARENT_ID"] = 0; $fields["CURRENCY"] = 'RUB'; $fields["ACTIVE"] = "Y"; $fields["CONFIG"] = array('MAIN' => array('CURRENCY' => 'RUB', 'PRICE' => 0, 'PERIOD' => array('FROM' => 0, 'TO' => 0, 'TYPE' => 'D'))); $fields["SORT"] = 100; $res = \Bitrix\Sale\Delivery\Services\Table::add($fields); $id = $res->getId(); $fields = array('SORT' => 100, 'DELIVERY_ID' => $id, 'PARAMS' => array('PUBLIC_SHOW' => 'N')); $rstrPM = new \Bitrix\Sale\Delivery\Restrictions\ByPublicMode(); $rstrPM->save($fields); } $start = microtime(true); $res = null; $orderDeliveryId = 'o.DELIVERY_ID'; if ($DB->type == "MYSQL") { $res = $DB->Query('SELECT id FROM b_sale_order_delivery LIMIT 1', false); } elseif ($DB->type == "MSSQL") { $res = $DB->Query('SELECT TOP(1) id FROM b_sale_order_delivery', false); } elseif ($DB->type == "ORACLE") { $res = $DB->Query('SELECT id FROM b_sale_order_delivery WHERE ROWNUM=1', false); $orderDeliveryId = 'TO_NUMBER(' . $orderDeliveryId . ')';
public static function getGroupId($name) { $result = 0; $res = Table::getList(array('select' => array("ID"), 'filter' => array("=NAME" => $name, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Services\\Group'))); if ($group = $res->fetch()) { $result = $group["ID"]; } else { $res = Table::add(array("NAME" => $name, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Services\\Group', "ACTIVE" => "Y")); if ($res->isSuccess()) { $result = $res->getId(); } else { throw new SystemException(implode("<br>\n", $res->getErrorMessages())); } } return $result; }
public static function getByParentId($parentId) { static $hitCache = array(); if (isset($hitCache[$parentId])) { return $hitCache[$parentId]; } $result = array(); $dbRes = \Bitrix\Sale\Delivery\Services\Table::getList(array('filter' => array("PARENT_ID" => $parentId))); while ($child = $dbRes->fetch()) { $result[$child["ID"]] = $child; } $hitCache[$parentId] = $result; return $result; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if (!CModule::IncludeModule("sale")) { ShowError(GetMessage("SALE_MODULE_NOT_INSTALL")); return; } $arParams["AJAX_CALL"] = $arParams["AJAX_CALL"] == "Y" ? "Y" : "N"; $arParams["STEP"] = intval($arParams["STEP"]); if (isset($arParams["DELIVERY"]) && isset($arParams["PROFILE"]) && !isset($arParams["DELIVERY_ID"])) { $arParams["DELIVERY_ID"] = \Bitrix\Sale\Delivery\Services\Table::getIdByCode($arParams["DELIVERY"] . ":" . $arParams["PROFILE"]); } $arParams['NO_AJAX'] = $arParams['NO_AJAX'] == 'Y' ? 'Y' : 'N'; if ($arParams['NO_AJAX'] == 'Y') { $arParams['AJAX_CALL'] = 'Y'; $arParams['STEP'] = 1; } if (!isset($arParams["EXTRA_PARAMS"])) { $arParams["EXTRA_PARAMS"] = array(); } $arParams["LOCATION_TO"] = intval($arParams["LOCATION_TO"]); $arParams["LOCATION_FROM"] = intval($arParams["LOCATION_FROM"]); if ($arParams["LOCATION_FROM"] <= 0) { $arParams["LOCATION_FROM"] = COption::GetOptionString('sale', 'location'); } $arParams["STEP"] = intval($arParams["STEP"]); if ($arParams["STEP"] <= 0) { $arParams["AJAX_CALL"] = 'N'; }
/** * @return string * @throws Exception * @internal */ public static function createNoDeliveryServiceAgent() { $id = \Bitrix\Sale\Delivery\Services\EmptyDeliveryService::getEmptyDeliveryServiceId(); if ($id <= 0) { Bitrix\Main\Localization\Loc::loadLanguageFile($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/sale/lib/delivery/helper.php', 'ru'); $fields = array(); $fields["NAME"] = \Bitrix\Main\Localization\Loc::getMessage('SALE_DELIVERY_HELPER_NO_DELIVERY_SERVICE'); $fields["CLASS_NAME"] = '\\Bitrix\\Sale\\Delivery\\Services\\EmptyDeliveryService'; $fields["CURRENCY"] = 'RUB'; $fields["ACTIVE"] = "Y"; $fields["CONFIG"] = array('MAIN' => array('CURRENCY' => 'RUB', 'PRICE' => 0, 'PERIOD' => array('FROM' => 0, 'TO' => 0, 'TYPE' => 'D'))); $res = \Bitrix\Sale\Delivery\Services\Table::add($fields); $id = $res->getId(); $fields = array('SORT' => 100, 'DELIVERY_ID' => $id, 'PARAMS' => array('PUBLIC_SHOW' => 'N')); $rstrPM = new \Bitrix\Sale\Delivery\Restrictions\ByPublicMode(); $rstrPM->save($fields); } return ""; }
protected function getDeliveryCodes() { $this->deliveryCodes = array(); $deliveryIterator = Sale\Delivery\Services\Table::getList(array('select' => array('ID', 'CODE'))); while ($delivery = $deliveryIterator->fetch()) { $delivery['CODE'] = (string) $delivery['CODE']; if ($delivery['CODE'] == '') { continue; } $this->deliveryCodes[$delivery['CODE']] = $delivery['ID']; } unset($delivery, $deliveryIterator); }
/** * @param array $data * * @return array */ public static function convertRowData(array $data) { if (isset($data['DELIVERY_ID']) && intval($data['DELIVERY_ID']) > 0) { $data['DELIVERY_ID'] = \Bitrix\Sale\Delivery\Services\Table::getCodeById($data['DELIVERY_ID']); } return $data; }
public static function onAfterAdd($serviceId, array $fields = array()) { if ($serviceId <= 0) { return false; } $res = \Bitrix\Sale\Delivery\Services\Table::update($serviceId, array('CODE' => $serviceId)); return $res->isSuccess(); }
/** * Function returns reference data as shared cache between this component and sale.personal.order.list. * * @throws Exception * @return void */ protected function obtainDataReferences() { if ($this->startCache(array('spo-shared'))) { try { $cachedData = array(); ///////////////////// ///////////////////// // Person type $dbPType = CSalePersonType::GetList(array("SORT" => "ASC")); while ($arPType = $dbPType->Fetch()) { $cachedData['PERSON_TYPE'][$arPType["ID"]] = $arPType; } // Save statuses for Filter form $dbStatus = CSaleStatus::GetList(array("SORT" => "ASC"), array("LID" => LANGUAGE_ID)); while ($arStatus = $dbStatus->Fetch()) { $cachedData['STATUS'][$arStatus["ID"]] = $arStatus; } $dbPaySystem = CSalePaySystem::GetList(array("SORT" => "ASC")); while ($arPaySystem = $dbPaySystem->Fetch()) { $arPaySystem['NAME'] = htmlspecialcharsbx($arPaySystem['NAME']); $cachedData['PAYSYS'][$arPaySystem["ID"]] = $arPaySystem; } $cachedData['DELIVERY'] = array(); $shipmentIds = array(); foreach ($this->dbResult['SHIPMENT'] as $shipment) { $shipmentIds[] = $shipment['DELIVERY_ID']; } $dbDelivery = \Bitrix\Sale\Delivery\Services\Table::getList(array('select' => array('ID', 'NAME', 'PARENT_NAME' => 'PARENT.NAME', 'PARENT_CLASS_NAME' => 'PARENT.CLASS_NAME'), 'filter' => array('ID' => $shipmentIds))); $deliveryService = array(); while ($delivery = $dbDelivery->fetch()) { $deliveryService[$delivery['ID']] = $delivery; } foreach ($deliveryService as $delivery) { $cachedData['DELIVERY'][$delivery["ID"]] = array(); if ($delivery['PARENT_NAME']) { $cachedData['DELIVERY'][$delivery["ID"]]['NAME'] = htmlspecialcharsbx($delivery['PARENT_NAME'] . ':' . $delivery['NAME']); } else { $cachedData['DELIVERY'][$delivery["ID"]]['NAME'] = htmlspecialcharsbx($delivery['NAME']); } } ///////////////////// ///////////////////// } catch (Exception $e) { $this->abortCache(); throw $e; } $this->endCache($cachedData); } else { $cachedData = $this->getCacheData(); } $this->dbResult = array_merge($this->dbResult, $this->adaptCachedReferences($cachedData)); }
$row->AddField("NAME", '<a href="' . $actUrl . '" class="adm-list-table-icon-link">' . '<span class="adm-submenu-item-link-icon adm-list-table-icon sale_section_icon"></span>' . '<span class="adm-list-table-link">' . $f_NAME . '</span>' . '</a>'); } else { $actUrl = "sale_delivery_service_edit.php?lang=" . LANG . "&PARENT_ID=" . $f_PARENT_ID . "&ID=" . $f_ID . "&back_url=" . $backUrl; $row =& $lAdmin->AddRow($f_ID, $service, $actUrl, GetMessage("SALE_SALE_EDIT_DESCR")); $row->AddField("NAME", '<a href="' . $actUrl . '" class="adm-list-table-icon-link">' . '<span class="adm-list-table-link">' . $f_NAME . '</span>' . '</a>'); } $row->AddField("ID", $f_ID); $logoHtml = intval($f_LOGOTIP) > 0 ? CFile::ShowImage(CFile::GetFileArray($f_LOGOTIP), 150, 150, "border=0", "", false) : ""; $row->AddField("LOGOTIP", $logoHtml); $row->AddField("DESCRIPTION", $f_DESCRIPTION); $row->AddField("SORT", $f_SORT); $row->AddField("ACTIVE", $f_ACTIVE == "Y" ? Loc::getMessage("SALE_SDL_YES") : Loc::getMessage("SALE_SDL_NO")); $row->AddField("CLASS_NAME", (is_callable($f_CLASS_NAME . "::getClassTitle") ? $f_CLASS_NAME::getClassTitle() : "") . " [" . $f_CLASS_NAME . "]"); $groupNameHtml = ""; if ($f_PARENT_ID > 0) { $res = \Bitrix\Sale\Delivery\Services\Table::getById($f_PARENT_ID); if ($group = $res->fetch()) { $groupNameHtml = '<a href="sale_delivery_service_edit.php?lang=' . LANG . '&PARENT_ID=' . $group["PARENT_ID"] . '&ID=' . $group["ID"] . "&back_url=" . $backUrl . '">' . htmlspecialcharsbx($group["NAME"]) . '</a>'; } } $row->AddField("GROUP_NAME", $groupNameHtml); $arActions = array(); $arActions[] = array("ICON" => "copy", "TEXT" => Loc::getMessage("SALE_SDL_COPY_DESCR"), "ACTION" => 'BX.Sale.Delivery.showGroupsDialog("sale_delivery_service_edit.php?lang=' . LANG . '&ID=' . $f_ID . '&action=copy","' . $f_PARENT_ID . "&back_url=" . $backUrl . '");', "DEFAULT" => true); $arActions[] = array("ICON" => "edit", "TEXT" => Loc::getMessage("SALE_SDL_EDIT_DESCR"), "ACTION" => $lAdmin->ActionRedirect("sale_delivery_service_edit.php?lang=" . LANG . "&PARENT_ID=" . $f_PARENT_ID . "&ID=" . $f_ID . "&back_url=" . $backUrl), "DEFAULT" => true); if ($saleModulePermissions >= "W") { $arActions[] = array("SEPARATOR" => true); $arActions[] = array("ICON" => "delete", "TEXT" => Loc::getMessage("SALE_SDL_DELETE_DESCR"), "ACTION" => "if(confirm('" . Loc::getMessage('SALE_SDL_CONFIRM_DEL_MESSAGE') . "')) " . $lAdmin->ActionDoGroup($f_ID, "delete", "PARENT_ID=" . $f_PARENT_ID)); } $row->AddActions($arActions); } $lAdmin->AddFooter(array(array("title" => Loc::getMessage("MAIN_ADMIN_LIST_SELECTED"), "value" => $dbResultList->SelectedRowsCount()), array("counter" => true, "title" => Loc::getMessage("MAIN_ADMIN_LIST_CHECKED"), "value" => "0")));
/** * @param bool|string $strControlID * @return array|bool */ public static function GetControls($strControlID = false) { $arSalePersonTypes = array(); $arFilter = array(); if (static::$boolInit) { if (isset(static::$arInitParams['SITE_ID'])) { $arFilter['LID'] = static::$arInitParams['SITE_ID']; } } $rsPersonTypes = CSalePersonType::GetList(array(), $arFilter, false, false, array('ID', 'NAME', 'LIDS')); while ($arPersonType = $rsPersonTypes->Fetch()) { $arPersonType['ID'] = intval($arPersonType['ID']); $arSalePersonTypes[$arPersonType['ID']] = $arPersonType['NAME'] . '(' . implode(' ', $arPersonType['LIDS']) . ')'; } $arSalePaySystemList = array(); $arFilter = array(); $rsPaySystems = CSalePaySystem::GetList(array(), $arFilter, false, false, array('ID', 'NAME')); while ($arPaySystem = $rsPaySystems->Fetch()) { $arSalePaySystemList[$arPaySystem['ID']] = $arPaySystem['NAME']; } $linearDeliveryList = array(); $deliveryList = array(); $deliveryIterator = Sale\Delivery\Services\Table::getList(array('select' => array('ID', 'CODE', 'NAME', 'PARENT_ID'), 'order' => array('PARENT_ID' => 'ASC', 'SORT' => 'ASC', 'NAME' => 'ASC'))); while ($delivery = $deliveryIterator->fetch()) { $deliveryId = (int) $delivery['ID']; $parentId = (int) $delivery['PARENT_ID']; if ($parentId > 0) { if (isset($deliveryList[$parentId])) { $deliveryList[$parentId]['PROFILES'][$deliveryId] = array('ID' => $deliveryId, 'TITLE' => $delivery['NAME']); } } else { $deliveryList[$deliveryId] = array('ID' => $deliveryId, 'TITLE' => $delivery['NAME'], 'PROFILES' => array()); } unset($parentId, $deliveryId); } unset($delivery, $deliveryIterator); if (!empty($deliveryList)) { foreach ($deliveryList as &$delivery) { if (empty($delivery['PROFILES'])) { $linearDeliveryList[$delivery['ID']] = $delivery['TITLE']; } else { foreach ($delivery['PROFILES'] as $profile) { $linearDeliveryList[$profile['ID']] = $profile['TITLE']; } unset($profile); } } unset($delivery); } unset($deliveryList); $arLabels = array(BT_COND_LOGIC_EQ => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_EQ_LABEL'), BT_COND_LOGIC_NOT_EQ => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_NOT_EQ_LABEL'), BT_COND_LOGIC_GR => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_GR_LABEL'), BT_COND_LOGIC_LS => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_LS_LABEL'), BT_COND_LOGIC_EGR => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_EGR_LABEL'), BT_COND_LOGIC_ELS => Loc::getMessage('BT_SALE_AMOUNT_LOGIC_ELS_LABEL')); $arLabelsWeight = array(BT_COND_LOGIC_EQ => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_EQ_LABEL'), BT_COND_LOGIC_NOT_EQ => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_NOT_EQ_LABEL'), BT_COND_LOGIC_GR => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_GR_LABEL'), BT_COND_LOGIC_LS => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_LS_LABEL'), BT_COND_LOGIC_EGR => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_EGR_LABEL'), BT_COND_LOGIC_ELS => Loc::getMessage('BT_SALE_WEIGHT_LOGIC_ELS_LABEL')); $arControlList = array('CondSaleOrderSumm' => array('ID' => 'CondSaleOrderSumm', 'FIELD' => 'ORDER_PRICE', 'FIELD_TYPE' => 'double', 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_ORDER_SUMM_LABEL_EXT'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_ORDER_SUMM_PREFIX_EXT'), 'LOGIC' => static::GetLogicEx(array_keys($arLabels), $arLabels), 'JS_VALUE' => array('type' => 'input')), 'CondSalePersonType' => array('ID' => 'CondSalePersonType', 'FIELD' => 'PERSON_TYPE_ID', 'FIELD_TYPE' => 'int', 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_PERSON_TYPE_LABEL'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_PERSON_TYPE_PREFIX'), 'LOGIC' => static::GetLogic(array(BT_COND_LOGIC_EQ, BT_COND_LOGIC_NOT_EQ)), 'JS_VALUE' => array('type' => 'select', 'multiple' => 'Y', 'values' => $arSalePersonTypes, 'show_value' => 'Y'), 'PHP_VALUE' => array('VALIDATE' => 'list')), 'CondSalePaySystem' => array('ID' => 'CondSalePaySystem', 'FIELD' => 'PAY_SYSTEM_ID', 'FIELD_TYPE' => 'int', 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_PAY_SYSTEM_LABEL'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_PAY_SYSTEM_PREFIX'), 'LOGIC' => static::GetLogic(array(BT_COND_LOGIC_EQ, BT_COND_LOGIC_NOT_EQ)), 'JS_VALUE' => array('type' => 'select', 'multiple' => 'Y', 'values' => $arSalePaySystemList, 'show_value' => 'Y'), 'PHP_VALUE' => array('VALIDATE' => 'list')), 'CondSaleDelivery' => array('ID' => 'CondSaleDelivery', 'FIELD' => 'DELIVERY_ID', 'FIELD_TYPE' => 'string', 'FIELD_LENGTH' => 50, 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_DELIVERY_LABEL'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_CMP_SALE_DELIVERY_PREFIX'), 'LOGIC' => static::GetLogic(array(BT_COND_LOGIC_EQ, BT_COND_LOGIC_NOT_EQ)), 'JS_VALUE' => array('type' => 'select', 'multiple' => 'Y', 'values' => $linearDeliveryList, 'show_value' => 'Y'), 'PHP_VALUE' => array('VALIDATE' => 'list')), 'CondSaleOrderWeight' => array('ID' => 'CondSaleOrderWeight', 'FIELD' => 'ORDER_WEIGHT', 'FIELD_TYPE' => 'double', 'LABEL' => Loc::getMessage('BT_MOD_SALE_COND_SALE_ORDER_WEIGHT_LABEL'), 'PREFIX' => Loc::getMessage('BT_MOD_SALE_COND_SALE_ORDER_WEIGHT_PREFIX'), 'LOGIC' => static::GetLogicEx(array_keys($arLabelsWeight), $arLabelsWeight), 'JS_VALUE' => array('type' => 'input'))); foreach ($arControlList as &$control) { $control['EXECUTE_MODULE'] = 'sale'; $control['MODULE_ID'] = 'sale'; $control['MODULE_ENTITY'] = 'sale'; $control['ENTITY'] = 'ORDER'; $control['MULTIPLE'] = 'N'; $control['GROUP'] = 'N'; } unset($control); if ($strControlID === false) { return $arControlList; } elseif (isset($arControlList[$strControlID])) { return $arControlList[$strControlID]; } else { return false; } }
private static function getDeliveryServiceInfoById($id) { $service = null; if ($id > 0) { $resService = \Bitrix\Sale\Delivery\Services\Table::getList(array('filter' => array('ID' => $id), 'order' => array('SORT' => 'ASC', 'NAME' => 'ASC'), 'select' => array("ID", "NAME", "DESCRIPTION", "LOGOTIP", "CLASS_NAME", "PARENT_ID", "CONFIG"))); $service = $resService->fetch(); } return $service; }
public static function onAfterAdd($serviceId, array $fields = array()) { if ($serviceId <= 0) { return false; } $fields["ID"] = $serviceId; $srv = new self($fields); $profiles = $srv->getProfilesDefaultParams($fields); if (!is_array($profiles)) { return false; } $result = true; foreach ($profiles as $profile) { $res = Table::add($profile); $result = $result && $res->isSuccess(); } return $result; }
protected static function getEntityItemsFullList($entityType) { static $result = array(); if (isset($result[$entityType])) { return $result[$entityType]; } $result[$entityType] = array(); if ($entityType == self::ENTITY_TYPE_DELIVERY) { $dbRes = Services\Table::getList(array('filter' => array("ACTIVE" => "Y"), 'select' => array("ID"))); while ($dsrv = $dbRes->fetch()) { $result[$entityType][] = $dsrv["ID"]; } } else { $dbRes = PaySystemServiceTable::getList(array('filter' => array("ACTIVE" => "Y"), 'select' => array("ID"))); while ($ps = $dbRes->fetch()) { $result[$entityType][] = $ps["ID"]; } } return $result[$entityType]; }