diff --git a/app/controllers/eis_billing/invoices_controller.rb b/app/controllers/eis_billing/invoices_controller.rb index 0b4ce1281..58d1d72e0 100644 --- a/app/controllers/eis_billing/invoices_controller.rb +++ b/app/controllers/eis_billing/invoices_controller.rb @@ -1,6 +1,10 @@ module EisBilling class InvoicesController < BaseController TYPE = 'PaymentOrders::EveryPay'.freeze + PAID = 'paid'.freeze + CANCELLED = 'cancelled'.freeze + ISSUED = 'issued'.freeze + FAILED = 'failed'.freeze before_action :load_invoice, only: :update @@ -9,11 +13,11 @@ module EisBilling payment_orders_handler render json: { - message: 'Invoice data was successfully updated' + message: 'Invoice data was successfully updated', }, status: :ok else render json: { - error: @message.errors.full_messages + error: @message.errors.full_messages, }, status: :unprocessable_entity end end @@ -22,49 +26,51 @@ module EisBilling def payment_orders_handler if @invoice.payment_orders.present? - return if (@invoice.paid? && status == 'paid') || (@invoice.cancelled? && status == 'cancelled') + return if (@invoice.paid? && status.paid?) || (@invoice.cancelled? && status.cancelled?) - if status == 'cancelled' || status == 'failed' + if status.cancelled? || status.failed? @invoice.cancel_manualy - elsif status == 'paid' + elsif status.paid? @invoice.autobind_manually end else - return unless status == 'paid' + return unless status.paid? @invoice.autobind_manually end end def status - case params[:invoice][:status] - when 'paid' - 'paid' - when 'cancelled' - 'cancelled' - when 'failed' - 'failed' - else - 'issued' - end + status = case params[:invoice][:status] + when 'paid' + 'paid' + when 'cancelled' + 'cancelled' + when 'failed' + 'failed' + else + 'issued' + end + + Struct.new(:paid?, :cancelled?, :issued?, :failed?) + .new(status == PAID, status == CANCELLED, status == ISSUED, status == FAILED) end def load_invoice @invoice = Invoice.find_by(number: params[:invoice][:invoice_number]) + return if @invoice.present? - if @invoice.nil? - render json: { - error: { - message: "Invoice with #{params[:invoice][:invoice_number]} number not found" - } - }, status: :not_found and return - end + render json: { + error: { + message: "Invoice with #{params[:invoice][:invoice_number]} number not found", + } + }, status: :not_found and return end def modified_params { in_directo: params[:invoice][:in_directo], - e_invoice_sent_at: params[:invoice][:sent_at_omniva] + e_invoice_sent_at: params[:invoice][:sent_at_omniva], } end end diff --git a/test/integration/eis_billing/invoices_test.rb b/test/integration/eis_billing/invoices_test.rb index 2edbc533d..592af6d02 100644 --- a/test/integration/eis_billing/invoices_test.rb +++ b/test/integration/eis_billing/invoices_test.rb @@ -26,7 +26,7 @@ class EInvoiceResponseTest < ApplicationIntegrationTest @invoice.update(total: 120.0) @invoice.reload - incoming_params = { + incoming_params = { invoice: { invoice_number: @invoice.number, initiator: 'registry',