mirror of
https://github.com/internetee/registry.git
synced 2025-07-28 13:36:15 +02:00
43 lines
1.2 KiB
Ruby
43 lines
1.2 KiB
Ruby
class SendEInvoiceJob < ApplicationJob
|
|
discard_on HTTPClient::TimeoutError
|
|
|
|
def perform(invoice_id, payable: true)
|
|
logger.info "Started to process e-invoice for invoice_id #{invoice_id}"
|
|
invoice = Invoice.find(invoice_id)
|
|
return unless need_to_process_invoice?(invoice: invoice, payable: payable)
|
|
|
|
send_invoice_to_eis_billing(invoice: invoice, payable: payable)
|
|
rescue StandardError => e
|
|
log_error(invoice: invoice, error: e)
|
|
raise e
|
|
end
|
|
|
|
private
|
|
|
|
def need_to_process_invoice?(invoice:, payable:)
|
|
logger.info "Checking if need to process e-invoice #{invoice}, payable: #{payable}"
|
|
return false if invoice.blank?
|
|
return false if invoice.do_not_send_e_invoice? && payable
|
|
|
|
true
|
|
end
|
|
|
|
def send_invoice_to_eis_billing(invoice:, payable:)
|
|
result = EisBilling::SendEInvoice.send_request(invoice: invoice, payable: payable)
|
|
logger.info result.body
|
|
end
|
|
|
|
def log_error(invoice:, error:)
|
|
id = invoice.try(:id) || invoice
|
|
message = <<~TEXT.squish
|
|
There was an error sending e-invoice for invoice with ID # #{id}.
|
|
The error message was the following: #{error}
|
|
This job will retry.
|
|
TEXT
|
|
logger.error message
|
|
end
|
|
|
|
def logger
|
|
Rails.logger
|
|
end
|
|
end
|