]> nos-oignons.net Git - gestion-adh.git/commitdiff
Correction ('reçu' ou 'récépissé' se dit 'receipt' en anglais, et non
authorquidame <quidame@poivron.org>
Sat, 14 Dec 2013 14:26:09 +0000 (15:26 +0100)
committerquidame <quidame@poivron.org>
Sat, 14 Dec 2013 14:26:09 +0000 (15:26 +0100)
'reciept'): modification des noms de fichiers et de leur contenu.

13 files changed:
README
bin/create-membership-fee-receipt [new file with mode: 0755]
bin/create-membership-fee-reciept [deleted file]
features/create-membership-fee-receipt.feature [new file with mode: 0644]
features/create-membership-fee-reciept.feature [deleted file]
features/step_definitions/commands.rb
features/step_definitions/receipts.rb [new file with mode: 0644]
features/step_definitions/reciepts.rb [deleted file]
features/support/env.rb
lib/nos_oignons.rb
lib/nos_oignons/member.rb
lib/nos_oignons/receipt.rb [new file with mode: 0644]
lib/nos_oignons/reciept.rb [deleted file]

diff --git a/README b/README
index 6d03e990af49dc1ce2180b71d6718901eedf537f..f0eb47eedbe4db5618f1e781ff4acf7c1ba608f2 100644 (file)
--- a/README
+++ b/README
@@ -119,7 +119,7 @@ Ce script a vocation a être executé tous les mois afin que le comité
 puisse convoquer une assemblée générale extraordinaire, même en cas de
 défaillance du conseil d'administration.
 
-`create-membership-fee-reciept`
+`create-membership-fee-receipt`
 -------------------------------
 
 Permet de créer un reçu de cotisation pour les membres en faisant
@@ -127,12 +127,12 @@ la demande.
 
 Exemple d'utilisation :
 
-    bin/create-membership-fee-reciept 000042 10,00
+    bin/create-membership-fee-receipt 000042 10,00
 
 Cela crééra un reçu pour le membre 000042 pour une cotisation d'un
 montant de 10,00€. Le reçu est généré sous forme d'un fichier PDF dans
-le répertoire spécifié par la variable d'environnement NOS_OIGNONS_RECIEPTS_DIR
-(ou le répertoire `reciepts` dans le répertoire courant).
+le répertoire spécifié par la variable d'environnement NOS_OIGNONS_RECEIPTS_DIR
+(ou le répertoire `receipts` dans le répertoire courant).
 
 Il faut créer le répertoire avant utilisation s'il n'existe pas déjà.
 
