mirror of
https://github.com/internetee/registry.git
synced 2025-06-07 05:05:45 +02:00
79 lines
2.7 KiB
Ruby
79 lines
2.7 KiB
Ruby
namespace :invoices do
|
|
task process_payments: :environment do
|
|
registry_bank_account_iban = Setting.registry_iban
|
|
|
|
keystore = OpenSSL::PKCS12.new(File.read(ENV['lhv_p12_keystore']), ENV['lhv_keystore_password'])
|
|
key = keystore.key
|
|
cert = keystore.certificate
|
|
|
|
api = Lhv::ConnectApi.new
|
|
api.cert = cert
|
|
api.key = key
|
|
api.ca_file = ENV['lhv_ca_file']
|
|
api.dev_mode = ENV['lhv_dev_mode'] == 'true'
|
|
|
|
incoming_transactions = []
|
|
|
|
api.credit_debit_notification_messages.each do |message|
|
|
next unless message.bank_account_iban == registry_bank_account_iban
|
|
|
|
message.credit_transactions.each do |credit_transaction|
|
|
incoming_transactions << credit_transaction
|
|
end
|
|
end
|
|
|
|
process_transactions(incoming_transactions)
|
|
|
|
puts "Transactions processed: #{incoming_transactions.size}"
|
|
end
|
|
|
|
task test_payments: :environment do
|
|
registrar = Invoice.last.buyer
|
|
transactions = [OpenStruct.new(amount: 0.1,
|
|
currency: 'EUR',
|
|
date: Time.zone.today,
|
|
payment_reference_number: registrar.reference_no,
|
|
payment_description: "description #{registrar.reference_no}")]
|
|
process_transactions(transactions)
|
|
puts 'Last registrar invoice is'
|
|
pp registrar.invoices.last
|
|
puts "Last invoice paid at #{registrar.invoices.last.receipt_date}"
|
|
end
|
|
|
|
def log(msg)
|
|
@log ||= Logger.new($stdout)
|
|
@log.info(msg)
|
|
end
|
|
|
|
def process_transactions(incoming_transactions)
|
|
if incoming_transactions.any?
|
|
log 'Got incoming transactions'
|
|
log incoming_transactions
|
|
|
|
bank_statement = BankStatement.new(bank_code: Setting.registry_bank_code,
|
|
iban: Setting.registry_iban)
|
|
|
|
ActiveRecord::Base.transaction do
|
|
bank_statement.save!
|
|
|
|
incoming_transactions.each do |incoming_transaction|
|
|
transaction_attributes = { sum: incoming_transaction.amount,
|
|
currency: incoming_transaction.currency,
|
|
paid_at: incoming_transaction.date,
|
|
reference_no: incoming_transaction.payment_reference_number,
|
|
description: incoming_transaction.payment_description }
|
|
transaction = bank_statement.bank_transactions.create!(transaction_attributes)
|
|
|
|
next if transaction.registrar.blank?
|
|
|
|
unless transaction.non_canceled?
|
|
Invoice.create_from_transaction!(transaction) unless transaction.autobindable?
|
|
transaction.autobind_invoice
|
|
end
|
|
end
|
|
end
|
|
else
|
|
log 'Got no incoming transactions parsed, aborting'
|
|
end
|
|
end
|
|
end
|