Class: ActivityBudgetItem

Inherits:
Ekylibre::Record::Base show all
Defined in:
app/models/activity_budget_item.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: activity_budget_items

activity_budget_id :integer          not null
amount             :decimal(19, 4)   default(0.0)
computation_method :string           not null
created_at         :datetime         not null
creator_id         :integer
currency           :string           not null
direction          :string           not null
id                 :integer          not null, primary key
lock_version       :integer          default(0), not null
quantity           :decimal(19, 4)   default(0.0)
unit_amount        :decimal(19, 4)   default(0.0)
unit_currency      :string           not null
unit_population    :decimal(19, 4)
updated_at         :datetime         not null
updater_id         :integer
variant_id         :integer
variant_indicator  :string
variant_unit       :string

Instance Method Summary collapse

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?

Instance Method Details

#coefficientObject

Computes the coefficient to use for amount computation


91
92
93
94
95
96
97
98
99
# File 'app/models/activity_budget_item.rb', line 91

def coefficient
  return 0 unless activity_budget
  if per_production?
    return activity_budget.productions_count || 0
  elsif per_working_unit?
    return activity_budget.productions_size || 0
  end
  1
end

#duplicate!(updates = {}) ⇒ Object

Duplicate an item in the same budget by default. Each attribute are overwritable.


103
104
105
106
107
108
109
110
111
112
113
# File 'app/models/activity_budget_item.rb', line 103

def duplicate!(updates = {})
  new_attributes = [
    :activity_budget, :amount, :computation_method, :currency, :direction,
    :quantity, :unit_amount, :unit_currency, :unit_population, :variant,
    :variant_indicator, :variant_unit
  ].each_with_object({}) do |attr, h|
    h[attr] = send(attr)
    h
  end.merge(updates)
  self.class.create!(new_attributes)
end