mobilart_models 1.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/MIT-LICENSE +20 -0
 - data/README.rdoc +3 -0
 - data/Rakefile +37 -0
 - data/app/models/bundle.rb +39 -0
 - data/app/models/chosen_deck.rb +76 -0
 - data/app/models/chosen_furniture.rb +114 -0
 - data/app/models/chosen_item.rb +187 -0
 - data/app/models/chosen_room.rb +114 -0
 - data/app/models/commission.rb +58 -0
 - data/app/models/deck.rb +25 -0
 - data/app/models/furniture.rb +45 -0
 - data/app/models/furniture_item.rb +20 -0
 - data/app/models/item.rb +25 -0
 - data/app/models/room.rb +22 -0
 - data/app/models/timetable.rb +171 -0
 - data/app/models/workflow.rb +173 -0
 - data/config/initializers/mobilart_models_after_initialize.rb +7 -0
 - data/config/locales/en.activerecord.yml +36 -0
 - data/config/locales/en.yml +38 -0
 - data/config/locales/it.activerecord.yml +157 -0
 - data/config/locales/it.yml +33 -0
 - data/config/routes.rb +2 -0
 - data/db/migrate/20150825174853_create_items.rb +13 -0
 - data/db/migrate/20150825175219_create_commissions.rb +14 -0
 - data/db/migrate/20150825175836_create_decks.rb +13 -0
 - data/db/migrate/20150825175853_create_rooms.rb +13 -0
 - data/db/migrate/20150825175952_create_furnitures.rb +13 -0
 - data/db/migrate/20150825180027_create_furniture_items.rb +10 -0
 - data/db/migrate/20150825180510_create_bundles.rb +14 -0
 - data/db/migrate/20150827084511_create_chosen_decks.rb +12 -0
 - data/db/migrate/20150827084626_create_chosen_rooms.rb +12 -0
 - data/db/migrate/20150827084745_create_chosen_furnitures.rb +12 -0
 - data/db/migrate/20150827184845_create_chosen_items.rb +12 -0
 - data/db/migrate/20150828180910_create_workflows.rb +13 -0
 - data/db/migrate/20150903152839_create_timetables.rb +17 -0
 - data/db/migrate/20151201145832_add_external_to_user.rb +5 -0
 - data/db/migrate/20151202155259_add_external_to_workflow.rb +6 -0
 - data/db/migrate/20151218145139_add_closed_to_commission.rb +5 -0
 - data/db/migrate/20151221083612_add_checked_to_chosen_item.rb +5 -0
 - data/db/migrate/20151221100829_add_bundle_to_chosen_item.rb +5 -0
 - data/db/migrate/20151221100914_add_checked_in_bundle_to_chosen_item.rb +5 -0
 - data/db/migrate/20160212155936_remove_chosen_furniture_from_timetable.rb +5 -0
 - data/db/migrate/20160212160511_add_chosen_item_to_timetable.rb +5 -0
 - data/db/migrate/20160331101901_add_code_to_user.rb +6 -0
 - data/db/migrate/20160519144818_save_items_to_make_name_code_the_same.rb +7 -0
 - data/db/migrate/20160622132452_add_barcode_to_chosen_item.rb +154 -0
 - data/db/migrate/20160629135548_edit_index_for_furniture.rb +6 -0
 - data/db/migrate/20170723195528_remove_barcode_from_chosen_items.rb +5 -0
 - data/lib/mobilart_models.rb +14 -0
 - data/lib/mobilart_models/engine.rb +12 -0
 - data/lib/mobilart_models/version.rb +3 -0
 - data/lib/mobilart_models_abilities.rb +53 -0
 - data/lib/mobilart_roles.rb +6 -0
 - data/lib/rails_admin_print_jobs_concern.rb +13 -0
 - data/lib/rails_admin_printers_concern.rb +13 -0
 - data/lib/rails_admin_user_main_concern.rb +11 -0
 - data/lib/tasks/mobilart_models_tasks.rake +4 -0
 - data/lib/user_model_concerns.rb +13 -0
 - data/test/dummy/README.rdoc +28 -0
 - data/test/dummy/Rakefile +6 -0
 - data/test/dummy/app/assets/javascripts/application.js +13 -0
 - data/test/dummy/app/assets/stylesheets/application.css +15 -0
 - data/test/dummy/app/controllers/application_controller.rb +5 -0
 - data/test/dummy/app/helpers/application_helper.rb +2 -0
 - data/test/dummy/app/views/layouts/application.html.erb +14 -0
 - data/test/dummy/bin/bundle +3 -0
 - data/test/dummy/bin/rails +4 -0
 - data/test/dummy/bin/rake +4 -0
 - data/test/dummy/bin/setup +29 -0
 - data/test/dummy/config.ru +4 -0
 - data/test/dummy/config/application.rb +25 -0
 - data/test/dummy/config/boot.rb +5 -0
 - data/test/dummy/config/database.yml +25 -0
 - data/test/dummy/config/environment.rb +5 -0
 - data/test/dummy/config/environments/development.rb +41 -0
 - data/test/dummy/config/environments/production.rb +79 -0
 - data/test/dummy/config/environments/test.rb +42 -0
 - data/test/dummy/config/initializers/assets.rb +11 -0
 - data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
 - data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
 - data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
 - data/test/dummy/config/initializers/inflections.rb +16 -0
 - data/test/dummy/config/initializers/mime_types.rb +4 -0
 - data/test/dummy/config/initializers/session_store.rb +3 -0
 - data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
 - data/test/dummy/config/locales/en.yml +23 -0
 - data/test/dummy/config/routes.rb +56 -0
 - data/test/dummy/config/secrets.yml +22 -0
 - data/test/dummy/log/development.log +1 -0
 - data/test/dummy/public/404.html +67 -0
 - data/test/dummy/public/422.html +67 -0
 - data/test/dummy/public/500.html +66 -0
 - data/test/dummy/public/favicon.ico +0 -0
 - data/test/integration/navigation_test.rb +8 -0
 - data/test/mobilart_models_test.rb +7 -0
 - data/test/test_helper.rb +20 -0
 - metadata +206 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: afddb939c222cffb43c0e95ee15e83a0cb052ae5
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 846942720f0c6581e5ec71d6321ebb6bdfa2d0a1
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 16f48274905c68059f6a1328dbe886588d174136e9807e66dcd1c135360cd54befbe7b9c5543491ff09d632137544e488713c8b8eb8d9a6f6d56870677562994
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 81586ab334e3bca35870fd53344bd3bd327610940063c857c58cad1392e33eb22cbff3bc6a538a198f5abfb70d210a4718fadc91a4aa2a5de7399ba0d07d377b
         
     | 
    
        data/MIT-LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright 2016 Gabriele Tassoni
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 4 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 5 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 6 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 7 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 8 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 9 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 12 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 15 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 16 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 17 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 18 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 19 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 20 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README.rdoc
    ADDED
    
    
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            begin
         
     | 
| 
      
 2 
     | 
    
         
            +
              require 'bundler/setup'
         
     | 
| 
      
 3 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 4 
     | 
    
         
            +
              puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
         
     | 
| 
      
 5 
     | 
    
         
            +
            end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            require 'rdoc/task'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            RDoc::Task.new(:rdoc) do |rdoc|
         
     | 
| 
      
 10 
     | 
    
         
            +
              rdoc.rdoc_dir = 'rdoc'
         
     | 
| 
      
 11 
     | 
    
         
            +
              rdoc.title    = 'MobilartModels'
         
     | 
| 
      
 12 
     | 
    
         
            +
              rdoc.options << '--line-numbers'
         
     | 
| 
      
 13 
     | 
    
         
            +
              rdoc.rdoc_files.include('README.rdoc')
         
     | 
| 
      
 14 
     | 
    
         
            +
              rdoc.rdoc_files.include('lib/**/*.rb')
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
         
     | 
| 
      
 18 
     | 
    
         
            +
            load 'rails/tasks/engine.rake'
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            load 'rails/tasks/statistics.rake'
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            Bundler::GemHelper.install_tasks
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            require 'rake/testtask'
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            Rake::TestTask.new(:test) do |t|
         
     | 
| 
      
 30 
     | 
    
         
            +
              t.libs << 'lib'
         
     | 
| 
      
 31 
     | 
    
         
            +
              t.libs << 'test'
         
     | 
| 
      
 32 
     | 
    
         
            +
              t.pattern = 'test/**/*_test.rb'
         
     | 
| 
      
 33 
     | 
    
         
            +
              t.verbose = false
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            task default: :test
         
     | 
| 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Bundle < ApplicationRecord
         
     | 
| 
      
 2 
     | 
    
         
            +
              belongs_to :commission, inverse_of: :bundles
         
     | 
| 
      
 3 
     | 
    
         
            +
              has_many :chosen_items, inverse_of: :bundle, dependent: :nullify
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              validates :commission, presence: true
         
     | 
| 
      
 6 
     | 
    
         
            +
              validates :code, presence: true, uniqueness: { case_sensitive: false, scope: :commission_id }
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              # Items: I need a method to obtain all the items in the
         
     | 
| 
      
 9 
     | 
    
         
            +
              # current selected Commission
         
     | 
| 
      
 10 
     | 
    
         
            +
              def records_for_print
         
     | 
| 
      
 11 
     | 
    
         
            +
                # TODO: move away from this pseudo code as soon as Bancolini tells me
         
     | 
| 
      
 12 
     | 
    
         
            +
                # what Mobilart wants
         
     | 
| 
      
 13 
     | 
    
         
            +
                # chosen_item.name
         
     | 
| 
      
 14 
     | 
    
         
            +
                # chosen_item.barcode
         
     | 
| 
      
 15 
     | 
    
         
            +
                # chosen_item.timetables.last.status
         
     | 
| 
      
 16 
     | 
    
         
            +
                # chosen_item.timetables.last.job_type
         
     | 
| 
      
 17 
     | 
    
         
            +
                ChosenItem.joins(:bundle).where(bundles: {id: id}).distinct
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def display_name
         
     | 
| 
      
 21 
     | 
    
         
            +
                [commission.code, code].compact.join(" - ")
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              rails_admin do
         
     | 
| 
      
 25 
     | 
    
         
            +
                navigation_label I18n.t("admin.tools.label")
         
     | 
| 
      
 26 
     | 
    
         
            +
                navigation_icon 'fa fa-dropbox'
         
     | 
| 
      
 27 
     | 
    
         
            +
                weight 9
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                configure :id do
         
     | 
| 
      
 30 
     | 
    
         
            +
                  visible false
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
                configure :created_at do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  visible false
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
                configure :updated_at do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  visible false
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,76 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ChosenDeck < ApplicationRecord
         
     | 
| 
      
 2 
     | 
    
         
            +
              belongs_to :deck, inverse_of: :chosen_decks
         
     | 
| 
      
 3 
     | 
    
         
            +
              belongs_to :commission, inverse_of: :chosen_decks
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              has_many :chosen_rooms, inverse_of: :chosen_deck, dependent: :destroy
         
     | 
| 
      
 6 
     | 
    
         
            +
              has_many :rooms, through: :chosen_rooms, inverse_of: :chosen_decks
         
     | 
| 
      
 7 
     | 
    
         
            +
              accepts_nested_attributes_for :chosen_rooms, allow_destroy: true
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              validates :deck, presence: true
         
     | 
| 
      
 10 
     | 
    
         
            +
              validates :commission, presence: true
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              before_create :increment_code
         
     | 
| 
      
 13 
     | 
    
         
            +
              # Items: I need a method to obtain all the items in the
         
     | 
| 
      
 14 
     | 
    
         
            +
              # current selected Commission
         
     | 
| 
      
 15 
     | 
    
         
            +
              def records_for_print id
         
     | 
| 
      
 16 
     | 
    
         
            +
                # TODO: move away from this pseudo code as soon as Bancolini tells me
         
     | 
| 
      
 17 
     | 
    
         
            +
                # what Mobilart wants
         
     | 
| 
      
 18 
     | 
    
         
            +
                # chosen_item.name
         
     | 
| 
      
 19 
     | 
    
         
            +
                # chosen_item.barcode
         
     | 
| 
      
 20 
     | 
    
         
            +
                # chosen_item.timetables.last.status
         
     | 
| 
      
 21 
     | 
    
         
            +
                # chosen_item.timetables.last.job_type
         
     | 
| 
      
 22 
     | 
    
         
            +
                ChosenItem.joins(chosen_furniture: {chosen_room: :chosen_deck}).where(chosen_decks: {id: id}).distinct
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def list_associated_items
         
     | 
| 
      
 26 
     | 
    
         
            +
                true
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              default_scope {joins(:commission)}
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              amoeba do
         
     | 
| 
      
 32 
     | 
    
         
            +
                enable
         
     | 
| 
      
 33 
     | 
    
         
            +
                include_association :chosen_rooms
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              def display_name
         
     | 
| 
      
 37 
     | 
    
         
            +
                "Ponte #{deck.name} della commessa #{commission.name} contenente #{chosen_rooms.count} stanze"
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              rails_admin do
         
     | 
| 
      
 41 
     | 
    
         
            +
                navigation_label I18n.t(:operative_section)
         
     | 
| 
      
 42 
     | 
    
         
            +
                navigation_icon 'fa fa-tasks'
         
     | 
