Example #1
0
 /**
  * <p>Функция возвращает результат выборки записей из заказов в соответствии со своими параметрами.</p>
  *
  *
  *
  *
  * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
  * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
  * "направление_сортировки1", "название_поля2" =&gt;
  * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
  * может стоять любое поле местоположения, а в качестве
  * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
  * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
  * имеет несколько элементов, то результирующий набор сортируется
  * последовательно по каждому элементу (т.е. сначала сортируется по
  * первому элементу, потом результат сортируется по второму и
  * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает,
  * что результат отсортирован не будет.
  *
  *
  *
  * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи групп
  * свойств. Массив имеет вид: <pre class="syntax">array(
  * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
  * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
  * Удовлетворяющие фильтру записи возвращаются в результате, а
  * записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
  * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка
  * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
  * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
  * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
  * поля строго больше передаваемой в фильтр величины;</li> <li><b> -
  * значение поля меньше или равно передаваемой в фильтр
  * величины;</b></li> <li><b> - значение поля строго меньше передаваемой в
  * фильтр величины;</b></li> <li> <b>@</b> - значение поля находится в
  * передаваемом в фильтр разделенном запятой списке значений;</li> <li>
  * <b>~</b> - значение поля проверяется на соответствие передаваемому в
  * фильтр шаблону;</li> <li> <b>%</b> - значение поля проверяется на
  * соответствие передаваемой в фильтр строке в соответствии с
  * языком запросов.</li> </ul> В качестве "название_поляX" может стоять
  * любое поле заказов.<br><br> Пример фильтра: <pre class="syntax">array("!PERSON_TYPE_ID"
  * =&gt; 1)</pre> Этот фильтр означает "выбрать все записи, в которых
  * значение в поле PERSON_TYPE_ID (код типа плательщика) не равно 1".<br><br>
  * Значение по умолчанию - пустой массив array() - означает, что
  * результат отфильтрован не будет.
  *
  *
  *
  * @param array $arGroupBy = false Массив полей, по которым группируются записи групп свойств.
  * Массив имеет вид: <pre class="syntax">array("название_поля1",
  * "группирующая_функция2" =&gt; "название_поля2", ...)</pre> В качестве
  * "название_поля<i>N</i>" может стоять любое поле групп свойств. В
  * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> -
  * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li>
  * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> -
  * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление
  * суммы.</li> </ul> Если массив пустой, то функция вернет число записей,
  * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> -
  * означает, что результат группироваться не будет.
  *
  *
  *
  * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
  * ограничено сверху значением этого ключа;</li> <li> любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
  * параметров выборки нет.
  *
  *
  *
  * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно
  * указать только те поля, которые необходимы. Если в массиве
  * присутствует значение "*", то будут возвращены все доступные
  * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
  * что будут возвращены все поля основной таблицы запроса.
  *
  *
  *
  * @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>PERSON_TYPE_ID</td> <td>Тип плательщика.</td>
  * </tr> <tr> <td>NAME</td> <td>Название группы.</td> </tr> <tr> <td>SORT</td> <td>Индекс
  * сортировки.</td> </tr> </table> <p>Если в качестве параметра arGroupBy
  * передается пустой массив, то функция вернет число записей,
  * удовлетворяющих фильтру.</p> <a name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // Выведем все группы свойств для плательщика с кодом $PERSON_TYPE
  * $db_propsGroup = CSaleOrderPropsGroup::GetList(
  *         array("SORT" =&gt; "ASC"),
  *         array("PERSON_TYPE_ID" =&gt; $PERSON_TYPE),
  *         false,
  *         false,
  *         array()
  *     );
  * 
  * while ($propsGroup = $db_propsGroup-&gt;Fetch())
  * {
  *    echo $propsGroup["NAME"]."&lt;br&gt;";
  * }
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderpropsgroup/csaleorderpropsgroup__getlist.7a3426ca.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     // To call the old form
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = strval($arOrder);
         $arFilter = strval($arFilter);
         if (strlen($arOrder) > 0 && strlen($arFilter) > 0) {
             $arOrder = array($arOrder => $arFilter);
         } else {
             $arOrder = array();
         }
         if (is_array($arGroupBy)) {
             $arFilter = $arGroupBy;
         } else {
             $arFilter = array();
         }
         $arGroupBy = false;
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "PG.ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "PG.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "PG.NAME", "TYPE" => "string"), "SORT" => array("FIELD" => "PG.SORT", "TYPE" => "int"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_props_group PG " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_props_group PG " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_order_props_group PG " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #2
0
 public static function GetBuyersList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields) || in_array("*", $arSelectFields)) {
         $arSelectFields = array("ID", "ACTIVE", "LID", "DATE_REGISTER", "LOGIN", "EMAIL", "NAME", "LAST_NAME", "SECOND_NAME", "PERSONAL_PHONE", "USER_ID", "LAST_LOGIN", "TIMESTAMP_X", "PERSONAL_BIRTHDAY", "ORDER_COUNT", "ORDER_SUM", "CURRENCY", "LAST_ORDER_DATE");
     }
     $arFields_m = array("ACTIVE", "LOGIN", "EMAIL", "NAME", "LAST_NAME", "SECOND_NAME", "PERSONAL_PHONE");
     $arFields_md = array("LAST_LOGIN", "DATE_REGISTER", "TIMESTAMP_X", "PERSONAL_BIRTHDAY");
     $CURRENCY = "";
     if (strlen($arFilter["CURRENCY"]) > 0) {
         $CURRENCY = $arFilter["CURRENCY"];
         unset($arFilter["CURRENCY"]);
     } else {
         CModule::IncludeModule("currency");
         $CURRENCY = CCurrency::GetBaseCurrency();
     }
     $LID = "";
     if (strlen($arFilter["LID"]) > 0) {
         $LID = $arFilter["LID"];
         unset($arFilter["LID"]);
     } else {
         $rsSites = CSite::GetList($by = "id", $order = "asc", array("ACTIVE" => "Y"));
         $arSite = $rsSites->Fetch();
         $LID = $arSite["ID"];
     }
     $arFields = array("ID" => array("FIELD" => "F.ID", "TYPE" => "int"), "LID" => array("FIELD" => "O1.LID", "TYPE" => "string"), "ORDER_COUNT" => array("FIELD" => "(SELECT COUNT(O3.PRICE) FROM b_sale_order O3 WHERE O3.USER_ID=F.USER_ID AND O3.CURRENCY = '" . $DB->ForSQL($CURRENCY) . "' AND O3.PAYED = 'Y' AND O3.LID = '" . $DB->ForSQL($LID) . "' )", "TYPE" => "double"), "ORDER_SUM" => array("FIELD" => "(SELECT SUM(O3.PRICE) FROM b_sale_order O3 WHERE O3.USER_ID=F.USER_ID AND O3.CURRENCY = '" . $DB->ForSQL($CURRENCY) . "' AND O3.PAYED = 'Y' AND O3.LID = '" . $DB->ForSQL($LID) . "' )", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "O1.CURRENCY", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order O1 ON (O1.USER_ID=U.ID AND O1.CURRENCY = '" . $DB->ForSQL($CURRENCY) . "' AND O1.LID = '" . $DB->ForSQL($LID) . "' AND O1.PAYED = 'Y')"), "LAST_ORDER_DATE" => array("FIELD" => "(SELECT MAX(O2.DATE_INSERT) FROM b_sale_order O2 WHERE (O2.USER_ID=F.USER_ID))", "TYPE" => "datetime"), "NAME_SEARCH" => array("FIELD" => "U.NAME, U.LAST_NAME, U.SECOND_NAME, U.EMAIL, U.LOGIN, U.ID", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (U.ID = F.USER_ID)"), "USER_ID" => array("FIELD" => "F.USER_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_user U ON (U.ID = F.USER_ID)"), "GROUPS_ID" => array("FIELD" => "UG.GROUP_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_user_group UG ON (UG.USER_ID = F.USER_ID)"));
     foreach ($arFields_m as $val) {
         $arFields[$val] = array("FIELD" => "U." . $val, "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (U.ID = F.USER_ID)");
     }
     foreach ($arFields_md as $val) {
         $arFields[$val] = array("FIELD" => "U." . $val, "TYPE" => "datetime", "FROM" => "INNER JOIN b_user U ON (U.ID = F.USER_ID)");
     }
     if (!in_array("USER_ID", $arSelectFields)) {
         $arSelectFields[] = "USER_ID";
     }
     $arFilterH = array();
     if (!empty($arFilter)) {
         foreach ($arFilter as $k => $v) {
             if (strpos($k, "ORDER_SUM") !== false || strpos($k, "ORDER_COUNT") !== false || strpos($k, "LAST_ORDER_DATE") !== false) {
                 $arFilterH[$k] = $v;
                 unset($arFilter[$k]);
             }
         }
     }
     if (!empty($arFilterH)) {
         $arSqlsH = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilterH, false, $arSelectFields);
     }
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_fuser F " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     $strSql .= "GROUP BY F.USER_ID ";
     if (strlen($arSqlsH["WHERE"]) > 0) {
         $strSql .= "HAVING " . $arSqlsH["WHERE"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     // echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_fuser F " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         $strSql_tmp .= "GROUP BY F.USER_ID ";
         if (strlen($arSqlsH["WHERE"]) > 0) {
             $strSql_tmp .= "HAVING " . $arSqlsH["WHERE"] . " ";
         }
         // echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = $dbRes->SelectedRowsCount();
         $dbRes = new CDBResult();
         // echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         // echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #3
0
 /**
  * <p>Функция возвращает результат выборки записей из типов плательщика в соответствии со своими параметрами.</p>
  *
  *
  *
  *
  * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
  * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
  * "направление_сортировки1", "название_поля2" =&gt;
  * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
  * может стоять любое поле типов плательщика, а в качестве
  * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
  * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
  * имеет несколько элементов, то результирующий набор сортируется
  * последовательно по каждому элементу (т.е. сначала сортируется по
  * первому элементу, потом результат сортируется по второму и
  * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает,
  * что результат отсортирован не будет.
  *
  *
  *
  * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи типов
  * плательщика. Массив имеет вид: <pre class="syntax">array(
  * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
  * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
  * Удовлетворяющие фильтру записи возвращаются в результате, а
  * записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
  * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка
  * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
  * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
  * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
  * поля строго больше передаваемой в фильтр величины;</li> <li> <b>&lt;=</b> -
  * значение поля меньше или равно передаваемой в фильтр величины;</li>
  * <li> <b>&lt;</b> - значение поля строго меньше передаваемой в фильтр
  * величины;</li> <li> <b>@</b> - значение поля находится в передаваемом в
  * фильтр разделенном запятой списке значений;</li> <li> <b>~</b> - значение
  * поля проверяется на соответствие передаваемому в фильтр
  * шаблону;</li> <li> <b>%</b> - значение поля проверяется на соответствие
  * передаваемой в фильтр строке в соответствии с языком запросов.</li>
  * </ul> В качестве "название_поляX" может стоять любое поле типов
  * плательщика.<br> Значение по умолчанию - пустой массив array() -
  * означает, что результат отфильтрован не будет.
  *
  *
  *
  * @param array $arGroupBy = false Массив полей, по которым группируются записи типов плательщика.
  * Массив имеет вид: <pre class="syntax">array("название_поля1",
  * "группирующая_функция2" =&gt; "название_поля2", ...)</pre> В качестве
  * "название_поля<i>N</i>" может стоять любое поле типов плательщика. В
  * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> -
  * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li>
  * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> -
  * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление
  * суммы.</li> </ul> Этот фильтр означает "выбрать все записи, в которых
  * значение в поле LID (сайт системы) не равно en".<br><br> Значение по
  * умолчанию - <i>false</i> - означает, что результат группироваться не
  * будет.
  *
  *
  *
  * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
  * ограничено сверху значением этого ключа;</li> <li> любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
  * параметров выборки нет.
  *
  *
  *
  * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно
  * указать только те поля, которые необходимы. Если в массиве
  * присутствует значение "*", то будут возвращены все доступные
  * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
  * что будут возвращены все поля основной таблицы запроса.
  *
  *
  *
  * @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>LID</td> <td>Код
  * сайта.</td> </tr> <tr> <td>LIDS</td> <td>Фильтрация/выборка всех сайтов, к
  * которым привязан тип плательщика.</td> </tr> <tr> <td>NAME</td> <td>Название
  * типа плательщика.</td> </tr> <tr> <td>SORT</td> <td>Индекс сортировки.</td> </tr> <tr>
  * <td>ACTIVE</td> <td>Флаг активности пользователя [Y|N].</td> </tr> </table> <p>Если в
  * качестве параметра arGroupBy передается пустой массив, то функция
  * вернет число записей, удовлетворяющих фильтру.</p> <a name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // Выведем переключатели для выбора типа плательщика для текущего сайта
  * $db_ptype = CSalePersonType::GetList(Array("SORT" =&gt; "ASC"), Array("LID"=&gt;SITE_ID));
  * $bFirst = True;
  * while ($ptype = $db_ptype-&gt;Fetch())
  * {
  *    ?&gt;&lt;input type="radio" name="PERSON_TYPE" value="&lt;?echo $ptype["ID"] ?&gt;"&lt;?if ($bFirst) echo " checked";?&gt;&gt;&lt;?echo $ptype["NAME"] ?&gt;&lt;br&gt;&lt;?
  *    $bFirst = <i>false</i>;
  * }
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalepersontype/csalepersontype__getlist.2dca23fd.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = strval($arOrder);
         $arFilter = strval($arFilter);
         if (strlen($arOrder) > 0 && strlen($arFilter) > 0) {
             $arOrder = array($arOrder => $arFilter);
         } else {
             $arOrder = array();
         }
         if (is_array($arGroupBy)) {
             $arFilter = $arGroupBy;
         } else {
             $arFilter = array();
         }
         $arGroupBy = false;
     }
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "LID", "NAME", "SORT", "ACTIVE");
     }
     if (is_set($arFilter, "LID") && !empty($arFilter["LID"])) {
         $arFilter["LIDS"] = $arFilter["LID"];
         unset($arFilter["LID"]);
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "PT.ID", "TYPE" => "int"), "LID" => array("FIELD" => "PT.LID", "TYPE" => "string"), "LIDS" => array("FIELD" => "PTS.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type_site PTS ON (PT.ID = PTS.PERSON_TYPE_ID)"), "NAME" => array("FIELD" => "PT.NAME", "TYPE" => "string"), "SORT" => array("FIELD" => "PT.SORT", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "PT.ACTIVE", "TYPE" => "char"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_person_type PT " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_person_type PT " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_person_type PT " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     $arPT = array();
     $arResTmp = array();
     while ($arRes = $dbRes->Fetch()) {
         if (IntVal($arRes["ID"]) > 0) {
             if (!in_array($arRes["ID"], $arPT)) {
                 $arPT[] = $arRes["ID"];
             }
             $arResTmp[] = $arRes;
         }
     }
     if (!empty($arPT) && is_array($arPT)) {
         $strSql = "SELECT * from b_sale_person_type_site WHERE PERSON_TYPE_ID IN (" . implode(",", $arPT) . ")";
         $dbRes1 = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         while ($arRes1 = $dbRes1->Fetch()) {
             $arRes2[$arRes1["PERSON_TYPE_ID"]][] = $arRes1["SITE_ID"];
         }
     }
     foreach ($arResTmp as $k => $v) {
         $arResTmp[$k]["LIDS"] = $arRes2[$v["ID"]];
     }
     $dbRes = new CDBResult();
     $dbRes->InitFromArray($arResTmp);
     return $dbRes;
 }
 function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = strval($arOrder);
         $arFilter = strval($arFilter);
         if (strlen($arOrder) > 0 && strlen($arFilter) > 0) {
             $arOrder = array($arOrder => $arFilter);
         } else {
             $arOrder = array();
         }
         if (is_array($arGroupBy)) {
             $arFilter = $arGroupBy;
         } else {
             $arFilter = array();
         }
         $arGroupBy = false;
         $arSelectFields = array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "IS_ZIP", "CODE", "IS_FILTERED", "ACTIVE", "UTIL", "INPUT_FIELD_LOCATION");
     }
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "IS_ZIP", "CODE", "IS_FILTERED", "ACTIVE", "UTIL", "INPUT_FIELD_LOCATION");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "P.ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "P.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "P.NAME", "TYPE" => "string"), "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string"), "REQUIED" => array("FIELD" => "P.REQUIED", "TYPE" => "char"), "REQUIRED" => array("FIELD" => "P.REQUIED", "TYPE" => "char"), "DEFAULT_VALUE" => array("FIELD" => "P.DEFAULT_VALUE", "TYPE" => "string"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int"), "USER_PROPS" => array("FIELD" => "P.USER_PROPS", "TYPE" => "char"), "IS_LOCATION" => array("FIELD" => "P.IS_LOCATION", "TYPE" => "char"), "PROPS_GROUP_ID" => array("FIELD" => "P.PROPS_GROUP_ID", "TYPE" => "int"), "SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int"), "SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int"), "DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string"), "IS_EMAIL" => array("FIELD" => "P.IS_EMAIL", "TYPE" => "char"), "IS_PROFILE_NAME" => array("FIELD" => "P.IS_PROFILE_NAME", "TYPE" => "char"), "IS_PAYER" => array("FIELD" => "P.IS_PAYER", "TYPE" => "char"), "IS_LOCATION4TAX" => array("FIELD" => "P.IS_LOCATION4TAX", "TYPE" => "char"), "IS_FILTERED" => array("FIELD" => "P.IS_FILTERED", "TYPE" => "char"), "IS_ZIP" => array("FIELD" => "P.IS_ZIP", "TYPE" => "char"), "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string"), "ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char"), "UTIL" => array("FIELD" => "P.UTIL", "TYPE" => "char"), "INPUT_FIELD_LOCATION" => array("FIELD" => "P.INPUT_FIELD_LOCATION", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "PG.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_PERSON_TYPE_ID" => array("FIELD" => "PG.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_NAME" => array("FIELD" => "PG.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_SORT" => array("FIELD" => "PG.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "PERSON_TYPE_LID" => array("FIELD" => "SPT.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_NAME" => array("FIELD" => "SPT.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_SORT" => array("FIELD" => "SPT.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_ACTIVE" => array("FIELD" => "SPT.ACTIVE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_props P " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_props P " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_order_props P " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #5
0
 /**
  * <p>Метод возвращает результат выборки записей информации о временном доступе в соответствии со своими параметрами. Метод динамичный.</p>
  *
  *
  * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
  * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
  * "направление_сортировки1", "название_поля2" =&gt;
  * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
  * может стоять любое поле информации о временном доступе, а в
  * качестве "направление_сортировки<span lang="en-us"><span class="style1">N</span></span>"
  * могут быть значения "<i>ASC</i>" (по возрастанию) и "<i>DESC</i>" (по
  * убыванию).<br><br> Если массив сортировки имеет несколько элементов,
  * то результирующий набор сортируется последовательно по каждому
  * элементу (т.е. сначала сортируется по первому элементу, потом
  * результат сортируется по второму и т.д.). <br><br> Значение по
  * умолчанию - пустой массив array() - означает, что результат
  * отсортирован не будет.
  *
  * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи информации о
  * временном доступе. Массив имеет вид: <pre class="syntax">array(
  * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
  * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
  * Удовлетворяющие фильтру записи возвращаются в результате, а
  * записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
  * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка
  * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
  * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
  * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
  * поля строго больше передаваемой в фильтр величины;</li> <li> <b>&lt;=</b> -
  * значение поля меньше или равно передаваемой в фильтр величины;</li>
  * <li> <b>&lt;</b> - значение поля строго меньше передаваемой в фильтр
  * величины;</li> <li> <b>@</b> - значение поля находится в передаваемом в
  * фильтр разделенном запятой списке значений;</li> <li> <b>~</b> - значение
  * поля проверяется на соответствие передаваемому в фильтр
  * шаблону;</li> <li> <b>%</b> - значение поля проверяется на соответствие
  * передаваемой в фильтр строке в соответствии с языком запросов.</li>
  * </ul> В качестве "название_поля<span lang="en-us">N</span>" может стоять любое
  * поле информации о временном доступе.<br><br> Пример фильтра: <pre
  * class="syntax">array("USER_ID" =&gt; 150)</pre> Этот фильтр означает "выбрать все
  * записи, в которых значение в поле USER_ID (код пользователя) равно
  * 150".<br><br> Значение по умолчанию - пустой массив array() - означает, что
  * результат отфильтрован не будет.
  *
  * @param array $arGroupBy = false Массив полей, по которым группируются записи информации о
  * временном доступе. Массив имеет вид: <pre
  * class="syntax">array("название_поля1", "группирующая_функция2" =&gt;
  * "название_поля2", . . .)</pre> В качестве "название_поля<i>N</i>" может
  * стоять любое поле информации о временном доступе. В качестве
  * группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - подсчет
  * количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> <li>
  * <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> -
  * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление
  * суммы.</li> </ul> Если массив пустой, то метод вернет число записей,
  * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> -
  * означает, что результат группироваться не будет.
  *
  * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых методом записей будет
  * ограничено сверху значением этого ключа;</li> <li> любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
  * параметров выборки нет.
  *
  * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены методом. Можно
  * указать только те поля, которые необходимы. Если в массиве
  * присутствует значение "*", то будут возвращены все доступные
  * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
  * что будут возвращены все поля основной таблицы запроса.
  *
  * @return CDBResult <p>Возвращается объект класса CDBResult, содержащий набор
  * ассоциативных массивов параметров информации о временном
  * доступе с ключами:</p> <ul> <li> <b>ID</b> - код записи; </li> <li> <b>USER_ID</b> - код
  * пользователя; </li> <li> <b>ITEM</b> - ресурс, доступ к которому разрешен;
  * </li> <li> <b>ITEM_MD5</b> - идентификатор ресурса (строка, однозначно
  * идентифицирующая ресурс); </li> <li> <b>TIMESTAMP_X</b> - дата изменения; </li> <li>
  * <b>DATE_INSERT</b> - дата вставки записи.</li> </ul> <p>Если в качестве параметра
  * arGroupBy передается пустой массив, то метод вернет число записей,
  * удовлетворяющих фильтру.</p> <br><br>
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleauxiliary/csaleauxiliary.getlist.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "USER_ID", "TIMESTAMP_X", "ITEM", "ITEM_MD5", "DATE_INSERT");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "A.ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "A.USER_ID", "TYPE" => "int"), "TIMESTAMP_X" => array("FIELD" => "A.TIMESTAMP_X", "TYPE" => "datetime"), "ITEM" => array("FIELD" => "A.ITEM", "TYPE" => "string"), "ITEM_MD5" => array("FIELD" => "A.ITEM_MD5", "TYPE" => "string", "WHERE" => array("CSaleAuxiliary", "PrepareItemMD54Where")), "DATE_INSERT" => array("FIELD" => "A.DATE_INSERT", "TYPE" => "datetime"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_auxiliary A " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_auxiliary A " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_auxiliary A " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br><br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #6
0
 /**
  * <p>Метод возвращает результат выборки записей счетов в соответствии со своими параметрами. Метод динамичный.</p>
  *
  *
  * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
  * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
  * "направление_сортировки1", "название_поля2" =&gt;
  * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
  * может стоять любое поле счетов, а в качестве
  * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
  * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
  * имеет несколько элементов, то результирующий набор сортируется
  * последовательно по каждому элементу (т.е. сначала сортируется по
  * первому элементу, потом результат сортируется по второму и
  * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает,
  * что результат отсортирован не будет.
  *
  * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи счетов.
  * Массив имеет вид: <pre class="syntax">array(
  * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
  * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
  * Удовлетворяющие фильтру записи возвращаются в результате, а
  * записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
  * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка
  * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
  * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
  * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
  * поля строго больше передаваемой в фильтр величины;</li> <li> <b>&lt;=</b> -
  * значение поля меньше или равно передаваемой в фильтр величины;</li>
  * <li> <b>&lt;</b> - значение поля строго меньше передаваемой в фильтр
  * величины;</li> <li> <b>@</b> - значение поля находится в передаваемом в
  * фильтр разделенном запятой списке значений;</li> <li> <b>~</b> - значение
  * поля проверяется на соответствие передаваемому в фильтр
  * шаблону;</li> <li> <b>%</b> - значение поля проверяется на соответствие
  * передаваемой в фильтр строке в соответствии с языком запросов.</li>
  * </ul> В качестве "название_поляX" может стоять любое поле
  * заказов.<br><br> Пример фильтра: <pre class="syntax">array("USER_ID" =&gt; 150)</pre> Этот
  * фильтр означает "выбрать все записи, в которых значение в поле
  * USER_ID (код пользователя) равно 150".<br><br> Значение по умолчанию -
  * пустой массив array() - означает, что результат отфильтрован не
  * будет.
  *
  * @param array $arGroupBy = false Массив полей, по которым группируются записи счетов. Массив имеет
  * вид: <pre class="syntax">array("название_поля1", "группирующая_функция2" =&gt;
  * "название_поля2", ...)</pre> В качестве "название_поля<i>N</i>" может стоять
  * любое поле счетов. В качестве группирующей функции могут стоять:
  * <ul> <li> <b> COUNT</b> - подсчет количества;</li> <li> <b>AVG</b> - вычисление
  * среднего значения;</li> <li> <b>MIN</b> - вычисление минимального
  * значения;</li> <li> <b> MAX</b> - вычисление максимального значения;</li> <li>
  * <b>SUM</b> - вычисление суммы.</li> </ul> Если массив пустой, то метод
  * вернет число записей, удовлетворяющих фильтру.<br><br> Значение по
  * умолчанию - <i>false</i> - означает, что результат группироваться не
  * будет.
  *
  * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых методом записей будет
  * ограничено сверху значением этого ключа;</li> <li> любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
  * параметров выборки нет.
  *
  * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены методом. Можно
  * указать только те поля, которые необходимы. Если в массиве
  * присутствует значение "*", то будут возвращены все доступные
  * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
  * что будут возвращены все поля основной таблицы запроса.
  *
  * @return CDBResult <p>Возвращается объект класса CDBResult, содержащий набор
  * ассоциативных массивов параметров счетов:</p> <ul> <li> <b>ID</b> - код
  * счета;</li> <li> <b>USER_ID</b> - код пользователя-владельца;</li> <li>
  * <b>CURRENT_BUDGET</b> - текущая сумма на счете;</li> <li> <b>CURRENCY</b> - валюта;</li> <li>
  * <b>NOTES</b> - текстовое описание;</li> <li> <b>LOCKED</b> - флаг
  * заблокированности счета;</li> <li> <b>TIMESTAMP_X</b> - дата последнего
  * изменения;</li> <li> <b>DATE_LOCKED</b> - дата блокировки счета Если в качестве
  * параметра arGroupBy передается пустой массив, то метод вернет число
  * записей, удовлетворяющих фильтру.</li> </ul> <a name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // Выберем все счета (в разных валютах) пользователя с кодом 21
  * $dbAccountCurrency = CSaleUserAccount::GetList(
  *         array(),
  *         array("USER_ID" =&gt; "21"),
  *         false,
  *         false,
  *         array("CURRENT_BUDGET", "CURRENCY")
  *     );
  * while ($arAccountCurrency = $dbAccountCurrency-&gt;Fetch())
  * {
  *     echo "На счете ".$arAccountCurrency["CURRENCY"].": ";
  *     echo SaleFormatCurrency($arAccountCurrency["CURRENT_BUDGET"],
  *                             $arAccountCurrency["CURRENCY"])."&lt;br&gt;";
  * }
  * 
  * // Выберем, сумму счетов покупателей (сколько должен магазин покупателям)
  * $dbAccountCurrency = CSaleUserAccount::GetList(
  *         array("CURRENCY" =&gt; "ASC"),
  *         array(),
  *         array("CURRENCY", "SUM" =&gt; "CURRENT_BUDGET"),
  *         false,
  *         array("CURRENCY", "SUM" =&gt; "CURRENT_BUDGET")
  *     );
  * while ($arAccountCurrency = $dbAccountCurrency-&gt;Fetch())
  * {
  *     echo "В валюте ".$arAccountCurrency["CURRENCY"].": ";
  *     echo SaleFormatCurrency($arAccountCurrency["CURRENT_BUDGET"],
  *                             $arAccountCurrency["CURRENCY"])."&lt;br&gt;";
  * }
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleuseraccount/csaleuseraccount.getlist.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "USER_ID", "CURRENT_BUDGET", "CURRENCY", "LOCKED", "NOTES", "TIMESTAMP_X", "DATE_LOCKED");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "UA.ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "UA.USER_ID", "TYPE" => "int"), "CURRENT_BUDGET" => array("FIELD" => "UA.CURRENT_BUDGET", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "UA.CURRENCY", "TYPE" => "string"), "LOCKED" => array("FIELD" => "UA.LOCKED", "TYPE" => "char"), "NOTES" => array("FIELD" => "UA.NOTES", "TYPE" => "string"), "TIMESTAMP_X" => array("FIELD" => "UA.TIMESTAMP_X", "TYPE" => "datetime"), "DATE_LOCKED" => array("FIELD" => "UA.DATE_LOCKED", "TYPE" => "datetime"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_ACTIVE" => array("FIELD" => "U.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_user_account UA " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_user_account UA " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_user_account UA " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #7
0
	/**
	 * <p>Функция возвращает результат выборки записей пластиковых карт в соответствии со своими параметрами.</p>
	 *
	 *
	 *
	 *
	 * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
	 * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
	 * "направление_сортировки1", "название_поля2" =&gt;
	 * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
	 * может стоять любое поле карт, а в качестве
	 * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
	 * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
	 * имеет несколько элементов, то результирующий набор сортируется
	 * последовательно по каждому элементу (т.е. сначала сортируется по
	 * первому элементу, потом результат сортируется по второму и
	 * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает,
	 * что результат отсортирован не будет.
	 *
	 *
	 *
	 * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи карт. Массив
	 * имеет вид: <pre class="syntax">array( "[модификатор1][оператор1]название_поля1"
	 * =&gt; "значение1", "[модификатор2][оператор2]название_поля2" =&gt;
	 * "значение2", . . . )</pre> Удовлетворяющие фильтру записи возвращаются
	 * в результате, а записи, которые не удовлетворяют условиям
	 * фильтра, отбрасываются.<br><br> Допустимыми являются следующие
	 * модификаторы: <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и
	 * пустая строка так же удовлетворяют условиям фильтра.</li> </ul>
	 * Допустимыми являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение
	 * поля больше или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b>
	 * - значение поля строго больше передаваемой в фильтр величины;</li>
	 * <li> <b>&gt;=</b> - значение поля меньше или равно передаваемой в фильтр
	 * величины;</li> <li> <b>&gt;=</b> - значение поля строго меньше передаваемой
	 * в фильтр величины;</li> <li> <b>@</b> - значение поля находится в
	 * передаваемом в фильтр разделенном запятой списке значений;</li> <li>
	 * <b>~</b> - значение поля проверяется на соответствие передаваемому в
	 * фильтр шаблону;</li> <li> <b>%</b> - значение поля проверяется на
	 * соответствие передаваемой в фильтр строке в соответствии с
	 * языком запросов.</li> </ul> В качестве "название_поляX" может стоять
	 * любое поле карт.<br><br> Пример фильтра: <pre class="syntax">array("USER_ID" =&gt; 150)</pre>
	 * Этот фильтр означает "выбрать все записи, в которых значение в
	 * поле USER_ID (код пользователя) равно 150".<br><br> Значение по умолчанию -
	 * пустой массив array() - означает, что результат отфильтрован не
	 * будет.
	 *
	 *
	 *
	 * @param array $arGroupBy = false Массив полей, по которым группируются записи карт. Массив имеет
	 * вид: <pre class="syntax">array("название_поля1", "группирующая_функция2" =&gt;
	 * "название_поля2", . . .)</pre> В качестве "название_поля<i>N</i>" может
	 * стоять любое поле карт. В качестве группирующей функции могут
	 * стоять: <ul> <li> <b> COUNT</b> - подсчет количества;</li> <li> <b>AVG</b> - вычисление
	 * среднего значения;</li> <li> <b>MIN</b> - вычисление минимального
	 * значения;</li> <li> <b> MAX</b> - вычисление максимального значения;</li> <li>
	 * <b>SUM</b> - вычисление суммы.</li> </ul> Если массив пустой, то функция
	 * вернет число записей, удовлетворяющих фильтру.<br><br> Значение по
	 * умолчанию - <i>false</i> - означает, что результат группироваться не
	 * будет.
	 *
	 *
	 *
	 * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
	 * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
	 * ограничено сверху значением этого ключа;</li> <li> любой ключ,
	 * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
	 * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
	 * параметров выборки нет.
	 *
	 *
	 *
	 * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно
	 * указать только те поля, которые необходимы. Если в массиве
	 * присутствует значение "*", то будут возвращены все доступные
	 * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
	 * что будут возвращены все поля основной таблицы запроса.
	 *
	 *
	 *
	 * @return CDBResult <p>Возвращается объект класса CDBResult, содержащий набор
	 * ассоциативных массивов параметров карт.</p><ul> <li> <b>ID</b> - код
	 * пластиковой карты;</li> <li> <b>USER_ID</b> - код пользователя;</li> <li> <b>SORT</b> -
	 * индекс сортировки;</li> <li> <b>PAY_SYSTEM_ACTION_ID</b> - код обработчика
	 * платежной системы;</li> <li> <b>CURRENCY</b> - валюта, которую можно снимать с
	 * карты;</li> <li> <b>CARD_CODE</b> - CVC2;</li> <li> <b>CARD_TYPE</b> - тип карты;</li> <li> <b>CARD_NUM</b>
	 * - номер карты;</li> <li> <b>CARD_EXP_MONTH</b> - месяц окончания действия
	 * карты;</li> <li> <b>CARD_EXP_YEAR</b> - год окончания действия карты;</li> <li>
	 * <b>DESCRIPTION</b> - краткое описание;</li> <li> <b>SUM_MIN</b> - минимальная сумма,
	 * которую можно снять с карты за раз;</li> <li> <b>SUM_MAX</b> - максимальная
	 * сумма, которую можно снять с карты за раз;</li> <li> <b>SUM_CURRENCY</b> - валюта
	 * минимальной и максимальной сумм;</li> <li> <b>LAST_STATUS</b> - статус
	 * последнего использования карты;</li> <li> <b>LAST_STATUS_CODE</b> - код статуса
	 * последнего использования карты;</li> <li> <b>LAST_STATUS_DESCRIPTION</b> - описание
	 * статуса последнего использования карты;</li> <li> <b>LAST_STATUS_MESSAGE</b> -
	 * сообщение платежной системы;</li> <li> <b>LAST_SUM</b> - последняя снятая с
	 * карты сумма;</li> <li> <b>LAST_CURRENCY</b> - валюта последней снятой с карты
	 * суммы;</li> <li> <b>ACTIVE</b> - флаг активности;</li> <li> <b>TIMESTAMP_X</b> - дата
	 * изменения;</li> <li> <b>LAST_DATE</b> - дата последнего использования
	 * карты.</li> </ul><p>Если в качестве параметра arGroupBy передается пустой
	 * массив, то функция вернет число записей, удовлетворяющих
	 * фильтру.</p><br><br>
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleusercards/csaleusercards.getlist.php
	 * @author Bitrix
	 */
	public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
	{
		global $DB;

		if (count($arSelectFields) <= 0)
			$arSelectFields = array("ID", "USER_ID", "ACTIVE", "SORT", "PAY_SYSTEM_ACTION_ID", "CURRENCY", "CARD_TYPE", "CARD_NUM", "CARD_CODE", "CARD_EXP_MONTH", "CARD_EXP_YEAR", "DESCRIPTION", "SUM_MIN", "SUM_MAX", "SUM_CURRENCY", "TIMESTAMP_X", "LAST_STATUS", "LAST_STATUS_CODE", "LAST_STATUS_DESCRIPTION", "LAST_STATUS_MESSAGE", "LAST_SUM", "LAST_CURRENCY", "LAST_DATE");

		// FIELDS -->
		$arFields = array(
				"ID" => array("FIELD" => "UC.ID", "TYPE" => "int"),
				"USER_ID" => array("FIELD" => "UC.USER_ID", "TYPE" => "int"),
				"ACTIVE" => array("FIELD" => "UC.ACTIVE", "TYPE" => "char"),
				"SORT" => array("FIELD" => "UC.SORT", "TYPE" => "int"),
				"PAY_SYSTEM_ACTION_ID" => array("FIELD" => "UC.PAY_SYSTEM_ACTION_ID", "TYPE" => "int"),
				"CURRENCY" => array("FIELD" => "UC.CURRENCY", "TYPE" => "string"),
				"CARD_TYPE" => array("FIELD" => "UC.CARD_TYPE", "TYPE" => "string"),
				"CARD_NUM" => array("FIELD" => "UC.CARD_NUM", "TYPE" => "string"),
				"CARD_CODE" => array("FIELD" => "UC.CARD_CODE", "TYPE" => "string"),
				"CARD_EXP_MONTH" => array("FIELD" => "UC.CARD_EXP_MONTH", "TYPE" => "int"),
				"CARD_EXP_YEAR" => array("FIELD" => "UC.CARD_EXP_YEAR", "TYPE" => "int"),
				"DESCRIPTION" => array("FIELD" => "UC.DESCRIPTION", "TYPE" => "string"),
				"SUM_MIN" => array("FIELD" => "UC.SUM_MIN", "TYPE" => "double"),
				"SUM_MAX" => array("FIELD" => "UC.SUM_MAX", "TYPE" => "double"),
				"SUM_CURRENCY" => array("FIELD" => "UC.SUM_CURRENCY", "TYPE" => "string"),
				"TIMESTAMP_X" => array("FIELD" => "UC.TIMESTAMP_X", "TYPE" => "datetime"),
				"LAST_STATUS" => array("FIELD" => "UC.LAST_STATUS", "TYPE" => "char"),
				"LAST_STATUS_CODE" => array("FIELD" => "UC.LAST_STATUS_CODE", "TYPE" => "string"),
				"LAST_STATUS_DESCRIPTION" => array("FIELD" => "UC.LAST_STATUS_DESCRIPTION", "TYPE" => "string"),
				"LAST_STATUS_MESSAGE" => array("FIELD" => "UC.LAST_STATUS_MESSAGE", "TYPE" => "string"),
				"LAST_SUM" => array("FIELD" => "UC.LAST_SUM", "TYPE" => "double"),
				"LAST_CURRENCY" => array("FIELD" => "UC.LAST_CURRENCY", "TYPE" => "string"),
				"LAST_DATE" => array("FIELD" => "UC.LAST_DATE", "TYPE" => "datetime"),
				"USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"),
				"USER_ACTIVE" => array("FIELD" => "U.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"),
				"USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"),
				"USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"),
				"USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"),
				"USER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)")
			);
		// <-- FIELDS

		$arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);

		$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);

		if (is_array($arGroupBy) && count($arGroupBy)==0)
		{
			$strSql =
				"SELECT ".$arSqls["SELECT"]." ".
				"FROM b_sale_user_cards UC ".
				"	".$arSqls["FROM"]." ";
			if (strlen($arSqls["WHERE"]) > 0)
				$strSql .= "WHERE ".$arSqls["WHERE"]." ";
			if (strlen($arSqls["GROUPBY"]) > 0)
				$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";

			//echo "!1!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			if ($arRes = $dbRes->Fetch())
				return $arRes["CNT"];
			else
				return False;
		}

		$strSql = 
			"SELECT ".$arSqls["SELECT"]." ".
			"FROM b_sale_user_cards UC ".
			"	".$arSqls["FROM"]." ";
		if (strlen($arSqls["WHERE"]) > 0)
			$strSql .= "WHERE ".$arSqls["WHERE"]." ";
		if (strlen($arSqls["GROUPBY"]) > 0)
			$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
		if (strlen($arSqls["ORDERBY"]) > 0)
			$strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";

		if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])<=0)
		{
			$strSql_tmp =
				"SELECT COUNT('x') as CNT ".
				"FROM b_sale_user_cards UC ".
				"	".$arSqls["FROM"]." ";
			if (strlen($arSqls["WHERE"]) > 0)
				$strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
			if (strlen($arSqls["GROUPBY"]) > 0)
				$strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";

			//echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";

			$dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			$cnt = 0;
			if (strlen($arSqls["GROUPBY"]) <= 0)
			{
				if ($arRes = $dbRes->Fetch())
					$cnt = $arRes["CNT"];
			}
			else
			{
				// FOR MYSQL!!! ANOTHER CODE FOR ORACLE
				$cnt = $dbRes->SelectedRowsCount();
			}

			$dbRes = new CDBResult();

			//echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
		}
		else
		{
			if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])>0)
				$strSql .= "LIMIT ".IntVal($arNavStartParams["nTopCount"]);

			//echo "!3!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
		}

		return $dbRes;
	}
