32require
'../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/lib/product.lib.php';
34require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
36require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
39 require_once DOL_DOCUMENT_ROOT.
'/product/class/productcustomerprice.class.php';
46$langs->loadLangs(array(
"products",
"companies",
"bills"));
50$action =
GETPOST(
'action',
'aZ09');
51$search_prod =
GETPOST(
'search_prod',
'alpha');
52$cancel =
GETPOST(
'cancel',
'alpha');
53$search_label =
GETPOST(
'search_label',
'alpha');
54$search_price =
GETPOST(
'search_price');
55$search_price_ttc =
GETPOST(
'search_price_ttc');
60 $socid = $user->socid;
68$hookmanager->initHooks(array(
'thirdpartycustomerprice',
'globalcard'));
77$parameters = array(
'id' => $socid);
78$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
84 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
85 $search_prod = $search_label = $search_price = $search_price_ttc =
'';
88 if ($action ==
'add_customer_price_confirm' && !$cancel && ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer'))) {
91 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->trans(
"Product")),
null,
'errors');
92 $action =
'add_customer_price';
96 $update_child_soc =
GETPOST(
'updatechildprice');
99 $prodcustprice->fk_soc = $socid;
100 $prodcustprice->ref_customer =
GETPOST(
'ref_customer',
'alpha');
101 $prodcustprice->fk_product =
GETPOSTINT(
'prodid');
104 $prodcustprice->price_base_type =
GETPOST(
"price_base_type",
'alpha');
106 $tva_tx_txt =
GETPOST(
'tva_tx',
'alpha');
110 $tva_tx = preg_replace(
'/[^0-9\.].*$/',
'', $tva_tx_txt);
111 $npr = preg_match(
'/\*/', $tva_tx_txt) ? 1 : 0;
114 $localtax1_type =
'0';
115 $localtax2_type =
'0';
117 if (preg_match(
'/\((.*)\)/', $tva_tx_txt, $reg)) {
119 $vatratecode = $reg[1];
121 $sql =
"SELECT t.rowid, t.code, t.recuperableonly, t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type";
122 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_tva as t, ".MAIN_DB_PREFIX.
"c_country as c";
123 $sql .=
" WHERE t.fk_pays = c.rowid AND c.code = '".$db->escape($mysoc->country_code).
"'";
124 $sql .=
" AND t.taux = ".((float) $tva_tx).
" AND t.active = 1";
125 $sql .=
" AND t.code = '".$db->escape($vatratecode).
"'";
126 $sql .=
" AND t.entity IN (".getEntity(
'c_tva').
")";
127 $resql = $db->query($sql);
129 $obj = $db->fetch_object($resql);
130 $npr = $obj->recuperableonly;
131 $localtax1 = $obj->localtax1;
132 $localtax2 = $obj->localtax2;
133 $localtax1_type = $obj->localtax1_type;
134 $localtax2_type = $obj->localtax2_type;
138 $prodcustprice->default_vat_code = $vatratecode;
139 $prodcustprice->tva_tx = $tva_tx;
140 $prodcustprice->recuperableonly = $npr;
141 $prodcustprice->localtax1_tx = $localtax1;
142 $prodcustprice->localtax2_tx = $localtax2;
143 $prodcustprice->localtax1_type = $localtax1_type;
144 $prodcustprice->localtax2_type = $localtax2_type;
146 $result = $prodcustprice->create($user, 0, $update_child_soc);
158 if ($action ==
'delete_customer_price' && ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer'))) {
161 $result = $prodcustprice->delete($user);
171 if ($action ==
'update_customer_price_confirm' && !$cancel && ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer'))) {
174 $update_child_soc =
GETPOST(
'updatechildprice');
177 $prodcustprice->ref_customer =
GETPOST(
'ref_customer',
'alpha');
180 $prodcustprice->price_base_type =
GETPOST(
"price_base_type",
'alpha');
181 $prodcustprice->tva_tx = str_replace(
'*',
'',
GETPOST(
"tva_tx"));
182 $prodcustprice->recuperableonly = (preg_match(
'/\*/',
GETPOST(
"tva_tx")) ? 1 : 0);
184 $result = $prodcustprice->update($user, 0, $update_child_soc);
200$form =
new Form($db);
204$result =
$object->fetch($socid);
205llxHeader(
"", $langs->trans(
"ThirdParty").
'-'.$langs->trans(
'PriceByCustomer'));
211$linkback =
'<a href="'.DOL_URL_ROOT.
'/societe/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
213dol_banner_tab($object,
'socid', $linkback, ($user->socid ? 0 : 1),
'rowid',
'nom');
215print
'<div class="fichecenter">';
217print
'<div class="underbanner clearboth"></div>';
218print
'<table class="border centpercent tableforfield">';
221print
'<tr><td class="titlefield">'.$langs->trans(
'NatureOfThirdParty').
'</td><td>';
226 print
'<tr><td class="titlefield">'.$langs->trans(
'Prefix').
'</td><td colspan="3">'.
$object->prefix_comm.
'</td></tr>';
230 print
'<tr><td class="titlefield">';
231 print $langs->trans(
'CustomerCode').
'</td><td colspan="3">';
233 $tmpcheck =
$object->check_codeclient();
234 if ($tmpcheck != 0 && $tmpcheck != -5) {
235 print
' <span class="error">('.$langs->trans(
"WrongCustomerCode").
')</span>';
241 print
'<tr><td class="titlefield">';
242 print $langs->trans(
'SupplierCode').
'</td><td colspan="3">';
243 print
$object->code_fournisseur;
244 $tmpcheck =
$object->check_codefournisseur();
245 if ($tmpcheck != 0 && $tmpcheck != -5) {
246 print
' <span class="error">('.$langs->trans(
"WrongSupplierCode").
')</span>';
262 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
263 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
266 if (empty($page) || $page == -1) {
269 $offset = $limit * $page;
270 $pageprev = $page - 1;
271 $pagenext = $page + 1;
276 $sortfield =
"soc.nom";
284 if (!empty($search_prod)) {
285 $filter [
'prod.ref'] = $search_prod;
288 if (!empty($search_label)) {
289 $filter [
'prod.label'] = $search_label;
292 if (!empty($search_price)) {
293 $filter [
't.price'] = $search_price;
296 if (!empty($search_price_ttc)) {
297 $filter [
't.price_ttc'] = $search_price_ttc;
300 if ($action ==
'add_customer_price') {
304 print
'<!-- Price by customer -->'.
"\n";
308 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?socid='.
$object->id.
'" method="POST">';
309 print
'<input type="hidden" name="token" value="'.newToken().
'">';
310 print
'<input type="hidden" name="action" value="add_customer_price_confirm">';
311 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
312 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
313 print
'<input type="hidden" name="socid" value="'.$object->id.
'">';
314 print
'<table class="border centpercent">';
316 print
'<td>'.$langs->trans(
'Product').
'</td>';
318 $form->select_produits(
'',
'prodid',
'', 0);
323 print
'<tr><td>'.$langs->trans(
'RefCustomer').
'</td>';
324 print
'<td><input name="ref_customer" size="12"></td></tr>';
327 print
'<tr><td>'.$langs->trans(
"VATRate").
'</td><td>';
328 print $form->load_tva(
"tva_tx",
GETPOST(
"tva_tx",
"alpha"), $mysoc,
'',
$object->id, 0,
'',
false, 1);
332 print
'<tr><td width="15%">';
333 print $langs->trans(
'PriceBase');
336 print $form->selectPriceBaseType(
GETPOST(
"price_base_type",
"aZ09"),
"price_base_type");
341 print
'<tr><td width="20%">';
342 $text = $langs->trans(
'SellingPrice');
343 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
345 print
'<input name="price" size="10" value="'.GETPOSTINT(
'price').
'">';
350 $text = $langs->trans(
'MinPrice');
351 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
352 print
'<td><input name="price_min" size="10" value="'.GETPOSTINT(
'price_min').
'">';
356 print
'<tr><td width="15%">';
357 print $langs->trans(
'ForceUpdateChildPriceSoc');
360 print
'<input type="checkbox" name="updatechildprice" value="1"/>';
366 print $form->buttonsSaveCancel();
369 } elseif ($action ==
'edit_customer_price') {
374 $result = $prodcustprice->fetch(
GETPOSTINT(
'lineid'));
379 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?socid='.
$object->id.
'" method="POST">';
380 print
'<input type="hidden" name="token" value="'.newToken().
'">';
381 print
'<input type="hidden" name="action" value="update_customer_price_confirm">';
382 print
'<input type="hidden" name="lineid" value="'.$prodcustprice->id.
'">';
383 print
'<table class="border centpercent">';
385 print
'<td>'.$langs->trans(
'Product').
'</td>';
386 $staticprod =
new Product($db);
387 $staticprod->fetch($prodcustprice->fk_product);
388 print
"<td>".$staticprod->getNomUrl(1).
"</td>";
392 print
'<tr><td>'.$langs->trans(
'RefCustomer').
'</td>';
393 print
'<td><input name="ref_customer" size="12" value="'.dol_escape_htmltag($prodcustprice->ref_customer).
'"></td></tr>';
396 print
'<tr><td>'.$langs->trans(
"VATRate").
'</td><td>';
397 print $form->load_tva(
"tva_tx", $prodcustprice->tva_tx, $mysoc,
'', $staticprod->id, $prodcustprice->recuperableonly);
401 print
'<tr><td width="15%">';
402 print $langs->trans(
'PriceBase');
405 print $form->selectPriceBaseType($prodcustprice->price_base_type,
"price_base_type");
411 $text = $langs->trans(
'SellingPrice');
412 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
414 if ($prodcustprice->price_base_type ==
'TTC') {
415 print
'<input name="price" size="10" value="'.price($prodcustprice->price_ttc).
'">';
417 print
'<input name="price" size="10" value="'.price($prodcustprice->price).
'">';
423 $text = $langs->trans(
'MinPrice');
424 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
426 if ($prodcustprice->price_base_type ==
'TTC') {
427 print
'<input name="price_min" size="10" value="'.price($prodcustprice->price_min_ttc).
'">';
429 print
'<input name="price_min" size="10" value="'.price($prodcustprice->price_min).
'">';
435 print $langs->trans(
'ForceUpdateChildPriceSoc');
438 print
'<input type="checkbox" name="updatechildprice" value="1">';
444 print $form->buttonsSaveCancel();
448 } elseif ($action ==
'showlog_customer_price') {
450 print
'<!-- showlog_customer_price -->'.
"\n";
458 $nbtotalofrecords =
'';
459 $result = $prodcustprice->fetchAllLog($sortorder, $sortfield, $conf->liste_limit, $offset, $filter);
464 $nbtotalofrecords = $result;
468 $option =
'&socid='.GETPOSTINT(
'socid').
'&prodid='.
GETPOSTINT(
'prodid');
471 print_barre_liste($langs->trans(
'PriceByCustomerLog'), $page, $_SERVER [
'PHP_SELF'], $option, $sortfield, $sortorder,
'', count($prodcustprice->lines), $nbtotalofrecords);
473 if (count($prodcustprice->lines) > 0) {
474 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="POST">';
475 print
'<input type="hidden" name="token" value="'.newToken().
'">';
476 print
'<input type="hidden" name="id" value="'.$object->id.
'">';
478 print
'<table class="noborder centpercent">';
480 print
'<tr class="liste_titre">';
481 print
'<td>'.$langs->trans(
"Product").
'</td>';
482 print
'<td>'.$langs->trans(
'RefCustomer').
'</td>';
483 print
'<td>'.$langs->trans(
"AppliedPricesFrom").
'</td>';
484 print
'<td class="center">'.$langs->trans(
"PriceBase").
'</td>';
485 print
'<td class="right">'.$langs->trans(
"VAT").
'</td>';
486 print
'<td class="right">'.$langs->trans(
"HT").
'</td>';
487 print
'<td class="right">'.$langs->trans(
"TTC").
'</td>';
488 print
'<td class="right">'.$langs->trans(
"MinPrice").
' '.$langs->trans(
"HT").
'</td>';
489 print
'<td class="right">'.$langs->trans(
"MinPrice").
' '.$langs->trans(
"TTC").
'</td>';
490 print
'<td class="right">'.$langs->trans(
"ChangedBy").
'</td>';
494 foreach ($prodcustprice->lines as $line) {
495 $staticprod =
new Product($db);
496 $staticprod->fetch($line->fk_product);
498 $userstatic =
new User($db);
499 $userstatic->fetch($line->fk_user);
501 print
'<tr class="oddeven">';
503 print
"<td>".$staticprod->getNomUrl(1).
"</td>";
504 print
'<td>'.$line->ref_customer.
'</td>';
505 print
"<td>".dol_print_date($line->datec,
"dayhour").
"</td>";
507 print
'<td class="center">'.$langs->trans($line->price_base_type).
"</td>";
508 print
'<td class="right">'.vatrate($line->tva_tx,
true, $line->recuperableonly).
"</td>";
509 print
'<td class="right">'.price($line->price).
"</td>";
510 print
'<td class="right">'.price($line->price_ttc).
"</td>";
511 print
'<td class="right">'.price($line->price_min).
'</td>';
512 print
'<td class="right">'.price($line->price_min_ttc).
'</td>';
515 print
'<td class="right">';
516 print $userstatic->getNomUrl(-1);
522 print $langs->trans(
'None');
525 print
"\n".
'<div class="tabsAction">'.
"\n";
526 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?socid='.
$object->id.
'">'.$langs->trans(
"Ok").
'</a></div>';
527 print
"\n</div><br>\n";
534 print
"\n".
'<div class="tabsAction">'.
"\n";
536 if ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer')) {
537 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?action=add_customer_price&token='.
newToken().
'&socid='.
$object->id.
'">'.$langs->trans(
"AddCustomerPrice").
'</a></div>';
542 $arrayfields = array();
543 foreach ($prodcustprice->fields as $key => $val) {
545 if (!empty($val[
'visible'])) {
546 $visible = (int)
dol_eval($val[
'visible'], 1, 1,
'1');
547 $arrayfields[
't.'.$key] = array(
548 'label' => $val[
'label'],
549 'checked' => (($visible < 0) ? 0 : 1),
550 'enabled' => (abs($visible) != 3 && (bool)
dol_eval($val[
'enabled'], 1)),
551 'position' => $val[
'position'],
552 'help' => isset($val[
'help']) ? $val[
'help'] :
''
559 $nbtotalofrecords =
'';
561 $nbtotalofrecords = $prodcustprice->fetchAll(
'',
'', 0, 0, $filter);
564 $result = $prodcustprice->fetchAll($sortorder, $sortfield, $conf->liste_limit, $offset, $filter);
569 $option =
'&search_prod='.$search_prod.
'&id='.
$object->id.
'&label='.$search_label.
'&price='.$search_price.
'&price_ttc='.$search_price_ttc;
571 print
'<!-- view specific price for each product -->'.
"\n";
574 print_barre_liste($langs->trans(
'PriceForEachProduct'), $page, $_SERVER[
'PHP_SELF'], $option, $sortfield, $sortorder,
'', count($prodcustprice->lines), $nbtotalofrecords,
'');
576 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="POST">';
577 print
'<input type="hidden" name="token" value="'.newToken().
'">';
578 print
'<input type="hidden" name="id" value="'.$object->id.
'">';
579 if (!empty($sortfield)) {
580 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'"/>';
582 if (!empty($sortorder)) {
583 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'"/>';
585 print
'<div class="div-table-responsive-no-min">';
586 print
'<table class="noborder centpercent liste">';
588 $param =
'socid='.$object->id.
'&';
590 $param .=
'&search_prod='.urlencode($search_prod);
593 $param .=
'&search_label='.urlencode($search_label);
596 $param .=
'&search_price='.urlencode($search_price);
599 $param .=
'&search_price='.urlencode($search_price);
601 if ($search_price_ttc) {
602 $param .=
'&search_price_ttc='.urlencode($search_price_ttc);
605 print
'<tr class="liste_titre">';
606 foreach ($prodcustprice->fields as $key => $val) {
607 if (!empty($arrayfields[
't.'.$key][
'checked'])) {
608 print
getTitleFieldOfList($arrayfields[
't.'.$key][
'label'], 0, $_SERVER[
'PHP_SELF'], $key,
'', $param,
'', $sortfield, $sortorder).
"\n";
614 if (count($prodcustprice->lines) > 0 || $search_prod) {
615 print
'<tr class="liste_titre">';
616 print
'<td class="liste_titre"><input type="text" class="flat width75" name="search_prod" value="'.$search_prod.
'"></td>';
617 print
'<td class="liste_titre" ><input type="text" class="flat width75" name="search_label" value="'.$search_label.
'"></td>';
618 print
'<td class="liste_titre"></td>';
619 print
'<td class="liste_titre"></td>';
620 print
'<td class="liste_titre"></td>';
621 print
'<td class="liste_titre"></td>';
622 print
'<td class="liste_titre left"><input type="text" class="flat width75" name="search_price" value="'.$search_price.
'"></td>';
623 print
'<td class="liste_titre left"><input type="text" class="flat width75" name="search_price_ttc" value="'.$search_price_ttc.
'"></td>';
624 print
'<td class="liste_titre"></td>';
625 print
'<td class="liste_titre"></td>';
626 print
'<td class="liste_titre"></td>';
628 print
'<td class="liste_titre maxwidthsearch">';
629 $searchpicto = $form->showFilterAndCheckAddButtons(0);
635 if (count($prodcustprice->lines) > 0) {
636 foreach ($prodcustprice->lines as $line) {
637 $staticprod =
new Product($db);
638 $staticprod->fetch($line->fk_product);
640 $userstatic =
new User($db);
641 $userstatic->fetch($line->fk_user);
643 print
'<tr class="oddeven">';
645 print
'<td class="left">'.$staticprod->getNomUrl(1).
"</td>";
646 print
'<td class="left">'.$staticprod->label.
"</td>";
647 print
'<td class="left">'.$line->ref_customer.
'</td>';
648 print
'<td class="left">'.dol_print_date($line->datec,
"dayhour").
"</td>";
649 print
'<td class="left">'.$langs->trans($line->price_base_type).
"</td>";
650 print
'<td class="left">'.vatrate($line->tva_tx.($line->default_vat_code ?
' ('.$line->default_vat_code.
')' :
''), true, $line->recuperableonly).
"</td>";
651 print
'<td class="left">'.price($line->price).
"</td>";
652 print
'<td class="left">'.price($line->price_ttc).
"</td>";
653 print
'<td class="left">'.price($line->price_min).
'</td>';
654 print
'<td class="left">'.price($line->price_min_ttc).
'</td>';
656 print
'<td class="left">';
657 print $userstatic->getNomUrl(-1);
660 if ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer')) {
661 print
'<td class="right nowraponall">';
662 print
'<a class="paddingleftonly paddingrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?action=showlog_customer_price&token='.
newToken().
'&socid='.
$object->id.
'&prodid='.$line->fk_product.
'">';
666 print
'<a class="editfielda paddingleftonly paddingrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?action=edit_customer_price&token='.
newToken().
'&socid='.
$object->id.
'&lineid='.$line->id.
'">';
667 print
img_edit(
'default', 0,
'style="vertical-align: middle;"');
670 print
'<a class="paddingleftonly paddingrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?action=delete_customer_price&token='.
newToken().
'&socid='.
$object->id.
'&lineid='.$line->id.
'">';
671 print
img_delete(
'default',
'style="vertical-align: middle;"');
680 if ($user->hasRight(
'produit',
'supprimer') || $user->hasRight(
'service',
'supprimer')) {
683 print
'<tr class="oddeven"><td colspan="'.$colspan.
'">'.$langs->trans(
'None').
'</td></tr>';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
File of class to manage predefined price products or services by customer.
Class to manage products or services.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage Dolibarr users.
societe_prepare_head(Societe $object)
Return array of tabs to used on pages for third parties cards.
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dol_eval($s, $returnvalue=1, $hideerrors=1, $onlysimplestring='1')
Replace eval function to add more security.
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...
newToken()
Return the value of token currently saved into session with name 'newtoken'.
getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $disablesortlink=0, $tooltip='', $forcenowrapcolumntitle=0)
Get 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, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
img_info($titlealt='default')
Show info logo.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.