mirror of
https://github.com/internetee/registry.git
synced 2025-07-20 01:36:02 +02:00
Add idempotent Que job for e-invoice sending
This commit is contained in:
parent
07653fa710
commit
2663c550fa
3 changed files with 47 additions and 1 deletions
|
@ -0,0 +1,39 @@
|
|||
class SendEInvoiceJob < Que::Job
|
||||
|
||||
def run(invoice)
|
||||
return if invoice.e_invoice_sent_at
|
||||
|
||||
e_invoice = invoice.to_e_invoice
|
||||
e_invoice.deliver
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
invoice.update(e_invoice_sent_at: Time.zone.now)
|
||||
log_success(invoice)
|
||||
destroy
|
||||
end
|
||||
|
||||
rescue Savon::Error => e
|
||||
log_error(invoice: invoice, error: e)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def log_success(invoice)
|
||||
message = "E-Invoice for an invoice with ID # #{invoice.id} was sent successfully"
|
||||
logger.info message
|
||||
end
|
||||
|
||||
def log_error(invoice:, error:)
|
||||
message = <<~TEXT.squish
|
||||
There was an error sending e-invoice for invoice with ID # #{invoice.id}.
|
||||
The error message was the following: #{error}.
|
||||
This job will retry
|
||||
TEXT
|
||||
logger.error message
|
||||
end
|
||||
|
||||
def logger
|
||||
Rails.logger
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class AddEInvoiceSentAtToInvoice < ActiveRecord::Migration[5.0]
|
||||
def change
|
||||
add_column :invoices, :e_invoice_sent_at, :datetime
|
||||
end
|
||||
end
|
|
@ -886,6 +886,7 @@ CREATE TABLE public.invoices (
|
|||
in_directo boolean DEFAULT false,
|
||||
buyer_vat_no character varying,
|
||||
issue_date date NOT NULL,
|
||||
e_invoice_sent_at timestamp without time zone,
|
||||
CONSTRAINT invoices_due_date_is_not_before_issue_date CHECK ((due_date >= issue_date))
|
||||
);
|
||||
|
||||
|
@ -4339,6 +4340,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
|||
('20191212133136'),
|
||||
('20191227110904'),
|
||||
('20200113091254'),
|
||||
('20200115102202');
|
||||
('20200115102202'),
|
||||
('20200204103125');
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue