Class: IncomingPaymentMode

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

active                  :boolean          default(FALSE)
cash_id                 :integer
commission_account_id   :integer
commission_base_amount  :decimal(19, 4)   default(0.0), not null
commission_percentage   :decimal(19, 4)   default(0.0), not null
created_at              :datetime         not null
creator_id              :integer
depositables_account_id :integer
depositables_journal_id :integer
detail_payments         :boolean          default(FALSE), not null
id                      :integer          not null, primary key
lock_version            :integer          default(0), not null
name                    :string           not null
position                :integer
updated_at              :datetime         not null
updater_id              :integer
with_accounting         :boolean          default(FALSE), not null
with_commission         :boolean          default(FALSE), not null
with_deposit            :boolean          default(FALSE), not null

Class Method Summary collapse

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?

Class Method Details

.load_defaultsObject


104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'app/models/incoming_payment_mode.rb', line 104

def self.load_defaults
  %w(cash check transfer).each do |nature|
    cash_nature = (nature == 'cash') ? :cash_box : :bank_account
    cash = Cash.find_by(nature: cash_nature)
    next unless cash
    attributes = {
      name: IncomingPaymentMode.tc("default.#{nature}.name"),
      with_accounting: true,
      cash: cash,
      with_deposit: (nature == 'check' ? true : false)
    }
    journal = Journal.find_by(nature: 'bank')
    if attributes[:with_deposit] && journal
      attributes[:depositables_journal] = journal
      attributes[:depositables_account] = Account.find_or_import_from_nomenclature(:pending_deposit_payments)
    else
      attributes[:with_deposit] = false
    end
    create!(attributes)
  end
end

Instance Method Details

#commission_amount(amount) ⇒ Object


94
95
96
# File 'app/models/incoming_payment_mode.rb', line 94

def commission_amount(amount)
  (amount * self.commission_percentage * 0.01 + self.commission_base_amount).round(2)
end

#reflectObject


98
99
100
101
102
# File 'app/models/incoming_payment_mode.rb', line 98

def reflect
  unlocked_payments.find_each do |payment|
    payment.update_attributes(commission_account_id: nil, commission_amount: nil)
  end
end