Bernd Wurst commited on 2013-12-07 08:45:14
Zeige 2 geänderte Dateien mit 99 Einfügungen und 0 Löschungen.
... | ... |
@@ -72,4 +72,14 @@ output("<td style=\"font-weight: bold;\">{$summe} €</td></tr>\n"); |
72 | 72 |
output('</table><br />'); |
73 | 73 |
|
74 | 74 |
|
75 |
+if ($invoice['bezahlt'] == 0 && $invoice['abbuchung'] == 0) { |
|
76 |
+ $qrcode_image = generate_qrcode_image($invoice_id); |
|
77 |
+ |
|
78 |
+ output('<h4>QR-Code für Mobile Banking (STUZZA-Verfahren, Österreichische und viele deutschen Banken)</h4><p><img src="data:image/png;base64,'.base64_encode($qrcode_image).'" /></p>'); |
|
79 |
+ |
|
80 |
+ $qrcode_image = generate_bezahlcode_image($invoice_id); |
|
81 |
+ |
|
82 |
+ output('<h4>BezahlCode für Mobile Banking (BezahlCode, für iPhone-Anwendungen von Drittanbietern)</h4><p><img src="data:image/png;base64,'.base64_encode($qrcode_image).'" /></p>'); |
|
83 |
+} |
|
84 |
+ |
|
75 | 85 |
?> |
... | ... |
@@ -75,4 +75,93 @@ function upcoming_items() |
75 | 75 |
} |
76 | 76 |
|
77 | 77 |
|
78 |
+function generate_qrcode_image($id) |
|
79 |
+{ |
|
80 |
+ $invoice = invoice_details($id); |
|
81 |
+ $customerno = $invoice['kunde']; |
|
82 |
+ $amount = 'EUR'.sprintf('%.2f', $invoice['betrag']); |
|
83 |
+ $datum = $invoice['datum']; |
|
84 |
+ $data = 'BCD |
|
85 |
+001 |
|
86 |
+1 |
|
87 |
+SCT |
|
88 |
+GENODES1VBK |
|
89 |
+schokokeks.org GbR |
|
90 |
+DE91602911200041512006 |
|
91 |
+'.$amount.' |
|
92 |
+ |
|
93 |
+ |
|
94 |
+RE '.$id.' KD '.$customerno.' vom '.$datum.' |
|
95 |
+Rechnung '.$id.' von schokokeks.org'; |
|
96 |
+ |
|
97 |
+ $descriptorspec = array( |
|
98 |
+ 0 => array("pipe", "r"), // STDIN ist eine Pipe, von der das Child liest |
|
99 |
+ 1 => array("pipe", "w"), // STDOUT ist eine Pipe, in die das Child schreibt |
|
100 |
+ 2 => array("pipe", "w") |
|
101 |
+ ); |
|
102 |
+ |
|
103 |
+ $process = proc_open('qrencode -t PNG -o - -l M', $descriptorspec, $pipes); |
|
104 |
+ |
|
105 |
+ if (is_resource($process)) { |
|
106 |
+ // $pipes sieht nun so aus: |
|
107 |
+ // 0 => Schreibhandle, das auf das Child STDIN verbunden ist |
|
108 |
+ // 1 => Lesehandle, das auf das Child STDOUT verbunden ist |
|
109 |
+ |
|
110 |
+ fwrite($pipes[0], $data); |
|
111 |
+ fclose($pipes[0]); |
|
112 |
+ |
|
113 |
+ $pngdata = stream_get_contents($pipes[1]); |
|
114 |
+ fclose($pipes[1]); |
|
115 |
+ |
|
116 |
+ // Es ist wichtig, dass Sie alle Pipes schließen bevor Sie |
|
117 |
+ // proc_close aufrufen, um Deadlocks zu vermeiden |
|
118 |
+ $return_value = proc_close($process); |
|
119 |
+ |
|
120 |
+ return $pngdata; |
|
121 |
+ } else { |
|
122 |
+ warning('Es ist ein interner Fehler im Webinterface aufgetreten, aufgrund dessen kein QR-Code erstellt werden kann. Sollte dieser Fehler mehrfach auftreten, kontaktieren Sie bitte die Administratoren.'); |
|
123 |
+ } |
|
124 |
+} |
|
125 |
+ |
|
126 |
+ |
|
127 |
+function generate_bezahlcode_image($id) |
|
128 |
+{ |
|
129 |
+ $invoice = invoice_details($id); |
|
130 |
+ $customerno = $invoice['kunde']; |
|
131 |
+ $amount = str_replace('.', '%2C', sprintf('%.2f', $invoice['betrag'])); |
|
132 |
+ $datum = $invoice['datum']; |
|
133 |
+ $data = 'bank://singlepaymentsepa?name=schokokeks.org%20GbR&reason=RE%20'.$id.'%20KD%20'.$customerno.'%20vom%20'.$datum.'&iban=DE91602911200041512006&bic=GENODES1VBK&amount='.$amount; |
|
134 |
+ |
|
135 |
+ $descriptorspec = array( |
|
136 |
+ 0 => array("pipe", "r"), // STDIN ist eine Pipe, von der das Child liest |
|
137 |
+ 1 => array("pipe", "w"), // STDOUT ist eine Pipe, in die das Child schreibt |
|
138 |
+ 2 => array("pipe", "w") |
|
139 |
+ ); |
|
140 |
+ |
|
141 |
+ $process = proc_open('qrencode -t PNG -o -', $descriptorspec, $pipes); |
|
142 |
+ |
|
143 |
+ if (is_resource($process)) { |
|
144 |
+ // $pipes sieht nun so aus: |
|
145 |
+ // 0 => Schreibhandle, das auf das Child STDIN verbunden ist |
|
146 |
+ // 1 => Lesehandle, das auf das Child STDOUT verbunden ist |
|
147 |
+ |
|
148 |
+ fwrite($pipes[0], $data); |
|
149 |
+ fclose($pipes[0]); |
|
150 |
+ |
|
151 |
+ $pngdata = stream_get_contents($pipes[1]); |
|
152 |
+ fclose($pipes[1]); |
|
153 |
+ |
|
154 |
+ // Es ist wichtig, dass Sie alle Pipes schließen bevor Sie |
|
155 |
+ // proc_close aufrufen, um Deadlocks zu vermeiden |
|
156 |
+ $return_value = proc_close($process); |
|
157 |
+ |
|
158 |
+ return $pngdata; |
|
159 |
+ } else { |
|
160 |
+ warning('Es ist ein interner Fehler im Webinterface aufgetreten, aufgrund dessen kein QR-Code erstellt werden kann. Sollte dieser Fehler mehrfach auftreten, kontaktieren Sie bitte die Administratoren.'); |
|
161 |
+ } |
|
162 |
+} |
|
163 |
+ |
|
164 |
+ |
|
165 |
+ |
|
166 |
+# bank://singlepaymentsepa?name=SCHOKOKEKS.ORG%20GBR&reason=RE%20256%20KD%2032%20vom%202008-03-01&iban=DE91602911200041512006&bic=GENODES1VBK&amount=45%2C00 |
|
78 | 167 |
?> |
79 | 168 |