card.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. <?php
  2. /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  3. * Copyright (C) 2005-2010 Laurent Destailleur <eldy@users.sourceforge.net>
  4. * Copyright (C) 2010-2016 Juanjo Menent <jmenent@2byte.es>
  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 3 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/prelevement/card.php
  21. * \ingroup prelevement
  22. * \brief Fiche prelevement
  23. */
  24. require('../../main.inc.php');
  25. require_once DOL_DOCUMENT_ROOT.'/core/lib/prelevement.lib.php';
  26. require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/ligneprelevement.class.php';
  27. require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php';
  28. require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
  29. $langs->load("banks");
  30. $langs->load("categories");
  31. if (!$user->rights->prelevement->bons->lire)
  32. accessforbidden();
  33. $langs->load("bills");
  34. $langs->load("withdrawals");
  35. // Security check
  36. if ($user->societe_id > 0) accessforbidden();
  37. // Get supervariables
  38. $action = GETPOST('action','alpha');
  39. $id = GETPOST('id','int');
  40. $socid = GETPOST('socid','int');
  41. $limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit;
  42. $sortfield = GETPOST("sortfield",'alpha');
  43. $sortorder = GETPOST("sortorder",'alpha');
  44. $page = GETPOST("page",'int');
  45. if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
  46. $offset = $limit * $page;
  47. $pageprev = $page - 1;
  48. $pagenext = $page + 1;
  49. if (! $sortfield) $sortfield='pl.fk_soc';
  50. if (! $sortorder) $sortorder='DESC';
  51. /*
  52. * Actions
  53. */
  54. if ( $action == 'confirm_delete' )
  55. {
  56. $bon = new BonPrelevement($db,"");
  57. $bon->fetch($id);
  58. $res=$bon->delete();
  59. if ($res > 0)
  60. {
  61. header("Location: index.php");
  62. exit;
  63. }
  64. }
  65. if ( $action == 'confirm_credite' && GETPOST('confirm','alpha') == 'yes')
  66. {
  67. $bon = new BonPrelevement($db,"");
  68. $bon->fetch($id);
  69. $res=$bon->set_credite();
  70. if ($res >= 0)
  71. {
  72. header("Location: card.php?id=".$id);
  73. exit;
  74. }
  75. }
  76. if ($action == 'infotrans' && $user->rights->prelevement->bons->send)
  77. {
  78. require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
  79. $bon = new BonPrelevement($db,"");
  80. $bon->fetch($id);
  81. $dt = dol_mktime(12,0,0,GETPOST('remonth','int'),GETPOST('reday','int'),GETPOST('reyear','int'));
  82. /*
  83. if ($_FILES['userfile']['name'] && basename($_FILES['userfile']['name'],".ps") == $bon->ref)
  84. {
  85. $dir = $conf->prelevement->dir_output.'/receipts';
  86. if (dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $dir . "/" . dol_unescapefile($_FILES['userfile']['name']),1) > 0)
  87. {
  88. $bon->set_infotrans($user, $dt, GETPOST('methode','alpha'));
  89. }
  90. header("Location: card.php?id=".$id);
  91. exit;
  92. }
  93. else
  94. {
  95. dol_syslog("Fichier invalide",LOG_WARNING);
  96. $mesg='BadFile';
  97. }*/
  98. $error = $bon->set_infotrans($user, $dt, GETPOST('methode','alpha'));
  99. if ($error)
  100. {
  101. header("Location: card.php?id=".$id."&error=$error");
  102. exit;
  103. }
  104. }
  105. if ($action == 'infocredit' && $user->rights->prelevement->bons->credit)
  106. {
  107. $bon = new BonPrelevement($db,"");
  108. $bon->fetch($id);
  109. $dt = dol_mktime(12,0,0,GETPOST('remonth','int'),GETPOST('reday','int'),GETPOST('reyear','int'));
  110. $error = $bon->set_infocredit($user, $dt);
  111. if ($error)
  112. {
  113. header("Location: card.php?id=".$id."&error=$error");
  114. exit;
  115. }
  116. }
  117. /*
  118. * View
  119. */
  120. $bon = new BonPrelevement($db,"");
  121. $form = new Form($db);
  122. llxHeader('',$langs->trans("WithdrawalsReceipts"));
  123. if ($id > 0)
  124. {
  125. $bon->fetch($id);
  126. $head = prelevement_prepare_head($bon);
  127. dol_fiche_head($head, 'prelevement', $langs->trans("WithdrawalsReceipts"), '', 'payment');
  128. if (GETPOST('error','alpha')!='')
  129. {
  130. print '<div class="error">'.$bon->getErrorString(GETPOST('error','alpha')).'</div>';
  131. }
  132. /*if ($action == 'credite')
  133. {
  134. print $form->formconfirm("card.php?id=".$bon->id,$langs->trans("ClassCredited"),$langs->trans("ClassCreditedConfirm"),"confirm_credite",'',1,1);
  135. }*/
  136. print '<table class="border" width="100%">';
  137. print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$bon->getNomUrl(1).'</td></tr>';
  138. print '<tr><td>'.$langs->trans("Date").'</td><td>'.dol_print_date($bon->datec,'day').'</td></tr>';
  139. print '<tr><td>'.$langs->trans("Amount").'</td><td>'.price($bon->amount).'</td></tr>';
  140. // Status
  141. print '<tr><td>'.$langs->trans('Status').'</td>';
  142. print '<td>'.$bon->getLibStatut(1).'</td>';
  143. print '</tr>';
  144. if($bon->date_trans <> 0)
  145. {
  146. $muser = new User($db);
  147. $muser->fetch($bon->user_trans);
  148. print '<tr><td>'.$langs->trans("TransData").'</td><td>';
  149. print dol_print_date($bon->date_trans,'day');
  150. print ' '.$langs->trans("By").' '.$muser->getFullName($langs).'</td></tr>';
  151. print '<tr><td>'.$langs->trans("TransMetod").'</td><td>';
  152. print $bon->methodes_trans[$bon->method_trans];
  153. print '</td></tr>';
  154. }
  155. if($bon->date_credit <> 0)
  156. {
  157. print '<tr><td>'.$langs->trans('CreditDate').'</td><td>';
  158. print dol_print_date($bon->date_credit,'day');
  159. print '</td></tr>';
  160. }
  161. print '</table>';
  162. print '<br>';
  163. print '<table class="border" width="100%"><tr><td class="titlefield">';
  164. print $langs->trans("WithdrawalFile").'</td><td>';
  165. $relativepath = 'receipts/'.$bon->ref.'.xml';
  166. print '<a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?type=text/plain&amp;modulepart=prelevement&amp;file='.urlencode($relativepath).'">'.$relativepath.'</a>';
  167. print '</td></tr></table>';
  168. dol_fiche_end();
  169. if (empty($bon->date_trans) && $user->rights->prelevement->bons->send && $action=='settransmitted')
  170. {
  171. print '<form method="post" name="userfile" action="card.php?id='.$bon->id.'" enctype="multipart/form-data">';
  172. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  173. print '<input type="hidden" name="action" value="infotrans">';
  174. print '<table class="border" width="100%">';
  175. print '<tr class="liste_titre">';
  176. print '<td colspan="3">'.$langs->trans("NotifyTransmision").'</td></tr>';
  177. print '<tr '.$bc[false].'><td width="20%">'.$langs->trans("TransData").'</td><td>';
  178. print $form->select_date('','','','','',"userfile",1,1);
  179. print '</td></tr>';
  180. print '<tr '.$bc[false].'><td width="20%">'.$langs->trans("TransMetod").'</td><td>';
  181. print $form->selectarray("methode",$bon->methodes_trans);
  182. print '</td></tr>';
  183. /* print '<tr><td width="20%">'.$langs->trans("File").'</td><td>';
  184. print '<input type="hidden" name="max_file_size" value="'.$conf->maxfilesize.'">';
  185. print '<input class="flat" type="file" name="userfile"><br>';
  186. print '</td></tr>';*/
  187. print '</table><br>';
  188. print '<div class="center"><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("SetToStatusSent")).'"></div>';
  189. print '</form>';
  190. }
  191. if (! empty($bon->date_trans) && $bon->date_credit == 0 && $user->rights->prelevement->bons->credit && $action=='setcredited')
  192. {
  193. print '<form name="infocredit" method="post" action="card.php?id='.$bon->id.'">';
  194. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  195. print '<input type="hidden" name="action" value="infocredit">';
  196. print '<table class="border" width="100%">';
  197. print '<tr class="liste_titre">';
  198. print '<td colspan="3">'.$langs->trans("NotifyCredit").'</td></tr>';
  199. print '<tr '.$bc[false].'><td>'.$langs->trans('CreditDate').'</td><td>';
  200. print $form->select_date('','','','','',"infocredit",1,1);
  201. print '</td></tr>';
  202. print '</table>';
  203. print '<br>'.$langs->trans("ThisWillAlsoAddPaymentOnInvoice");
  204. print '<div class="center"><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("ClassCredited")).'"></div>';
  205. print '</form>';
  206. }
  207. // Actions
  208. if ($action != 'settransmitted' && $action != 'setcredited')
  209. {
  210. print "\n<div class=\"tabsAction\">\n";
  211. if (empty($bon->date_trans) && $user->rights->prelevement->bons->send)
  212. {
  213. print "<a class=\"butAction\" href=\"card.php?action=settransmitted&id=".$bon->id."\">".$langs->trans("SetToStatusSent")."</a>";
  214. }
  215. if (! empty($bon->date_trans) && $bon->date_credit == 0)
  216. {
  217. print "<a class=\"butAction\" href=\"card.php?action=setcredited&id=".$bon->id."\">".$langs->trans("ClassCredited")."</a>";
  218. }
  219. print "<a class=\"butActionDelete\" href=\"card.php?action=confirm_delete&id=".$bon->id."\">".$langs->trans("Delete")."</a>";
  220. print "</div>";
  221. }
  222. $ligne=new LignePrelevement($db,$user);
  223. /*
  224. * Lines into withdraw request
  225. */
  226. $sql = "SELECT pl.rowid, pl.statut, pl.amount,";
  227. $sql.= " s.rowid as socid, s.nom as name";
  228. $sql.= " FROM ".MAIN_DB_PREFIX."prelevement_lignes as pl";
  229. $sql.= ", ".MAIN_DB_PREFIX."prelevement_bons as pb";
  230. $sql.= ", ".MAIN_DB_PREFIX."societe as s";
  231. $sql.= " WHERE pl.fk_prelevement_bons = ".$id;
  232. $sql.= " AND pl.fk_prelevement_bons = pb.rowid";
  233. $sql.= " AND pb.entity = ".$conf->entity;
  234. $sql.= " AND pl.fk_soc = s.rowid";
  235. if ($socid) $sql.= " AND s.rowid = ".$socid;
  236. $sql.= $db->order($sortfield, $sortorder);
  237. $sql.= $db->plimit($conf->liste_limit+1, $offset);
  238. $result = $db->query($sql);
  239. if ($result)
  240. {
  241. $num = $db->num_rows($result);
  242. $i = 0;
  243. $urladd = "&amp;id=".$id;
  244. print_barre_liste("", $page, $_SERVER["PHP_SELF"], $urladd, $sortfield, $sortorder, '', $num);
  245. print"\n<!-- debut table -->\n";
  246. print '<table class="noborder" width="100%" cellspacing="0" cellpadding="4">';
  247. print '<tr class="liste_titre">';
  248. print_liste_field_titre($langs->trans("Lines"),$_SERVER["PHP_SELF"],"pl.rowid",'',$urladd);
  249. print_liste_field_titre($langs->trans("ThirdParty"),$_SERVER["PHP_SELF"],"s.nom",'',$urladd);
  250. print_liste_field_titre($langs->trans("Amount"),$_SERVER["PHP_SELF"],"pl.amount","",$urladd,'align="right"');
  251. print_liste_field_titre('');
  252. print "</tr>\n";
  253. $var=false;
  254. $total = 0;
  255. while ($i < min($num,$conf->liste_limit))
  256. {
  257. $obj = $db->fetch_object($result);
  258. print '<tr class="oddeven">';
  259. // Status of line
  260. print "<td>";
  261. print $ligne->LibStatut($obj->statut,2);
  262. print "&nbsp;";
  263. print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/ligne.php?id='.$obj->rowid.'">';
  264. print sprintf("%06s",$obj->rowid);
  265. print '</a></td>';
  266. $thirdparty=new Societe($db);
  267. $thirdparty->fetch($obj->socid);
  268. print '<td>';
  269. print $thirdparty->getNomUrl(1);
  270. print "</td>\n";
  271. print '<td align="right">'.price($obj->amount)."</td>\n";
  272. print '<td>';
  273. if ($obj->statut == 3)
  274. {
  275. print '<b>'.$langs->trans("StatusRefused").'</b>';
  276. }
  277. else
  278. {
  279. print "&nbsp;";
  280. }
  281. print '</td></tr>';
  282. $total += $obj->amount;
  283. $i++;
  284. }
  285. if ($num > 0)
  286. {
  287. print '<tr class="liste_total">';
  288. print '<td>'.$langs->trans("Total").'</td>';
  289. print '<td>&nbsp;</td>';
  290. print '<td align="right">'.price($total)."</td>\n";
  291. print '<td>&nbsp;</td>';
  292. print "</tr>\n";
  293. }
  294. print "</table>";
  295. $db->free($result);
  296. }
  297. else
  298. {
  299. dol_print_error($db);
  300. }
  301. }
  302. llxFooter();
  303. $db->close();