OSDN Git Service

refs #1578 商品情報,顧客情報,受注情報,集計のCSVダウンロードをできるようにした
authorymatsumoto <ymatsumoto@appirits.com>
Fri, 3 May 2013 15:24:10 +0000 (00:24 +0900)
committerymatsumoto <ymatsumoto@appirits.com>
Fri, 3 May 2013 16:51:10 +0000 (01:51 +0900)
app/controllers/admin/orders_controller.rb
app/controllers/admin/products_controller.rb
app/controllers/admin/return_items_controller.rb
app/controllers/admin/stock_csv_controller.rb
app/controllers/admin/totals_controller.rb
app/models/customer_search_form.rb
app/models/order.rb
app/models/product.rb
app/models/questionnaire.rb
config/initializers/add_csv_download/add_csv_download.rb
lib/csv_util.rb

index a311c75..571e614 100644 (file)
@@ -89,9 +89,7 @@ class Admin::OrdersController < Admin::BaseController
   def csv_download
     get_search_form
     csv_data, filename = Order.csv(@search_list)
-    headers['Content-Type'] = "application/octet-stream; name=#{filename}"
-    headers['Content-Disposition'] = "attachment; filename=#{filename}"
-    render :text => Iconv.conv('cp932', 'UTF-8', csv_data)
+    send_data(csv_data, :type => "application/octet-stream; name=#{filename}; charset=shift_jis; header=present",:disposition => 'attachment', :filename => filename)
   end
 
   private
index 29e112c..c3ab496 100644 (file)
@@ -111,9 +111,7 @@ class Admin::ProductsController < Admin::BaseController
     @search_list = []
     get_search_form
     csv_data, filename = Product.csv(@search_list)
-    headers['Content-Type'] = "application/octet-stream; name=#{filename}"
-    headers['Content-Disposition'] = "attachment; filename=#{filename}"
-    render :text => NKF.nkf('-s', csv_data)
+    send_data(csv_data, :type => "application/octet-stream; name=#{filename}; charset=shift_jis; header=present",:disposition => 'attachment', :filename => filename)
   end
 
   def csv_upload
@@ -146,9 +144,7 @@ class Admin::ProductsController < Admin::BaseController
     @search_list = []
     get_search_form
     csv_data, filename = Product.actual_count_list_csv(@search_list)
-    headers['Content-Type'] = "application/octet-stream; name=#{filename}"
-    headers['Content-Disposition'] = "attachment; filename=#{filename}"
-    render :text => Iconv.conv('cp932', 'UTF-8', csv_data)
+    send_data(csv_data, :type => "application/octet-stream; name=#{filename}; charset=shift_jis; header=present",:disposition => 'attachment', :filename => filename)
   end
 
   protected
index f221384..a3b4f52 100644 (file)
@@ -129,8 +129,8 @@ class Admin::ReturnItemsController < Admin::BaseController
     filename = '%s.csv' % name
     title = %w(商品ID 商品コード 商品名 規格名称 商品型番 返品数 返品日時)
     
-    f = CSVUtil.make_csv_string(rows, title)   
-    send_data(f, :type => 'text/csv; charset=shift_jis; header=present',:disposition => 'attachment', :filename => filename)
+    csv_data = CSVUtil.make_csv_string(rows, title)   
+    send_data(csv_data, :type => "application/octet-stream; name=#{filename}; charset=shift_jis; header=present",:disposition => 'attachment', :filename => filename)
   end
     
 
index 098c5c7..c746eb6 100644 (file)
@@ -45,8 +45,8 @@ class Admin::StockCsvController < Admin::BaseController
     name = params[:id]
     filename = '%s.csv' % name
     title = %w(商品コード 商品名 仕入先名 実在庫数 不良在庫数)
-    f = CSVUtil.make_csv_string(rows, title)  
-    send_data(f, :type => 'text/csv; charset=shift_jis; header=present',:disposition => 'attachment', :filename => filename)
+    csv_data = CSVUtil.make_csv_string(rows, title)  
+    send_data(csv_data, :type => "application/octet-stream; name=#{filename}; charset=shift_jis; header=present",:disposition => 'attachment', :filename => filename)
   end
   
   private
index d344d74..f0005bd 100644 (file)
@@ -55,10 +55,7 @@ class Admin::TotalsController < Admin::BaseController
   def csv
     totalizer = Object.const_get("#{params[:page]}_totalizer".classify)
     csv_data, filename = totalizer.csv(params)
-    headers['Content-Type'] = "application/octet-stream; name=#{filename}"
-    headers['Content-Disposition'] = "attachment; filename=#{filename}"
-    render :text => Iconv.conv('cp932', 'UTF-8', csv_data)
+    send_data(csv_data, :type => "application/octet-stream; name=#{filename}; charset=shift_jis; header=present",:disposition => 'attachment', :filename => filename)
   end
-
 end
 
index 4efaafa..78f2101 100644 (file)
@@ -47,8 +47,7 @@ class CustomerSearchForm < SearchForm
     syms.each do |sym|\r
       col_names << field_names[sym]\r
     end\r
-    f = StringIO.new('', 'w')\r
-    CSV::Writer.generate(f) do | writer |\r
+    str = CSV.generate("") do | writer |\r
       writer << col_names\r
       customers.each do |c|\r
         arr = []\r
@@ -70,7 +69,6 @@ class CustomerSearchForm < SearchForm
         writer << arr\r
       end\r
     end\r
-    f.string\r
   end\r
 \r
   #誕生日から年齢を割り出すメソッド\r
index 0562f3d..297b5d7 100644 (file)
@@ -118,8 +118,7 @@ class Order < ActiveRecord::Base
                          :conditions => flatten_conditions(search_list),
                          :include => OrderDelivery::DEFAULT_INCLUDE,
                          :order => "order_deliveries.id desc")
-    f = StringIO.new('', 'w')
-    CSV::Writer.generate(f) do | writer |
+    str = CSV.generate("") do | writer |
       writer<< columns.map{|name| OrderDelivery.set_field_names[name]}
       order_deliveries and order_deliveries.each do | od |
         writer << columns.map do | column |
@@ -132,7 +131,7 @@ class Order < ActiveRecord::Base
       end
     end
     filename = "order_#{Time.now.strftime('%Y%m%d%H%M%S')}.csv"
-    [f.string, filename]
+    [str.tosjis, filename]
   end
 
   private
index e47446c..f12d738 100644 (file)
@@ -287,8 +287,7 @@ class Product < ActiveRecord::Base
                          :conditions => flatten_conditions(search_list),
                          :include => DEFAULT_INCLUDE,
                          :order => "products.id")
-    f = StringIO.new('', 'w')
-    CSV::Writer.generate(f) do | writer |
+    str = CSV.generate("") do | writer |
       writer<< columns.map{|name| set_field_names[name]}
       products and products.each do | product |
         writer << columns.map do | column |
@@ -309,7 +308,7 @@ class Product < ActiveRecord::Base
       end
     end
     filename = "product_#{Time.now.strftime('%Y%m%d%H%M%S')}.csv"
-    [f.string, filename]
+    [str.tosjis, filename]
   end
 
   def self.actual_count_list_csv(search_list)
@@ -317,9 +316,8 @@ class Product < ActiveRecord::Base
                                   :conditions => flatten_conditions(search_list),
                                   :joins => "LEFT JOIN products ON products.id = product_styles.product_id ",
                                   :order => "id")
-    f = StringIO.new('', 'w')
     title = ["商品名", "商品コード", "登録更新日", "実在個数"]
-    CSV::Writer.generate(f) do | writer |
+    str = CSV.generate("") do | writer |
       writer<< title
       products and products.each do | product |
         columns = []
@@ -331,7 +329,7 @@ class Product < ActiveRecord::Base
       end
     end
     filename = "actual_count_list_#{Time.now.strftime('%Y%m%d%H%M%S')}.csv"
-    [f.string, filename]
+    [str.tosjis, filename]
   end
 
   def master_shop?
index 25279e6..530c905 100644 (file)
@@ -70,9 +70,7 @@ class Questionnaire < ActiveRecord::Base
   def self.csv(id, count)
     questionnaire = self.find(id)
     header = get_csv_header(count)
-    #f = StringIO.new('', 'w')
-    #CSV::Writer.generate(f) do |writer|
-    f = CSV.generate("") do |writer|
+    str = CSV.generate("") do |writer|
       writer << header
       questionnaire.questionnaire_answers.each do | questionnaire_answer |
         row = questionnaire_answer.export_row
index 8686c05..3171653 100644 (file)
@@ -17,8 +17,7 @@ module AddCSVDownload
     def csv(params)
       list_for_csv(params)
       columns, titles = get_csv_settings((@model.nil? ? nil : @model.csv_columns_name))
-      f = StringIO.new('', 'w')
-      CSV::Writer.generate(f) do | writer |
+      str = CSV.generate("") do | writer |
         writer << titles
         @records and @records.each do | record |
           writer << columns.map do | column |
@@ -27,7 +26,7 @@ module AddCSVDownload
         end
       end
       filename = "#{csv_output_setting_name}#{Time.now.strftime('%Y%m%d%H%M%S')}.csv"      
-      [f.string, filename]
+      [str.tosjis, filename]
     end
 
     private
index a201ba7..cd6c7e8 100644 (file)
@@ -37,15 +37,13 @@ class CSVUtil
     def make_csv_string(rows, title)
       # date = DateTime.now
       # CSV に吐く
-      # f = StringIO.new('', 'w')
-      # CSV::Writer.generate(f) do | writer |
-      f = CSV.generate("") do |writer|
+      str = CSV.generate("") do |writer|
         writer << title
         rows.each do |row|
           writer << row
         end
       end
-      return f.tosjis
+      return str.tosjis
     end
 
   end