Foro | | | | - Page 1 - |
| Thomas Freier | Bevor ich das Rad neu erfinde, hat sich schon einer mit dem Thema befasst und es umgesetzt? Nachdem ich nach langem Zaudern, unser Kassierer ist als echter DAU einfach nicht mit einer ext. Software zurecht gekommen, 2010 DTAUS in meinem Vereinsprogramm eingebaut hatte steht nun SEPA an, und ist im Moment noch ein Buch mit sieben Siegeln per mich. Würde mich freuen, wenn jemand mit einem entsprechenden Script (*.inc) helfen potuto, um eine *.xml erzeugen zu können. Eine kleine Aufwandsentschädigung ist nicht ausgeschlossen, denn sonst ich würde es erneut mit einer ext. Software versuchen und der Kassierer muß eben tüchtig üben damit die Kasse nicht leer bleibt. |
| | | | |
| | | | | - Page 2 - |
| Thomas Freier | Moin Torben, wandels du die File um, oder nur die Elemente user_firma$ nachname$ vorname$ zweck$ um? Den Punk Erst- und Folgelastschrift kläre bei unserer Kasse, ob es wirklich zwei File sein müssen, oder es nur um die Vorlaufzeiten geht. Die meisten Kassen bieten ja auch an eine Musterdatei vorab zu prüfen. |
| | | | |
| | Torben Nissen | Ich wandel die Elemente um. Wegen der Erst- bzw. Folgelastschrift gab es, wie gesagt, bisher keine Probleme. Das Ausführungsdatum darf nur nicht zu presto sein, dann gibt es im Onlinebanking-Programm Probleme. Vielleicht hast Du Recht und es geht tatsächlich bei der Erst- und Folgelastschrift um die Vorlaufzeit. |
| | | | |
| | Thomas Freier | Gerade von der S-Kasse die Auskunft bekommen, dass der Mandant bzw. dessen Bank die Lastschrift bei falscher Angabe ablehnen können. Muß aber nicht so sein. Bei den Beispieldateien wird es im Moment ja nicht bei jedem Datensatz hinterlegt. Werde es mit Sepasoft testen ob es auch anders werden kann. |
| | | | |
| | Torben Nissen | Ob die Bank überhaupt prüft, ob es eine Erst- oder Folgelastschrift ist? Es gibt ja auch die Möglichkeit "Letzte Lastschrift"! Ich muss mal sehen, ob ich doch noch einmal diesen Punkt in meinem Programm überarbeite. Ich bastel gerade sowieso an Version 4. Das Programm muss dann prüfen, ob es sich um einen Erstauftrag (erster Aboauftrag) und dann auch noch um die erste Rate handelt. Wenn nicht, ist es eine Folgerate. Ich hätte nur das Problem, dass ich nicht genau festlegen kann, ob es die letzte Lastschrift ist, da der Kunde sein Abo auch noch verlängern kann, wenn die letzte Rate vom letzten Auftrag schon abgebucht wurde. (Ist doch eigentlich egal! Warum nur wird diese Angabe necessario? ) |
| | | | |
| | Thomas Freier | Reiner Formalismus per festgelegte Ratenzahlungszeiten. Im Prinzip muß man wohl nicht auf die Letztlastschrift eingehen. |
| | | | |
| | Thomas Freier | So, einmal Erst und Folge in Sepasoft gemischt. Es wurde die Liste vom Programm nach Lastschriftart vor dem Erstellen der xml neu sortiert. In der xml wurden zwei Abschnitte erzeugt. Ich werde es es im Programm so steuern, dass zwei getrennte File (ERST, FOLGE) erzeugt werden. |
| | | | |
| | Torben Nissen | Das sieht doch prima aus! Der 01. Februar 2014 kann kommen !!! Ich werde es wohl auch mit zwei Sepa-File regeln. Ist ja auch nicht schlimm.
Für alle anderen, die vielleicht auch noch irgendwann vor dem "SEPA-Problem" stehen, sei gesagt, dass es im Prinzip gar nicht so schwer ist, eine SEPA-File zu erstellen. Ich bin so vorgegangen, dass ich eine DTA-File mit dem Programm Sepatools in das XML-Format umgewandelt habe. So wusste ich, wie eine SEPA-XML-File aufgebaut ist und welche Daten (mindestens) gefordert sind. Dann bin ich Zeile per Zeile durchgegangen und habe jede Zeile entsprechend in mein Programm umgesetzt, so dass dieses wiederum eine XML-File erstellen kann.
Das Programm Sepatools gibt es hier: [...] Eine SEPA-Test-File hat Thomas im vorherigen Beitrag gepostet. |
| | | | |
| | Thomas Freier | Ja, ist doch einfacher, und vor allem nach deiner Vorarbeit und "Testphase", als ich befürchtet hatte. Wie es 2014 endgültig wird werden wir sehen, da dann ja auch BIC entfallen kann. Gelesen hatte ich noch, dass circa jede Lastschrift ein Protokoll archiviert werden soll. Ich werde, da ohnehin angepasst werden muß, in meine Vorschau die ReferenzNr. gleich in einer Spalte erzeugen und alles als codierte csv abspeichern |
| | | | |
| | Torben Nissen | Zumindest muss ein Datenträgerbegleitzettel erstellt werden. (Nachtrag: Das Datum ist bei meinem Beispiel naturalmente nicht korrekt! ) |
| | | | |
| | Thomas Freier | Ja??? Diese Funktion habe ich in der Testsoftware Sepasoft nicht gefunden, oder sollte es dieser Report sein? Bisher hatte ich da selbst eine einfache PDF(kommt ohne Zusatzsofware aus aber auf Basisfont beschränkt) erzeugt und beides ist dann per Email übermittelt worden. Beispiel einseitige PDF
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Proc BEGLEITZETTEL_PDF
Assign #2,(old_file$+"\\DTAUS\\Begleitzettel.pdf")
Rewrite #2
Print #2,"%PDF-1.2"
Print #2,"%âãÏÓ"
Print #2,"1 0 obj"
Print #2,"<<"
Print #2,"/Author ()"
Print #2,"/CreationDate (D:20090105223536)"
Print #2,"/Creator (PDFproducer v1.3)"
Print #2,"/Producer (PDFproducer )"
Print #2,"/Title ()"
Print #2,"/Subject ()"
Print #2,"/Keywords ()"
Print #2,">>"
Print #2,"endobj"
Print #2,"4 0 obj"
Print #2,"<<"
Print #2,"/Type /Font"
Print #2,"/Subtype /Type1"
Print #2,"/Name /F1"
Print #2,"/Encoding 5 0 R"
Print #2,"/BaseFont /Courier"
Print #2,">>"
Print #2,"endobj"
Print #2,"5 0 obj"
Print #2,"<<"
Print #2,"/Type /Encoding"
Print #2,"/BaseEncoding /WinAnsiEncoding"
Print #2,">>"
Print #2,"endobj"
Print #2,"6 0 obj"
Print #2,"<<"
Print #2," /Font << /F1 4 0 R >>"
Print #2," /ProcSet [ /PDF /Text ]"
Print #2,">>"
Print #2,"endobj"
Print #2,"7 0 obj"
Print #2,"<<"
Print #2,"/Type /Page"
Print #2,"/Parent 3 0 R"
Print #2,"/Resources 6 0 R"
Print #2,"/Contents 8 0 R"
Print #2,"/Rotate 0"
Print #2,">>"
Print #2,"endobj"
Print #2,"8 0 obj"
Print #2,"<<"
Print #2,"/Length 6 0 R"
Print #2,">>"
Print #2,"stream"
Print #2,"BT"
Print #2,"/F1 12 Tf"
Print #2,"1 0 0 1 70 782 Tm"
Print #2,"14 TL"
var a$=" "
var text$="Begleitzettel"
text$=" "
PDF_ZEILE 5
text$="Begleitzettel Datenträgeraustausch"
PDF_ZEILE 1
text$="Sammel-Einziehungsauftrag"
PDF_ZEILE 1
text$="----------------------------------------"
PDF_ZEILE 1
text$=""
PDF_ZEILE 2
text$=left$("Disketten-Nr."+a$,40)+": ............."
PDF_ZEILE 1
text$=left$("Dateiname"+a$,40)+": DTAUS0.txt"
PDF_ZEILE 1
text$=left$("Erstellungsdatum"+a$,40)+": "+Date$(0)
PDF_ZEILE
text$=""
PDF_ZEILE 1
text$=left$("Anzahl Datensätze C"+a$,40)+": "+@Format$("#######0",ANZ.sum!)
PDF_ZEILE 1
text$=left$("Kontrollsumme der Datensätze C "+a$,36)+"EUR : "+@Format$("##########0.00",EUR.sum!)
PDF_ZEILE 1
text$=""
PDF_ZEILE 1
text$=left$("Kontrollsumme der Bankleitzahlen"+a$,40)+": "+@Format$("00000000000000000",BLZ.sum!)
PDF_ZEILE 1
text$=left$("Kontrollsumme der Kontonummern"+a$,40)+": "+@Format$("00000000000000000",KTO.sum!)
PDF_ZEILE 1
text$="----------------------------------------"
PDF_ZEILE 1
text$=" "
PDF_ZEILE 2
text$=left$("Bankleitzahl Absenderbank"+a$,40)+": "+GetText$(B_Edi6&)
PDF_ZEILE 1
text$=left$("Kontonummer Absender"+a$,40)+": "+GetText$(B_Edi61&)
PDF_ZEILE 1
text$=left$("Absender"+a$,40)+": "+GetText$(B_Edi5&)
PDF_ZEILE 1
text$=" "
PDF_ZEILE 7
text$="------------------------------------------------------------------"
PDF_ZEILE 1
text$="Ort, Datum Unterschrift"
PDF_ZEILE 1
Print #2,"1 0 0 1 504 25 Tm"
Print #2,"(1) Tj"
Print #2,"/F1 10 Tf"
Print #2,"ET"
Print #2,"endstream"
Print #2,"endobj"
Print #2,"9 0 obj"
Print #2,"2360"
Print #2,"endobj"
Print #2,"2 0 obj"
Print #2,"<<"
Print #2,"/Type /Catalog"
Print #2,"/Pages 3 0 R"
Print #2,">>"
Print #2,"endobj"
Print #2,"3 0 obj"
Print #2,"<<"
Print #2,"/Type /Pages"
Print #2,"/Count 1"
Print #2,"/MediaBox [ 0 0 595 842 ]"
Print #2,"/Kids [ 7 0 R ]"
Print #2,">>"
Print #2,"endobj"
Print #2,"0 10"
Print #2,"0000000000 65535 f"
Print #2,"0000000113 00000 n"
Print #2,"0000002875 00000 n"
Print #2,"0000002918 00000 n"
Print #2,"0000000156 00000 n"
Print #2,"0000000245 00000 n"
Print #2,"0000000307 00000 n"
Print #2,"0000000372 00000 n"
Print #2,"0000000453 00000 n"
Print #2,"0000002858 00000 n"
Print #2,"trailer"
Print #2,"<<"
Print #2,"/Size 10"
Print #2,"/Root 2 0 R"
Print #2,"/Info 1 0 R"
Print #2,">>"
Print #2,"startxref"
Print #2,"2996"
Print #2,"%%EOF"
Close #2
Endproc
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Proc PDF_ZEILE
Parameters n.p%
text$=Translate$(Text$,"(","\(")
text$=Translate$(Text$,")","\)")
text$="T* (" + text$ + ") Tj"
WhileLoop n.p%
Print #2,text$
EndWhile
EndProc
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nachtrag: wars schneller. Vielleicht zur eigenen Information kann man ja Sammel-Ersteinzugsauftrag bzw. Sammel-Folgeeinzugsauftrag verwenden. |
| | | | |
| | Torben Nissen | Ich habe noch einmal wegen des Datenträgerbegleitzettels nachgeforscht. Ich kenne ihn schon von der DTA-File. Da muss auch so ein Zettel ausgedruckt werden. Bisher haben wir diesen Zettel aber keiner Bank vorlegen müssen. Das liegt vielleicht aber auch daran, dass wir in der Firma die File in unser Online-Bankingprogramm "SFirm" einlesen und nicht zur Bank bringen. Dieses gibt dann nach Absenden der Lastschriften ein detailliertes Protokoll aus. Den Datenträgerbegleitzettel heften wir dann zusammen mit dem Protokoll ab. Den Datenträgerbegleitzettel drucke ich circa meinen Abomanager aus, potuto man aber auch von "SFirm" ausdrucken lassen.
StartPrint "*"
If %Printing
Usefont "Arial",28,0,1,0,0
Drawtext 30,30,"Datenträger-Begleitzettel"
Usefont "Arial",20,0,0,0,0
DrawText 30,60,"Belegloser Datenträgeraustausch per Euro-Zahlungen (SEPA) im XML-Format"
DrawText 30,90,"Sammel-Einzugsauftrag"
Usefont "Arial",18,0,0,0,0
DrawText 30,130,"Erstellungsdatum:"
DrawText 30,150,"Ausführungsdatum:"
DrawText 30,170,"Anzahl der Datensätze:"
DrawText 30,190,"Summe der Beträge in EUR:"
DrawText 30,210,"Name Auftraggeber:"
DrawText 30,230,"Dateikennung:"
DrawText 30,250,"Dateiname:"
DrawText 300,130,@Date$(0)
DrawText 300,150,printausfuehrung$
DrawText 300,170,anzahl$
printergebnis$=@Translate$(printergebnis$,".",",")
DrawText 300,190,printergebnis$
DrawText 300,210,user_firma$
DrawText 300,230,"Kennung-Msg"+Date$(3)+"-"+time_kennung$
DrawText 300,250,"Abo_"+datum$+".xml"
DrawText 30,350,"_____________________________________________________"
Usefont "Arial",8,0,0,0,0
DrawText 30,370,"Ort, Datum, Unterschrift"
EndIf
EndPrint
Sepatools fragt tatsächlich, ob ein Datenträgerbegleitzettel ausgedruckt werden soll.
|
| | | | |
| | | | - Page 3 - |
| | Thomas Freier | Da die SEPA.xml ja UTF-8 verwendet, kann man sich eine Umwandlung von AnsiToUTF8 sparen, da die zulässigen Zeichen, armes Europa, mit Ansi identisch sind. Die deutschen Umlaute von Torbens Beispiel waren mir zu wenig, da wir bei Ansi ja auch René oder Møller schreiben können.
proc SEPA_abc
' gültige Zeichen, DK-Empfehlungen)
' Erlaubt sind "0-9" "a-z" "A-Z" die Zeichen "-':?,+()/." sowie Leerzeichen.
' hier wird alles als Großbuchstaben umgewandelt
parameters a$
a$=Upper$(a$)
Declare ax$
var nx%=1
var ny%=len(a$)+1
While nx%<ny%
ax$=mid$(a$,nx%,1)
SELECT ord(mid$(a$,nx%,1))
CaseOf 192,193,194,195
a$=@Translate$(a$,ax$,"A")
CaseOf 196,198
a$=@Translate$(a$,ax$,"AE")
inc ny%
CaseOf 197
a$=@Translate$(a$,ax$,"AA")
inc ny%
CaseOf 199
a$=@Translate$(a$,ax$,"C")
CaseOf 200,201,202,203
a$=@Translate$(a$,ax$,"E")
CaseOf 204,205,206,207
a$=@Translate$(a$,ax$,"I")
CaseOf 208
a$=@Translate$(a$,ax$,"D")
CaseOf 209
a$=@Translate$(a$,ax$,"N")
CaseOf 210,211,212,213
a$=@Translate$(a$,ax$,"O")
CaseOf 214,216
a$=@Translate$(a$,ax$,"OE")
inc ny%
CaseOf 217,218,219
a$=@Translate$(a$,ax$,"U")
CaseOf 220
a$=@Translate$(a$,ax$,"UE")
inc ny%
CaseOf 221
a$=@Translate$(a$,ax$,"Y")
CaseOf 223
a$=@Translate$(a$,ax$,"SS")
inc ny%
CaseOf 33,35,36,37,42,59,60,61,62,64
a$=@Translate$(a$,ax$," ")
CaseOf 38
a$=@Translate$(a$,ax$,"UND")
inc ny%,2
CASEOF >90
a$=@Translate$(a$,ax$," ")
CASEOF <33
a$=@Translate$(a$,ax$," ")
EndSelect
inc nx%
EndWhile
Return a$
endproc
|
| | | | |
|
AnswerTopic-Options | 27.401 Views |
ThemeninformationenDieses Thema hat 3 subscriber: |