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;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 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();
     }
 }
Example #9
0
 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;
 }
Example #10
0
 /**
  * @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;
 }
Example #11
0
 /**
  * @return array Fields witch user will see on delivery admin page
  */
 public static function getAdminFieldsList()
 {
     return Table::getMap();
 }
Example #12
0
                 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;
 }
Example #14
0
 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);
 }
Example #15
0
 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;
 }
Example #17
0
         $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 . ')';
Example #18
0
 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;
 }
Example #19
0
 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;
 }
Example #20
0
<?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';
}
Example #21
0
 /**
  * @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 "";
 }
Example #22
0
 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;
 }
Example #24
0
 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();
 }
Example #25
0
 /**
  * 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")));
Example #27
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;
     }
 }
Example #28
0
 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;
 }
Example #29
0
 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];
 }