fiche_subscription.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. <?php
  2. /* Copyright (C) 2007-2011 Laurent Destailleur <eldy@users.sourceforge.net>
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation; either version 2 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. /**
  18. * \file htdocs/adherents/fiche_subscription.php
  19. * \ingroup member
  20. * \brief Page to add/edit/remove a member subscription
  21. */
  22. require("../main.inc.php");
  23. require_once(DOL_DOCUMENT_ROOT."/lib/member.lib.php");
  24. require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
  25. require_once(DOL_DOCUMENT_ROOT."/adherents/class/cotisation.class.php");
  26. require_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php");
  27. $langs->load("companies");
  28. $langs->load("bills");
  29. $langs->load("members");
  30. $langs->load("users");
  31. $adh = new Adherent($db);
  32. $subscription = new Cotisation($db);
  33. $errmsg='';
  34. $action=isset($_GET["action"])?$_GET["action"]:$_POST["action"];
  35. $rowid=isset($_GET["rowid"])?$_GET["rowid"]:$_POST["rowid"];
  36. $typeid=isset($_GET["typeid"])?$_GET["typeid"]:$_POST["typeid"];
  37. if (! $user->rights->adherent->cotisation->lire)
  38. accessforbidden();
  39. /*
  40. * Actions
  41. */
  42. if ($user->rights->adherent->cotisation->creer && $_REQUEST["action"] == 'update' && ! $_POST["cancel"])
  43. {
  44. // Charge objet actuel
  45. $result=$subscription->fetch($_POST["rowid"]);
  46. if ($result > 0)
  47. {
  48. $db->begin();
  49. $errmsg='';
  50. if ($subscription->fk_bank)
  51. {
  52. $accountline=new AccountLine($db);
  53. $result=$accountline->fetch($subscription->fk_bank);
  54. // If transaction consolidated
  55. if ($accountline->rappro)
  56. {
  57. $errmsg=$langs->trans("SubscriptionLinkedToConciliatedTrnasaction");
  58. }
  59. else
  60. {
  61. $accountline->datev=dol_mktime($_POST['datesubhour'], $_POST['datesubmin'], 0, $_POST['datesubmonth'], $_POST['datesubday'], $_POST['datesubyear']);
  62. $accountline->dateo=dol_mktime($_POST['datesubhour'], $_POST['datesubmin'], 0, $_POST['datesubmonth'], $_POST['datesubday'], $_POST['datesubyear']);
  63. $accountline->amount=$_POST["amount"];
  64. $result=$accountline->update($user);
  65. if ($result < 0)
  66. {
  67. $errmsg=$accountline->error;
  68. }
  69. }
  70. }
  71. if (! $errmsg)
  72. {
  73. // Modifie valeures
  74. $subscription->dateh=dol_mktime($_POST['datesubhour'], $_POST['datesubmin'], 0, $_POST['datesubmonth'], $_POST['datesubday'], $_POST['datesubyear']);
  75. $subscription->datef=dol_mktime($_POST['datesubendhour'], $_POST['datesubendmin'], 0, $_POST['datesubendmonth'], $_POST['datesubendday'], $_POST['datesubendyear']);
  76. $subscription->note=$_POST["note"];
  77. $subscription->amount=$_POST["amount"];
  78. //print 'datef='.$subscription->datef.' '.$_POST['datesubendday'];
  79. $result=$subscription->update($user);
  80. if ($result >= 0 && ! sizeof($subscription->errors))
  81. {
  82. $db->commit();
  83. header("Location: fiche_subscription.php?rowid=".$subscription->id);
  84. exit;
  85. }
  86. else
  87. {
  88. $db->rollback();
  89. if ($subscription->error)
  90. {
  91. $errmsg=$subscription->error;
  92. }
  93. else
  94. {
  95. foreach($subscription->errors as $error)
  96. {
  97. if ($errmsg) $errmsg.='<br>';
  98. $errmsg.=$error;
  99. }
  100. }
  101. $action='';
  102. }
  103. }
  104. else
  105. {
  106. $db->rollback();
  107. }
  108. }
  109. }
  110. if ($_REQUEST["action"] == 'confirm_delete' && $_REQUEST["confirm"] == 'yes' && $user->rights->adherent->cotisation->creer)
  111. {
  112. $result=$subscription->fetch($rowid);
  113. $result=$subscription->delete($user);
  114. if ($result > 0)
  115. {
  116. Header("Location: card_subscriptions.php?rowid=".$subscription->fk_adherent);
  117. exit;
  118. }
  119. else
  120. {
  121. $mesg=$adh->error;
  122. }
  123. }
  124. /*
  125. * View
  126. */
  127. llxHeader('',$langs->trans("SubscriptionCard"),'EN:Module_Foundations|FR:Module_Adh&eacute;rents|ES:M&oacute;dulo_Miembros');
  128. $form = new Form($db);
  129. if ($errmsg)
  130. {
  131. print '<div class="error">'.$errmsg.'</div>';
  132. print "\n";
  133. }
  134. if ($user->rights->adherent->cotisation->creer && $action == 'edit')
  135. {
  136. /********************************************
  137. *
  138. * Fiche en mode edition
  139. *
  140. ********************************************/
  141. $subscription->fetch($rowid);
  142. $result=$adh->fetch($subscription->fk_adherent);
  143. /*
  144. * Affichage onglets
  145. */
  146. $h = 0;
  147. $head = array();
  148. $head[$h][0] = DOL_URL_ROOT.'/adherents/fiche_subscription.php?rowid='.$subscription->id;
  149. $head[$h][1] = $langs->trans("SubscriptionCard");
  150. $head[$h][2] = 'general';
  151. $h++;
  152. $head[$h][0] = DOL_URL_ROOT.'/adherents/info_subscription.php?rowid='.$subscription->id;
  153. $head[$h][1] = $langs->trans("Info");
  154. $head[$h][2] = 'info';
  155. $h++;
  156. dol_fiche_head($head, 'general', $langs->trans("Subscription"));
  157. print "\n";
  158. print '<form name="update" action="'.$_SERVER["PHP_SELF"].'" method="post">';
  159. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  160. print "<input type=\"hidden\" name=\"action\" value=\"update\">";
  161. print "<input type=\"hidden\" name=\"rowid\" value=\"$rowid\">";
  162. print "<input type=\"hidden\" name=\"fk_bank\" value=\"".$subscription->fk_bank."\">";
  163. print '<table class="border" width="100%">';
  164. // Ref
  165. print '<tr><td width="20%">'.$langs->trans("Ref").'</td><td class="valeur" colspan="2">'.$subscription->ref.'&nbsp;</td></tr>';
  166. // Member
  167. $adh->ref=$adh->getFullName($langs);
  168. print '<tr>';
  169. print '<td>'.$langs->trans("Member").'</td><td class="valeur" colspan="3">'.$adh->getNomUrl(1,0,'subscription').'</td>';
  170. print '</tr>';
  171. // Date start subscription
  172. print '<tr><td>'.$langs->trans("DateSubscription").'</td><td class="valeur" colspan="2">';
  173. $form->select_date($subscription->dateh,'datesub',1,1,0,'update',1);
  174. print '</td>';
  175. print '</tr>';
  176. // Date end subscription
  177. print '<tr><td>'.$langs->trans("DateEndSubscription").'</td><td class="valeur" colspan="2">';
  178. $form->select_date($subscription->datef,'datesubend',0,0,0,'update',1);
  179. print '</td>';
  180. print '</tr>';
  181. // Amount
  182. print '<tr><td>'.$langs->trans("Amount").'</td><td class="valeur" colspan="2">';
  183. print '<input type="text" class="flat" size="10" name="amount" value="'.price($subscription->amount).'"></td></tr>';
  184. // Label
  185. print '<tr><td>'.$langs->trans("Label").'</td><td class="valeur" colspan="2">';
  186. print '<input type="text" class="flat" size="60" name="note" value="'.$subscription->note.'"></td></tr>';
  187. // Bank line
  188. if ($conf->banque->enabled)
  189. {
  190. if ($conf->global->ADHERENT_BANK_USE || $subscription->fk_bank)
  191. {
  192. print '<tr><td>'.$langs->trans("BankTransactionLine").'</td><td class="valeur" colspan="2">';
  193. if ($subscription->fk_bank)
  194. {
  195. $bankline=new AccountLine($db);
  196. $result=$bankline->fetch($subscription->fk_bank);
  197. print $bankline->getNomUrl(1,0,'showall');
  198. }
  199. else
  200. {
  201. print $langs->trans("NoneF");
  202. }
  203. print '</td></tr>';
  204. }
  205. }
  206. print '<tr><td colspan="3" align="center">';
  207. print '<input type="submit" class="button" name="submit" value="'.$langs->trans("Save").'">';
  208. print ' &nbsp; &nbsp; &nbsp; ';
  209. print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
  210. print '</td></tr>';
  211. print '</table>';
  212. print '</form>';
  213. print "\n";
  214. print '</div>';
  215. print "\n";
  216. }
  217. if ($rowid && $action != 'edit')
  218. {
  219. /* ************************************************************************** */
  220. /* */
  221. /* Mode affichage */
  222. /* */
  223. /* ************************************************************************** */
  224. $result=$subscription->fetch($rowid);
  225. $result=$adh->fetch($subscription->fk_adherent);
  226. /*
  227. * Affichage onglets
  228. */
  229. $h = 0;
  230. $head = array();
  231. $head[$h][0] = DOL_URL_ROOT.'/adherents/fiche_subscription.php?rowid='.$subscription->id;
  232. $head[$h][1] = $langs->trans("SubscriptionCard");
  233. $head[$h][2] = 'general';
  234. $h++;
  235. $head[$h][0] = DOL_URL_ROOT.'/adherents/info_subscription.php?rowid='.$subscription->id;
  236. $head[$h][1] = $langs->trans("Info");
  237. $head[$h][2] = 'info';
  238. $h++;
  239. dol_fiche_head($head, 'general', $langs->trans("Subscription"), '', 'payment');
  240. if ($msg) print '<div class="error">'.$msg.'</div>';
  241. // Confirmation to delete subscription
  242. if ($action == 'delete')
  243. {
  244. //$formquestion=array();
  245. //$formquestion['text']='<b>'.$langs->trans("ThisWillAlsoDeleteBankRecord").'</b>';
  246. $text=$langs->trans("ConfirmDeleteSubscription");
  247. if ($conf->banque->enabled && $conf->global->ADHERENT_BANK_USE) $text.='<br>'.img_warning().' '.$langs->trans("ThisWillAlsoDeleteBankRecord");
  248. $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?rowid=".$subscription->id,$langs->trans("DeleteSubscription"),$text,"confirm_delete",$formquestion,0,1);
  249. if ($ret == 'html') print '<br>';
  250. }
  251. print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
  252. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  253. print '<table class="border" width="100%">';
  254. // Ref
  255. print '<tr><td width="20%">'.$langs->trans("Ref").'</td>';
  256. print '<td class="valeur" colspan="3">';
  257. print $form->showrefnav($subscription,'rowid','',1);
  258. print '</td></tr>';
  259. // Member
  260. $adh->ref=$adh->getFullName($langs);
  261. print '<tr>';
  262. print '<td>'.$langs->trans("Member").'</td><td class="valeur" colspan="3">'.$adh->getNomUrl(1,0,'subscription').'</td>';
  263. print '</tr>';
  264. // Date subscription
  265. print '<tr>';
  266. print '<td>'.$langs->trans("DateSubscription").'</td><td class="valeur" colspan="3">'.dol_print_date($subscription->dateh,'dayhour').'</td>';
  267. print '</tr>';
  268. // Date end subscription
  269. print '<tr>';
  270. print '<td>'.$langs->trans("DateEndSubscription").'</td><td class="valeur" colspan="3">'.dol_print_date($subscription->datef,'day').'</td>';
  271. print '</tr>';
  272. // Amount
  273. print '<tr><td>'.$langs->trans("Amount").'</td><td class="valeur" colspan="3">'.price($subscription->amount).'</td></tr>';
  274. // Amount
  275. print '<tr><td>'.$langs->trans("Label").'</td><td class="valeur" colspan="3">'.$subscription->note.'</td></tr>';
  276. // Bank line
  277. if ($conf->banque->enabled)
  278. {
  279. if ($conf->global->ADHERENT_BANK_USE || $subscription->fk_bank)
  280. {
  281. print '<tr><td>'.$langs->trans("BankTransactionLine").'</td><td class="valeur" colspan="3">';
  282. if ($subscription->fk_bank)
  283. {
  284. $bankline=new AccountLine($db);
  285. $result=$bankline->fetch($subscription->fk_bank);
  286. print $bankline->getNomUrl(1,0,'showall');
  287. }
  288. else
  289. {
  290. print $langs->trans("NoneF");
  291. }
  292. print '</td></tr>';
  293. }
  294. }
  295. print "</table>\n";
  296. print '</form>';
  297. print "</div>\n";
  298. /*
  299. * Barre d'actions
  300. *
  301. */
  302. print '<div class="tabsAction">';
  303. if ($user->rights->adherent->cotisation->creer)
  304. {
  305. if (! $bankline->rappro)
  306. {
  307. print "<a class=\"butAction\" href=\"".$_SERVER["PHP_SELF"]."?rowid=".$subscription->id."&action=edit\">".$langs->trans("Modify")."</a>";
  308. }
  309. else
  310. {
  311. print "<a class=\"butActionRefused\" title=\"".$langs->trans("BankLineConciliated")."\" href=\"#\">".$langs->trans("Modify")."</a>";
  312. }
  313. }
  314. // Supprimer
  315. if ($user->rights->adherent->cotisation->creer)
  316. {
  317. print "<a class=\"butActionDelete\" href=\"".$_SERVER["PHP_SELF"]."?rowid=".$subscription->id."&action=delete\">".$langs->trans("Delete")."</a>\n";
  318. }
  319. print '</div>';
  320. print "<br>\n";
  321. }
  322. $db->close();
  323. llxFooter();
  324. ?>