solidus_core 1.0.0.pre → 1.0.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of solidus_core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/mailers/spree/carton_mailer.rb +1 -1
- data/app/mailers/spree/reimbursement_mailer.rb +3 -2
- data/app/mailers/spree/test_mailer.rb +1 -1
- data/app/models/concerns/spree/user_methods.rb +49 -0
- data/app/models/spree/ability.rb +2 -0
- data/app/models/spree/adjustment.rb +1 -0
- data/app/models/spree/adjustment_reason.rb +12 -0
- data/app/models/spree/app_configuration.rb +1 -1
- data/app/models/spree/carton.rb +1 -1
- data/app/models/spree/inventory_unit.rb +10 -6
- data/app/models/spree/legacy_user.rb +4 -12
- data/app/models/spree/order.rb +15 -15
- data/app/models/spree/order/checkout.rb +20 -15
- data/app/models/spree/order/payments.rb +1 -5
- data/app/models/spree/order_cancellations.rb +1 -1
- data/app/models/spree/order_capturing.rb +1 -1
- data/app/models/spree/order_mutex.rb +1 -1
- data/app/models/spree/order_shipping.rb +1 -1
- data/app/models/spree/payment/processing.rb +39 -13
- data/app/models/spree/payment_method.rb +2 -2
- data/app/models/spree/permission_sets/base.rb +17 -0
- data/app/models/spree/permission_sets/configuration_display.rb +24 -0
- data/app/models/spree/permission_sets/configuration_management.rb +24 -0
- data/app/models/spree/permission_sets/dashboard_display.rb +9 -0
- data/app/models/spree/permission_sets/order_display.rb +15 -0
- data/app/models/spree/permission_sets/order_management.rb +15 -0
- data/app/models/spree/permission_sets/product_display.rb +18 -0
- data/app/models/spree/permission_sets/product_management.rb +19 -0
- data/app/models/spree/permission_sets/promotion_display.rb +12 -0
- data/app/models/spree/permission_sets/promotion_management.rb +12 -0
- data/app/models/spree/permission_sets/report_display.rb +9 -0
- data/app/models/spree/permission_sets/stock_display.rb +10 -0
- data/app/models/spree/permission_sets/stock_management.rb +11 -0
- data/app/models/spree/permission_sets/user_display.rb +11 -0
- data/app/models/spree/permission_sets/user_management.rb +11 -0
- data/app/models/spree/promotion/rules/item_total.rb +12 -33
- data/app/models/spree/promotion/rules/user.rb +2 -2
- data/app/models/spree/promotion_rule.rb +2 -2
- data/app/models/spree/reimbursement.rb +0 -12
- data/app/models/spree/return_authorization.rb +2 -2
- data/app/models/spree/return_item.rb +1 -0
- data/app/models/spree/return_reason.rb +18 -0
- data/app/models/spree/role_user.rb +1 -1
- data/app/models/spree/shipment.rb +9 -26
- data/app/models/spree/store_credit.rb +31 -7
- data/app/models/spree/store_credit_event.rb +13 -11
- data/app/models/spree/store_credit_update_reason.rb +2 -0
- data/app/models/spree/user_class_handle.rb +21 -0
- data/app/models/spree/user_stock_location.rb +1 -1
- data/config/initializers/spree_user.rb +10 -0
- data/config/locales/en.yml +58 -16
- data/db/default/spree/return_reasons.rb +9 -0
- data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +11 -9
- data/db/migrate/20150618212517_create_spree_store_credit_update_reasons.rb +8 -0
- data/db/migrate/20150619160613_create_adjustment_reason.rb +18 -0
- data/db/migrate/20150622144655_add_update_reason_to_store_credit_events.rb +5 -0
- data/db/migrate/20150623194316_add_return_authorization_reason_id_to_return_items.rb +7 -0
- data/db/migrate/20150623214058_seed_store_credit_update_reasons.rb +9 -0
- data/db/migrate/20150626200816_remove_shipping_method_id_from_spree_orders.rb +9 -0
- data/db/seeds.rb +9 -0
- data/lib/spree/core.rb +1 -4
- data/lib/spree/core/controller_helpers/auth.rb +15 -20
- data/lib/spree/core/engine.rb +1 -0
- data/lib/spree/core/importer/order.rb +8 -5
- data/lib/spree/core/role_configuration.rb +70 -0
- data/lib/spree/permitted_attributes.rb +1 -1
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +6 -0
- data/lib/spree/testing_support/factories/order_factory.rb +14 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +2 -4
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +3 -3
- data/lib/spree/testing_support/factories/return_item_factory.rb +1 -0
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +10 -0
- data/lib/spree/testing_support/factories/store_credit_update_reason_factory.rb +5 -0
- data/lib/spree/testing_support/factories/store_factory.rb +1 -1
- data/lib/spree/testing_support/order_walkthrough.rb +2 -7
- metadata +36 -10
- data/app/assets/images/logo/solidus.png +0 -0
- data/app/models/spree/item_adjustments.rb.orig +0 -93
- data/app/models/spree/return_authorization_reason.rb +0 -7
- data/app/models/spree/static_model_preferences.rb +0 -32
- data/config/initializers/user_class_extensions.rb +0 -42
@@ -7,11 +7,13 @@ class Spree::StoreCredit < ActiveRecord::Base
|
|
7
7
|
ELIGIBLE_ACTION = 'eligible'
|
8
8
|
AUTHORIZE_ACTION = 'authorize'
|
9
9
|
ALLOCATION_ACTION = 'allocation'
|
10
|
+
ADJUSTMENT_ACTION = 'adjustment'
|
11
|
+
INVALIDATE_ACTION = 'invalidate'
|
10
12
|
|
11
13
|
DEFAULT_CREATED_BY_EMAIL = "spree@example.com"
|
12
14
|
|
13
|
-
belongs_to :user, class_name: Spree.
|
14
|
-
belongs_to :created_by, class_name: Spree.
|
15
|
+
belongs_to :user, class_name: Spree::UserClassHandle.new
|
16
|
+
belongs_to :created_by, class_name: Spree::UserClassHandle.new
|
15
17
|
belongs_to :category, class_name: "Spree::StoreCreditCategory"
|
16
18
|
belongs_to :credit_type, class_name: 'Spree::StoreCreditType', :foreign_key => 'type_id'
|
17
19
|
has_many :store_credit_events
|
@@ -27,11 +29,12 @@ class Spree::StoreCredit < ActiveRecord::Base
|
|
27
29
|
|
28
30
|
scope :order_by_priority, -> { includes(:credit_type).order('spree_store_credit_types.priority ASC') }
|
29
31
|
|
30
|
-
before_validation :associate_credit_type
|
31
32
|
after_save :store_event
|
33
|
+
before_validation :associate_credit_type
|
34
|
+
before_validation :validate_category_unchanged, on: :update
|
32
35
|
before_destroy :validate_no_amount_used
|
33
36
|
|
34
|
-
attr_accessor :action, :action_amount, :action_originator, :action_authorization_code
|
37
|
+
attr_accessor :action, :action_amount, :action_originator, :action_authorization_code, :update_reason
|
35
38
|
|
36
39
|
extend Spree::DisplayMoney
|
37
40
|
money_methods :amount, :amount_used, :amount_authorized
|
@@ -174,9 +177,23 @@ class Spree::StoreCredit < ActiveRecord::Base
|
|
174
177
|
!!invalidated_at
|
175
178
|
end
|
176
179
|
|
177
|
-
def
|
180
|
+
def update_amount(amount, reason, user_performing_update)
|
181
|
+
previous_amount = self.amount
|
182
|
+
self.amount = amount
|
183
|
+
self.action_amount = self.amount - previous_amount
|
184
|
+
self.action = ADJUSTMENT_ACTION
|
185
|
+
self.update_reason = reason
|
186
|
+
self.action_originator = user_performing_update
|
187
|
+
save
|
188
|
+
end
|
189
|
+
|
190
|
+
def invalidate(reason, user_performing_invalidation)
|
178
191
|
if invalidateable?
|
179
|
-
|
192
|
+
self.action = INVALIDATE_ACTION
|
193
|
+
self.update_reason = reason
|
194
|
+
self.action_originator = user_performing_invalidation
|
195
|
+
self.invalidated_at = Time.now
|
196
|
+
save
|
180
197
|
else
|
181
198
|
errors.add(:invalidated_at, Spree.t("store_credit.errors.cannot_invalidate_uncaptured_authorization"))
|
182
199
|
return false
|
@@ -222,7 +239,7 @@ class Spree::StoreCredit < ActiveRecord::Base
|
|
222
239
|
end
|
223
240
|
|
224
241
|
def store_event
|
225
|
-
return unless amount_changed? || amount_used_changed? || amount_authorized_changed? || action
|
242
|
+
return unless amount_changed? || amount_used_changed? || amount_authorized_changed? || [ELIGIBLE_ACTION, INVALIDATE_ACTION].include?(action)
|
226
243
|
|
227
244
|
event = if action
|
228
245
|
store_credit_events.build(action: action)
|
@@ -235,6 +252,7 @@ class Spree::StoreCredit < ActiveRecord::Base
|
|
235
252
|
authorization_code: action_authorization_code || event.authorization_code || generate_authorization_code,
|
236
253
|
user_total_amount: user.total_available_store_credit,
|
237
254
|
originator: action_originator,
|
255
|
+
update_reason: update_reason,
|
238
256
|
})
|
239
257
|
end
|
240
258
|
|
@@ -252,6 +270,12 @@ class Spree::StoreCredit < ActiveRecord::Base
|
|
252
270
|
end
|
253
271
|
end
|
254
272
|
|
273
|
+
def validate_category_unchanged
|
274
|
+
if category_id_changed?
|
275
|
+
errors.add(:category, Spree.t('admin.store_credits.errors.cannot_be_modified'))
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
255
279
|
def validate_no_amount_used
|
256
280
|
if amount_used > 0
|
257
281
|
errors.add(:amount_used, 'is greater than zero. Can not delete store credit')
|
@@ -4,10 +4,16 @@ module Spree
|
|
4
4
|
|
5
5
|
belongs_to :store_credit
|
6
6
|
belongs_to :originator, polymorphic: true
|
7
|
+
belongs_to :update_reason, class_name: "Spree::StoreCreditUpdateReason"
|
8
|
+
|
9
|
+
validates_presence_of :update_reason, if: :action_requires_reason?
|
10
|
+
|
11
|
+
NON_EXPOSED_ACTIONS = [Spree::StoreCredit::ELIGIBLE_ACTION, Spree::StoreCredit::AUTHORIZE_ACTION]
|
7
12
|
|
8
13
|
scope :exposed_events, -> { exposable_actions.not_invalidated }
|
9
|
-
scope :exposable_actions, -> { where.not(action:
|
14
|
+
scope :exposable_actions, -> { where.not(action: NON_EXPOSED_ACTIONS) }
|
10
15
|
scope :not_invalidated, -> { joins(:store_credit).where(spree_store_credits: { invalidated_at: nil }) }
|
16
|
+
scope :chronological, -> { order(:created_at) }
|
11
17
|
scope :reverse_chronological, -> { order(created_at: :desc) }
|
12
18
|
|
13
19
|
delegate :currency, to: :store_credit
|
@@ -20,6 +26,10 @@ module Spree
|
|
20
26
|
action == Spree::StoreCredit::AUTHORIZE_ACTION
|
21
27
|
end
|
22
28
|
|
29
|
+
def action_requires_reason?
|
30
|
+
[Spree::StoreCredit::ADJUSTMENT_ACTION, Spree::StoreCredit::INVALIDATE_ACTION].include?(action)
|
31
|
+
end
|
32
|
+
|
23
33
|
def display_amount
|
24
34
|
Spree::Money.new(amount, { currency: currency })
|
25
35
|
end
|
@@ -33,16 +43,8 @@ module Spree
|
|
33
43
|
end
|
34
44
|
|
35
45
|
def display_action
|
36
|
-
|
37
|
-
|
38
|
-
Spree.t('store_credit.captured')
|
39
|
-
when Spree::StoreCredit::AUTHORIZE_ACTION
|
40
|
-
Spree.t('store_credit.authorized')
|
41
|
-
when Spree::StoreCredit::ALLOCATION_ACTION
|
42
|
-
Spree.t('store_credit.allocated')
|
43
|
-
when Spree::StoreCredit::VOID_ACTION, Spree::StoreCredit::CREDIT_ACTION
|
44
|
-
Spree.t('store_credit.credit')
|
45
|
-
end
|
46
|
+
return if NON_EXPOSED_ACTIONS.include?(action)
|
47
|
+
Spree.t("store_credit.display_action.#{action}")
|
46
48
|
end
|
47
49
|
|
48
50
|
def order
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Spree
|
2
|
+
# Placeholder for name of Spree.user_class to ensure later evaluation at
|
3
|
+
# runtime.
|
4
|
+
#
|
5
|
+
# Unfortunately, it is possible for classes to get loaded before
|
6
|
+
# Spree.user_class has been set in the initializer. As a result, they end up
|
7
|
+
# with class_name: "" in their association definitions. For obvious reasons,
|
8
|
+
# that doesn't work.
|
9
|
+
#
|
10
|
+
# For now, Rails does not call to_s on the instance passed in until runtime.
|
11
|
+
# So this little hack provides a wrapper around Spree.user_class so that we
|
12
|
+
# can basically lazy-evaluate it. Yay! Problem solved forever.
|
13
|
+
class UserClassHandle
|
14
|
+
# @return [String] the name of the user class as a string.
|
15
|
+
# @raise [RuntimeError] if Spree.user_class is nil
|
16
|
+
def to_s
|
17
|
+
fail "'Spree.user_class' has not been set yet." unless Spree.user_class
|
18
|
+
"::#{Spree.user_class}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Spree
|
2
2
|
class UserStockLocation < ActiveRecord::Base
|
3
|
-
belongs_to :user, class_name: Spree.
|
3
|
+
belongs_to :user, class_name: Spree::UserClassHandle.new, inverse_of: :user_stock_locations
|
4
4
|
belongs_to :stock_location, class_name: "Spree::StockLocation", inverse_of: :user_stock_locations
|
5
5
|
end
|
6
6
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# Ensure that Spree.user_class includes the UserMethods concern
|
2
|
+
# Previously these methods were injected automatically onto the class, which we
|
3
|
+
# are still doing for compatability, but with a warning.
|
4
|
+
|
5
|
+
Spree::Core::Engine.config.to_prepare do
|
6
|
+
unless Spree.user_class.included_modules.include?(Spree::UserMethods)
|
7
|
+
ActiveSupport::Deprecation.warn "#{Spree.user_class} must include Spree::UserMethods"
|
8
|
+
Spree.user_class.include Spree::UserMethods
|
9
|
+
end
|
10
|
+
end
|
data/config/locales/en.yml
CHANGED
@@ -150,6 +150,9 @@ en:
|
|
150
150
|
spree/address:
|
151
151
|
one: Address
|
152
152
|
other: Addresses
|
153
|
+
spree/adjustment_reason:
|
154
|
+
one: Adjustment Reason
|
155
|
+
other: Adjustment Reasons
|
153
156
|
spree/country:
|
154
157
|
one: Country
|
155
158
|
other: Countries
|
@@ -207,9 +210,9 @@ en:
|
|
207
210
|
spree/return_authorization:
|
208
211
|
one: Return Authorization
|
209
212
|
other: Return Authorizations
|
210
|
-
spree/
|
211
|
-
one: Return
|
212
|
-
other: Return
|
213
|
+
spree/return_reason:
|
214
|
+
one: Return Reason
|
215
|
+
other: Return Reasons
|
213
216
|
spree/role:
|
214
217
|
one: Roles
|
215
218
|
other: Roles
|
@@ -285,6 +288,12 @@ en:
|
|
285
288
|
base:
|
286
289
|
card_expired: "Card has expired"
|
287
290
|
expiry_invalid: "Card expiration is invalid"
|
291
|
+
spree/inventory_unit:
|
292
|
+
attributes:
|
293
|
+
state:
|
294
|
+
cannot_destroy: "Cannot destroy a %{state} inventory unit"
|
295
|
+
base:
|
296
|
+
cannot_destroy_shipment_state: "Cannot destroy an inventory unit for a %{state} shipment"
|
288
297
|
spree/line_item:
|
289
298
|
attributes:
|
290
299
|
currency:
|
@@ -303,12 +312,17 @@ en:
|
|
303
312
|
cannot_be_associated_unless_accepted: cannot be associated to a return item that is not accepted.
|
304
313
|
inventory_unit:
|
305
314
|
other_completed_return_item_exists: "%{inventory_unit_id} has already been taken by return item %{return_item_id}"
|
315
|
+
spree/shipment:
|
316
|
+
attributes:
|
317
|
+
state:
|
318
|
+
cannot_destroy: "Cannot destroy a %{state} shipment"
|
319
|
+
base:
|
320
|
+
cannot_remove_items_shipment_state: "Cannot remove items from a %{state} shipment"
|
306
321
|
spree/store:
|
307
322
|
attributes:
|
308
323
|
base:
|
309
324
|
cannot_destroy_default_store: Cannot destroy the default Store.
|
310
325
|
|
311
|
-
|
312
326
|
devise:
|
313
327
|
confirmations:
|
314
328
|
confirmed: Your account was successfully confirmed. You are now signed in.
|
@@ -404,6 +418,7 @@ en:
|
|
404
418
|
adjustable: Adjustable
|
405
419
|
adjustment: Adjustment
|
406
420
|
adjustment_amount: Amount
|
421
|
+
adjustment_reasons: Adjustment Reasons
|
407
422
|
adjustment_successfully_closed: Adjustment has been successfully closed!
|
408
423
|
adjustment_successfully_opened: Adjustment has been successfully opened!
|
409
424
|
adjustment_total: Adjustment Total
|
@@ -436,26 +451,42 @@ en:
|
|
436
451
|
add: "Add store credit"
|
437
452
|
new: "New store credit"
|
438
453
|
edit: "Editing store credit"
|
454
|
+
edit_amount: "Editing store credit amount"
|
455
|
+
invalidate_store_credit: "Invalidating store credit"
|
456
|
+
back_to_edit: "Back to edit"
|
439
457
|
back_to_user_list: "Back to user list"
|
440
|
-
back_to_store_credit_list: "
|
458
|
+
back_to_store_credit_list: "Store credit list"
|
459
|
+
change_amount: "Change amount"
|
460
|
+
credit_type: "Credit type"
|
441
461
|
credited_html_header: "Amount Credited"
|
462
|
+
current_balance: "Current balance"
|
442
463
|
used_html_header: "Amount Used"
|
443
464
|
authed_html_header: "Amount Authorized"
|
444
465
|
type_html_header: "Credit Type"
|
445
466
|
created_by: "Created By"
|
467
|
+
history: "Store credit history"
|
446
468
|
invalidated: "Invalidated"
|
447
469
|
issued_on: "Issued On"
|
470
|
+
payment_originator: "Payment - Order #%{order_number}"
|
471
|
+
reason_for_updating: "Reason for updating"
|
472
|
+
refund_originator: "Refund - Order #%{order_number}"
|
473
|
+
user_originator: "User - %{email}"
|
448
474
|
select_reason: "Select a reason for this store credit"
|
475
|
+
select_amount_update_reason: "Select a reason for updating the amount"
|
476
|
+
total_unused: "Total<br/>unused"
|
449
477
|
unable_to_create: "Unable to create store credit"
|
450
478
|
unable_to_update: "Unable to update store credit"
|
451
479
|
unable_to_delete: "Unable to delete store credit"
|
480
|
+
unable_to_invalidate: "Unable to invalidate store credit"
|
452
481
|
resource_name: "store credits"
|
453
482
|
no_store_credit_selected: "No store credit was selected"
|
454
483
|
errors:
|
455
484
|
cannot_change_used_store_credit: "Store credit that has been claimed cannot be changed"
|
485
|
+
cannot_be_modified: "cannot be modified"
|
456
486
|
amount_used_cannot_be_greater: "cannot be greater than the credited amount"
|
457
487
|
amount_authorized_exceeds_total_credit: " exceeds the available credit"
|
458
488
|
amount_used_not_zero: "is greater than zero. Can not delete store credit"
|
489
|
+
update_reason_required: "A reason for the change must be selected"
|
459
490
|
administration: Administration
|
460
491
|
agree_to_privacy_policy: Agree to Privacy Policy
|
461
492
|
agree_to_terms_of_service: Agree to Terms of Service
|
@@ -495,6 +526,7 @@ en:
|
|
495
526
|
back_end: Backend
|
496
527
|
backordered: Backordered
|
497
528
|
back_to_adjustments_list: Back To Adjustments List
|
529
|
+
back_to_adjustment_reason_list: Back To Adjustment Reason List
|
498
530
|
back_to_customer_return: Back To Customer Return
|
499
531
|
back_to_customer_return_list: Back To Customer Return List
|
500
532
|
back_to_images_list: Back To Images List
|
@@ -547,6 +579,8 @@ en:
|
|
547
579
|
cancellation: Cancellation
|
548
580
|
cannot_create_payment_without_payment_methods: You cannot create a payment for an order without any payment methods defined.
|
549
581
|
cannot_create_returns: Cannot create returns as this order has no shipped units.
|
582
|
+
cannot_rebuild_shipments_order_completed: Cannot rebuild shipments for a completed order.
|
583
|
+
cannot_rebuild_shipments_shipments_not_pending: Cannot rebuild shipments for an order with non-pending shipments.
|
550
584
|
cannot_perform_operation: Cannot perform requested operation
|
551
585
|
cannot_set_shipping_method_without_address: Cannot set shipping method until customer details are provided.
|
552
586
|
capture: Capture
|
@@ -674,12 +708,14 @@ en:
|
|
674
708
|
destination: Destination
|
675
709
|
destination_location: Destination location
|
676
710
|
destroy: Destroy
|
711
|
+
details: Details
|
677
712
|
discount_amount: Discount Amount
|
678
713
|
dismiss_banner: No. Thanks! I'm not interested, do not display this message again
|
679
714
|
display: Display
|
680
715
|
download_promotion_code_list: Download Code List
|
681
716
|
edit: Edit
|
682
717
|
editing_country: Editing Country
|
718
|
+
editing_adjustment_reason: Editing Adjustment Reason
|
683
719
|
editing_option_type: Editing Option Type
|
684
720
|
editing_payment_method: Editing Payment Method
|
685
721
|
editing_product: Editing Product
|
@@ -708,8 +744,6 @@ en:
|
|
708
744
|
has_excluded_product: Your cart contains a product that prevents this coupon code from being applied.
|
709
745
|
item_total_less_than: This coupon code can't be applied to orders less than %{amount}.
|
710
746
|
item_total_less_than_or_equal: This coupon code can't be applied to orders less than or equal to %{amount}.
|
711
|
-
item_total_more_than: This coupon code can't be applied to orders higher than %{amount}.
|
712
|
-
item_total_more_than_or_equal: This coupon code can't be applied to orders higher than or equal to %{amount}.
|
713
747
|
limit_once_per_user: This coupon code can only be used once per user.
|
714
748
|
missing_product: This coupon code can't be applied because you don't have all of the necessary products in your cart.
|
715
749
|
missing_taxon: You need to add a product from all applicable categories before applying this coupon code.
|
@@ -841,6 +875,7 @@ en:
|
|
841
875
|
invalid_payment_provider: Invalid payment provider.
|
842
876
|
invalid_promotion_action: Invalid promotion action.
|
843
877
|
invalid_promotion_rule: Invalid promotion rule.
|
878
|
+
invalidate: Invalidate
|
844
879
|
inventory: Inventory
|
845
880
|
inventory_adjustment: Inventory Adjustment
|
846
881
|
inventory_canceled: Inventory canceled
|
@@ -856,8 +891,6 @@ en:
|
|
856
891
|
operators:
|
857
892
|
gt: greater than
|
858
893
|
gte: greater than or equal to
|
859
|
-
lt: less than
|
860
|
-
lte: less than or equal to
|
861
894
|
items_cannot_be_shipped: We are unable to calculate shipping rates for the selected items.
|
862
895
|
items_in_rmas: Items in Return Authorizations
|
863
896
|
items_to_be_reimbursed: Items to be reimbursed
|
@@ -920,6 +953,7 @@ en:
|
|
920
953
|
negative_movement_absent_item: Cannot create negative movement for absent stock item.
|
921
954
|
new: New
|
922
955
|
new_adjustment: New Adjustment
|
956
|
+
new_adjustment_reason: New Adjustment Reason
|
923
957
|
new_customer: New Customer
|
924
958
|
new_customer_return: New Customer Return
|
925
959
|
new_country: New Country
|
@@ -1235,7 +1269,7 @@ en:
|
|
1235
1269
|
resumed: Resumed
|
1236
1270
|
return: return
|
1237
1271
|
return_authorization: Return Authorization
|
1238
|
-
|
1272
|
+
return_reasons: Return Reasons
|
1239
1273
|
return_authorization_updated: Return authorization updated
|
1240
1274
|
return_authorizations: Return Authorizations
|
1241
1275
|
return_item_inventory_unit_ineligible: Return item's inventory unit must be shipped
|
@@ -1283,7 +1317,7 @@ en:
|
|
1283
1317
|
security_settings: Security Settings
|
1284
1318
|
select: Select
|
1285
1319
|
select_from_prototype: Select From Prototype
|
1286
|
-
|
1320
|
+
select_a_reason: Select a reason
|
1287
1321
|
select_a_stock_location: Select a stock location
|
1288
1322
|
select_stock: Select stock
|
1289
1323
|
selected_quantity_not_available: ! 'selected of %{item} is not available.'
|
@@ -1382,19 +1416,27 @@ en:
|
|
1382
1416
|
stop: Stop
|
1383
1417
|
store: Store
|
1384
1418
|
store_credit:
|
1385
|
-
|
1386
|
-
|
1387
|
-
captured: "Used"
|
1388
|
-
credit: "Credit"
|
1419
|
+
actions:
|
1420
|
+
invalidate: Invalidate
|
1389
1421
|
credit_allocation_memo: "This is a credit from store credit ID %{id}"
|
1390
1422
|
currency_mismatch: "Store credit currency does not match order currency"
|
1423
|
+
display_action:
|
1424
|
+
adjustment: Adjustment
|
1425
|
+
allocation: Added
|
1426
|
+
capture: Used
|
1427
|
+
credit: Credit
|
1428
|
+
invalidate: Invalidated
|
1429
|
+
void: Credit
|
1430
|
+
admin:
|
1431
|
+
authorize: "Authorized"
|
1432
|
+
eligible: "Eligibility Verified"
|
1433
|
+
void: "Voided"
|
1391
1434
|
errors:
|
1392
1435
|
unable_to_fund: "Unable to pay for order using store credits"
|
1393
1436
|
cannot_invalidate_uncaptured_authorization: "Cannot invalidate a store credit with an uncaptured authorization"
|
1394
1437
|
expiring: Expiring
|
1395
1438
|
insufficient_authorized_amount: "Unable to capture more than authorized amount"
|
1396
1439
|
insufficient_funds: "Store credit amount remaining is not sufficient"
|
1397
|
-
invalidate: "Invalidate"
|
1398
1440
|
non_expiring: Non-expiring
|
1399
1441
|
select_one_store_credit: "Select store credit to go towards remaining balance"
|
1400
1442
|
store_credit: Store Credit
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Spree::ReturnReason.find_or_create_by(name: 'Better price available')
|
2
|
+
Spree::ReturnReason.find_or_create_by(name: 'Missed estimated delivery date')
|
3
|
+
Spree::ReturnReason.find_or_create_by(name: 'Missing parts or accessories')
|
4
|
+
Spree::ReturnReason.find_or_create_by(name: 'Damaged/Defective')
|
5
|
+
Spree::ReturnReason.find_or_create_by(name: 'Different from what was ordered')
|
6
|
+
Spree::ReturnReason.find_or_create_by(name: 'Different from description')
|
7
|
+
Spree::ReturnReason.find_or_create_by(name: 'No longer needed/wanted')
|
8
|
+
Spree::ReturnReason.find_or_create_by(name: 'Accidental order')
|
9
|
+
Spree::ReturnReason.find_or_create_by(name: 'Unauthorized purchase')
|
@@ -10,15 +10,17 @@ class CreateSpreeReturnAuthorizationReasons < ActiveRecord::Migration
|
|
10
10
|
|
11
11
|
reversible do |direction|
|
12
12
|
direction.up do
|
13
|
-
Spree::ReturnAuthorizationReason
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
13
|
+
if defined?(Spree::ReturnAuthorizationReason)
|
14
|
+
Spree::ReturnAuthorizationReason.create!(name: 'Better price available')
|
15
|
+
Spree::ReturnAuthorizationReason.create!(name: 'Missed estimated delivery date')
|
16
|
+
Spree::ReturnAuthorizationReason.create!(name: 'Missing parts or accessories')
|
17
|
+
Spree::ReturnAuthorizationReason.create!(name: 'Damaged/Defective')
|
18
|
+
Spree::ReturnAuthorizationReason.create!(name: 'Different from what was ordered')
|
19
|
+
Spree::ReturnAuthorizationReason.create!(name: 'Different from description')
|
20
|
+
Spree::ReturnAuthorizationReason.create!(name: 'No longer needed/wanted')
|
21
|
+
Spree::ReturnAuthorizationReason.create!(name: 'Accidental order')
|
22
|
+
Spree::ReturnAuthorizationReason.create!(name: 'Unauthorized purchase')
|
23
|
+
end
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateAdjustmentReason < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :spree_adjustment_reasons do |t|
|
4
|
+
t.string "name"
|
5
|
+
t.string "code"
|
6
|
+
t.boolean "active", default: true
|
7
|
+
|
8
|
+
t.timestamps null: true
|
9
|
+
end
|
10
|
+
|
11
|
+
add_index :spree_adjustment_reasons, :code
|
12
|
+
add_index :spree_adjustment_reasons, :active
|
13
|
+
|
14
|
+
change_table :spree_adjustments do |t|
|
15
|
+
t.references :adjustment_reason
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|