Sha256: 511a24e63105c78a17c60ed8f6af7c0d502f168480aecb6f09b8d3173e77fd46

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

module Adherent
  class Member < ActiveRecord::Base
    
    
    pick_date_for :birthdate
    
    belongs_to :organism, class_name: '::Organism'
    has_one :coord, dependent: :destroy
    has_many :adhesions
    has_many :payments
    
    validates :number, :name, :forname , :organism_id, :presence=>true
    validates_uniqueness_of  :number, :scope=>:organism_id
    
    # arel des adhésions impayées par ordre de date
    def unpaid_adhesions
      adhesions.order(:to_date).unpaid
    end
    
    # indique s'il y a des adhésions impayées pour ce membre
    def unpaid_adhesions?
      unpaid_adhesions.any?
    end
    
    # donne le montant total des adhésions impayées
    def unpaid_amount
      unpaid_adhesions.to_a.sum(&:due)
    end
    
    # renvoie le prenom NOM
    def to_s
      [forname, name.upcase].join(' ')
    end
    
    # renvoie une nouvelle adhésion préremplie avec les éléments issus de la
    # dernière adhésion.
    # il est possible d'imposer le montant si nécessaire
    def next_adhesion(amount = nil)
      amount ||= 0
      adh = adhesions(true).order('to_date').last
      if adh
        vals =  adh.next_adh_values(amount)
      else
        vals = Adhesion::next_adh_values(amount)
      end
      adhesions.new(vals)
    end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
adherent-0.2.1 app/models/adherent/member.rb
adherent-0.2.0 app/models/adherent/member.rb