dolibarr  17.0.4
list.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2005-2016 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
5  * Copyright (C) 2010-2018 Juanjo Menent <jmenent@2byte.es>
6  * Copyright (C) 2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20  */
21 
28 // Load Dolibarr environment
29 require '../../main.inc.php';
30 require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/ligneprelevement.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
33 
34 // Load translation files required by the page
35 $langs->loadLangs(array('banks', 'withdrawals', 'companies', 'categories'));
36 
37 $action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ...
38 $massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists)
39 $show_files = GETPOST('show_files', 'int'); // Show files area generated by bulk actions ?
40 $confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation
41 $cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button
42 $toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list
43 $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'directdebitcredittransferlinelist'; // To manage different context of search
44 $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page
45 $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
46 
47 $type = GETPOST('type', 'aZ09');
48 
49 $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
50 $sortfield = GETPOST('sortfield', 'aZ09comma');
51 $sortorder = GETPOST('sortorder', 'aZ09comma');
52 $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
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 = "p.datec";
64 }
65 
66 $search_line = GETPOST('search_line', 'alpha');
67 $search_bon = GETPOST('search_bon', 'alpha');
68 $search_code = GETPOST('search_code', 'alpha');
69 $search_company = GETPOST('search_company', 'alpha');
70 $statut = GETPOST('statut', 'int');
71 
72 $bon = new BonPrelevement($db);
73 $line = new LignePrelevement($db);
74 $company = new Societe($db);
75 
76 $hookmanager->initHooks(array('withdrawalsreceiptslineslist'));
77 
78 // Security check
79 $socid = GETPOST('socid', 'int');
80 if ($user->socid) {
81  $socid = $user->socid;
82 }
83 if ($type == 'bank-transfer') {
84  $result = restrictedArea($user, 'paymentbybanktransfer', '', '', '');
85 } else {
86  $result = restrictedArea($user, 'prelevement', '', '', 'bons');
87 }
88 
89 
90 /*
91  * Actions
92  */
93 
94 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
95  $search_line = "";
96  $search_bon = "";
97  $search_code = "";
98  $search_company = "";
99  $statut = "";
100 }
101 
102 
103 /*
104  * View
105  */
106 
107 $form = new Form($db);
108 
109 llxHeader('', $langs->trans("WithdrawalsLines"));
110 
111 $sql = "SELECT p.rowid, p.ref, p.statut as status, p.datec";
112 $sql .= " , f.rowid as facid, f.ref as invoiceref, f.total_ttc";
113 $sql .= " , s.rowid as socid, s.nom as name, s.code_client, s.code_fournisseur, s.email";
114 $sql .= " , pl.amount, pl.statut as statut_ligne, pl.rowid as rowid_ligne";
115 
116 $sqlfields = $sql; // $sql fields to remove for count total
117 
118 $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
119 $sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl";
120 $sql .= " , ".MAIN_DB_PREFIX."prelevement as pf";
121 if ($type == 'bank-transfer') {
122  $sql .= " , ".MAIN_DB_PREFIX."facture_fourn as f";
123 } else {
124  $sql .= " , ".MAIN_DB_PREFIX."facture as f";
125 }
126 $sql .= " , ".MAIN_DB_PREFIX."societe as s";
127 $sql .= " WHERE pl.fk_prelevement_bons = p.rowid";
128 $sql .= " AND pf.fk_prelevement_lignes = pl.rowid";
129 if ($type == 'bank-transfer') {
130  $sql .= " AND pf.fk_facture_fourn = f.rowid";
131 } else {
132  $sql .= " AND pf.fk_facture = f.rowid";
133 }
134 $sql .= " AND f.fk_soc = s.rowid";
135 $sql .= " AND f.entity IN (".getEntity('invoice').")";
136 if ($socid) {
137  $sql .= " AND s.rowid = ".((int) $socid);
138 }
139 if ($search_line) {
140  $sql .= " AND pl.rowid = '".$db->escape($search_line)."'";
141 }
142 if ($search_bon) {
143  $sql .= natural_search("p.ref", $search_bon);
144 }
145 if ($type == 'bank-transfer') {
146  if ($search_code) {
147  $sql .= natural_search("s.code_fournisseur", $search_code);
148  }
149 } else {
150  if ($search_code) {
151  $sql .= natural_search("s.code_client", $search_code);
152  }
153 }
154 if ($search_company) {
155  $sql .= natural_search("s.nom", $search_company);
156 }
157 
158 // Count total nb of records
159 $nbtotalofrecords = '';
160 if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
161  /* The fast and low memory method to get and count full list converts the sql into a sql count */
162  $sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql);
163  $sqlforcount = preg_replace('/GROUP BY .*$/', '', $sqlforcount);
164  $resql = $db->query($sqlforcount);
165  if ($resql) {
166  $objforcount = $db->fetch_object($resql);
167  $nbtotalofrecords = $objforcount->nbtotalofrecords;
168  } else {
169  dol_print_error($db);
170  }
171 
172  if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
173  $page = 0;
174  $offset = 0;
175  }
176  $db->free($resql);
177 }
178 
179 $sql .= $db->order($sortfield, $sortorder);
180 if ($limit) {
181  $sql .= $db->plimit($limit + 1, $offset);
182 }
183 
184 $result = $db->query($sql);
185 if ($result) {
186  $num = $db->num_rows($result);
187  $i = 0;
188 
189  $param = "&amp;statut=".urlencode($statut);
190  $param .= "&amp;search_bon=".urlencode($search_bon);
191  if ($type == 'bank-transfer') {
192  $param .= '&amp;type=bank-transfer';
193  }
194  if ($limit > 0 && $limit != $conf->liste_limit) {
195  $param .= '&limit='.urlencode($limit);
196  }
197 
198  print"\n<!-- debut table -->\n";
199  print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'."\n";
200  if ($optioncss != '') {
201  print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
202  }
203  print '<input type="hidden" name="token" value="'.newToken().'">';
204  print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
205  print '<input type="hidden" name="action" value="list">';
206  print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
207  print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
208  print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
209  if ($type != '') {
210  print '<input type="hidden" name="type" value="'.$type.'">';
211  }
212 
213  $title = $langs->trans("WithdrawalsLines");
214  if ($type == 'bank-transfer') {
215  $title = $langs->trans("CreditTransferLines");
216  }
217  print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'generic', 0, '', '', $limit, 0, 0, 1);
218 
219  $moreforfilter = '';
220 
221  print '<div class="div-table-responsive">';
222  print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
223 
224  print '<tr class="liste_titre">';
225  print '<td class="liste_titre"><input type="text" class="flat" name="search_line" value="'.dol_escape_htmltag($search_line).'" size="6"></td>';
226  print '<td class="liste_titre"><input type="text" class="flat" name="search_bon" value="'.dol_escape_htmltag($search_bon).'" size="6"></td>';
227  print '<td class="liste_titre">&nbsp;</td>';
228  print '<td class="liste_titre"><input type="text" class="flat" name="search_company" value="'.dol_escape_htmltag($search_company).'" size="6"></td>';
229  print '<td class="liste_titre center"><input type="text" class="flat" name="search_code" value="'.dol_escape_htmltag($search_code).'" size="6"></td>';
230  print '<td class="liste_titre">&nbsp;</td>';
231  print '<td class="liste_titre">&nbsp;</td>';
232  print '<td class="liste_titre maxwidthsearch">';
233  $searchpicto = $form->showFilterButtons();
234  print $searchpicto;
235  print '</td>';
236  print '</tr>';
237 
238  $columntitle = "WithdrawalsReceipts";
239  $columntitlethirdparty = "CustomerCode";
240  $columncodethirdparty = "s.code_client";
241  if ($type == 'bank-transfer') {
242  $columntitle = "BankTransferReceipts";
243  $columntitlethirdparty = "SupplierCode";
244  $columncodethirdparty = "s.code_fournisseur";
245  }
246 
247  print '<tr class="liste_titre">';
248  print_liste_field_titre($columntitle, $_SERVER["PHP_SELF"], "p.ref", '', $param, '', $sortfield, $sortorder);
249  print_liste_field_titre("Line", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder);
250  print_liste_field_titre("Bill", $_SERVER["PHP_SELF"], "f.ref", '', $param, '', $sortfield, $sortorder);
251  print_liste_field_titre("Company", $_SERVER["PHP_SELF"], "s.nom", '', $param, '', $sortfield, $sortorder);
252  print_liste_field_titre($columntitlethirdparty, $_SERVER["PHP_SELF"], $columncodethirdparty, '', $param, '', $sortfield, $sortorder, 'center ');
253  print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "p.datec", "", $param, '', $sortfield, $sortorder, 'center ');
254  print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "pl.amount", "", $param, '', $sortfield, $sortorder, 'right ');
256  print "</tr>\n";
257 
258  if ($num) {
259  while ($i < min($num, $limit)) {
260  $obj = $db->fetch_object($result);
261 
262  $bon->id = $obj->rowid;
263  $bon->ref = $obj->ref;
264  $bon->statut = $obj->status;
265 
266  $company->id = $obj->socid;
267  $company->name = $obj->name;
268  $company->email = $obj->email;
269  $company->code_client = $obj->code_client;
270 
271  print '<tr class="oddeven">';
272 
273  print '<td>';
274  print $bon->getNomUrl(1);
275  print "</td>\n";
276 
277  print '<td>';
278  print $line->LibStatut($obj->statut_ligne, 2);
279  print "&nbsp;";
280  print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/line.php?id='.$obj->rowid_ligne.'">';
281  print substr('000000'.$obj->rowid_ligne, -6);
282  print '</a></td>';
283 
284  print '<td>';
285  $link_to_bill = '/compta/facture/card.php?facid=';
286  $link_title = 'Invoice';
287  $link_picto = 'bill';
288  if ($type == 'bank-transfer') {
289  $link_to_bill = '/fourn/facture/card.php?facid=';
290  $link_title = 'SupplierInvoice';
291  $link_picto = 'supplier_invoice';
292  }
293  print '<a href="'.DOL_URL_ROOT.$link_to_bill.$obj->facid.'">';
294  print img_object($langs->trans($link_title), $link_picto);
295  print '&nbsp;'.$obj->invoiceref."</td>\n";
296  print '</a>';
297  print '</td>';
298 
299  print '<td>';
300  print $company->getNomUrl(1);
301  print "</td>\n";
302 
303 
304  print '<td class="center">';
305  $link_to_tab = '/comm/card.php?socid=';
306  $link_code = $obj->code_client;
307  if ($type == 'bank-transfer') {
308  $link_to_tab = '/fourn/card.php?socid=';
309  $link_code = $obj->code_fournisseur;
310  }
311  print '<a href="'.DOL_URL_ROOT.$link_to_tab.$company->id.'">'.$link_code."</a></td>\n";
312 
313  print '<td class="center">'.dol_print_date($db->jdate($obj->datec), 'day')."</td>\n";
314 
315  print '<td class="right"><span class="amount">'.price($obj->amount)."</span></td>\n";
316 
317  print '<td>&nbsp;</td>';
318 
319  print "</tr>\n";
320  $i++;
321  }
322  } else {
323  print '<tr><td colspan="8"><span class="opacitymedium">'.$langs->trans("None").'</span></td></tr>';
324  }
325  print "</table>";
326  print '</div>';
327 
328  print '</form>';
329 
330  $db->free($result);
331 } else {
332  dol_print_error($db);
333 }
334 
335 // End of page
336 llxFooter();
337 $db->close();
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
llxFooter()
Empty footer.
Definition: wrapper.php:70
Class to manage withdrawal receipts.
Class to manage generation of HTML components Only common components must be here.
Class to manage withdrawals.
Class to manage third parties objects (customers, suppliers, prospects...)
if(isModEnabled('facture') &&!empty($user->rights->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') &&!empty($user->rights->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)) $resql
Social contributions to pay.
Definition: index.php:745
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
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...
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
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.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
$nbtotalofrecords
Count total nb of records.
Definition: list.php:329
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.