diff --git a/bin/create-membership-fee-receipt b/bin/create-membership-fee-receipt
new file mode 100755 (executable)
index 0000000..2fa9340
--- /dev/null
@@ -0,0 +1,21 @@
+#!/usr/bin/ruby1.9.1
+#-*- coding: utf-8 -*-
+
+require 'rubygems'
+require 'bundler'
+Bundler.setup
+
+require 'nos_oignons'
+
+begin
+  member_id = ARGV[0]
+  amount = ARGV[1]
+  unless member_id && amount
+    $stderr.puts "Usage: #{$PROGRAM_NAME} 000042 10,00"
+    exit 1
+  end
+  NosOignons.create_membership_fee_receipt!(member_id, amount)
+rescue ArgumentError => ex
+  $stderr.puts "E: #{ex}"
+  exit 1
+end
diff --git a/bin/create-membership-fee-reciept b/bin/create-membership-fee-reciept
deleted file mode 100755 (executable)
index fae26aa..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/ruby1.9.1
-#-*- coding: utf-8 -*-
-
-require 'rubygems'
-require 'bundler'
-Bundler.setup
-
-require 'nos_oignons'
-
-begin
-  member_id = ARGV[0]
-  amount = ARGV[1]
-  unless member_id && amount
-    $stderr.puts "Usage: #{$PROGRAM_NAME} 000042 10,00"
-    exit 1
-  end
-  NosOignons.create_membership_fee_reciept!(member_id, amount)
-rescue ArgumentError => ex
-  $stderr.puts "E: #{ex}"
-  exit 1
-end
diff --git a/features/create-membership-fee-receipt.feature b/features/create-membership-fee-receipt.feature
new file mode 100644 (file)
index 0000000..c3c5736
--- /dev/null
@@ -0,0 +1,29 @@
+# language: fr
+
+Fonctionnalité: générer des reçus pour les cotisations des membres
+  En tant que membre du C.A. de Nos oignons, j'aimerais pouvoir générer
+  un reçu de cotisation lorsqu'un·e adhérent·e me le demande.
+
+  Scénario: Création du reçu
+    Soit une base avec Jane, membre 000001, ayant cotisé le 2013-06-03
+    Lorsque j'exécute `create-membership-fee-receipt 000001 10,00`
+    Alors le fichier "receipt-000001-2013-06-03.pdf" doit avoir été créé avec les reçus
+    Et il doit contenir le nom et l'adresse de Jane, la date et le montant de la cotisation
+
+  Scénario: Mauvais numéro de membre
+    Soit une base avec uniquement Jane, membre 000001
+    Lorsque j'exécute `create-membership-fee-receipt 000002 10,00`
+    Alors je dois voir comme erreur "unknown member"
+
+  Scénario: Aucune cotisation
+    Soit une base avec Jane, membre 000001, n'ayant jamais cotisé
+    Lorsque j'exécute `create-membership-fee-receipt 000001 10,00`
+    Alors je dois voir comme erreur "membership fee has not been paid for this year"
+
+  Scénario: Manque le numéro de l'adhésion
+    Lorsque j'exécute `create-membership-fee-receipt`
+    Alors je dois voir comme erreur "Usage:"
+
+  Scénario: Manque le montant de l'adhésion
+    Lorsque j'exécute `create-membership-fee-receipt 000001`
+    Alors je dois voir comme erreur "Usage:"
diff --git a/features/create-membership-fee-reciept.feature b/features/create-membership-fee-reciept.feature
deleted file mode 100644 (file)
index d21fb71..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# language: fr
-
-Fonctionnalité: générer des reçus pour les cotisations des membres
-  En tant que membre du C.A. de Nos oignons, j'aimerais pouvoir générer
-  un reçu de cotisation lorsqu'un·e adhérent·e me le demande.
-
-  Scénario: Création du reçu
-    Soit une base avec Jane, membre 000001, ayant cotisé le 2013-06-03
-    Lorsque j'exécute `create-membership-fee-reciept 000001 10,00`
-    Alors le fichier "reciept-000001-2013-06-03.pdf" doit avoir été créé avec les reçus
-    Et il doit contenir le nom et l'adresse de Jane, la date et le montant de la cotisation
-
-  Scénario: Mauvais numéro de membre
-    Soit une base avec uniquement Jane, membre 000001
-    Lorsque j'exécute `create-membership-fee-reciept 000002 10,00`
-    Alors je dois voir comme erreur "unknown member"
-
-  Scénario: Aucune cotisation
-    Soit une base avec Jane, membre 000001, n'ayant jamais cotisé
-    Lorsque j'exécute `create-membership-fee-reciept 000001 10,00`
-    Alors je dois voir comme erreur "membership fee has not been paid for this year"
-
-  Scénario: Manque le numéro de l'adhésion
-    Lorsque j'exécute `create-membership-fee-reciept`
-    Alors je dois voir comme erreur "Usage:"
-
-  Scénario: Manque le montant de l'adhésion
-    Lorsque j'exécute `create-membership-fee-reciept 000001`
-    Alors je dois voir comme erreur "Usage:"
index c9b6f8d1c15606afddbd848bf5fe7f30862e7448..cde2215e54c6baad2fdb9ad1b333bbeb6e4edc45 100644 (file)
@@ -29,7 +29,7 @@ When /^j'exécute send\-member\-emails\-to\-advisors$/ do
   NosOignons.send_member_emails_to_advisors!
 end
 
-When /^j'exécute `(create\-membership\-fee\-reciept.*)`$/ do |cmd|
+When /^j'exécute `(create\-membership\-fee\-receipt.*)`$/ do |cmd|
   run_simple cmd, false
 end
 
diff --git a/features/step_definitions/receipts.rb b/features/step_definitions/receipts.rb
new file mode 100644 (file)
index 0000000..7caa60b
--- /dev/null
@@ -0,0 +1,19 @@
+#-*- coding: utf-8 -*-
+
+Then /^le fichier "(.*)" doit avoir été créé avec les reçus$/ do |filename|
+  @receipt_path = "#{ENV['NOS_OIGNONS_RECEIPTS_DIR']}/#{filename}"
+  expect(File.exists?(@receipt_path)).to be_true
+end
+
+Then /^il doit contenir le nom et l'adresse de (\w+), la date et le montant de la cotisation$/ do |name|
+  # XXX: not nice to hard code that 10,00
+  amount = "10,00"
+  # XXX: not nice to relay that it's the last member either
+  expect(@last_member['name']).to eql(name)
+
+  content = `pdftotext #{@receipt_path} -`.gsub(/\n/, ' ')
+  expect(content).to include(@last_member['name'])
+  expect(content).to include(@last_member['address'])
+  expect(content).to include(DateTime.strptime(@last_member['membership_fee_paid_on'], "%Y-%m-%d").strftime("%d/%m/%Y"))
+  expect(content).to include(amount)
+end
diff --git a/features/step_definitions/reciepts.rb b/features/step_definitions/reciepts.rb
deleted file mode 100644 (file)
index a3cb48d..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#-*- coding: utf-8 -*-
-
-Then /^le fichier "(.*)" doit avoir été créé avec les reçus$/ do |filename|
-  @reciept_path = "#{ENV['NOS_OIGNONS_RECIEPTS_DIR']}/#{filename}"
-  expect(File.exists?(@reciept_path)).to be_true
-end
-
-Then /^il doit contenir le nom et l'adresse de (\w+), la date et le montant de la cotisation$/ do |name|
-  # XXX: not nice to hard code that 10,00
-  amount = "10,00"
-  # XXX: not nice to relay that it's the last member either
-  expect(@last_member['name']).to eql(name)
-
-  content = `pdftotext #{@reciept_path} -`.gsub(/\n/, ' ')
-  expect(content).to include(@last_member['name'])
-  expect(content).to include(@last_member['address'])
-  expect(content).to include(DateTime.strptime(@last_member['membership_fee_paid_on'], "%Y-%m-%d").strftime("%d/%m/%Y"))
-  expect(content).to include(amount)
-end
index de7fbc5e14ae637c429eea3eebbd148b24b2e712..1d19df75c3376f39ed6e0b585db982b5de320970 100644 (file)
@@ -21,11 +21,11 @@ Before do
   @aruba_timeout_seconds = 20
   @orig_wiki_path = ENV['NOS_OIGNONS_BOARD_WIKI_PATH']
   @orig_reminder_db_path = ENV['NOS_OIGNONS_REMINDER_DB']
-  @orig_reciepts_dir = ENV['NOS_OIGNONS_RECIEPTS_DIR']
+  @orig_receipts_dir = ENV['NOS_OIGNONS_RECEIPTS_DIR']
   ENV['NOS_OIGNONS_REMINDER_DB'] = File.join(current_dir, 'reminders.yaml')
   NosOignons::ReminderDb.instance.reload!
-  ENV['NOS_OIGNONS_RECIEPTS_DIR'] = File.join(current_dir, 'reciepts')
-  FileUtils.mkdir(ENV['NOS_OIGNONS_RECIEPTS_DIR'])
+  ENV['NOS_OIGNONS_RECEIPTS_DIR'] = File.join(current_dir, 'receipts')
+  FileUtils.mkdir(ENV['NOS_OIGNONS_RECEIPTS_DIR'])
   Mail.defaults do
     delivery_method :test
   end
