-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkassenbuch.go
142 lines (123 loc) · 2.82 KB
/
kassenbuch.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package datev
import "fmt"
type Kassenbuch []KassenbuchLine
type KassenbuchLine struct {
// Währungskennzeichen
// Nur EUR zulässig
Wahrung string // 1
// Vorzeichen und Betrag
// Vorzeichen: + oder –
// Betrag maximale Länge: 10,2
// Numerisch
// Trennzeichen Komma (,)
// Keine Tausendertrennzeichen
// Wert >0
VorzBetrag Decimal // 2
// Beleg-Nr.
// Maximale Länge: 36 Zeichen
// Alphanumerisch
// Sonderzeichen: $ & % * + - /
RechNr string // 3
// Datum der Kassenbewegungen
// Format: TTMM
// Maximale Länge: 4 Zeichen
// Numerisch
// Keine Trennzeichen
BelegDatum string // 4
// Belegtext
// Maximale Länge: 30 Zeichen
// Alphanumerisch & Sonderzeichen
Belegtext string // 5
// Umsatzsteuersatz in %
// Maximale Länge: 2 Vorkomma-, 2
// Nachkommastellen
// Numerisch
// Dezimalpunkt = Komma (,)
UStSatz Decimal // 6
// Berichtigungsschlüssel (B)
// Umsatzsteuerschlüssel (U)
// Maximale Länge: 4 Zeichen
// Numerisch
// Gültige BU-Schlüssel finden Sie im
// Dokument: DATEV Unternehmen
// online - Übersicht Steuerschlüssel
// (BU)
BU string // 7
// Gegenkonto
// Maximale Länge: Sachkontolänge +1
// (zum Beispiel bei SKL 4 maximal 5
// Zeichen)
// Numerisch
Gegenkonto *Int // 8
// KOST1, Informationen für die Kostenrechnung, zum Beispiel Kostenstellen
// Maximale Länge: 36 Zeichen
// Alphanumerisch & Sonderzeichen
Kost1 string // 9
// KOST2, Informationen für die Kostenrechnung, zum Beispiel Kostenstellen
// Maximale Länge: 36 Zeichen
// Alphanumerisch & Sonderzeichen
Kost2 string // 10
// Wertangabe zu Bezugsgröße in Kostenrechnung, zum Beispiel kg, cm, %
// Maximale Länge: 12,4
// Numerische
// Dezimalpunkt = Komma (,)
// Keine Tausendertrennzeichen
// Wert >0
Kostmenge Decimal // 11
// Skontobetrag in EUR
// Maximale Länge: 8,2
// Numerisch
// Dezimalpunkt = Komma (,)
// Wert >0
Skonto Decimal // 12
// Nachricht
// Maximale Länge: 120 Zeichen
// Alphanumerisch & Sonderzeichen
Nachricht string
}
func (l KassenbuchLine) Validate() []error {
var errs []error
return errs
}
func (e KassenbuchLine) Headers() []string {
return []string{
"Währung",
"VorzBetrag",
"RechNr",
"BelegDatum",
"Belegtext",
"UStSatz",
"BU",
"Gegenkonto",
"Kost1",
"Kost2",
"Kostmenge",
"Skonto",
"Nachricht",
}
}
func (l KassenbuchLine) Values() []interface{} {
return []interface{}{
l.Wahrung, // 1
l.VorzBetrag, // 2
l.RechNr, // 3
l.BelegDatum, // 4
l.Belegtext, // 5
l.UStSatz, // 6
l.BU, // 7
l.Gegenkonto, // 8
l.Kost1, // 9
l.Kost2, // 10
l.Kostmenge, // 11
l.Skonto, // 12
l.Nachricht, // 13
}
}
func (l KassenbuchLine) StringValues() []string {
values := l.Values()
st := make([]string, len(values))
for k, v := range values {
st[k] = fmt.Sprint(v)
}
return st
}