summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2020-03-31 18:35:08 +0200
committerMarcello Stanisci <stanisci.m@gmail.com>2020-03-31 18:35:08 +0200
commit00f798e504398aaed4b17e8427814525faeeba11 (patch)
treedf8c0added35a4a30ae9c2a704f81ca17715dbcb
parent8723a7107d0916ded72cdcf311ddc59f6343ecee (diff)
downloadlibeufin-00f798e504398aaed4b17e8427814525faeeba11.tar.gz
libeufin-00f798e504398aaed4b17e8427814525faeeba11.tar.bz2
libeufin-00f798e504398aaed4b17e8427814525faeeba11.zip
Avoid processing invalid payments twice
-rwxr-xr-xcli/python/libeufin-cli19
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt1
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt3
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