Sha256: d40c64cf367e0ee072190e1008596c5fa1cf051dac0f78ad2e12424edd75a400
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
# frozen_string_literal: true namespace :drip do desc 'Imports order data into Drip' task import_orders: :environment do puts 'Starting Drip Order Import...' require 'drip' drip_client = SolidusDrip::Base.new.client # Completed Orders order_activities = [] Spree::Order.complete.find_each do |order| drip = SolidusDrip::ShopperActivity::Order.new(order) action = drip_status(order) order_activities << drip.send(:order_data, action) # order_data is a private method # 1000 is the limit on orders that can be sent at a time. Once we have # that amount of data we send it all to Drip if order_activities.count == 1000 puts 'Sending 1000 orders to Drip...' # Send to drip drip_client.create_order_activity_events(order_activities) # Reset order_activities = [] end end # Send any extra data that wasn't part of the loop if order_activities.count.positive? puts "Sending remaining #{order_activities.count} orders to Drip..." drip_client.create_order_activity_events(order_activities) end puts 'Drip Order Import Complete!' end end ## # Calculates the drip status to be sent for the given order # def drip_status(order) if order.shipped? 'fulfilled' elsif order.paid? 'paid' else 'updated' end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
solidus_drip-0.1.0 | lib/tasks/drip_import_orders.rake |