module CommLogistics::Base::Controller
  #
  #注文関連の上位クラス(OrderController, AcceptOrderController)
  #
  class SuperiorOrder < Superior
    #include CommLogistics::Modules::Controller::Revision
    
    def count_all_with_progress
      result = 0
      ret = @mcls.connection.execute('SELECT FOUND_ROWS()')
      ret.each {|x| result = x.first }
      return result
    end
    
    def ext_index_with_progress
      ars = find_all_with_progress(FLAG_ON)
      opt = HashWithIndifferentAccess.new
      opt[:disp] = {:multiple_id_cols => @multiple_id_cols, :disp_keys => {}, :disp_add_keys=>{}}
      #===============disp_keyの設定ここから
      #jsから送られてくる場合もあるので、そちらを最優先する。
      if !params[:disp_keys].blank? && params[:disp_keys].is_a?(Hash)
        params[:disp_keys].each do |key, hash_value|
          opt[:disp][:disp_keys][key]=hash_value
        end
      end
      #===============disp_keyの設定ここまで
      #jsから送られてくる場合もあるので、そちらを最優先する。
      if !params[:disp_add_keys].blank? && params[:disp_add_keys].is_a?(Hash)
        params[:disp_add_keys].each do |key, hash_value|
          opt[:disp][:disp_add_keys][key]=hash_value.values
        end
      end
      respond_to do |format|
        format.ext_json{
          cnt = count_all_with_progress
          opt[:disp][:nil_str] = @disp_name_nil_str || ''
          render :json => ars.ext_hashfy(opt).to_ext_json(@table_name, cnt)
          #render :json => ars.ext_hashfy.to_ext_json(@table_name, cnt)
        }
        format.xls{
          resp = output_xls(ars.ext_hashfy(opt), params)
          resp[:file_name] = @table_name + resp[:file_name]
          render :json => resp.to_json
        }
      end
    end
    alias_method_chain :ext_index, :progress
    
    def with_details
      #override base class method
      #def get_sql_search
      #  return get_sql_search_for_with_details
      #end
      set_with_details
      ext_index_without_progress
    end
    #受注と発注の場合は、comp_product_infoで得られたstock_flag_codeをみて、非在庫管理製品を除いたtotal_quantityを求める。
    def set_product_params
      super
      @mcls.set_stock_and_rels_total_quantity(@table_params, @details) unless params[:add_order_flag] == STR_TRUE #追加発注のときはやらない
    end
  
  end
end