diff options
author | Marcello Stanisci <stanisci.m@gmail.com> | 2020-03-31 18:35:08 +0200 |
---|---|---|
committer | Marcello Stanisci <stanisci.m@gmail.com> | 2020-03-31 18:35:08 +0200 |
commit | 00f798e504398aaed4b17e8427814525faeeba11 (patch) | |
tree | df8c0added35a4a30ae9c2a704f81ca17715dbcb | |
parent | 8723a7107d0916ded72cdcf311ddc59f6343ecee (diff) | |
download | libeufin-00f798e504398aaed4b17e8427814525faeeba11.tar.gz libeufin-00f798e504398aaed4b17e8427814525faeeba11.tar.bz2 libeufin-00f798e504398aaed4b17e8427814525faeeba11.zip |
Avoid processing invalid payments twice
-rwxr-xr-x | cli/python/libeufin-cli | 19 | ||||
-rw-r--r-- | nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt | 1 | ||||
-rw-r--r-- | nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt | 3 |
3 files changed, 22 insertions, 1 deletions
diff --git a/cli/python/libeufin-cli b/cli/python/libeufin-cli index b8917155..72a2d449 100755 --- a/cli/python/libeufin-cli +++ b/cli/python/libeufin-cli @@ -427,6 +427,25 @@ def crz(obj, account_id, date_range, nexus_base_url): resp = post(url, json=req) print(resp.content.decode("utf-8")) +@taler.command(help="Trigger refunds for invalid incoming transactions") +@click.pass_obj +@click.option( + "--account-id", + help="Numerical ID of the customer at the Nexus", + required=True +) +@click.option( + "--bank-account-id", + help="Token that identifies one bank account belonging to --account-id", + required=True +) +@click.argument( + "nexus-base-url" +) +def refund(ctx, account_id, bank_account_id, nexus_base_url): + + + @taler.command(help="Separate payments with Taler-subject from the rest") @click.pass_obj @click.option( diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt index 361cf6a8..7db14619 100644 --- a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt +++ b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt @@ -23,6 +23,7 @@ class TalerIncomingPaymentEntry(id: EntityID<Long>) : LongEntity(id) { companion object : LongEntityClass<TalerIncomingPaymentEntry>(TalerIncomingPayments) var payment by EbicsRawBankTransactionEntry referencedOn TalerIncomingPayments.payment var valid by TalerIncomingPayments.valid + var processed by TalerIncomingPayments.processed } object EbicsRawBankTransactionsTable : LongIdTable() { diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt index 81773a8d..726fbfe3 100644 --- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt +++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt @@ -641,7 +641,7 @@ fun main() { ) } TalerIncomingPaymentEntry.find { - TalerIncomingPayments.processed eq false + TalerIncomingPayments.processed eq false and TalerIncomingPayments.valid eq false }.forEach { createPain001entry( Pain001Data( @@ -653,6 +653,7 @@ fun main() { ), acctid.id.value ) + it.processed = true } } return@post |