artfully_ose 1.2.0.pre.27 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +4 -6
  3. data/app/assets/javascripts/application.js +39 -0
  4. data/app/assets/javascripts/boxoffice.js +558 -0
  5. data/app/assets/javascripts/custom/kits-config.js +33 -0
  6. data/app/assets/javascripts/sales-console.js +29 -24
  7. data/app/assets/javascripts/store/store.js +11 -0
  8. data/app/assets/stylesheets/application.sass +66 -52
  9. data/app/assets/stylesheets/bootstrap-overrides.css +1 -1
  10. data/app/assets/stylesheets/boxoffice.css.scss +258 -0
  11. data/app/assets/stylesheets/pages/bootstrap-responsive.css +1109 -0
  12. data/app/assets/stylesheets/sass/store.sass +52 -62
  13. data/app/assets/stylesheets/storefront.css +1 -1
  14. data/app/concerns/itemable.rb +1 -1
  15. data/app/concerns/pdf_generation.rb +1 -11
  16. data/app/concerns/search_by_dates.rb +20 -0
  17. data/app/controllers/events_controller.rb +1 -0
  18. data/app/controllers/export_controller.rb +11 -1
  19. data/app/controllers/imports_controller.rb +2 -3
  20. data/app/controllers/member_cards_controller.rb +2 -3
  21. data/app/controllers/orders_controller.rb +42 -0
  22. data/app/controllers/organizations_controller.rb +1 -0
  23. data/app/controllers/passes_reports_controller.rb +21 -1
  24. data/app/controllers/regular_donation_kits_controller.rb +32 -0
  25. data/app/controllers/store/donations_controller.rb +19 -1
  26. data/app/controllers/store/orders_controller.rb +15 -5
  27. data/app/helpers/artfully_ose_helper.rb +28 -18
  28. data/app/models/database_views/item_view.rb +41 -0
  29. data/app/models/event.rb +10 -2
  30. data/app/models/ext/integrations.rb +5 -0
  31. data/app/models/fee_strategy.rb +47 -1
  32. data/app/models/imports/events_import.rb +6 -7
  33. data/app/models/item.rb +4 -3
  34. data/app/models/job/order_processor.rb +4 -3
  35. data/app/models/kit.rb +18 -0
  36. data/app/models/kits/regular_donation_kit.rb +51 -9
  37. data/app/models/member.rb +4 -3
  38. data/app/models/membership.rb +1 -2
  39. data/app/models/membership_sale_search.rb +2 -20
  40. data/app/models/membership_type.rb +1 -2
  41. data/app/models/order.rb +29 -1
  42. data/app/models/order_handler.rb +4 -3
  43. data/app/models/organization.rb +17 -9
  44. data/app/models/pass.rb +18 -17
  45. data/app/models/pass_sale_search.rb +18 -0
  46. data/app/models/pass_type.rb +7 -2
  47. data/app/models/passes_report.rb +117 -0
  48. data/app/models/sale_search.rb +3 -21
  49. data/app/models/user.rb +1 -2
  50. data/app/serializers/show_serializer.rb +15 -0
  51. data/app/views/contributions/index.html.haml +2 -2
  52. data/app/views/events/_header.html.haml +1 -0
  53. data/app/views/events/_ticket_type_fields.html.haml +31 -15
  54. data/app/views/events/edit.html.haml +6 -1
  55. data/app/views/imports/_export_links.html.haml +3 -0
  56. data/app/views/imports/donations/_pending.html.haml +24 -6
  57. data/app/views/imports/events/_pending.html.haml +16 -5
  58. data/app/views/imports/index.html.haml +6 -4
  59. data/app/views/imports/people/_pending.html.haml +20 -25
  60. data/app/views/layouts/storefront.html.haml +9 -5
  61. data/app/views/order_mailer/confirmation_for.html.haml +11 -5
  62. data/app/views/order_mailer/confirmation_for_refund.html.haml +6 -2
  63. data/app/views/order_mailer/confirmation_for_refund.text.haml +4 -3
  64. data/app/views/orders/membership.html.haml +15 -19
  65. data/app/views/orders/passes.html.haml +97 -0
  66. data/app/views/orders/sales.html.haml +2 -2
  67. data/app/views/organizations/_form.html.haml +4 -37
  68. data/app/views/pass_types/index.html.haml +1 -1
  69. data/app/views/passes_reports/index.html.haml +79 -1
  70. data/app/views/people/show.html.haml +16 -15
  71. data/app/views/regular_donation_kits/edit.html.haml +140 -0
  72. data/app/views/store/checkouts/thanks.html.haml +14 -6
  73. data/app/views/store/donations/index.html.haml +19 -2
  74. data/app/views/store/events/calendar.html.haml +1 -0
  75. data/app/views/store/events/index.html.haml +1 -0
  76. data/app/views/store/events/show.html.haml +1 -0
  77. data/app/views/store/events/single_show.html.haml +2 -0
  78. data/app/views/store/orders/show.html.haml +10 -10
  79. data/app/views/store/passes/index.html.haml +2 -2
  80. data/app/views/store/shared/_donate_form.html.haml +31 -12
  81. data/app/views/store/shared/_small_donate_form.html.haml +22 -0
  82. data/app/views/users/invitations/edit.html.haml +3 -42
  83. data/config/locales/en.yml +3 -1
  84. data/config/routes.rb +4 -1
  85. data/db/migrate/20140603200735_add_subtitle_to_events.rb +5 -0
  86. data/lib/artfully_ose/version.rb +1 -1
  87. data/spec/factories/kit_factories.rb +5 -4
  88. metadata +25 -13
  89. data/app/assets/javascripts/box-office.js +0 -262
@@ -1,7 +1,7 @@
1
1
  class SaleSearch
2
-
3
- attr_reader :start, :stop
4
- attr_reader :organization, :event, :show
2
+ include SearchByDates
3
+
4
+ attr_reader :event, :show
5
5
 
6
6
  def initialize(terms)
7
7
  @organization = terms[:organization]
@@ -16,22 +16,4 @@ class SaleSearch
16
16
  def results
17
17
  @results ||= Order.sale_search(self).select(&:has_ticket?)
18
18
  end
19
-
20
- private
21
-
22
- def start_with(start)
23
- start.present? ? DateTime.parse(start) : default_start
24
- end
25
-
26
- def stop_with(stop)
27
- stop.present? ? Sundial.midnightish(@organization, stop) : default_stop
28
- end
29
-
30
- def default_start
31
- DateTime.now.in_time_zone(@organization.time_zone).beginning_of_month
32
- end
33
-
34
- def default_stop
35
- DateTime.now.in_time_zone(@organization.time_zone).end_of_day
36
- end
37
19
  end
@@ -3,8 +3,7 @@ class User < ActiveRecord::Base
3
3
  include Ext::DeviseConfiguration
4
4
  include Ext::Integrations::User
5
5
 
6
- devise :token_authenticatable,
7
- :registerable
6
+ devise :token_authenticatable
8
7
  before_save :ensure_authentication_token
9
8
 
10
9
  has_many :shows
@@ -0,0 +1,15 @@
1
+ class ShowSerializer < ActiveModel::Serializer
2
+ attributes :id, :uuid, :state, :show_time, :event, :tickets_validated, :tickets_sold, :time_zone, :iana_time_zone, :offset, :datetime
3
+
4
+ def tickets_sold
5
+ object.sold || 0
6
+ end
7
+
8
+ def event
9
+ EventSerializer.new(object.event, @options)
10
+ end
11
+
12
+ def include_event?
13
+ @options[:event]
14
+ end
15
+ end
@@ -6,9 +6,9 @@
6
6
  = form_tag contributions_path, :method => :get, :class => 'well form-inline' do
7
7
  .pull-left
8
8
  = label_tag :start, "From", :class => "control-label"
