From: Lunar Date: Fri, 18 Jun 2021 15:03:33 +0000 (+0200) Subject: Correction sur les rappels pour les adhésions de janvier X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/commitdiff_plain/dbc09190540223245b4e75fc3c7ea2d0690a1a5b?ds=sidebyside;hp=c94be6fd9c3d76c88d0e64d26673d0904e49ca07 Correction sur les rappels pour les adhésions de janvier --- diff --git a/features/send-membership-reminders.feature b/features/send-membership-reminders.feature index 89dfbd4..9526dd1 100644 --- a/features/send-membership-reminders.feature +++ b/features/send-membership-reminders.feature @@ -85,6 +85,29 @@ Fonctionnalité: prévenir les membres qu'il faut renouveler leur cotisation Lorsque j'exécute send-membership-reminders Alors un dernier rappel pour la cotisation doit avoir été envoyé + Scénario: Appel un mois avant si l’anniversaire est en décembre + Soit une base avec Fred qui a adhérée le 2017-12-05 et payé sa dernière cotisation le 2018-12-05 + Lorsque j'exécute send-membership-reminders le 2019-11-05 + Alors 1 email doit avoir été envoyé + + Scénario: Appel 30 jours avant si l’anniversaire est en janvier + Soit une base avec Bruno qui a adhéré le 2018-01-05 et payé sa dernière cotisation le 2019-01-05 + Lorsque j'exécute send-membership-reminders le 2019-12-06 + Alors 1 email doit avoir été envoyé + + Scénario: Premier rappel 10 jours avant si l’anniversaire est en janvier + Soit une base avec Bruno qui a adhéré le 2018-01-05 et payé sa dernière cotisation le 2019-01-05 + Et qui a déjà reçu un appel le 2019-12-06 + Lorsque j'exécute send-membership-reminders le 2019-12-26 + Alors 1 email doit avoir été envoyé + + Scénario: Deuxième rappel 2 jours avant si l’anniversaire est au 1er janvier + Soit une base avec Bruno qui a adhéré le 2018-01-01 et payé sa dernière cotisation le 2019-01-01 + Et qui a déjà reçu un appel le 2019-12-02 + Et qui a déjà reçu un appel le 2019-12-22 + Lorsque j'exécute send-membership-reminders le 2019-12-30 + Alors 1 email doit avoir été envoyé + Scénario: Plusieurs messages Soit une base avec Pierre, à jour de cotisation Et avec Jane qui doit renouveler sa cotisation d'ici 10 jours diff --git a/features/step_definitions/members.rb b/features/step_definitions/members.rb index d3d9b7c..67d31c5 100644 --- a/features/step_definitions/members.rb +++ b/features/step_definitions/members.rb @@ -59,7 +59,7 @@ Given /^(?:une base )?avec (\w+)(, à jour de cotisation| qui n'a pas payé sa c create_new_member(name, joined_on, paid_on) end -Given /^une base avec (\w+) qui a adhéré le ([0-9-]+) et payé sa dernière cotisation le ([0-9-]+)$/ do |name, joined_on, paid_on| +Given /^une base avec (\w+) qui a adhérée? le ([0-9-]+) et payé sa dernière cotisation le ([0-9-]+)$/ do |name, joined_on, paid_on| create_new_member(name, joined_on, paid_on) end @@ -118,6 +118,12 @@ Given /^qui a déjà reçu un appel (\d+) jours plus tôt$/ do |days_ago| end end +Given /^qui a déjà reçu un appel le ([0-9-]+)$/ do |date| + Timecop.travel(Time.parse(date)) do + NosOignons::ReminderDb.instance.record(OpenStruct.new(@last_member)) + end +end + When /^j'ajoute une fiche correcte pour une nouvelle adhésion$/ do @file = member_filename_for_id(new_id) File.write @file, render_member_file(EXTRA_MEMBER) diff --git a/lib/nos_oignons.rb b/lib/nos_oignons.rb index 72cea22..e753078 100644 --- a/lib/nos_oignons.rb +++ b/lib/nos_oignons.rb @@ -70,10 +70,10 @@ module NosOignons def send_membership_reminders! today = Time.now.to_date + reminders = NosOignons::Reminder.all.sort_by(&:days) NosOignons::Member.all.select(&:up_to_date?).each do |member| - next if member.membership_fee_paid_on.year == today.year - reminders = NosOignons::Reminder.all.sort_by(&:days) - anniversary = Time.new(today.year, member.joined_on.month, + next if member.membership_fee_paid_on.year == (today + reminders.last.days).year + anniversary = Time.new(today.next_month.year, member.joined_on.month, member.joined_on.day).to_date next if member.membership_fee_paid_on >= anniversary - reminders.last.days reminders.each do |reminder|