@@ -35,6 +35,6 @@ end
 After do
   ENV['NOS_OIGNONS_REMINDER_DB'] = @orig_reminder_db_path
   ENV['NOS_OIGNONS_BOARD_WIKI_PATH'] = @orig_wiki_path
-  ENV['NOS_OIGNONS_RECIEPTS_DIR'] = @orig_reciepts_dir
+  ENV['NOS_OIGNONS_RECEIPTS_DIR'] = @orig_receipts_dir
   FileUtils.remove_entry_secure @tmpdir
 end
index 0f68c7c3a6abf19e32c562247027a4f8c8b926b3..66116bf7a5f7ba41892d23c3fb37677a4bc219b3 100644 (file)
@@ -26,9 +26,9 @@ module NosOignons
 
   # The following class methods are all meant to be called as command-line scripts
   class << self
-    def create_membership_fee_reciept!(member_id, amount)
+    def create_membership_fee_receipt!(member_id, amount)
       member = NosOignons::Member.new(member_id)
-      member.create_reciept!(amount)
+      member.create_receipt!(amount)
     end
 
     def list_emails!
index 4073cc47d63cf04ba8f7d76fcccd4a7ca813da50..4bf23ca6be693b7d4976eab37a4e98a647ab6f72 100644 (file)
@@ -104,11 +104,11 @@ module NosOignons
       ReminderDb.instance.last_reminder(self)
     end
 
-    def create_reciept!(amount)
-      require 'nos_oignons/reciept'
+    def create_receipt!(amount)
+      require 'nos_oignons/receipt'
 
-      reciept = Reciept.new(self, amount)
-      reciept.create!
+      receipt = Receipt.new(self, amount)
+      receipt.create!
     end
   end
 end
