From 27328a7c65c287d820a2cf86320cd5309b3fbeb8 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Tue, 20 Oct 2015 21:09:58 -0500 Subject: [PATCH] * VRFS-3670 - affiliate rate usage --- admin/app/views/admin/affiliates/_form.html.erb | 2 ++ db/manifest | 3 ++- db/up/affiliate_partner_rate.sql | 1 + ruby/lib/jam_ruby/models/affiliate_partner.rb | 4 ++-- ruby/spec/jam_ruby/models/affiliate_partner_spec.rb | 9 +++++++++ 5 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 db/up/affiliate_partner_rate.sql diff --git a/admin/app/views/admin/affiliates/_form.html.erb b/admin/app/views/admin/affiliates/_form.html.erb index b7a3b047d..78a1dce70 100644 --- a/admin/app/views/admin/affiliates/_form.html.erb +++ b/admin/app/views/admin/affiliates/_form.html.erb @@ -2,6 +2,8 @@ <%= f.semantic_errors *f.object.errors.keys %> <%= f.inputs do %> <%= f.input(:partner_name, :input_html => {:maxlength => 128}) %> + <%= f.input(:entity_type, :as => :select, :collection => AffiliatePartner::ENTITY_TYPES) %> + <%= f.input(:rate) %> <% end %> <%= f.actions %> <% end %> diff --git a/db/manifest b/db/manifest index 4c449efed..bd1318bc9 100755 --- a/db/manifest +++ b/db/manifest @@ -306,4 +306,5 @@ jam_track_slug.sql mixdown.sql aac_master.sql video_recording.sql -web_playable_jamtracks.sql \ No newline at end of file +web_playable_jamtracks.sql +affiliate_partner_rate.sql \ No newline at end of file diff --git a/db/up/affiliate_partner_rate.sql b/db/up/affiliate_partner_rate.sql new file mode 100644 index 000000000..d36c80c81 --- /dev/null +++ b/db/up/affiliate_partner_rate.sql @@ -0,0 +1 @@ +ALTER TABLE affiliate_partners ADD COLUMN rate NUMERIC(8,2) DEFAULT 0.10; \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/affiliate_partner.rb b/ruby/lib/jam_ruby/models/affiliate_partner.rb index 5368c67b3..c0b67c2d5 100644 --- a/ruby/lib/jam_ruby/models/affiliate_partner.rb +++ b/ruby/lib/jam_ruby/models/affiliate_partner.rb @@ -9,7 +9,7 @@ class JamRuby::AffiliatePartner < ActiveRecord::Base has_many :months, :class_name => 'JamRuby::AffiliateMonthlyPayment', foreign_key: :affiliate_partner_id, inverse_of: :affiliate_partner has_many :traffic_totals, :class_name => 'JamRuby::AffiliateTrafficTotal', foreign_key: :affiliate_partner_id, inverse_of: :affiliate_partner has_many :visits, :class_name => 'JamRuby::AffiliateReferralVisit', foreign_key: :affiliate_partner_id, inverse_of: :affiliate_partner - attr_accessible :partner_name, :partner_code, :partner_user_id + attr_accessible :partner_name, :partner_code, :partner_user_id, :entity_type, :rate, as: :admin ENTITY_TYPES = %w{ Individual Sole\ Proprietor Limited\ Liability\ Company\ (LLC) Partnership Trust/Estate S\ Corporation C\ Corporation Other } @@ -124,7 +124,7 @@ class JamRuby::AffiliatePartner < ActiveRecord::Base product_info = shopping_cart.product_info # subtract the total quantity from the freebie quantity, to see how much we should attribute to them real_quantity = product_info[:quantity].to_i - product_info[:marked_for_redeem].to_i - {fee_in_cents: real_quantity * 20} + {fee_in_cents: (1.99 * 100 * real_quantity * rate).round} else false end diff --git a/ruby/spec/jam_ruby/models/affiliate_partner_spec.rb b/ruby/spec/jam_ruby/models/affiliate_partner_spec.rb index 822a1f527..3c23bdc73 100644 --- a/ruby/spec/jam_ruby/models/affiliate_partner_spec.rb +++ b/ruby/spec/jam_ruby/models/affiliate_partner_spec.rb @@ -110,6 +110,15 @@ describe AffiliatePartner do user.should_attribute_sale?(shopping_cart).should eq({fee_in_cents:20}) end + it "user with an affiliate relationship (with a custom rate) buying a jamtrack" do + user.affiliate_referral = partner + user.save! + partner.rate = 0.25 + partner.save! + shopping_cart = ShoppingCart.create user, jam_track, 1, false + user.should_attribute_sale?(shopping_cart).should eq({fee_in_cents:50}) + end + it "user with an affiliate relationship redeeming a jamtrack" do user.affiliate_referral = partner user.save!