diff --git a/app/controllers/eis_billing/payment_status_controller.rb b/app/controllers/eis_billing/payment_status_controller.rb index 8f203871b..9147ecf76 100644 --- a/app/controllers/eis_billing/payment_status_controller.rb +++ b/app/controllers/eis_billing/payment_status_controller.rb @@ -1,68 +1,63 @@ -# 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 +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 4e6986bd9..34f6c17ae 100644 --- a/app/controllers/registrar/invoices_controller.rb +++ b/app/controllers/registrar/invoices_controller.rb @@ -6,12 +6,6 @@ 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? @@ -19,9 +13,7 @@ class Registrar end end - def show - EisBilling::SetInvoiceStatus.ping_status(@invoice) - end + def show; end def cancel @invoice.cancel diff --git a/app/models/invoice.rb b/app/models/invoice.rb index c0c88bea8..0a6b7073d 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_response_from_billing + def get_status_from_billing response = EisBilling::GetInvoiceStatus.send_invoice(invoice_number: number) - JSON.parse(response.body, symbolize_names: true) + JSON.parse(response.body, symbolize_names: true)[:status] end def set_invoice_number diff --git a/app/presenters/registrar/invoice_status_presenter.rb b/app/presenters/registrar/invoice_status_presenter.rb new file mode 100644 index 000000000..86e8e7c07 --- /dev/null +++ b/app/presenters/registrar/invoice_status_presenter.rb @@ -0,0 +1,18 @@ +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 deleted file mode 100644 index 426a1954d..000000000 --- a/app/services/eis_billing/set_invoice_status.rb +++ /dev/null @@ -1,53 +0,0 @@ -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 new file mode 100644 index 000000000..693715b2d --- /dev/null +++ b/app/views/eis_billing/directo_response/update.html.erb @@ -0,0 +1,2 @@ +
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 new file mode 100644 index 000000000..32fb7d171 --- /dev/null +++ b/app/views/eis_billing/e_invoice_response/update.html.erb @@ -0,0 +1,2 @@ +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 c5e6193a4..e53a63f5d 100644 --- a/app/views/registrar/invoices/partials/_details.haml +++ b/app/views/registrar/invoices/partials/_details.haml @@ -34,3 +34,7 @@ %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