Example #8
0
 function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = strval($arOrder);
         $arFilter = strval($arFilter);
         if (strlen($arOrder) > 0 && strlen($arFilter) > 0) {
             $arOrder = array($arOrder => $arFilter);
         } else {
             $arOrder = array();
         }
         if (is_array($arGroupBy)) {
             $arFilter = $arGroupBy;
         } else {
             $arFilter = array();
         }
         $arGroupBy = false;
     }
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "PAY_SYSTEM_ID", "PERSON_TYPE_ID", "NAME", "ACTION_FILE", "RESULT_FILE", "NEW_WINDOW", "PARAMS", "ENCODING");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "PSA.ID", "TYPE" => "int"), "PAY_SYSTEM_ID" => array("FIELD" => "PSA.PAY_SYSTEM_ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "PSA.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "PSA.NAME", "TYPE" => "string"), "ACTION_FILE" => array("FIELD" => "PSA.ACTION_FILE", "TYPE" => "string"), "RESULT_FILE" => array("FIELD" => "PSA.RESULT_FILE", "TYPE" => "string"), "NEW_WINDOW" => array("FIELD" => "PSA.NEW_WINDOW", "TYPE" => "char"), "PARAMS" => array("FIELD" => "PSA.PARAMS", "TYPE" => "string"), "HAVE_PAYMENT" => array("FIELD" => "PSA.HAVE_PAYMENT", "TYPE" => "char"), "HAVE_ACTION" => array("FIELD" => "PSA.HAVE_ACTION", "TYPE" => "char"), "HAVE_RESULT" => array("FIELD" => "PSA.HAVE_RESULT", "TYPE" => "char"), "HAVE_PREPAY" => array("FIELD" => "PSA.HAVE_PREPAY", "TYPE" => "char"), "HAVE_RESULT_RECEIVE" => array("FIELD" => "PSA.HAVE_RESULT_RECEIVE", "TYPE" => "char"), "ENCODING" => array("FIELD" => "PSA.ENCODING", "TYPE" => "string"), "PS_LID" => array("FIELD" => "PS.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_CURRENCY" => array("FIELD" => "PS.CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_NAME" => array("FIELD" => "PS.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_ACTIVE" => array("FIELD" => "PS.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_SORT" => array("FIELD" => "PS.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_DESCRIPTION" => array("FIELD" => "PS.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PT_LID" => array("FIELD" => "PT.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_NAME" => array("FIELD" => "PT.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_SORT" => array("FIELD" => "PT.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_ACTIVE" => array("FIELD" => "PT.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_pay_system_action PSA " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_pay_system_action PSA " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_pay_system_action PSA " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #9
0
 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "SITE_ID", "USER_ID", "AFFILIATE_ID", "PLAN_ID", "ACTIVE", "TIMESTAMP_X", "DATE_CREATE", "PAID_SUM", "APPROVED_SUM", "PENDING_SUM", "ITEMS_NUMBER", "ITEMS_SUM", "LAST_CALCULATE", "AFF_SITE", "AFF_DESCRIPTION", "FIX_PLAN");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "A.ID", "TYPE" => "int"), "SITE_ID" => array("FIELD" => "A.SITE_ID", "TYPE" => "string"), "USER_ID" => array("FIELD" => "A.USER_ID", "TYPE" => "int"), "AFFILIATE_ID" => array("FIELD" => "A.AFFILIATE_ID", "TYPE" => "int"), "PLAN_ID" => array("FIELD" => "A.PLAN_ID", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "A.ACTIVE", "TYPE" => "char"), "TIMESTAMP_X" => array("FIELD" => "A.TIMESTAMP_X", "TYPE" => "datetime"), "DATE_CREATE" => array("FIELD" => "A.DATE_CREATE", "TYPE" => "datetime"), "PAID_SUM" => array("FIELD" => "A.PAID_SUM", "TYPE" => "double"), "APPROVED_SUM" => array("FIELD" => "A.APPROVED_SUM", "TYPE" => "double"), "PENDING_SUM" => array("FIELD" => "A.PENDING_SUM", "TYPE" => "double"), "ITEMS_NUMBER" => array("FIELD" => "A.ITEMS_NUMBER", "TYPE" => "int"), "ITEMS_SUM" => array("FIELD" => "A.ITEMS_SUM", "TYPE" => "double"), "LAST_CALCULATE" => array("FIELD" => "A.LAST_CALCULATE", "TYPE" => "datetime"), "AFF_SITE" => array("FIELD" => "A.AFF_SITE", "TYPE" => "string"), "AFF_DESCRIPTION" => array("FIELD" => "A.AFF_DESCRIPTION", "TYPE" => "string"), "FIX_PLAN" => array("FIELD" => "A.FIX_PLAN", "TYPE" => "char"), "PLAN_SITE_ID" => array("FIELD" => "AP.SITE_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_NAME" => array("FIELD" => "AP.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_DESCRIPTION" => array("FIELD" => "AP.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_TIMESTAMP_X" => array("FIELD" => "AP.TIMESTAMP_X", "TYPE" => "datetime", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_ACTIVE" => array("FIELD" => "AP.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE" => array("FIELD" => "AP.BASE_RATE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE_TYPE" => array("FIELD" => "AP.BASE_RATE_TYPE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE_CURRENCY" => array("FIELD" => "AP.BASE_RATE_CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_MIN_PAY" => array("FIELD" => "AP.MIN_PAY", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_MIN_PLAN_VALUE" => array("FIELD" => "AP.MIN_PLAN_VALUE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "USER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "ORDER_ID" => array("FIELD" => "O.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order O ON (A.ID = O.AFFILIATE_ID)"), "ORDER_DATE_ALLOW_DELIVERY" => array("FIELD" => "O.DATE_ALLOW_DELIVERY", "TYPE" => "datetime", "FROM" => "INNER JOIN b_sale_order O ON (A.ID = O.AFFILIATE_ID)"), "ORDER_ALLOW_DELIVERY" => array("FIELD" => "O.ALLOW_DELIVERY", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order O ON (A.ID = O.AFFILIATE_ID)"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_affiliate A " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_affiliate A " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_affiliate A " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #10
0
 function GetPermissionsList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "S.ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "S.GROUP_ID", "TYPE" => "int"), "STATUS_ID" => array("FIELD" => "S.STATUS_ID", "TYPE" => "char"), "PERM_VIEW" => array("FIELD" => "S.PERM_VIEW", "TYPE" => "char"), "PERM_CANCEL" => array("FIELD" => "S.PERM_CANCEL", "TYPE" => "char"), "PERM_MARK" => array("FIELD" => "S.PERM_MARK", "TYPE" => "char"), "PERM_DELIVERY" => array("FIELD" => "S.PERM_DELIVERY", "TYPE" => "char"), "PERM_DEDUCTION" => array("FIELD" => "S.PERM_DEDUCTION", "TYPE" => "char"), "PERM_PAYMENT" => array("FIELD" => "S.PERM_PAYMENT", "TYPE" => "char"), "PERM_STATUS" => array("FIELD" => "S.PERM_STATUS", "TYPE" => "char"), "PERM_STATUS_FROM" => array("FIELD" => "S.PERM_STATUS_FROM", "TYPE" => "char"), "PERM_UPDATE" => array("FIELD" => "S.PERM_UPDATE", "TYPE" => "char"), "PERM_DELETE" => array("FIELD" => "S.PERM_DELETE", "TYPE" => "char"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_status2group S " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_status2group S " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_status2group S " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #11
0
	function GetList($arOrder = array("SORT"=>"ASC", "COUNTRY_NAME_LANG"=>"ASC", "CITY_NAME_LANG"=>"ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
	{
		global $DB;

		if (is_string($arGroupBy) && strlen($arGroupBy) == 2)
		{
			$arFilter["LID"] = $arGroupBy;
			$arGroupBy = false;

			$arSelectFields = array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID", "SORT", "COUNTRY_NAME_ORIG", "COUNTRY_SHORT_NAME", "COUNTRY_NAME_LANG", "CITY_NAME_ORIG", "CITY_SHORT_NAME", "CITY_NAME_LANG", "REGION_NAME_ORIG", "REGION_SHORT_NAME", "REGION_NAME_LANG", "COUNTRY_NAME", "CITY_NAME", "REGION_NAME", "LOC_DEFAULT");
		}

		if (count($arSelectFields) <= 0)
			$arSelectFields = array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID", "SORT", "COUNTRY_NAME_ORIG", "COUNTRY_SHORT_NAME", "REGION_NAME_ORIG", "CITY_NAME_ORIG", "REGION_SHORT_NAME", "CITY_SHORT_NAME", "COUNTRY_LID", "COUNTRY_NAME", "REGION_LID", "CITY_LID", "REGION_NAME", "CITY_NAME", "LOC_DEFAULT");

		$additionalFilter = "";
		if (isset($arFilter["LID"]) || strlen($arFilter["LID"]) > 0)
		{
			$additionalFilterLCL = " AND LCL.LID = '".$DB->ForSql($arFilter["LID"], 2)."'";
			$additionalFilterLRL = " AND LRL.LID = '".$DB->ForSql($arFilter["LID"], 2)."'";
			$additionalFilterLGL = " AND LGL.LID = '".$DB->ForSql($arFilter["LID"], 2)."'";
		}

		// FIELDS -->
		$arFields = array(
				"ID" => array("FIELD" => "L.ID", "TYPE" => "int"),
				"LOC_DEFAULT" => array("FIELD" => "L.LOC_DEFAULT", "TYPE" => "string"),
				"COUNTRY_ID" => array("FIELD" => "L.COUNTRY_ID", "TYPE" => "int"),
				"CITY_ID" => array("FIELD" => "L.CITY_ID", "TYPE" => "int"),
				"REGION_ID" => array("FIELD" => "L.REGION_ID", "TYPE" => "int"),
				"SORT" => array("FIELD" => "L.SORT", "TYPE" => "int"),

				"COUNTRY_NAME_ORIG" => array("FIELD" => "LC.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country LC ON (L.COUNTRY_ID = LC.ID)"),
				"COUNTRY_SHORT_NAME" => array("FIELD" => "LC.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country LC ON (L.COUNTRY_ID = LC.ID)"),

				"CITY_NAME_ORIG" => array("FIELD" => "LG.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city LG ON (L.CITY_ID = LG.ID)"),
				"CITY_SHORT_NAME" => array("FIELD" => "LG.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city LG ON (L.CITY_ID = LG.ID)"),
			
				"REGION_NAME_ORIG" => array("FIELD" => "LR.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region LR ON (L.REGION_ID = LR.ID)"),
				"REGION_SHORT_NAME" => array("FIELD" => "LR.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region LR ON (L.REGION_ID = LR.ID)"),
			
				"COUNTRY_LID" => array("FIELD" => "LCL.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"),
				"COUNTRY_NAME" => array("FIELD" => "LCL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"),
				"COUNTRY_NAME_LANG" => array("FIELD" => "LCL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"),
				"COUNTRY_SHORT_NAME_LANG" => array("FIELD" => "LCL.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"),

				"REGION_LID" => array("FIELD" => "LRL.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")"),
				"REGION_NAME" => array("FIELD" => "LRL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")"),
				"REGION_NAME_LANG" => array("FIELD" => "LRL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")"),
				"REGION_SHORT_NAME_LANG" => array("FIELD" => "LRL.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")"),
			
				"CITY_LID" => array("FIELD" => "LGL.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"),
				"CITY_NAME" => array("FIELD" => "LGL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"),
				"CITY_NAME_LANG" => array("FIELD" => "LGL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"),
				"CITY_SHORT_NAME_LANG" => array("FIELD" => "LGL.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"),

				"COUNTRY" => array("FIELD" => "LCL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"),
				"CITY" => array("FIELD" => "LGL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"),
				"REGION" => array("FIELD" => "LRL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")")
			);
		// <-- FIELDS

		$arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);

		$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);

		if (is_array($arGroupBy) && count($arGroupBy)==0)
		{
			$strSql =
				"SELECT ".$arSqls["SELECT"]." ".
				"FROM b_sale_location L ".
				"	".$arSqls["FROM"]." ";
			if (strlen($arSqls["WHERE"]) > 0)
				$strSql .= "WHERE ".$arSqls["WHERE"]." ";
			if (strlen($arSqls["GROUPBY"]) > 0)
				$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";

			//echo "!1!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			if ($arRes = $dbRes->Fetch())
				return $arRes["CNT"];
			else
				return False;
		}

		$strSql = 
			"SELECT ".$arSqls["SELECT"]." ".
			"FROM b_sale_location L ".
			"	".$arSqls["FROM"]." ";
		if (strlen($arSqls["WHERE"]) > 0)
			$strSql .= "WHERE ".$arSqls["WHERE"]." ";
		if (strlen($arSqls["GROUPBY"]) > 0)
			$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
		if (strlen($arSqls["ORDERBY"]) > 0)
			$strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";

		if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])<=0)
		{
			$strSql_tmp =
				"SELECT COUNT('x') as CNT ".
				"FROM b_sale_location L ".
				"	".$arSqls["FROM"]." ";
			if (strlen($arSqls["WHERE"]) > 0)
				$strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
			if (strlen($arSqls["GROUPBY"]) > 0)
				$strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";

			//echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";

			$dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			$cnt = 0;
			if (strlen($arSqls["GROUPBY"]) <= 0)
			{
				if ($arRes = $dbRes->Fetch())
					$cnt = $arRes["CNT"];
			}
			else
			{
				// FOR MYSQL!!! ANOTHER CODE FOR ORACLE
				$cnt = $dbRes->SelectedRowsCount();
			}

			$dbRes = new CDBResult();

			//echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
		}
		else
		{
			if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])>0)
				$strSql .= "LIMIT ".IntVal($arNavStartParams["nTopCount"]);

			//echo "!3!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
		}

		return $dbRes;
	}
Example #12
0
	/**
	* The function select viewed product
	*
	* @param array $arOrder - array to sort
	* @param array $arFilter - array to filter
	* @param array $arGroupBy - array to group records
	* @param array $arNavStartParams - array to parameters
	* @param array $arSelectFields - array to selectes fields
	* @return object $dbRes - object result
	*/
	static public function GetList($arOrder = array("ID"=>"DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
	{
		global $DB;

		if (array_key_exists("DATE_FROM", $arFilter))
		{
			$arFilter[">=DATE_VISIT"] = trim($arFilter["DATE_FROM"]);
			unset($arFilter["DATE_FROM"]);
		}
		if (array_key_exists("DATE_TO", $arFilter))
		{
			$arFilter["<=DATE_VISIT"] = trim($arFilter["DATE_TO"]);
			unset($arFilter["DATE_TO"]);
		}

		if (!$arSelectFields || count($arSelectFields) <= 0 || in_array("*", $arSelectFields))
			$arSelectFields = array("ID", "FUSER_ID", "DATE_VISIT", "PRODUCT_ID", "MODULE", "LID", "NAME", "DETAIL_PAGE_URL", "CURRENCY", "PRICE", "NOTES", "PREVIEW_PICTURE", "DETAIL_PICTURE", "CALLBACK_FUNC");

		$arFields = array(
				"ID" => array("FIELD" => "V.ID", "TYPE" => "int"),
				"FUSER_ID" => array("FIELD" => "V.FUSER_ID", "TYPE" => "int"),
				"DATE_VISIT" => array("FIELD" => "V.DATE_VISIT", "TYPE" => "datetime"),
				"PRODUCT_ID" => array("FIELD" => "V.PRODUCT_ID", "TYPE" => "int"),
				"MODULE" => array("FIELD" => "V.MODULE", "TYPE" => "string"),
				"LID" => array("FIELD" => "V.LID", "TYPE" => "string"),
				"NAME" => array("FIELD" => "V.NAME", "TYPE" => "string"),
				"DETAIL_PAGE_URL" => array("FIELD" => "V.DETAIL_PAGE_URL", "TYPE" => "string"),
				"CURRENCY" => array("FIELD" => "V.CURRENCY", "TYPE" => "string"),
				"PRICE" => array("FIELD" => "V.PRICE", "TYPE" => "double"),
				"NOTES" => array("FIELD" => "V.NOTES", "TYPE" => "string"),
				"PREVIEW_PICTURE" => array("FIELD" => "V.PREVIEW_PICTURE", "TYPE" => "string"),
				"DETAIL_PICTURE" => array("FIELD" => "V.DETAIL_PICTURE", "TYPE" => "string"),
				"CALLBACK_FUNC" => array("FIELD" => "V.CALLBACK_FUNC", "TYPE" => "string"),
		);

		$arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);

		$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);

		$strSql =
			"SELECT ".$arSqls["SELECT"]." ".
			"FROM b_sale_viewed_product V ";
		if (strlen($arSqls["WHERE"]) > 0)
			$strSql .= "WHERE ".$arSqls["WHERE"]." ";
		if (strlen($arSqls["GROUPBY"]) > 0)
			$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
		if (strlen($arSqls["ORDERBY"]) > 0)
			$strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";

		if (is_array($arGroupBy) && count($arGroupBy) == 0)
		{
			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			if ($arRes = $dbRes->Fetch())
				return $arRes["CNT"];
			else
				return false;
		}

		if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0 )
		{
			$strSql_tmp =
				"SELECT COUNT('x') as CNT ".
				"FROM b_sale_viewed_product B ";
			if (strlen($arSqls["WHERE"]) > 0)
				$strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
			if (strlen($arSqls["GROUPBY"]) > 0)
				$strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";

			$dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			$cnt = 0;
			if (strlen($arSqls["GROUPBY"]) <= 0)
			{
				if ($arRes = $dbRes->Fetch())
					$cnt = $arRes["CNT"];
			}
			else
			{
				$cnt = $dbRes->SelectedRowsCount();
			}
			$dbRes = new CDBResult();

			$dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
		}
		else
		{
			$strSql = $DB->TopSql($strSql, $arNavStartParams["nTopCount"]);

			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
		}

		return $dbRes;
	}
 /**
  * <p>Функция возвращает результат выборки записей из значений свойств профилей покупателя в соответствии со своими параметрами.</p>
  *
  *
  *
  *
  * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
  * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
  * "направление_сортировки1", "название_поля2" =&gt;
  * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
  * может стоять любое поле налогов заказа, а в качестве
  * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
  * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
  * имеет несколько элементов, то результирующий набор сортируется
  * последовательно по каждому элементу (т.е. сначала сортируется по
  * первому элементу, потом результат сортируется по второму и
  * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает,
  * что результат отсортирован не будет.
  *
  *
  *
  * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи значений
  * свойств профилей покупателя. Массив имеет вид: <pre class="syntax">array(
  * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
  * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
  * Удовлетворяющие фильтру записи возвращаются в результате, а
  * записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
  * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка
  * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
  * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
  * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
  * поля строго больше передаваемой в фильтр величины;</li> <li> <b>&lt;=</b> -
  * значение поля меньше или равно передаваемой в фильтр величины;</li>
  * <li> <b>&lt;</b> - значение поля строго меньше передаваемой в фильтр
  * величины;</li> <li> <b>@</b> - значение поля находится в передаваемом в
  * фильтр разделенном запятой списке значений. Можно просто
  * передавать массив значений.</li> <li> <b>~</b> - значение поля
  * проверяется на соответствие передаваемому в фильтр шаблону;</li>
  * <li> <b>%</b> - значение поля проверяется на соответствие передаваемой
  * в фильтр строке в соответствии с языком запросов.</li> </ul> В
  * качестве "название_поляX" может стоять любое поле заказов.<br><br>
  * Пример фильтра: <pre class="syntax">array("USER_PROPS_ID" =&gt; 120)</pre> Этот фильтр
  * означает "выбрать все записи, в которых значение в поле USER_PROPS_ID
  * (код профиля покупателя) равно 120".<br><br> Значение по умолчанию -
  * пустой массив array() - означает, что результат отфильтрован не
  * будет. <br><br><b>Важно!</b> Если результат фильтровать не нужно, то
  * пустой массив фильтра надо передать обязательно. Это требуется
  * из-за наследия старого API.
  *
  *
  *
  * @param array $arGroupBy = false Массив полей, по которым группируются записи значений свойств
  * профилей покупателя. Массив имеет вид: <pre
  * class="syntax">array("название_поля1", "группирующая_функция2" =&gt;
  * "название_поля2", ...)</pre> В качестве "название_поля<i>N</i>" может стоять
  * любое поле значений свойств профилей покупателя. В качестве
  * группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - подсчет
  * количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> <li>
  * <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> -
  * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление
  * суммы.</li> </ul> Если массив пустой, то функция вернет число записей,
  * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> -
  * означает, что результат группироваться не будет.
  *
  *
  *
  * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
  * ограничено сверху значением этого ключа;</li> <li> любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
  * параметров выборки нет.
  *
  *
  *
  * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно
  * указать только те поля, которые необходимы. Если в массиве
  * присутствует значение "*", то будут возвращены все доступные
  * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
  * что будут возвращены все поля основной таблицы запроса.
  *
  *
  *
  * @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>USER_PROPS_ID</td> <td>Код профиля покупателя.</td> </tr>
  * <tr> <td>ORDER_PROPS_ID</td> <td>Код свойства заказа.</td> </tr> <tr> <td>USER_VALUE_NAME</td>
  * <td>Название свойства заказа, сохраненное в профиле покупателя.</td>
  * </tr> <tr> <td>VALUE</td> <td>Значение свойства заказа, сохраненное в профиле
  * покупателя.</td> </tr> <tr> <td>TYPE</td> <td>Тип свойства заказа.</td> </tr> <tr>
  * <td>SORT</td> <td>Индекс сортировки свойства заказа.</td> </tr> <tr> <td>VARIANT_NAME</td>
  * <td>Название варианта значения свойства заказа со значением из
  * профиля покупателя.</td> </tr> <tr> <td>CODE</td> <td>Символьный код свойства
  * заказа.</td> </tr> </table> <p>Если в качестве параметра arGroupBy передается
  * пустой массив, то функция вернет число записей, удовлетворяющих
  * фильтру.</p> <a name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * // Выведем все свойства профиля покупателя с кодом $ID
  * $db_propVals = CSaleOrderUserPropsValue::GetList(array("ID" =&gt; "ASC"), Array("USER_PROPS_ID"=&gt;$ID));
  * while ($arPropVals = $db_propVals-&gt;Fetch())
  * {
  * echo $arPropVals["USER_VALUE_NAME"]."=".$arPropVals["VALUE"]."&lt;br&gt;";
  * }
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderuserpropsvalue/csaleorderuserpropsvalue__getlist.19b444a8.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = strval($arOrder);
         $arFilter = strval($arFilter);
         if (strlen($arOrder) > 0 && strlen($arFilter) > 0) {
             $arOrder = array($arOrder => $arFilter);
         } else {
             $arOrder = array();
         }
         if (is_array($arGroupBy)) {
             $arFilter = $arGroupBy;
         } else {
             $arFilter = array();
         }
         $arGroupBy = false;
         if (count($arSelectFields) <= 0) {
             $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "USER_VALUE_NAME", "VALUE", "TYPE", "SORT", "VARIANT_NAME", "CODE");
         }
     }
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "NAME", "VALUE", "PROP_ID", "PROP_PERSON_TYPE_ID", "PROP_NAME", "PROP_TYPE", "PROP_REQUIED", "PROP_DEFAULT_VALUE", "PROP_SORT", "PROP_USER_PROPS", "PROP_IS_LOCATION", "PROP_PROPS_GROUP_ID", "PROP_SIZE1", "PROP_SIZE2", "PROP_DESCRIPTION", "PROP_IS_EMAIL", "PROP_IS_PROFILE_NAME", "PROP_IS_PAYER", "PROP_IS_LOCATION4TAX", "PROP_IS_ZIP", "PROP_CODE", "VARIANT_ID", "VARIANT_ORDER_PROPS_ID", "VARIANT_NAME", "VARIANT_VALUE", "VARIANT_SORT", "VARIANT_DESCRIPTION");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "UP.ID", "TYPE" => "int"), "USER_PROPS_ID" => array("FIELD" => "UP.USER_PROPS_ID", "TYPE" => "int"), "ORDER_PROPS_ID" => array("FIELD" => "UP.ORDER_PROPS_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "UP.NAME", "TYPE" => "string"), "VALUE" => array("FIELD" => "UP.VALUE", "TYPE" => "string"), "PROP_ID" => array("FIELD" => "P.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_PERSON_TYPE_ID" => array("FIELD" => "P.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_NAME" => array("FIELD" => "P.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_REQUIED" => array("FIELD" => "P.REQUIED", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_DEFAULT_VALUE" => array("FIELD" => "P.DEFAULT_VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_USER_PROPS" => array("FIELD" => "P.USER_PROPS", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_LOCATION" => array("FIELD" => "P.IS_LOCATION", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_PROPS_GROUP_ID" => array("FIELD" => "P.PROPS_GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_EMAIL" => array("FIELD" => "P.IS_EMAIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_PROFILE_NAME" => array("FIELD" => "P.IS_PROFILE_NAME", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_PAYER" => array("FIELD" => "P.IS_PAYER", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_LOCATION4TAX" => array("FIELD" => "P.IS_LOCATION4TAX", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_ZIP" => array("FIELD" => "P.IS_ZIP", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_UTIL" => array("FIELD" => "P.UTIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "VARIANT_ID" => array("FIELD" => "PV.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_ORDER_PROPS_ID" => array("FIELD" => "PV.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_VALUE" => array("FIELD" => "PV.VALUE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_SORT" => array("FIELD" => "PV.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_DESCRIPTION" => array("FIELD" => "PV.DESCRIPTION", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "USER_VALUE_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string"), "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // ТОЛЬКО ДЛЯ MYSQL!!! ДЛЯ ORACLE ДРУГОЙ КОД
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #14
0
 function GetList($arOrder = array("SORT" => "ASC", "NAME" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (isset($arFilter["PERSON_TYPE_ID"])) {
         $arFilter["PSA_PERSON_TYPE_ID"] = $arFilter["PERSON_TYPE_ID"];
         unset($arFilter["PERSON_TYPE_ID"]);
         if (count($arSelectFields) <= 0) {
             $arSelectFields = array("*");
         }
     }
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "LID", "CURRENCY", "NAME", "ACTIVE", "SORT", "DESCRIPTION");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "P.ID", "TYPE" => "int"), "LID" => array("FIELD" => "P.LID", "TYPE" => "string"), "CURRENCY" => array("FIELD" => "P.CURRENCY", "TYPE" => "string"), "NAME" => array("FIELD" => "P.NAME", "TYPE" => "string"), "ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int"), "DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string"), "PSA_ID" => array("FIELD" => "PA.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_NAME" => array("FIELD" => "PA.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_ACTION_FILE" => array("FIELD" => "PA.ACTION_FILE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_RESULT_FILE" => array("FIELD" => "PA.RESULT_FILE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_NEW_WINDOW" => array("FIELD" => "PA.NEW_WINDOW", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_PERSON_TYPE_ID" => array("FIELD" => "PA.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_PARAMS" => array("FIELD" => "PA.PARAMS", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_PAYMENT" => array("FIELD" => "PA.HAVE_PAYMENT", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_ACTION" => array("FIELD" => "PA.HAVE_ACTION", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_RESULT" => array("FIELD" => "PA.HAVE_RESULT", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_PREPAY" => array("FIELD" => "PA.HAVE_PREPAY", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_RESULT_RECEIVE" => array("FIELD" => "PA.HAVE_RESULT_RECEIVE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_ENCODING" => array("FIELD" => "PA.ENCODING", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_LOGOTIP" => array("FIELD" => "PA.LOGOTIP", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_pay_system P " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_pay_system P " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_pay_system P " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // рнкэйн дкъ MYSQL!!! дкъ ORACLE дпсцни йнд
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #15
0
 function GetPermissionsList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     $arFields = array("ID" => array("FIELD" => "S.ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "S.GROUP_ID", "TYPE" => "int"), "STATUS_ID" => array("FIELD" => "S.STATUS_ID", "TYPE" => "char"), "PERM_VIEW" => array("FIELD" => "S.PERM_VIEW", "TYPE" => "char"), "PERM_CANCEL" => array("FIELD" => "S.PERM_CANCEL", "TYPE" => "char"), "PERM_MARK" => array("FIELD" => "S.PERM_MARK", "TYPE" => "char"), "PERM_DELIVERY" => array("FIELD" => "S.PERM_DELIVERY", "TYPE" => "char"), "PERM_DEDUCTION" => array("FIELD" => "S.PERM_DEDUCTION", "TYPE" => "char"), "PERM_PAYMENT" => array("FIELD" => "S.PERM_PAYMENT", "TYPE" => "char"), "PERM_STATUS" => array("FIELD" => "S.PERM_STATUS", "TYPE" => "char"), "PERM_STATUS_FROM" => array("FIELD" => "S.PERM_STATUS_FROM", "TYPE" => "char"), "PERM_UPDATE" => array("FIELD" => "S.PERM_UPDATE", "TYPE" => "char"), "PERM_DELETE" => array("FIELD" => "S.PERM_DELETE", "TYPE" => "char"));
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_sale_status2group S " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_sale_status2group S " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " WHERE " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " GROUP BY " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " ORDER BY " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_sale_status2group S " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " WHERE " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " LIMIT " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #16
0
 /**
  * <p>Функция возвращает результат выборки из свойств заказов в соответствии со своими параметрами.</p>
  *
  *
  *
  *
  * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
  * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
  * "направление_сортировки1", "название_поля2" =&gt;
  * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
  * может стоять любое поле местоположения, а в качестве
  * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
  * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
  * имеет несколько элементов, то результирующий набор сортируется
  * последовательно по каждому элементу (т.е. сначала сортируется по
  * первому элементу, потом результат сортируется по второму и
  * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает,
  * что результат отсортирован не будет.
  *
  *
  *
  * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи свойств
  * заказа. Массив имеет вид: <pre class="syntax">array(
  * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
  * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
  * Удовлетворяющие фильтру записи возвращаются в результате, а
  * записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
  * <ul> <li> <b>!</b> - отрицание;</li> <li> <b>+</b> - значения null, 0 и пустая строка
  * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
  * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
  * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
  * поля строго больше передаваемой в фильтр величины;</li> <li> <b>&lt;=</b> -
  * значение поля меньше или равно передаваемой в фильтр величины;</li>
  * <li> <b>&lt;</b> - значение поля строго меньше передаваемой в фильтр
  * величины;</li> <li> <b>@</b> - значение поля находится в передаваемом в
  * фильтр разделенном запятой списке значений. Можно передавать и
  * фильтр. Для ключа <b>CODE</b> - корректно формирует фильтр только для
  * массива, а не для перечисление через запятые.;</li> <li> <b>~</b> -
  * значение поля проверяется на соответствие передаваемому в
  * фильтр шаблону;</li> <li> <b>%</b> - значение поля проверяется на
  * соответствие передаваемой в фильтр строке в соответствии с
  * языком запросов.</li> </ul> В качестве "название_поляX" может стоять
  * любое поле заказов.<br><br> Пример фильтра: <pre class="syntax">array("REQUIED" =&gt;
  * "Y")</pre> Этот фильтр означает "выбрать все записи, в которых
  * значение в поле REQUIED (обязательно для заполнения) равно Y".<br><br>
  * Значение по умолчанию - пустой массив array() - означает, что
  * результат отфильтрован не будет.
  *
  *
  *
  * @param array $arGroupBy = false Массив полей, по которым группируются записи свойств заказа.
  * Массив имеет вид: <pre class="syntax"> array("название_поля1",
  * "группирующая_функция2" =&gt; "название_поля2", . . .)</pre> В качестве
  * "название_поля<i>N</i>" может стоять любое поле свойств заказа. В
  * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> -
  * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li>
  * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> -
  * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление
  * суммы.</li> </ul> Если массив пустой, то функция вернет число записей,
  * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> -
  * означает, что результат группироваться не будет.
  *
  *
  *
  * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
  * ограничено сверху значением этого ключа;</li> <li> любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
  * параметров выборки нет.
  *
  *
  *
  * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно
  * указать только те поля, которые необходимы. Если в массиве
  * присутствует значение "*", то будут возвращены все доступные
  * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
  * что будут возвращены все поля основной таблицы запроса.
  *
  *
  *
  * @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>PERSON_TYPE_ID</td> <td>Тип
  * плательщика.</td> </tr> <tr> <td>NAME</td> <td>Название свойства.</td> </tr> <tr>
  * <td>TYPE</td> <td>Тип свойства. Допустимые значения: <ul> <li>CHECKBOX - флаг,</li>
  * <li>TEXT - строка текста,</li> <li>SELECT - выпадающий список значений, </li>
  * <li>MULTISELECT - список со множественным выбором,</li> <li>TEXTAREA -
  * многострочный текст,</li> <li>LOCATION - местоположение,</li> <li>RADIO -
  * переключатель.</li> </ul> </td> </tr> <tr> <td>REQUIED</td> <td>Флаг (Y/N) обязательное
  * ли поле.</td> </tr> <tr> <td>DEFAULT_VALUE</td> <td>Значение по умолчанию.</td> </tr> <tr>
  * <td>SORT</td> <td>Индекс сортировки.</td> </tr> <tr> <td>USER_PROPS</td> <td>Флаг (Y/N) входит
  * ли это свойство в профиль покупателя.</td> </tr> <tr> <td>IS_LOCATION</td> <td>Флаг
  * (Y/N) использовать ли значение свойства как местоположение
  * покупателя для расчёта стоимости доставки (только для свойств
  * типа LOCATION)</td> </tr> <tr> <td>PROPS_GROUP_ID</td> <td>Код группы свойств.</td> </tr> <tr>
  * <td>SIZE1</td> <td>Ширина поля (размер по горизонтали).</td> </tr> <tr> <td>SIZE2</td>
  * <td>Высота поля (размер по вертикали).</td> </tr> <tr> <td>DESCRIPTION</td>
  * <td>Описание свойства.</td> </tr> <tr> <td>IS_EMAIL</td> <td>Флаг (Y/N) использовать
  * ли значение свойства как E-Mail покупателя.</td> </tr> <tr> <td>IS_PROFILE_NAME</td>
  * <td>Флаг (Y/N) использовать ли значение свойства как название
  * профиля покупателя.</td> </tr> <tr> <td>IS_PAYER</td> <td>Флаг (Y/N) использовать ли
  * значение свойства как имя плательщика.</td> </tr> <tr> <td>IS_LOCATION4TAX</td>
  * <td>Флаг (Y/N) использовать ли значение свойства как местоположение
  * покупателя для расчёта налогов (только для свойств типа LOCATION)</td>
  * </tr> <tr> <td>CODE</td> <td>Символьный код свойства.</td> </tr> </table> <p>Если в
  * качестве параметра arGroupBy передается пустой массив, то функция
  * вернет число записей, удовлетворяющих фильтру.</p> <a name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // Выведем форму для ввода свойств заказа для группы свойств с кодом 5, которые входят в профиль покупателя, для типа плательщика с кодом 2
  * $db_props = CSaleOrderProps::GetList(
  *         array("SORT" =&gt; "ASC"),
  *         array(
  *                 "PERSON_TYPE_ID" =&gt; 2,
  *                 "PROPS_GROUP_ID" =&gt; 5,
  *                 "USER_PROPS" =&gt; "Y"
  *             ),
  *         false,
  *         false,
  *         array()
  *     );
  * 
  * if ($props = $db_props-&gt;Fetch())
  * {
  *    echo "Заполните параметры заказа:&lt;br&gt;";
  *    do
  *    {
  *       echo $props["NAME"];
  *       if ($props["REQUIED"]=="Y" || 
  *           $props["IS_EMAIL"]=="Y" || 
  *           $props["IS_PROFILE_NAME"]=="Y" || 
  *           $props["IS_LOCATION"]=="Y" || 
  *           $props["IS_LOCATION4TAX"]=="Y" || 
  *           $props["IS_PAYER"]=="Y")
  *       {
  *          echo "*";
  *       }
  *       echo ": ";
  * 
  *       if ($props["TYPE"]=="CHECKBOX")
  *       {
  *          echo '&lt;input type="checkbox" class="inputcheckbox" name="ORDER_PROP_'.$props["ID"].'" value="Y"'.(($props["DEFAULT_VALUE"]=="Y")?" checked":"").'&gt;';
  *       }
  *       elseif ($props["TYPE"]=="TEXT")
  *       {
  *          echo '&lt;input type="text" class="inputtext" size="'.((IntVal($props["SIZE1"])&gt;0)?$props["SIZE1"]:30).'" maxlength="250" value="'.htmlspecialchars($props["DEFAULT_VALUE"]).'" name="ORDER_PROP_'.$props["ID"].'"&gt;";
  *       }
  *       elseif ($props["TYPE"]=="SELECT")
  *       {
  *          echo '&lt;select name="ORDER_PROP_'.$props["ID"].'" size="'.((IntVal($props["SIZE1"])&gt;0)?$props["SIZE1"]:1).'"&gt;';
  *          $db_vars = CSaleOrderPropsVariant::GetList(($by="SORT"), ($order="ASC"), Array("ORDER_PROPS_ID"=&gt;$props["ID"]));
  *          while ($vars = $db_vars-&gt;Fetch())
  *          {
  *             echo '&lt;option value="'.$vars["VALUE"].'"'.(($vars["VALUE"]==$props["DEFAULT_VALUE"])?" selected":"").'&gt;'.htmlspecialchars($vars["NAME"]).'&lt;/option&gt;';
  *          }
  *          echo '&lt;/select&gt;';
  *       }
  *       elseif ($props["TYPE"]=="MULTISELECT")
  *       {
  *          echo '&lt;select multiple name="ORDER_PROP_'.$props["ID"].'[]" size="'.((IntVal($props["SIZE1"])&gt;0)?$props["SIZE1"]:5).'"&gt;';
  *          $arDefVal = Split(",", $props["DEFAULT_VALUE"]);
  *          for ($i = 0; $i&lt;count($arDefVal); $i++)
  *             $arDefVal[$i] = Trim($arDefVal[$i]);
  * 
  *          $db_vars = CSaleOrderPropsVariant::GetList(($by="SORT"), ($order="ASC"), Array("ORDER_PROPS_ID"=&gt;$props["ID"]));
  *          while ($vars = $db_vars-&gt;Fetch())
  *          {
  *             echo '&lt;option value="'.$vars["VALUE"].'"'.(in_array($vars["VALUE"], $arDefVal)?" selected":"").'&gt;'.htmlspecialchars($vars["NAME"]).'&lt;/option&gt;';
  *          }
  *          echo '&lt;/select&gt;';
  *       }
  *       elseif ($props["TYPE"]=="TEXTAREA")
  *       {
  *          echo '&lt;textarea rows="'.((IntVal($props["SIZE2"])&gt;0)?$props["SIZE2"]:4).'" cols="'.((IntVal($props["SIZE1"])&gt;0)?$props["SIZE1"]:40).'" name="ORDER_PROP_'.$props["ID"].'"&gt;'.htmlspecialchars($props["DEFAULT_VALUE"]).'&lt;/textarea&gt;';
  *       }
  *       elseif ($props["TYPE"]=="LOCATION")
  *       {
  *          echo '&lt;select name="ORDER_PROP_'.$props["ID"].'" size="'.((IntVal($props["SIZE1"])&gt;0)?$props["SIZE1"]:1).'"&gt;';
  *          $db_vars = CSaleLocation::GetList(Array("SORT"=&gt;"ASC", "COUNTRY_NAME_LANG"=&gt;"ASC", "CITY_NAME_LANG"=&gt;"ASC"), array(), LANGUAGE_ID);
  *          while ($vars = $db_vars-&gt;Fetch())
  *          {
  *             echo '&lt;option value="'.$vars["ID"].'"".((IntVal($vars["ID"])==IntVal($props["DEFAULT_VALUE"]))?" selected":"").'&gt;'.htmlspecialchars($vars["COUNTRY_NAME"]." - ".$vars["CITY_NAME"]).'&lt;/option&gt;';
  *          }
  *          echo '&lt;/select&gt;';
  *       }
  *       elseif ($props["TYPE"]=="RADIO")
  *       {
  *          $db_vars = CSaleOrderPropsVariant::GetList(($by="SORT"), ($order="ASC"), Array("ORDER_PROPS_ID"=&gt;$props["ID"]));
  *          while ($vars = $db_vars-&gt;Fetch())
  *          {
  *             echo '&lt;input type="radio" name="ORDER_PROP_'.$props["ID"].'" value="'.$vars["VALUE"].'"'.(($vars["VALUE"]==$props["DEFAULT_VALUE"])?" checked":"").'&gt;'.htmlspecialchars($vars["NAME"]).'&lt;br&gt;';
  *          }
  *       }
  * 
  *       if (strlen($props["DESCRIPTION"])&gt;0)
  *       {
  *          echo "&lt;br&gt;&lt;small&gt;".$props["DESCRIPTION"]."&lt;/small&gt;";
  *       }
  * 
  *       echo "&lt;br&gt;";
  *    }
  *    while ($props = $db_props-&gt;Fetch());
  * }
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderprops/csaleorderprops__getlist.d76e30a4.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = strval($arOrder);
         $arFilter = strval($arFilter);
         if (strlen($arOrder) > 0 && strlen($arFilter) > 0) {
             $arOrder = array($arOrder => $arFilter);
         } else {
             $arOrder = array();
         }
         if (is_array($arGroupBy)) {
             $arFilter = $arGroupBy;
         } else {
             $arFilter = array();
         }
         $arGroupBy = false;
         $arSelectFields = array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "IS_ZIP", "CODE", "IS_FILTERED", "ACTIVE", "UTIL", "INPUT_FIELD_LOCATION", "MULTIPLE", "PAYSYSTEM_ID", "DELIVERY_ID");
     }
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "IS_ZIP", "CODE", "IS_FILTERED", "ACTIVE", "UTIL", "INPUT_FIELD_LOCATION", "MULTIPLE", "PAYSYSTEM_ID", "DELIVERY_ID");
     }
     // filter by relation to delivery and payment systems
     if (isset($arFilter["RELATED"]) && !is_array($arFilter["RELATED"]) && intval($arFilter["RELATED"]) == 0) {
         if (($key = array_search("PAYSYSTEM_ID", $arSelectFields)) !== false) {
             unset($arSelectFields[$key]);
         }
         if (($key = array_search("DELIVERY_ID", $arSelectFields)) !== false) {
             unset($arSelectFields[$key]);
         }
     } else {
         if (isset($arFilter["RELATED"]) && is_array($arFilter["RELATED"])) {
             if (isset($arFilter["RELATED"]["PAYSYSTEM_ID"])) {
                 $arFilter["PAYSYSTEM_ID"] = $arFilter["RELATED"]["PAYSYSTEM_ID"];
                 unset($arFilter["RELATED"]["PAYSYSTEM_ID"]);
             }
             if (isset($arFilter["RELATED"]["DELIVERY_ID"])) {
                 $arFilter["DELIVERY_ID"] = $arFilter["RELATED"]["DELIVERY_ID"];
                 unset($arFilter["RELATED"]["DELIVERY_ID"]);
             }
         }
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "P.ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "P.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "P.NAME", "TYPE" => "string"), "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string"), "REQUIED" => array("FIELD" => "P.REQUIED", "TYPE" => "char"), "REQUIRED" => array("FIELD" => "P.REQUIED", "TYPE" => "char"), "DEFAULT_VALUE" => array("FIELD" => "P.DEFAULT_VALUE", "TYPE" => "string"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int"), "USER_PROPS" => array("FIELD" => "P.USER_PROPS", "TYPE" => "char"), "IS_LOCATION" => array("FIELD" => "P.IS_LOCATION", "TYPE" => "char"), "PROPS_GROUP_ID" => array("FIELD" => "P.PROPS_GROUP_ID", "TYPE" => "int"), "SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int"), "SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int"), "DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string"), "IS_EMAIL" => array("FIELD" => "P.IS_EMAIL", "TYPE" => "char"), "IS_PROFILE_NAME" => array("FIELD" => "P.IS_PROFILE_NAME", "TYPE" => "char"), "IS_PAYER" => array("FIELD" => "P.IS_PAYER", "TYPE" => "char"), "IS_LOCATION4TAX" => array("FIELD" => "P.IS_LOCATION4TAX", "TYPE" => "char"), "IS_FILTERED" => array("FIELD" => "P.IS_FILTERED", "TYPE" => "char"), "IS_ZIP" => array("FIELD" => "P.IS_ZIP", "TYPE" => "char"), "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string"), "ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char"), "UTIL" => array("FIELD" => "P.UTIL", "TYPE" => "char"), "INPUT_FIELD_LOCATION" => array("FIELD" => "P.INPUT_FIELD_LOCATION", "TYPE" => "int"), "MULTIPLE" => array("FIELD" => "P.MULTIPLE", "TYPE" => "char"), "GROUP_ID" => array("FIELD" => "PG.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_PERSON_TYPE_ID" => array("FIELD" => "PG.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_NAME" => array("FIELD" => "PG.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_SORT" => array("FIELD" => "PG.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "PERSON_TYPE_LID" => array("FIELD" => "SPT.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_NAME" => array("FIELD" => "SPT.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_SORT" => array("FIELD" => "SPT.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_ACTIVE" => array("FIELD" => "SPT.ACTIVE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PAYSYSTEM_ID" => array("FIELD" => "SOP.PROPERTY_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_relation SOP ON P.ID = SOP.PROPERTY_ID", "WHERE" => array("CSaleOrderProps", "PrepareRelation4Where")), "DELIVERY_ID" => array("FIELD" => "SOD.PROPERTY_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_relation SOD ON P.ID = SOD.PROPERTY_ID", "WHERE" => array("CSaleOrderProps", "PrepareRelation4Where")));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     //filter order properties by relation to delivery and payment systems
     if (isset($arFilter["RELATED"])) {
         if (!is_array($arFilter["RELATED"]) && intval($arFilter["RELATED"]) == 0) {
             if (strlen($arSqls["WHERE"]) > 0) {
                 $arSqls["WHERE"] .= " AND ";
             }
             $arSqls["WHERE"] .= "(P.ID NOT IN (SELECT DISTINCT SOR.PROPERTY_ID FROM b_sale_order_props_relation SOR))";
         } elseif (is_array($arFilter["RELATED"])) {
             $strSqlRelatedWhere = "";
             // payment
             if (isset($arFilter["PAYSYSTEM_ID"]) && intval($arFilter["PAYSYSTEM_ID"]) > 0) {
                 $strSqlRelatedWhere .= "(SOP.ENTITY_TYPE = 'P' AND SOP.ENTITY_ID = " . $DB->ForSql($arFilter["PAYSYSTEM_ID"]) . ")";
             }
             // delivery
             if (isset($arFilter["DELIVERY_ID"]) && strlen($arFilter["DELIVERY_ID"]) > 0) {
                 if (strlen($strSqlRelatedWhere) > 0) {
                     $logic = "OR";
                     if (isset($arFilter["RELATED"]["LOGIC"]) && $arFilter["RELATED"]["LOGIC"] == "AND") {
                         $logic = "AND";
                     }
                     $strSqlRelatedWhere .= " " . $logic . " ";
                 }
                 $strSqlRelatedWhere .= "(SOD.ENTITY_TYPE = 'D' AND SOD.ENTITY_ID = '" . $DB->ForSql($arFilter["DELIVERY_ID"]) . "')";
             }
             // all other
             if (isset($arFilter["RELATED"]["TYPE"])) {
                 if ($arFilter["RELATED"]["TYPE"] == "WITH_NOT_RELATED") {
                     if (strlen($strSqlRelatedWhere) > 0) {
                         $strSqlRelatedWhere .= " OR (P.ID NOT IN (SELECT DISTINCT SOR.PROPERTY_ID FROM b_sale_order_props_relation SOR))";
                     }
                 }
             }
             if (strlen($strSqlRelatedWhere) > 0) {
                 if (strlen($arSqls["WHERE"]) > 0) {
                     $arSqls["WHERE"] .= " AND ";
                 }
                 $arSqls["WHERE"] .= "(" . $strSqlRelatedWhere . ")";
             }
         }
     }
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_props P " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_props P " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_order_props P " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #17
0
 /**
  * <p>Метод возвращает набор местоположений, удовлетворяющих фильтру arFilter. Возвращаются так же параметры стран и городов местоположений. Набор отсортирован в соответствии с массивом arOrder. Языкозависимые параметры выбираются для языка strLang. Метод динамичный.</p>
  *
  *
  * @param array $arOrder = array("SORT"=>"ASC" Массив, в соответствии с которым сортируются результирующие
  * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
  * "направление_сортировки1", "название_поля2" =&gt;
  * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
  * может стоять любое поле местоположения, а в качестве
  * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
  * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
  * имеет несколько элементов, то результирующий набор сортируется
  * последовательно по каждому элементу (т.е. сначала сортируется по
  * первому элементу, потом результат сортируется по второму и т.д.).
  *
  * @param COUNTRY_NAME_LAN $G  Массив, в соответствии с которым фильтруются записи
  * местоположений. Массив имеет вид: <pre class="syntax">array(
  * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
  * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
  * Удовлетворяющие фильтру записи возвращаются в результате, а
  * записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
  * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка
  * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
  * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
  * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
  * поля строго больше передаваемой в фильтр величины;</li> <li><b> -
  * значение поля меньше или равно передаваемой в фильтр
  * величины;</b></li> <li><b> - значение поля строго меньше передаваемой в
  * фильтр величины;</b></li> <li> <b>~</b> - значение поля проверяется на
  * соответствие передаваемому в фильтр шаблону;</li> <li> <b>%</b> -
  * значение поля проверяется на соответствие передаваемой в фильтр
  * строке в соответствии с языком запросов.</li> </ul> В качестве
  * "название_поляX" может стоять любое поле местоположения.<br><br>
  * Пример фильтра: <pre class="syntax">array("COUNTRY_ID" =&gt; 15)</pre> Этот фильтр
  * означает "выбрать все записи, в которых значение в поле COUNTRY_ID (код
  * страны) равно 15".<br><br> Значение по умолчанию - пустой массив array() -
  * означает, что результат отфильтрован не будет.
  *
  * @param AS $C  Массив полей, по которым группируются записи местоположений.
  * Массив имеет вид: <pre class="syntax">array("название_поля1",
  * "группирующая_функция2" =&gt; "название_поля2", ...)</pre> В качестве
  * "название_поля<i>N</i>" может стоять любое поле местоположений. В
  * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> -
  * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li>
  * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> -
  * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление
  * суммы.</li> </ul> Если массив пустой, то метод вернет число записей,
  * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> -
  * означает, что результат группироваться не будет.
  *
  * @param CITY_NAME_LAN $G  Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых методом записей будет
  * ограничено сверху значением этого ключа;</li> <li> любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
  * параметров выборки нет.
  *
  * @param AS $C  Массив полей записей, которые будут возвращены методом. Можно
  * указать только те поля, которые необходимы. Если в массиве
  * присутствует значение "*", то будут возвращены все доступные
  * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
  * что будут возвращены все поля основной таблицы запроса.
  *
  * @param  $array  
  *
  * @param arFilte $r = array() Код местоположения. </h
  *
  * @param array $arGroupBy = false Код страны.
  *
  * @param array $arNavStartParams = false Код региона.
  *
  * @param array $arSelectFields = array() Код города.
  *
  * @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>COUNTRY_ID</td> <td>Код страны.</td> </tr> <tr> <td>REGION_ID</td> <td>Код
  * региона.</td> </tr> <tr> <td>CITY_ID</td> <td>Код города.</td> </tr> <tr> <td>SORT</td> <td>Индекс
  * сортировки.</td> </tr> <tr> <td>COUNTRY_NAME_ORIG</td> <td>Языконезависимое название
  * страны.</td> </tr> <tr> <td>COUNTRY_SHORT_NAME</td> <td>Языконезависимое короткое
  * название страны.</td> </tr> <tr> <td>REGION_NAME_ORIG</td> <td>Языконезависимое
  * название региона.</td> </tr> <tr> <td>CITY_NAME_ORIG</td> <td>Языконезависимое
  * название города.</td> </tr> <tr> <td>REGION_SHORT_NAME</td> <td>Языконезависимое
  * короткое название региона.</td> </tr> <tr> <td>CITY_SHORT_NAME</td>
  * <td>Языконезависимое короткое название города.</td> </tr> <tr>
  * <td>COUNTRY_LID</td> <td>Код языка для наименования страны.</td> </tr> <tr>
  * <td>COUNTRY_NAME</td> <td>Языкозависимое название страны, если оно
  * установлено. Иначе - языконезависимое название страны.</td> </tr> <tr>
  * <td>REGION_LID</td> <td>Код языка для наименования региона.</td> </tr> <tr>
  * <td>CITY_LID</td> <td>Код языка для наименования города.</td> </tr> <tr>
  * <td>REGION_NAME</td> <td>Языкозависимое название региона, если оно
  * установлено. Иначе - языконезависимое название региона.</td> </tr> <tr>
  * <td>CITY_NAME</td> <td>Языкозависимое название города, если оно
  * установлено. Иначе - языконезависимое название города.</td> </tr> <tr>
  * <td>LOC_DEFAULT</td> <td>Флаг "Выводить по умолчанию".</td> </tr> </table> <a
  * name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?// Выведем выпадающий список местоположений?&gt;
  * 
  * &lt;select name="LOCATION"&gt;
  *    &lt;?
  *    $db_vars = CSaleLocation::GetList(
  *         array(
  *                 "SORT" =&gt; "ASC",
  *                 "COUNTRY_NAME_LANG" =&gt; "ASC",
  *                 "CITY_NAME_LANG" =&gt; "ASC"
  *             ),
  *         array("LID" =&gt; LANGUAGE_ID),
  *         false,
  *         false,
  *         array()
  *     );
  *    while ($vars = $db_vars-&gt;Fetch()):
  *       ?&gt;
  *       &lt;option value="&lt;?= $vars["ID"]?&gt;"&gt;&lt;?= htmlspecialchars($vars["COUNTRY_NAME"]." - ".$vars["CITY_NAME"])?&gt;&lt;/option&gt;
  *       &lt;?
  *    endwhile;
  *    ?&gt;
  * &lt;/select&gt;
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__getlist.a60c2ce1.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (is_string($arGroupBy) && strlen($arGroupBy) == 2) {
         $arFilter["LID"] = $arGroupBy;
         $arGroupBy = false;
         $arSelectFields = array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID", "SORT", "COUNTRY_NAME_ORIG", "COUNTRY_SHORT_NAME", "COUNTRY_NAME_LANG", "CITY_NAME_ORIG", "CITY_SHORT_NAME", "CITY_NAME_LANG", "REGION_NAME_ORIG", "REGION_SHORT_NAME", "REGION_NAME_LANG", "COUNTRY_NAME", "CITY_NAME", "REGION_NAME", "LOC_DEFAULT");
     }
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID", "SORT", "COUNTRY_NAME_ORIG", "COUNTRY_SHORT_NAME", "REGION_NAME_ORIG", "CITY_NAME_ORIG", "REGION_SHORT_NAME", "CITY_SHORT_NAME", "COUNTRY_LID", "COUNTRY_NAME", "REGION_LID", "CITY_LID", "REGION_NAME", "CITY_NAME", "LOC_DEFAULT");
     }
     if (!is_array($arOrder)) {
         $arOrder = array();
     }
     foreach ($arOrder as $key => $dir) {
         if (!in_array($key, $arSelectFields)) {
             $arSelectFields[] = $key;
         }
     }
     $arFilter = self::getFilterForGetList($arFilter);
     $arFields = self::getFieldMapForGetList($arFilter);
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_location L " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_location L " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_location L " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
 function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "PLAN_ID", "MODULE_ID", "SECTION_ID", "RATE", "RATE_TYPE", "RATE_CURRENCY");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "APS.ID", "TYPE" => "int"), "PLAN_ID" => array("FIELD" => "APS.PLAN_ID", "TYPE" => "int"), "MODULE_ID" => array("FIELD" => "APS.MODULE_ID", "TYPE" => "string"), "SECTION_ID" => array("FIELD" => "APS.SECTION_ID", "TYPE" => "string"), "RATE" => array("FIELD" => "APS.RATE", "TYPE" => "double"), "RATE_TYPE" => array("FIELD" => "APS.RATE_TYPE", "TYPE" => "char"), "RATE_CURRENCY" => array("FIELD" => "APS.RATE_CURRENCY", "TYPE" => "string"), "PLAN_SITE_ID" => array("FIELD" => "AP.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_NAME" => array("FIELD" => "AP.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_DESCRIPTION" => array("FIELD" => "AP.DESCRIPTION", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_TIMESTAMP_X" => array("FIELD" => "AP.TIMESTAMP_X", "TYPE" => "datetime", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_ACTIVE" => array("FIELD" => "AP.ACTIVE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE" => array("FIELD" => "AP.BASE_RATE", "TYPE" => "double", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE_TYPE" => array("FIELD" => "AP.BASE_RATE_TYPE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE_CURRENCY" => array("FIELD" => "AP.BASE_RATE_CURRENCY", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_MIN_PAY" => array("FIELD" => "AP.MIN_PAY", "TYPE" => "double", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_MIN_PLAN_VALUE" => array("FIELD" => "AP.MIN_PLAN_VALUE", "TYPE" => "double", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_affiliate_plan_section APS " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_affiliate_plan_section APS " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_affiliate_plan_section APS " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #19
0
 function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "USER_ID", "MODULE", "PRODUCT_ID", "PRODUCT_NAME", "PRODUCT_URL", "PRODUCT_PRICE_ID", "RECUR_SCHEME_TYPE", "RECUR_SCHEME_LENGTH", "WITHOUT_ORDER", "PRICE", "CURRENCY", "ORDER_ID", "CANCELED", "DATE_CANCELED", "CANCELED_REASON", "CALLBACK_FUNC", "PRODUCT_PROVIDER_CLASS", "DESCRIPTION", "TIMESTAMP_X", "PRIOR_DATE", "NEXT_DATE", "REMAINING_ATTEMPTS", "SUCCESS_PAYMENT");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "SR.ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "SR.USER_ID", "TYPE" => "int"), "MODULE" => array("FIELD" => "SR.MODULE", "TYPE" => "string"), "PRODUCT_ID" => array("FIELD" => "SR.PRODUCT_ID", "TYPE" => "int"), "PRODUCT_NAME" => array("FIELD" => "SR.PRODUCT_NAME", "TYPE" => "string"), "PRODUCT_URL" => array("FIELD" => "SR.PRODUCT_URL", "TYPE" => "string"), "PRODUCT_PRICE_ID" => array("FIELD" => "SR.PRODUCT_PRICE_ID", "TYPE" => "int"), "RECUR_SCHEME_TYPE" => array("FIELD" => "SR.RECUR_SCHEME_TYPE", "TYPE" => "char"), "RECUR_SCHEME_LENGTH" => array("FIELD" => "SR.RECUR_SCHEME_LENGTH", "TYPE" => "int"), "WITHOUT_ORDER" => array("FIELD" => "SR.WITHOUT_ORDER", "TYPE" => "char"), "PRICE" => array("FIELD" => "SR.PRICE", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "SR.CURRENCY", "TYPE" => "string"), "ORDER_ID" => array("FIELD" => "SR.ORDER_ID", "TYPE" => "int"), "CANCELED" => array("FIELD" => "SR.CANCELED", "TYPE" => "char"), "DATE_CANCELED" => array("FIELD" => "SR.DATE_CANCELED", "TYPE" => "datetime"), "CANCELED_REASON" => array("FIELD" => "SR.CANCELED_REASON", "TYPE" => "string"), "CALLBACK_FUNC" => array("FIELD" => "SR.CALLBACK_FUNC", "TYPE" => "string"), "PRODUCT_PROVIDER_CLASS" => array("FIELD" => "SR.PRODUCT_PROVIDER_CLASS", "TYPE" => "string"), "DESCRIPTION" => array("FIELD" => "SR.DESCRIPTION", "TYPE" => "string"), "TIMESTAMP_X" => array("FIELD" => "SR.TIMESTAMP_X", "TYPE" => "datetime"), "PRIOR_DATE" => array("FIELD" => "SR.PRIOR_DATE", "TYPE" => "datetime"), "NEXT_DATE" => array("FIELD" => "SR.NEXT_DATE", "TYPE" => "datetime"), "REMAINING_ATTEMPTS" => array("FIELD" => "SR.REMAINING_ATTEMPTS", "TYPE" => "int"), "SUCCESS_PAYMENT" => array("FIELD" => "SR.SUCCESS_PAYMENT", "TYPE" => "char"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_ACTIVE" => array("FIELD" => "U.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_recurring SR " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_recurring SR " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_recurring SR " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #20
0
 /**
  * <p>Метод возвращает результат выборки записей из налогов заказа в соответствии со своими параметрами. Метод динамичный.</p>
  *
  *
  * @param array $arOrder = array("TAX_NAME" Массив, в соответствии с которым сортируются результирующие
  * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" =&gt;
  * "направление_сортировки1", "название_поля2" =&gt;
  * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>"
  * может стоять любое поле налогов заказа, а в качестве
  * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
  * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки
  * имеет несколько элементов, то результирующий набор сортируется
  * последовательно по каждому элементу (т.е. сначала сортируется по
  * первому элементу, потом результат сортируется по второму и т.д.).
  *
  * @param AS $C  Массив, в соответствии с которым фильтруются записи налогов
  * заказа. Массив имеет вид: <pre class="syntax">array(
  * "[модификатор1][оператор1]название_поля1" =&gt; "значение1",
  * "[модификатор2][оператор2]название_поля2" =&gt; "значение2", . . . )</pre>
  * Удовлетворяющие фильтру записи возвращаются в результате, а
  * записи, которые не удовлетворяют условиям фильтра,
  * отбрасываются.<br><br> Допустимыми являются следующие модификаторы:
  * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка
  * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми
  * являются следующие операторы: <ul> <li> <b>&gt;=</b> - значение поля больше
  * или равно передаваемой в фильтр величины;</li> <li> <b>&gt;</b> - значение
  * поля строго больше передаваемой в фильтр величины;</li> <li> <b>&lt;=</b> -
  * значение поля меньше или равно передаваемой в фильтр величины;</li>
  * <li> <b>&lt;</b> - значение поля строго меньше передаваемой в фильтр
  * величины;</li> <li> <b>@</b> - значение поля находится в передаваемом в
  * фильтр разделенном запятой списке значений;</li> <li> <b>~</b> - значение
  * поля проверяется на соответствие передаваемому в фильтр
  * шаблону;</li> <li> <b>%</b> - значение поля проверяется на соответствие
  * передаваемой в фильтр строке в соответствии с языком запросов.</li>
  * </ul> В качестве "название_поляX" может стоять любое поле
  * заказов.<br><br> Пример фильтра: <pre class="syntax">array("ORDER_ID" =&gt; 125)</pre> Этот
  * фильтр означает "выбрать все записи, в которых значение в поле
  * ORDER_ID (код налога) равно 125".<br><br> Значение по умолчанию - пустой
  * массив array() - означает, что результат отфильтрован не будет.
  *
  * @param  $array  Массив полей, по которым группируются записи вариантов налогов
  * заказа. Массив имеет вид: <pre class="syntax">array("название_поля1",
  * "группирующая_функция2" =&gt; "название_поля2", ...)</pre> В качестве
  * "название_поля<i>N</i>" может стоять любое поле налогов заказа. В
  * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> -
  * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li>
  * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> -
  * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление
  * суммы.</li> </ul> Если массив пустой, то метод вернет число записей,
  * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> -
  * означает, что результат группироваться не будет.
  *
  * @param arFilte $r = array() Массив параметров выборки. Может содержать следующие ключи: <ul>
  * <li>"<b>nTopCount</b>" - количество возвращаемых методом записей будет
  * ограничено сверху значением этого ключа;</li> <li> любой ключ,
  * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
  * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
  * параметров выборки нет.
  *
  * @param array $arGroupBy = false Массив полей записей, которые будут возвращены методом. Можно
  * указать только те поля, которые необходимы. Если в массиве
  * присутствует значение "*", то будут возвращены все доступные
  * поля.<br><br> Значение по умолчанию - пустой массив array() - означает,
  * что будут возвращены все поля основной таблицы запроса.
  *
  * @param array $arNavStartParams = false 
  *
  * @param array $arSelectFields = array() Код суммы налогов. </ht
  *
  * @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>ORDER_ID</td>
  * <td>Код заказа.</td> </tr> <tr> <td>TAX_NAME</td> <td>Название налога.</td> </tr> <tr>
  * <td>VALUE</td> <td>Ставка налога.</td> </tr> <tr> <td>VALUE_MONEY</td> <td>Сумма налога.</td>
  * </tr> <tr> <td>APPLY_ORDER</td> <td>Порядок применения.</td> </tr> <tr> <td>CODE</td>
  * <td>Символьный код налога.</td> </tr> <tr> <td>IS_IN_PRICE</td> <td>Флаг (Y/N) включен
  * ли налог в цену товара.</td> </tr> <tr> <td>IS_PERCENT</td> <td>Y</td> </tr> </table> <p>Если в
  * качестве параметра arGroupBy передается пустой массив, то метод
  * вернет число записей, удовлетворяющих фильтру.</p> <a name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $arTaxList = array();
  * // Выберем все суммы налогов для заказа $ORDER_ID
  * $db_tax_list = CSaleOrderTax::GetList(array("APPLY_ORDER"=&gt;"ASC"), Array("ORDER_ID"=&gt;$ORDER_ID));
  * 
  * $iNds = -1;
  * $i = 0;
  * while ($ar_tax_list = $db_tax_list-&gt;Fetch())
  * {
  *    $arTaxList[$i] = $ar_tax_list;
  *    // определяем, какой из налогов - НДС, предполагая, что его символьный код - NDS
  *    if ($arTaxList[$i]["CODE"] == "NDS")
  *       $iNds = $i;
  * 
  *    $i++;
  * }
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleordertax/csaleordertax__getlist.1c2a6c7d.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array("TAX_NAME" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "T.ID", "TYPE" => "int"), "ORDER_ID" => array("FIELD" => "T.ORDER_ID", "TYPE" => "int"), "TAX_NAME" => array("FIELD" => "T.TAX_NAME", "TYPE" => "string"), "VALUE" => array("FIELD" => "T.VALUE", "TYPE" => "double"), "VALUE_MONEY" => array("FIELD" => "T.VALUE_MONEY", "TYPE" => "double"), "APPLY_ORDER" => array("FIELD" => "T.APPLY_ORDER", "TYPE" => "int"), "CODE" => array("FIELD" => "T.CODE", "TYPE" => "string"), "IS_PERCENT" => array("FIELD" => "T.IS_PERCENT", "TYPE" => "char"), "IS_IN_PRICE" => array("FIELD" => "T.IS_IN_PRICE", "TYPE" => "char"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_tax T " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_tax T " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_order_tax T " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     if (\Bitrix\Main\Config\Option::get('main', '~sale_paysystem_converted') == 'Y') {
         $ignoredFields = array('PERSON_TYPE_ID');
         if (!$arSelectFields) {
             $select = array("ID", "PAY_SYSTEM_ID", "PERSON_TYPE_ID", "PSA_NAME", "ACTION_FILE", "RESULT_FILE", "NEW_WINDOW", "PARAMS", "TARIF", "ENCODING", "LOGOTIP");
         } else {
             $select = array();
             foreach ($arSelectFields as $i => $field) {
                 $select[] = self::getAlias($field);
             }
         }
         if (!in_array('ID', $select)) {
             $select[] = 'ID';
         }
         $filter = array();
         foreach ($arFilter as $i => $field) {
             if (in_array($i, $ignoredFields)) {
                 continue;
             }
             if ($i == 'PAY_SYSTEM_ID') {
                 $filter['ID'] = $field;
             } else {
                 $filter[self::getAlias($i)] = $field;
             }
         }
         $groupBy = array();
         if ($arGroupBy !== false) {
             $arGroupBy = !is_array($arGroupBy) ? array($arGroupBy) : $arGroupBy;
             foreach ($arGroupBy as $field => $order) {
                 $groupBy[self::getAlias($field)] = $order;
             }
         }
         $dbRes = \Bitrix\Sale\Internals\PaySystemActionTable::getList(array('select' => $select, 'filter' => $filter, 'group' => $groupBy));
         $limit = null;
         if (is_array($arNavStartParams) && isset($arNavStartParams['nTopCount'])) {
             if ($arNavStartParams['nTopCount'] > 0) {
                 $limit = $arNavStartParams['nTopCount'];
             }
         }
         $result = array();
         $busValEnable = in_array('PARAMS', $select);
         while ($data = $dbRes->fetch()) {
             if ($limit !== null && !$limit) {
                 break;
             }
             $dbRestriction = ServiceRestrictionTable::getList(array('filter' => array('SERVICE_ID' => $data['ID'], 'SERVICE_TYPE' => Manager::SERVICE_TYPE_PAYMENT)));
             if (isset($data['ACTION_FILE'])) {
                 $oldHandler = array_search($data['ACTION_FILE'], self::getOldToNewHandlersMap());
                 if ($oldHandler !== false) {
                     $data['ACTION_FILE'] = $oldHandler;
                 }
             }
             while ($restriction = $dbRestriction->fetch()) {
                 if (!self::checkRestriction($restriction, $filter)) {
                     continue 2;
                 }
             }
             if (isset($data['PAY_SYSTEM_ID'])) {
                 $data['PAY_SYSTEM_ID'] = $data['ID'];
             }
             if ($busValEnable) {
                 if ($data['ID'] > 0) {
                     $consumerId = $data['ID'];
                 } else {
                     $params = unserialize($data['PARAMS']);
                     $consumerId = $params['BX_PAY_SYSTEM_ID']['VALUE'];
                 }
                 $consumer = 'PAYSYSTEM_' . $consumerId;
                 if (!$data['PERSON_TYPE_ID']) {
                     if (is_array($arFilter['PERSON_TYPE_ID'])) {
                         $personTypeId = $arFilter['PERSON_TYPE_ID'][0];
                     } else {
                         $personTypeId = $arFilter['PERSON_TYPE_ID'];
                     }
                 } else {
                     $personTypeId = $data['PERSON_TYPE_ID'];
                 }
                 if (!in_array('ID', $arSelectFields)) {
                     $key = array_search('ID', $data);
                     unset($data[$key]);
                 }
                 $params = static::getParamsByConsumer($consumer, $personTypeId);
                 $params['BX_PAY_SYSTEM_ID'] = array('TYPE' => '', 'VALUE' => $consumerId);
                 $data['PARAMS'] = serialize($params);
             }
             if (in_array('PS_NAME', $arSelectFields)) {
                 $data['PS_NAME'] = $data['NAME'];
                 unset($data['NAME']);
             }
             if (array_key_exists('PSA_NAME', $data)) {
                 $data['NAME'] = $data['PSA_NAME'];
                 unset($data['PSA_NAME']);
             }
             $result[] = $data;
             $limit--;
         }
         $dbRes = new CDBResult();
         $dbRes->InitFromArray($result);
     } else {
         global $DB;
         if (!is_array($arOrder) && !is_array($arFilter)) {
             $arOrder = strval($arOrder);
             $arFilter = strval($arFilter);
             if (strlen($arOrder) > 0 && strlen($arFilter) > 0) {
                 $arOrder = array($arOrder => $arFilter);
             } else {
                 $arOrder = array();
             }
             if (is_array($arGroupBy)) {
                 $arFilter = $arGroupBy;
             } else {
                 $arFilter = array();
             }
             $arGroupBy = false;
         }
         if (count($arSelectFields) <= 0) {
             $arSelectFields = array("ID", "PAY_SYSTEM_ID", "PERSON_TYPE_ID", "NAME", "ACTION_FILE", "RESULT_FILE", "NEW_WINDOW", "PARAMS", "TARIF", "ENCODING", "LOGOTIP");
         }
         // FIELDS -->
         $arFields = array("ID" => array("FIELD" => "PSA.ID", "TYPE" => "int"), "PAY_SYSTEM_ID" => array("FIELD" => "PSA.PAY_SYSTEM_ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "PSA.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "PSA.NAME", "TYPE" => "string"), "ACTION_FILE" => array("FIELD" => "PSA.ACTION_FILE", "TYPE" => "string"), "RESULT_FILE" => array("FIELD" => "PSA.RESULT_FILE", "TYPE" => "string"), "NEW_WINDOW" => array("FIELD" => "PSA.NEW_WINDOW", "TYPE" => "char"), "PARAMS" => array("FIELD" => "PSA.PARAMS", "TYPE" => "string"), "TARIF" => array("FIELD" => "PSA.TARIF", "TYPE" => "string"), "HAVE_PAYMENT" => array("FIELD" => "PSA.HAVE_PAYMENT", "TYPE" => "char"), "HAVE_ACTION" => array("FIELD" => "PSA.HAVE_ACTION", "TYPE" => "char"), "HAVE_RESULT" => array("FIELD" => "PSA.HAVE_RESULT", "TYPE" => "char"), "HAVE_PREPAY" => array("FIELD" => "PSA.HAVE_PREPAY", "TYPE" => "char"), "HAVE_RESULT_RECEIVE" => array("FIELD" => "PSA.HAVE_RESULT_RECEIVE", "TYPE" => "char"), "ENCODING" => array("FIELD" => "PSA.ENCODING", "TYPE" => "string"), "LOGOTIP" => array("FIELD" => "PSA.LOGOTIP", "TYPE" => "int"), "PS_LID" => array("FIELD" => "PS.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_CURRENCY" => array("FIELD" => "PS.CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_NAME" => array("FIELD" => "PS.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_ACTIVE" => array("FIELD" => "PS.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_SORT" => array("FIELD" => "PS.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_DESCRIPTION" => array("FIELD" => "PS.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PT_LID" => array("FIELD" => "PT.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_NAME" => array("FIELD" => "PT.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_SORT" => array("FIELD" => "PT.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_ACTIVE" => array("FIELD" => "PT.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"));
         // <-- FIELDS
         $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
         $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
         if (is_array($arGroupBy) && count($arGroupBy) == 0) {
             $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_pay_system_action PSA " . "\t" . $arSqls["FROM"] . " ";
             if (strlen($arSqls["WHERE"]) > 0) {
                 $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
             }
             if (strlen($arSqls["GROUPBY"]) > 0) {
                 $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
             }
             //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
             $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
             if ($arRes = $dbRes->Fetch()) {
                 return $arRes["CNT"];
             } else {
                 return False;
             }
         }
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_pay_system_action PSA " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         if (strlen($arSqls["ORDERBY"]) > 0) {
             $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
         }
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
             $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_pay_system_action PSA " . "\t" . $arSqls["FROM"] . " ";
             if (strlen($arSqls["WHERE"]) > 0) {
                 $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
             }
             if (strlen($arSqls["GROUPBY"]) > 0) {
                 $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
             }
             $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
             $cnt = 0;
             if (strlen($arSqls["GROUPBY"]) <= 0) {
                 if ($arRes = $dbRes->Fetch()) {
                     $cnt = $arRes["CNT"];
                 }
             } else {
                 $cnt = $dbRes->SelectedRowsCount();
             }
             $dbRes = new CDBResult();
             $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
         } else {
             if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
                 $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
             }
             $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         }
     }
     return $dbRes;
 }
 function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (!is_array($arOrder) && !is_array($arFilter)) {
         $arOrder = strval($arOrder);
         $arFilter = strval($arFilter);
         if (strlen($arOrder) > 0 && strlen($arFilter) > 0) {
             $arOrder = array($arOrder => $arFilter);
         } else {
             $arOrder = array();
         }
         if (is_array($arGroupBy)) {
             $arFilter = $arGroupBy;
         } else {
             $arFilter = array();
         }
         $arGroupBy = false;
         if (count($arSelectFields) <= 0) {
             $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "USER_VALUE_NAME", "VALUE", "TYPE", "SORT", "VARIANT_NAME", "CODE");
         }
     }
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "NAME", "VALUE", "PROP_ID", "PROP_PERSON_TYPE_ID", "PROP_NAME", "PROP_TYPE", "PROP_REQUIED", "PROP_DEFAULT_VALUE", "PROP_SORT", "PROP_USER_PROPS", "PROP_IS_LOCATION", "PROP_PROPS_GROUP_ID", "PROP_SIZE1", "PROP_SIZE2", "PROP_DESCRIPTION", "PROP_IS_EMAIL", "PROP_IS_PROFILE_NAME", "PROP_IS_PAYER", "PROP_IS_LOCATION4TAX", "PROP_IS_ZIP", "PROP_CODE", "VARIANT_ID", "VARIANT_ORDER_PROPS_ID", "VARIANT_NAME", "VARIANT_VALUE", "VARIANT_SORT", "VARIANT_DESCRIPTION");
     }
     // TODO proper compatibility CAllSaleOrderUserPropsValue::getList15
     $sale15converted = \Bitrix\Main\Config\Option::get('main', '~sale_converted_15', 'N') == 'Y';
     if ($sale15converted && is_array($arSelectFields) && $arSelectFields) {
         if (($i = array_search('PROP_SIZE1', $arSelectFields)) !== false) {
             unset($arSelectFields[$i]);
         }
         if (($i = array_search('PROP_SIZE2', $arSelectFields)) !== false) {
             unset($arSelectFields[$i]);
         }
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "UP.ID", "TYPE" => "int"), "USER_PROPS_ID" => array("FIELD" => "UP.USER_PROPS_ID", "TYPE" => "int"), "ORDER_PROPS_ID" => array("FIELD" => "UP.ORDER_PROPS_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "UP.NAME", "TYPE" => "string"), "PROP_ID" => array("FIELD" => "P.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_PERSON_TYPE_ID" => array("FIELD" => "P.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_NAME" => array("FIELD" => "P.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_REQUIED" => array("FIELD" => "P.REQUI" . ($sale15converted ? 'R' : '') . "ED", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_DEFAULT_VALUE" => array("FIELD" => "P.DEFAULT_VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_USER_PROPS" => array("FIELD" => "P.USER_PROPS", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_LOCATION" => array("FIELD" => "P.IS_LOCATION", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_PROPS_GROUP_ID" => array("FIELD" => "P.PROPS_GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_EMAIL" => array("FIELD" => "P.IS_EMAIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_PROFILE_NAME" => array("FIELD" => "P.IS_PROFILE_NAME", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_PAYER" => array("FIELD" => "P.IS_PAYER", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_LOCATION4TAX" => array("FIELD" => "P.IS_LOCATION4TAX", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_ZIP" => array("FIELD" => "P.IS_ZIP", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_UTIL" => array("FIELD" => "P.UTIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "VARIANT_ID" => array("FIELD" => "PV.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_ORDER_PROPS_ID" => array("FIELD" => "PV.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_VALUE" => array("FIELD" => "PV.VALUE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_SORT" => array("FIELD" => "PV.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_DESCRIPTION" => array("FIELD" => "PV.DESCRIPTION", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "USER_VALUE_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string"), "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"));
     // <-- FIELDS
     self::addPropertyValueField('UP', $arFields, $arSelectFields);
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // рнкэйн дкъ MYSQL!!! дкъ ORACLE дпсцни йнд
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #23
0
 public static function GetDiscountGroupList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     $arFields = array("ID" => array("FIELD" => "DG.ID", "TYPE" => "int"), "DISCOUNT_ID" => array("FIELD" => "DG.DISCOUNT_ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "DG.GROUP_ID", "TYPE" => "int"));
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (empty($arGroupBy) && is_array($arGroupBy)) {
         $strSql = "select " . $arSqls["SELECT"] . " from b_sale_discount_group DG " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql .= " where " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= " group by " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     $strSql = "select " . $arSqls["SELECT"] . " from b_sale_discount_group DG " . $arSqls["FROM"];
     if (!empty($arSqls["WHERE"])) {
         $strSql .= " where " . $arSqls["WHERE"];
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= " group by " . $arSqls["GROUPBY"];
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= " order by " . $arSqls["ORDERBY"];
     }
     $intTopCount = 0;
     $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams);
     if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) {
         $intTopCount = intval($arNavStartParams["nTopCount"]);
     }
     if ($boolNavStartParams && 0 >= $intTopCount) {
         $strSql_tmp = "select COUNT('x') as CNT from b_sale_discount_group DG " . $arSqls["FROM"];
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= " where " . $arSqls["WHERE"];
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= " group by " . $arSqls["GROUPBY"];
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if ($boolNavStartParams && 0 < $intTopCount) {
             $strSql .= " limit " . $intTopCount;
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #24
0
 /**
  * The function select order history
  *
  * @param array $arOrder - array to sort
  * @param array $arFilter - array to filter
  * @param array $arGroupBy - array to group records
  * @param array $arNavStartParams - array to parameters
  * @param array $arSelectFields - array to selectes fields
  * @return object $dbRes - object result
  */
 public function GetHistoryList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (array_key_exists("H_DATE_INSERT_FROM", $arFilter)) {
         $val = $arFilter["H_DATE_INSERT_FROM"];
         unset($arFilter["H_DATE_INSERT_FROM"]);
         $arFilter[">=H_DATE_INSERT"] = $val;
     }
     if (array_key_exists("H_DATE_INSERT_TO", $arFilter)) {
         $val = $arFilter["H_DATE_INSERT_TO"];
         unset($arFilter["H_DATE_INSERT_TO"]);
         $arFilter["<=H_DATE_INSERT"] = $val;
     }
     if (!$arSelectFields || count($arSelectFields) <= 0 || in_array("*", $arSelectFields)) {
         $arSelectFields = array("ID", "H_USER_ID", "H_DATE_INSERT", "H_ORDER_ID", "H_CURRENCY", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "CANCELED", "DATE_CANCELED", "REASON_CANCELED", "MARKED", "DATE_MARKED", "REASON_MARKED", "DEDUCTED", "DATE_DEDUCTED", "REASON_UNDO_DEDUCTED", "STATUS_ID", "DATE_STATUS", "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "PRICE", "CURRENCY", "DISCOUNT_VALUE", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "PS_STATUS", "PS_STATUS_CODE", "PS_STATUS_DESCRIPTION", "PS_STATUS_MESSAGE", "PS_SUM", "PS_CURRENCY", "PS_RESPONSE_DATE", "TAX_VALUE", "STAT_GID", "SUM_PAID", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "AFFILIATE_ID", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE");
     }
     $arFields = array("ID" => array("FIELD" => "V.ID", "TYPE" => "int"), "H_ORDER_ID" => array("FIELD" => "V.H_ORDER_ID", "TYPE" => "int"), "H_USER_ID" => array("FIELD" => "V.H_USER_ID", "TYPE" => "int"), "H_DATE_INSERT" => array("FIELD" => "V.H_DATE_INSERT", "TYPE" => "datetime"), "H_CURRENCY" => array("FIELD" => "V.H_CURRENCY", "TYPE" => "string"), "PERSON_TYPE_ID" => array("FIELD" => "V.PERSON_TYPE_ID", "TYPE" => "int"), "PAYED" => array("FIELD" => "V.PAYED", "TYPE" => "char"), "DATE_PAYED" => array("FIELD" => "V.DATE_PAYED", "TYPE" => "datetime"), "EMP_PAYED_ID" => array("FIELD" => "V.EMP_PAYED_ID", "TYPE" => "int"), "CANCELED" => array("FIELD" => "V.CANCELED", "TYPE" => "char"), "DATE_CANCELED" => array("FIELD" => "V.DATE_CANCELED", "TYPE" => "datetime"), "REASON_CANCELED" => array("FIELD" => "V.REASON_CANCELED", "TYPE" => "string"), "MARKED" => array("FIELD" => "V.MARKED", "TYPE" => "char"), "DATE_MARKED" => array("FIELD" => "V.DATE_MARKED", "TYPE" => "datetime"), "REASON_MARKED" => array("FIELD" => "V.REASON_MARKED", "TYPE" => "string"), "DEDUCTED" => array("FIELD" => "V.DEDUCTED", "TYPE" => "char"), "DATE_DEDUCTED" => array("FIELD" => "V.DATE_DEDUCTED", "TYPE" => "datetime"), "REASON_DEDUCTED" => array("FIELD" => "V.REASON_UNDO_DEDUCTED", "TYPE" => "string"), "STATUS_ID" => array("FIELD" => "V.STATUS_ID", "TYPE" => "char"), "DATE_STATUS" => array("FIELD" => "V.DATE_STATUS", "TYPE" => "datetime"), "PAY_VOUCHER_NUM" => array("FIELD" => "V.PAY_VOUCHER_NUM", "TYPE" => "string"), "PAY_VOUCHER_DATE" => array("FIELD" => "V.PAY_VOUCHER_DATE", "TYPE" => "date"), "PRICE_DELIVERY" => array("FIELD" => "V.PRICE_DELIVERY", "TYPE" => "double"), "ALLOW_DELIVERY" => array("FIELD" => "V.ALLOW_DELIVERY", "TYPE" => "char"), "DATE_ALLOW_DELIVERY" => array("FIELD" => "V.DATE_ALLOW_DELIVERY", "TYPE" => "datetime"), "PRICE" => array("FIELD" => "V.PRICE", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "V.CURRENCY", "TYPE" => "string"), "DISCOUNT_VALUE" => array("FIELD" => "V.DISCOUNT_VALUE", "TYPE" => "double"), "SUM_PAID" => array("FIELD" => "V.SUM_PAID", "TYPE" => "double"), "USER_ID" => array("FIELD" => "V.USER_ID", "TYPE" => "int"), "PAY_SYSTEM_ID" => array("FIELD" => "V.PAY_SYSTEM_ID", "TYPE" => "int"), "DELIVERY_ID" => array("FIELD" => "V.DELIVERY_ID", "TYPE" => "string"), "PS_STATUS" => array("FIELD" => "V.PS_STATUS", "TYPE" => "char"), "PS_STATUS_CODE" => array("FIELD" => "V.PS_STATUS_CODE", "TYPE" => "string"), "PS_STATUS_DESCRIPTION" => array("FIELD" => "V.PS_STATUS_DESCRIPTION", "TYPE" => "string"), "PS_STATUS_MESSAGE" => array("FIELD" => "V.PS_STATUS_MESSAGE", "TYPE" => "string"), "PS_SUM" => array("FIELD" => "V.PS_SUM", "TYPE" => "double"), "PS_CURRENCY" => array("FIELD" => "V.PS_CURRENCY", "TYPE" => "string"), "PS_RESPONSE_DATE" => array("FIELD" => "V.PS_RESPONSE_DATE", "TYPE" => "datetime"), "TAX_VALUE" => array("FIELD" => "V.TAX_VALUE", "TYPE" => "double"), "AFFILIATE_ID" => array("FIELD" => "V.AFFILIATE_ID", "TYPE" => "int"), "DELIVERY_DOC_NUM" => array("FIELD" => "V.DELIVERY_DOC_NUM", "TYPE" => "string"), "DELIVERY_DOC_DATE" => array("FIELD" => "V.DELIVERY_DOC_DATE", "TYPE" => "date"));
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_sale_order_history V ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_sale_order_history B ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         $strSql = $DB->TopSql($strSql, $arNavStartParams["nTopCount"]);
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #25
0
 /**
  * The function select viewed product
  *
  * @param array $arOrder - array to sort
  * @param array $arFilter - array to filter
  * @param array $arGroupBy - array to group records
  * @param array $arNavStartParams - array to parameters
  * @param array $arSelectFields - array to selectes fields
  * @return object $dbRes - object result
  */
 public static function GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (array_key_exists("DATE_FROM", $arFilter)) {
         $arFilter[">=DATE_VISIT"] = trim($arFilter["DATE_FROM"]);
         unset($arFilter["DATE_FROM"]);
     }
     if (array_key_exists("DATE_TO", $arFilter)) {
         $arFilter["<=DATE_VISIT"] = trim($arFilter["DATE_TO"]);
         unset($arFilter["DATE_TO"]);
     }
     if (!$arSelectFields || count($arSelectFields) <= 0 || in_array("*", $arSelectFields)) {
         $arSelectFields = array("ID", "FUSER_ID", "DATE_VISIT", "PRODUCT_ID", "MODULE", "LID", "NAME", "DETAIL_PAGE_URL", "CURRENCY", "PRICE", "NOTES", "PREVIEW_PICTURE", "DETAIL_PICTURE", "CALLBACK_FUNC", "PRODUCT_PROVIDER_CLASS");
     }
     if (\Bitrix\Main\Loader::includeModule("catalog")) {
         if (\Bitrix\Main\Config\Option::get("sale", "viewed_capability", "") == "Y") {
             foreach ($arFilter as $key => $value) {
                 if ($key == "LID") {
                     $arFilter['SITE_ID'] = $value;
                     unset($arFilter['LID']);
                 }
             }
             $limit = 100;
             if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) >= 0) {
                 $limit = IntVal($arNavStartParams["nTopCount"]);
             }
             $viewedIterator = \Bitrix\Catalog\CatalogViewedProductTable::getList(array("filter" => $arFilter, "select" => array("ID", "PRODUCT_ID", "DATE_VISIT", "LID" => "SITE_ID", "NAME" => "ELEMENT.NAME"), "order" => array("DATE_VISIT" => "DESC"), "limit" => $limit));
             $viewed = array();
             while ($row = $viewedIterator->fetch()) {
                 $row['MODULE'] = "catalog";
                 $row['DATE_VISIT'] = $row['DATE_VISIT']->toString();
                 $viewed[$row['PRODUCT_ID']] = $row;
             }
             if (count($viewed)) {
                 // Map to parent sku
                 $newIds = array();
                 $ids = array_keys($viewed);
                 $catalogIterator = CCatalog::getList();
                 while ($catalog = $catalogIterator->fetch()) {
                     if ($catalog['IBLOCK_TYPE_ID'] == "offers") {
                         $elementIterator = CIBlockElement::getList(array(), array("ID" => $ids, "IBLOCK_ID" => $catalog['IBLOCK_ID']), false, false, array("ID", "IBLOCK_ID", "PROPERTY_" . $catalog['SKU_PROPERTY_ID']));
                         while ($item = $elementIterator->fetch()) {
                             $propertyName = "PROPERTY_" . $catalog['SKU_PROPERTY_ID'] . "_VALUE";
                             $parentId = $item[$propertyName];
                             if (!empty($parentId)) {
                                 $newIds[$item['ID']] = $parentId;
                             } else {
                                 $newIds[$item['ID']] = $item['ID'];
                             }
                         }
                     }
                 }
                 // Push missing
                 foreach ($ids as $id) {
                     if (!isset($newIds[$id])) {
                         $newIds[$id] = $id;
                     }
                 }
                 $filter = array("ID" => array_values($newIds));
                 if (!count($filter['ID'])) {
                     $filter = array("ID" => -1);
                 }
                 $mapped = array();
                 if (in_array("DETAIL_PAGE_URL", $arSelectFields) || in_array("PREVIEW_PICTURE", $arSelectFields) || in_array("DETAIL_PICTURE", $arSelectFields)) {
                     $elementIterator = CIBlockElement::GetList(array(), $filter);
                     while ($elementObj = $elementIterator->GetNextElement()) {
                         $fields = $elementObj->GetFields();
                         $mapped[$fields['ID']]['PREVIEW_PICTURE'] = $fields['PREVIEW_PICTURE'];
                         $mapped[$fields['ID']]['DETAIL_PICTURE'] = $fields['DETAIL_PICTURE'];
                     }
                 }
                 foreach ($newIds as $natural => $tr) {
                     $viewed[$natural]['PREVIEW_PICTURE'] = $mapped[$tr]['DETAIL_PICTURE'];
                     $viewed[$natural]['DETAIL_PICTURE'] = $mapped[$tr]['PREVIEW_PICTURE'];
                     $viewed[$natural]['PRODUCT_ID'] = $tr;
                 }
                 if (in_array("CURRENCY", $arSelectFields) || in_array("PRICE", $arSelectFields)) {
                     // Prices
                     $priceIterator = CPrice::getList(array(), array("PRODUCT_ID" => $ids), false, false, array("PRODUCT_ID", "PRICE", "CURRENCY"));
                     while ($price = $priceIterator->fetch()) {
                         if (!isset($viewed[$price['PRODUCT_ID']]['PRICE'])) {
                             $viewed[$price['PRODUCT_ID']]['PRICE'] = $price['PRICE'];
                             $viewed[$price['PRODUCT_ID']]['CURRENCY'] = $price['CURRENCY'];
                         }
                     }
                 }
             }
             // resort
             $dbresult = new CDBResult();
             $dbresult->InitFromArray(array_values($viewed));
             return $dbresult;
         }
     }
     $arFields = array("ID" => array("FIELD" => "V.ID", "TYPE" => "int"), "FUSER_ID" => array("FIELD" => "V.FUSER_ID", "TYPE" => "int"), "DATE_VISIT" => array("FIELD" => "V.DATE_VISIT", "TYPE" => "datetime"), "PRODUCT_ID" => array("FIELD" => "V.PRODUCT_ID", "TYPE" => "int"), "MODULE" => array("FIELD" => "V.MODULE", "TYPE" => "string"), "LID" => array("FIELD" => "V.LID", "TYPE" => "string"), "NAME" => array("FIELD" => "V.NAME", "TYPE" => "string"), "DETAIL_PAGE_URL" => array("FIELD" => "V.DETAIL_PAGE_URL", "TYPE" => "string"), "CURRENCY" => array("FIELD" => "V.CURRENCY", "TYPE" => "string"), "PRICE" => array("FIELD" => "V.PRICE", "TYPE" => "double"), "NOTES" => array("FIELD" => "V.NOTES", "TYPE" => "string"), "PREVIEW_PICTURE" => array("FIELD" => "V.PREVIEW_PICTURE", "TYPE" => "string"), "DETAIL_PICTURE" => array("FIELD" => "V.DETAIL_PICTURE", "TYPE" => "string"), "CALLBACK_FUNC" => array("FIELD" => "V.CALLBACK_FUNC", "TYPE" => "string"), "PRODUCT_PROVIDER_CLASS" => array("FIELD" => "V.PRODUCT_PROVIDER_CLASS", "TYPE" => "string"));
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_viewed_product V ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return false;
         }
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_viewed_product B ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         $strSql = $DB->TopSql($strSql, $arNavStartParams["nTopCount"]);
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #26
0
 function GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $arOptions = array())
 {
     global $DB, $USER_FIELD_MANAGER;
     if (!is_array($arOrder)) {
         $arOrder = array('ID' => 'DESC');
     }
     if (!is_array($arFilter)) {
         $arFilter = array();
     }
     if (!is_array($arSelectFields)) {
         $arSelectFields = array();
     }
     $obUserFieldsSql = new CUserTypeSQL();
     $obUserFieldsSql->SetEntity("ORDER", "O.ID");
     $obUserFieldsSql->SetSelect($arSelectFields);
     $obUserFieldsSql->SetFilter($arFilter);
     $obUserFieldsSql->SetOrder($arOrder);
     if (array_key_exists("DATE_FROM", $arFilter)) {
         $val = $arFilter["DATE_FROM"];
         unset($arFilter["DATE_FROM"]);
         $arFilter[">=DATE_INSERT"] = $val;
     }
     if (array_key_exists("DATE_TO", $arFilter)) {
         $val = $arFilter["DATE_TO"];
         unset($arFilter["DATE_TO"]);
         $arFilter["<=DATE_INSERT"] = $val;
     }
     if (array_key_exists("DATE_INSERT_FROM", $arFilter)) {
         $val = $arFilter["DATE_INSERT_FROM"];
         unset($arFilter["DATE_INSERT_FROM"]);
         $arFilter[">=DATE_INSERT"] = $val;
     }
     if (array_key_exists("DATE_INSERT_TO", $arFilter)) {
         $val = $arFilter["DATE_INSERT_TO"];
         unset($arFilter["DATE_INSERT_TO"]);
         $arFilter["<=DATE_INSERT"] = $val;
     }
     if (array_key_exists("DATE_UPDATE_FROM", $arFilter)) {
         $val = $arFilter["DATE_UPDATE_FROM"];
         unset($arFilter["DATE_UPDATE_FROM"]);
         $arFilter[">=DATE_UPDATE"] = $val;
     }
     if (array_key_exists("DATE_UPDATE_TO", $arFilter)) {
         $val = $arFilter["DATE_UPDATE_TO"];
         unset($arFilter["DATE_UPDATE_TO"]);
         $arFilter["<=DATE_UPDATE"] = $val;
     }
     if (array_key_exists("DATE_STATUS_FROM", $arFilter)) {
         $val = $arFilter["DATE_STATUS_FROM"];
         unset($arFilter["DATE_STATUS_FROM"]);
         $arFilter[">=DATE_STATUS"] = $val;
     }
     if (array_key_exists("DATE_STATUS_TO", $arFilter)) {
         $val = $arFilter["DATE_STATUS_TO"];
         unset($arFilter["DATE_STATUS_TO"]);
         $arFilter["<=DATE_STATUS"] = $val;
     }
     if (array_key_exists("DATE_PAYED_FROM", $arFilter)) {
         $val = $arFilter["DATE_PAYED_FROM"];
         unset($arFilter["DATE_PAYED_FROM"]);
         $arFilter[">=DATE_PAYED"] = $val;
     }
     if (array_key_exists("DATE_PAYED_TO", $arFilter)) {
         $val = $arFilter["DATE_PAYED_TO"];
         unset($arFilter["DATE_PAYED_TO"]);
         $arFilter["<=DATE_PAYED"] = $val;
     }
     if (array_key_exists("DATE_ALLOW_DELIVERY_FROM", $arFilter)) {
         $val = $arFilter["DATE_ALLOW_DELIVERY_FROM"];
         unset($arFilter["DATE_ALLOW_DELIVERY_FROM"]);
         $arFilter[">=DATE_ALLOW_DELIVERY"] = $val;
     }
     if (array_key_exists("DATE_ALLOW_DELIVERY_TO", $arFilter)) {
         $val = $arFilter["DATE_ALLOW_DELIVERY_TO"];
         unset($arFilter["DATE_ALLOW_DELIVERY_TO"]);
         $arFilter["<=DATE_ALLOW_DELIVERY"] = $val;
     }
     if (array_key_exists("DATE_CANCELED_FROM", $arFilter)) {
         $val = $arFilter["DATE_CANCELED_FROM"];
         unset($arFilter["DATE_CANCELED_FROM"]);
         $arFilter[">=DATE_CANCELED"] = $val;
     }
     if (array_key_exists("DATE_CANCELED_TO", $arFilter)) {
         $val = $arFilter["DATE_CANCELED_TO"];
         unset($arFilter["DATE_CANCELED_TO"]);
         $arFilter["<=DATE_CANCELED"] = $val;
     }
     if (array_key_exists("DATE_DEDUCTED_FROM", $arFilter)) {
         $val = $arFilter["DATE_DEDUCTED_FROM"];
         unset($arFilter["DATE_DEDUCTED_FROM"]);
         $arFilter[">=DATE_DEDUCTED"] = $val;
     }
     if (array_key_exists("DATE_DEDUCTED_TO", $arFilter)) {
         $val = $arFilter["DATE_DEDUCTED_TO"];
         unset($arFilter["DATE_DEDUCTED_TO"]);
         $arFilter["<=DATE_DEDUCTED"] = $val;
     }
     if (array_key_exists("DATE_MARKED_FROM", $arFilter)) {
         $val = $arFilter["DATE_MARKED_FROM"];
         unset($arFilter["DATE_MARKED_FROM"]);
         $arFilter[">=DATE_MARKED"] = $val;
     }
     if (array_key_exists("DATE_MARKED_TO", $arFilter)) {
         $val = $arFilter["DATE_MARKED_TO"];
         unset($arFilter["DATE_MARKED_TO"]);
         $arFilter["<=DATE_MARKED"] = $val;
     }
     if (array_key_exists("DATE_PAY_BEFORE_FROM", $arFilter)) {
         $val = $arFilter["DATE_PAY_BEFORE_FROM"];
         unset($arFilter["DATE_PAY_BEFORE_FROM"]);
         $arFilter[">=DATE_PAY_BEFORE"] = $val;
     }
     if (array_key_exists("DATE_PAY_BEFORE_TO", $arFilter)) {
         $val = $arFilter["DATE_PAY_BEFORE_TO"];
         unset($arFilter["DATE_PAY_BEFORE_TO"]);
         $arFilter["<=DATE_PAY_BEFORE"] = $val;
     }
     if (array_key_exists("DELIVERY_REQUEST_SENT", $arFilter)) {
         if ($arFilter["DELIVERY_REQUEST_SENT"] == "Y") {
             $arFilter["!DELIVERY_DATE_REQUEST"] = "";
         } else {
             $arFilter["+DELIVERY_DATE_REQUEST"] = "";
         }
         unset($arFilter["DELIVERY_REQUEST_SENT"]);
     }
     $callback = false;
     if (array_key_exists("CUSTOM_SUBQUERY", $arFilter)) {
         $callback = $arFilter["CUSTOM_SUBQUERY"];
         unset($arFilter["CUSTOM_SUBQUERY"]);
     }
     if (empty($arSelectFields)) {
         $arSelectFields = array("ID", "LID", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "CANCELED", "DATE_CANCELED", "EMP_CANCELED_ID", "REASON_CANCELED", "MARKED", "DATE_MARKED", "EMP_MARKED_ID", "REASON_MARKED", "STATUS_ID", "DATE_STATUS", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "EMP_STATUS_ID", "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "EMP_ALLOW_DELIVERY_ID", "DEDUCTED", "DATE_DEDUCTED", "EMP_DEDUCTED_ID", "REASON_UNDO_DEDUCTED", "RESERVED", "PRICE", "CURRENCY", "DISCOUNT_VALUE", "SUM_PAID", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "DATE_INSERT", "DATE_INSERT_FORMAT", "DATE_UPDATE", "USER_DESCRIPTION", "ADDITIONAL_INFO", "PS_STATUS", "PS_STATUS_CODE", "PS_STATUS_DESCRIPTION", "PS_STATUS_MESSAGE", "PS_SUM", "PS_CURRENCY", "PS_RESPONSE_DATE", "COMMENTS", "TAX_VALUE", "STAT_GID", "RECURRING_ID", "RECOUNT_FLAG", "USER_LOGIN", "USER_NAME", "USER_LAST_NAME", "USER_EMAIL", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE", "DELIVERY_DATE_REQUEST", "STORE_ID", "ORDER_TOPIC", "RESPONSIBLE_ID", "RESPONSIBLE_LOGIN", "RESPONSIBLE_NAME", "RESPONSIBLE_LAST_NAME", "RESPONSIBLE_SECOND_NAME", "RESPONSIBLE_EMAIL", "RESPONSIBLE_WORK_POSITION", "RESPONSIBLE_PERSONAL_PHOTO", "RESPONSIBLE_GROUP_ID", "DATE_PAY_BEFORE", "DATE_BILL", "ACCOUNT_NUMBER", "TRACKING_NUMBER", "XML_ID");
     } elseif (in_array("*", $arSelectFields)) {
         $arSelectFields = array("ID", "LID", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "CANCELED", "DATE_CANCELED", "EMP_CANCELED_ID", "REASON_CANCELED", "MARKED", "DATE_MARKED", "EMP_MARKED_ID", "REASON_MARKED", "STATUS_ID", "DATE_STATUS", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "EMP_STATUS_ID", "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "EMP_ALLOW_DELIVERY_ID", "DEDUCTED", "DATE_DEDUCTED", "EMP_DEDUCTED_ID", "REASON_UNDO_DEDUCTED", "RESERVED", "PRICE", "CURRENCY", "DISCOUNT_VALUE", "SUM_PAID", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "DATE_INSERT", "DATE_INSERT_FORMAT", "DATE_UPDATE", "USER_DESCRIPTION", "ADDITIONAL_INFO", "PS_STATUS", "PS_STATUS_CODE", "PS_STATUS_DESCRIPTION", "PS_STATUS_MESSAGE", "PS_SUM", "PS_CURRENCY", "PS_RESPONSE_DATE", "COMMENTS", "TAX_VALUE", "STAT_GID", "RECURRING_ID", "RECOUNT_FLAG", "USER_LOGIN", "USER_NAME", "USER_LAST_NAME", "USER_EMAIL", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE", "DELIVERY_DATE_REQUEST", "STORE_ID", "ORDER_TOPIC", "RESPONSIBLE_ID", "RESPONSIBLE_LOGIN", "RESPONSIBLE_NAME", "RESPONSIBLE_LAST_NAME", "RESPONSIBLE_SECOND_NAME", "RESPONSIBLE_EMAIL", "RESPONSIBLE_WORK_POSITION", "RESPONSIBLE_PERSONAL_PHOTO", "RESPONSIBLE_GROUP_ID", "DATE_PAY_BEFORE", "DATE_BILL", "ACCOUNT_NUMBER", "TRACKING_NUMBER", "XML_ID");
     }
     $maxLock = IntVal(COption::GetOptionString("sale", "MAX_LOCK_TIME", "60"));
     if (is_object($GLOBALS["USER"])) {
         $userID = IntVal($GLOBALS["USER"]->GetID());
     } else {
         $userID = 0;
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "O.ID", "TYPE" => "int"), "LID" => array("FIELD" => "O.LID", "TYPE" => "string"), "PERSON_TYPE_ID" => array("FIELD" => "O.PERSON_TYPE_ID", "TYPE" => "int"), "PAYED" => array("FIELD" => "O.PAYED", "TYPE" => "char"), "DATE_PAYED" => array("FIELD" => "O.DATE_PAYED", "TYPE" => "datetime"), "EMP_PAYED_ID" => array("FIELD" => "O.EMP_PAYED_ID", "TYPE" => "int"), "CANCELED" => array("FIELD" => "O.CANCELED", "TYPE" => "char"), "DATE_CANCELED" => array("FIELD" => "O.DATE_CANCELED", "TYPE" => "datetime"), "EMP_CANCELED_ID" => array("FIELD" => "O.EMP_CANCELED_ID", "TYPE" => "int"), "REASON_CANCELED" => array("FIELD" => "O.REASON_CANCELED", "TYPE" => "string"), "STATUS_ID" => array("FIELD" => "O.STATUS_ID", "TYPE" => "char"), "DATE_STATUS" => array("FIELD" => "O.DATE_STATUS", "TYPE" => "datetime"), "PAY_VOUCHER_NUM" => array("FIELD" => "O.PAY_VOUCHER_NUM", "TYPE" => "string"), "PAY_VOUCHER_DATE" => array("FIELD" => "O.PAY_VOUCHER_DATE", "TYPE" => "date"), "EMP_STATUS_ID" => array("FIELD" => "O.EMP_STATUS_ID", "TYPE" => "int"), "PRICE_DELIVERY" => array("FIELD" => "O.PRICE_DELIVERY", "TYPE" => "double"), "ALLOW_DELIVERY" => array("FIELD" => "O.ALLOW_DELIVERY", "TYPE" => "char"), "DATE_ALLOW_DELIVERY" => array("FIELD" => "O.DATE_ALLOW_DELIVERY", "TYPE" => "datetime"), "EMP_ALLOW_DELIVERY_ID" => array("FIELD" => "O.EMP_ALLOW_DELIVERY_ID", "TYPE" => "int"), "DEDUCTED" => array("FIELD" => "O.DEDUCTED", "TYPE" => "char"), "DATE_DEDUCTED" => array("FIELD" => "O.DATE_DEDUCTED", "TYPE" => "datetime"), "EMP_DEDUCTED_ID" => array("FIELD" => "O.EMP_DEDUCTED_ID", "TYPE" => "int"), "REASON_UNDO_DEDUCTED" => array("FIELD" => "O.REASON_UNDO_DEDUCTED", "TYPE" => "string"), "RESERVED" => array("FIELD" => "O.RESERVED", "TYPE" => "char"), "MARKED" => array("FIELD" => "O.MARKED", "TYPE" => "char"), "DATE_MARKED" => array("FIELD" => "O.DATE_MARKED", "TYPE" => "datetime"), "EMP_MARKED_ID" => array("FIELD" => "O.EMP_MARKED_ID", "TYPE" => "int"), "REASON_MARKED" => array("FIELD" => "O.REASON_MARKED", "TYPE" => "string"), "PRICE" => array("FIELD" => "O.PRICE", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "O.CURRENCY", "TYPE" => "string"), "DISCOUNT_VALUE" => array("FIELD" => "O.DISCOUNT_VALUE", "TYPE" => "double"), "SUM_PAID" => array("FIELD" => "O.SUM_PAID", "TYPE" => "double"), "USER_ID" => array("FIELD" => "O.USER_ID", "TYPE" => "int"), "PAY_SYSTEM_ID" => array("FIELD" => "O.PAY_SYSTEM_ID", "TYPE" => "int"), "DELIVERY_ID" => array("FIELD" => "O.DELIVERY_ID", "TYPE" => "string"), "DATE_INSERT" => array("FIELD" => "O.DATE_INSERT", "TYPE" => "datetime"), "DATE_INSERT_FORMAT" => array("FIELD" => "O.DATE_INSERT", "TYPE" => "datetime"), "DATE_UPDATE" => array("FIELD" => "O.DATE_UPDATE", "TYPE" => "datetime"), "USER_DESCRIPTION" => array("FIELD" => "O.USER_DESCRIPTION", "TYPE" => "string"), "ADDITIONAL_INFO" => array("FIELD" => "O.ADDITIONAL_INFO", "TYPE" => "string"), "PS_STATUS" => array("FIELD" => "O.PS_STATUS", "TYPE" => "char"), "PS_STATUS_CODE" => array("FIELD" => "O.PS_STATUS_CODE", "TYPE" => "string"), "PS_STATUS_DESCRIPTION" => array("FIELD" => "O.PS_STATUS_DESCRIPTION", "TYPE" => "string"), "PS_STATUS_MESSAGE" => array("FIELD" => "O.PS_STATUS_MESSAGE", "TYPE" => "string"), "PS_SUM" => array("FIELD" => "O.PS_SUM", "TYPE" => "double"), "PS_CURRENCY" => array("FIELD" => "O.PS_CURRENCY", "TYPE" => "string"), "PS_RESPONSE_DATE" => array("FIELD" => "O.PS_RESPONSE_DATE", "TYPE" => "datetime"), "COMMENTS" => array("FIELD" => "O.COMMENTS", "TYPE" => "string"), "TAX_VALUE" => array("FIELD" => "O.TAX_VALUE", "TYPE" => "double"), "STAT_GID" => array("FIELD" => "O.STAT_GID", "TYPE" => "string"), "RECURRING_ID" => array("FIELD" => "O.RECURRING_ID", "TYPE" => "int"), "RECOUNT_FLAG" => array("FIELD" => "O.RECOUNT_FLAG", "TYPE" => "char"), "AFFILIATE_ID" => array("FIELD" => "O.AFFILIATE_ID", "TYPE" => "int"), "LOCKED_BY" => array("FIELD" => "O.LOCKED_BY", "TYPE" => "int"), "LOCK_STATUS" => array("FIELD" => "if(DATE_LOCK is null, 'green', if(DATE_ADD(DATE_LOCK, interval " . $maxLock . " MINUTE)<now(), 'green', if(LOCKED_BY=" . $userID . ", 'yellow', 'red')))", "TYPE" => "string"), "LOCK_USER_NAME" => array("FIELD" => "concat('(',UL.LOGIN,') ',UL.NAME,' ',UL.LAST_NAME)", "FROM" => "LEFT JOIN b_user UL ON (O.LOCKED_BY = UL.ID)", "TYPE" => "string"), "DELIVERY_DOC_NUM" => array("FIELD" => "O.DELIVERY_DOC_NUM", "TYPE" => "string"), "DELIVERY_DOC_DATE" => array("FIELD" => "O.DELIVERY_DOC_DATE", "TYPE" => "date"), "UPDATED_1C" => array("FIELD" => "O.UPDATED_1C", "TYPE" => "string"), "STORE_ID" => array("FIELD" => "O.STORE_ID", "TYPE" => "int"), "ORDER_TOPIC" => array("FIELD" => "O.ORDER_TOPIC", "TYPE" => "string"), "RESPONSIBLE_ID" => array("FIELD" => "O.RESPONSIBLE_ID", "TYPE" => "int"), "DATE_PAY_BEFORE" => array("FIELD" => "O.DATE_PAY_BEFORE", "TYPE" => "date"), "DATE_BILL" => array("FIELD" => "O.DATE_BILL", "TYPE" => "date"), "ACCOUNT_NUMBER" => array("FIELD" => "O.ACCOUNT_NUMBER", "TYPE" => "string"), "TRACKING_NUMBER" => array("FIELD" => "O.TRACKING_NUMBER", "TYPE" => "string"), "XML_ID" => array("FIELD" => "O.XML_ID", "TYPE" => "string"), "ID_1C" => array("FIELD" => "O.ID_1C", "TYPE" => "string"), "VERSION_1C" => array("FIELD" => "O.VERSION_1C", "TYPE" => "string"), "VERSION" => array("FIELD" => "O.VERSION", "TYPE" => "int"), "EXTERNAL_ORDER" => array("FIELD" => "O.EXTERNAL_ORDER", "TYPE" => "string"), "NAME_SEARCH" => array("FIELD" => "U.NAME, U.LAST_NAME, U.SECOND_NAME, U.EMAIL, U.LOGIN, U.ID", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_GROUP_ID" => array("FIELD" => "UG.GROUP_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_user_group UG ON (UG.USER_ID = O.USER_ID)"), "RESPONSIBLE_LOGIN" => array("FIELD" => "UR.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_NAME" => array("FIELD" => "UR.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_LAST_NAME" => array("FIELD" => "UR.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_SECOND_NAME" => array("FIELD" => "UR.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_EMAIL" => array("FIELD" => "UR.EMAIL", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_WORK_POSITION" => array("FIELD" => "UR.WORK_POSITION", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_PERSONAL_PHOTO" => array("FIELD" => "UR.PERSONAL_PHOTO", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "BUYER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "BASKET_ID" => array("FIELD" => "B.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_PRODUCT_ID" => array("FIELD" => "B.PRODUCT_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_PRODUCT_XML_ID" => array("FIELD" => "B.PRODUCT_XML_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_MODULE" => array("FIELD" => "B.MODULE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_NAME" => array("FIELD" => "B.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_QUANTITY" => array("FIELD" => "B.QUANTITY", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_PRICE" => array("FIELD" => "B.PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_CURRENCY" => array("FIELD" => "B.CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_DISCOUNT_PRICE" => array("FIELD" => "B.DISCOUNT_PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_DISCOUNT_NAME" => array("FIELD" => "B.DISCOUNT_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_DISCOUNT_VALUE" => array("FIELD" => "B.DISCOUNT_VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_DISCOUNT_COUPON" => array("FIELD" => "B.DISCOUNT_COUPON", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_VAT_RATE" => array("FIELD" => "B.VAT_RATE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_RECOMMENDATION" => array("FIELD" => "B.RECOMMENDATION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_PRICE_TOTAL" => array("FIELD" => "(B.PRICE * B.QUANTITY)", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "STATUS_PERMS_GROUP_ID" => array("FIELD" => "SS2G.GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_VIEW" => array("FIELD" => "SS2G.PERM_VIEW", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_CANCEL" => array("FIELD" => "SS2G.PERM_CANCEL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_MARK" => array("FIELD" => "SS2G.PERM_MARK", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_DELIVERY" => array("FIELD" => "SS2G.PERM_DELIVERY", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_DEDUCTION" => array("FIELD" => "SS2G.PERM_DEDUCTION", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_PAYMENT" => array("FIELD" => "SS2G.PERM_PAYMENT", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_STATUS" => array("FIELD" => "SS2G.PERM_STATUS", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_STATUS_FROM" => array("FIELD" => "SS2G.PERM_STATUS_FROM", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_UPDATE" => array("FIELD" => "SS2G.PERM_UPDATE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_DELETE" => array("FIELD" => "SS2G.PERM_DELETE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "PROPERTY_ID" => array("FIELD" => "SP.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_ORDER_PROPS_ID" => array("FIELD" => "SP.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_NAME" => array("FIELD" => "SP.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_VALUE" => array("FIELD" => "SP.VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_CODE" => array("FIELD" => "SP.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_VAL_BY_CODE" => array("FIELD" => "SP.VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "COMPLETE_ORDERS" => array("WHERE" => array(self, "ProcessCompleteOrdersParam")), "DELIVERY_DATE_REQUEST" => array("FIELD" => "OD.DATE_REQUEST", "TYPE" => "datetime", "FROM" => "LEFT JOIN b_sale_order_delivery OD ON (O.ID = OD.ORDER_ID)"));
     // <-- FIELDS
     $arPropIDsTmp = array();
     foreach ($arOrder as $key => $value) {
         CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp);
     }
     foreach ($arFilter as $key => $value) {
         $arKeyTmp = CSaleOrder::GetFilterOperation($key);
         $key = $arKeyTmp["FIELD"];
         CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp);
     }
     if (is_array($arGroupBy)) {
         foreach ($arGroupBy as $key => $value) {
             CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp);
         }
     }
     foreach ($arSelectFields as $key => $value) {
         CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp);
     }
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql, $callback, $arOptions);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     $r = $obUserFieldsSql->GetFilter();
     $strSqlUFFilter = '';
     if (strlen($r) > 0) {
         $strSqlUFFilter = " (" . $r . ") ";
     }
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . $obUserFieldsSql->GetSelect() . " " . "FROM b_sale_order O " . "\t" . $arSqls["FROM"] . " " . $obUserFieldsSql->GetJoin("O.ID") . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0) {
             $strSql .= " AND " . $strSqlUFFilter . " ";
         } elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0) {
             $strSql .= " WHERE " . $strSqlUFFilter . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER"));
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . $obUserFieldsSql->GetSelect() . " " . "FROM b_sale_order O " . "\t" . $arSqls["FROM"] . " " . $obUserFieldsSql->GetJoin("O.ID") . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0) {
         $strSql .= " AND " . $strSqlUFFilter . " ";
     } elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0) {
         $strSql .= " WHERE " . $strSqlUFFilter . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_order O " . "\t" . $arSqls["FROM"] . " " . $obUserFieldsSql->GetJoin("O.ID") . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0) {
             $strSql_tmp .= " AND " . $strSqlUFFilter . " ";
         } elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0) {
             $strSql_tmp .= " WHERE " . $strSqlUFFilter . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER"));
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER"));
     }
     return $dbRes;
 }
Example #27
0
	/**
	 * <p>Функция возвращает результат выборки записей из служб доставки в соответствии со своими параметрами. </p>
	 *
	 *
	 *
	 *
	 * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие
	 * записи. Массив имеет вид: <pre class="syntax">array(<br>"название_поля1" =&gt;
	 * "направление_сортировки1",<br>"название_поля2" =&gt;
	 * "направление_сортировки2",<br>. . .<br>)</pre> В качестве
	 * "название_поля<i>N</i>" может стоять любое поле корзины, а в качестве
	 * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по
	 * возрастанию) и "<i>DESC</i>" (по убыванию). <br><br> Если массив сортировки
	 * имеет несколько элементов, то результирующий набор сортируется
	 * последовательно по каждому элементу (т.е. сначала сортируется по
	 * первому элементу, потом результат сортируется по второму и т.д.). 
	 * <br><br> Значение по умолчанию - пустой массив array() - означает, что
	 * результат отсортирован не будет.
	 *
	 *
	 *
	 * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи службы
	 * доставки. Массив имеет вид: <pre
	 * class="syntax">array(<br>"[модификатор1][оператор1]название_поля1" =&gt;
	 * "значение1",<br>"[модификатор2][оператор2]название_поля2" =&gt;
	 * "значение2",<br>. . .<br>)</pre> Удовлетворяющие фильтру записи
	 * возвращаются в результате, а записи, которые не удовлетворяют
	 * условиям фильтра, отбрасываются. <br><br> Допустимыми являются
	 * следующие модификаторы: <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> -
	 * значения null, 0 и пустая строка так же удовлетворяют условиям
	 * фильтра.</li> </ul> Допустимыми являются следующие операторы: <ul> <li>
	 * <b>&gt;= </b> - значение поля больше или равно передаваемой в фильтр
	 * величины;</li> <li> <b>&gt;</b> - значение поля строго больше передаваемой
	 * в фильтр величины;</li> <li> <b>&lt;=</b> - значение поля меньше или равно
	 * передаваемой в фильтр величины;</li> <li> <b>&lt;</b> - значение поля
	 * строго меньше передаваемой в фильтр величины;</li> <li> <b>@</b> -
	 * значение поля находится в передаваемом в фильтр разделенном
	 * запятой списке значений;</li> <li> <b>~</b> - значение поля проверяется на
	 * соответствие передаваемому в фильтр шаблону;</li> <li> <b>%</b> -
	 * значение поля проверяется на соответствие передаваемой в фильтр
	 * строке в соответствии с языком запросов.</li> </ul> В качестве
	 * "название_поляX" может стоять любое поле корзины. <br><br> Пример
	 * фильтра: <pre class="syntax">array("+&lt;=WEIGHT_FROM" =&gt; 1000)</pre> Этот фильтр означает
	 * "выбрать все записи, в которых значение в поле WEIGHT_FROM (вес от)
	 * меньше либо равно 1000 или значение не установлено (null или ноль)".
	 * <br><br> Значение по умолчанию - пустой массив array() - означает, что
	 * результат отфильтрован не будет.
	 *
	 *
	 *
	 * @param array $arGroupBy = false Массив полей, по которым группируются записи служб доставки.
	 * Массив имеет вид: <pre class="syntax">array("название_поля1",<br>
	 * "группирующая_функция2" =&gt; "название_поля2", ...)</pre> В качестве
	 * "название_поля<i>N</i>" может стоять любое поле служб доставки. В
	 * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> -
	 * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li>
	 * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> -
	 * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление
	 * суммы.</li> </ul> Если массив пустой, то функция вернет число записей,
	 * удовлетворяющих фильтру. <br><br> Значение по умолчанию - <i>false</i> -
	 * означает, что результат группироваться не будет.
	 *
	 *
	 *
	 * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul>
	 * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет
	 * ограничено сверху значением этого ключа;</li> <li> любой ключ,
	 * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего
	 * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что
	 * параметров выборки нет.
	 *
	 *
	 *
	 * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно
	 * указать только те поля, которые необходимы. Если в массиве
	 * присутствует значение "*", то будут возвращены все доступные поля.
	 * <br><br> Значение по умолчанию - пустой массив array() - означает, что
	 * будут возвращены все поля основной таблицы запроса.
	 *
	 *
	 *
	 * @return CDBResult <p>Возвращается объект класса CDBResult, содержащий набор
	 * ассоциативных массивов параметров доставки с ключами:</p><table
	 * width="100%" class="tnormal"><tbody> <tr> <th width="15%">Ключ</th> <th>Описание</th> </tr> <tr> <td>ID</td>
	 * <td>Код службы доставки.</td> </tr> <tr> <td>NAME</td> <td>Название доставки.</td>
	 * </tr> <tr> <td>LID</td> <td>Код сайта, к которому привязана эта доставка.</td>
	 * </tr> <tr> <td>PERIOD_FROM</td> <td>Минимальный срок доставки.</td> </tr> <tr> <td>PERIOD_TO</td>
	 * <td>Максимальный срок доставки.</td> </tr> <tr> <td>PERIOD_TYPE</td> <td>Единица
	 * измерения срока: D - дни, H - часы, M - месяцы.</td> </tr> <tr> <td>WEIGHT_FROM</td>
	 * <td>Минимальный вес заказа, для которого возможна эта доставка
	 * (единица измерения едина на сайте).</td> </tr> <tr> <td>WEIGHT_TO</td>
	 * <td>Максимальный вес заказа, для которого возможна эта доставка
	 * (единица измерения едина на сайте).</td> </tr> <tr> <td>ORDER_PRICE_FROM</td>
	 * <td>Минимальная стоимость заказа, для которой возможна эта
	 * доставка.</td> </tr> <tr> <td>ORDER_PRICE_TO</td> <td>Максимальная стоимость заказа,
	 * для которой возможна эта доставка.</td> </tr> <tr> <td>ORDER_CURRENCY</td> <td>Валюта
	 * ограничений по стоимости.</td> </tr> <tr> <td>ACTIVE</td> <td>Флаг (Y/N) активности
	 * доставки.</td> </tr> <tr> <td>PRICE</td> <td>Стоимость доставки.</td> </tr> <tr>
	 * <td>CURRENCY</td> <td>Валюта стоимости доставки.</td> </tr> <tr> <td>SORT</td> <td>Индекс
	 * сортировки.</td> </tr> <tr> <td>DESCRIPTION</td> <td>Описание доставки.</td> </tr>
	 * </tbody></table><p>Если в качестве параметра <b> arGroupBy</b> передается пустой
	 * массив, то функция вернет число записей, удовлетворяющих
	 * фильтру.</p><a name="examples"></a>
	 *
	 *
	 * <h4>Example</h4> 
	 * <pre>
	 * &lt;?<br>// Выберем отсортированные по индексу сортировки, а потом (при равных индексах) по имени<br>// активные службы доставки, доступные для текущего сайта, заказа с весом $ORDER_WEIGHT и <br>// стоимостью $ORDER_PRICE (в базовой валюте текущего сайта), доставки в <br>// местоположение $DELIVERY_LOCATION<br>$db_dtype = CSaleDelivery::GetList(<br>    array(<br>            "SORT" =&gt; "ASC",<br>            "NAME" =&gt; "ASC"<br>        ),<br>    array(<br>            "LID" =&gt; SITE_ID,<br>            "+&lt;=WEIGHT_FROM" =&gt; $ORDER_WEIGHT,<br>            "+&gt;=WEIGHT_TO" =&gt; $ORDER_WEIGHT,<br>            "+&lt;=ORDER_PRICE_FROM" =&gt; $ORDER_PRICE,<br>            "+&gt;=ORDER_PRICE_TO" =&gt; $ORDER_PRICE,<br>            "ACTIVE" =&gt; "Y",<br>            "LOCATION" =&gt; $DELIVERY_LOCATION<br>        ),<br>    false,<br>    false,<br>    array()<br>);<br>if ($ar_dtype = $db_dtype-&gt;Fetch())<br>{<br>   echo "Вам доступны следующие способы доставки:&lt;br&gt;";<br>   do<br>   {<br>      echo $ar_dtype["NAME"]." - стоимость ".CurrencyFormat($ar_dtype["PRICE"], $ar_dtype["CURRENCY"])."&lt;br&gt;";<br>   }<br>   while ($ar_dtype = $db_dtype-&gt;Fetch());<br>}<br>else<br>{<br>   echo "Доступных способов доставки не найдено&lt;br&gt;";<br>}<br>?&gt;
	 * </pre>
	 *
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaledelivery/csaledelivery__getlist.28cc1782.php
	 * @author Bitrix
	 */
	public static function GetList($arOrder = array("SORT" => "ASC", "NAME" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
	{
		global $DB;

		if (isset($arFilter["WEIGHT"]) && DoubleVal($arFilter["WEIGHT"]) > 0)
		{
			// changed by Sigurd, 2007-08-16
			if (!isset($arFilter["WEIGHT_FROM"]) || DoubleVal($arFilter["WEIGHT"]) > DoubleVal($arFilter["WEIGHT_FROM"]))
				$arFilter["+<=WEIGHT_FROM"] = $arFilter["WEIGHT"];
			if (!isset($arFilter["WEIGHT_TO"]) || DoubleVal($arFilter["WEIGHT"]) < DoubleVal($arFilter["WEIGHT_TO"]))
				$arFilter["+>=WEIGHT_TO"] = $arFilter["WEIGHT"];
		}

		if (isset($arFilter["ORDER_PRICE"]) && IntVal($arFilter["ORDER_PRICE"]) > 0)
		{
			if (!isset($arFilter["ORDER_PRICE_FROM"]) || IntVal($arFilter["ORDER_PRICE"]) > IntVal($arFilter["ORDER_PRICE_FROM"]))
				$arFilter["+<=ORDER_PRICE_FROM"] = $arFilter["ORDER_PRICE"];
			if (!isset($arFilter["ORDER_PRICE_TO"]) || IntVal($arFilter["ORDER_PRICE"]) < IntVal($arFilter["ORDER_PRICE_TO"]))
				$arFilter["+>=ORDER_PRICE_TO"] = $arFilter["ORDER_PRICE"];
		}

		if (count($arSelectFields) <= 0)
			$arSelectFields = array("ID", "NAME", "LID", "PERIOD_FROM", "PERIOD_TO", "PERIOD_TYPE", "WEIGHT_FROM", "WEIGHT_TO", "ORDER_PRICE_FROM", "ORDER_PRICE_TO", "ORDER_CURRENCY", "ACTIVE", "PRICE", "CURRENCY", "SORT", "DESCRIPTION", "LOGOTIP", "STORE");

		// FIELDS -->
		$arFields = array(
				"ID" => array("FIELD" => "D.ID", "TYPE" => "int"),
				"NAME" => array("FIELD" => "D.NAME", "TYPE" => "string"),
				"LID" => array("FIELD" => "D.LID", "TYPE" => "string"),
				"PERIOD_FROM" => array("FIELD" => "D.PERIOD_FROM", "TYPE" => "int"),
				"PERIOD_TO" => array("FIELD" => "D.PERIOD_TO", "TYPE" => "int"),
				"PERIOD_TYPE" => array("FIELD" => "D.PERIOD_TYPE", "TYPE" => "char"),
				"WEIGHT_FROM" => array("FIELD" => "D.WEIGHT_FROM", "TYPE" => "double"),
				"WEIGHT_TO" => array("FIELD" => "D.WEIGHT_TO", "TYPE" => "double"),
				"ORDER_PRICE_FROM" => array("FIELD" => "D.ORDER_PRICE_FROM", "TYPE" => "double", "WHERE" => array("CSaleDelivery", "PrepareCurrency4Where")),
				"ORDER_PRICE_TO" => array("FIELD" => "D.ORDER_PRICE_TO", "TYPE" => "double", "WHERE" => array("CSaleDelivery", "PrepareCurrency4Where")),
				"ORDER_CURRENCY" => array("FIELD" => "D.ORDER_CURRENCY", "TYPE" => "string"),
				"ACTIVE" => array("FIELD" => "D.ACTIVE", "TYPE" => "char"),
				"PRICE" => array("FIELD" => "D.PRICE", "TYPE" => "double"),
				"CURRENCY" => array("FIELD" => "D.CURRENCY", "TYPE" => "string"),
				"SORT" => array("FIELD" => "D.SORT", "TYPE" => "int"),
				"DESCRIPTION" => array("FIELD" => "D.DESCRIPTION", "TYPE" => "string"),
				"LOCATION" => array("FIELD" => "D.DESCRIPTION", "WHERE_ONLY" => "Y", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_delivery2location D2L ON (D.ID = D2L.DELIVERY_ID) LEFT JOIN b_sale_location2location_group L2LG ON (D2L.LOCATION_TYPE = 'G' AND D2L.LOCATION_ID = L2LG.LOCATION_GROUP_ID)", "WHERE" => array("CSaleDelivery", "PrepareLocation4Where")),
				"LOGOTIP" => array("FIELD" => "D.LOGOTIP", "TYPE" => "int"),
				"STORE" => array("FIELD" => "D.STORE", "TYPE" => "string"),
			);
		// <-- FIELDS

		$arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);

		$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);

		if (is_array($arGroupBy) && count($arGroupBy)==0)
		{
			$strSql =
				"SELECT ".$arSqls["SELECT"]." ".
				"FROM b_sale_delivery D ".
				"	".$arSqls["FROM"]." ";
			if (strlen($arSqls["WHERE"]) > 0)
				$strSql .= "WHERE ".$arSqls["WHERE"]." ";
			if (strlen($arSqls["GROUPBY"]) > 0)
				$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";

			//echo "!1!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			if ($arRes = $dbRes->Fetch())
				return $arRes["CNT"];
			else
				return False;
		}

		$strSql =
			"SELECT ".$arSqls["SELECT"]." ".
			"FROM b_sale_delivery D ".
			"	".$arSqls["FROM"]." ";
		if (strlen($arSqls["WHERE"]) > 0)
			$strSql .= "WHERE ".$arSqls["WHERE"]." ";
		if (strlen($arSqls["GROUPBY"]) > 0)
			$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
		if (strlen($arSqls["ORDERBY"]) > 0)
			$strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";

		if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])<=0)
		{
			$strSql_tmp =
				"SELECT COUNT('x') as CNT ".
				"FROM b_sale_delivery D ".
				"	".$arSqls["FROM"]." ";
			if (strlen($arSqls["WHERE"]) > 0)
				$strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
			if (strlen($arSqls["GROUPBY"]) > 0)
				$strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";

			//echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";

			$dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			$cnt = 0;
			if (strlen($arSqls["GROUPBY"]) <= 0)
			{
				if ($arRes = $dbRes->Fetch())
					$cnt = $arRes["CNT"];
			}
			else
			{
				// FOR MYSQL!!! ANOTHER CODE FOR ORACLE
				$cnt = $dbRes->SelectedRowsCount();
			}

			$dbRes = new CDBResult();

			//echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
		}
		else
		{
			if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])>0)
				$strSql .= "LIMIT ".IntVal($arNavStartParams["nTopCount"]);

			//echo "!3!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
		}

		return $dbRes;
	}
Example #28
0
 function GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     if (array_key_exists("DATE_FROM", $arFilter)) {
         $val = $arFilter["DATE_FROM"];
         unset($arFilter["DATE_FROM"]);
         $arFilter[">=DATE_CREATE"] = $val;
     }
     if (array_key_exists("DATE_TO", $arFilter)) {
         $val = $arFilter["DATE_TO"];
         unset($arFilter["DATE_TO"]);
         $arFilter["<=DATE_CREATE"] = $val;
     }
     if (count($arSelectFields) <= 0) {
         $arSelectFields = array("ID", "BASKET_ID", "BARCODE", "STORE_ID", "QUANTITY", "DATE_CREATE", "DATE_MODIFY", "CREATED_BY", "MODIFIED_BY");
     } elseif (in_array("*", $arSelectFields)) {
         $arSelectFields = array("ID", "BASKET_ID", "BARCODE", "STORE_ID", "QUANTITY", "DATE_CREATE", "DATE_MODIFY", "CREATED_BY", "MODIFIED_BY");
     }
     // FIELDS -->
     $arFields = array("ID" => array("FIELD" => "SB.ID", "TYPE" => "int"), "BASKET_ID" => array("FIELD" => "SB.BASKET_ID", "TYPE" => "int"), "BARCODE" => array("FIELD" => "SB.BARCODE", "TYPE" => "string"), "STORE_ID" => array("FIELD" => "SB.STORE_ID", "TYPE" => "int"), "QUANTITY" => array("FIELD" => "SB.QUANTITY", "TYPE" => "double"), "DATE_CREATE" => array("FIELD" => "SB.DATE_CREATE", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "SB.CREATED_BY", "TYPE" => "int"), "DATE_MODIFY" => array("FIELD" => "SB.DATE_MODIFY", "TYPE" => "datetime"), "MODIFIED_BY" => array("FIELD" => "SB.MODIFIED_BY", "TYPE" => "int"));
     // <-- FIELDS
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && count($arGroupBy) == 0) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_store_barcode SB " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_store_barcode SB " . "\t" . $arSqls["FROM"] . " ";
     if (strlen($arSqls["WHERE"]) > 0) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (strlen($arSqls["GROUPBY"]) > 0) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (strlen($arSqls["ORDERBY"]) > 0) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_store_barcode SB " . "\t" . $arSqls["FROM"] . " ";
         if (strlen($arSqls["WHERE"]) > 0) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (strlen($arSqls["GROUPBY"]) > 0) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (strlen($arSqls["GROUPBY"]) <= 0) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             // FOR MYSQL!!! ANOTHER CODE FOR ORACLE
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]);
         }
         //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }
Example #29
0
 function GetDiscountGroupList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     global $DB;
     $arFields = array("ID" => array("FIELD" => "DG.ID", "TYPE" => "int"), "DISCOUNT_ID" => array("FIELD" => "DG.DISCOUNT_ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "DG.GROUP_ID", "TYPE" => "int"));
     $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
     $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
     if (is_array($arGroupBy) && empty($arGroupBy)) {
         $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_discount_group DG " . "\t" . $arSqls["FROM"] . " ";
         if (!empty($arSqls["WHERE"])) {
             $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($arRes = $dbRes->Fetch()) {
             return $arRes["CNT"];
         } else {
             return False;
         }
     }
     $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_discount_group DG " . "\t" . $arSqls["FROM"] . " ";
     if (!empty($arSqls["WHERE"])) {
         $strSql .= "WHERE " . $arSqls["WHERE"] . " ";
     }
     if (!empty($arSqls["GROUPBY"])) {
         $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
     }
     if (!empty($arSqls["ORDERBY"])) {
         $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " ";
     }
     if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) {
         $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_discount_group DG " . "\t" . $arSqls["FROM"] . " ";
         if (!empty($arSqls["WHERE"])) {
             $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " ";
         }
         if (!empty($arSqls["GROUPBY"])) {
             $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " ";
         }
         $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $cnt = 0;
         if (empty($arSqls["GROUPBY"])) {
             if ($arRes = $dbRes->Fetch()) {
                 $cnt = $arRes["CNT"];
             }
         } else {
             $cnt = $dbRes->SelectedRowsCount();
         }
         $dbRes = new CDBResult();
         $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
     } else {
         if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) {
             $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]);
         }
         $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     return $dbRes;
 }