mirror of
https://github.com/internetee/registry.git
synced 2025-07-28 13:36:15 +02:00
Merge pull request #2485 from internetee/add-overwrite-option-to-monthlies
Added overwrite feature to SendMonthlyInvoicesJob
This commit is contained in:
commit
e7ff090648
2 changed files with 17 additions and 5 deletions
|
@ -2,8 +2,9 @@ class SendMonthlyInvoicesJob < ApplicationJob # rubocop:disable Metrics/ClassLen
|
||||||
queue_as :default
|
queue_as :default
|
||||||
discard_on StandardError
|
discard_on StandardError
|
||||||
|
|
||||||
def perform(dry: false, months_ago: 1)
|
def perform(dry: false, months_ago: 1, overwrite: false)
|
||||||
@dry = dry
|
@dry = dry
|
||||||
|
@overwrite = overwrite
|
||||||
@month = Time.zone.now - months_ago.month
|
@month = Time.zone.now - months_ago.month
|
||||||
@directo_data = []
|
@directo_data = []
|
||||||
|
|
||||||
|
@ -48,7 +49,7 @@ class SendMonthlyInvoicesJob < ApplicationJob # rubocop:disable Metrics/ClassLen
|
||||||
|
|
||||||
def find_or_init_monthly_invoices(invoices: [])
|
def find_or_init_monthly_invoices(invoices: [])
|
||||||
Registrar.with_cash_accounts.find_each do |registrar|
|
Registrar.with_cash_accounts.find_each do |registrar|
|
||||||
invoice = registrar.find_or_init_monthly_invoice(month: @month)
|
invoice = registrar.find_or_init_monthly_invoice(month: @month, overwrite: @overwrite)
|
||||||
invoices << invoice unless invoice.nil?
|
invoices << invoice unless invoice.nil?
|
||||||
end
|
end
|
||||||
invoices
|
invoices
|
||||||
|
|
|
@ -38,14 +38,25 @@ module Registrar::BookKeeping # rubocop:disable Metrics/ModuleLength
|
||||||
lines.as_json
|
lines.as_json
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_or_init_monthly_invoice(month:)
|
def find_or_init_monthly_invoice(month:, overwrite:)
|
||||||
invoice = invoices.find_by(monthly_invoice: true, issue_date: month.end_of_month.to_date)
|
invoice = invoices.find_by(monthly_invoice: true, issue_date: month.end_of_month.to_date)
|
||||||
return invoice if invoice
|
return invoice if invoice && !overwrite
|
||||||
|
|
||||||
summary = monthly_summary(month: month)
|
summary = monthly_summary(month: month)
|
||||||
return unless summary
|
return unless summary
|
||||||
|
|
||||||
init_monthly_invoice(summary)
|
new_invoice = init_monthly_invoice(summary)
|
||||||
|
return overwrite_invoice(invoice, new_invoice) if invoice && overwrite
|
||||||
|
|
||||||
|
new_invoice
|
||||||
|
end
|
||||||
|
|
||||||
|
def overwrite_invoice(original_invoice, new_invoice)
|
||||||
|
params_to_scrub = %i[created_at updated_at id number sent_at
|
||||||
|
e_invoice_sent_at in_directo cancelled_at payment_link]
|
||||||
|
attrs = new_invoice.attributes.with_indifferent_access.except(*params_to_scrub)
|
||||||
|
original_invoice.update(attrs)
|
||||||
|
original_invoice
|
||||||
end
|
end
|
||||||
|
|
||||||
def title_for_summary(date)
|
def title_for_summary(date)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue