Skip to content

Instantly share code, notes, and snippets.

@isaiahbaca
Last active October 2, 2023 16:15
Show Gist options
  • Select an option

  • Save isaiahbaca/9a5bba4e9a3f197e39fca4a5a2ffb4dd to your computer and use it in GitHub Desktop.

Select an option

Save isaiahbaca/9a5bba4e9a3f197e39fca4a5a2ffb4dd to your computer and use it in GitHub Desktop.
Supplier Costs / ZIP ZONE Import
# A task to create a new supplier cost based on zip code
namespace :import_supplier_costs do
desc "Create a new supplier cost based on provided zip codes"
task create: :environment do
success_count = 0
PRODUCTS = {
zone_1_standard: Product.find(281393),
zone_1_rush: Product.find(281389),
zone_2_standard: Product.find(281394),
zone_2_rush: Product.find(281390),
zone_3_standard: Product.find(281395),
zone_3_rush: Product.find(281391),
zone_4_standard: Product.find(281396),
zone_4_rush: Product.find(281392),
zone_5_standard: Product.find(281235),
zone_5_rush: Product.find(281240),
}
SRP = {
zone_1_standard: 85,
zone_1_rush: 150,
zone_2_standard: 105,
zone_2_rush: 170,
zone_3_standard: 125,
zone_3_rush: 190,
zone_4_standard: 180,
zone_4_rush: 245,
zone_5_standard: 215,
zone_5_rush: 280,
}
POPULATION_DENSITY_ZONES = {
'1': "1 - Very Densely Populated",
'2': "2 - Densely Populated",
'3': "3 - Semi-Densely Populated",
'4': "4 - Moderately Populated",
'5': "5 - Sparsely Populated"
}
mapped_zip_zones = {"91311"=>"2","91313"=>"2","91342"=>"2","91345"=>"2","91901"=>"3","91902"=>"2","91935"=>"3","91978"=>"2","92003"=>"3","92007"=>"2","92049"=>"2","92051"=>"2","92052"=>"2","92055"=>"3","92071"=>"2","92072"=>"2","92118"=>"2","92211"=>"3","92223"=>"3","92225"=>"4","92231"=>"2","92232"=>"2","92240"=>"3","92243"=>"2","92244"=>"2","92253"=>"3","92260"=>"3","92264"=>"3","92276"=>"3","92282"=>"3","92310"=>"3","92317"=>"3","92320"=>"2","92325"=>"3","92327"=>"3","92391"=>"3","92539"=>"4","93202"=>"2","93203"=>"3","93223"=>"2","93276"=>"3","93280"=>"3","93502"=>"3","93505"=>"3","93516"=>"3","93560"=>"3","93921"=>"3","93940"=>"2","93942"=>"2","93944"=>"2","93950"=>"2","93953"=>"3","93955"=>"2","94501"=>"2","94502"=>"2","94547"=>"2","94573"=>"3","94576"=>"3","95003"=>"3","95004"=>"3","95013"=>"3","95014"=>"2","95039"=>"3","95045"=>"3","95060"=>"3","95065"=>"3","95070"=>"2","95071"=>"2","95073"=>"3","95076"=>"3","95120"=>"2","95123"=>"2","95124"=>"2","95129"=>"2","95132"=>"2","95135"=>"2","95136"=>"2","95138"=>"2","95139"=>"2","95140"=>"4","95141"=>"2","95148"=>"2","95230"=>"4","95314"=>"4","95635"=>"4","95664"=>"3","95683"=>"3","95703"=>"3","95713"=>"3","95714"=>"3","95722"=>"3","96114"=>"4","96128"=>"4","96137"=>"4"}
mapped_zip_zones.each do |zip, zone|
zipcode_record = Zipcode.find_by(zipcode: zip)
if zipcode_record
#Create Standard Supplier Cost
standard_product = PRODUCTS["zone_#{zone}_standard".to_sym]
standard_supplier_cost = SupplierCost.find_or_initialize_by(
zipcode_id: zipcode_record.id,
sla_id: 1,
job_type_id: 1
)
standard_supplier_cost.amount = standard_product.price
standard_supplier_cost.product_id = standard_product.id
standard_supplier_cost.suggested_retail_price = SRP["zone_#{zone}_standard".to_sym]
if standard_supplier_cost.save
success_count += 1
end
#Create Rush Supplier Cost
rush_product = PRODUCTS["zone_#{zone}_rush".to_sym]
rush_supplier_cost = SupplierCost.find_or_initialize_by(
zipcode_id: zipcode_record.id,
sla_id: 2,
job_type_id: 1
)
rush_supplier_cost.amount = rush_product.price
rush_supplier_cost.product_id = rush_product.id
rush_supplier_cost.suggested_retail_price = SRP["zone_#{zone}_rush".to_sym]
if rush_supplier_cost.save
success_count += 1
end
#update zip code zone
zipcode_record.population_density_zone = POPULATION_DENSITY_ZONES[zone.to_s.to_sym]
zipcode_record.save
end
end
puts "Successfully added #{success_count} new supplier cost records."
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment