Admin can include tax when creating an adjustment

This commit is contained in:
Rohan Mitchell
2015-11-04 11:18:55 +11:00
parent 46a9304ae1
commit 83c0093665
3 changed files with 75 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
module Spree
module Admin
AdjustmentsController.class_eval do
before_filter :set_included_tax, only: :create
private
def set_included_tax
if params[:tax_rate_id].present?
tax_rate = TaxRate.find params[:tax_rate_id]
amount = params[:adjustment][:amount].to_f
params[:adjustment][:included_tax] = tax_rate.compute_tax amount
end
end
end
end
end

View File

@@ -0,0 +1,34 @@
require 'spec_helper'
module Spree
describe Admin::AdjustmentsController do
include AuthenticationWorkflow
before { login_as_admin }
describe "setting included tax when creating an adjustment" do
let(:order) { create(:order) }
let(:tax_rate) { create(:tax_rate, amount: 0.1, calculator: Spree::Calculator::DefaultTax.new) }
it "sets included tax to zero when no tax rate is specified" do
spree_put :create, {order_id: order.number, adjustment: {label: 'Testing included tax', amount: '110'}, tax_rate_id: ''}
response.should redirect_to spree.admin_order_adjustments_path(order)
a = Adjustment.last
a.label.should == 'Testing included tax'
a.amount.should == 110
a.included_tax.should == 0
end
it "calculates included tax when a tax rate is provided" do
spree_put :create, {order_id: order.number, adjustment: {label: 'Testing included tax', amount: '110'}, tax_rate_id: tax_rate.id.to_s}
response.should redirect_to spree.admin_order_adjustments_path(order)
a = Adjustment.last
a.label.should == 'Testing included tax'
a.amount.should == 110
a.included_tax.should == 10
end
end
end
end

View File

@@ -106,6 +106,30 @@ feature %q{
current_path.should == spree.admin_orders_path
end
scenario "adding taxed adjustments to an order" do
# Given a tax rate
create(:tax_rate, name: 'GST', calculator: build(:calculator, preferred_amount: 10))
# When I go to the adjustments page for the order
login_to_admin_section
visit spree.admin_orders_path
page.find('td.actions a.icon-edit').click
click_link 'Adjustments'
# And I create a new adjustment with tax
click_link 'New Adjustment'
fill_in 'adjustment_amount', with: 110
fill_in 'adjustment_label', with: 'Late fee'
select 'GST', from: 'tax_rate_id'
click_button 'Continue'
# Then I should see the adjustment, with the correct tax
page.should have_selector 'td.label', text: 'Late fee'
page.should have_selector 'td.amount', text: '110'
page.should have_selector 'td.included-tax', text: '10'
end
context "as an enterprise manager" do
let(:coordinator1) { create(:distributor_enterprise) }
let(:coordinator2) { create(:distributor_enterprise) }