Sha256: d3c271a1961d6678bce9090637ad19fb09a2608071017a8685470ffd6ce4f3c2
Contents?: true
Size: 1.93 KB
Versions: 6
Compression:
Stored size: 1.93 KB
Contents
module Adherent class Payment < ActiveRecord::Base has_many :reglements, :dependent=>:destroy belongs_to :member attr_accessible :amount, :date, :mode validates :amount, :date, :mode, presence:true pick_date_for :date # le montant ne peut être que positif validates_numericality_of :amount, greater_than: 0 # le mode doit être dans les MODES validates_inclusion_of :mode, in: Adherent::MODES after_create :imputation # quand on reçoit un paiement, il faut en réaliser l'imputation, # plusieurs cas de figure sont à envisager. # # Le cas le plus simple est lorsque le montant est inférieur ou égal ou # montant dus par le membre pour les adhésions en cours. # # Donc on impute sur les adhésions du membre non soldées et on regarde s'il reste # quelque chose. # # # def imputation # liste les adhésions non soldées et le montant total dû # pour chaque adhésion non soldée (prise dans l'ordre chrono) # on crée un réglement du montant dû dans la limité du montant du paiement. un_paid_adhs = member.adhesions.order(:to_date).reject {|adh| adh.is_paid?} a_imputer = amount un_paid_adhs.each do |adh| if a_imputer > 0 impute = adh.add_reglement(id, a_imputer) a_imputer -= impute end end end # pour faire une imputation sur une adhesion dont l'id est transmise en argument # TODO faire que la valeur de retour soit true ou false pour # que la méthode créate du controller puisse tester et rediriger en conséquence def imputation_on_adh(adh_id) Adhesion.find(adh_id).add_reglement(id, amount) end # calcule le montant du paiement qui n'a pas été imputé, donc qui # ne correspond pas à des réglements def non_impute amount - reglements(true).sum(:amount) end end end
Version data entries
6 entries across 6 versions & 1 rubygems