Class: SaleOpportunity

Inherits:
SaleAffair 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-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: 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
letter                 :string
lock_version           :integer          default(0), not null
name                   :string
number                 :string
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
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 SaleAffair

#attach, #gap_class, #third_role

Methods inherited from Affair

#absorb!, affairable_types, #attach, #balance, #balanced?, clean_deads, #currency_precision, deal_class, #deal_work_name, #deals_of, #deals_of_type, #debt_transferable?, #detach, #extract!, #finish, #finishable?, #gap_class, generate_deals_method, journal, #journal_entry_items_already_lettered?, #journal_entry_items_balanced?, #journal_entry_items_unbalanced?, #letter_journal_entries, #letter_journal_entries!, #letterable?, #letterable_journal_entry_items, #lettered?, #losing?, #match_with_accountancy?, #multi_thirds?, #number, #originator, #refresh!, #reload_gaps, #third_account, #third_credit_balance, #third_role, #thirds, #unbalanced?, #unletterable?, #work_name

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

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

Returns age in seconds of the sale opportunities


148
149
150
151
# File 'app/models/sale_opportunity.rb', line 148

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

#state_labelObject

Prints human name of current state


137
138
139
# File 'app/models/sale_opportunity.rb', line 137

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

#statusObject


126
127
128
129
130
131
132
133
134
# File 'app/models/sale_opportunity.rb', line 126

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

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

Returns timeleft in seconds of the sale opportunities


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

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