From 666817e8c7fc109ac57bb16f1985d1dbd0e09e0c Mon Sep 17 00:00:00 2001 From: Tek Hudson Date: Tue, 18 Jan 2022 19:23:03 -0800 Subject: [PATCH 1/5] Add table to store annual inventory ppv values --- .../20220103203303_add_annual_inventory_ppvs.rb | 13 +++++++++++++ db/schema.rb | 11 ++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20220103203303_add_annual_inventory_ppvs.rb diff --git a/db/migrate/20220103203303_add_annual_inventory_ppvs.rb b/db/migrate/20220103203303_add_annual_inventory_ppvs.rb new file mode 100644 index 00000000..e01857e0 --- /dev/null +++ b/db/migrate/20220103203303_add_annual_inventory_ppvs.rb @@ -0,0 +1,13 @@ +class AddAnnualInventoryPpvs < ActiveRecord::Migration[5.1] + def change + create_table :annual_inventory_ppvs do |t| + t.integer :year + t.decimal :total_inventory_value, precision: 13, scale: 2 + t.decimal :inventory_ppv, precision: 13, scale: 2 + + t.timestamps null: false + end + + add_index :annual_inventory_ppvs, :year + end +end diff --git a/db/schema.rb b/db/schema.rb index 1a91e42f..d0004d44 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20211207074040) do +ActiveRecord::Schema.define(version: 20220103203303) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -25,6 +25,15 @@ t.string "zip", limit: 16 end + create_table "annual_inventory_ppvs", force: :cascade do |t| + t.integer "year" + t.decimal "total_inventory_value", precision: 13, scale: 2 + t.decimal "inventory_ppv", precision: 13, scale: 2 + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["year"], name: "index_annual_inventory_ppvs_on_year" + end + create_table "bin_items", id: :serial, force: :cascade do |t| t.integer "bin_id", null: false t.integer "item_id", null: false From 355653e6ab8b51a54ec1573ad00c48e40de03f7f Mon Sep 17 00:00:00 2001 From: Tek Hudson Date: Tue, 18 Jan 2022 19:46:12 -0800 Subject: [PATCH 2/5] Add missing column to table --- db/migrate/20220103203303_add_annual_inventory_ppvs.rb | 3 ++- db/schema.rb | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/db/migrate/20220103203303_add_annual_inventory_ppvs.rb b/db/migrate/20220103203303_add_annual_inventory_ppvs.rb index e01857e0..b0a41160 100644 --- a/db/migrate/20220103203303_add_annual_inventory_ppvs.rb +++ b/db/migrate/20220103203303_add_annual_inventory_ppvs.rb @@ -3,7 +3,8 @@ def change create_table :annual_inventory_ppvs do |t| t.integer :year t.decimal :total_inventory_value, precision: 13, scale: 2 - t.decimal :inventory_ppv, precision: 13, scale: 2 + t.decimal :annual_ppv, precision: 13, scale: 2 + t.decimal :real_inventory_value, precision: 13, scale: 2 t.timestamps null: false end diff --git a/db/schema.rb b/db/schema.rb index d0004d44..2b241f47 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -28,7 +28,8 @@ create_table "annual_inventory_ppvs", force: :cascade do |t| t.integer "year" t.decimal "total_inventory_value", precision: 13, scale: 2 - t.decimal "inventory_ppv", precision: 13, scale: 2 + t.decimal "annual_ppv", precision: 13, scale: 2 + t.decimal "real_inventory_value", precision: 13, scale: 2 t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["year"], name: "index_annual_inventory_ppvs_on_year" From ab22b39218f325581b61753fe01398113f59a26c Mon Sep 17 00:00:00 2001 From: Tek Hudson Date: Sat, 19 Feb 2022 10:23:34 -0800 Subject: [PATCH 3/5] Work chunk --- app/assets/javascripts/years.coffee | 14 +++++++ app/controllers/reports_controller.rb | 4 ++ app/models/annual_inventory_ppv.rb | 3 ++ app/models/reports/annual_inventory_ppv.rb | 37 +++++++++++++++++++ app/views/common/_navbar.html.erb | 1 + .../reports/annual_inventory_ppv.html.erb | 33 +++++++++++++++++ config/routes.rb | 1 + ...0220103203303_add_annual_inventory_ppvs.rb | 6 +-- db/schema.rb | 6 +-- 9 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 app/assets/javascripts/years.coffee create mode 100644 app/models/annual_inventory_ppv.rb create mode 100644 app/models/reports/annual_inventory_ppv.rb create mode 100644 app/views/reports/annual_inventory_ppv.html.erb diff --git a/app/assets/javascripts/years.coffee b/app/assets/javascripts/years.coffee new file mode 100644 index 00000000..853051f0 --- /dev/null +++ b/app/assets/javascripts/years.coffee @@ -0,0 +1,14 @@ +expose "initializeYears", -> + defaultMatcher = $.fn.select2.defaults.defaults.matcher + + $ -> + $("#year-selector, .year-selector").select2 + theme: "bootstrap" + width: "100%" + matcher: (params, data) -> + textToMatch = data.element.getAttribute("data-search-text") || "" + + if defaultMatcher(params, { text: textToMatch }) + data + else + null diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index 7a621c9e..c412b881 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -42,6 +42,10 @@ def price_point_variance @report = Reports::PricePointVariance.new(params, session) end + def annual_inventory_ppv + @report = Reports::AnnualInventoryPpv.new() + end + private def report_exporter diff --git a/app/models/annual_inventory_ppv.rb b/app/models/annual_inventory_ppv.rb new file mode 100644 index 00000000..cfd3a33d --- /dev/null +++ b/app/models/annual_inventory_ppv.rb @@ -0,0 +1,3 @@ +class AnnualInventoryPpv < ApplicationRecord + validates_format_of :year, :with => /[0-9]{4}/ +end diff --git a/app/models/reports/annual_inventory_ppv.rb b/app/models/reports/annual_inventory_ppv.rb new file mode 100644 index 00000000..7e744365 --- /dev/null +++ b/app/models/reports/annual_inventory_ppv.rb @@ -0,0 +1,37 @@ +module Reports + module AnnualInventoryPpv + def self.new() + Reports::AnnualInventoryPpv::AllYears.new() + end + + def self.years + AnnualInventoryPpv.all.pluck(:year).uniq.sort + end + + module Base + def each + data.each { |x| yield(*x) } + end + end + + class AllYears + include Reports::AnnualInventoryPpv::Base + attr_reader :annual_inventory_ppvs + + def initialize() + @annual_inventory_ppvs = ::AnnualInventoryPpv.order(:year).to_a + end + + def description_label + "Vendor" + end + + def data + @data ||= annual_inventory_ppvs.map do |annual_inventory_ppv| + [annual_inventory_ppv.year, annual_inventory_ppv.total_inventory_value, + annual_inventory_ppv.annual_ppv,annual_inventory_ppv.real_inventory_value] + end + end + end + end +end diff --git a/app/views/common/_navbar.html.erb b/app/views/common/_navbar.html.erb index 3e49c1dc..68cc4d53 100644 --- a/app/views/common/_navbar.html.erb +++ b/app/views/common/_navbar.html.erb @@ -49,6 +49,7 @@
  • <%= link_to "Total Inventory Value", total_inventory_value_reports_path %>
  • <%= link_to "Inventory Adjustments", inventory_adjustments_reports_path %>
  • <%= link_to "Price Point Variace Report", price_point_variance_reports_path %>
  • +
  • <%= link_to "Annual Inventory PPV Report", annual_inventory_ppv_reports_path %>
  • <%= link_to "Graphs", graphs_reports_path %>
  • <% if current_user.can_export? %> diff --git a/app/views/reports/annual_inventory_ppv.html.erb b/app/views/reports/annual_inventory_ppv.html.erb new file mode 100644 index 00000000..f38b914d --- /dev/null +++ b/app/views/reports/annual_inventory_ppv.html.erb @@ -0,0 +1,33 @@ +<% content_for :title, "Annual Inventory PPV Report" %> + +<% content_for :content_size, "col-sm-9 col-md-10" %> + +<% content_for :content do %> +
    +
    +
    + + + + + + + + + + + + <% @report.each do |year, total_inventory_value, annual_ppv, real_inventory_value| %> + <%= content_tag "tr" do %> + + + + + <% end %> + <% end %> + +
    YearTotal Inventory Valueannual PPVReal Inventory Value
    <%= year %><%= number_to_currency total_inventory_value, precision: 2 %><%= number_to_currency annual_ppv, precision: 2 %><%= number_to_currency real_inventory_value, precision: 2 %>
    +
    +
    +
    +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 2d20379e..c46779f0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -116,6 +116,7 @@ get :value_by_county get :value_by_donor get :price_point_variance + get :annual_inventory_ppv end end diff --git a/db/migrate/20220103203303_add_annual_inventory_ppvs.rb b/db/migrate/20220103203303_add_annual_inventory_ppvs.rb index b0a41160..a807ea14 100644 --- a/db/migrate/20220103203303_add_annual_inventory_ppvs.rb +++ b/db/migrate/20220103203303_add_annual_inventory_ppvs.rb @@ -2,9 +2,9 @@ class AddAnnualInventoryPpvs < ActiveRecord::Migration[5.1] def change create_table :annual_inventory_ppvs do |t| t.integer :year - t.decimal :total_inventory_value, precision: 13, scale: 2 - t.decimal :annual_ppv, precision: 13, scale: 2 - t.decimal :real_inventory_value, precision: 13, scale: 2 + t.decimal :total_inventory_value + t.decimal :annual_ppv + t.decimal :real_inventory_value t.timestamps null: false end diff --git a/db/schema.rb b/db/schema.rb index 2b241f47..cde29cc8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -27,9 +27,9 @@ create_table "annual_inventory_ppvs", force: :cascade do |t| t.integer "year" - t.decimal "total_inventory_value", precision: 13, scale: 2 - t.decimal "annual_ppv", precision: 13, scale: 2 - t.decimal "real_inventory_value", precision: 13, scale: 2 + t.decimal "total_inventory_value" + t.decimal "annual_ppv" + t.decimal "real_inventory_value" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["year"], name: "index_annual_inventory_ppvs_on_year" From 01e8f2f45f2667e18f412dcd6343f6a4a5cdca76 Mon Sep 17 00:00:00 2001 From: Tek Hudson Date: Sun, 20 Feb 2022 16:17:20 -0800 Subject: [PATCH 4/5] Update location on shoulda matchers to get rspec working --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 2c2b220d..eae11a68 100644 --- a/Gemfile +++ b/Gemfile @@ -45,12 +45,12 @@ group :development, :test do gem "rspec-rails", "~> 3.4" gem "rubocop" gem "sdoc", "~> 0.4.0", group: :doc + gem "shoulda-matchers", "~> 3.1" end group :test do gem "climate_control", "~> 0.2" gem "fakefs", "~> 0.11", require: "fakefs/safe" - gem "shoulda-matchers", "~> 3.1" end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 5f0025a2..858f03bf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -94,7 +94,7 @@ GEM coffee-script-source execjs coffee-script-source (1.12.2) - concurrent-ruby (1.1.6) + concurrent-ruby (1.1.9) connection_pool (2.2.3) crass (1.0.6) declarative (0.0.10) @@ -147,7 +147,7 @@ GEM httpi (2.4.4) rack socksify - i18n (1.8.3) + i18n (1.10.0) concurrent-ruby (~> 1.0) jbuilder (2.10.0) activesupport (>= 5.0.0) @@ -189,7 +189,7 @@ GEM mime-types-data (3.2020.0512) mini_mime (1.0.2) mini_portile2 (2.6.1) - minitest (5.14.1) + minitest (5.15.0) multi_json (1.14.1) multipart-post (2.1.1) netrc (0.11.0) @@ -373,7 +373,7 @@ GEM turbolinks (2.5.4) coffee-rails twitter-bootstrap-rails-confirm (2.0.1) - tzinfo (1.2.7) + tzinfo (1.2.9) thread_safe (~> 0.1) uber (0.1.0) uglifier (4.2.0) From cba0f55c89397c2772a746f5060b5e8291a09d00 Mon Sep 17 00:00:00 2001 From: Tek Hudson Date: Sun, 20 Feb 2022 16:29:04 -0800 Subject: [PATCH 5/5] Rename file --- .../{dontions_controller_spec.rb => donations_controller_spec.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spec/controllers/{dontions_controller_spec.rb => donations_controller_spec.rb} (100%) diff --git a/spec/controllers/dontions_controller_spec.rb b/spec/controllers/donations_controller_spec.rb similarity index 100% rename from spec/controllers/dontions_controller_spec.rb rename to spec/controllers/donations_controller_spec.rb