#
#= wholesale_pricesコントローラー
# Authors:: Sumiyo Yamamoto
# Copyright:: Copyright (C) OrbusNeich Medical K.K.  2010.
#--
# date        name                   note
# 2010.11.5   Sumiyo Yamamoto        新規作成
#-------------------------------------------------------------------------------
#++
class WholesalePricesController < Comm::BaseController::General
  #== コンストラクタ
  #-----------------------------------------------------------------#++
  def initialize
    @mcls = WholesalePrice
  end
  
  def find_all
    params[:session_user_id] = session[:user_id]
    ss = WholesalePriceSearch.new
    ss.table_alias = {'wholesale_prices' => 'a',
                      'warehouses' => 'a', 
                      'sale_areas' => 'a' }
    return ss.search(FLAG_ON, WholesalePrice, [], params)
  end
  
  class WholesalePriceSearch < Comm::Tool::SqlSearch
    def get_columns_and_tables(tab, join_lists, params, str_vals)
      if params[:operation_level]=='area' then
        @sales_areas = UserPosition.sassign("user_id", params[:session_user_id].to_i).find(:all,:conditions=>['sales_area_id > 0'],:select => "sales_area_id")
        where = ' WHERE w.sales_area_id IN (' + @sales_areas.extract("sales_area_id").join(',') + ')'
      elsif params[:operation_level]=='user' then
        @user_positions = UserPosition.sassign("user_id", params[:session_user_id].to_i).find(:all,:select => "id")
        where = ' WHERE w.user_position_id IN (' + @user_positions.extract("id").join(',') + ')'
      elsif params[:operation_level]=='global_area' then
        @sales_areas = UserPosition.sassign("user_id", params[:session_user_id].to_i).find(:all,:conditions=>['sales_area_id > 0'],:select => "sales_area_id")
        @global_areas = SalesArea.find(:all,:conditions=>["id IN (#{@sales_areas.extract("sales_area_id").join(',')})"],:select => "global_area_id")
        where = ' WHERE s.global_area_id IN (' + @global_areas.extract("global_area_id").join(',') + ')'
      else
        where = '';
      end
      if params[:cols] && where.blank?
        str_cols = " " + params[:cols] + " "
        str_tab = " FROM master_app_production.wholesale_prices AS a "
      else
        str_cols = ' * '
        str_tab =  " FROM ( SELECT p.*, s.global_area_id, w.sales_area_id, w.user_position_id FROM master_app_production.wholesale_prices AS p
                     LEFT JOIN master_app_production.warehouses AS w ON p.warehouse_id = w.id
                     LEFT JOIN master_app_production.sales_areas AS s ON w.sales_area_id=s.id #{where}
                     ) AS a "
      end
      return str_cols, str_tab, str_vals
    end
  end
  
  def count_all
    result = 0
    ret = @mcls.connection.execute('SELECT FOUND_ROWS()')
    ret.each {|x| result = x.first }
    return result
  end
  
end
