mirror of
https://github.com/internetee/registry.git
synced 2025-07-27 21:16:12 +02:00
54 lines
1.8 KiB
Ruby
54 lines
1.8 KiB
Ruby
module EisBilling
|
|
class LhvConnectTransactionsController < EisBilling::BaseController
|
|
def create
|
|
if params['_json'].nil? || params['_json'].empty?
|
|
render json: { message: 'MISSING PARAMS' }, status: :unprocessable_entity
|
|
return
|
|
end
|
|
|
|
bank_statement = BankStatement.create(bank_code: Setting.registry_bank_code,
|
|
iban: Setting.registry_iban)
|
|
|
|
params['_json'].each do |incoming_transaction|
|
|
process_transactions(incoming_transaction, bank_statement)
|
|
end
|
|
|
|
render status: :ok, json: { message: 'RECEIVED', params: params }
|
|
end
|
|
|
|
private
|
|
|
|
def process_transactions(incoming_transaction, bank_statement)
|
|
logger.info 'Got incoming transactions'
|
|
logger.info incoming_transaction
|
|
|
|
ActiveRecord::Base.transaction do
|
|
transaction = bank_statement.bank_transactions
|
|
.create!(transaction_attributes(incoming_transaction))
|
|
|
|
next if transaction.registrar.blank?
|
|
|
|
create_invoice_if_missing(transaction) unless transaction.non_canceled?
|
|
end
|
|
end
|
|
|
|
def create_invoice_if_missing(transaction)
|
|
Invoice.create_from_transaction!(transaction) unless transaction.autobindable?
|
|
invoice = transaction.autobind_invoice
|
|
return unless invoice.paid?
|
|
|
|
EisBilling::SendInvoiceStatus.send_info(invoice_number: invoice.number,
|
|
status: 'paid')
|
|
end
|
|
|
|
def transaction_attributes(incoming_transaction)
|
|
{
|
|
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'],
|
|
}
|
|
end
|
|
end
|
|
end
|