artfully_ose 1.2.0.pre.6 → 1.2.0.pre.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/controllers/membership_types_controller.rb +9 -1
- data/app/mailers/reports_mailer.rb +2 -1
- data/app/models/daily_membership_report.rb +44 -0
- data/app/models/job/daily_email_report_job.rb +4 -2
- data/app/models/membership.rb +1 -1
- data/app/models/membership_type.rb +1 -1
- data/app/models/rolling_membership_type.rb +9 -0
- data/app/models/search.rb +46 -12
- data/app/models/seasonal_membership_type.rb +2 -0
- data/app/views/membership_types/_form.html.haml +10 -16
- data/app/views/membership_types/_rolling_membership_type_form.html.haml +5 -0
- data/app/views/membership_types/_seasonal_membership_type_form.html.haml +8 -0
- data/app/views/membership_types/index.html.haml +4 -6
- data/app/views/membership_types/type.html.haml +16 -0
- data/app/views/reports_mailer/daily.html.haml +47 -15
- data/app/views/searches/_form.html.haml +2 -2
- data/app/views/store/memberships/index.html.haml +1 -1
- data/config/routes.rb +4 -0
- data/db/migrate/20131011154027_add_purchased_to_searches.rb +5 -0
- data/db/migrate/20131013144010_add_type_to_membership_type.rb +5 -0
- data/db/migrate/20131013150230_add_duration_to_membership_type.rb +6 -0
- data/db/migrate/20131013192807_change_number_of_shows_to_tickets.rb +5 -0
- data/lib/artfully_ose/version.rb +1 -1
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YzQxYTM0Zjg3MzYyNmExODYwMjczYjYwYzQzY2YzZTI1ZjgwNjcyNg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDU3MzllOGU0Mjc3ODFiMjlkNTI0OWYwZjg4ODc2YjBkZTEwMTZiOQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWFkMmYwNWQ1ZDExNjY5NzUwN2Q4ODg4MDUyM2QzNTM4ZTE0ZGEwM2Q4MDA4
|
10
|
+
NWEwYTE3MzFiMTA0ZTVjMGE1YWRlM2ExNjY3ZWI4OGUxZTU5ZmU0YWQwYmNl
|
11
|
+
YzViY2Y3N2MzODY3MjQzZWMzMDFhODc1MGQ0N2YxYjQxOWM0MGM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzllOGQzNzMyMGMzM2NiMDJmYTUwOWM1YjM0MGI0OWYxNzRlMWE2YzZjZjI2
|
14
|
+
Nzc3ZTc0ODhiZThmNTIyODdjYzYzNjJmNmZjOWI0MTFjOWNhZWZlYzk2ZmI4
|
15
|
+
YzhhZTQ0YmY2OThhYjhiZWQzZDc5OGM2MTYwNGI3ZGQ4ZjU5OGE=
|
@@ -4,7 +4,9 @@ class MembershipTypesController < ArtfullyOseController
|
|
4
4
|
end
|
5
5
|
|
6
6
|
def new
|
7
|
-
|
7
|
+
with_type_selected do
|
8
|
+
@membership_type = Kernel.const_get(params[:type].camelize).new
|
9
|
+
end
|
8
10
|
end
|
9
11
|
|
10
12
|
def create
|
@@ -17,4 +19,10 @@ class MembershipTypesController < ArtfullyOseController
|
|
17
19
|
def edit
|
18
20
|
@membership_type = MembershipType.find(params[:id])
|
19
21
|
end
|
22
|
+
|
23
|
+
private
|
24
|
+
def with_type_selected
|
25
|
+
render :type and return if params[:type].blank?
|
26
|
+
yield
|
27
|
+
end
|
20
28
|
end
|
@@ -3,9 +3,10 @@ class ReportsMailer < ActionMailer::Base
|
|
3
3
|
layout "mail"
|
4
4
|
add_template_helper(ArtfullyOseHelper)
|
5
5
|
|
6
|
-
def daily(tix, donations)
|
6
|
+
def daily(tix, donations, memberships)
|
7
7
|
@tix = tix
|
8
8
|
@donations = donations
|
9
|
+
@memberships = memberships
|
9
10
|
mail to: @tix.organization.owner.email, bcc: "developers@fracturedatlas.org", subject: "Daily Report for #{@tix.start_date.strftime("%b %d, %Y")}"
|
10
11
|
end
|
11
12
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
class DailyMembershipReport
|
2
|
+
attr_accessor :rows, :start_date, :organization
|
3
|
+
extend ::ArtfullyOseHelper
|
4
|
+
|
5
|
+
def initialize(organization, date=nil)
|
6
|
+
@organization = organization
|
7
|
+
@start_date = (date || 1.day.ago).in_time_zone(@organization.time_zone).midnight
|
8
|
+
@end_date = @start_date + 1.day
|
9
|
+
orders = organization.orders.includes(:person, :items => :product)
|
10
|
+
orders = orders.csv_not_imported.after(@start_date).before(@end_date) || []
|
11
|
+
|
12
|
+
@rows = []
|
13
|
+
orders.each do |order|
|
14
|
+
next if order.memberships.empty?
|
15
|
+
next if !order.revenue_applies_to_range(@start_date, @end_date)
|
16
|
+
|
17
|
+
unique_memberships = order.memberships.collect{|item| item.product.membership_type.name}.uniq
|
18
|
+
unique_memberships.each do |membership_type_name|
|
19
|
+
@rows << Row.new(order.items.select {|item| item.product.membership_type.name == membership_type_name})
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def total
|
25
|
+
@rows.collect(&:order).sum{|o| o.memberships.sum(&:total_price)}
|
26
|
+
end
|
27
|
+
|
28
|
+
class Row
|
29
|
+
attr_accessor :id, :details, :total, :person, :person_id, :order, :quantity, :membership
|
30
|
+
def initialize(items)
|
31
|
+
@order = items.first.order
|
32
|
+
@id = items.first.order.id
|
33
|
+
@membership = items.first.product.membership_type.name
|
34
|
+
@quantity = items.length
|
35
|
+
@total = DailyMembershipReport.number_to_currency(items.sum(&:price).to_f/100)
|
36
|
+
@person = items.first.order.person
|
37
|
+
@person_id = items.first.order.person.id
|
38
|
+
end
|
39
|
+
|
40
|
+
def calculate_total
|
41
|
+
DailyMembershipReport.number_to_currency(@order.memberships.sum(&:price).to_f/100)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -11,8 +11,10 @@ class DailyEmailReportJob
|
|
11
11
|
Organization.where(:id => org_ids).receiving_sales_email.each do |org|
|
12
12
|
tickets = DailyTicketReport.new(org, date)
|
13
13
|
donations = DailyDonationReport.new(org, date)
|
14
|
-
|
15
|
-
|
14
|
+
memberships = DailyMembershipReport.new(org, date)
|
15
|
+
|
16
|
+
next if tickets.rows.empty? && donations.rows.empty? && tickets.exchange_rows.empty? && memberships.rows.empty?
|
17
|
+
ReportsMailer.daily(tickets, donations, memberships).deliver
|
16
18
|
end
|
17
19
|
end
|
18
20
|
end
|
data/app/models/membership.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class MembershipType < ActiveRecord::Base
|
2
|
-
attr_accessible :name, :price, :fee, :number_of_shows, :plan, :on_sale, :description, :ends_at, :starts_at
|
2
|
+
attr_accessible :name, :price, :fee, :number_of_shows, :plan, :on_sale, :description, :ends_at, :starts_at, :duration, :type, :period
|
3
3
|
|
4
4
|
belongs_to :organization
|
5
5
|
has_many :memberships
|
data/app/models/search.rb
CHANGED
@@ -5,8 +5,9 @@ class Search < ActiveRecord::Base
|
|
5
5
|
belongs_to :membership_type
|
6
6
|
validates_presence_of :organization_id
|
7
7
|
|
8
|
-
attr_accessible :zip, :state,
|
9
|
-
:
|
8
|
+
attr_accessible :zip, :state,
|
9
|
+
:has_purchased_for, :event_id,
|
10
|
+
:tagging, :person_type, :person_subtype,
|
10
11
|
:min_lifetime_value, :max_lifetime_value,
|
11
12
|
:min_donations_amount, :max_donations_amount,
|
12
13
|
:min_donations_date, :max_donations_date, :discount_code,
|
@@ -34,8 +35,15 @@ class Search < ActiveRecord::Base
|
|
34
35
|
conditions = []
|
35
36
|
|
36
37
|
conditions << "Are tagged with #{tagging}." if tagging.present?
|
37
|
-
|
38
|
-
|
38
|
+
|
39
|
+
if event_id.present?
|
40
|
+
if has_purchased_for
|
41
|
+
conditions << "Purchased tickets for #{event.name}."
|
42
|
+
else
|
43
|
+
conditions << "Have not purchased tickets for #{event.name}."
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
39
47
|
if zip.present? || state.present?
|
40
48
|
locations = []
|
41
49
|
locations << state if state.present?
|
@@ -82,10 +90,7 @@ class Search < ActiveRecord::Base
|
|
82
90
|
conditions << "Are #{state_str} members"
|
83
91
|
end
|
84
92
|
|
85
|
-
if membership_type_id.present?
|
86
|
-
people = people.joins(:member => [:memberships => [:membership_type]])
|
87
|
-
people = people.where('membership_types.id = ?', membership_type_id)
|
88
|
-
end
|
93
|
+
conditions << "Are #{membership_type.name} members" if membership_type_id.present?
|
89
94
|
|
90
95
|
String.new.tap do |s|
|
91
96
|
if conditions.blank?
|
@@ -128,7 +133,20 @@ class Search < ActiveRecord::Base
|
|
128
133
|
|
129
134
|
people = people.tagged_with(tagging) unless tagging.blank?
|
130
135
|
people = people.joins(:address) unless zip.blank? && state.blank?
|
131
|
-
|
136
|
+
|
137
|
+
if event_id.present?
|
138
|
+
people = people.joins("LEFT JOIN `tickets` ON `tickets`.`buyer_id` = `people`.`id` ")
|
139
|
+
.joins("LEFT JOIN `shows` ON `shows`.`id` = `tickets`.`show_id` ")
|
140
|
+
.joins("LEFT JOIN `events` ON `events`.`id` = `shows`.`event_id`")
|
141
|
+
|
142
|
+
if has_purchased_for
|
143
|
+
people = people.where("events.id" => event_id)
|
144
|
+
else
|
145
|
+
people = people.where("`events`.`id` <> ? or events.id is null", event_id)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
|
132
150
|
people = people.where("addresses.zip" => zip.to_s) unless zip.blank?
|
133
151
|
people = people.where("addresses.state" => state) unless state.blank?
|
134
152
|
people = people.where("people.lifetime_value >= ?", min_lifetime_value * 100.0) unless min_lifetime_value.blank?
|
@@ -155,10 +173,12 @@ class Search < ActiveRecord::Base
|
|
155
173
|
|
156
174
|
### MEMBERSHIP ##
|
157
175
|
|
158
|
-
if
|
176
|
+
if searching_membership?
|
159
177
|
#Necessary because we need a left join for the "Not" condition to work
|
160
178
|
people = people.joins('left join members on members.person_id = people.id')
|
161
|
-
|
179
|
+
end
|
180
|
+
|
181
|
+
if membership_status.present?
|
162
182
|
people = people.merge(Member.current) if membership_status == "Current"
|
163
183
|
people = people.merge(Member.lapsed) if membership_status == "Lapsed"
|
164
184
|
people = people.merge(Member.past) if membership_status == "Past"
|
@@ -166,10 +186,24 @@ class Search < ActiveRecord::Base
|
|
166
186
|
end
|
167
187
|
|
168
188
|
if membership_type_id.present?
|
169
|
-
|
189
|
+
|
190
|
+
#
|
191
|
+
# this really stinks, but activereocrd.joins can't do a left join (needed for :person => :member)
|
192
|
+
# Good opportunity for a Rails pull request
|
193
|
+
#
|
194
|
+
people = people.joins('inner join memberships on members.id = memberships.member_id')
|
195
|
+
people = people.joins('inner join membership_types on membership_types.id = memberships.membership_type_id')
|
196
|
+
|
170
197
|
people = people.where('membership_types.id = ?', membership_type_id)
|
171
198
|
end
|
172
199
|
|
173
200
|
people.select(column_names).uniq
|
174
201
|
end
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
def searching_membership?
|
206
|
+
membership_status.present? ||
|
207
|
+
membership_type_id.present?
|
208
|
+
end
|
175
209
|
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
=form_for @membership_type, :html => { :class => 'form-horizontal' } do |f|
|
1
|
+
=form_for @membership_type, :as => :membership_type, :html => { :class => 'form-horizontal' } do |f|
|
2
|
+
=f.hidden_field :type, :value => params[:type]
|
2
3
|
%fieldset
|
3
4
|
.control-group
|
4
5
|
= f.label :name, "Name", :class => 'control-label'
|
@@ -7,11 +8,7 @@
|
|
7
8
|
.control-group
|
8
9
|
= f.label :description, "Description", :class => 'control-label'
|
9
10
|
.controls
|
10
|
-
= f.text_area :description
|
11
|
-
.control-group
|
12
|
-
= f.label :plan, "Plan", :class => 'control-label'
|
13
|
-
.controls
|
14
|
-
= f.select :plan, ["All In One", "Pay As You Go"]
|
11
|
+
= f.text_area :description, :rows => "5"
|
15
12
|
.control-group
|
16
13
|
= f.label :price, "Price", :class => 'control-label'
|
17
14
|
.controls
|
@@ -21,17 +18,14 @@
|
|
21
18
|
.controls
|
22
19
|
= f.text_field :fee, :class => 'input-small section-price currency'
|
23
20
|
.control-group
|
24
|
-
= f.label :
|
25
|
-
.controls
|
26
|
-
= f.text_field :number_of_shows
|
27
|
-
.control-group
|
28
|
-
= f.label :starts_at, "Mebership Begins", :class => 'control-label'
|
29
|
-
.controls
|
30
|
-
= f.text_field :starts_at, :class => :datepicker
|
31
|
-
.control-group
|
32
|
-
= f.label :ends_at, "Membership Ends", :class => 'control-label'
|
21
|
+
= f.label :number_of_tickets, "Number of Tickets", :class => 'control-label'
|
33
22
|
.controls
|
34
|
-
= f.text_field :
|
23
|
+
= f.text_field :number_of_tickets, :class => "span1"
|
24
|
+
|
25
|
+
|
26
|
+
=render "membership_types/#{@membership_type.class.name.underscore}_form", :f => f
|
27
|
+
|
28
|
+
|
35
29
|
.control-group
|
36
30
|
= f.label :on_sale, "On Sale", :class => 'control-label checkbox'
|
37
31
|
.controls
|
@@ -0,0 +1,8 @@
|
|
1
|
+
.control-group
|
2
|
+
= f.label :starts_at, "Mebership Begins", :class => 'control-label'
|
3
|
+
.controls
|
4
|
+
= f.text_field :starts_at, :class => :datepicker
|
5
|
+
.control-group
|
6
|
+
= f.label :ends_at, "Membership Ends", :class => 'control-label'
|
7
|
+
.controls
|
8
|
+
= f.text_field :ends_at, :class => :datepicker
|
@@ -8,20 +8,18 @@
|
|
8
8
|
|
9
9
|
%table.table
|
10
10
|
%tr
|
11
|
-
%th
|
12
|
-
%th.right Plan
|
11
|
+
%th Name
|
13
12
|
%th.right Members
|
13
|
+
%th.right Tickets
|
14
14
|
%th.right Price
|
15
15
|
%th.right Fee
|
16
|
-
%th.right Shows
|
17
16
|
%th.right On Sale
|
18
17
|
-@membership_types.each do |membership_type|
|
19
18
|
%tr
|
20
|
-
%td
|
21
|
-
%td.right=membership_type.plan
|
19
|
+
%td=link_to membership_type.name, edit_membership_type_path(membership_type)
|
22
20
|
%td.right=link_to membership_type.members.count, segment_path(membership_type.segment)
|
21
|
+
%td.right=membership_type.number_of_tickets || "unlimited"
|
23
22
|
%td.right=number_as_cents membership_type.price
|
24
23
|
%td.right=number_as_cents membership_type.fee
|
25
|
-
%td.right=membership_type.number_of_shows
|
26
24
|
%td.right
|
27
25
|
=check_mark if membership_type.on_sale?
|
@@ -0,0 +1,16 @@
|
|
1
|
+
.row
|
2
|
+
.span8.offset2
|
3
|
+
%h3 What type of membership is this?
|
4
|
+
.row-fluid
|
5
|
+
.span6
|
6
|
+
%h4 Season
|
7
|
+
%p
|
8
|
+
Do your members sign up for a theatrical season or other fixed-expiration?
|
9
|
+
.style-selection.center
|
10
|
+
=link_to "Setup Seasonal Membership", new_membership_type_path(:type => "SeasonalMembershipType"), :class => :btn
|
11
|
+
.span6
|
12
|
+
%h4 Rolling
|
13
|
+
%p
|
14
|
+
Do your members sign up for monthly or yearly memberships?
|
15
|
+
.style_selection.center
|
16
|
+
=link_to "Setup Rolling Membership", new_membership_type_path(:type => "RollingMembershipType"), :class => :btn
|
@@ -4,6 +4,14 @@
|
|
4
4
|
=l @tix.start_date, :format => :date
|
5
5
|
= number_to_currency((@tix.total + @donations.total) / 100.0)
|
6
6
|
|
7
|
+
:css
|
8
|
+
th.order { width: 60px; }
|
9
|
+
th.customer { width: 140px;}
|
10
|
+
th.total { width: 80px; text-align: right }
|
11
|
+
td.total { text-align: right }
|
12
|
+
td { vertical-align: top}
|
13
|
+
table { margin-bottom: 50px }
|
14
|
+
|
7
15
|
%h1
|
8
16
|
Daily Total: #{number_to_currency((@tix.total + @donations.total) / 100.0)}
|
9
17
|
%h2
|
@@ -13,28 +21,30 @@
|
|
13
21
|
%h3 Tickets: #{number_to_currency(@tix.total / 100.0)}
|
14
22
|
%table.tabular-data{:cellspacing => "0"}
|
15
23
|
%tr
|
16
|
-
%th Order
|
17
|
-
%th
|
18
|
-
%th
|
19
|
-
%th.
|
20
|
-
%th Special Instructions
|
24
|
+
%th.order Order
|
25
|
+
%th.customer Customer
|
26
|
+
%th Details
|
27
|
+
%th.total Total
|
21
28
|
- @tix.rows.each do |row|
|
22
29
|
%tr
|
23
30
|
%td.order-number= link_to row.id, order_url(id: row.id)
|
24
|
-
%td.total= row.total
|
25
31
|
%td= link_to row.person, person_url(id: row.person_id)
|
26
|
-
%td
|
27
|
-
|
32
|
+
%td
|
33
|
+
= row.ticket_details
|
34
|
+
%br
|
35
|
+
%br
|
36
|
+
= row.special_instructions
|
37
|
+
%td.total= row.total
|
38
|
+
|
28
39
|
- else
|
29
40
|
%p There were no ticket orders placed.
|
30
41
|
|
31
|
-
|
32
42
|
- if ! @tix.exchange_rows.empty?
|
33
43
|
%h3 Exchanges
|
34
44
|
%table.tabular-data{:cellspacing => "0"}
|
35
45
|
%tr
|
36
|
-
%th Order
|
37
|
-
%th Customer
|
46
|
+
%th.order Order
|
47
|
+
%th.customer Customer
|
38
48
|
%th Details
|
39
49
|
- @tix.exchange_rows.each do |row|
|
40
50
|
%tr
|
@@ -46,17 +56,39 @@
|
|
46
56
|
%h3 Donations: #{number_to_currency(@donations.total / 100.0)}
|
47
57
|
%table.tabular-data{:cellspacing => "0"}
|
48
58
|
%tr
|
49
|
-
%th Order
|
50
|
-
%th
|
51
|
-
%th
|
59
|
+
%th.order Order
|
60
|
+
%th.customer Customer
|
61
|
+
%th Details
|
62
|
+
%t.total Total
|
52
63
|
- @donations.rows.each do |row|
|
53
64
|
%tr
|
54
65
|
%td.order-number= link_to row.id, order_url(id: row.id)
|
55
|
-
%td.total= row.total
|
56
66
|
%td= link_to row.person, person_url(id: row.person_id)
|
67
|
+
%td
|
68
|
+
%td.total= row.total
|
57
69
|
- elsif @tix.organization.has_kit?(:regular_donation)
|
58
70
|
%p There were no donations made.
|
59
71
|
|
72
|
+
|
73
|
+
- if !@memberships.rows.empty?
|
74
|
+
%h3 Memberships: #{number_to_currency(@memberships.total / 100.0)}
|
75
|
+
%table.tabular-data{:cellspacing => "0"}
|
76
|
+
%tr
|
77
|
+
%th.order Order
|
78
|
+
%th.customer Customer
|
79
|
+
%th #
|
80
|
+
%th Membership
|
81
|
+
%th.total Total
|
82
|
+
- @memberships.rows.each do |row|
|
83
|
+
%tr
|
84
|
+
%td.order-number= link_to row.id, order_url(id: row.id)
|
85
|
+
%td= link_to row.person, person_url(id: row.person_id)
|
86
|
+
%td=row.quantity
|
87
|
+
%td=row.membership
|
88
|
+
%td.total= row.total
|
89
|
+
- else
|
90
|
+
%p There were no memberhsips purchased.
|
91
|
+
|
60
92
|
- content_for :footer do
|
61
93
|
= render :partial => "fine_print"
|
62
94
|
%p
|
@@ -29,7 +29,7 @@
|
|
29
29
|
Events
|
30
30
|
#collapseTwo.accordion-body.collapse
|
31
31
|
.accordion-inner
|
32
|
-
|
32
|
+
= f.select :has_purchased_for, options_for_select([["Purchaed tickets for", true], ["Have not purchased for", false]], selected: search.has_purchased_for)
|
33
33
|
= f.select :event_id, options_for_select(@event_options, selected: search.event_id), include_blank: ""
|
34
34
|
|
35
35
|
.accordion-group
|
@@ -99,7 +99,7 @@
|
|
99
99
|
Type
|
100
100
|
#collapseEight.accordion-body.collapse
|
101
101
|
.accordion-inner
|
102
|
-
= f.select :membership_type_id, options_from_collection_for_select(@membership_types, 'id', 'name', @search.
|
102
|
+
= f.select :membership_type_id, options_from_collection_for_select(@membership_types, 'id', 'name', @search.membership_type_id), include_blank: ""
|
103
103
|
|
104
104
|
/ .accordion-group
|
105
105
|
/ .accordion-heading
|
@@ -23,7 +23,7 @@
|
|
23
23
|
%br
|
24
24
|
%br
|
25
25
|
.section
|
26
|
-
= form_for membership_type, :url => store_order_path(@store_organization.cached_slug), :method => :post do |f|
|
26
|
+
= form_for membership_type, :as => :membership_type, :url => store_order_path(@store_organization.cached_slug), :method => :post do |f|
|
27
27
|
= f.hidden_field :id
|
28
28
|
= select_tag :quantity, options_for_select((1..6).to_a.map {|i| [pluralize(i, "#{membership_type.name} Membership"), i]})
|
29
29
|
= f.submit 'Add to cart', :class => 'btn btn-primary', :style => 'margin-top: -10px'
|
data/config/routes.rb
CHANGED
@@ -15,6 +15,8 @@ Rails.application.routes.draw do
|
|
15
15
|
namespace :store do
|
16
16
|
resources :events, :only => [:show, :index]
|
17
17
|
resources :memberships, :only => :index
|
18
|
+
resources :rolling_membership_types, :controller => :membership_types
|
19
|
+
resources :seasonal_membership_types, :controller => :membership_types
|
18
20
|
resources :shows, :only => :show
|
19
21
|
resource :checkout, :only => :create
|
20
22
|
|
@@ -221,6 +223,8 @@ Rails.application.routes.draw do
|
|
221
223
|
resources :comps, :only => [ :new, :create ]
|
222
224
|
resources :merges, :only => [ :new, :create ]
|
223
225
|
resources :membership_types
|
226
|
+
resources :rolling_membership_types, :controller => :membership_types
|
227
|
+
resources :seasonal_membership_types, :controller => :membership_types
|
224
228
|
resources :membership_awards, :only => :create
|
225
229
|
|
226
230
|
resources :imports do
|
data/lib/artfully_ose/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: artfully_ose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.0.pre.
|
4
|
+
version: 1.2.0.pre.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artful.ly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -1937,6 +1937,7 @@ files:
|
|
1937
1937
|
- app/models/company.rb
|
1938
1938
|
- app/models/contribution.rb
|
1939
1939
|
- app/models/daily_donation_report.rb
|
1940
|
+
- app/models/daily_membership_report.rb
|
1940
1941
|
- app/models/daily_ticket_report.rb
|
1941
1942
|
- app/models/database_views/item_view.rb
|
1942
1943
|
- app/models/database_views/order_view.rb
|
@@ -2016,9 +2017,11 @@ files:
|
|
2016
2017
|
- app/models/phone.rb
|
2017
2018
|
- app/models/refund.rb
|
2018
2019
|
- app/models/return.rb
|
2020
|
+
- app/models/rolling_membership_type.rb
|
2019
2021
|
- app/models/sale.rb
|
2020
2022
|
- app/models/sale_search.rb
|
2021
2023
|
- app/models/search.rb
|
2024
|
+
- app/models/seasonal_membership_type.rb
|
2022
2025
|
- app/models/section.rb
|
2023
2026
|
- app/models/section_summary.rb
|
2024
2027
|
- app/models/segment.rb
|
@@ -2156,9 +2159,12 @@ files:
|
|
2156
2159
|
- app/views/membership_awards/create.html.haml
|
2157
2160
|
- app/views/membership_awards/new.html.haml
|
2158
2161
|
- app/views/membership_types/_form.html.haml
|
2162
|
+
- app/views/membership_types/_rolling_membership_type_form.html.haml
|
2163
|
+
- app/views/membership_types/_seasonal_membership_type_form.html.haml
|
2159
2164
|
- app/views/membership_types/edit.html.haml
|
2160
2165
|
- app/views/membership_types/index.html.haml
|
2161
2166
|
- app/views/membership_types/new.html.haml
|
2167
|
+
- app/views/membership_types/type.html.haml
|
2162
2168
|
- app/views/memberships/index.html.haml
|
2163
2169
|
- app/views/merges/_merge_preview_person.html.haml
|
2164
2170
|
- app/views/merges/find_person.html.haml
|
@@ -2389,6 +2395,10 @@ files:
|
|
2389
2395
|
- db/migrate/20131002191646_create_show_stats_view.rb
|
2390
2396
|
- db/migrate/20131007141421_add_counters_to_member.rb
|
2391
2397
|
- db/migrate/20131007144456_remove_expires_at_from_membership.rb
|
2398
|
+
- db/migrate/20131011154027_add_purchased_to_searches.rb
|
2399
|
+
- db/migrate/20131013144010_add_type_to_membership_type.rb
|
2400
|
+
- db/migrate/20131013150230_add_duration_to_membership_type.rb
|
2401
|
+
- db/migrate/20131013192807_change_number_of_shows_to_tickets.rb
|
2392
2402
|
- lib/artfully_ose/common_abilities.rb
|
2393
2403
|
- lib/artfully_ose/core_ext.rb
|
2394
2404
|
- lib/artfully_ose/engine.rb
|