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

/htdocs/compta/bank/search.php

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