首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Ruby中为订单号添加后缀

如何在Ruby中为订单号添加后缀
EN

Stack Overflow用户
提问于 2020-03-30 07:04:34
回答 1查看 38关注 0票数 0

我有一个Ruby文件,可以自动将来自eCommerce站点的客户订单转换为CSV文件。根据不同的产品供应商打印不同的CSV文件。

我需要在不同供应商的订单号末尾添加一个后缀。例如,对于名为"Electric Styles“的供应商,我需要在其订单号的末尾添加一个-ES。因此,像12345这样的未来订单号应该变成12345-ES

我认为我可能需要向csvgen.rb文件添加一条if/else语句,如下所示:

代码语言:javascript
运行
复制
if(vendor = Electric styles){order-number-ES}

我不知道该怎么做。

process2文件:

代码语言:javascript
运行
复制
 This script processes the CSV files, it is executed when a CSV is detected in the Dropbox folder by run.rb 
# The ~/Dropbox/ORDERS/ARCHIVE/RUNNING/running.csv file contains all orders.

# Electric Styles
cat ~/Dropbox/*.csv | head -1 > ~/Dropbox/ORDERS/ElectricStyles.csv
grep -i -E "Electric Styles" *.csv >> ~/Dropbox/ORDERS/ElectricStyles.csv

awk -F, '{$14=$14*0.0352739619;print}' OFS=, ~/Dropbox/ORDERS/ElectricStyles.csv | awk -F, '{$14=$14==int($14)?int($14):int($14)+1}1' OFS=, | sponge ~/Dropbox/ORDERS/ElectricStyles.csv

cp ~/Dropbox/ORDERS/ElectricStyles.csv ~/Dropbox/ORDERS/ElectricStyles.$now.csv
rm ~/Dropbox/ORDERS/ElectricStyles.csv
cp ~/Dropbox/ORDERS/ElectricStyles*.csv ~/Dropbox/ORDERS/ElectricStyles/
cat ~/Dropbox/ORDERS/ElectricStyles/*.csv | sort -u -r > ~/Dropbox/ORDERS/ElectricStyles/RUNNING/running.csv

run.rb文件:

代码语言:javascript
运行
复制
#!/usr/bin/env ruby
`dropbox start`
while 1 == 1 do
  csvexists = !Dir.glob('/root/Dropbox/*.csv').empty?
  sleep(10)
  `proftpd`
  if csvexists == true
        sleep(10)
    `/root/Dropbox/process2`
  else
  end
end

csvgen.rb文件:

代码语言:javascript
运行
复制
csvgen.rb
#!/usr/bin/ruby
require 'mechanize'
require 'json'
require 'csv'

def every_n_seconds(n)
  loop do
    before = Time.now
    yield
    interval = n-(Time.now-before)
    sleep(interval) if interval > 0
  end
end

every_n_seconds(86400) do

web    = Mechanize.new
auth   = web.auth('xxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxx', domain = 'xxxxxxxxxxxx.myshopify.com')
count  = /\:(\d*)/.match(web.get("https://xxxxxxxxxxxx.myshopify.com/admin/orders/count.json").body).to_s.gsub(':','').to_i
pages  = count / 250 + 1
orders = []

catch :oldorder do 
  pages.times do |page|
    puts page
    order   = JSON.parse(web.get("https://xxxxxxxxxxx.myshopify.com/admin/orders.json?fields=order_number,created_at,shipping_address,shipping_lines,line_items&page=#{page}&limit=250").body)['orders']
    order.each do |order|
      date  = DateTime.iso8601(order["created_at"]).strftime('%m/%d/%Y')
      today = Date.today.strftime('%m/%d/%Y')
      yestr = Date.today.prev_day.strftime('%m/%d/%Y')
      throw :oldorder if date.to_s != today.to_s && date.to_s != yestr.to_s
      # throw :oldorder if order["order_number"] < 10000
      cust,ord,ord1 = [],[],[]
      unless order["shipping_lines"] == []
        cust << order["order_number"]
        cust << order["shipping_address"]["first_name"]
        cust << order["shipping_address"]["last_name"]
        cust << order["shipping_address"]["address1"]
        cust << order["shipping_address"]["address2"]
        cust << order["shipping_address"]["city"]
        cust << order["shipping_address"]["province_code"]
        cust << order["shipping_address"]["zip"]
        cust << order["shipping_address"]["country_code"]
        order["line_items"].each do |product|
          ord1 = product["title"],
                 product["variant_title"],
                 product["quantity"],
                 product["vendor"],
                 product["grams"],
                 order["shipping_lines"].first["code"],
                 product["sku"],
                 date
          ord << cust + ord1
        end
        ord.each do |o|
          orders << o
        end
      end
    end
  end
end

puts orders.count

`echo "Order Number,Shipping Address First Name,Shipping Address Last Name,Shipping Address Address 1,Shipping Address Address 2,Shipping Address City,Shipping Address Province code,Shipping Address Postal Code,Shipping Address Country code,Product Title,Product Variant Title,Product Quantity,Brand,Product Weight,Shipping Method,Product SKU,Created at" > /root/Dropbox/file.csv`

orders.each do |o|
  CSV.open("/root/Dropbox/file.csv", "a+:UTF-8") do |csv|
    csv << o
  end
end

end
EN

回答 1

Stack Overflow用户

发布于 2020-03-30 09:20:55

在您的csvgen.rb中,您需要修改

代码语言:javascript
运行
复制
cust << order["order_number"] 

代码语言:javascript
运行
复制
cust << "#{order["order_number"]}-ES" 

如果每次订单都必须写入-ES

如果你需要一个动态的order_number,请给出一个CSV文件的示例行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60921857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档