/** * getRegionsList * @return array regions (locations) list */ public static function getRegionsList($countryId = 0, $bFlip = false) { static $arRegions = array(); $flipIndex = intval($bFlip); if (isset($arRegions[$countryId][$flipIndex])) { return $arRegions[$countryId][$flipIndex]; } if (CSaleLocation::isLocationProMigrated()) { $types = array(); $res = \Bitrix\Sale\Location\TypeTable::getList(array('select' => array('ID', 'CODE'))); while ($item = $res->fetch()) { $types[$item['CODE']] = $item['ID']; } $filter = array(array('LOGIC' => 'OR', array('=TYPE_ID' => $types['CITY'], '=NAME.LANGUAGE_ID' => LANGUAGE_ID, array('LOGIC' => 'OR', array('=PARENT.TYPE_ID' => $types['COUNTRY']), array('=PARENT.TYPE_ID' => $types['COUNTRY_DISTRICT']), array('=PARENT_ID' => '0'))), array('=TYPE_ID' => $types['REGION']))); if (intval($countryId)) { $filter['=PARENTS.TYPE_ID'] = $types['COUNTRY']; $filter['=PARENTS.ID'] = $countryId; } $dbRegionList = \Bitrix\Sale\Location\LocationTable::getList(array('filter' => $filter, 'select' => array('ID', 'CODE', 'NAME_LANG' => 'NAME.NAME'), 'order' => array('NAME.NAME' => 'asc'))); } else { $arFilterRegion = array(); if (intval($countryId) > 0) { $arFilterRegion["COUNTRY_ID"] = $countryId; } $dbRegionList = CSaleLocation::GetRegionList(array("NAME_LANG" => "ASC"), $arFilterRegion, LANGUAGE_ID); } $key = 'ID'; while ($arRegionList = $dbRegionList->Fetch()) { if ($key == 'ID' && isset($arRegionList['CODE'])) { $key = 'CODE'; } if ($key == 'CODE' && strlen($arRegionList['CODE']) <= 0) { continue; } $arRegions[$countryId][0][$arRegionList[$key]] = $arRegionList["NAME_LANG"]; // $bFlip == false $arRegions[$countryId][1][$arRegionList["NAME_LANG"]] = $arRegionList[$key]; // $bFlip == true } return isset($arRegions[$countryId][$flipIndex]) ? $arRegions[$countryId][$flipIndex] : array(); }
public function onBeforePerformIteration() { if(\CSaleLocation::isLocationProMigrated()) throw new Main\SystemException('Already migrated'); if(!isset($this->data['migrator_data'])) $this->migrator = new CUpdaterLocationPro(); else $this->migrator = unserialize($this->data['migrator_data']); }
protected static function addPropertyValueField($tableAlias = 'V', &$arFields, &$arSelectFields) { $tableAlias = \Bitrix\Main\HttpApplication::getConnection()->getSqlHelper()->forSql($tableAlias); // locations kept in CODEs, but must be shown as IDs if (CSaleLocation::isLocationProMigrated()) { $arSelectFields = array_merge(array('PROP_TYPE'), $arSelectFields); // P.TYPE should be there and go above our join $arFields['VALUE'] = array("FIELD" => "\n\t\t\t\tCASE\n\n\t\t\t\t\tWHEN\n\t\t\t\t\t\tP.TYPE = 'LOCATION'\n\t\t\t\t\tTHEN\n\t\t\t\t\t\tCAST(L.ID as " . \Bitrix\Sale\Location\DB\Helper::getSqlForDataType('char', 255) . ")\n\n\t\t\t\t\tELSE\n\t\t\t\t\t\t" . $tableAlias . ".VALUE\n\t\t\t\tEND\n\t\t\t", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location L ON (P.TYPE = 'LOCATION' AND " . $tableAlias . ".VALUE IS NOT NULL AND " . $tableAlias . ".VALUE = L.CODE)"); $arFields['VALUE_ORIG'] = array("FIELD" => $tableAlias . ".VALUE", "TYPE" => "string"); } else { $arFields['VALUE'] = array("FIELD" => $tableAlias . ".VALUE", "TYPE" => "string"); } }
function Update($ID, $arFields) { global $DB; $ID = IntVal($ID); // need to check here if we got CODE or ID came if (isset($arFields['VALUE']) && (string) $arFields['VALUE'] != '' && CSaleLocation::isLocationProMigrated()) { $propValue = self::GetByID($ID); if ($propValue['TYPE'] == 'LOCATION') { $arFields['VALUE'] = CSaleLocation::tryTranslateIDToCode($arFields['VALUE']); } } $strUpdate = $DB->PrepareUpdate("b_sale_user_props_value", $arFields); $strSql = "UPDATE b_sale_user_props_value SET " . "\t" . $strUpdate . " " . "WHERE ID = " . $ID . " "; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); return $ID; }
public static function getLocationString($locID) { if (CSaleLocation::isLocationProMigrated()) { if (!strlen($locID)) { return ''; } if ((string) $locID === (string) intval($locID)) { return \Bitrix\Sale\Location\Admin\LocationHelper::getLocationStringById($locID); } else { return \Bitrix\Sale\Location\Admin\LocationHelper::getLocationStringByCode($locID); } } else { if (!is_int($locID)) { $locID = (int) $locID; } if ($locID <= 0 || !(IsModuleInstalled('sale') && CModule::IncludeModule('sale'))) { return ''; } $entity = new CSaleLocation(); return $entity->GetLocationString($locID); } }
use Bitrix\Main; use Bitrix\Main\Loader; use Bitrix\Main\SiteTable; use Bitrix\Main\Config\Option; use Bitrix\Sale\SalesZone; use Bitrix\Sale; $SALE_RIGHT = $APPLICATION->GetGroupRight($module_id); if ($SALE_RIGHT >= "R") { IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/options.php'); IncludeModuleLangFile(__FILE__); Main\Page\Asset::getInstance()->addJs('/bitrix/js/sale/options.js'); $APPLICATION->SetAdditionalCSS("/bitrix/themes/.default/sale.css"); Loader::includeModule('sale'); Loader::includeModule('currency'); $lpEnabled = CSaleLocation::isLocationProEnabled(); $lMigrated = CSaleLocation::isLocationProMigrated(); function checkAccountNumberValue($templateType, $number_data, $number_prefix) { $res = true; switch ($templateType) { case 'NUMBER': if (strlen($number_data) <= 0 || strlen($number_data) > 7 || !preg_match('/^[0-9]+$/', $number_data) || intval($number_data) < intval(COption::GetOptionString("sale", "account_number_data", ""))) { $res = false; } break; case 'PREFIX': if (strlen($number_prefix) <= 0 || strlen($number_prefix) > 7 || preg_match('/[^a-zA-Z0-9_-]/', $number_prefix)) { $res = false; } break; }
private static function calculatePackPrice($arPackage, $profile, $arConfig, $arLocationTo) { $arDebug = array(); /*1 Land price 1.1 Base Price less 10 kg*/ $code = self::getRegionCodeByOldName($arLocationTo['REGION_NAME_LANG']); // old location if (strlen($code) <= 0 && CSaleLocation::isLocationProMigrated()) { $dbRes = Location\LocationTable::getList(array('filter' => array('=TYPE.CODE' => 'REGION', '=REGION_ID' => intval($arLocationTo["REGION_ID"]), '=CITY_ID' => false), 'select' => array('ID', 'CODE', 'NAME'))); if ($locReg = $dbRes->fetch()) { $code = $locReg["CODE"]; } } if (strlen($code) <= 0) { throw new \Bitrix\Main\SystemException(GetMessage("SALE_DH_RP_ERROR_LOCATION_NOT_FOUND")); } $zoneTo = self::getConfValue($arConfig, 'REG_' . $code); $basePrice = floatval(self::getConfValue($arConfig, 'ZONE_RATE_MAIN_' . $zoneTo)); $arDebug[] = 'Base Price less 500 g: ' . $basePrice; if ($arPackage['WEIGHT'] > self::$BASE_WEIGHT) { $addWeight = ceil($arPackage['WEIGHT'] / self::$BASE_WEIGHT - 1); $addPrice = floatval(self::getConfValue($arConfig, 'ZONE_RATE_ADD_' . $zoneTo)); $arDebug[] = 'Price for additional weight more than 500 g: ' . $addWeight * $addPrice; $basePrice += $addWeight * $addPrice; } $totalPrice = $basePrice; /* 1.2 Service "heavy weight" 10 - 20 kg*/ $hwPrice = 0; if ($arPackage['WEIGHT'] >= self::$MAX_WEIGHT) { $hwTarif = floatval(self::getConfValue($arConfig, 'service_' . self::$TARIF_HEAVY_WEIGHT . '_value')); $hwPrice += $totalPrice * $hwTarif / 100; $arDebug[] = 'Heavy weight: ' . $hwPrice; $totalPrice += $hwPrice; } /* 1.5 Service "fragile" */ $fPrice = 0; if (self::isConfCheckedVal($arConfig, 'service_' . self::$TARIF_FRAGILE . '_enabled')) { $fTarif = floatval(self::getConfValue($arConfig, 'service_' . self::$TARIF_FRAGILE . '_value')); $fPrice += $totalPrice * $fTarif / 100; $arDebug[] = 'Fragile: ' . $fPrice; $totalPrice += $fPrice; } /* 4. Service "declared value" */ $dvPrice = 0; if (self::isConfCheckedVal($arConfig, 'service_' . self::$TARIF_DECLARED_VAL . '_enabled')) { $dvTarif = floatval(self::getConfValue($arConfig, 'service_' . self::$TARIF_DECLARED_VAL . '_value')); $dvPrice += ($arPackage['PRICE'] + $totalPrice) * $dvTarif; $arDebug[] = 'Declared value: ' . $dvPrice; $totalPrice += $dvPrice; } if ($profile == 'avia') { $aviaPrice = 0; $aviaPrice = floatval(self::getConfValue($arConfig, 'tarif_avia_' . self::$TARIF_AVIA_STANDART . '_value')); $arDebug[] = 'avia price: ' . $aviaPrice; $totalPrice += $aviaPrice; $aviaHeavyPrice = 0; if ($arPackage['WEIGHT'] > self::$MAX_WEIGHT) { $aviaHeavyPrice = floatval(self::getConfValue($arConfig, 'tarif_avia_' . self::$TARIF_AVIA_HEAVY . '_value')); $arDebug[] = 'avia heavy price: ' . $aviaHeavyPrice; $totalPrice += $aviaHeavyPrice; } } return $totalPrice; }
/** * @param array $arFilter * @return bool|CDBResult * @deprecated */ function GetLocationList($arFilter = array()) { if (CSaleLocation::isLocationProMigrated()) { try { return CSaleLocation::getDenormalizedLocationList(self::CONN_ENTITY_NAME, $arFilter); } catch (Exception $e) { $dbResult = new CDBResult(); $dbResult->InitFromArray(array()); return $dbResult; } } else { global $DB; $arSqlSearch = array(); if (!is_array($arFilter)) { $filter_keys = array(); } else { $filter_keys = array_keys($arFilter); } $countFilterKey = count($filter_keys); for ($i = 0; $i < $countFilterKey; $i++) { $val = $DB->ForSql($arFilter[$filter_keys[$i]]); if (strlen($val) <= 0) { continue; } $key = $filter_keys[$i]; if ($key[0] == "!") { $key = substr($key, 1); $bInvert = true; } else { $bInvert = false; } switch (ToUpper($key)) { case "DELIVERY_ID": $arSqlSearch[] = "DL.DELIVERY_ID " . ($bInvert ? "<>" : "=") . " " . IntVal($val) . " "; break; case "LOCATION_ID": $arSqlSearch[] = "DL.LOCATION_CODE " . ($bInvert ? "<>" : "=") . " " . IntVal($val) . " "; break; case "LOCATION_TYPE": $arSqlSearch[] = "DL.LOCATION_TYPE " . ($bInvert ? "<>" : "=") . " '" . $val . "' "; break; } } $strSqlSearch = ""; $countSqlSearch = count($arSqlSearch); for ($i = 0; $i < $countSqlSearch; $i++) { $strSqlSearch .= " AND "; $strSqlSearch .= " (" . $arSqlSearch[$i] . ") "; } $strSql = "SELECT DL.DELIVERY_ID, DL.LOCATION_CODE as LOCATION_ID, DL.LOCATION_TYPE " . "FROM b_sale_delivery2location DL " . "WHERE 1 = 1 " . "\t" . $strSqlSearch . " "; $db_res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); return $db_res; } }
public static function getLocationCODEbyID($id) { if(CSaleLocation::isLocationProMigrated() && intval($id)) { // we must convert ID to CODE $item = Location\LocationTable::getById($id)->fetch(); if(empty($item)) return ''; return $item['CODE']; } return $id; }
$arResult["ORDER_PROP"]["PRINT"][$arProperties["ID"]] = Array("ID" => $arProperties["ID"], "NAME" => $arProperties["NAME"], "VALUE" => $arProperties["VALUE_FORMATED"], "SHOW_GROUP_NAME" => $arProperties["SHOW_GROUP_NAME"]); } // additional city property process foreach($propIndex as $propId => $propDesc) { if(intval($propDesc['INPUT_FIELD_LOCATION']) && isset($propIndex[$propDesc['INPUT_FIELD_LOCATION']])) $propIndex[$propDesc['INPUT_FIELD_LOCATION']]['IS_ALTERNATE_LOCATION_FOR'] = $propId; } foreach(GetModuleEvents("sale", "OnSaleComponentOrderOneStepOrderProps", true) as $arEvent) ExecuteModuleEventEx($arEvent, Array(&$arResult, &$arUserResult, &$arParams)); /* Order Props End */ //delete prop for text location if (!CSaleLocation::isLocationProMigrated() && count($arDeleteFieldLocation) > 0) { foreach ($arDeleteFieldLocation as $fieldId) unset($arResult["ORDER_PROP"]["USER_PROPS_Y"][$fieldId]); } /* Delivery Begin */ if ((int)$arUserResult["DELIVERY_LOCATION"] > 0) { $arFilter = array( "COMPABILITY" => array( "WEIGHT" => $arResult["ORDER_WEIGHT"], "PRICE" => $arResult["ORDER_PRICE"], "LOCATION_FROM" => COption::GetOptionString('sale', 'location', false, SITE_ID), "LOCATION_TO" => $arUserResult["DELIVERY_LOCATION"], "LOCATION_ZIP" => $arUserResult["DELIVERY_LOCATION_ZIP"],
/** * Function gets order properties from database * @param mixed[] $cached Cached data taken from obtainDataCachedStructure() * @return void */ protected function obtainProps(&$cached) { if (empty($this->dbResult["ID"])) { return; } $props = array(); $dbOrderProps = CSaleOrderPropsValue::GetOrderProps($this->dbResult["ID"]); $iGroup = -1; while ($arOrderProps = $dbOrderProps->GetNext()) { if (empty($this->arParams["PROP_" . $this->dbResult["PERSON_TYPE_ID"]]) || !in_array($arOrderProps["ORDER_PROPS_ID"], $this->arParams["PROP_" . $this->dbResult["PERSON_TYPE_ID"]])) { if ($arOrderProps["ACTIVE"] == "Y" && $arOrderProps["UTIL"] == "N") { $arOrderPropsTmp = $arOrderProps; if ($iGroup != intval($arOrderProps["PROPS_GROUP_ID"])) { $arOrderPropsTmp["SHOW_GROUP_NAME"] = "Y"; $iGroup = intval($arOrderProps["PROPS_GROUP_ID"]); } if ($arOrderProps["TYPE"] == "SELECT" || $arOrderProps["TYPE"] == "RADIO") { $arVal = CSaleOrderPropsVariant::GetByValue($arOrderProps["ORDER_PROPS_ID"], $arOrderProps["VALUE"]); $arOrderPropsTmp["VALUE"] = htmlspecialcharsEx($arVal["NAME"]); } elseif ($arOrderProps["TYPE"] == "MULTISELECT") { $arOrderPropsTmp["VALUE"] = ""; $curVal = explode(",", $arOrderProps["VALUE"]); for ($i = 0, $intCount = count($curVal); $i < $intCount; $i++) { $arVal = CSaleOrderPropsVariant::GetByValue($arOrderProps["ORDER_PROPS_ID"], $curVal[$i]); if ($i > 0) { $arOrderPropsTmp["VALUE"] .= ", "; } $arOrderPropsTmp["VALUE"] .= htmlspecialcharsEx($arVal["NAME"]); } } elseif ($arOrderProps["TYPE"] == "LOCATION") { $locationName = ""; if (CSaleLocation::isLocationProMigrated()) { $locationName = Location\Admin\LocationHelper::getLocationStringById($arOrderProps["VALUE"]); } else { $arVal = CSaleLocation::GetByID($arOrderProps["VALUE"], LANGUAGE_ID); $locationName .= !strlen($arVal["COUNTRY_NAME"]) ? "" : $arVal["COUNTRY_NAME"]; if (strlen($arVal["COUNTRY_NAME"]) && strlen($arVal["REGION_NAME"])) { $locationName .= " - " . $arVal["REGION_NAME"]; } elseif (strlen($arVal["REGION_NAME"])) { $locationName .= $arVal["REGION_NAME"]; } if (strlen($arVal["COUNTRY_NAME"]) || strlen($arVal["REGION_NAME"])) { $locationName .= " - " . $arVal["CITY_NAME"]; } elseif (strlen($arVal["CITY_NAME"])) { $locationName .= $arVal["CITY_NAME"]; } } $arOrderPropsTmp["VALUE"] = $locationName; } elseif ($arOrderProps["TYPE"] == "FILE") { if (strpos($arOrderProps["VALUE"], ",") !== false) { $fileValue = ""; $values = explode(",", $arOrderProps["VALUE"]); if (self::isNonemptyArray($values)) { foreach ($values as $fileId) { $fileValue .= CFile::ShowFile(trim($fileId), 0, 90, 90, true) . "<br/>"; } } $arOrderPropsTmp["VALUE"] = $fileValue; } else { $arOrderPropsTmp["VALUE"] = CFile::ShowFile($arOrderProps["VALUE"], 0, 90, 90, true); } } $props[] = $arOrderPropsTmp; } } } $cached["ORDER_PROPS"] = $props; }
function Update($ID, $arFields, $arOptions = array()) { global $DB; $ID = intval($ID); if ($ID <= 0 || !CSaleDelivery::CheckFields("UPDATE", $arFields)) return false; if (array_key_exists("LOGOTIP", $arFields) && is_array($arFields["LOGOTIP"])) $arFields["LOGOTIP"]["MODULE_ID"] = "sale"; CFile::SaveForDB($arFields, "LOGOTIP", "sale/delivery/logotip"); $strUpdate = $DB->PrepareUpdate("b_sale_delivery", $arFields); $strSql = "UPDATE b_sale_delivery SET ".$strUpdate." WHERE ID = ".$ID.""; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if (is_set($arFields, "LOCATIONS")) { if(CSaleLocation::isLocationProMigrated()) { Helper::resetLocationsForEntity($ID, $arFields['LOCATIONS'], self::CONN_ENTITY_NAME, !!$arOptions['EXPECT_LOCATION_CODES']); } else { $DB->Query("DELETE FROM b_sale_delivery2location WHERE DELIVERY_ID = ".$ID.""); $countarFieldLoc = count($arFields["LOCATIONS"]); for ($i = 0; $i < $countarFieldLoc; $i++) { // change location id to location code $arFields["LOCATIONS"][$i]['LOCATION_CODE'] = $arFields["LOCATIONS"][$i]['LOCATION_ID']; unset($arFields["LOCATIONS"][$i]['LOCATION_ID']); $arInsert = $DB->PrepareInsert("b_sale_delivery2location", $arFields["LOCATIONS"][$i]); $strSql = "INSERT INTO b_sale_delivery2location(DELIVERY_ID, ".$arInsert[0].") ". "VALUES(".$ID.", ".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } } } if (is_set($arFields, "PAY_SYSTEM")) { CSaleDelivery::UpdateDeliveryPay($ID, $arFields["PAY_SYSTEM"]); } return $ID; }
} elseif ($arOrderProps["TYPE"] == "LOCATION") { $arOrder["LOCATION_TO"] = $arOrderProps["VALUE"]; if(CSaleLocation::isLocationProEnabled()) { $locationString = Location\Admin\LocationHelper::getLocationStringByCode($arOrderProps['VALUE']); if(!strlen($locationString)) $locationString = $arOrderProps['VALUE']; print(htmlspecialcharsEx($locationString)); } else { if(CSaleLocation::isLocationProMigrated()) $arOrderProps["VALUE"] = CSaleLocation::getLocationIDbyCODE($arOrderProps["VALUE"]); $arVal = CSaleLocation::GetByID($arOrderProps["VALUE"], LANG); $locationString = $arVal["COUNTRY_NAME"]; if (strlen($arVal["REGION_NAME"]) > 0 && strlen($locationString) > 0) $locationString .= " - ".$arVal["REGION_NAME"]; elseif (strlen($locationString) <= 0 && strlen($arVal["REGION_NAME"]) > 0) $locationString = $arVal["REGION_NAME"]; if (strlen($locationString) > 0 && strlen($arVal["CITY_NAME"]) > 0) $locationString .= " - ".$arVal["CITY_NAME"]; elseif (strlen($locationString) <= 0 && strlen($arVal["CITY_NAME"]) > 0) $locationString = $arVal["CITY_NAME"];
/** * <p>Метод возвращает набор ставок налога, удовлетворяющих фильтру arFilter. Набор упорядочен в соответствии с массивом arOrder. Метод динамичный.</p> * * * @param array $arrayarOrder = array("APPLY_ORDER"=>"ASC") Ассоциативный массив для сортировки результирующего набора * ставок налогов. Набор сортируется последовательно по каждой паре * ключ-значение массива. Ключами массива являются названия * параметров ставки налога, по значениям которых осуществляется * сортировка. Значениями являются направления сортировки.<br><br> * Допустимые ключи: <ul> <li> <b>APPLY_ORDER</b> - порядок применения;</li> <li> <b>ID</b> * - код ставки налога;</li> <li> <b>LID</b> - сайт налога;</li> <li> <b>CODE</b> - * символьный код налога;</li> <li> <b>TIMESTAMP_X</b> - дата последнего * изменения параметров ставки;</li> <li> <b>ACTIVE</b> - флаг (Y/N) активности * ставки;</li> <li> <b>NAME</b> - название налога;</li> <li> <b>PERSON_TYPE_ID</b> - тип * плательщика ставки;</li> <li> <b>IS_IN_PRICE</b> - флаг (Y/N) входит ли ставка * налога в цену</li> </ul> Допустимые значения: <ul> <li>ASC - по * возрастанию;</li> <li>DESC - по убыванию.</li> </ul> * * @param array $arrayarFilter = array() Ассоциативный массив условий для отбора (фильтрации) ставок * налогов. Ключами являются названия фильтруемых параметров * ставки налога, а значениями - условия на значения.<br><br> Допустимые * ключи: <ul> <li> <b>ID</b> - код ставки налога;</li> <li> <b>LID</b> - сайт налога;</li> * <li> <b>CODE</b> - символьный код налога;</li> <li> <b>TAX_ID</b> - код налога;</li> <li> * <b>PERSON_TYPE_ID</b> - тип плательщика ставки налога; </li> <li> <b>IS_IN_PRICE</b> - * флаг (Y/N) входит ли налог в цену;</li> <li> <b>ACTIVE</b> - флаг (Y/N) активности * ставки налога;</li> <li> <b>APPLY_ORDER</b> - порядок применения;</li> <li> <b>LOCATION</b> * - код местоположения, в котором действует ставка.</li> </ul> * * @return CDBResult <p>Возвращается объект класса CDBResult, содержащий ассоциативные * массивы параметров ставок налогов с ключами:</p> <table class="tnormal" * width="100%"> <tr> <th width="15%">Ключ</th> <th>Описание</th> </tr> <tr> <td>ID</td> <td>Код * ставки налога.</td> </tr> <tr> <td>TAX_ID</td> <td>Код налога.</td> </tr> <tr> * <td>PERSON_TYPE_ID</td> <td>Тип плательщика.</td> </tr> <tr> <td>VALUE</td> <td>Величина * налога (в процентах) </td> </tr> <tr> <td>CURRENCY</td> <td>Валюта.</td> </tr> <tr> * <td>IS_PERCENT</td> <td>Y</td> </tr> <tr> <td>IS_IN_PRICE</td> <td>Флаг (Y/N) входит ли уже налог в * цену.</td> </tr> <tr> <td>APPLY_ORDER</td> <td>Порядок применения.</td> </tr> <tr> * <td>TIMESTAMP_X</td> <td>Дата последнего изменения записи.</td> </tr> <tr> <td>LID</td> * <td>Сайт налога.</td> </tr> <tr> <td>NAME</td> <td>Название налога.</td> </tr> <tr> * <td>CODE</td> <td>Символьный код налога.</td> </tr> <tr> <td>DESCRIPTION</td> <td>Описание * налога.</td> </tr> <tr> <td>ACTIVE</td> <td>Флаг (Y/N) активности ставки.</td> </tr> </table> * <a name="examples"></a> * * <h4>Example</h4> * <pre> * <? * // Заполним массив активных ставок налогов на текущем сайте для типа плательщика * // с кодом $PERSON_TYPE и местоположением плательщика с кодом $TAX_LOCATION * * $arTaxList = array(); * * $arTaxFilter = array( * "LID" => SITE_ID, * "PERSON_TYPE_ID" => $PERSON_TYPE, * "ACTIVE" => "Y", * "LOCATION" => $TAX_LOCATION * ); * * $db_tax_rate_tmp = CSaleTaxRate::GetList(array("APPLY_ORDER"=>"ASC"), $arTaxFilter); * while ($ar_tax_rate_tmp = $db_tax_rate_tmp->Fetch()) * { * $arTaxList[] = $ar_tax_rate_tmp; * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaletaxrate/csaletaxrate__getlist.63346fa6.php * @author Bitrix */ public static function GetList($arOrder = array("APPLY_ORDER" => "ASC"), $arFilter = array()) { global $DB; $arSqlSearch = array(); $arSqlSearchFrom = array(); if (!is_array($arFilter)) { $filter_keys = array(); } else { $filter_keys = array_keys($arFilter); } $countFilteKey = count($filter_keys); for ($i = 0; $i < $countFilteKey; $i++) { $val = $DB->ForSql($arFilter[$filter_keys[$i]]); if (strlen($val) <= 0) { continue; } $key = $filter_keys[$i]; if ($key[0] == "!") { $key = substr($key, 1); $bInvert = true; } else { $bInvert = false; } switch (ToUpper($key)) { case "ID": $arSqlSearch[] = "TR.ID " . ($bInvert ? "<>" : "=") . " " . IntVal($val) . " "; break; case "LID": $arSqlSearch[] = "T.LID " . ($bInvert ? "<>" : "=") . " '" . $val . "' "; break; case "CODE": $arSqlSearch[] = "T.CODE " . ($bInvert ? "<>" : "=") . " '" . $val . "' "; break; case "TAX_ID": $arSqlSearch[] = "TR.TAX_ID " . ($bInvert ? "<>" : "=") . " " . IntVal($val) . " "; break; case "PERSON_TYPE_ID": $arSqlSearch[] = " (TR.PERSON_TYPE_ID " . ($bInvert ? "<>" : "=") . " " . IntVal($val) . " OR TR.PERSON_TYPE_ID = 0 OR TR.PERSON_TYPE_ID IS NULL) "; break; case "CURRENCY": $arSqlSearch[] = "TR.CURRENCY " . ($bInvert ? "<>" : "=") . " '" . $val . "' "; break; case "IS_PERCENT": $arSqlSearch[] = "TR.IS_PERCENT " . ($bInvert ? "<>" : "=") . " '" . $val . "' "; break; case "IS_IN_PRICE": $arSqlSearch[] = "TR.IS_IN_PRICE " . ($bInvert ? "<>" : "=") . " '" . $val . "' "; break; case "ACTIVE": $arSqlSearch[] = "TR.ACTIVE " . ($bInvert ? "<>" : "=") . " '" . $val . "' "; break; case "APPLY_ORDER": $arSqlSearch[] = "TR.APPLY_ORDER " . ($bInvert ? "<>" : "=") . " " . IntVal($val) . " "; break; case "LOCATION": if (CSaleLocation::isLocationProMigrated()) { try { $class = self::CONN_ENTITY_NAME . 'Table'; $arSqlSearch[] = "\tTR.ID in (" . $class::getConnectedEntitiesQuery(IntVal($val), 'id', array('select' => array('ID'))) . ") "; } catch (Exception $e) { } } else { $arSqlSearch[] = "\tTR.ID = TR2L.TAX_RATE_ID " . "\tAND (TR2L.LOCATION_CODE = " . IntVal($val) . " AND TR2L.LOCATION_TYPE = 'L' " . "\t\tOR L2LG.LOCATION_ID = " . IntVal($val) . " AND TR2L.LOCATION_TYPE = 'G') "; $arSqlSearchFrom[] = ", b_sale_tax2location TR2L " . "\tLEFT JOIN b_sale_location2location_group L2LG ON (TR2L.LOCATION_TYPE = 'G' AND TR2L.LOCATION_CODE = L2LG.LOCATION_GROUP_ID) "; } break; } } $strSqlSearch = ""; $countSqlSearch = count($arSqlSearch); for ($i = 0; $i < $countSqlSearch; $i++) { $strSqlSearch .= " AND "; $strSqlSearch .= " (" . $arSqlSearch[$i] . ") "; } $strSqlSearchFrom = ""; $countSqlSearchForm = count($arSqlSearchFrom); for ($i = 0; $i < $countSqlSearchForm; $i++) { $strSqlSearchFrom .= " " . $arSqlSearchFrom[$i] . " "; } $strSql = "SELECT DISTINCT TR.ID, TR.TAX_ID, TR.PERSON_TYPE_ID, TR.VALUE, TR.CURRENCY, " . "\tTR.IS_PERCENT, TR.IS_IN_PRICE, TR.APPLY_ORDER, " . $DB->DateToCharFunction("TR.TIMESTAMP_X", "FULL") . " as TIMESTAMP_X, " . "\tT.LID, T.NAME, T.DESCRIPTION, TR.ACTIVE, T.CODE " . "FROM b_sale_tax_rate TR, b_sale_tax T " . "\t" . $strSqlSearchFrom . " " . "WHERE TR.TAX_ID = T.ID " . "\t" . $strSqlSearch . " "; $arSqlOrder = array(); foreach ($arOrder as $by => $order) { $by = ToUpper($by); $order = ToUpper($order); if ($order != "ASC") { $order = "DESC"; } if ($by == "ID") { $arSqlOrder[] = " TR.ID " . $order . " "; } elseif ($by == "LID") { $arSqlOrder[] = " T.LID " . $order . " "; } elseif ($by == "CODE") { $arSqlOrder[] = " T.CODE " . $order . " "; } elseif ($by == "TIMESTAMP_X") { $arSqlOrder[] = " TR.TIMESTAMP_X " . $order . " "; } elseif ($by == "ACTIVE") { $arSqlOrder[] = " TR.ACTIVE " . $order . " "; } elseif ($by == "NAME") { $arSqlOrder[] = " T.NAME " . $order . " "; } elseif ($by == "PERSON_TYPE_ID") { $arSqlOrder[] = " TR.PERSON_TYPE_ID " . $order . " "; } elseif ($by == "IS_IN_PRICE") { $arSqlOrder[] = " TR.IS_IN_PRICE " . $order . " "; } else { $arSqlOrder[] = " TR.APPLY_ORDER " . $order . " "; $by = "APPLY_ORDER"; } } $strSqlOrder = ""; DelDuplicateSort($arSqlOrder); $countSqlOrder = count($arSqlOrder); for ($i = 0; $i < $countSqlOrder; $i++) { if ($i == 0) { $strSqlOrder = " ORDER BY "; } else { $strSqlOrder .= ","; } $strSqlOrder .= $arSqlOrder[$i]; } $strSql .= $strSqlOrder; //echo "<br>".htmlspecialcharsbx($strSql)."<br>"; $db_res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); return $db_res; }
/** * <p>Метод обновляет параметры местоположения с кодом ID в соответствии с параметрами из массива arFields. Обновляются также страна и город этого местоположения. Метод динамичный.</p> * * * @param int $ID Код местоположения. </h * * @param array $arFields Ассоциативный массив параметров местоположения с ключами: <ul> <li> * <b>SORT</b> - индекс сортировки; </li> <li> <b>COUNTRY_ID</b> - код страны (если такая * страна уже есть, иначе код должен быть нулем, и должен быть * заполнен ключ COUNTRY);</li> <li> <b>COUNTRY</b> - массив с параметрами страны * (должен быть заполнен, если не установлен ключ COUNTRY_ID или если ключ * CHANGE_COUNTRY установлен в значение Y); </li> <li> <b>CHANGE_COUNTRY</b> - флаг (Y/N), * изменять ли параметры страны (долны быть установлены ключи COUNTRY_ID * и COUNTRY); </li> <li> <b>WITHOUT_CITY</b> - флаг (Y/N), означающий, что это * местоположение без города (только страна) (если значением с этим * ключем является N, то необходимо заполнить ключ CITY);</li> <li> <b>CITY_ID</b> - * код города (если такой город уже есть, иначе код должен быть нулем, * и должен быть заполнен ключ CITY);</li> <li> <b>CITY</b> - массив с параметрами * города (если установлен флаг WITHOUT_CITY в значение Y, то этот ключ * заполнять не нужно);</li> <li> <b>LOCATION_ID</b> - массив кодов * местоположений, которые привязаны к данной группе * местоположений.</li> </ul> Массив с параметрами страны должен * содержать ключи: <ul> <li> <b>NAME</b> - название страны (не зависящее от * языка);</li> <li> <b>SHORT_NAME</b> - сокращенное название страны - абревиатура * (не зависящее от языка);</li> <li> <b><код языка></b> - ключем является * код языка, а значением ассоциативный массив вида <pre class="syntax"> * array("LID" => "код языка", "NAME" => "название страны на этом языке", * "SHORT_NAME" => "сокращенное название страны (аббревиатура) на этом * языке")</pre> Эта пара ключ-значение должна присутствовать для * каждого языка системы. </li> </ul> Массив с параметрами города должен * содержать ключи: <ul> <li> <b>NAME</b> - название города (не зависящее от * языка);</li> <li> <b>SHORT_NAME</b> - сокращенное название города - * аббревиатура (не зависящее от языка);</li> <li> <b><код языка></b> - * ключем является код языка, а значением ассоциативный массив вида * <pre class="syntax"> array("LID" => "код языка", "NAME" => "название города на этом * языке", "SHORT_NAME" => "сокращенное название города (аббревиатура) на * этом языке")</pre> Эта пара ключ-значение должна присутствовать для * каждого языка системы.</li> </ul> * * @return int <p>Возвращается код измененного местоположения или <i>false</i> у * случае ошибки.</p> <a name="examples"></a> * * <h4>Example</h4> * <pre> * <? * $arFields = array( * "SORT" => 100, * "COUNTRY_ID" => 8, * "WITHOUT_CITY" => "N" * ); * * $arCity = array( * "NAME" => "Kaliningrad", * "SHORT_NAME" => "Kaliningrad", * "ru" => array( * "LID" => "ru", * "NAME" => "Калининград", * "SHORT_NAME" => "Калининград" * ), * "en" => array( * "LID" => "en", * "NAME" => "Kaliningrad", * "SHORT_NAME" => "Kaliningrad" * ) * ); * * $arFields["CITY"] = $arCity; * * if (!CSaleLocation::Update(6, $arFields)) * echo "Ошибка изменения местоположения"; * ?> * * * * function CreateCityRussia($arFields, $regionName, &$strError) { * // Ищем группу местоположений, к которой необходимо привязать местоположение * $locGroupID = 0; * $resLocationGroup = CSaleLocationGroup::GetList(array("ID"=>"ASC"), array()); * while($arLocationGroup = $resLocationGroup->Fetch()) { * if(mb_strtolower($arLocationGroup["NAME"], "Windows-1251") == mb_strtolower($regionName, "Windows-1251")) $locGroupID = $arLocationGroup["ID"]; * } * * // Если группа найдена, определяем список привязанных к ней местоположений и добавляем к списку новое * if($locGroupID) { * // Создаем новый город в стране Россия и новое местоположение * $arCoutry = CSaleLocation::GetList(array(), array("LID" => LANGUAGE_ID, "CITY_NAME" => false, "COUNTRY_NAME" => "Россия"))->Fetch(); * $cityId = CSaleLocation::AddCity($arFields); * $ID = CSaleLocation::AddLocation(array("COUNTRY_ID" => $arCoutry['COUNTRY_ID'], "CITY_ID" => $cityId)); * * // Формируем новый список местоположений группы * $resLocGroup = CSaleLocationGroup::GetLocationList(array("LOCATION_GROUP_ID" => $locGroupID)); * $locList = array(); * while($arLocGroup = $resLocGroup->Fetch()) { * $locList[] = $arLocGroup["LOCATION_ID"]; * } * $locList[] = $ID; * * // Записываем новый список местоположений группы * $arFields = CSaleLocationGroup::GetByID($locGroupID); * $arFields["LOCATION_ID"] = $locList; * if (!CSaleLocationGroup::Update($locGroupID, $arFields)) * $strError = "Ошибка добавления местоположения к группе местоположений"; * return $ID; * } else { * // В противном случае записываем сообщение об ошибке * $strError = "Ошибка создания местоположения: Не найдена группа местоположений $regionName"; * return false; * } * } * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocationgroup/csalelocationgroup__update.c02c467b.php * @author Bitrix */ public static function Update($ID, $arFields) { global $DB; $ID = IntVal($ID); if (!CSaleLocationGroup::CheckFields("UPDATE", $arFields)) { return false; } $db_events = GetModuleEvents("sale", "OnBeforeLocationGroupUpdate"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $events = GetModuleEvents("sale", "OnLocationGroupUpdate"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } $strUpdate = $DB->PrepareUpdate("b_sale_location_group", $arFields); $strSql = "UPDATE b_sale_location_group SET " . $strUpdate . " WHERE ID = " . $ID . ""; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (is_set($arFields, "LANG")) { $DB->Query("DELETE FROM b_sale_location_group_lang WHERE LOCATION_GROUP_ID = " . $ID . ""); $countFieldLang = count($arFields["LANG"]); for ($i = 0; $i < $countFieldLang; $i++) { $arInsert = $DB->PrepareInsert("b_sale_location_group_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_sale_location_group_lang(LOCATION_GROUP_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } if (is_set($arFields, "LOCATION_ID")) { if (CSaleLocation::isLocationProMigrated()) { try { $entityClass = self::CONN_ENTITY_NAME . 'Table'; $entityClass::resetMultipleForOwner($ID, array(Location\Connector::DB_LOCATION_FLAG => $entityClass::normalizeLocationList($arFields["LOCATION_ID"]))); } catch (Exception $e) { } } else { $DB->Query("DELETE FROM b_sale_location2location_group WHERE LOCATION_GROUP_ID = " . $ID . ""); $countArFieldLoc = count($arFields["LOCATION_ID"]); for ($i = 0; $i < $countArFieldLoc; $i++) { $strSql = "INSERT INTO b_sale_location2location_group(LOCATION_ID, LOCATION_GROUP_ID) " . "VALUES(" . $arFields["LOCATION_ID"][$i] . ", " . $ID . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } } return $ID; }
<input type="checkbox" name="MULTIPLE" value="Y" <?php if ($str_MULTIPLE == "Y") { echo "checked"; } ?> > </td> </tr> <tr> <td width="40%"><?php echo GetMessage("F_DEFAULT_VALUE"); ?> :</td> <td width="60%"> <?php if ($str_TYPE == 'LOCATION' && CSaleLocation::isLocationProMigrated()) { ?> <?php $GLOBALS["APPLICATION"]->IncludeComponent("bitrix:sale.location.selector." . \Bitrix\Sale\Location\Admin\Helper::getWidgetAppearance(), "", array("ID" => $str_DEFAULT_VALUE, "CODE" => '', "INPUT_NAME" => "DEFAULT_VALUE", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000000", "PROVIDE_LINK_BY" => "id", "SEARCH_BY_PRIMARY" => "N", "SHOW_DEFAULT_LOCATIONS" => "N"), null, array('HIDE_ICONS' => 'Y')); ?> <?php } else { ?> <input type="text" name="DEFAULT_VALUE" value="<?php echo $str_DEFAULT_VALUE; ?> "> <?php } ?> </td>
/** * @param string $siteId * @return array - sales zones countries Ids */ public static function getCountriesIds($siteId) { if (\CSaleLocation::isLocationProMigrated()) { return self::getSelectedTypeIds('COUNTRY', $siteId); } return explode(":", \COption::GetOptionString('sale', 'sales_zone_countries', '', $siteId)); }
if ($arOrderProperties["TYPE"] == "MULTISELECT") { $curVal = ""; $countUserResult = count($arUserResult["ORDER_PROP"][$arOrderProperties["ID"]]); for ($i = 0; $i < $countUserResult; $i++) { if ($i > 0) { $curVal .= ","; } $curVal .= $arUserResult["ORDER_PROP"][$arOrderProperties["ID"]][$i]; } } if ($arOrderProperties["TYPE"] == "CHECKBOX" && strlen($curVal) <= 0 && $arOrderProperties["REQUIED"] != "Y") { $curVal = "N"; } if (strlen($curVal) > 0) { // must save CODE, not ID for location if (CSaleLocation::isLocationProMigrated() && $arOrderProperties['TYPE'] == 'LOCATION') { $curVal = CSaleLocation::getLocationCODEbyID($curVal); } $arFields = array("ORDER_ID" => $arResult["ORDER_ID"], "ORDER_PROPS_ID" => $arOrderProperties["ID"], "NAME" => $arOrderProperties["NAME"], "CODE" => $arOrderProperties["CODE"], "VALUE" => $curVal); CSaleOrderPropsValue::Add($arFields); if ($arOrderProperties["USER_PROPS"] == "Y" && IntVal($arUserResult["PROFILE_ID"]) <= 0 && IntVal($arUserResult["PROFILE_ID_new"]) <= 0) { if (strlen($arUserResult["PROFILE_NAME"]) <= 0) { $arUserResult["PROFILE_NAME"] = GetMessage("SOA_PROFILE") . " " . Date("Y-m-d"); } $arFields = array("NAME" => $arUserResult["PROFILE_NAME"], "USER_ID" => IntVal($USER->GetID()), "PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"]); // add new profile once in a cycle, if no profile were selected $arUserResult["PROFILE_ID_new"] = CSaleOrderUserProps::Add($arFields); $arUserResult["PROFILE_ID_new"] = IntVal($arUserResult["PROFILE_ID_new"]); } if ($arOrderProperties["USER_PROPS"] == "Y" && IntVal($arUserResult["PROFILE_ID_new"]) > 0) { $arFields = array("USER_PROPS_ID" => $arUserResult["PROFILE_ID_new"], "ORDER_PROPS_ID" => $arOrderProperties["ID"], "NAME" => $arOrderProperties["NAME"], "VALUE" => $curVal);
public static function getLocationPropertyInfo() { static $info; if ($info === null) { $info = array(); if (CSaleLocation::isLocationProMigrated()) { $res = CSaleOrderProps::GetList(array(), array('TYPE' => 'LOCATION'), false, false, array('ID', 'CODE')); while ($item = $res->fetch()) { $info['ID'][$item['ID']] = $item['CODE']; $info['CODE'][$item['CODE']] = $item['ID']; } } } return $info; }
} $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 1; $locationFound = false; $dbVariants = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG")); while ($arVariants = $dbVariants->GetNext()) { if (intval($arVariants["ID"]) == intval($curVal) || !isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) { $locationFound = true; $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"]; $arProperties["VALUE"] = $arVariants["ID"]; } $arVariants["NAME"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"]; $arProperties["VARIANTS"][] = $arVariants; } // this is not a COUNTRY, REGION or CITY, but must appear in $arProperties["VARIANTS"] if (CSaleLocation::isLocationProMigrated() && !$locationFound && IntVal($curVal)) { // CSaleLocation::GetById() is enought intelligent to accept modern (not-country-or-region-or-city) ID or CODE $item = CSaleLocation::GetById($curVal); if ($item) { $item['NAME'] = $item["COUNTRY_NAME"] . (strlen($item["CITY_NAME"]) > 0 ? " - " : "") . $item["CITY_NAME"]; $item['SELECTED'] = 'Y'; $arProperties["VARIANTS"][] = $item; } } if (count($arProperties["VARIANTS"]) == 1) { $arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"]; } } elseif ($arProperties["TYPE"] == "RADIO") { $arProperties["VARIANTS"] = array(); $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); while ($arVariants = $dbVariants->GetNext()) {
function PrintPropsForm($arSource = array(), $locationTemplate = ".default") { if (!empty($arSource)) { ?> <div> <? foreach ($arSource as $arProperties) { if(CSaleLocation::isLocationProMigrated()) { $propertyAttributes = array( 'type' => $arProperties["TYPE"], 'valueSource' => $arProperties['SOURCE'] == 'DEFAULT' ? 'default' : 'form' ); if(intval($arProperties['IS_ALTERNATE_LOCATION_FOR'])) $propertyAttributes['isAltLocationFor'] = intval($arProperties['IS_ALTERNATE_LOCATION_FOR']); if(intval($arProperties['CAN_HAVE_ALTERNATE_LOCATION'])) $propertyAttributes['altLocationPropId'] = intval($arProperties['CAN_HAVE_ALTERNATE_LOCATION']); if($arProperties['IS_ZIP'] == 'Y') $propertyAttributes['isZip'] = true; } ?> <div data-property-id-row="<?php echo intval(intval($arProperties["ID"])); ?> "> <? if ($arProperties["TYPE"] == "CHECKBOX") { ?> <input type="hidden" name="<?php echo $arProperties["FIELD_NAME"]; ?> " value=""> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?if ($arProperties["REQUIED_FORMATED"]=="Y"):?> <span class="bx_sof_req">*</span> <?endif;?> </div> <div class="bx_block r1x3 pt8"> <input type="checkbox" name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> " value="Y"<?if ($arProperties["CHECKED"]=="Y") echo " checked";?>> <? if (strlen(trim($arProperties["DESCRIPTION"])) > 0): ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <? endif; ?> </div> <div style="clear: both;"></div> <? } elseif ($arProperties["TYPE"] == "TEXT") { ?> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?if ($arProperties["REQUIED_FORMATED"]=="Y"):?> <span class="bx_sof_req">*</span> <?endif;?> </div> <div class="bx_block r3x1"> <input type="text" maxlength="250" size="<?php echo $arProperties["SIZE1"]; ?> " value="<?php echo $arProperties["VALUE"]; ?> " name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> " /> <? if (strlen(trim($arProperties["DESCRIPTION"])) > 0): ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <? endif; ?> </div> <div style="clear: both;"></div><br/> <? } elseif ($arProperties["TYPE"] == "SELECT") { ?> <br/> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?if ($arProperties["REQUIED_FORMATED"]=="Y"):?> <span class="bx_sof_req">*</span> <?endif;?> </div> <div class="bx_block r3x1"> <select name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> " size="<?php echo $arProperties["SIZE1"]; ?> "> <? foreach($arProperties["VARIANTS"] as $arVariants): ?> <option value="<?php echo $arVariants["VALUE"]; ?> "<?if ($arVariants["SELECTED"] == "Y") echo " selected";?>><?php echo $arVariants["NAME"]; ?> </option> <? endforeach; ?> </select> <? if (strlen(trim($arProperties["DESCRIPTION"])) > 0): ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <? endif; ?> </div> <div style="clear: both;"></div> <? } elseif ($arProperties["TYPE"] == "MULTISELECT") { ?> <br/> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?if ($arProperties["REQUIED_FORMATED"]=="Y"):?> <span class="bx_sof_req">*</span> <?endif;?> </div> <div class="bx_block r3x1"> <select multiple name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> " size="<?php echo $arProperties["SIZE1"]; ?> "> <? foreach($arProperties["VARIANTS"] as $arVariants): ?> <option value="<?php echo $arVariants["VALUE"]; ?> "<?if ($arVariants["SELECTED"] == "Y") echo " selected";?>><?php echo $arVariants["NAME"]; ?> </option> <? endforeach; ?> </select> <? if (strlen(trim($arProperties["DESCRIPTION"])) > 0): ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <? endif; ?> </div> <div style="clear: both;"></div> <? } elseif ($arProperties["TYPE"] == "TEXTAREA") { $rows = ($arProperties["SIZE2"] > 10) ? 4 : $arProperties["SIZE2"]; ?> <br/> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?if ($arProperties["REQUIED_FORMATED"]=="Y"):?> <span class="bx_sof_req">*</span> <?endif;?> </div> <div class="bx_block r3x1"> <textarea rows="<?php echo $rows; ?> " cols="<?php echo $arProperties["SIZE1"]; ?> " name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> "><?php echo $arProperties["VALUE"]; ?> </textarea> <? if (strlen(trim($arProperties["DESCRIPTION"])) > 0): ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <? endif; ?> </div> <div style="clear: both;"></div> <? } elseif ($arProperties["TYPE"] == "LOCATION") { ?> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?if ($arProperties["REQUIED_FORMATED"]=="Y"):?> <span class="bx_sof_req">*</span> <?endif;?> </div> <div class="bx_block r3x1"> <? $value = 0; if (is_array($arProperties["VARIANTS"]) && count($arProperties["VARIANTS"]) > 0) { foreach ($arProperties["VARIANTS"] as $arVariant) { if ($arVariant["SELECTED"] == "Y") { $value = $arVariant["ID"]; break; } } } // here we can get '' or 'popup' // map them, if needed if(CSaleLocation::isLocationProMigrated()) { $locationTemplate = $locationTemplate == 'popup' ? 'search' : 'steps'; $locationTemplate = $_REQUEST['PERMANENT_MODE_STEPS'] == 1 ? 'steps' : $locationTemplate; // force to "steps" } ?> <?if($locationTemplate == 'steps'):?> <input type="hidden" id="LOCATION_ALT_PROP_DISPLAY_MANUAL[<?php echo intval($arProperties["ID"]); ?> ]" name="LOCATION_ALT_PROP_DISPLAY_MANUAL[<?php echo intval($arProperties["ID"]); ?> ]" value="<?php echo $_REQUEST['LOCATION_ALT_PROP_DISPLAY_MANUAL'][intval($arProperties["ID"])] ? '1' : '0'; ?> " /> <?endif?> <?CSaleLocation::proxySaleAjaxLocationsComponent(array( "AJAX_CALL" => "N", "COUNTRY_INPUT_NAME" => "COUNTRY", "REGION_INPUT_NAME" => "REGION", "CITY_INPUT_NAME" => $arProperties["FIELD_NAME"], "CITY_OUT_LOCATION" => "Y", "LOCATION_VALUE" => $value, "ORDER_PROPS_ID" => $arProperties["ID"], "ONCITYCHANGE" => ($arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y") ? "submitForm()" : "", "SIZE1" => $arProperties["SIZE1"], ), array( "ID" => $value, "CODE" => "", "SHOW_DEFAULT_LOCATIONS" => "Y", // function called on each location change caused by user or by program // it may be replaced with global component dispatch mechanism coming soon "JS_CALLBACK" => "submitFormProxy", //($arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y") ? "submitFormProxy" : "", // function window.BX.locationsDeferred['X'] will be created and lately called on each form re-draw. // it may be removed when sale.order.ajax will use real ajax form posting with BX.ProcessHTML() and other stuff instead of just simple iframe transfer "JS_CONTROL_DEFERRED_INIT" => intval($arProperties["ID"]), // an instance of this control will be placed to window.BX.locationSelectors['X'] and lately will be available from everywhere // it may be replaced with global component dispatch mechanism coming soon "JS_CONTROL_GLOBAL_ID" => intval($arProperties["ID"]), "DISABLE_KEYBOARD_INPUT" => 'Y', "PRECACHE_LAST_LEVEL" => "Y", ), $locationTemplate, true, 'location-block-wrapper' )?> <? if (strlen(trim($arProperties["DESCRIPTION"])) > 0): ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <? endif; ?> </div> <div style="clear: both;"></div> <? } elseif ($arProperties["TYPE"] == "RADIO") { ?> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?if ($arProperties["REQUIED_FORMATED"]=="Y"):?> <span class="bx_sof_req">*</span> <?endif;?> </div> <div class="bx_block r3x1"> <? if (is_array($arProperties["VARIANTS"])) { foreach($arProperties["VARIANTS"] as $arVariants): ?> <input type="radio" name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> _<?php echo $arVariants["VALUE"]; ?> " value="<?php echo $arVariants["VALUE"]; ?> " <?if($arVariants["CHECKED"] == "Y") echo " checked";?> /> <label for="<?php echo $arProperties["FIELD_NAME"]; ?> _<?php echo $arVariants["VALUE"]; ?> "><?php echo $arVariants["NAME"]; ?> </label></br> <? endforeach; } ?> <? if (strlen(trim($arProperties["DESCRIPTION"])) > 0): ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <? endif; ?> </div> <div style="clear: both;"></div> <? } elseif ($arProperties["TYPE"] == "FILE") { ?> <br/> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?if ($arProperties["REQUIED_FORMATED"]=="Y"):?> <span class="bx_sof_req">*</span> <?endif;?> </div> <div class="bx_block r3x1"> <?php echo showFilePropertyField("ORDER_PROP_" . $arProperties["ID"], $arProperties, $arProperties["VALUE"], $arProperties["SIZE1"]); ?> <? if (strlen(trim($arProperties["DESCRIPTION"])) > 0): ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <? endif; ?> </div> <div style="clear: both;"></div><br/> <? } ?> </div> <?if(CSaleLocation::isLocationProEnabled()):?> <script> (window.top.BX || BX).saleOrderAjax.addPropertyDesc(<?php echo CUtil::PhpToJSObject(array('id' => intval($arProperties["ID"]), 'attributes' => $propertyAttributes)); ?> ); </script> <?endif?> <? } ?> </div> <? } }
public static function TranslateLocationPropertyValues($personTypeId, &$orderProps, $direct = true) { if(CSaleLocation::isLocationProMigrated()) { // location ID to CODE $dbOrderProps = CSaleOrderProps::GetList( array("SORT" => "ASC"), array( 'PERSON_TYPE_ID' => $personTypeId ), false, false, array("ID", "NAME", "TYPE", "IS_LOCATION", "IS_LOCATION4TAX", "IS_PROFILE_NAME", "IS_PAYER", "IS_EMAIL", "REQUIED", "SORT", "IS_ZIP", "CODE", "MULTIPLE") ); while($item = $dbOrderProps->fetch()) { if($item['TYPE'] == 'LOCATION' && strlen($orderProps[$item['ID']])) $orderProps[$item['ID']] = $direct ? CSaleLocation::getLocationCODEbyID($orderProps[$item['ID']]) : CSaleLocation::getLocationIDbyCODE($orderProps[$item['ID']]); } } }
function PrintPropsForm($arSource = array(), $locationTemplate = ".default") { if (!empty($arSource)) { ?> <div> <?php foreach ($arSource as $arProperties) { ?> <div data-property-id-row="<?php echo intval(intval($arProperties["ID"])); ?> "> <?php if ($arProperties["TYPE"] == "CHECKBOX") { ?> <input type="hidden" name="<?php echo $arProperties["FIELD_NAME"]; ?> " value=""> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?php if ($arProperties["REQUIED_FORMATED"] == "Y") { ?> <span class="bx_sof_req">*</span> <?php } ?> </div> <div class="bx_block r1x3 pt8"> <input type="checkbox" name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> " value="Y"<?php if ($arProperties["CHECKED"] == "Y") { echo " checked"; } ?> > <?php if (strlen(trim($arProperties["DESCRIPTION"])) > 0) { ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <?php } ?> </div> <div style="clear: both;"></div> <?php } elseif ($arProperties["TYPE"] == "TEXT") { ?> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?php if ($arProperties["REQUIED_FORMATED"] == "Y") { ?> <span class="bx_sof_req">*</span> <?php } ?> </div> <div class="bx_block r3x1"> <input type="text" maxlength="250" size="<?php echo $arProperties["SIZE1"]; ?> " value="<?php echo $arProperties["VALUE"]; ?> " name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> " /> <?php if (strlen(trim($arProperties["DESCRIPTION"])) > 0) { ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <?php } ?> </div> <div style="clear: both;"></div><br/> <?php } elseif ($arProperties["TYPE"] == "SELECT") { ?> <br/> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?php if ($arProperties["REQUIED_FORMATED"] == "Y") { ?> <span class="bx_sof_req">*</span> <?php } ?> </div> <div class="bx_block r3x1"> <select name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> " size="<?php echo $arProperties["SIZE1"]; ?> "> <?php foreach ($arProperties["VARIANTS"] as $arVariants) { ?> <option value="<?php echo $arVariants["VALUE"]; ?> "<?php if ($arVariants["SELECTED"] == "Y") { echo " selected"; } ?> ><?php echo $arVariants["NAME"]; ?> </option> <?php } ?> </select> <?php if (strlen(trim($arProperties["DESCRIPTION"])) > 0) { ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <?php } ?> </div> <div style="clear: both;"></div> <?php } elseif ($arProperties["TYPE"] == "MULTISELECT") { ?> <br/> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?php if ($arProperties["REQUIED_FORMATED"] == "Y") { ?> <span class="bx_sof_req">*</span> <?php } ?> </div> <div class="bx_block r3x1"> <select multiple name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> " size="<?php echo $arProperties["SIZE1"]; ?> "> <?php foreach ($arProperties["VARIANTS"] as $arVariants) { ?> <option value="<?php echo $arVariants["VALUE"]; ?> "<?php if ($arVariants["SELECTED"] == "Y") { echo " selected"; } ?> ><?php echo $arVariants["NAME"]; ?> </option> <?php } ?> </select> <?php if (strlen(trim($arProperties["DESCRIPTION"])) > 0) { ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <?php } ?> </div> <div style="clear: both;"></div> <?php } elseif ($arProperties["TYPE"] == "TEXTAREA") { $rows = $arProperties["SIZE2"] > 10 ? 4 : $arProperties["SIZE2"]; ?> <br/> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?php if ($arProperties["REQUIED_FORMATED"] == "Y") { ?> <span class="bx_sof_req">*</span> <?php } ?> </div> <div class="bx_block r3x1"> <textarea rows="<?php echo $rows; ?> " cols="<?php echo $arProperties["SIZE1"]; ?> " name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> "><?php echo $arProperties["VALUE"]; ?> </textarea> <?php if (strlen(trim($arProperties["DESCRIPTION"])) > 0) { ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <?php } ?> </div> <div style="clear: both;"></div> <?php } elseif ($arProperties["TYPE"] == "LOCATION") { ?> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?php if ($arProperties["REQUIED_FORMATED"] == "Y") { ?> <span class="bx_sof_req">*</span> <?php } ?> </div> <div class="bx_block r3x1"> <?php $value = 0; if (is_array($arProperties["VARIANTS"]) && count($arProperties["VARIANTS"]) > 0) { foreach ($arProperties["VARIANTS"] as $arVariant) { if ($arVariant["SELECTED"] == "Y") { $value = $arVariant["ID"]; break; } } } // here we can get '' or 'popup' // map them, if needed if (CSaleLocation::isLocationProMigrated()) { $locationTemplateP = $locationTemplate == 'popup' ? 'search' : 'steps'; $locationTemplateP = $_REQUEST['PERMANENT_MODE_STEPS'] == 1 ? 'steps' : $locationTemplateP; // force to "steps" } ?> <?php if ($locationTemplateP == 'steps') { ?> <input type="hidden" id="LOCATION_ALT_PROP_DISPLAY_MANUAL[<?php echo intval($arProperties["ID"]); ?> ]" name="LOCATION_ALT_PROP_DISPLAY_MANUAL[<?php echo intval($arProperties["ID"]); ?> ]" value="<?php echo $_REQUEST['LOCATION_ALT_PROP_DISPLAY_MANUAL'][intval($arProperties["ID"])] ? '1' : '0'; ?> " /> <?php } ?> <?php CSaleLocation::proxySaleAjaxLocationsComponent(array("AJAX_CALL" => "N", "COUNTRY_INPUT_NAME" => "COUNTRY", "REGION_INPUT_NAME" => "REGION", "CITY_INPUT_NAME" => $arProperties["FIELD_NAME"], "CITY_OUT_LOCATION" => "Y", "LOCATION_VALUE" => $value, "ORDER_PROPS_ID" => $arProperties["ID"], "ONCITYCHANGE" => $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" ? "submitForm()" : "", "SIZE1" => $arProperties["SIZE1"]), array("ID" => $value, "CODE" => "", "SHOW_DEFAULT_LOCATIONS" => "Y", "JS_CALLBACK" => "submitFormProxy", "JS_CONTROL_DEFERRED_INIT" => intval($arProperties["ID"]), "JS_CONTROL_GLOBAL_ID" => intval($arProperties["ID"]), "DISABLE_KEYBOARD_INPUT" => "Y", "PRECACHE_LAST_LEVEL" => "Y", "PRESELECT_TREE_TRUNK" => "Y", "SUPPRESS_ERRORS" => "Y"), $locationTemplateP, true, 'location-block-wrapper'); ?> <?php if (strlen(trim($arProperties["DESCRIPTION"])) > 0) { ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <?php } ?> </div> <div style="clear: both;"></div> <?php } elseif ($arProperties["TYPE"] == "RADIO") { ?> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?php if ($arProperties["REQUIED_FORMATED"] == "Y") { ?> <span class="bx_sof_req">*</span> <?php } ?> </div> <div class="bx_block r3x1"> <?php if (is_array($arProperties["VARIANTS"])) { foreach ($arProperties["VARIANTS"] as $arVariants) { ?> <input type="radio" name="<?php echo $arProperties["FIELD_NAME"]; ?> " id="<?php echo $arProperties["FIELD_NAME"]; ?> _<?php echo $arVariants["VALUE"]; ?> " value="<?php echo $arVariants["VALUE"]; ?> " <?php if ($arVariants["CHECKED"] == "Y") { echo " checked"; } ?> /> <label for="<?php echo $arProperties["FIELD_NAME"]; ?> _<?php echo $arVariants["VALUE"]; ?> "><?php echo $arVariants["NAME"]; ?> </label></br> <?php } } ?> <?php if (strlen(trim($arProperties["DESCRIPTION"])) > 0) { ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <?php } ?> </div> <div style="clear: both;"></div> <?php } elseif ($arProperties["TYPE"] == "FILE") { ?> <br/> <div class="bx_block r1x3 pt8"> <?php echo $arProperties["NAME"]; ?> <?php if ($arProperties["REQUIED_FORMATED"] == "Y") { ?> <span class="bx_sof_req">*</span> <?php } ?> </div> <div class="bx_block r3x1"> <?php echo showFilePropertyField("ORDER_PROP_" . $arProperties["ID"], $arProperties, $arProperties["VALUE"], $arProperties["SIZE1"]); ?> <?php if (strlen(trim($arProperties["DESCRIPTION"])) > 0) { ?> <div class="bx_description"> <?php echo $arProperties["DESCRIPTION"]; ?> </div> <?php } ?> </div> <div style="clear: both;"></div><br/> <?php } ?> </div> <?php if (CSaleLocation::isLocationProEnabled()) { ?> <?php $propertyAttributes = array('type' => $arProperties["TYPE"], 'valueSource' => $arProperties['SOURCE'] == 'DEFAULT' ? 'default' : 'form'); if (intval($arProperties['IS_ALTERNATE_LOCATION_FOR'])) { $propertyAttributes['isAltLocationFor'] = intval($arProperties['IS_ALTERNATE_LOCATION_FOR']); } if (intval($arProperties['CAN_HAVE_ALTERNATE_LOCATION'])) { $propertyAttributes['altLocationPropId'] = intval($arProperties['CAN_HAVE_ALTERNATE_LOCATION']); } if ($arProperties['IS_ZIP'] == 'Y') { $propertyAttributes['isZip'] = true; } ?> <script> <?php // add property info to have client-side control on it ?> (window.top.BX || BX).saleOrderAjax.addPropertyDesc(<?php echo CUtil::PhpToJSObject(array('id' => intval($arProperties["ID"]), 'attributes' => $propertyAttributes)); ?> ); </script> <?php } ?> <?php } ?> </div> <?php } }
public static function tryTranslateIDToCode($id) { if (!CSaleLocation::isLocationProMigrated()) { return $id; } $id = (string) $id; if ($id != '' && $id === (string) intval($id)) { // ID came, need to translate to CODE and store $location = \Bitrix\Sale\Location\LocationTable::getList(array('filter' => array('=ID' => $id), 'select' => array('ID', 'CODE')))->fetch(); if ((string) $location['CODE'] != '') { return $location['CODE']; } } return $id; }
function fGetBuyerType($PERSON_TYPE_ID, $LID, $USER_ID = '', $ORDER_ID = 0, $formVarsSubmit = false) { global $locationZipID, $locationID, $DELIVERY_LOCATION, $DELIVERY_LOCATION_ZIP; $resultHtml = "<script>locationZipID = 0;locationID = 0;</script><table width=\"100%\" id=\"order_type_props\" class=\"edit-table\">"; //select person type $arPersonTypeList = array(); $personTypeSelect = "<select name='buyer_type_id' id='buyer_type_id' OnChange='fBuyerChangeType(this);' >"; $dbPersonType = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ACTIVE" => "Y")); while ($arPersonType = $dbPersonType->GetNext()) { if (!in_array($LID, $arPersonType["LIDS"])) continue; if (!isset($PERSON_TYPE_ID) OR $PERSON_TYPE_ID == "") $PERSON_TYPE_ID = $arPersonType["ID"]; $class = ""; if (intval($arPersonType["ID"]) == intval($PERSON_TYPE_ID)) $class = " selected"; $personTypeSelect .= "<option value=\"".$arPersonType["ID"]."\" ".$class.">".$arPersonType["NAME"]." [".$arPersonType["ID"]."]</option>"; } $personTypeSelect .= "</select>"; $userComment = ""; $userDisplay = "none"; if (intval($ORDER_ID) > 0) { $dbOrder = CSaleOrder::GetList( array(), array("ID" => $ORDER_ID, "ACTIVE" => "Y"), false, false, array() ); $arOrder = $dbOrder->Fetch(); $userComment = $arOrder["USER_DESCRIPTION"]; $userDisplay = "table-row"; } if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerNew") $userDisplay = "none"; elseif ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") $userDisplay = "table-row"; $resultHtml .= "<tr id=\"btnBuyerExistField\" style=\"display:".$userDisplay."\"> <td class=\"adm-detail-content-cell-l\" width=\"40%\">".GetMessage("NEWO_BUYER").":</td> <td class=\"adm-detail-content-cell-r\" width=\"60%\"><div id=\"user_name\">".fGetUserName($USER_ID)."</div></td></tr>"; $resultHtml .= "<tr class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\" width=\"40%\">".GetMessage("SOE_PERSON_TYPE").":</td> <td class=\"adm-detail-content-cell-r\" width=\"60%\">".$personTypeSelect."</td> </tr>"; $bShowTrProfile = "none"; if ($formVarsSubmit && $_POST["btnTypeBuyer"] == "btnBuyerExist") $bShowTrProfile = "table-row"; $resultHtml .= "<tr id=\"buyer_profile_display\" style=\"display:".$bShowTrProfile."\" class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\">".GetMessage("NEWO_BUYER_PROFILE").":</td> <td class=\"adm-detail-content-cell-r\"> <div id=\"buyer_profile_select\">"; if ($formVarsSubmit && $_POST["btnTypeBuyer"] == "btnBuyerExist") { $resultHtml .= fUserProfile(intval($_POST["user_id"]), intval($_POST["buyer_type_id"]), $default = ''); } $resultHtml .= "</div></td> </tr>"; if ($ORDER_ID <= 0) { $arCountProps = fGetCountProfileProps($PERSON_TYPE_ID); $resultHtml .= "<tr id=\"btnBuyerNewField\">"; if (count($arCountProps) < 3) { $resultHtml .= "<td colspan=2> <table width=\"100%\" class=\"edit-table\" >"; if (intval($arCountProps["IS_EMAIL"]) <= 0) $resultHtml .= "<tr class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\" width=\"40%\">".GetMessage("NEWO_BUYER_REG_MAIL")."</td> <td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_EMAIL\" size=\"30\" value=\"".htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_EMAIL"]))."\" tabindex=\"1\" /></td> </tr>"; if (intval($arCountProps["IS_PAYER"]) <= 0) $resultHtml .= "<tr class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\">".GetMessage("NEWO_BUYER_REG_LASTNAME")."</td> <td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_LAST_NAME\" size=\"30\" value=\"".htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_LAST_NAME"]))."\" tabindex=\"3\" /></td> </tr> <tr class=\"adm-detail-required-field\"> <td class=\"adm-detail-content-cell-l\">".GetMessage("NEWO_BUYER_REG_NAME")."</td> <td class=\"adm-detail-content-cell-r\"><input type=\"text\" name=\"NEW_BUYER_NAME\" size=\"30\" value=\"".htmlspecialcharsbx(trim($_REQUEST["NEW_BUYER_NAME"]))."\" tabindex=\"2\" /></td> </tr>"; $resultHtml .= "</table> </td>"; } $resultHtml .= "</tr>"; } $arPropertiesList = array(); $dbProperties = CSaleOrderProps::GetList( array("GROUP_SORT" => "ASC", "PROPS_GROUP_ID" => "ASC", "SORT" => "ASC", "NAME" => "ASC"), array("PERSON_TYPE_ID" => $PERSON_TYPE_ID, "ACTIVE" => "Y", "RELATED" => false), false, false, array("*") ); while($property = $dbProperties->Fetch()) { $arPropertiesList[$property['ID']] = $property; } // getting values $arPropValues = array(); if ($formVarsSubmit) // from request { $locationIndexForm = ""; foreach ($_POST as $key => $value) { if (substr($key, 0, strlen("CITY_ORDER_PROP_")) == "CITY_ORDER_PROP_") { $arPropValues[intval(substr($key, strlen("CITY_ORDER_PROP_")))] = htmlspecialcharsbx($value); $locationIndexForm = intval(substr($key, strlen("CITY_ORDER_PROP_"))); } if (substr($key, 0, strlen("ORDER_PROP_")) == "ORDER_PROP_") { if ($locationIndexForm != intval(substr($key, strlen("ORDER_PROP_"))) && !is_array($value)) $arPropValues[intval(substr($key, strlen("ORDER_PROP_")))] = htmlspecialcharsbx($value); } } $userComment = $_POST["USER_DESCRIPTION"]; } elseif ($ORDER_ID == "" AND $USER_ID != "") // from profile { //profile $userProfile = array(); $userProfile = CSaleOrderUserProps::DoLoadProfiles($USER_ID, $PERSON_TYPE_ID); $arPropValues = $userProfile[$PERSON_TYPE_ID]["VALUES"]; } elseif ($ORDER_ID != "") // from order properties { $dbPropValuesList = CSaleOrderPropsValue::GetList( array(), array("ORDER_ID" => $ORDER_ID, "ACTIVE" => "Y"), false, false, array("ID", "ORDER_PROPS_ID", "NAME", "VALUE", "CODE") ); while ($arPropValuesList = $dbPropValuesList->Fetch()) { // from db if(CSaleLocation::isLocationProMigrated() && $arPropertiesList[$arPropValuesList['ORDER_PROPS_ID']]['TYPE'] == 'LOCATION') $arPropValuesList["VALUE"] = CSaleLocation::getLocationIDbyCODE($arPropValuesList["VALUE"]); $arPropValues[intval($arPropValuesList["ORDER_PROPS_ID"])] = htmlspecialcharsbx($arPropValuesList["VALUE"]); } } $location2townFldMap = array(); $arDisableFieldForLocation = array(); //select field (town) for disable $dbProperties = CSaleOrderProps::GetList( array(), array("PERSON_TYPE_ID" => $PERSON_TYPE_ID, "ACTIVE" => "Y", ">INPUT_FIELD_LOCATION" => 0), false, false, array("INPUT_FIELD_LOCATION") ); while ($arProperties = $dbProperties->Fetch()) { $arDisableFieldForLocation[$arProperties["INPUT_FIELD_LOCATION"]] = $arProperties["INPUT_FIELD_LOCATION"]; } //show town if location is another $arEnableTownProps = array(); $dbOrderProps = CSaleOrderPropsValue::GetOrderProps($ORDER_ID); while ($arOrderProps = $dbOrderProps->Fetch()) { if($arOrderProps["TYPE"] == "LOCATION" && $arOrderProps["ACTIVE"] == "Y" && $arOrderProps["IS_LOCATION"] == "Y") { if (in_array($arOrderProps["INPUT_FIELD_LOCATION"], $arDisableFieldForLocation)) { if(CSaleLocation::isLocationProMigrated()) { if(CSaleLocation::checkLocationIsAboveCity($arPropValues[$arOrderProps["ORDER_PROPS_ID"]])) unset($arDisableFieldForLocation[$arOrderProps["INPUT_FIELD_LOCATION"]]); } else { $arLocation = CSaleLocation::GetByID($arPropValues[$arOrderProps["ORDER_PROPS_ID"]]); if (intval($arLocation["CITY_ID"]) <= 0) unset($arDisableFieldForLocation[$arOrderProps["INPUT_FIELD_LOCATION"]]); } } $location2townFldMap[$arOrderProps['ORDER_PROPS_ID']] = $arOrderProps['INPUT_FIELD_LOCATION']; } } $propertyGroupID = -1; foreach($arPropertiesList as $arProperties) { if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) { $resultHtml .= "<tr><td colspan=\"2\" style=\"text-align:center;font-weight:bold;font-size:14px;color:rgb(75, 98, 103);\" >".htmlspecialcharsEx($arProperties["GROUP_NAME"])."\n</td>\n</tr>"; $propertyGroupID = intval($arProperties["PROPS_GROUP_ID"]); } if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID) $propertyGroupID = intval($arProperties["PROPS_GROUP_ID"]); $adit = ""; $requiredField = ""; if ($arProperties["REQUIED"] == "Y" || $arProperties["IS_PROFILE_NAME"] == "Y" || $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" || $arProperties["IS_PAYER"] == "Y" || $arProperties["IS_ZIP"] == "Y") { $adit = " class=\"adm-detail-required-field\""; $requiredField = " class=\"adm-detail-content-cell-l\""; } $isTownProperty = in_array($arProperties["ID"], $location2townFldMap) || $arProperties['CODE'] == 'CITY'; //delete town from location if (in_array($arProperties["ID"], $arDisableFieldForLocation)) $resultHtml .= "<tr style=\"display:none;\" id=\"town_location_".$arProperties["ID"]."\"".$adit.">\n"; else $resultHtml .= "<tr id=\"town_location_".$arProperties["ID"]."\"".$adit.($isTownProperty ? " class=\"-bx-order-property-city\"" : '').">\n"; if(($arProperties["TYPE"] == "MULTISELECT" || $arProperties["TYPE"] == "TEXTAREA" || $arProperties["TYPE"] == "FILE") || ($ORDER_ID <= 0 && $arProperties["IS_PROFILE_NAME"] == "Y") ) $resultHtml .= "<td valign=\"top\" class=\"adm-detail-content-cell-l\" width=\"40%\">\n"; else $resultHtml .= "<td align=\"right\" width=\"40%\" ".$requiredField.">\n"; $resultHtml .= $arProperties["NAME"].":</td>"; $curVal = $arPropValues[intval($arProperties["ID"])]; if($arProperties["IS_EMAIL"] == "Y" || $arProperties["IS_PAYER"] == "Y") { if(strlen($arProperties["DEFAULT_VALUE"]) <= 0 && intval($USER_ID) > 0) { $rsUser = CUser::GetByID($USER_ID); if ($arUser = $rsUser->Fetch()) { if($arProperties["IS_EMAIL"] == "Y") $arProperties["DEFAULT_VALUE"] = $arUser["EMAIL"]; else { if (strlen($arUser["LAST_NAME"]) > 0) $arProperties["DEFAULT_VALUE"] .= $arUser["LAST_NAME"]; if (strlen($arUser["NAME"]) > 0) $arProperties["DEFAULT_VALUE"] .= " ".$arUser["NAME"]; if (strlen($arUser["SECOND_NAME"]) > 0 AND strlen($arUser["NAME"]) > 0) $arProperties["DEFAULT_VALUE"] .= " ".$arUser["SECOND_NAME"]; } } } } $resultHtml .= "<td class=\"adm-detail-content-cell-r\" width=\"60%\">"; if ($arProperties["TYPE"] == "CHECKBOX") { $resultHtml .= '<input type="checkbox" class="inputcheckbox" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" value="Y"'; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '; if ($curVal=="Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"]=="Y") $resultHtml .= " checked"; $resultHtml .= '>'; } elseif ($arProperties["TYPE"] == "TEXT") { $change = ""; if ($arProperties["IS_ZIP"] == "Y") { $DELIVERY_LOCATION_ZIP = $curVal; $resultHtml .= '<script> locationZipID = \''.$arProperties["ID"].'\';</script>'; $locationZipID = ((isset($curVal)) ? htmlspecialcharsEx($curVal) : htmlspecialcharsex($arProperties["DEFAULT_VALUE"])); } if ($arProperties["IS_PAYER"] == "Y" && intval($USER_ID) <= 0) { $resultHtml .= '<div id="BREAK_NAME"'; if ($ORDER_ID > 0 || ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist")) $resultHtml .= ' style="display:none"'; $resultHtml .= '>'; $BREAK_LAST_NAME_TMP = GetMessage('NEWO_BREAK_LAST_NAME'); if (isset($_REQUEST["BREAK_LAST_NAME"]) && strlen($_REQUEST["BREAK_LAST_NAME"]) > 0) $BREAK_LAST_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_LAST_NAME"])); $NEWO_BREAK_NAME_TMP = GetMessage('NEWO_BREAK_NAME'); if (isset($_REQUEST["BREAK_NAME"]) && strlen($_REQUEST["BREAK_NAME"]) > 0) $NEWO_BREAK_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_NAME"])); $BREAK_SECOND_NAME_TMP = GetMessage('NEWO_BREAK_SECOND_NAME'); if (isset($_REQUEST["BREAK_SECOND_NAME"]) && strlen($_REQUEST["BREAK_SECOND_NAME"]) > 0) $BREAK_SECOND_NAME_TMP = htmlspecialcharsbx(trim($_REQUEST["BREAK_SECOND_NAME"])); $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_LAST_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_LAST_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_LAST_NAME\" id=\"BREAK_LAST_NAME\" size=\"30\" value=\"".$BREAK_LAST_NAME_TMP."\" /></div>"; $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_NAME\" id=\"BREAK_NAME_BUYER\" size=\"30\" value=\"".$NEWO_BREAK_NAME_TMP."\" /></div>"; $resultHtml .= "<div class=\"fio newo_break_active\"><input onblur=\"if (this.value==''){this.value='".CUtil::JSEscape(GetMessage('NEWO_BREAK_SECOND_NAME'))."';BX.addClass(this.parentNode,'newo_break_active');}\" onfocus=\"if (this.value=='".CUtil::JSEscape(GetMessage('NEWO_BREAK_SECOND_NAME'))."') {this.value='';BX.removeClass(this.parentNode,'newo_break_active');}\" type=\"text\" name=\"BREAK_SECOND_NAME\" id=\"BREAK_SECOND_NAME\" size=\"30\" value=\"".$BREAK_SECOND_NAME_TMP."\" /></div>"; $resultHtml .= '</div>'; $resultHtml .= '<div id="NO_BREAK_NAME"'; if ($ORDER_ID <= 0) $tmpNone = ' style="display:none"'; if ($formVarsSubmit && $_REQUEST["btnTypeBuyer"] == "btnBuyerExist") $tmpNone = ' style="display:block"'; $resultHtml .= $tmpNone.'>'; } $resultHtml .= '<input type="text" maxlength="250" '; $resultHtml .= 'size="30" '; $resultHtml .= 'value="'.((isset($curVal)) ? $curVal : $arProperties["DEFAULT_VALUE"]).'" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= ($arProperties["IS_ZIP"] == "Y" ? 'class="-bx-property-is-zip" ' : ''); $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '.$change.'>'; if ($arProperties["IS_PAYER"] == "Y" && intval($USER_ID) <= 0) $resultHtml .= '</div>'; } elseif ($arProperties["TYPE"] == "SELECT") { $size = (intval($arProperties["SIZE1"]) > 0) ? intval($arProperties["SIZE1"]) : 5; $resultHtml .= '<select name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'size='.$size.' '; $resultHtml .= 'class="typeselect">'; $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<option value="'.htmlspecialcharsex($arVariants["VALUE"]).'"'; if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) $resultHtml .= " selected"; $resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'</option>'; } $resultHtml .= '</select>'; } elseif ($arProperties["TYPE"] == "MULTISELECT") { $size = (intval($arProperties["SIZE1"]) > 0) ? intval($arProperties["SIZE1"]) : 5; $resultHtml .= '<select multiple name="ORDER_PROP_'.$arProperties["ID"].'[]" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'size='.$size.' '; $resultHtml .= 'class="typeselect" type="multyselect">'; if (!is_array($curVal)) { if (strlen($curVal) > 0 OR $ORDER_ID != "") $curVal = explode(",", $curVal); else $curVal = explode(",", $arProperties["DEFAULT_VALUE"]); $arCurVal = array(); $countCurVal = count($curVal); for ($i = 0; $i < $countCurVal; $i++) $arCurVal[$i] = Trim($curVal[$i]); } else $arCurVal = $curVal; $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<option value="'.htmlspecialcharsex($arVariants["VALUE"]).'"'; if (in_array($arVariants["VALUE"], $arCurVal)) $resultHtml .= " selected"; $resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'</option>'; } $resultHtml .= '</select>'; } elseif ($arProperties["TYPE"] == "TEXTAREA") { $resultHtml .= '<textarea '; $resultHtml .= 'rows="4" '; $resultHtml .= 'cols="40" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'id="ORDER_PROP_'.$arProperties["ID"].'" type="textarea">'; $resultHtml .= ((isset($curVal)) ? $curVal : $arProperties["DEFAULT_VALUE"]); $resultHtml .= '</textarea>'; } elseif ($arProperties["TYPE"] == "LOCATION") { $countryID = ""; $cityID = ""; $cityList = ""; $DELIVERY_LOCATION = $arPropValues[intval($arProperties["ID"])]; $locationID = $curVal; $tmpLocation = ''; ob_start(); ?> <?if($arProperties['IS_LOCATION'] == 'Y'):?> <? $funcId = 'changeLocationCity_'.$arProperties['ID']; ?> <script> window['<?php echo $funcId; ?> '] = function(node, info){ fChangeLocationCity(node, info, <?php echo intval($location2townFldMap[$arProperties['ID']]); ?> ) } window.orderNewLocationPropId = <?php echo intval($arProperties['ID']); ?> ; </script> <?endif?> <? CSaleLocation::proxySaleAjaxLocationsComponent( array( "SITE_ID" => $LID, "AJAX_CALL" => "N", "COUNTRY_INPUT_NAME" => "ORDER_PROP_".$arProperties["ID"], "REGION_INPUT_NAME" => "REGION_ORDER_PROP_".$arProperties["ID"], "CITY_INPUT_NAME" => "CITY_ORDER_PROP_".$arProperties["ID"], "CITY_OUT_LOCATION" => "Y", "ALLOW_EMPTY_CITY" => "Y", "LOCATION_VALUE" => $curVal, "COUNTRY" => "", "ONCITYCHANGE" => "fChangeLocationCity();", "PUBLIC" => "N", ), array( "JS_CALLBACK" => $arProperties['IS_LOCATION'] == 'Y' ? $funcId : false, "ID" => $curVal, "CODE" => '', "SHOW_DEFAULT_LOCATIONS" => 'Y', "JS_CONTROL_GLOBAL_ID" => intval($arProperties["ID"]) ), '', false, 'location-selector-wrapper' ); $tmpLocation = ob_get_contents(); ob_end_clean(); $resultHtml .= '<script>var locationID = \''.$arProperties["ID"].'\';</script>'; $resultHtml .= $tmpLocation; } elseif ($arProperties["TYPE"] == "RADIO") { $dbVariants = CSaleOrderPropsVariant::GetList( array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*") ); $resultHtml .= '<div id="ORDER_PROP_'.$arProperties["ID"].'" type="radio">';// type="radio" while ($arVariants = $dbVariants->Fetch()) { $resultHtml .= '<input type="radio" class="inputradio" '; $resultHtml .= 'name="ORDER_PROP_'.$arProperties["ID"].'" '; $resultHtml .= 'value="'.htmlspecialcharsex($arVariants["VALUE"]).'"'; if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) $resultHtml .= " checked"; $resultHtml .= '>'.htmlspecialcharsEx($arVariants["NAME"]).'<br>'; } $resultHtml .= '</div>'; } elseif ($arProperties["TYPE"] == "FILE") { $arValues = array(); $arTmpValues = array(); if (isset($arPropValues[$arProperties["ID"]])) { $arTmpValues = explode(", ", $arPropValues[$arProperties["ID"]]); foreach ($arTmpValues as $key => $value) $arValues[$value] = $value; } $resultHtml .= fShowFilePropertyField("ORDER_PROP_".$arProperties["ID"], $arProperties, $arValues, $arProperties["SIZE1"], $formVarsSubmit); } if (strlen($arProperties["DESCRIPTION"]) > 0) { $resultHtml .= "<br><small>".htmlspecialcharsEx($arProperties["DESCRIPTION"])."</small>"; } $resultHtml .= "\n</td>\n</tr>"; }//end while $resultHtml .= "<tr>\n<td valign=\"top\" class=\"adm-detail-content-cell-l\">".GetMessage("SOE_BUYER_COMMENT").": </td> <td class=\"adm-detail-content-cell-r\"> <textarea name=\"USER_DESCRIPTION\" rows=\"4\" cols=\"40\">".htmlspecialcharsbx($userComment)."</textarea> </td> </tr>"; $resultHtml .= "</table>"; return $resultHtml; }
function GetRealValue($propertyID, $propertyCode, $propertyType, $value, $lang = false) { $propertyID = IntVal($propertyID); $propertyCode = Trim($propertyCode); $propertyType = Trim($propertyType); if ($lang === false) { $lang = LANGUAGE_ID; } $arResult = array(); $curKey = strlen($propertyCode) > 0 ? $propertyCode : $propertyID; if ($propertyType == "SELECT" || $propertyType == "RADIO") { $arValue = CSaleOrderPropsVariant::GetByValue($propertyID, $value); $arResult[$curKey] = $arValue["NAME"]; } elseif ($propertyType == "MULTISELECT") { $curValue = ""; if (!is_array($value)) { $value = explode(",", $value); } for ($i = 0, $max = count($value); $i < $max; $i++) { if ($arValue1 = CSaleOrderPropsVariant::GetByValue($propertyID, $value[$i])) { if ($i > 0) { $curValue .= ","; } $curValue .= $arValue1["NAME"]; } } $arResult[$curKey] = $curValue; } elseif ($propertyType == "LOCATION") { if (CSaleLocation::isLocationProMigrated()) { $curValue = ''; if (strlen($value)) { $arValue = array(); if (intval($value)) { try { $locationStreetPropertyValue = ''; $res = \Bitrix\Sale\Location\LocationTable::getPathToNode($value, array('select' => array('LNAME' => 'NAME.NAME', 'TYPE_ID'), 'filter' => array('=NAME.LANGUAGE_ID' => LANGUAGE_ID))); $types = \Bitrix\Sale\Location\Admin\TypeHelper::getTypeCodeIdMapCached(); $path = array(); while ($item = $res->fetch()) { // copy street to STREET property if ($types['ID2CODE'][$item['TYPE_ID']] == 'STREET') { $arResult[$curKey . "_STREET"] = $item['LNAME']; } if ($types['ID2CODE'][$item['TYPE_ID']] == 'COUNTRY') { $arValue["COUNTRY_NAME"] = $item['LNAME']; } if ($types['ID2CODE'][$item['TYPE_ID']] == 'REGION') { $arValue["REGION_NAME"] = $item['LNAME']; } if ($types['ID2CODE'][$item['TYPE_ID']] == 'CITY') { $arValue["CITY_NAME"] = $item['LNAME']; } if ($types['ID2CODE'][$item['TYPE_ID']] == 'VILLAGE') { $arResult[$curKey . "_VILLAGE"] = $item['LNAME']; } $path[] = $item['LNAME']; } $curValue = implode(' - ', $path); } catch (\Bitrix\Main\SystemException $e) { } } } } else { $arValue = CSaleLocation::GetByID($value, $lang); $curValue = $arValue["COUNTRY_NAME"] . (strlen($arValue["COUNTRY_NAME"]) <= 0 || strlen($arValue["REGION_NAME"]) <= 0 ? "" : " - ") . $arValue["REGION_NAME"] . (strlen($arValue["COUNTRY_NAME"]) <= 0 || strlen($arValue["CITY_NAME"]) <= 0 ? "" : " - ") . $arValue["CITY_NAME"]; } $arResult[$curKey] = $curValue; $arResult[$curKey . "_COUNTRY"] = $arValue["COUNTRY_NAME"]; $arResult[$curKey . "_REGION"] = $arValue["REGION_NAME"]; $arResult[$curKey . "_CITY"] = $arValue["CITY_NAME"]; } else { $arResult[$curKey] = $value; } return $arResult; }
// get prop values $arPropValsTmp = Array(); if (!$bInitVars) { $dbPropVals = CSaleOrderUserPropsValue::GetList( array("SORT" => "ASC"), array("USER_PROPS_ID" => $arUserProps["ID"]), false, false, array("ID", "ORDER_PROPS_ID", "VALUE", "SORT") ); while ($arPropVals = $dbPropVals->GetNext()) { // replace here if(CSaleLocation::isLocationProMigrated() && isset($propsOfTypeLocation[$arPropVals['ORDER_PROPS_ID']])) $arPropVals["VALUE"] = CSaleLocation::getLocationIDbyCODE($arPropVals["VALUE"]); $arPropValsTmp["ORDER_PROP_".$arPropVals["ORDER_PROPS_ID"]] = $arPropVals["VALUE"]; } } else { foreach ($_REQUEST as $key => $value) { if (substr($key, 0, strlen("ORDER_PROP_"))=="ORDER_PROP_") $arPropValsTmp[$key] = htmlspecialcharsbx($value); } } $arResult["ORDER_PROPS_VALUES"] = $arPropValsTmp; }
function GetOrderRelatedProps($ORDER_ID, $arFilter = array()) { global $DB; $ORDER_ID = IntVal($ORDER_ID); $strJoin = ""; $strWhere = ""; if (isset($arFilter["PAYSYSTEM_ID"]) && intval($arFilter["PAYSYSTEM_ID"]) > 0) { $strJoin = "\tLEFT JOIN b_sale_order_props_relation SOP ON P.ID = SOP.PROPERTY_ID "; $strWhere = " (SOP.ENTITY_TYPE = 'P' AND SOP.ENTITY_ID = " . $DB->ForSql($arFilter["PAYSYSTEM_ID"]) . ")"; } if (isset($arFilter["DELIVERY_ID"]) && strlen($arFilter["DELIVERY_ID"]) > 0) { $strJoin .= "\tLEFT JOIN b_sale_order_props_relation SOD ON P.ID = SOD.PROPERTY_ID "; if (strlen($strWhere) > 0) { $strWhere .= " OR"; } $strWhere .= " (SOD.ENTITY_TYPE = 'D' AND SOD.ENTITY_ID = '" . $DB->ForSql($arFilter["DELIVERY_ID"]) . "')"; } if (strlen($strWhere) > 0) { $strWhere = " AND (" . $strWhere . ") "; } // locations kept in CODEs, but must be shown as IDs $lMig = CSaleLocation::isLocationProMigrated(); $strSql = "SELECT DISTINCT PV.ID, PV.ORDER_ID, PV.ORDER_PROPS_ID, PV.NAME, " . self::getPropertyValueFieldSelectSql() . ", PV.CODE, " . "\tP.NAME as PROPERTY_NAME, P.TYPE, P.PROPS_GROUP_ID, P.INPUT_FIELD_LOCATION, PG.NAME as GROUP_NAME, " . "\tP.IS_LOCATION, P.IS_EMAIL, P.IS_PROFILE_NAME, P.IS_PAYER, PG.SORT as GROUP_SORT, P.ACTIVE, P.UTIL " . "FROM b_sale_order_props_value PV " . "\tLEFT JOIN b_sale_order_props P ON (PV.ORDER_PROPS_ID = P.ID) " . "\tLEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID) " . self::getLocationTableJoinSql() . $strJoin . "WHERE PV.ORDER_ID = " . $ORDER_ID . " " . $strWhere . "ORDER BY PG.SORT, PG.NAME, P.SORT, P.NAME, P.ID "; $db_res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); return $db_res; }
function PrepareGetListArray($key, &$arFields, &$arPropIDsTmp) { $propIDTmp = false; if (StrPos($key, "PROPERTY_ID_") === 0) { $propIDTmp = IntVal(substr($key, StrLen("PROPERTY_ID_"))); } elseif (StrPos($key, "PROPERTY_NAME_") === 0) { $propIDTmp = IntVal(substr($key, StrLen("PROPERTY_NAME_"))); } elseif (StrPos($key, "PROPERTY_VALUE_") === 0) { $propIDTmp = IntVal(substr($key, StrLen("PROPERTY_VALUE_"))); } elseif (StrPos($key, "PROPERTY_CODE_") === 0) { $propIDTmp = IntVal(substr($key, StrLen("PROPERTY_CODE_"))); } elseif (StrPos($key, "PROPERTY_VAL_BY_CODE_") === 0) { $propIDTmp = preg_replace("/[^a-zA-Z0-9_-]/is", "", trim(substr($key, StrLen("PROPERTY_VAL_BY_CODE_")))); } $locationPropInfo = self::getLocationPropertyInfo(); if (strlen($propIDTmp) > 0 || $propIDTmp > 0) { if (!in_array($propIDTmp, $arPropIDsTmp)) { $arPropIDsTmp[] = $propIDTmp; $arFields["PROPERTY_ID_" . $propIDTmp] = array("FIELD" => "SP_" . $propIDTmp . ".ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".ORDER_PROPS_ID = " . $propIDTmp . " AND O.ID = SP_" . $propIDTmp . ".ORDER_ID)"); $arFields["PROPERTY_ORDER_PROPS_ID_" . $propIDTmp] = array("FIELD" => "SP_" . $propIDTmp . ".ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".ORDER_PROPS_ID = " . $propIDTmp . " AND O.ID = SP_" . $propIDTmp . ".ORDER_ID)"); $arFields["PROPERTY_NAME_" . $propIDTmp] = array("FIELD" => "SP_" . $propIDTmp . ".NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".ORDER_PROPS_ID = " . $propIDTmp . " AND O.ID = SP_" . $propIDTmp . ".ORDER_ID)"); if (CSaleLocation::isLocationProMigrated() && isset($locationPropInfo['ID'][$propIDTmp])) { $arFields["PROPERTY_VALUE_" . $propIDTmp] = array("FIELD" => "L_" . $propIDTmp . ".ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".ORDER_PROPS_ID = " . $propIDTmp . " AND O.ID = SP_" . $propIDTmp . ".ORDER_ID) INNER JOIN b_sale_location L_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".VALUE = L_" . $propIDTmp . ".CODE)"); } else { $arFields["PROPERTY_VALUE_" . $propIDTmp] = array("FIELD" => "SP_" . $propIDTmp . ".VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".ORDER_PROPS_ID = " . $propIDTmp . " AND O.ID = SP_" . $propIDTmp . ".ORDER_ID)"); } $arFields["PROPERTY_CODE_" . $propIDTmp] = array("FIELD" => "SP_" . $propIDTmp . ".CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".ORDER_PROPS_ID = " . $propIDTmp . " AND O.ID = SP_" . $propIDTmp . ".ORDER_ID)"); if (CSaleLocation::isLocationProMigrated() && isset($locationPropInfo['CODE'][$propIDTmp])) { $arFields["PROPERTY_VAL_BY_CODE_" . $propIDTmp] = array("FIELD" => "L_" . $propIDTmp . ".ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".CODE = '" . $propIDTmp . "' AND O.ID = SP_" . $propIDTmp . ".ORDER_ID) INNER JOIN b_sale_location L_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".VALUE = L_" . $propIDTmp . ".CODE)"); } else { $arFields["PROPERTY_VAL_BY_CODE_" . $propIDTmp] = array("FIELD" => "SP_" . $propIDTmp . ".VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP_" . $propIDTmp . " ON (SP_" . $propIDTmp . ".CODE = '" . $propIDTmp . "' AND O.ID = SP_" . $propIDTmp . ".ORDER_ID)"); } } } }
var so = this.opts, sv = this.vars; if(typeof so.messages['stage_'+stageCode] == 'undefined'){ this.setStatusText('Unknown status', true); sv.stage = false; return; } this.setStatusText(this.opts.messages['stage_'+stageCode], false); sv.stage = stageCode; } }); <?if(!CSaleLocation::isLocationProMigrated()):?> new BX.locationMigration(<?php echo CUtil::PhpToJSObject(array('url' => Helper::getMigrationUrl(), 'scope' => 'location-migration', 'ajaxFlag' => 'AJAX_MODE', 'redirectTo' => LocationHelper::getListUrl(0), 'messages' => array('error_occured' => Loc::getMessage('SALE_LOCATION_MIGRATION_ERROR'), 'stage_CREATE_TYPES' => Loc::getMessage('SALE_LOCATION_MIGRATION_STAGE_CREATE_TYPES'), 'stage_CONVERT_TREE' => Loc::getMessage('SALE_LOCATION_MIGRATION_STAGE_CONVERT_TREE'), 'stage_CONVERT_ZONES' => Loc::getMessage('SALE_LOCATION_MIGRATION_STAGE_CONVERT_ZONES'), 'stage_CONVERT_LINKS' => Loc::getMessage('SALE_LOCATION_MIGRATION_STAGE_CONVERT_LINKS'), 'stage_COPY_DEFAULT_LOCATIONS' => Loc::getMessage('SALE_LOCATION_MIGRATION_STAGE_COPY_DEFAULT_LOCATIONS'), 'stage_COPY_ZIP_CODES' => Loc::getMessage('SALE_LOCATION_MIGRATION_STAGE_COPY_ZIP_CODES'), 'stage_COMPLETE' => Loc::getMessage('SALE_LOCATION_MIGRATION_STAGE_COMPLETE'))), false, false, true); ?> ); <?endif?> </script> <style> .adm-loc-m-statusbar { margin-top: 10px; margin-bottom: -15px; }