9
- = text_field_tag :start,"#{l @search.start, :format => :date_for_input}", :readonly => true, :class => 'datepicker input-small'
9
+ = text_field_tag :start,"#{l @search.start, :format => :date_for_input}", :class => 'datepicker input-small'
10
10
  = label_tag :stop, "To", :class => "control-label"
11
- = text_field_tag :stop, "#{l @search.stop, :format => :date_for_input}", :readonly => true, :class => 'datepicker input-small'
11
+ = text_field_tag :stop, "#{l @search.stop, :format => :date_for_input}", :class => 'datepicker input-small'
12
12
  .pull-right
13
13
  = submit_tag "Search", :class => "btn"
14
14
  = submit_tag "Download", :class => "btn"
@@ -1,6 +1,7 @@
1
1
  .row
2
2
  .span8
3
3
  %h1= @event.name
4
+ %h3.subtitle= @event.subtitle if @event.subtitle.present?
4
5
  .span4#event-header-logo-container
5
6
  -if @event.image?
6
7
  =image_tag(@event.image.url(:thumb), :id => 'event-header-logo', :width => 75, :height => 75)
@@ -6,26 +6,42 @@
6
6
  =f.text_field :name, :class => 'span4'
7
7
 
8
8
  -with_kit :membership do
9
- .control-group
10
- =label_tag "Member ticket?", "Member ticket?", :class => 'control-label'
11
- .controls
12
- %label.radio.inline
13
- = f.radio_button :member_ticket, true, :class => "member-ticket-yes"
14
- Yes
15
- %label.radio.inline
16
- = f.radio_button :member_ticket, false, :class => "member-ticket-no"
17
- No
18
-
19
- .membership-fields{:style => "display: none"}
9
+ - if current_user.current_organization.membership_types.empty?
20
10
  .control-group
21
- =f.label :membership_type_id, "Membership", :class => 'control-label'
11
+ =label_tag "Member ticket?", "Member ticket?", :class => 'control-label'
22
12
  .controls
23
- =f.select :membership_type_id, options_from_collection_for_select(MembershipType.in_play(current_user.current_organization), 'id', 'name', f.object.membership_type_id), {}, :class => 'span4'
13
+ %label.radio.inline
14
+ = f.radio_button :member_ticket, true, :class => "member-ticket-yes", :disabled => "true"
15
+ Yes
16
+ %label.radio.inline
17
+ = f.radio_button :member_ticket, false, :class => "member-ticket-no", :disabled => "true"
18
+ No
19
+ %p.muted
20
+ You need to create a membership before you can sell member tickets.
21
+ =link_to "Get started here.", new_membership_type_path
24
22
 
23
+ - else
25
24
  .control-group
26
- =f.label :tickets_per_membership, "Tickets per Membership", :class => 'control-label'
25
+ =label_tag "Member ticket?", "Member ticket?", :class => 'control-label'
27
26
  .controls
28
- =f.text_field :tickets_per_membership, :class => 'input-small'
27
+ %label.radio.inline
28
+ = f.radio_button :member_ticket, true, :class => "member-ticket-yes"
29
+ Yes
30
+ %label.radio.inline
31
+ = f.radio_button :member_ticket, false, :class => "member-ticket-no"
32
+ No
33
+
34
+ .membership-fields{:style => "display: none"}
35
+ .control-group
36
+ =f.label :membership_type_id, "Membership", :class => 'control-label'
37
+ .controls
38
+ =f.select :membership_type_id, options_from_collection_for_select(MembershipType.in_play(current_user.current_organization), 'id', 'name', f.object.membership_type_id), {}, :class => 'span4'
39
+
40
+ .control-group
41
+ =f.label :tickets_per_membership, "Tickets per Membership", :class => 'control-label'
42
+ .controls
43
+ =f.text_field :tickets_per_membership, :class => 'input-small'
44
+ %p.muted Leave blank for unlimited.
29
45
 
30
46
  .control-group
