class StudentMilkOrder < Base::StudentMilkOrder
  associations_for legacy: true do |a|
    a.belongs_to :school
    a.belongs_to :classroom, keys: :ClassID
    a.belongs_to :student
    a.belongs_to :cafeteria_transaction, optional: true, keys: :LTID,
      class_name: 'StudentCafeteriaTransaction', inverse_of: :milk_order
  end

  validate :changes_to_charged_order, if: :charge_date?

  after_initialize :set_school

  after_save :destroy_zero_quantity

  scope :by_order_date, ->(date) { where(order_date: date) if date }

  private
    def set_school
      self.school = student.school if school_id.zero?
    end

    def changes_to_charged_order
      return unless quantity_changed?

      errors.add(:base, 'Cannot change a charged order')
    end

    def destroy_zero_quantity
      destroy! if quantity.zero?
    end
end
