33require
'../main.inc.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/product.lib.php';
35require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
37require_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;
65$hookmanager->initHooks(array(
'thirdpartycustomerprice',
'globalcard'));
79$parameters = array(
'id' => $socid);
80$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
86 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
87 $search_prod = $search_label = $search_price = $search_price_ttc =
'';
90 if ($action ==
'add_customer_price_confirm' && !$cancel && ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer'))) {
93 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->trans(
"Product")),
null,
'errors');
94 $action =
'add_customer_price';
98 $update_child_soc =
GETPOST(
'updatechildprice');
101 $prodcustprice->fk_soc = $socid;
102 $prodcustprice->ref_customer =
GETPOST(
'ref_customer',
'alpha');
103 $prodcustprice->fk_product =
GETPOSTINT(
'prodid');
106 $prodcustprice->price_base_type =
GETPOST(
"price_base_type",
'alpha');
108 $tva_tx_txt =
GETPOST(
'tva_tx',
'alpha');
112 $tva_tx = preg_replace(
'/[^0-9\.].*$/',
'', $tva_tx_txt);
113 $npr = preg_match(
'/\*/', $tva_tx_txt) ? 1 : 0;
116 $localtax1_type =
'0';
117 $localtax2_type =
'0';
119 if (preg_match(
'/\((.*)\)/', $tva_tx_txt, $reg)) {
121 $vatratecode = $reg[1];
123 $sql =
"SELECT t.rowid, t.code, t.recuperableonly, t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type";
124 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_tva as t, ".MAIN_DB_PREFIX.
"c_country as c";
125 $sql .=
" WHERE t.fk_pays = c.rowid AND c.code = '".$db->escape($mysoc->country_code).
"'";
126 $sql .=
" AND t.taux = ".((float) $tva_tx).
" AND t.active = 1";
127 $sql .=
" AND t.code = '".$db->escape($vatratecode).
"'";
128 $sql .=
" AND t.entity IN (".getEntity(
'c_tva').
")";
129 $resql = $db->query($sql);
131 $obj = $db->fetch_object($resql);
132 $npr = $obj->recuperableonly;
133 $localtax1 = $obj->localtax1;
134 $localtax2 = $obj->localtax2;
135 $localtax1_type = $obj->localtax1_type;
136 $localtax2_type = $obj->localtax2_type;
140 $prodcustprice->default_vat_code = $vatratecode;
141 $prodcustprice->tva_tx = $tva_tx;
142 $prodcustprice->recuperableonly = $npr;
143 $prodcustprice->localtax1_tx = $localtax1;
144 $prodcustprice->localtax2_tx = $localtax2;
145 $prodcustprice->localtax1_type = $localtax1_type;
146 $prodcustprice->localtax2_type = $localtax2_type;
148 $result = $prodcustprice->create($user, 0, $update_child_soc);
160 if ($action ==
'delete_customer_price' && ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer'))) {
163 $result = $prodcustprice->delete($user);
173 if ($action ==
'update_customer_price_confirm' && !$cancel && ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer'))) {
176 $update_child_soc =
GETPOST(
'updatechildprice');
179 $prodcustprice->ref_customer =
GETPOST(
'ref_customer',
'alpha');
182 $prodcustprice->price_base_type =
GETPOST(
"price_base_type",
'alpha');
183 $prodcustprice->tva_tx = str_replace(
'*',
'',
GETPOST(
"tva_tx"));
184 $prodcustprice->recuperableonly = (preg_match(
'/\*/',
GETPOST(
"tva_tx")) ? 1 : 0);
186 $result = $prodcustprice->update($user, 0, $update_child_soc);
202$form =
new Form($db);
206$result =
$object->fetch($socid);
207llxHeader(
"", $langs->trans(
"ThirdParty").
'-'.$langs->trans(
'PriceByCustomer'));
213$linkback =
'<a href="'.DOL_URL_ROOT.
'/societe/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
215dol_banner_tab($object,
'socid', $linkback, ($user->socid ? 0 : 1),
'rowid',
'nom');
217print
'<div class="fichecenter">';
219print
'<div class="underbanner clearboth"></div>';
220print
'<table class="border centpercent tableforfield">';
223print
'<tr><td class="titlefield">'.$langs->trans(
'NatureOfThirdParty').
'</td><td>';
228 print
'<tr><td class="titlefield">'.$langs->trans(
'Prefix').
'</td><td colspan="3">'.
$object->prefix_comm.
'</td></tr>';
232 print
'<tr><td class="titlefield">';
233 print $langs->trans(
'CustomerCode').
'</td><td colspan="3">';
235 $tmpcheck =
$object->check_codeclient();
236 if ($tmpcheck != 0 && $tmpcheck != -5) {
237 print
' <span class="error">('.$langs->trans(
"WrongCustomerCode").
')</span>';
243 print
'<tr><td class="titlefield">';
244 print $langs->trans(
'SupplierCode').
'</td><td colspan="3">';
245 print
$object->code_fournisseur;
246 $tmpcheck =
$object->check_codefournisseur();
247 if ($tmpcheck != 0 && $tmpcheck != -5) {
248 print
' <span class="error">('.$langs->trans(
"WrongSupplierCode").
')</span>';
264 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
265 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
268 if (empty($page) || $page == -1) {
271 $offset = $limit * $page;
272 $pageprev = $page - 1;
273 $pagenext = $page + 1;
278 $sortfield =
"soc.nom";
286 if (!empty($search_prod)) {
287 $filter [
'prod.ref'] = $search_prod;
290 if (!empty($search_label)) {
291 $filter [
'prod.label'] = $search_label;
294 if (!empty($search_price)) {
295 $filter [
't.price'] = $search_price;
298 if (!empty($search_price_ttc)) {
299 $filter [
't.price_ttc'] = $search_price_ttc;
302 if ($action ==
'add_customer_price') {
306 print
'<!-- Price by customer -->'.
"\n";
310 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?socid='.
$object->id.
'" method="POST">';
311 print
'<input type="hidden" name="token" value="'.newToken().
'">';
312 print
'<input type="hidden" name="action" value="add_customer_price_confirm">';
313 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
314 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
315 print
'<input type="hidden" name="socid" value="'.$object->id.
'">';
316 print
'<table class="border centpercent">';
318 print
'<td>'.$langs->trans(
'Product').
'</td>';
320 $form->select_produits(
'',
'prodid',
'', 0);
325 print
'<tr><td>'.$langs->trans(
'RefCustomer').
'</td>';
326 print
'<td><input name="ref_customer" size="12"></td></tr>';
329 print
'<tr><td>'.$langs->trans(
"VATRate").
'</td><td>';
330 print $form->load_tva(
"tva_tx",
GETPOST(
"tva_tx",
"alpha"), $mysoc,
'',
$object->id, 0,
'',
false, 1);
334 print
'<tr><td width="15%">';
335 print $langs->trans(
'PriceBase');
338 print $form->selectPriceBaseType(
GETPOST(
"price_base_type",
"aZ09"),
"price_base_type");
343 print
'<tr><td width="20%">';
344 $text = $langs->trans(
'SellingPrice');
345 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
347 print
'<input name="price" size="10" value="'.GETPOSTINT(
'price').
'">';
352 $text = $langs->trans(
'MinPrice');
353 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
354 print
'<td><input name="price_min" size="10" value="'.GETPOSTINT(
'price_min').
'">';
358 print
'<tr><td width="15%">';
359 print $langs->trans(
'ForceUpdateChildPriceSoc');
362 print
'<input type="checkbox" name="updatechildprice" value="1"/>';
368 print $form->buttonsSaveCancel();
371 } elseif ($action ==
'edit_customer_price') {
376 $result = $prodcustprice->fetch(
GETPOSTINT(
'lineid'));
381 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?socid='.
$object->id.
'" method="POST">';
382 print
'<input type="hidden" name="token" value="'.newToken().
'">';
383 print
'<input type="hidden" name="action" value="update_customer_price_confirm">';
384 print
'<input type="hidden" name="lineid" value="'.$prodcustprice->id.
'">';
385 print
'<table class="border centpercent">';
387 print
'<td>'.$langs->trans(
'Product').
'</td>';
388 $staticprod =
new Product($db);
389 $staticprod->fetch($prodcustprice->fk_product);
390 print
"<td>".$staticprod->getNomUrl(1).
"</td>";
394 print
'<tr><td>'.$langs->trans(
'RefCustomer').
'</td>';
395 print
'<td><input name="ref_customer" size="12" value="'.dol_escape_htmltag($prodcustprice->ref_customer).
'"></td></tr>';
398 print
'<tr><td>'.$langs->trans(
"VATRate").
'</td><td>';
399 print $form->load_tva(
"tva_tx", $prodcustprice->tva_tx, $mysoc,
'', $staticprod->id, $prodcustprice->recuperableonly);
403 print
'<tr><td width="15%">';
404 print $langs->trans(
'PriceBase');
407 print $form->selectPriceBaseType($prodcustprice->price_base_type,
"price_base_type");
413 $text = $langs->trans(
'SellingPrice');
414 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
416 if ($prodcustprice->price_base_type ==
'TTC') {
417 print
'<input name="price" size="10" value="'.price($prodcustprice->price_ttc).
'">';
419 print
'<input name="price" size="10" value="'.price($prodcustprice->price).
'">';
425 $text = $langs->trans(
'MinPrice');
426 print $form->textwithpicto($text, $langs->trans(
"PrecisionUnitIsLimitedToXDecimals",
getDolGlobalString(
'MAIN_MAX_DECIMALS_UNIT')), 1, 1);
428 if ($prodcustprice->price_base_type ==
'TTC') {
429 print
'<input name="price_min" size="10" value="'.price($prodcustprice->price_min_ttc).
'">';
431 print
'<input name="price_min" size="10" value="'.price($prodcustprice->price_min).
'">';
437 print $langs->trans(
'ForceUpdateChildPriceSoc');
440 print
'<input type="checkbox" name="updatechildprice" value="1">';
446 print $form->buttonsSaveCancel();
450 } elseif ($action ==
'showlog_customer_price') {
452 print
'<!-- showlog_customer_price -->'.
"\n";
460 $nbtotalofrecords =
'';
461 $result = $prodcustprice->fetchAllLog($sortorder, $sortfield, $conf->liste_limit, $offset, $filter);
466 $nbtotalofrecords = $result;
470 $option =
'&socid='.GETPOSTINT(
'socid').
'&prodid='.
GETPOSTINT(
'prodid');
473 print_barre_liste($langs->trans(
'PriceByCustomerLog'), $page, $_SERVER [
'PHP_SELF'], $option, $sortfield, $sortorder,
'', count($prodcustprice->lines), $nbtotalofrecords);
475 if (count($prodcustprice->lines) > 0) {
476 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="POST">';
477 print
'<input type="hidden" name="token" value="'.newToken().
'">';
478 print
'<input type="hidden" name="id" value="'.$object->id.
'">';
480 print
'<table class="noborder centpercent">';
482 print
'<tr class="liste_titre">';
483 print
'<td>'.$langs->trans(
"Product").
'</td>';
484 print
'<td>'.$langs->trans(
'RefCustomer').
'</td>';
485 print
'<td>'.$langs->trans(
"AppliedPricesFrom").
'</td>';
486 print
'<td class="center">'.$langs->trans(
"PriceBase").
'</td>';
487 print
'<td class="right">'.$langs->trans(
"VAT").
'</td>';
488 print
'<td class="right">'.$langs->trans(
"HT").
'</td>';
489 print
'<td class="right">'.$langs->trans(
"TTC").
'</td>';
490 print
'<td class="right">'.$langs->trans(
"MinPrice").
' '.$langs->trans(
"HT").
'</td>';
491 print
'<td class="right">'.$langs->trans(
"MinPrice").
' '.$langs->trans(
"TTC").
'</td>';
492 print
'<td class="right">'.$langs->trans(
"ChangedBy").
'</td>';
496 foreach ($prodcustprice->lines as $line) {
497 $staticprod =
new Product($db);
498 $staticprod->fetch($line->fk_product);
500 $userstatic =
new User($db);
501 $userstatic->fetch($line->fk_user);
503 print
'<tr class="oddeven">';
505 print
"<td>".$staticprod->getNomUrl(1).
"</td>";
506 print
'<td>'.$line->ref_customer.
'</td>';
507 print
"<td>".dol_print_date($line->datec,
"dayhour").
"</td>";
509 print
'<td class="center">'.$langs->trans($line->price_base_type).
"</td>";
510 print
'<td class="right">'.vatrate($line->tva_tx,
true, $line->recuperableonly).
"</td>";
511 print
'<td class="right">'.price($line->price).
"</td>";
512 print
'<td class="right">'.price($line->price_ttc).
"</td>";
513 print
'<td class="right">'.price($line->price_min).
'</td>';
514 print
'<td class="right">'.price($line->price_min_ttc).
'</td>';
517 print
'<td class="right">';
518 print $userstatic->getNomUrl(-1);
524 print $langs->trans(
'None');
527 print
"\n".
'<div class="tabsAction">'.
"\n";
528 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?socid='.
$object->id.
'">'.$langs->trans(
"Ok").
'</a></div>';
529 print
"\n</div><br>\n";
536 print
"\n".
'<div class="tabsAction">'.
"\n";
538 if ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer')) {
539 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>';
544 $arrayfields = array();
545 foreach ($prodcustprice->fields as $key => $val) {
547 if (!empty($val[
'visible'])) {
548 $visible = (int)
dol_eval((
string) $val[
'visible'], 1, 1,
'1');
549 $arrayfields[
't.'.$key] = array(
550 'label' => $val[
'label'],
551 'checked' => (($visible < 0) ? 0 : 1),
552 'enabled' => (abs($visible) != 3 && (bool)
dol_eval($val[
'enabled'], 1)),
553 'position' => $val[
'position'],
554 'help' => isset($val[
'help']) ? $val[
'help'] :
''
561 $nbtotalofrecords =
'';
563 $nbtotalofrecords = $prodcustprice->fetchAll(
'',
'', 0, 0, $filter);
566 $result = $prodcustprice->fetchAll($sortorder, $sortfield, $conf->liste_limit, $offset, $filter);
571 $option =
'&search_prod='.$search_prod.
'&id='.
$object->id.
'&label='.$search_label.
'&price='.$search_price.
'&price_ttc='.$search_price_ttc;
573 print
'<!-- view specific price for each product -->'.
"\n";
576 print_barre_liste($langs->trans(
'PriceForEachProduct'), $page, $_SERVER[
'PHP_SELF'], $option, $sortfield, $sortorder,
'', count($prodcustprice->lines), $nbtotalofrecords,
'');
578 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'" method="POST">';
579 print
'<input type="hidden" name="token" value="'.newToken().
'">';
580 print
'<input type="hidden" name="id" value="'.$object->id.
'">';
581 if (!empty($sortfield)) {
582 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'"/>';
584 if (!empty($sortorder)) {
585 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'"/>';
587 print
'<div class="div-table-responsive-no-min">';
588 print
'<table class="noborder centpercent liste">';
590 $param =
'socid='.$object->id.
'&';
592 $param .=
'&search_prod='.urlencode($search_prod);
595 $param .=
'&search_label='.urlencode($search_label);
598 $param .=
'&search_price='.urlencode($search_price);
601 $param .=
'&search_price='.urlencode($search_price);
603 if ($search_price_ttc) {
604 $param .=
'&search_price_ttc='.urlencode($search_price_ttc);
607 print
'<tr class="liste_titre">';
608 foreach ($prodcustprice->fields as $key => $val) {
609 if (!empty($arrayfields[
't.'.$key][
'checked'])) {
610 print
getTitleFieldOfList($arrayfields[
't.'.$key][
'label'], 0, $_SERVER[
'PHP_SELF'], $key,
'', $param,
'', $sortfield, $sortorder).
"\n";
616 if (count($prodcustprice->lines) > 0 || $search_prod) {
617 print
'<tr class="liste_titre">';
618 print
'<td class="liste_titre"><input type="text" class="flat width75" name="search_prod" value="'.$search_prod.
'"></td>';
619 print
'<td class="liste_titre" ><input type="text" class="flat width75" name="search_label" value="'.$search_label.
'"></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"></td>';
624 print
'<td class="liste_titre left"><input type="text" class="flat width75" name="search_price" value="'.$search_price.
'"></td>';
625 print
'<td class="liste_titre left"><input type="text" class="flat width75" name="search_price_ttc" value="'.$search_price_ttc.
'"></td>';
626 print
'<td class="liste_titre"></td>';
627 print
'<td class="liste_titre"></td>';
628 print
'<td class="liste_titre"></td>';
630 print
'<td class="liste_titre maxwidthsearch">';
631 $searchpicto = $form->showFilterAndCheckAddButtons(0);
637 if (count($prodcustprice->lines) > 0) {
638 foreach ($prodcustprice->lines as $line) {
639 $staticprod =
new Product($db);
640 $staticprod->fetch($line->fk_product);
642 $userstatic =
new User($db);
643 $userstatic->fetch($line->fk_user);
645 print
'<tr class="oddeven">';
647 print
'<td class="left">'.$staticprod->getNomUrl(1).
"</td>";
648 print
'<td class="left">'.$staticprod->label.
"</td>";
649 print
'<td class="left">'.$line->ref_customer.
'</td>';
650 print
'<td class="left">'.dol_print_date($line->datec,
"dayhour").
"</td>";
651 print
'<td class="left">'.$langs->trans($line->price_base_type).
"</td>";
652 print
'<td class="left">'.vatrate($line->tva_tx.($line->default_vat_code ?
' ('.$line->default_vat_code.
')' :
''), true, $line->recuperableonly).
"</td>";
653 print
'<td class="left">'.price($line->price).
"</td>";
654 print
'<td class="left">'.price($line->price_ttc).
"</td>";
655 print
'<td class="left">'.price($line->price_min).
'</td>';
656 print
'<td class="left">'.price($line->price_min_ttc).
'</td>';
658 print
'<td class="left">';
659 print $userstatic->getNomUrl(-1);
662 if ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer')) {
663 print
'<td class="right nowraponall">';
664 print
'<a class="paddingleftonly paddingrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?action=showlog_customer_price&token='.
newToken().
'&socid='.
$object->id.
'&prodid='.$line->fk_product.
'">';
668 print
'<a class="editfielda paddingleftonly paddingrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?action=edit_customer_price&token='.
newToken().
'&socid='.
$object->id.
'&lineid='.$line->id.
'">';
669 print
img_edit(
'default', 0,
'style="vertical-align: middle;"');
672 print
'<a class="paddingleftonly paddingrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?action=delete_customer_price&token='.
newToken().
'&socid='.
$object->id.
'&lineid='.$line->id.
'">';
673 print
img_delete(
'default',
'style="vertical-align: middle;"');
682 if ($user->hasRight(
'produit',
'supprimer') || $user->hasRight(
'service',
'supprimer')) {
685 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($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
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.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
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.
getDolGlobalString($key, $default='')
Return a 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.