#
#= warehouses_customers モデル
# Authors:: Sumiyo Yamamoto
# Copyright:: Copyright (C) OrbusNeich Medical K.K.  2010.
#--
# date        name                   note
# 2010.11.5   Sumiyo Yamamoto        新規登録
#-------------------------------------------------------------------------------
#++
class WarehousesCustomer < Comm::BaseModel::Master
  named_scope :customer_id_is, lambda{ |id| {
    :conditions => ["customer_id = ?", id.to_i]
  }}
  named_scope :warehouse_id_is, lambda{ |id| {
    :conditions => ["warehouse_id = ?", id.to_i]
  }}
  named_scope :accept_order_trigger_code_is, lambda{ |code| {
    :conditions => ["accept_order_trigger_code = ?", code.to_i]
  }}
  named_scope :shipment_customer_id_is, lambda{ |id|
    if id
      {:conditions => ["shipment_customer_id = ?", id.to_i]}
    else
      {:conditions => ["shipment_customer_id is NULL"]}
    end
  }
  named_scope :delivery_id_is, lambda{ |id| 
    if id 
      { :conditions => ["delivery_id = ?", id.to_i]}
    else
      { :conditions => ["delivery_id is NULL"]}
    end
  }
  def self.same_warehouse_and_customer?(warehouse_id, customer_id)
    ars = find(:all, :conditions => ["warehouse_id=? AND customer_id=? AND identical_flag_code=?", warehouse_id, customer_id, FLAG_ON])
    return ars && ars.length > 0
  end
  
  def validate
    emsg = ''
    #accept order_trigger_codeは一意条件に設定しない
    #ars = WarehousesCustomer.id_is_not(self.id).customer_id_is(self.customer_id).warehouse_id_is(self.warehouse_id).shipment_customer_id_is(self.shipment_customer_id).delivery_id_is(self.delivery_id)
    ars = WarehousesCustomer.find(:all,
                                  :conditions => ["customer_id=? AND warehouse_id=? AND #{get_sql_cond_null("shipment_customer_id")} AND #{get_sql_cond_null("delivery_id")} AND #{get_sql_cond_null("id", "!=")}",
                                                   self.customer_id, self.warehouse_id])
    Rails.logger.debug("□DEBUG:ars:"+ars.inspect)
    record_num = ars.length
    if record_num > 0
       ids = ars.collect{|ar| ar.id}
       emsg << EMJ0005
       emsg << "指定の納品先・得意先・配送先・着荷場所の組み合わせは既に登録されています。"
       emsg << "ID:"+ids.inspect
       raise UserOperationError, emsg
    end
  end

end
