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';
40 require_once DOL_DOCUMENT_ROOT.
'/product/class/productcustomerprice.class.php';
47$langs->loadLangs(array(
"products",
"companies",
"bills"));
51$action =
GETPOST(
'action',
'aZ09');
52$search_prod =
GETPOST(
'search_prod',
'alpha');
53$cancel =
GETPOST(
'cancel',
'alpha');
54$search_label =
GETPOST(
'search_label',
'alpha');
55$search_price =
GETPOST(
'search_price');
56$search_price_ttc =
GETPOST(
'search_price_ttc');
61 $socid = $user->socid;
69$hookmanager->initHooks(array(
'thirdpartycustomerprice',
'globalcard'));
78$parameters = array(
'id' => $socid);
79$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
85 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
86 $search_prod = $search_label = $search_price = $search_price_ttc =
'';
89 if ($action ==
'add_customer_price_confirm' && !$cancel && ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer'))) {
92 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->trans(
"Product")),
null,
'errors');
93 $action =
'add_customer_price';
96 if (!$error && $prodcustprice !==
null) {
97 $update_child_soc =
GETPOST(
'updatechildprice');
100 $prodcustprice->fk_soc = $socid;
101 $prodcustprice->ref_customer =
GETPOST(
'ref_customer',
'alpha');
102 $prodcustprice->fk_product =
GETPOSTINT(
'prodid');
105 $prodcustprice->price_base_type =
GETPOST(
"price_base_type",
'alpha');
107 $tva_tx_txt =
GETPOST(
'tva_tx',
'alpha');
111 $tva_tx = preg_replace(
'/[^0-9\.].*$/',
'', $tva_tx_txt);
112 $npr = preg_match(
'/\*/', $tva_tx_txt) ? 1 : 0;
115 $localtax1_type =
'0';
116 $localtax2_type =
'0';
118 if (preg_match(
'/\((.*)\)/', $tva_tx_txt, $reg)) {
120 $vatratecode = $reg[1];
122 $sql =
"SELECT t.rowid, t.code, t.recuperableonly, t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type";
123 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_tva as t, ".MAIN_DB_PREFIX.
"c_country as c";
124 $sql .=
" WHERE t.fk_pays = c.rowid AND c.code = '".$db->escape($mysoc->country_code).
"'";
125 $sql .=
" AND t.taux = ".((float) $tva_tx).
" AND t.active = 1";
126 $sql .=
" AND t.code = '".$db->escape($vatratecode).
"'";
127 $sql .=
" AND t.entity IN (".getEntity(
'c_tva').
")";
128 $resql = $db->query($sql);
130 $obj = $db->fetch_object($resql);
131 $npr = $obj->recuperableonly;
132 $localtax1 = $obj->localtax1;
133 $localtax2 = $obj->localtax2;
134 $localtax1_type = $obj->localtax1_type;
135 $localtax2_type = $obj->localtax2_type;
139 $prodcustprice->default_vat_code = $vatratecode;
140 $prodcustprice->tva_tx = $tva_tx;
141 $prodcustprice->recuperableonly = $npr;
142 $prodcustprice->localtax1_tx = $localtax1;
143 $prodcustprice->localtax2_tx = $localtax2;
144 $prodcustprice->localtax1_type = $localtax1_type;
145 $prodcustprice->localtax2_type = $localtax2_type;
147 $result = $prodcustprice->create($user, 0, $update_child_soc);
159 if ($action ==
'delete_customer_price' && $prodcustprice !==
null && ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer'))) {
162 $result = $prodcustprice->delete($user);
172 if ($action ==
'update_customer_price_confirm' && !$cancel && $prodcustprice !==
null && ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer'))) {
175 $update_child_soc =
GETPOST(
'updatechildprice');
178 $prodcustprice->ref_customer =
GETPOST(
'ref_customer',
'alpha');
181 $prodcustprice->price_base_type =
GETPOST(
"price_base_type",
'alpha');
182 $prodcustprice->tva_tx = str_replace(
'*',
'',
GETPOST(
"tva_tx"));
183 $prodcustprice->recuperableonly = (preg_match(
'/\*/',
GETPOST(
"tva_tx")) ? 1 : 0);
185 $result = $prodcustprice->update($user, 0, $update_child_soc);
201$form =
new Form($db);
205$result =
$object->fetch($socid);
206llxHeader(
"", $langs->trans(
"ThirdParty").
'-'.$langs->trans(
'PriceByCustomer'));
212$linkback =
'<a href="'.DOL_URL_ROOT.
'/societe/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
214dol_banner_tab($object,
'socid', $linkback, ($user->socid ? 0 : 1),
'rowid',
'nom');
216print
'<div class="fichecenter">';
218print
'<div class="underbanner clearboth"></div>';
219print
'<table class="border centpercent tableforfield">';
222print
'<tr><td class="titlefield">'.$langs->trans(
'NatureOfThirdParty').
'</td><td>';
227 print
'<tr><td class="titlefield">'.$langs->trans(
'Prefix').
'</td><td colspan="3">'.
$object->prefix_comm.
'</td></tr>';
231 print
'<tr><td class="titlefield">';
232 print $langs->trans(
'CustomerCode').
'</td><td colspan="3">';
234 $tmpcheck =
$object->check_codeclient();
235 if ($tmpcheck != 0 && $tmpcheck != -5) {
236 print
' <span class="error">('.$langs->trans(
"WrongCustomerCode").
')</span>';
242 print
'<tr><td class="titlefield">';
243 print $langs->trans(
'SupplierCode').
'</td><td colspan="3">';
244 print
$object->code_fournisseur;
245 $tmpcheck =
$object->check_codefournisseur();
246 if ($tmpcheck != 0 && $tmpcheck != -5) {
247 print
' <span class="error">('.$langs->trans(
"WrongSupplierCode").
')</span>';
263 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
264 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
267 if (empty($page) || $page == -1) {
270 $offset = $limit * $page;
271 $pageprev = $page - 1;
272 $pagenext = $page + 1;
277 $sortfield =
"soc.nom";
285 if (!empty($search_prod)) {
286 $filter [
'prod.ref'] = $search_prod;
289 if (!empty($search_label)) {
290 $filter [
'prod.label'] = $search_label;
293 if (!empty($search_price)) {
294 $filter [
't.price'] = $search_price;
297 if (!empty($search_price_ttc)) {
298 $filter [
't.price_ttc'] = $search_price_ttc;
301 if ($action ==
'add_customer_price') {
305 print
'<!-- Price by customer -->'.
"\n";
309 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?socid='.
$object->id.
'" method="POST">';
310 print
'<input type="hidden" name="token" value="'.newToken().
'">';
311 print
'<input type="hidden" name="action" value="add_customer_price_confirm">';
312 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
313 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
314 print
'<input type="hidden" name="socid" value="'.$object->id.
'">';
315 print
'<table class="border centpercent">';
317 print
'<td>'.$langs->trans(
'Product').
'</td>';
319 $form->select_produits(
'',
'prodid',
'', 0);
324 print
'<tr><td>'.$langs->trans(
'RefCustomer').
'</td>';
325 print
'<td><input name="ref_customer" size="12"></td></tr>';
328 print
'<tr><td>'.$langs->trans(
"VATRate").
'</td><td>';
329 print $form->load_tva(
"tva_tx",
GETPOST(
"tva_tx",
"alpha"), $mysoc,
'',
$object->id, 0,
'',
false, 1);
333 print
'<tr><td width="15%">';
334 print $langs->trans(
'PriceBase');
337 print $form->selectPriceBaseType(
GETPOST(
"price_base_type",
"aZ09"),
"price_base_type");
342 print
'<tr><td width="20%">';
343 $text = $langs->trans(
'SellingPrice');
344 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
346 print
'<input name="price" size="10" value="'.GETPOSTINT(
'price').
'">';
351 $text = $langs->trans(
'MinPrice');
352 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
353 print
'<td><input name="price_min" size="10" value="'.GETPOSTINT(
'price_min').
'">';
357 print
'<tr><td width="15%">';
358 print $langs->trans(
'ForceUpdateChildPriceSoc');
361 print
'<input type="checkbox" name="updatechildprice" value="1"/>';
367 print $form->buttonsSaveCancel();
370 } elseif ($action ==
'edit_customer_price') {
375 $result = $prodcustprice->fetch(
GETPOSTINT(
'lineid'));
380 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?socid='.
$object->id.
'" method="POST">';
381 print
'<input type="hidden" name="token" value="'.newToken().
'">';
382 print
'<input type="hidden" name="action" value="update_customer_price_confirm">';
383 print
'<input type="hidden" name="lineid" value="'.$prodcustprice->id.
'">';
384 print
'<table class="border centpercent">';
386 print
'<td>'.$langs->trans(
'Product').
'</td>';
387 $staticprod =
new Product($db);
388 $staticprod->fetch($prodcustprice->fk_product);
389 print
"<td>".$staticprod->getNomUrl(1).
"</td>";
393 print
'<tr><td>'.$langs->trans(
'RefCustomer').
'</td>';
394 print
'<td><input name="ref_customer" size="12" value="'.dol_escape_htmltag($prodcustprice->ref_customer).
'"></td></tr>';
397 print
'<tr><td>'.$langs->trans(
"VATRate").
'</td><td>';
398 print $form->load_tva(
"tva_tx", $prodcustprice->tva_tx, $mysoc,
'', $staticprod->id, $prodcustprice->recuperableonly);
402 print
'<tr><td width="15%">';
403 print $langs->trans(
'PriceBase');
406 print $form->selectPriceBaseType($prodcustprice->price_base_type,
"price_base_type");
412 $text = $langs->trans(
'SellingPrice');
413 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
415 if ($prodcustprice->price_base_type ==
'TTC') {
416 print
'<input name="price" size="10" value="'.price($prodcustprice->price_ttc).
'">';
418 print
'<input name="price" size="10" value="'.price($prodcustprice->price).
'">';
424 $text = $langs->trans(
'MinPrice');
425 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
427 if ($prodcustprice->price_base_type ==
'TTC') {
428 print
'<input name="price_min" size="10" value="'.price($prodcustprice->price_min_ttc).
'">';
430 print
'<input name="price_min" size="10" value="'.price($prodcustprice->price_min).
'">';
436 print $langs->trans(
'ForceUpdateChildPriceSoc');
439 print
'<input type="checkbox" name="updatechildprice" value="1">';
445 print $form->buttonsSaveCancel();
449 } elseif ($action ==
'showlog_customer_price') {
451 print
'<!-- showlog_customer_price -->'.
"\n";
459 $nbtotalofrecords =
'';
460 $result = $prodcustprice->fetchAllLog($sortorder, $sortfield, $conf->liste_limit, $offset, $filter);
465 $nbtotalofrecords = $result;
469 $option =
'&socid='.GETPOSTINT(
'socid').
'&prodid='.
GETPOSTINT(
'prodid');
472 print_barre_liste($langs->trans(
'PriceByCustomerLog'), $page, $_SERVER [
'PHP_SELF'], $option, $sortfield, $sortorder,
'', count($prodcustprice->lines), $nbtotalofrecords);
474 if (count($prodcustprice->lines) > 0) {
475 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="POST">';
476 print
'<input type="hidden" name="token" value="'.newToken().
'">';
477 print
'<input type="hidden" name="id" value="'.$object->id.
'">';
479 print
'<table class="noborder centpercent">';
481 print
'<tr class="liste_titre">';
482 print
'<td>'.$langs->trans(
"Product").
'</td>';
483 print
'<td>'.$langs->trans(
'RefCustomer').
'</td>';
484 print
'<td>'.$langs->trans(
"AppliedPricesFrom").
'</td>';
485 print
'<td class="center">'.$langs->trans(
"PriceBase").
'</td>';
486 print
'<td class="right">'.$langs->trans(
"VAT").
'</td>';
487 print
'<td class="right">'.$langs->trans(
"HT").
'</td>';
488 print
'<td class="right">'.$langs->trans(
"TTC").
'</td>';
489 print
'<td class="right">'.$langs->trans(
"MinPrice").
' '.$langs->trans(
"HT").
'</td>';
490 print
'<td class="right">'.$langs->trans(
"MinPrice").
' '.$langs->trans(
"TTC").
'</td>';
491 print
'<td class="right">'.$langs->trans(
"ChangedBy").
'</td>';
495 foreach ($prodcustprice->lines as $line) {
496 $staticprod =
new Product($db);
497 $staticprod->fetch($line->fk_product);
499 $userstatic =
new User($db);
500 $userstatic->fetch($line->fk_user);
502 print
'<tr class="oddeven">';
504 print
"<td>".$staticprod->getNomUrl(1).
"</td>";
505 print
'<td>'.$line->ref_customer.
'</td>';
506 print
"<td>".dol_print_date($line->datec,
"dayhour").
"</td>";
508 print
'<td class="center">'.$langs->trans($line->price_base_type).
"</td>";
509 print
'<td class="right">'.vatrate($line->tva_tx,
true, $line->recuperableonly).
"</td>";
510 print
'<td class="right">'.price($line->price).
"</td>";
511 print
'<td class="right">'.price($line->price_ttc).
"</td>";
512 print
'<td class="right">'.price($line->price_min).
'</td>';
513 print
'<td class="right">'.price($line->price_min_ttc).
'</td>';
516 print
'<td class="right">';
517 print $userstatic->getNomUrl(-1);
523 print $langs->trans(
'None');
526 print
"\n".
'<div class="tabsAction">'.
"\n";
527 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?socid='.
$object->id.
'">'.$langs->trans(
"Ok").
'</a></div>';
528 print
"\n</div><br>\n";
535 print
"\n".
'<div class="tabsAction">'.
"\n";
537 if ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer')) {
538 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>';
543 $arrayfields = array();
544 foreach ($prodcustprice->fields as $key => $val) {
546 if (!empty($val[
'visible'])) {
547 $visible = (int)
dol_eval($val[
'visible'], 1, 1,
'1');
548 $arrayfields[
't.'.$key] = array(
549 'label' => $val[
'label'],
550 'checked' => (($visible < 0) ? 0 : 1),
551 'enabled' => (abs($visible) != 3 && (bool)
dol_eval($val[
'enabled'], 1)),
552 'position' => $val[
'position'],
553 'help' => isset($val[
'help']) ? $val[
'help'] :
''
560 $nbtotalofrecords =
'';
562 $nbtotalofrecords = $prodcustprice->fetchAll(
'',
'', 0, 0, $filter);
565 $result = $prodcustprice->fetchAll($sortorder, $sortfield, $limit, $offset, $filter);
570 $option =
'&search_prod='.$search_prod.
'&id='.
$object->id.
'&label='.$search_label.
'&price='.$search_price.
'&price_ttc='.$search_price_ttc;
572 print
'<!-- view specific price for each product -->'.
"\n";
575 print_barre_liste($langs->trans(
'PriceForEachProduct'), $page, $_SERVER[
'PHP_SELF'], $option, $sortfield, $sortorder,
'', count($prodcustprice->lines), $nbtotalofrecords,
'');
577 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="POST">';
578 print
'<input type="hidden" name="token" value="'.newToken().
'">';
579 print
'<input type="hidden" name="id" value="'.$object->id.
'">';
580 if (!empty($sortfield)) {
581 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'"/>';
583 if (!empty($sortorder)) {
584 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'"/>';
586 print
'<div class="div-table-responsive-no-min">';
587 print
'<table class="noborder centpercent liste">';
589 $param =
'socid='.$object->id.
'&';
591 $param .=
'&search_prod='.urlencode($search_prod);
594 $param .=
'&search_label='.urlencode($search_label);
597 $param .=
'&search_price='.urlencode($search_price);
600 $param .=
'&search_price='.urlencode($search_price);
602 if ($search_price_ttc) {
603 $param .=
'&search_price_ttc='.urlencode($search_price_ttc);
606 print
'<tr class="liste_titre">';
607 foreach ($prodcustprice->fields as $key => $val) {
608 if (!empty($arrayfields[
't.'.$key][
'checked'])) {
609 print
getTitleFieldOfList($arrayfields[
't.'.$key][
'label'], 0, $_SERVER[
'PHP_SELF'], $key,
'', $param,
'', $sortfield, $sortorder).
"\n";
615 if (count($prodcustprice->lines) > 0 || $search_prod) {
616 print
'<tr class="liste_titre">';
617 print
'<td class="liste_titre"><input type="text" class="flat width75" name="search_prod" value="'.$search_prod.
'"></td>';
618 print
'<td class="liste_titre" ><input type="text" class="flat width75" name="search_label" value="'.$search_label.
'"></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"></td>';
623 print
'<td class="liste_titre left"><input type="text" class="flat width75" name="search_price" value="'.$search_price.
'"></td>';
624 print
'<td class="liste_titre left"><input type="text" class="flat width75" name="search_price_ttc" value="'.$search_price_ttc.
'"></td>';
625 print
'<td class="liste_titre"></td>';
626 print
'<td class="liste_titre"></td>';
627 print
'<td class="liste_titre"></td>';
629 print
'<td class="liste_titre maxwidthsearch">';
630 $searchpicto = $form->showFilterAndCheckAddButtons(0);
636 if (count($prodcustprice->lines) > 0) {
637 foreach ($prodcustprice->lines as $line) {
638 $staticprod =
new Product($db);
639 $staticprod->fetch($line->fk_product);
641 $userstatic =
new User($db);
642 $userstatic->fetch($line->fk_user);
644 print
'<tr class="oddeven">';
646 print
'<td class="left">'.$staticprod->getNomUrl(1).
"</td>";
647 print
'<td class="left">'.$staticprod->label.
"</td>";
648 print
'<td class="left">'.$line->ref_customer.
'</td>';
649 print
'<td class="left">'.dol_print_date($line->datec,
"dayhour").
"</td>";
650 print
'<td class="left">'.$langs->trans($line->price_base_type).
"</td>";
651 print
'<td class="left">'.vatrate($line->tva_tx.($line->default_vat_code ?
' ('.$line->default_vat_code.
')' :
''), true, $line->recuperableonly).
"</td>";
652 print
'<td class="left">'.price($line->price).
"</td>";
653 print
'<td class="left">'.price($line->price_ttc).
"</td>";
654 print
'<td class="left">'.price($line->price_min).
'</td>';
655 print
'<td class="left">'.price($line->price_min_ttc).
'</td>';
657 print
'<td class="left">';
658 print $userstatic->getNomUrl(-1);
661 if ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer')) {
662 print
'<td class="right nowraponall">';
663 print
'<a class="paddingleftonly paddingrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?action=showlog_customer_price&token='.
newToken().
'&socid='.
$object->id.
'&prodid='.$line->fk_product.
'">';
667 print
'<a class="editfielda paddingleftonly paddingrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?action=edit_customer_price&token='.
newToken().
'&socid='.
$object->id.
'&lineid='.$line->id.
'">';
668 print
img_edit(
'default', 0,
'style="vertical-align: middle;"');
671 print
'<a class="paddingleftonly paddingrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?action=delete_customer_price&token='.
newToken().
'&socid='.
$object->id.
'&lineid='.$line->id.
'">';
672 print
img_delete(
'default',
'style="vertical-align: middle;"');
681 if ($user->hasRight(
'produit',
'supprimer') || $user->hasRight(
'service',
'supprimer')) {
684 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.