31
47
  =f.label :price, "Price", :class => 'control-label'
@@ -13,7 +13,12 @@
13
13
  =form.label :name, "Event name", :class => 'control-label'
14
14
  .controls
15
15
  =form.text_field :name, :class => 'input-xlarge', :placeholder=>"Event name"
16
-
16
+
17
+ .control-group
18
+ =form.label :subtitle, :class => 'control-label'
19
+ .controls
20
+ = form.text_field :subtitle, :class => 'input-xlarge', :placeholder=>"Event subtitle"
21
+
17
22
  .control-group
18
23
  =form.label :producer, "Producer", :class => 'control-label'
19
24
  .controls
@@ -0,0 +1,3 @@
1
+ %p= link_to "Export People", contacts_export_index_path, :class => "btn btn3"
2
+ %p= link_to "Export Donations", donations_export_index_path, :class => "btn btn3"
3
+ %p= link_to "Export Sales", ticket_sales_export_index_path, :class => "btn btn3"
@@ -17,9 +17,27 @@
17
17
  Click "Approve" to import this data into Artful.ly
18
18
  .span3
19
19
  = link_to "Approve", approve_import_path(import), :data => {:confirm => "Are you sure you want to approve this import?"}, :class => "btn btn-success btn-large"
20
-
21
- %center
22
- .alert.alert-info
23
- Import previews are temporarily not available.
24
- %br
25
- You can still apporve your import by clicking the green "Approve" button above.
20
+
21
+ %table.table.table-bordered.table-striped
22
+ %tr
23
+ %th Email
24
+ %th First
25
+ %th Last
26
+ %th Date
27
+ %th Amount
28
+ %th Type
29
+ %th
30
+
31
+ - @imported_rows.each_with_index do |imported_row, index|
32
+ - row = ParsedRow.new(@import.headers, imported_row.content)
33
+ %tr
34
+ %td=row.email
35
+ %td=row.first
36
+ %td=row.last
37
+ %td=row.donation_date
38
+ %td=number_as_cents row.amount
39
+ %td=row.donation_type
40
+ %td
41
+ =icon_link_to("", "#row#{index}", 'fa-search-plus', '', '', {'data-toggle' => 'modal'})
42
+ =render :partial => "imports/shared/inspect_modal", :locals => {:row => row, :index => index, :keys => ParsedRow::DONATION_FIELDS.keys }
43
+ = will_paginate @imported_rows
@@ -17,8 +17,19 @@
17
17
  .span3
18
18
  = link_to "Approve", approve_import_path(import), :data => {:confirm => "Are you sure you want to approve this import?"}, :class => "btn btn-success btn-large"
19
19
 
20
- %center
21
- .alert.alert-info
22
- Import previews are temporarily not available.
23
- %br
24
- You can still apporve your import by clicking the green "Approve" button above.
20
+ - @import.parse_and_hash(@imported_rows).each_with_index do |(event_key, event_rows), event_index|
21
+ %table.table.table-bordered.table-striped.table-topper
22
+ %tr
23
+ %th{:colspan => "3", :style => 'width: 400px'}
24
+ =event_rows.first.event_name
25
+ %br
26
+ =event_rows.first.venue_name
27
+ %br
28
+ =l DateTime.parse(@import.eight_pm?(event_rows.first.show_date)), :format => :short
29
+ -event_rows.each_with_index do |row, index|
30
+ %tr
31
+ %td="#{row.first} #{row.last}"
32
+ %td{:style => 'width:100px'}=number_as_cents row.amount
33
+ %td{:style => 'width:50px'}
34
+ =icon_link_to("", "#row#{event_index}_#{index}", 'fa-search-plus', '', '', {'data-toggle' => 'modal'})
35
+ =render :partial => "imports/shared/inspect_modal", :locals => {:row => row, :index => "#{event_index}_#{index}", :keys => ParsedRow::EVENT_FIELDS.keys }
@@ -41,7 +41,9 @@
41
41
  .span3
