#
#= supplier_group_payments モデル
# Authors:: Sumiyo Yamamoto
# Copyright:: Copyright (C) OrbusNeich Medical K.K.  2010.
#--
# date        name                   note
# 2010.11.5   Sumiyo Yamamoto        新規登録
#-------------------------------------------------------------------------------
#++
class SupplierGroupPayment < Comm::BaseModel::Master
  include Comm::Const::MasterCode
  belongs_to :supplier_group
  
  named_scope :group_is, lambda{ |id| {
    :conditions => ["`supplier_group_id` = ?", id]
  }}
  named_scope :payment_condition_code_is, lambda{ |pcc|{
    :conditions => ["`payment_condition_code` = ?", pcc.to_i]
  }}
  
  def validate
    ars = SupplierGroupPayment.group_is(self.supplier_group_id).id_is_not(self.id)
    ars.each do |ar|
      if (self.payment_condition_price == ar.payment_condition_price) ||
         (self.payment_condition_price.blank? && ar.payment_condition_price.blank?)
        raise UserOperationError, EMJ0005 + "(空欄を含む)条件金額は重複して登録できません。ID:"+ar.id.to_s
      end
    end
    
    ars << self
    default_payment = nil
    ars.each do |ar|
      if ar.payment_condition_code.blank? && ar.payment_condition_price.blank?
        default_payment = ar
        break
      end
    end
    unless default_payment
      raise UserOperationError, EMJ0005 + "必ず既定の支払方法（支払条件/金額なし）の登録が必要です。"
    end
    
    #条件／金額のチェック
    if (self.payment_condition_code.blank? && !self.payment_condition_price.blank?) ||
       (!self.payment_condition_code.blank? && self.payment_condition_price.blank?)
      raise UserOperationError, EMJ0005 + "条件／金額のうち一方だけを空欄にすることはできません。"
    end
    #手形の必須項目チェック
    if self.payment_type_code.to_i == MCODE_PAYMENT_TYPE_BILL
      if self.encach_month_code.blank? || self.encach_date_code.blank?
        raise UserOperationError, EMJ0005 + "手形の場合は現金化月・現金化日を指定してください。"
      end
    end
  end
  
  def get_id_str(ar)
    if ar.id
      return ar.id.to_s
    else
      return "入力データ"
    end
  end
  
  def get_amount_cond(ar)
    pcc = ar.payment_condition_code.to_s
    len = pcc.length
    amount = pcc[0, (len - 1)].to_i
    cond = pcc[(len - 1), 1].to_i
    return amount, cond
  end
end
