From adecf64cf303485dc75f29bc806b1f1828e2f88c Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Mon, 7 Aug 2023 14:55:50 +0100 Subject: [PATCH] update bulk invoice job to check if the invoices feature is enabled for the current user --- app/jobs/bulk_invoice_job.rb | 13 +++++++++++-- app/reflexes/admin/orders_reflex.rb | 3 ++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/jobs/bulk_invoice_job.rb b/app/jobs/bulk_invoice_job.rb index b7f0012018..ae2351497c 100644 --- a/app/jobs/bulk_invoice_job.rb +++ b/app/jobs/bulk_invoice_job.rb @@ -3,10 +3,13 @@ class BulkInvoiceJob < ApplicationJob include CableReady::Broadcaster delegate :render, to: ActionController::Base + attr_reader :options def perform(order_ids, filepath, options = {}) + @options = options orders = sorted_orders(order_ids) - orders.filter!(&:invoiceable?) if OpenFoodNetwork::FeatureToggle.enabled?(:invoices) + orders.filter!(&:invoiceable?) if OpenFoodNetwork::FeatureToggle.enabled?(:invoices, + current_user) orders.each(&method(:generate_invoice)) ensure_directory_exists filepath @@ -29,7 +32,7 @@ class BulkInvoiceJob < ApplicationJob end def generate_invoice(order) - renderer_data = if OpenFoodNetwork::FeatureToggle.enabled?(:invoices) + renderer_data = if OpenFoodNetwork::FeatureToggle.enabled?(:invoices, current_user) OrderInvoiceGenerator.new(order).generate_or_update_latest_invoice order.invoices.first.presenter else @@ -58,4 +61,10 @@ class BulkInvoiceJob < ApplicationJob def pdf @pdf ||= CombinePDF.new end + + def current_user + return unless options[:current_user_id] + + @current_user ||= Spree::User.find(options[:current_user_id]) + end end diff --git a/app/reflexes/admin/orders_reflex.rb b/app/reflexes/admin/orders_reflex.rb index 0a9640147d..6e9d9b5871 100644 --- a/app/reflexes/admin/orders_reflex.rb +++ b/app/reflexes/admin/orders_reflex.rb @@ -37,7 +37,8 @@ module Admin BulkInvoiceJob.perform_later( params[:bulk_ids], "tmp/invoices/#{Time.zone.now.to_i}-#{SecureRandom.hex(2)}.pdf", - channel: SessionChannel.for_request(request) + channel: SessionChannel.for_request(request), + current_user_id: current_user.id ) morph :nothing