artfully_ose 1.2.0.pre.3 → 1.2.0.pre.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDQ5MzdhZmU4MmM3OTExYjViMGExNTY2OWU4ZTcxMWEyM2U5YTQxNQ==
4
+ NmQ2NGM0MWY2M2QxY2I0ZDJkNDIxZjExZjM4YTVjM2FmNDhmNzg4ZQ==
5
5
  data.tar.gz: !binary |-
6
- MTNiYWI5ZThiMTQwOTViODA4NmQ0NmM1M2Q4NTBlMTg5NTFjZDk4OQ==
6
+ N2JkMGRhNDlmNWRmNmI5ZGI5YTA0MDlkNTRkMWEwYmY4ZDIxM2RhOQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YzdmMjM4NDgwNWRlMTI1MGY4YzM3YjFjNzNhMGY2MjIzOGI1NjU5MWZmMjQy
10
- ZDgyZDc4ZTI0ZTVjODY1ZGY2NDc0NzYyYzliYzUyNTZlY2Q2MGY1N2YxOWU3
11
- MjIyODcyZWZiYmFkOGFlZWU0MmZlN2QxMDkzNTg3ZDlkOGQ3OWI=
9
+ ZTVmYjZhZmY1OWJlZDU4OGY0YzU4OGVlMWU5ODEzODZhMGE4YzVkOGMwZjI1
10
+ ZTMwODcwYTU5YjBlYWI2MTg2OWU0M2U1YWM5YzE0MDgyOTlhNjM5NzAyNDg3
11
+ YzI3YmRiMzIxNzhkNTAwODkxZGY4MTBjNTM2MjZmNGMyMDE1NWM=
12
12
  data.tar.gz: !binary |-
13
- NmUwOWE4ZmE2OWEzZjhhZTI1N2NkZWJlMzZmOGQyMGNhZTE0NzY4Njk3Mzgw
14
- Mjk3YzFmZTczMmM2NjBjMmMyNDY3ZTgyNGNlMzA0ZDBiMjhkNWY5OWE0YmM0
15
- OWIyNDdlZjZlYzE5ZDE4ZjE5ZGJhZmM5YjBmYjU2ZTQ3ZTJjMjI=
13
+ MzhmOTY4YzE2ZWExMjk0MDU4OWY2ZTdkNzU4MDc3NGZlODNmMDFiYjZmNjE1
14
+ NGE4ZmQyZWJlZDdiMGU1YTg4OTdmZjhiNmNkZDMzYzU4MWE0YmMyMWFhMjc3
15
+ N2U2MDk5ODYzMjJjNzQ2YTFhMjRhNzNjOTM3Mzk2YTExMDRkN2Y=
@@ -50,7 +50,8 @@ $(document).ready(function(){
50
50
  $("ul#shows li").parent().attr('style','opacity:1')
51
51
  $("ul#shows li").hide();
52
52
  targetLiEl.html(data);
53
- targetLi.fadeIn('slow');
53
+ targetLi.fadeIn('slow');
54
+ hookupToggle()
54
55
  }).error(function ( data ) {
55
56
  loadingMessage.css('visibility', 'hidden')
56
57
  errorMessage.css('display', 'block')
@@ -23,6 +23,21 @@ class Store::OrdersController < Store::StoreController
23
23
  @special_instructions_hash[event.id] = event.special_instructions_caption
24
24
  end
25
25
  end
26
+
27
+ if member_signed_in?
28
+ params[:first_name] ||= current_member.person.first_name
29
+ params[:last_name] ||= current_member.person.last_name
30
+ params[:email] ||= current_member.person.email
31
+ params[:phone] ||= current_member.person.phones.first.try(:number)
32
+
33
+ params[:address] ||= {}
34
+ params[:address][:address1] = current_member.person.address.try(:address1)
35
+ params[:address][:country] = current_member.person.address.try(:country)
36
+ params[:address][:city] = current_member.person.address.try(:city)
37
+ params[:address][:state] = current_member.person.address.try(:state)
38
+ params[:address][:zip] = current_member.person.address.try(:zip)
39
+
40
+ end
26
41
  end
27
42
 
28
43
  def destroy
@@ -169,6 +169,24 @@ class Import < ActiveRecord::Base
169
169
  person.skip_commit = true
170
170
  person
171
171
  end
172
+
173
+ def create_person(parsed_row)
174
+ Rails.logger.info("Import #{id} DONATION_IMPORT: Creating person")
175
+ if !parsed_row.email.blank?
176
+ person = Person.first_or_create({:email => parsed_row.email, :organization => self.organization}.merge(parsed_row.person_attributes), {}) do |p|
177
+ p.import = self
178
+ end
179
+ else
180
+ person = attach_person(parsed_row)
181
+ if !person.save
182
+ Rails.logger.info("Import #{id} DONATION_IMPORT: Person save failed")
183
+ self.import_errors.create! :row_data => parsed_row.row, :error_message => person.errors.full_messages.join(", ")
184
+ self.reload
185
+ fail!
186
+ end
187
+ end
188
+ person
189
+ end
172
190
 
173
191
  class RowError < ArgumentError
174
192
  end
@@ -48,24 +48,6 @@ class DonationsImport < Import
48
48
  validate_amounts(parsed_row)
49
49
  true
50
50
  end
51
-
52
- def create_person(parsed_row)
53
- Rails.logger.info("Import #{id} DONATION_IMPORT: Creating person")
54
- if !parsed_row.email.blank?
55
- person = Person.first_or_create({:email => parsed_row.email, :organization => self.organization}.merge(parsed_row.person_attributes), {}) do |p|
56
- p.import = self
57
- end
58
- else
59
- person = attach_person(parsed_row)
60
- if !person.save
61
- Rails.logger.info("Import #{id} DONATION_IMPORT: Person save failed")
62
- self.import_errors.create! :row_data => parsed_row.row, :error_message => person.errors.full_messages.join(", ")
63
- self.reload
64
- fail!
65
- end
66
- end
67
- person
68
- end
69
51
 
70
52
  def create_contribution(parsed_row, person)
71
53
  Rails.logger.info("Import #{id} DONATION_IMPORT: Creating contribution")
@@ -38,24 +38,6 @@ class EventsImport < Import
38
38
  true
39
39
  end
40
40
 
41
- def create_person(parsed_row)
42
- if !attach_person(parsed_row).naming_details_available?
43
- person = self.organization.dummy
44
- elsif !parsed_row.email.blank?
45
- person = Person.first_or_create({:email => parsed_row.email, :organization => self.organization}.merge(parsed_row.person_attributes), {}) do |p|
46
- p.import = self
47
- end
48
- else
49
- person = attach_person(parsed_row)
50
- if !person.save
51
- self.import_errors.create! :row_data => parsed_row.row, :error_message => person.errors.full_messages.join(", ")
52
- self.reload
53
- fail!
54
- end
55
- end
56
- person
57
- end
58
-
59
41
  def create_chart(parsed_row, event, show)
60
42
  Rails.logger.info("Import #{id} EVENT_IMPORT: Creating chart")
61
43
  chart = show.chart || show.create_chart({ :name => event.name, :skip_create_first_section => true })
@@ -0,0 +1,43 @@
1
+ class MembershipsImport < Import
2
+ include Imports::Rollback
3
+ include Imports::Validations
4
+
5
+ def kind
6
+ "memberships"
7
+ end
8
+
9
+ def row_valid?(parsed_row)
10
+ raise Import::RowError, "No Amount included in this row: #{parsed_row.row}" if parsed_row.unparsed_amount.blank?
11
+ raise Import::RowError, "Please include a first name, last name, email, or company name in this row: #{parsed_row.row}" unless attach_person(parsed_row).naming_details_available?
12
+ raise Import::RowError, "Please include a payment method in this row: #{parsed_row.row}" if parsed_row.payment_method.blank?
13
+ valid_amount? parsed_row.unparsed_amount unless parsed_row.unparsed_amount.blank?
14
+ valid_date? parsed_row.order_date unless parsed_row.order_date.blank?
15
+ true
16
+ end
17
+
18
+ def process(parsed_row)
19
+ row_valid?(parsed_row)
20
+ membership_type = create_membership_type(parsed_row)
21
+ person = create_person(parsed_row)
22
+ order = create_order(parsed_row, person, membership_type)
23
+ actions = create_actions(parsed_row, person, memberships_type)
24
+ end
25
+
26
+ def create_membership_type(parsed_row)
27
+ membership_type = self.organization.membership_types.build({
28
+ :name => parsed_row.membership_name
29
+ })
30
+ membership_type.plan = parsed_row.membership_plan
31
+ membership_type
32
+ end
33
+
34
+ def create_order(parsed_row, person, membership_type)
35
+ #get order from hash
36
+ # for 0 to parsed_row.number_of_memberships
37
+ # create an item for this membership_type
38
+ #add the item to the order
39
+ #save the order
40
+ #update get_action
41
+ #hash order by order key (person, membership_type, payment_method)
42
+ end
43
+ end
@@ -42,7 +42,7 @@ class Item < ActiveRecord::Base
42
42
 
43
43
  #
44
44
  # If the product that this item points to (a ticket, for instance) gets refunded or returned
45
- # then re-sold to someone else, this item wil stil lshow up on the original purchaser's
45
+ # then re-sold to someone else, this item will still show up on the original purchaser's
46
46
  # action feed
47
47
  #
48
48
  def order_summary_description
@@ -104,15 +104,15 @@ class Item < ActiveRecord::Base
104
104
  end
105
105
 
106
106
  def refundable?
107
- (not settlement_issued?) and product and product.refundable?
107
+ (not settlement_issued?) and (not dead?) and product and product.refundable?
108
108
  end
109
109
 
110
110
  def exchangeable?
111
- (not settlement_issued?) and product and product.exchangeable?
111
+ (not settlement_issued?) and (not dead?) and product and product.exchangeable?
112
112
  end
113
113
 
114
114
  def returnable?
115
- product and product.returnable?
115
+ (not dead?) and product and product.returnable?
116
116
  end
117
117
 
118
118
  #
@@ -179,7 +179,7 @@ class Item < ActiveRecord::Base
179
179
  end
180
180
 
181
181
  def dead?
182
- refunded? || refund? || return?
182
+ refunded? || refund? || exchanged? || return?
183
183
  end
184
184
 
185
185
  def return?
@@ -212,7 +212,7 @@ class Item < ActiveRecord::Base
212
212
  def exchanged?
213
213
  state.eql? "exchanged"
214
214
  end
215
-
215
+
216
216
  #TODO: This isn't used anymore. It needs to go
217
217
  def exchangee?
218
218
  state.eql? "exchangee"
@@ -18,7 +18,6 @@ class Member < ActiveRecord::Base
18
18
  def headers_for(action)
19
19
  case action.to_s
20
20
  when "invitation_instructions"
21
- puts "aye"
22
21
  {:from => self.organization.email}
23
22
  else
24
23
  {}
@@ -43,6 +43,18 @@ class ParsedRow
43
43
  :subtype => [ "Type", "Subtype" ]
44
44
  })
45
45
 
46
+ MEMBERSHIP_FIELDS = SHARED_FIELDS.merge( {
47
+ :membership_name => [ "Membership Name", "Membership", "Name" ],
48
+ :membership_plan => [ "Membership Plan", "Plan"], #PAYG, ALL IN ONE, OTHER
49
+ :start_date => [ "Start Date" ],
50
+ :end_date => [ "End Date" ],
51
+ :amount => [ "Amount" ],
52
+ :payment_method => [ "Payment Method" ],
53
+ :order_date => [ "Order Date", "Date" ],
54
+
55
+ :number_of_memberships => [ "Quantity" ]
56
+ })
57
+
46
58
  EVENT_FIELDS = SHARED_FIELDS.merge( {
47
59
  :event_name => [ "Event", "Event Name" ],
48
60
  :venue_name => [ "Venue", "Venue Name" ],
@@ -65,7 +77,7 @@ class ParsedRow
65
77
  #TODO: Total contribution sanity check
66
78
  })
67
79
 
68
- FIELDS = PEOPLE_FIELDS.merge(ADDRESS_FIELDS).merge(EVENT_FIELDS).merge(DONATION_FIELDS)
80
+ FIELDS = PEOPLE_FIELDS.merge(ADDRESS_FIELDS).merge(EVENT_FIELDS).merge(DONATION_FIELDS).merge(MEMBERSHIP_FIELDS)
69
81
 
70
82
  # Enumerated columns default to the last value if the data value is not valid.
71
83
  #
@@ -2,14 +2,6 @@ class Phone < ActiveRecord::Base
2
2
  attr_accessible :kind, :number
3
3
  belongs_to :person
4
4
 
5
- #This method is here solely to parse phones in the Athena migration
6
- #There were in the form type:number
7
- def self.from_athena(unparsed_phone)
8
- Phone.new.tap do |phone|
9
- phone.kind, phone.number = unparsed_phone.split(":")
10
- end
11
- end
12
-
13
5
  def self.kinds
14
6
  [ "Work", "Home", "Cell", "Fax", "Other" ]
15
7
  end
@@ -4,15 +4,16 @@
4
4
  .brand Artful.ly
5
5
  %ul.nav
6
6
  %li{ :class => "dropdown #{active?(:events)}" }
7
- = nav_dropdown "Events"
7
+ = nav_dropdown "Sell"
8
8
  %ul.dropdown-menu
9
- %li= link_to "All Events", events_path
10
- %li= link_to "Create Event", new_event_path
9
+ %li= link_to "Events", events_path
10
+ %li= link_to "Memberships", membership_types_path
11
11
 
12
12
  %li{ :class => "dropdown #{active?(:people)}" }
13
13
  = nav_dropdown "People"
14
14
  %ul.dropdown-menu
15
15
  %li= link_to "New Contact", new_person_path
16
+ %li= link_to "Members", "#"
16
17
  %li= link_to "Search", people_path
17
18
  %li= link_to "Advanced Search", new_search_path
18
19
  %li= link_to "List Segments", segments_path
@@ -27,11 +28,12 @@
27
28
  %li= link_to "Imports / Exports", imports_path
28
29
 
29
30
  %li{ :class => "dropdown #{active?(:transactions)}"}
30
- = nav_dropdown "Transactions"
31
+ = nav_dropdown "Orders"
31
32
  %ul.dropdown-menu
32
- %li= link_to "Sales", sales_orders_path
33
+ %li= link_to "Tickets", sales_orders_path
33
34
  %li= link_to "Donations", contributions_path
34
- %li= link_to "Search", orders_path
35
+ %li= link_to "Memberships", "#"
36
+ %li= link_to "Search All", orders_path
35
37
 
36
38
  %li.divider-vertical
37
39
  %li.dropdown
@@ -8,7 +8,7 @@
8
8
  .span4
9
9
  -unless @person.dummy?
10
10
  %p= link_to "Edit #{@person.possessive} Info", '#edit-person', 'data-toggle' => 'modal'
11
- / %p= link_to "Award Membership", new_person_membership_award_path(@person)
11
+ %p= link_to "Award Membership", new_person_membership_award_path(@person)
12
12
 
13
13
  = render @person.address
14
14
 
@@ -1,3 +1,3 @@
1
1
  module ArtfullyOse
2
- VERSION = "1.2.0.pre.3"
2
+ VERSION = "1.2.0.pre.4"
3
3
  end
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.3
4
+ version: 1.2.0.pre.4
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-09-20 00:00:00.000000000 Z
11
+ date: 2013-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -1977,6 +1977,7 @@ files:
1977
1977
  - app/models/import_row.rb
1978
1978
  - app/models/imports/donations_import.rb
1979
1979
  - app/models/imports/events_import.rb
1980
+ - app/models/imports/memberships_import.rb
1980
1981
  - app/models/imports/people_import.rb
1981
1982
  - app/models/imports/processing.rb
1982
1983
  - app/models/imports/rollback.rb