| 
      
 43 
     | 
    
         
            +
                parent Commission
         
     | 
| 
      
 44 
     | 
    
         
            +
                weight 5
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                # list do
         
     | 
| 
      
 47 
     | 
    
         
            +
                field :commission do
         
     | 
| 
      
 48 
     | 
    
         
            +
                  read_only true
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
                field :deck do
         
     | 
| 
      
 51 
     | 
    
         
            +
                  read_only true
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
                field :chosen_rooms
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              def readable_barcode
         
     | 
| 
      
 57 
     | 
    
         
            +
                "#{commission.code}|#{deck.code}|#{code}"
         
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              def barcode
         
     | 
| 
      
 61 
     | 
    
         
            +
                "#{commission.code}#{deck.code}#{code}"
         
     | 
| 
      
 62 
     | 
    
         
            +
              end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
              def name
         
     | 
| 
      
 65 
     | 
    
         
            +
                # "#{deck.name rescue nil} (#{readable_barcode rescue nil})"
         
     | 
| 
      
 66 
     | 
    
         
            +
                deck.name rescue "Undefined"
         
     | 
| 
      
 67 
     | 
    
         
            +
              end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
              private
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
              def increment_code
         
     | 
| 
      
 72 
     | 
    
         
            +
                max_code = ChosenDeck.order("chosen_decks.code DESC").pluck(:code).compact.map(&:to_i).max.to_i
         
     | 
| 
      
 73 
     | 
    
         
            +
                # Rails.logger.debug "MAX CODE IS:#{max_code} Adding 1: #{(max_code + 1)}"
         
     | 
| 
      
 74 
     | 
    
         
            +
                self.code = (max_code + 1)
         
     | 
| 
      
 75 
     | 
    
         
            +
              end
         
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,114 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ChosenFurniture < ApplicationRecord
         
     | 
| 
      
 2 
     | 
    
         
            +
              belongs_to :chosen_room, inverse_of: :chosen_furnitures
         
     | 
| 
      
 3 
     | 
    
         
            +
              belongs_to :furniture, inverse_of: :chosen_furnitures
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              has_many :chosen_items, inverse_of: :chosen_furniture, dependent: :destroy
         
     | 
| 
      
 6 
     | 
    
         
            +
              has_many :furniture_items, through: :chosen_items, inverse_of: :chosen_furnitures
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              #has_many :timetables, dependent: :destroy, inverse_of: :chosen_furniture
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              validates :furniture, presence: true
         
     | 
| 
      
 11 
     | 
    
         
            +
              validates :chosen_room, presence: true
         
     | 
| 
      
 12 
     | 
    
         
            +
              # Whenever I choose a furniture for a room,
         
     | 
| 
      
 13 
     | 
    
         
            +
              # I must track even the chosen items to add a code to them
         
     | 
| 
      
 14 
     | 
    
         
            +
              before_save :link_to_items
         
     | 
| 
      
 15 
     | 
    
         
            +
              before_create :increment_code
         
     | 
| 
      
 16 
     | 
    
         
            +
              # Items: I need a method to obtain all the items in the
         
     | 
| 
      
 17 
     | 
    
         
            +
              # current selected Commission
         
     | 
| 
      
 18 
     | 
    
         
            +
              def records_for_print id
         
     | 
| 
      
 19 
     | 
    
         
            +
                # TODO: move away from this pseudo code as soon as Bancolini tells me
         
     | 
| 
      
 20 
     | 
    
         
            +
                # what Mobilart wants
         
     | 
| 
      
 21 
     | 
    
         
            +
                # chosen_item.name
         
     | 
| 
      
 22 
     | 
    
         
            +
                # chosen_item.barcode
         
     | 
| 
      
 23 
     | 
    
         
            +
                # chosen_item.timetables.last.status
         
     | 
| 
      
 24 
     | 
    
         
            +
                # chosen_item.timetables.last.job_type
         
     | 
| 
      
 25 
     | 
    
         
            +
                ChosenItem.joins(:chosen_furniture).where(chosen_furnitures: {id: id}).distinct
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              def list_associated_items
         
     | 
| 
      
 29 
     | 
    
         
            +
                true
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              amoeba do
         
     | 
| 
      
 33 
     | 
    
         
            +
                enable
         
     | 
| 
      
 34 
     | 
    
         
            +
                exclude_association :chosen_items
         
     | 
| 
      
 35 
     | 
    
         
            +
                exclude_association :furniture_items
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              def deck
         
     | 
| 
      
 39 
     | 
    
         
            +
                chosen_room.chosen_deck.name rescue "-"
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              def commission
         
     | 
| 
      
 43 
     | 
    
         
            +
                chosen_room.chosen_deck.commission.code rescue "-"
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              def display_name
         
     | 
| 
      
 47 
     | 
    
         
            +
                "#{name} presente in #{[commission, deck, chosen_room.name].compact.join(" - ")} contenente #{furniture_items.count} particolari"
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              # Necessario per poter cercare nei filed associati
         
     | 
| 
      
 51 
     | 
    
         
            +
              default_scope {joins(chosen_room: [:room, {chosen_deck: [:deck, :commission ]}])}
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              rails_admin do
         
     | 
| 
      
 54 
     | 
    
         
            +
                navigation_label I18n.t(:operative_section)
         
     | 
| 
      
 55 
     | 
    
         
            +
                navigation_icon 'fa fa-cubes'
         
     | 
| 
      
 56 
     | 
    
         
            +
                parent Commission
         
     | 
| 
      
 57 
     | 
    
         
            +
                weight 7
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                edit do
         
     | 
| 
      
 60 
     | 
    
         
            +
                  field :furniture
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
                list do
         
     | 
| 
      
 63 
     | 
    
         
            +
                  field :commission do
         
     | 
| 
      
 64 
     | 
    
         
            +
                    searchable "commissions.code"
         
     | 
| 
      
 65 
     | 
    
         
            +
                    sortable "commissions.code"
         
     | 
| 
      
 66 
     | 
    
         
            +
                    read_only true
         
     | 
| 
      
 67 
     | 
    
         
            +
                    filterable true
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
                  field :deck do
         
     | 
| 
      
 70 
     | 
    
         
            +
                    searchable "decks.name"
         
     | 
| 
      
 71 
     | 
    
         
            +
                    sortable "decks.name"
         
     | 
| 
      
 72 
     | 
    
         
            +
                    read_only true
         
     | 
| 
      
 73 
     | 
    
         
            +
                    filterable true
         
     | 
| 
      
 74 
     | 
    
         
            +
                  end
         
     | 
| 
      
 75 
     | 
    
         
            +
                  field :chosen_room do
         
     | 
| 
      
 76 
     | 
    
         
            +
                    searchable "rooms.name"
         
     | 
| 
      
 77 
     | 
    
         
            +
                    sortable "rooms.name"
         
     | 
| 
      
 78 
     | 
    
         
            +
                    read_only true
         
     | 
| 
      
 79 
     | 
    
         
            +
                    filterable true
         
     | 
| 
      
 80 
     | 
    
         
            +
                  end
         
     | 
| 
      
 81 
     | 
    
         
            +
                  field :furniture do
         
     | 
| 
      
 82 
     | 
    
         
            +
                    searchable "furnitures.name"
         
     | 
| 
      
 83 
     | 
    
         
            +
                    sortable "furnitures.name"
         
     | 
| 
      
 84 
     | 
    
         
            +
                    filterable true
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                  field :furniture_items
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
              end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
              def readable_barcode
         
     | 
| 
      
 91 
     | 
    
         
            +
                "#{chosen_room.readable_barcode}|#{furniture.code}|#{code}"
         
     | 
| 
      
 92 
     | 
    
         
            +
              end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
              def barcode
         
     | 
| 
      
 95 
     | 
    
         
            +
                "#{chosen_room.barcode}#{furniture.code}#{code}"
         
     | 
| 
      
 96 
     | 
    
         
            +
              end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
              def name
         
     | 
| 
      
 99 
     | 
    
         
            +
                furniture.name rescue "-"
         
     | 
| 
      
 100 
     | 
    
         
            +
              end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
              private
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
              def link_to_items
         
     | 
| 
      
 105 
     | 
    
         
            +
                self.furniture_items = self.furniture.furniture_items
         
     | 
| 
      
 106 
     | 
    
         
            +
              end
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
              def increment_code
         
     | 
| 
      
 109 
     | 
    
         
            +
                # Cerco il numero più alto e incremento
         
     | 
| 
      
 110 
     | 
    
         
            +
                max_code = ChosenFurniture.order("chosen_furnitures.code DESC").pluck(:code).compact.map(&:to_i).max.to_i
         
     | 
| 
      
 111 
     | 
    
         
            +
                # Rails.logger.debug "MAX CODE IS:#{max_code} Adding 1: #{(max_code + 1)}"
         
     | 
| 
      
 112 
     | 
    
         
            +
                self.code = (max_code + 1)
         
     | 
| 
      
 113 
     | 
    
         
            +
              end
         
     | 
| 
      
 114 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,187 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ChosenItem < ApplicationRecord
         
     | 
| 
      
 2 
     | 
    
         
            +
              belongs_to :chosen_furniture, inverse_of: :chosen_items #, dependent: :destroy
         
     | 
| 
      
 3 
     | 
    
         
            +
              belongs_to :furniture_item, inverse_of: :chosen_items
         
     | 
| 
      
 4 
     | 
    
         
            +
              belongs_to :bundle, inverse_of: :chosen_items
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              has_many :timetables, dependent: :destroy, inverse_of: :chosen_item
         
     | 
| 
      
 7 
     | 
    
         
            +
              has_many :workflows, inverse_of: :chosen_item, dependent: :destroy
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              before_create :increment_code
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              def self.barcode_concat
         
     | 
| 
      
 12 
     | 
    
         
            +
                "concat(commissions.code,decks.code,chosen_decks.code,rooms.code,chosen_rooms.code,furnitures.code,chosen_furnitures.code,items.code,LPAD(chosen_items.code::text, 5, '0'))"
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def self.select_with_barcode
         
     | 
| 
      
 16 
     | 
    
         
            +
                select "chosen_items.*, #{ChosenItem.barcode_concat} as barcode"
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              def self.barcode_concat_where barcode
         
     | 
| 
      
 20 
     | 
    
         
            +
                where ["#{ChosenItem.barcode_concat} = ?", barcode]
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
              # All the chosen_items must have the full chain of relations up to commission,
         
     | 
| 
      
 23 
     | 
    
         
            +
              # Otherwise is invalid (and mustn't exist anyway)
         
     | 
| 
      
 24 
     | 
    
         
            +
              # this gives me the ability to simply query for fields on related tables
         
     | 
| 
      
 25 
     | 
    
         
            +
              default_scope {
         
     | 
| 
      
 26 
     | 
    
         
            +
                joins({chosen_furniture: [:furniture, { chosen_room: [:room, {chosen_deck: [:deck, :commission]}]}], furniture_item: :item}).select_with_barcode
         
     | 
| 
      
 27 
     | 
    
         
            +
              }
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              def records_for_print id
         
     | 
| 
      
 30 
     | 
    
         
            +
                # TODO: move away from this pseudo code as soon as Bancolini tells me
         
     | 
| 
      
 31 
     | 
    
         
            +
                # what Mobilart wants
         
     | 
| 
      
 32 
     | 
    
         
            +
                # chosen_item.name
         
     | 
| 
      
 33 
     | 
    
         
            +
                # chosen_item.barcode
         
     | 
| 
      
 34 
     | 
    
         
            +
                # chosen_item.timetables.last.status
         
     | 
| 
      
 35 
     | 
    
         
            +
                # chosen_item.timetables.last.job_type
         
     | 
| 
      
 36 
     | 
    
         
            +
                ChosenItem.where(chosen_items: {id: id}).distinct
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              def room
         
     | 
| 
      
 40 
     | 
    
         
            +
                chosen_furniture.chosen_room.name rescue "-"
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              def deck
         
     | 
| 
      
 44 
     | 
    
         
            +
                chosen_furniture.chosen_room.chosen_deck.name rescue "-"
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
              def commission
         
     | 
| 
      
 48 
     | 
    
         
            +
                chosen_furniture.chosen_room.chosen_deck.commission.code rescue "-"
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              def status
         
     | 
| 
      
 52 
     | 
    
         
            +
                " -overridden by pretty_value- "
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              def user
         
     | 
| 
      
 56 
     | 
    
         
            +
                workflows.last.user.email rescue "-"
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
              def furniture
         
     | 
| 
      
 60 
     | 
    
         
            +
                chosen_furniture.furniture.name rescue "-"
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
              def item
         
     | 
| 
      
 64 
     | 
    
         
            +
                furniture_item.item.name
         
     | 
| 
      
 65 
     | 
    
         
            +
              end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
              def tiered_times
         
     | 
| 
      
 68 
     | 
    
         
            +
                tt = self.timetables
         
     | 
| 
      
 69 
     | 
    
         
            +
                t = (tt.sum(:hours)*60 + tt.sum(:minutes))*60
         
     | 
| 
      
 70 
     | 
    
         
            +
                t.to_tiered_times true
         
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
              def self.filter_by_id
         
     | 
| 
      
 74 
     | 
    
         
            +
                #Rails.logger.debug "QQQQQQQQQQQQQ: #{params.inspect}"
         
     | 
