mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-28 21:07:16 +00:00
Admin can include tax when creating an adjustment
This commit is contained in:
@@ -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
|
||||
34
spec/controllers/spree/admin/adjustments_controller_spec.rb
Normal file
34
spec/controllers/spree/admin/adjustments_controller_spec.rb
Normal 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
|
||||
@@ -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) }
|
||||
|
||||
Reference in New Issue
Block a user