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

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 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