From: Lunar Date: Sat, 12 Apr 2014 14:08:29 +0000 (+0200) Subject: Correction des rappels d'adhésion lorsque le renouvellement a été fait avant la date... X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/commitdiff_plain/e3849b258d72a17748bd07c931980d382ac88082 Correction des rappels d'adhésion lorsque le renouvellement a été fait avant la date anniversaire --- diff --git a/features/send-membership-reminders.feature b/features/send-membership-reminders.feature index bf08afb..a7921bc 100644 --- a/features/send-membership-reminders.feature +++ b/features/send-membership-reminders.feature @@ -41,6 +41,11 @@ Fonctionnalité: prévenir les membres qu'il faut renouveler leur cotisation Lorsque j'exécute send-membership-reminders Alors aucun email ne doit avoir été envoyé + Scénario: Renouvellement de la cotisation avant la date anniversaire + Soit une base avec Christian qui a adhéré le 2013-04-22 et payé sa dernière cotisation le 2014-03-24 + Lorsque j'exécute send-membership-reminders le 2014-04-12 + Alors aucun email ne doit avoir été envoyé + Scénario: Script pas exécuté tous les jours Soit une base avec Jane qui doit renouveler sa cotisation d'ici 9 jours Et qui a déjà reçu un appel 21 jours plus tôt diff --git a/features/step_definitions/commands.rb b/features/step_definitions/commands.rb index cde2215..28e0ab3 100644 --- a/features/step_definitions/commands.rb +++ b/features/step_definitions/commands.rb @@ -25,6 +25,12 @@ When /^(?:que )?j'exécute send-membership-reminders$/ do NosOignons.send_membership_reminders! end +When /^(?:que )?j'exécute send-membership-reminders le ([0-9]{4})-([0-9]{2})-([0-9]{2})$/ do |year, month, day| + Timecop.travel(Date.new(year.to_i, month.to_i, day.to_i)) do + NosOignons.send_membership_reminders! + end +end + When /^j'exécute send\-member\-emails\-to\-advisors$/ do NosOignons.send_member_emails_to_advisors! end diff --git a/lib/nos_oignons.rb b/lib/nos_oignons.rb index 4ccd04f..dec787e 100644 --- a/lib/nos_oignons.rb +++ b/lib/nos_oignons.rb @@ -54,10 +54,10 @@ module NosOignons def send_membership_reminders! today = Time.now.to_date NosOignons::Member.all.select(&:up_to_date?).each do |member| + reminders = NosOignons::Reminder.all.sort_by(&:days) anniversary = Time.new(today.year, member.joined_on.month, member.joined_on.day).to_date - next if member.membership_fee_paid_on >= anniversary - reminders = NosOignons::Reminder.all.sort_by(&:days) + next if member.membership_fee_paid_on >= anniversary - reminders.last.days reminders.each do |reminder| next if (anniversary - today).to_i > reminder.days next if member.reminded_on && (anniversary - member.reminded_on).to_i <= reminder.days