comable_core 0.2.0 → 0.2.1
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 +4 -4
- data/app/mailers/comable/order_mailer.rb +1 -4
- data/app/models/comable/order.rb +1 -1
- data/app/models/comable/stock.rb +7 -5
- data/app/models/comable/store.rb +1 -1
- data/config/locales/ja.yml +8 -3
- data/lib/comable/cart_owner.rb +7 -6
- data/lib/comable/errors.rb +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0847e05a0d1404a70910a95138f0666315b06db
|
4
|
+
data.tar.gz: 213b8f3f6e5d9f11779633b3ce76eb97a366075a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fcebb0bbdd4673c92acacaea3fe91ebed3591b10dbc050c86311a0026acfe431460e0a46c9fabec158fc00ea7ef59561d14ee566800d0e8e8d10aea26915483
|
7
|
+
data.tar.gz: d2bba80062e20dd7320057eb35e70c4c2e4f609ae522288b5fc43691a621977f2a06039d3d4caaa390f482be08dc530ce947d69fe04dd36ced4d138e8794a6f4
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Comable
|
2
2
|
class OrderMailer < ActionMailer::Base
|
3
|
+
include Comable::ApplicationHelper
|
3
4
|
helper Comable::ApplicationHelper
|
4
5
|
helper_method :subject_for
|
5
6
|
|
@@ -10,10 +11,6 @@ module Comable
|
|
10
11
|
|
11
12
|
private
|
12
13
|
|
13
|
-
def current_store
|
14
|
-
Comable::Store.instance
|
15
|
-
end
|
16
|
-
|
17
14
|
def subject_for(order)
|
18
15
|
[
|
19
16
|
current_store.name,
|
data/app/models/comable/order.rb
CHANGED
@@ -90,7 +90,7 @@ module Comable
|
|
90
90
|
order_deliveries.map(&:order_details).flatten.each do |order_detail|
|
91
91
|
return errors.add :base, "「#{order_detail.stock.name_with_sku}」の注文数が不正です。" if order_detail.quantity <= 0
|
92
92
|
quantity = order_detail.stock.quantity - order_detail.quantity
|
93
|
-
return errors.add :base,
|
93
|
+
return errors.add :base, I18n.t('comable.errors.messages.product_soldout', name: order_detail.stock.name_with_sku) if quantity < 0
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
data/app/models/comable/stock.rb
CHANGED
@@ -37,12 +37,13 @@ module Comable
|
|
37
37
|
# @example
|
38
38
|
# stock.unsold? #=> true
|
39
39
|
#
|
40
|
+
# @param quantity [Fixnum] 減算する在庫数を指定する
|
40
41
|
# @return [Boolean] 在庫があれば true を返す
|
41
42
|
# @see #soldout?
|
42
|
-
def unsold?
|
43
|
+
def unsold?(quantity: 1)
|
43
44
|
return false if product_id_num.nil?
|
44
|
-
return false if quantity.nil?
|
45
|
-
quantity
|
45
|
+
return false if self.quantity.nil?
|
46
|
+
(self.quantity - quantity) >= 0
|
46
47
|
end
|
47
48
|
|
48
49
|
# 在庫の有無を取得する
|
@@ -50,10 +51,11 @@ module Comable
|
|
50
51
|
# @example
|
51
52
|
# stock.soldout? #=> false
|
52
53
|
#
|
54
|
+
# @param quantity [Fixnum] 減算する在庫数を指定する
|
53
55
|
# @return [Boolean] {#unsold?} の逆。在庫がなければ true を返す
|
54
56
|
# @see #unsold?
|
55
|
-
def soldout?
|
56
|
-
!unsold?
|
57
|
+
def soldout?(quantity: 1)
|
58
|
+
!unsold?(quantity: quantity)
|
57
59
|
end
|
58
60
|
|
59
61
|
# 在庫減算を行う
|
data/app/models/comable/store.rb
CHANGED
data/config/locales/ja.yml
CHANGED
@@ -3,10 +3,15 @@ ja:
|
|
3
3
|
honorific: &honorific
|
4
4
|
'%{name} 様'
|
5
5
|
|
6
|
+
errors:
|
7
|
+
messages:
|
8
|
+
product_soldout: '%{name}は在庫が不足しています。'
|
9
|
+
products_soldout: 'ご指定の商品は在庫が不足しています。'
|
10
|
+
product_not_found: '%{name}は存在しないか削除された可能性があります。'
|
11
|
+
products_not_found: 'ご指定の商品は存在しないか削除された可能性があります。'
|
12
|
+
|
6
13
|
carts:
|
7
|
-
add_product: '
|
8
|
-
product_not_found: 'ご指定の商品は見つかりませんでした'
|
9
|
-
product_not_stocked: 'ご指定の商品は在庫がありません'
|
14
|
+
add_product: '1つの商品がカートに入りました'
|
10
15
|
empty: 'カートに商品が入っていません'
|
11
16
|
update: 'カートの内容が変更されました'
|
12
17
|
orders:
|
data/lib/comable/cart_owner.rb
CHANGED
@@ -46,25 +46,25 @@ module Comable
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def add_stock_to_cart(stock, quantity)
|
49
|
-
fail I18n.t('comable.carts.product_not_stocked') if stock.soldout?
|
50
|
-
|
51
49
|
cart_items = find_cart_items_by(stock)
|
52
50
|
if cart_items.any?
|
53
51
|
cart_item = cart_items.first
|
52
|
+
fail Comable::NoStock if stock.soldout?(quantity: quantity + cart_item.quantity)
|
54
53
|
cart_item.quantity += quantity
|
55
54
|
(cart_item.quantity > 0) ? cart_item.save : cart_item.destroy
|
56
55
|
else
|
56
|
+
fail Comable::NoStock if stock.soldout?(quantity: quantity)
|
57
57
|
cart_items.create(quantity: quantity)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
61
|
def reset_stock_from_cart(stock, quantity)
|
62
|
+
fail Comable::NoStock if stock.soldout?(quantity: quantity)
|
63
|
+
|
62
64
|
cart_items = find_cart_items_by(stock)
|
63
65
|
if quantity > 0
|
64
66
|
return add_stock_to_cart(stock, quantity) if cart_items.empty?
|
65
|
-
|
66
|
-
cart_item.quantity = quantity
|
67
|
-
cart_item.save
|
67
|
+
cart_items.first.update_attributes(quantity: quantity)
|
68
68
|
else
|
69
69
|
return false if cart_items.empty?
|
70
70
|
cart_items.first.destroy
|
@@ -72,7 +72,8 @@ module Comable
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def find_cart_items_by(stock)
|
75
|
-
|
75
|
+
# TODO: Refactoring
|
76
|
+
fail unless stock.is_a?(Comable::Stock)
|
76
77
|
cart_items.where(Comable::Stock.table_name.singularize.foreign_key => stock.id)
|
77
78
|
end
|
78
79
|
end
|
data/lib/comable/errors.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: comable_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YOSHIDA Hiroki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|