Module: SpreeCmCommissioner::Orders::GenerateCommissionsDecorator
- Defined in:
- app/services/spree_cm_commissioner/orders/generate_commissions_decorator.rb
Instance Method Summary collapse
-
#commission_amount(line_item) ⇒ Object
return default line item commission amount spree_vpago have different construction of commision.
- #generate_commissions_group_by_vendor_ids(order) ⇒ Object
-
#generate_order_commissions(order:) ⇒ Object
override.
Instance Method Details
#commission_amount(line_item) ⇒ Object
return default line item commission amount spree_vpago have different construction of commision. if they define, should follow them.
25 26 27 28 29 |
# File 'app/services/spree_cm_commissioner/orders/generate_commissions_decorator.rb', line 25 def commission_amount(line_item) return line_item.commission_amount if line_item.respond_to?(:commission_amount) line_item.pre_tax_amount * line_item.commission_rate / 100.0 end |
#generate_commissions_group_by_vendor_ids(order) ⇒ Object
16 17 18 19 20 |
# File 'app/services/spree_cm_commissioner/orders/generate_commissions_decorator.rb', line 16 def generate_commissions_group_by_vendor_ids(order) order.line_items.each_with_object(Hash.new(0)) do |line_item, commissions| commissions[line_item.vendor_id] += commission_amount(line_item) if line_item.vendor_id.present? end end |
#generate_order_commissions(order:) ⇒ Object
override
5 6 7 8 9 10 11 12 13 14 |
# File 'app/services/spree_cm_commissioner/orders/generate_commissions_decorator.rb', line 5 def generate_order_commissions(order:) return failure(order) unless order.state == 'complete' vendor_commissions = generate_commissions_group_by_vendor_ids(order) vendor_commissions.each do |vendor_id, amount| order.commissions.find_or_create_by!(vendor_id: vendor_id) { |commission| commission.amount = amount } end success(order: order) end |