Class: SPS::DirectDebitTransaction

Inherits:
Transaction show all
Defined in:
lib/sps_king/transaction/direct_debit_transaction.rb

Constant Summary collapse

SERVICE_LEVELS =
%w(CHDD CHTA)
LOCAL_INSTRUMENTS_FOR_SERVICE_LEVELS =
{
  'CHDD' => %w(DDCOR1 DDB2B),
  'CHTA' => %w(LSV+ BDD)
}

Constants inherited from Transaction

Transaction::DEFAULT_REQUESTED_DATE

Instance Attribute Summary collapse

Attributes inherited from Transaction

#amount, #batch_booking, #bic, #creditor_address, #currency, #iban, #instruction, #name, #reference, #remittance_information, #requested_date, #structured_remittance_information

Instance Method Summary collapse

Methods included from Converter

#convert

Constructor Details

#initialize(attributes = {}) ⇒ DirectDebitTransaction

Returns a new instance of DirectDebitTransaction.



31
32
33
34
35
# File 'lib/sps_king/transaction/direct_debit_transaction.rb', line 31

def initialize(attributes = {})
  super
  self.service_level    ||= 'CHTA'
  self.local_instrument ||= 'LSV+'
end

Instance Attribute Details

#creditor_accountObject

Returns the value of attribute creditor_account.



11
12
13
# File 'lib/sps_king/transaction/direct_debit_transaction.rb', line 11

def 
  @creditor_account
end

#debtor_addressObject

Returns the value of attribute debtor_address.



11
12
13
# File 'lib/sps_king/transaction/direct_debit_transaction.rb', line 11

def debtor_address
  @debtor_address
end

#local_instrumentObject

Returns the value of attribute local_instrument.



11
12
13
# File 'lib/sps_king/transaction/direct_debit_transaction.rb', line 11

def local_instrument
  @local_instrument
end

#service_levelObject

Returns the value of attribute service_level.



11
12
13
# File 'lib/sps_king/transaction/direct_debit_transaction.rb', line 11

def service_level
  @service_level
end

Instance Method Details

#schema_compatible?(schema_name) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
40
41
42
43
# File 'lib/sps_king/transaction/direct_debit_transaction.rb', line 37

def schema_compatible?(schema_name)
  case schema_name
  when PAIN_008_001_02_CH_03
    self.structured_remittance_information.present? &&
    self.structured_remittance_information.valid?
  end
end

#validate_local_instrumentObject



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/sps_king/transaction/direct_debit_transaction.rb', line 45

def validate_local_instrument
  if SERVICE_LEVELS.include?(self.service_level)
    allowed_local_instruments = LOCAL_INSTRUMENTS_FOR_SERVICE_LEVELS[self.service_level]

    if !allowed_local_instruments.include?(self.local_instrument)
      errors.add(
        :local_instrument,
        "is not correct. Must be one of #{allowed_local_instruments.join(', ')}"
      )
    end
  end
end