Artifact 05dee5b004b5ec034db61620c21c394e154c270c:


0000: 3c 3f 70 68 70 0a 0a 6e 61 6d 65 73 70 61 63 65  <?php..namespace
0010: 20 47 61 72 72 61 64 69 6e 5c 4d 65 6d 62 72 65   Garradin\Membre
0020: 73 3b 0a 0a 75 73 65 20 47 61 72 72 61 64 69 6e  s;..use Garradin
0030: 5c 43 6f 6e 66 69 67 3b 0a 75 73 65 20 47 61 72  \Config;.use Gar
0040: 72 61 64 69 6e 5c 44 42 3b 0a 75 73 65 20 47 61  radin\DB;.use Ga
0050: 72 72 61 64 69 6e 5c 55 74 69 6c 73 3b 0a 75 73  rradin\Utils;.us
0060: 65 20 47 61 72 72 61 64 69 6e 5c 55 73 65 72 45  e Garradin\UserE
0070: 78 63 65 70 74 69 6f 6e 3b 0a 75 73 65 20 47 61  xception;.use Ga
0080: 72 72 61 64 69 6e 5c 50 6c 75 67 69 6e 3b 0a 75  rradin\Plugin;.u
0090: 73 65 20 47 61 72 72 61 64 69 6e 5c 4d 65 6d 62  se Garradin\Memb
00a0: 72 65 73 3b 0a 75 73 65 20 47 61 72 72 61 64 69  res;.use Garradi
00b0: 6e 5c 43 6f 6d 70 74 61 5c 43 6f 6d 70 74 65 73  n\Compta\Comptes
00c0: 3b 0a 0a 63 6c 61 73 73 20 43 6f 74 69 73 61 74  ;..class Cotisat
00d0: 69 6f 6e 73 0a 7b 0a 09 63 6f 6e 73 74 20 49 54  ions.{..const IT
00e0: 45 4d 53 5f 50 45 52 5f 50 41 47 45 20 3d 20 31  EMS_PER_PAGE = 1
00f0: 30 30 3b 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 56 c3  00;.../**.. * V.
0100: a9 72 69 66 69 63 61 74 69 6f 6e 20 64 65 73 20  .rification des 
0110: 63 68 61 6d 70 73 20 66 6f 75 72 6e 69 73 20 70  champs fournis p
0120: 6f 75 72 20 6c 61 20 6d 6f 64 69 66 69 63 61 74  our la modificat
0130: 69 6f 6e 20 64 65 20 64 6f 6e 6e c3 a9 65 0a 09  ion de donn..e..
0140: 20 2a 20 40 70 61 72 61 6d 20 20 61 72 72 61 79   * @param  array
0150: 20 24 64 61 74 61 20 54 61 62 6c 65 61 75 20 63   $data Tableau c
0160: 6f 6e 74 65 6e 61 6e 74 20 6c 65 73 20 63 68 61  ontenant les cha
0170: 6d 70 73 20 c3 a0 20 61 6a 6f 75 74 65 72 2f 6d  mps .. ajouter/m
0180: 6f 64 69 66 69 65 72 0a 09 20 2a 20 40 72 65 74  odifier.. * @ret
0190: 75 72 6e 20 76 6f 69 64 0a 09 20 2a 2f 0a 09 70  urn void.. */..p
01a0: 72 6f 74 65 63 74 65 64 20 66 75 6e 63 74 69 6f  rotected functio
01b0: 6e 20 5f 63 68 65 63 6b 46 69 65 6c 64 73 28 26  n _checkFields(&
01c0: 24 64 61 74 61 29 0a 09 7b 0a 09 09 24 64 62 20  $data)..{...$db 
01d0: 3d 20 44 42 3a 3a 67 65 74 49 6e 73 74 61 6e 63  = DB::getInstanc
01e0: 65 28 29 3b 0a 0a 09 09 69 66 20 28 65 6d 70 74  e();....if (empt
01f0: 79 28 24 64 61 74 61 5b 27 64 61 74 65 27 5d 29  y($data['date'])
0200: 20 7c 7c 20 21 55 74 69 6c 73 3a 3a 63 68 65 63   || !Utils::chec
0210: 6b 44 61 74 65 28 24 64 61 74 61 5b 27 64 61 74  kDate($data['dat
0220: 65 27 5d 29 29 0a 09 09 7b 0a 09 09 09 74 68 72  e']))...{....thr
0230: 6f 77 20 6e 65 77 20 55 73 65 72 45 78 63 65 70  ow new UserExcep
0240: 74 69 6f 6e 28 27 44 61 74 65 20 76 69 64 65 20  tion('Date vide 
0250: 6f 75 20 69 6e 76 61 6c 69 64 65 2e 27 29 3b 0a  ou invalide.');.
0260: 09 09 7d 0a 0a 09 09 69 66 20 28 65 6d 70 74 79  ..}....if (empty
0270: 28 24 64 61 74 61 5b 27 69 64 5f 63 6f 74 69 73  ($data['id_cotis
0280: 61 74 69 6f 6e 27 5d 29 20 0a 09 09 09 7c 7c 20  ation']) ....|| 
0290: 21 24 64 62 2d 3e 66 69 72 73 74 43 6f 6c 75 6d  !$db->firstColum
02a0: 6e 28 27 53 45 4c 45 43 54 20 31 20 46 52 4f 4d  n('SELECT 1 FROM
02b0: 20 63 6f 74 69 73 61 74 69 6f 6e 73 20 57 48 45   cotisations WHE
02c0: 52 45 20 69 64 20 3d 20 3f 3b 27 2c 20 28 69 6e  RE id = ?;', (in
02d0: 74 29 20 24 64 61 74 61 5b 27 69 64 5f 63 6f 74  t) $data['id_cot
02e0: 69 73 61 74 69 6f 6e 27 5d 29 29 0a 09 09 7b 0a  isation']))...{.
02f0: 09 09 09 74 68 72 6f 77 20 6e 65 77 20 55 73 65  ...throw new Use
0300: 72 45 78 63 65 70 74 69 6f 6e 28 27 43 6f 74 69  rException('Coti
0310: 73 61 74 69 6f 6e 20 69 6e 63 6f 6e 6e 75 65 2e  sation inconnue.
0320: 27 29 3b 0a 09 09 7d 0a 0a 09 09 24 64 61 74 61  ');...}....$data
0330: 5b 27 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 27  ['id_cotisation'
0340: 5d 20 3d 20 28 69 6e 74 29 20 24 64 61 74 61 5b  ] = (int) $data[
0350: 27 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 27 5d  'id_cotisation']
0360: 3b 0a 0a 09 09 69 66 20 28 65 6d 70 74 79 28 24  ;....if (empty($
0370: 64 61 74 61 5b 27 69 64 5f 6d 65 6d 62 72 65 27  data['id_membre'
0380: 5d 29 20 0a 09 09 09 7c 7c 20 21 24 64 62 2d 3e  ]) ....|| !$db->
0390: 66 69 72 73 74 43 6f 6c 75 6d 6e 28 27 53 45 4c  firstColumn('SEL
03a0: 45 43 54 20 31 20 46 52 4f 4d 20 6d 65 6d 62 72  ECT 1 FROM membr
03b0: 65 73 20 57 48 45 52 45 20 69 64 20 3d 20 3f 3b  es WHERE id = ?;
03c0: 27 2c 20 28 69 6e 74 29 20 24 64 61 74 61 5b 27  ', (int) $data['
03d0: 69 64 5f 6d 65 6d 62 72 65 27 5d 29 29 0a 09 09  id_membre']))...
03e0: 7b 0a 09 09 09 74 68 72 6f 77 20 6e 65 77 20 55  {....throw new U
03f0: 73 65 72 45 78 63 65 70 74 69 6f 6e 28 27 4d 65  serException('Me
0400: 6d 62 72 65 20 69 6e 63 6f 6e 6e 75 20 6f 75 20  mbre inconnu ou 
0410: 69 6e 76 61 6c 69 64 65 2e 27 29 3b 0a 09 09 7d  invalide.');...}
0420: 0a 0a 09 09 24 64 61 74 61 5b 27 69 64 5f 6d 65  ....$data['id_me
0430: 6d 62 72 65 27 5d 20 3d 20 28 69 6e 74 29 20 24  mbre'] = (int) $
0440: 64 61 74 61 5b 27 69 64 5f 6d 65 6d 62 72 65 27  data['id_membre'
0450: 5d 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20  ];..}.../**.. * 
0460: 45 6e 72 65 67 69 73 74 72 65 72 20 75 6e 20 c3  Enregistrer un .
0470: a9 76 c3 a9 6e 65 6d 65 6e 74 20 64 65 20 63 6f  .v..nement de co
0480: 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20 40 70 61  tisation.. * @pa
0490: 72 61 6d 20 61 72 72 61 79 20 24 64 61 74 61 20  ram array $data 
04a0: 54 61 62 6c 65 61 75 20 64 65 73 20 63 68 61 6d  Tableau des cham
04b0: 70 73 20 c3 a0 20 69 6e 73 c3 a9 72 65 72 0a 09  ps .. ins..rer..
04c0: 20 2a 20 40 72 65 74 75 72 6e 20 69 6e 74 65 67   * @return integ
04d0: 65 72 20 49 44 20 64 65 20 6c 27 c3 a9 76 c3 a9  er ID de l'..v..
04e0: 6e 65 6d 65 6e 74 20 63 72 c3 a9 c3 a9 0a 09 20  nement cr...... 
04f0: 2a 2f 0a 09 70 75 62 6c 69 63 20 66 75 6e 63 74  */..public funct
0500: 69 6f 6e 20 61 64 64 28 24 64 61 74 61 2c 20 61  ion add($data, a
0510: 72 72 61 79 20 24 64 61 74 61 5f 63 6f 6d 70 74  rray $data_compt
0520: 61 29 0a 09 7b 0a 09 09 24 64 62 20 3d 20 44 42  a)..{...$db = DB
0530: 3a 3a 67 65 74 49 6e 73 74 61 6e 63 65 28 29 3b  ::getInstance();
0540: 0a 0a 09 09 24 63 6f 20 3d 20 24 64 62 2d 3e 66  ....$co = $db->f
0550: 69 72 73 74 28 27 53 45 4c 45 43 54 20 2a 20 46  irst('SELECT * F
0560: 52 4f 4d 20 63 6f 74 69 73 61 74 69 6f 6e 73 20  ROM cotisations 
0570: 57 48 45 52 45 20 69 64 20 3d 20 3f 3b 27 2c 20  WHERE id = ?;', 
0580: 28 69 6e 74 29 24 64 61 74 61 5b 27 69 64 5f 63  (int)$data['id_c
0590: 6f 74 69 73 61 74 69 6f 6e 27 5d 29 3b 0a 0a 09  otisation']);...
05a0: 09 24 74 68 69 73 2d 3e 5f 63 68 65 63 6b 46 69  .$this->_checkFi
05b0: 65 6c 64 73 28 24 64 61 74 61 29 3b 0a 0a 09 09  elds($data);....
05c0: 24 63 68 65 63 6b 20 3d 20 24 64 62 2d 3e 66 69  $check = $db->fi
05d0: 72 73 74 43 6f 6c 75 6d 6e 28 27 53 45 4c 45 43  rstColumn('SELEC
05e0: 54 20 31 20 46 52 4f 4d 20 63 6f 74 69 73 61 74  T 1 FROM cotisat
05f0: 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 20 0a 09 09  ions_membres ...
0600: 09 57 48 45 52 45 20 69 64 5f 63 6f 74 69 73 61  .WHERE id_cotisa
0610: 74 69 6f 6e 20 3d 20 3f 20 41 4e 44 20 69 64 5f  tion = ? AND id_
0620: 6d 65 6d 62 72 65 20 3d 20 3f 20 41 4e 44 20 64  membre = ? AND d
0630: 61 74 65 20 3d 20 3f 3b 27 2c 20 0a 09 09 09 28  ate = ?;', ....(
0640: 69 6e 74 29 24 64 61 74 61 5b 27 69 64 5f 63 6f  int)$data['id_co
0650: 74 69 73 61 74 69 6f 6e 27 5d 2c 20 28 69 6e 74  tisation'], (int
0660: 29 24 64 61 74 61 5b 27 69 64 5f 6d 65 6d 62 72  )$data['id_membr
0670: 65 27 5d 2c 20 24 64 61 74 61 5b 27 64 61 74 65  e'], $data['date
0680: 27 5d 29 3b 0a 0a 09 09 69 66 20 28 24 63 68 65  ']);....if ($che
0690: 63 6b 29 0a 09 09 7b 0a 09 09 09 74 68 72 6f 77  ck)...{....throw
06a0: 20 6e 65 77 20 55 73 65 72 45 78 63 65 70 74 69   new UserExcepti
06b0: 6f 6e 28 27 43 65 74 74 65 20 63 6f 74 69 73 61  on('Cette cotisa
06c0: 74 69 6f 6e 20 61 20 64 c3 a9 6a c3 a0 20 c3 a9  tion a d..j.. ..
06d0: 74 c3 a9 20 65 6e 72 65 67 69 73 74 72 c3 a9 65  t.. enregistr..e
06e0: 20 70 6f 75 72 20 63 65 20 6a 6f 75 72 2d 63 69   pour ce jour-ci
06f0: 20 65 74 20 63 65 20 6d 65 6d 62 72 65 2d 63 69   et ce membre-ci
0700: 2e 27 29 3b 0a 09 09 7d 0a 0a 09 09 24 64 62 2d  .');...}....$db-
0710: 3e 62 65 67 69 6e 28 29 3b 0a 0a 09 09 24 64 62  >begin();....$db
0720: 2d 3e 69 6e 73 65 72 74 28 27 63 6f 74 69 73 61  ->insert('cotisa
0730: 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 27 2c 20  tions_membres', 
0740: 5b 0a 09 09 09 27 64 61 74 65 27 09 09 09 09 3d  [....'date'....=
0750: 3e 09 24 64 61 74 61 5b 27 64 61 74 65 27 5d 2c  >.$data['date'],
0760: 0a 09 09 09 27 69 64 5f 63 6f 74 69 73 61 74 69  ....'id_cotisati
0770: 6f 6e 27 09 09 3d 3e 09 24 64 61 74 61 5b 27 69  on'..=>.$data['i
0780: 64 5f 63 6f 74 69 73 61 74 69 6f 6e 27 5d 2c 0a  d_cotisation'],.
0790: 09 09 09 27 69 64 5f 6d 65 6d 62 72 65 27 09 09  ...'id_membre'..
07a0: 09 3d 3e 09 24 64 61 74 61 5b 27 69 64 5f 6d 65  .=>.$data['id_me
07b0: 6d 62 72 65 27 5d 2c 0a 09 09 09 5d 29 3b 0a 0a  mbre'],....]);..
07c0: 09 09 24 69 64 20 3d 20 24 64 62 2d 3e 6c 61 73  ..$id = $db->las
07d0: 74 49 6e 73 65 72 74 52 6f 77 49 64 28 29 3b 0a  tInsertRowId();.
07e0: 0a 09 09 69 66 20 28 24 63 6f 2d 3e 69 64 5f 63  ...if ($co->id_c
07f0: 61 74 65 67 6f 72 69 65 5f 63 6f 6d 70 74 61 29  ategorie_compta)
0800: 0a 09 09 7b 0a 09 09 09 24 6d 65 6d 62 72 65 20  ...{....$membre 
0810: 3d 20 28 6e 65 77 20 4d 65 6d 62 72 65 73 29 2d  = (new Membres)-
0820: 3e 67 65 74 4e 6f 6d 28 24 64 61 74 61 5b 27 69  >getNom($data['i
0830: 64 5f 6d 65 6d 62 72 65 27 5d 29 3b 0a 0a 09 09  d_membre']);....
0840: 09 74 72 79 20 7b 0a 09 09 09 09 24 64 61 74 61  .try {.....$data
0850: 5f 63 6f 6d 70 74 61 20 3d 20 61 72 72 61 79 5f  _compta = array_
0860: 6d 65 72 67 65 28 24 64 61 74 61 5f 63 6f 6d 70  merge($data_comp
0870: 74 61 2c 20 5b 0a 09 09 09 09 09 27 69 64 5f 63  ta, [......'id_c
0880: 61 74 65 67 6f 72 69 65 27 20 3d 3e 20 24 63 6f  ategorie' => $co
0890: 2d 3e 69 64 5f 63 61 74 65 67 6f 72 69 65 5f 63  ->id_categorie_c
08a0: 6f 6d 70 74 61 2c 0a 09 09 09 09 09 27 6c 69 62  ompta,......'lib
08b0: 65 6c 6c 65 27 20 20 20 20 20 20 3d 3e 20 27 43  elle'      => 'C
08c0: 6f 74 69 73 61 74 69 6f 6e 20 2d 20 27 20 2e 20  otisation - ' . 
08d0: 24 6d 65 6d 62 72 65 2c 0a 09 09 09 09 09 27 64  $membre,......'d
08e0: 61 74 65 27 20 20 20 20 20 20 20 20 20 3d 3e 20  ate'         => 
08f0: 24 64 61 74 61 5b 27 64 61 74 65 27 5d 2c 0a 09  $data['date'],..
0900: 09 09 09 09 27 69 64 5f 61 75 74 65 75 72 27 20  ....'id_auteur' 
0910: 20 20 20 3d 3e 20 24 64 61 74 61 5b 27 69 64 5f     => $data['id_
0920: 61 75 74 65 75 72 27 5d 2c 0a 09 09 09 09 09 27  auteur'],......'
0930: 69 64 5f 6d 65 6d 62 72 65 27 20 20 20 20 3d 3e  id_membre'    =>
0940: 20 24 64 61 74 61 5b 27 69 64 5f 6d 65 6d 62 72   $data['id_membr
0950: 65 27 5d 2c 0a 09 09 09 09 5d 29 3b 0a 0a 09 09  e'],.....]);....
0960: 09 09 24 69 64 5f 6f 70 65 72 61 74 69 6f 6e 20  ..$id_operation 
0970: 3d 20 24 74 68 69 73 2d 3e 61 64 64 4f 70 65 72  = $this->addOper
0980: 61 74 69 6f 6e 43 6f 6d 70 74 61 28 24 69 64 2c  ationCompta($id,
0990: 20 24 64 61 74 61 5f 63 6f 6d 70 74 61 29 3b 0a   $data_compta);.
09a0: 09 09 09 7d 0a 09 09 09 63 61 74 63 68 20 28 5c  ...}....catch (\
09b0: 45 78 63 65 70 74 69 6f 6e 20 24 65 29 0a 09 09  Exception $e)...
09c0: 09 7b 0a 09 09 09 09 24 64 62 2d 3e 72 6f 6c 6c  .{.....$db->roll
09d0: 62 61 63 6b 28 29 3b 0a 09 09 09 09 74 68 72 6f  back();.....thro
09e0: 77 20 24 65 3b 0a 09 09 09 7d 0a 09 09 7d 0a 0a  w $e;....}...}..
09f0: 09 09 24 64 62 2d 3e 63 6f 6d 6d 69 74 28 29 3b  ..$db->commit();
0a00: 0a 0a 09 09 50 6c 75 67 69 6e 3a 3a 66 69 72 65  ....Plugin::fire
0a10: 53 69 67 6e 61 6c 28 27 63 6f 74 69 73 61 74 69  Signal('cotisati
0a20: 6f 6e 2e 61 6a 6f 75 74 27 2c 20 61 72 72 61 79  on.ajout', array
0a30: 5f 6d 65 72 67 65 28 5b 27 69 64 27 20 3d 3e 20  _merge(['id' => 
0a40: 24 69 64 5d 2c 20 24 64 61 74 61 29 29 3b 0a 0a  $id], $data));..
0a50: 09 09 72 65 74 75 72 6e 20 24 69 64 3b 0a 09 7d  ..return $id;..}
0a60: 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 53 75 70 70 72  .../**.. * Suppr
0a70: 69 6d 65 72 20 75 6e 20 c3 a9 76 c3 a9 6e 65 6d  imer un ..v..nem
0a80: 65 6e 74 20 64 65 20 63 6f 74 69 73 61 74 69 6f  ent de cotisatio
0a90: 6e 0a 09 20 2a 20 40 70 61 72 61 6d 20 20 69 6e  n.. * @param  in
0aa0: 74 65 67 65 72 20 24 69 64 20 49 44 20 64 65 20  teger $id ID de 
0ab0: 6c 27 c3 a9 76 c3 a9 6e 65 6d 65 6e 74 20 c3 a0  l'..v..nement ..
0ac0: 20 73 75 70 70 72 69 6d 65 72 0a 09 20 2a 20 40   supprimer.. * @
0ad0: 72 65 74 75 72 6e 20 69 6e 74 65 67 65 72 20 74  return integer t
0ae0: 72 75 65 20 65 6e 20 63 61 73 20 64 65 20 73 75  rue en cas de su
0af0: 63 63 c3 a8 73 0a 09 20 2a 2f 0a 09 70 75 62 6c  cc..s.. */..publ
0b00: 69 63 20 66 75 6e 63 74 69 6f 6e 20 64 65 6c 65  ic function dele
0b10: 74 65 28 24 69 64 29 0a 09 7b 0a 09 09 24 64 62  te($id)..{...$db
0b20: 20 3d 20 44 42 3a 3a 67 65 74 49 6e 73 74 61 6e   = DB::getInstan
0b30: 63 65 28 29 3b 0a 09 09 72 65 74 75 72 6e 20 24  ce();...return $
0b40: 64 62 2d 3e 64 65 6c 65 74 65 28 27 63 6f 74 69  db->delete('coti
0b50: 73 61 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 27  sations_membres'
0b60: 2c 20 27 69 64 20 3d 20 27 20 2e 20 28 69 6e 74  , 'id = ' . (int
0b70: 29 24 69 64 29 3b 0a 09 7d 0a 0a 09 70 75 62 6c  )$id);..}...publ
0b80: 69 63 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 28  ic function get(
0b90: 24 69 64 29 0a 09 7b 0a 09 09 72 65 74 75 72 6e  $id)..{...return
0ba0: 20 44 42 3a 3a 67 65 74 49 6e 73 74 61 6e 63 65   DB::getInstance
0bb0: 28 29 2d 3e 66 69 72 73 74 28 27 53 45 4c 45 43  ()->first('SELEC
0bc0: 54 20 2a 20 46 52 4f 4d 20 63 6f 74 69 73 61 74  T * FROM cotisat
0bd0: 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 20 57 48 45  ions_membres WHE
0be0: 52 45 20 69 64 20 3d 20 3f 3b 27 2c 20 28 69 6e  RE id = ?;', (in
0bf0: 74 29 24 69 64 29 3b 0a 09 7d 0a 0a 09 2f 2a 2a  t)$id);..}.../**
0c00: 0a 09 20 2a 20 52 65 6e 76 6f 69 65 20 75 6e 65  .. * Renvoie une
0c10: 20 6c 69 73 74 65 20 64 65 73 20 c3 a9 63 72 69   liste des ..cri
0c20: 74 75 72 65 73 20 63 6f 6d 70 74 61 62 6c 65 73  tures comptables
0c30: 20 6c 69 c3 a9 65 73 20 c3 a0 20 75 6e 65 20 63   li..es .. une c
0c40: 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20 40 70  otisation.. * @p
0c50: 61 72 61 6d 20 20 69 6e 74 20 24 69 64 20 4e 75  aram  int $id Nu
0c60: 6d c3 a9 72 6f 20 64 65 20 6c 61 20 63 6f 74 69  m..ro de la coti
0c70: 73 61 74 69 6f 6e 20 6d 65 6d 62 72 65 0a 09 20  sation membre.. 
0c80: 2a 20 40 72 65 74 75 72 6e 20 61 72 72 61 79 20  * @return array 
0c90: 4c 69 73 74 65 20 64 65 73 20 c3 a9 63 72 69 74  Liste des ..crit
0ca0: 75 72 65 73 0a 09 20 2a 2f 0a 09 70 75 62 6c 69  ures.. */..publi
0cb0: 63 20 66 75 6e 63 74 69 6f 6e 20 6c 69 73 74 4f  c function listO
0cc0: 70 65 72 61 74 69 6f 6e 73 43 6f 6d 70 74 61 28  perationsCompta(
0cd0: 24 69 64 29 0a 09 7b 0a 09 09 72 65 74 75 72 6e  $id)..{...return
0ce0: 20 44 42 3a 3a 67 65 74 49 6e 73 74 61 6e 63 65   DB::getInstance
0cf0: 28 29 2d 3e 67 65 74 28 27 53 45 4c 45 43 54 20  ()->get('SELECT 
0d00: 2a 20 46 52 4f 4d 20 63 6f 6d 70 74 61 5f 6a 6f  * FROM compta_jo
0d10: 75 72 6e 61 6c 0a 09 09 09 57 48 45 52 45 20 69  urnal....WHERE i
0d20: 64 20 49 4e 20 28 53 45 4c 45 43 54 20 69 64 5f  d IN (SELECT id_
0d30: 6f 70 65 72 61 74 69 6f 6e 20 46 52 4f 4d 20 6d  operation FROM m
0d40: 65 6d 62 72 65 73 5f 6f 70 65 72 61 74 69 6f 6e  embres_operation
0d50: 73 0a 09 09 09 09 57 48 45 52 45 20 69 64 5f 63  s.....WHERE id_c
0d60: 6f 74 69 73 61 74 69 6f 6e 20 3d 20 3f 29 3b 27  otisation = ?);'
0d70: 2c 20 28 69 6e 74 29 24 69 64 29 3b 0a 09 7d 0a  , (int)$id);..}.
0d80: 0a 09 2f 2a 2a 0a 09 20 2a 20 43 6f 6d 70 74 65  ../**.. * Compte
0d90: 20 6c 65 73 20 6f 70 c3 a9 72 61 74 69 6f 6e 73   les op..rations
0da0: 20 63 6f 6d 70 74 61 62 6c 65 73 20 6c 69 c3 a9   comptables li..
0db0: 65 73 20 c3 a0 20 63 65 74 74 65 20 63 6f 74 69  es .. cette coti
0dc0: 73 61 74 69 6f 6e 0a 09 20 2a 2f 0a 09 70 75 62  sation.. */..pub
0dd0: 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 63 6f 75  lic function cou
0de0: 6e 74 4f 70 65 72 61 74 69 6f 6e 73 43 6f 6d 70  ntOperationsComp
0df0: 74 61 28 24 69 64 29 0a 09 7b 0a 09 09 72 65 74  ta($id)..{...ret
0e00: 75 72 6e 20 44 42 3a 3a 67 65 74 49 6e 73 74 61  urn DB::getInsta
0e10: 6e 63 65 28 29 2d 3e 66 69 72 73 74 43 6f 6c 75  nce()->firstColu
0e20: 6d 6e 28 27 53 45 4c 45 43 54 20 43 4f 55 4e 54  mn('SELECT COUNT
0e30: 28 2a 29 20 46 52 4f 4d 20 6d 65 6d 62 72 65 73  (*) FROM membres
0e40: 5f 6f 70 65 72 61 74 69 6f 6e 73 20 57 48 45 52  _operations WHER
0e50: 45 20 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 20  E id_cotisation 
0e60: 3d 20 3f 3b 27 2c 20 28 69 6e 74 29 24 69 64 29  = ?;', (int)$id)
0e70: 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 41  ;..}.../**.. * A
0e80: 6a 6f 75 74 65 72 20 75 6e 65 20 c3 a9 63 72 69  jouter une ..cri
0e90: 74 75 72 65 20 63 6f 6d 70 74 61 62 6c 65 20 70  ture comptable p
0ea0: 6f 75 72 20 75 6e 20 70 61 69 65 6d 65 6d 65 6e  our un paiememen
0eb0: 74 20 6d 65 6d 62 72 65 0a 09 20 2a 20 40 70 61  t membre.. * @pa
0ec0: 72 61 6d 20 69 6e 74 20 24 69 64 20 4e 75 6d c3  ram int $id Num.
0ed0: a9 72 6f 20 64 65 20 6c 61 20 63 6f 74 69 73 61  .ro de la cotisa
0ee0: 74 69 6f 6e 20 6d 65 6d 62 72 65 0a 09 20 2a 20  tion membre.. * 
0ef0: 40 70 61 72 61 6d 20 61 72 72 61 79 20 24 64 61  @param array $da
0f00: 74 61 20 44 6f 6e 6e c3 a9 65 73 0a 09 20 2a 2f  ta Donn..es.. */
0f10: 0a 09 70 75 62 6c 69 63 20 66 75 6e 63 74 69 6f  ..public functio
0f20: 6e 20 61 64 64 4f 70 65 72 61 74 69 6f 6e 43 6f  n addOperationCo
0f30: 6d 70 74 61 28 24 69 64 2c 20 24 64 61 74 61 29  mpta($id, $data)
0f40: 0a 09 7b 0a 09 09 24 6a 6f 75 72 6e 61 6c 20 3d  ..{...$journal =
0f50: 20 6e 65 77 20 5c 47 61 72 72 61 64 69 6e 5c 43   new \Garradin\C
0f60: 6f 6d 70 74 61 5c 4a 6f 75 72 6e 61 6c 3b 0a 09  ompta\Journal;..
0f70: 09 24 64 62 20 3d 20 44 42 3a 3a 67 65 74 49 6e  .$db = DB::getIn
0f80: 73 74 61 6e 63 65 28 29 3b 0a 0a 09 09 69 66 20  stance();....if 
0f90: 28 21 69 73 73 65 74 28 24 64 61 74 61 5b 27 6d  (!isset($data['m
0fa0: 6f 79 65 6e 5f 70 61 69 65 6d 65 6e 74 27 5d 29  oyen_paiement'])
0fb0: 20 7c 7c 20 74 72 69 6d 28 24 64 61 74 61 5b 27   || trim($data['
0fc0: 6d 6f 79 65 6e 5f 70 61 69 65 6d 65 6e 74 27 5d  moyen_paiement']
0fd0: 29 20 3d 3d 3d 20 27 27 29 0a 09 09 7b 0a 09 09  ) === '')...{...
0fe0: 09 74 68 72 6f 77 20 6e 65 77 20 55 73 65 72 45  .throw new UserE
0ff0: 78 63 65 70 74 69 6f 6e 28 27 4d 6f 79 65 6e 20  xception('Moyen 
1000: 64 65 20 70 61 69 65 6d 65 6e 74 20 69 6e 63 6f  de paiement inco
1010: 6e 6e 75 20 6f 75 20 69 6e 76 61 6c 69 64 65 2e  nnu ou invalide.
1020: 27 29 3b 0a 09 09 7d 0a 0a 09 09 69 66 20 28 24  ');...}....if ($
1030: 64 61 74 61 5b 27 6d 6f 79 65 6e 5f 70 61 69 65  data['moyen_paie
1040: 6d 65 6e 74 27 5d 20 21 3d 20 27 45 53 27 29 0a  ment'] != 'ES').
1050: 09 09 7b 0a 09 09 09 69 66 20 28 74 72 69 6d 28  ..{....if (trim(
1060: 24 64 61 74 61 5b 27 62 61 6e 71 75 65 27 5d 29  $data['banque'])
1070: 20 3d 3d 20 27 27 29 0a 09 09 09 7b 0a 09 09 09   == '')....{....
1080: 09 74 68 72 6f 77 20 6e 65 77 20 55 73 65 72 45  .throw new UserE
1090: 78 63 65 70 74 69 6f 6e 28 27 4c 65 20 63 6f 6d  xception('Le com
10a0: 70 74 65 20 62 61 6e 63 61 69 72 65 20 63 68 6f  pte bancaire cho
10b0: 69 73 69 20 65 73 74 20 69 6e 76 61 6c 69 64 65  isi est invalide
10c0: 2e 27 29 3b 0a 09 09 09 7d 0a 0a 09 09 09 69 66  .');....}.....if
10d0: 20 28 21 24 64 62 2d 3e 66 69 72 73 74 43 6f 6c   (!$db->firstCol
10e0: 75 6d 6e 28 27 53 45 4c 45 43 54 20 31 20 46 52  umn('SELECT 1 FR
10f0: 4f 4d 20 63 6f 6d 70 74 61 5f 63 6f 6d 70 74 65  OM compta_compte
1100: 73 5f 62 61 6e 63 61 69 72 65 73 20 57 48 45 52  s_bancaires WHER
1110: 45 20 69 64 20 3d 20 3f 3b 27 2c 20 24 64 61 74  E id = ?;', $dat
1120: 61 5b 27 62 61 6e 71 75 65 27 5d 29 29 0a 09 09  a['banque']))...
1130: 09 7b 0a 09 09 09 09 74 68 72 6f 77 20 6e 65 77  .{.....throw new
1140: 20 55 73 65 72 45 78 63 65 70 74 69 6f 6e 28 27   UserException('
1150: 4c 65 20 63 6f 6d 70 74 65 20 62 61 6e 63 61 69  Le compte bancai
1160: 72 65 20 63 68 6f 69 73 69 20 6e 5c 27 65 78 69  re choisi n\'exi
1170: 73 74 65 20 70 61 73 2e 27 29 3b 0a 09 09 09 7d  ste pas.');....}
1180: 0a 09 09 7d 0a 0a 09 09 69 66 20 28 21 69 73 73  ...}....if (!iss
1190: 65 74 28 24 64 61 74 61 5b 27 6d 6f 6e 74 61 6e  et($data['montan
11a0: 74 27 5d 29 20 7c 7c 20 21 69 73 5f 6e 75 6d 65  t']) || !is_nume
11b0: 72 69 63 28 24 64 61 74 61 5b 27 6d 6f 6e 74 61  ric($data['monta
11c0: 6e 74 27 5d 29 20 7c 7c 20 24 64 61 74 61 5b 27  nt']) || $data['
11d0: 6d 6f 6e 74 61 6e 74 27 5d 20 3c 20 30 29 0a 09  montant'] < 0)..
11e0: 09 7b 0a 09 09 09 74 68 72 6f 77 20 6e 65 77 20  .{....throw new 
11f0: 55 73 65 72 45 78 63 65 70 74 69 6f 6e 28 27 4c  UserException('L
1200: 65 20 6d 6f 6e 74 61 6e 74 20 69 6e 64 69 71 75  e montant indiqu
1210: c3 a9 20 6e 5c 27 65 73 74 20 70 61 73 20 75 6e  .. n\'est pas un
1220: 20 6e 6f 6d 62 72 65 20 76 61 6c 69 64 65 20 3a   nombre valide :
1230: 20 64 6f 69 74 20 c3 aa 74 72 65 20 73 75 70 c3   doit ..tre sup.
1240: a9 72 69 65 75 72 20 6f 75 20 c3 a9 67 61 6c 20  .rieur ou ..gal 
1250: c3 a0 20 7a c3 a9 72 6f 2e 27 29 3b 0a 09 09 7d  .. z..ro.');...}
1260: 0a 0a 09 09 69 66 20 28 21 69 73 73 65 74 28 24  ....if (!isset($
1270: 64 61 74 61 5b 27 6c 69 62 65 6c 6c 65 27 5d 29  data['libelle'])
1280: 20 7c 7c 20 74 72 69 6d 28 24 64 61 74 61 5b 27   || trim($data['
1290: 6c 69 62 65 6c 6c 65 27 5d 29 20 3d 3d 20 27 27  libelle']) == ''
12a0: 29 0a 09 09 7b 0a 09 09 09 74 68 72 6f 77 20 6e  )...{....throw n
12b0: 65 77 20 55 73 65 72 45 78 63 65 70 74 69 6f 6e  ew UserException
12c0: 28 27 4c 65 20 6c 69 62 65 6c 6c c3 a9 20 6e 65  ('Le libell.. ne
12d0: 20 70 65 75 74 20 72 65 73 74 65 72 20 76 69 64   peut rester vid
12e0: 65 2e 27 29 3b 0a 09 09 7d 0a 0a 09 09 24 64 61  e.');...}....$da
12f0: 74 61 5b 27 6c 69 62 65 6c 6c 65 27 5d 20 3d 20  ta['libelle'] = 
1300: 74 72 69 6d 28 24 64 61 74 61 5b 27 6c 69 62 65  trim($data['libe
1310: 6c 6c 65 27 5d 29 3b 0a 0a 09 09 69 66 20 28 21  lle']);....if (!
1320: 69 73 73 65 74 28 24 64 61 74 61 5b 27 6d 6f 6e  isset($data['mon
1330: 74 61 6e 74 27 5d 29 20 7c 7c 20 21 69 73 5f 6e  tant']) || !is_n
1340: 75 6d 65 72 69 63 28 24 64 61 74 61 5b 27 6d 6f  umeric($data['mo
1350: 6e 74 61 6e 74 27 5d 29 20 7c 7c 20 28 66 6c 6f  ntant']) || (flo
1360: 61 74 29 24 64 61 74 61 5b 27 6d 6f 6e 74 61 6e  at)$data['montan
1370: 74 27 5d 20 3c 20 30 29 0a 09 09 7b 0a 09 09 09  t'] < 0)...{....
1380: 74 68 72 6f 77 20 6e 65 77 20 55 73 65 72 45 78  throw new UserEx
1390: 63 65 70 74 69 6f 6e 28 27 4c 65 20 6d 6f 6e 74  ception('Le mont
13a0: 61 6e 74 20 64 6f 69 74 20 c3 aa 74 72 65 20 75  ant doit ..tre u
13b0: 6e 20 6e 6f 6d 62 72 65 20 70 6f 73 69 74 69 66  n nombre positif
13c0: 20 65 74 20 76 61 6c 69 64 65 2e 27 29 3b 0a 09   et valide.');..
13d0: 09 7d 0a 0a 09 09 24 64 61 74 61 5b 27 6d 6f 6e  .}....$data['mon
13e0: 74 61 6e 74 27 5d 20 3d 20 28 66 6c 6f 61 74 29  tant'] = (float)
13f0: 20 24 64 61 74 61 5b 27 6d 6f 6e 74 61 6e 74 27   $data['montant'
1400: 5d 3b 0a 0a 09 09 69 66 20 28 21 65 6d 70 74 79  ];....if (!empty
1410: 28 24 64 61 74 61 5b 27 61 5f 65 6e 63 61 69 73  ($data['a_encais
1420: 73 65 72 27 5d 29 20 26 26 20 28 24 64 61 74 61  ser']) && ($data
1430: 5b 27 6d 6f 79 65 6e 5f 70 61 69 65 6d 65 6e 74  ['moyen_paiement
1440: 27 5d 20 3d 3d 20 27 43 48 27 20 7c 7c 20 24 64  '] == 'CH' || $d
1450: 61 74 61 5b 27 6d 6f 79 65 6e 5f 70 61 69 65 6d  ata['moyen_paiem
1460: 65 6e 74 27 5d 20 3d 3d 20 27 43 42 27 29 29 0a  ent'] == 'CB')).
1470: 09 09 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ..{.            
1480: 24 64 65 62 69 74 20 3d 20 24 64 61 74 61 5b 27  $debit = $data['
1490: 6d 6f 79 65 6e 5f 70 61 69 65 6d 65 6e 74 27 5d  moyen_paiement']
14a0: 20 3d 3d 20 27 43 48 27 20 0a 20 20 20 20 20 20   == 'CH' .      
14b0: 20 20 20 20 20 20 20 20 20 20 3f 20 43 6f 6d 70            ? Comp
14c0: 74 65 73 3a 3a 43 48 45 51 55 45 5f 41 5f 45 4e  tes::CHEQUE_A_EN
14d0: 43 41 49 53 53 45 52 0a 20 20 20 20 20 20 20 20  CAISSER.        
14e0: 20 20 20 20 20 20 20 20 3a 20 43 6f 6d 70 74 65          : Compte
14f0: 73 3a 3a 43 41 52 54 45 5f 41 5f 45 4e 43 41 49  s::CARTE_A_ENCAI
1500: 53 53 45 52 3b 0a 09 09 7d 0a 09 09 65 6c 73 65  SSER;...}...else
1510: 69 66 20 28 24 64 61 74 61 5b 27 6d 6f 79 65 6e  if ($data['moyen
1520: 5f 70 61 69 65 6d 65 6e 74 27 5d 20 21 3d 20 27  _paiement'] != '
1530: 45 53 27 29 0a 09 09 7b 0a 09 09 09 24 64 65 62  ES')...{....$deb
1540: 69 74 20 3d 20 24 64 61 74 61 5b 27 62 61 6e 71  it = $data['banq
1550: 75 65 27 5d 3b 0a 09 09 7d 0a 09 09 65 6c 73 65  ue'];...}...else
1560: 0a 09 09 7b 0a 09 09 09 24 64 65 62 69 74 20 3d  ...{....$debit =
1570: 20 5c 47 61 72 72 61 64 69 6e 5c 43 6f 6d 70 74   \Garradin\Compt
1580: 61 5c 43 6f 6d 70 74 65 73 3a 3a 43 41 49 53 53  a\Comptes::CAISS
1590: 45 3b 0a 09 09 7d 0a 0a 09 09 24 63 72 65 64 69  E;...}....$credi
15a0: 74 20 3d 20 24 64 62 2d 3e 66 69 72 73 74 43 6f  t = $db->firstCo
15b0: 6c 75 6d 6e 28 27 53 45 4c 45 43 54 20 63 6f 6d  lumn('SELECT com
15c0: 70 74 65 20 46 52 4f 4d 20 63 6f 6d 70 74 61 5f  pte FROM compta_
15d0: 63 61 74 65 67 6f 72 69 65 73 20 57 48 45 52 45  categories WHERE
15e0: 20 69 64 20 3d 20 3f 3b 27 2c 20 0a 09 09 09 24   id = ?;', ....$
15f0: 64 61 74 61 5b 27 69 64 5f 63 61 74 65 67 6f 72  data['id_categor
1600: 69 65 27 5d 29 3b 0a 0a 09 09 24 69 64 5f 6f 70  ie']);....$id_op
1610: 65 72 61 74 69 6f 6e 20 3d 20 24 6a 6f 75 72 6e  eration = $journ
1620: 61 6c 2d 3e 61 64 64 28 5b 0a 09 09 09 27 6c 69  al->add([....'li
1630: 62 65 6c 6c 65 27 20 20 20 20 20 20 20 20 3d 3e  belle'        =>
1640: 20 24 64 61 74 61 5b 27 6c 69 62 65 6c 6c 65 27   $data['libelle'
1650: 5d 2c 0a 09 09 09 27 6d 6f 6e 74 61 6e 74 27 20  ],....'montant' 
1660: 20 20 20 20 20 20 20 3d 3e 20 24 64 61 74 61 5b         => $data[
1670: 27 6d 6f 6e 74 61 6e 74 27 5d 2c 0a 09 09 09 27  'montant'],....'
1680: 64 61 74 65 27 20 20 20 20 20 20 20 20 20 20 20  date'           
1690: 3d 3e 20 24 64 61 74 61 5b 27 64 61 74 65 27 5d  => $data['date']
16a0: 2c 0a 09 09 09 27 6d 6f 79 65 6e 5f 70 61 69 65  ,....'moyen_paie
16b0: 6d 65 6e 74 27 20 3d 3e 20 24 64 61 74 61 5b 27  ment' => $data['
16c0: 6d 6f 79 65 6e 5f 70 61 69 65 6d 65 6e 74 27 5d  moyen_paiement']
16d0: 2c 0a 09 09 09 27 6e 75 6d 65 72 6f 5f 63 68 65  ,....'numero_che
16e0: 71 75 65 27 20 20 3d 3e 20 69 73 73 65 74 28 24  que'  => isset($
16f0: 64 61 74 61 5b 27 6e 75 6d 65 72 6f 5f 63 68 65  data['numero_che
1700: 71 75 65 27 5d 29 20 3f 20 24 64 61 74 61 5b 27  que']) ? $data['
1710: 6e 75 6d 65 72 6f 5f 63 68 65 71 75 65 27 5d 20  numero_cheque'] 
1720: 3a 20 6e 75 6c 6c 2c 0a 09 09 09 27 63 6f 6d 70  : null,....'comp
1730: 74 65 5f 64 65 62 69 74 27 20 20 20 3d 3e 20 24  te_debit'   => $
1740: 64 65 62 69 74 2c 0a 09 09 09 27 63 6f 6d 70 74  debit,....'compt
1750: 65 5f 63 72 65 64 69 74 27 20 20 3d 3e 20 24 63  e_credit'  => $c
1760: 72 65 64 69 74 2c 0a 09 09 09 27 69 64 5f 63 61  redit,....'id_ca
1770: 74 65 67 6f 72 69 65 27 20 20 20 3d 3e 20 28 69  tegorie'   => (i
1780: 6e 74 29 24 64 61 74 61 5b 27 69 64 5f 63 61 74  nt)$data['id_cat
1790: 65 67 6f 72 69 65 27 5d 2c 0a 09 09 09 27 69 64  egorie'],....'id
17a0: 5f 61 75 74 65 75 72 27 20 20 20 20 20 20 3d 3e  _auteur'      =>
17b0: 20 28 69 6e 74 29 24 64 61 74 61 5b 27 69 64 5f   (int)$data['id_
17c0: 61 75 74 65 75 72 27 5d 2c 0a 09 09 09 27 72 65  auteur'],....'re
17d0: 6d 61 72 71 75 65 73 27 20 20 20 20 20 20 3d 3e  marques'      =>
17e0: 20 69 73 73 65 74 28 24 64 61 74 61 5b 27 72 65   isset($data['re
17f0: 6d 61 72 71 75 65 73 27 5d 29 20 3f 20 24 64 61  marques']) ? $da
1800: 74 61 5b 27 72 65 6d 61 72 71 75 65 73 27 5d 20  ta['remarques'] 
1810: 3a 20 6e 75 6c 6c 2c 0a 09 09 09 27 6e 75 6d 65  : null,....'nume
1820: 72 6f 5f 70 69 65 63 65 27 20 20 20 3d 3e 20 69  ro_piece'   => i
1830: 73 73 65 74 28 24 64 61 74 61 5b 27 6e 75 6d 65  sset($data['nume
1840: 72 6f 5f 70 69 65 63 65 27 5d 29 20 3f 20 24 64  ro_piece']) ? $d
1850: 61 74 61 5b 27 6e 75 6d 65 72 6f 5f 70 69 65 63  ata['numero_piec
1860: 65 27 5d 20 3a 20 6e 75 6c 6c 2c 0a 09 09 5d 29  e'] : null,...])
1870: 3b 0a 0a 09 09 24 64 62 2d 3e 69 6e 73 65 72 74  ;....$db->insert
1880: 28 27 6d 65 6d 62 72 65 73 5f 6f 70 65 72 61 74  ('membres_operat
1890: 69 6f 6e 73 27 2c 20 5b 0a 09 09 09 27 69 64 5f  ions', [....'id_
18a0: 6f 70 65 72 61 74 69 6f 6e 27 20 20 3d 3e 20 24  operation'  => $
18b0: 69 64 5f 6f 70 65 72 61 74 69 6f 6e 2c 0a 09 09  id_operation,...
18c0: 09 27 69 64 5f 6d 65 6d 62 72 65 27 20 20 20 20  .'id_membre'    
18d0: 20 3d 3e 20 24 64 61 74 61 5b 27 69 64 5f 6d 65   => $data['id_me
18e0: 6d 62 72 65 27 5d 2c 0a 09 09 09 27 69 64 5f 63  mbre'],....'id_c
18f0: 6f 74 69 73 61 74 69 6f 6e 27 20 3d 3e 20 28 69  otisation' => (i
1900: 6e 74 29 24 69 64 2c 0a 09 09 5d 29 3b 0a 0a 09  nt)$id,...]);...
1910: 09 72 65 74 75 72 6e 20 24 69 64 5f 6f 70 65 72  .return $id_oper
1920: 61 74 69 6f 6e 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a  ation;..}.../**.
1930: 09 20 2a 20 4e 6f 6d 62 72 65 20 64 65 20 6d 65  . * Nombre de me
1940: 6d 62 72 65 73 20 70 6f 75 72 20 75 6e 65 20 63  mbres pour une c
1950: 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20 40 70  otisation.. * @p
1960: 61 72 61 6d 20 20 69 6e 74 65 67 65 72 20 24 69  aram  integer $i
1970: 64 20 4e 75 6d c3 a9 72 6f 20 64 65 20 6c 61 20  d Num..ro de la 
1980: 63 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20 40  cotisation.. * @
1990: 72 65 74 75 72 6e 20 69 6e 74 65 67 65 72 20 20  return integer  
19a0: 20 20 20 4e 6f 6d 62 72 65 20 64 27 c3 a9 76 c3     Nombre d'..v.
19b0: a9 6e 65 6d 65 6e 74 73 20 70 6f 75 72 20 63 65  .nements pour ce
19c0: 74 74 65 20 63 6f 74 69 73 61 74 69 6f 6e 0a 09  tte cotisation..
19d0: 20 2a 2f 0a 09 70 75 62 6c 69 63 20 66 75 6e 63   */..public func
19e0: 74 69 6f 6e 20 63 6f 75 6e 74 4d 65 6d 62 65 72  tion countMember
19f0: 73 46 6f 72 43 6f 74 69 73 61 74 69 6f 6e 28 24  sForCotisation($
1a00: 69 64 29 0a 09 7b 0a 09 09 24 64 62 20 3d 20 44  id)..{...$db = D
1a10: 42 3a 3a 67 65 74 49 6e 73 74 61 6e 63 65 28 29  B::getInstance()
1a20: 3b 0a 09 09 72 65 74 75 72 6e 20 24 64 62 2d 3e  ;...return $db->
1a30: 66 69 72 73 74 43 6f 6c 75 6d 6e 28 27 53 45 4c  firstColumn('SEL
1a40: 45 43 54 20 43 4f 55 4e 54 28 44 49 53 54 49 4e  ECT COUNT(DISTIN
1a50: 43 54 20 63 6d 2e 69 64 5f 6d 65 6d 62 72 65 29  CT cm.id_membre)
1a60: 0a 09 09 09 46 52 4f 4d 20 63 6f 74 69 73 61 74  ....FROM cotisat
1a70: 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 20 20 41 53  ions_membres  AS
1a80: 20 63 6d 0a 09 09 09 09 49 4e 4e 45 52 20 4a 4f   cm.....INNER JO
1a90: 49 4e 20 6d 65 6d 62 72 65 73 20 41 53 20 6d 20  IN membres AS m 
1aa0: 4f 4e 20 6d 2e 69 64 20 3d 20 63 6d 2e 69 64 5f  ON m.id = cm.id_
1ab0: 6d 65 6d 62 72 65 0a 09 09 09 57 48 45 52 45 20  membre....WHERE 
1ac0: 63 6d 2e 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e  cm.id_cotisation
1ad0: 20 3d 20 3f 0a 09 09 09 41 4e 44 20 6d 2e 69 64   = ?....AND m.id
1ae0: 5f 63 61 74 65 67 6f 72 69 65 20 4e 4f 54 20 49  _categorie NOT I
1af0: 4e 20 28 53 45 4c 45 43 54 20 69 64 20 46 52 4f  N (SELECT id FRO
1b00: 4d 20 6d 65 6d 62 72 65 73 5f 63 61 74 65 67 6f  M membres_catego
1b10: 72 69 65 73 20 57 48 45 52 45 20 63 61 63 68 65  ries WHERE cache
1b20: 72 20 3d 20 31 29 3b 27 2c 0a 09 09 09 28 69 6e  r = 1);',....(in
1b30: 74 29 24 69 64 29 3b 0a 09 7d 0a 0a 09 2f 2a 2a  t)$id);..}.../**
1b40: 0a 09 20 2a 20 4c 69 73 74 65 20 64 65 73 20 6d  .. * Liste des m
1b50: 65 6d 62 72 65 73 20 71 75 69 20 73 6f 6e 74 20  embres qui sont 
1b60: 69 6e 73 63 72 69 74 73 20 c3 a0 20 75 6e 65 20  inscrits .. une 
1b70: 63 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20 40  cotisation.. * @
1b80: 70 61 72 61 6d 20 20 69 6e 74 65 67 65 72 20 24  param  integer $
1b90: 69 64 20 4e 75 6d c3 a9 72 6f 20 64 65 20 6c 61  id Num..ro de la
1ba0: 20 63 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20   cotisation.. * 
1bb0: 40 72 65 74 75 72 6e 20 61 72 72 61 79 20 20 20  @return array   
1bc0: 20 20 4c 69 73 74 65 20 64 65 73 20 6d 65 6d 62    Liste des memb
1bd0: 72 65 73 0a 09 20 2a 2f 0a 09 70 75 62 6c 69 63  res.. */..public
1be0: 20 66 75 6e 63 74 69 6f 6e 20 6c 69 73 74 4d 65   function listMe
1bf0: 6d 62 65 72 73 46 6f 72 43 6f 74 69 73 61 74 69  mbersForCotisati
1c00: 6f 6e 28 24 69 64 2c 20 24 70 61 67 65 20 3d 20  on($id, $page = 
1c10: 31 2c 20 24 6f 72 64 65 72 20 3d 20 6e 75 6c 6c  1, $order = null
1c20: 2c 20 24 64 65 73 63 20 3d 20 74 72 75 65 29 0a  , $desc = true).
1c30: 09 7b 0a 09 09 24 62 65 67 69 6e 20 3d 20 28 24  .{...$begin = ($
1c40: 70 61 67 65 20 2d 20 31 29 20 2a 20 73 65 6c 66  page - 1) * self
1c50: 3a 3a 49 54 45 4d 53 5f 50 45 52 5f 50 41 47 45  ::ITEMS_PER_PAGE
1c60: 3b 0a 0a 09 09 24 64 62 20 3d 20 44 42 3a 3a 67  ;....$db = DB::g
1c70: 65 74 49 6e 73 74 61 6e 63 65 28 29 3b 0a 09 09  etInstance();...
1c80: 24 63 68 61 6d 70 5f 69 64 20 3d 20 43 6f 6e 66  $champ_id = Conf
1c90: 69 67 3a 3a 67 65 74 49 6e 73 74 61 6e 63 65 28  ig::getInstance(
1ca0: 29 2d 3e 67 65 74 28 27 63 68 61 6d 70 5f 69 64  )->get('champ_id
1cb0: 65 6e 74 69 74 65 27 29 3b 0a 0a 09 09 69 66 20  entite');....if 
1cc0: 28 65 6d 70 74 79 28 24 6f 72 64 65 72 29 29 0a  (empty($order)).
1cd0: 09 09 09 24 6f 72 64 65 72 20 3d 20 27 64 61 74  ...$order = 'dat
1ce0: 65 27 3b 0a 0a 09 09 73 77 69 74 63 68 20 28 24  e';....switch ($
1cf0: 6f 72 64 65 72 29 0a 09 09 7b 0a 09 09 09 63 61  order)...{....ca
1d00: 73 65 20 27 64 61 74 65 27 3a 0a 09 09 09 63 61  se 'date':....ca
1d10: 73 65 20 27 61 5f 6a 6f 75 72 27 3a 0a 09 09 09  se 'a_jour':....
1d20: 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20  .break;....case 
1d30: 27 69 64 65 6e 74 69 74 65 27 3a 0a 09 09 09 09  'identite':.....
1d40: 24 6f 72 64 65 72 20 3d 20 27 74 72 61 6e 73 6c  $order = 'transl
1d50: 69 74 65 72 61 74 65 5f 74 6f 5f 61 73 63 69 69  iterate_to_ascii
1d60: 28 27 2e 24 63 68 61 6d 70 5f 69 64 2e 27 29 20  ('.$champ_id.') 
1d70: 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 27 3b  COLLATE NOCASE';
1d80: 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 64  .....break;....d
1d90: 65 66 61 75 6c 74 3a 0a 09 09 09 09 24 6f 72 64  efault:.....$ord
1da0: 65 72 20 3d 20 27 63 6d 2e 69 64 5f 6d 65 6d 62  er = 'cm.id_memb
1db0: 72 65 27 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a  re';.....break;.
1dc0: 09 09 7d 0a 0a 09 09 24 64 65 73 63 20 3d 20 24  ..}....$desc = $
1dd0: 64 65 73 63 20 3f 20 27 44 45 53 43 27 20 3a 20  desc ? 'DESC' : 
1de0: 27 41 53 43 27 3b 0a 0a 09 09 72 65 74 75 72 6e  'ASC';....return
1df0: 20 24 64 62 2d 3e 67 65 74 28 27 53 45 4c 45 43   $db->get('SELEC
1e00: 54 20 63 6d 2e 69 64 5f 6d 65 6d 62 72 65 2c 20  T cm.id_membre, 
1e10: 63 6d 2e 64 61 74 65 2c 20 63 6d 2e 69 64 2c 20  cm.date, cm.id, 
1e20: 6d 2e 6e 75 6d 65 72 6f 2c 0a 09 09 09 6d 2e 27  m.numero,....m.'
1e30: 2e 24 63 68 61 6d 70 5f 69 64 2e 27 20 41 53 20  .$champ_id.' AS 
1e40: 6e 6f 6d 2c 20 63 2e 6d 6f 6e 74 61 6e 74 2c 0a  nom, c.montant,.
1e50: 09 09 09 43 41 53 45 20 57 48 45 4e 20 63 2e 64  ...CASE WHEN c.d
1e60: 75 72 65 65 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  uree IS NOT NULL
1e70: 20 54 48 45 4e 20 64 61 74 65 28 63 6d 2e 64 61   THEN date(cm.da
1e80: 74 65 2c 20 5c 27 2b 5c 27 7c 7c 63 2e 64 75 72  te, \'+\'||c.dur
1e90: 65 65 7c 7c 5c 27 20 64 61 79 73 5c 27 29 20 3e  ee||\' days\') >
1ea0: 3d 20 64 61 74 65 28 29 0a 09 09 09 57 48 45 4e  = date()....WHEN
1eb0: 20 63 2e 66 69 6e 20 49 53 20 4e 4f 54 20 4e 55   c.fin IS NOT NU
1ec0: 4c 4c 20 54 48 45 4e 20 28 64 61 74 65 28 29 20  LL THEN (date() 
1ed0: 3c 3d 20 63 2e 66 69 6e 20 41 4e 44 20 64 61 74  <= c.fin AND dat
1ee0: 65 28 29 20 3e 3d 20 63 2e 64 65 62 75 74 29 20  e() >= c.debut) 
1ef0: 45 4c 53 45 20 31 20 45 4e 44 20 41 53 20 61 5f  ELSE 1 END AS a_
1f00: 6a 6f 75 72 0a 09 09 09 46 52 4f 4d 20 63 6f 74  jour....FROM cot
1f10: 69 73 61 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73  isations_membres
1f20: 20 41 53 20 63 6d 0a 09 09 09 09 49 4e 4e 45 52   AS cm.....INNER
1f30: 20 4a 4f 49 4e 20 63 6f 74 69 73 61 74 69 6f 6e   JOIN cotisation
1f40: 73 20 41 53 20 63 20 4f 4e 20 63 2e 69 64 20 3d  s AS c ON c.id =
1f50: 20 63 6d 2e 69 64 5f 63 6f 74 69 73 61 74 69 6f   cm.id_cotisatio
1f60: 6e 0a 09 09 09 09 49 4e 4e 45 52 20 4a 4f 49 4e  n.....INNER JOIN
1f70: 20 6d 65 6d 62 72 65 73 20 41 53 20 6d 20 4f 4e   membres AS m ON
1f80: 20 6d 2e 69 64 20 3d 20 63 6d 2e 69 64 5f 6d 65   m.id = cm.id_me
1f90: 6d 62 72 65 0a 09 09 09 57 48 45 52 45 0a 09 09  mbre....WHERE...
1fa0: 09 09 63 6d 2e 69 64 5f 63 6f 74 69 73 61 74 69  ..cm.id_cotisati
1fb0: 6f 6e 20 3d 20 3f 0a 09 09 09 09 41 4e 44 20 6d  on = ?.....AND m
1fc0: 2e 69 64 5f 63 61 74 65 67 6f 72 69 65 20 4e 4f  .id_categorie NO
1fd0: 54 20 49 4e 20 28 53 45 4c 45 43 54 20 6d 63 2e  T IN (SELECT mc.
1fe0: 69 64 20 46 52 4f 4d 20 6d 65 6d 62 72 65 73 5f  id FROM membres_
1ff0: 63 61 74 65 67 6f 72 69 65 73 20 41 53 20 6d 63  categories AS mc
2000: 20 57 48 45 52 45 20 6d 63 2e 63 61 63 68 65 72   WHERE mc.cacher
2010: 20 3d 20 31 29 0a 09 09 09 47 52 4f 55 50 20 42   = 1)....GROUP B
2020: 59 20 63 6d 2e 69 64 5f 6d 65 6d 62 72 65 20 4f  Y cm.id_membre O
2030: 52 44 45 52 20 42 59 20 27 2e 24 6f 72 64 65 72  RDER BY '.$order
2040: 2e 27 20 27 2e 24 64 65 73 63 2e 27 20 4c 49 4d  .' '.$desc.' LIM
2050: 49 54 20 3f 2c 3f 3b 27 2c 0a 09 09 09 28 69 6e  IT ?,?;',....(in
2060: 74 29 24 69 64 2c 20 24 62 65 67 69 6e 2c 20 73  t)$id, $begin, s
2070: 65 6c 66 3a 3a 49 54 45 4d 53 5f 50 45 52 5f 50  elf::ITEMS_PER_P
2080: 41 47 45 29 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a 09  AGE);..}.../**..
2090: 20 2a 20 4c 69 73 74 65 20 64 65 73 20 c3 a9 76   * Liste des ..v
20a0: c3 a9 6e 65 6d 65 6e 74 73 20 64 27 75 6e 20 6d  ..nements d'un m
20b0: 65 6d 62 72 65 0a 09 20 2a 20 40 70 61 72 61 6d  embre.. * @param
20c0: 20 20 69 6e 74 65 67 65 72 20 24 69 64 20 4e 75    integer $id Nu
20d0: 6d c3 a9 72 6f 20 64 65 20 6d 65 6d 62 72 65 0a  m..ro de membre.
20e0: 09 20 2a 20 40 72 65 74 75 72 6e 20 61 72 72 61  . * @return arra
20f0: 79 20 20 20 20 20 4c 69 73 74 65 20 64 65 73 20  y     Liste des 
2100: c3 a9 76 c3 a9 6e 65 6d 65 6e 74 73 20 64 65 20  ..v..nements de 
2110: 63 6f 74 69 73 61 74 69 6f 6e 20 66 61 69 74 20  cotisation fait 
2120: 70 61 72 20 63 65 20 6d 65 6d 62 72 65 0a 09 20  par ce membre.. 
2130: 2a 2f 0a 09 70 75 62 6c 69 63 20 66 75 6e 63 74  */..public funct
2140: 69 6f 6e 20 6c 69 73 74 46 6f 72 4d 65 6d 62 65  ion listForMembe
2150: 72 28 24 69 64 29 0a 09 7b 0a 09 09 2f 2f 20 54  r($id)..{...// T
2160: 4f 44 4f 3a 20 72 c3 a9 63 75 70 c3 a9 72 65 72  ODO: r..cup..rer
2170: 20 69 63 69 20 6c 65 20 73 6f 6c 64 65 20 70 61   ici le solde pa
2180: 79 c3 a9 20 70 6f 75 72 20 75 6e 65 20 63 6f 74  y.. pour une cot
2190: 69 73 61 74 69 6f 6e 2c 20 70 6f 75 72 20 73 61  isation, pour sa
21a0: 76 6f 69 72 20 73 69 20 74 6f 75 74 20 61 20 c3  voir si tout a .
21b0: a9 74 c3 a9 20 70 61 79 c3 a9 0a 09 09 2f 2f 20  .t.. pay.....// 
21c0: 28 70 6f 75 72 20 67 c3 a9 72 65 72 20 70 61 72  (pour g..rer par
21d0: 20 65 78 65 6d 70 6c 65 20 6c 65 73 20 70 61 69   exemple les pai
21e0: 65 6d 65 6e 74 73 20 65 66 66 65 63 74 75 c3 a9  ements effectu..
21f0: 73 20 65 6e 20 70 6c 75 73 69 65 75 72 73 20 76  s en plusieurs v
2200: 65 72 73 65 6d 65 6e 74 73 29 0a 09 09 2f 2f 20  ersements)...// 
2210: 6d 61 69 73 20 70 6f 75 72 20 6c 65 20 6d 6f 6d  mais pour le mom
2220: 65 6e 74 20 6c 65 20 66 6f 6e 63 74 69 6f 6e 6e  ent le fonctionn
2230: 65 6d 65 6e 74 20 64 65 20 63 6f 6d 70 74 61 5f  ement de compta_
2240: 6a 6f 75 72 6e 61 6c 20 65 73 74 20 74 72 6f 70  journal est trop
2250: 20 63 6f 6d 70 6c 69 71 75 c3 a9 20 70 6f 75 72   compliqu.. pour
2260: 20 61 72 72 69 76 65 72 0a 09 09 2f 2f 20 c3 a0   arriver...// ..
2270: 20 72 c3 a9 63 75 70 c3 a9 72 65 72 20 75 6e 20   r..cup..rer un 
2280: 73 6f 6c 64 65 20 64 61 6e 73 20 75 6e 65 20 72  solde dans une r
2290: 65 71 75 c3 aa 74 65 20 73 69 6d 70 6c 65 2c 20  equ..te simple, 
22a0: 6c 61 20 72 65 71 75 c3 aa 74 65 20 73 65 72 61  la requ..te sera
22b0: 69 74 20 74 72 6f 70 20 6c 6f 75 72 64 65 20 64  it trop lourde d
22c0: 6f 6e 63 20 6f 6e 20 6c 61 69 73 73 65 20 74 6f  onc on laisse to
22d0: 6d 62 65 72 0a 09 09 24 64 62 20 3d 20 44 42 3a  mber...$db = DB:
22e0: 3a 67 65 74 49 6e 73 74 61 6e 63 65 28 29 3b 0a  :getInstance();.
22f0: 09 09 72 65 74 75 72 6e 20 24 64 62 2d 3e 67 65  ..return $db->ge
2300: 74 28 27 53 45 4c 45 43 54 20 63 6d 2e 2a 2c 20  t('SELECT cm.*, 
2310: 63 2e 69 6e 74 69 74 75 6c 65 2c 20 63 2e 64 75  c.intitule, c.du
2320: 72 65 65 2c 20 63 2e 64 65 62 75 74 2c 20 63 2e  ree, c.debut, c.
2330: 66 69 6e 2c 20 63 2e 6d 6f 6e 74 61 6e 74 2c 0a  fin, c.montant,.
2340: 09 09 09 28 53 45 4c 45 43 54 20 43 4f 55 4e 54  ...(SELECT COUNT
2350: 28 2a 29 20 46 52 4f 4d 20 6d 65 6d 62 72 65 73  (*) FROM membres
2360: 5f 6f 70 65 72 61 74 69 6f 6e 73 20 57 48 45 52  _operations WHER
2370: 45 20 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 20  E id_cotisation 
2380: 3d 20 63 6d 2e 69 64 29 20 41 53 20 6e 62 5f 6f  = cm.id) AS nb_o
2390: 70 65 72 61 74 69 6f 6e 73 0a 09 09 09 46 52 4f  perations....FRO
23a0: 4d 20 63 6f 74 69 73 61 74 69 6f 6e 73 5f 6d 65  M cotisations_me
23b0: 6d 62 72 65 73 20 41 53 20 63 6d 0a 09 09 09 09  mbres AS cm.....
23c0: 4c 45 46 54 20 4a 4f 49 4e 20 63 6f 74 69 73 61  LEFT JOIN cotisa
23d0: 74 69 6f 6e 73 20 41 53 20 63 20 4f 4e 20 63 2e  tions AS c ON c.
23e0: 69 64 20 3d 20 63 6d 2e 69 64 5f 63 6f 74 69 73  id = cm.id_cotis
23f0: 61 74 69 6f 6e 0a 09 09 09 57 48 45 52 45 20 63  ation....WHERE c
2400: 6d 2e 69 64 5f 6d 65 6d 62 72 65 20 3d 20 3f 20  m.id_membre = ? 
2410: 4f 52 44 45 52 20 42 59 20 63 6d 2e 64 61 74 65  ORDER BY cm.date
2420: 20 44 45 53 43 3b 27 2c 20 28 69 6e 74 29 24 69   DESC;', (int)$i
2430: 64 29 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a  d);..}.../**.. *
2440: 20 4c 69 73 74 65 20 64 65 73 20 63 6f 74 69 73   Liste des cotis
2450: 61 74 69 6f 6e 73 20 2f 20 61 63 74 69 76 69 74  ations / activit
2460: c3 a9 73 20 65 6e 20 63 6f 75 72 73 20 70 6f 75  ..s en cours pou
2470: 72 20 63 65 20 6d 65 6d 62 72 65 0a 09 20 2a 20  r ce membre.. * 
2480: 40 70 61 72 61 6d 20 20 69 6e 74 65 67 65 72 20  @param  integer 
2490: 24 69 64 20 4e 75 6d c3 a9 72 6f 20 64 65 20 6d  $id Num..ro de m
24a0: 65 6d 62 72 65 0a 09 20 2a 20 40 72 65 74 75 72  embre.. * @retur
24b0: 6e 20 61 72 72 61 79 20 20 20 20 20 4c 69 73 74  n array     List
24c0: 65 20 64 65 73 20 63 6f 74 69 73 61 74 69 6f 6e  e des cotisation
24d0: 73 20 65 6e 20 63 6f 75 72 73 20 64 65 20 76 61  s en cours de va
24e0: 6c 69 64 69 74 c3 a9 0a 09 20 2a 2f 0a 09 70 75  lidit.... */..pu
24f0: 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 6c 69  blic function li
2500: 73 74 53 75 62 73 63 72 69 70 74 69 6f 6e 73 46  stSubscriptionsF
2510: 6f 72 4d 65 6d 62 65 72 28 24 69 64 29 0a 09 7b  orMember($id)..{
2520: 0a 09 09 24 64 62 20 3d 20 44 42 3a 3a 67 65 74  ...$db = DB::get
2530: 49 6e 73 74 61 6e 63 65 28 29 3b 0a 09 09 72 65  Instance();...re
2540: 74 75 72 6e 20 24 64 62 2d 3e 67 65 74 28 27 53  turn $db->get('S
2550: 45 4c 45 43 54 20 63 2e 2a 2c 0a 09 09 09 43 41  ELECT c.*,....CA
2560: 53 45 20 57 48 45 4e 20 63 2e 64 75 72 65 65 20  SE WHEN c.duree 
2570: 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 54 48 45 4e  IS NOT NULL THEN
2580: 20 64 61 74 65 28 63 6d 2e 64 61 74 65 2c 20 5c   date(cm.date, \
2590: 27 2b 5c 27 7c 7c 63 2e 64 75 72 65 65 7c 7c 5c  '+\'||c.duree||\
25a0: 27 20 64 61 79 73 5c 27 29 20 3e 3d 20 64 61 74  ' days\') >= dat
25b0: 65 28 29 0a 09 09 09 57 48 45 4e 20 63 2e 66 69  e()....WHEN c.fi
25c0: 6e 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 54 48  n IS NOT NULL TH
25d0: 45 4e 20 28 63 6d 2e 69 64 20 49 53 20 4e 4f 54  EN (cm.id IS NOT
25e0: 20 4e 55 4c 4c 20 41 4e 44 20 64 61 74 65 28 29   NULL AND date()
25f0: 20 3c 3d 20 63 2e 66 69 6e 20 41 4e 44 20 64 61   <= c.fin AND da
2600: 74 65 28 29 20 3e 3d 20 63 2e 64 65 62 75 74 29  te() >= c.debut)
2610: 0a 09 09 09 57 48 45 4e 20 63 6d 2e 69 64 20 49  ....WHEN cm.id I
2620: 53 20 4e 4f 54 20 4e 55 4c 4c 20 54 48 45 4e 20  S NOT NULL THEN 
2630: 31 20 45 4c 53 45 20 30 20 45 4e 44 20 41 53 20  1 ELSE 0 END AS 
2640: 61 5f 6a 6f 75 72 2c 0a 09 09 09 43 41 53 45 20  a_jour,....CASE 
2650: 57 48 45 4e 20 63 2e 64 75 72 65 65 20 49 53 20  WHEN c.duree IS 
2660: 4e 4f 54 20 4e 55 4c 4c 20 54 48 45 4e 20 64 61  NOT NULL THEN da
2670: 74 65 28 63 6d 2e 64 61 74 65 2c 20 5c 27 2b 5c  te(cm.date, \'+\
2680: 27 7c 7c 63 2e 64 75 72 65 65 7c 7c 5c 27 20 64  '||c.duree||\' d
2690: 61 79 73 5c 27 29 0a 09 09 09 57 48 45 4e 20 63  ays\')....WHEN c
26a0: 2e 66 69 6e 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  .fin IS NOT NULL
26b0: 20 54 48 45 4e 20 63 2e 66 69 6e 20 45 4c 53 45   THEN c.fin ELSE
26c0: 20 31 20 45 4e 44 20 41 53 20 65 78 70 69 72 61   1 END AS expira
26d0: 74 69 6f 6e 2c 0a 09 09 09 28 6a 75 6c 69 61 6e  tion,....(julian
26e0: 64 61 79 28 64 61 74 65 28 29 29 20 2d 20 6a 75  day(date()) - ju
26f0: 6c 69 61 6e 64 61 79 28 43 41 53 45 20 57 48 45  lianday(CASE WHE
2700: 4e 20 63 2e 64 75 72 65 65 20 49 53 20 4e 4f 54  N c.duree IS NOT
2710: 20 4e 55 4c 4c 20 54 48 45 4e 20 64 61 74 65 28   NULL THEN date(
2720: 63 6d 2e 64 61 74 65 2c 20 5c 27 2b 5c 27 7c 7c  cm.date, \'+\'||
2730: 63 2e 64 75 72 65 65 7c 7c 5c 27 20 64 61 79 73  c.duree||\' days
2740: 5c 27 29 0a 09 09 09 57 48 45 4e 20 63 2e 66 69  \')....WHEN c.fi
2750: 6e 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 54 48  n IS NOT NULL TH
2760: 45 4e 20 63 2e 66 69 6e 20 45 4e 44 29 29 20 41  EN c.fin END)) A
2770: 53 20 6e 62 5f 6a 6f 75 72 73 0a 09 09 09 46 52  S nb_jours....FR
2780: 4f 4d 20 63 6f 74 69 73 61 74 69 6f 6e 73 5f 6d  OM cotisations_m
2790: 65 6d 62 72 65 73 20 41 53 20 63 6d 0a 09 09 09  embres AS cm....
27a0: 09 49 4e 4e 45 52 20 4a 4f 49 4e 20 63 6f 74 69  .INNER JOIN coti
27b0: 73 61 74 69 6f 6e 73 20 41 53 20 63 20 4f 4e 20  sations AS c ON 
27c0: 63 2e 69 64 20 3d 20 63 6d 2e 69 64 5f 63 6f 74  c.id = cm.id_cot
27d0: 69 73 61 74 69 6f 6e 0a 09 09 09 57 48 45 52 45  isation....WHERE
27e0: 20 63 6d 2e 69 64 5f 6d 65 6d 62 72 65 20 3d 20   cm.id_membre = 
27f0: 3f 0a 09 09 09 09 41 4e 44 20 28 28 63 2e 66 69  ?.....AND ((c.fi
2800: 6e 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e  n IS NOT NULL AN
2810: 44 20 64 61 74 65 28 29 20 3c 3d 20 63 2e 66 69  D date() <= c.fi
2820: 6e 20 41 4e 44 20 64 61 74 65 28 29 20 3e 3d 20  n AND date() >= 
2830: 63 2e 64 65 62 75 74 29 20 4f 52 20 63 2e 66 69  c.debut) OR c.fi
2840: 6e 20 49 53 20 4e 55 4c 4c 29 0a 09 09 09 47 52  n IS NULL)....GR
2850: 4f 55 50 20 42 59 20 63 6d 2e 69 64 5f 63 6f 74  OUP BY cm.id_cot
2860: 69 73 61 74 69 6f 6e 0a 09 09 09 4f 52 44 45 52  isation....ORDER
2870: 20 42 59 20 63 6d 2e 64 61 74 65 20 44 45 53 43   BY cm.date DESC
2880: 3b 27 2c 20 28 69 6e 74 29 24 69 64 29 3b 0a 09  ;', (int)$id);..
2890: 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 43 65 20 6d  }.../**.. * Ce m
28a0: 65 6d 62 72 65 20 65 73 74 2d 69 6c 20 c3 a0 20  embre est-il .. 
28b0: 6a 6f 75 72 20 73 75 72 20 63 65 74 74 65 20 63  jour sur cette c
28c0: 6f 74 69 73 61 74 69 6f 6e 20 3f 0a 09 20 2a 20  otisation ?.. * 
28d0: 40 70 61 72 61 6d 20 20 69 6e 74 65 67 65 72 20  @param  integer 
28e0: 20 24 69 64 20 20 20 20 20 20 20 20 20 20 20 20   $id            
28f0: 20 4e 75 6d c3 a9 72 6f 20 64 65 20 6d 65 6d 62   Num..ro de memb
2900: 72 65 0a 09 20 2a 20 40 70 61 72 61 6d 20 20 69  re.. * @param  i
2910: 6e 74 65 67 65 72 20 20 24 69 64 5f 63 6f 74 69  nteger  $id_coti
2920: 73 61 74 69 6f 6e 20 20 4e 75 6d c3 a9 72 6f 20  sation  Num..ro 
2930: 64 65 20 63 6f 74 69 73 61 74 69 6f 6e 0a 09 20  de cotisation.. 
2940: 2a 20 40 72 65 74 75 72 6e 20 61 72 72 61 79 20  * @return array 
2950: 09 09 09 09 09 49 6e 66 6f 73 20 73 75 72 20 6c  .....Infos sur l
2960: 61 20 63 6f 74 69 73 61 74 69 6f 6e 2c 20 65 74  a cotisation, et
2970: 20 63 68 61 6d 70 20 65 78 70 69 72 61 74 69 6f   champ expiratio
2980: 6e 0a 09 20 2a 20 28 73 69 20 4e 55 4c 4c 20 3d  n.. * (si NULL =
2990: 20 63 6f 74 69 73 61 74 69 6f 6e 20 6a 61 6d 61   cotisation jama
29a0: 69 73 20 65 6e 72 65 67 69 73 74 72 c3 a9 65 2c  is enregistr..e,
29b0: 20 73 69 20 31 20 3d 20 63 6f 74 69 73 61 74 69   si 1 = cotisati
29c0: 6f 6e 20 70 6f 6e 63 74 75 65 6c 6c 65 20 65 6e  on ponctuelle en
29d0: 72 65 67 69 73 74 72 c3 a9 65 2c 20 73 69 6e 6f  registr..e, sino
29e0: 6e 20 64 61 74 65 20 64 27 65 78 70 69 72 61 74  n date d'expirat
29f0: 69 6f 6e 29 0a 09 20 2a 2f 0a 09 70 75 62 6c 69  ion).. */..publi
2a00: 63 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 65 6d  c function isMem
2a10: 62 65 72 55 70 54 6f 44 61 74 65 28 24 69 64 2c  berUpToDate($id,
2a20: 20 24 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 29   $id_cotisation)
2a30: 0a 09 7b 0a 09 09 24 64 62 20 3d 20 44 42 3a 3a  ..{...$db = DB::
2a40: 67 65 74 49 6e 73 74 61 6e 63 65 28 29 3b 0a 09  getInstance();..
2a50: 09 72 65 74 75 72 6e 20 24 64 62 2d 3e 66 69 72  .return $db->fir
2a60: 73 74 28 27 53 45 4c 45 43 54 20 63 2e 2a 2c 0a  st('SELECT c.*,.
2a70: 09 09 09 43 41 53 45 20 57 48 45 4e 20 63 2e 64  ...CASE WHEN c.d
2a80: 75 72 65 65 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  uree IS NOT NULL
2a90: 20 54 48 45 4e 20 64 61 74 65 28 63 6d 2e 64 61   THEN date(cm.da
2aa0: 74 65 2c 20 5c 27 2b 5c 27 7c 7c 63 2e 64 75 72  te, \'+\'||c.dur
2ab0: 65 65 7c 7c 5c 27 20 64 61 79 73 5c 27 29 20 3e  ee||\' days\') >
2ac0: 3d 20 64 61 74 65 28 29 0a 09 09 09 57 48 45 4e  = date()....WHEN
2ad0: 20 63 2e 66 69 6e 20 49 53 20 4e 4f 54 20 4e 55   c.fin IS NOT NU
2ae0: 4c 4c 20 54 48 45 4e 20 28 63 6d 2e 69 64 20 49  LL THEN (cm.id I
2af0: 53 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 64  S NOT NULL AND d
2b00: 61 74 65 28 29 20 3c 3d 20 63 2e 66 69 6e 20 41  ate() <= c.fin A
2b10: 4e 44 20 64 61 74 65 28 29 20 3e 3d 20 63 2e 64  ND date() >= c.d
2b20: 65 62 75 74 29 0a 09 09 09 57 48 45 4e 20 63 6d  ebut)....WHEN cm
2b30: 2e 69 64 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20  .id IS NOT NULL 
2b40: 54 48 45 4e 20 31 20 45 4c 53 45 20 30 20 45 4e  THEN 1 ELSE 0 EN
2b50: 44 20 41 53 20 61 5f 6a 6f 75 72 2c 0a 09 09 09  D AS a_jour,....
2b60: 43 41 53 45 20 57 48 45 4e 20 63 2e 64 75 72 65  CASE WHEN c.dure
2b70: 65 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 54 48  e IS NOT NULL TH
2b80: 45 4e 20 64 61 74 65 28 63 6d 2e 64 61 74 65 2c  EN date(cm.date,
2b90: 20 5c 27 2b 5c 27 7c 7c 63 2e 64 75 72 65 65 7c   \'+\'||c.duree|
2ba0: 7c 5c 27 20 64 61 79 73 5c 27 29 0a 09 09 09 57  |\' days\')....W
2bb0: 48 45 4e 20 63 2e 66 69 6e 20 49 53 20 4e 4f 54  HEN c.fin IS NOT
2bc0: 20 4e 55 4c 4c 20 54 48 45 4e 20 63 2e 66 69 6e   NULL THEN c.fin
2bd0: 20 45 4c 53 45 20 31 20 45 4e 44 20 41 53 20 65   ELSE 1 END AS e
2be0: 78 70 69 72 61 74 69 6f 6e 0a 09 09 09 46 52 4f  xpiration....FRO
2bf0: 4d 20 63 6f 74 69 73 61 74 69 6f 6e 73 20 41 53  M cotisations AS
2c00: 20 63 20 0a 09 09 09 09 4c 45 46 54 20 4a 4f 49   c .....LEFT JOI
2c10: 4e 20 63 6f 74 69 73 61 74 69 6f 6e 73 5f 6d 65  N cotisations_me
2c20: 6d 62 72 65 73 20 41 53 20 63 6d 20 4f 4e 20 63  mbres AS cm ON c
2c30: 6d 2e 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 20  m.id_cotisation 
2c40: 3d 20 63 2e 69 64 20 41 4e 44 20 63 6d 2e 69 64  = c.id AND cm.id
2c50: 5f 6d 65 6d 62 72 65 20 3d 20 3f 0a 09 09 09 57  _membre = ?....W
2c60: 48 45 52 45 20 63 2e 69 64 20 3d 20 3f 20 4f 52  HERE c.id = ? OR
2c70: 44 45 52 20 42 59 20 63 6d 2e 64 61 74 65 20 44  DER BY cm.date D
2c80: 45 53 43 3b 27 2c 0a 09 09 09 28 69 6e 74 29 24  ESC;',....(int)$
2c90: 69 64 2c 20 28 69 6e 74 29 24 69 64 5f 63 6f 74  id, (int)$id_cot
2ca0: 69 73 61 74 69 6f 6e 29 3b 0a 09 7d 0a 0a 09 70  isation);..}...p
2cb0: 75 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 63  ublic function c
2cc0: 6f 75 6e 74 46 6f 72 4d 65 6d 62 65 72 28 24 69  ountForMember($i
2cd0: 64 29 0a 09 7b 0a 09 09 24 64 62 20 3d 20 44 42  d)..{...$db = DB
2ce0: 3a 3a 67 65 74 49 6e 73 74 61 6e 63 65 28 29 3b  ::getInstance();
2cf0: 0a 09 09 72 65 74 75 72 6e 20 24 64 62 2d 3e 66  ...return $db->f
2d00: 69 72 73 74 43 6f 6c 75 6d 6e 28 27 53 45 4c 45  irstColumn('SELE
2d10: 43 54 20 43 4f 55 4e 54 28 44 49 53 54 49 4e 43  CT COUNT(DISTINC
2d20: 54 20 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 29  T id_cotisation)
2d30: 20 46 52 4f 4d 20 63 6f 74 69 73 61 74 69 6f 6e   FROM cotisation
2d40: 73 5f 6d 65 6d 62 72 65 73 20 0a 09 09 09 57 48  s_membres ....WH
2d50: 45 52 45 20 69 64 5f 6d 65 6d 62 72 65 20 3d 20  ERE id_membre = 
2d60: 3f 3b 27 2c 20 28 69 6e 74 29 24 69 64 29 3b 0a  ?;', (int)$id);.
2d70: 09 7d 0a 7d                                      .}.}