From 83ba256f9dfcadbfa28b5d3f4752d29240bcbd54 Mon Sep 17 00:00:00 2001 From: Dinis Date: Thu, 10 Sep 2020 12:36:43 +0100 Subject: [PATCH] Add tax_references, its controller and some basic pages for viewing ref data about taxes. --- app/assets/stylesheets/tax_references.scss | 3 ++ app/controllers/tax_references_controller.rb | 10 +++++++ app/helpers/tax_references_helper.rb | 2 ++ app/models/tax_reference.rb | 17 +++++++++++ app/views/layouts/_top_navigation.html.erb | 6 ++-- app/views/tax_references/_top_list.html.erb | 13 +++++++++ app/views/tax_references/index.html.erb | 1 + app/views/tax_references/show.html.erb | 28 +++++++++++++++++++ config/locales/pt.yml | 10 +++++++ config/routes.rb | 2 ++ .../20200909112404_create_tax_references.rb | 13 +++++++++ db/schema.rb | 12 +++++++- .../tax_references_controller_test.rb | 7 +++++ test/fixtures/tax_references.yml | 15 ++++++++++ test/models/tax_reference_test.rb | 7 +++++ 15 files changed, 142 insertions(+), 4 deletions(-) create mode 100644 app/assets/stylesheets/tax_references.scss create mode 100644 app/controllers/tax_references_controller.rb create mode 100644 app/helpers/tax_references_helper.rb create mode 100644 app/models/tax_reference.rb create mode 100644 app/views/tax_references/_top_list.html.erb create mode 100644 app/views/tax_references/index.html.erb create mode 100644 app/views/tax_references/show.html.erb create mode 100644 config/locales/pt.yml create mode 100644 db/migrate/20200909112404_create_tax_references.rb create mode 100644 test/controllers/tax_references_controller_test.rb create mode 100644 test/fixtures/tax_references.yml create mode 100644 test/models/tax_reference_test.rb diff --git a/app/assets/stylesheets/tax_references.scss b/app/assets/stylesheets/tax_references.scss new file mode 100644 index 0000000..7830c92 --- /dev/null +++ b/app/assets/stylesheets/tax_references.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the TaxReferences controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/controllers/tax_references_controller.rb b/app/controllers/tax_references_controller.rb new file mode 100644 index 0000000..9b089f1 --- /dev/null +++ b/app/controllers/tax_references_controller.rb @@ -0,0 +1,10 @@ +class TaxReferencesController < ApplicationController + def index + @tax_references = TaxReference.all + end + + def show + @tax_references = TaxReference.all + @tax_reference = TaxReference.find_by(year: params[:year]) + end +end diff --git a/app/helpers/tax_references_helper.rb b/app/helpers/tax_references_helper.rb new file mode 100644 index 0000000..49539e9 --- /dev/null +++ b/app/helpers/tax_references_helper.rb @@ -0,0 +1,2 @@ +module TaxReferencesHelper +end diff --git a/app/models/tax_reference.rb b/app/models/tax_reference.rb new file mode 100644 index 0000000..984aeff --- /dev/null +++ b/app/models/tax_reference.rb @@ -0,0 +1,17 @@ +class TaxReference < ApplicationRecord + validates :year, uniqueness: true + MAX_MONTHLY_HOURS = 172 + + def worker_contribution(number_of_hours) + return self.hourly_wage * number_of_hours * self.worker_percentage / 100 + end + + def employer_contribution(number_of_hours) + return self.hourly_wage * number_of_hours * self.employer_percentage / 100 + end + + def total_contribution(number_of_hours) + return self.employer_contribution(number_of_hours) + + self.worker_contribution(number_of_hours) + end +end diff --git a/app/views/layouts/_top_navigation.html.erb b/app/views/layouts/_top_navigation.html.erb index 466c4af..6b0ef44 100644 --- a/app/views/layouts/_top_navigation.html.erb +++ b/app/views/layouts/_top_navigation.html.erb @@ -7,11 +7,11 @@