Sha256: eaca2803be0dfa057e88f49e564eb5581ff11c45ab05e819b24721576c020e15

Contents?: true

Size: 1.02 KB

Versions: 4

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module SolidusBacktracs
  module Api
    class ScheduleShipmentSyncsJob < ApplicationJob
      queue_as :default

      def perform
        shipments = query_shipments

        shipments.find_in_batches(batch_size: SolidusBacktracs.config.api_batch_size) do |batch|
          SyncShipmentsJob.perform_later(batch.to_a)
        end
      rescue StandardError => e
        SolidusBacktracs.config.error_handler.call(e, {})
      end

      def shippable_skus
        SolidusBacktracs.config.shippable_skus.present? ? SolidusBacktracs.config.shippable_skus : Spree::Variant.pluck(:sku)
      end

      def query_shipments
        shipments = SolidusBacktracs::Shipment::PendingApiSyncQuery.apply(
          ::Spree::Shipment
            .joins(inventory_units: [:variant])
            .where("spree_variants.sku" => SolidusBacktracs.config.shippable_skus)
            .where("spree_shipments.state" => :ready)
            .where(backtracs_synced_at: nil)
            .distinct
        )
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
solidus_backtracs-2.2.6 app/jobs/solidus_backtracs/api/schedule_shipment_syncs_job.rb
solidus_backtracs-2.2.5 app/jobs/solidus_backtracs/api/schedule_shipment_syncs_job.rb
solidus_backtracs-2.2.4 app/jobs/solidus_backtracs/api/schedule_shipment_syncs_job.rb
solidus_backtracs-2.2.3 app/jobs/solidus_backtracs/api/schedule_shipment_syncs_job.rb