| 
      
 75 
     | 
    
         
            +
              end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
              rails_admin do
         
     | 
| 
      
 78 
     | 
    
         
            +
                navigation_label I18n.t(:operative_section)
         
     | 
| 
      
 79 
     | 
    
         
            +
                parent Commission
         
     | 
| 
      
 80 
     | 
    
         
            +
                weight 8
         
     | 
| 
      
 81 
     | 
    
         
            +
                # TODO: mettere a true per i test, mettere a false in production
         
     | 
| 
      
 82 
     | 
    
         
            +
                visible false
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                export do
         
     | 
| 
      
 85 
     | 
    
         
            +
                  field :barcode
         
     | 
| 
      
 86 
     | 
    
         
            +
                  field :commission
         
     | 
| 
      
 87 
     | 
    
         
            +
                  field :deck
         
     | 
| 
      
 88 
     | 
    
         
            +
                  field :room
         
     | 
| 
      
 89 
     | 
    
         
            +
                  field :furniture
         
     | 
| 
      
 90 
     | 
    
         
            +
                  field :item
         
     | 
| 
      
 91 
     | 
    
         
            +
                  field :status
         
     | 
| 
      
 92 
     | 
    
         
            +
                  field :user
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                list do
         
     | 
| 
      
 96 
     | 
    
         
            +
                  field :barcode do
         
     | 
| 
      
 97 
     | 
    
         
            +
                    sortable false
         
     | 
| 
      
 98 
     | 
    
         
            +
                    searchable false
         
     | 
| 
      
 99 
     | 
    
         
            +
                    read_only true
         
     | 
| 
      
 100 
     | 
    
         
            +
                    filterable false
         
     | 
| 
      
 101 
     | 
    
         
            +
                  end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                  field :commission do
         
     | 
| 
      
 104 
     | 
    
         
            +
                    #column_width 12
         
     | 
| 
      
 105 
     | 
    
         
            +
                    searchable "commissions.code"
         
     | 
| 
      
 106 
     | 
    
         
            +
                    read_only true
         
     | 
| 
      
 107 
     | 
    
         
            +
                    sortable "commissions.code"
         
     | 
| 
      
 108 
     | 
    
         
            +
                    filterable true
         
     | 
| 
      
 109 
     | 
    
         
            +
                  end
         
     | 
| 
      
 110 
     | 
    
         
            +
                  field :deck do
         
     | 
| 
      
 111 
     | 
    
         
            +
                    #column_width 12
         
     | 
| 
      
 112 
     | 
    
         
            +
                    searchable "decks.name"
         
     | 
| 
      
 113 
     | 
    
         
            +
                    sortable "decks.name"
         
     | 
| 
      
 114 
     | 
    
         
            +
                    read_only true
         
     | 
| 
      
 115 
     | 
    
         
            +
                    filterable true
         
     | 
| 
      
 116 
     | 
    
         
            +
                  end
         
     | 
| 
      
 117 
     | 
    
         
            +
                  field :room do
         
     | 
| 
      
 118 
     | 
    
         
            +
                    searchable "rooms.name"
         
     | 
| 
      
 119 
     | 
    
         
            +
                    sortable "rooms.name"
         
     | 
| 
      
 120 
     | 
    
         
            +
                    read_only true
         
     | 
| 
      
 121 
     | 
    
         
            +
                    filterable true
         
     | 
| 
      
 122 
     | 
    
         
            +
                  end
         
     | 
| 
      
 123 
     | 
    
         
            +
                  field :chosen_furniture do
         
     | 
| 
      
 124 
     | 
    
         
            +
                    searchable "furnitures.name"
         
     | 
| 
      
 125 
     | 
    
         
            +
                    sortable "furnitures.name"
         
     | 
| 
      
 126 
     | 
    
         
            +
                    read_only true
         
     | 
| 
      
 127 
     | 
    
         
            +
                    filterable true
         
     | 
| 
      
 128 
     | 
    
         
            +
                  end
         
     | 
| 
      
 129 
     | 
    
         
            +
                  field :furniture_item do
         
     | 
| 
      
 130 
     | 
    
         
            +
                    searchable "items.name"
         
     | 
| 
      
 131 
     | 
    
         
            +
                    sortable "items.name"
         
     | 
| 
      
 132 
     | 
    
         
            +
                    read_only true
         
     | 
| 
      
 133 
     | 
    
         
            +
                    filterable true
         
     | 
| 
      
 134 
     | 
    
         
            +
                  end
         
     | 
