Class: Worker

Inherits:
Product show all
Includes:
Attachable
Defined in:
app/models/worker.rb

Overview

Informations

License

Ekylibre - Simple agricultural ERP Copyright (C) 2008-2009 Brice Texier, Thibaud Merigon Copyright (C) 2010-2012 Brice Texier Copyright (C) 2012-2019 Brice Texier, David Joulin

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see www.gnu.org/licenses.

Table: products

activity_production_id       :integer
address_id                   :integer
birth_date_completeness      :string
birth_farm_number            :string
born_at                      :datetime
category_id                  :integer          not null
codes                        :jsonb
country                      :string
created_at                   :datetime         not null
creator_id                   :integer
custom_fields                :jsonb
dead_at                      :datetime
default_storage_id           :integer
derivative_of                :string
description                  :text
end_of_life_reason           :string
father_country               :string
father_identification_number :string
father_variety               :string
filiation_status             :string
first_calving_on             :datetime
fixed_asset_id               :integer
id                           :integer          not null, primary key
identification_number        :string
initial_born_at              :datetime
initial_container_id         :integer
initial_dead_at              :datetime
initial_enjoyer_id           :integer
initial_father_id            :integer
initial_geolocation          :geometry({:srid=>4326, :type=>"st_point"})
initial_mother_id            :integer
initial_movement_id          :integer
initial_owner_id             :integer
initial_population           :decimal(19, 4)   default(0.0)
initial_shape                :geometry({:srid=>4326, :type=>"multi_polygon"})
lock_version                 :integer          default(0), not null
member_variant_id            :integer
mother_country               :string
mother_identification_number :string
mother_variety               :string
name                         :string           not null
nature_id                    :integer          not null
number                       :string           not null
origin_country               :string
origin_identification_number :string
originator_id                :integer
parent_id                    :integer
person_id                    :integer
picture_content_type         :string
picture_file_name            :string
picture_file_size            :integer
picture_updated_at           :datetime
reading_cache                :jsonb            default("{}")
team_id                      :integer
tracking_id                  :integer
type                         :string
updated_at                   :datetime         not null
updater_id                   :integer
uuid                         :uuid
variant_id                   :integer          not null
variety                      :string           not null
work_number                  :string

Constant Summary

Constants included from Indicateable

Indicateable::DEPRECATED

Instance Method Summary collapse

Methods inherited from Product

#activity, #activity_id, #add_content_products, #age, #available?, #best_activity_production, #born_at_in_interventions, #build_new_phase, #calculate_net_surface_area, #choose_default_name, #containeds, #container_at, #contains, #contents_name, #dead?, #dead_at_in_interventions, #dead_first_at, #default_catalog_item, #deliverable?, #evaluated_price, #get, #groups_at, #initial_reading, #initial_shape_area, #initializeable?, #localized_variants, #matching_model, miscibility_of, #move!, #nature_name, #net_surface_area, #owner, #part_with, #part_with!, #picture_path, #population, #price, #production, #read_store_attribute, #set_default_values, #set_initial_values, #shape=, #stock_info, #unroll_name, #update_default_values, #variables, #work_name

Methods included from Customizable

#custom_value, #set_custom_value, #validate_custom_fields

Methods included from Versionable

#add_creation_version, #add_destruction_version, #add_update_version, #last_version, #notably_changed?, #version_object

Methods included from Indicateable

#add_and_read, #add_to_readings, #compute_and_read, #copy_readings_of!, #density, #first_reading, #get, #get!, #mark!, #operate_on_readings, #read!, #read_whole_indicators_from!, #reading, #substract_and_read, #substract_to_readings

Methods inherited from Ekylibre::Record::Base

#already_updated?, #check_if_destroyable?, #check_if_updateable?, columns_definition, #customizable?, customizable?, #customized?, #destroyable?, #editable?, has_picture, #human_attribute_name, nomenclature_reflections, #old_record, #others, refers_to, #unsuppress, #updateable?

Methods included from Userstamp::Stampable

included

Methods included from Userstamp::Stamper

included

Instance Method Details

#participation(intervention) ⇒ Object


103
104
105
# File 'app/models/worker.rb', line 103

def participation(intervention)
  InterventionParticipation.find_by(product: self, intervention: intervention)
end

#working_duration(_options = {}) ⇒ Object


107
108
109
110
# File 'app/models/worker.rb', line 107

def working_duration(_options = {})
  InterventionWorkingPeriod.with_intervention_parameter(:doer, self)
                           .sum(:duration).in_second
end