artfully_ose 1.2.0.pre.27 → 1.2.0
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/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
|