Compare commits
1 commit
main
...
bastis_set
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c80a8ac1bd |
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -17,5 +17,5 @@ document.pdf
|
||||||
*.fdb_latexmk
|
*.fdb_latexmk
|
||||||
*.fls
|
*.fls
|
||||||
*.synctex.gz
|
*.synctex.gz
|
||||||
ccl_mitgliederdatenbank.xlsx
|
*.xlsx
|
||||||
signature.png
|
signature.png
|
||||||
|
|
@ -3,6 +3,22 @@ require 'cmxl' # for parsing the MT940 file
|
||||||
require 'roo' # for parsing the Excel file
|
require 'roo' # for parsing the Excel file
|
||||||
require 'humanize' # for converting numbers to words
|
require 'humanize' # for converting numbers to words
|
||||||
|
|
||||||
|
# set process locale (affects strftime, number formatting via locales)
|
||||||
|
ENV['LANG'] = 'de_DE.UTF-8'
|
||||||
|
ENV['LC_ALL'] ||= 'de_DE.UTF-8'
|
||||||
|
|
||||||
|
# date
|
||||||
|
def german_date(d); d.strftime("%d.%m.%Y"); end
|
||||||
|
|
||||||
|
# number
|
||||||
|
def german_number(n)
|
||||||
|
parts = sprintf("%.2f", n).split('.')
|
||||||
|
parts[0] = parts[0].gsub(/(?<=\d)(?=(?:\d{3})+$)/, '.')
|
||||||
|
parts.join(',')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Humanize.configure do |config|
|
Humanize.configure do |config|
|
||||||
config.default_locale = :de # [:en, :es, :fr, :tr, :de, :id], default: :en
|
config.default_locale = :de # [:en, :es, :fr, :tr, :de, :id], default: :en
|
||||||
config.decimals_as = :number # [:digits, :number], default: :digits
|
config.decimals_as = :number # [:digits, :number], default: :digits
|
||||||
|
|
@ -16,10 +32,13 @@ def generate_reciept(mitgliedsnummer, name, vorname, strasse, hausnummer, plz, o
|
||||||
puts "Generating reciept for #{mitgliedsnummer} #{name} #{vorname} #{strasse} #{hausnummer} #{plz} #{ort} #{betrag} #{betrag_in_worten} #{start_datum} #{end_datum}"
|
puts "Generating reciept for #{mitgliedsnummer} #{name} #{vorname} #{strasse} #{hausnummer} #{plz} #{ort} #{betrag} #{betrag_in_worten} #{start_datum} #{end_datum}"
|
||||||
|
|
||||||
# create a csv file with the payments
|
# create a csv file with the payments
|
||||||
CSV.open("payments.csv", "wb") do |csv|
|
# CSV.open("payments.csv", "wb") do |csv|
|
||||||
|
# CSV.open("payments.csv", "wb", col_sep: ";", encoding: "UTF-8") do |csv|
|
||||||
|
# CSV.open("payments.csv", "wb", encoding: "UTF-8", force_quotes: true) do |csv|
|
||||||
|
CSV.open("payments.csv", "wb", col_sep: "\t", force_quotes: false, encoding: "UTF-8") do |csv|
|
||||||
csv << ["datum", "betrag", "type", "verzicht"]
|
csv << ["datum", "betrag", "type", "verzicht"]
|
||||||
payments.each do |payment|
|
payments.each do |payment|
|
||||||
csv << [payment[:date], payment[:amount], payment[:type], payment[:verzicht]]
|
csv << [german_date(payment[:date]), german_number(payment[:amount]), payment[:type], payment[:verzicht]]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -138,5 +157,5 @@ else
|
||||||
puts
|
puts
|
||||||
|
|
||||||
member = get_member_details_from_mitgliedsnummer(mitgliedsnummer)
|
member = get_member_details_from_mitgliedsnummer(mitgliedsnummer)
|
||||||
generate_reciept(mitgliedsnummer, member[:name], member[:vorname], member[:strasse], member[:hausnummer], member[:plz], member[:ort], total_payment, betrag_in_worten, start_datum, end_datum, payments)
|
generate_reciept(mitgliedsnummer, member[:name], member[:vorname], member[:strasse], member[:hausnummer], member[:plz], member[:ort], german_number(total_payment), betrag_in_worten, start_datum, end_datum, payments)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,13 @@
|
||||||
\usepackage[utf8]{inputenc}
|
\usepackage[utf8]{inputenc}
|
||||||
\usepackage[T1]{fontenc}
|
\usepackage[T1]{fontenc}
|
||||||
\usepackage{%
|
\usepackage{%
|
||||||
ngerman,
|
|
||||||
ae,
|
ae,
|
||||||
times, %% hier kann man die Schriftart einstellen
|
times, %% hier kann man die Schriftart einstellen
|
||||||
graphicx,
|
graphicx,
|
||||||
url}
|
url}
|
||||||
|
\usepackage[ngerman]{babel}
|
||||||
|
\usepackage[ngerman]{datetime}
|
||||||
|
\usepackage[locale=DE]{siunitx}
|
||||||
\usepackage{eurosym}
|
\usepackage{eurosym}
|
||||||
\usepackage{pdfpages}
|
\usepackage{pdfpages}
|
||||||
\usepackage{nopageno}
|
\usepackage{nopageno}
|
||||||
|
|
@ -35,7 +37,7 @@ backaddress=true,parskip=half,enlargefirstpage=true}
|
||||||
20457 Hamburg}
|
20457 Hamburg}
|
||||||
|
|
||||||
% hier die Signatur einsetzen:
|
% hier die Signatur einsetzen:
|
||||||
\setkomavar{signature}{Paul Jost}
|
\setkomavar{signature}{Sebastian Hinz}
|
||||||
|
|
||||||
% hier betreff einsetzen
|
% hier betreff einsetzen
|
||||||
\setkomavar{subject}{Sammelbestätigung über Mitgliedsbeiträge}
|
\setkomavar{subject}{Sammelbestätigung über Mitgliedsbeiträge}
|
||||||
|
|
@ -107,6 +109,7 @@ nach § 60a Abs. 1 AO länger als 3 Jahre seit Ausstellung des Bescheides zurüc
|
||||||
%\csvautotabular{payments.csv}
|
%\csvautotabular{payments.csv}
|
||||||
\footnotesize
|
\footnotesize
|
||||||
\csvreader[
|
\csvreader[
|
||||||
|
separator=tab,
|
||||||
tabular=|l|l|l|l|,
|
tabular=|l|l|l|l|,
|
||||||
table head=\hline \thead{ Datum der Zuwendung} & \thead{Art der Zuwendung \\ (Geldzuwendung/Mitgliedsbeitrag)} & \thead{Verzicht auf die Erstattung\\ von Aufwendungen (ja/nein)} & Betrag\\\hline,
|
table head=\hline \thead{ Datum der Zuwendung} & \thead{Art der Zuwendung \\ (Geldzuwendung/Mitgliedsbeitrag)} & \thead{Verzicht auf die Erstattung\\ von Aufwendungen (ja/nein)} & Betrag\\\hline,
|
||||||
late after line=\\\hline,
|
late after line=\\\hline,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue