GiroCode Lösung für InvoicePlane (getestet mit 1.5.9)


#1

Hallo in die Runde,

in Deutschland macht sich der GiroCode oder Bezahlcode ja immer breiter und beliebter. Ich habe nach einer Lösung gesucht um diesen auch in InvoicePlane einbauen und nutzen zu können.

Für alle die, die es interessiert, hier der Weg:
zuerst habe ich von hier https://github.com/fellwell5/bezahlcode die bezahlcode.class.php in den Ordner /application/views/invoice_templates/pdf gepackt.

In der Template Datei (z.B.: /applications/views/invoice_templates/InvoicePlane.php)habe ich folgendes ergänzt:
Direkt vor dem </body> Tag einfügen:

<div style="text-align: right;"><br>
<?php
  require "bezahlcode.class.php";
	
	$bezahlcode = new Bezahlcode("Deine IBAN", "Dein BIC", "Dein Name");
	$bezahlcode->generatePayload("$invoice->invoice_number", "$invoice->invoice_balance");
	
	/*	get Bezahlcode as base64-string
	----------------------------------- */
	$base64 = $bezahlcode->generateBase64();
	echo "<img src='$base64' alt='Bezahlcode' width='110' height='110' />";
	    	
?>
</div>

Mit dieser Erweiterung wird automatisch der GiroCode in Deine Rechnung eingefügt, Empfängername, IBAN und BIC sind vorgegeben, als Verwendungszweck wird automatisch die Rechnungsnummer genutzt, auch der Betrag wird automatisch vom offenen Rechnungssaldo übernommen.

Viel Spaß für die, die den GiroCode in Deutschland auch mit InvoicePlane nutzen wollen!

Viele Grüße Alex


#2

Ich weiß zwar nicht wie genau der GiroCode funktioniert, aber es scheint ja ne sehr simple Lösung zu sein. Bietet sich sicher auch für die dauerhafte Implementierung an. Danke für die Infos!


#3

Hallo,

mehr Infos findet man hier
https://www.girocode.de/rechnungsempfaenger/

Das schöne ist, dass der Empfänger wenn er eine Banking App nutzt den GiroCode scannen kann und alle Daten direkt übernommen werden. Keine Tippfehler etc bei der IBAN, Verwendungszweck oder Betrag…

VG Alex


#4

in der schweiz wurde auch ein solcher zahlcode eingeführt…


#5

in der schweiz war es so, dass von der Funktion her nach einem gewissen schema alle Informationen wie IBAN, BIC, Verwendungszweck innerhalb des QR Codes gespeichert ist. etc.pp. denke ein QR in DE ist ähnlich, wenn nicht gar identisch zusammengesetzt nach einem festgelegten Standart, welcher dann von Apps usw. ausgelesen/interpretiert wird.

Für viele leider noch “zu Neu” um es effektiv einzusetzen. Ich persönlich kann mir vorstellen, dass sobald der Standart aber angelaufen ist, für Dienstleister, sowie Privatkunden ein zeitlicher Vorteil ist, da z.b. auf dem Bankschalter der QR Code gescannt wird, und alle Eingaben bereits in der Eingabenmaske voreingestellt sind.

Genau so könnte es beim Privatkunden sein, dass er die Rechnung z.b. per Handy scannt und das Banking App dann alle Werte wie Betrag, Verwendungszweck und Kontodaten ausgefüllt hat. Dann würde es nur noch heißen Bestätigen, TAN und fertig.


#6

Recht herzlichen Dank für die Informationen.
Ich habe versucht das QR code ein zu binden in meine Rechnungen und das funktioniert.
Meine Bank-app (KNAB in Holland) übernimmt die Kontonummer und den betrag aber nicht die Rechnungsnummer.
Wenn ich die QR code lese mit ein decodier app scheint die Rechnungsnummer aufgenommen zu sein in die QR-code.
Kann jemand bestätigen das bei andere banken die Rechnungsnummer gut übertragen wird?
Vielleicht hat es mit standardisierung zu tun…


#7

Bestimmt ein Grund. Bei jeder Bank heißt das doch anders. “Verwendungszwekck”, “Betreff”, “Überweisungsdetails”…


#8

Ich habe das problem bei meiner Bank vorgelegt. Die haben getestet mit den Android bank-app und mit den Apple bank-app. Mit Apple iphone wird die Rechnungsnummer gut übertragen. Mit Android aber nicht. Also nur die Bank kann und hat auch versprochen das ‘Problem’ zu lösen. Überigens gibt es in Holland erst zwei oder drei Banken die diese scan möglichkeit bis jetzt in ihre apps eingebaut haben.


#9

ich hatte für ein projekt ein shop selbst programmiert wo ich in die Rechnungen auch den QR Rechnungs-Code aus der Schweiz integriert habe, wie bereits erwähnt haben die dort einen gewissen standart, und um nur einmal zu Illustrieren wie dieser aussieht wie folgt:

		$qrCode = new QrCode(
							'SPC'.PHP_EOL. // SPC war wohl eine Definition (Zeile1 des Codes)
							'0100'.PHP_EOL. // 0100 auch eine Definierung (Zeile2)
							'1'.PHP_EOL. // (... Zeile3)
							page('shop')->iban()->value().PHP_EOL. // IBAN Zeile4
							page('shop')->receiver()->value().PHP_EOL.// Empfänger Zeile 5
							page('shop')->receiverstreet()->value().PHP_EOL. // Empfänger Adresse Zeile 6
							page('shop')->receiverstreetno()->value().PHP_EOL. // ETCpp.
							page('shop')->receiverstreetplz()->value().PHP_EOL.
							page('shop')->receivercity()->value().PHP_EOL.
							page('shop')->receivercountry()->value().PHP_EOL.
							''.PHP_EOL.// Manche Zeilen wie diese hier waren nicht relevant für die Zahlungen die ich tätigen möchte, deshalb bleibt diese leer
							''.PHP_EOL.
							''.PHP_EOL.
							''.PHP_EOL.
							''.PHP_EOL.
							''.PHP_EOL.
							sprintf('%.2f',calcTotal($page->cart()->yaml())-$page->discount()->value()).PHP_EOL.
							page('shop')->currency()->value().PHP_EOL.
							date('Y-m-d', strtotime($page->date())+strtotime("+30 days")).PHP_EOL.
							''.PHP_EOL.
							''.PHP_EOL.
							''.PHP_EOL.
							''.PHP_EOL.
							''.PHP_EOL.
							''.PHP_EOL.
							'NON'.PHP_EOL.
							''.PHP_EOL.
							$page->firstname(). ' '.$page->lastname().' - '. $page->token().PHP_EOL // Hier kommen Kundeninformationen wie Name und Referenz-ID (Token) damit man daran manuell die Zahlung verbuchen kann
						);
		$qrCode->setSize(350); // Größe des Codes
		$qrCode->setWriterByName('png'); // Dateiformat des Codes
	    $qrCode->setEncoding('UTF-8');
		$qrCode->setMargin(30);
		$qrCode->setErrorCorrectionLevel(ErrorCorrectionLevel::MEDIUM);
		$qrCode->setLogoPath('assets/images/chkreuz.png'); // Der Schweizer Code hat mittig eine Schweizer Kreuz abgebildet
		$qrCode->setLogoWidth(50);
		$qrCode->setValidateResult(false);

Um es nochmal ausdrücklich zu sagen, laut Schweizer Standart war es ganz klar definitiert, in welcher Zeile welche Information stehen muss. Bzw. in der Dokumentation, die man von der Bank erhält wurden alle gültigen Werte und Optionen beschrieben.

Andere Europäische Standards habe ich mir leider nicht angeschaut, wollte jetzt auch nur meinen Input zur Fehlerbehebung beitragen.