Skip to content

Instantly share code, notes, and snippets.

@iloveitaly
Created May 8, 2017 17:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iloveitaly/07814c70f14cc75db7e3ae5292cc780b to your computer and use it in GitHub Desktop.
Save iloveitaly/07814c70f14cc75db7e3ae5292cc780b to your computer and use it in GitHub Desktop.
Connect Stripe coupons to existing NetSuite discount items for use with http://SuiteSync.io/
# Mike Bianco <mike@suitesync.io>
# Description: Connect Stripe coupons to existing NetSuite discount items
# Usage: map_stripe_coupons_to_netsuite.rb mapping.csv
require 'stripe'
require 'csv'
Stripe.api_key = ENV['STRIPE_KEY']
# CSV Mapping:
# - stripe_coupon_id:
# - netsuite_internal_id
if ARGV.empty?
puts "No CSV path specified"
exit 1
end
def wipe_netsuite_metadata_fields(stripe_resource)
stripe_resource.metadata.keys.map(&:to_s).each do |metadata_key|
if metadata_key.start_with?('netsuite_')
stripe_resource.metadata[metadata_key] = nil
end
end
end
csv_path = ARGV.first
csv_mapping = CSV.read(csv_path, headers: true)
ns_metadata_key = 'netsuite_discount_item_id'
csv_mapping.each do |csv_line|
stripe_coupon_id = csv_line['stripe_coupon_id']
ns_internal_id = csv_line['netsuite_internal_id']
if ns_internal_id.nil?
puts "#{stripe_coupon_id}\tno netsuite ID"
next
end
stripe_coupon = (Stripe::Coupon.retrieve(stripe_coupon_id) rescue nil)
if stripe_coupon.nil?
puts "#{stripe_coupon_id}\tinvalid coupon ID"
next
end
if stripe_coupon.metadata[ns_metadata_key]
puts "#{stripe_coupon_id}\tplan already linked"
next
end
puts "#{stripe_coupon_id}\tmapping coupon"
wipe_netsuite_metadata_fields(stripe_coupon)
stripe_coupon.metadata[ns_metadata_key] = ns_internal_id
stripe_coupon.save
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment