31require
'../../main.inc.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.product.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingaccount.class.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
48require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
49require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
52$langs->loadLangs(array(
"bills",
"companies",
"compta",
"accountancy",
"other",
"productbatch",
"products"));
54$action =
GETPOST(
'action',
'aZ09');
55$massaction =
GETPOST(
'massaction',
'alpha');
56$confirm =
GETPOST(
'confirm',
'alpha');
57$toselect =
GETPOST(
'toselect',
'array:aZ09');
58$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'accountancysupplierlist';
59$optioncss =
GETPOST(
'optioncss',
'alpha');
61$default_account =
GETPOSTINT(
'default_account');
64$search_lineid =
GETPOST(
'search_lineid',
'alpha');
65$search_societe =
GETPOST(
'search_societe',
'alpha');
66$search_ref =
GETPOST(
'search_ref',
'alpha');
67$search_ref_supplier =
GETPOST(
'search_ref_supplier',
'alpha');
68$search_invoice =
GETPOST(
'search_invoice',
'alpha');
69$search_label =
GETPOST(
'search_label',
'alpha');
70$search_desc =
GETPOST(
'search_desc',
'alpha');
71$search_amount =
GETPOST(
'search_amount',
'alpha');
72$search_account =
GETPOST(
'search_account',
'alpha');
73$search_vat =
GETPOST(
'search_vat',
'alpha');
74$search_date_startday =
GETPOSTINT(
'search_date_startday');
75$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
76$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
77$search_date_endday =
GETPOSTINT(
'search_date_endday');
78$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
79$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
80$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
81$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
82$search_country =
GETPOST(
'search_country',
'aZ09');
83$search_tvaintra =
GETPOST(
'search_tvaintra',
'alpha');
87$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
88$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
90if (empty($page) || $page < 0) {
93$offset = $limit * $page;
97 $sortfield =
"f.datef, f.ref, l.rowid";
108$hookmanager->initHooks(array($contextpage));
119if ($user->socid > 0) {
122if (!$user->hasRight(
'accounting',
'bind',
'write')) {
127 'l.rowid' => array(
'label' =>
"LineId",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
128 'f.ref' => array(
'label' =>
"Invoice",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
129 'f.libelle' => array(
'label' =>
"InvoiceLabel",
'position' => 1,
'checked' =>
'-1',
'enabled' =>
'1'),
130 'f.datef' => array(
'label' =>
"Date",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
131 'p.ref' => array(
'label' =>
"ProductRef",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
132 'l.description' => array(
'label' =>
"ProductDescription",
'position' => 1,
'checked' =>
'-1',
'enabled' =>
'1'),
133 'l.total_ht' => array(
'label' =>
"Amount",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
134 'l.tva_tx' => array(
'label' =>
"VATRate",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
135 's.nom' => array(
'label' =>
"ThirdParty",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
136 'co.label' => array(
'label' =>
"Country",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
137 's.tva_intra' => array(
'label' =>
"VATIntraShort",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
138 'aa.data_suggest' => array(
'label' =>
"DataUsedToSuggestAccount",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
139 'aa.account_number' => array(
'label' =>
"AccountAccountingSuggest",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
142$parameters = array(
'arrayfields' => &$arrayfields);
143$reshook = $hookmanager->executeHooks(
'completeArrayFields', $parameters, $object, $action);
148if (empty($search_date_start) &&
getDolGlobalInt(
'ACCOUNTING_DATE_START_BINDING')) {
159if (
GETPOST(
'cancel',
'alpha')) {
163if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') {
167$parameters = array(
'arrayfields' => &$arrayfields);
168$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
173if (empty($reshook)) {
175 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
178 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
179 $search_societe =
'';
182 $search_ref_supplier =
'';
183 $search_invoice =
'';
187 $search_account =
'';
189 $search_date_startday =
'';
190 $search_date_startmonth =
'';
191 $search_date_startyear =
'';
192 $search_date_endday =
'';
193 $search_date_endmonth =
'';
194 $search_date_endyear =
'';
195 $search_date_start =
'';
196 $search_date_end =
'';
197 $search_country =
'';
198 $search_tvaintra =
'';
202 $objectclass =
'AccountingAccount';
203 $permissiontoread = $user->hasRight(
'accounting',
'read');
204 $permissiontodelete = $user->hasRight(
'accounting',
'delete');
205 $uploaddir =
$conf->accounting->dir_output;
206 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
210if ($massaction ==
'ventil' && $user->hasRight(
'accounting',
'bind',
'write')) {
213 if (!empty($toselect)) {
214 $msg =
'<div>'.$langs->trans(
"SelectedLines").
': '.count($toselect).
'</div>';
215 $msg .=
'<div class="detail">';
220 foreach ($toselect as $maLigneCochee) {
221 $maLigneCourante = explode(
"_", $maLigneCochee);
222 $monId = $maLigneCourante[0];
225 if ($monCompte <= 0) {
226 $msg .=
'<div><span class="error">'.$langs->trans(
"Lineofinvoice").
' '.$monId.
' - '.$langs->trans(
"NoAccountSelected").
'</span></div>';
229 $sql =
" UPDATE ".MAIN_DB_PREFIX.
"facture_fourn_det";
230 $sql .=
" SET fk_code_ventilation = ".((int) $monCompte);
231 $sql .=
" WHERE rowid = ".((int) $monId);
234 $accountventilated->fetch($monCompte,
'', 1);
236 dol_syslog(
'accountancy/supplier/list.php', LOG_DEBUG);
237 if (
$db->query($sql)) {
238 $msg .=
'<div><span class="green">'.$langs->trans(
"Lineofinvoice").
' '.$monId.
' - '.$langs->trans(
"VentilatedinAccount").
' : '.
length_accountg($accountventilated->account_number).
'</span></div>';
241 $msg .=
'<div><span class="error">'.$langs->trans(
"ErrorDB").
' : '.$langs->trans(
"Lineofinvoice").
' '.$monId.
' - '.$langs->trans(
"NotVentilatedinAccount").
' : '.
length_accountg($accountventilated->account_number).
'<br> <pre>'.$sql.
'</pre></span></div>';
249 $msg .=
'<div>'.$langs->trans(
"EndProcessing").
'</div>';
253if (
GETPOST(
'sortfield') ==
'f.datef, f.ref, l.rowid') {
254 $value = (
GETPOST(
'sortorder') ==
'asc,asc,asc' ? 0 : 1);
255 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
267$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double#Liaisons_comptables';
269llxHeader(
'', $langs->trans(
"SuppliersVentilation"), $help_url,
'', 0, 0,
'',
'',
'',
'bodyforlist mod-accountancy accountancy-supplier page-list');
271if (empty($chartaccountcode)) {
272 print $langs->trans(
"ErrorChartOfAccountSystemNotSelected");
280$sql =
"SELECT f.rowid as facid, f.ref, f.ref_supplier, f.libelle as invoice_label, f.datef, f.type as ftype, f.fk_facture_source,";
281$sql .=
" l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
282$sql .=
" p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.tva_tx as tva_tx_prod,";
284 $sql .=
" ppe.accountancy_code_sell as code_sell, ppe.accountancy_code_sell_intra as code_sell_intra, ppe.accountancy_code_sell_export as code_sell_export,";
285 $sql .=
" ppe.accountancy_code_buy as code_buy, ppe.accountancy_code_buy_intra as code_buy_intra, ppe.accountancy_code_buy_export as code_buy_export,";
287 $sql .=
" p.accountancy_code_sell as code_sell, p.accountancy_code_sell_intra as code_sell_intra, p.accountancy_code_sell_export as code_sell_export,";
288 $sql .=
" p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as code_buy_intra, p.accountancy_code_buy_export as code_buy_export,";
290$sql .=
" p.tosell as status, p.tobuy as status_buy,";
291$sql .=
" aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export, aa4.rowid as aarowid_thirdparty,";
292$sql .=
" co.code as country_code, co.label as country_label,";
293$sql .=
" s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur,";
295 $sql .=
" spe.accountancy_code_customer as code_compta_client,";
296 $sql .=
" spe.accountancy_code_supplier as code_compta_fournisseur,";
297 $sql .=
" spe.accountancy_code_buy as company_code_buy";
299 $sql .=
" s.code_compta as code_compta_client,";
300 $sql .=
" s.code_compta_fournisseur,";
301 $sql .=
" s.accountancy_code_buy as company_code_buy";
303$parameters = array();
304$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
305$sql .= $hookmanager->resPrint;
306$sql .=
" FROM ".MAIN_DB_PREFIX.
"facture_fourn as f";
307$sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
309 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int)
$conf->entity);
311$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as co ON co.rowid = s.fk_pays ";
312$sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"facture_fourn_det as l ON f.rowid = l.fk_facture_fourn";
313$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p ON p.rowid = l.fk_product";
315 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int)
$conf->entity);
317$alias_societe_perentity = !
getDolGlobalString(
'MAIN_COMPANY_PERENTITY_SHARED') ?
"s" :
"spe";
318$alias_product_perentity = !
getDolGlobalString(
'MAIN_PRODUCT_PERENTITY_SHARED') ?
"p" :
"ppe";
319$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa ON " . $alias_product_perentity .
".accountancy_code_buy = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa.entity = ".((int)
$conf->entity);
320$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa2 ON " . $alias_product_perentity .
".accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa2.entity = ".((int)
$conf->entity);
321$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa3 ON " . $alias_product_perentity .
".accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa3.entity = ".((int)
$conf->entity);
322$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa4 ON " . $alias_societe_perentity .
".accountancy_code_buy = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa4.entity = ".((int)
$conf->entity);
324$parameters = array();
325$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters, $object, $action);
326$sql .= $hookmanager->resPrint;
328$sql .=
" WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
329$sql .=
" AND l.product_type <= 2";
331if (strlen($search_lineid)) {
334if (strlen($search_societe)) {
337if (strlen(trim($search_invoice))) {
338 $sql .=
natural_search(array(
"f.ref",
"f.ref_supplier"), $search_invoice);
340if (strlen(trim($search_ref))) {
346if (strlen(trim($search_label))) {
347 $sql .=
natural_search(array(
"p.label",
"f.libelle"), $search_label);
349if (strlen(trim($search_desc))) {
352if (strlen(trim($search_amount))) {
355if (strlen(trim($search_account))) {
358if (strlen(trim($search_vat))) {
361if ($search_date_start) {
362 $sql .=
" AND f.datef >= '".$db->idate($search_date_start).
"'";
364if ($search_date_end) {
365 $sql .=
" AND f.datef <= '".$db->idate($search_date_end).
"'";
367if (strlen(trim($search_country))) {
369 $country_code_in_EEC = $country_code_in_EEC_without_me =
'';
370 foreach ($arrayofcode as $key => $value) {
371 $country_code_in_EEC .= ($country_code_in_EEC ?
"," :
"").
"'".$value.
"'";
372 if ($value !=
$mysoc->country_code) {
373 $country_code_in_EEC_without_me .= ($country_code_in_EEC_without_me ?
"," :
"").
"'".$value.
"'";
376 if ($search_country ==
'special_allnotme') {
377 $sql .=
" AND co.code <> '".$db->escape(
$mysoc->country_code).
"'";
378 } elseif ($search_country ==
'special_eec') {
379 $sql .=
" AND co.code IN (".$db->sanitize($country_code_in_EEC, 1).
")";
380 } elseif ($search_country ==
'special_eecnotme') {
381 $sql .=
" AND co.code IN (".$db->sanitize($country_code_in_EEC_without_me, 1).
")";
382 } elseif ($search_country ==
'special_noteec') {
383 $sql .=
" AND co.code NOT IN (".$db->sanitize($country_code_in_EEC, 1).
")";
388if (strlen(trim($search_tvaintra))) {
396$sql .=
" AND f.entity IN (".getEntity(
'facture_fourn', 0).
")";
399$parameters = array();
400$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
401$sql .= $hookmanager->resPrint;
403$sql .=
$db->order($sortfield, $sortorder);
406$nbtotalofrecords =
'';
408 $result =
$db->query($sql);
409 $nbtotalofrecords =
$db->num_rows($result);
410 if (($page * $limit) > (
int) $nbtotalofrecords) {
416$sql .=
$db->plimit($limit + 1, $offset);
418dol_syslog(
'accountancy/supplier/list.php', LOG_DEBUG);
421if (
$db->type ==
'mysqli') {
422 $db->query(
"SET SQL_BIG_SELECTS=1");
425$result =
$db->query($sql);
427 $num_lines =
$db->num_rows($result);
430 $arrayofselected = is_array($toselect) ? $toselect : array();
433 if ($contextpage != $_SERVER[
"PHP_SELF"]) {
434 $param .=
'&contextpage='.urlencode($contextpage);
436 if ($limit > 0 && $limit !=
$conf->liste_limit) {
437 $param .=
'&limit='.((int) $limit);
439 if ($search_lineid) {
440 $param .=
'&search_lineid='.urlencode((
string) ($search_lineid));
442 if ($search_societe) {
443 $param .=
'&search_societe='.urlencode($search_societe);
445 if ($search_date_startday) {
446 $param .=
'&search_date_startday='.urlencode((
string) ($search_date_startday));
448 if ($search_date_startmonth) {
449 $param .=
'&search_date_startmonth='.urlencode((
string) ($search_date_startmonth));
451 if ($search_date_startyear) {
452 $param .=
'&search_date_startyear='.urlencode((
string) ($search_date_startyear));
454 if ($search_date_endday) {
455 $param .=
'&search_date_endday='.urlencode((
string) ($search_date_endday));
457 if ($search_date_endmonth) {
458 $param .=
'&search_date_endmonth='.urlencode((
string) ($search_date_endmonth));
460 if ($search_date_endyear) {
461 $param .=
'&search_date_endyear='.urlencode((
string) ($search_date_endyear));
463 if ($search_invoice) {
464 $param .=
'&search_invoice='.urlencode($search_invoice);
467 $param .=
'&search_ref='.urlencode($search_ref);
469 if ($search_ref_supplier) {
470 $param .=
'&search_ref_supplier='.urlencode($search_ref_supplier);
473 $param .=
'&search_label='.urlencode($search_label);
476 $param .=
'&search_desc='.urlencode($search_desc);
478 if ($search_amount) {
479 $param .=
'&search_amount='.urlencode($search_amount);
482 $param .=
'&search_vat='.urlencode($search_vat);
484 if ($search_country) {
485 $param .=
"&search_country=".urlencode($search_country);
487 if ($search_tvaintra) {
488 $param .=
"&search_tvaintra=".urlencode($search_tvaintra);
491 $parameters = array(
'param' => &$param);
492 $reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object, $action);
493 $param .= $hookmanager->resPrint;
495 $arrayofmassactions = array(
496 'set_default_account' =>
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"ConfirmPreselectAccount"),
497 'ventil' =>
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"Ventilate")
503 $massactionbutton =
'';
504 if ($massaction !==
'set_default_account') {
505 $massactionbutton = $form->selectMassAction(
'ventil', $arrayofmassactions, 1);
508 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="post">'.
"\n";
509 print
'<input type="hidden" name="action" value="ventil">';
510 if ($optioncss !=
'') {
511 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
513 print
'<input type="hidden" name="token" value="'.newToken().
'">';
514 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
515 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
516 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
517 print
'<input type="hidden" name="page" value="'.$page.
'">';
520 print_barre_liste($langs->trans(
"InvoiceLines").
'<br><span class="opacityhigh small">'.$langs->trans(
"DescVentilTodoCustomer").
'</span>', $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, (
string) $massactionbutton, $num_lines, $nbtotalofrecords,
'title_accountancy', 0,
'',
'', $limit, 0, 0, 1);
523 if ($massaction ==
'set_default_account') {
524 $formquestion = array();
525 $formquestion[] = array(
'type' =>
'other',
526 'name' =>
'set_default_account',
527 'label' => $langs->trans(
"AccountancyCode"),
528 'value' => $formaccounting->select_account(
'',
'default_account', 1, array(), 0, 0,
'maxwidth200 maxwidthonsmartphone',
'cachewithshowemptyone'));
529 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmPreselectAccount"), $langs->trans(
"ConfirmPreselectAccountQuestion", count($toselect)),
"confirm_set_default_account", $formquestion, 1, 0, 200, 500, 1);
538 $varpage = $contextpage;
539 $htmlofselectarray = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
$conf->main_checkbox_left_column);
540 $selectedfields = $htmlofselectarray;
541 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
543 print
'<div class="div-table-responsive">';
544 print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
547 print
'<tr class="liste_titre_filter">';
549 if (
$conf->main_checkbox_left_column) {
550 print
'<td class="liste_titre maxwidthsearch center actioncolumn">';
551 $searchpicto = $form->showFilterButtons(
'left');
556 if (!empty($arrayfields[
'l.rowid'][
'checked'])) {
557 print
'<td class="liste_titre" data-key="lineid">';
558 print
'<input type="text" class="flat maxwidth40" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).
'">';
562 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
563 print
'<td class="liste_titre" data-key="invoice">';
564 print
'<input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).
'">';
568 if (!empty($arrayfields[
'f.label'][
'checked'])) {
569 print
'<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).
'"></td>';
572 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
573 print
'<td class="liste_titre center">';
574 print
'<div class="nowrapfordate">';
575 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
577 print
'<div class="nowrapfordate">';
578 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
583 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
584 print
'<td class="liste_titre" data-key="ref">';
585 print
'<input type="text" class="flat maxwidth50" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
589 if (!empty($arrayfields[
'l.description'][
'checked'])) {
590 print
'<td class="liste_titre" data-key="desc">';
591 print
'<input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).
'">';
595 if (!empty($arrayfields[
'l.total_ht'][
'checked'])) {
596 print
'<td class="liste_titre" data-key="amount">';
597 print
'<input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).
'">';
601 if (!empty($arrayfields[
'l.tva_tx'][
'checked'])) {
602 print
'<td class="liste_titre" data-key="vat">';
603 print
'<input type="text" class="right flat maxwidth50" placeholder="%" name="search_vat" size="1" value="'.dol_escape_htmltag($search_vat).
'">';
607 if (!empty($arrayfields[
's.nom'][
'checked'])) {
608 print
'<td class="liste_titre" data-key="societe">';
609 print
'<input type="text" class="flat maxwidth75imp" name="search_societe" value="'.dol_escape_htmltag($search_societe).
'">';
613 if (!empty($arrayfields[
'co.label'][
'checked'])) {
614 print
'<td class="liste_titre" data-key="country">';
615 print $form->select_country($search_country,
'search_country',
'', 0,
'maxwidth125',
'code2', 1, 0, 1);
619 if (!empty($arrayfields[
's.tva_intra'][
'checked'])) {
620 print
'<td class="liste_titre">';
621 print
'<input type="text" class="flat maxwidth50" name="search_tvaintra" value="'.dol_escape_htmltag($search_tvaintra).
'">';
625 if (!empty($arrayfields[
'aa.data_suggest'][
'checked'])) {
626 print
'<td class="liste_titre"></td>';
629 if (!empty($arrayfields[
'aa.account_number'][
'checked'])) {
630 print
'<td class="liste_titre"></td>';
633 $parameters = array(
'arrayfields' => $arrayfields);
634 $reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
635 print $hookmanager->resPrint;
637 if (!
$conf->main_checkbox_left_column) {
638 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
639 $searchpicto = $form->showFilterButtons();
650 print
'<tr class="liste_titre">';
652 if (
$conf->main_checkbox_left_column) {
653 print
getTitleFieldOfList($selectedfields, 0, $_SERVER[
"PHP_SELF"],
'',
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ').
"\n";
657 if (!empty($arrayfields[
'l.rowid'][
'checked'])) {
658 print_liste_field_titre($arrayfields[
'l.rowid'][
'label'], $_SERVER[
"PHP_SELF"],
"l.rowid",
"", $param,
'', $sortfield, $sortorder);
662 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
663 print_liste_field_titre($arrayfields[
'f.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"f.ref",
"", $param,
'', $sortfield, $sortorder);
667 if (!empty($arrayfields[
'f.libelle'][
'checked'])) {
668 print_liste_field_titre($arrayfields[
'f.libelle'][
'label'], $_SERVER[
"PHP_SELF"],
"f.libelle",
"", $param,
'', $sortfield, $sortorder);
672 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
673 print_liste_field_titre($arrayfields[
'f.datef'][
'label'], $_SERVER[
"PHP_SELF"],
"f.datef, f.ref, l.rowid",
"", $param,
'', $sortfield, $sortorder,
'center ');
677 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
678 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"p.ref",
"", $param,
'', $sortfield, $sortorder);
682 if (!empty($arrayfields[
'l.description'][
'checked'])) {
683 print_liste_field_titre($arrayfields[
'l.description'][
'label'], $_SERVER[
"PHP_SELF"],
"l.description",
"", $param,
'', $sortfield, $sortorder);
687 if (!empty($arrayfields[
'l.total_ht'][
'checked'])) {
688 print_liste_field_titre($arrayfields[
'l.total_ht'][
'label'], $_SERVER[
"PHP_SELF"],
"l.total_ht",
"", $param,
'', $sortfield, $sortorder,
'right ');
692 if (!empty($arrayfields[
'l.tva_tx'][
'checked'])) {
693 print_liste_field_titre($arrayfields[
'l.tva_tx'][
'label'], $_SERVER[
"PHP_SELF"],
"l.tva_tx",
"", $param,
'', $sortfield, $sortorder,
'right ');
697 if (!empty($arrayfields[
's.nom'][
'checked'])) {
698 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"s.nom",
"", $param,
'', $sortfield, $sortorder);
702 if (!empty($arrayfields[
'co.label'][
'checked'])) {
703 print_liste_field_titre($arrayfields[
'co.label'][
'label'], $_SERVER[
"PHP_SELF"],
"co.label",
"", $param,
'', $sortfield, $sortorder);
707 if (!empty($arrayfields[
's.tva_intra'][
'checked'])) {
708 print_liste_field_titre($arrayfields[
's.tva_intra'][
'label'], $_SERVER[
"PHP_SELF"],
"s.tva_intra",
"", $param,
'', $sortfield, $sortorder);
712 if (!empty($arrayfields[
'aa.data_suggest'][
'checked'])) {
713 print_liste_field_titre($arrayfields[
'aa.data_suggest'][
'label'], $_SERVER[
"PHP_SELF"],
"aa.account_number",
"", $param,
'', $sortfield, $sortorder);
717 if (!empty($arrayfields[
'aa.account_number'][
'checked'])) {
718 print_liste_field_titre($arrayfields[
'aa.account_number'][
'label'], $_SERVER[
"PHP_SELF"],
"aa.account_number",
"", $param,
'', $sortfield, $sortorder);
722 $parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
723 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
724 print $hookmanager->resPrint;
726 if (!
$conf->main_checkbox_left_column) {
727 print
getTitleFieldOfList($selectedfields, 0, $_SERVER[
"PHP_SELF"],
'',
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ').
"\n";
737 $accountingaccount_codetotid_cache = array();
738 $suggestedaccountingaccountfor =
'';
739 $suggestedaccountingaccountbydefaultfor =
'';
743 while ($i < min($num_lines, $limit)) {
744 $objp =
$db->fetch_object($result);
753 $thirdpartystatic->id = $objp->socid;
754 $thirdpartystatic->name = $objp->name;
755 $thirdpartystatic->client = $objp->client;
756 $thirdpartystatic->fournisseur = $objp->fournisseur;
757 $thirdpartystatic->code_client = $objp->code_client;
758 $thirdpartystatic->code_compta_client = $objp->code_compta_client;
759 $thirdpartystatic->code_fournisseur = $objp->code_fournisseur;
760 $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur;
761 $thirdpartystatic->email = $objp->email;
762 $thirdpartystatic->country_code = $objp->country_code;
763 $thirdpartystatic->tva_intra = $objp->tva_intra;
764 $thirdpartystatic->code_compta_product = $objp->company_code_buy;
766 $product_static->ref = $objp->product_ref;
767 $product_static->id = $objp->product_id;
768 $product_static->type = $objp->type;
769 $product_static->label = $objp->product_label;
770 $product_static->status = $objp->status;
771 $product_static->status_buy = $objp->status_buy;
772 $product_static->accountancy_code_sell = $objp->code_sell;
773 $product_static->accountancy_code_sell_intra = $objp->code_sell_intra;
774 $product_static->accountancy_code_sell_export = $objp->code_sell_export;
775 $product_static->accountancy_code_buy = $objp->code_buy;
776 $product_static->accountancy_code_buy_intra = $objp->code_buy_intra;
777 $product_static->accountancy_code_buy_export = $objp->code_buy_export;
778 $product_static->tva_tx = $objp->tva_tx_prod;
780 $facturefourn_static->ref = $objp->ref;
781 $facturefourn_static->id = $objp->facid;
782 $facturefourn_static->type = $objp->ftype;
783 $facturefourn_static->ref_supplier = $objp->ref_supplier;
784 $facturefourn_static->label = $objp->invoice_label;
785 $facturefourn_static->date =
$db->jdate($objp->datef);
786 $facturefourn_static->fk_facture_source = $objp->fk_facture_source;
788 $facturefourn_static_det->id = $objp->rowid;
789 $facturefourn_static_det->total_ht = $objp->total_ht;
790 $facturefourn_static_det->tva_tx = $objp->tva_tx_line;
791 $facturefourn_static_det->vat_src_code = $objp->vat_src_code;
792 $facturefourn_static_det->product_type = $objp->type_l;
793 $facturefourn_static_det->desc = $objp->description;
795 $accountingAccountArray = array(
796 'dom' => $objp->aarowid,
797 'intra' => $objp->aarowid_intra,
798 'export' => $objp->aarowid_export,
799 'thirdparty' => $objp->aarowid_thirdparty);
801 $code_buy_p_notset =
'';
802 $code_buy_t_notset =
'';
806 $return = $accountingAccount->getAccountingCodeToBind(
$mysoc, $thirdpartystatic, $product_static, $facturefourn_static, $facturefourn_static_det, $accountingAccountArray,
'supplier');
807 if (!is_array($return) && $return < 0) {
810 $suggestedid = $return[
'suggestedid'];
811 $suggestedaccountingaccountfor = $return[
'suggestedaccountingaccountfor'];
812 $suggestedaccountingaccountbydefaultfor = $return[
'suggestedaccountingaccountbydefaultfor'];
813 $code_buy_l = $return[
'code_l'];
814 $code_buy_p = $return[
'code_p'];
815 $code_buy_t = $return[
'code_t'];
819 if (!empty($code_buy_p)) {
822 $code_buy_p_notset =
'color:orange';
824 if (empty($code_buy_l) && empty($code_buy_p)) {
825 $code_buy_p_notset =
'color:red';
836 print
'<tr class="oddeven">';
839 if (
$conf->main_checkbox_left_column) {
840 print
'<td class="nowrap center actioncolumn">';
841 $selected = in_array($objp->rowid.
"_".$i, $toselect);
842 print
'<input type="checkbox" class="flat checkforselect checkforselect'.$facturefourn_static_det->id.
'" name="toselect[]" value="'.$facturefourn_static_det->id.
"_".$i.
'"'.($selected ?
" checked" :
"").
'/>';
850 if (!empty($arrayfields[
'l.rowid'][
'checked'])) {
851 print
'<td>'.$facturefourn_static_det->id.
'</td>';
855 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
856 print
'<td class="nowraponall cell2linesheight">'.$facturefourn_static->getNomUrl(1);
857 if ($objp->ref_supplier) {
858 print
'<br><span class="opacitymedium small">'.dol_escape_htmltag($objp->ref_supplier).
'</span>';
870 if (!empty($arrayfields[
'f.libelle'][
'checked'])) {
871 print
'<td class="tdoverflowmax100 small" title="'.dol_escape_htmltag($objp->invoice_label).
'">';
877 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
878 print
'<td class="center">'.dol_print_date($facturefourn_static->date,
'day').
'</td>';
882 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
883 print
'<td class="tdoverflowmax100 cell2linesheight">';
884 if ($product_static->id > 0) {
885 print $product_static->getNomUrl(1);
887 if ($product_static->label) {
888 print
'<br><span class="opacitymedium small">'.dol_escape_htmltag($product_static->label).
'</span>';
894 if (!empty($arrayfields[
'l.description'][
'checked'])) {
896 print
'<td class="tdoverflowmax150 small classfortooltip" title="'.dol_escape_htmltag($text).
'">';
902 if (!empty($arrayfields[
'l.total_ht'][
'checked'])) {
903 print
'<td class="right nowraponall amount">';
904 print
price($objp->total_ht);
909 if (!empty($arrayfields[
'l.tva_tx'][
'checked'])) {
910 $code_vat_differ =
'';
914 print
'<td class="right cell2linesheight'.($code_vat_differ ?
' '.$code_vat_differ :
'').
'">';
915 print
vatrate($facturefourn_static_det->tva_tx.($facturefourn_static_det->vat_src_code ?
' ('.$facturefourn_static_det->vat_src_code.
')' :
''), false, 0, 0, 1);
920 if (!empty($arrayfields[
's.nom'][
'checked'])) {
921 print
'<td class="tdoverflowmax100">'.$thirdpartystatic->getNomUrl(1,
'supplier').
'</td>';
925 if (!empty($arrayfields[
'co.label'][
'checked'])) {
926 $labelcountry = ($objp->country_code && ($langs->trans(
"Country".$objp->country_code) !=
"Country".$objp->country_code)) ? $langs->trans(
"Country".$objp->country_code) : $objp->country_label;
927 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($labelcountry).
'">';
933 if (!empty($arrayfields[
'co.label'][
'checked'])) {
934 print
'<td class="tdoverflowmax80" title="'.dol_escape_htmltag($objp->tva_intra).
'">'.
dol_escape_htmltag($objp->tva_intra).
'</td>';
938 if (!empty($arrayfields[
'aa.data_suggest'][
'checked'])) {
939 print
'<td class="small cell2linesheight">';
940 $s =
'1. '.(($facturefourn_static_det->product_type == 1) ? $langs->trans(
"DefaultForService") : $langs->trans(
"DefaultForProduct")).
': ';
943 if ($suggestedaccountingaccountbydefaultfor ==
'eec') {
944 $shelp .= $langs->trans(
"SaleEEC");
945 } elseif ($suggestedaccountingaccountbydefaultfor ==
'eecwithvat') {
946 $shelp = $langs->trans(
"SaleEECWithVAT");
947 } elseif ($suggestedaccountingaccountbydefaultfor ==
'eecwithoutvatnumber') {
948 $shelp = $langs->trans(
"SaleEECWithoutVATNumber");
950 } elseif ($suggestedaccountingaccountbydefaultfor ==
'export') {
951 $shelp .= $langs->trans(
"SaleExport");
953 $s .= ($code_buy_l > 0 ?
length_accountg($code_buy_l) :
'<span style="'.$code_buy_p_notset.
'">'.$langs->trans(
"NotDefined").
'</span>');
954 $textforrule = $form->textwithpicto($s, $shelp, 1, $ttype,
'', 0, 2,
'', 1);
955 if ($product_static->id > 0) {
956 $textforrule .=
'<br>';
957 $s =
'2. '.(($facturefourn_static_det->product_type == 1) ? $langs->trans(
"ThisService") : $langs->trans(
"ThisProduct")).
': ';
960 if ($suggestedaccountingaccountfor ==
'eec') {
961 $shelp = $langs->trans(
"SaleEEC");
962 } elseif ($suggestedaccountingaccountfor ==
'eecwithvat') {
963 $shelp = $langs->trans(
"SaleEECWithVAT");
964 } elseif ($suggestedaccountingaccountfor ==
'eecwithoutvatnumber') {
965 $shelp = $langs->trans(
"SaleEECWithoutVATNumber");
967 } elseif ($suggestedaccountingaccountfor ==
'export') {
968 $shelp = $langs->trans(
"SaleExport");
970 $s .= (empty($code_buy_p) ?
'<span style="'.$code_buy_p_notset.
'">'.$langs->trans(
"NotDefined").
'</span>' :
length_accountg($code_buy_p));
971 $textforrule .= $form->textwithpicto($s, $shelp, 1, $ttype,
'', 0, 2,
'', 1);
973 $textforrule .=
'<br>';
974 $s =
'2. '.(($objp->type_l == 1) ? $langs->trans(
"ThisService") : $langs->trans(
"ThisProduct")).
': ';
976 $s .= $langs->trans(
"NotDefined");
977 $textforrule .= $form->textwithpicto($s, $shelp, 1,
'help',
'', 0, 2,
'', 1);
980 $textforrule .=
'<br>';
981 $s =
'3. '.(($facturefourn_static_det->product_type == 1) ? $langs->trans(
"ServiceForThisThirdparty") : $langs->trans(
"ProductForThisThirdparty")).
': ';
983 $s .= ($code_buy_t > 0 ?
length_accountg($code_buy_t) :
'<span style="'.$code_buy_t_notset.
'">'.$langs->trans(
"NotDefined").
'</span>');
984 $textforrule .= $form->textwithpicto($s, $shelp, 1,
'help',
'', 0, 2,
'', 1);
991 if (!empty($arrayfields[
'aa.account_number'][
'checked'])) {
993 print $formaccounting->select_account(($default_account > 0 && $confirm ===
'yes' && in_array($objp->rowid.
"_".$i, $toselect)) ? (
string) $default_account : (
string) $suggestedid,
'codeventil'.$facturefourn_static_det->id, 1, array(), 0, 0,
'codeventil maxwidth150 maxwidthonsmartphone',
'cachewithshowemptyone');
998 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $objp,
'i' => $i,
'totalarray' => &
$totalarray);
999 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
1000 print $hookmanager->resPrint;
1002 if (!
$conf->main_checkbox_left_column) {
1003 print
'<td class="nowrap center actioncolumn">';
1004 $selected = in_array($objp->rowid.
"_".$i, $toselect);
1005 print
'<input type="checkbox" class="flat checkforselect checkforselect'.$facturefourn_static_det->id.
'" name="toselect[]" value="'.$facturefourn_static_det->id.
"_".$i.
'"'.($selected ?
" checked" :
"").
'/>';
1015 if ($num_lines == 0) {
1017 foreach ($arrayfields as $key => $val) {
1018 if (!empty($val[
'checked'])) {
1022 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1025 $parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
1026 $reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1027 print $hookmanager->resPrint;
1036if (
$db->type ==
'mysqli') {
1037 $db->query(
"SET SQL_BIG_SELECTS=0");
1041print
'<script type="text/javascript">
1042jQuery(document).ready(function() {
1043 jQuery(".codeventil").change(function() {
1044 var s=$(this).attr("id").replace("codeventil", "")
1045 console.log(s+" "+$(this).val());
1046 if ($(this).val() == -1) jQuery(".checkforselect"+s).prop("checked", false);
1047 else jQuery(".checkforselect"+s).prop("checked", true);
if(! $sortfield) if(! $sortorder) $object
length_accountg($account)
Return General accounting account with defined length (used for product and miscellaneous)
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage accounting accounts.
const TYPE_SITUATION
Situation invoice.
Class to manage suppliers invoices.
const TYPE_DEPOSIT
Deposit invoice.
const TYPE_CREDIT_NOTE
Credit note invoice.
const TYPE_REPLACEMENT
Replacement invoice.
Class to manage products or services.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage line invoices.
getCountriesInEEC()
Return list of countries that are inside the EEC (European Economic Community) Note: Try to keep this...
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
dol_getIdFromCode($db, $key, $tablename, $fieldkey='code', $fieldid='id', $entityfilter=0, $filters='', $useCache=true)
Return an id or code from a code or id.
vatrate($rate, $addpercent=false, $info_bits=0, $usestarfornpr=0, $html=0)
Return a string with VAT rate label formatted for view output Used into pdf and HTML pages.
dolGetFirstLineOfText($text, $nboflines=1, $charset='UTF-8')
Return first line of text.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
natural_search($fields, $value, $mode=0, $nofirstand=0, $sqltoadd='')
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0, $nodefault=0)
Return value of a param into GET or POST supervariable.
GETPOSTINT($paramname, $method=0, $nodefault=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '...' if string larger than length.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
dolPrintHTML($s, $allowiframe=0, $moreallowedtags=array())
Return a string (that can be on several lines) ready to be output on a HTML page.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0, $attop=0)
Set event message in dol_events session object.
getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $disablesortlink=0, $tooltip='', $forcenowrapcolumntitle=0)
Get title line of an array.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
print $langs trans("Show") . '< td style="' . $timeColor . '" align="center"> s</td > badge status0 badge status4 badge status3 Error badge status8< td align="center">< span class="badge ' . $badge . '"></span ></td >< td align="center">< a href="#" class="button button-small" onclick="openLogModal(this)" data-req="' . dol_escape_htmltag($reqSafe) . '" data-res="' . dol_escape_htmltag($resSafe) . '" data-err="' . dol_escape_htmltag($errSafe) . '">< span class="fa fa-search-plus"></span ></a ></td ></tr >< tr >< td colspan="' . $colspan . '" class="opacitymedium"></td ></tr ></table ></div ></form > logModal none logModal none s a JSON string
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.