class CustomersReceivingsListsController < CommLogistics::Base::Controller::ListController
  def initialize
    @pdf_cls = CustomersReceivings
    @pdf_sort_column = 'payment_date'
  end
  
  def get_record_list
    @control_keys = 'customers_receivings_lists'
    
    ss = CustomersReceivingsSearch.new
    #ss.post_where_sentence = ' GROUP BY r.customer_id '
    ss.table_alias = {'receivables' => 'r'}
    
    # sortテーブルの置き換えに使用
    join_mcls = []
    ars = ss.search(FLAG_ON, Receivable, join_mcls, params)
    return ars
  end
  
  class CustomersReceivingsSearch < Comm::Tool::SqlSearch
    def get_columns_and_tables(tab, join_lists, params, str_vals)
      str_cols = ' r.id,
                   r.customer_id,
                   r.customer_group_id,
                   r.payment_type_code,
                   r.payment_date,
                   r.cutoff_date,
                   r.total,
                   r.receiving_date '
      
      str_tab = " FROM (SELECT 
                    r.id,
                    r.customer_id,
                    r.customer_group_id,
                    r.payment_type_code,
                    r.cutoff_date,
                    r.payment_date,
                    r.total_price+r.total_duty+r.total_carry+r.total_carry_duty AS total,
                    v.target_date AS receiving_date
                  FROM receivables AS r LEFT JOIN 
                    (SELECT
                      customer_id, 
                      cutoff_date, 
                      MAX(target_date) AS target_date
                    FROM receivings 
                    WHERE target_date >= \'#{params[:start_target_date]}\' 
                      AND state_code=#{MCODE_STATUS2_COMP}
                      AND invalid_flag_code=#{MCODE_FLAG_OFF} 
                    GROUP BY customer_id, cutoff_date
                    ) AS v ON r.customer_id=v.customer_id AND r.cutoff_date=v.cutoff_date 
                  WHERE r.payment_date between \'#{params[:start_target_date]}\' AND \'#{params[:end_target_date]}\' 
                ) AS r "
      return str_cols, str_tab, str_vals
    end
    #空実装
    def set_target_date_to_where(tab, params, str_where)
    end
  end
  
  # 回収予定一覧
  class CustomersReceivings < CommLogistics::Modules::Print::Controller::PdfList
    def initialize(params, mcls=nil)
      @pdf_basename = 'customer_receivings_list'
      @paging_column = 'payment_date'
      @total_columns = ['total']
      @total_title_column = 'payment_date'
      super
    end
  end
end