diff --git a/lib/nos_oignons/receipt.rb b/lib/nos_oignons/receipt.rb
new file mode 100644 (file)
index 0000000..87869f7
--- /dev/null
@@ -0,0 +1,109 @@
+#-*- coding: utf-8 -*-
+
+require 'prawn'
+require 'prawn/measurement_extensions'
+
+module NosOignons
+  class Receipt
+    attr_reader :member, :amount
+
+    def initialize(member, amount)
+      @member = member
+      unless member.up_to_date?
+        raise ArgumentError.new("membership fee has not been paid for this year")
+      end
+      @amount = amount
+      @now = Time.now
+    end
+
+    def filename
+      dir = ENV['NOS_OIGNONS_RECEIPTS_DIR'] || 'receipts'
+      "#{dir}/receipt-#{@member.member_id}-#{@member.membership_fee_paid_on.strftime("%Y-%m-%d")}.pdf"
+    end
+
+    WINDOW_LEFT = 110.mm
+    WINDOW_TOP = 50.mm
+    WINDOW_RIGHT = 25.mm
+    WINDOW_BOTTOM = 80.mm
+    WINDOW_WIDTH = 85.mm
+    BODY_LEFT = 25.mm
+    BODY_WIDTH = 210.mm - (BODY_LEFT * 2)
+    FOOTER_HEIGHT = 25.mm
+    DARK_LOGO_COLOR = '57075f'
+    FONT_PATH = File.expand_path("../../../share/fonts/OpenSans/OpenSans.ttf", __FILE__)
+    LOGO_PATH = File.expand_path("../../../share/images/nos-oignons.png", __FILE__)
+
+    def generate_header(pdf)
+      header_height = pdf.bounds.height / 6
+      pdf.bounding_box([0, pdf.cursor], :width => pdf.bounds.width, :height => header_height) do
+        logo_width = 2 * pdf.bounds.width / 3
+        pdf.bounding_box([0, pdf.bounds.top], :width => logo_width, :height => pdf.bounds.height) do
+          pdf.image LOGO_PATH, :width => pdf.bounds.width, :align => :center, :vposition => :center
+        end
+        pdf.bounding_box([logo_width, pdf.bounds.top], :width => pdf.bounds.width / 3, :height => pdf.bounds.height) do
+          pdf.text 'Nœuds de sortie Tor financés par la communauté', :align => :center, :valign => :center
+        end
+      end
+      pdf.bounding_box([WINDOW_LEFT - pdf.bounds.absolute_left, pdf.bounds.absolute_top - WINDOW_TOP], :width => WINDOW_WIDTH, :height => WINDOW_BOTTOM - WINDOW_TOP) do
+        pdf.text member.name + "\n" + member.address, :valign => :bottom
+      end
+    end
+
+    def generate_body(pdf)
+      body_height = pdf.cursor - (pdf.bounds.height / 6)
+      pdf.move_down 30
+      pdf.bounding_box([BODY_LEFT, pdf.cursor], :width => BODY_WIDTH, :height => body_height) do
+        pdf.font_size(16) do
+          pdf.pad(25) do
+            pdf.text "Objet : reçu de cotisation"
+          end
+          margin = pdf.bounds.width / 6
+          pdf.pad_bottom(30) do
+            pdf.bounding_box([WINDOW_LEFT - pdf.bounds.absolute_left, pdf.cursor], :width => WINDOW_WIDTH) do
+              pdf.text "Le #{@now.strftime("%d/%m/%Y")}"
+            end
+          end
+          pdf.text <<-EOT.gsub(/^            /, '').gsub(/\n/, ' ')
+            Nous avons bien enregistré la cotisation annuelle de #{member.name}
+            à l'association Nos oignons reçue à la date du
+            #{member.membership_fee_paid_on.strftime("%d/%m/%Y")} pour un montant
+            de #{amount}€.
+          EOT
+          pdf.pad_top(30) do
+            pdf.bounding_box([margin, pdf.cursor], :width => 5 * margin) do
+              pdf.text "Le Conseil d'Administration"
+            end
+          end
+        end
+      end
+    end
+
+    def generate_footer(pdf)
+      pdf.bounding_box([0, FOOTER_HEIGHT + pdf.bounds.bottom], :width => pdf.bounds.width, :height => FOOTER_HEIGHT) do
+        pdf.pad_bottom(5) do
+          pdf.stroke_color DARK_LOGO_COLOR
+          pdf.dash 5
+          pdf.stroke_horizontal_rule
+        end
+        pdf.font_size(10) do
+          pdf.column_box([0, pdf.cursor], :width => pdf.bounds.width, :columns => 2) do
+            pdf.text NosOignons::CONTACT_INFO, :align => :center, :valign => :center
+            pdf.bounds.move_past_bottom
+            pdf.text NosOignons::POSTAL_ADDRESS, :align => :center, :valign => :center
+          end
+        end
+      end
+    end
+
+    def create!
+      raise "File exists!" if File.exists?(filename)
+      Prawn::Document.generate(filename) do |pdf|
+        pdf.font(FONT_PATH) do
+          generate_header(pdf)
+          generate_body(pdf)
+          generate_footer(pdf)
+       end
+      end
+    end
+  end
+end
diff --git a/lib/nos_oignons/reciept.rb b/lib/nos_oignons/reciept.rb
deleted file mode 100644 (file)
index 24948b5..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-#-*- coding: utf-8 -*-
-
-require 'prawn'
-require 'prawn/measurement_extensions'
-
-module NosOignons
-  class Reciept
-    attr_reader :member, :amount
-
-    def initialize(member, amount)
-      @member = member
-      unless member.up_to_date?
-        raise ArgumentError.new("membership fee has not been paid for this year")
-      end
-      @amount = amount
-      @now = Time.now
-    end
-
-    def filename
-      dir = ENV['NOS_OIGNONS_RECIEPTS_DIR'] || 'reciepts'
-      "#{dir}/reciept-#{@member.member_id}-#{@member.membership_fee_paid_on.strftime("%Y-%m-%d")}.pdf"
-    end
-
-    WINDOW_LEFT = 110.mm
-    WINDOW_TOP = 50.mm
-    WINDOW_RIGHT = 25.mm
-    WINDOW_BOTTOM = 80.mm
-    WINDOW_WIDTH = 85.mm
-    BODY_LEFT = 25.mm
-    BODY_WIDTH = 210.mm - (BODY_LEFT * 2)
-    FOOTER_HEIGHT = 25.mm
-    DARK_LOGO_COLOR = '57075f'
-    FONT_PATH = File.expand_path("../../../share/fonts/OpenSans/OpenSans.ttf", __FILE__)
-    LOGO_PATH = File.expand_path("../../../share/images/nos-oignons.png", __FILE__)
-
-    def generate_header(pdf)
-      header_height = pdf.bounds.height / 6
-      pdf.bounding_box([0, pdf.cursor], :width => pdf.bounds.width, :height => header_height) do
-        logo_width = 2 * pdf.bounds.width / 3
-        pdf.bounding_box([0, pdf.bounds.top], :width => logo_width, :height => pdf.bounds.height) do
-          pdf.image LOGO_PATH, :width => pdf.bounds.width, :align => :center, :vposition => :center
-        end
-        pdf.bounding_box([logo_width, pdf.bounds.top], :width => pdf.bounds.width / 3, :height => pdf.bounds.height) do
-          pdf.text 'Nœuds de sortie Tor financés par la communauté', :align => :center, :valign => :center
-        end
-      end
-      pdf.bounding_box([WINDOW_LEFT - pdf.bounds.absolute_left, pdf.bounds.absolute_top - WINDOW_TOP], :width => WINDOW_WIDTH, :height => WINDOW_BOTTOM - WINDOW_TOP) do
-        pdf.text member.name + "\n" + member.address, :valign => :bottom
-      end
-    end
-
-    def generate_body(pdf)
-      body_height = pdf.cursor - (pdf.bounds.height / 6)
-      pdf.move_down 30
-      pdf.bounding_box([BODY_LEFT, pdf.cursor], :width => BODY_WIDTH, :height => body_height) do
-        pdf.font_size(16) do
-          pdf.pad(25) do
-            pdf.text "Objet : reçu de cotisation"
-          end
-          margin = pdf.bounds.width / 6
-          pdf.pad_bottom(30) do
-            pdf.bounding_box([WINDOW_LEFT - pdf.bounds.absolute_left, pdf.cursor], :width => WINDOW_WIDTH) do
-              pdf.text "Le #{@now.strftime("%d/%m/%Y")}"
-            end
-          end
-          pdf.text <<-EOT.gsub(/^            /, '').gsub(/\n/, ' ')
-            Nous avons bien enregistré la cotisation annuelle de #{member.name}
-            à l'association Nos oignons reçue à la date du
-            #{member.membership_fee_paid_on.strftime("%d/%m/%Y")} pour un montant
-            de #{amount}€.
-          EOT
-          pdf.pad_top(30) do
-            pdf.bounding_box([margin, pdf.cursor], :width => 5 * margin) do
-              pdf.text "Le Conseil d'Administration"
-            end
-          end
-        end
-      end
-    end
-
-    def generate_footer(pdf)
-      pdf.bounding_box([0, FOOTER_HEIGHT + pdf.bounds.bottom], :width => pdf.bounds.width, :height => FOOTER_HEIGHT) do
-        pdf.pad_bottom(5) do
-          pdf.stroke_color DARK_LOGO_COLOR
-          pdf.dash 5
-          pdf.stroke_horizontal_rule
-        end
-        pdf.font_size(10) do
-          pdf.column_box([0, pdf.cursor], :width => pdf.bounds.width, :columns => 2) do
-            pdf.text NosOignons::CONTACT_INFO, :align => :center, :valign => :center
-            pdf.bounds.move_past_bottom
-            pdf.text NosOignons::POSTAL_ADDRESS, :align => :center, :valign => :center
-          end
-        end
-      end
-    end
-
-    def create!
-      raise "File exists!" if File.exists?(filename)
-      Prawn::Document.generate(filename) do |pdf|
-        pdf.font(FONT_PATH) do
-          generate_header(pdf)
-          generate_body(pdf)
-          generate_footer(pdf)
-       end
-      end
-    end
-  end
-end