mirror of
https://github.com/internetee/registry.git
synced 2025-08-05 09:21:43 +02:00
Troubleshoot invoice not paid in billing system
This commit is contained in:
parent
e86dae7eea
commit
91c471049a
5 changed files with 196 additions and 172 deletions
|
@ -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
|
||||
|
|
|
@ -33,10 +33,10 @@ class BankTransaction < ApplicationRecord
|
|||
return unless autobindable?
|
||||
|
||||
channel = manual ? 'admin_payment' : 'system_payment'
|
||||
create_internal_payment_record(channel: channel, invoice: invoice, registrar: registrar)
|
||||
create_internal_payment_record(invoice: invoice, registrar: registrar, channel: channel)
|
||||
end
|
||||
|
||||
def create_internal_payment_record(channel: nil, invoice:, registrar:)
|
||||
def create_internal_payment_record(invoice:, registrar:, channel: nil)
|
||||
if channel.nil?
|
||||
create_activity(invoice.buyer, invoice)
|
||||
return
|
||||
|
@ -46,10 +46,17 @@ class BankTransaction < ApplicationRecord
|
|||
payment_order.save!
|
||||
|
||||
if create_activity(registrar, invoice)
|
||||
status = 'paid'
|
||||
payment_order.paid!
|
||||
else
|
||||
payment_order.update(notes: 'Failed to create activity', status: 'failed')
|
||||
status = 'failed'
|
||||
payment_order.update(notes: 'Failed to create activity', status: status)
|
||||
end
|
||||
|
||||
return unless Feature.billing_system_integrated?
|
||||
|
||||
EisBilling::SendInvoiceStatus.send_info(invoice_number: invoice.number,
|
||||
status: status)
|
||||
end
|
||||
|
||||
def bind_invoice(invoice_no, manual: false)
|
||||
|
@ -62,8 +69,8 @@ class BankTransaction < ApplicationRecord
|
|||
validate_invoice_data(invoice)
|
||||
return if errors.any?
|
||||
|
||||
create_internal_payment_record(channel: (manual ? 'admin_payment' : nil), invoice: invoice,
|
||||
registrar: invoice.buyer)
|
||||
create_internal_payment_record(invoice: invoice, registrar: invoice.buyer,
|
||||
channel: (manual ? 'admin_payment' : nil))
|
||||
end
|
||||
|
||||
def validate_invoice_data(invoice)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue