Class: TargetDistribution

Inherits:
Ekylibre::Record::Base show all
Includes:
TimeLineable
Defined in:
app/models/target_distribution.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-2016 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: target_distributions

activity_id            :integer          not null
activity_production_id :integer          not null
created_at             :datetime         not null
creator_id             :integer
id                     :integer          not null, primary key
lock_version           :integer          default(0), not null
started_at             :datetime
stopped_at             :datetime
target_id              :integer          not null
updated_at             :datetime         not null
updater_id             :integer

Class Method Summary collapse

Instance Method Summary collapse

Methods included from TimeLineable

#any_followings?, #any_previous?, #following, #followings, #last_for_now?, #previous

Methods inherited from Ekylibre::Record::Base

#already_updated?, attr_readonly_with_conditions, #check_if_destroyable?, #check_if_updateable?, columns_definition, complex_scopes, customizable?, #customizable?, #customized?, #destroyable?, #editable?, has_picture, #human_attribute_name, human_attribute_name_with_id, nomenclature_reflections, #old_record, #others, refers_to, scope_with_registration, simple_scopes, #updateable?

Class Method Details

.distributed?Boolean


97
98
99
# File 'app/models/target_distribution.rb', line 97

def distributed?
  !InterventionTarget.where.not(product_id: TargetDistribution.select(:target_id)).select(:product_id).distinct.any?
end

Instance Method Details

#siblingsObject


64
65
66
# File 'app/models/target_distribution.rb', line 64

def siblings
  target.distributions
end

#started_onObject


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'app/models/target_distribution.rb', line 68

def started_on
  return started_at.to_date unless started_at.nil? || started_at == Time.new(1, 1, 1, 0, 0, 0, '+00:00')
  on = begin
    Date.civil(stopped_at.year, stopped_at.month, stopped_at.day)
  rescue
    begin
      Date.civil(stopped_at.year, stopped_at.month, stopped_at.day) - 1
    rescue
      Date.today
    end
  end

  on -= 1.year
  on.to_date.beginning_of_month
end

#stopped_onObject


84
85
86
87
88
89
90
91
92
93
94
# File 'app/models/target_distribution.rb', line 84

def stopped_on
  return stopped_at.to_date unless stopped_at.nil?
  on = begin
    Date.civil(started_on.year, started_on.month, started_on.day)
  rescue
    Date.civil(started_on.year, started_on.month, started_on.day) - 1
  end

  on += 1.year
  on.to_date.end_of_month
end