Troubleshoot invoice not paid in billing system

This commit is contained in:
Sergei Tsõganov 2022-08-11 10:34:34 +03:00
parent e86dae7eea
commit 91c471049a
5 changed files with 196 additions and 172 deletions

View file

@ -1,8 +1,16 @@
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)
process_transactions(incoming_transaction, bank_statement)
end
render status: :ok, json: { message: 'RECEIVED', params: params }
@ -10,19 +18,13 @@ module EisBilling
private
def process_transactions(incoming_transaction)
def process_transactions(incoming_transaction, bank_statement)
logger.info 'Got incoming transactions'
logger.info incoming_transaction
bank_statement = BankStatement.new(bank_code: Setting.registry_bank_code,
iban: Setting.registry_iban)
bank_statement_transaction(bank_statement: bank_statement, incoming_transaction: incoming_transaction)
end
def bank_statement_transaction(bank_statement:, incoming_transaction:)
ActiveRecord::Base.transaction do
bank_statement.save!
transaction = create_transaction(incoming_transaction: incoming_transaction, bank_statement: bank_statement)
transaction = bank_statement.bank_transactions
.create!(transaction_attributes(incoming_transaction))
next if transaction.registrar.blank?
@ -35,14 +37,14 @@ module EisBilling
transaction.autobind_invoice
end
def create_transaction(incoming_transaction:, bank_statement:)
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'] }
bank_statement.bank_transactions.create!(transaction_attributes)
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