class SalesSamplesListsController < CommLogistics::Base::Controller::ListController
  def get_record_list
    @control_keys = 'sales_samples_lists'
    
    ss = SalesSamplesSearch.new
    #ss.post_where_sentence = ' GROUP BY b.user_position_id '
    #ss.date_table = 'b'
    #ss.non_table_columns = ['quantity', 'average_sales_price', 'total_sales_price']
    ss.table_alias = {'sale_details' => 'a',
                      'sales' => 'a'}
    # sortテーブルの置き換えに使用
    join_mcls = []
    ars = ss.search(FLAG_ON, SaleDetail, join_mcls, params)
    return ars
  end
  
  class SalesSamplesSearch < Comm::Tool::SqlSearch
    def get_columns_and_tables(tab, join_lists, params, str_vals)
      str_cols = ' * '
      #TODO 対象saleタイプOK?
      str_tab = " FROM (SELECT
                    \'sales\' AS table_name,
                    sd.id AS detail_id,
                    sd.sale_id AS id,
                    target_date,
                    warehouse_id,
                    customer_id,
                    supplier_id,
                    sales_area_id,
                    user_position_id,
                    product_category_id,
                    product_set_id,
                    product_id,
                    lot_number,
                    serial_number,
                    ubd,
                    quantity 
                  FROM sale_details AS sd LEFT JOIN sales AS s ON s.id=sd.sale_id 
                  WHERE target_date BETWEEN \"#{params[:start_target_date]}\" AND \"#{params[:end_target_date]}\" 
                    AND s.sale_type_code!=#{MCODE_SALE_TYPE_ADJUST}
                    AND s.invalid_flag_code=#{MCODE_FLAG_OFF}
                    AND s.state_code=#{MCODE_STATUS2_COMP}
                  UNION (SELECT 
                          \'samples\' AS table_name, 
                          sd.id AS detail_id,
                          sd.sample_id AS id,
                          target_date,
                          warehouse_id,
                          customer_id,
                          supplier_id,
                          sales_area_id,
                          user_position_id,
                          product_category_id,
                          product_set_id,
                          product_id,
                          lot_number,
                          serial_number,
                          ubd,
                          quantity 
                        FROM sample_details AS sd LEFT JOIN samples AS s ON s.id=sd.sample_id 
                        WHERE target_date BETWEEN \"#{params[:start_target_date]}\" and \"#{params[:end_target_date]}\"
                          AND s.invalid_flag_code=#{MCODE_FLAG_OFF}
                          AND s.state_code=#{MCODE_STATUS2_COMP}
                        ) ) AS a "
      return str_cols, str_tab, str_vals
    end
    #から実装
    def set_target_date_to_where(tab, params, str_where)
    end
  end
end