Artifact 0eef95049b304e3acb38eb8988a246b62c357860:


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 21 65 6d 70 74 79 28  ;....if (!empty(
0370: 24 64 61 74 61 5b 27 6e 75 6d 65 72 6f 5f 6d 65  $data['numero_me
0380: 6d 62 72 65 27 5d 29 29 0a 09 09 7b 0a 09 09 09  mbre']))...{....
0390: 24 64 61 74 61 5b 27 69 64 5f 6d 65 6d 62 72 65  $data['id_membre
03a0: 27 5d 20 3d 20 28 6e 65 77 20 4d 65 6d 62 72 65  '] = (new Membre
03b0: 73 29 2d 3e 67 65 74 49 44 57 69 74 68 4e 75 6d  s)->getIDWithNum
03c0: 65 72 6f 28 24 64 61 74 61 5b 27 6e 75 6d 65 72  ero($data['numer
03d0: 6f 5f 6d 65 6d 62 72 65 27 5d 29 3b 0a 09 09 09  o_membre']);....
03e0: 75 6e 73 65 74 28 24 64 61 74 61 5b 27 6e 75 6d  unset($data['num
03f0: 65 72 6f 5f 6d 65 6d 62 72 65 27 5d 29 3b 0a 09  ero_membre']);..
0400: 09 7d 0a 0a 09 09 69 66 20 28 65 6d 70 74 79 28  .}....if (empty(
0410: 24 64 61 74 61 5b 27 69 64 5f 6d 65 6d 62 72 65  $data['id_membre
0420: 27 5d 29 20 0a 09 09 09 7c 7c 20 21 24 64 62 2d  ']) ....|| !$db-
0430: 3e 66 69 72 73 74 43 6f 6c 75 6d 6e 28 27 53 45  >firstColumn('SE
0440: 4c 45 43 54 20 31 20 46 52 4f 4d 20 6d 65 6d 62  LECT 1 FROM memb
0450: 72 65 73 20 57 48 45 52 45 20 69 64 20 3d 20 3f  res WHERE id = ?
0460: 3b 27 2c 20 28 69 6e 74 29 20 24 64 61 74 61 5b  ;', (int) $data[
0470: 27 69 64 5f 6d 65 6d 62 72 65 27 5d 29 29 0a 09  'id_membre']))..
0480: 09 7b 0a 09 09 09 74 68 72 6f 77 20 6e 65 77 20  .{....throw new 
0490: 55 73 65 72 45 78 63 65 70 74 69 6f 6e 28 27 4d  UserException('M
04a0: 65 6d 62 72 65 20 69 6e 63 6f 6e 6e 75 20 6f 75  embre inconnu ou
04b0: 20 69 6e 76 61 6c 69 64 65 2e 27 29 3b 0a 09 09   invalide.');...
04c0: 7d 0a 0a 09 09 24 64 61 74 61 5b 27 69 64 5f 6d  }....$data['id_m
04d0: 65 6d 62 72 65 27 5d 20 3d 20 28 69 6e 74 29 20  embre'] = (int) 
04e0: 24 64 61 74 61 5b 27 69 64 5f 6d 65 6d 62 72 65  $data['id_membre
04f0: 27 5d 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a  '];..}.../**.. *
0500: 20 45 6e 72 65 67 69 73 74 72 65 72 20 75 6e 20   Enregistrer un 
0510: c3 a9 76 c3 a9 6e 65 6d 65 6e 74 20 64 65 20 63  ..v..nement de c
0520: 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20 40 70  otisation.. * @p
0530: 61 72 61 6d 20 61 72 72 61 79 20 24 64 61 74 61  aram array $data
0540: 20 54 61 62 6c 65 61 75 20 64 65 73 20 63 68 61   Tableau des cha
0550: 6d 70 73 20 c3 a0 20 69 6e 73 c3 a9 72 65 72 0a  mps .. ins..rer.
0560: 09 20 2a 20 40 72 65 74 75 72 6e 20 69 6e 74 65  . * @return inte
0570: 67 65 72 20 49 44 20 64 65 20 6c 27 c3 a9 76 c3  ger ID de l'..v.
0580: a9 6e 65 6d 65 6e 74 20 63 72 c3 a9 c3 a9 0a 09  .nement cr......
0590: 20 2a 2f 0a 09 70 75 62 6c 69 63 20 66 75 6e 63   */..public func
05a0: 74 69 6f 6e 20 61 64 64 28 24 64 61 74 61 2c 20  tion add($data, 
05b0: 61 72 72 61 79 20 24 64 61 74 61 5f 63 6f 6d 70  array $data_comp
05c0: 74 61 29 0a 09 7b 0a 09 09 24 64 62 20 3d 20 44  ta)..{...$db = D
05d0: 42 3a 3a 67 65 74 49 6e 73 74 61 6e 63 65 28 29  B::getInstance()
05e0: 3b 0a 0a 09 09 24 63 6f 20 3d 20 24 64 62 2d 3e  ;....$co = $db->
05f0: 66 69 72 73 74 28 27 53 45 4c 45 43 54 20 2a 20  first('SELECT * 
0600: 46 52 4f 4d 20 63 6f 74 69 73 61 74 69 6f 6e 73  FROM cotisations
0610: 20 57 48 45 52 45 20 69 64 20 3d 20 3f 3b 27 2c   WHERE id = ?;',
0620: 20 28 69 6e 74 29 24 64 61 74 61 5b 27 69 64 5f   (int)$data['id_
0630: 63 6f 74 69 73 61 74 69 6f 6e 27 5d 29 3b 0a 0a  cotisation']);..
0640: 09 09 24 74 68 69 73 2d 3e 5f 63 68 65 63 6b 46  ..$this->_checkF
0650: 69 65 6c 64 73 28 24 64 61 74 61 29 3b 0a 0a 09  ields($data);...
0660: 09 24 63 68 65 63 6b 20 3d 20 24 64 62 2d 3e 66  .$check = $db->f
0670: 69 72 73 74 43 6f 6c 75 6d 6e 28 27 53 45 4c 45  irstColumn('SELE
0680: 43 54 20 31 20 46 52 4f 4d 20 63 6f 74 69 73 61  CT 1 FROM cotisa
0690: 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 20 0a 09  tions_membres ..
06a0: 09 09 57 48 45 52 45 20 69 64 5f 63 6f 74 69 73  ..WHERE id_cotis
06b0: 61 74 69 6f 6e 20 3d 20 3f 20 41 4e 44 20 69 64  ation = ? AND id
06c0: 5f 6d 65 6d 62 72 65 20 3d 20 3f 20 41 4e 44 20  _membre = ? AND 
06d0: 64 61 74 65 20 3d 20 3f 3b 27 2c 20 0a 09 09 09  date = ?;', ....
06e0: 28 69 6e 74 29 24 64 61 74 61 5b 27 69 64 5f 63  (int)$data['id_c
06f0: 6f 74 69 73 61 74 69 6f 6e 27 5d 2c 20 28 69 6e  otisation'], (in
0700: 74 29 24 64 61 74 61 5b 27 69 64 5f 6d 65 6d 62  t)$data['id_memb
0710: 72 65 27 5d 2c 20 24 64 61 74 61 5b 27 64 61 74  re'], $data['dat
0720: 65 27 5d 29 3b 0a 0a 09 09 69 66 20 28 24 63 68  e']);....if ($ch
0730: 65 63 6b 29 0a 09 09 7b 0a 09 09 09 74 68 72 6f  eck)...{....thro
0740: 77 20 6e 65 77 20 55 73 65 72 45 78 63 65 70 74  w new UserExcept
0750: 69 6f 6e 28 27 43 65 74 74 65 20 63 6f 74 69 73  ion('Cette cotis
0760: 61 74 69 6f 6e 20 61 20 64 c3 a9 6a c3 a0 20 c3  ation a d..j.. .
0770: a9 74 c3 a9 20 65 6e 72 65 67 69 73 74 72 c3 a9  .t.. enregistr..
0780: 65 20 70 6f 75 72 20 63 65 20 6a 6f 75 72 2d 63  e pour ce jour-c
0790: 69 20 65 74 20 63 65 20 6d 65 6d 62 72 65 2d 63  i et ce membre-c
07a0: 69 2e 27 29 3b 0a 09 09 7d 0a 0a 09 09 24 64 62  i.');...}....$db
07b0: 2d 3e 62 65 67 69 6e 28 29 3b 0a 0a 09 09 24 64  ->begin();....$d
07c0: 62 2d 3e 69 6e 73 65 72 74 28 27 63 6f 74 69 73  b->insert('cotis
07d0: 61 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 27 2c  ations_membres',
07e0: 20 5b 0a 09 09 09 27 64 61 74 65 27 09 09 09 09   [....'date'....
07f0: 3d 3e 09 24 64 61 74 61 5b 27 64 61 74 65 27 5d  =>.$data['date']
0800: 2c 0a 09 09 09 27 69 64 5f 63 6f 74 69 73 61 74  ,....'id_cotisat
0810: 69 6f 6e 27 09 09 3d 3e 09 24 64 61 74 61 5b 27  ion'..=>.$data['
0820: 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 27 5d 2c  id_cotisation'],
0830: 0a 09 09 09 27 69 64 5f 6d 65 6d 62 72 65 27 09  ....'id_membre'.
0840: 09 09 3d 3e 09 24 64 61 74 61 5b 27 69 64 5f 6d  ..=>.$data['id_m
0850: 65 6d 62 72 65 27 5d 2c 0a 09 09 09 5d 29 3b 0a  embre'],....]);.
0860: 0a 09 09 24 69 64 20 3d 20 24 64 62 2d 3e 6c 61  ...$id = $db->la
0870: 73 74 49 6e 73 65 72 74 52 6f 77 49 64 28 29 3b  stInsertRowId();
0880: 0a 0a 09 09 69 66 20 28 24 63 6f 2d 3e 69 64 5f  ....if ($co->id_
0890: 63 61 74 65 67 6f 72 69 65 5f 63 6f 6d 70 74 61  categorie_compta
08a0: 29 0a 09 09 7b 0a 09 09 09 24 6d 65 6d 62 72 65  )...{....$membre
08b0: 20 3d 20 28 6e 65 77 20 4d 65 6d 62 72 65 73 29   = (new Membres)
08c0: 2d 3e 67 65 74 4e 6f 6d 28 24 64 61 74 61 5b 27  ->getNom($data['
08d0: 69 64 5f 6d 65 6d 62 72 65 27 5d 29 3b 0a 0a 09  id_membre']);...
08e0: 09 09 74 72 79 20 7b 0a 09 09 09 09 24 64 61 74  ..try {.....$dat
08f0: 61 5f 63 6f 6d 70 74 61 20 3d 20 61 72 72 61 79  a_compta = array
0900: 5f 6d 65 72 67 65 28 24 64 61 74 61 5f 63 6f 6d  _merge($data_com
0910: 70 74 61 2c 20 5b 0a 09 09 09 09 09 27 69 64 5f  pta, [......'id_
0920: 63 61 74 65 67 6f 72 69 65 27 20 3d 3e 20 24 63  categorie' => $c
0930: 6f 2d 3e 69 64 5f 63 61 74 65 67 6f 72 69 65 5f  o->id_categorie_
0940: 63 6f 6d 70 74 61 2c 0a 09 09 09 09 09 27 6c 69  compta,......'li
0950: 62 65 6c 6c 65 27 20 20 20 20 20 20 3d 3e 20 73  belle'      => s
0960: 70 72 69 6e 74 66 28 27 25 73 20 2d 20 25 73 27  printf('%s - %s'
0970: 2c 20 24 63 6f 2d 3e 69 6e 74 69 74 75 6c 65 2c  , $co->intitule,
0980: 20 24 6d 65 6d 62 72 65 29 2c 0a 09 09 09 09 09   $membre),......
0990: 27 64 61 74 65 27 20 20 20 20 20 20 20 20 20 3d  'date'         =
09a0: 3e 20 24 64 61 74 61 5b 27 64 61 74 65 27 5d 2c  > $data['date'],
09b0: 0a 09 09 09 09 09 27 69 64 5f 61 75 74 65 75 72  ......'id_auteur
09c0: 27 20 20 20 20 3d 3e 20 24 64 61 74 61 5b 27 69  '    => $data['i
09d0: 64 5f 61 75 74 65 75 72 27 5d 2c 0a 09 09 09 09  d_auteur'],.....
09e0: 09 27 69 64 5f 6d 65 6d 62 72 65 27 20 20 20 20  .'id_membre'    
09f0: 3d 3e 20 24 64 61 74 61 5b 27 69 64 5f 6d 65 6d  => $data['id_mem
0a00: 62 72 65 27 5d 2c 0a 09 09 09 09 5d 29 3b 0a 0a  bre'],.....]);..
0a10: 09 09 09 09 24 69 64 5f 6f 70 65 72 61 74 69 6f  ....$id_operatio
0a20: 6e 20 3d 20 24 74 68 69 73 2d 3e 61 64 64 4f 70  n = $this->addOp
0a30: 65 72 61 74 69 6f 6e 43 6f 6d 70 74 61 28 24 69  erationCompta($i
0a40: 64 2c 20 24 64 61 74 61 5f 63 6f 6d 70 74 61 29  d, $data_compta)
0a50: 3b 0a 09 09 09 7d 0a 09 09 09 63 61 74 63 68 20  ;....}....catch 
0a60: 28 5c 45 78 63 65 70 74 69 6f 6e 20 24 65 29 0a  (\Exception $e).
0a70: 09 09 09 7b 0a 09 09 09 09 24 64 62 2d 3e 72 6f  ...{.....$db->ro
0a80: 6c 6c 62 61 63 6b 28 29 3b 0a 09 09 09 09 74 68  llback();.....th
0a90: 72 6f 77 20 24 65 3b 0a 09 09 09 7d 0a 09 09 7d  row $e;....}...}
0aa0: 0a 0a 09 09 24 64 62 2d 3e 63 6f 6d 6d 69 74 28  ....$db->commit(
0ab0: 29 3b 0a 0a 09 09 50 6c 75 67 69 6e 3a 3a 66 69  );....Plugin::fi
0ac0: 72 65 53 69 67 6e 61 6c 28 27 63 6f 74 69 73 61  reSignal('cotisa
0ad0: 74 69 6f 6e 2e 61 6a 6f 75 74 27 2c 20 61 72 72  tion.ajout', arr
0ae0: 61 79 5f 6d 65 72 67 65 28 5b 27 69 64 27 20 3d  ay_merge(['id' =
0af0: 3e 20 24 69 64 5d 2c 20 24 64 61 74 61 29 29 3b  > $id], $data));
0b00: 0a 0a 09 09 72 65 74 75 72 6e 20 24 64 61 74 61  ....return $data
0b10: 5b 27 69 64 5f 6d 65 6d 62 72 65 27 5d 3b 0a 09  ['id_membre'];..
0b20: 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 53 75 70 70  }.../**.. * Supp
0b30: 72 69 6d 65 72 20 75 6e 20 c3 a9 76 c3 a9 6e 65  rimer un ..v..ne
0b40: 6d 65 6e 74 20 64 65 20 63 6f 74 69 73 61 74 69  ment de cotisati
0b50: 6f 6e 0a 09 20 2a 20 40 70 61 72 61 6d 20 20 69  on.. * @param  i
0b60: 6e 74 65 67 65 72 20 24 69 64 20 49 44 20 64 65  nteger $id ID de
0b70: 20 6c 27 c3 a9 76 c3 a9 6e 65 6d 65 6e 74 20 c3   l'..v..nement .
0b80: a0 20 73 75 70 70 72 69 6d 65 72 0a 09 20 2a 20  . supprimer.. * 
0b90: 40 72 65 74 75 72 6e 20 69 6e 74 65 67 65 72 20  @return integer 
0ba0: 74 72 75 65 20 65 6e 20 63 61 73 20 64 65 20 73  true en cas de s
0bb0: 75 63 63 c3 a8 73 0a 09 20 2a 2f 0a 09 70 75 62  ucc..s.. */..pub
0bc0: 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 64 65 6c  lic function del
0bd0: 65 74 65 28 24 69 64 29 0a 09 7b 0a 09 09 24 64  ete($id)..{...$d
0be0: 62 20 3d 20 44 42 3a 3a 67 65 74 49 6e 73 74 61  b = DB::getInsta
0bf0: 6e 63 65 28 29 3b 0a 09 09 72 65 74 75 72 6e 20  nce();...return 
0c00: 24 64 62 2d 3e 64 65 6c 65 74 65 28 27 63 6f 74  $db->delete('cot
0c10: 69 73 61 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73  isations_membres
0c20: 27 2c 20 27 69 64 20 3d 20 27 20 2e 20 28 69 6e  ', 'id = ' . (in
0c30: 74 29 24 69 64 29 3b 0a 09 7d 0a 0a 09 70 75 62  t)$id);..}...pub
0c40: 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 67 65 74  lic function get
0c50: 28 24 69 64 29 0a 09 7b 0a 09 09 72 65 74 75 72  ($id)..{...retur
0c60: 6e 20 44 42 3a 3a 67 65 74 49 6e 73 74 61 6e 63  n DB::getInstanc
0c70: 65 28 29 2d 3e 66 69 72 73 74 28 27 53 45 4c 45  e()->first('SELE
0c80: 43 54 20 2a 20 46 52 4f 4d 20 63 6f 74 69 73 61  CT * FROM cotisa
0c90: 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 20 57 48  tions_membres WH
0ca0: 45 52 45 20 69 64 20 3d 20 3f 3b 27 2c 20 28 69  ERE id = ?;', (i
0cb0: 6e 74 29 24 69 64 29 3b 0a 09 7d 0a 0a 09 2f 2a  nt)$id);..}.../*
0cc0: 2a 0a 09 20 2a 20 52 65 6e 76 6f 69 65 20 75 6e  *.. * Renvoie un
0cd0: 65 20 6c 69 73 74 65 20 64 65 73 20 c3 a9 63 72  e liste des ..cr
0ce0: 69 74 75 72 65 73 20 63 6f 6d 70 74 61 62 6c 65  itures comptable
0cf0: 73 20 6c 69 c3 a9 65 73 20 c3 a0 20 75 6e 65 20  s li..es .. une 
0d00: 63 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20 40  cotisation.. * @
0d10: 70 61 72 61 6d 20 20 69 6e 74 20 24 69 64 20 4e  param  int $id N
0d20: 75 6d c3 a9 72 6f 20 64 65 20 6c 61 20 63 6f 74  um..ro de la cot
0d30: 69 73 61 74 69 6f 6e 20 6d 65 6d 62 72 65 0a 09  isation membre..
0d40: 20 2a 20 40 72 65 74 75 72 6e 20 61 72 72 61 79   * @return array
0d50: 20 4c 69 73 74 65 20 64 65 73 20 c3 a9 63 72 69   Liste des ..cri
0d60: 74 75 72 65 73 0a 09 20 2a 2f 0a 09 70 75 62 6c  tures.. */..publ
0d70: 69 63 20 66 75 6e 63 74 69 6f 6e 20 6c 69 73 74  ic function list
0d80: 4f 70 65 72 61 74 69 6f 6e 73 43 6f 6d 70 74 61  OperationsCompta
0d90: 28 24 69 64 29 0a 09 7b 0a 09 09 72 65 74 75 72  ($id)..{...retur
0da0: 6e 20 44 42 3a 3a 67 65 74 49 6e 73 74 61 6e 63  n DB::getInstanc
0db0: 65 28 29 2d 3e 67 65 74 28 27 53 45 4c 45 43 54  e()->get('SELECT
0dc0: 20 2a 20 46 52 4f 4d 20 63 6f 6d 70 74 61 5f 6a   * FROM compta_j
0dd0: 6f 75 72 6e 61 6c 0a 09 09 09 57 48 45 52 45 20  ournal....WHERE 
0de0: 69 64 20 49 4e 20 28 53 45 4c 45 43 54 20 69 64  id IN (SELECT id
0df0: 5f 6f 70 65 72 61 74 69 6f 6e 20 46 52 4f 4d 20  _operation FROM 
0e00: 6d 65 6d 62 72 65 73 5f 6f 70 65 72 61 74 69 6f  membres_operatio
0e10: 6e 73 0a 09 09 09 09 57 48 45 52 45 20 69 64 5f  ns.....WHERE id_
0e20: 63 6f 74 69 73 61 74 69 6f 6e 20 3d 20 3f 29 3b  cotisation = ?);
0e30: 27 2c 20 28 69 6e 74 29 24 69 64 29 3b 0a 09 7d  ', (int)$id);..}
0e40: 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 43 6f 6d 70 74  .../**.. * Compt
0e50: 65 20 6c 65 73 20 6f 70 c3 a9 72 61 74 69 6f 6e  e les op..ration
0e60: 73 20 63 6f 6d 70 74 61 62 6c 65 73 20 6c 69 c3  s comptables li.
0e70: a9 65 73 20 c3 a0 20 63 65 74 74 65 20 63 6f 74  .es .. cette cot
0e80: 69 73 61 74 69 6f 6e 0a 09 20 2a 2f 0a 09 70 75  isation.. */..pu
0e90: 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 63 6f  blic function co
0ea0: 75 6e 74 4f 70 65 72 61 74 69 6f 6e 73 43 6f 6d  untOperationsCom
0eb0: 70 74 61 28 24 69 64 29 0a 09 7b 0a 09 09 72 65  pta($id)..{...re
0ec0: 74 75 72 6e 20 44 42 3a 3a 67 65 74 49 6e 73 74  turn DB::getInst
0ed0: 61 6e 63 65 28 29 2d 3e 66 69 72 73 74 43 6f 6c  ance()->firstCol
0ee0: 75 6d 6e 28 27 53 45 4c 45 43 54 20 43 4f 55 4e  umn('SELECT COUN
0ef0: 54 28 2a 29 20 46 52 4f 4d 20 6d 65 6d 62 72 65  T(*) FROM membre
0f00: 73 5f 6f 70 65 72 61 74 69 6f 6e 73 20 57 48 45  s_operations WHE
0f10: 52 45 20 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e  RE id_cotisation
0f20: 20 3d 20 3f 3b 27 2c 20 28 69 6e 74 29 24 69 64   = ?;', (int)$id
0f30: 29 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20  );..}.../**.. * 
0f40: 41 6a 6f 75 74 65 72 20 75 6e 65 20 c3 a9 63 72  Ajouter une ..cr
0f50: 69 74 75 72 65 20 63 6f 6d 70 74 61 62 6c 65 20  iture comptable 
0f60: 70 6f 75 72 20 75 6e 20 70 61 69 65 6d 65 6d 65  pour un paiememe
0f70: 6e 74 20 6d 65 6d 62 72 65 0a 09 20 2a 20 40 70  nt membre.. * @p
0f80: 61 72 61 6d 20 69 6e 74 20 24 69 64 20 4e 75 6d  aram int $id Num
0f90: c3 a9 72 6f 20 64 65 20 6c 61 20 63 6f 74 69 73  ..ro de la cotis
0fa0: 61 74 69 6f 6e 20 6d 65 6d 62 72 65 0a 09 20 2a  ation membre.. *
0fb0: 20 40 70 61 72 61 6d 20 61 72 72 61 79 20 24 64   @param array $d
0fc0: 61 74 61 20 44 6f 6e 6e c3 a9 65 73 0a 09 20 2a  ata Donn..es.. *
0fd0: 2f 0a 09 70 75 62 6c 69 63 20 66 75 6e 63 74 69  /..public functi
0fe0: 6f 6e 20 61 64 64 4f 70 65 72 61 74 69 6f 6e 43  on addOperationC
0ff0: 6f 6d 70 74 61 28 24 69 64 2c 20 24 64 61 74 61  ompta($id, $data
1000: 29 0a 09 7b 0a 09 09 24 6a 6f 75 72 6e 61 6c 20  )..{...$journal 
1010: 3d 20 6e 65 77 20 5c 47 61 72 72 61 64 69 6e 5c  = new \Garradin\
1020: 43 6f 6d 70 74 61 5c 4a 6f 75 72 6e 61 6c 3b 0a  Compta\Journal;.
1030: 09 09 24 64 62 20 3d 20 44 42 3a 3a 67 65 74 49  ..$db = DB::getI
1040: 6e 73 74 61 6e 63 65 28 29 3b 0a 0a 09 09 69 66  nstance();....if
1050: 20 28 21 69 73 73 65 74 28 24 64 61 74 61 5b 27   (!isset($data['
1060: 6d 6f 79 65 6e 5f 70 61 69 65 6d 65 6e 74 27 5d  moyen_paiement']
1070: 29 20 7c 7c 20 74 72 69 6d 28 24 64 61 74 61 5b  ) || trim($data[
1080: 27 6d 6f 79 65 6e 5f 70 61 69 65 6d 65 6e 74 27  'moyen_paiement'
1090: 5d 29 20 3d 3d 3d 20 27 27 29 0a 09 09 7b 0a 09  ]) === '')...{..
10a0: 09 09 74 68 72 6f 77 20 6e 65 77 20 55 73 65 72  ..throw new User
10b0: 45 78 63 65 70 74 69 6f 6e 28 27 4d 6f 79 65 6e  Exception('Moyen
10c0: 20 64 65 20 70 61 69 65 6d 65 6e 74 20 69 6e 63   de paiement inc
10d0: 6f 6e 6e 75 20 6f 75 20 69 6e 76 61 6c 69 64 65  onnu ou invalide
10e0: 2e 27 29 3b 0a 09 09 7d 0a 0a 09 09 69 66 20 28  .');...}....if (
10f0: 24 64 61 74 61 5b 27 6d 6f 79 65 6e 5f 70 61 69  $data['moyen_pai
1100: 65 6d 65 6e 74 27 5d 20 21 3d 20 27 45 53 27 29  ement'] != 'ES')
1110: 0a 09 09 7b 0a 09 09 09 69 66 20 28 74 72 69 6d  ...{....if (trim
1120: 28 24 64 61 74 61 5b 27 62 61 6e 71 75 65 27 5d  ($data['banque']
1130: 29 20 3d 3d 20 27 27 29 0a 09 09 09 7b 0a 09 09  ) == '')....{...
1140: 09 09 74 68 72 6f 77 20 6e 65 77 20 55 73 65 72  ..throw new User
1150: 45 78 63 65 70 74 69 6f 6e 28 27 4c 65 20 63 6f  Exception('Le co
1160: 6d 70 74 65 20 62 61 6e 63 61 69 72 65 20 63 68  mpte bancaire ch
1170: 6f 69 73 69 20 65 73 74 20 69 6e 76 61 6c 69 64  oisi est invalid
1180: 65 2e 27 29 3b 0a 09 09 09 7d 0a 0a 09 09 09 69  e.');....}.....i
1190: 66 20 28 21 24 64 62 2d 3e 66 69 72 73 74 43 6f  f (!$db->firstCo
11a0: 6c 75 6d 6e 28 27 53 45 4c 45 43 54 20 31 20 46  lumn('SELECT 1 F
11b0: 52 4f 4d 20 63 6f 6d 70 74 61 5f 63 6f 6d 70 74  ROM compta_compt
11c0: 65 73 5f 62 61 6e 63 61 69 72 65 73 20 57 48 45  es_bancaires WHE
11d0: 52 45 20 69 64 20 3d 20 3f 3b 27 2c 20 24 64 61  RE id = ?;', $da
11e0: 74 61 5b 27 62 61 6e 71 75 65 27 5d 29 29 0a 09  ta['banque']))..
11f0: 09 09 7b 0a 09 09 09 09 74 68 72 6f 77 20 6e 65  ..{.....throw ne
1200: 77 20 55 73 65 72 45 78 63 65 70 74 69 6f 6e 28  w UserException(
1210: 27 4c 65 20 63 6f 6d 70 74 65 20 62 61 6e 63 61  'Le compte banca
1220: 69 72 65 20 63 68 6f 69 73 69 20 6e 5c 27 65 78  ire choisi n\'ex
1230: 69 73 74 65 20 70 61 73 2e 27 29 3b 0a 09 09 09  iste pas.');....
1240: 7d 0a 09 09 7d 0a 0a 09 09 69 66 20 28 21 69 73  }...}....if (!is
1250: 73 65 74 28 24 64 61 74 61 5b 27 6d 6f 6e 74 61  set($data['monta
1260: 6e 74 27 5d 29 20 7c 7c 20 21 69 73 5f 6e 75 6d  nt']) || !is_num
1270: 65 72 69 63 28 24 64 61 74 61 5b 27 6d 6f 6e 74  eric($data['mont
1280: 61 6e 74 27 5d 29 20 7c 7c 20 24 64 61 74 61 5b  ant']) || $data[
1290: 27 6d 6f 6e 74 61 6e 74 27 5d 20 3c 20 30 29 0a  'montant'] < 0).
12a0: 09 09 7b 0a 09 09 09 74 68 72 6f 77 20 6e 65 77  ..{....throw new
12b0: 20 55 73 65 72 45 78 63 65 70 74 69 6f 6e 28 27   UserException('
12c0: 4c 65 20 6d 6f 6e 74 61 6e 74 20 69 6e 64 69 71  Le montant indiq
12d0: 75 c3 a9 20 6e 5c 27 65 73 74 20 70 61 73 20 75  u.. n\'est pas u
12e0: 6e 20 6e 6f 6d 62 72 65 20 76 61 6c 69 64 65 20  n nombre valide 
12f0: 3a 20 64 6f 69 74 20 c3 aa 74 72 65 20 73 75 70  : doit ..tre sup
1300: c3 a9 72 69 65 75 72 20 6f 75 20 c3 a9 67 61 6c  ..rieur ou ..gal
1310: 20 c3 a0 20 7a c3 a9 72 6f 2e 27 29 3b 0a 09 09   .. z..ro.');...
1320: 7d 0a 0a 09 09 69 66 20 28 21 69 73 73 65 74 28  }....if (!isset(
1330: 24 64 61 74 61 5b 27 6c 69 62 65 6c 6c 65 27 5d  $data['libelle']
1340: 29 20 7c 7c 20 74 72 69 6d 28 24 64 61 74 61 5b  ) || trim($data[
1350: 27 6c 69 62 65 6c 6c 65 27 5d 29 20 3d 3d 20 27  'libelle']) == '
1360: 27 29 0a 09 09 7b 0a 09 09 09 74 68 72 6f 77 20  ')...{....throw 
1370: 6e 65 77 20 55 73 65 72 45 78 63 65 70 74 69 6f  new UserExceptio
1380: 6e 28 27 4c 65 20 6c 69 62 65 6c 6c c3 a9 20 6e  n('Le libell.. n
1390: 65 20 70 65 75 74 20 72 65 73 74 65 72 20 76 69  e peut rester vi
13a0: 64 65 2e 27 29 3b 0a 09 09 7d 0a 0a 09 09 24 64  de.');...}....$d
13b0: 61 74 61 5b 27 6c 69 62 65 6c 6c 65 27 5d 20 3d  ata['libelle'] =
13c0: 20 74 72 69 6d 28 24 64 61 74 61 5b 27 6c 69 62   trim($data['lib
13d0: 65 6c 6c 65 27 5d 29 3b 0a 0a 09 09 69 66 20 28  elle']);....if (
13e0: 21 69 73 73 65 74 28 24 64 61 74 61 5b 27 6d 6f  !isset($data['mo
13f0: 6e 74 61 6e 74 27 5d 29 20 7c 7c 20 21 69 73 5f  ntant']) || !is_
1400: 6e 75 6d 65 72 69 63 28 24 64 61 74 61 5b 27 6d  numeric($data['m
1410: 6f 6e 74 61 6e 74 27 5d 29 20 7c 7c 20 28 66 6c  ontant']) || (fl
1420: 6f 61 74 29 24 64 61 74 61 5b 27 6d 6f 6e 74 61  oat)$data['monta
1430: 6e 74 27 5d 20 3c 20 30 29 0a 09 09 7b 0a 09 09  nt'] < 0)...{...
1440: 09 74 68 72 6f 77 20 6e 65 77 20 55 73 65 72 45  .throw new UserE
1450: 78 63 65 70 74 69 6f 6e 28 27 4c 65 20 6d 6f 6e  xception('Le mon
1460: 74 61 6e 74 20 64 6f 69 74 20 c3 aa 74 72 65 20  tant doit ..tre 
1470: 75 6e 20 6e 6f 6d 62 72 65 20 70 6f 73 69 74 69  un nombre positi
1480: 66 20 65 74 20 76 61 6c 69 64 65 2e 27 29 3b 0a  f et valide.');.
1490: 09 09 7d 0a 0a 09 09 24 64 61 74 61 5b 27 6d 6f  ..}....$data['mo
14a0: 6e 74 61 6e 74 27 5d 20 3d 20 28 66 6c 6f 61 74  ntant'] = (float
14b0: 29 20 24 64 61 74 61 5b 27 6d 6f 6e 74 61 6e 74  ) $data['montant
14c0: 27 5d 3b 0a 0a 09 09 69 66 20 28 21 65 6d 70 74  '];....if (!empt
14d0: 79 28 24 64 61 74 61 5b 27 61 5f 65 6e 63 61 69  y($data['a_encai
14e0: 73 73 65 72 27 5d 29 20 26 26 20 28 24 64 61 74  sser']) && ($dat
14f0: 61 5b 27 6d 6f 79 65 6e 5f 70 61 69 65 6d 65 6e  a['moyen_paiemen
1500: 74 27 5d 20 3d 3d 20 27 43 48 27 20 7c 7c 20 24  t'] == 'CH' || $
1510: 64 61 74 61 5b 27 6d 6f 79 65 6e 5f 70 61 69 65  data['moyen_paie
1520: 6d 65 6e 74 27 5d 20 3d 3d 20 27 43 42 27 29 29  ment'] == 'CB'))
1530: 0a 09 09 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ...{.           
1540: 20 24 64 65 62 69 74 20 3d 20 24 64 61 74 61 5b   $debit = $data[
1550: 27 6d 6f 79 65 6e 5f 70 61 69 65 6d 65 6e 74 27  'moyen_paiement'
1560: 5d 20 3d 3d 20 27 43 48 27 20 0a 20 20 20 20 20  ] == 'CH' .     
1570: 20 20 20 20 20 20 20 20 20 20 20 3f 20 43 6f 6d             ? Com
1580: 70 74 65 73 3a 3a 43 48 45 51 55 45 5f 41 5f 45  ptes::CHEQUE_A_E
1590: 4e 43 41 49 53 53 45 52 0a 20 20 20 20 20 20 20  NCAISSER.       
15a0: 20 20 20 20 20 20 20 20 20 3a 20 43 6f 6d 70 74           : Compt
15b0: 65 73 3a 3a 43 41 52 54 45 5f 41 5f 45 4e 43 41  es::CARTE_A_ENCA
15c0: 49 53 53 45 52 3b 0a 09 09 7d 0a 09 09 65 6c 73  ISSER;...}...els
15d0: 65 69 66 20 28 24 64 61 74 61 5b 27 6d 6f 79 65  eif ($data['moye
15e0: 6e 5f 70 61 69 65 6d 65 6e 74 27 5d 20 21 3d 20  n_paiement'] != 
15f0: 27 45 53 27 29 0a 09 09 7b 0a 09 09 09 24 64 65  'ES')...{....$de
1600: 62 69 74 20 3d 20 24 64 61 74 61 5b 27 62 61 6e  bit = $data['ban
1610: 71 75 65 27 5d 3b 0a 09 09 7d 0a 09 09 65 6c 73  que'];...}...els
1620: 65 0a 09 09 7b 0a 09 09 09 24 64 65 62 69 74 20  e...{....$debit 
1630: 3d 20 5c 47 61 72 72 61 64 69 6e 5c 43 6f 6d 70  = \Garradin\Comp
1640: 74 61 5c 43 6f 6d 70 74 65 73 3a 3a 43 41 49 53  ta\Comptes::CAIS
1650: 53 45 3b 0a 09 09 7d 0a 0a 09 09 24 63 72 65 64  SE;...}....$cred
1660: 69 74 20 3d 20 24 64 62 2d 3e 66 69 72 73 74 43  it = $db->firstC
1670: 6f 6c 75 6d 6e 28 27 53 45 4c 45 43 54 20 63 6f  olumn('SELECT co
1680: 6d 70 74 65 20 46 52 4f 4d 20 63 6f 6d 70 74 61  mpte FROM compta
1690: 5f 63 61 74 65 67 6f 72 69 65 73 20 57 48 45 52  _categories WHER
16a0: 45 20 69 64 20 3d 20 3f 3b 27 2c 20 0a 09 09 09  E id = ?;', ....
16b0: 24 64 61 74 61 5b 27 69 64 5f 63 61 74 65 67 6f  $data['id_catego
16c0: 72 69 65 27 5d 29 3b 0a 0a 09 09 24 69 64 5f 6f  rie']);....$id_o
16d0: 70 65 72 61 74 69 6f 6e 20 3d 20 24 6a 6f 75 72  peration = $jour
16e0: 6e 61 6c 2d 3e 61 64 64 28 5b 0a 09 09 09 27 6c  nal->add([....'l
16f0: 69 62 65 6c 6c 65 27 20 20 20 20 20 20 20 20 3d  ibelle'        =
1700: 3e 20 24 64 61 74 61 5b 27 6c 69 62 65 6c 6c 65  > $data['libelle
1710: 27 5d 2c 0a 09 09 09 27 6d 6f 6e 74 61 6e 74 27  '],....'montant'
1720: 20 20 20 20 20 20 20 20 3d 3e 20 24 64 61 74 61          => $data
1730: 5b 27 6d 6f 6e 74 61 6e 74 27 5d 2c 0a 09 09 09  ['montant'],....
1740: 27 64 61 74 65 27 20 20 20 20 20 20 20 20 20 20  'date'          
1750: 20 3d 3e 20 24 64 61 74 61 5b 27 64 61 74 65 27   => $data['date'
1760: 5d 2c 0a 09 09 09 27 6d 6f 79 65 6e 5f 70 61 69  ],....'moyen_pai
1770: 65 6d 65 6e 74 27 20 3d 3e 20 24 64 61 74 61 5b  ement' => $data[
1780: 27 6d 6f 79 65 6e 5f 70 61 69 65 6d 65 6e 74 27  'moyen_paiement'
1790: 5d 2c 0a 09 09 09 27 6e 75 6d 65 72 6f 5f 63 68  ],....'numero_ch
17a0: 65 71 75 65 27 20 20 3d 3e 20 69 73 73 65 74 28  eque'  => isset(
17b0: 24 64 61 74 61 5b 27 6e 75 6d 65 72 6f 5f 63 68  $data['numero_ch
17c0: 65 71 75 65 27 5d 29 20 3f 20 24 64 61 74 61 5b  eque']) ? $data[
17d0: 27 6e 75 6d 65 72 6f 5f 63 68 65 71 75 65 27 5d  'numero_cheque']
17e0: 20 3a 20 6e 75 6c 6c 2c 0a 09 09 09 27 63 6f 6d   : null,....'com
17f0: 70 74 65 5f 64 65 62 69 74 27 20 20 20 3d 3e 20  pte_debit'   => 
1800: 24 64 65 62 69 74 2c 0a 09 09 09 27 63 6f 6d 70  $debit,....'comp
1810: 74 65 5f 63 72 65 64 69 74 27 20 20 3d 3e 20 24  te_credit'  => $
1820: 63 72 65 64 69 74 2c 0a 09 09 09 27 69 64 5f 63  credit,....'id_c
1830: 61 74 65 67 6f 72 69 65 27 20 20 20 3d 3e 20 28  ategorie'   => (
1840: 69 6e 74 29 24 64 61 74 61 5b 27 69 64 5f 63 61  int)$data['id_ca
1850: 74 65 67 6f 72 69 65 27 5d 2c 0a 09 09 09 27 69  tegorie'],....'i
1860: 64 5f 61 75 74 65 75 72 27 20 20 20 20 20 20 3d  d_auteur'      =
1870: 3e 20 28 69 6e 74 29 24 64 61 74 61 5b 27 69 64  > (int)$data['id
1880: 5f 61 75 74 65 75 72 27 5d 2c 0a 09 09 09 27 72  _auteur'],....'r
1890: 65 6d 61 72 71 75 65 73 27 20 20 20 20 20 20 3d  emarques'      =
18a0: 3e 20 69 73 73 65 74 28 24 64 61 74 61 5b 27 72  > isset($data['r
18b0: 65 6d 61 72 71 75 65 73 27 5d 29 20 3f 20 24 64  emarques']) ? $d
18c0: 61 74 61 5b 27 72 65 6d 61 72 71 75 65 73 27 5d  ata['remarques']
18d0: 20 3a 20 6e 75 6c 6c 2c 0a 09 09 09 27 6e 75 6d   : null,....'num
18e0: 65 72 6f 5f 70 69 65 63 65 27 20 20 20 3d 3e 20  ero_piece'   => 
18f0: 69 73 73 65 74 28 24 64 61 74 61 5b 27 6e 75 6d  isset($data['num
1900: 65 72 6f 5f 70 69 65 63 65 27 5d 29 20 3f 20 24  ero_piece']) ? $
1910: 64 61 74 61 5b 27 6e 75 6d 65 72 6f 5f 70 69 65  data['numero_pie
1920: 63 65 27 5d 20 3a 20 6e 75 6c 6c 2c 0a 09 09 5d  ce'] : null,...]
1930: 29 3b 0a 0a 09 09 24 64 62 2d 3e 69 6e 73 65 72  );....$db->inser
1940: 74 28 27 6d 65 6d 62 72 65 73 5f 6f 70 65 72 61  t('membres_opera
1950: 74 69 6f 6e 73 27 2c 20 5b 0a 09 09 09 27 69 64  tions', [....'id
1960: 5f 6f 70 65 72 61 74 69 6f 6e 27 20 20 3d 3e 20  _operation'  => 
1970: 24 69 64 5f 6f 70 65 72 61 74 69 6f 6e 2c 0a 09  $id_operation,..
1980: 09 09 27 69 64 5f 6d 65 6d 62 72 65 27 20 20 20  ..'id_membre'   
1990: 20 20 3d 3e 20 24 64 61 74 61 5b 27 69 64 5f 6d    => $data['id_m
19a0: 65 6d 62 72 65 27 5d 2c 0a 09 09 09 27 69 64 5f  embre'],....'id_
19b0: 63 6f 74 69 73 61 74 69 6f 6e 27 20 3d 3e 20 28  cotisation' => (
19c0: 69 6e 74 29 24 69 64 2c 0a 09 09 5d 29 3b 0a 0a  int)$id,...]);..
19d0: 09 09 72 65 74 75 72 6e 20 24 69 64 5f 6f 70 65  ..return $id_ope
19e0: 72 61 74 69 6f 6e 3b 0a 09 7d 0a 0a 09 2f 2a 2a  ration;..}.../**
19f0: 0a 09 20 2a 20 4e 6f 6d 62 72 65 20 64 65 20 6d  .. * Nombre de m
1a00: 65 6d 62 72 65 73 20 70 6f 75 72 20 75 6e 65 20  embres pour une 
1a10: 63 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20 40  cotisation.. * @
1a20: 70 61 72 61 6d 20 20 69 6e 74 65 67 65 72 20 24  param  integer $
1a30: 69 64 20 4e 75 6d c3 a9 72 6f 20 64 65 20 6c 61  id Num..ro de la
1a40: 20 63 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20   cotisation.. * 
1a50: 40 72 65 74 75 72 6e 20 69 6e 74 65 67 65 72 20  @return integer 
1a60: 20 20 20 20 4e 6f 6d 62 72 65 20 64 27 c3 a9 76      Nombre d'..v
1a70: c3 a9 6e 65 6d 65 6e 74 73 20 70 6f 75 72 20 63  ..nements pour c
1a80: 65 74 74 65 20 63 6f 74 69 73 61 74 69 6f 6e 0a  ette cotisation.
1a90: 09 20 2a 2f 0a 09 70 75 62 6c 69 63 20 66 75 6e  . */..public fun
1aa0: 63 74 69 6f 6e 20 63 6f 75 6e 74 4d 65 6d 62 65  ction countMembe
1ab0: 72 73 46 6f 72 43 6f 74 69 73 61 74 69 6f 6e 28  rsForCotisation(
1ac0: 24 69 64 29 0a 09 7b 0a 09 09 24 64 62 20 3d 20  $id)..{...$db = 
1ad0: 44 42 3a 3a 67 65 74 49 6e 73 74 61 6e 63 65 28  DB::getInstance(
1ae0: 29 3b 0a 09 09 72 65 74 75 72 6e 20 24 64 62 2d  );...return $db-
1af0: 3e 66 69 72 73 74 43 6f 6c 75 6d 6e 28 27 53 45  >firstColumn('SE
1b00: 4c 45 43 54 20 43 4f 55 4e 54 28 44 49 53 54 49  LECT COUNT(DISTI
1b10: 4e 43 54 20 63 6d 2e 69 64 5f 6d 65 6d 62 72 65  NCT cm.id_membre
1b20: 29 0a 09 09 09 46 52 4f 4d 20 63 6f 74 69 73 61  )....FROM cotisa
1b30: 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 20 20 41  tions_membres  A
1b40: 53 20 63 6d 0a 09 09 09 09 49 4e 4e 45 52 20 4a  S cm.....INNER J
1b50: 4f 49 4e 20 6d 65 6d 62 72 65 73 20 41 53 20 6d  OIN membres AS m
1b60: 20 4f 4e 20 6d 2e 69 64 20 3d 20 63 6d 2e 69 64   ON m.id = cm.id
1b70: 5f 6d 65 6d 62 72 65 0a 09 09 09 57 48 45 52 45  _membre....WHERE
1b80: 20 63 6d 2e 69 64 5f 63 6f 74 69 73 61 74 69 6f   cm.id_cotisatio
1b90: 6e 20 3d 20 3f 0a 09 09 09 41 4e 44 20 6d 2e 69  n = ?....AND m.i
1ba0: 64 5f 63 61 74 65 67 6f 72 69 65 20 4e 4f 54 20  d_categorie NOT 
1bb0: 49 4e 20 28 53 45 4c 45 43 54 20 69 64 20 46 52  IN (SELECT id FR
1bc0: 4f 4d 20 6d 65 6d 62 72 65 73 5f 63 61 74 65 67  OM membres_categ
1bd0: 6f 72 69 65 73 20 57 48 45 52 45 20 63 61 63 68  ories WHERE cach
1be0: 65 72 20 3d 20 31 29 3b 27 2c 0a 09 09 09 28 69  er = 1);',....(i
1bf0: 6e 74 29 24 69 64 29 3b 0a 09 7d 0a 0a 09 2f 2a  nt)$id);..}.../*
1c00: 2a 0a 09 20 2a 20 4c 69 73 74 65 20 64 65 73 20  *.. * Liste des 
1c10: 6d 65 6d 62 72 65 73 20 71 75 69 20 73 6f 6e 74  membres qui sont
1c20: 20 69 6e 73 63 72 69 74 73 20 c3 a0 20 75 6e 65   inscrits .. une
1c30: 20 63 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a 20   cotisation.. * 
1c40: 40 70 61 72 61 6d 20 20 69 6e 74 65 67 65 72 20  @param  integer 
1c50: 24 69 64 20 4e 75 6d c3 a9 72 6f 20 64 65 20 6c  $id Num..ro de l
1c60: 61 20 63 6f 74 69 73 61 74 69 6f 6e 0a 09 20 2a  a cotisation.. *
1c70: 20 40 72 65 74 75 72 6e 20 61 72 72 61 79 20 20   @return array  
1c80: 20 20 20 4c 69 73 74 65 20 64 65 73 20 6d 65 6d     Liste des mem
1c90: 62 72 65 73 0a 09 20 2a 2f 0a 09 70 75 62 6c 69  bres.. */..publi
1ca0: 63 20 66 75 6e 63 74 69 6f 6e 20 6c 69 73 74 4d  c function listM
1cb0: 65 6d 62 65 72 73 46 6f 72 43 6f 74 69 73 61 74  embersForCotisat
1cc0: 69 6f 6e 28 24 69 64 2c 20 24 69 6e 63 6c 75 64  ion($id, $includ
1cd0: 65 5f 63 61 74 65 67 6f 72 79 2c 20 24 70 61 67  e_category, $pag
1ce0: 65 20 3d 20 31 2c 20 24 6f 72 64 65 72 20 3d 20  e = 1, $order = 
1cf0: 6e 75 6c 6c 2c 20 24 64 65 73 63 20 3d 20 74 72  null, $desc = tr
1d00: 75 65 29 0a 09 7b 0a 09 09 24 62 65 67 69 6e 20  ue)..{...$begin 
1d10: 3d 20 28 24 70 61 67 65 20 2d 20 31 29 20 2a 20  = ($page - 1) * 
1d20: 73 65 6c 66 3a 3a 49 54 45 4d 53 5f 50 45 52 5f  self::ITEMS_PER_
1d30: 50 41 47 45 3b 0a 0a 09 09 24 64 62 20 3d 20 44  PAGE;....$db = D
1d40: 42 3a 3a 67 65 74 49 6e 73 74 61 6e 63 65 28 29  B::getInstance()
1d50: 3b 0a 09 09 24 63 68 61 6d 70 5f 69 64 20 3d 20  ;...$champ_id = 
1d60: 43 6f 6e 66 69 67 3a 3a 67 65 74 49 6e 73 74 61  Config::getInsta
1d70: 6e 63 65 28 29 2d 3e 67 65 74 28 27 63 68 61 6d  nce()->get('cham
1d80: 70 5f 69 64 65 6e 74 69 74 65 27 29 3b 0a 0a 09  p_identite');...
1d90: 09 69 66 20 28 65 6d 70 74 79 28 24 6f 72 64 65  .if (empty($orde
1da0: 72 29 29 0a 09 09 09 24 6f 72 64 65 72 20 3d 20  r))....$order = 
1db0: 27 64 61 74 65 27 3b 0a 0a 09 09 73 77 69 74 63  'date';....switc
1dc0: 68 20 28 24 6f 72 64 65 72 29 0a 09 09 7b 0a 09  h ($order)...{..
1dd0: 09 09 63 61 73 65 20 27 61 5f 6a 6f 75 72 27 3a  ..case 'a_jour':
1de0: 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63  .....break;....c
1df0: 61 73 65 20 27 64 61 74 65 27 3a 0a 09 09 09 09  ase 'date':.....
1e00: 24 6f 72 64 65 72 20 3d 20 27 63 6d 2e 64 61 74  $order = 'cm.dat
1e10: 65 27 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09  e';.....break;..
1e20: 09 09 63 61 73 65 20 27 69 64 65 6e 74 69 74 65  ..case 'identite
1e30: 27 3a 0a 09 09 09 09 24 6f 72 64 65 72 20 3d 20  ':.....$order = 
1e40: 27 74 72 61 6e 73 6c 69 74 65 72 61 74 65 5f 74  'transliterate_t
1e50: 6f 5f 61 73 63 69 69 28 6d 2e 27 2e 24 63 68 61  o_ascii(m.'.$cha
1e60: 6d 70 5f 69 64 2e 27 29 20 43 4f 4c 4c 41 54 45  mp_id.') COLLATE
1e70: 20 4e 4f 43 41 53 45 27 3b 0a 09 09 09 09 62 72   NOCASE';.....br
1e80: 65 61 6b 3b 0a 09 09 09 64 65 66 61 75 6c 74 3a  eak;....default:
1e90: 0a 09 09 09 09 24 6f 72 64 65 72 20 3d 20 27 63  .....$order = 'c
1ea0: 6d 2e 69 64 5f 6d 65 6d 62 72 65 27 3b 0a 09 09  m.id_membre';...
1eb0: 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 0a 09 09  ..break;...}....
1ec0: 24 64 65 73 63 20 3d 20 24 64 65 73 63 20 3f 20  $desc = $desc ? 
1ed0: 27 44 45 53 43 27 20 3a 20 27 41 53 43 27 3b 0a  'DESC' : 'ASC';.
1ee0: 0a 09 09 2f 2f 20 52 65 6e 76 6f 79 65 72 20 6c  ...// Renvoyer l
1ef0: 61 20 6c 69 73 74 65 20 61 76 65 63 20 74 6f 75  a liste avec tou
1f00: 73 20 6c 65 73 20 6d 65 6d 62 72 65 73 20 64 65  s les membres de
1f10: 73 20 63 61 74 c3 a9 67 6f 72 69 65 73 20 64 6f  s cat..gories do
1f20: 6e 74 20 6c 61 20 63 6f 74 69 73 61 74 69 6f 6e  nt la cotisation
1f30: 20 6f 62 6c 69 67 61 74 6f 69 72 65 20 65 73 74   obligatoire est
1f40: 20 63 65 6c 6c 65 2d 63 69 0a 09 09 69 66 20 28   celle-ci...if (
1f50: 24 69 6e 63 6c 75 64 65 5f 63 61 74 65 67 6f 72  $include_categor
1f60: 79 29 0a 09 09 7b 0a 09 09 09 24 63 61 74 73 5f  y)...{....$cats_
1f70: 6f 62 6c 69 67 61 74 6f 69 72 65 73 20 3d 20 24  obligatoires = $
1f80: 64 62 2d 3e 67 65 74 41 73 73 6f 63 28 27 53 45  db->getAssoc('SE
1f90: 4c 45 43 54 20 69 64 2c 20 69 64 20 46 52 4f 4d  LECT id, id FROM
1fa0: 20 6d 65 6d 62 72 65 73 5f 63 61 74 65 67 6f 72   membres_categor
1fb0: 69 65 73 20 57 48 45 52 45 20 69 64 5f 63 6f 74  ies WHERE id_cot
1fc0: 69 73 61 74 69 6f 6e 5f 6f 62 6c 69 67 61 74 6f  isation_obligato
1fd0: 69 72 65 20 3d 20 3f 20 41 4e 44 20 63 61 63 68  ire = ? AND cach
1fe0: 65 72 20 3d 20 30 3b 27 2c 20 24 69 64 29 3b 0a  er = 0;', $id);.
1ff0: 0a 09 09 09 72 65 74 75 72 6e 20 24 64 62 2d 3e  ....return $db->
2000: 67 65 74 28 27 53 45 4c 45 43 54 20 6d 2e 69 64  get('SELECT m.id
2010: 20 41 53 20 69 64 5f 6d 65 6d 62 72 65 2c 20 4d   AS id_membre, M
2020: 41 58 28 63 6d 2e 64 61 74 65 29 20 41 53 20 64  AX(cm.date) AS d
2030: 61 74 65 2c 20 63 6d 2e 69 64 2c 20 6d 2e 6e 75  ate, cm.id, m.nu
2040: 6d 65 72 6f 2c 0a 09 09 09 09 6d 2e 27 2e 24 63  mero,.....m.'.$c
2050: 68 61 6d 70 5f 69 64 2e 27 20 41 53 20 6e 6f 6d  hamp_id.' AS nom
2060: 2c 20 63 2e 6d 6f 6e 74 61 6e 74 2c 0a 09 09 09  , c.montant,....
2070: 09 43 41 53 45 20 57 48 45 4e 20 63 6d 2e 69 64  .CASE WHEN cm.id
2080: 20 49 53 20 4e 55 4c 4c 20 54 48 45 4e 20 30 0a   IS NULL THEN 0.
2090: 09 09 09 09 57 48 45 4e 20 63 2e 64 75 72 65 65  ....WHEN c.duree
20a0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 54 48 45   IS NOT NULL THE
20b0: 4e 20 64 61 74 65 28 63 6d 2e 64 61 74 65 2c 20  N date(cm.date, 
20c0: 5c 27 2b 5c 27 7c 7c 63 2e 64 75 72 65 65 7c 7c  \'+\'||c.duree||
20d0: 5c 27 20 64 61 79 73 5c 27 29 20 3e 3d 20 64 61  \' days\') >= da
20e0: 74 65 28 29 0a 09 09 09 09 57 48 45 4e 20 63 2e  te().....WHEN c.
20f0: 66 69 6e 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20  fin IS NOT NULL 
2100: 54 48 45 4e 20 28 63 6d 2e 64 61 74 65 20 3c 3d  THEN (cm.date <=
2110: 20 63 2e 66 69 6e 20 41 4e 44 20 63 6d 2e 64 61   c.fin AND cm.da
2120: 74 65 20 3e 3d 20 63 2e 64 65 62 75 74 29 0a 09  te >= c.debut)..
2130: 09 09 09 45 4c 53 45 20 31 20 45 4e 44 20 41 53  ...ELSE 1 END AS
2140: 20 61 5f 6a 6f 75 72 0a 09 09 09 09 46 52 4f 4d   a_jour.....FROM
2150: 20 6d 65 6d 62 72 65 73 20 41 53 20 6d 0a 09 09   membres AS m...
2160: 09 09 09 4c 45 46 54 20 4a 4f 49 4e 20 63 6f 74  ...LEFT JOIN cot
2170: 69 73 61 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73  isations_membres
2180: 20 41 53 20 63 6d 20 4f 4e 20 63 6d 2e 69 64 5f   AS cm ON cm.id_
2190: 6d 65 6d 62 72 65 20 3d 20 6d 2e 69 64 20 41 4e  membre = m.id AN
21a0: 44 20 63 6d 2e 69 64 5f 63 6f 74 69 73 61 74 69  D cm.id_cotisati
21b0: 6f 6e 20 3d 20 3f 0a 09 09 09 09 09 4c 45 46 54  on = ?......LEFT
21c0: 20 4a 4f 49 4e 20 63 6f 74 69 73 61 74 69 6f 6e   JOIN cotisation
21d0: 73 20 41 53 20 63 20 4f 4e 20 63 2e 69 64 20 3d  s AS c ON c.id =
21e0: 20 63 6d 2e 69 64 5f 63 6f 74 69 73 61 74 69 6f   cm.id_cotisatio
21f0: 6e 0a 09 09 09 09 57 48 45 52 45 0a 09 09 09 09  n.....WHERE.....
2200: 09 27 2e 24 64 62 2d 3e 77 68 65 72 65 28 27 6d  .'.$db->where('m
2210: 2e 69 64 5f 63 61 74 65 67 6f 72 69 65 27 2c 20  .id_categorie', 
2220: 24 63 61 74 73 5f 6f 62 6c 69 67 61 74 6f 69 72  $cats_obligatoir
2230: 65 73 29 20 2e 20 27 0a 09 09 09 09 47 52 4f 55  es) . '.....GROU
2240: 50 20 42 59 20 6d 2e 69 64 20 4f 52 44 45 52 20  P BY m.id ORDER 
2250: 42 59 20 27 2e 24 6f 72 64 65 72 2e 27 20 27 2e  BY '.$order.' '.
2260: 24 64 65 73 63 2e 27 20 4c 49 4d 49 54 20 3f 2c  $desc.' LIMIT ?,
2270: 3f 3b 27 2c 0a 09 09 09 09 24 69 64 2c 20 24 62  ?;',.....$id, $b
2280: 65 67 69 6e 2c 20 73 65 6c 66 3a 3a 49 54 45 4d  egin, self::ITEM
2290: 53 5f 50 45 52 5f 50 41 47 45 29 3b 0a 09 09 7d  S_PER_PAGE);...}
22a0: 0a 0a 09 09 72 65 74 75 72 6e 20 24 64 62 2d 3e  ....return $db->
22b0: 67 65 74 28 27 53 45 4c 45 43 54 20 63 6d 2e 69  get('SELECT cm.i
22c0: 64 5f 6d 65 6d 62 72 65 2c 20 4d 41 58 28 63 6d  d_membre, MAX(cm
22d0: 2e 64 61 74 65 29 20 41 53 20 64 61 74 65 2c 20  .date) AS date, 
22e0: 63 6d 2e 69 64 2c 20 6d 2e 6e 75 6d 65 72 6f 2c  cm.id, m.numero,
22f0: 0a 09 09 09 6d 2e 27 2e 24 63 68 61 6d 70 5f 69  ....m.'.$champ_i
2300: 64 2e 27 20 41 53 20 6e 6f 6d 2c 20 63 2e 6d 6f  d.' AS nom, c.mo
2310: 6e 74 61 6e 74 2c 0a 09 09 09 43 41 53 45 20 57  ntant,....CASE W
2320: 48 45 4e 20 63 2e 64 75 72 65 65 20 49 53 20 4e  HEN c.duree IS N
2330: 4f 54 20 4e 55 4c 4c 20 54 48 45 4e 20 64 61 74  OT NULL THEN dat
2340: 65 28 63 6d 2e 64 61 74 65 2c 20 5c 27 2b 5c 27  e(cm.date, \'+\'
2350: 7c 7c 63 2e 64 75 72 65 65 7c 7c 5c 27 20 64 61  ||c.duree||\' da
2360: 79 73 5c 27 29 20 3e 3d 20 64 61 74 65 28 29 0a  ys\') >= date().
2370: 09 09 09 57 48 45 4e 20 63 2e 66 69 6e 20 49 53  ...WHEN c.fin IS
2380: 20 4e 4f 54 20 4e 55 4c 4c 20 54 48 45 4e 20 28   NOT NULL THEN (
2390: 63 6d 2e 64 61 74 65 20 3c 3d 20 63 2e 66 69 6e  cm.date <= c.fin
23a0: 20 41 4e 44 20 63 6d 2e 64 61 74 65 20 3e 3d 20   AND cm.date >= 
23b0: 63 2e 64 65 62 75 74 29 0a 09 09 09 45 4c 53 45  c.debut)....ELSE
23c0: 20 31 20 45 4e 44 20 41 53 20 61 5f 6a 6f 75 72   1 END AS a_jour
23d0: 0a 09 09 09 46 52 4f 4d 20 63 6f 74 69 73 61 74  ....FROM cotisat
23e0: 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 20 41 53 20  ions_membres AS 
23f0: 63 6d 0a 09 09 09 09 49 4e 4e 45 52 20 4a 4f 49  cm.....INNER JOI
2400: 4e 20 63 6f 74 69 73 61 74 69 6f 6e 73 20 41 53  N cotisations AS
2410: 20 63 20 4f 4e 20 63 2e 69 64 20 3d 20 63 6d 2e   c ON c.id = cm.
2420: 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 0a 09 09  id_cotisation...
2430: 09 09 49 4e 4e 45 52 20 4a 4f 49 4e 20 6d 65 6d  ..INNER JOIN mem
2440: 62 72 65 73 20 41 53 20 6d 20 4f 4e 20 6d 2e 69  bres AS m ON m.i
2450: 64 20 3d 20 63 6d 2e 69 64 5f 6d 65 6d 62 72 65  d = cm.id_membre
2460: 0a 09 09 09 57 48 45 52 45 0a 09 09 09 09 63 6d  ....WHERE.....cm
2470: 2e 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 20 3d  .id_cotisation =
2480: 20 3f 0a 09 09 09 09 41 4e 44 20 6d 2e 69 64 5f   ?.....AND m.id_
2490: 63 61 74 65 67 6f 72 69 65 20 4e 4f 54 20 49 4e  categorie NOT IN
24a0: 20 28 53 45 4c 45 43 54 20 6d 63 2e 69 64 20 46   (SELECT mc.id F
24b0: 52 4f 4d 20 6d 65 6d 62 72 65 73 5f 63 61 74 65  ROM membres_cate
24c0: 67 6f 72 69 65 73 20 41 53 20 6d 63 20 57 48 45  gories AS mc WHE
24d0: 52 45 20 6d 63 2e 63 61 63 68 65 72 20 3d 20 31  RE mc.cacher = 1
24e0: 29 0a 09 09 09 47 52 4f 55 50 20 42 59 20 63 6d  )....GROUP BY cm
24f0: 2e 69 64 5f 6d 65 6d 62 72 65 20 4f 52 44 45 52  .id_membre ORDER
2500: 20 42 59 20 27 2e 24 6f 72 64 65 72 2e 27 20 27   BY '.$order.' '
2510: 2e 24 64 65 73 63 2e 27 20 4c 49 4d 49 54 20 3f  .$desc.' LIMIT ?
2520: 2c 3f 3b 27 2c 0a 09 09 09 28 69 6e 74 29 24 69  ,?;',....(int)$i
2530: 64 2c 20 24 62 65 67 69 6e 2c 20 73 65 6c 66 3a  d, $begin, self:
2540: 3a 49 54 45 4d 53 5f 50 45 52 5f 50 41 47 45 29  :ITEMS_PER_PAGE)
2550: 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 4c  ;..}.../**.. * L
2560: 69 73 74 65 20 64 65 73 20 c3 a9 76 c3 a9 6e 65  iste des ..v..ne
2570: 6d 65 6e 74 73 20 64 27 75 6e 20 6d 65 6d 62 72  ments d'un membr
2580: 65 0a 09 20 2a 20 40 70 61 72 61 6d 20 20 69 6e  e.. * @param  in
2590: 74 65 67 65 72 20 24 69 64 20 4e 75 6d c3 a9 72  teger $id Num..r
25a0: 6f 20 64 65 20 6d 65 6d 62 72 65 0a 09 20 2a 20  o de membre.. * 
25b0: 40 72 65 74 75 72 6e 20 61 72 72 61 79 20 20 20  @return array   
25c0: 20 20 4c 69 73 74 65 20 64 65 73 20 c3 a9 76 c3    Liste des ..v.
25d0: a9 6e 65 6d 65 6e 74 73 20 64 65 20 63 6f 74 69  .nements de coti
25e0: 73 61 74 69 6f 6e 20 66 61 69 74 20 70 61 72 20  sation fait par 
25f0: 63 65 20 6d 65 6d 62 72 65 0a 09 20 2a 2f 0a 09  ce membre.. */..
2600: 70 75 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20  public function 
2610: 6c 69 73 74 46 6f 72 4d 65 6d 62 65 72 28 24 69  listForMember($i
2620: 64 29 0a 09 7b 0a 09 09 2f 2f 20 54 4f 44 4f 3a  d)..{...// TODO:
2630: 20 72 c3 a9 63 75 70 c3 a9 72 65 72 20 69 63 69   r..cup..rer ici
2640: 20 6c 65 20 73 6f 6c 64 65 20 70 61 79 c3 a9 20   le solde pay.. 
2650: 70 6f 75 72 20 75 6e 65 20 63 6f 74 69 73 61 74  pour une cotisat
2660: 69 6f 6e 2c 20 70 6f 75 72 20 73 61 76 6f 69 72  ion, pour savoir
2670: 20 73 69 20 74 6f 75 74 20 61 20 c3 a9 74 c3 a9   si tout a ..t..
2680: 20 70 61 79 c3 a9 0a 09 09 2f 2f 20 28 70 6f 75   pay.....// (pou
2690: 72 20 67 c3 a9 72 65 72 20 70 61 72 20 65 78 65  r g..rer par exe
26a0: 6d 70 6c 65 20 6c 65 73 20 70 61 69 65 6d 65 6e  mple les paiemen
26b0: 74 73 20 65 66 66 65 63 74 75 c3 a9 73 20 65 6e  ts effectu..s en
26c0: 20 70 6c 75 73 69 65 75 72 73 20 76 65 72 73 65   plusieurs verse
26d0: 6d 65 6e 74 73 29 0a 09 09 2f 2f 20 6d 61 69 73  ments)...// mais
26e0: 20 70 6f 75 72 20 6c 65 20 6d 6f 6d 65 6e 74 20   pour le moment 
26f0: 6c 65 20 66 6f 6e 63 74 69 6f 6e 6e 65 6d 65 6e  le fonctionnemen
2700: 74 20 64 65 20 63 6f 6d 70 74 61 5f 6a 6f 75 72  t de compta_jour
2710: 6e 61 6c 20 65 73 74 20 74 72 6f 70 20 63 6f 6d  nal est trop com
2720: 70 6c 69 71 75 c3 a9 20 70 6f 75 72 20 61 72 72  pliqu.. pour arr
2730: 69 76 65 72 0a 09 09 2f 2f 20 c3 a0 20 72 c3 a9  iver...// .. r..
2740: 63 75 70 c3 a9 72 65 72 20 75 6e 20 73 6f 6c 64  cup..rer un sold
2750: 65 20 64 61 6e 73 20 75 6e 65 20 72 65 71 75 c3  e dans une requ.
2760: aa 74 65 20 73 69 6d 70 6c 65 2c 20 6c 61 20 72  .te simple, la r
2770: 65 71 75 c3 aa 74 65 20 73 65 72 61 69 74 20 74  equ..te serait t
2780: 72 6f 70 20 6c 6f 75 72 64 65 20 64 6f 6e 63 20  rop lourde donc 
2790: 6f 6e 20 6c 61 69 73 73 65 20 74 6f 6d 62 65 72  on laisse tomber
27a0: 0a 09 09 24 64 62 20 3d 20 44 42 3a 3a 67 65 74  ...$db = DB::get
27b0: 49 6e 73 74 61 6e 63 65 28 29 3b 0a 09 09 72 65  Instance();...re
27c0: 74 75 72 6e 20 24 64 62 2d 3e 67 65 74 28 27 53  turn $db->get('S
27d0: 45 4c 45 43 54 20 63 6d 2e 2a 2c 20 63 2e 69 6e  ELECT cm.*, c.in
27e0: 74 69 74 75 6c 65 2c 20 63 2e 64 75 72 65 65 2c  titule, c.duree,
27f0: 20 63 2e 64 65 62 75 74 2c 20 63 2e 66 69 6e 2c   c.debut, c.fin,
2800: 20 63 2e 6d 6f 6e 74 61 6e 74 2c 0a 09 09 09 28   c.montant,....(
2810: 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 2a 29 20  SELECT COUNT(*) 
2820: 46 52 4f 4d 20 6d 65 6d 62 72 65 73 5f 6f 70 65  FROM membres_ope
2830: 72 61 74 69 6f 6e 73 20 57 48 45 52 45 20 69 64  rations WHERE id
2840: 5f 63 6f 74 69 73 61 74 69 6f 6e 20 3d 20 63 6d  _cotisation = cm
2850: 2e 69 64 29 20 41 53 20 6e 62 5f 6f 70 65 72 61  .id) AS nb_opera
2860: 74 69 6f 6e 73 0a 09 09 09 46 52 4f 4d 20 63 6f  tions....FROM co
2870: 74 69 73 61 74 69 6f 6e 73 5f 6d 65 6d 62 72 65  tisations_membre
2880: 73 20 41 53 20 63 6d 0a 09 09 09 09 4c 45 46 54  s AS cm.....LEFT
2890: 20 4a 4f 49 4e 20 63 6f 74 69 73 61 74 69 6f 6e   JOIN cotisation
28a0: 73 20 41 53 20 63 20 4f 4e 20 63 2e 69 64 20 3d  s AS c ON c.id =
28b0: 20 63 6d 2e 69 64 5f 63 6f 74 69 73 61 74 69 6f   cm.id_cotisatio
28c0: 6e 0a 09 09 09 57 48 45 52 45 20 63 6d 2e 69 64  n....WHERE cm.id
28d0: 5f 6d 65 6d 62 72 65 20 3d 20 3f 20 4f 52 44 45  _membre = ? ORDE
28e0: 52 20 42 59 20 63 6d 2e 64 61 74 65 20 44 45 53  R BY cm.date DES
28f0: 43 3b 27 2c 20 28 69 6e 74 29 24 69 64 29 3b 0a  C;', (int)$id);.
2900: 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 4c 69 73  .}.../**.. * Lis
2910: 74 65 20 64 65 73 20 63 6f 74 69 73 61 74 69 6f  te des cotisatio
2920: 6e 73 20 2f 20 61 63 74 69 76 69 74 c3 a9 73 20  ns / activit..s 
2930: 65 6e 20 63 6f 75 72 73 20 70 6f 75 72 20 63 65  en cours pour ce
2940: 20 6d 65 6d 62 72 65 0a 09 20 2a 20 40 70 61 72   membre.. * @par
2950: 61 6d 20 20 69 6e 74 65 67 65 72 20 24 69 64 20  am  integer $id 
2960: 4e 75 6d c3 a9 72 6f 20 64 65 20 6d 65 6d 62 72  Num..ro de membr
2970: 65 0a 09 20 2a 20 40 72 65 74 75 72 6e 20 61 72  e.. * @return ar
2980: 72 61 79 20 20 20 20 20 4c 69 73 74 65 20 64 65  ray     Liste de
2990: 73 20 63 6f 74 69 73 61 74 69 6f 6e 73 20 65 6e  s cotisations en
29a0: 20 63 6f 75 72 73 20 64 65 20 76 61 6c 69 64 69   cours de validi
29b0: 74 c3 a9 0a 09 20 2a 2f 0a 09 70 75 62 6c 69 63  t.... */..public
29c0: 20 66 75 6e 63 74 69 6f 6e 20 6c 69 73 74 53 75   function listSu
29d0: 62 73 63 72 69 70 74 69 6f 6e 73 46 6f 72 4d 65  bscriptionsForMe
29e0: 6d 62 65 72 28 24 69 64 29 0a 09 7b 0a 09 09 24  mber($id)..{...$
29f0: 64 62 20 3d 20 44 42 3a 3a 67 65 74 49 6e 73 74  db = DB::getInst
2a00: 61 6e 63 65 28 29 3b 0a 09 09 72 65 74 75 72 6e  ance();...return
2a10: 20 24 64 62 2d 3e 67 65 74 28 27 53 45 4c 45 43   $db->get('SELEC
2a20: 54 20 63 2e 2a 2c 0a 09 09 09 4d 41 58 28 63 6d  T c.*,....MAX(cm
2a30: 2e 64 61 74 65 29 2c 0a 09 09 09 43 41 53 45 20  .date),....CASE 
2a40: 57 48 45 4e 20 63 2e 64 75 72 65 65 20 49 53 20  WHEN c.duree IS 
2a50: 4e 4f 54 20 4e 55 4c 4c 20 54 48 45 4e 20 64 61  NOT NULL THEN da
2a60: 74 65 28 63 6d 2e 64 61 74 65 2c 20 5c 27 2b 5c  te(cm.date, \'+\
2a70: 27 7c 7c 63 2e 64 75 72 65 65 7c 7c 5c 27 20 64  '||c.duree||\' d
2a80: 61 79 73 5c 27 29 20 3e 3d 20 64 61 74 65 28 29  ays\') >= date()
2a90: 0a 09 09 09 57 48 45 4e 20 63 2e 66 69 6e 20 49  ....WHEN c.fin I
2aa0: 53 20 4e 4f 54 20 4e 55 4c 4c 20 54 48 45 4e 20  S NOT NULL THEN 
2ab0: 28 63 6d 2e 69 64 20 49 53 20 4e 4f 54 20 4e 55  (cm.id IS NOT NU
2ac0: 4c 4c 20 41 4e 44 20 63 6d 2e 64 61 74 65 20 3c  LL AND cm.date <
2ad0: 3d 20 63 2e 66 69 6e 20 41 4e 44 20 63 6d 2e 64  = c.fin AND cm.d
2ae0: 61 74 65 20 3e 3d 20 63 2e 64 65 62 75 74 29 0a  ate >= c.debut).
2af0: 09 09 09 57 48 45 4e 20 63 6d 2e 69 64 20 49 53  ...WHEN cm.id IS
2b00: 20 4e 4f 54 20 4e 55 4c 4c 20 54 48 45 4e 20 31   NOT NULL THEN 1
2b10: 20 45 4c 53 45 20 30 20 45 4e 44 20 41 53 20 61   ELSE 0 END AS a
2b20: 5f 6a 6f 75 72 2c 0a 09 09 09 43 41 53 45 20 57  _jour,....CASE W
2b30: 48 45 4e 20 63 2e 64 75 72 65 65 20 49 53 20 4e  HEN c.duree IS N
2b40: 4f 54 20 4e 55 4c 4c 20 54 48 45 4e 20 64 61 74  OT NULL THEN dat
2b50: 65 28 63 6d 2e 64 61 74 65 2c 20 5c 27 2b 5c 27  e(cm.date, \'+\'
2b60: 7c 7c 63 2e 64 75 72 65 65 7c 7c 5c 27 20 64 61  ||c.duree||\' da
2b70: 79 73 5c 27 29 0a 09 09 09 57 48 45 4e 20 63 2e  ys\')....WHEN c.
2b80: 66 69 6e 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20  fin IS NOT NULL 
2b90: 54 48 45 4e 20 63 2e 66 69 6e 20 45 4c 53 45 20  THEN c.fin ELSE 
2ba0: 31 20 45 4e 44 20 41 53 20 65 78 70 69 72 61 74  1 END AS expirat
2bb0: 69 6f 6e 2c 0a 09 09 09 28 6a 75 6c 69 61 6e 64  ion,....(juliand
2bc0: 61 79 28 64 61 74 65 28 29 29 20 2d 20 6a 75 6c  ay(date()) - jul
2bd0: 69 61 6e 64 61 79 28 43 41 53 45 20 57 48 45 4e  ianday(CASE WHEN
2be0: 20 63 2e 64 75 72 65 65 20 49 53 20 4e 4f 54 20   c.duree IS NOT 
2bf0: 4e 55 4c 4c 20 54 48 45 4e 20 64 61 74 65 28 63  NULL THEN date(c
2c00: 6d 2e 64 61 74 65 2c 20 5c 27 2b 5c 27 7c 7c 63  m.date, \'+\'||c
2c10: 2e 64 75 72 65 65 7c 7c 5c 27 20 64 61 79 73 5c  .duree||\' days\
2c20: 27 29 0a 09 09 09 57 48 45 4e 20 63 2e 66 69 6e  ')....WHEN c.fin
2c30: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 54 48 45   IS NOT NULL THE
2c40: 4e 20 63 2e 66 69 6e 20 45 4e 44 29 29 20 41 53  N c.fin END)) AS
2c50: 20 6e 62 5f 6a 6f 75 72 73 0a 09 09 09 46 52 4f   nb_jours....FRO
2c60: 4d 20 63 6f 74 69 73 61 74 69 6f 6e 73 5f 6d 65  M cotisations_me
2c70: 6d 62 72 65 73 20 41 53 20 63 6d 0a 09 09 09 09  mbres AS cm.....
2c80: 49 4e 4e 45 52 20 4a 4f 49 4e 20 63 6f 74 69 73  INNER JOIN cotis
2c90: 61 74 69 6f 6e 73 20 41 53 20 63 20 4f 4e 20 63  ations AS c ON c
2ca0: 2e 69 64 20 3d 20 63 6d 2e 69 64 5f 63 6f 74 69  .id = cm.id_coti
2cb0: 73 61 74 69 6f 6e 0a 09 09 09 57 48 45 52 45 20  sation....WHERE 
2cc0: 63 6d 2e 69 64 5f 6d 65 6d 62 72 65 20 3d 20 3f  cm.id_membre = ?
2cd0: 0a 09 09 09 09 41 4e 44 20 28 28 63 2e 66 69 6e  .....AND ((c.fin
2ce0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44   IS NOT NULL AND
2cf0: 20 63 6d 2e 64 61 74 65 20 3c 3d 20 63 2e 66 69   cm.date <= c.fi
2d00: 6e 20 41 4e 44 20 63 6d 2e 64 61 74 65 20 3e 3d  n AND cm.date >=
2d10: 20 63 2e 64 65 62 75 74 29 20 4f 52 20 63 2e 66   c.debut) OR c.f
2d20: 69 6e 20 49 53 20 4e 55 4c 4c 29 0a 09 09 09 47  in IS NULL)....G
2d30: 52 4f 55 50 20 42 59 20 63 6d 2e 69 64 5f 63 6f  ROUP BY cm.id_co
2d40: 74 69 73 61 74 69 6f 6e 0a 09 09 09 4f 52 44 45  tisation....ORDE
2d50: 52 20 42 59 20 63 6d 2e 64 61 74 65 20 44 45 53  R BY cm.date DES
2d60: 43 3b 27 2c 20 28 69 6e 74 29 24 69 64 29 3b 0a  C;', (int)$id);.
2d70: 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 43 65 20  .}.../**.. * Ce 
2d80: 6d 65 6d 62 72 65 20 65 73 74 2d 69 6c 20 c3 a0  membre est-il ..
2d90: 20 6a 6f 75 72 20 73 75 72 20 63 65 74 74 65 20   jour sur cette 
2da0: 63 6f 74 69 73 61 74 69 6f 6e 20 3f 0a 09 20 2a  cotisation ?.. *
2db0: 20 40 70 61 72 61 6d 20 20 69 6e 74 65 67 65 72   @param  integer
2dc0: 20 20 24 69 64 20 20 20 20 20 20 20 20 20 20 20    $id           
2dd0: 20 20 4e 75 6d c3 a9 72 6f 20 64 65 20 6d 65 6d    Num..ro de mem
2de0: 62 72 65 0a 09 20 2a 20 40 70 61 72 61 6d 20 20  bre.. * @param  
2df0: 69 6e 74 65 67 65 72 20 20 24 69 64 5f 63 6f 74  integer  $id_cot
2e00: 69 73 61 74 69 6f 6e 20 20 4e 75 6d c3 a9 72 6f  isation  Num..ro
2e10: 20 64 65 20 63 6f 74 69 73 61 74 69 6f 6e 0a 09   de cotisation..
2e20: 20 2a 20 40 72 65 74 75 72 6e 20 61 72 72 61 79   * @return array
2e30: 20 09 09 09 09 09 49 6e 66 6f 73 20 73 75 72 20   .....Infos sur 
2e40: 6c 61 20 63 6f 74 69 73 61 74 69 6f 6e 2c 20 65  la cotisation, e
2e50: 74 20 63 68 61 6d 70 20 65 78 70 69 72 61 74 69  t champ expirati
2e60: 6f 6e 0a 09 20 2a 20 28 73 69 20 4e 55 4c 4c 20  on.. * (si NULL 
2e70: 3d 20 63 6f 74 69 73 61 74 69 6f 6e 20 6a 61 6d  = cotisation jam
2e80: 61 69 73 20 65 6e 72 65 67 69 73 74 72 c3 a9 65  ais enregistr..e
2e90: 2c 20 73 69 20 31 20 3d 20 63 6f 74 69 73 61 74  , si 1 = cotisat
2ea0: 69 6f 6e 20 70 6f 6e 63 74 75 65 6c 6c 65 20 65  ion ponctuelle e
2eb0: 6e 72 65 67 69 73 74 72 c3 a9 65 2c 20 73 69 6e  nregistr..e, sin
2ec0: 6f 6e 20 64 61 74 65 20 64 27 65 78 70 69 72 61  on date d'expira
2ed0: 74 69 6f 6e 29 0a 09 20 2a 2f 0a 09 70 75 62 6c  tion).. */..publ
2ee0: 69 63 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 65  ic function isMe
2ef0: 6d 62 65 72 55 70 54 6f 44 61 74 65 28 24 69 64  mberUpToDate($id
2f00: 2c 20 24 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e  , $id_cotisation
2f10: 29 0a 09 7b 0a 09 09 24 64 62 20 3d 20 44 42 3a  )..{...$db = DB:
2f20: 3a 67 65 74 49 6e 73 74 61 6e 63 65 28 29 3b 0a  :getInstance();.
2f30: 09 09 72 65 74 75 72 6e 20 24 64 62 2d 3e 66 69  ..return $db->fi
2f40: 72 73 74 28 27 53 45 4c 45 43 54 20 63 2e 2a 2c  rst('SELECT c.*,
2f50: 0a 09 09 09 43 41 53 45 20 57 48 45 4e 20 63 2e  ....CASE WHEN c.
2f60: 64 75 72 65 65 20 49 53 20 4e 4f 54 20 4e 55 4c  duree IS NOT NUL
2f70: 4c 20 54 48 45 4e 20 64 61 74 65 28 63 6d 2e 64  L THEN date(cm.d
2f80: 61 74 65 2c 20 5c 27 2b 5c 27 7c 7c 63 2e 64 75  ate, \'+\'||c.du
2f90: 72 65 65 7c 7c 5c 27 20 64 61 79 73 5c 27 29 20  ree||\' days\') 
2fa0: 3e 3d 20 64 61 74 65 28 29 0a 09 09 09 57 48 45  >= date()....WHE
2fb0: 4e 20 63 2e 66 69 6e 20 49 53 20 4e 4f 54 20 4e  N c.fin IS NOT N
2fc0: 55 4c 4c 20 54 48 45 4e 20 28 63 6d 2e 69 64 20  ULL THEN (cm.id 
2fd0: 49 53 20 4e 4f 54 20 4e 55 4c 4c 29 0a 09 09 09  IS NOT NULL)....
2fe0: 57 48 45 4e 20 63 6d 2e 69 64 20 49 53 20 4e 4f  WHEN cm.id IS NO
2ff0: 54 20 4e 55 4c 4c 20 54 48 45 4e 20 31 20 45 4c  T NULL THEN 1 EL
3000: 53 45 20 30 20 45 4e 44 20 41 53 20 61 5f 6a 6f  SE 0 END AS a_jo
3010: 75 72 2c 0a 09 09 09 43 41 53 45 20 57 48 45 4e  ur,....CASE WHEN
3020: 20 63 2e 64 75 72 65 65 20 49 53 20 4e 4f 54 20   c.duree IS NOT 
3030: 4e 55 4c 4c 20 54 48 45 4e 20 64 61 74 65 28 63  NULL THEN date(c
3040: 6d 2e 64 61 74 65 2c 20 5c 27 2b 5c 27 7c 7c 63  m.date, \'+\'||c
3050: 2e 64 75 72 65 65 7c 7c 5c 27 20 64 61 79 73 5c  .duree||\' days\
3060: 27 29 0a 09 09 09 57 48 45 4e 20 63 2e 66 69 6e  ')....WHEN c.fin
3070: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 54 48 45   IS NOT NULL THE
3080: 4e 20 63 2e 66 69 6e 20 45 4c 53 45 20 31 20 45  N c.fin ELSE 1 E
3090: 4e 44 20 41 53 20 65 78 70 69 72 61 74 69 6f 6e  ND AS expiration
30a0: 0a 09 09 09 46 52 4f 4d 20 63 6f 74 69 73 61 74  ....FROM cotisat
30b0: 69 6f 6e 73 20 41 53 20 63 20 0a 09 09 09 09 4c  ions AS c .....L
30c0: 45 46 54 20 4a 4f 49 4e 20 63 6f 74 69 73 61 74  EFT JOIN cotisat
30d0: 69 6f 6e 73 5f 6d 65 6d 62 72 65 73 20 41 53 20  ions_membres AS 
30e0: 63 6d 20 4f 4e 20 63 6d 2e 69 64 5f 63 6f 74 69  cm ON cm.id_coti
30f0: 73 61 74 69 6f 6e 20 3d 20 63 2e 69 64 20 41 4e  sation = c.id AN
3100: 44 20 63 6d 2e 69 64 5f 6d 65 6d 62 72 65 20 3d  D cm.id_membre =
3110: 20 3f 0a 09 09 09 57 48 45 52 45 20 63 2e 69 64   ?....WHERE c.id
3120: 20 3d 20 3f 20 4f 52 44 45 52 20 42 59 20 63 6d   = ? ORDER BY cm
3130: 2e 64 61 74 65 20 44 45 53 43 3b 27 2c 0a 09 09  .date DESC;',...
3140: 09 28 69 6e 74 29 24 69 64 2c 20 28 69 6e 74 29  .(int)$id, (int)
3150: 24 69 64 5f 63 6f 74 69 73 61 74 69 6f 6e 29 3b  $id_cotisation);
3160: 0a 09 7d 0a 0a 09 70 75 62 6c 69 63 20 66 75 6e  ..}...public fun
3170: 63 74 69 6f 6e 20 63 6f 75 6e 74 46 6f 72 4d 65  ction countForMe
3180: 6d 62 65 72 28 24 69 64 29 0a 09 7b 0a 09 09 24  mber($id)..{...$
3190: 64 62 20 3d 20 44 42 3a 3a 67 65 74 49 6e 73 74  db = DB::getInst
31a0: 61 6e 63 65 28 29 3b 0a 09 09 72 65 74 75 72 6e  ance();...return
31b0: 20 24 64 62 2d 3e 66 69 72 73 74 43 6f 6c 75 6d   $db->firstColum
31c0: 6e 28 27 53 45 4c 45 43 54 20 43 4f 55 4e 54 28  n('SELECT COUNT(
31d0: 44 49 53 54 49 4e 43 54 20 69 64 5f 63 6f 74 69  DISTINCT id_coti
31e0: 73 61 74 69 6f 6e 29 20 46 52 4f 4d 20 63 6f 74  sation) FROM cot
31f0: 69 73 61 74 69 6f 6e 73 5f 6d 65 6d 62 72 65 73  isations_membres
3200: 20 0a 09 09 09 57 48 45 52 45 20 69 64 5f 6d 65   ....WHERE id_me
3210: 6d 62 72 65 20 3d 20 3f 3b 27 2c 20 28 69 6e 74  mbre = ?;', (int
3220: 29 24 69 64 29 3b 0a 09 7d 0a 7d                 )$id);..}.}