From 36d629fe2b47b4dd933c95730ee110942b97197c Mon Sep 17 00:00:00 2001 From: olegphenomenon Date: Fri, 13 Jan 2023 12:02:26 +0200 Subject: [PATCH] fixed status handlers --- .../eis_billing/invoices_controller.rb | 40 ++++++++++++++----- app/models/concerns/invoice/cancellable.rb | 2 - test/integration/eis_billing/invoices_test.rb | 7 ++-- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/app/controllers/eis_billing/invoices_controller.rb b/app/controllers/eis_billing/invoices_controller.rb index 859ed6018..d7150f8a1 100644 --- a/app/controllers/eis_billing/invoices_controller.rb +++ b/app/controllers/eis_billing/invoices_controller.rb @@ -3,21 +3,26 @@ module EisBilling TYPE = 'PaymentOrders::EveryPay'.freeze PAID = 'paid'.freeze CANCELLED = 'cancelled'.freeze - ISSUED = 'issued'.freeze + ISSUED = 'unpaid'.freeze FAILED = 'failed'.freeze before_action :load_invoice, only: :update def update - if @invoice.update(modified_params) - payment_orders_handler + p '==========' + p params + p '==========' + + if @invoice.update(modified_params) && payment_orders_handler render json: { message: 'Invoice data was successfully updated', }, status: :ok else render json: { - error: @message.errors.full_messages, + error: { + message: @invoice.errors.full_messages + } }, status: :unprocessable_entity end end @@ -25,16 +30,33 @@ module EisBilling private def payment_orders_handler + p '-----' + p @invoice.cancelled? + p status.issued? + p status + p '------' + if @invoice.payment_orders.present? - return if (@invoice.paid? && status.paid?) || (@invoice.unpaid? && status.issued?) + if @invoice.cancelled? && status.paid? || @invoice.cancelled? && status.issued? + @invoice.errors.add(:base, 'Unable to change status of record') + + return false + end + + if @invoice.paid? && (status.failed? || status.cancelled?) + @invoice.errors.add(:base, 'Unable to change status of record') + + return false + end + + return true if (@invoice.paid? && status.paid?) || (@invoice.unpaid? && status.issued?) || (@invoice.cancelled? && status.cancelled?) if status.issued? @invoice.cancel_manualy elsif status.paid? @invoice.autobind_manually else - # TODO - # CANCELLED + @invoice.cancel end else return unless status.paid? @@ -44,7 +66,7 @@ module EisBilling end def status - status = case params[:invoice][:status] + status = case params[:status][:status] when 'paid' 'paid' when 'cancelled' @@ -52,7 +74,7 @@ module EisBilling when 'failed' 'failed' else - 'issued' + 'unpaid' end Struct.new(:paid?, :cancelled?, :issued?, :failed?) diff --git a/app/models/concerns/invoice/cancellable.rb b/app/models/concerns/invoice/cancellable.rb index 139f1e334..29c09f47c 100644 --- a/app/models/concerns/invoice/cancellable.rb +++ b/app/models/concerns/invoice/cancellable.rb @@ -33,8 +33,6 @@ module Invoice::Cancellable end def cancel_manualy - return unless cancellable? - account_activity = AccountActivity.find_by(invoice_id: id) account_activity_dup = account_activity.dup account_activity_dup.sum = -account_activity.sum.to_i diff --git a/test/integration/eis_billing/invoices_test.rb b/test/integration/eis_billing/invoices_test.rb index 734b93b45..55ea9e99a 100644 --- a/test/integration/eis_billing/invoices_test.rb +++ b/test/integration/eis_billing/invoices_test.rb @@ -256,7 +256,7 @@ class EInvoiceResponseTest < ApplicationIntegrationTest assert_equal invoice.payment_orders.count, 1 assert invoice.payment_orders.first.paid? assert invoice.account_activity - + assert invoice.paid? assert_equal account.balance.to_f, 200.0 decrease_balance_params = { @@ -265,7 +265,7 @@ class EInvoiceResponseTest < ApplicationIntegrationTest initiator: 'registry', payment_reference: '93b29d54ae08f7728e72ee3fe0e88855cd1d266912039d7d23fa2b54b7e1b349', transaction_amount: 120.0, - status: 'cancelled', + status: 'unpaid', in_directo: false, everypay_response: { 'some' => 'some' @@ -278,6 +278,7 @@ class EInvoiceResponseTest < ApplicationIntegrationTest invoice.reload invoice.payment_orders.each(&:reload) account.reload + assert invoice.unpaid? assert_equal account.balance.to_f, 100.0 end @@ -303,6 +304,4 @@ class EInvoiceResponseTest < ApplicationIntegrationTest assert_equal registry_response[:message], 'Invoice with nonexisted-invoice number not found' end - - test 'it should ignore if you trying to set failed status to canceled' end