Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Dir.glob("#{source_path}/*.csv").each do |item|
- begin
- rows = CSV.read(item, headers: true)
- grouped_by_email = rows.group_by { |row| [row['donor_email'], row['productsku_id'], row['donor_address1']] }.values
- rescue => e
- puts e
- next
- else
- grouped_by_email.each do |group|
- group_skus = group.map{ |x| x['product_sku_id'] }
- same_skus = group_skus.uniq.length == group_skus.length
- group.each do |row_field|
- campaign_id = row_field['campaign_id'].try(:downcase)
- next unless campaign_id
- next unless campaign_id.include? 'shirt'
- sku = row_field['productsku_id']
- donor_email = row_field['donor_email']
- sku_size = row_field['productsku_size']
- order_id = row_field['order_id']
- order_date = row_field['order_date']
- client_id = row_field['client_id']
- client_name = row_field['client_name']
- campaign_name = row_field['campaign_name']
- donor_id = row_field['donor_id']
- donor_firstname = row_field['donor_firstname']
- donor_lastname = row_field['donor_lastname']
- donor_address1 = row_field['donor_address1']
- donor_address2 = row_field['donor_address2']
- donor_address3 = row_field['donor_address3']
- donor_city = row_field['donor_city']
- donor_state = row_field['donor_state']
- donor_zip = row_field['donor_zip']
- four_months_ago = Date.today.beginning_of_month - 4.months
- next if Date.strptime(order_date, "%m/%d/%Y") < four_months_ago
- next if @processed_orders.include? order_id
- orders_from_db = Order.where('createdAt >= ?', four_months_ago).where(email: donor_email, orderId: order_id)
- if orders_from_db.any?
- orders_from_db.each do |order|
- order_products = OrderProduct.where('createdAt >= ?', four_months_ago).where(orderId: order.id)
- next unless order_products.any?
- order_products.each do |order_product|
- next unless order_product.order.campaignId.include? 'shirt'
- next unless (order_product.code.include?("-#{sku_size}") && (!sku_size.nil? || sku_size.try(:empty?)))
- next if @processed_orders.include? order_id
- if order_product.variationList["size"].empty?
- CSV.open('incorrect_parsed_orders.csv', 'ab') do |csv|
- csv << [
- order_id, order_date, client_id, client_name, campaign_id, campaign_name,
- sku, sku_size, donor_id, donor_firstname, donor_lastname,
- donor_email, donor_address1, donor_address2, donor_address3, donor_city,
- donor_state, donor_zip, order.id, 0, 1
- ]
- end
- @processed_orders << order_id
- elsif order_products.size != group_skus.length && !@processed_orders.include?(order_id) # order_product.quantity >= 2 &&
- CSV.open('incorrect_parsed_orders.csv', 'ab') do |csv|
- csv << [
- order_id, order_date, client_id, client_name, campaign_id, campaign_name,
- sku, sku_size, donor_id, donor_firstname, donor_lastname,
- donor_email, donor_address1, donor_address2, donor_address3, donor_city,
- donor_state, donor_zip, order.id, 0, 1
- ]
- end
- @processed_orders << order_id
- end
- end
- # if order_products.pluck(:code).size != group_skus.length
- # CSV.open('missing_sizes_in_db.csv', 'ab') do |csv|
- # csv << [order_id, sku, sku_size, donor_email, row_field['order_date'], order.id]
- # end
- # puts 'Written +1'
- # end
- end
- else
- CSV.open('missed_parsed_orders.csv', 'ab') do |csv|
- csv << [
- order_id, order_date, client_id, client_name, campaign_id, campaign_name,
- sku, sku_size, donor_id, donor_firstname, donor_lastname,
- donor_email, donor_address1, donor_address2, donor_address3, donor_city,
- donor_state, donor_zip, 'N/A', 1, 0
- ]
- end
- puts 'Written +1'
- end
- @processed_orders << order_id
- puts "FILE READ: #{item}"
- end
- puts '-------------------'
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement