Skip to content

Instantly share code, notes, and snippets.

@timting
Last active December 19, 2015 22:09
Show Gist options
  • Save timting/6025636 to your computer and use it in GitHub Desktop.
Save timting/6025636 to your computer and use it in GitHub Desktop.
Changing product numbers, color codes, or UPCs
# Product numbers:
Document.skip_callback(:save, :before, :create_fields!)
Document.skip_callback(:save, :before, :can_save?)
trans = {"CB31" => "AAZZ", "CB32" => "A8WW", "CB35" => "AAZX", "CB36" => "A3EX", "CB34" => "AZFJ"}
Document.where(:'pages.page_products.product_number'.in => trans.keys).each do |doc|
p "Working on document #{doc.number}"
doc.pages.each do |page|
p "Page #{page.name}"
page.page_products.each do |pp|
if trans[pp.product_number]
p "Changing product number #{pp.product_number} to #{trans[pp.product_number]}"
pp.product_number = trans[pp.product_number]
end
end
end
result = doc.timeless.save
p "Tried to save: #{result}"
end
# Color code:
Document.skip_callback(:save, :before, :create_fields!)
Document.skip_callback(:save, :before, :can_save?)
trans = {"A9MW" => {"JK3" => "KT0"}, "A3KS" => {"H4H" => "K4H"}, "A3KT" => {"J32" => "J3T"}, "A5H0" => {"J3T" => "J8T"}, "A8B9" => {"K7Z" => "H7Z"}, "A1R2" => {"PM6" => "P6M"}, "A7H1" => {"K2A" => "T4C"}}
Document.where(:'pages.page_products.product_number'.in => trans.keys, :'pages.page_products.color_code'.in => trans.values.map(&:keys).flatten).each do |doc|
p "Working on document #{doc.number}"
doc.pages.each do |page|
p "Page #{page.name}"
page.page_products.each do |pp|
if trans[pp.product_number]
if trans[pp.product_number][pp.color_code]
p "Changing color code #{pp.color_code} to #{trans[pp.product_number][pp.color_code]} for product number #{pp.product_number}"
pp.color_code = trans[pp.product_number][pp.color_code]
end
end
end
end
result = doc.timeless.save
p "Tried to save: #{result}"
end
# UPC
Document.skip_callback(:save, :before, :create_fields!)
Document.skip_callback(:save, :before, :can_save?)
trans = {"700054681070" => "700051335693", "700054681063" => "700051335662", "706420805347" => "700051335709"}
Document.where(:'pages.page_products.page_items.stock_item_key'.in => trans.keys).each do |doc|
p "Working on document #{doc.number}"
doc.pages.each do |page|
p "Page #{page.name}"
page.page_products.each do |pp|
pp.page_items.each do |pi|
if trans[pi.stock_item_key]
p "Changing upc #{pi.stock_item_key} to #{trans[pi.stock_item_key]}"
pi.stock_item_key = trans[pi.stock_item_key]
pi.stock_item_upc = trans[pi.stock_item_upc]
end
end
end
end
result = doc.timeless.save
p "Tried to save: #{result}"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment