effective_orders 5.6.0 → 5.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff78fd58ee1ed93581d8595a4696c6949cd034453b25a3aacc0202141cf5a1c0
4
- data.tar.gz: ebb6df4bd158ed459c6be065b7974961f7090a4bc7505ff7d53ae62ed64b107e
3
+ metadata.gz: 10e6548b3a84173f5f3f45a9affc25399639d63ede24fe528ff209713567dee5
4
+ data.tar.gz: 54a7feb0ef6f669ab1d2fe01e5ec2b0097bde754653575c40b7806ce9ca26ddb
5
5
  SHA512:
6
- metadata.gz: 29f6c8410a99510761e7c9ee258314d731c8d78b64adec91f42ecb89e99c4a26e949a29f987cf9e421d88071f0425da8ed1e4802d06d29c4167d1e5aa7076e49
7
- data.tar.gz: c9bce8b4363d39ea49eb1d8f99a80c92893185dbd28ab860d17ca4035677d5b52b42ae84adf84249885c8c4bb7184eac9aaf21510739885f80a6d43b762ee0a9
6
+ metadata.gz: ea11b4ac3dfe6d4091a89761fbc434367c432b91ee0ae2e2f18b8d2fc79672e26a1488123f4214589ed1b7be8f2229b41d6df362c73a60d379dacd83f268f91d
7
+ data.tar.gz: 18632a2434b9081cad43dac618ce37785ac0fe1aa6a2770e09df9ce6a0e016f66c70b31f8b8d8db99a6920f04a3f7634524bcee1e13a1473acce6b4b7bb17c3b
@@ -82,7 +82,7 @@ module Effective
82
82
  self.state = EffectiveOrders::CONFIRMED if pending? && confirmed_checkout
83
83
  end
84
84
 
85
- with_options(unless: -> { purchased? }) do
85
+ with_options(unless: -> { done? }) do
86
86
  before_validation { assign_email }
87
87
  before_validation { assign_user_address }
88
88
  before_validation { assign_billing_name }
@@ -105,7 +105,7 @@ module Effective
105
105
 
106
106
  validate(unless: -> { (free? && EffectiveOrders.free?) || (refund? && EffectiveOrders.refund?) }) do
107
107
  if total.present? && total < EffectiveOrders.minimum_charge
108
- self.errors.add(:total, "must be $#{'%0.2f' % (EffectiveOrders.minimum_charge.to_i / 100.0)} or more. Please add additional items.")
108
+ errors.add(:total, "must be $#{'%0.2f' % (EffectiveOrders.minimum_charge.to_i / 100.0)} or more. Please add additional items.")
109
109
  end
110
110
  end
111
111
  end
@@ -139,7 +139,7 @@ module Effective
139
139
  validates :payment_provider, presence: true
140
140
 
141
141
  validate do
142
- self.errors.add(:payment_provider, "unknown deferred payment provider") unless EffectiveOrders.deferred_providers.include?(payment_provider)
142
+ errors.add(:payment_provider, "unknown deferred payment provider") unless EffectiveOrders.deferred_providers.include?(payment_provider)
143
143
  end
144
144
  end
145
145
 
@@ -147,6 +147,10 @@ module Effective
147
147
  raise EffectiveOrders::AlreadyPurchasedException.new('cannot unpurchase an order') unless purchased?
148
148
  end
149
149
 
150
+ before_save(if: -> { done? }) do
151
+ raise('cannot change total of a purchased order') if changes[:total].present?
152
+ end
153
+
150
154
  # Effective::Order.new()
151
155
  # Effective::Order.new(Product.first)
152
156
  # Effective::Order.new(current_cart)
@@ -390,7 +394,7 @@ module Effective
390
394
  end
391
395
 
392
396
  def done?
393
- purchased? || declined?
397
+ persisted? && (purchased? || declined?)
394
398
  end
395
399
 
396
400
  # A custom order is one that was created by an admin
@@ -641,7 +645,6 @@ module Effective
641
645
  EffectiveOrders.send_email(:refund_notification_to_admin, self) if purchased? && refund?
642
646
  end
643
647
 
644
-
645
648
  protected
646
649
 
647
650
  def get_tax_rate
@@ -666,11 +669,11 @@ module Effective
666
669
  end
667
670
 
668
671
  def assign_billing_name
669
- self.billing_name ||= billing_address.try(:full_name).presence || user.to_s.presence
672
+ self.billing_name = billing_address.try(:full_name).presence || user.to_s.presence
670
673
  end
671
674
 
672
675
  def assign_email
673
- self.email ||= user.try(:email)
676
+ self.email = user.email if user.try(:email).present?
674
677
  end
675
678
 
676
679
  def assign_user_address
@@ -690,9 +693,9 @@ module Effective
690
693
  # This overwrites the prices, taxes, etc on every save.
691
694
  def assign_order_totals
692
695
  # Copies prices from purchasable into order items
693
- present_order_items.each { |oi| oi.assign_purchasable_attributes() }
696
+ present_order_items.each { |oi| oi.assign_purchasable_attributes }
694
697
 
695
- # The subtotal
698
+ # Sum of order item subtotals
696
699
  subtotal = present_order_items.map { |oi| oi.subtotal }.sum
697
700
 
698
701
  self.subtotal = subtotal
@@ -34,7 +34,7 @@ module Effective
34
34
 
35
35
  # This method is called in a before_validation in order.assign_order_totals()
36
36
  def assign_purchasable_attributes
37
- assign_attributes(name: purchasable.name, price: purchasable.price, tax_exempt: purchasable.tax_exempt?) if purchasable
37
+ assign_attributes(name: purchasable.purchasable_name, price: purchasable.price, tax_exempt: purchasable.tax_exempt) if purchasable
38
38
  end
39
39
 
40
40
  def build_purchasable(atts = {})
@@ -1,8 +1,8 @@
1
1
  %h1.effective-admin-heading= @page_title
2
2
 
3
- = render 'effective/orders/order_actions', order: @order
3
+ - if @order.custom_order? && @order.in_progress?
4
+ = render 'effective/orders/order_actions', order: @order
4
5
 
5
- - if @order.custom_order?
6
6
  .mb-4
7
7
  = collapse('show order') do
8
8
  = render 'effective/orders/order', order: @order, no_order_actions: true
@@ -10,4 +10,6 @@
10
10
  = render 'admin/orders/form', order: @order
11
11
 
12
12
  - else
13
+ - # Same as the show action
13
14
  = render 'effective/orders/order', order: @order
15
+ = render 'admin/orders/form_note_internal', order: @order
@@ -7,17 +7,18 @@
7
7
  class: 'btn btn-secondary',
8
8
  data: { method: :post, confirm: "Send receipt to #{order.emails_send_to}?" }
9
9
 
10
- - if order.persisted? && order.in_progress? && EffectiveResources.authorized?(controller, :admin, :effective_orders)
11
- - if params[:action] == 'show'
12
- = link_to('Edit', effective_orders.edit_admin_order_path(order), class: 'btn btn-primary')
10
+ - if controller_path.include?('admin/') && (EffectiveResources.authorized?(controller, :admin, :effective_orders) rescue false)
11
+ - if order.persisted? && order.in_progress?
12
+ - if params[:action] == 'show'
13
+ = link_to('Edit', effective_orders.edit_admin_order_path(order), class: 'btn btn-primary')
13
14
 
14
- - if params[:action] == 'edit'
15
- = link_to('Show', effective_orders.admin_order_path(order), class: 'btn btn-primary')
15
+ - if params[:action] == 'edit'
16
+ = link_to('Show', effective_orders.admin_order_path(order), class: 'btn btn-primary')
16
17
 
17
- = link_to 'Email request for payment to buyer', effective_orders.send_payment_request_admin_order_path(order),
18
- class: 'btn btn-secondary',
19
- data: { method: :post, confirm: "Send request for payment to #{order.emails_send_to}?" }
18
+ = link_to 'Email request for payment to buyer', effective_orders.send_payment_request_admin_order_path(order),
19
+ class: 'btn btn-secondary',
20
+ data: { method: :post, confirm: "Send request for payment to #{order.emails_send_to}?" }
20
21
 
21
- = link_to 'Delete', effective_orders.admin_order_path(order),
22
- class: 'btn btn-danger',
23
- data: { method: :delete, confirm: "Really delete #{order}?" }
22
+ = link_to 'Delete', effective_orders.admin_order_path(order),
23
+ class: 'btn btn-danger',
24
+ data: { method: :delete, confirm: "Really delete #{order}?" }
@@ -1,3 +1,3 @@
1
1
  module EffectiveOrders
2
- VERSION = '5.6.0'.freeze
2
+ VERSION = '5.7.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_orders
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.6.0
4
+ version: 5.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-25 00:00:00.000000000 Z
11
+ date: 2022-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails