eis_billing-request-to-generate-invoice-28-03-2022

This commit is contained in:
olegphenomenon 2022-03-28 14:57:41 +03:00
parent 223f53161b
commit c54c89baf7
8 changed files with 77 additions and 117 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
<h1>EisBilling::DirectoResponse#update</h1>
<p>Find me in app/views/eis_billing/directo_response/update.html.erb</p>

View file

@ -0,0 +1,2 @@
<h1>EisBilling::EInvoiceResponse#update</h1>
<p>Find me in app/views/eis_billing/e_invoice_response/update.html.erb</p>

View file

@ -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