dolibarr 20.0.0
list.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2007-2016 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2009-2012 Regis Houssin <regis.houssin@inodbox.com>
5 * Copyright (C) 2014-2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
6 * Copyright (C) 2016 Juanjo Menent <jmenent@2byte.es>
7 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 3 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 */
22
29// Load Dolibarr environment
30require '../../../main.inc.php';
31require_once DOL_DOCUMENT_ROOT.'/compta/paiement/cheque/class/remisecheque.class.php';
32require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
33require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
34require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
35
36// Load translation files required by the page
37$langs->loadLangs(array('banks', 'categories', 'bills'));
38
39$search_ref = GETPOST('search_ref', 'alpha');
40$search_date_startday = GETPOSTINT('search_date_startday');
41$search_date_startmonth = GETPOSTINT('search_date_startmonth');
42$search_date_startyear = GETPOSTINT('search_date_startyear');
43$search_date_endday = GETPOSTINT('search_date_endday');
44$search_date_endmonth = GETPOSTINT('search_date_endmonth');
45$search_date_endyear = GETPOSTINT('search_date_endyear');
46$search_date_start = dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear); // Use tzserver
47$search_date_end = dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
48$search_account = GETPOST('search_account', 'alpha');
49$search_amount = GETPOST('search_amount', 'alpha');
50$mode = GETPOST('mode', 'alpha');
51
52$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
53$sortfield = GETPOST('sortfield', 'aZ09comma');
54$sortorder = GETPOST('sortorder', 'aZ09comma');
55$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
56if (empty($page) || $page == -1) {
57 $page = 0;
58} // If $page is not defined, or '' or -1
59$offset = $limit * $page;
60$pageprev = $page - 1;
61$pagenext = $page + 1;
62if (!$sortorder) {
63 $sortorder = "DESC";
64}
65if (!$sortfield) {
66 $sortfield = "bc.date_bordereau";
67}
68
69$optioncss = GETPOST('optioncss', 'alpha');
70$view = GETPOST("view", 'alpha');
71
72$form = new Form($db);
73$formother = new FormOther($db);
74$checkdepositstatic = new RemiseCheque($db);
75$accountstatic = new Account($db);
76
77// List of payment mode to support
78// Example: BANK_PAYMENT_MODES_FOR_DEPOSIT_MANAGEMENT = 'CHQ','TRA'
79$arrayofpaymentmodetomanage = explode(',', getDolGlobalString('BANK_PAYMENT_MODES_FOR_DEPOSIT_MANAGEMENT', 'CHQ'));
80
81$arrayoflabels = array();
82foreach ($arrayofpaymentmodetomanage as $key => $val) {
83 $labelval = ($langs->trans("PaymentType".$val) != "PaymentType".$val ? $langs->trans("PaymentType".$val) : $val);
84 $arrayoflabels[$key] = $labelval;
85}
86
87$arrayfields = array(
88 'bc.ref' => array('label' => "Ref", 'checked' => 1, 'position' => 10),
89 'bc.type' => array('label' => "Type", 'checked' => 1, 'position' => 20),
90 'bc.date_bordereau' => array('label' => "DateCreation", 'checked' => 1, 'position' => 30),
91 'ba.label' => array('label' => "BankAccount", 'checked' => 1, 'position' => 40),
92 'bc.nbcheque' => array('label' => "NbOfCheques", 'checked' => 1, 'position' => 50),
93 'bc.amount' => array('label' => "Amount", 'checked' => 1, 'position' => 60),
94 'bc.statut' => array('label' => "Status", 'checked' => 1, 'position' => 70)
95);
96$arrayfields = dol_sort_array($arrayfields, 'position');
97'@phan-var-force array<string,array{label:string,checked?:int<0,1>,position?:int,help?:string}> $arrayfields'; // dol_sort_array looses type for Phan
98
99// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
100$hookmanager->initHooks(array('chequelist'));
101$object = new RemiseCheque($db);
102
103// Security check
104$result = restrictedArea($user, 'banque', '', '');
105
106
107/*
108 * Actions
109 */
110
111$parameters = array();
112$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
113if ($reshook < 0) {
114 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
115}
116
117if (empty($reshook)) {
118 include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
119
120 // All tests are required to be compatible with all browsers
121 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) {
122 $search_ref = '';
123 $search_amount = '';
124 $search_account = '';
125 $search_date_startday = '';
126 $search_date_startmonth = '';
127 $search_date_startyear = '';
128 $search_date_endday = '';
129 $search_date_endmonth = '';
130 $search_date_endyear = '';
131 $search_date_start = '';
132 $search_date_end = '';
133 }
134}
135
136
137
138/*
139 * View
140 */
141
142$form = new Form($db);
143
144llxHeader('', $langs->trans("ChequeDeposits"), '', 0, 0, '', '', '', 'bodyforlist');
145
146$sql = "SELECT bc.rowid, bc.ref, bc.date_bordereau,";
147$sql .= " bc.nbcheque, bc.amount, bc.statut, bc.type,";
148$sql .= " ba.rowid as bid, ba.label";
149
150// Add fields from hooks
151$parameters = array();
152$reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
153$sql .= $hookmanager->resPrint;
154
155$sqlfields = $sql; // $sql fields to remove for count total
156
157$sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque as bc,";
158$sql .= " ".MAIN_DB_PREFIX."bank_account as ba";
159$sql .= " WHERE bc.fk_bank_account = ba.rowid";
160$sql .= " AND bc.entity = ".((int) $conf->entity);
161
162// Search criteria
163if ($search_ref) {
164 $sql .= natural_search("bc.ref", $search_ref);
165}
166if ($search_account > 0) {
167 $sql .= " AND bc.fk_bank_account = ".((int) $search_account);
168}
169if ($search_amount) {
170 $sql .= natural_search("bc.amount", price2num($search_amount));
171}
172if ($search_date_start) {
173 $sql .= " AND bc.date_bordereau >= '" . $db->idate($search_date_start) . "'";
174}
175if ($search_date_end) {
176 $sql .= " AND bc.date_bordereau <= '" . $db->idate($search_date_end) . "'";
177}
178
179// Add where from hooks
180$parameters = array();
181$reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook
182$sql .= $hookmanager->resPrint;
183
184// Count total nb of records
185$nbtotalofrecords = '';
186if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
187 /* The fast and low memory method to get and count full list converts the sql into a sql count */
188 $sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql);
189 $sqlforcount = preg_replace('/GROUP BY .*$/', '', $sqlforcount);
190 $resql = $db->query($sqlforcount);
191 if ($resql) {
192 $objforcount = $db->fetch_object($resql);
193 $nbtotalofrecords = $objforcount->nbtotalofrecords;
194 } else {
195 dol_print_error($db);
196 }
197
198 if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
199 $page = 0;
200 $offset = 0;
201 }
202 $db->free($resql);
203}
204
205// Complete request and execute it with limit
206$sql .= $db->order($sortfield, $sortorder);
207if ($limit) {
208 $sql .= $db->plimit($limit + 1, $offset);
209}
210//print "$sql";
211
212$resql = $db->query($sql);
213if ($resql) {
214 $num = $db->num_rows($resql);
215 $i = 0;
216 $param = '';
217 if (!empty($mode)) {
218 $param .= '&mode='.urlencode($mode);
219 }
220 if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
221 $param .= '&contextpage='.$contextpage;
222 }
223 if ($search_date_startday) {
224 $param .= '&search_date_startday='.urlencode((string) ($search_date_startday));
225 }
226 if ($search_date_startmonth) {
227 $param .= '&search_date_startmonth='.urlencode((string) ($search_date_startmonth));
228 }
229 if ($search_date_startyear) {
230 $param .= '&search_date_startyear='.urlencode((string) ($search_date_startyear));
231 }
232 if ($search_date_endday) {
233 $param .= '&search_date_endday='.urlencode((string) ($search_date_endday));
234 }
235 if ($search_date_endmonth) {
236 $param .= '&search_date_endmonth='.urlencode((string) ($search_date_endmonth));
237 }
238 if ($search_date_endyear) {
239 $param .= '&search_date_endyear='.urlencode((string) ($search_date_endyear));
240 }
241 if ($limit > 0 && $limit != $conf->liste_limit) {
242 $param .= '&limit='.$limit;
243 }
244 if ($search_amount != '') {
245 $param .= '&search_amount='.urlencode($search_amount);
246 }
247 if ($search_account > 0) {
248 $param .= '&search_account='.urlencode((string) ($search_account));
249 }
250
251 $url = DOL_URL_ROOT.'/compta/paiement/cheque/card.php?action=new';
252
253 $newcardbutton = '';
254 $newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-bars imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss' => 'reposition'));
255 $newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss' => 'reposition'));
256 $newcardbutton .= dolGetButtonTitleSeparator();
257 $newcardbutton .= dolGetButtonTitle($langs->trans('NewCheckDeposit'), '', 'fa fa-plus-circle', $url, '', $user->hasRight('banque', 'cheque'));
258
259 print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
260 if ($optioncss != '') {
261 print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
262 }
263 print '<input type="hidden" name="token" value="'.newToken().'">';
264 print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
265 print '<input type="hidden" name="view" value="'.dol_escape_htmltag($view).'">';
266 print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
267 print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
268 print '<input type="hidden" name="page" value="'.$page.'">';
269 print '<input type="hidden" name="mode" value="'.$mode.'">';
270
271
272 // @phan-suppress-next-line PhanPluginSuspiciousParamOrder
273 print_barre_liste($langs->trans("MenuChequeDeposits"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'bank_account', 0, $newcardbutton, '', $limit);
274
275 $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
276 $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields
277 $massactionbutton = '';
278 if ($massactionbutton) {
279 $selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
280 }
281
282 $moreforfilter = '';
283 print '<div class="div-table-responsive">';
284 print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : '').'">';
285
286 // Fields title search
287 // --------------------------------------------------------------------
288 print '<tr class="liste_titre_filter">';
289
290 // Action column
291 if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
292 print '<td class="liste_titre center maxwidthsearch actioncolumn">';
293 $searchpicto = $form->showFilterButtons('left');
294 print $searchpicto;
295 print '</td>';
296 }
297
298 // Filter: Ref
299 if (!empty($arrayfields['bc.ref']['checked'])) {
300 print '<td class="liste_titre">';
301 print '<input class="flat" type="text" size="4" name="search_ref" value="' . $search_ref . '">';
302 print '</td>';
303 }
304
305 // Filter: Type
306 if (!empty($arrayfields['bc.type']['checked'])) {
307 print '<td class="liste_titre">';
308 print '</td>';
309 }
310
311 // Filter: Date
312 if (!empty($arrayfields['bc.date_bordereau']['checked'])) {
313 print '<td class="liste_titre center">';
314 print '<div class="nowrapfordate">';
315 print $form->selectDate($search_date_start ? $search_date_start : -1, 'search_date_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From'));
316 print '</div>';
317 print '<div class="nowrapfordate">';
318 print $form->selectDate($search_date_end ? $search_date_end : -1, 'search_date_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to'));
319 print '</div>';
320 print '</td>';
321 }
322
323 // Filter: Bank account
324 if (!empty($arrayfields['ba.label']['checked'])) {
325 print '<td class="liste_titre">';
326 $form->select_comptes($search_account, 'search_account', 0, '', 1);
327 print '</td>';
328 }
329
330 // Filter: Number of cheques
331 if (!empty($arrayfields['bc.nbcheque']['checked'])) {
332 print '<td class="liste_titre">&nbsp;</td>';
333 }
334
335 // Filter: Amount
336 if (!empty($arrayfields['bc.amount']['checked'])) {
337 print '<td class="liste_titre right">';
338 print '<input class="flat maxwidth50" type="text" name="search_amount" value="' . $search_amount . '">';
339 print '</td>';
340 }
341
342 // Filter: Status (only placeholder)
343 if (!empty($arrayfields['bc.statut']['checked'])) {
344 print '<td class="liste_titre"></td>';
345 }
346
347 // Fields from hook
348 $parameters = array('arrayfields' => $arrayfields);
349 $reshook = $hookmanager->executeHooks('printFieldListOption', $parameters); // Note that $action and $object may have been modified by hook
350 print $hookmanager->resPrint;
351
352 // Action column
353 if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
354 print '<td class="liste_titre center maxwidthsearch actioncolumn">';
355 $searchpicto = $form->showFilterButtons();
356 print $searchpicto;
357 print '</td>';
358 }
359
360 print "</tr>\n";
361
362 $totalarray = array();
363 $totalarray['nbfield'] = 0;
364
365 // Fields title label
366 // --------------------------------------------------------------------
367 print '<tr class="liste_titre">';
368 if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
369 print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ');
370 $totalarray['nbfield']++;
371 }
372 if (!empty($arrayfields['bc.ref']['checked'])) {
373 print_liste_field_titre($arrayfields['bc.ref']['label'], $_SERVER["PHP_SELF"], "bc.ref", "", $param, "", $sortfield, $sortorder);
374 $totalarray['nbfield']++;
375 }
376 if (!empty($arrayfields['bc.type']['checked'])) {
377 print_liste_field_titre($arrayfields['bc.type']['label'], $_SERVER["PHP_SELF"], "bc.type", "", $param, "", $sortfield, $sortorder);
378 $totalarray['nbfield']++;
379 }
380 if (!empty($arrayfields['bc.date_bordereau']['checked'])) {
381 print_liste_field_titre($arrayfields['bc.date_bordereau']['label'], $_SERVER["PHP_SELF"], "bc.date_bordereau", "", $param, 'align="center"', $sortfield, $sortorder);
382 $totalarray['nbfield']++;
383 }
384 if (!empty($arrayfields['ba.label']['checked'])) {
385 print_liste_field_titre($arrayfields['ba.label']['label'], $_SERVER["PHP_SELF"], "ba.label", "", $param, "", $sortfield, $sortorder);
386 $totalarray['nbfield']++;
387 }
388 if (!empty($arrayfields['bc.nbcheque']['checked'])) {
389 print_liste_field_titre($arrayfields['bc.nbcheque']['label'], $_SERVER["PHP_SELF"], "bc.nbcheque", "", $param, 'class="right"', $sortfield, $sortorder);
390 $totalarray['nbfield']++;
391 }
392 if (!empty($arrayfields['bc.amount']['checked'])) {
393 print_liste_field_titre($arrayfields['bc.amount']['label'], $_SERVER["PHP_SELF"], "bc.amount", "", $param, 'class="right"', $sortfield, $sortorder);
394 $totalarray['nbfield']++;
395 }
396 if (!empty($arrayfields['bc.statut']['checked'])) {
397 print_liste_field_titre($arrayfields['bc.statut']['label'], $_SERVER["PHP_SELF"], "bc.statut", "", $param, 'class="right"', $sortfield, $sortorder);
398 $totalarray['nbfield']++;
399 }
400
401 // Hook fields
402 $parameters = array('arrayfields' => $arrayfields, 'param' => $param, 'sortfield' => $sortfield, 'sortorder' => $sortorder);
403 $reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
404 print $hookmanager->resPrint;
405
406 if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
407 print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ');
408 $totalarray['nbfield']++;
409 }
410
411 print "</tr>\n";
412
413 $checkedCount = 0;
414 foreach ($arrayfields as $column) {
415 if ($column['checked']) {
416 $checkedCount++;
417 }
418 }
419
420 if ($num > 0) {
421 $savnbfield = 8;
422
423 $i = 0;
424 $totalarray = array();
425 $totalarray['nbfield'] = 0;
426 $imaxinloop = ($limit ? min($num, $limit) : $num);
427 while ($i < $imaxinloop) {
428 $objp = $db->fetch_object($resql);
429
430 $checkdepositstatic->id = $objp->rowid;
431 $checkdepositstatic->ref = ($objp->ref ? $objp->ref : $objp->rowid);
432 $checkdepositstatic->statut = $objp->statut;
433 $checkdepositstatic->nbcheque = $objp->nbcheque;
434 $checkdepositstatic->amount = $objp->amount;
435 $checkdepositstatic->date_bordereau = $objp->date_bordereau;
436 $checkdepositstatic->type = $objp->type;
437
438 $account = new Account($db);
439 $account->fetch($objp->bid);
440 $checkdepositstatic->account_id = $account->getNomUrl(1);
441
442 if ($mode == 'kanban') {
443 if ($i == 0) {
444 print '<tr class="trkanban"><td colspan="'.$savnbfield.'">';
445 print '<div class="box-flex-container kanban">';
446 }
447 // Output Kanban
448 print $checkdepositstatic->getKanbanView('', array('selected' => in_array($checkdepositstatic->id, $arrayofselected)));
449 if ($i == ($imaxinloop - 1)) {
450 print '</div>';
451 print '</td></tr>';
452 }
453 } else {
454 print '<tr class="oddeven">';
455
456 // Action column
457 if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
458 print '<td class="nowrap center"></td>';
459 if (!$i) {
460 $totalarray['nbfield']++;
461 }
462 }
463
464 // Num ref cheque
465 if (!empty($arrayfields['bc.ref']['checked'])) {
466 print '<td>';
467 print $checkdepositstatic->getNomUrl(1);
468 print '</td>';
469 if (!$i) {
470 $totalarray['nbfield']++;
471 }
472 }
473
474 // Type
475 if (!empty($arrayfields['bc.type']['checked'])) {
476 $labelpaymentmode = ($langs->transnoentitiesnoconv("PaymentType".$checkdepositstatic->type) != "PaymentType".$checkdepositstatic->type ? $langs->transnoentitiesnoconv("PaymentType".$checkdepositstatic->type) : $checkdepositstatic->type);
477 print '<td>'.dol_escape_htmltag($labelpaymentmode).'</td>';
478 if (!$i) {
479 $totalarray['nbfield']++;
480 }
481 }
482
483 // Date
484 if (!empty($arrayfields['bc.date_bordereau']['checked'])) {
485 print '<td class="center">'.dol_print_date($db->jdate($objp->date_bordereau), 'dayhour', 'tzuser').'</td>';
486 if (!$i) {
487 $totalarray['nbfield']++;
488 }
489 }
490
491 // Bank
492 if (!empty($arrayfields['ba.label']['checked'])) {
493 print '<td>';
494 if ($objp->bid) {
495 print '<a href="'.DOL_URL_ROOT.'/compta/bank/bankentries_list.php?account='.$objp->bid.'">'.img_object($langs->trans("ShowAccount"), 'account').' '.$objp->label.'</a>';
496 } else {
497 print '&nbsp;';
498 }
499 print '</td>';
500 if (!$i) {
501 $totalarray['nbfield']++;
502 }
503 }
504
505 // Number of cheques
506 if (!empty($arrayfields['bc.nbcheque']['checked'])) {
507 print '<td class="right">'.$objp->nbcheque.'</td>';
508 if (!$i) {
509 $totalarray['nbfield']++;
510 }
511 }
512
513 // Amount
514 if (!empty($arrayfields['bc.amount']['checked'])) {
515 print '<td class="right"><span class="amount">'.price($objp->amount).'</span></td>';
516 if (!$i) {
517 $totalarray['nbfield']++;
518 }
519 if (empty($totalarray['val']['amount'])) {
520 $totalarray['val']['amount'] = $objp->amount;
521 } else {
522 $totalarray['val']['amount'] += $objp->amount;
523 }
524 }
525
526 // Status
527 if (!empty($arrayfields['bc.statut']['checked'])) {
528 print '<td class="right">';
529 print $checkdepositstatic->LibStatut($objp->statut, 5);
530 print '</td>';
531 if (!$i) {
532 $totalarray['nbfield']++;
533 }
534 }
535
536 // Action column
537 if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
538 print '<td class="nowrap center"></td>';
539 if (!$i) {
540 $totalarray['nbfield']++;
541 }
542 }
543
544 print "</tr>\n";
545 }
546 $i++;
547 }
548 } else {
549 // If no record found
550 if ($num == 0) {
551 $colspan = 1;
552 foreach ($arrayfields as $key => $val) {
553 if (!empty($val['checked'])) {
554 $colspan++;
555 }
556 }
557 print '<tr class="oddeven">';
558 print '<td colspan="' . $colspan . '" class="opacitymedium">' . $langs->trans("NoRecordFound") . "</td>";
559 print '</tr>';
560 }
561 }
562 print "</table>";
563 print "</div>";
564 print "</form>\n";
565} else {
566 dol_print_error($db);
567}
568
569// End of page
570llxFooter();
571$db->close();
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:58
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:55
llxFooter()
Empty footer.
Definition wrapper.php:69
Class to manage bank accounts.
Class to manage generation of HTML components Only common components must be here.
Class permettant la generation de composants html autre Only common components are here.
Class to manage cheque delivery receipts.
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...
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
natural_search($fields, $value, $mode=0, $nofirstand=0)
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...
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
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.
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 dolibarr global constant string value.
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.