#
#= invoice_pricesコントローラー
# Authors:: Sumiyo Yamamoto
# Copyright:: Copyright (C) OrbusNeich Medical K.K.  2010.
#--
# date        name                   note
# 2010.11.5   Sumiyo Yamamoto        新規作成
#-------------------------------------------------------------------------------
#++
class InvoicePricesController < Comm::BaseController::General
  #== コンストラクタ
  #-----------------------------------------------------------------#++
  def initialize
    @mcls = InvoicePrice
  end
  
  def find_all
    params[:session_user_id] = session[:user_id]
    ss = InvoicePriceSearch.new
    ss.table_alias = {'invoice_prices' => 'a',
                      'warehouses' => 'a' }
    return ss.search(FLAG_ON, InvoicePrice, [], params)
  end
  
  class InvoicePriceSearch < 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(',') + ')'
      else
        where = '';
      end
      if params[:cols] && where.blank?
        str_cols = params[:cols]
      else 
        str_cols = ' * '
      end
      str_tab =  " FROM ( SELECT p.*, w.sales_area_id, w.user_position_id FROM master_app_production.invoice_prices AS p
                   LEFT JOIN master_app_production.warehouses AS w ON p.warehouse_id = w.id #{where}
                   ) AS a "
      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
