Перейти к содержимому


Поиск заказа по дополнительному полю


  • Вы не можете ответить в тему
Сообщений в теме: 2

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 March 2016 - 02:48 PM

Дополнение позволяет искать заказы по содержимому дополнительных полей (см. раздел "Форма регистрации" в админке).
Писалось под конкретное дополнительное поле "Телефон", т.к. у заказчика оно было одно, но подходит для поиска по любому полю - индекс, девичья фамилия матери и т.п.

при одном доп.поле:
Прикрепленный файл  1.jpg   12.41К   4 Количество загрузок:

при нескольких:
Прикрепленный файл  2.jpg   13.21К   4 Количество загрузок:

Установка:
==========

1. в файле order_functions.php в функции ordGetOrders

перед


if ( isset($callBackParam["orderStatuses"]) )


вставляем


# BEGIN поиск по дополнительному полю
if ( isset($callBackParam['reg_field_id']) && isset($callBackParam['reg_field_value']))
{
#$where = " WHERE reg_field_ID=".$callBackParam['reg_field_id']." AND REPLACE(REPLACE(reg_field_value,'-',''),' ','') LIKE '%".$callBackParam['reg_field_value']."%'";
$where = " WHERE reg_field_ID=".$callBackParam['reg_field_id']." AND reg_field_value LIKE '%".$callBackParam['reg_field_value']."%'";
$select_registered = "SELECT customerID FROM ".CUSTOMER_REG_FIELDS_VALUES_TABLE.$where;
$select_quick = "SELECT orderID FROM ".CUSTOMER_REG_FIELDS_VALUES_TABLE_QUICKREG.$where;
$where_clause .= " customerID IN ($select_registered) OR orderID IN ($select_quick) AND customerID=0";
}
# END поиск по дополнительному полю



2. в файле custord_new_orders.php

2.1. в функции _setCallBackParamsToSearchOrders

в самый конец вставляем


# BEGIN поиск по дополнительному полю
else if ( $_GET["order_search_type"] == "reg_field" )
{
$callBackParam["reg_field_id"] = (int)$_GET["reg_field_id"];
$callBackParam["reg_field_value"] = trim($_GET["reg_field_value"]);
}
# END поиск по дополнительному полю


2.2. в функциях _getReturnUrl, _getUrlToNavigate и _getUrlToSort

после


$url .= "&orderID_textbox=".$_GET["orderID_textbox"];


вставляем


# BEGIN поиск по дополнительному полю
if (isset($_GET["reg_field_id"])) $url .= "&reg_field_id=".$_GET["reg_field_id"];
if (isset($_GET["reg_field_value"])) $url .= "&reg_field_value=".$_GET["reg_field_value"];
# END поиск по дополнительному полю



3. в файле menu.tpl.html

3.1. перед


<tr>
<td align="left"><input type=radio class="round" name=order_search_type id=order_search_type2 value='SearchByStatusID'


вставляем


{* BEGIN поиск по дополнительному полю *}
{assign var='reg_fields' value=0|GetRegFields}
{if $reg_fields|@count}
<tr>
<td align="left" width="16" valign="middle">
<input type=radio class="round" name=order_search_type id=order_search_type3 value='reg_field'{if $order_search_type == 'reg_field'} checked{/if} onclick='order_search_typeClickHandler()'>
</td>
<td valign="middle" height="20">Поиск по доп.полю</td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="left">
{if $reg_fields|@count==1}
<input type='hidden' name='reg_field_id' id='reg_field_id' value='{$reg_fields[0].reg_field_ID}'>{$reg_fields[0].reg_field_name}<br>
{else}
<select name='reg_field_id' id='reg_field_id' style='width:126px;'>
{foreach from=$reg_fields item=reg_field}
<option value="{$reg_field.reg_field_ID}"{if $reg_field.reg_field_ID==$smarty.get.reg_field_ID} selected{/if}>{$reg_field.reg_field_name}</option>
{/foreach}
</select>
{/if}
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="left"><input type=text name='reg_field_value' id='reg_field_value' value='{$smarty.get.reg_field_value}' class="prc" size="21"></td>
</tr>
<tr><td height="6" colspan="2"></td></tr>
{/if}
{* END поиск по дополнительному полю *}


3.2. после


document.getElementById('id_checkall').disabled = true;


вставляем


// BEGIN поиск по дополнительному полю
document.getElementById('reg_field_id').disabled = true;
document.getElementById('reg_field_value').disabled = true;
// END поиск по дополнительному полю


3.3. после


document.getElementById('id_checkall').disabled = false;


вставляем


// BEGIN поиск по дополнительному полю
document.getElementById('reg_field_id').disabled = true;
document.getElementById('reg_field_value').disabled = true;
// END поиск по дополнительному полю


3.4. перед


{literal}}{/literal}
order_search_typeClickHandler();


вставляем


// BEGIN поиск по дополнительному полю
else if ( document.getElementById('order_search_type3').checked )
{literal}{{/literal}
{section name=i loop=$order_statuses}
document.getElementById('checkbox_order_status_{$order_statuses[i].statusID}').disabled = true;
{/section}
document.getElementById('id_checkall').disabled = true;
document.getElementById('orderID_textbox').disabled = true;
document.getElementById('reg_field_id').disabled = false;
document.getElementById('reg_field_value').disabled = false;
{literal}}{/literal}
// END поиск по дополнительному полю

  • 5
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 10 March 2016 - 10:50 PM

badisoft,
а если не будет ни одного дополнительного поля?
Вот это

// BEGIN поиск по дополнительному полю
document.getElementById('reg_field_id').disabled = true;
document.getElementById('reg_field_value').disabled = true;
// END поиск по дополнительному полю

вызовет ошибку, так как элемента с id=reg_field_id не существует.
Нужно сначала проверить есть ли элемент
		  
// BEGIN поиск по дополнительному полю
if ( document.getElementById('reg_field_id') != null )
{literal}{{/literal}
document.getElementById('reg_field_id').disabled = true;
document.getElementById('reg_field_value').disabled = true;
{literal}}{/literal}
// END поиск по дополнительному полю

и немного косметики, чтобы не целиться в радиокнопку
<td valign="middle" height="20"><label for=order_search_type3>Поиск по доп. полю</label></td>

  • 1

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 11 March 2016 - 01:15 AM

а если не будет ни одного дополнительного поля?

то незачем ставить это дополнение :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)