Sha256: 2f2798d25ba993771a1992580b5aba4186e3ed6cda78e764bab4df5a5d6afa74

Contents?: true

Size: 1.01 KB

Versions: 7

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

module SolidusSubscriptions
  class ProcessSubscriptionJob < ApplicationJob
    queue_as { SolidusSubscriptions.configuration.processing_queue }

    def perform(subscription)
      ActiveRecord::Base.transaction do
        if SolidusSubscriptions.configuration.clear_past_installments
          subscription.installments.unfulfilled.actionable.each do |installment|
            installment.update!(actionable_date: nil)
          end
        end

        if subscription.actionable?
          subscription.successive_skip_count = 0
          subscription.advance_actionable_date

          subscription.installments.create!(actionable_date: Time.zone.now)
        end

        subscription.cancel! if subscription.pending_cancellation?
        subscription.deactivate! if subscription.can_be_deactivated?

        subscription.installments.actionable.find_each do |installment|
          SolidusSubscriptions::ProcessInstallmentJob.perform_later(installment)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
solidus_subscriptions-2.0.2 app/jobs/solidus_subscriptions/process_subscription_job.rb
solidus_subscriptions-2.0.1 app/jobs/solidus_subscriptions/process_subscription_job.rb
solidus_subscriptions-2.0.0 app/jobs/solidus_subscriptions/process_subscription_job.rb
solidus_subscriptions-1.1.0 app/jobs/solidus_subscriptions/process_subscription_job.rb
solidus_subscriptions-1.0.1 app/jobs/solidus_subscriptions/process_subscription_job.rb
solidus_subscriptions-1.0.0 app/jobs/solidus_subscriptions/process_subscription_job.rb
solidus_subscriptions-1.0.0.rc1 app/jobs/solidus_subscriptions/process_subscription_job.rb