# -*- coding: utf-8 -*-
class Graph::MonthlySalesByAreaController < CommLogistics::Base::Controller::PortletController
  def index
#    sale_date_conditions = []
#    if params[:start_target_date] && params[:end_target_date]
#      sale_date_conditions = ["target_date between ? AND ? AND state_code = ? AND invalid_flag_code = ?", params[:start_target_date], params[:end_target_date], Comm::Const::MasterCode::MCODE_STATUS2_COMP, Comm::Const::MasterCode::MCODE_FLAG_OFF]
#    end
    sale_date_conditions = setSalesConditions()
    if params[:product_category_id].blank? || params[:product_set_id].blank?
      noDataToDisplay()
      return 
    end
    
    count = "SUM(IFNULL(sale_details.quantity,1) * sale_details.price)"
    @prefix = "\\"
    if params[:byquantity]
      count = "SUM(IFNULL(sale_details.quantity,0))"
      @prefix = ""
    end

    tmp_monthly_sales = Sale.passign("product_category_id", params[:product_category_id]).passign("product_set_id", params[:product_set_id]).find(:all, :joins => [:sale_details],
                               :select => "sales_area_id, SUM(IFNULL(sale_details.quantity,0)) as sum_quantity, ROUND(#{count},0) as sum_price",
                               :group  => "sales_area_id",
                               :conditions => sale_date_conditions
                               ).only_hashfy()
    #データが一件もなかったら
    if tmp_monthly_sales.empty?
      noDataToDisplay()
      return 
    end
    
    @monthly_sales = tmp_monthly_sales.add_disp_names({:nil_str=>'その他'})
    #p "================================================="
    #require 'pp'
    #pp @monthly_sales
    tmp_sales_condition = sale_date_conditions[0]
    @monthly_sales.each do |area|
      sales_area_id = area['sales_area_id'].to_i
      if sales_area_id > 0
        sale_date_conditions[0] = tmp_sales_condition + " AND sales_area_id=?"
        sale_date_conditions[5] = sales_area_id
      else
        sale_date_conditions[0] = tmp_sales_condition + " AND sales_area_id is ?"
        sale_date_conditions[5] = nil
      end
      area['area_sales'] = Sale.passign("product_category_id", params[:product_category_id]).passign("product_set_id", params[:product_set_id]).find(:all, :joins => [:sale_details],
                                 :select => "user_position_id, SUM(IFNULL(sale_details.quantity,0)) as sum_quantity, ROUND(#{count},0) as sum_price",
                                 :group  => "user_position_id",
                                 :conditions => sale_date_conditions
                                 ).only_hashfy().add_disp_names({:nil_str=>'その他'})
    end
    respond_to do |format|
      format.xml
      format.json
    end
  end
end
