spree_cm_commissioner 2.8.15.pre.pre5 → 2.8.15.pre.pre7

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: 5c140d442dd82d4e6ceab7f2298d5664f229a2088162ddaa79dc58425830e96d
4
- data.tar.gz: c408a1c86ab53f093b6055c408a7690a3ce6d4e279895751dc1dea3d6efed79f
3
+ metadata.gz: 4a205fe1769cf608152ba1af6e648195e07a827b1dacc9a5901341e8db1f6da9
4
+ data.tar.gz: 6a28c521b683bbd6a30bb331baf6f0ad54e5125eb1dd6a1922753d4a2cdb6e92
5
5
  SHA512:
6
- metadata.gz: 4b3f6e3039b7b3274db1812622975376ef789e940125b8494a153900546b66162a4ec6f7df3094ccb85e70d0ebbb91babb671dc169517c406b7283a347d29fc1
7
- data.tar.gz: f681c97fd4ec16641959c971475f3f6c8b608536178c2edcba48acc87f0083210893e6c6dd35662f3b3e11b8eeec31fc000b35b6328b605d9397816944a40e57
6
+ metadata.gz: d7ccfd518798c6c6054141d31665a4e214f34d249546eb9eec3f04a8d603b72165170545a5c5fc00af9aaaca2cdb80f786e1560aaa36ba02cc143b7bb08aace1
7
+ data.tar.gz: cef8efc6dcee06b9febc8949e5186575a7d81d8aed89f061989bf3596b800b77b7251513fd9095056f20b74fb137062fcde04dc4cef8518807815d784550ef8a
data/Gemfile.lock CHANGED
@@ -34,7 +34,7 @@ GIT
34
34
  PATH
35
35
  remote: .
36
36
  specs:
37
- spree_cm_commissioner (2.8.15.pre.pre5)
37
+ spree_cm_commissioner (2.8.15.pre.pre7)
38
38
  activerecord-multi-tenant
39
39
  activerecord_json_validator (~> 2.1, >= 2.1.3)
40
40
  aws-sdk-cloudfront
@@ -33,6 +33,7 @@ module SpreeCmCommissioner
33
33
  validates :free_votes_used, numericality: { greater_than_or_equal_to: 0 }
34
34
  validates :paid_votes_amount, numericality: { greater_than_or_equal_to: 0 }
35
35
  validates :paid_votes_used, numericality: { greater_than_or_equal_to: 0 }
36
+ validate :amounts_not_less_than_used
36
37
 
37
38
  def free_votes_remaining
38
39
  free_votes_amount - free_votes_used
@@ -60,6 +61,15 @@ module SpreeCmCommissioner
60
61
 
61
62
  private
62
63
 
64
+ def amounts_not_less_than_used
65
+ if free_votes_used.to_i.positive? && free_votes_amount.to_i < free_votes_used.to_i
66
+ errors.add(:free_votes_amount, :less_than_used, used: free_votes_used)
67
+ end
68
+ return unless paid_votes_used.to_i.positive? && paid_votes_amount.to_i < paid_votes_used.to_i
69
+
70
+ errors.add(:paid_votes_amount, :less_than_used, used: paid_votes_used)
71
+ end
72
+
63
73
  def set_created_by
64
74
  self.created_by ||= user
65
75
  end
@@ -11,16 +11,21 @@ module SpreeCmCommissioner
11
11
 
12
12
  ActiveRecord::Base.transaction do
13
13
  voting_credit = find_or_create_credit
14
- allocations = episode_line_items.map do |line_item|
14
+
15
+ total_paid_vote_credits = unallocated_line_items.reject { |li| li.product.claimable_vote_package }.sum do |line_item|
16
+ SpreeCmCommissioner::VotingCredits::CreditCalculator.new(line_item).call
17
+ end
18
+
19
+ total_free_vote_credits = unallocated_line_items.select { |li| li.product.claimable_vote_package }.sum do |line_item|
15
20
  SpreeCmCommissioner::VotingCredits::CreditCalculator.new(line_item).call
16
21
  end
17
- total_paid_vote_credits = allocations.sum
18
22
 
19
23
  # Use with_lock to ensure we have a lock on the voting credit record while we:
20
24
  # - Modify data inside the block
21
25
  # - Need to prevent race conditions
22
26
  voting_credit.with_lock do
23
27
  voting_credit.paid_votes_amount += total_paid_vote_credits
28
+ voting_credit.free_votes_amount += total_free_vote_credits
24
29
  voting_credit.save!
25
30
  end
26
31
 
@@ -55,6 +60,24 @@ module SpreeCmCommissioner
55
60
  .to_a
56
61
  end
57
62
 
63
+ def unallocated_line_items
64
+ return episode_line_items if @order.user_id.blank?
65
+
66
+ episode_line_items.reject do |line_item|
67
+ next false unless line_item.price.zero?
68
+
69
+ scope = line_item.claim_scope
70
+ next false if scope.nil?
71
+
72
+ SpreeCmCommissioner::Claim.free_claimed?(
73
+ user_id: @order.user_id,
74
+ product_id: line_item.product.id,
75
+ claimable_id: scope[:claimable_id],
76
+ claimable_type: scope[:claimable_type]
77
+ )
78
+ end
79
+ end
80
+
58
81
  def find_or_create_credit
59
82
  SpreeCmCommissioner::VotingCredit.active.find_or_create_by!(
60
83
  tenant_id: @order.tenant_id,
@@ -562,6 +562,12 @@ en:
562
562
  advanced_from_session: 'was advanced from a previous session and cannot be removed directly. Clear the advancement in the source session instead.'
563
563
  pre_vote_session: 'cannot be removed from a pre-vote session.'
564
564
  has_advanced_to_session: 'has been assigned to advance to another session. Clear the advancement first before removing this contestant.'
565
+ spree_cm_commissioner/voting_credit:
566
+ attributes:
567
+ free_votes_amount:
568
+ less_than_used: "cannot be less than free votes used (%{used})"
569
+ paid_votes_amount:
570
+ less_than_used: "cannot be less than paid votes used (%{used})"
565
571
  spree_cm_commissioner/tenant:
566
572
  attributes:
567
573
  host:
@@ -425,6 +425,12 @@ km:
425
425
  advanced_from_session: 'ត្រូវបានដំឡើងពី session មុន ហើយមិនអាចដកចេញដោយផ្ទាល់បានទេ។ សូមលុបការដំឡើងនៅក្នុង session ប្រភពជំនួសវិញ។'
426
426
  pre_vote_session: 'មិនអាចដកចេញពី pre-vote session បានទេ។'
427
427
  has_advanced_to_session: 'ត្រូវបានកំណត់ឱ្យដំឡើងទៅ session មួយទៀត។ សូមលុបការដំឡើងជាមុនសិន មុននឹងដកអ្នកចូលប្រកួតនេះចេញ។'
428
+ spree_cm_commissioner/voting_credit:
429
+ attributes:
430
+ free_votes_amount:
431
+ less_than_used: "មិនអាចតូចជាងចំនួនសំឡេងឥតគិតថ្លៃដែលបានប្រើ (%{used})"
432
+ paid_votes_amount:
433
+ less_than_used: "មិនអាចតូចជាងចំនួនសំឡេងបង់ប្រាក់ដែលបានប្រើ (%{used})"
428
434
  spree_cm_commissioner/tenant:
429
435
  attributes:
430
436
  host:
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '2.8.15.pre.pre5'.freeze
2
+ VERSION = '2.8.15.pre.pre7'.freeze
3
3
 
4
4
  module_function
5
5
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_cm_commissioner
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.15.pre.pre5
4
+ version: 2.8.15.pre.pre7
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-29 00:00:00.000000000 Z
11
+ date: 2026-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree