#
#= invoice_prices モデル
# Authors:: Sumiyo Yamamoto
# Copyright:: Copyright (C) OrbusNeich Medical K.K.  2010.
#--
# date        name                   note
# 2010.11.5   Sumiyo Yamamoto        新規登録
#-------------------------------------------------------------------------------
#++
class InvoicePrice < Comm::BaseModel::Master
  #== named_scope
  #-----------------------------------------------------------------#++
# disp_name_controllerの使用箇所がコメントになっていたのでこちらも一応コメントで残しておきます
# 同名のメソッドがあるので万一復活させるときは気をつけましょう
#  named_scope :product_is, lambda {|set_id, id|
#    {:conditions => [
#      'product_set_id = ? AND (product_id = ? OR product_id = ?)',
#      set_id, id, Comm::Const::DispNameLists::LIST_ALL
#    ]}
#  }
  
  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 :supplier_id_is, lambda{ |id| {
    :conditions => ["supplier_id = ?", id.to_i]
  }}
  named_scope :product_set_is, lambda{ |id| {
    :conditions => ["product_set_id = ?", id.to_i]
  }}
  named_scope :product_is, lambda{ |id| {
    :conditions => ["product_id = ?", id.to_i]
  }}
  
  named_scope :find_target, lambda{ |params| {
    :conditions => ["warehouse_id = ? AND #{params[:customer_id].blank? ? "customer_id IS NULL" : "customer_id=" + params[:customer_id].to_s} AND supplier_id = ? AND currency_type_code = ?", params[:warehouse_id].to_i, params[:supplier_id].to_i, params[:currency_type_code].to_i]
  }}
  def validate
    emsg = ''
    #ars = InvoicePrice.warehouse_id_is(self.warehouse_id).supplier_id_is(self.supplier_id).product_set_is(self.product_set_id).product_is(self.product_id).id_is_not(self.id)
    
    ars = InvoicePrice.find(:all, :conditions => ["#{get_sql_cond_null("customer_id", "=")} AND warehouse_id=? AND supplier_id=? AND product_category_id=? AND product_set_id=? AND product_id=? AND #{get_sql_cond_null("id", "!=")}",
                                                     self.warehouse_id, self.supplier_id, self.product_category_id, self.product_set_id, self.product_id])
    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
