From a341137939c0bfedcb51931695985796d2bb119a Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Sat, 14 Nov 2015 07:07:08 +0100 Subject: [PATCH] created item availability checking tool --- .../app/controllers/items_controller.rb | 12 +++++++ .../views/items/check_availability.html.erb | 34 +++++++++++++++++++ .../config/initializers/rails_admin.rb | 3 +- back-office/config/routes.rb | 8 ++++- 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 back-office/app/views/items/check_availability.html.erb diff --git a/back-office/app/controllers/items_controller.rb b/back-office/app/controllers/items_controller.rb index 66405aa..a3a9b02 100644 --- a/back-office/app/controllers/items_controller.rb +++ b/back-office/app/controllers/items_controller.rb @@ -3,4 +3,16 @@ class ItemsController < ApplicationController conf.columns[:unit].form_ui = :select conf.columns[:sub_category].form_ui = :select end + + def check_availability + @suppliers = Supplier.order(:name).all + @selected_supplier = Supplier.find_by_id(params[:supplier_id]) + @items = @selected_supplier.try(:items) || [] + @codes_to_check = params[:codes] || "" + @codes_to_check_array = @codes_to_check.split("\n").reject { |code| code.strip.blank? }.map(&:strip) + items_to_check = @items.map { |i| i.code.strip } + + @missing_from_database = (@codes_to_check_array - items_to_check) || [] + @missing_from_codes = (items_to_check - @codes_to_check_array) || [] + end end diff --git a/back-office/app/views/items/check_availability.html.erb b/back-office/app/views/items/check_availability.html.erb new file mode 100644 index 0000000..98ec3b5 --- /dev/null +++ b/back-office/app/views/items/check_availability.html.erb @@ -0,0 +1,34 @@ +<%= form_tag('/items/check_availability') do %> +

+ <%= select_tag "supplier_id", options_from_collection_for_select(@suppliers, "id", "name", @selected_supplier.try(:id)) %>

+ +


+ <%= text_area_tag "codes", @codes_to_check, rows: 20, columns: 50 %>

+ +

<%= submit_tag "Check" %>

+<% end %> + +
+

In database: <%= @items.length %>, in file: <%= @codes_to_check_array.length %>

+
+ +
+

Not in database (<%= @missing_from_database.length %>):

+
+<% @missing_from_database.each do |code| %> + <%= code %>
+<% end %> + +
+ +
+

Not in file (<%= @missing_from_codes.length %>):

+
+<% @missing_from_codes.each do |code| %> + <%= code %>
+<% end %> + +
+ diff --git a/back-office/config/initializers/rails_admin.rb b/back-office/config/initializers/rails_admin.rb index c7034d3..f3841f0 100644 --- a/back-office/config/initializers/rails_admin.rb +++ b/back-office/config/initializers/rails_admin.rb @@ -34,6 +34,7 @@ RailsAdmin.config do |config| config.navigation_static_links = { 'Orders to Confirm' => '../reports/orders_to_confirm', - 'Items to Order' => '../reports/items_to_order' + 'Items to Order' => '../reports/items_to_order', + 'Check availability' => '../items/check_availability' } end diff --git a/back-office/config/routes.rb b/back-office/config/routes.rb index 3375f60..9c38196 100644 --- a/back-office/config/routes.rb +++ b/back-office/config/routes.rb @@ -15,7 +15,13 @@ Rails.application.routes.draw do resources :multi_media_descriptions do as_routes end resources :sections do as_routes end resources :media_types do as_routes end - resources :items do as_routes end + resources :items do + collection do + get 'check_availability' + post 'check_availability' + end + as_routes + end resources :units do as_routes end resources :sub_categories do as_routes end resources :categories do as_routes end