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.
- checksums.yaml +8 -8
- data/README.md +4 -6
- data/app/assets/javascripts/application.js +39 -0
- data/app/assets/javascripts/boxoffice.js +558 -0
- data/app/assets/javascripts/custom/kits-config.js +33 -0
- data/app/assets/javascripts/sales-console.js +29 -24
- data/app/assets/javascripts/store/store.js +11 -0
- data/app/assets/stylesheets/application.sass +66 -52
- data/app/assets/stylesheets/bootstrap-overrides.css +1 -1
- data/app/assets/stylesheets/boxoffice.css.scss +258 -0
- data/app/assets/stylesheets/pages/bootstrap-responsive.css +1109 -0
- data/app/assets/stylesheets/sass/store.sass +52 -62
- data/app/assets/stylesheets/storefront.css +1 -1
- data/app/concerns/itemable.rb +1 -1
- data/app/concerns/pdf_generation.rb +1 -11
- data/app/concerns/search_by_dates.rb +20 -0
- data/app/controllers/events_controller.rb +1 -0
- data/app/controllers/export_controller.rb +11 -1
- data/app/controllers/imports_controller.rb +2 -3
- data/app/controllers/member_cards_controller.rb +2 -3
- data/app/controllers/orders_controller.rb +42 -0
- data/app/controllers/organizations_controller.rb +1 -0
- data/app/controllers/passes_reports_controller.rb +21 -1
- data/app/controllers/regular_donation_kits_controller.rb +32 -0
- data/app/controllers/store/donations_controller.rb +19 -1
- data/app/controllers/store/orders_controller.rb +15 -5
- data/app/helpers/artfully_ose_helper.rb +28 -18
- data/app/models/database_views/item_view.rb +41 -0
- data/app/models/event.rb +10 -2
- data/app/models/ext/integrations.rb +5 -0
- data/app/models/fee_strategy.rb +47 -1
- data/app/models/imports/events_import.rb +6 -7
- data/app/models/item.rb +4 -3
- data/app/models/job/order_processor.rb +4 -3
- data/app/models/kit.rb +18 -0
- data/app/models/kits/regular_donation_kit.rb +51 -9
- data/app/models/member.rb +4 -3
- data/app/models/membership.rb +1 -2
- data/app/models/membership_sale_search.rb +2 -20
- data/app/models/membership_type.rb +1 -2
- data/app/models/order.rb +29 -1
- data/app/models/order_handler.rb +4 -3
- data/app/models/organization.rb +17 -9
- data/app/models/pass.rb +18 -17
- data/app/models/pass_sale_search.rb +18 -0
- data/app/models/pass_type.rb +7 -2
- data/app/models/passes_report.rb +117 -0
- data/app/models/sale_search.rb +3 -21
- data/app/models/user.rb +1 -2
- data/app/serializers/show_serializer.rb +15 -0
- data/app/views/contributions/index.html.haml +2 -2
- data/app/views/events/_header.html.haml +1 -0
- data/app/views/events/_ticket_type_fields.html.haml +31 -15
- data/app/views/events/edit.html.haml +6 -1
- data/app/views/imports/_export_links.html.haml +3 -0
- data/app/views/imports/donations/_pending.html.haml +24 -6
- data/app/views/imports/events/_pending.html.haml +16 -5
- data/app/views/imports/index.html.haml +6 -4
- data/app/views/imports/people/_pending.html.haml +20 -25
- data/app/views/layouts/storefront.html.haml +9 -5
- data/app/views/order_mailer/confirmation_for.html.haml +11 -5
- data/app/views/order_mailer/confirmation_for_refund.html.haml +6 -2
- data/app/views/order_mailer/confirmation_for_refund.text.haml +4 -3
- data/app/views/orders/membership.html.haml +15 -19
- data/app/views/orders/passes.html.haml +97 -0
- data/app/views/orders/sales.html.haml +2 -2
- data/app/views/organizations/_form.html.haml +4 -37
- data/app/views/pass_types/index.html.haml +1 -1
- data/app/views/passes_reports/index.html.haml +79 -1
- data/app/views/people/show.html.haml +16 -15
- data/app/views/regular_donation_kits/edit.html.haml +140 -0
- data/app/views/store/checkouts/thanks.html.haml +14 -6
- data/app/views/store/donations/index.html.haml +19 -2
- data/app/views/store/events/calendar.html.haml +1 -0
- data/app/views/store/events/index.html.haml +1 -0
- data/app/views/store/events/show.html.haml +1 -0
- data/app/views/store/events/single_show.html.haml +2 -0
- data/app/views/store/orders/show.html.haml +10 -10
- data/app/views/store/passes/index.html.haml +2 -2
- data/app/views/store/shared/_donate_form.html.haml +31 -12
- data/app/views/store/shared/_small_donate_form.html.haml +22 -0
- data/app/views/users/invitations/edit.html.haml +3 -42
- data/config/locales/en.yml +3 -1
- data/config/routes.rb +4 -1
- data/db/migrate/20140603200735_add_subtitle_to_events.rb +5 -0
- data/lib/artfully_ose/version.rb +1 -1
- data/spec/factories/kit_factories.rb +5 -4
- metadata +25 -13
- data/app/assets/javascripts/box-office.js +0 -262
data/app/models/sale_search.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class SaleSearch
|
2
|
-
|
3
|
-
|
4
|
-
attr_reader :
|
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
|
data/app/models/user.rb
CHANGED
@@ -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}", :
|
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}", :
|
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"
|
@@ -6,26 +6,42 @@
|
|
6
6
|
=f.text_field :name, :class => 'span4'
|
7
7
|
|
8
8
|
-with_kit :membership do
|
9
|
-
.
|
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
|
-
=
|
11
|
+
=label_tag "Member ticket?", "Member ticket?", :class => 'control-label'
|
22
12
|
.controls
|
23
|
-
|
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
|
-
=
|
25
|
+
=label_tag "Member ticket?", "Member ticket?", :class => 'control-label'
|
27
26
|
.controls
|
28
|
-
|
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
|
@@ -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
|
-
%
|
22
|
-
|
23
|
-
|
24
|
-
%
|
25
|
-
|
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
|
-
|
21
|
-
.
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
45
|
-
%
|
46
|
-
|
47
|
-
|
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
|
-
|
21
|
-
|
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
|
-
%
|
24
|
-
%
|
25
|
-
%
|
26
|
-
%
|
27
|
-
%
|
28
|
-
%
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
-
-
|
14
|
+
- if @store_organization.has_kit?(:passes)
|
15
15
|
%li= link_to "Buy Passes", store_passes_path(@store_organization.cached_slug)
|
16
|
-
-
|
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
|
-
|
22
|
-
|
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.
|
30
|
+
-row.ticket_type_hash.each do |ticket_type, tickets|
|
33
31
|
%ul.ticket-list
|
34
|
-
-
|
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.
|
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
|
4
|
+
Order Number: #{@order.id}
|
5
5
|
%br
|
6
6
|
Refund Date: #{l(@order.created_at_local_to_organization)}
|
7
7
|
%br
|
8
|
-
|
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
|
-
|
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}", :
|
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}", :
|
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)})
|
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
|
-
|
63
|
-
|
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
|
-
|
70
|
-
|
71
|
-
|
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
|