PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/htdocs/compta/bank/search.php

https://bitbucket.org/speedealing/speedealing
PHP | 289 lines | 234 code | 21 blank | 34 comment | 26 complexity | 2fc00462619d6eb4299764f886414772 MD5 | raw file
Possible License(s): LGPL-3.0, LGPL-2.1, GPL-3.0, MIT
  1. <?php
  2. /* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  3. * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
  4. * Copytight (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com>
  5. * Copytight (C) 2012 Vinícius Nogueira <viniciusvgn@gmail.com>
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 3 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. */
  20. /**
  21. * \file htdocs/compta/bank/search.php
  22. * \ingroup banque
  23. * \brief List of bank transactions
  24. */
  25. require 'pre.inc.php';
  26. require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php';
  27. require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
  28. require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
  29. require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php';
  30. // Security check
  31. if ($user->societe_id) $socid=$user->societe_id;
  32. $result=restrictedArea($user,'banque');
  33. $description=GETPOST("description");
  34. $debit=GETPOST("debit");
  35. $credit=GETPOST("credit");
  36. $type=GETPOST("type");
  37. $account=GETPOST("account");
  38. $bid=GETPOST("bid");
  39. $param='';
  40. if ($description) $param.='&description='.$description;
  41. if ($type) $param.='&type='.$type;
  42. if ($debit) $param.='&debit='.$debit;
  43. if ($credit) $param.='&credit='.$credit;
  44. if ($account) $param.='&account='.$account;
  45. if ($bid) $param.='&bid='.$bid;
  46. $sortfield = GETPOST("sortfield",'alpha');
  47. $sortorder = GETPOST("sortorder",'alpha');
  48. $page = GETPOST("page",'int');
  49. if ($page == -1) { $page = 0; }
  50. $offset = $conf->liste_limit * $page;
  51. $pageprev = $page - 1;
  52. $pagenext = $page + 1;
  53. $limit = $conf->liste_limit;
  54. if (! $sortorder) $sortorder='DESC';
  55. if (! $sortfield) $sortfield='b.dateo';
  56. /*
  57. * View
  58. */
  59. $companystatic=new Societe($db);
  60. $bankaccountstatic=new Account($db);
  61. llxHeader();
  62. $form = new Form($db);
  63. if ($vline) $viewline = $vline;
  64. else $viewline = 50;
  65. $sql = "SELECT b.rowid, b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro, b.num_releve, b.num_chq,";
  66. $sql.= " b.fk_account, b.fk_type,";
  67. $sql.= " ba.rowid as bankid, ba.ref as bankref,";
  68. $sql.= " bu.label as labelurl, bu.url_id";
  69. $sql.= " FROM ";
  70. if (! empty($_REQUEST["bid"])) $sql.= MAIN_DB_PREFIX."bank_class as l,";
  71. $sql.= " ".MAIN_DB_PREFIX."bank_account as ba,";
  72. $sql.= " ".MAIN_DB_PREFIX."bank as b";
  73. $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = b.rowid AND type = 'company'";
  74. $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON bu.url_id = s.rowid";
  75. $sql.= " WHERE b.fk_account = ba.rowid";
  76. $sql.= " AND ba.entity = ".$conf->entity;
  77. if (GETPOST("req_nb"))
  78. {
  79. $sql.= " AND b.num_chq like '%".$db->escape(GETPOST("req_nb"))."%'";
  80. $param.='&amp;req_nb='.urlencode(GETPOST("req_nb"));
  81. }
  82. if (GETPOST("thirdparty"))
  83. {
  84. $sql.=" AND (COALESCE(s.nom,'') LIKE '%".$db->escape(GETPOST("thirdparty"))."%')";
  85. $param.='&amp;thirdparty='.urlencode(GETPOST("thirdparty"));
  86. }
  87. if (! empty($_REQUEST["bid"]))
  88. {
  89. $sql.= " AND b.rowid=l.lineid AND l.fk_categ=".$_REQUEST["bid"];
  90. }
  91. if(! empty($type))
  92. {
  93. $sql .= " AND b.fk_type = '" . $type ."' ";
  94. }
  95. // Search criteria amount
  96. $si=0;
  97. $debit = price2num(str_replace('-','',$debit));
  98. $credit = price2num(str_replace('-','',$credit));
  99. if (is_numeric($debit)) {
  100. $si++;
  101. $sqlw[$si] .= " b.amount = -" . $debit;
  102. }
  103. if (is_numeric($credit)) {
  104. $si++;
  105. $sqlw[$si] .= " b.amount = " . $credit;
  106. }
  107. // Search criteria description
  108. if ($description) {
  109. $si++;
  110. $sqlw[$si] .= " b.label like '%" . $description . "%'";
  111. }
  112. // Other search criteria
  113. for ($i = 1 ; $i <= $si; $i++) {
  114. $sql .= " AND " . $sqlw[$i];
  115. }
  116. $sql.= $db->order($sortfield,$sortorder);
  117. $sql.= $db->plimit($limit+1,$offset);
  118. //print $sql;
  119. $resql = $db->query($sql);
  120. if ($resql)
  121. {
  122. $var=True;
  123. $num = $db->num_rows($resql);
  124. $i = 0;
  125. // Title
  126. $bankcateg=new BankCateg($db);
  127. if (! empty($_REQUEST["bid"]))
  128. {
  129. $result=$bankcateg->fetch($_REQUEST["bid"]);
  130. print_barre_liste($langs->trans("BankTransactionForCategory",$bankcateg->label).' '.($socid?' '.$soc->nom:''), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num);
  131. }
  132. else
  133. {
  134. print_barre_liste($langs->trans("BankTransactions"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num);
  135. }
  136. print '<table class="liste" width="100%">';
  137. print '<tr class="liste_titre">';
  138. print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'b.rowid','',$param,'',$sortfield,$sortorder);
  139. print_liste_field_titre($langs->trans('DateOperationShort'),$_SERVER['PHP_SELF'],'b.dateo','',$param,'align="center"',$sortfield,$sortorder);
  140. print_liste_field_titre($langs->trans('Value'),$_SERVER['PHP_SELF'],'b.datev','',$param,'align="center"',$sortfield,$sortorder);
  141. print '<td class="liste_titre" align="center">'.$langs->trans("Type").'</td>';
  142. print '<td class="liste_titre">'.$langs->trans("Numero").'</td>';
  143. print '<td class="liste_titre">'.$langs->trans("Description").'</td>';
  144. print '<td class="liste_titre">'.$langs->trans("ThirdParty").'</td>';
  145. print '<td class="liste_titre" align="right">'.$langs->trans("Debit").'</td>';
  146. print '<td class="liste_titre" align="right">'.$langs->trans("Credit").'</td>';
  147. print '<td class="liste_titre" align="left"> &nbsp; '.$langs->trans("Account").'</td>';
  148. print "</tr>\n";
  149. print '<form method="post" action="search.php">';
  150. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  151. print '<tr class="liste_titre">';
  152. print '<td class="liste_titre">&nbsp;</td>';
  153. print '<td class="liste_titre">&nbsp;</td>';
  154. print '<td class="liste_titre">&nbsp;</td>';
  155. print '<td class="liste_titre" align="center">';
  156. $form->select_types_paiements(empty($_REQUEST["type"])?'':$_REQUEST["type"], 'type', '', 2, 0, 1, 8);
  157. print '</td>';
  158. print '<td class="liste_titre"><input type="text" class="flat" name="req_nb" value="'.GETPOST("req_nb").'" size="2"></td>';
  159. print '<td class="liste_titre">';
  160. print '<input type="text" class="flat" name="description" size="24" value="'.$description.'">';
  161. print '</td>';
  162. print '<td class="liste_titre"><input type="text" class="flat" name="thirdparty" value="'.GETPOST("thirdparty").'" size="14"></td>';
  163. print '<td class="liste_titre" align="right">';
  164. print '<input type="text" class="flat" name="debit" size="4" value="'.$debit.'">';
  165. print '</td>';
  166. print '<td class="liste_titre" align="right">';
  167. print '<input type="text" class="flat" name="credit" size="4" value="'.$credit.'">';
  168. print '</td>';
  169. print '<td class="liste_titre" align="right">';
  170. print '<input type="hidden" name="action" value="search">';
  171. if (! empty($_REQUEST['bid'])) print '<input type="hidden" name="bid" value="'.$_REQUEST["bid"].'">';
  172. print '<input type="image" class="liste_titre" name="submit" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
  173. print '</td>';
  174. print '</tr>';
  175. // Loop on each record
  176. while ($i < min($num,$limit))
  177. {
  178. $objp = $db->fetch_object($resql);
  179. $var=!$var;
  180. print "<tr $bc[$var]>";
  181. // Ref
  182. print '<td align="left" nowrap="nowrap">';
  183. print "<a href=\"ligne.php?rowid=".$objp->rowid.'">'.img_object($langs->trans("ShowPayment"),"payment").' '.$objp->rowid."</a> &nbsp; ";
  184. print '</td>';
  185. // Date ope
  186. print '<td align="center" nowrap="nowrap">'.dol_print_date($db->jdate($objp->do),"day")."</td>\n";
  187. // Date value
  188. print '<td align="center" nowrap="nowrap">'.dol_print_date($db->jdate($objp->dv),"day")."</td>\n";
  189. // Payment type
  190. print "<td align=\"center\">";
  191. $labeltype=($langs->trans("PaymentTypeShort".$objp->fk_type)!="PaymentTypeShort".$objp->fk_type)?$langs->trans("PaymentTypeShort".$objp->fk_type):$langs->getLabelFromKey($db,$objp->fk_type,'c_paiement','code','libelle');
  192. if ($labeltype == 'SOLD') print '&nbsp;'; //$langs->trans("InitialBankBalance");
  193. else print $labeltype;
  194. print "</td>\n";
  195. // Num
  196. print '<td nowrap>'.($objp->num_chq?$objp->num_chq:"")."</td>\n";
  197. // Description
  198. print "<td>";
  199. print "<a href=\"ligne.php?rowid=".$objp->rowid."&amp;account=".$objp->fk_account."\">";
  200. $reg=array();
  201. preg_match('/\((.+)\)/i',$objp->label,$reg); // Si texte entoure de parenthee on tente recherche de traduction
  202. if ($reg[1] && $langs->trans($reg[1])!=$reg[1]) print $langs->trans($reg[1]);
  203. else print dol_trunc($objp->label,40);
  204. print "</a>&nbsp;";
  205. print '</td>';
  206. // Third party
  207. print "<td>";
  208. if ($objp->url_id)
  209. {
  210. $companystatic->id=$objp->url_id;
  211. $companystatic->nom=$objp->labelurl;
  212. print $companystatic->getNomUrl(1);
  213. }
  214. else
  215. {
  216. print '&nbsp;';
  217. }
  218. print '</td>';
  219. // Debit/Credit
  220. if ($objp->amount < 0)
  221. {
  222. print "<td align=\"right\">".price($objp->amount * -1)."</td><td>&nbsp;</td>\n";
  223. }
  224. else
  225. {
  226. print "<td>&nbsp;</td><td align=\"right\">".price($objp->amount)."</td>\n";
  227. }
  228. // Bank account
  229. print '<td align="left" nowrap="nowrap">';
  230. $bankaccountstatic->id=$objp->bankid;
  231. $bankaccountstatic->label=$objp->bankref;
  232. print $bankaccountstatic->getNomUrl(1);
  233. print "</td>\n";
  234. print "</tr>";
  235. $i++;
  236. }
  237. print "</table>";
  238. $db->free($resql);
  239. }
  240. else
  241. {
  242. dol_print_error($db);
  243. }
  244. // Si acc�s issu d'une recherche et rien de trouv�
  245. if ($_POST["action"] == "search" && ! $num)
  246. {
  247. print $langs->trans("NoRecordFound");
  248. }
  249. $db->close();
  250. llxFooter();
  251. ?>