PageRenderTime 45ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/htdocs/compta/dons/fiche.php

https://github.com/zeert/dolibarr
PHP | 573 lines | 387 code | 112 blank | 74 comment | 80 complexity | 4b7d385d9d03e70d5e91c62f468ba28c 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-2011 Laurent Destailleur <eldy@users.sourceforge.net>
  4. * Copyright (C) 2005-2012 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/dons/fiche.php
  21. * \ingroup don
  22. * \brief Page of donation card
  23. */
  24. require("../../main.inc.php");
  25. require_once(DOL_DOCUMENT_ROOT."/core/modules/dons/modules_don.php");
  26. require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
  27. require_once(DOL_DOCUMENT_ROOT."/core/class/html.formcompany.class.php");
  28. require_once(DOL_DOCUMENT_ROOT."/compta/dons/class/don.class.php");
  29. require_once(DOL_DOCUMENT_ROOT."/compta/paiement/class/paiement.class.php");
  30. if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php');
  31. $langs->load("companies");
  32. $langs->load("donations");
  33. $langs->load("bills");
  34. $id=GETPOST('rowid')?GETPOST('rowid','int'):GETPOST('id','int');
  35. $action=GETPOST('action','alpha');
  36. $cancel=GETPOST('cancel');
  37. $amount=GETPOST('amount');
  38. $mesg="";
  39. $mesgs=array();
  40. $don = new Don($db);
  41. $donation_date=dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear'));
  42. // Security check
  43. $result = restrictedArea($user, 'don', $id);
  44. /*
  45. * Actions
  46. */
  47. if ($action == 'update')
  48. {
  49. if (! empty($cancel))
  50. {
  51. Header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
  52. exit;
  53. }
  54. $error=0;
  55. if (empty($donation_date))
  56. {
  57. $mesgs[]=$langs->trans("ErrorFieldRequired",$langs->trans("Date"));
  58. $action = "create";
  59. $error++;
  60. }
  61. if (empty($amount))
  62. {
  63. $mesgs[]=$langs->trans("ErrorFieldRequired",$langs->trans("Amount"));
  64. $action = "create";
  65. $error++;
  66. }
  67. if (! $error)
  68. {
  69. $don->fetch($id);
  70. $don->prenom = $_POST["prenom"];
  71. $don->nom = $_POST["nom"];
  72. $don->societe = $_POST["societe"];
  73. $don->adresse = $_POST["adresse"];
  74. $don->amount = price2num($_POST["amount"]);
  75. $don->cp = $_POST["zipcode"];
  76. $don->ville = $_POST["town"];
  77. $don->zip = $_POST["zipcode"];
  78. $don->town = $_POST["town"];
  79. $don->email = $_POST["email"];
  80. $don->date = $donation_date;
  81. $don->note = $_POST["note"];
  82. $don->pays = $_POST["pays"];
  83. $don->public = $_POST["public"];
  84. $don->fk_project = $_POST["projectid"];
  85. $don->note = $_POST["comment"];
  86. $don->modepaiementid = $_POST["modepaiement"];
  87. if ($don->update($user) > 0)
  88. {
  89. Header("Location: ".$_SERVER['PHP_SELF']."?id=".$don->id);
  90. exit;
  91. }
  92. }
  93. }
  94. if ($action == 'add')
  95. {
  96. if (! empty($cancel))
  97. {
  98. Header("Location: index.php");
  99. exit;
  100. }
  101. $error=0;
  102. if (empty($donation_date))
  103. {
  104. $mesgs[]=$langs->trans("ErrorFieldRequired",$langs->trans("Date"));
  105. $action = "create";
  106. $error++;
  107. }
  108. if (empty($amount))
  109. {
  110. $mesgs[]=$langs->trans("ErrorFieldRequired",$langs->trans("Amount"));
  111. $action = "create";
  112. $error++;
  113. }
  114. if (! $error)
  115. {
  116. $don->prenom = $_POST["prenom"];
  117. $don->nom = $_POST["nom"];
  118. $don->societe = $_POST["societe"];
  119. $don->adresse = $_POST["adresse"];
  120. $don->amount = price2num($_POST["amount"]);
  121. $don->cp = $_POST["zipcode"];
  122. $don->ville = $_POST["town"];
  123. $don->zip = $_POST["zipcode"];
  124. $don->town = $_POST["town"];
  125. $don->email = $_POST["email"];
  126. $don->date = $donation_date;
  127. $don->note = $_POST["note"];
  128. $don->pays = $_POST["pays"];
  129. $don->public = $_POST["public"];
  130. $don->fk_project = $_POST["projectid"];
  131. $don->note = $_POST["comment"];
  132. $don->modepaiementid = $_POST["modepaiement"];
  133. if ($don->create($user) > 0)
  134. {
  135. Header("Location: index.php");
  136. exit;
  137. }
  138. }
  139. }
  140. if ($action == 'delete')
  141. {
  142. $don->delete($id);
  143. Header("Location: liste.php");
  144. exit;
  145. }
  146. if ($action == 'commentaire')
  147. {
  148. $don->fetch($id);
  149. $don->update_note($_POST["commentaire"]);
  150. }
  151. if ($action == 'valid_promesse')
  152. {
  153. if ($don->valid_promesse($id, $user->id) >= 0)
  154. {
  155. Header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
  156. exit;
  157. }
  158. else $mesg=$don->error;
  159. }
  160. if ($action == 'set_cancel')
  161. {
  162. if ($don->set_cancel($id) >= 0)
  163. {
  164. Header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
  165. exit;
  166. }
  167. else $mesg=$don->error;
  168. }
  169. if ($action == 'set_paid')
  170. {
  171. if ($don->set_paye($id, $modepaiement) >= 0)
  172. {
  173. Header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
  174. exit;
  175. }
  176. else $mesg=$don->error;
  177. }
  178. if ($action == 'set_encaisse')
  179. {
  180. if ($don->set_encaisse($id) >= 0)
  181. {
  182. Header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
  183. exit;
  184. }
  185. else $mesg=$don->error;
  186. }
  187. /*
  188. * Build doc
  189. */
  190. if ($action == 'builddoc')
  191. {
  192. $donation = new Don($db);
  193. $donation->fetch($id);
  194. if ($_REQUEST['model'])
  195. {
  196. $donation->setDocModel($user, $_REQUEST['model']);
  197. }
  198. // Define output language
  199. $outputlangs = $langs;
  200. $newlang='';
  201. if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id'];
  202. if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$donation->client->default_lang;
  203. if (! empty($newlang))
  204. {
  205. $outputlangs = new Translate("",$conf);
  206. $outputlangs->setDefaultLang($newlang);
  207. }
  208. $result=don_create($db, $donation->id, '', $donation->modelpdf, $outputlangs);
  209. if ($result <= 0)
  210. {
  211. dol_print_error($db,$result);
  212. exit;
  213. }
  214. else
  215. {
  216. Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$donation->id.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc'));
  217. exit;
  218. }
  219. }
  220. /*
  221. * View
  222. */
  223. llxHeader('',$langs->trans("Donations"),'EN:Module_Donations|FR:Module_Dons|ES:M&oacute;dulo_Donaciones');
  224. $form=new Form($db);
  225. $formfile = new FormFile($db);
  226. $formcompany = new FormCompany($db);
  227. /* ************************************************************************** */
  228. /* */
  229. /* Creation */
  230. /* */
  231. /* ************************************************************************** */
  232. if ($action == 'create')
  233. {
  234. print_fiche_titre($langs->trans("AddDonation"));
  235. dol_htmloutput_errors($mesg,$mesgs);
  236. print '<form name="add" action="fiche.php" method="post">';
  237. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  238. print '<table class="border" width="100%">';
  239. print '<input type="hidden" name="action" value="add">';
  240. $nbrows=11;
  241. if ($conf->projet->enabled) $nbrows++;
  242. // Date
  243. print '<tr><td class="fieldrequired">'.$langs->trans("Date").'</td><td>';
  244. $form->select_date($donation_date?$donation_date:-1,'','','','',"add",1,1);
  245. print '</td>';
  246. print '<td rowspan="'.$nbrows.'" valign="top">'.$langs->trans("Comments").' :<br>';
  247. print "<textarea name=\"comment\" wrap=\"soft\" cols=\"40\" rows=\"15\">".$_POST["comment"]."</textarea></td>";
  248. print "</tr>";
  249. // Amount
  250. print "<tr>".'<td class="fieldrequired">'.$langs->trans("Amount").'</td><td><input type="text" name="amount" value="'.$_POST["amount"].'" size="10"> '.$langs->trans("Currency".$conf->currency).'</td></tr>';
  251. print '<tr><td class="fieldrequired">'.$langs->trans("PublicDonation")."</td><td>";
  252. print $form->selectyesno("public",isset($_POST["public"])?$_POST["public"]:1,1);
  253. print "</td></tr>\n";
  254. print "<tr>".'<td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" value="'.$_POST["societe"].'" size="40"></td></tr>';
  255. print "<tr>".'<td>'.$langs->trans("Firstname").'</td><td><input type="text" name="prenom" value="'.$_POST["prenom"].'" size="40"></td></tr>';
  256. print "<tr>".'<td>'.$langs->trans("Lastname").'</td><td><input type="text" name="nom" value="'.$_POST["nom"].'" size="40"></td></tr>';
  257. print "<tr>".'<td>'.$langs->trans("Address").'</td><td>';
  258. print '<textarea name="adresse" wrap="soft" cols="40" rows="3">'.$_POST["adresse"].'</textarea></td></tr>';
  259. // Zip / Town
  260. print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>';
  261. print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$don->zip),'zipcode',array('town','selectcountry_id','departement_id'),6);
  262. print ' ';
  263. print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$don->town),'town',array('zipcode','selectcountry_id','departement_id'));
  264. print '</tr>';
  265. print "<tr>".'<td>'.$langs->trans("Country").'</td><td><input type="text" name="pays" value="'.$_POST["pays"].'" size="40"></td></tr>';
  266. print "<tr>".'<td>'.$langs->trans("EMail").'</td><td><input type="text" name="email" value="'.$_POST["email"].'" size="40"></td></tr>';
  267. print "<tr><td>".$langs->trans("PaymentMode")."</td><td>\n";
  268. $form->select_types_paiements('', 'modepaiement', 'CRDT', 0, 1);
  269. print "</td></tr>\n";
  270. if ($conf->projet->enabled)
  271. {
  272. // Si module projet actif
  273. print "<tr><td>".$langs->trans("Project")."</td><td>";
  274. select_projects('',$_POST["projectid"],"projectid");
  275. print "</td></tr>\n";
  276. }
  277. print "</table>\n";
  278. print '<br><center><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'"> &nbsp; &nbsp; <input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></center>';
  279. print "</form>\n";
  280. }
  281. /* ************************************************************ */
  282. /* */
  283. /* Fiche don en mode edition */
  284. /* */
  285. /* ************************************************************ */
  286. if (! empty($id) && $action == 'edit')
  287. {
  288. $don->fetch($id);
  289. $h=0;
  290. $head[$h][0] = $_SERVER['PHP_SELF']."?id=".$don->id;
  291. $head[$h][1] = $langs->trans("Card");
  292. $hselected=$h;
  293. $h++;
  294. dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'generic');
  295. print '<form name="update" action="fiche.php" method="post">';
  296. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  297. print '<table class="border" width="100%">';
  298. print '<input type="hidden" name="action" value="update">';
  299. print '<input type="hidden" name="rowid" value="'.$don->id.'">';
  300. // Ref
  301. print "<tr>".'<td>'.$langs->trans("Ref").'</td><td colspan="2">';
  302. print $don->getNomUrl();
  303. print '</td>';
  304. print '</tr>';
  305. $nbrows=12;
  306. if ($conf->projet->enabled) $nbrows++;
  307. // Date
  308. print "<tr>".'<td width="25%" class="fieldrequired">'.$langs->trans("Date").'</td><td>';
  309. $form->select_date($don->date,'','','','',"update");
  310. print '</td>';
  311. print '<td rowspan="'.$nbrows.'" valign="top">'.$langs->trans("Comments").' :<br>';
  312. print "<textarea name=\"comment\" wrap=\"soft\" cols=\"40\" rows=\"15\">".$don->note."</textarea></td>";
  313. print "</tr>";
  314. // Amount
  315. print "<tr>".'<td class="fieldrequired">'.$langs->trans("Amount").'</td><td><input type="text" name="amount" size="10" value="'.$don->amount.'"> '.$langs->trans("Currency".$conf->currency).'</td></tr>';
  316. print '<tr><td class="fieldrequired">'.$langs->trans("PublicDonation")."</td><td>";
  317. print $form->selectyesno("public",1,1);
  318. print "</td>";
  319. print "</tr>\n";
  320. $langs->load("companies");
  321. print "<tr>".'<td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" size="40" value="'.$don->societe.'"></td></tr>';
  322. print "<tr>".'<td>'.$langs->trans("Firstname").'</td><td><input type="text" name="prenom" size="40" value="'.$don->prenom.'"></td></tr>';
  323. print "<tr>".'<td>'.$langs->trans("Lastname").'</td><td><input type="text" name="nom" size="40" value="'.$don->nom.'"></td></tr>';
  324. print "<tr>".'<td>'.$langs->trans("Address").'</td><td>';
  325. print '<textarea name="adresse" wrap="soft" cols="40" rows="'.ROWS_3.'">'.$don->adresse.'</textarea></td></tr>';
  326. // Zip / Town
  327. print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>';
  328. print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$don->zip),'zipcode',array('town','selectcountry_id','departement_id'),6);
  329. print ' ';
  330. print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$don->town),'town',array('zipcode','selectcountry_id','departement_id'));
  331. print '</tr>';
  332. print "<tr>".'<td>'.$langs->trans("Country").'</td><td><input type="text" name="pays" size="40" value="'.$don->pays.'"></td></tr>';
  333. print "<tr>".'<td>'.$langs->trans("EMail").'</td><td><input type="text" name="email" size="40" value="'.$don->email.'"></td></tr>';
  334. print "<tr><td>".$langs->trans("PaymentMode")."</td><td>\n";
  335. $form->select_types_paiements('', 'modepaiement', 'CRDT', 0, 1);
  336. print "</td></tr>\n";
  337. print "<tr>".'<td>'.$langs->trans("Status").'</td><td>'.$don->getLibStatut(4).'</td></tr>';
  338. // Project
  339. if (! empty($conf->projet->enabled))
  340. {
  341. $langs->load('projects');
  342. print '<tr><td>'.$langs->trans('Project').'</td><td>';
  343. select_projects(-1, (isset($_POST["projectid"])?$_POST["projectid"]:$don->fk_project), 'projectid');
  344. print '</td></tr>';
  345. }
  346. print "</table>\n";
  347. print '<br><center><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'"> &nbsp; &nbsp; <input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></center>';
  348. print "</form>\n";
  349. print "</div>\n";
  350. }
  351. /* ************************************************************ */
  352. /* */
  353. /* Fiche don en mode visu */
  354. /* */
  355. /* ************************************************************ */
  356. if (! empty($id) && $action != 'edit')
  357. {
  358. $result=$don->fetch($id);
  359. $h=0;
  360. $head[$h][0] = $_SERVER['PHP_SELF']."?id=".$don->id;
  361. $head[$h][1] = $langs->trans("Card");
  362. $hselected=$h;
  363. $h++;
  364. dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'generic');
  365. print "<form action=\"fiche.php\" method=\"post\">";
  366. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  367. print '<table class="border" width="100%">';
  368. $linkback = '<a href="'.DOL_URL_ROOT.'/compta/dons/liste.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
  369. $nbrows=12;
  370. if ($conf->projet->enabled) $nbrows++;
  371. // Ref
  372. print "<tr>".'<td>'.$langs->trans("Ref").'</td><td colspan="2">';
  373. print $form->showrefnav($don, 'rowid', $linkback, 1, 'rowid', 'ref', '');
  374. print '</td>';
  375. print '</tr>';
  376. // Date
  377. print '<tr><td width="25%">'.$langs->trans("Date").'</td><td>';
  378. print dol_print_date($don->date,"day");
  379. print "</td>";
  380. print '<td rowspan="'.$nbrows.'" valign="top" width="50%">'.$langs->trans("Comments").' :<br>';
  381. print nl2br($don->note).'</td></tr>';
  382. print "<tr>".'<td>'.$langs->trans("Amount").'</td><td>'.price($don->amount).' '.$langs->trans("Currency".$conf->currency).'</td></tr>';
  383. print "<tr><td>".$langs->trans("PublicDonation")."</td><td>";
  384. print yn($don->public);
  385. print "</td></tr>\n";
  386. print "<tr>".'<td>'.$langs->trans("Company").'</td><td>'.$don->societe.'</td></tr>';
  387. print "<tr>".'<td>'.$langs->trans("Firstname").'</td><td>'.$don->prenom.'</td></tr>';
  388. print "<tr>".'<td>'.$langs->trans("Lastname").'</td><td>'.$don->nom.'</td></tr>';
  389. print "<tr>".'<td>'.$langs->trans("Address").'</td><td>'.dol_nl2br($don->adresse).'</td></tr>';
  390. // Zip / Town
  391. print "<tr>".'<td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>'.$don->cp.($don->cp && $don->ville?' / ':'').$don->ville.'</td></tr>';
  392. // Country
  393. print "<tr>".'<td>'.$langs->trans("Country").'</td><td>'.$don->pays.'</td></tr>';
  394. // EMail
  395. print "<tr>".'<td>'.$langs->trans("EMail").'</td><td>'.dol_print_email($don->email).'</td></tr>';
  396. // Payment mode
  397. print "<tr><td>".$langs->trans("PaymentMode")."</td><td>";
  398. print $don->modepaiement;
  399. print "</td></tr>\n";
  400. print "<tr>".'<td>'.$langs->trans("Status").'</td><td>'.$don->getLibStatut(4).'</td></tr>';
  401. // Project
  402. if ($conf->projet->enabled)
  403. {
  404. print "<tr>".'<td>'.$langs->trans("Project").'</td><td>'.$don->projet.'</td></tr>';
  405. }
  406. print "</table>\n";
  407. print "</form>\n";
  408. print "</div>";
  409. // TODO Gerer action emettre paiement
  410. $resteapayer = 0;
  411. /**
  412. * Barre d'actions
  413. */
  414. print '<div class="tabsAction">';
  415. print '<a class="butAction" href="fiche.php?action=edit&rowid='.$don->id.'">'.$langs->trans('Modify').'</a>';
  416. if ($don->statut == 0)
  417. {
  418. print '<a class="butAction" href="fiche.php?rowid='.$don->id.'&action=valid_promesse">'.$langs->trans("ValidPromess").'</a>';
  419. }
  420. if (($don->statut == 0 || $don->statut == 1) && $resteapayer == 0 && $don->paye == 0)
  421. {
  422. print "<a class=\"butAction\" href=\"fiche.php?rowid=$don->id&action=set_cancel\">".$langs->trans("ClassifyCanceled")."</a>";
  423. }
  424. // TODO Gerer action emettre paiement
  425. if ($don->statut == 1 && $resteapayer > 0)
  426. {
  427. print "<a class=\"butAction\" href=\"paiement.php?facid=$facid&action=create\">".$langs->trans("DoPayment")."</a>";
  428. }
  429. if ($don->statut == 1 && $resteapayer == 0 && $don->paye == 0)
  430. {
  431. print "<a class=\"butAction\" href=\"fiche.php?rowid=$don->id&action=set_paid\">".$langs->trans("ClassifyPaid")."</a>";
  432. }
  433. if ($user->rights->don->supprimer)
  434. {
  435. print "<a class=\"butActionDelete\" href=\"fiche.php?rowid=$don->id&action=delete\">".$langs->trans("Delete")."</a>";
  436. }
  437. else
  438. {
  439. print "<a class=\"butActionRefused\" href=\"#\">".$langs->trans("Delete")."</a>";
  440. }
  441. print "</div>";
  442. print '<table width="100%"><tr><td width="50%" valign="top">';
  443. /*
  444. * Documents generes
  445. */
  446. $filename=dol_sanitizeFileName($don->id);
  447. $filedir=$conf->don->dir_output . '/' . get_exdir($filename,2);
  448. $urlsource=$_SERVER['PHP_SELF'].'?rowid='.$don->id;
  449. // $genallowed=($fac->statut == 1 && ($fac->paye == 0 || $user->admin) && $user->rights->facture->creer);
  450. // $delallowed=$user->rights->facture->supprimer;
  451. $genallowed=1;
  452. $delallowed=0;
  453. $var=true;
  454. print '<br>';
  455. $formfile->show_documents('donation',$filename,$filedir,$urlsource,$genallowed,$delallowed);
  456. print '</td><td>&nbsp;</td>';
  457. print '</tr></table>';
  458. }
  459. llxFooter();
  460. $db->close();
  461. ?>