adherent 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/adherent/icones/address-book-open.png +0 -0
- data/app/assets/images/adherent/icones/bandaid.png +0 -0
- data/app/assets/images/adherent/icones/card-address.png +0 -0
- data/app/assets/images/adherent/icones/home.png +0 -0
- data/app/assets/images/adherent/icones/user-plus.png +0 -0
- data/app/assets/images/adherent/icones/users.png +0 -0
- data/app/controllers/adherent/adhesions_controller.rb +2 -6
- data/app/controllers/adherent/coords_controller.rb +2 -22
- data/app/controllers/adherent/payments_controller.rb +2 -8
- data/app/controllers/adherent/reglements_controller.rb +1 -0
- data/app/helpers/adherent/application_helper.rb +4 -0
- data/app/models/adherent/adhesion.rb +16 -14
- data/app/models/adherent/coord.rb +4 -0
- data/app/models/adherent/member.rb +19 -7
- data/app/models/adherent/payment.rb +23 -20
- data/app/models/adherent/reglement.rb +3 -0
- data/app/views/adherent/adhesions/edit.html.erb +1 -1
- data/app/views/adherent/adhesions/index.html.haml +1 -1
- data/app/views/adherent/adhesions/new.html.erb +1 -1
- data/app/views/adherent/coords/edit.html.erb +1 -3
- data/app/views/adherent/coords/new.html.erb +1 -1
- data/app/views/adherent/coords/show.html.erb +2 -2
- data/app/views/adherent/members/edit.html.erb +2 -3
- data/app/views/adherent/members/index.html.erb +8 -8
- data/app/views/adherent/members/new.html.erb +1 -1
- data/app/views/adherent/members/show.html.erb +4 -3
- data/app/views/adherent/payments/index.html.haml +1 -1
- data/app/views/adherent/payments/new.html.erb +1 -1
- data/app/views/adherent/reglements/new.html.erb +1 -1
- data/config/initializers/pick_date_extension.rb +12 -4
- data/config/locales/fr.yml +3 -1
- data/lib/adherent/engine.rb +5 -0
- data/lib/adherent/version.rb +1 -1
- data/test/dummy/app/controllers/application_controller.rb +1 -1
- data/test/dummy/log/development.log +24686 -0
- data/test/dummy/log/test.log +76446 -0
- data/test/dummy/tmp/cache/assets/BF0/070/sprockets%2F42b486109907c85c344e3428f5615140 +0 -0
- data/test/dummy/tmp/cache/assets/C44/670/sprockets%2Fe128312dd259094d00196a3f02f41819 +0 -0
- data/test/dummy/tmp/cache/assets/C4D/C10/sprockets%2Fe52bf847776498593423b635698c989c +0 -0
- data/test/dummy/tmp/cache/assets/C50/1E0/sprockets%2Fd687f61462083316a5947ccd9211605a +0 -0
- data/test/dummy/tmp/cache/assets/C53/BA0/sprockets%2F0701319e027b68d87b4d5727aa571973 +0 -0
- data/test/dummy/tmp/cache/assets/C8B/B50/sprockets%2F1bf0946089435ce76a87bd41668373c2 +0 -0
- data/test/dummy/tmp/cache/assets/C90/510/sprockets%2Ff5920073f4480657faac32986b1f8587 +0 -0
- data/test/dummy/tmp/cache/assets/C91/5E0/sprockets%2F28a1436ca683918e98c79266d19d430e +0 -0
- data/test/dummy/tmp/cache/assets/CA4/930/sprockets%2F72a29d61339a55b21d1ac7ec59153244 +0 -0
- data/test/dummy/tmp/cache/assets/CA6/0A0/sprockets%2F63a72244bdf73521f399e501b341d16d +0 -0
- data/test/dummy/tmp/cache/assets/CAD/BF0/sprockets%2Fd27d4e6bd84d0108fc54a21959181335 +0 -0
- data/test/dummy/tmp/cache/assets/CB3/3E0/sprockets%2Ff03d611409c3b2c45d75f97158197ee0 +0 -0
- data/test/dummy/tmp/cache/assets/CC6/700/sprockets%2Fda996593aa3789391cab3d7762f13687 +0 -0
- data/test/dummy/tmp/cache/assets/CC7/410/sprockets%2Fc39062f6a04c41168a923ea22d701a5a +0 -0
- data/test/dummy/tmp/cache/assets/CCB/400/sprockets%2Fb211324ce679335840009b6a2aa45cfc +0 -0
- data/test/dummy/tmp/cache/assets/CD6/8A0/sprockets%2Fcb476833cd1a806e251da407a58d9520 +0 -0
- data/test/dummy/tmp/cache/assets/CDC/0B0/sprockets%2Ffef07c3c165353f861564ede180350a4 +0 -0
- data/test/dummy/tmp/cache/assets/CDD/EB0/sprockets%2F0e17703d917f6560e5c3b46ae85c09a2 +0 -0
- data/test/dummy/tmp/cache/assets/CE0/B90/sprockets%2F7baa8d092b9d409d47643521a8b55e62 +0 -0
- data/test/dummy/tmp/cache/assets/CE1/EB0/sprockets%2Fe2d34e55c19309ae4d1b8628d38514c6 +0 -0
- data/test/dummy/tmp/cache/assets/CE4/B80/sprockets%2Fdc146f8d1ff283ff045000f8349e3942 +0 -0
- data/test/dummy/tmp/cache/assets/CFA/700/sprockets%2Ff51725f304c66b6ed8ab01120cb1a593 +0 -0
- data/test/dummy/tmp/cache/assets/CFD/F60/sprockets%2Faac72c81c4f00133234e7d1bb46d7925 +0 -0
- data/test/dummy/tmp/cache/assets/D0B/520/sprockets%2Fa659c61ab2078241e32ebaf671f87e41 +0 -0
- data/test/dummy/tmp/cache/assets/D0D/CC0/sprockets%2F90fc5652fe6161075680fcd4cd0c45d2 +0 -0
- data/test/dummy/tmp/cache/assets/D14/210/sprockets%2Fb5db5427cdef8d152ae598d461178026 +0 -0
- data/test/dummy/tmp/cache/assets/D15/960/sprockets%2F557c56f5b8b86ba772e07281f1f3a0c7 +0 -0
- data/test/dummy/tmp/cache/assets/D16/870/sprockets%2F3f2a439772fcd9cd0f434f723837ae51 +0 -0
- data/test/dummy/tmp/cache/assets/D16/D00/sprockets%2F52e940c5c1d8089bcdf984d4d27c5520 +0 -0
- data/test/dummy/tmp/cache/assets/D1A/390/sprockets%2F1d08a6978a059fa2494e078ec1ac7e93 +0 -0
- data/test/dummy/tmp/cache/assets/D1A/820/sprockets%2F20a218b05c2726d14bd025c36ba31ddd +0 -0
- data/test/dummy/tmp/cache/assets/D1A/D90/sprockets%2F6c459fd8844374d4aa166c64f544fae0 +0 -0
- data/test/dummy/tmp/cache/assets/D20/590/sprockets%2F22948c5cb4a59a4c252888f75cdf387a +0 -0
- data/test/dummy/tmp/cache/assets/D25/100/sprockets%2F4b9f1fdc6f9b86cc0624a7951766d926 +0 -0
- data/test/dummy/tmp/cache/assets/D26/A70/sprockets%2Fbb35e749193d15ad00bf0d04513a3bd6 +0 -0
- data/test/dummy/tmp/cache/assets/D27/980/sprockets%2F65718e7a65fd89199b02b7cd38b90be9 +0 -0
- data/test/dummy/tmp/cache/assets/D2A/220/sprockets%2Fb0d6ff4608e402650ca685bc013d5d0a +0 -0
- data/test/dummy/tmp/cache/assets/D2B/FA0/sprockets%2F32aa9ce8b2315cc01f8a2c27374215ce +0 -0
- data/test/dummy/tmp/cache/assets/D32/5D0/sprockets%2F3acc8697202c55974ff0122bcf20fa2b +0 -0
- data/test/dummy/tmp/cache/assets/D3E/7A0/sprockets%2Ff9a1dbe464c536a11de32284fbc89192 +0 -0
- data/test/dummy/tmp/cache/assets/D3F/640/sprockets%2F9b448668c4c3a12d6aaa017b94e69ed2 +0 -0
- data/test/dummy/tmp/cache/assets/D42/040/sprockets%2F3def97f4406db752008fa340f74a6e3f +0 -0
- data/test/dummy/tmp/cache/assets/D44/860/sprockets%2F9157a652853bd3cea861bd767fed0b08 +0 -0
- data/test/dummy/tmp/cache/assets/D44/BF0/sprockets%2Fcf34626c45538b36718fd50fa9bcb2e6 +0 -0
- data/test/dummy/tmp/cache/assets/D45/2A0/sprockets%2F9c55f3eca763e68ded31023b7f66543a +0 -0
- data/test/dummy/tmp/cache/assets/D48/B20/sprockets%2F5768e2da329c68c958acde5d26124de0 +0 -0
- data/test/dummy/tmp/cache/assets/D48/FD0/sprockets%2F4403ce85c7fe84fe60d426553aa99b1f +0 -0
- data/test/dummy/tmp/cache/assets/D4B/710/sprockets%2F41e4ac5488184198d7e33e18b7aece4f +0 -0
- data/test/dummy/tmp/cache/assets/D4B/C40/sprockets%2F2428f6c76bb4a5efb583e158681fb73d +0 -0
- data/test/dummy/tmp/cache/assets/D51/560/sprockets%2Ff6c8347aff37a4784ea82069ba176f5f +0 -0
- data/test/dummy/tmp/cache/assets/D56/090/sprockets%2F4af17d268e2ffe72af8a78b78811f666 +0 -0
- data/test/dummy/tmp/cache/assets/D57/2C0/sprockets%2F57e8e5954196bd14468ff5db3ae99cd0 +0 -0
- data/test/dummy/tmp/cache/assets/D5F/600/sprockets%2F9c4623e57da4d15adb71bd1b04188b1d +0 -0
- data/test/dummy/tmp/cache/assets/D63/7A0/sprockets%2Fa0d549181d4ba25b5ed57b841efc2d14 +0 -0
- data/test/dummy/tmp/cache/assets/D68/100/sprockets%2F7d7522df5cd3ba1f22c81c653dd5d651 +0 -0
- data/test/dummy/tmp/cache/assets/D6A/5C0/sprockets%2F9b410af44867a4979d1aea0ab84ed24b +0 -0
- data/test/dummy/tmp/cache/assets/D6B/970/sprockets%2F214e29a7345faee9672bca1756e4aaf1 +0 -0
- data/test/dummy/tmp/cache/assets/D6B/D20/sprockets%2Fee6531726dfe6592fa84b42a420b6acd +0 -0
- data/test/dummy/tmp/cache/assets/D70/650/sprockets%2Fe9a55b9e2e492638448a622c2fc0bfab +0 -0
- data/test/dummy/tmp/cache/assets/D71/AF0/sprockets%2Fb289e7b3562dcfd42bd0957f27a2f52a +0 -0
- data/test/dummy/tmp/cache/assets/D73/0F0/sprockets%2F5ba6d2f108d33e64b84fc4dd91960d6e +0 -0
- data/test/dummy/tmp/cache/assets/D73/8B0/sprockets%2Fac0e6a1f5b87c2966f07864c89c0acc3 +0 -0
- data/test/dummy/tmp/cache/assets/D7B/800/sprockets%2F850d92cf676cc2c2c662ee8dc328f82c +0 -0
- data/test/dummy/tmp/cache/assets/D7D/950/sprockets%2F8259f3fc885403b4eea8dd12964c2ffc +0 -0
- data/test/dummy/tmp/cache/assets/D92/430/sprockets%2Fc55e2bbc3d3c5566893be021ec1c4ab7 +0 -0
- data/test/dummy/tmp/cache/assets/D9A/810/sprockets%2F53a9bd5325fcfa4148c273e3deb2d19d +0 -0
- data/test/dummy/tmp/cache/assets/D9D/BA0/sprockets%2Fa3a3f78f8e854339e32a5ab0638abbbf +0 -0
- data/test/dummy/tmp/cache/assets/DA7/930/sprockets%2F06db55d1b7d0c96a4ff1657e169e6ece +0 -0
- data/test/dummy/tmp/cache/assets/DA8/0D0/sprockets%2F74dcf71bbdf4ad56a3b4338b93d9866c +0 -0
- data/test/dummy/tmp/cache/assets/DAD/860/sprockets%2F11e875f5b7f7f5efbad0f6b5f880e244 +0 -0
- data/test/dummy/tmp/cache/assets/DAD/8E0/sprockets%2F498547cbaefbf040cfff05e9c6e53386 +0 -0
- data/test/dummy/tmp/cache/assets/DB0/A80/sprockets%2F9fdb8e951f975dae3836c2ccf0f65a34 +0 -0
- data/test/dummy/tmp/cache/assets/DBC/890/sprockets%2Fa6a1ac17a4326ab9f49d1a74de70f3aa +0 -0
- data/test/dummy/tmp/cache/assets/DC1/9E0/sprockets%2F4fdc113ba37308cc3d7d2dbbe1e9d625 +0 -0
- data/test/dummy/tmp/cache/assets/DCC/170/sprockets%2Fa2b9a6a717a82fc483c94abbe71aa95f +0 -0
- data/test/dummy/tmp/cache/assets/DCD/870/sprockets%2F26f53f256948ecabba69abf1e1dea282 +0 -0
- data/test/dummy/tmp/cache/assets/DD4/980/sprockets%2Fed1289bfd5270a38bd9adfcb8d0627c8 +0 -0
- data/test/dummy/tmp/cache/assets/DD7/110/sprockets%2Fa7626606dec6ffd4a8a4b76abb7f6a94 +0 -0
- data/test/dummy/tmp/cache/assets/DD7/2D0/sprockets%2F9f68c831ccc33f95a6b0a5d7aaf76d8a +0 -0
- data/test/dummy/tmp/cache/assets/E12/820/sprockets%2Ff8ced48d293d9ae81be776bac3d3de86 +0 -0
- data/test/dummy/tmp/cache/assets/E2A/410/sprockets%2F73874a0edbd48f62ca7cad3c4a9e6aca +0 -0
- data/test/dummy/tmp/cache/assets/E3B/7A0/sprockets%2F3c7ac679f8c2cf31dec4ed6ee8064ece +0 -0
- data/test/dummy/tmp/cache/assets/E5A/2A0/sprockets%2Fed33dc2e47cddca2a7f3b9d850f01fef +0 -0
- data/test/dummy/tmp/cache/assets/E8E/C80/sprockets%2Fbcfe97b68b37db0b902decd4ea5ae8ea +0 -0
- data/test/dummy/tmp/capybara/capybara-201308230842396609518899.html +2 -0
- data/test/dummy/tmp/capybara/capybara-201308231131452286985805.html +2 -0
- data/test/dummy/tmp/capybara/capybara-201308231134102302539877.html +80 -0
- data/test/dummy/tmp/capybara/capybara-201308231250391236128298.html +80 -0
- data/test/dummy/tmp/capybara/capybara-201308231253582766291529.html +171 -0
- data/test/dummy/tmp/capybara/capybara-201308240659049618867125.html +171 -0
- data/test/dummy/tmp/capybara/capybara-201308240700213116620673.html +171 -0
- data/test/dummy/tmp/pids/server.pid +1 -0
- metadata +86 -54
- data/app/views/adherent/adhesions/show.html.erb +0 -2
- data/app/views/adherent/coords/index.html.erb +0 -55
- data/app/views/adherent/payments/edit.html.erb +0 -2
- data/app/views/adherent/payments/show.html.erb +0 -2
- data/app/views/adherent/reglements/index.html.erb +0 -2
- data/app/views/adherent/reglements/show.html.erb +0 -2
- data/test/adherent_test.rb +0 -7
- data/test/fixtures/adherent/adhesions.yml +0 -13
- data/test/fixtures/adherent/coords.yml +0 -21
- data/test/fixtures/adherent/members.yml +0 -13
- data/test/fixtures/adherent/payments.yml +0 -19
- data/test/fixtures/adherent/reglements.yml +0 -11
- data/test/functional/adherent/adhesions_controller_test.rb +0 -32
- data/test/functional/adherent/coords_controller_test.rb +0 -53
- data/test/functional/adherent/members_controller_test.rb +0 -55
- data/test/functional/adherent/payments_controller_test.rb +0 -32
- data/test/functional/adherent/reglements_controller_test.rb +0 -25
- data/test/integration/navigation_test.rb +0 -10
- data/test/test_helper.rb +0 -27
- data/test/unit/adherent/adhesion_test.rb +0 -36
- data/test/unit/adherent/coord_test.rb +0 -9
- data/test/unit/adherent/member_test.rb +0 -17
- data/test/unit/adherent/payment_test.rb +0 -24
- data/test/unit/adherent/reglement_test.rb +0 -9
- data/test/unit/helpers/adherent/adhesion_helper_test.rb +0 -6
- data/test/unit/helpers/adherent/coords_helper_test.rb +0 -6
- data/test/unit/helpers/adherent/members_helper_test.rb +0 -6
- data/test/unit/helpers/adherent/payments_helper_test.rb +0 -6
- data/test/unit/helpers/adherent/reglements_helper_test.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc38f0e8374b387fb78018d2256a35d72eaa42a0
|
4
|
+
data.tar.gz: 6da830b9cba2dfb5172b2187667515a232e913c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8929f5da67a218679c1cb133780e9c64e1643c2eb638f9d4d19e5aefcdfc7f3d972fe1809fa7b8a6350eb98480dc05e92dc98ec916ef2e8ecaff7967e4b8c787
|
7
|
+
data.tar.gz: 050ca3b73234556f4b891a1e9827f68478ce33386d2622970e479bfdd59e281f3fb285200ea4bc8e47da2e8d6c1a1570bd6f7e4776495572704c9711935696af
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -21,7 +21,7 @@ module Adherent
|
|
21
21
|
# PUT /adhesions/1
|
22
22
|
# PUT /adhesions/1.json
|
23
23
|
def update
|
24
|
-
@adhesion =
|
24
|
+
@adhesion = @member.adhesions.find(params[:id])
|
25
25
|
|
26
26
|
respond_to do |format|
|
27
27
|
if @adhesion.update_attributes(params[:adhesion])
|
@@ -57,11 +57,7 @@ module Adherent
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
@adhesion= @member.adhesions.find(params[:id])
|
63
|
-
|
64
|
-
end
|
60
|
+
|
65
61
|
|
66
62
|
# DELETE /adhesion/1
|
67
63
|
# DELETE /coords/1.json
|
@@ -6,17 +6,7 @@ module Adherent
|
|
6
6
|
class CoordsController < ApplicationController
|
7
7
|
|
8
8
|
before_filter :find_member, :except=>[:index]
|
9
|
-
|
10
|
-
# GET /coords.json
|
11
|
-
def index
|
12
|
-
@coords = @organism.members.collect {|m| m.coord }
|
13
|
-
|
14
|
-
respond_to do |format|
|
15
|
-
format.html # index.html.erb
|
16
|
-
format.json { render json: @coords }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
9
|
+
|
20
10
|
# GET /coords/1
|
21
11
|
# GET /coords/1.json
|
22
12
|
def show
|
@@ -79,17 +69,7 @@ module Adherent
|
|
79
69
|
end
|
80
70
|
end
|
81
71
|
|
82
|
-
|
83
|
-
# DELETE /coords/1.json
|
84
|
-
def destroy
|
85
|
-
@coord = Coord.find(params[:id])
|
86
|
-
@coord.destroy
|
87
|
-
|
88
|
-
respond_to do |format|
|
89
|
-
format.html { redirect_to coords_url }
|
90
|
-
format.json { head :no_content }
|
91
|
-
end
|
92
|
-
end
|
72
|
+
|
93
73
|
|
94
74
|
protected
|
95
75
|
|
@@ -24,14 +24,8 @@ module Adherent
|
|
24
24
|
render 'new'
|
25
25
|
end
|
26
26
|
end
|
27
|
-
|
28
|
-
|
29
|
-
@payment = @member.payments.find(params[:id])
|
30
|
-
end
|
31
|
-
|
32
|
-
def show
|
33
|
-
@payment = @member.payments.find(params[:id])
|
34
|
-
end
|
27
|
+
|
28
|
+
|
35
29
|
|
36
30
|
# DELETE /payment/1
|
37
31
|
# DELETE /coords/1.json
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Adherent
|
4
4
|
class Adhesion < ActiveRecord::Base
|
5
5
|
|
6
|
-
attr_accessible :from_date, :
|
6
|
+
attr_accessible :from_date, :to_date, :amount
|
7
7
|
|
8
8
|
belongs_to :member
|
9
9
|
has_many :reglements
|
@@ -15,23 +15,25 @@ module Adherent
|
|
15
15
|
pick_date_for :from_date, :to_date
|
16
16
|
|
17
17
|
# partant d'une adhésion, retourne un hash avec les attributs correspondants à
|
18
|
-
# un renouvellement d'adhésion
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
:to_date=>I18n.l(
|
23
|
-
amount:
|
18
|
+
# un renouvellement d'adhésion.
|
19
|
+
# S'il n'y pas d'adhésion, fonctionne avec des valeurs par défaut
|
20
|
+
def self.next_adh_values(montant = 0)
|
21
|
+
{:from_date =>I18n.l(Date.today),
|
22
|
+
:to_date=>I18n.l(Date.today.years_since(1) -1 ),
|
23
|
+
amount: montant
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def next_adh_values(montant = 0)
|
28
|
+
montant = amount if montant == 0
|
29
|
+
{:from_date =>I18n.l(read_attribute(:to_date)+1),
|
30
|
+
:to_date=>I18n.l(read_attribute(:to_date).years_since(1)),
|
31
|
+
amount: montant
|
24
32
|
}
|
25
|
-
else
|
26
|
-
{:from_date=>I18n.l(Date.today),
|
27
|
-
:to_date=>I18n.l(Date.today.years_since(1) - 1),
|
28
|
-
amount:0
|
29
|
-
}
|
30
|
-
end
|
31
33
|
end
|
32
34
|
|
33
35
|
# liste toutes les adhésions qui ne sont pas payées
|
34
|
-
# TODO voir pour faire une requête SQL qui serait surment moins
|
36
|
+
# TODO voir pour faire une requête SQL ou un scope qui serait surment moins
|
35
37
|
# consommatrice de mémoire
|
36
38
|
def self.unpaid
|
37
39
|
all.reject {|adh| adh.is_paid?}
|
@@ -5,33 +5,45 @@ module Adherent
|
|
5
5
|
pick_date_for :birthdate
|
6
6
|
|
7
7
|
belongs_to :organism, class_name: 'Organism'
|
8
|
-
has_one :coord
|
8
|
+
has_one :coord, dependent: :destroy
|
9
9
|
has_many :adhesions
|
10
10
|
has_many :payments
|
11
11
|
|
12
|
-
validates :number, :name, :forname , :presence=>true
|
12
|
+
validates :number, :name, :forname , :organism_id, :presence=>true
|
13
13
|
validates_uniqueness_of :number, :scope=>:organism_id
|
14
14
|
|
15
|
+
# array des adhésions impayées par ordre de date
|
15
16
|
def unpaid_adhesions
|
16
|
-
adhesions.reject {|adh| adh.is_paid? }
|
17
|
+
adhesions.order(:to_date).reject {|adh| adh.is_paid? }
|
17
18
|
end
|
18
19
|
|
20
|
+
# indique s'il y a des adhésions impayées pour ce membre
|
19
21
|
def unpaid_adhesions?
|
20
22
|
unpaid_adhesions.any?
|
21
23
|
end
|
22
24
|
|
25
|
+
# donne le montant total des adhésions impayées
|
23
26
|
def unpaid_amount
|
24
27
|
unpaid_adhesions.sum(&:due)
|
25
28
|
end
|
26
29
|
|
30
|
+
# renvoie le prenom NOM
|
27
31
|
def to_s
|
28
|
-
[forname, name.
|
32
|
+
[forname, name.upcase].join(' ')
|
29
33
|
end
|
30
34
|
|
31
|
-
|
35
|
+
# renvoie une nouvelle adhésion préremplie avec les éléments issus de la
|
36
|
+
# dernière adhésion.
|
37
|
+
# il est possible d'imposer le montant si nécessaire
|
38
|
+
def next_adhesion(amount = nil)
|
39
|
+
amount ||= 0
|
32
40
|
adh = adhesions(true).order('to_date').last
|
33
|
-
|
34
|
-
|
41
|
+
if adh
|
42
|
+
vals = adh.next_adh_values(amount)
|
43
|
+
else
|
44
|
+
vals = Adhesion::next_adh_values(amount)
|
45
|
+
end
|
46
|
+
adhesions.new(vals)
|
35
47
|
end
|
36
48
|
|
37
49
|
end
|
@@ -6,7 +6,7 @@ module Adherent
|
|
6
6
|
|
7
7
|
attr_accessible :amount, :date, :mode
|
8
8
|
|
9
|
-
validates :amount, :date, :mode, presence:true
|
9
|
+
validates :amount, :date, :mode, :member_id, presence:true
|
10
10
|
|
11
11
|
pick_date_for :date
|
12
12
|
|
@@ -17,44 +17,47 @@ module Adherent
|
|
17
17
|
|
18
18
|
after_create :imputation
|
19
19
|
|
20
|
+
# Pour faire une imputation sur une adhesion dont l'id est transmise en argument.
|
21
|
+
# Utile lorsque le payment est fait par un membre pour payer l'adhésion d'un tiers
|
22
|
+
# (par exemple un membre de sa famille).
|
23
|
+
# TODO faire que la valeur de retour soit true ou false pour
|
24
|
+
# que la méthode créate du controller puisse tester et rediriger en conséquence
|
25
|
+
def imputation_on_adh(adh_id)
|
26
|
+
Adhesion.find(adh_id).add_reglement(id, non_impute)
|
27
|
+
end
|
28
|
+
|
29
|
+
# calcule le montant du paiement qui n'a pas été imputé, donc qui
|
30
|
+
# ne correspond pas à des réglements
|
31
|
+
def non_impute
|
32
|
+
amount - reglements(true).sum(:amount)
|
33
|
+
end
|
34
|
+
|
20
35
|
|
36
|
+
protected
|
21
37
|
# quand on reçoit un paiement, il faut en réaliser l'imputation,
|
22
38
|
# plusieurs cas de figure sont à envisager.
|
23
39
|
#
|
24
|
-
# Le cas le plus simple est lorsque le montant est inférieur ou égal
|
40
|
+
# Le cas le plus simple est lorsque le montant est inférieur ou égal aux
|
25
41
|
# montant dus par le membre pour les adhésions en cours.
|
26
42
|
#
|
27
|
-
# Donc on impute sur les adhésions du membre non soldées
|
28
|
-
#
|
29
|
-
#
|
43
|
+
# Donc on impute sur les adhésions du membre non soldées en commençant par les
|
44
|
+
# plus anciennes.
|
30
45
|
#
|
31
46
|
#
|
32
47
|
def imputation
|
33
48
|
# liste les adhésions non soldées et le montant total dû
|
34
49
|
# pour chaque adhésion non soldée (prise dans l'ordre chrono)
|
35
50
|
# on crée un réglement du montant dû dans la limité du montant du paiement.
|
36
|
-
un_paid_adhs = member.adhesions.order(:to_date).reject {|adh| adh.is_paid?}
|
37
51
|
a_imputer = amount
|
38
|
-
|
52
|
+
member.unpaid_adhesions.each do |adh|
|
39
53
|
if a_imputer > 0
|
40
|
-
|
41
|
-
a_imputer -=
|
54
|
+
reglemt = adh.add_reglement(id, a_imputer)
|
55
|
+
a_imputer -= reglemt.amount
|
42
56
|
end
|
43
57
|
end
|
44
58
|
end
|
45
59
|
|
46
|
-
# pour faire une imputation sur une adhesion dont l'id est transmise en argument
|
47
|
-
# TODO faire que la valeur de retour soit true ou false pour
|
48
|
-
# que la méthode créate du controller puisse tester et rediriger en conséquence
|
49
|
-
def imputation_on_adh(adh_id)
|
50
|
-
Adhesion.find(adh_id).add_reglement(id, amount)
|
51
|
-
end
|
52
60
|
|
53
|
-
# calcule le montant du paiement qui n'a pas été imputé, donc qui
|
54
|
-
# ne correspond pas à des réglements
|
55
|
-
def non_impute
|
56
|
-
amount - reglements(true).sum(:amount)
|
57
|
-
end
|
58
61
|
|
59
62
|
end
|
60
63
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
|
2
2
|
<%= content_for :menu do %>
|
3
|
-
<%=
|
3
|
+
<%= icon_to_users %>
|
4
4
|
<%= icon_to 'modifier.png', edit_member_coord_path(@member) %>
|
5
5
|
|
6
6
|
<% end -%>
|
7
7
|
|
8
8
|
<div class="champ">
|
9
|
-
<h3>Fiche <%= I18n::t('coord').pluralize %> <%= "#{@member.
|
9
|
+
<h3>Fiche <%= I18n::t('coord').pluralize %> <%= "#{@member.to_s}" %></h3>
|
10
10
|
</div>
|
11
11
|
<div class="row-fluid inner-champ">
|
12
12
|
|
@@ -1,8 +1,7 @@
|
|
1
1
|
<%= content_for :menu do %>
|
2
|
+
<%= icon_to 'users.png', members_path, title:'Liste des membres' %>
|
3
|
+
<%= icon_to 'card-address.png', member_coord_path(@member), title:'Coordonnées' %>
|
2
4
|
|
3
|
-
<%= icon_to 'nouveau.png', new_member_path %>
|
4
|
-
<%= icon_to 'detail.png', @member %>
|
5
|
-
<%= icon_to 'retour.png', :back %>
|
6
5
|
<% end -%>
|
7
6
|
|
8
7
|
<div class="champ">
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<%= content_for :menu do %>
|
2
|
-
<%= icon_to '
|
3
|
-
<%= icon_to '
|
2
|
+
<%= icon_to 'home.png', main_app.root_path %>
|
3
|
+
<%= icon_to 'user-plus.png', new_member_path %>
|
4
4
|
<% end -%>
|
5
5
|
|
6
6
|
|
7
7
|
<div class="champ">
|
8
8
|
|
9
9
|
|
10
|
-
<h3>
|
10
|
+
<h3>Liste des <%= I18n::t('members') %></h3>
|
11
11
|
<table class="table table-striped table-bordered table-condensed" cellpadding="0" cellspacing="0" border="0">
|
12
12
|
<thead>
|
13
13
|
<tr>
|
@@ -36,12 +36,12 @@
|
|
36
36
|
<td><%= member.birthdate %></td>
|
37
37
|
<td><%= member.coord ? member.coord.mail : '' %>
|
38
38
|
<td><%= member.coord ? member.coord.tel : '' %>
|
39
|
-
<td><%= icon_to '
|
40
|
-
<%= icon_to '
|
39
|
+
<td><%= icon_to 'card-address.png', member_coord_path(member), title:'Coordonnées', id:"coord_member_#{member.id}" %>
|
40
|
+
<%= icon_to 'bandaid.png', member_adhesions_path(member), title:'Liste des adhésions', id:"adhesion_member_#{member.id}"%>
|
41
41
|
|
42
|
-
<%= icon_to 'payment.png', member_payments_path(member), title: 'Liste des paiements' %>
|
43
|
-
<%= icon_to 'modifier.png', edit_member_path(member) %>
|
44
|
-
<%= icon_to 'supprimer.png', member, :confirm => 'Etes vous sur ?', :method => :delete %></td>
|
42
|
+
<%= icon_to 'payment.png', member_payments_path(member), title: 'Liste des paiements' , id:"payment_member_#{member.id}"%>
|
43
|
+
<%= icon_to 'modifier.png', edit_member_path(member) , id:"edit_member_#{member.id}" %>
|
44
|
+
<%= icon_to 'supprimer.png', member, id:"delete_member_#{member.id}", :confirm => 'Etes vous sur ?', :method => :delete %></td>
|
45
45
|
</tr>
|
46
46
|
<% end %>
|
47
47
|
</tbody>
|
@@ -1,9 +1,10 @@
|
|
1
1
|
|
2
2
|
<%= content_for :menu do %>
|
3
|
-
|
3
|
+
<%= icon_to 'users.png', members_path, title:'Liste des membres' %>
|
4
|
+
<%= icon_to 'card-address.png', member_coord_path(@member) , title:'Coordonées' %>
|
4
5
|
<%= icon_to 'modifier.png', edit_member_path(@member) %>
|
5
|
-
|
6
|
-
|
6
|
+
|
7
|
+
|
7
8
|
<% end -%>
|
8
9
|
|
9
10
|
<div class="champ">
|