class Order < CommLogistics::Base::Model::SuperiorOrder
  include Comm::Module::Model::Logging
  #has_many :order_details, :dependent => :destroy
  has_many :child_details,
           :class_name => 'OrderDetail',
           :dependent => :destroy,
           :order => 'seq_number'
  has_many :purchases
  belongs_to :supplier
  
    #関連進捗率の100％となる本数を計算
  NOT_UPDATE_ACCOUNT_TYPES=[MCODE_PURCHASE_TYPE_EXTEND_UNLOAD,
                            MCODE_PURCHASE_TYPE_EXTEND_LOAD,
                            MCODE_PURCHASE_TYPE_STORING,
                            MCODE_PURCHASE_TYPE_PROCESS_UNLOAD]

  def self.set_stock_and_rels_total_quantity(table_params, details)
    super
    if table_params['order_trigger_code'].to_i==MCODE_ORDER_TRIGGER_ORDER
      #ars = TableRel.find(:all, :conditions => ["invalid_flag_code=#{MCODE_FLAG_OFF} AND order_type_code = #{table_params['order_type_code']}"])
      ars = TableRel.target_rels(table_params, 'orders')
      rels_total_quantity=0
      ars.each do |ar|
        if ar.table_name=='purchases'
          if NOT_UPDATE_ACCOUNT_TYPES.include?(ar.trans_type_code)
            rels_total_quantity = rels_total_quantity + table_params['stock_total_quantity'].to_i
          else
            rels_total_quantity = rels_total_quantity + table_params['total_quantity'].to_i
          end
        end
      end
      table_params['rels_total_quantity'] = rels_total_quantity
    end
  end
  
  def self.get_all_rels(id)
    ar = find_by_id(id)
    #受注/発注のtotal_quantityを求める。
    total_quantity = ar.total_quantity.to_i
    #非在庫品を除いた合計本数を求める。
    stock_total_quantity = ar.stock_total_quantity.to_i
    #受注/発注
    table_name = self.name.tableize
    #関連処理の順番を決める
    trels = TableRel.target_rels(ar, table_name)
    if trels.blank?
      order_by = "r.table_name, p.purchase_type_code, r.record_id"
    else
      order_by = "field(r.table_name, '#{trels.collect{|item| item.table_name}.join("','")}'), p.purchase_type_code, r.record_id"
    end
    
    #関連処理
    rels = Rel.find_by_sql(["SELECT r.table_name, r.record_id, #{total_quantity} AS total_quantity, #{stock_total_quantity} AS stock_total_quantity
                             FROM rels AS r 
                             LEFT JOIN purchases AS p ON r.table_name='purchases' AND r.record_id=p.id
                             WHERE r.parent_table_name='#{table_name}' AND r.parent_record_id=#{id}
                             ORDER BY #{order_by} "])
    return rels
  end

end
