datev 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b6c528c7ca4a5ad0e5aceec6ac0776778513f979
4
- data.tar.gz: 0bec1561db96d7e0f026fa66091bb5de0a0dab60
3
+ metadata.gz: f3e035a9aa694d548569863f6270876c5716d00a
4
+ data.tar.gz: a6ba5d87cf277273acdf5a2c1f9affdc09242747
5
5
  SHA512:
6
- metadata.gz: 6899a123c19ab1617bb4d3bc55b1f9bab2c74a91156813ed3c1adc31686ce72b993ed02b8fb4f3a054f34cfdfaa31b714cea795a9e83cf9cc0f20f38948a4eee
7
- data.tar.gz: a01fbbdb2086ada39ae9ca6e0f45bc5adddd26e90c642f6eba1327b597375336e4774e8849638957d47122a0c00c8060e03321659c9203717fdf8b8fb31fa82b
6
+ metadata.gz: 5211fd3179fd43c2c78d46797c70b5332d93f60333659201135609dc13e0ecedea657143a98da470c478fe6b62e9ab5f47c1dced77ded376d0ea317f6a6b6f7c
7
+ data.tar.gz: 4d99bbbcab81b468445781817c778e77fdca0da773b2d350b20efbed3b79ed057e924667ef488a7940c8cee0ae8ad14c3347f7871d4058370b81ef5aec70b228
data/README.md CHANGED
@@ -28,7 +28,7 @@ Or install it yourself as:
28
28
  export = Datev::BookingExport.new(
29
29
  'Herkunft' => 'XY',
30
30
  'Exportiert von' => 'Chief Accounting Officer',
31
- 'Berater' => 123,
31
+ 'Berater' => 1001,
32
32
  'Mandant' => 456,
33
33
  'WJ-Beginn' => Date.new(2016,1,1),
34
34
  'Datum vom' => Date.new(2016,6,1),
@@ -1,4 +1,4 @@
1
- EXTF;510;21;Buchungsstapel;7;20160623152500000;;XY;Chief Accounting Officer;;123;456;20160101;4;20160601;20160630;Beispiel-Buchungen;;1;;;EUR;;;;
1
+ "EXTF";510;21;"Buchungsstapel";7;20160623152500000;;"XY";"Chief Accounting Officer";"";1001;456;20160101;4;20160601;20160630;"Beispiel-Buchungen";"";1;;;"EUR";"";"";"";"";"";;;"";""
2
2
  Umsatz (ohne Soll/Haben-Kz);Soll/Haben-Kennzeichen;WKZ Umsatz;Kurs;Basisumsatz;WKZ Basisumsatz;Konto;Gegenkonto (ohne BU-Schl�ssel);BU-Schl�ssel;Belegdatum;Belegfeld 1;Belegfeld 2;Skonto;Buchungstext;Postensperre;Diverse Adressnummer;Gesch�ftspartnerbank;Sachverhalt;Zinssperre;Beleglink;Beleginfo � Art 1;Beleginfo � Inhalt 1;Beleginfo � Art 2;Beleginfo � Inhalt 2;Beleginfo � Art 3;Beleginfo � Inhalt 3;Beleginfo � Art 4;Beleginfo � Inhalt 4;Beleginfo � Art 5;Beleginfo � Inhalt 5;Beleginfo � Art 6;Beleginfo � Inhalt 6;Beleginfo � Art 7;Beleginfo � Inhalt 7;Beleginfo � Art 8;Beleginfo � Inhalt 8;KOST1 � Kostenstelle;KOST2 � Kostenstelle;Kost Menge;EU-Land u. USt-IdNr.;EU-Steuersatz;Abw. Versteuerungsart;Sachverhalt L+L;Funktionserg�nzung L+L;BU 49 Hauptfunktionstyp;BU 49 Hauptfunktionsnummer;BU 49 Funktionserg�nzung;Zusatzinformation � Inhalt 1;Zusatzinformation � Art 1;Zusatzinformation � Inhalt 2;Zusatzinformation � Art 2;Zusatzinformation � Inhalt 3;Zusatzinformation � Art 3;Zusatzinformation � Inhalt 4;Zusatzinformation � Art 4;Zusatzinformation � Inhalt 5;Zusatzinformation � Art 5;Zusatzinformation � Inhalt 6;Zusatzinformation � Art 6;Zusatzinformation � Inhalt 7;Zusatzinformation � Art 7;Zusatzinformation � Inhalt 8;Zusatzinformation � Art 8;Zusatzinformation � Inhalt 9;Zusatzinformation � Art 9;Zusatzinformation � Inhalt 10;Zusatzinformation � Art 10;Zusatzinformation � Inhalt 11;Zusatzinformation � Art 11;Zusatzinformation � Inhalt 12;Zusatzinformation � Art 12;Zusatzinformation � Inhalt 13;Zusatzinformation � Art 13;Zusatzinformation � Inhalt 14;Zusatzinformation � Art 14;Zusatzinformation � Inhalt 15;Zusatzinformation � Art 15;Zusatzinformation � Inhalt 16;Zusatzinformation � Art 16;Zusatzinformation � Inhalt 17;Zusatzinformation � Art 17;Zusatzinformation � Inhalt 18;Zusatzinformation � Art 18;Zusatzinformation � Inhalt 19;Zusatzinformation � Art 19;Zusatzinformation � Inhalt 20;Zusatzinformation � Art 20;St�ck;Gewicht;Zahlweise;Forderungsart;Veranlagungsjahr;Zugeordnete F�lligkeit;Skontotyp;Auftragsnummer;Buchungstyp;USt-Schl�ssel (Anzahlungen);EU-Mitgliedstaat (Anzahlungen);Sachverhalt L+L (Anzahlungen);EU-Steuersatz (Anzahlungen);Erl�skonto (Anzahlungen);Herkunft-Kz;Leerfeld;KOST-Datum;SEPA-Mandatsreferenz;Skontosperre;Gesellschaftername;Beteiligtennummer;Identifikationsnummer;Zeichnernummer;Postensperre bis;Bezeichnung;Kennzeichen;Festschreibung;Leistungsdatum;Datum Zuord.
3
- 24,95;H;;;;;1200;4940;8;2106;;;;Fachbuch: Controlling f�r Dummies;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4
- 5950,00;S;;;;;10000;8400;;2206;RE201606-135;;;Honorar FiBu-Seminar;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3
+ 24,95;"H";"";;;"";1200;4940;"8";2106;"";"";;"Fachbuch: Controlling f�r Dummies";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"";"";;"";;"";;"";"";;"";;;;
4
+ 5950,00;"S";"";;;"";10000;8400;"";2206;"RE201606-135";"";;"Honorar FiBu-Seminar";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"";"";;"";;"";;"";"";;"";;;;
@@ -1,5 +1,5 @@
1
- EXTF;510;20;Kontenbeschriftungen;2;20160623152500000;;XY;Chief Accounting Officer;;123;456;20160101;4;;;Beispiel-Konten;;;;;;;;;
1
+ "EXTF";510;20;"Kontenbeschriftungen";2;20160623152500000;;"XY";"Chief Accounting Officer";"";1001;456;20160101;4;;;"Beispiel-Konten";"";;;;"";"";"";"";"";"";;;"";""
2
2
  Konto;Kontenbeschriftung;Sprach-ID
3
- 400;Betriebsausstattung;de-DE
4
- 1000;Kasse;de-DE
5
- 1200;Girokonto;de-DE
3
+ 400;"Betriebsausstattung";"de-DE"
4
+ 1000;"Kasse";"de-DE"
5
+ 1200;"Girokonto";"de-DE"
@@ -1,5 +1,5 @@
1
- EXTF;510;16;Debitoren/Kreditoren;4;20160623152500000;;XY;Chief Accounting Officer;;123;456;20160101;4;;;Kunden und Lieferanten;;;;;;;;;
1
+ "EXTF";510;16;"Debitoren/Kreditoren";4;20160623152500000;;"XY";"Chief Accounting Officer";"";1001;456;20160101;4;;;"Kunden und Lieferanten";"";;;;"";"";"";"";"";"";;;"";""
2
2
  Konto;Name (Adressatentyp Unternehmen);Unternehmensgegenstand;Name (Adressatentyp nat�rl. Person);Vorname (Adressatentyp nat�rl. Person);Name (Adressatentyp keine Angabe);Adressatentyp;Kurzbezeichnung;EU-Land;EU-USt-IdNr.;Anrede;Titel/Akad. Grad;Adelstitel;Namensvorsatz;Adressart;Stra�e;Postfach;Postleitzahl;Ort;Land;Versandzusatz;Adresszusatz;Abweichende Anrede;Abw. Zustellbezeichnung 1;Abw. Zustellbezeichnung 2;Kennz. Korrespondenzadresse;Adresse G�ltig von;Adresse G�ltig bis;Telefon;Bemerkung (Telefon);Telefon Gesch�ftsleitung;Bemerkung (Telefon GL);E-Mail;Bemerkung (E-Mail);Internet;Bemerkung (Internet);Fax;Bemerkung (Fax);Sonstige;Bemerkung (Sonstige);Bankleitzahl 1;Bankbezeichnung 1;Bankkonto-Nummer 1;L�nderkennzeichen 1;IBAN 1;Leerfeld 1;SWIFT-Code 1;Abw. Kontoinhaber 1;Kennz. Haupt-Bankverb. 1;Bankverb. 1 G�ltig von;Bankverb. 1 G�ltig bis;Bankleitzahl 2;Bankbezeichnung 2;Bankkonto-Nummer 2;L�nderkennzeichen 2;IBAN 2;Leerfeld 2;SWIFT-Code 2;Abw. Kontoinhaber 2;Kennz. Haupt-Bankverb. 2;Bankverb. 2 G�ltig von;Bankverb. 2 G�ltig bis;Bankleitzahl 3;Bankbezeichnung 3;Bankkonto-Nummer 3;L�nderkennzeichen 3;IBAN 3;Leerfeld 3;SWIFT-Code 3;Abw. Kontoinhaber 3;Kennz. Haupt-Bankverb. 3;Bankverb. 3 G�ltig von;Bankverb. 3 G�ltig bis;Bankleitzahl 4;Bankbezeichnung 4;Bankkonto-Nummer 4;L�nderkennzeichen 4;IBAN 4;Leerfeld 4;SWIFT-Code 4;Abw. Kontoinhaber 4;Kennz. Haupt-Bankverb. 4;Bankverb. 4 G�ltig von;Bankverb. 4 G�ltig bis;Bankleitzahl 5;Bankbezeichnung 5;Bankkonto-Nummer 5;L�nderkennzeichen 5;IBAN 5;Leerfeld 5;SWIFT-Code 5;Abw. Kontoinhaber 5;Kennz. Haupt-Bankverb. 5;Bankverb. 5 G�ltig von;Bankverb. 5 G�ltig bis;Leerfeld 11;Briefanrede;Gru�formel;Kundennummer;Steuernummer;Sprache;Ansprechpartner;Vertreter;Sachbearbeiter;Diverse-Konto;Ausgabeziel;W�hrungssteuerung;Kreditlimit (Debitor);Zahlungsbedingung;F�lligkeit in Tagen (Debitor);Skonto in Prozent (Debitor);Kreditoren-Ziel 1 (Tage);Kreditoren-Skonto 1 (%);Kreditoren-Ziel 2 (Tage);Kreditoren-Skonto 2 (%);Kreditoren-Ziel 3 (Tage);Kreditoren-Skonto 3 (%);Kreditoren-Ziel 4 (Tage);Kreditoren-Skonto 4 (%);Kreditoren-Ziel 5 (Tage);Kreditoren-Skonto 5 (%);Mahnung;Kontoauszug;Mahntext;Mahntext 2;Mahntext 3;Kontoauszugstext;Mahnlimit Betrag;Mahnlimit %;Zinsberechnung;Mahnzinssatz 1;Mahnzinssatz 2;Mahnzinssatz 3;Lastschrift;Verfahren;Mandantenbank;Zahlungstr�ger;Indiv. Feld 1;Indiv. Feld 2;Indiv. Feld 3;Indiv. Feld 4;Indiv. Feld 5;Indiv. Feld 6;Indiv. Feld 7;Indiv. Feld 8;Indiv. Feld 9;Indiv. Feld 10;Indiv. Feld 11;Indiv. Feld 12;Indiv. Feld 13;Indiv. Feld 14;Indiv. Feld 15;Abweichende Anrede (Rechnungsadresse);Adressart (Rechnungsadresse);Stra�e (Rechnungsadresse);Postfach (Rechnungsadresse);Postleitzahl (Rechnungsadresse);Ort (Rechnungsadresse);Land (Rechnungsadresse);Versandzusatz (Rechnungsadresse);Adresszusatz (Rechnungsadresse);Abw. Zustellbezeichnung 1 (Rechnungsadresse);Abw. Zustellbezeichnung 2 (Rechnungsadresse);Adresse G�ltig von (Rechnungsadresse);Adresse G�ltig bis (Rechnungsadresse);Bankleitzahl 6;Bankbezeichnung 6;Bankkonto-Nummer 6;L�nderkennzeichen 6;IBAN 6;Leerfeld 6;SWIFT-Code 6;Abw. Kontoinhaber 6;Kennz. Haupt-Bankverb. 6;Bankverb. 6 G�ltig von;Bankverb. 6 G�ltig bis;Bankleitzahl 7;Bankbezeichnung 7;Bankkonto-Nummer 7;L�nderkennzeichen 7;IBAN 7;Leerfeld 7;SWIFT-Code 7;Abw. Kontoinhaber 7;Kennz. Haupt-Bankverb. 7;Bankverb. 7 G�ltig von;Bankverb. 7 G�ltig bis;Bankleitzahl 8;Bankbezeichnung 8;Bankkonto-Nummer 8;L�nderkennzeichen 8;IBAN 8;Leerfeld 8;SWIFT-Code 8;Abw. Kontoinhaber 8;Kennz. Haupt-Bankverb. 8;Bankverb. 8 G�ltig von;Bankverb. 8 G�ltig bis;Bankleitzahl 9;Bankbezeichnung 9;Bankkonto-Nummer 9;L�nderkennzeichen 9;IBAN 9;Leerfeld 9;SWIFT-Code 9;Abw. Kontoinhaber 9;Kennz. Haupt-Bankverb. 9;Bankverb. 9 G�ltig von;Bankverb. 9 G�ltig bis;Bankleitzahl 10;Bankbezeichnung 10;Bankkonto-Nummer 10;L�nderkennzeichen 10;IBAN 10;Leerfeld 10;SWIFT-Code 10;Abw. Kontoinhaber 10;Kennz. Haupt-Bankverb. 10;Bankverb. 10 G�ltig von;Bankverb. 10 G�ltig bis;Nummer Fremdsystem;Insolvent;SEPA-Mandatsreferenz 1;SEPA-Mandatsreferenz 2;SEPA-Mandatsreferenz 3;SEPA-Mandatsreferenz 4;SEPA-Mandatsreferenz 5;SEPA-Mandatsreferenz 6;SEPA-Mandatsreferenz 7;SEPA-Mandatsreferenz 8;SEPA-Mandatsreferenz 9;SEPA-Mandatsreferenz 10;Verkn�pftes OPOS-Konto;Mahnsperre bis;Lastschriftsperre bis;Zahlungssperre bis;Geb�hrenberechnung;Mahngeb�hr 1;Mahngeb�hr 2;Mahngeb�hr 3;Pauschalberechnung;Verzugspauschale 1;Verzugspauschale 2;Verzugspauschale 3
3
- 10000;;;Mustermann;Sabine;;1;;;;Frau;Dr.;;;STR;Am Haagelspf�dchen 14;;50999;K�ln;DE;;;;;;;;;0221/1234567;;;;sabine@mustermann.de;;www.mustermann.de;;0221/1234568;;;;;;;;DE12500105170648489890;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Sehr geehrte Frau Dr. Mustermann;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4
- 70001;Meyer GmbH;;;;;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5
- 70002;Schulze GmbH;;;;;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3
+ 10000;"";"";"Mustermann";"Sabine";"";"1";"";"";"";"Frau";"Dr.";"";"";"STR";"Am Haagelspf�dchen 14";"";"50999";"K�ln";"DE";"";"";"";"";"";;;;"0221/1234567";"";"";"";"sabine@mustermann.de";"";"www.mustermann.de";"";"0221/1234568";"";"";"";"";"";"";"";"DE12500105170648489890";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;;"Sehr geehrte Frau Dr. Mustermann";"";"";"";1;"";"";"";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"";"";;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";;"";"";"";"";"";"";"";"";"";"";;;;;;;;;;;;
4
+ 70001;"Meyer GmbH";"";"";"";"";"2";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;;"";"";"";"";;"";"";"";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"";"";;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";;"";"";"";"";"";"";"";"";"";"";;;;;;;;;;;;
5
+ 70002;"Schulze GmbH";"";"";"";"";"2";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;;"";"";"";"";;"";"";"";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"";"";;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";"";"";"";"";;"";"";;;;"";;"";"";"";"";"";"";"";"";"";"";;;;;;;;;;;;
data/lib/datev.rb CHANGED
@@ -20,5 +20,3 @@ require 'datev/export'
20
20
  require 'datev/export/account_export'
21
21
  require 'datev/export/contact_export'
22
22
  require 'datev/export/booking_export'
23
-
24
- require 'csv'
@@ -42,7 +42,7 @@ module Datev
42
42
  # Darf nicht gefüllt werden, durch Import gesetzt.
43
43
 
44
44
  # 11
45
- field 'Berater', :integer, :limit => 7
45
+ field 'Berater', :integer, :limit => 7, :minimum => 1001
46
46
  # Beraternummer
47
47
 
48
48
  # 12
@@ -91,5 +91,21 @@ module Datev
91
91
  field 'reserviert 3', :string
92
92
  field 'reserviert 4', :string
93
93
  field 'reserviert 5', :string
94
+
95
+ # 27
96
+ field 'SKR', :string
97
+
98
+ # 28
99
+ field 'Branchenlösung-Id', :integer
100
+
101
+ # 29
102
+ field 'reserviert 6', :integer
103
+
104
+ # 30
105
+ field 'reserviert 7', :string
106
+
107
+ # 31
108
+ field 'Anwendungsinformation', :string, :limit => 16
109
+ # Verarbeitungskennzeichen der abgebenden Anwendung => Bsp. '9/2016'
94
110
  end
95
111
  end
data/lib/datev/export.rb CHANGED
@@ -16,26 +16,26 @@ module Datev
16
16
  end
17
17
 
18
18
  def to_s
19
- CSV.generate(CSV_OPTIONS) do |csv|
20
- write(csv)
19
+ string = to_csv_line(@header.output) <<
20
+ to_csv_line(self.class.row_class.fields.map(&:name))
21
+
22
+ @rows.each do |row|
23
+ string << to_csv_line(row.output(@header))
21
24
  end
25
+
26
+ string.encode(CSV_OPTIONS[:encoding])
22
27
  end
23
28
 
24
29
  def to_file(filename)
25
- CSV.open(filename, 'wb', CSV_OPTIONS) do |csv|
26
- write(csv)
30
+ File.open(filename, 'wb') do |file|
31
+ file.write(to_s)
27
32
  end
28
33
  end
29
34
 
30
35
  private
31
36
 
32
- def write(csv)
33
- csv << @header.output
34
- csv << self.class.row_class.fields.map(&:name)
35
-
36
- @rows.each do |row|
37
- csv << row.output(@header)
38
- end
37
+ def to_csv_line(data)
38
+ data.join(CSV_OPTIONS[:col_sep]) + "\n"
39
39
  end
40
40
  end
41
41
  end
@@ -4,12 +4,22 @@ module Datev
4
4
  options[:limit]
5
5
  end
6
6
 
7
+ def maximum
8
+ options[:maximum]
9
+ end
10
+
11
+ def minimum
12
+ options[:minimum]
13
+ end
14
+
7
15
  def validate!(value)
8
16
  super
9
17
 
10
18
  if value
11
19
  raise ArgumentError.new("Value given for field '#{name}' is not an Integer") unless value.is_a?(Integer)
12
20
  raise ArgumentError.new("Value '#{value}' for field '#{name}' is too long") if limit && value.to_s.length > limit
21
+ raise ArgumentError.new("Value '#{value}' for field '#{name}' is too large") if maximum && value > maximum
22
+ raise ArgumentError.new("Value '#{value}' for field '#{name}' is too small") if minimum && value < minimum
13
23
  end
14
24
  end
15
25
 
@@ -14,7 +14,18 @@ module Datev
14
14
  end
15
15
 
16
16
  def output(value, _context=nil)
17
- value.slice(0, limit || 255) if value
17
+ value = value.slice(0, limit || 255) if value
18
+
19
+ quote(value)
20
+ end
21
+
22
+ private
23
+
24
+ def quote(value)
25
+ # Existing quotes have to be doubled
26
+ value = value.gsub('"','""') if value
27
+
28
+ "\"#{value}\""
18
29
  end
19
30
  end
20
31
  end
data/lib/datev/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Datev
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georg Ledermann
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-30 00:00:00.000000000 Z
11
+ date: 2016-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler