effective_orders 2.1.7 → 2.1.8

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 241819ceeb137196d59b1383c99ff092e65e1fa7
4
- data.tar.gz: d79d5f2798e61e92ab25f686f1db9624d2706dec
3
+ metadata.gz: f154bcf1f7cdb3364371b6b2c794c9d4ac232397
4
+ data.tar.gz: f852ff91b864ffd6a443e0a7fe5a3d23aa4fd1cf
5
5
  SHA512:
6
- metadata.gz: c74dcef00e1d2506b7a425582b3b51eaee276c007861e90ea5a275b78d1e40ff089332c7c084bf4cb63aaf9126b1004f146a68f2dfa3a24e00ba7c345f37f115
7
- data.tar.gz: 1087399127980e9089fb2f1dd41d5d01eb2a850ac4f96e6074b82540b7f8ea4214aca1b0404ecba099cd6de13367c5a6bc192af83052cfd37d47d1c21615bae8
6
+ metadata.gz: f6810b9d5300273c7c7b4eafa63b800a6c7a1e58ea0acaf7453785fb030333b13db4f5a4d1287e6db739c2ea6217f100774ab1e3a18074f847e4bdbc9f79a13c
7
+ data.tar.gz: 4bf6074ecb430326d9a76bace99020685ddb0bad4d4f279fc443dcf3434adef7cccdc06afd773016de172e9696d30663b59cda1556e9b318341a05983087e776
@@ -32,15 +32,17 @@ module Admin
32
32
  flash[:success] = 'Successfully updated order'
33
33
  end
34
34
 
35
- redirect_to effective_orders.admin_order_path(@order)
35
+ redirect_to(admin_redirect_path)
36
36
  else
37
- flash.now[:danger] = 'Unable to update order'
37
+ flash.now[:danger] = "Unable to update order: #{@order.errors.full_messages.to_sentence}"
38
38
  render action: :show
39
39
  end
40
40
  end
41
41
 
42
42
  def new
43
43
  @order = Effective::Order.new
44
+ @order.user = (User.find(params[:user_id]) rescue nil) if params[:user_id]
45
+
44
46
  @page_title = 'New Order'
45
47
 
46
48
  authorize_effective_order!
@@ -60,14 +62,13 @@ module Admin
60
62
  @order.attributes = order_params.except(:order_items_attributes, :user_id)
61
63
 
62
64
  if @order.create_as_pending
63
- path_for_redirect = params[:commit] == 'Save and Add New' ? effective_orders.new_admin_order_path : effective_orders.admin_order_path(@order)
64
65
  message = 'Successfully created order'
65
66
  message << ". #{@order.user.email} has been sent a request for payment." if @order.send_payment_request_to_buyer?
66
67
  flash[:success] = message
67
- redirect_to path_for_redirect
68
+ redirect_to(admin_redirect_path)
68
69
  else
69
70
  @page_title = 'New Order'
70
- flash.now[:danger] = 'Unable to create order'
71
+ flash.now[:danger] = "Unable to create order: #{@order.errors.full_messages.to_sentence}"
71
72
  render :new
72
73
  end
73
74
  end
@@ -89,6 +90,7 @@ module Admin
89
90
  provider: order_params[:payment_provider],
90
91
  card: order_params[:payment_card],
91
92
  email: @order.send_mark_as_paid_email_to_buyer?,
93
+ skip_buyer_validations: true
92
94
  )
93
95
  rescue => e
94
96
  purchased = false
@@ -96,7 +98,7 @@ module Admin
96
98
 
97
99
  if purchased
98
100
  flash[:success] = 'Order marked as paid successfully'
99
- redirect_to effective_orders.admin_order_path(@order)
101
+ redirect_to(admin_redirect_path)
100
102
  else
101
103
  flash.now[:danger] = "Unable to mark order as paid: #{@order.errors.full_messages.to_sentence}"
102
104
  render action: :mark_as_paid
@@ -136,5 +138,23 @@ module Admin
136
138
  EffectiveOrders.authorized?(self, action_name.to_sym, @order || Effective::Order)
137
139
  end
138
140
 
141
+ def admin_redirect_path
142
+ # Allow an app to define effective_orders_admin_redirect_path in their ApplicationController
143
+ path = if self.respond_to?(:effective_orders_admin_redirect_path)
144
+ effective_orders_admin_redirect_path(params[:commit], @order)
145
+ end
146
+
147
+ return path if path.present?
148
+
149
+ case params[:commit]
150
+ when 'Save and Add New'
151
+ effective_orders.new_admin_order_path(user_id: @order.user.try(:to_param))
152
+ when 'Save and Mark as Paid'
153
+ effective_orders.mark_as_paid_admin_order_path(@order)
154
+ else
155
+ effective_orders.admin_order_path(@order)
156
+ end
157
+ end
158
+
139
159
  end
140
160
  end
@@ -61,11 +61,11 @@ module Effective
61
61
  validates :tax, presence: true, unless: Proc.new { |order| order.skip_buyer_validations? }
62
62
 
63
63
  if EffectiveOrders.require_billing_address # An admin creating a new pending order should not be required to have addresses
64
- validates :billing_address, presence: true, unless: Proc.new { |order| order.new_record? && order.pending? }
64
+ validates :billing_address, presence: true, unless: Proc.new { |order| (order.new_record? && order.pending?) || order.skip_buyer_validations? }
65
65
  end
66
66
 
67
67
  if EffectiveOrders.require_shipping_address # An admin creating a new pending order should not be required to have addresses
68
- validates :shipping_address, presence: true, unless: Proc.new { |order| order.new_record? && order.pending? }
68
+ validates :shipping_address, presence: true, unless: Proc.new { |order| (order.new_record? && order.pending?) || order.skip_buyer_validations? }
69
69
  end
70
70
 
71
71
  if ((minimum_charge = EffectiveOrders.minimum_charge.to_i) rescue nil).present?
@@ -319,6 +319,8 @@ module Effective
319
319
  self.payment_provider = provider.to_s
320
320
  self.payment_card = card.to_s.presence || 'none'
321
321
 
322
+ self.skip_buyer_validations = skip_buyer_validations
323
+
322
324
  save!(validate: validate)
323
325
 
324
326
  order_items.each { |item| (item.purchasable.purchased!(self, item) rescue nil) }
@@ -25,8 +25,4 @@
25
25
  %h3 Internal Note
26
26
  = f.input :note_internal, label: 'Internal note', hint: 'For internal admin use only. This note will never be displayed to the buyer.'
27
27
 
28
-
29
- %p.text-right
30
- = f.button :submit, 'Save', data: { disable_with: 'Saving...' }
31
- = f.button :submit, 'Save and Add New', data: { disable_with: 'Saving...' }
32
- = link_to 'Cancel', effective_orders.admin_orders_path
28
+ = render partial: '/admin/orders/order_actions', locals: { order: @order, form: f, f: f }
@@ -28,6 +28,5 @@
28
28
  %h3 Note to Buyer
29
29
  = f.input :note_to_buyer, label: 'Note to buyer', hint: 'This is displayed to the buyer on all order receipts.'
30
30
 
31
- %p.text-right
32
- = f.button :submit, 'Mark Order as Paid', data: { disable_with: 'Saving...' }
31
+ = render partial: '/admin/orders/order_actions', locals: { order: @order, form: f, f: f }
33
32
 
@@ -0,0 +1,6 @@
1
+ %p.text-right
2
+ = form.button :submit, 'Save', data: { disable_with: 'Saving...' }
3
+ = form.button :submit, 'Save and Add New', data: { disable_with: 'Saving...' }
4
+ - unless params[:action] == 'mark_as_paid'
5
+ = form.button :submit, 'Save and Mark as Paid', data: { disable_with: 'Saving...' }
6
+ = link_to 'Cancel', effective_orders.admin_orders_path
@@ -1,3 +1,3 @@
1
1
  module EffectiveOrders
2
- VERSION = '2.1.7'.freeze
2
+ VERSION = '2.1.8'.freeze
3
3
  end
@@ -91,7 +91,7 @@ describe Admin::OrdersController, type: :controller do
91
91
  post :create, order_params.merge(commit: button_pressed)
92
92
 
93
93
  expect(response).to be_redirect
94
- expect(response).to redirect_to EffectiveOrders::Engine.routes.url_helpers.new_admin_order_path
94
+ expect(response).to redirect_to EffectiveOrders::Engine.routes.url_helpers.new_admin_order_path(user_id: 1)
95
95
  expect(flash[:success]).to eq "Successfully created order. #{assigns(:order).user.email} has been sent a request for payment."
96
96
  end
97
97
  end
@@ -132,7 +132,7 @@ describe Admin::OrdersController, type: :controller do
132
132
  expect(response).to be_successful
133
133
  expect(response).to render_template :new
134
134
  expect(assigns(:page_title)).to eq 'New Order'
135
- expect(flash[:danger]).to eq 'Unable to create order'
135
+ expect(flash[:danger].to_s.include?('Unable to create order')).to eq true
136
136
  end
137
137
  end
138
138
 
@@ -18,3 +18,6 @@
18
18
   (0.1ms) SELECT MAX("orders"."id") FROM "orders"
19
19
   (0.1ms) SELECT MAX("orders"."id") FROM "orders"
20
20
   (0.1ms) SELECT MAX("orders"."id") FROM "orders"
21
+  (0.1ms) SELECT MAX("orders"."id") FROM "orders"
22
+  (0.2ms) SELECT MAX("orders"."id") FROM "orders"
23
+  (0.1ms) SELECT MAX("orders"."id") FROM "orders"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_orders
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.7
4
+ version: 2.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
@@ -317,6 +317,7 @@ files:
317
317
  - app/views/admin/orders/_form.html.haml
318
318
  - app/views/admin/orders/_form_mark_as_paid.html.haml
319
319
  - app/views/admin/orders/_form_note_internal.html.haml
320
+ - app/views/admin/orders/_order_actions.html.haml
320
321
  - app/views/admin/orders/_order_item_fields.html.haml
321
322
  - app/views/admin/orders/_order_payment_details.html.haml
322
323
  - app/views/admin/orders/index.html.haml