Sha256: 1ab8a7dd2eef00f2abda12787252faae194680558429c2d56f8bafc030b8ba24

Contents?: true

Size: 1.29 KB

Versions: 25

Compression:

Stored size: 1.29 KB

Contents

namespace :effective_qb_sync do
  desc 'Overwrite all quickbooks item names with current acts_as_purchasable object qb_item_name'
  task overwrite_qb_item_names: :environment do
    puts 'WARNING: this task will overwrite all quickbooks item names with new qb_item_names. Proceed? (y/n)'
    (puts 'Aborted' and exit) unless STDIN.gets.chomp.downcase == 'y'

    Effective::QbOrderItem.transaction do
      begin

        Effective::QbOrderItem.includes(order_item: :purchasable).find_each do |qb_order_item|
          order_item = qb_order_item.order_item
          purchasable = qb_order_item.order_item.purchasable

          new_qb_item_name = purchasable.qb_item_name

          unless new_qb_item_name
            raise "acts_as_purchasable object #{order_item.purchasable_type.try(:classify)}<#{order_item.purchasable_id}>.qb_item_name() from Effective::OrderItem<#{order_item.id}> cannot be nil."
          end

          qb_order_item.update_column(:name, new_qb_item_name) # This intentionally skips validation
        end

        puts 'Successfully updated all quickbooks item names.'
      rescue => e
        puts "An error has occurred: #{e.message}"
        puts "(effective_qb_sync) Rollback. No quickbooks item names have been changed."
        raise ActiveRecord::Rollback
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
effective_qb_sync-1.5.0 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.4.0 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.3.8 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.3.7 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.3.6 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.3.5 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.3.4 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.3.3 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.3.2 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.3.1 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.3.0 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.2.5 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.2.4 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.2.3 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.2.2 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.2.1 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.2.0 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.1.5 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.1.4 lib/tasks/effective_qb_sync_tasks.rake
effective_qb_sync-1.1.3 lib/tasks/effective_qb_sync_tasks.rake