2019-07-30 11:43:51 +02:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# Asynchronously export the accounting data (Invoices & Avoirs) to an external accounting software
|
|
|
|
class AccountingExportWorker
|
|
|
|
include Sidekiq::Worker
|
|
|
|
|
|
|
|
def perform(export_id)
|
|
|
|
export = Export.find(export_id)
|
|
|
|
|
|
|
|
raise SecurityError, 'Not allowed to export' unless export.user.admin?
|
|
|
|
|
|
|
|
data = JSON.parse(export.query)
|
2021-12-29 17:00:49 +01:00
|
|
|
service = export.export_type == 'vat' ? VatExportService : AccountingExportService
|
|
|
|
service = service.new(
|
2019-09-16 16:31:16 +02:00
|
|
|
data['columns'],
|
2019-09-17 12:35:34 +02:00
|
|
|
encoding: data['encoding'], format: export.extension, separator: export.key
|
2019-09-16 16:31:16 +02:00
|
|
|
)
|
2019-09-17 12:35:34 +02:00
|
|
|
service.set_options(date_format: data['date_format'], decimal_separator: data['decimal_separator'],
|
|
|
|
label_max_length: data['label_max_length'], export_zeros: data['export_invoices_at_zero'])
|
2019-07-30 11:43:51 +02:00
|
|
|
|
2019-07-30 16:06:35 +02:00
|
|
|
service.export(data['start_date'], data['end_date'], export.file)
|
2019-07-30 11:43:51 +02:00
|
|
|
|
|
|
|
NotificationCenter.call type: :notify_admin_export_complete,
|
|
|
|
receiver: export.user,
|
|
|
|
attached_object: export
|
|
|
|
end
|
|
|
|
end
|