working solution about filtering the contacs of one company

This commit is contained in:
Laurent De Coninck 2019-09-25 18:24:36 +02:00
parent b838ab0c31
commit 040e7bdfdf

View File

@ -868,7 +868,37 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
$search_status = GETPOST("search_status", 'int'); $search_status = GETPOST("search_status", 'int');
if ($search_status=='') $search_status=1; // always display active customer first if ($search_status=='') $search_status=1; // always display active customer first
$search_name = GETPOST("search_name", 'alpha'); $search_name = GETPOST("search_name", 'alpha');
$search_addressphone = GETPOST("search_addressphone", 'alpha'); $searchAddressPhone = GETPOST("search_address", 'alpha');
$searchJobFunction=GETPOST("search_poste", 'alpha');
$searchAddressPhoneDBFields = array(
//Address
't.address',
't.zip',
't.town',
//Phone
't.phone',
't.phone_perso',
't.phone_mobile',
//Fax
't.fax',
//E-mail
't.email',
//Social media
"t.skype",
"t.jabberid",
"t.twitter",
"t.facebook",
"t.linkedin",
"t.whatsapp",
"t.youtube",
"t.snapchat",
"t.instagram"
);
if (! $sortorder) $sortorder="ASC"; if (! $sortorder) $sortorder="ASC";
if (! $sortfield) $sortfield="t.lastname"; if (! $sortfield) $sortfield="t.lastname";
@ -915,9 +945,12 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
// Initialize array of search criterias // Initialize array of search criterias
$search=array(); $search=array();
foreach($contactstatic->fields as $key => $val) foreach($arrayfields as $key => $val)
{ {
if (GETPOST('search_'.$key, 'alpha')) $search[$key]=GETPOST('search_'.$key, 'alpha'); $queryName = sprintf('search_%s',substr($key, 2));
if (GETPOST($queryName, 'alpha')){
$search[$key]=GETPOST($queryName, 'alpha');
}
} }
$search_array_options=$extrafields->getOptionalsFromPost($contactstatic->table_element, '', 'search_'); $search_array_options=$extrafields->getOptionalsFromPost($contactstatic->table_element, '', 'search_');
@ -926,14 +959,15 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
{ {
$search_status = ''; $search_status = '';
$search_name = ''; $search_name = '';
$search_addressphone = ''; $searchAddressPhone = '';
$searchJobFunction = '';
$search= [];
$search_array_options=array(); $search_array_options=array();
foreach($contactstatic->fields as $key => $val) foreach($contactstatic->fields as $key => $val)
{ {
$search[$key]=''; $search[$key]='';
} }
$toselect='';
} }
$contactstatic->fields = dol_sort_array($contactstatic->fields, 'position'); $contactstatic->fields = dol_sort_array($contactstatic->fields, 'position');
@ -968,7 +1002,10 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
$param="socid=".urlencode($object->id); $param="socid=".urlencode($object->id);
if ($search_status != '') $param.='&search_status='.urlencode($search_status); if ($search_status != '') $param.='&search_status='.urlencode($search_status);
if ($search_name != '') $param.='&search_name='.urlencode($search_name); if ($search_name != '') $param.='&search_name='.urlencode($search_name);
if ($searchJobFunction != '') $param.='&search_poste='.urlencode($searchJobFunction);
if ($searchAddressPhone != '') $param.='&search_address='.urlencode($optioncss);
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
// Add $param from extra fields // Add $param from extra fields
$extrafieldsobjectkey=$contactstatic->table_element; $extrafieldsobjectkey=$contactstatic->table_element;
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
@ -980,6 +1017,8 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
$sql .= " WHERE t.fk_soc = ".$object->id; $sql .= " WHERE t.fk_soc = ".$object->id;
if ($search_status!='' && $search_status != '-1') $sql .= " AND t.statut = ".$db->escape($search_status); if ($search_status!='' && $search_status != '-1') $sql .= " AND t.statut = ".$db->escape($search_status);
if ($search_name) $sql .= natural_search(array('t.lastname', 't.firstname'), $search_name); if ($search_name) $sql .= natural_search(array('t.lastname', 't.firstname'), $search_name);
if ($searchJobFunction) $sql.= natural_search('t.poste', $searchJobFunction);
if ($searchAddressPhone) $sql .= natural_search($searchAddressPhoneDBFields, $searchAddressPhone);
// Add where from extra fields // Add where from extra fields
$extrafieldsobjectkey=$contactstatic->table_element; $extrafieldsobjectkey=$contactstatic->table_element;
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php';
@ -995,17 +1034,21 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
// Fields title search // Fields title search
// -------------------------------------------------------------------- // --------------------------------------------------------------------
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
foreach($contactstatic->fields as $key => $val) foreach($arrayfields as $key => $val)
{ {
$align=''; $align='';
if (in_array($val['type'], array('date','datetime','timestamp'))) $align.=($align?' ':'').'center'; if (in_array($val['type'], array('t.date','t.datetime','t.timestamp'))) $align.=($align?' ':'').'center';
if (in_array($val['type'], array('timestamp'))) $align.=($align?' ':'').'nowrap'; if (in_array($val['type'], array('t.timestamp'))) $align.=($align?' ':'').'nowrap';
if ($key == 'status' || $key == 'statut') $align.=($align?' ':'').'center'; if ($key == 't.status' || $key == 't.statut') $align.=($align?' ':'').'center';
if (! empty($arrayfields['t.'.$key]['checked'])) if (! empty($arrayfields[$key]['checked']))
{ {
print '<td class="liste_titre'.($align?' '.$align:'').'">'; print '<td class="liste_titre'.($align?' '.$align:'').'">';
if (in_array($key, array('lastname','name'))) print '<input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.dol_escape_htmltag($search[$key]).'">'; if (in_array($key, array('t.statut'))){
elseif (in_array($key, array('statut'))) print $form->selectarray('search_status', array('-1'=>'','0'=>$contactstatic->LibStatut(0, 1),'1'=>$contactstatic->LibStatut(1, 1)), $search_status); print $form->selectarray('search_status', array('-1'=>'','0'=>$contactstatic->LibStatut(0, 1),'1'=>$contactstatic->LibStatut(1, 1)), $search_status);
}else{
$fieldName = substr($key, 2);
print sprintf('<input type="text" class="flat maxwidth75" name="search_%s" value="%s">', $fieldName, dol_escape_htmltag($search[$key]));
}
print '</td>'; print '</td>';
} }
} }
@ -1019,8 +1062,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
print $hookmanager->resPrint; print $hookmanager->resPrint;
// Action column // Action column
print '<td class="liste_titre" align="right">'; print '<td class="liste_titre" align="right">';
$searchpicto=$form->showFilterButtons(); print $form->showFilterButtons();
print $searchpicto;
print '</td>'; print '</td>';
print '</tr>'."\n"; print '</tr>'."\n";