1 # -*- coding: utf-8 -*-
6 class Admin::ReturnItemsController < Admin::BaseController
8 before_filter :admin_permission_check_return_item
15 @product_style = ProductStyle.find_by_id(params[:id].to_i)
18 new_action.wants.html do
19 if @product_style.nil?
20 redirect_to :action => :index
21 elsif @product_style.product.retailer_id != session[:admin_user].retailer_id
22 redirect_to :action => :index
24 render :action => :new
29 ri = ReturnItem.find_by_id(params[:id].to_i)
30 @product_style = ProductStyle.find_by_id(ri.product_style_id) unless ri.nil?
34 if @product_style.nil?
35 redirect_to :action => :history
36 elsif @product_style.product.retailer_id != session[:admin_user].retailer_id
37 redirect_to :action => :history
39 render :action => :edit
43 [create, update].each do |action|
45 @product_style = ProductStyle.find_by_id(params[:return_item][:product_style_id].to_i)
46 @return_item.admin_user_id = session[:admin_user].id
47 raise ActiveRecord::RecordNotFound if @product_style.product.retailer_id != session[:admin_user].retailer_id
53 flash[:return_item_update] = "データを保存しました。"
54 redirect_to :action => "index"
58 flash[:return_item_update] = "データを保存しました。"
59 redirect_to :action => "history"
63 flash[:return_item_update] = "データを削除しました。"
64 redirect_to :action => "history"
75 add_retailer_condition
76 @condition = ReturnItemSearchForm.new(params[:condition])
77 unless @condition.valid?
78 render :action => :index
81 @condition, @search_list = Product.get_conditions(@condition, params, true)
83 :page => params[:page],
84 :per_page => @condition.per_page || 10,
85 :conditions => flatten_conditions(@search_list),
86 :joins => "LEFT JOIN products ON products.id = product_styles.product_id ",
87 :order => "product_styles.id"
89 @product_styles = ProductStyle.paginate(find_options)
93 pairs = CSVUtil.make_csv_index_pairs(params[:controller], page_cache_directory, page_cache_extension)
99 @dates = pairs.map do |_, time|
102 @urls = pairs.map do |id, _|
103 url_for(:action => :csv, :id => id,:format => "csv")
108 redirect_to(url_for_date(DateTime.now))
112 # params[:id] はページキャッシュのキーにするだけで抽出条件にはしない
113 if params[:id].blank?
114 render :status => :not_found
116 condition, join = get_csv_condition
117 rows = ReturnItem.find(:all, :conditions => flatten_conditions(condition), :joins => join).map do |ri|
120 a << ri.product_style.code
121 a << ri.product_style.product_name
122 a << ri.product_style.style_name
123 a << ri.product_style.manufacturer_id
124 a << ri.returned_count
129 filename = '%s.csv' % name
130 title = %w(商品ID 商品コード 商品名 規格名称 商品型番 返品数 返品日時)
132 f = CSVUtil.make_csv_string(rows, title)
133 headers['Content-Type'] = "application/octet-stream; name=#{filename}"
134 headers['Content-Disposition'] = "attachment; filename=#{filename}"
135 render :text => Iconv.conv('cp932', 'UTF-8', f.string)
142 add_retailer_condition
143 @condition = ReturnItemSearchForm.new(params[:condition])
144 unless @condition.valid?
145 render :action => :index
148 @search_list = ReturnItemSearchForm.get_conditions(@condition)
149 @search_list << [ 'product_styles.deleted_at IS NULL' ]
151 :page => params[:page],
152 :per_page => @condition.per_page || 10,
153 :conditions => flatten_conditions(@search_list),
154 :joins=> :product_style,
155 :include => [:product],
156 :order => "return_items.id"
158 @return_items = ReturnItem.paginate(find_options)
161 def url_for_date(date)
162 url_for(:action => :csv, :id => date.strftime('%Y%m%d_%H%M%S'),:format => "csv")
165 def add_retailer_condition
166 addparam = {'retailer_id' => session[:admin_user].retailer_id}
167 params[:condition].merge! addparam unless params[:condition].nil?
170 def get_csv_condition
172 condition << ["products.retailer_id = ?", session[:admin_user].retailer_id]
173 return condition, "LEFT JOIN product_styles ON product_styles.id = return_items.product_style_id " + "LEFT JOIN products ON products.id = product_styles.product_id "