42
42
  .well{:style => "text-align: center"}
43
43
  %h3 Exports
44
- %p= link_to "Export People", contacts_export_index_path, :class => "btn btn3"
45
- %p= link_to "Export Donations", @donations_csv_download_link, :class => "btn btn3"
46
- %p= link_to "Export Sales", @sales_csv_download_link, :class => "btn btn3"
47
- %p Sales and Donations exports are prepared nightly and will not reflect sales made today.
44
+ =render :partial => "export_links"
45
+ %div{:style => 'font-weight:bold; text-align:left; font-size:.9em;'}
46
+ = "Need something more specific?"
47
+ %br
48
+ ="Export from"
49
+ =link_to("Advanced Search", new_search_path)
@@ -17,29 +17,24 @@
17
17
  Click "Approve" to import this data into Artful.ly
18
18
  .span3
19
19
  = link_to "Approve", approve_import_path(import), :data => {:confirm => "Are you sure you want to approve this import?"}, :class => "btn btn-success btn-large"
20
- -if @under_limit
21
- %table.table.table-bordered.table-striped
20
+
21
+ %table.table.table-bordered.table-striped
22
+ %tr
23
+ %th Email
24
+ %th First
25
+ %th Last
26
+ %th Company
27
+ %th Website
28
+ %th
29
+ - @imported_rows.each_with_index do |imported_row, index|
30
+ - row = ParsedRow.new(@import.headers, imported_row.content)
22
31
  %tr
23
- %th Email
24
- %th First
25
- %th Last
26
- %th Company
27
- %th Website
28
- %th
29
- - @parsed_rows.each_with_index do |row, index|
30
- %tr
31
- %td=row.email
32
- %td=row.first
33
- %td=row.last
34
- %td=row.company
35
- %td=row.website
36
- %td
37
- =icon_link_to("", "#row#{index}", ' fa-search-plus', '', '', {'data-toggle' => 'modal'})
38
- =render :partial => "imports/shared/inspect_modal", :locals => {:row => row, :index => index, :keys => ParsedRow::PEOPLE_FIELDS.merge(ParsedRow::ADDRESS_FIELDS).keys}
39
- = will_paginate @parsed_rows
40
- -else
41
- %center
42
- .alert.alert-info
43
- Import previews are temporarily not available.
44
- %br
45
- You can still apporve your import by clicking the green "Approve" button above.
32
+ %td=row.email
33
+ %td=row.first
34
+ %td=row.last
35
+ %td=row.company
36
+ %td=row.website
37
+ %td
38
+ =icon_link_to("", "#row#{index}", ' fa-search-plus', '', '', {'data-toggle' => 'modal'})
39
+ =render :partial => "imports/shared/inspect_modal", :locals => {:row => row, :index => index, :keys => ParsedRow::PEOPLE_FIELDS.merge(ParsedRow::ADDRESS_FIELDS).keys}
40
+ = will_paginate @imported_rows
@@ -7,19 +7,23 @@
7
7
  %body
8
8
  .navbar.navbar-fixed-top
9
9
  .navbar-inner
10
- .container
10
+ .container
11
11
  = link_to @store_organization.name, store_organization_events_url(@store_organization.cached_slug), :class => 'brand'
12
12
  %ul.nav#main-menu-options
13
13
  %li= link_to "Buy Tickets", store_events_path(@store_organization.cached_slug)
14
- -with_kit(:passes) do
14
+ - if @store_organization.has_kit?(:passes)
15
15
  %li= link_to "Buy Passes", store_passes_path(@store_organization.cached_slug)
16
- -with_kit(:membership) do
16
+ - if @store_organization.has_kit?(:membership)
17
17
  -if member_signed_in?
18
18
  %li= link_to "Buy Memberships", store_memberships_path(@store_organization.cached_slug)
19
19
  -else
20
20
  %li= link_to "Become a Member", store_memberships_path(@store_organization.cached_slug)
