diff --git a/app/controllers/eis_billing/payment_status_controller.rb b/app/controllers/eis_billing/payment_status_controller.rb index 9147ecf76..8f203871b 100644 --- a/app/controllers/eis_billing/payment_status_controller.rb +++ b/app/controllers/eis_billing/payment_status_controller.rb @@ -1,63 +1,68 @@ -module EisBilling - class PaymentStatusController < EisBilling::BaseController - TYPE = 'PaymentOrders::EveryPay'.freeze +# TEMPORARY COMMENT OUT, IF EVERYTHING WILL BE WORK AS EXPECTED, THEN NEED TO REMOVE THIS CODR +# DON'T FORGET TO REMOVE HELPERS, ROUTES AND ETC ALSO +# +# +# +# module EisBilling +# class PaymentStatusController < EisBilling::BaseController +# TYPE = 'PaymentOrders::EveryPay'.freeze - def update - invoice_number = params[:order_reference] - paid_at = params[:transaction_time] - sum = params[:standing_amount] - everypay_response = params +# def update +# invoice_number = params[:order_reference] +# paid_at = params[:transaction_time] +# sum = params[:standing_amount] +# everypay_response = params - payment_status = define_payment_status(params[:payment_state]) +# payment_status = define_payment_status(params[:payment_state]) - invoice = Invoice.find_by(number: invoice_number) +# invoice = Invoice.find_by(number: invoice_number) - bank = create_bank_transfer(invoice: invoice, sum: sum, paid_at: paid_at) - create_payment_order(invoice: invoice, everypay_response: everypay_response, payment_status: payment_status) +# bank = create_bank_transfer(invoice: invoice, sum: sum, paid_at: paid_at) +# create_payment_order(invoice: invoice, everypay_response: everypay_response, payment_status: payment_status) - registrar = invoice.buyer - bank.create_activity(registrar, invoice) +# registrar = invoice.buyer +# bank.create_activity(registrar, invoice) - render status: 200, json: { status: :ok } - end +# render status: 200, json: { status: :ok } +# end - private +# private - def define_payment_status(status) - return :paid if PaymentOrders::EveryPay::SUCCESSFUL_PAYMENT.include? status +# def define_payment_status(status) +# return :paid if PaymentOrders::EveryPay::SUCCESSFUL_PAYMENT.include? status - :failed - end +# :failed +# end - def create_payment_order(invoice:, everypay_response:, payment_status:) - payment = PaymentOrder.new - payment.type = TYPE - payment.invoice = invoice - payment.response = everypay_response - payment.status = payment_status - payment.save +# def create_payment_order(invoice:, everypay_response:, payment_status:) +# payment = PaymentOrder.new +# payment.type = TYPE +# payment.invoice = invoice +# payment.response = everypay_response +# payment.status = payment_status +# payment.save - logger.info '++++ PAYMENT ORDER ERRORS ? ++++' - logger.info payment.errors +# logger.info '++++ PAYMENT ORDER ERRORS ? ++++' +# logger.info payment.errors - payment - end +# payment +# end - def create_bank_transfer(invoice:, sum:, paid_at:) - bank = BankTransaction.new - bank.description = invoice.order - bank.reference_no = invoice.reference_no - bank.currency = invoice.currency - bank.iban = invoice.seller_iban - bank.sum = sum - bank.paid_at = paid_at - bank.buyer_name = invoice.buyer_name - bank.save +# def create_bank_transfer(invoice:, sum:, paid_at:) +# bank = BankTransaction.new +# bank.description = invoice.order +# bank.reference_no = invoice.reference_no +# bank.currency = invoice.currency +# bank.iban = invoice.seller_iban +# bank.sum = sum +# bank.paid_at = paid_at +# bank.buyer_name = invoice.buyer_name +# bank.save - logger.info '++++ BANK TRANSACTION ERRORS ? ++++' - logger.info bank.errors +# logger.info '++++ BANK TRANSACTION ERRORS ? ++++' +# logger.info bank.errors - bank - end - end -end +# bank +# end +# end +# end diff --git a/app/controllers/registrar/invoices_controller.rb b/app/controllers/registrar/invoices_controller.rb index 34f6c17ae..4e6986bd9 100644 --- a/app/controllers/registrar/invoices_controller.rb +++ b/app/controllers/registrar/invoices_controller.rb @@ -6,6 +6,12 @@ class Registrar params[:q] ||= {} invoices = current_registrar_user.registrar.invoices.includes(:items, :account_activity) + invoices.each do |invoice| + next if invoice.paid? || invoice.cancelled? + + EisBilling::SetInvoiceStatus.ping_status(invoice) + end + normalize_search_parameters do @q = invoices.ransack(params[:q]) @q.sorts = 'id desc' if @q.sorts.empty? @@ -13,7 +19,9 @@ class Registrar end end - def show; end + def show + EisBilling::SetInvoiceStatus.ping_status(@invoice) + end def cancel @invoice.cancel diff --git a/app/models/invoice.rb b/app/models/invoice.rb index 0a6b7073d..c0c88bea8 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -40,9 +40,9 @@ class Invoice < ApplicationRecord attribute :vat_rate, ::Type::VatRate.new - def get_status_from_billing + def get_response_from_billing response = EisBilling::GetInvoiceStatus.send_invoice(invoice_number: number) - JSON.parse(response.body, symbolize_names: true)[:status] + JSON.parse(response.body, symbolize_names: true) end def set_invoice_number diff --git a/app/presenters/registrar/invoice_status_presenter.rb b/app/presenters/registrar/invoice_status_presenter.rb deleted file mode 100644 index 86e8e7c07..000000000 --- a/app/presenters/registrar/invoice_status_presenter.rb +++ /dev/null @@ -1,18 +0,0 @@ -class Registrar::InvoiceStatusPresenter - include ActionView::Helpers::TagHelper - - attr_reader :invoice - - def initialize(invoice:) - @invoice = invoice - end - - def display - case invoice.get_status_from_billing - when 'unpaid' - content_tag(:span, 'Unpaid', style: 'color: red;') - when 'paid' - content_tag(:span, 'Unpaid', style: 'color: red;') - end - end -end \ No newline at end of file diff --git a/app/services/eis_billing/set_invoice_status.rb b/app/services/eis_billing/set_invoice_status.rb new file mode 100644 index 000000000..426a1954d --- /dev/null +++ b/app/services/eis_billing/set_invoice_status.rb @@ -0,0 +1,53 @@ +module EisBilling + class SetInvoiceStatus + TYPE = 'PaymentOrders::EveryPay'.freeze + + def self.ping_status(invoice) + response = invoice.get_response_from_billing + change_status_to_pay(response: response, invoice: invoice) if response[:status] == 'paid' + end + + def self.change_status_to_pay(response:, invoice:) + return if response[:everypay_response].nil? + + everypay_response = response[:everypay_response] + bank = create_bank_transfer(invoice: invoice, sum: everypay_response['standing_amount'], + paid_at: response[:transaction_time]) + create_payment_order(invoice: invoice, everypay_response: everypay_response, payment_status: response[:status]) + + registrar = invoice.buyer + bank.create_activity(registrar, invoice) + end + + def self.create_payment_order(invoice:, everypay_response:, payment_status:) + payment = PaymentOrder.new + payment.type = TYPE + payment.invoice = invoice + payment.response = everypay_response + payment.status = payment_status + payment.save + + Rails.logger.info '++++ PAYMENT ORDER ERRORS ? ++++' + Rails.logger.info payment.errors + + payment + end + + def self.create_bank_transfer(invoice:, sum:, paid_at:) + bank = BankTransaction.new + bank.description = invoice.order + bank.reference_no = invoice.reference_no + bank.currency = invoice.currency + bank.iban = invoice.seller_iban + bank.sum = sum + bank.paid_at = paid_at + bank.buyer_name = invoice.buyer_name + bank.save + + Rails.logger.info '++++ BANK TRANSACTION ERRORS ? ++++' + Rails.logger.info bank.errors + + bank + end + end +end diff --git a/app/views/eis_billing/directo_response/update.html.erb b/app/views/eis_billing/directo_response/update.html.erb deleted file mode 100644 index 693715b2d..000000000 --- a/app/views/eis_billing/directo_response/update.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -
Find me in app/views/eis_billing/directo_response/update.html.erb
diff --git a/app/views/eis_billing/e_invoice_response/update.html.erb b/app/views/eis_billing/e_invoice_response/update.html.erb deleted file mode 100644 index 32fb7d171..000000000 --- a/app/views/eis_billing/e_invoice_response/update.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -Find me in app/views/eis_billing/e_invoice_response/update.html.erb
diff --git a/app/views/registrar/invoices/partials/_details.haml b/app/views/registrar/invoices/partials/_details.haml index e53a63f5d..c5e6193a4 100644 --- a/app/views/registrar/invoices/partials/_details.haml +++ b/app/views/registrar/invoices/partials/_details.haml @@ -34,7 +34,3 @@ %dt= Invoice.human_attribute_name :reference_no %dd= @invoice.reference_no - - - invoice_presenter = Registrar::InvoiceStatusPresenter.new(invoice: @invoice) - %dt Billing system - %dd= invoice_presenter.display \ No newline at end of file