31require
'../../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.
'/don/class/don.class.php';
33require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
46$langs->loadLangs(array(
'companies',
'donations'));
48$action =
GETPOST(
'action',
'aZ09') ?
GETPOST(
'action',
'aZ09') :
'view';
49$massaction =
GETPOST(
'massaction',
'alpha');
50$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'sclist';
51$mode =
GETPOST(
'mode',
'alpha');
52$toselect =
GETPOST(
'toselect',
'array:int');
56$search_ref =
GETPOST(
"search_ref",
"alpha");
57$search_date_startday =
GETPOSTINT(
'search_date_startday');
58$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
59$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
60$search_date_endday =
GETPOSTINT(
'search_date_endday');
61$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
62$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
63$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
64$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
65$search_company =
GETPOST(
"search_company",
'alpha');
66$search_paymenttype =
GETPOST(
"search_paymenttype",
"intcomma");
67$search_account =
GETPOST(
"search_account",
'alpha');
68$search_payment_num =
GETPOST(
'search_payment_num',
'alpha');
69$search_amount =
GETPOST(
"search_amount",
'alpha');
70$search_status =
GETPOST(
'search_status',
'intcomma');
73$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
74$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
76if (empty($page) || $page == -1) {
79$offset = $limit * $page;
86 $sortfield =
"pd.rowid";
89$search_all = trim(
GETPOST(
'search_all',
'alphanohtml'));
97$fieldstosearchall = array(
98 'pd.rowid' =>
"RefPayment",
99 's.nom' =>
"ThirdParty",
100 'pd.num_paiement' =>
"Numero",
101 'pd.amount' =>
"Amount",
105 'pd.rowid' => array(
'label' =>
"RefPayment",
'checked' =>
'1',
'position' => 10),
106 'pd.datep' => array(
'label' =>
"Date",
'checked' =>
'1',
'position' => 20),
107 's.nom' => array(
'label' =>
"ThirdParty",
'checked' =>
'1',
'position' => 30),
108 'c.code' => array(
'label' =>
"Type",
'checked' =>
'1',
'position' => 40),
109 'pd.num_paiement' => array(
'label' =>
"Numero",
'checked' =>
'1',
'position' => 50,
'tooltip' =>
"ChequeOrTransferNumber"),
110 'transaction' => array(
'label' =>
"BankTransactionLine",
'checked' =>
'1',
'position' => 60,
'enabled' => (
string) (
int) (
isModEnabled(
"bank"))),
111 'ba.label' => array(
'label' =>
"BankAccount",
'checked' =>
'1',
'position' => 70,
'enabled' => (
string) (
int) (
isModEnabled(
"bank"))),
112 'pd.amount' => array(
'label' =>
"Amount",
'checked' =>
'1',
'position' => 80),
116$optioncss =
GETPOST(
'optioncss',
'alpha');
117$moreforfilter =
GETPOST(
'moreforfilter',
'alpha');
120$hookmanager->initHooks(array(
'donationlist'));
125$permissiontoread = $user->hasRight(
'don',
'read');
126$permissiontoadd = $user->hasRight(
'don',
'write');
127$permissiontodelete = $user->hasRight(
'don',
'delete');
133$parameters = array(
'socid' => $paiementid);
134$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
139if (empty($reshook)) {
140 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
143 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
145 $search_date_startday =
'';
146 $search_date_startmonth =
'';
147 $search_date_startyear =
'';
148 $search_date_endday =
'';
149 $search_date_endmonth =
'';
150 $search_date_endyear =
'';
151 $search_date_start =
'';
152 $search_date_end =
'';
153 $search_account =
'';
155 $search_paymenttype =
'';
156 $search_payment_num =
'';
157 $search_company =
'';
160 $search_array_options = array();
173$title = $langs->trans(
"Donations");
174$help_url =
'EN:Module_Donations|FR:Module_Dons|ES:Módulo_Donaciones|DE:Modul_Spenden';
178$sql =
"SELECT pd.rowid as payment_id, pd.amount, pd.datep, pd.fk_typepayment, pd.num_payment, pd.amount, pd.fk_bank, ";
179$sql .=
' s.rowid as soc_id, s.nom, ';
180$sql .=
' d.societe, ';
181$sql .=
' c.code as paiement_code, ';
182$sql .=
' d.rowid, ba.rowid as bid, ba.ref as bref, ba.label as blabel, ba.number, ba.account_number as account_number, ba.iban_prefix, ba.bic, ba.currency_code, ba.fk_accountancy_journal as accountancy_journal ';
185$parameters = array();
186$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
187$sql .= $hookmanager->resPrint;
191$sql .=
" FROM ".MAIN_DB_PREFIX.
"payment_donation as pd";
192$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"don as d ON (d.rowid = pd.fk_donation)";
193$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank as b ON (b.rowid = pd.fk_bank)";
194$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_account as ba ON (ba.rowid = b.fk_account)";
195$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s ON (s.rowid = d.fk_soc)";
196$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_paiement as c ON (c.id = pd.fk_typepayment)";
197$sql .=
" WHERE d.entity IN (".getEntity(
'donation').
")";
202if ($search_date_start) {
203 $sql .=
" AND pd.datep >= '" .
$db->idate($search_date_start) .
"'";
205if ($search_date_end) {
206 $sql .=
" AND pd.datep <= '" .
$db->idate($search_date_end) .
"'";
208if ($search_account > 0) {
209 $sql .=
" AND b.fk_account=".((int) $search_account);
211if ($search_paymenttype !=
'') {
212 $sql .=
" AND c.code='".$db->escape($search_paymenttype).
"'";
214if ($search_payment_num !=
'') {
220if ($search_company) {
224 $sql .=
natural_search(array_keys($fieldstosearchall), $search_all);
228$parameters = array();
229$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
230$sql .= $hookmanager->resPrint;
233$nbtotalofrecords =
'';
236 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
237 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
238 $resql =
$db->query($sqlforcount);
240 $objforcount =
$db->fetch_object($resql);
241 $nbtotalofrecords = $objforcount->nbtotalofrecords;
246 if (($page * $limit) > (
int) $nbtotalofrecords) {
253$sql .=
$db->order($sortfield, $sortorder);
257 $sql .=
$db->plimit($limit + 1, $offset);
260$resql =
$db->query($sql);
267$num =
$db->num_rows($resql);
272llxHeader(
'', $title, $help_url,
'', 0, 0, $morejs, $morecss,
'',
'bodyforlist');
274$arrayofselected = is_array($toselect) ? $toselect : array();
276if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
277 $param .=
'&contextpage='.urlencode($contextpage);
279if ($limit > 0 && $limit !=
$conf->liste_limit) {
280 $param .=
'&limit='.((int) $limit);
283 $param .=
'&search_ref='.urlencode($search_ref);
285if ($search_date_startday) {
286 $param .=
'&search_date_startday='.urlencode((
string) ($search_date_startday));
288if ($search_date_startmonth) {
289 $param .=
'&search_date_startmonth='.urlencode((
string) ($search_date_startmonth));
291if ($search_date_startyear) {
292 $param .=
'&search_date_startyear='.urlencode((
string) ($search_date_startyear));
294if ($search_date_endday) {
295 $param .=
'&search_date_endday='.urlencode((
string) ($search_date_endday));
297if ($search_date_endmonth) {
298 $param .=
'&search_date_endmonth='.urlencode((
string) ($search_date_endmonth));
300if ($search_date_endyear) {
301 $param .=
'&search_date_endyear='.urlencode((
string) ($search_date_endyear));
303if ($search_company) {
304 $param .=
'&search_company='.urlencode($search_company);
306if ($search_amount !=
'') {
307 $param .=
'&search_amount='.urlencode($search_amount);
309if ($search_paymenttype) {
310 $param .=
'&search_paymenttype='.urlencode($search_paymenttype);
312if ($search_account) {
313 $param .=
'&search_account='.urlencode((
string) ($search_account));
315if ($search_payment_num) {
316 $param .=
'&search_payment_num='.urlencode($search_payment_num);
318if ($optioncss !=
'') {
319 $param .=
'&optioncss='.urlencode($optioncss);
322print
'<form method="POST" action="'.dolBuildUrl($_SERVER[
"PHP_SELF"]).
'">';
323if ($optioncss !=
'') {
324 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
326print
'<input type="hidden" name="token" value="'.newToken().
'">';
327print
'<input type="hidden" name="action" value="list">';
328print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
329print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
330print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
331print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
334print_barre_liste($langs->trans(
"DonationPayments"), $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num, $nbtotalofrecords,
'bill', 0,
'',
'', $limit, 0, 0, 1);
337 foreach ($fieldstosearchall as $key => $val) {
338 $fieldstosearchall[$key] = $langs->trans($val);
340 print
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $search_all).implode(
', ', $fieldstosearchall).
'</div>';
343$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
344$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
$conf->main_checkbox_left_column);
351print
'<div class="div-table-responsive">';
352print
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ?
" listwithfilterbefore" :
'').
'">';
356print
'<tr class="liste_titre_filter">';
358if (
$conf->main_checkbox_left_column) {
359 print
'<td class="liste_titre center maxwidthsearch">';
360 $searchpicto = $form->showFilterButtons(
'left');
366 print
'<td class="liste_titre">';
370if (!empty($arrayfields[
'pd.rowid'][
'checked'])) {
371 print
'<td class="liste_titre left">';
372 print
'<input class="flat" type="text" size="4" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
377if (!empty($arrayfields[
'pd.datep'][
'checked'])) {
378 print
'<td class="liste_titre">';
379 print
'<div class="nowrapfordate">';
380 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
382 print
'<div class="nowrapfordate">';
383 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
389if (!empty($arrayfields[
's.nom'][
'checked'])) {
390 print
'<td class="liste_titre">';
391 print
'<input class="flat" type="text" size="6" name="search_company" value="'.dol_escape_htmltag($search_company).
'">';
396if (!empty($arrayfields[
'c.code'][
'checked'])) {
397 print
'<td class="liste_titre">';
398 print $form->select_types_paiements($search_paymenttype,
'search_paymenttype',
'', 2, 1, 1, 0, 1,
'maxwidth100', 1);
403if (!empty($arrayfields[
'transaction'][
'checked'])) {
404 print
'<td class="liste_titre">';
405 print
'<input class="flat" type="text" size="4" name="search_payment_num" value="'.dol_escape_htmltag($search_payment_num).
'">';
410if (!empty($arrayfields[
'pd.num_paiement'][
'checked'])) {
411 print
'<td class="liste_titre">';
416if (!empty($arrayfields[
'ba.label'][
'checked'])) {
417 print
'<td class="liste_titre">';
418 $form->select_comptes($search_account,
'search_account', 0,
'', 1);
423if (!empty($arrayfields[
'pd.amount'][
'checked'])) {
424 print
'<td class="liste_titre right">';
425 print
'<input class="flat" type="text" size="6" name="search_amount" value="'.dol_escape_htmltag($search_amount).
'">';
430$parameters = array(
'arrayfields' => $arrayfields);
431$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
432print $hookmanager->resPrint;
435if (!
$conf->main_checkbox_left_column) {
436 print
'<td class="liste_titre center maxwidthsearch">';
437 $searchpicto = $form->showFilterButtons();
449print
'<tr class="liste_titre">';
451if (
$conf->main_checkbox_left_column) {
452 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'align="center"', $sortfield, $sortorder,
'maxwidthsearch ');
459if (!empty($arrayfields[
'pd.rowid'][
'checked'])) {
461 print_liste_field_titre($arrayfields[
'pd.rowid'][
'label'], $_SERVER[
"PHP_SELF"],
"pd.rowid",
'', $param,
'', $sortfield, $sortorder);
464if (!empty($arrayfields[
'pd.datep'][
'checked'])) {
465 print_liste_field_titre($arrayfields[
'pd.datep'][
'label'], $_SERVER[
"PHP_SELF"],
"pd.datep",
'', $param,
'', $sortfield, $sortorder);
468if (!empty($arrayfields[
's.nom'][
'checked'])) {
469 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"s.nom",
'', $param,
'', $sortfield, $sortorder);
472if (!empty($arrayfields[
'c.code'][
'checked'])) {
473 print_liste_field_titre($arrayfields[
'c.code'][
'label'], $_SERVER[
"PHP_SELF"],
"c.code",
'', $param,
'', $sortfield, $sortorder);
476if (!empty($arrayfields[
'pd.num_paiement'][
'checked'])) {
477 print_liste_field_titre($arrayfields[
'pd.num_paiement'][
'label'], $_SERVER[
"PHP_SELF"],
"pd.num_payment",
'', $param,
'', $sortfield, $sortorder,
'', $arrayfields[
'pd.num_paiement'][
'tooltip']);
480if (!empty($arrayfields[
'transaction'][
'checked'])) {
481 print_liste_field_titre($arrayfields[
'transaction'][
'label'], $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder);
484if (!empty($arrayfields[
'ba.label'][
'checked'])) {
485 print_liste_field_titre($arrayfields[
'ba.label'][
'label'], $_SERVER[
"PHP_SELF"],
"ba.label",
'', $param,
'', $sortfield, $sortorder);
488if (!empty($arrayfields[
'pd.amount'][
'checked'])) {
489 print_liste_field_titre($arrayfields[
'pd.amount'][
'label'], $_SERVER[
"PHP_SELF"],
"pd.amount",
'', $param,
'', $sortfield, $sortorder,
'right ');
494include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
496$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
497$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
498print $hookmanager->resPrint;
500if (!
$conf->main_checkbox_left_column) {
501 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'align="center"', $sortfield, $sortorder,
'maxwidthsearch ');
507$needToFetchEachLine = 0;
508if (isset($extrafields->attributes[
$object->table_element][
'computed']) && is_array($extrafields->attributes[
$object->table_element][
'computed']) && count($extrafields->attributes[
$object->table_element][
'computed']) > 0) {
509 foreach ($extrafields->attributes[
$object->table_element][
'computed'] as $key => $val) {
510 if (!is_null($val) && preg_match(
'/\$object/', $val)) {
511 $needToFetchEachLine++;
522$imaxinloop = ($limit ? min($num, $limit) : $num);
523while ($i < $imaxinloop) {
524 $obj =
$db->fetch_object($resql);
526 $companystatic->id = $obj->soc_id;
527 $companystatic->name = $obj->nom;
530 $result = $company->fetch($obj->socid);
532 print
'<tr class="oddeven">';
533 if (
$conf->main_checkbox_left_column) {
534 print
'<td class="nowrap center">';
537 if (in_array($obj->id_paiement, $arrayofselected)) {
540 print
'<input id="cb'.$obj->id_paiement.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->id_paiement.
'"'.($selected ?
' checked="checked"' :
'').
'>';
549 if (!empty($arrayfields[
'pd.rowid'][
'checked'])) {
550 print
'<td><a href="' . DOL_URL_ROOT .
'/don/payment/card.php?id=' . $obj->payment_id .
'">' .
img_object($langs->trans(
"Payment"),
"payment") .
' ' . $obj->payment_id .
'</a></td>';
557 if (!empty($arrayfields[
'pd.datep'][
'checked'])) {
558 $dateformatforpayment =
'dayhour';
559 print
'<td class="nowraponall">'.dol_print_date(
$db->jdate($obj->datep), $dateformatforpayment,
'tzuser').
'</td>';
566 if (!empty($arrayfields[
's.nom'][
'checked'])) {
567 print
'<td class="nowraponall">';
568 if ($obj->soc_id > 0) {
569 print $companystatic->getNomUrl(1,
'', 24);
571 print
$object->societe = $obj->societe;
580 if (!empty($arrayfields[
'c.code'][
'checked'])) {
581 print
'<td>'.$langs->trans(
"PaymentTypeShort".$obj->paiement_code).
'</td>';
588 if (!empty($arrayfields[
'pd.num_paiement'][
'checked'])) {
589 print
'<td>'.$obj->num_payment.
'</td>';
596 if (!empty($arrayfields[
'transaction'][
'checked'])) {
597 print
'<td class="tdoverflowmax125">';
598 if ($obj->fk_bank > 0) {
599 $test = $bankline->fetch($obj->fk_bank);
600 print $bankline->getNomUrl(1, 0);
609 if (!empty($arrayfields[
'ba.label'][
'checked'])) {
612 $accountstatic->id = $obj->bid;
613 $accountstatic->ref = $obj->bref;
614 $accountstatic->label = $obj->blabel;
615 $accountstatic->number = $obj->number;
616 $accountstatic->account_number = $obj->account_number;
619 $accountingjournal->fetch($obj->accountancy_journal);
620 $accountstatic->accountancy_journal = $accountingjournal->code;
622 print $accountstatic->getNomUrl(1);
630 if (!empty($arrayfields[
'pd.amount'][
'checked'])) {
631 print
'<td class="right"><span class="amount">' .
price($obj->amount) .
'</span></td>';
643 if (!
$conf->main_checkbox_left_column) {
644 print
'<td class="nowrap center">';
647 if (in_array($obj->id_paiement, $arrayofselected)) {
650 print
'<input id="cb'.$obj->id_paiement.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->id_paiement.
'"'.($selected ?
' checked="checked"' :
'').
'>';
662include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
667 foreach ($arrayfields as $key => $val) {
668 if (!empty($val[
'checked'])) {
672 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
677$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
678$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
679print $hookmanager->resPrint;
681print
'</table>'.
"\n";
if(! $sortfield) if(! $sortorder) $object
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 bank accounts.
Class to manage bank transaction lines.
Class to manage accounting journals.
Class to manage donations.
Class to manage third parties objects (customers, suppliers, prospects...)
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...
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.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $allowothertags=array())
Show a picto called object_picto (generic function)
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)
Return value of a param into GET or POST supervariable.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
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.