21
- -# %li= link_to "Donate Now", store_donate_path(@store_organization.cached_slug), :class => "btn btn-small btn-warning primary"
22
- -with_kit(:membership) do
21
+ - if @store_organization.has_active_donation_only_storefront?
22
+ -if @store_organization.kit(:regular_donation).donate_now_text.present?
23
+ %li= link_to @store_organization.kit(:regular_donation).donate_now_text, store_donate_path(@store_organization.cached_slug), :class => "btn btn-small btn-warning primary"
24
+ -else
25
+ %li= link_to "Donate Now", store_donate_path(@store_organization.cached_slug), :class => "btn btn-small btn-warning primary"
26
+ - if @store_organization.has_kit?(:membership)
23
27
  %ul.nav.pull-right#menu-member-login
24
28
  -if member_signed_in?
25
29
  %li.dropdown
@@ -14,8 +14,6 @@
14
14
  %br
15
15
  = "Payment method: #{@order.payment_method}"
16
16
  %br
17
- = "Service fee: $#{format("%.2f", (@order.service_fee.to_i/100.0))}"
18
- %br
19
17
 
20
18
  - unless @order.tickets.empty?
21
19
  - @order.ticket_summary.rows.each do |row|
@@ -29,9 +27,9 @@
29
27
  -unless row.show.event.contact_phone.blank?
30
28
  ="Event contact phone: #{row.show.event.contact_phone}"
31
29
  %br
32
- -row.ticket_type_hash.keys.each do |ticket_type|
30
+ -row.ticket_type_hash.each do |ticket_type, tickets|
33
31
  %ul.ticket-list
34
- -ticket_type.tickets.each do |ticket|
32
+ -tickets.each do |ticket|
35
33
  %li
36
34
  %span.price= "#{ticket.ticket_type.name}: $#{format("%.2f", (ticket.sold_price/100.0))}"
37
35
  %li{:style => 'list-style-type:none'}=ticket_type.description
@@ -52,9 +50,17 @@
52
50
  %span.price= "$#{format("%.2f", (item.price/100.00))}:"
53
51
  %span.name= "Donation to #{@order.organization.name_for_donations}"
54
52
 
53
+ - unless @order.passes.empty?
54
+ %h4 Passes
55
+ %ul.pass-list
56
+ - @order.passes.each do |item|
57
+ %li
58
+ %span.price= "$#{format("%.2f", (item.price/100.00))}:"
59
+ %span.name= "#{item.product.pass_type.passerize}: #{item.product.pass_code}"
60
+
55
61
  - unless @order.memberships.empty?
56
62
  %h4 Memberships
57
- %ul.donation-list
63
+ %ul.membership-list
58
64
  - @order.memberships.each do |item|
59
65
  %li
60
66
  %span.price= "$#{format("%.2f", (item.price/100.00))}:"
@@ -1,11 +1,15 @@
1
1
  %h1 Refund Confirmation
2
2
 
3
3
  %p
4
- Order number: #{@order.id}
4
+ Order Number: #{@order.id}
5
5
  %br
6
6
  Refund Date: #{l(@order.created_at_local_to_organization)}
7
7
  %br
8
- Refund total: -$#{format("%.2f", (@order.total.abs/100.0))}
8
+ Item Total: -$#{format("%.2f", (@order.total.abs/100.0))}
9
+ %br
10
+ Service Fees: -$#{format("%.2f", (@order.service_fee.abs.to_i/100.0))}
11
+ %br
12
+ Refund Total: -$#{format("%.2f", (@order.total_with_service_fee.abs/100.0))}
9
13
  %br
10
14
  %br
11
15
  -if @order.original_order.credit?
@@ -1,9 +1,10 @@
1
1
  Refund Confirmation
2
2
 
3
-
4
- Order number: #{@order.id}
3
+ Order Number: #{@order.id}
5
4
  Refund Date: #{l(@order.created_at_local_to_organization)}
