Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Rechnungserstellung mit GiroCode #1412

Closed
7 tasks done
stm9x9 opened this issue Oct 27, 2021 · 13 comments
Closed
7 tasks done

[FEATURE] Rechnungserstellung mit GiroCode #1412

stm9x9 opened this issue Oct 27, 2021 · 13 comments
Labels
documentation needs to be documented enhancement New feature or request finanzen Issue weist Bezug zu Buchhaltung / Finanzen auf
Milestone

Comments

@stm9x9
Copy link

stm9x9 commented Oct 27, 2021

Um Überweisungen zu erleichtern, gibt es eine Sonderform des QR-Codes, der SEPA-Informationen enthält. Die kann man einfach mit der Banking-App scannen und alle Daten sind ohne Abtippfehler und Arbeit in der Überweisungsmaske.

siehe zb https://www.youtube.com/watch?v=VPx0pCauW64

Da Name und Kontoverbindung ja schon in jl hinterlegt sind, könnte man beim Erzeugen einer Rechnung auch so einen Code erzeugen lassen.

Dafür gibt es mehrere Moglichkeiten:

@j-dimension 2024-02-08 ------------------------------------

  • neue Platzhalterart für Bilddaten: 4h
  • neuer Platzhalter BEL_QR: 0,5h
  • bei Dokumenterstellung: prüfen auf QR-Platzhalter, wenn vorhanden: prüfen auf vollständige Zahlungsinformationen im Kanzleiprofil, ggf. Warnung: 1,5h
  • Dokumenterstellung: QR-Code aus Bankinformationen im Kanzleiprofil generieren: 0,75h
  • Test MS Office: 1,5h
  • Test LibreOffice: 1,5h
  • Doku: 0,5h

10,25h

zukünftig könnte es auch sinnvoll sein, die Kontoinformationen nicht aus dem Kanzleiprofil zu nehmen, sondern die Bankverbindung am Nutzer zu hinterlegen (Bürogemeinschaften).

@stm9x9 stm9x9 added the enhancement New feature or request label Oct 27, 2021
@Dickmaulruessler
Copy link

Ja, wäre witzig, wenn man das mit libreOffice einfügen könnte. Ich habe jetzt entdeckt, dass meine Sparkassen App das sogar auch schon einlesen könnte.

(funfact zur Digitalisierungsgeschwindigkeit in Deutschland: Das YouTube Video ist schon 7 Jahre alt)

@PBaumfalk
Copy link

PBaumfalk commented Oct 27, 2021 via email

@j-dimension j-dimension added this to the roadmap milestone Oct 27, 2021
@j-dimension j-dimension added the finanzen Issue weist Bezug zu Buchhaltung / Finanzen auf label Oct 27, 2021
@stm9x9
Copy link
Author

stm9x9 commented Oct 27, 2021

Man kann einen Girocode per LibreOffice automatisiert einfügen?

nein. Man kann in LO nur allgemein einen QR-Code erzeugen. Siehe der Link zu der LO-Hilfe.

@Dickmaulruessler
Copy link

https://s-publicservices.de/leistungen/girocode
Auch mit Java API.

Ich halte das erst einmal nur für eine lustige Spielerei. Und soweit ich das verstehe würde das auf lange Sicht ohnehin kein jl-Feature, sondern allenfalls eines für libre Office sein, oder?

@stm9x9
Copy link
Author

stm9x9 commented Oct 29, 2021

Nicht unbedingt. Es könnte Teil der Gebührenrechner sein, der dann nicht nur die Gebührentabelle ausgibt, sondern auch diesen QR-Code. LO alleine hat ja keinen Zugriff auf Kontonummer etc.

@stm9x9
Copy link
Author

stm9x9 commented Jan 30, 2023

noch eine API: https://zahlen-mit-code.com/#api

Paßt ja zur aktuellen Rechnungs-Offensive! :-D

@stm9x9
Copy link
Author

stm9x9 commented Jan 30, 2023

noch was zum Dateninhalt: https://de.wikipedia.org/wiki/EPC-QR-Code#Dateninhalt

@j-dimension j-dimension modified the milestones: roadmap, 2.4 Apr 9, 2023
@j-dimension
Copy link
Member

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Base64;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class GirocodeGenerator {

    public static void main(String[] args) throws WriterException, IOException {
        // Define invoice data
        String iban = "DE89370400440532013000";
        String bic = "COBADEFFXXX";
        String name = "John Doe";
        String amount = "10.50";
        String purpose = "Invoice 12345";
        
        // Encode invoice data as a Girocode string
        String girocodeData = String.format("BCD\n001\n1\nSCT\n%s\n%s\n%s\nEUR%s\n\n\n%s\n\n\n\n", iban, bic, name, amount, purpose);
        byte[] girocodeBytes = girocodeData.getBytes("ISO-8859-1");
        String girocodeBase64 = Base64.getEncoder().encodeToString(girocodeBytes);
        
        // Generate QR code from Girocode string
        QRCodeWriter qrWriter = new QRCodeWriter();
        BitMatrix matrix = qrWriter.encode(girocodeBase64, BarcodeFormat.QR_CODE, 300, 300, getHints());
        
        // Write QR code to file
        File qrFile = new File("girocode.png");
        Path qrPath = qrFile.toPath();
        MatrixToImageWriter.writeToPath(matrix, "PNG", qrPath);
        
        // Read QR code file as base64 string
        byte[] qrBytes = Files.readAllBytes(qrPath);
        String qrBase64 = Base64.getEncoder().encodeToString(qrBytes);
        
        System.out.println("Girocode data: " + girocodeData);
        System.out.println("Girocode base64: " + girocodeBase64);
        System.out.println("QR code base64: " + qrBase64);
    }
    
    private static java.util.Map<EncodeHintType,Object> getHints() {
        java.util.Map<EncodeHintType,Object> hints = new java.util.EnumMap<EncodeHintType,Object>(EncodeHintType.class);
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
        hints.put(EncodeHintType.CHARACTER_SET, "ISO-8859-1");
        return hints;
    }
}

@j-dimension j-dimension modified the milestones: 2.4, 2.5 May 29, 2023
@j-dimension j-dimension modified the milestones: 2.5, 2.6 Oct 22, 2023
@j-dimension j-dimension moved this to Concept in j-lawyer.org 2.6 Oct 22, 2023
@j-dimension j-dimension modified the milestones: 2.6, 2.7 Dec 21, 2023
@j-dimension j-dimension moved this to Concept in j-lawyer.org 2.6.1 Dec 21, 2023
@j-dimension
Copy link
Member

benötigt Startup-Parameter

--add-exports=java.base/sun.security.action=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED

@j-dimension
Copy link
Member

grafik

@j-dimension
Copy link
Member

girocode.mp4

@j-dimension j-dimension modified the milestones: 2.7, 2.6 Feb 14, 2024
@j-dimension j-dimension added the documentation needs to be documented label Feb 14, 2024
@j-dimension
Copy link
Member

{{BEL_GIROCODE}}

@j-dimension j-dimension moved this to Documenting in j-lawyer.org 2.6 Feb 14, 2024
@socram70
Copy link

Auch wenn es für die Produktivversion vermutlich nicht mehr benötigt werden wird, wäre es vermutlich noch hilfreich darauf hinzuweisen, wo man die Parameter einfügen muss. Ich würde es in der /etc/init.d/j-lawyer-server ab Zeile 167 unterbringen, korrekt? Hier ab Zeile 166:

if [ "$JBOSS_MODE" = "standalone" ]; then start-stop-daemon --start --user "$JBOSS_USER" \ --chuid "$JBOSS_USER" --chdir "$JBOSS_HOME" --pidfile "$JBOSS_PIDFILE" \ --exec "$JBOSS_SCRIPT" -- -c $JBOSS_CONFIG $JBOSS_OPTS >> "$JBOSS_CONSOLE_LOG" 2>&1 &

@j-dimension j-dimension moved this from Documenting to Done in j-lawyer.org 2.6 Mar 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation needs to be documented enhancement New feature or request finanzen Issue weist Bezug zu Buchhaltung / Finanzen auf
Projects
No open projects
Status: Done
Development

No branches or pull requests

5 participants