Class: SaleOpportunity

Inherits:
Affair show all
Includes:
Commentable, Versionable
Defined in:
app/models/sale_opportunity.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: affairs

accounted_at           :datetime
cash_session_id        :integer
closed                 :boolean          default(FALSE), not null
closed_at              :datetime
created_at             :datetime         not null
creator_id             :integer
credit                 :decimal(19, 4)   default(0.0), not null
currency               :string           not null
dead_line_at           :datetime
deals_count            :integer          default(0), not null
debit                  :decimal(19, 4)   default(0.0), not null
description            :text
id                     :integer          not null, primary key
journal_entry_id       :integer
lock_version           :integer          default(0), not null
name                   :string
number                 :string           not null
origin                 :string
pretax_amount          :decimal(19, 4)   default(0.0)
probability_percentage :decimal(19, 4)   default(0.0)
responsible_id         :integer
state                  :string
third_id               :integer          not null
third_role             :string           not null
type                   :string
updated_at             :datetime         not null
updater_id             :integer

Instance Method Summary collapse

Methods included from Versionable

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

Methods inherited from Affair

affairable_types, #attach, #balance, #balanced?, clean_deads, #currency_precision, #deal_work_name, #deals_of, #deals_of_type, #detach, #finish, generate_deals_method, journal, #losing?, #originator, #refresh!, #tax_items_for, #thirds, #thirds_distribution, #work_name

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

#age(at = Time.zone.now) ⇒ Object

Returns age in seconds of the sale opportunities


152
153
154
155
# File 'app/models/sale_opportunity.rb', line 152

def age(at = Time.zone.now)
  return nil if created_at.nil?
  (at - created_at)
end

#state_labelObject

Prints human name of current state


141
142
143
# File 'app/models/sale_opportunity.rb', line 141

def state_label
  self.class.state_machine.state(self.state.to_sym).human_name
end

#statusObject


130
131
132
133
134
135
136
137
138
# File 'app/models/sale_opportunity.rb', line 130

def status
  if lost?
    return :stop
  elsif won?
    return :go
  else
    return :caution
  end
end

#timeleft(at = Time.zone.now) ⇒ Object

Returns timeleft in seconds of the sale opportunities


146
147
148
149
# File 'app/models/sale_opportunity.rb', line 146

def timeleft(at = Time.zone.now)
  return nil if dead_line_at.nil? || dead_line_at <= at
  (dead_line_at - at)
end