6
- Refund total: -$#{format("%.2f", (@order.total.abs/100.0))}
5
+ Item Total: -$#{format("%.2f", (@order.total.abs/100.0))}
6
+ Service Fees: -$#{format("%.2f", (@order.service_fee.abs.to_i/100.0))}
7
+ Refund Total: -$#{format("%.2f", (@order.total_with_service_fee.abs/100.0))}
7
8
 
8
9
  -if @order.original_order.credit?
9
10
  This refund was credited to the credit card you used as payment for this order.
@@ -2,26 +2,16 @@
2
2
  - content_for :header do
3
3
  %h1 Membership Orders
4
4
 
5
- #print-cards.modal.hide.fade
6
- .modal-header
7
- .close{'data-dismiss'=>'modal'} x
8
- %h3 Generating Member Cards
9
- .modal-body
10
- %p
11
- A PDF is being generated and will automatically begin downloading when ready...
12
- .progress.progress-success.progress-striped.active
13
- .bar{:style => 'width: 90%'}
14
-
15
5
  #donations-search
16
6
 
17
7
  .control-group.well
18
- = form_tag membership_orders_path, :method => :get, :class => 'form-inline' do
8
+ = form_tag membership_orders_path, :method => :get, :id => 'memberships-date-search-form', :class => 'form-inline' do
19
9
  .pull-left
20
10
  = label_tag :start, "From", :class => "control-label"
21
- = text_field_tag :start,"#{l @search.start, :format => :date_for_input}", :readonly => true, :class => 'datepicker input-small'
11
+ = text_field_tag :start,"#{l @search.start, :format => :date_for_input}", :class => 'datepicker input-small'
22
12
 
23
13
  = label_tag :stop, "To", :class => "control-label"
24
- = text_field_tag :stop, "#{l @search.stop, :format => :date_for_input}", :readonly => true, :class => 'datepicker input-small'
14
+ = text_field_tag :stop, "#{l @search.stop, :format => :date_for_input}", :class => 'datepicker input-small'
25
15
 
26
16
  - if @membership_types.present?
27
17
  = label_tag :membership_type_id, nil, :class => "control-label"
@@ -41,7 +31,7 @@
41
31
  = link_to 'Export to CSV', params.merge(:format => 'csv').delete_if {|k,v| :commit == k.to_sym }
42
32
  - with_kit(:membership) do
43
33
  %li
44
- =link_to 'Print Member Cards', new_member_card_path({:start => @search.start, :stop => @search.stop, :membership_type_id => @search.membership_type.try(:id)}), :onclick => "$('#print-cards').modal();"
34
+ =link_to 'Print Member Cards', new_member_card_path({:start => @search.start, :stop => @search.stop, :membership_type_id => @search.membership_type.try(:id)})
45
35
 
46
36
 
47
37
  - if @search.results.present?
@@ -59,16 +49,22 @@
59
49
  %tbody
60
50
  - @search.results.each do |order|
61
51
  - order.items.select(&:membership?).each_with_index do |item, index|
62
- %tr
63
- - if index == 0
52
+ - if index == 0
53
+ %tr{:id => "order_#{order.id}"}
64
54
  - rowspan = order.items.select(&:membership?).size
65
55
  %td{:rowspan => rowspan}= link_to order.id, order_path(order.id)
66
56
  %td{:rowspan => rowspan}= l(order.created_at_local_to_organization, :format => :short)
67
57
  %td{:rowspan => rowspan}= link_to_person(order.person)
68
58
  %td{:rowspan => rowspan}= (order.payment_method || "")
69
- %td
70
- ="#{item.product.membership_type.name}"
71
- %td= number_as_cents item.price
59
+ %td
60
+ ="#{item.product.membership_type.name}"
61
+ %td= number_as_cents item.price
62
+ - else
63
+ %tr
64
+ %td
65
+ ="#{item.product.membership_type.name}"
66
+ %td= number_as_cents item.price
67
+
72
68
  = will_paginate(@search.results)
73
69
 
74
70
  - else