| 
      
 135 
     | 
    
         
            +
                  field :status do
         
     | 
| 
      
 136 
     | 
    
         
            +
                    pretty_value do
         
     | 
| 
      
 137 
     | 
    
         
            +
                      obj = bindings[:object]
         
     | 
| 
      
 138 
     | 
    
         
            +
                      wf = obj.workflows.last
         
     | 
| 
      
 139 
     | 
    
         
            +
                      status = []
         
     | 
| 
      
 140 
     | 
    
         
            +
                      status << (wf.stat rescue nil)
         
     | 
| 
      
 141 
     | 
    
         
            +
                      status << (wf.third_party.username rescue nil)
         
     | 
| 
      
 142 
     | 
    
         
            +
                      user = (wf.user.username rescue nil)
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
                      html = []
         
     | 
| 
      
 145 
     | 
    
         
            +
                      html << "<small><strong>#{obj.tiered_times}</strong></small>" unless obj.tiered_times.blank?
         
     | 
| 
      
 146 
     | 
    
         
            +
                      html << "<small>#{status.compact.join("/")}</small>" unless status.compact.blank?
         
     | 
| 
      
 147 
     | 
    
         
            +
                      html << "<small>#{user}</small>" unless user.blank?
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
                      html.join("<br/>").html_safe
         
     | 
| 
      
 150 
     | 
    
         
            +
                    end
         
     | 
| 
      
 151 
     | 
    
         
            +
                  end
         
     | 
| 
      
 152 
     | 
    
         
            +
                  # field :user do
         
     | 
| 
      
 153 
     | 
    
         
            +
                  #   column_width 8
         
     | 
| 
      
 154 
     | 
    
         
            +
                  # end
         
     | 
| 
      
 155 
     | 
    
         
            +
                  # field :times
         
     | 
| 
      
 156 
     | 
    
         
            +
                end
         
     | 
| 
      
 157 
     | 
    
         
            +
              end
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
              def readable_barcode
         
     | 
| 
      
 160 
     | 
    
         
            +
                "#{chosen_furniture.readable_barcode}|#{furniture_item.item.code}|#{code.rjust(5, '0')}"
         
     | 
| 
      
 161 
     | 
    
         
            +
              end
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
              # def barcode
         
     | 
| 
      
 164 
     | 
    
         
            +
              #   "#{chosen_furniture.barcode}#{furniture_item.item.code}#{code.rjust(5, '0')}"
         
     | 
| 
      
 165 
     | 
    
         
            +
              # end
         
     | 
| 
      
 166 
     | 
    
         
            +
              #
         
     | 
| 
      
 167 
     | 
    
         
            +
              # def barcode=(value)
         
     | 
| 
      
 168 
     | 
    
         
            +
              # end
         
     | 
| 
      
 169 
     | 
    
         
            +
             
     | 
| 
      
 170 
     | 
    
         
            +
              def title
         
     | 
| 
      
 171 
     | 
    
         
            +
                # "#{furniture_item.item.name rescue nil} (#{readable_barcode rescue nil})"
         
     | 
| 
      
 172 
     | 
    
         
            +
                furniture_item.item.name rescue "Undefined"
         
     | 
| 
      
 173 
     | 
    
         
            +
              end
         
     | 
| 
      
 174 
     | 
    
         
            +
             
     | 
| 
      
 175 
     | 
    
         
            +
              def name
         
     | 
| 
      
 176 
     | 
    
         
            +
                "#{chosen_furniture.chosen_room.chosen_deck.commission.name rescue nil}: #{chosen_furniture.name rescue nil} -> #{title}"
         
     | 
| 
      
 177 
     | 
    
         
            +
              end
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
              private
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
      
 181 
     | 
    
         
            +
              def increment_code
         
     | 
| 
      
 182 
     | 
    
         
            +
                next_code = (ChosenItem.order("chosen_items.code DESC").pluck(:code).compact.map(&:to_i).max.to_i + 1).to_s
         
     | 
| 
      
 183 
     | 
    
         
            +
                # Rails.logger.debug "MAX CODE IS:#{max_code} Adding 1: #{(max_code + 1)}"
         
     | 
| 
      
 184 
     | 
    
         
            +
                # self.barcode = "#{chosen_furniture.barcode}#{furniture_item.item.code}#{next_code.rjust(5, '0')}"
         
     | 
| 
      
 185 
     | 
    
         
            +
                self.code = next_code
         
     | 
| 
      
 186 
     | 
    
         
            +
              end
         
     | 
| 
      
 187 
     | 
    
         
            +
            end
         
     |