|
|
|
@@ -8,6 +8,7 @@ from govoplan_core.core.module_guards import (
|
|
|
|
|
)
|
|
|
|
|
from govoplan_core.core.modules import (
|
|
|
|
|
CapabilityDocumentation,
|
|
|
|
|
DocumentationCondition,
|
|
|
|
|
DocumentationLink,
|
|
|
|
|
DocumentationTopic,
|
|
|
|
|
FrontendModule,
|
|
|
|
@@ -35,7 +36,7 @@ from govoplan_payments.backend.service import SqlPaymentRequestProvider
|
|
|
|
|
|
|
|
|
|
MODULE_ID = "payments"
|
|
|
|
|
MODULE_NAME = "Payments"
|
|
|
|
|
MODULE_VERSION = "0.1.20"
|
|
|
|
|
MODULE_VERSION = "0.1.21"
|
|
|
|
|
READ_SCOPE = "payments:payment:read"
|
|
|
|
|
WRITE_SCOPE = "payments:payment:write"
|
|
|
|
|
RECONCILE_SCOPE = "payments:payment:reconcile"
|
|
|
|
@@ -277,6 +278,7 @@ manifest = ModuleManifest(
|
|
|
|
|
audience=("data_subject", "operator", "auditor", "module_admin"),
|
|
|
|
|
related_modules=("core", "cases", "workflow_engine", "ledger"),
|
|
|
|
|
metadata={
|
|
|
|
|
"kind": "reference",
|
|
|
|
|
"help_contexts": [
|
|
|
|
|
"payments.workspace",
|
|
|
|
|
"payments.state.requested",
|
|
|
|
@@ -298,6 +300,48 @@ manifest = ModuleManifest(
|
|
|
|
|
),
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
translations={
|
|
|
|
|
"de": {
|
|
|
|
|
"title": "Datenschutzanfragen zu Zahlungen",
|
|
|
|
|
"summary": (
|
|
|
|
|
"Exakte Zahlungsverpflichtungen und Finanznachweise exportieren, ohne "
|
|
|
|
|
"Zahlungsbeschreibungen als Identitätssuchfläche zu verwenden."
|
|
|
|
|
),
|
|
|
|
|
"body": (
|
|
|
|
|
"Payments besitzt keine Spalte für Einwohner- oder Antragstelleridentitäten und "
|
|
|
|
|
"durchsucht weder Zahlungsbetreffe noch Kontext-JSON, Metadaten oder Quelldatensätze "
|
|
|
|
|
"nach einer Person. Eine vollständige Finanzauskunft erfordert deshalb eine exakte "
|
|
|
|
|
"Zahlungszeilenkennung, Zahlungskennung oder menschenlesbare Zahlungsreferenz, die als "
|
|
|
|
|
"verifizierte externe Betroffenenreferenz bereitgestellt wird. Das Auskunftspaket enthält "
|
|
|
|
|
"Verpflichtungsbetrag, Währung, Betreff, Status, Zeitpunkte, Quell- und begrenzte "
|
|
|
|
|
"Kontextreferenzen, Abstimmungsfakten, typisierte Nachweisreferenzen und Fakten zu "
|
|
|
|
|
"Lebenszyklusereignissen. Abstimmungsmetadaten, Ereignisinhalte, Prüfsummen, "
|
|
|
|
|
"Wiederholungsschlüssel, Anbieterdaten, Prüf-URLs und Zugangsdaten bleiben ausgeschlossen. "
|
|
|
|
|
"Eine Anfrage nur mit Konto-, Mitgliedschafts-, Identitäts- oder exakter Akteursreferenz "
|
|
|
|
|
"liefert minimierte Zuschreibungen zu Anforderung, Abstimmung und Ereignissen dieser "
|
|
|
|
|
"bearbeitenden Person; Zahlungsbetreffe werden nicht offengelegt. Jedes Ergebnis ist exakt "
|
|
|
|
|
"mandantenbegrenzt. Alle Löschaktionen sind reine Aufbewahrungsergebnisse und nicht "
|
|
|
|
|
"ausführbar, weil Verpflichtungen, Erfüllungen, Nachweisverknüpfungen und "
|
|
|
|
|
"Lebenszykluszuschreibungen gesteuerte finanzielle und gesetzliche Nachweise bleiben."
|
|
|
|
|
),
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
structured_translation_version="1",
|
|
|
|
|
structured_translations={
|
|
|
|
|
"de": {
|
|
|
|
|
"consequence_classes": {
|
|
|
|
|
"export_exact_payment": (
|
|
|
|
|
"Gibt Verpflichtung und begrenzte Finanznachweise für eine verifizierte exakte Zahlungskennung zurück."
|
|
|
|
|
),
|
|
|
|
|
"export_operator_attribution": (
|
|
|
|
|
"Gibt minimierte Finanzaktivität, aber niemals beliebige Zahlungsinhalte zurück."
|
|
|
|
|
),
|
|
|
|
|
"retain_payment_evidence": (
|
|
|
|
|
"Bewahrt Finanznachweise gemäß konfigurierter gesetzlicher Aufbewahrung und Sperre auf."
|
|
|
|
|
),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
DocumentationTopic(
|
|
|
|
|
id="payments.requests-and-reconciliation",
|
|
|
|
@@ -313,6 +357,8 @@ manifest = ModuleManifest(
|
|
|
|
|
layer="configured",
|
|
|
|
|
documentation_types=("admin", "user"),
|
|
|
|
|
audience=("operator", "module_admin", "auditor", "product_owner"),
|
|
|
|
|
conditions=(DocumentationCondition(required_scopes=(READ_SCOPE,)),),
|
|
|
|
|
related_modules=("cases", "workflow_engine", "audit", "ledger"),
|
|
|
|
|
links=(
|
|
|
|
|
DocumentationLink(
|
|
|
|
|
label="Payments boundary and recovery",
|
|
|
|
@@ -321,6 +367,7 @@ manifest = ModuleManifest(
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
metadata={
|
|
|
|
|
"kind": "workflow",
|
|
|
|
|
"help_contexts": [
|
|
|
|
|
"payments.request",
|
|
|
|
|
"payments.workspace",
|
|
|
|
@@ -329,6 +376,26 @@ manifest = ModuleManifest(
|
|
|
|
|
"payments.state.requested",
|
|
|
|
|
"payments.state.paid",
|
|
|
|
|
],
|
|
|
|
|
"purpose": (
|
|
|
|
|
"Create an exact payment obligation and reconcile it as paid only against matching immutable evidence."
|
|
|
|
|
),
|
|
|
|
|
"prerequisites": [
|
|
|
|
|
"The actor can read Payments; creating and reconciling require their dedicated scopes.",
|
|
|
|
|
"The source procedure supplies a stable same-tenant reference and a replay-safe request key.",
|
|
|
|
|
"Manual reconciliation has a same-tenant versioned or checksum-bound evidence reference.",
|
|
|
|
|
],
|
|
|
|
|
"steps": [
|
|
|
|
|
"Create the amount, currency, source reference, due date, and human payment reference in the guided dialog.",
|
|
|
|
|
"Retain the returned payment ID in the calling Case or Workflow instead of writing Payments tables.",
|
|
|
|
|
"Reload the obligation before reconciliation when the workspace reports stale data.",
|
|
|
|
|
"Provide the external transaction reference, exact settlement time, and immutable evidence reference.",
|
|
|
|
|
"Confirm full amount and currency; any mismatch, duplicate, partial amount, or cross-tenant evidence fails closed.",
|
|
|
|
|
"Review the appended lifecycle and audit evidence after the obligation becomes paid.",
|
|
|
|
|
],
|
|
|
|
|
"limitations": [
|
|
|
|
|
"Only full manual reconciliation is supported; partial payment, refund, reversal, and correction need future governed flows.",
|
|
|
|
|
"Online checkout, callbacks, Ledger posting, XRechnung, and an applicant payment page are not implemented here.",
|
|
|
|
|
],
|
|
|
|
|
"privacy_notes": [
|
|
|
|
|
"Procedure context uses stable references; applicant names, bank account details, and submitted form values are not required.",
|
|
|
|
|
"The immutable evidence remains owned by its provider; Payments stores only the typed EvidenceReference.",
|
|
|
|
@@ -337,6 +404,79 @@ manifest = ModuleManifest(
|
|
|
|
|
"request_payment": "Creates a durable amount/currency obligation and a stable applicant payment reference.",
|
|
|
|
|
"reconcile_manual": "Marks the exact obligation paid and appends evidence; a future governed adjustment is required to reverse it.",
|
|
|
|
|
},
|
|
|
|
|
"verification": [
|
|
|
|
|
"The paid obligation retains the original amount, currency, payment ID, and human reference unchanged.",
|
|
|
|
|
"Reconciliation names the external transaction and immutable evidence reference.",
|
|
|
|
|
"Replay and duplicate checks prove that one external settlement did not create conflicting paid states.",
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
translations={
|
|
|
|
|
"de": {
|
|
|
|
|
"title": "Zahlungsanforderungen und manuelle Abstimmung",
|
|
|
|
|
"summary": (
|
|
|
|
|
"Eine exakte Verpflichtung anlegen und nur mit passendem unveränderlichem "
|
|
|
|
|
"Nachweis als bezahlt kennzeichnen."
|
|
|
|
|
),
|
|
|
|
|
"body": (
|
|
|
|
|
"Payments führt die mandantengebundene Zahlungskennung, die menschenlesbare "
|
|
|
|
|
"Zahlungsreferenz, angeforderten Betrag und Währung, Lebenszyklusereignisse und "
|
|
|
|
|
"Abstimmungsnachweise. Ein Case, Workflow oder anderes Verfahren ruft die Fähigkeit "
|
|
|
|
|
"payments.requests mit eigener Quellreferenz und Wiederholungsschlüssel auf und bewahrt "
|
|
|
|
|
"die zurückgegebene Zahlungskennung auf, statt Payments-Tabellen zu schreiben. Der "
|
|
|
|
|
"Arbeitsbereich zeigt angeforderte und bezahlte Verpflichtungen mit Quelle, Fälligkeit "
|
|
|
|
|
"oder Erfüllungszeit und Abstimmungsnachweis. Schreibberechtigte legen eine Anforderung im "
|
|
|
|
|
"geführten Dialog an. Abstimmungsberechtigte verwenden den getrennten folgenreichen Dialog, "
|
|
|
|
|
"der Betrag und Währung fixiert und eine externe Transaktionsreferenz sowie eine "
|
|
|
|
|
"mandantengleiche versionierte oder prüfsummengebundene EvidenceReference verlangt. Neu "
|
|
|
|
|
"laden erhält vorhandene Daten und kennzeichnet sie als veraltet, wenn die Aktualisierung "
|
|
|
|
|
"scheitert. Fehlende Anlege- oder Abstimmungsberechtigung bleibt mit erforderlicher "
|
|
|
|
|
"Berechtigung und zuständiger Administration sichtbar. Der erste unterstützte Zahlungseingang "
|
|
|
|
|
"ist die manuelle Abstimmung einer vollständigen Zahlung. Abweichung, doppelte Erfüllung unter "
|
|
|
|
|
"anderem Schlüssel, mandantenfremder Nachweis, Teilbetrag oder Zeitstempel ohne Zeitzone "
|
|
|
|
|
"scheitert geschlossen. Erfolgreiche Anforderungen und Abstimmungen fügen "
|
|
|
|
|
"Zahlungsereignisse an; API-Aktionen erzeugen bei installiertem Audit Nachweise. Es gibt keine "
|
|
|
|
|
"stille Korrektur: Storno, Erstattung, Teilzahlung, Online-Checkout, Anbieter-Callbacks, "
|
|
|
|
|
"Ledger-Buchung und XRechnung bleiben ausdrückliche zukünftige Abläufe."
|
|
|
|
|
),
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
structured_translation_version="1",
|
|
|
|
|
structured_translations={
|
|
|
|
|
"de": {
|
|
|
|
|
"purpose": (
|
|
|
|
|
"Eine exakte Zahlungsverpflichtung anlegen und nur anhand passender unveränderlicher Nachweise als bezahlt abstimmen."
|
|
|
|
|
),
|
|
|
|
|
"prerequisites": [
|
|
|
|
|
"Die handelnde Person darf Payments lesen; Anlegen und Abstimmen erfordern ihre jeweils eigenen Berechtigungen.",
|
|
|
|
|
"Das Quellverfahren liefert eine stabile mandantengleiche Referenz und einen wiederholungssicheren Anforderungsschlüssel.",
|
|
|
|
|
"Für die manuelle Abstimmung liegt eine mandantengleiche versionierte oder prüfsummengebundene Nachweisreferenz vor.",
|
|
|
|
|
],
|
|
|
|
|
"steps": [
|
|
|
|
|
"Betrag, Währung, Quellreferenz, Fälligkeit und menschenlesbare Zahlungsreferenz im geführten Dialog anlegen.",
|
|
|
|
|
"Die zurückgegebene Zahlungskennung im aufrufenden Case oder Workflow bewahren, statt Payments-Tabellen zu schreiben.",
|
|
|
|
|
"Die Verpflichtung vor der Abstimmung neu laden, wenn der Arbeitsbereich veraltete Daten meldet.",
|
|
|
|
|
"Externe Transaktionsreferenz, exakte Erfüllungszeit und unveränderliche Nachweisreferenz angeben.",
|
|
|
|
|
"Vollständigen Betrag und Währung bestätigen; Abweichung, Duplikat, Teilbetrag oder mandantenfremder Nachweis scheitert geschlossen.",
|
|
|
|
|
"Nach dem Wechsel auf bezahlt die angefügten Lebenszyklus- und Auditnachweise prüfen.",
|
|
|
|
|
],
|
|
|
|
|
"limitations": [
|
|
|
|
|
"Nur vollständige manuelle Abstimmung wird unterstützt; Teilzahlung, Erstattung, Storno und Korrektur benötigen zukünftige gesteuerte Abläufe.",
|
|
|
|
|
"Online-Checkout, Callbacks, Ledger-Buchung, XRechnung und eine Antragsteller-Zahlungsseite sind hier nicht implementiert.",
|
|
|
|
|
],
|
|
|
|
|
"privacy_notes": [
|
|
|
|
|
"Verfahrenskontext verwendet stabile Referenzen; Namen von Antragstellern, Bankverbindungen und übermittelte Formularwerte sind nicht erforderlich.",
|
|
|
|
|
"Der unveränderliche Nachweis bleibt Eigentum seines Anbieters; Payments speichert nur die typisierte EvidenceReference.",
|
|
|
|
|
],
|
|
|
|
|
"consequence_classes": {
|
|
|
|
|
"request_payment": "Erzeugt eine dauerhafte Betrags- und Währungsverpflichtung sowie eine stabile Zahlungsreferenz für Antragsteller.",
|
|
|
|
|
"reconcile_manual": "Kennzeichnet die exakte Verpflichtung als bezahlt und fügt Nachweise an; eine zukünftige gesteuerte Anpassung ist zur Umkehr erforderlich.",
|
|
|
|
|
},
|
|
|
|
|
"verification": [
|
|
|
|
|
"Die bezahlte Verpflichtung bewahrt ursprünglichen Betrag, Währung, Zahlungskennung und menschenlesbare Referenz unverändert.",
|
|
|
|
|
"Die Abstimmung nennt externe Transaktion und unveränderliche Nachweisreferenz.",
|
|
|
|
|
"Wiederholungs- und Duplikatprüfungen belegen, dass eine externe Erfüllung keine widersprüchlichen Bezahltzustände erzeugt hat.",
|
|
|
|
|
],
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|