From 547fcf49e002adca8fa9bd87df7a63a7793ac489 Mon Sep 17 00:00:00 2001 From: Steve Pettitt Date: Sat, 14 May 2016 11:00:13 +0100 Subject: [PATCH] Add line item included_tax_amount method to multiply by quantity --- app/mailers/producer_mailer.rb | 2 +- app/models/spree/line_item_decorator.rb | 13 +++++++++++-- spec/models/spree/line_item_spec.rb | 9 +++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/mailers/producer_mailer.rb b/app/mailers/producer_mailer.rb index 590193c4a5..ae2f77384c 100644 --- a/app/mailers/producer_mailer.rb +++ b/app/mailers/producer_mailer.rb @@ -56,6 +56,6 @@ class ProducerMailer < Spree::BaseMailer end def tax_total_from_line_items(aggregated_line_items) - Spree::Money.new aggregated_line_items.values.map(&:included_tax).sum + Spree::Money.new aggregated_line_items.values.map(&:included_tax_amount).sum end end diff --git a/app/models/spree/line_item_decorator.rb b/app/models/spree/line_item_decorator.rb index 8a89d8fdef..f848aeede2 100644 --- a/app/models/spree/line_item_decorator.rb +++ b/app/models/spree/line_item_decorator.rb @@ -52,10 +52,15 @@ Spree::LineItem.class_eval do adjustments.included_tax.any? end + # Single def included_tax adjustments.included_tax.sum(&:included_tax) end + def included_tax_amount + included_tax * quantity + end + def price_with_adjustments # EnterpriseFee#create_locked_adjustment applies adjustments on line items to their parent order, # so line_item.adjustments returns an empty array @@ -77,8 +82,12 @@ Spree::LineItem.class_eval do Spree::Money.new(amount_with_adjustments, { :currency => currency }) end - def display_included_tax - Spree::Money.new(included_tax, { :currency => currency }) + def display_included_tax_amount + Spree::Money.new(included_tax_amount, { :currency => currency }) + end + + def display_amount_without_tax + Spree::Money.new(amount_with_adjustments - included_tax_amount, { currency: currency }) end def display_name diff --git a/spec/models/spree/line_item_spec.rb b/spec/models/spree/line_item_spec.rb index 111108f7b4..fb37fd4e36 100644 --- a/spec/models/spree/line_item_spec.rb +++ b/spec/models/spree/line_item_spec.rb @@ -124,6 +124,15 @@ module Spree expect(li_no_tax.included_tax).to eq 0.00 end end + + context "scaling included tax by quantity" do + it "multiplies included_tax" do + li_tax.quantity = 3 + li_tax.save + expect(li_tax.included_tax).to eq 10.00 + expect(li_tax.included_tax_amount).to eq 30.00 + end + end end describe "unit value/description" do