Archiv für Januar 2010

PHP DTAUS-Klasse

10 Januar 2010

Beim Arbeiten an einer Vereinsverwaltung kam irgendwann der Punkt, an dem die Mitgliedsbeiträge halbautomatisch eingezogen werden sollten.
Deutsche Banken haben für solche Fälle (Massenlastschriften und -überweisungen) ihr eigenes Format entwickelt.

Simpel gesagt besteht eine DTAUS-Datei aus 3 Teilen: A-, C- und E-Satz.
Der A-Satz enthält allgemeine Infos wie Typ, Sender, Referenznummer und Ausführungsdatum.
Der E-Satz enthält Checksummen aus Kontonummern, Bankleitzahlen und Betrag.

Das nervigste überhaupt ist der C-Satz, der mehrfach vorkommen kann. Jeder Satz steht für einen Datensatz.
Name und Verwendungszeck besitzen ihr eigenes Feld, das aber max. 27 Zeichen lang sein darf.
Da durchaus ‘mal ein längere Satz vorkommen kann, gibt es sog. “Erweiterungssätze”. Maximal 15 an der Zahl.
Ein Erweiterungssatz besteht aus einer ID + 27 Zeichen. Gesamt kann also ein Name oder Verwendungszweck 432 Zeichen lang sein: 27 + 15 * 27

Allerdings teilen sich Name Sender, Name Empfänger, Verwendungszweck die Sätze. Damit steht z.B. folgende Möglichkeit zur Verfügung: Sendername von 54, Empfängername von 81 und Verwendungszweck von 297 Zeichen.
Mehr ist einfach nicht drin.
Das klingt ja an sich gar nicht mal so schlecht, wäre da nicht noch ein Haken: Es gibt 5 Blöcke in denen die Erweiterungssätze untergebracht werden.
1. Block: Max. 2 Sätze
3. bis 5. Block: Max. 4 Sätze
6. Block: Max. 1 Satz
Dabei muss allerdings jeder Block 128 Zeichen lang sein. Im Klartext: Auffüllen wenn’s nicht passt. Yay!

Naja, nachdem ich an diesem “Ding” mehre Tage saß, bin ich nun so weit, es als Alpha zu bezeichnen.
Es muss zwar noch ein wenig dran geschraubt werden und ein Beispiel ist auch noch nötig, aber “soweit, so gut”: http://phpdtaus.sourceforge.net/

Viel Spaß!