diff --git a/app/controllers/admin/invoices_controller.rb b/app/controllers/admin/invoices_controller.rb index d91ab6c52..caf1e3a95 100644 --- a/app/controllers/admin/invoices_controller.rb +++ b/app/controllers/admin/invoices_controller.rb @@ -49,6 +49,8 @@ module Admin def cancel @invoice.cancel + EisBilling::SendInvoiceStatus.send_info(invoice_number: @invoice.number, status: 'cancelled') + redirect_to [:admin, @invoice], notice: t('.cancelled') end diff --git a/app/controllers/registrar/invoices_controller.rb b/app/controllers/registrar/invoices_controller.rb index 34f6c17ae..2a17b72b0 100644 --- a/app/controllers/registrar/invoices_controller.rb +++ b/app/controllers/registrar/invoices_controller.rb @@ -17,6 +17,8 @@ class Registrar def cancel @invoice.cancel + EisBilling::SendInvoiceStatus.send_info(invoice_number: @invoice.number, status: 'cancelled') + redirect_to [:registrar, @invoice], notice: t('.cancelled') end diff --git a/app/services/eis_billing/send_invoice_status.rb b/app/services/eis_billing/send_invoice_status.rb new file mode 100644 index 000000000..61007675e --- /dev/null +++ b/app/services/eis_billing/send_invoice_status.rb @@ -0,0 +1,21 @@ +module EisBilling + class SendInvoiceStatus < EisBilling::Base + def self.send_info(invoice_number:, status:) + send_request(invoice_number: invoice_number, status: status) + end + + def self.send_request(invoice_number:, status:) + json_obj = { + invoice_number: invoice_number, + status: status, + } + + http = EisBilling::Base.base_request(url: invoice_status_url) + http.post(invoice_status_url, json_obj.to_json, EisBilling::Base.headers) + end + + def self.invoice_status_url + "#{BASE_URL}/api/v1/invoice_generator/invoice_status" + end + end +end diff --git a/lib/tasks/eis_billing_import_data.rake b/lib/tasks/eis_billing_import_data.rake index 189f11bbd..98901702d 100644 --- a/lib/tasks/eis_billing_import_data.rake +++ b/lib/tasks/eis_billing_import_data.rake @@ -3,13 +3,27 @@ INITIATOR = 'registry'.freeze namespace :eis_billing do desc 'One time task to export invoice data to billing system' - task import_invoices: :environment do + task export_invoices: :environment do parsed_data = [] + status = 'unpaid' + Invoice.all.each do |invoice| + if invoice.cancelled? + status = 'cancelled' + else + status = invoice.paid? ? 'paid' : 'unpaid' + end + + transaction_time = invoice.receipt_date if invoice.paid? + parsed_data << { invoice_number: invoice.number, initiator: 'registry', transaction_amount: invoice.total, + status: status, + in_directo: invoice.in_directo, + e_invoice_sent_at: invoice.e_invoice_sent_at, + transaction_time: transaction_time } end @@ -17,7 +31,7 @@ namespace :eis_billing do end desc 'One time task to export reference number of registrars to billing system' - task import_references: :environment do + task export_references: :environment do parsed_data = [] Registrar.all.each do |registrar| parsed_data << {