artfully_ose 1.2.0.pre.6 → 1.2.0.pre.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|