Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.


 
ФорумФорум  Последние изображенияПоследние изображения  ПоискПоиск  РегистрацияРегистрация  Вход  
Поиск
 
 

Результаты :
 
Rechercher Расширенный поиск
Последние темы
» Подтверждение о прочтении
Возможность указывать диапазон дат Emptyавтор worker8281 Сб Дек 27, 2014 1:05 pm

» Проблема с сессией
Возможность указывать диапазон дат Emptyавтор Murphy Ср Дек 03, 2014 5:20 pm

» Нужнга настройка SugarCRM
Возможность указывать диапазон дат Emptyавтор iliandr777 Пн Ноя 10, 2014 2:28 pm

» Отображение записей (адресатов) в списках адресатов
Возможность указывать диапазон дат Emptyавтор FatherMother Пн Авг 25, 2014 12:21 pm

» Нужен совет. Модуль с множеством одинаковых субпанелей.
Возможность указывать диапазон дат Emptyавтор Павел Пн Июл 28, 2014 12:55 pm

» Нужна помощь с опенкартом
Возможность указывать диапазон дат Emptyавтор manux86 Вс Фев 02, 2014 10:45 am

» вопрос работы насчет СУГАР на сервере
Возможность указывать диапазон дат Emptyавтор Meiir2 Пт Янв 31, 2014 8:46 am

» Интеграция с Google календарем от компании "Куб Три"
Возможность указывать диапазон дат Emptyавтор Dmitry.bereza Ср Авг 14, 2013 10:29 am

» настройка воронки продаж
Возможность указывать диапазон дат Emptyавтор EkaterinaGolovina Чт Июн 13, 2013 12:14 pm

Май 2024
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031  
КалендарьКалендарь
Баннеры
Яндекс цитирования статистика
Поддержка проекта
41001634550309

 

 Возможность указывать диапазон дат

Перейти вниз 
АвторСообщение
Chif




Сообщения : 9
Очки : 15
Дата регистрации : 2010-11-18

Возможность указывать диапазон дат Empty
СообщениеТема: Возможность указывать диапазон дат   Возможность указывать диапазон дат EmptyПн Дек 13, 2010 12:36 am

Встала задача сделать возможным указывать диапазон дат, то есть с такого то по такой то период. Пошел рыть шугу, понял, что даже таких операторов как '>' и '<', для запросов в mysql не предусмотрено. Отсюда решение чуток подправить код.
Открываем файл include/SearchForm/SearchForm2.php, ищем там строку "switch(strtolower($operator)) {", вставляем перед ней код в котором мы добавляем новые запрос 'query_date' для конвертации даты в нужный формат.

Код:
if(isset($parms['query_date']) && $parms['query_date'] == true){
if($GLOBALS['db']->dbType == 'mysql') {
if(preg_match('/^\d{4}.\d{1,2}$/', $field_value) == 0) {
$field_value = $timedate->to_db_date($field_value, false);
}
}
}

Далее в теле switch добавляем новое условие, которое регистрирует нужные нам операторы:

Код:
case '>=':
$where .= "$db_field >= '$field_value'";
break;
case '<=':
$where .= "$db_field <= '$field_value'";
break;
case '>':
$where .= "$db_field > '$field_value'";
break;
case '<':
$where .= "$db_field < '$field_value'";
break;

Сохраняем и редактируем нужный модуль. У меня это Leads, задача добавить диапазон дат создания и модификации.

Указываем новые поля расширенного поиска в modules/Leads/metadata/searchdefs.php

Код:
array('name'=>'new_date_create', 'label' => 'LBL_NEW_DATE_CREATE', 'type'=>'date', 'displayParams'=>array('showFormats'=>true)),
array('name'=>'end_date_create', 'label' => 'LBL_END_DATE_CREATE', 'type'=>'date', 'displayParams'=>array('showFormats'=>true)),
array('name'=>'new_date_mod', 'label' => 'LBL_NEW_DATE_MOD', 'type'=>'date', 'displayParams'=>array('showFormats'=>true)),
array('name'=>'end_date_mod', 'label' => 'LBL_END_DATE_MOD', 'type'=>'date', 'displayParams'=>array('showFormats'=>true)),

Указываем как искать по нашим полям в modules/Leads/metadata/SearchFields.php

Код:
'new_date_create' => array('query_type'=>'default','operator'=>'>=','query_date'=>true,'db_field'=>array('DATE(leads.date_entered)')),
'end_date_create' => array('query_type'=>'default','operator'=>'<=','query_date'=>true,'db_field'=>array('DATE(leads.date_entered)')),
'new_date_mod' => array('query_type'=>'default','operator'=>'>=','query_date'=>true,'db_field'=>array('DATE(leads.date_modified)')),
'end_date_mod' => array('query_type'=>'default','operator'=>'<=','query_date'=>true,'db_field'=>array('DATE(leads.date_modified)')),

Ну и на по следок в файле modules/Leads/language/ru_ru.lang.php пишем отображаемые надписи

Код:
'LBL_NEW_DATE_CREATE' => 'Дата создания от',
'LBL_END_DATE_CREATE' => 'Дата создания до',
'LBL_NEW_DATE_MOD' => 'Дата модификации от',
'LBL_END_DATE_MOD' => 'Дата модификации до',

С помощью этого можно сделать поиск по депазону в любом модуле.
После изменения на забываем белать быстрое востановление (иначе будет не корректно отображаться названия.

http://litec.ru/forums.php?m=posts&q=11

ЗЫ: перенесите плиз в другой раздел.
Вернуться к началу Перейти вниз
 
Возможность указывать диапазон дат
Вернуться к началу 
Страница 1 из 1

Права доступа к этому форуму:Вы не можете отвечать на сообщения
 :: SugarCRM :: Статьи по установке и настройке SugarCRM-
Перейти: