comable-core 0.7.0.beta2 → 0.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
  SHA1:
3
- metadata.gz: 324ed7d3cdee480e0d7b0529fd7a90195cc69a37
4
- data.tar.gz: 487980666fa2ccbfc92028700433a741eb610afb
3
+ metadata.gz: 7b21105a8f6d073d7b66ee2dba182428b5008d78
4
+ data.tar.gz: c3c2f4c865dab49b010d16b658f14d1c0b5605b2
5
5
  SHA512:
6
- metadata.gz: 24bb175945a7065c8589e02f665e420ae56823c69bea0472ac27194a9abcc70675acfcbfa20eb3028f3e4826c814080bde8d85a97f5b226f544b094a81d235b6
7
- data.tar.gz: 8e6a2a6ca8dc65d329c985ed4f01415da7b6fe5a01d4e78c4688aa2122b9a5252f8e3cb0f1244d9a5dd439172408de351b43e97cdfb15479e968ad412bf4916b
6
+ metadata.gz: da54c6caa5b324b720030516906dbd355f3375bbc54a385f21c3e8fe9ee157e43c2455043132ba71d1a048a48e0f3ad5bbf326c1962193d2550123a3ae152039
7
+ data.tar.gz: d2a46b412f7182914adf3abca17fcb2b1626f0cca649e255387c342660f5c7a62d548ed4902fb2e8d75bc874f135ad99a8198f28a359eb99e9270f8fcfc25c3e
@@ -10,6 +10,12 @@ module Comable
10
10
  validates :detail, length: { maximum: 255 }
11
11
  validates :phone_number, length: { maximum: 255 }
12
12
 
13
+ # for Search by ransack
14
+ # https://github.com/activerecord-hackery/ransack/wiki/using-ransackers#5-search-on-a-concatenated-full-name-from-first_name-and-last_name-several-examples
15
+ ransacker :full_name do |parent|
16
+ Arel::Nodes::InfixOperation.new('||', parent.table[:first_name], parent.table[:family_name])
17
+ end
18
+
13
19
  class << self
14
20
  def find_or_clone(address)
15
21
  all.to_a.find { |obj| obj.same_as? address } || address.clone
@@ -0,0 +1,11 @@
1
+ module Comable
2
+ class DraftOrder
3
+ class << self
4
+ delegate :find, to: Comable::Order.name
5
+
6
+ def new(attributes = {})
7
+ Comable::Order.where(draft: true).new(attributes)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -26,6 +26,8 @@ module Comable
26
26
  delegate :state, :human_state_name, to: :payment, allow_nil: true, prefix: true
27
27
  delegate :cancel!, :resume!, to: :payment, allow_nil: true, prefix: true
28
28
 
29
+ attr_writer :same_as_bill_address
30
+
29
31
  def complete!
30
32
  ActiveRecord::Base.transaction do
31
33
  run_callbacks :complete do
@@ -79,12 +81,12 @@ module Comable
79
81
 
80
82
  # 時価送料を取得
81
83
  def current_shipment_fee
82
- shipments.to_a.sum(&:fee)
84
+ shipments.to_a.sum(&:current_fee)
83
85
  end
84
86
 
85
87
  # Get the current payment fee
86
88
  def current_payment_fee
87
- payment.try(:fee) || 0
89
+ payment.try(:current_fee) || 0
88
90
  end
89
91
 
90
92
  # 時価合計を取得
@@ -106,6 +108,10 @@ module Comable
106
108
  completed_at?
107
109
  end
108
110
 
111
+ def draft?
112
+ read_attribute(:draft)
113
+ end
114
+
109
115
  def paid?
110
116
  payment ? payment.completed? : true
111
117
  end
@@ -123,6 +129,10 @@ module Comable
123
129
  shipments.with_state(:ready).each(&:ship!)
124
130
  end
125
131
 
132
+ def same_as_bill_address
133
+ @same_as_bill_address.nil? ? bill_address == ship_address : @same_as_bill_address
134
+ end
135
+
126
136
  private
127
137
 
128
138
  def current_attributes
@@ -12,7 +12,7 @@ module Comable
12
12
  has_many :shipments, dependent: :destroy, class_name: Comable::Shipment.name, inverse_of: :order
13
13
 
14
14
  accepts_nested_attributes_for :bill_address
15
- accepts_nested_attributes_for :ship_address
15
+ accepts_nested_attributes_for :ship_address, reject_if: :same_as_bill_address
16
16
  accepts_nested_attributes_for :order_items
17
17
  accepts_nested_attributes_for :payment
18
18
  accepts_nested_attributes_for :shipments
@@ -6,9 +6,10 @@ module Comable
6
6
  included do
7
7
  define_model_callbacks :complete
8
8
 
9
+ before_validation :copy_ship_address_from_bill_address, if: :same_as_bill_address
10
+ before_validation :generate_code, on: :create
9
11
  before_validation :generate_guest_token, on: :create
10
12
  before_validation :clone_addresses_from_user, on: :create
11
- before_complete :generate_code
12
13
  after_complete :clone_addresses_to_user
13
14
  end
14
15
 
@@ -38,6 +39,10 @@ module Comable
38
39
  user.update_bill_address_by bill_address
39
40
  user.update_ship_address_by ship_address
40
41
  end
42
+
43
+ def copy_ship_address_from_bill_address
44
+ self.ship_address = bill_address
45
+ end
41
46
  end
42
47
  end
43
48
  end
@@ -5,12 +5,13 @@ module Comable
5
5
 
6
6
  included do
7
7
  scope :complete, -> { where.not(completed_at: nil) }
8
- scope :incomplete, -> { where(completed_at: nil) }
8
+ scope :incomplete, -> { where(completed_at: nil).where(draft: false) }
9
9
  scope :by_user, -> (user) { where(user_id: user) }
10
+ scope :draft, -> { where(draft: true) }
10
11
  scope :this_month, -> { where(completed_at: Time.now.beginning_of_month..Time.now.end_of_month) }
11
12
  scope :this_week, -> { where(completed_at: Time.now.beginning_of_week..Time.now.end_of_week) }
12
13
  scope :last_week, -> { where(completed_at: 1.week.ago.beginning_of_week..1.week.ago.end_of_week) }
13
- scope :recent, -> { order('completed_at DESC, id DESC') }
14
+ scope :recent, -> { order('completed_at DESC, created_at DESC, id DESC') }
14
15
  end
15
16
  end
16
17
  end
@@ -4,31 +4,31 @@ module Comable
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
- validates :user_id, uniqueness: { scope: :completed_at }, if: :user
7
+ validates :code, presence: true
8
+ validates :user_id, uniqueness: { scope: :completed_at }, if: -> { user && !draft }
8
9
  validates :guest_token, presence: true, uniqueness: { scope: :completed_at }, unless: :user
9
10
 
10
- with_options if: -> { stated?(:cart) } do |context|
11
+ with_options if: -> { stated?(:cart) || draft? } do |context|
11
12
  context.validates :email, presence: true, length: { maximum: 255 }
12
13
  end
13
14
 
14
- with_options if: -> { stated?(:orderer) } do |context|
15
+ with_options if: -> { stated?(:orderer) || draft? } do |context|
15
16
  context.validates :bill_address, presence: true
16
17
  end
17
18
 
18
- with_options if: -> { stated?(:delivery) } do |context|
19
+ with_options if: -> { stated?(:delivery) || draft? } do |context|
19
20
  context.validates :ship_address, presence: true
20
21
  end
21
22
 
22
- with_options if: -> { stated?(:shipment) && shipment_required? } do |context|
23
+ with_options if: -> { (stated?(:shipment) || draft?) && shipment_required? } do |context|
23
24
  context.validates :shipments, presence: true
24
25
  end
25
26
 
26
- with_options if: -> { stated?(:payment) && payment_required? } do |context|
27
+ with_options if: -> { (stated?(:payment) || draft?) && payment_required? } do |context|
27
28
  context.validates :payment, presence: true
28
29
  end
29
30
 
30
31
  with_options if: -> { stated?(:confirm) } do |context|
31
- context.validates :code, presence: true
32
32
  context.validates :payment_fee, presence: true
33
33
  context.validates :shipment_fee, presence: true
34
34
  context.validates :total_price, presence: true
@@ -14,8 +14,8 @@ module Comable
14
14
 
15
15
  liquid_methods :name, :name_with_sku, :code, :quantity, :price, :subtotal_price
16
16
 
17
- delegate :product, to: :variant
18
- delegate :image_url, to: :product
17
+ delegate :product, to: :variant, allow_nil: true
18
+ delegate :image_url, to: :product, allow_nil: true
19
19
  delegate :guest_token, to: :order
20
20
  delegate :completed?, to: :order, allow_nil: true
21
21
 
@@ -42,7 +42,7 @@ module Comable
42
42
 
43
43
  # 売価小計を取得
44
44
  def subtotal_price
45
- price * quantity
45
+ price * quantity if price
46
46
  end
47
47
 
48
48
  def unstocked?
@@ -72,6 +72,10 @@ module Comable
72
72
  touch :completed_at
73
73
  end
74
74
 
75
+ def current_fee
76
+ payment_method.try(:fee) || 0
77
+ end
78
+
75
79
  private
76
80
 
77
81
  def order_completed?
@@ -80,7 +84,7 @@ module Comable
80
84
 
81
85
  def copy_attributes_from_payment_method
82
86
  self.attributes = {
83
- fee: payment_method.fee
87
+ fee: current_fee
84
88
  }
85
89
  end
86
90
  end
@@ -7,7 +7,7 @@ module Comable
7
7
  include Comable::Product::Csvable
8
8
 
9
9
  has_many :variants, class_name: Comable::Variant.name, inverse_of: :product, dependent: :destroy
10
- has_many :images, class_name: Comable::Image.name, dependent: :destroy
10
+ has_many :images, -> { order(:id) }, class_name: Comable::Image.name, dependent: :destroy
11
11
  has_and_belongs_to_many :categories, class_name: Comable::Category.name, join_table: :comable_products_categories
12
12
 
13
13
  accepts_nested_attributes_for :variants, allow_destroy: true
@@ -24,12 +24,6 @@ module Comable
24
24
 
25
25
  PREVIEW_SESSION_KEY = :preview_product
26
26
 
27
- # Add conditions for the images association.
28
- # Override method of the images association to support Rails 3.x.
29
- def images
30
- super.order(:id)
31
- end
32
-
33
27
  def image_url
34
28
  image = images.first
35
29
  return image.url if image
@@ -56,8 +50,9 @@ module Comable
56
50
  option_types.empty?
57
51
  end
58
52
 
59
- def as_json(options = nil)
60
- super (options || {}).merge(methods: [:variants])
53
+ def as_json(options = {})
54
+ options[:include] = { variants: { except: :product, methods: [:quantity, :option_names] } }
55
+ super
61
56
  end
62
57
 
63
58
  def sku_h_item_name
@@ -91,6 +91,10 @@ module Comable
91
91
  shipment_method.try(:name) || Comable.t(:normal_shipment)
92
92
  end
93
93
 
94
+ def current_fee
95
+ shipment_method.try(:fee) || 0
96
+ end
97
+
94
98
  private
95
99
 
96
100
  def order_completed?
@@ -99,7 +103,7 @@ module Comable
99
103
 
100
104
  def copy_attributes_from_shipment_method
101
105
  self.attributes = {
102
- fee: shipment_method.try(:fee) || 0
106
+ fee: current_fee
103
107
  }
104
108
  end
105
109
  end
@@ -57,10 +57,6 @@ module Comable
57
57
  !new_record?
58
58
  end
59
59
 
60
- def not_signed_in?
61
- !signed_in?
62
- end
63
-
64
60
  # TODO: Add a test case
65
61
  def reload(*_)
66
62
  super.tap do
@@ -92,6 +88,14 @@ module Comable
92
88
  "##{id}"
93
89
  end
94
90
 
91
+ def text
92
+ bill_address ? "#{bill_full_name} (#{email})" : email
93
+ end
94
+
95
+ def as_json(options = {})
96
+ super options.merge(include: [:bill_address, :ship_address], methods: [:text])
97
+ end
98
+
95
99
  private
96
100
 
97
101
  def current_guest_token
@@ -20,6 +20,7 @@ module Comable
20
20
  scope :by_newest, -> { reorder(created_at: :desc) }
21
21
 
22
22
  alias_method :quantity, :total_quantity
23
+ delegate :image_url, to: :product
23
24
 
24
25
  def quantity=(quantity)
25
26
  fail 'Stocks are already exists!' if stocks.any?
@@ -49,11 +50,18 @@ module Comable
49
50
  end
50
51
  end
51
52
 
52
- def as_json(options = nil)
53
- super.merge(
54
- 'quantity' => quantity,
55
- 'options' => option_values.map(&:name)
56
- )
53
+ alias_method :text, :name
54
+
55
+ def option_names
56
+ option_values.map(&:name)
57
+ end
58
+
59
+ def as_json(options = {})
60
+ options = {
61
+ include: { product: { except: :variants } },
62
+ methods: [:text, :quantity, :option_names, :image_url]
63
+ }
64
+ super
57
65
  end
58
66
  end
59
67
  end
@@ -3,7 +3,11 @@ module Comable
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- state_machine initial: :cart do
6
+ state_machine initial: -> (order) { order.draft? ? :draft : :cart } do
7
+ # for Draft Order
8
+ state :draft
9
+
10
+ # for Normal Order
7
11
  state :cart
8
12
  state :orderer
9
13
  state :delivery
@@ -24,6 +28,11 @@ module Comable
24
28
  transition :confirm => :completed
25
29
  end
26
30
 
31
+ event :next_draft_state do
32
+ transition :draft => :shipment, if: :shipment_required?
33
+ transition all => :completed
34
+ end
35
+
27
36
  event :cancel do
28
37
  transition to: :canceled, from: [:completed, :resumed], if: :allow_cancel?
29
38
  end
@@ -173,9 +173,11 @@ en:
173
173
  add_variants: 'Add variants'
174
174
  size: 'Size'
175
175
  add_stocks: 'Add stocks'
176
+ user: 'User'
176
177
  nav:
177
178
  dashboard: 'Dashboard'
178
179
  order: 'Orders'
180
+ draft_order: 'Draft Orders'
179
181
  product: 'Products'
180
182
  stock: 'Stocks'
181
183
  category: 'Categories'
@@ -334,6 +336,7 @@ en:
334
336
  guest_token: 'Guest token'
335
337
  payment_state: 'Payment state'
336
338
  shipment_state: 'Shipment state'
339
+ same_as_bill_address: 'Same as the billing address'
337
340
  <<: *timestamps
338
341
  comable/order_item: &comable_order_item
339
342
  quantity: *quantity
@@ -173,9 +173,11 @@ ja:
173
173
  add_variants: 'バリエーションを追加する'
174
174
  size: 'サイズ'
175
175
  add_stocks: '在庫を追加する'
176
+ user: 'ユーザー'
176
177
  nav:
177
178
  dashboard: ダッシュボード
178
179
  order: 注文管理
180
+ draft_order: '下書き注文'
179
181
  product: 商品管理
180
182
  stock: 在庫管理
181
183
  category: カテゴリ
@@ -334,6 +336,7 @@ ja:
334
336
  guest_token: ゲストトークン
335
337
  payment_state: '決済ステータス'
336
338
  shipment_state: '配送ステータス'
339
+ same_as_bill_address: '請求先と同じ住所を利用する'
337
340
  <<: *timestamps
338
341
  comable/order_item: &comable_order_item
339
342
  quantity: *quantity
@@ -0,0 +1,7 @@
1
+ class AddDraftToComableOrders < ActiveRecord::Migration
2
+ def change
3
+ change_table :comable_orders do |t|
4
+ t.boolean :draft, null: false, default: false
5
+ end
6
+ end
7
+ end
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.7.0.beta2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - YOSHIDA Hiroki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-31 00:00:00.000000000 Z
11
+ date: 2015-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -287,6 +287,7 @@ files:
287
287
  - app/models/comable/ability.rb
288
288
  - app/models/comable/address.rb
289
289
  - app/models/comable/category.rb
290
+ - app/models/comable/draft_order.rb
290
291
  - app/models/comable/image.rb
291
292
  - app/models/comable/inventory/adjuster.rb
292
293
  - app/models/comable/inventory/coordinator.rb
@@ -373,6 +374,7 @@ files:
373
374
  - db/migrate/20151012143215_create_comable_shipment_items.rb
374
375
  - db/migrate/20151013082845_remove_null_option_of_shipment_method_id_on_comable_shipments.rb
375
376
  - db/migrate/20151013194926_add_guest_token_index_to_comable_orders.rb
377
+ - db/migrate/20151112102452_add_draft_to_comable_orders.rb
376
378
  - db/seeds.rb
377
379
  - db/seeds/comable/users.rb
378
380
  - lib/comable/core.rb
@@ -403,9 +405,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
403
405
  version: 2.1.5
404
406
  required_rubygems_version: !ruby/object:Gem::Requirement
405
407
  requirements:
406
- - - ">"
408
+ - - ">="
407
409
  - !ruby/object:Gem::Version
408
- version: 1.3.1
410
+ version: '0'
409
411
  requirements: []
410
412
  rubyforge_project:
411
413
  rubygems_version: 2.4.5