Class: IncomingPayment

Inherits:
Ekylibre::Record::Base show all
Includes:
Attachable, Customizable, Letterable, PeriodicCalculable
Defined in:
app/models/incoming_payment.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: incoming_payments

accounted_at          :datetime
affair_id             :integer
amount                :decimal(19, 4)   not null
bank_account_number   :string
bank_check_number     :string
bank_name             :string
codes                 :jsonb
commission_account_id :integer
commission_amount     :decimal(19, 4)   default(0.0), not null
created_at            :datetime         not null
creator_id            :integer
currency              :string           not null
custom_fields         :jsonb
deposit_id            :integer
downpayment           :boolean          default(TRUE), not null
id                    :integer          not null, primary key
journal_entry_id      :integer
lock_version          :integer          default(0), not null
mode_id               :integer          not null
number                :string
paid_at               :datetime
payer_id              :integer
receipt               :text
received              :boolean          default(TRUE), not null
responsible_id        :integer
scheduled             :boolean          default(FALSE), not null
to_bank_at            :datetime         not null
updated_at            :datetime         not null
updater_id            :integer

Constant Summary

Constants included from PeriodicCalculable

PeriodicCalculable::PARAMETERS

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Customizable

#custom_value, #set_custom_value, #validate_custom_fields

Methods included from Letterable

#letter_with

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

Class Method Details

.sign_of_amountObject


164
165
166
# File 'app/models/incoming_payment.rb', line 164

def self.sign_of_amount
  1
end

.third_attributeObject


160
161
162
# File 'app/models/incoming_payment.rb', line 160

def self.third_attribute
  :payer
end

Instance Method Details

#deposited?Boolean Also known as: deposit?

Returns true if payment is already deposited

Returns:

  • (Boolean)

181
182
183
# File 'app/models/incoming_payment.rb', line 181

def deposited?
  !!deposit
end

#labelObject

Build and return a label for the payment


192
193
194
# File 'app/models/incoming_payment.rb', line 192

def label
  tc(:label, amount: amount.l(currency: mode.cash.currency), date: self.to_bank_at.l, mode: mode.name, payer: payer.full_name, number: number)
end

#pointed_by_bank_statement?Boolean

Returns:

  • (Boolean)

176
177
178
# File 'app/models/incoming_payment.rb', line 176

def pointed_by_bank_statement?
  journal_entry && journal_entry.items.where('LENGTH(TRIM(bank_statement_letter)) > 0').any?
end

#relative_amountObject


168
169
170
# File 'app/models/incoming_payment.rb', line 168

def relative_amount
  self.class.sign_of_amount * amount
end

#thirdObject


172
173
174
# File 'app/models/incoming_payment.rb', line 172

def third
  send(third_attribute)
end

#with_commission?Boolean

Returns if a commission is taken

Returns:

  • (Boolean)

187
188
189
# File 'app/models/incoming_payment.rb', line 187

def with_commission?
  mode && mode.with_commission?
end