#
#= customersコントローラー
# Authors:: Sumiyo Yamamoto
# Copyright:: Copyright (C) OrbusNeich Medical K.K.  2010.
#--
# date        name                   note
# 2010.11.5   Sumiyo Yamamoto        新規作成
#-------------------------------------------------------------------------------
#++
class CustomersController < Comm::BaseController::PermanentMaster
  #include Comm::Module::Controller::UnifiedIF
  #== コンストラクタ
  #-----------------------------------------------------------------#++
  def initialize
    @mcls = Customer
    @search_cls = CustomerSearch
    @multiple_id_cols = {'cutoff_day_code'=>true}
  end
  
  def find_all
    ss = CustomerSearch.new
    ss.table_alias = {'customers' => 'a'}
    return ss.search(FLAG_ON, Customer, [], params)
  end
  
  class CustomerSearch < Comm::Tool::SqlSearch
    def get_columns_and_tables(tab, join_lists, params, str_vals)
      invalid_vals = (!params || params[:with_invalid]==STR_TRUE) ? '0,1' : '0'
      str_cols = ' * '
      str_tab =  " FROM ( SELECT c.*,
                          CONCAT(
                            CASE 
                              WHEN c.payment_condition_2_duty_type_code=#{MCODE_PRICE_DUTY_TYPE_EXC} THEN '税抜'
                              WHEN c.payment_condition_2_duty_type_code=#{MCODE_PRICE_DUTY_TYPE_INC} THEN '税込'
                              ELSE ''
                            END,
                            CAST(FORMAT(c.payment_condition_2_price,0) AS CHAR), '円', 
                            CASE 
                              WHEN c.payment_condition_2_code=#{MCODE_PAYMENT_COND_EQUAL_MORE} THEN '以上'
                              WHEN c.payment_condition_2_code=#{MCODE_PAYMENT_COND_MORE} THEN '超え'
                              ELSE ''
                            END
                           ) AS cnd2map,
                          payment_condition_2_price + IF(payment_condition_2_code=#{MCODE_PAYMENT_COND_EQUAL_MORE}, 0, 0.1) AS cnd2name,
                          CONCAT(
                            CASE 
                              WHEN c.payment_condition_3_duty_type_code=#{MCODE_PRICE_DUTY_TYPE_EXC} THEN '税抜'
                              WHEN c.payment_condition_3_duty_type_code=#{MCODE_PRICE_DUTY_TYPE_INC} THEN '税込'
                              ELSE ''
                            END,
                            CAST(FORMAT(c.payment_condition_3_price,0) AS CHAR), '円', 
                            CASE 
                              WHEN c.payment_condition_3_code=#{MCODE_PAYMENT_COND_EQUAL_MORE} THEN '以上'
                              WHEN c.payment_condition_3_code=#{MCODE_PAYMENT_COND_MORE} THEN '超え'
                              ELSE ''
                            END
                           ) AS cnd3map,
                          payment_condition_3_price + IF(payment_condition_3_code=#{MCODE_PAYMENT_COND_EQUAL_MORE}, 0, 0.1) AS cnd3name,
                          IFNULL(wc.wc_cnt,0) AS warehouses_customers_cnt
                          FROM master_app_production.customers AS c 
                          LEFT JOIN (SELECT customer_id, COUNT(*) AS wc_cnt 
                                     FROM master_app_production.warehouses_customers 
                                     GROUP BY customer_id) AS wc ON c.id=wc.customer_id
                          WHERE c.invalid_flag_code in (#{invalid_vals})) AS a"
      return str_cols, str_tab, str_vals
    end
  end
  # override 
  # 付加情報（モデルのテーブル以外のテーブルの情報）がparamsにあるので
  # 継承先で分解しつつ保存などしないとダメです
  def get_table_params
    @table_params = params
  end
  
  # show 関連
#  def add_to_extra_table_columns(merge_h, result)
#    arrange_result(merge_h, result, CustomerGroup)
#    arrange_result(merge_h, result, CustomerGroupPayment)
#    merge_h['payment_conditions_cnt'] = result['payment_conditions_cnt']
#  end
  
#  def get_show_where_clause
#    int_id = params[:id].to_i
#    case int_id
#    when -1
#      condition = " (SELECT min(id) FROM customers) "
#    when -2
#      condition = " (SELECT max(id) FROM customers) "
#    else
#      condition = int_id.to_s
#    end
#    return "WHERE a.id = "+condition
#  end
end
