dolibarr  18.0.0
list.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
5  * Copyright (C) 2005-2011 Regis Houssin <regis.houssin@inodbox.com>
6  * Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
7  * Copyright (C) 2018 charlene Benke <charlie@patas-monkey.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 
28 // Load Dolibarr environment
29 require '../../main.inc.php';
30 require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/compta/deplacement/class/deplacement.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
34 
35 // Load translation files required by the page
36 $langs->loadLangs(array('companies', 'users', 'trips'));
37 
38 // Security check
39 $socid = GETPOST('socid', 'int');
40 if ($user->socid) {
41  $socid = $user->socid;
42 }
43 $result = restrictedArea($user, 'deplacement', '', '');
44 
45 $search_ref = GETPOST('search_ref', 'int');
46 $search_name = GETPOST('search_name', 'alpha');
47 $search_company = GETPOST('search_company', 'alpha');
48 // $search_amount=GETPOST('search_amount','alpha');
49 $sortfield = GETPOST('sortfield', 'aZ09comma');
50 $sortorder = GETPOST('sortorder', 'aZ09comma');
51 $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
52 $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
53 if (empty($page) || $page == -1) {
54  $page = 0;
55 } // If $page is not defined, or '' or -1
56 $offset = $limit * $page;
57 $pageprev = $page - 1;
58 $pagenext = $page + 1;
59 if (!$sortorder) {
60  $sortorder = "DESC";
61 }
62 if (!$sortfield) {
63  $sortfield = "d.dated";
64 }
65 
66 $year = GETPOST("year");
67 $month = GETPOST("month");
68 $day = GETPOST("day");
69 
70 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // Both test are required to be compatible with all browsers
71  $search_ref = "";
72  $search_name = "";
73  $search_company = "";
74  // $search_amount="";
75  $year = "";
76  $month = "";
77  $day = "";
78 }
79 
80 /*
81  * View
82  */
83 
84 $formother = new FormOther($db);
85 $tripandexpense_static = new Deplacement($db);
86 $userstatic = new User($db);
87 
88 $childids = $user->getAllChildIds();
89 $childids[] = $user->id;
90 
91 llxHeader();
92 
93 $sql = "SELECT s.nom, d.fk_user, s.rowid as socid,"; // Ou
94 $sql .= " d.rowid, d.type, d.dated as dd, d.km,"; // Comment
95 $sql .= " d.fk_statut,";
96 $sql .= " u.lastname, u.firstname"; // Qui
97 $sql .= " FROM ".MAIN_DB_PREFIX."user as u";
98 $sql .= ", ".MAIN_DB_PREFIX."deplacement as d";
99 $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON d.fk_soc = s.rowid";
100 if (empty($user->rights->societe->client->voir) && !$socid) {
101  $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc";
102 }
103 $sql .= " WHERE d.fk_user = u.rowid";
104 $sql .= " AND d.entity = ".$conf->entity;
105 if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) {
106  $sql .= ' AND d.fk_user IN ('.$db->sanitize(join(',', $childids)).')';
107 }
108 if (empty($user->rights->societe->client->voir) && !$socid) {
109  $sql .= " AND (sc.fk_user = ".((int) $user->id)." OR d.fk_soc IS NULL) ";
110 }
111 if ($socid) {
112  $sql .= " AND s.rowid = ".((int) $socid);
113 }
114 
115 if ($search_ref) {
116  $sql .= " AND d.rowid = ".((int) $search_ref);
117 }
118 if ($search_name) {
119  $sql .= natural_search('u.lastname', $search_name);
120 }
121 if ($search_company) {
122  $sql .= natural_search('s.nom', $search_company);
123 }
124 $sql .= dolSqlDateFilter("d.dated", $day, $month, $year);
125 
126 $sql .= $db->order($sortfield, $sortorder);
127 $sql .= $db->plimit($limit + 1, $offset);
128 
129 //print $sql;
130 $resql = $db->query($sql);
131 if ($resql) {
132  $num = $db->num_rows($resql);
133 
134  print_barre_liste($langs->trans("TripsAndExpenses"), $page, $_SERVER["PHP_SELF"], "&socid=$socid", $sortfield, $sortorder, '', $num);
135 
136  $i = 0;
137  print '<form method="get" action="'.$_SERVER["PHP_SELF"].'">'."\n";
138  print '<table class="noborder centpercent">';
139  print "<tr class=\"liste_titre\">";
140  print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "d.rowid", "", "&socid=$socid", '', $sortfield, $sortorder);
141  print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "d.type", "", "&socid=$socid", '', $sortfield, $sortorder);
142  print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "d.dated", "", "&socid=$socid", 'align="center"', $sortfield, $sortorder);
143  print_liste_field_titre("Person", $_SERVER["PHP_SELF"], "u.lastname", "", "&socid=$socid", '', $sortfield, $sortorder);
144  print_liste_field_titre("Company", $_SERVER["PHP_SELF"], "s.nom", "", "&socid=$socid", '', $sortfield, $sortorder);
145  print_liste_field_titre("FeesKilometersOrAmout", $_SERVER["PHP_SELF"], "d.km", "", "&socid=$socid", 'class="right"', $sortfield, $sortorder);
147  print "</tr>\n";
148 
149  // Filters lines
150  print '<tr class="liste_titre">';
151  print '<td class="liste_titre">';
152  print '<input class="flat" size="4" type="text" name="search_ref" value="'.$search_ref.'">';
153  print '</td>';
154  print '<td class="liste_titre">';
155  print '&nbsp;';
156  print '</td>';
157  print '<td class="liste_titre" align="center">';
158  if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) {
159  print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">';
160  }
161  print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">';
162  print $formother->selectyear($year ? $year : -1, 'year', 1, 20, 5);
163  print '</td>';
164  print '<td class="liste_titre">';
165  print '<input class="flat" size="10" type="text" name="search_name" value="'.$search_name.'">';
166  print '</td>';
167  print '<td class="liste_titre">';
168  print '<input class="flat" size="10" type="text" name="search_company" value="'.$search_company.'">';
169  print '</td>';
170  print '<td class="liste_titre right">';
171  // print '<input class="flat" size="10" type="text" name="search_amount" value="'.$search_amount.'">';
172  print '</td>';
173  print '<td class="liste_titre maxwidthsearch">';
174  $searchpicto = $form->showFilterAndCheckAddButtons(0);
175  print $searchpicto;
176  print '</td>';
177  print "</tr>\n";
178 
179  while ($i < min($num, $limit)) {
180  $obj = $db->fetch_object($resql);
181 
182  $soc = new Societe($db);
183  if ($obj->socid) {
184  $soc->fetch($obj->socid);
185  }
186 
187  print '<tr class="oddeven">';
188  // Id
189  print '<td><a href="card.php?id='.$obj->rowid.'">'.img_object($langs->trans("ShowTrip"), "trip").' '.$obj->rowid.'</a></td>';
190  // Type
191  print '<td>'.$langs->trans($obj->type).'</td>';
192  // Date
193  print '<td class="center">'.dol_print_date($db->jdate($obj->dd), 'day').'</td>';
194  // User
195  print '<td>';
196  $userstatic->id = $obj->fk_user;
197  $userstatic->lastname = $obj->lastname;
198  $userstatic->firstname = $obj->firstname;
199  print $userstatic->getNomUrl(1);
200  print '</td>';
201 
202  if ($obj->socid) {
203  print '<td>'.$soc->getNomUrl(1).'</td>';
204  } else {
205  print '<td>&nbsp;</td>';
206  }
207 
208  print '<td class="right">'.$obj->km.'</td>';
209 
210  $tripandexpense_static->statut = $obj->fk_statut;
211  print '<td class="right">'.$tripandexpense_static->getLibStatut(5).'</td>';
212  print "</tr>\n";
213 
214  $i++;
215  }
216 
217  print "</table>";
218  print "</form>\n";
219  $db->free($resql);
220 } else {
221  dol_print_error($db);
222 }
223 
224 // End of page
225 llxFooter();
226 $db->close();
Societe
Class to manage third parties objects (customers, suppliers, prospects...)
Definition: societe.class.php:51
llxFooter
llxFooter()
Empty footer.
Definition: wrapper.php:70
GETPOST
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
Definition: functions.lib.php:609
dol_print_error
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
Definition: functions.lib.php:5107
$form
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
FormOther
Classe permettant la generation de composants html autre Only common components are here.
Definition: html.formother.class.php:39
llxHeader
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:56
print_barre_liste
print_barre_liste($titre, $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.
Definition: functions.lib.php:5530
$sql
if(isModEnabled('facture') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $sql
Social contributions to pay.
Definition: index.php:746
restrictedArea
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.
Definition: security.lib.php:353
User
Class to manage Dolibarr users.
Definition: user.class.php:47
GETPOSTISSET
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
Definition: functions.lib.php:509
print_liste_field_titre
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
Definition: functions.lib.php:5295
natural_search
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...
Definition: functions.lib.php:10024
img_object
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
Definition: functions.lib.php:4473
Deplacement
Class to manage trips and working credit notes.
Definition: deplacement.class.php:33
dolSqlDateFilter
dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $excludefirstand=0, $gm=false)
Generate a SQL string to make a filter into a range (for second of date until last second of date).
Definition: date.lib.php:359