Dr. Arne Jachens

Arnes Skriptbibliothek

genDTAUS

Wird verwendet von:

Diese Funktion habe ich mal geschrieben, um die Mitgliedsbeiträge eines Vereins per Lastschrift einzuziehen.
Die Banken und Sparkassen verwenden zur Übertragung der Buchungsdaten das Datenaustauschformat DTAUS.
Das Skript bekommt die Liste der Mitgliedsnummern $IDs und das Jahr $jahr der Beitragszahlung übergeben. (Dabei wurden vorab die Mitglieder selectiert, die am Lastschriftverfahren teilnehmen - nicht alle haben eine Vollmacht erteilt und Bankdaten angegeben, andere wohnen im Ausland.) Der Verwendungszweck lautet dann MITGLNR 00 BEITRAG 200x.
Die Mitgliedsdaten sind in einer Datenbank

NrInhalt
1Name korporatives Mitglied
2Vorname
3Nachname
4Künstlername
5Geburtsdatum
6Email
7Strasse, Hausnummer
8Postleitzahl
9Ort
10Land
11Telefon
12Telefax
13Kontonummer
14Bankleitzahl
15Bankname
16Kontoinhaber (falls abweichend)
17Mitgliedsbeitrag
18Stand Mitgliedskonto
19Art der Mitgliedschaft
20Eintrittsdatum
21Austrittsdatum
22Vollmacht zur Lastschrift vorhanden?
23Kommentar zum Mitglied
gespeichert, auf die per getKarteikarte($IDs[$i]) zugegriffen wird.
Die erzeugten Datensätze, jeweils limitiert auf 2000 &eur; können lokal gespeichert und an die Bank übertragen werden.

<?php
function genDTAUS($IDs,$jahr){
  echo "<p>Dieses Skript erstellt aus der Mitgliederkartei einen
        Datensatz im DTAUS-Format, das an die Bank übermittelt 
        werden kann.</p>";
  echo "<p>Die abzubuchenden Beträge sind der Jahresbeitrag 
        inklusive freiwilliger jährlicher Spenden gemäß 
        der Mitgliederkartei. </p>";
  echo "<p><em>Wenn du nicht ganz genau weisst, was du tust, lass die Finger von diesem Skript!</em> </p>";
  $maximumPerDay=2000; #mit Sparkasse vereinbart

#------------------------------------------------#
# Datensatz A (Datentraeger-Vorsatz)             #
# Der Datensatz A enthaelt den Diskettenabsender #
# und -empfaenger; er ist je logische Datei nur  #
# einmal vorhanden.                              #
#------------------------------------------------#

$BVSM_BLZ="34050000";
$BVSM_Konto="101626";           
$absender="BVSM";      # < 27 Zeichen
$interneKundenNr=str_pad($interneKundenNr,13,'0');  
$BVSM_Konto=str_pad($BVSM_Konto,10,'0',STR_PAD_left);
$absender=str_pad($absender,27,' ');
$date1=date("dmy");
$date2=date("dmY");
$leerfeld=str_pad($leerfeld,4,' ');
$referenznummer="0000000000";
$reserve1=str_pad($reserve1,15,' ');
$reserve2=str_pad($reserve2,24,' ');
$euro="1";

$DatensatzA="0128ALK".$BVSM_BLZ."00000000".$absender.$date1.$leerfeld.$BVSM_Konto.$referenznummer.$reserve1.$date2.$reserve2.$euro;
#echo "<pre>".$DatensatzA."</pre>";


  for($df=0;$df<10;$df++){
    $anzahl[$df]=0;
    $summeKto[$df]=0;
    $summeBLZ[$df]=0;
    $summeBetrag[$df]=0;
    $DatensatzC[$df]="";
    $DatensatzE[$df]="";
  }
  $summe=0;
  $df=0;
  for($i=0;$i<count($IDs);$i++){
    $Karteikarte=getKarteikarte($IDs[$i]);
    # $Karteikarte[18] ist SOLL des Mitgliedskontos
    if ($summe-$Karteikarte[18]<$maximumPerDay){
      $summe=$summe-$Karteikarte[18];
    }else{
      $summeDTAUS[$df]=$summe;
      $summe=-$Karteikarte[18];
      $df++;
    }
    if ($i==count($IDs)-1){$summeDTAUS[$df]=$summe;}

#------------------------------------------------#
# DatensatzC (Zahlungsaustauschsatz)             #
# Der Datensatz C enthaelt Einzelheiten ueber    #
# die auszufuehrenden Auftraege (Lastschriften). #
# Er gliedert sich in einen konstanten und einen #
# variablen Teil.                                #
#------------------------------------------------#

    #if ($Karteikarte[0]==3 | $Karteikarte[0]==17){ #test
    $kontonummer=str_pad($Karteikarte[13],10,'0',STR_PAD_LEFT);
    $BLZ=$Karteikarte[14];
    $bank=$Karteikarte[15];
    $betrag=abs($Karteikarte[18]);
    $satzlaenge="0187";  
    $reserve3=str_pad($reserve3,11,'0');
    $reserve4=str_pad($reserve4,3,' ');
    $reserve5=str_pad($reserve5,8,' ');
    $reserve6=str_pad($reserve6,2,' ');
    $ErwTVerwZ=str_pad($ErwTVerwZ,27,' ');
    $leerzeichen=str_pad($leerzeichen,11,' ');

    $html[$df].="<tr><td>".$Karteikarte[0]."</td><td>".abs($Karteikarte[18])."</td></tr>";
    # Falls Kontoinhaber abweichend vom Namen
    if (empty($Karteikarte[16])) {
      $kontoinhaber=$Karteikarte[3].", ".$Karteikarte[2];
    }else{ 
      $kontoinhaber=$Karteikarte[16];
    };
    $umlaute=array("ä","ö","ü","Ä","Ö","Ü","ß","é");
    $ersatz=array("ae","oe","ue","AE","OE","UE","ss","e");
    $kontoinhaber=str_replace ($umlaute,$ersatz,$kontoinhaber);
    $kontoinhaber=strtoupper($kontoinhaber);
    $betrag=$betrag."00"; #hier werden die Cent ergaenzt
    $kontoinhaber=str_pad($kontoinhaber,27,' ');
    $VerwZweck="MITGLNR ".$Karteikarte[0]." BEITRAG ".$jahr;
    $VerwZweck=str_pad($VerwZweck,27,' ');
    $betrag=str_pad($betrag,11,'0',STR_PAD_LEFT);
    $DatensatzC[$df].=$satzlaenge."C".$BVSM_BLZ.$BLZ.$kontonummer.$interneKundenNr."05000 ".$reserve3.$BVSM_BLZ.$BVSM_Konto.$betrag.$reserve4.$kontoinhaber.$reserve5.$absender.$VerwZweck.$euro.$reserve6."00".str_pad($leerzeichen,69,' ');
    #echo "<pre>".$DatensatzC[$df]."</pre>";
    #Pruefsummen
    $anzahl[$df]     =$anzahl[$df]     +1;
    $summeKto[$df]   =$summeKto[$df]   +$kontonummer;
    $summeBLZ[$df]   =$summeBLZ[$df]   +$BLZ;
    $summeBetrag[$df]=$summeBetrag[$df]+$betrag;
    #}#test
  } #i
  
  echo "<table>";
  for($df=0;$df<count($summeDTAUS);$df++){
#------------------------------------------------#
# Datensatz E (Datentraeger-Nachsatz)            #
# Der Datensatz E dient der Abstimmung; er ist   #
# je logische Datei nur einmal vorhanden.        #
#------------------------------------------------#

    $reserve7=str_pad($reserve7,5,' ');
    $reserve8=str_pad($reserve8,13,'0');
    $reserve9=str_pad($reserve9,51,' ');
    $anzahl[$df]=str_pad($anzahl[$df],7,'0',STR_PAD_LEFT);
    $summeKto[$df]=str_pad($summeKto[$df],17,'0',STR_PAD_LEFT);
    $summeBLZ[$df]=str_pad($summeBLZ[$df],17,'0',STR_PAD_LEFT);
    $summeBetrag[$df]=str_pad($summeBetrag[$df],13,'0',STR_PAD_LEFT);
    $DatensatzE[$df]="0128E".$reserve7.$anzahl[$df].$reserve8.$summeKto[$df].$summeBLZ[$df].$summeBetrag[$df].$reserve9;
    $DTAUS[$df]=$DatensatzA.$DatensatzC[$df].$DatensatzE[$df];
    #echo "<pre>".$DTAUS[$df]."</pre>";
    echo "<tr><td align='right'>".$summeDTAUS[$df]." €</td>";
    echo "<td><form action='downloadDTAUS.php' method='post'>";
    echo "<input name='dtaus' type='hidden' value='".$DTAUS[$df]."'>";
    echo "<input name='df' type='hidden' value='".$df."'>";
    echo "<input type='submit' value='DTAUS".$df."'></form></td>";
    echo "<td><form action='dtaus.php?step=show' method='post'>";
    echo "<input name='dtaus' type='hidden' value='".$html[$df]."'>";
    echo "<input type='submit' value='lesbar'></form></td></tr>";
  }
  echo "</table>";
  echo "<p>Der erste Button schickt dir das DTAUS-Format, dass du lokal speicherst und dann über das Internetbanking der Sparkasse hochlädst:<ol><li>Banking</li><li>DTA-Datei übertragen</li></ol>Der zweite Button zeigt dir zu dieser DTAUS-Datei die Mitgliedsnummer und den Beitrag, um sie leichter in die Buchführung eingeben zu können. <br><em>Bedenke, dass sich die DTAUS-Dateinen bei einem erneuten Aufruf ändern, nachdem du die ersten Beiträge verbucht hast!. Speichere dir also lieber diese Datein - oder wenn du die Liste ausdruckst, kannst du die Posten zu jeder Buchung abhaken.</em>";

}
?>
1fraktal.php
2VereinsverwaltungKartei.php
3VereinsverwaltungKarteikarte.php
4VereinsverwaltungKonto.php
5VereinsverwaltungLastschriften.php
6VereinsverwaltungMenue.php
7whichLengthDoWeHaveInXfigFile.php
8XML_extractAttribute.php
9XML_extractElement.php
10XML_extractTag.php
11XML_findAllElements.php
12XML_readFile.php
13writeNamedData.php
14menu.php
15content.php
16cms.php
17indexCms.php
18areaOfPolygon.php
19areaOfTriangle.php
20calculateAreasOfPolygonsInXfig.php
21calculateMeanStd.php
22checkChanges.php
23closeFigures.php
24db.php
25distanceOfPoints.php
26dtaus.php
27enumerateFiles.php
28fileGrep.php
29fitData.php
30fotoalbum.php
31genAlbum.php
32genDTAUS.php
33genFotoalbum.php
34genThumbnails.php
35globals.php
36hex2dec.php
37LaTeXbrief.php
38norm.php
39pdf.php
40plotResult.php
41pointsOfPolygon.php
42polynominalFit.php
43readData.php
44readDymolaOuput.php
45readFilenames.php
46readFromStdIn.php
47readNamedData.php
48readXmlFile.php
49searchMedian.php
50sortIEindex.php
51sortIntoBins.php
52sortPDF.php
53synchronise.php
54synchroniseDirectories.php
55Vereinsverwaltung.php
56writeData.php

 

gnuplot

gnuplot is used to visualise the results - via script you can do infinite diagrams in 1 second.
Run 'test' in gnuplot to get an owerview of the available line- and symbolstyles.