-
Notifications
You must be signed in to change notification settings - Fork 0
/
import-miles-and-more-credit-card.txt
239 lines (214 loc) · 8.75 KB
/
import-miles-and-more-credit-card.txt
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
' ---------------------------------------------------------------------------------
' Anfang LH Miles+More Kreditkartenabrechnung
' ---------------------------------------------------------------------------------
' 1) https://www.miles-and-more.kartenabrechnung.de
' 2) Kartenumsätze > Abgerechnete Umsätze fortlaufend
' 3) Filter nach Rechnungsdatum > Zeitraum festlegen (z.B. 01.03.2010 - 31.03.2010) > Anzeigen
' 4) Ganz unten rechts im Pop-Up-Fenster Export wählen
' 5) Speichern als: > CSV
' 6) Format: > Standard
' 7) Export wählen > Speichern als...
' ---------------------------------------------------------------------------------
' Importdefinition für LH Miles+More Kreditkartenabrechnung
' Importeinstellungen:
' Quelle : Textdatei (*)
' Trennzeichen für Felder : Semikolon
' Trennzeichen für Datensätze: LF
' Zeichensatz für : Windows
' Text in Anführungszeichen : Keine
' ---------------------------------------------------------------------------------
' Aktionen nur im ersten Durchlauf ausführen: Variablen deklarieren
if ( NOT HasVariable("zeile") )
dim zeile as number
dim Servicekartennummer as text
dim Jahr as number
dim Monat as number
dim Tag as number
dim Kaufdatum as date
dim Buchungsdatum as date
dim UmsatzInt as number
dim UmsatzFract as number
dim VKBetrInt as number
dim VKBetrFract as number
dim VKBetrag as number
dim VKKursInt as number
dim VKKursFract as number
dim VKKurs as number
dim vz as number
dim AuslGebInt as number
dim AuslGebFract as number
dim AuslGeb as number
dim AuslGebProzent as number
' mit Business-Paket 1,25% Auslandsgebühr
set AuslGebProzent to 1.25
' alternativ: ohne Business-Paket 1,75% Auslandsgebühr
' set AuslGebProzent to 1.75
' neues Format gibt Auslandsgebühren explizit an
dim AuslGebSatz as text
endif
' Zeilen mitzählen
set zeile to zeile + 1
' Servicekartennummer aus Zeile 2 entnehmen und vergleichen
if ( zeile = 2 )
set Servicekartennummer to ReplaceAll(Spalte_002, "'", "")
if ( (Servicekartennummer <> "") AND (Servicekartennummer <> BANKKONTO_NUMMER) )
beep
msgBox("Fehler beim Lesen von LH Miles+More Kreditkartenabrechnung (Servicekartennummer ist " + Servicekartennummer + " / erwartet: " + BANKKONTO_NUMMER + ")!")
set Vorlage_Import_OK to FALSE
exit
endif
endif
' Die Umsatzdaten beginnen erst ab Zeile 5, die Zeilen davor verwerfen
if ( zeile < 5 )
set Vorlage_Zeile_OK to FALSE
exit
endif
' Nach den Umsatzdaten folgen noch einige Zeilen mit allg. Informationen, diese ebenso verwerfen
if ( NOT ((Length(Spalte_001) = 8) OR (Spalte_001 = "-")))
set Vorlage_Zeile_OK to FALSE
exit
endif
' Abbrechen, wenn nicht mindestens 14 Felder in Importdatei vorhanden sind
if ( NOT HasVariable("Spalte_014") )
beep
msgBox("Fehler beim Lesen von LH Miles+More Kreditkartenabrechnung (Ungültiges Datensatzformat)!")
set Vorlage_Import_OK to FALSE
exit
endif
' ---------------------------------------------------------------------------------
' Importfelder den Datenfeldern zuordnen
' ---------------------------------------------------------------------------------
' Kaufdatum
set Tag to TextToNumber(NthField(Spalte_004, "-", 3))
set Monat to TextToNumber(NthField(Spalte_004, "-", 2))
set Jahr to TextToNumber(NthField(Spalte_004, "-", 1))
set Kaufdatum to Date(Tag, Monat, Jahr)
' Buchungsdatum
set Tag to TextToNumber(NthField(Spalte_005, "-", 3))
set Monat to TextToNumber(NthField(Spalte_005, "-", 2))
set Jahr to TextToNumber(NthField(Spalte_005, "-", 1))
set Buchungsdatum to Date(Tag, Monat, Jahr)
' Buchungsdatum in Vorlage übernehmen
'set Vorlage_Datum to Buchungsdatum
' alternativ: Kaufdatum in Vorlage übernehmen
set Vorlage_Datum to Kaufdatum
' Umsatzbeschreibung, 2 Felder
' (kann leer sein oder nur ein Leerzeichen enthalten!)
if (( Spalte_006 <> "" ) AND ( Spalte_006 <> " " ))
' Saldovortrag-Zeilen ignorieren
if(Spalte_006 = "Saldovortrag")
set Vorlage_Zeile_OK to FALSE
exit
endif
set Vorlage_Text to Vorlage_Text + Spalte_006
endif
if (( Spalte_007 <> "" ) AND ( Spalte_007 <> " " ))
set Vorlage_Text to Vorlage_Text + " / " + Spalte_007
endif
' VK-Währungsinfo in Notiz (nur für Fremdwährungen)
if (( Spalte_008 <> "EUR" ) AND ( Spalte_008 <> "") AND ( Spalte_008 <> " " ))
' LH verwndet "," als Dezimaltrenner und "." als Tausendertrenner
set VKBetrInt to TextToNumber(ReplaceAll(NthField(Spalte_009, ",", 1), ".", ""))
set VKBetrFract to TextToNumber(NthField(Spalte_009, ",", 2))
' LH läßt bei Nachkommastellen nachlaufende Nullen weg. Es wird also z.B. 1,30.- als "1,3" anstelle "1,30" ausgegeben.
if ( Length(NthField(Spalte_009, ",", 2)) = 1 )
set VKBetrFract to ( 10 * VKBetrFract )
endif
if ( Spalte_010 = "H" )
set vz to 1
else
set vz to -1
endif
set VKBetrag to ( vz * (VKBetrInt + (VKBetrFract / 100)))
' LH verwndet "," als Dezimaltrenner und "." als Tausendertrenner
set VKKursInt to TextToNumber(ReplaceAll(NthField(Spalte_011, ",", 1), ".", ""))
set VKKursFract to TextToNumber(NthField(Spalte_011, ",", 2))
set VKKursFract to (VKKursFract / Pow(10, Length(NthField(Spalte_011, ",", 2))))
set VKKurs to (VKKursInt + VKKursFract)
set Vorlage_Notizen to "Ursprungsbetrag " + Spalte_008 + " " + Format(VKBetrag, "-#0.00") + " / Kurs: " + Format(VKKurs, "-#0.000000")
endif
' Umsatzbetrag
' LH verwndet "," als Dezimaltrenner und "." als Tausendertrenner
set UmsatzInt to TextToNumber(ReplaceAll(NthField(Spalte_013, ",", 1), ".", ""))
set UmsatzFract to TextToNumber(NthField(Spalte_013, ",", 2))
' LH läßt bei Nachkommastellen nachlaufende Nullen weg. Es wird also z.B. 1,30.- als "1,3" anstelle "1,30" ausgegeben.
if ( Length(NthField(Spalte_013, ",", 2)) = 1 )
set UmsatzFract to ( 10 * UmsatzFract )
endif
if ( Spalte_014 = "H" )
set vz to 1
else
set vz to -1
endif
set Vorlage_Betrag to ( vz * (UmsatzInt + (UmsatzFract / 100)))
' Gebühr für Auslandseinsatz angefallen?
if ( Spalte_016 <> "" )
if ( Spalte_016 = "*" )
' Altes Format: "*" in Spalte 16 gibt an für welche Umsätze mit Auslandsgebühr fällig war; Höhe der Gebühr ist implizit (s. Variable AuslGebProzent)
' >>> Buchungsbetrag enthält Gebühr bereits <<<
set AuslGeb to (Vorlage_Betrag - (Vorlage_Betrag / ( 1 + (AuslGebProzent / 100))))
set Vorlage_Betrag to (Vorlage_Betrag - AuslGeb)
set AuslGebSatz to Format(AuslGebProzent, "-#0.00\%")
else
' Neues Format: Prozentsatz für Auslandsgebühr in Spalte 16, Betrag in Spalte 18
' >>> Buchungsbetrag enthält Gebühr noch nicht <<<
set AuslGebSatz to Spalte_016
' LH verwndet "," als Dezimaltrenner und "." als Tausendertrenner
set AuslGebInt to TextToNumber(ReplaceAll(NthField(Spalte_018, ",", 1), ".", ""))
set AuslGebFract to TextToNumber(NthField(Spalte_018, ",", 2))
' LH läßt bei Nachkommastellen nachlaufende Nullen weg. Es wird also z.B. 1,30.- als "1,3" anstelle "1,30" ausgegeben.
if ( Length(NthField(Spalte_018, ",", 2)) = 1 )
set AuslGebFract to ( 10 * AuslGebFract )
endif
set AuslGeb to (AuslGebInt + (AuslGebFract / 100))
endif
if ( Vorlage_Notizen <> "" )
set Vorlage_Notizen to "Ausl.geb. " + AuslGebSatz + " = EUR " + Format(AuslGeb, "-#0.00") + " (Ursp.betr. " + Vorlage_Notizen + ")"
else
set Vorlage_Notizen to "Ausl.geb. " + AuslGebSatz + " = EUR " + Format(AuslGeb, "-#0.00")
endif
endif
' ---------------------------------------------------------------------------------
' Optional: Belegvervollständigung
' ---------------------------------------------------------------------------------
' Tankstellenbelege auf KFz Betriebskosten
if PatternCount(Vorlage_Text,"TANK") > 0
set Vorlage_Konto to "4530"
endif
' Auslandsgebühren auf Nebenkosten des Geldverkehrs
if (PatternCount(Vorlage_Text,"Ausl.geb. ") > 0) OR (PatternCount(Vorlage_Text,"Auslandseinsatz") > 0)
set Vorlage_Konto to "4970"
endif
' Reisebüro auf Reisekosten Unternehmer
if PatternCount(Vorlage_Text,"Bcd Travel Germany") > 0
set Vorlage_Konto to "4670"
set Vorlage_Steuersatz to "VSt19"
endif
' Hotel auf Reisekosten Unternehmer
if PatternCount(Vorlage_Text,"Hotel") > 0
set Vorlage_Konto to "4670"
endif
' Taxi auf Reisekosten Unternehmer
if PatternCount(Vorlage_Text,"Taxi") > 0
set Vorlage_Konto to "4670"
endif
' ÖPNV auf Reisekosten Unternehmer Fahrtkosten
if (PatternCount(Vorlage_Text,"Mvg-Handyticket") > 0) OR (PatternCount(Vorlage_Text,"MVG ONLINESERVICES") > 0)
set Vorlage_Konto to "4673"
set Vorlage_Steuersatz to "VSt7"
endif
' M-Net Internet auf Telefon
if PatternCount(Vorlage_Text,"M-NET TELEK. GMBH") > 0
set Vorlage_Konto to "4920"
endif
' SWM auf Gas, Strom, Wasser (Verwaltung, Betrieb)
if PatternCount(Vorlage_Text,"STADTWERKE MUENCHEN") > 0
set Vorlage_Konto to "4240"
endif
' Privateinlagen
if PatternCount(Vorlage_Text,"PRIVATEINLAGE") > 0
set Vorlage_Konto to "1890"
endif
' ---------------------------------------------------------------------------------
' Ende LH Miles+More Kreditkartenabrechnung
' ---------------------------------------------------------------------------------