Merge pull request #20776 from Easya-Solutions/new-task-list-filter-category-customer
NEW customer category filter on task list
This commit is contained in:
commit
732d13f798
@ -70,6 +70,13 @@ $search_task_budget_amount = GETPOST('search_task_budget_amount');
|
||||
$search_societe = GETPOST('search_societe');
|
||||
$search_societe_alias = GETPOST('search_societe_alias');
|
||||
$search_opp_status = GETPOST("search_opp_status", 'alpha');
|
||||
$searchCategoryCustomerOperator = 0;
|
||||
if (GETPOSTISSET('formfilteraction')) {
|
||||
$searchCategoryCustomerOperator = GETPOST('search_category_customer_operator', 'int');
|
||||
} elseif (!empty($conf->global->MAIN_SEARCH_CAT_OR_BY_DEFAULT)) {
|
||||
$searchCategoryCustomerOperator = $conf->global->MAIN_SEARCH_CAT_OR_BY_DEFAULT;
|
||||
}
|
||||
$searchCategoryCustomerList = GETPOST('search_category_customer_list', 'array');
|
||||
|
||||
$mine = GETPOST('mode', 'alpha') == 'mine' ? 1 : 0;
|
||||
if ($mine) {
|
||||
@ -235,6 +242,7 @@ if (empty($reshook)) {
|
||||
$search_datelimit_start = '';
|
||||
$search_datelimit_end = '';
|
||||
$toselect = array();
|
||||
$searchCategoryCustomerList = array();
|
||||
$search_array_options = array();
|
||||
}
|
||||
|
||||
@ -464,6 +472,50 @@ if (!empty($searchCategoryProjectList)) {
|
||||
}
|
||||
}
|
||||
}
|
||||
$searchCategoryCustomerSqlList = array();
|
||||
if ($searchCategoryCustomerOperator == 1) {
|
||||
$existsCategoryCustomerList = array();
|
||||
foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
|
||||
if (intval($searchCategoryCustomer) == -2) {
|
||||
$sqlCategoryCustomerNotExists = " NOT EXISTS (";
|
||||
$sqlCategoryCustomerNotExists .= " SELECT cat_cus.fk_soc";
|
||||
$sqlCategoryCustomerNotExists .= " FROM ".$db->prefix()."categorie_societe AS cat_cus";
|
||||
$sqlCategoryCustomerNotExists .= " WHERE cat_cus.fk_soc = p.fk_soc";
|
||||
$sqlCategoryCustomerNotExists .= " )";
|
||||
$searchCategoryCustomerSqlList[] = $sqlCategoryCustomerNotExists;
|
||||
} elseif (intval($searchCategoryCustomer) > 0) {
|
||||
$existsCategoryCustomerList[] = $db->escape($searchCategoryCustomer);
|
||||
}
|
||||
}
|
||||
if (!empty($existsCategoryCustomerList)) {
|
||||
$sqlCategoryCustomerExists = " EXISTS (";
|
||||
$sqlCategoryCustomerExists .= " SELECT cat_cus.fk_soc";
|
||||
$sqlCategoryCustomerExists .= " FROM ".$db->prefix()."categorie_societe AS cat_cus";
|
||||
$sqlCategoryCustomerExists .= " WHERE cat_cus.fk_soc = p.fk_soc";
|
||||
$sqlCategoryCustomerExists .= " AND cat_cus.fk_categorie IN (".$db->sanitize(implode(',', $existsCategoryCustomerList)).")";
|
||||
$sqlCategoryCustomerExists .= " )";
|
||||
$searchCategoryCustomerSqlList[] = $sqlCategoryCustomerExists;
|
||||
}
|
||||
if (!empty($searchCategoryCustomerSqlList)) {
|
||||
$sql .= " AND (".implode(' OR ', $searchCategoryCustomerSqlList).")";
|
||||
}
|
||||
} else {
|
||||
foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
|
||||
if (intval($searchCategoryCustomer) == -2) {
|
||||
$sqlCategoryCustomerNotExists = " NOT EXISTS (";
|
||||
$sqlCategoryCustomerNotExists .= " SELECT cat_cus.fk_soc";
|
||||
$sqlCategoryCustomerNotExists .= " FROM ".$db->prefix()."categorie_societe AS cat_cus";
|
||||
$sqlCategoryCustomerNotExists .= " WHERE cat_cus.fk_soc = p.fk_soc";
|
||||
$sqlCategoryCustomerNotExists .= " )";
|
||||
$searchCategoryCustomerSqlList[] = $sqlCategoryCustomerNotExists;
|
||||
} elseif (intval($searchCategoryCustomer) > 0) {
|
||||
$searchCategoryCustomerSqlList[] = "p.fk_soc IN (SELECT fk_soc FROM ".$db->prefix()."categorie_societe WHERE fk_categorie = ".((int) $searchCategoryCustomer).")";
|
||||
}
|
||||
}
|
||||
if (!empty($searchCategoryCustomerSqlList)) {
|
||||
$sql .= " AND (".implode(' AND ', $searchCategoryCustomerSqlList).")";
|
||||
}
|
||||
}
|
||||
// Add where from extra fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php';
|
||||
// Add where from hooks
|
||||
@ -617,6 +669,9 @@ if ($search_task_user > 0) {
|
||||
if ($optioncss != '') {
|
||||
$param .= '&optioncss='.urlencode($optioncss);
|
||||
}
|
||||
foreach ($searchCategoryCustomerList as $searchCategoryCustomer) {
|
||||
$param .= "&search_category_customer_list[]=".urlencode($searchCategoryCustomer);
|
||||
}
|
||||
// Add $param from extra fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||
// Add $param from hooks
|
||||
@ -712,6 +767,19 @@ if (empty($user->rights->user->user->lire)) {
|
||||
$moreforfilter .= img_picto($tmptitle, 'user', 'class="pictofixedwidth"').$form->select_dolusers($search_task_user, 'search_task_user', $tmptitle, '', 0, $includeonly, '', 0, 0, 0, '', 0, '', 'maxwidth250');
|
||||
$moreforfilter .= '</div>';
|
||||
|
||||
// Filter on customer categories
|
||||
if (!empty($conf->global->MAIN_SEARCH_CATEGORY_CUSTOMER_ON_TASK_LIST) && !empty($conf->categorie->enabled) && $user->rights->categorie->lire) {
|
||||
$moreforfilter .= '<div class="divsearchfield">';
|
||||
$tmptitle = $langs->transnoentities('CustomersProspectsCategoriesShort');
|
||||
$moreforfilter .= img_picto($tmptitle, 'category', 'class="pictofixedwidth"');
|
||||
$categoriesArr = $form->select_all_categories(Categorie::TYPE_CUSTOMER, '', '', 64, 0, 1);
|
||||
$categoriesArr[-2] = '- '.$langs->trans('NotCategorized').' -';
|
||||
$moreforfilter .= Form::multiselectarray('search_category_customer_list', $categoriesArr, $searchCategoryCustomerList, 0, 0, 'minwidth300', 0, 0, '', 'category', $tmptitle);
|
||||
$moreforfilter .= ' <input type="checkbox" class="valignmiddle" id="search_category_customer_operator" name="search_category_customer_operator" value="1"'.($searchCategoryCustomerOperator == 1 ? ' checked="checked"' : '').'/>';
|
||||
$moreforfilter .= $form->textwithpicto('', $langs->trans('UseOrOperatorForCategories') . ' : ' . $tmptitle, 1, 'help', '', 0, 2, 'tooltip_cat_cus'); // Tooltip on click
|
||||
$moreforfilter .= '</div>';
|
||||
}
|
||||
|
||||
if (!empty($moreforfilter)) {
|
||||
print '<div class="liste_titre liste_titre_bydiv centpercent">';
|
||||
print $moreforfilter;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user