added encryptor and service object status invoice request

This commit is contained in:
olegphenomenon 2022-03-24 12:45:29 +02:00
parent 28dcf047ef
commit ee1408e49f
5 changed files with 53 additions and 10 deletions

View file

@ -40,6 +40,11 @@ class Invoice < ApplicationRecord
attribute :vat_rate, ::Type::VatRate.new attribute :vat_rate, ::Type::VatRate.new
def get_status_from_billing
response = EisBilling::GetInvoiceStatus.send_invoice(invoice_number: number)
JSON.parse(response.body, symbolize_names: true)[:status]
end
def set_invoice_number def set_invoice_number
if Feature.billing_system_integrated? if Feature.billing_system_integrated?
result = EisBilling::GetInvoiceNumber.send_invoice result = EisBilling::GetInvoiceNumber.send_invoice

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

@ -0,0 +1,18 @@
module EisBilling
class GetInvoiceStatus < EisBilling::Base
def self.send_invoice(invoice_number:)
send_request(invoice_number: invoice_number)
end
private
def self.send_request(invoice_number:)
http = EisBilling::Base.base_request(url: invoice_number_generator_url)
http.get(invoice_number_generator_url + "/#{invoice_number}", EisBilling::Base.headers)
end
def self.invoice_number_generator_url
"#{BASE_URL}/api/v1/invoice_generator/invoice_status"
end
end
end

View file

@ -34,3 +34,7 @@
%dt= Invoice.human_attribute_name :reference_no %dt= Invoice.human_attribute_name :reference_no
%dd= @invoice.reference_no %dd= @invoice.reference_no
- invoice_presenter = Registrar::InvoiceStatusPresenter.new(invoice: @invoice)
%dt Billing system
%dd= invoice_presenter.display

View file

@ -1,10 +1,5 @@
TOKEN = ENV['eis_token'] BASE_URL = ENV['eis_billing_system_base_url']
BASE_URL = "" INITIATOR = 'registry'.freeze
if Rails.env.staging?
BASE_URL = ENV['eis_billing_system_base_url_staging']
else
BASE_URL = ENV['eis_billing_system_base_url_dev']
end
namespace :eis_billing do namespace :eis_billing do
desc 'One time task to export invoice data to billing system' desc 'One time task to export invoice data to billing system'
@ -56,17 +51,20 @@ def base_request(url:, json_obj:)
end end
def generate_token def generate_token
JWT.encode(payload, ENV['secret_word']) JWT.encode(payload, billing_secret)
end end
def payload def payload
{ data: ENV['secret_access_word'] } { initiator: INITIATOR }
end end
def headers def headers
{ {
'Authorization' => "Bearer #{generate_token}", 'Authorization' => "Bearer #{generate_token}",
'Content-Type' => 'application/json', 'Content-Type' => 'application/json',
} }
end end
def self.billing_secret
Rails.application.credentials.config[:billing_secret]
end