# 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) service = AccountingExportService.new( data['columns'], encoding: data['encoding'], format: export.extension, separator: export.key ) 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']) service.export(data['start_date'], data['end_date'], export.file) NotificationCenter.call type: :notify_admin_export_complete, receiver: export.user, attached_object: export end end