Skip to content

RECHNUNGEN: Zahlungen direkt von Finanzinstitut beziehen #1131

Description

@olibrian

Ausgangslage:
Aktuell können wir camt054 xml von einem Finanzinstitut (z.b. Postfinance) importieren. Anschliessend werden die entsprechende Rechnungen als bezahlt markiert.

Ziel:
Um diesen manuellen Schritt zu automatisieren werden camt054 Dateien via Schnittstelle von den Finanzinstituten bezogen.

Die Postfinance bietet verschiedene Schnittstellen.

In einer ersten groben Sichtung würde sich der EBICS Standard gut eignen, da dieser unabhängig von dem Finanzinstitut ist. Offizielle Seite EBICS: https://www.ebics.de

Umsetzung

Konfigurierbar auf den Rechnungseinstellungen (https://puzzle.hitobito.com/de/groups/1/invoice_config) pro Layer. Credentials mittels Encryptionservice verschlüsselt in der DB ablegen.

  • Zahlungsprovider sind in Hitobito vorkonfiguriert (vorerst mal Postfinance)
  • Die Schnittstelle wird täglich automatisch für alle Layer mit entsprechender Rechnungseinstellungen abgefragt
  • Es ist nicht vorgesehen das die Abfrage manuell gestartet werden kann
  • Beim Einrichten der Schnittstelle wird ein HTML File generiert das ausgedruckt und per Post an die Bank gesendet wird. Dieses Dokument soll gleich vom Webserver nach dem Einrichten im Browser angezeigt werden. Beispielbrief
  • Die Hashwerte der Postfinance sind hier beschrieben: https://www.postfinance.ch/content/dam/pfch/doc/prod/pay/FS_EBICS_Parameterblatt_Software_479.07_de.pdf
  • Rechnung wird z.B. über Referenznr identifiziert und eine entsprechende Zahlung wird in Hitobito angelegt, aber nur wenn das Layer der Rechnung mit dem Layer der PaymentProviderConfig übereinstimmt
  • Zahlungen die keiner Rechnung zugewiesen werden können, werden ignoriert
  • Die Zahlung / Transaktions-ID soll der Zahlung in Hitobito zugewiesen werden. Es muss verhindert werden das die gleiche Zahlung mehrfach importiert wird
  • Der Status der Rechnung einer zugehörigen Zahlung wird entsprechend aktualisiert
  • Ist eine automatische Schnittstelle für einen Layer konfiguriert, ist der manuelle Import via camt054 deaktiviert

Techspec

  • Gem für EBICS https://github.com/railslove/epics
  • Neues Model: PaymentProviderConfig, payment_provider, keys (mit Encryptionservice verschlüsseln), status: :new, :pending, :registered, last_sync_at
  • Error Handling der Kommunikation zur Bank
  • invoice_config: has_many :payment_provider_configs
  • In "Rechnungseinstellungen > Edit" neues Tab "Zahlungsschnittstellen"
  • Neuer Zahlungsprovider: Form für Registrierung, nach Absenden wird HTML zum Ausdruck angezeigt -> Button in InvoiceConfig#show
  • Zahlungsprovider edit: hier können die von der Bank zur Verfügung gestellten Keys gespeichert werden. Werte die nicht mehr geändert werden dürfen sind read-only Warnhinweis, nach erster Initialisierung
  • Neuer DelayedJob der täglich die konfigurierten Schnittstellen synced

Schätzung Aufwand: 8-10PT

Activity

  1. changed the title [-]Zahlungen direkt von Finanzinstitut beziehen[/-] [+]RECHNUNGEN: Zahlungen direkt von Finanzinstitut beziehen[/+] on Feb 24, 2021
  2. kronn commented on Jul 2, 2021

    @kronn
    Member

    Ich habe das Ticket aufgesplittet und daher die Aufwandsschätzung hier um die Schätzungen der Teiltickets reduziert. Es bleibt noch 1 Punkt übrig, was dann vllt die finale Verifikation sein könnte.

  3. self-assigned this
    on Aug 27, 2021
  4. removed their assignment
    on Sep 10, 2021
  5. olibrian commented on Sep 10, 2021

    @olibrian
    MemberAuthor

    Wurde umgesetzt. Welcome Back @psunix . Willst du die Umsetzung noch anschauen?

  6. self-assigned this
    on Sep 14, 2021
  7. mtnstar commented on Sep 15, 2021

    @mtnstar
    Contributor

    https://github.com/hitobito/hitobito/blob/master/app/domain/payment_provider.rb#L44
    use update! ?

    https://github.com/hitobito/hitobito/blob/master/app/domain/payment_provider.rb#L97
    add comment? extract decoding to own method? split into multiple lines to make it more readable?

    https://github.com/hitobito/hitobito/blob/master/app/jobs/payments/ebics_import_job.rb#L9
    this runs the job on a random time daily. should this not be at a specific time during the night? not so sure if it's possible with our job setup.

    https://github.com/hitobito/hitobito/blob/master/doc/features/ebics-connection.md

    • instead of: invoice data, invoice payment data?

    https://github.com/hitobito/hitobito/blob/master/config/settings.yml
    is getting bigger and bigger ... maybe extract this to config/payment_providers.yml? include it from settings.yml or access it differently

  8. nilsrauch commented on Sep 15, 2021

    @nilsrauch
    Member

    Feedback eingebaut in fe7f946

  9. kronn commented on Sep 15, 2021

    @kronn
    Member

    Nach meiner Kenntnis kann man die allgemeinen Settings nicht weiter aufteilen. Man könnte überlegen, ob man mehr Daten aus den Settings in die DB verschiebt und dann als seeds lädt und verwaltet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions