artfully_ose 1.2.0.pre.24 → 1.2.0.pre.26
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +9 -9
- data/app/assets/fonts/FontAwesome.otf +0 -0
- data/app/assets/fonts/fontawesome-webfont.eot +0 -0
- data/app/assets/fonts/fontawesome-webfont.svg +504 -0
- data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff +0 -0
- data/app/assets/javascripts/application.js +5 -0
- data/app/assets/javascripts/custom/people.js +68 -5
- data/app/assets/javascripts/sales-console.js +153 -0
- data/app/assets/javascripts/store/jquery.validate.additional-methods.js +476 -159
- data/app/assets/javascripts/store/jquery.validate.js +449 -406
- data/app/assets/stylesheets/application.sass +49 -0
- data/app/assets/stylesheets/font-awesome.css.scss +1566 -0
- data/app/concerns/cart_finder.rb +5 -0
- data/app/controllers/console_sales_controller.rb +182 -0
- data/app/controllers/events_controller.rb +1 -1
- data/app/controllers/events_pass_types_controller.rb +10 -0
- data/app/controllers/memberships_controller.rb +3 -3
- data/app/controllers/people_controller.rb +2 -1
- data/app/controllers/sales_controller.rb +51 -13
- data/app/controllers/shows_controller.rb +2 -2
- data/app/controllers/store/orders_controller.rb +0 -9
- data/app/helpers/artfully_ose_helper.rb +4 -2
- data/app/helpers/sales_helper.rb +29 -0
- data/app/models/cart.rb +6 -1
- data/app/models/checkout.rb +20 -13
- data/app/models/comp.rb +13 -16
- data/app/models/console_sale.rb +30 -0
- data/app/models/database_views/item_view.rb +3 -0
- data/app/models/job/checkout_processor.rb +10 -5
- data/app/models/kits/mailchimp_kit.rb +2 -1
- data/app/models/kits/passes_kit.rb +1 -1
- data/app/models/kits/scannable_tickets_kit.rb +3 -4
- data/app/models/membership.rb +18 -3
- data/app/models/membership_change.rb +1 -1
- data/app/models/membership_type.rb +2 -3
- data/app/models/order.rb +20 -17
- data/app/models/order_handler.rb +21 -0
- data/app/models/orders/comp_order.rb +1 -1
- data/app/models/parsed_row.rb +45 -2
- data/app/models/pass.rb +13 -0
- data/app/models/pass_type.rb +16 -0
- data/app/models/payment.rb +17 -0
- data/app/models/payments/cash_payment.rb +3 -1
- data/app/models/payments/check_payment.rb +33 -0
- data/app/models/payments/comp_payment.rb +3 -1
- data/app/models/payments/credit_card_payment.rb +8 -18
- data/app/models/person.rb +27 -3
- data/app/models/sale.rb +13 -10
- data/app/models/ticket.rb +1 -1
- data/app/views/console_sales/_aloha.html.haml +26 -0
- data/app/views/console_sales/_cart.html.haml +60 -0
- data/app/views/console_sales/_payment.html.haml +111 -0
- data/app/views/console_sales/_shows.html.haml +24 -0
- data/app/views/console_sales/new.html.haml +143 -0
- data/app/views/events/_day_date_show.html.haml +2 -2
- data/app/views/events/_ticket_type_fields.html.haml +1 -1
- data/app/views/events_pass_types/_form.html.haml +1 -1
- data/app/views/events_pass_types/index.html.haml +2 -1
- data/app/views/exchanges/new.html.haml +1 -1
- data/app/views/imports/people/_new.html.haml +12 -0
- data/app/views/kits/_list.html.haml +2 -1
- data/app/views/layouts/_menu.html.haml +0 -3
- data/app/views/membership_comps/create.html.haml +3 -1
- data/app/views/membership_types/_form.html.haml +0 -1
- data/app/views/orders/_item_table.haml +5 -3
- data/app/views/passes/index.html.haml +2 -2
- data/app/views/people/_edit_modal.html.haml +7 -0
- data/app/views/people/_work_with_menu.html.haml +4 -1
- data/app/views/people/show.html.haml +13 -4
- data/app/views/refunds/new.html.haml +1 -1
- data/app/views/sales/_boxoffice.html.haml +141 -0
- data/app/views/sales/_doorlist.html.haml +79 -0
- data/app/views/sales/new.html.haml +33 -125
- data/app/views/searches/show.html.haml +1 -1
- data/app/views/segments/show.html.haml +1 -1
- data/app/views/shows/_ticket_table.html.haml +1 -1
- data/app/views/shows/_work_with.html.haml +1 -1
- data/app/views/shows/index.html.haml +5 -6
- data/app/views/shows/show.html.haml +2 -2
- data/config/initializers/devise.rb +1 -1
- data/config/initializers/paperclip.rb +16 -0
- data/config/routes.rb +10 -1
- data/db/migrate/20140507184646_add_bday_attributes_to_person.rb +7 -0
- data/db/migrate/20140507201048_add_check_number_to_orders.rb +5 -0
- data/db/migrate/20140619194127_add_do_not_call_to_people.artfully_ose_engine.rb +5 -0
- data/db/migrate/20140623160543_add_index_to_items.rb +7 -0
- data/lib/artfully_ose/engine.rb +5 -4
- data/lib/artfully_ose/version.rb +1 -1
- data/spec/factories/person_factories.rb +3 -0
- metadata +43 -20
@@ -12,5 +12,5 @@
|
|
12
12
|
%strong=link_to show.datetime_local_to_event.strftime('%l:%M %P'), event_show_path(@event, show)
|
13
13
|
#available="#{show.glance.available_total} tickets available"
|
14
14
|
#show-links
|
15
|
-
%p=icon_link_to("Door List",
|
16
|
-
%p=icon_link_to("Box Office", new_event_show_sales_path(@event, show), 'fa-shopping-cart', 'btn', '')
|
15
|
+
%p=icon_link_to("Door List", new_event_show_sales_path(@event, show, :render => 'doorlist'), 'fa-list', 'btn', '')
|
16
|
+
%p=icon_link_to("Box Office", new_event_show_sales_path(@event, show, :render => 'boxoffice'), 'fa-shopping-cart', 'btn', '')
|
@@ -57,7 +57,7 @@
|
|
57
57
|
This description will appear on your storefront as well as on patron receipts.
|
58
58
|
|
59
59
|
.control-group
|
60
|
-
=f.label :
|
60
|
+
=f.label :visibility, "Visibility", :class => 'control-label'
|
61
61
|
.controls
|
62
62
|
- TicketType.channels_for(current_user.current_organization).each do |channel, icon|
|
63
63
|
=f.check_box channel
|
@@ -15,7 +15,7 @@
|
|
15
15
|
.control-group
|
16
16
|
= f.label :ticket_types, "Allowed Ticket Types", :class => 'control-label'
|
17
17
|
.controls
|
18
|
-
= f.select :ticket_types, options_for_select(@ticket_type_names, @events_pass_type.ticket_types.to_a), {}, {'data-placeholder' => "
|
18
|
+
= f.select :ticket_types, options_for_select(@ticket_type_names, @events_pass_type.ticket_types.to_a), {}, {'data-placeholder' => "Select a Ticket Type", :class => 'input chosen', :multiple => true}
|
19
19
|
.control-group
|
20
20
|
= f.label :excluded_shows, "Excluded Shows", :class => 'control-label'
|
21
21
|
.controls
|
@@ -75,7 +75,7 @@
|
|
75
75
|
|
76
76
|
- unless @ticket_type.nil?
|
77
77
|
.center
|
78
|
-
= submit_tag "Confirm Exchange", :class => "btn btn-large btn-primary"
|
78
|
+
= submit_tag "Confirm Exchange", :class => "btn btn-large btn-primary", :disable_with => "Exchanging..."
|
79
79
|
|
80
80
|
- content_for :custom_js do
|
81
81
|
:javascript
|
@@ -92,9 +92,21 @@
|
|
92
92
|
%tr
|
93
93
|
%td.field-slim LinkedIn
|
94
94
|
%td The person's web address on LinkedIn
|
95
|
+
%tr
|
96
|
+
%td.field-slim Birth month
|
97
|
+
%td The person's birth month (April, Apr, or 4)
|
98
|
+
%tr
|
99
|
+
%td.field-slim Birth day
|
100
|
+
%td The person's birth day
|
101
|
+
%tr
|
102
|
+
%td.field-slim Birth year
|
103
|
+
%td The person's birth year
|
95
104
|
%tr
|
96
105
|
%td.field-slim Do Not Email
|
97
106
|
%td Indicate that this person is not to receive email communication from your organization. Use "true" in this column if the person should not be emailed. This is for your organization's internal use only. The person will still receive purchase and donation receipts from Artful.ly.
|
107
|
+
%tr
|
108
|
+
%td.field-slim Do Not Call
|
109
|
+
%td Indicate that this person is not to receive phone communication from your organization. Use "true" in this column if the person should not be called. This is for your organization's internal use only.
|
98
110
|
%tr
|
99
111
|
%td.field-slim Tags
|
100
112
|
%td
|
@@ -5,4 +5,5 @@
|
|
5
5
|
%ul
|
6
6
|
%li Paid Ticketing
|
7
7
|
%li People
|
8
|
-
%li= link_to "Membership", [:edit, @organization.membership_kit], :id => "configure_#{@organization.membership_kit.type.underscore}"
|
8
|
+
%li= link_to "Membership", [:edit, @organization.membership_kit], :id => "configure_#{@organization.membership_kit.type.underscore}"
|
9
|
+
%li= link_to "Passes", [:edit, @organization.passes_kit], :id => "configure_#{@organization.passes_kit.type.underscore}"
|
@@ -20,15 +20,12 @@
|
|
20
20
|
%li= link_to "List Segments", segments_path
|
21
21
|
%li= link_to "Import", new_import_path(:type => :people)
|
22
22
|
%li= link_to "Export", imports_path
|
23
|
-
%li= link_to "Suggested Households", suggested_households_path
|
24
23
|
|
25
24
|
%li{ :class => "dropdown #{active?(:reports)}" }
|
26
25
|
= nav_dropdown "Reports"
|
27
26
|
%ul.dropdown-menu
|
28
27
|
%li= link_to "Statements", statements_path
|
29
28
|
%li= link_to "Discounts", discounts_reports_path
|
30
|
-
%li= link_to "Members", "#"
|
31
|
-
%li= link_to "Passes", passes_reports_path
|
32
29
|
%li= link_to "Imports / Exports", imports_path
|
33
30
|
|
34
31
|
%li{ :class => "dropdown #{active?(:transactions)}"}
|
@@ -13,6 +13,8 @@
|
|
13
13
|
.center
|
14
14
|
.bottom-room
|
15
15
|
%h3 Where to?
|
16
|
-
|
16
|
+
-if @membership_comp.people.length == 1
|
17
|
+
.bottom-room=link_to "View This Patron", person_path(@membership_comp.people.first), :class => "btn btn-large", :style => "Width: 200px"
|
17
18
|
.bottom-room=link_to "Home Dashboard", root_path, :class => "btn btn-large", :style => "Width: 200px"
|
19
|
+
.bottom-room=link_to "People Search", people_path, :class => "btn btn-large", :style => "Width: 200px"
|
18
20
|
.bottom-room=link_to "Advanced Search", new_search_path, :class => "btn btn-large", :style => "Width: 200px"
|
@@ -78,7 +78,6 @@
|
|
78
78
|
%span.label.label-success
|
79
79
|
Advanced
|
80
80
|
This is the number of memberships a patron can purchase in a single transaction. If you're not sure what this means, leave it set to 1.
|
81
|
-
=link_to "More", "https://artfully.zendesk.com/entries/64035707-How-many-memberships-should-I-allow-a-patron-to-buy", :target => "_blank"
|
82
81
|
.span9
|
83
82
|
= f.select :limit_per_transaction, (1..10), {}, :class => "span2"
|
84
83
|
.form-actions
|
@@ -14,8 +14,8 @@
|
|
14
14
|
%th Event
|
15
15
|
%th Show Date
|
16
16
|
%th Price Paid
|
17
|
-
%th Discount
|
18
|
-
%th
|
17
|
+
%th Discount/Pass
|
18
|
+
%th Status
|
19
19
|
%tbody
|
20
20
|
- order.all_items.each do |item|
|
21
21
|
%tr{:id => "row_item_#{item.id}", :class => item.state}
|
@@ -37,8 +37,10 @@
|
|
37
37
|
%span Donation
|
38
38
|
- if item.product_type.eql?("Membership")
|
39
39
|
%span=item.product.membership_type.name
|
40
|
+
- if item.product_type.eql?("Pass")
|
41
|
+
%span=item.product.pass_type.passerize
|
40
42
|
%td= link_to item.product.event.name, event_path(item.product.event) if item.product_type.eql?("Ticket")
|
41
|
-
%td= link_to item.product.show.
|
43
|
+
%td= link_to item.product.show.parsed_local_datetime.strftime("%m/%d/%Y"), event_show_path(item.product.event, item.product.show) if item.product_type.eql?("Ticket")
|
42
44
|
%td.price= amount_and_nongift item
|
43
45
|
%td
|
44
46
|
=item.discount.try(:code) || item.pass.try(:pass_type).try(:name)
|
@@ -46,8 +46,8 @@
|
|
46
46
|
- if @expired_passes.length > 0
|
47
47
|
%tr
|
48
48
|
%td{:colspan => 7}
|
49
|
-
= link_to "See #{@expired_count} lapsed & expired
|
50
|
-
= link_to "Hide #{@expired_count} lapsed & expired
|
49
|
+
= link_to "See #{@expired_count} lapsed & expired passes", '#', 'ng-show' => '!scope.showExpired', 'ng-click' => 'scope.showExpired = true'
|
50
|
+
= link_to "Hide #{@expired_count} lapsed & expired passes", '#', 'ng-show' => 'scope.showExpired', 'ng-click' => 'scope.showExpired = false'
|
51
51
|
|
52
52
|
- @expired_passes.each do |pass|
|
53
53
|
%tr{'ng-show' => 'scope.showExpired', 'ng-style' => 'scope.expiredStyle'}
|
@@ -60,6 +60,13 @@
|
|
60
60
|
.controls
|
61
61
|
= form.label :email, :class => 'control-label'
|
62
62
|
.control= form.text_field :email
|
63
|
+
.controls.control-label Birthday
|
64
|
+
.year{:data => { 'person-birth_year' => @person.birth_year }}
|
65
|
+
.day{:data => { 'person-birth_day' => @person.birth_day }}
|
66
|
+
.control
|
67
|
+
= form.select :birth_month, [["January", 1], ["February", 2], ["March", 3], ["April", 4], ["May", 5], ["June", 6], ["July", 7], ["August", 8], ["September", 9], ["October", 10], ["November", 11], ["December", 12]], { :include_blank => true }, { :class => 'span2', :id => 'birth_month' }
|
68
|
+
= form.select :birth_day, [], { :include_blank => true }, { :class => 'span1', :id => 'birth_day' }
|
69
|
+
= form.select :birth_year, [], { :include_blank => true }, { :class => 'span1', :id => 'birth_year' }
|
63
70
|
- if @person.individual? && @person.member.nil?
|
64
71
|
.controls
|
65
72
|
- unless except.include? :convert
|
@@ -2,7 +2,7 @@
|
|
2
2
|
=icon_link_to('Work with...', "#menu#bulkactions", 'fa-asterisk', 'dropdown-toggle dropdown btn', '')
|
3
3
|
|
4
4
|
%ul.dropdown-menu
|
5
|
-
%li= link_to "Edit #{@person.possessive} Info", '#edit-person', 'data-toggle' => 'modal'
|
5
|
+
%li= link_to "Edit #{@person.possessive} Info", '#edit-person', 'data-toggle' => 'modal', :id => "edit_link"
|
6
6
|
-with_kit (:membership) do
|
7
7
|
-if person.email.blank? || person.company?
|
8
8
|
%li= link_to "Comp Membership", "#comp-membership", 'data-toggle' => 'modal'
|
@@ -17,9 +17,12 @@
|
|
17
17
|
%li= link_to "View Passes", person_passes_path(@person)
|
18
18
|
|
19
19
|
%li= link_to "Merge", new_merge_path(:loser => person.id)
|
20
|
+
|
20
21
|
- if @person.destroyable?
|
21
22
|
%li= link_to "Delete", @person, :method => :delete, :confirm => "Are you sure you want to delete #{@person}?"
|
22
23
|
|
24
|
+
%li= link_to "Sell To", new_console_sale_path(:person_id => person.id)
|
25
|
+
|
23
26
|
-if person.email.blank? || person.company?
|
24
27
|
-with_kit (:membership) do
|
25
28
|
#comp-membership.modal
|
@@ -55,20 +55,29 @@
|
|
55
55
|
%span.muted
|
56
56
|
== #{Relation.find(group[:relation]).description.titleize.pluralize} (#{group[:count]}) #{link_to("View All", polymorphic_url([@person, :relationships], :relation_id => group[:relation]))} >
|
57
57
|
|
58
|
-
%
|
59
|
-
|
58
|
+
%h5 Preferences
|
59
|
+
%section#communication-preference
|
60
60
|
= form_for @person do |form|
|
61
|
+
.do-not-call
|
62
|
+
= form.label :do_not_call, :class => "checkbox" do
|
63
|
+
= form.check_box :do_not_call
|
64
|
+
%span Do Not Call
|
61
65
|
.do-not-email
|
62
66
|
= form.label :do_not_email, :class => "checkbox" do
|
63
|
-
= form.check_box :do_not_email
|
67
|
+
= form.check_box :do_not_email
|
64
68
|
%span Do Not Email
|
69
|
+
= form.submit "Save", :class => 'btn btn-primary hidden'
|
70
|
+
|
71
|
+
%h5 Email Lists
|
72
|
+
%section#subscription-listing
|
73
|
+
= form_for @person do |form|
|
65
74
|
- if @person.organization.kits.mailchimp
|
66
75
|
.mailchimp-list
|
67
76
|
- mailchimp_kit = @person.organization.kits.mailchimp
|
68
77
|
= hidden_field_tag "person[subscribed_lists][]", nil, :id => "person_subscribed_lists_empty"
|
69
78
|
- mailchimp_kit.attached_lists.each do |list|
|
70
79
|
= label_tag "", :class => "checkbox" do
|
71
|
-
= check_box_tag "person[subscribed_lists][]", list[:list_id], @person.subscribed_lists.include?(list[:list_id]), :class => "
|
80
|
+
= check_box_tag "person[subscribed_lists][]", list[:list_id], @person.subscribed_lists.include?(list[:list_id]), :class => "mail-chimp-list", :disabled => @person.do_not_email
|
72
81
|
%span= list[:list_name]
|
73
82
|
= form.submit "Save", :class => 'btn btn-primary hidden'
|
74
83
|
|
@@ -0,0 +1,141 @@
|
|
1
|
+
= form_tag event_show_sales_path, :class => 'boxoffice-form' do |f|
|
2
|
+
.row
|
3
|
+
.span2
|
4
|
+
%h6.padded-left 1. Tickets
|
5
|
+
.span10
|
6
|
+
.ticket-list
|
7
|
+
// unavailable tickets at the bottom
|
8
|
+
- @sale.ticket_types.sort_by { |t| -@tickets_remaining[t.id] }.each do |ticket_type|
|
9
|
+
.ticket{:class => ('unavailable' if @tickets_remaining[ticket_type.id] < 1), 'data-ticket-id' => ticket_type.id}
|
10
|
+
%a.ticket-quantity-button.subtract -
|
11
|
+
= number_field_tag "quantities[#{ticket_type.id}]", 0, :class => 'ticket-quantity', 'data-remaining' => @tickets_remaining[ticket_type.id], 'data-ticket-price' => number_to_dollars(ticket_type.price), :disabled => (@tickets_remaining[ticket_type.id] < 1)
|
12
|
+
%a.ticket-quantity-button.add +
|
13
|
+
%span.lead.ticket-type
|
14
|
+
%strong= ticket_type.name
|
15
|
+
= number_as_cents(ticket_type.price, cents_if_needed:true)
|
16
|
+
%span.muted
|
17
|
+
(#{content_tag :span, @tickets_remaining[ticket_type.id], :class => 'remaining', 'data-ticket-id' => ticket_type.id} remaining)
|
18
|
+
|
19
|
+
- if @event.organization.authorization_hash[:authorized]
|
20
|
+
.ticket
|
21
|
+
.input-prepend
|
22
|
+
%span.add-on $
|
23
|
+
= number_field_tag 'donation', nil, :placeholder => '0.00', :id => 'order-donation', :class => 'order-donation'
|
24
|
+
%span.lead
|
25
|
+
%strong
|
26
|
+
Donation
|
27
|
+
|
28
|
+
- if Discount.where(event_id:@event.id).any?
|
29
|
+
.discount
|
30
|
+
.ticket
|
31
|
+
.input
|
32
|
+
= text_field_tag 'discount', nil, :id => 'order-discount', :class => 'order-discount'
|
33
|
+
%span.lead
|
34
|
+
%strong
|
35
|
+
Discount Code
|
36
|
+
|
37
|
+
.ticket
|
38
|
+
.input
|
39
|
+
%span.lead.message
|
40
|
+
|
41
|
+
#order-total
|
42
|
+
%h3
|
43
|
+
.loading.hide
|
44
|
+
#{image_tag('loading.gif')} calculating total...
|
45
|
+
.message
|
46
|
+
$0.00 Total
|
47
|
+
= hidden_field_tag 'total'
|
48
|
+
.row.row-blue-padded
|
49
|
+
.span2
|
50
|
+
.row-blue-padded-left
|
51
|
+
%h6 2. Payment
|
52
|
+
.span10
|
53
|
+
.control-group
|
54
|
+
.btn-toolbar.payment-select
|
55
|
+
.btn-group
|
56
|
+
%a.btn{'data-payment-select' => 'cash'}
|
57
|
+
Cash
|
58
|
+
%a.btn{'data-payment-select' => 'credit'}
|
59
|
+
Credit
|
60
|
+
%a.btn{'data-payment-select' => 'check'}
|
61
|
+
Check
|
62
|
+
%a.btn{'data-payment-select' => 'comp'}
|
63
|
+
Comp
|
64
|
+
= hidden_field_tag 'payment_method'
|
65
|
+
#credit-fields.payment-fields{:style => 'display:none;'}
|
66
|
+
.control-group
|
67
|
+
%label
|
68
|
+
Card Number
|
69
|
+
%span.muted.required (required)
|
70
|
+
.controls= text_field_tag("credit_card[number]", params[:credit_card][:card_number], :placeholder => "XXXX-XXXX-XXXX-XXXX", :class => 'input-medium credit_card_number')
|
71
|
+
.control-group
|
72
|
+
%label
|
73
|
+
Card Expiration
|
74
|
+
%span.muted.required (required)
|
75
|
+
.date_field.controls
|
76
|
+
= select_tag("credit_card[month]", options_for_select(1..12, params[:credit_card]["month"]), :class => 'input-small inline')
|
77
|
+
= select_tag("credit_card[year]", options_for_select(Time.now.year..Time.now.year + 10, params[:credit_card]["year"]), :class => 'input-small inline')
|
78
|
+
#check-fields.payment-fields{:style => 'display:none;'}
|
79
|
+
.control-group
|
80
|
+
= label_tag("check[number]", "Check Number")
|
81
|
+
.controls= text_field_tag("check[number]", params[:check].try([:number]), :class => 'input-medium')
|
82
|
+
|
83
|
+
.row
|
84
|
+
.span2
|
85
|
+
%h6.padded-left 3. Buyer Info
|
86
|
+
.span10
|
87
|
+
#user-info
|
88
|
+
#existing-user-popover
|
89
|
+
= hidden_field_tag(:person_id, "", :name => "person[id]")
|
90
|
+
.control-group
|
91
|
+
%label
|
92
|
+
First Name
|
93
|
+
%span.muted.required.name-required{:style => 'display:none;'} (required)
|
94
|
+
.controls
|
95
|
+
= text_field_tag(:person_first_name, "", :id => "person_first_name", :name => "person[first_name]", :placeholder => "First name", :class => 'person_first_name')
|
96
|
+
.control-group
|
97
|
+
%label
|
98
|
+
Last Name
|
99
|
+
%span.muted.required.name-required{:style => 'display:none;'} (required)
|
100
|
+
.controls
|
101
|
+
= text_field_tag(:person_last_name, "", :id => "person_last_name", :name => "person[last_name]", :placeholder => "Last name", :class => 'person_last_name')
|
102
|
+
.control-group
|
103
|
+
%label
|
104
|
+
Email
|
105
|
+
%span.muted.required.contact-required{:style => 'display:none;'} (required or phone)
|
106
|
+
.controls= email_field_tag(:person_email, "", :id => "person_email", :name => "person[email]", :placeholder => "example@email.com", :class => 'person_email')
|
107
|
+
.control-group
|
108
|
+
%label
|
109
|
+
Phone Number
|
110
|
+
%span.muted.required.contact-required{:style => 'display:none;'} (required or email)
|
111
|
+
.controls
|
112
|
+
= text_field_tag(:person_phone, "", :id => "person_phone", :name => "person[phones_attributes][][number]", :placeholder => "(XXX) XXX-XXXX", :class => 'person_phone')
|
113
|
+
.control-group
|
114
|
+
%label
|
115
|
+
Order Notes
|
116
|
+
%span.muted.required
|
117
|
+
.controls= text_area_tag(:order_notes, "", :id => "order_notes", :name => "order_notes")
|
118
|
+
|
119
|
+
.row.row-blue-padded
|
120
|
+
.span2
|
121
|
+
.row-blue-padded-left
|
122
|
+
%h6 4. Check in
|
123
|
+
.span10
|
124
|
+
.control-group
|
125
|
+
%label.checkbox
|
126
|
+
= check_box_tag "auto_check_in"
|
127
|
+
Mark tickets as received on doorlist.
|
128
|
+
|
129
|
+
.row
|
130
|
+
.span10.offset2
|
131
|
+
= submit_tag 'Checkout', :class => 'btn btn-large', :disabled => 'disabled', :id => 'checkout-now-button'
|
132
|
+
|
133
|
+
#submit-confirmation.modal.hide.fade
|
134
|
+
.modal-header
|
135
|
+
%button.close.modal-close.hide{'type' => 'button', 'data-dismiss' => 'modal'} x
|
136
|
+
%h3 Processing...
|
137
|
+
.modal-body
|
138
|
+
.loading= image_tag('loading.gif')
|
139
|
+
.content
|
140
|
+
.modal-footer
|
141
|
+
%button.btn.btn-primary.modal-close.hide{'data-dismiss' => 'modal'} Close
|
@@ -0,0 +1,79 @@
|
|
1
|
+
.row.row-blue-padded
|
2
|
+
.span4.relative
|
3
|
+
.row-blue-padded-left
|
4
|
+
.progress.progress-doorlist
|
5
|
+
.bar.bar-doorlist
|
6
|
+
.span8
|
7
|
+
.row-blue-padded-right
|
8
|
+
.btn-group.download-door-list
|
9
|
+
%a.btn.dropdown-toggle{'data-toggle' => 'dropdown', 'href' => '#'}
|
10
|
+
%i.fa.fa-arrow-circle-down
|
11
|
+
Download Door List
|
12
|
+
%ul.dropdown-menu
|
13
|
+
%li= link_to 'CSV Download', door_list_event_show_path(@event, @show, :format => :csv)
|
14
|
+
%li= link_to 'PDF Download', door_list_event_show_path(@event, @show, :format => :pdf)
|
15
|
+
%span.search-container
|
16
|
+
= search_field_tag :live_search, nil, :placeholder => 'Search Door List', :class => 'span7', :class => 'search-doorlist'
|
17
|
+
|
18
|
+
.row
|
19
|
+
.span4.relative
|
20
|
+
#buyer-details
|
21
|
+
.span8
|
22
|
+
#door-list-table
|
23
|
+
%table#door-list.table
|
24
|
+
%tbody
|
25
|
+
- tickets_grouped_by_buyer = @door_list.items.group_by {|i| i.buyer }.sort_by { |buyer, door_list_items| door_list_sort(buyer) }
|
26
|
+
- tickets_grouped_by_buyer.each do |buyer, door_list_items|
|
27
|
+
- special_instructions = door_list_grouped_attribute(door_list_items, :special_instructions)
|
28
|
+
- order_notes = door_list_grouped_attribute(door_list_items, :notes)
|
29
|
+
%tr.buyer{'data-buyer-id' => buyer.id, :id => "buyer-#{buyer.id}", 'data-search-blob' => "#{buyer.first_name} #{buyer.last_name} #{special_instructions} #{order_notes}"}
|
30
|
+
%td
|
31
|
+
%h4
|
32
|
+
- if door_list_items.select {|d| !d.ticket.validated? }.empty?
|
33
|
+
%i.remaining-ticket-indicator.fa.fa-circle
|
34
|
+
- elsif door_list_items.select {|d| d.ticket.validated? }.any?
|
35
|
+
%i.remaining-ticket-indicator.fa.fa-adjust
|
36
|
+
- else
|
37
|
+
%i.remaining-ticket-indicator.fa.fa-circle-o
|
38
|
+
= door_list_name_and_company(buyer)
|
39
|
+
- if special_instructions.present? || order_notes.present?
|
40
|
+
%i.fa.fa-file
|
41
|
+
%td.buyer-ticket-count
|
42
|
+
%strong= door_list_items.length
|
43
|
+
ticket#{'s' unless door_list_items.length == 1}
|
44
|
+
%td.buyer-total
|
45
|
+
- amount = door_list_items.map {|d| d.ticket.sold_price }.inject(:+)
|
46
|
+
= number_as_cents(amount, cents_if_needed:true)
|
47
|
+
%br
|
48
|
+
= door_list_items.map {|d| d.payment_method }.uniq.to_sentence
|
49
|
+
.buyer-details-hidden{:style => 'display:none;', :id => "buyer-details-#{buyer.id}"}
|
50
|
+
%h1= link_to buyer.to_s, buyer
|
51
|
+
.content
|
52
|
+
%ul
|
53
|
+
- door_list_items.sort_by {|d| d.ticket.ticket_type }.each do |door_list_item|
|
54
|
+
%li
|
55
|
+
%p
|
56
|
+
%label.lead
|
57
|
+
= check_box_tag "validated", "validated", door_list_item.ticket.validated, :class => 'door-list-checkbox', 'data-ticket-id' => door_list_item.ticket.id, 'data-buyer-id' => buyer.id
|
58
|
+
%strong
|
59
|
+
= door_list_item.ticket.ticket_type.name
|
60
|
+
= number_as_cents(door_list_item.ticket.sold_price, cents_if_needed:true)
|
61
|
+
= door_list_item.payment_method
|
62
|
+
%p
|
63
|
+
-# We don't modify tickets after the show date, so there's the posibility that the
|
64
|
+
-# ticket can be refunded after the show. The ticket remains "sold" but has no sold_item
|
65
|
+
-# and it appears to the door list that it has no order. This is why we
|
66
|
+
-# .select on the end of this statement.
|
67
|
+
- order_ids = door_list_items.collect(&:order_id).uniq.select{|order| order.present?}
|
68
|
+
%strong.muted Order#{'s' if order_ids.count > 1}:
|
69
|
+
= safe_join(order_ids.map{|o| link_to o, order_path(o)}, ', ')
|
70
|
+
|
71
|
+
- if special_instructions.present?
|
72
|
+
%p
|
73
|
+
%strong.muted Special Instructions:
|
74
|
+
= special_instructions
|
75
|
+
|
76
|
+
- if order_notes.present?
|
77
|
+
%p
|
78
|
+
%strong.muted Notes:
|
79
|
+
= order_notes
|