private function admin_createSepa($sepaRequests) { //F�r Sparkasse muss der Request kompatibel zu pain 008.002.02 (Sammellastschriften) sein // Erzeugen einer neuen Instanz $creatorSequenceFirst = new SepaXmlCreator(); /* * Mit den Account-Werten wird das eigene Konto beschrieben * erster Parameter = Name * zweiter Parameter = IBAN * dritter Paramenter = BIC */ $creatorSequenceFirst->setAccountValues('Ringelsoeckchen e.V.', 'DE34370502990138274368', 'COKSDE33XXX'); /* * Setzen Sie von der Bundesbank �bermittelte Gl�ubiger-ID */ $creatorSequenceFirst->setGlaeubigerId("DE90BEI00001201537"); /* * Mit Hilfe eines Ausf�hrungs-Offsets k�nnen Sie definieren, wann die Lastchrift gezogen wird. Die Anzahl * der �bergebenen Tage wird auf den aktuellen Kalendertag addiert * * Beispiel 1 * heute = 1. Juni 2013 * Offset nicht �bergeben * Ausf�hrung -> Heute bzw. n�chst m�glich * * Beispiel 1 * heute = 1. Juni 2013 * Offset 3 * Ausf�hrung -> 4. Juni 2013 */ $creatorSequenceFirst->setAusfuehrungOffset(8); $creatorSequenceRecurring = clone $creatorSequenceFirst; $creatorSequenceFirst->setSequenz(SepaXmlCreator::SEQUENZ_FIRST); $creatorSequenceRecurring->setSequenz(SepaXmlCreator::SEQUENZ_RECURRING); $this->Fee->Member->recursive = -3; if (!$sepaRequests) { throw new NotFoundException("Request empty"); } foreach ($sepaRequests as $sepaRequest) { //Get member information $member = $this->Fee->Member->find('first', array('conditions' => array('id' => $sepaRequest['member_id']))); //Get yearly fee information $yearly_fee = $this->Fee->YearlyFee->find('first', array('conditions' => array('year' => $sepaRequest['year']))); $sepamandate = $this->Fee->Member->Sepamandate->find('first', array('conditions' => array('member_id' => $sepaRequest['member_id'], 'valid' => 1))); if (!$sepamandate) { throw new NotFoundException('Could not find Sepamandate for ' . $member['Member']['full_name']); } // Erzeugung einer neuen Buchungssatz $buchung = new SepaBuchung(); // gew�nschter Einzugsbetrag $buchung->setBetrag($yearly_fee['YearlyFee']['fee']); // gew�nschte End2End Referenz (OPTIONAL) $buchung->setEnd2End('BEI' . $sepaRequest['year'] . '-' . $member['Member']['id']); // BIC des Zahlungspflichtigen Institutes $buchung->setBic($sepamandate['Sepamandate']['bic']); // Name des Zahlungspflichtigen $buchung->setName(htmlspecialchars($sepamandate['Sepamandate']['account_holder'])); // IBAN des Zahlungspflichtigen $buchung->setIban($sepamandate['Sepamandate']['iban']); // gew�nschter Verwendungszweck (OPTIONAL) $buchung->setVerwendungszweck('Ringelsoeckche Beitrag ' . $sepaRequest['year'] . ' ' . $member['Member']['full_name']); // Referenz auf das vom Kunden erteilte Lastschriftmandat // ID = MANDAT0001 // Erteilung durch Kunden am 20. Mai 2013 // False = seit letzter Lastschrift wurde am Mandat nichts ge�ndert $buchung->setMandat($sepamandate['Sepamandate']['mandate_reference'], $sepamandate['Sepamandate']['mandate_date'], false); // Buchung zur entsprechenden Liste hinzufügen if ($sepamandate['Sepamandate']['sequence'] == "first") { $creatorSequenceFirst->addBuchung($buchung); } else { $creatorSequenceRecurring->addBuchung($buchung); } } $zip = new ZipArchive(); $zip->open(TMP . 'sepa.zip', ZIPARCHIVE::OVERWRITE); if ($creatorSequenceFirst->hasBuchungen()) { $file = new File(TMP . 'sepa_erstlastschriften.xml', true); // Nun kann die XML-Datei über den Aufruf der entsprechenden Methode generiert werden $sepaOutput = $creatorSequenceFirst->generateBasislastschriftXml(); $file->write($sepaOutput); $file->close(); $zip->addFile(TMP . 'sepa_erstlastschriften.xml', 'sepa_erstlastschriften.xml'); } if ($creatorSequenceRecurring->hasBuchungen()) { $file = new File(TMP . 'sepa_folgelastschriften.xml', true); // Nun kann die XML-Datei über den Aufruf der entsprechenden Methode generiert werden $sepaOutput = $creatorSequenceRecurring->generateBasislastschriftXml(); $file->write($sepaOutput); $file->close(); $zip->addFile(TMP . 'sepa_folgelastschriften.xml', 'sepa_folgelastschriften.xml'); } $zip->close(); $this->viewClass = 'Media'; $params = array('id' => 'sepa.zip', 'name' => 'Sepa-Lastschrift-Mitgliedsbeitraege' . CakeTime::format('Y-m-d', time()), 'download' => true, 'extension' => 'zip', 'path' => TMP); $this->set($params); }
// gewünschter Einzugsbetrag $buchung->setBetrag(10); // gewünschte End2End Referenz (OPTIONAL) $buchung->setEnd2End('ID-00002'); // BIC des Zahlungspflichtigen Institutes $buchung->setBic('EMPFAENGERBIC'); // Name des Zahlungspflichtigen $buchung->setName('Mustermann, Max'); // IBAN des Zahlungspflichtigen $buchung->setIban('DE1234566..'); // gewünschter Verwendungszweck (OPTIONAL) $buchung->setVerwendungszweck('Test Buchung'); // Referenz auf das vom Kunden erteilte Lastschriftmandat // ID = MANDAT0001 // Erteilung durch Kunden am 20. Mai 2013 // False = seit letzter Lastschrift wurde am Mandat nichts geändert $buchung->setMandat("MANDAT0001", "2013-05-20", false); // Buchung zur Liste hinzufügen $creator->addBuchung($buchung); // Dies kann beliebig oft wiederholt werden ... $buchung = new SepaBuchung(); $buchung->setBetrag(7); $buchung->setBic('EMPFAENGERBIC'); $buchung->setName('Mustermann, Max'); $buchung->setIban('DE1234566..'); // weitere felder nicht übergeben = heutige erteilung $buchung->setMandat("MANDAT0002"); $creator->addBuchung($buchung); // Nun kann die XML-Datei über den Aufruf der entsprechenden Methode generiert werden echo $creator->generateBasislastschriftXml();
// Buchung zur Liste hinzufügen $creator->addBuchung($buchung); } } } } fclose($output_inkorrekt); fclose($output_newMember); fclose($output_student); fclose($output_payment); ob_end_clean(); //========================= // SEPA XML Datei ausliefern //========================= //generiere die XML-Datei $sepaxml = $creator->generateBasislastschriftXml(); file_put_contents($file, $sepaxml); ob_end_clean(); //Datei an User zum Download ausliefern header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_end_clean(); flush(); readfile($file); exit;