Browse Source

Debug v17

Laurent Destailleur 2 năm trước cách đây
mục cha
commit
e9a3c37b89

+ 1 - 1
htdocs/intracommreport/card.php

@@ -119,7 +119,7 @@ if ($action == 'add' && $permissiontoadd) {
 	$object->label = trim($label);
 	$object->type = trim($exporttype);
 	$object->type_declaration =  $type_declaration;
-	$object->subscription = (int) $subscription;
+	//$object->subscription = (int) $subscription;
 
 	// Fill array 'array_options' with data from add form
 	// $ret = $extrafields->setOptionalsFromPost($extralabels, $object);

+ 18 - 5
htdocs/intracommreport/class/intracommreport.class.php

@@ -47,17 +47,29 @@ class IntracommReport extends CommonObject
 	 */
 	public $fk_element = 'fk_intracommreport';
 
-	/**
-	 * @var string declaration number
-	 */
-	public $declaration_number;
-
 	/**
 	 * 0 = No test on entity, 1 = Test with field entity, 2 = Test with link by societe
 	 * @var int
 	 */
 	public $ismultientitymanaged = 1;
 
+	public $picto = 'intracommreport';
+
+
+	public $label; 		// ref ???
+
+	public $period;
+
+	public $declaration;
+
+	/**
+	 * @var string declaration number
+	 */
+	public $declaration_number;
+
+	public $type_declaration;		// deb or des
+
+
 	/**
 	 * DEB - Product
 	 */
@@ -73,6 +85,7 @@ class IntracommReport extends CommonObject
 		'expedition'=>'Expédition'
 	);
 
+
 	/**
 	 * Constructor
 	 *

+ 265 - 242
htdocs/intracommreport/list.php

@@ -144,21 +144,14 @@ $arrayfields = dol_sort_array($arrayfields, 'position');
 // Security check
 if ($search_type == '0') {
 	$result = restrictedArea($user, 'produit', '', '', '', '', '', 0);
-
-	$permissiontoread = $user->rights->produit->lire;
-	$permissiontodelete = $user->rights->produit->supprimer;
 } elseif ($search_type == '1') {
 	$result = restrictedArea($user, 'service', '', '', '', '', '', 0);
-
-	$permissiontoread = $user->rights->service->lire;
-	$permissiontodelete = $user->rights->service->supprimer;
 } else {
 	$result = restrictedArea($user, 'produit|service', '', '', '', '', '', 0);
-
-	$permissiontoread = $user->rights->produit->lire;
-	$permissiontodelete = $user->rights->produit->supprimer;
 }
 
+$permissiontoread = $user->rights->intracommreport->read;
+$permissiontodelete = $user->rights->intracommreport->delete;
 
 
 /*
@@ -216,25 +209,21 @@ $formother = new FormOther($db);
 
 $title = $langs->trans('IntracommReportList'.$type);
 
-$sql = 'SELECT DISTINCT i.rowid, i.type_declaration, i.type_export, i.periods, i.mode, i.entity';
+$sqlfields = 'i.rowid, i.type_declaration, i.type_export, i.periods, i.mode, i.entity';
+$sql = 'SELECT '.$sqlfields;
 /*
 // Add fields from extrafields
 if (!empty($extrafields->attributes[$object->table_element]['label'])) {
 	foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql.=($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key." as options_".$key : '');
 }
 */
-
 // Add fields from hooks
 $parameters = array();
 $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
 $sql .= $hookmanager->resPrint;
-
 $sql .= ' FROM '.MAIN_DB_PREFIX.'intracommreport as i';
-
 // if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."intracommreport_extrafields as ef on (i.rowid = ef.fk_object)";
-
 $sql .= ' WHERE i.entity IN ('.getEntity('intracommreport').')';
-
 if ($sall) {
 	$sql .= natural_search(array_keys($fieldstosearchall), $sall);
 }
@@ -279,280 +268,314 @@ $parameters = array();
 $reshook = $hookmanager->executeHooks('printFieldSelect', $parameters); // Note that $action and $object may have been modified by hook
 $sql .= $hookmanager->resPrint;
 
-$sql .= $db->order($sortfield, $sortorder);
 
+// Count total nb of records
 $nbtotalofrecords = '';
 if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
-	$result = $db->query($sql);
-	$nbtotalofrecords = $db->num_rows($result);
+	/* The fast and low memory method to get and count full list converts the sql into a sql count */
+	$sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql);
+	$sqlforcount = preg_replace('/GROUP BY .*$/', '', $sqlforcount);
+	$resql = $db->query($sqlforcount);
+	if ($resql) {
+		$objforcount = $db->fetch_object($resql);
+		$nbtotalofrecords = $objforcount->nbtotalofrecords;
+	} else {
+		dol_print_error($db);
+	}
+
 	if (($page * $limit) > $nbtotalofrecords) {	// if total resultset is smaller then paging size (filtering), goto and load page 0
 		$page = 0;
 		$offset = 0;
 	}
+	$db->free($resql);
 }
 
-$sql .= $db->plimit($limit + 1, $offset);
+// Complete request and execute it with limit
+$sql .= $db->order($sortfield, $sortorder);
+if ($limit) {
+	$sql .= $db->plimit($limit + 1, $offset);
+}
 
 $resql = $db->query($sql);
+if (!$resql) {
+	dol_print_error($db);
+	exit;
+}
 
-if ($resql) {
-	$num = $db->num_rows($resql);
-
-	$arrayofselected = is_array($toselect) ? $toselect : array();
+$num = $db->num_rows($resql);
 
-	$helpurl = 'EN:Module_IntracommReport|FR:Module_ProDouane';
-	llxHeader('', $title, $helpurl, '');
+$helpurl = 'EN:Module_IntracommReport|FR:Module_ProDouane';
+llxHeader('', $title, $helpurl, '');
 
-	// Displays product removal confirmation
-	if (GETPOST('delreport')) {
-		setEventMessages($langs->trans("IntracommReportDeleted", GETPOST('delreport')), null, 'mesgs');
-	}
+// Displays product removal confirmation
+if (GETPOST('delreport')) {
+	setEventMessages($langs->trans("IntracommReportDeleted", GETPOST('delreport')), null, 'mesgs');
+}
 
-	$param = '';
-	if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
-		$param .= '&contextpage='.urlencode($contextpage);
-	}
-	if ($limit > 0 && $limit != $conf->liste_limit) {
-		$param .= '&limit='.urlencode($limit);
-	}
-	if ($sall) {
-		$param .= "&sall=".urlencode($sall);
-	}
-	if ($search_ref) {
-		$param = "&search_ref=".urlencode($search_ref);
-	}
-	if ($search_label) {
-		$param .= "&search_label=".urlencode($search_label);
-	}
+$arrayofselected = is_array($toselect) ? $toselect : array();
 
-	// Add $param from extra fields
-	include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
-
-	// List of mass actions available
-	$arrayofmassactions = array(
-		'generate_doc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("ReGeneratePDF"),
-		//'builddoc'=>$langs->trans("PDFMerge"),
-		//'presend'=>$langs->trans("SendByMail"),
-	);
-	if ($user->rights->intracommreport->delete) {
-		$arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete");
-	}
-	if (in_array($massaction, array('presend', 'predelete'))) {
-		$arrayofmassactions = array();
-	}
-	$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
+$param = '';
+if (!empty($mode)) {
+	$param .= '&mode='.urlencode($mode);
+}
+if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
+	$param .= '&contextpage='.urlencode($contextpage);
+}
+if ($limit > 0 && $limit != $conf->liste_limit) {
+	$param .= '&limit='.urlencode($limit);
+}
+if ($sall) {
+	$param .= "&sall=".urlencode($sall);
+}
+if ($search_ref) {
+	$param = "&search_ref=".urlencode($search_ref);
+}
+if ($search_label) {
+	$param .= "&search_label=".urlencode($search_label);
+}
+if ($optioncss != '') {
+	$param .= '&optioncss='.urlencode($optioncss);
+}
+// Add $param from extra fields
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
+// Add $param from hooks
+$parameters = array();
+$reshook = $hookmanager->executeHooks('printFieldListSearchParam', $parameters, $object); // Note that $action and $object may have been modified by hook
+$param .= $hookmanager->resPrint;
+
+// List of mass actions available
+$arrayofmassactions = array(
+	'generate_doc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("ReGeneratePDF"),
+	//'builddoc'=>$langs->trans("PDFMerge"),
+	//'presend'=>$langs->trans("SendByMail"),
+);
+if (!empty($permissiontodelete)) {
+	$arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete");
+}
+if (in_array($massaction, array('presend', 'predelete'))) {
+	$arrayofmassactions = array();
+}
+$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
 
-	$newcardbutton = '';
-	if ($user->rights->intracommreport->write) {
-		$newcardbutton .= dolGetButtonTitle($langs->trans("NewDeclaration"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/intracommreport/card.php?action=create&type='.$type);
-	}
+$newcardbutton = '';
+if ($user->rights->intracommreport->write) {
+	$newcardbutton .= dolGetButtonTitle($langs->trans("NewDeclaration"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/intracommreport/card.php?action=create&type='.$type);
+}
 
-	print '<form action="'.$_SERVER["PHP_SELF"].'" method="post" name="formulaire">';
-	if ($optioncss != '') {
-		print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
-	}
-	print '<input type="hidden" name="token" value="'.newToken().'">';
-	print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
-	print '<input type="hidden" name="action" value="list">';
-	print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
-	print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
-	print '<input type="hidden" name="page" value="'.$page.'">';
-	print '<input type="hidden" name="type" value="'.$type.'">';
-	if (empty($arrayfields['i.fk_product_type']['checked'])) {
-		print '<input type="hidden" name="search_type" value="'.dol_escape_htmltag($search_type).'">';
-	}
+print '<form action="'.$_SERVER["PHP_SELF"].'" method="post" name="formulaire">';
+if ($optioncss != '') {
+	print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
+}
+print '<input type="hidden" name="token" value="'.newToken().'">';
+print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
+print '<input type="hidden" name="action" value="list">';
+print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
+print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
+print '<input type="hidden" name="page" value="'.$page.'">';
+print '<input type="hidden" name="type" value="'.$type.'">';
+if (empty($arrayfields['i.fk_product_type']['checked'])) {
+	print '<input type="hidden" name="search_type" value="'.dol_escape_htmltag($search_type).'">';
+}
 
-	print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'intracommreport', 0, $newcardbutton, '', $limit);
+print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'intracommreport', 0, $newcardbutton, '', $limit);
 
-	$topicmail = "Information";
-	$modelmail = "product";
-	$objecttmp = new IntracommReport($db);
-	$trackid = 'prod'.$object->id;
-	include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
+$topicmail = "Information";
+$modelmail = "product";
+$objecttmp = new IntracommReport($db);
+$trackid = 'prod'.$object->id;
+include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
 
-	if ($sall) {
-		foreach ($fieldstosearchall as $key => $val) {
-			$fieldstosearchall[$key] = $langs->trans($val);
-		}
-		print '<div class="divsearchfieldfilter">'.$langs->trans("FilterOnInto", $sall).join(', ', $fieldstosearchall).'</div>';
+if ($sall) {
+	foreach ($fieldstosearchall as $key => $val) {
+		$fieldstosearchall[$key] = $langs->trans($val);
 	}
+	print '<div class="divsearchfieldfilter">'.$langs->trans("FilterOnInto", $sall).join(', ', $fieldstosearchall).'</div>';
+}
 
-	$parameters = array();
-	$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook
-	if (empty($reshook)) {
-		$moreforfilter .= $hookmanager->resPrint;
-	} else {
-		$moreforfilter = $hookmanager->resPrint;
-	}
+$parameters = array();
+$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook
+if (empty($reshook)) {
+	$moreforfilter .= $hookmanager->resPrint;
+} else {
+	$moreforfilter = $hookmanager->resPrint;
+}
 
-	if ($moreforfilter) {
-		print '<div class="liste_titre liste_titre_bydiv centpercent">';
-		print $moreforfilter;
-		print '</div>';
-	}
+if ($moreforfilter) {
+	print '<div class="liste_titre liste_titre_bydiv centpercent">';
+	print $moreforfilter;
+	print '</div>';
+}
 
-	$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
-	$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
-	if ($massactionbutton) {
-		$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
-	}
+$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
+$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
+if ($massactionbutton) {
+	$selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
+}
 
-	print '<div class="div-table-responsive">';
-	print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
+print '<div class="div-table-responsive">';
+print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
 
-	// Lines with input filters
-	print '<tr class="liste_titre_filter">';
-	if (!empty($arrayfields['i.ref']['checked'])) {
-		print '<td class="liste_titre left">';
-		print '<input class="flat" type="text" name="search_ref" size="8" value="'.dol_escape_htmltag($search_ref).'">';
-		print '</td>';
-	}
-	if (!empty($arrayfields['i.label']['checked'])) {
-		print '<td class="liste_titre left">';
-		print '<input class="flat" type="text" name="search_label" size="12" value="'.dol_escape_htmltag($search_label).'">';
-		print '</td>';
-	}
-	// Type
-	// Type (customer/prospect/supplier)
-	if (!empty($arrayfields['customerorsupplier']['checked'])) {
-		print '<td class="liste_titre maxwidthonsmartphone center">';
-		if ($type != '') {
-			print '<input type="hidden" name="type" value="'.$type.'">';
-		}
-		print $formcompany->selectProspectCustomerType($search_type, 'search_type', 'search_type', 'list');
-		print '</select></td>';
-	}
+// Lines with input filters
+print '<tr class="liste_titre_filter">';
+if (!empty($arrayfields['i.ref']['checked'])) {
+	print '<td class="liste_titre left">';
+	print '<input class="flat" type="text" name="search_ref" size="8" value="'.dol_escape_htmltag($search_ref).'">';
+	print '</td>';
+}
+if (!empty($arrayfields['i.label']['checked'])) {
+	print '<td class="liste_titre left">';
+	print '<input class="flat" type="text" name="search_label" size="12" value="'.dol_escape_htmltag($search_label).'">';
+	print '</td>';
+}
+// Type
+// Type (customer/prospect/supplier)
+if (!empty($arrayfields['customerorsupplier']['checked'])) {
+	print '<td class="liste_titre maxwidthonsmartphone center">';
+	if ($type != '') {
+		print '<input type="hidden" name="type" value="'.$type.'">';
+	}
+	print $formcompany->selectProspectCustomerType($search_type, 'search_type', 'search_type', 'list');
+	print '</select></td>';
+}
 
-	if (!empty($arrayfields['i.fk_product_type']['checked'])) {
-		print '<td class="liste_titre left">';
-		$array = array('-1'=>'&nbsp;', '0'=>$langs->trans('Product'), '1'=>$langs->trans('Service'));
-		print $form->selectarray('search_type', $array, $search_type);
-		print '</td>';
-	}
+if (!empty($arrayfields['i.fk_product_type']['checked'])) {
+	print '<td class="liste_titre left">';
+	$array = array('-1'=>'&nbsp;', '0'=>$langs->trans('Product'), '1'=>$langs->trans('Service'));
+	print $form->selectarray('search_type', $array, $search_type);
+	print '</td>';
+}
 
-	/*
-	// Extra fields
-	include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
-	*/
-	// Fields from hook
-	$parameters = array('arrayfields'=>$arrayfields);
-	$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters); // Note that $action and $object may have been modified by hook
-	print $hookmanager->resPrint;
-	// Date creation
-	if (!empty($arrayfields['i.datec']['checked'])) {
-		print '<td class="liste_titre">';
-		print '</td>';
-	}
-	// Date modification
-	if (!empty($arrayfields['i.tms']['checked'])) {
-		print '<td class="liste_titre">';
-		print '</td>';
-	}
-	print '<td class="liste_titre center maxwidthsearch">';
-	$searchpicto = $form->showFilterButtons();
-	print $searchpicto;
+/*
+// Extra fields
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
+*/
+// Fields from hook
+$parameters = array('arrayfields'=>$arrayfields);
+$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters); // Note that $action and $object may have been modified by hook
+print $hookmanager->resPrint;
+// Date creation
+if (!empty($arrayfields['i.datec']['checked'])) {
+	print '<td class="liste_titre">';
 	print '</td>';
+}
+// Date modification
+if (!empty($arrayfields['i.tms']['checked'])) {
+	print '<td class="liste_titre">';
+	print '</td>';
+}
+print '<td class="liste_titre center maxwidthsearch">';
+$searchpicto = $form->showFilterButtons();
+print $searchpicto;
+print '</td>';
+
+print '</tr>';
+
+print '<tr class="liste_titre">';
+if (!empty($arrayfields['i.ref']['checked'])) {
+	print_liste_field_titre($arrayfields['i.ref']['label'], $_SERVER["PHP_SELF"], "i.ref", "", $param, "", $sortfield, $sortorder);
+}
+if (!empty($arrayfields['i.label']['checked'])) {
+	print_liste_field_titre($arrayfields['i.label']['label'], $_SERVER["PHP_SELF"], "i.label", "", $param, "", $sortfield, $sortorder);
+}
+if (!empty($arrayfields['i.fk_product_type']['checked'])) {
+	print_liste_field_titre($arrayfields['i.fk_product_type']['label'], $_SERVER["PHP_SELF"], "i.fk_product_type", "", $param, "", $sortfield, $sortorder);
+}
+
+/*
+// Extra fields
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
+*/
+// Hook fields
+$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder);
+$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
+print $hookmanager->resPrint;
+if (!empty($arrayfields['i.datec']['checked'])) {
+	print_liste_field_titre($arrayfields['i.datec']['label'], $_SERVER["PHP_SELF"], "i.datec", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
+}
+if (!empty($arrayfields['i.tms']['checked'])) {
+	print_liste_field_titre($arrayfields['i.tms']['label'], $_SERVER["PHP_SELF"], "i.tms", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
+}
+
+print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
+print "</tr>\n";
 
-	print '</tr>';
 
-	print '<tr class="liste_titre">';
+$intracommreport_static = new IntracommReport($db);
+
+$i = 0;
+$totalarray = array();
+while ($i < min($num, $limit)) {
+	$obj = $db->fetch_object($resql);
+
+	$intracommreport_static->id = $obj->rowid;
+	$intracommreport_static->ref = $obj->ref;
+	$intracommreport_static->ref_fourn = $obj->ref_supplier;
+	$intracommreport_static->label = $obj->label;
+	$intracommreport_static->type = $obj->fk_product_type;
+	$intracommreport_static->status_buy = $obj->tobuy;
+	$intracommreport_static->status     = $obj->tosell;
+	$intracommreport_static->status_batch = $obj->tobatch;
+	$intracommreport_static->entity = $obj->entity;
+
+	print '<tr class="oddeven">';
+
+	// Ref
 	if (!empty($arrayfields['i.ref']['checked'])) {
-		print_liste_field_titre($arrayfields['i.ref']['label'], $_SERVER["PHP_SELF"], "i.ref", "", $param, "", $sortfield, $sortorder);
+		print '<td class="tdoverflowmax200">';
+		print $intracommreport_static->getNomUrl(1);
+		print "</td>\n";
+		if (!$i) {
+			$totalarray['nbfield']++;
+		}
 	}
+	// Label
 	if (!empty($arrayfields['i.label']['checked'])) {
-		print_liste_field_titre($arrayfields['i.label']['label'], $_SERVER["PHP_SELF"], "i.label", "", $param, "", $sortfield, $sortorder);
+		print '<td class="tdoverflowmax200">'.dol_trunc($obj->label, 80).'</td>';
+		if (!$i) {
+			$totalarray['nbfield']++;
+		}
 	}
+	// Type
 	if (!empty($arrayfields['i.fk_product_type']['checked'])) {
-		print_liste_field_titre($arrayfields['i.fk_product_type']['label'], $_SERVER["PHP_SELF"], "i.fk_product_type", "", $param, "", $sortfield, $sortorder);
+		print '<td>'.$obj->fk_product_type.'</td>';
+		if (!$i) {
+			$totalarray['nbfield']++;
+		}
 	}
-
-	/*
-	// Extra fields
-	include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
-	*/
-	// Hook fields
-	$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder);
-	$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
-	print $hookmanager->resPrint;
-	if (!empty($arrayfields['i.datec']['checked'])) {
-		print_liste_field_titre($arrayfields['i.datec']['label'], $_SERVER["PHP_SELF"], "i.datec", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
+	// Action
+	print '<td class="nowrap center">';
+	if ($massactionbutton || $massaction) {   // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
+		$selected = 0;
+		if (in_array($obj->rowid, $arrayofselected)) {
+			$selected = 1;
+		}
+		print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
 	}
-	if (!empty($arrayfields['i.tms']['checked'])) {
-		print_liste_field_titre($arrayfields['i.tms']['label'], $_SERVER["PHP_SELF"], "i.tms", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
+	print '</td>';
+	if (!$i) {
+		$totalarray['nbfield']++;
 	}
 
-	print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
 	print "</tr>\n";
+	$i++;
+}
 
-
-	$intracommreport_static = new IntracommReport($db);
-
-	$i = 0;
-	$totalarray = array();
-	while ($i < min($num, $limit)) {
-		$obj = $db->fetch_object($resql);
-
-		$intracommreport_static->id = $obj->rowid;
-		$intracommreport_static->ref = $obj->ref;
-		$intracommreport_static->ref_fourn = $obj->ref_supplier;
-		$intracommreport_static->label = $obj->label;
-		$intracommreport_static->type = $obj->fk_product_type;
-		$intracommreport_static->status_buy = $obj->tobuy;
-		$intracommreport_static->status     = $obj->tosell;
-		$intracommreport_static->status_batch = $obj->tobatch;
-		$intracommreport_static->entity = $obj->entity;
-
-		print '<tr class="oddeven">';
-
-		// Ref
-		if (!empty($arrayfields['i.ref']['checked'])) {
-			print '<td class="tdoverflowmax200">';
-			print $intracommreport_static->getNomUrl(1);
-			print "</td>\n";
-			if (!$i) {
-				$totalarray['nbfield']++;
-			}
-		}
-		// Label
-		if (!empty($arrayfields['i.label']['checked'])) {
-			print '<td class="tdoverflowmax200">'.dol_trunc($obj->label, 80).'</td>';
-			if (!$i) {
-				$totalarray['nbfield']++;
-			}
+// If no record found
+if ($num == 0) {
+	$colspan = 1;
+	foreach ($arrayfields as $key => $val) {
+		if (!empty($val['checked'])) {
+			$colspan++;
 		}
-		// Type
-		if (!empty($arrayfields['i.fk_product_type']['checked'])) {
-			print '<td>'.$obj->fk_product_type.'</td>';
-			if (!$i) {
-				$totalarray['nbfield']++;
-			}
-		}
-		// Action
-		print '<td class="nowrap center">';
-		if ($massactionbutton || $massaction) {   // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
-			$selected = 0;
-			if (in_array($obj->rowid, $arrayofselected)) {
-				$selected = 1;
-			}
-			print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
-		}
-		print '</td>';
-		if (!$i) {
-			$totalarray['nbfield']++;
-		}
-
-		print "</tr>\n";
-		$i++;
 	}
+	print '<tr><td colspan="'.$colspan.'"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
+}
 
-	$db->free($resql);
+$db->free($resql);
 
-	print "</table>";
-	print "</div>";
-	print '</form>';
-} else {
-	dol_print_error($db);
-}
+print "</table>";
+print "</div>";
+print '</form>';
 
 // End of page
 llxFooter();