Skip to content

Instantly share code, notes, and snippets.

@mimosz
Created November 14, 2012 06:54
Show Gist options
  • Save mimosz/4070722 to your computer and use it in GitHub Desktop.
Save mimosz/4070722 to your computer and use it in GitHub Desktop.
超买计算
user = User.all[1]
date = '2012-11-11'.to_date
user.trades_sync(date)
user.orders_sync
skus_data = CSV.read('all_items.csv', 'rb:GB18030:UTF-8', headers: true, col_sep: ',')
items = {}
skus_data.each do |sku|
items[sku['SKU']] = 0 unless items.has_key?(sku['SKU'])
items[sku['SKU']] += sku['库存'].to_i
end
range = date.beginning_of_day..Time.now
trades = user.trades.where(created: range).sales.asc(:pay_time)
oversolds = {}
notfounds = {}
trades.each do |trade|
trade.orders.each do |order|
if items[order.outer_sku_id] == 0
oversolds[order.num_iid] = { title: order.title, created: trade.created, num: 0, trades: [], buyer_nicks: []} unless oversolds.has_key?(order.num_iid)
oversolds[order.num_iid][:num] += order.num
oversolds[order.num_iid][:trades] << trade._id
oversolds[order.num_iid][:buyer_nicks] << trade.buyer_nick
elsif items.has_key?(order.outer_sku_id)
items[order.outer_sku_id] -= order.num
else
notfounds[order.num_iid] = { title: order.title, created: trade.created, num: 0, trades: [], buyer_nicks: []} unless notfounds.has_key?(order.num_iid)
notfounds[order.num_iid][:num] += order.num
notfounds[order.num_iid][:trades] << trade._id
notfounds[order.num_iid][:buyer_nicks] << trade.buyer_nick
end
end
end
header_row = ['商家ID', '超卖商品ID', '发生时间', '超卖数量', '问题描述', '已尝试解决方案', '自我原因分析']
footer_col = ['库存过小', '与消费者沟通退款', 'ERP与淘宝系统对接同步时差']
CSV.open('oversolds.csv', "wb:GB18030", col_sep: ',') do |csv|
csv << header_row
oversolds.each do |num_iid, trade|
csv << [
'newbalance旗舰店',
num_iid,
trade[:created],
trade[:num]
] + footer_col
end
end
header_row = ['SKU', '库存']
CSV.open('onsales.csv', "wb:GB18030", col_sep: ',') do |csv|
csv << header_row
items.each do |sku, num|
csv << [ sku, num ]
end
end
header_row = ['商品ID', '数量', '描述']
CSV.open('oversold_trades.csv', "wb:GB18030", col_sep: ',') do |csv|
csv << header_row
oversolds.each do |num_iid, trade|
csv << [ num_iid, trade[:num], trade[:title] ]
csv << [ '超卖订单' ] + trade[:trades]
csv << [ '超卖买家' ] + trade[:buyer_nicks]
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment