commit 387601cf8cf9ea0cab6c36348a72150605cd4c4f
parent caac5529f95bf7478408e050d781ad49012b537e
Author: Sebastian <sebasjm@gmail.com>
Date: Thu, 24 Apr 2025 09:57:23 -0300
rename fields to match the new account properties registry
Diffstat:
| M | deployments/tops.rst | | | 138 | +++++++++++++++++++++++++++++++++++++++++-------------------------------------- |
1 file changed, 71 insertions(+), 67 deletions(-)
diff --git a/deployments/tops.rst b/deployments/tops.rst
@@ -211,6 +211,8 @@ profiles:
Properties
----------
+Properties are registered at the GNU Taler Account Properties `GNU Taler Account Properties <https://git.taler.net/gana.git/tree/gnu-taler-account-properties>`_.
+
* ``FILE_NOTE :: Text``:
* Current note on the GWG file.
@@ -219,39 +221,39 @@ Properties
* Customer name or internal alias.
-* ``AML_ACCOUNT_OPEN :: Boolean``
+* ``ACCOUNT_OPEN :: Boolean``
* Was this customer activated for deposit operations?
* Only set after merchant passes KYC
* We store this to know when to emit the ``(INCR|DECR)_ACCOUNT_OPEN`` and related events
-* ``AML_DOMESTIC_PEP :: Boolean``
+* ``PEP_DOMESTIC :: Boolean``
* Is the customer a domestic PEP?
-* ``AML_FOREIGN_PEP :: Boolean``
+* ``PEP_FOREIGN :: Boolean``
* Is the customer a foreign PEP?
-* ``AML_INTERNATIONAL_ORG_PEP :: Boolean``
+* ``PEP_INTERNATIONAL_ORGANIZATION :: Boolean``
* Is the customer a international org PEP?
-* ``AML_HIGH_RISK_CUSTOMER :: Boolean``
+* ``HIGH_RISK_CUSTOMER :: Boolean``
* Is the customer classified as high-risk?
-* ``AML_HIGH_RISK_COUNTRY :: Boolean``
+* ``HIGH_RISK_COUNTRY :: Boolean``
* Is the customer associated with high-risk (VQF Dok. Nr. 902.4.1) country?
-* ``AML_ACCOUNT_IDLE :: Boolean``
+* ``ACCOUNT_IDLE :: Boolean``
* The account has been marked as idle (typically by a batch process that checks
for idle accounts).
-* ``AML_INVESTIGATION_STATE``
+* ``INVESTIGATION_STATE``
* The MROS reporting state for the account.
* Values:
@@ -268,7 +270,7 @@ Properties
* ``REPORTED_SUSPICION_SIMPLE``: Reported under Art. 305 StGB (German "einfacher Verdacht", simple suspicion)
* ``REPORTED_SUSPICION_SUBSTANTIATED``: Reported under Art. 9 GwG (German "begründeter Verdacht", substantiated suspicion)
-* ``AML_INVESTIGATION_TRIGGER :: Text``
+* ``INVESTIGATION_TRIGGER :: Text``
* Informal reason why the AML investigation was triggered;
examples include suspicious transaction or (automated)
@@ -306,12 +308,12 @@ PEP/Risk classification:
* ``INCR_HIGH_RISK_CUSTOMER`` / ``DECR_HIGH_RISK_CUSTOMER``
* ``INCR_HIGH_RISK_COUNTRY`` / ``INCR_HIGH_RISK_COUNTRY``
* ``INCR_PEP`` / ``DECR_PEP``
-* ``INCR_FOREIGN_PEP`` / ``DECR_FOREIGN_PEP``
-* ``INCR_DOMESTIC_PEP`` / ``DECR_DOMESTIC_PEP``
-* ``INCR_INTERNATIONAL_ORG_PEP`` / ``DECR_INTERNATIONAL_ORG_PEP``
+* ``INCR_PEP_FOREIGN`` / ``DECR_PEP_FOREIGN``
+* ``INCR_PEP_DOMESTIC`` / ``DECR_PEP_DOMESTIC``
+* ``INCR_PEP_INTERNATIONAL_ORGANIZATION`` / ``DECR_PEP_INTERNATIONAL_ORGANIZATION``
-MROS Reporting (see ``AML_INVESTIGATION_STATE`` property):
+MROS Reporting (see ``INVESTIGATION_STATE`` property):
* ``MROS_REPORTED_SUSPICION_SIMPLE``
* ``MROS_REPORTED_SUSPICION_SUBSTANTIATED``
@@ -342,6 +344,8 @@ The following subsections define the contents of the forms. The corresponding
field names are registered via `GANA <https://git.taler.net/gana.git/tree/gnu-taler-form-attributes>`_.
The the UI for the forms is defined in `taler-typescript-core <https://git.taler.net/taler-typescript-core.git/tree/packages/web-util/src/forms/gana>`_
+When the customer or officer submit the information throught the client software it must
+include the fields FORM_ID and FORM_VERSION attributed as defined in GANA.
generic_note
^^^^^^^^^^^^
@@ -1634,42 +1638,42 @@ Properties:
.. code:: javascript
- newProps.AML_ACCOUNT_OPEN = true;
+ newProps.ACCOUNT_OPEN = true;
Events:
.. code:: javascript
- if (propBecameTrue(AML_ACCOUNT_OPEN)) {
+ if (propBecameTrue(ACCOUNT_OPEN)) {
emit(INCR_ACCOUNT_OPEN);
const isPep = (
- newProps.AML_FOREIGN_PEP ||
- newProps.AML_DOMESTIC_PEP ||
- newProps.AML_INTERNATIONAL_ORG_PEP
+ newProps.PEP_FOREIGN ||
+ newProps.PEP_DOMESTIC ||
+ newProps.PEP_INTERNATIONAL_ORGANIZATION
);
if (isPep) {
emit(INCR_PEP);
}
- if (newProps.AML_FOREIGN_PEP) {
- emit(INCR_FOREIGN_PEP);
+ if (newProps.PEP_FOREIGN) {
+ emit(INCR_PEP_FOREIGN);
}
- if (newProps.AML_DOMESTIC_PEP) {
- emit(INCR_DOMESTIC_PEP);
+ if (newProps.PEP_DOMESTIC) {
+ emit(INCR_PEP_DOMESTIC);
}
- if (newProps.AML_INTERNATIONAL_ORG_PEP) {
- emit(INCR_INTERNATIONAL_ORG_PEP);
+ if (newProps.PEP_INTERNATIONAL_ORGANIZATION) {
+ emit(INCR_PEP_INTERNATIONAL_ORGANIZATION);
}
- if (newProps.AML_HIGH_RISK_CUSTOMER) {
+ if (newProps.HIGH_RISK_CUSTOMER) {
emit(INCR_HIGH_RISK_CUSTOMER);
}
- if (newProps.AML_HIGH_RISK_COUNTRY) {
+ if (newProps.HIGH_RISK_COUNTRY) {
emit(INCR_HIGH_RISK_COUNTRY);
}
}
@@ -1682,53 +1686,53 @@ Properties:
.. code:: javascript
- newProps.AML_FOREIGN_PEP = form.PEP_FOREIGN;
- newProps.AML_DOMESTIC_PEP = form.PEP_DOMESTIC;
- newProps.AML_INTERNATIONAL_ORG_PEP = form.PEP_INTERNATIONAL_ORGANIZATION;
- newProps.AML_HIGH_RISK_CUSTOMER = form.RISK_CLASSIFICATION_LEVEL == "HIGH_RISK";
- newProps.AML_HIGH_RISK_COUNTRY = form.COUNTRY_RISK_NATIONALITY_LEVEL == "HIGH";
+ newProps.PEP_FOREIGN = form.PEP_FOREIGN;
+ newProps.PEP_DOMESTIC = form.PEP_DOMESTIC;
+ newProps.PEP_INTERNATIONAL_ORGANIZATION = form.PEP_INTERNATIONAL_ORGANIZATION;
+ newProps.HIGH_RISK_CUSTOMER = form.RISK_CLASSIFICATION_LEVEL == "HIGH_RISK";
+ newProps.HIGH_RISK_COUNTRY = form.COUNTRY_RISK_NATIONALITY_LEVEL == "HIGH";
Events:
.. code:: javascript
- if (oldProps.AML_ACCOUNT_OPEN) {
- if (propBecameTrue(AML_FOREIGN_PEP) {
- emit(INCR_FOREIGN_PEP);
+ if (oldProps.ACCOUNT_OPEN) {
+ if (propBecameTrue(PEP_FOREIGN) {
+ emit(INCR_PEP_FOREIGN);
}
- if (propBecameTrue(AML_DOMESTIC_PEP) {
- emit(INCR_INTERNATIONAL_ORG_PEP);
+ if (propBecameTrue(PEP_DOMESTIC) {
+ emit(INCR_PEP_INTERNATIONAL_ORGANIZATION);
}
- if (propBecameTrue(AML_DOMESTIC_PEP) {
- emit(INCR_DOMESTIC_PEP);
+ if (propBecameTrue(PEP_DOMESTIC) {
+ emit(INCR_PEP_DOMESTIC);
}
- if (propBecameFalse(AML_FOREIGN_PEP) {
- emit(DECR_FOREIGN_PEP);
+ if (propBecameFalse(PEP_FOREIGN) {
+ emit(DECR_PEP_FOREIGN);
}
- if (propBecameFalse(AML_DOMESTIC_PEP) {
- emit(DECR_INTERNATIONAL_ORG_PEP);
+ if (propBecameFalse(PEP_DOMESTIC) {
+ emit(DECR_PEP_INTERNATIONAL_ORGANIZATION);
}
- if (propBecameFalse(AML_DOMESTIC_PEP) {
- emit(DECR_DOMESTIC_PEP);
+ if (propBecameFalse(PEP_DOMESTIC) {
+ emit(DECR_PEP_DOMESTIC);
}
const wasPep = (
- oldProps.AML_DOMESTIC_PEP ||
- oldProps.AML_FOREIGN_PEP ||
- oldProps.AML_INTERNATIONAL_ORG_PEP);
+ oldProps.PEP_DOMESTIC ||
+ oldProps.PEP_FOREIGN ||
+ oldProps.PEP_INTERNATIONAL_ORGANIZATION);
const isPep = (
- newProps.AML_DOMESTIC_PEP ||
- newProps.AML_FOREIGN_PEP ||
- newProps.AML_INTERNATIONAL_ORG_PEP);
+ newProps.PEP_DOMESTIC ||
+ newProps.PEP_FOREIGN ||
+ newProps.PEP_INTERNATIONAL_ORGANIZATION);
if (wasPep && !isPep) {
emit(DECR_PEP);
}
if (!wasPep & isPep) {
emit(INCR_PEP);
}
- if (propBecameTrue(AML_HIGH_RISK)) {
+ if (propBecameTrue(HIGH_RISK)) {
emit(INCR_HIGH_RISK);
}
- if (propBecameFalse(AML_HIGH_RISK)) {
+ if (propBecameFalse(HIGH_RISK)) {
emit(DECR_HIGH_RISK);
}
}
@@ -1743,16 +1747,16 @@ Properties:
if (INCRISK_RESULT == "SIMPLE_SUSPICION") {
- newProps.AML_INVESTIGATION_STATE = "REPORTED_SUSPICION_SIMPLE";
+ newProps.INVESTIGATION_STATE = "REPORTED_SUSPICION_SIMPLE";
} else if (INCRISK_RESULT == "SUBSTANTIATED_SUSPICION") {
- newProps.AML_INVESTIGATION_STATE = "REPORTED_SUSPICION_SUBSTANTIATED";
+ newProps.INVESTIGATION_STATE = "REPORTED_SUSPICION_SUBSTANTIATED";
} else if (INCRISK_RESULT == "NO_SUSPICION") {
- newProps.AML_INVESTIGATION_STATE = "INVESTIGATION_COMPLETED_WITHOUT_SUSPICION";
+ newProps.INVESTIGATION_STATE = "INVESTIGATION_COMPLETED_WITHOUT_SUSPICION";
} else if (INCRISK_RESULT == "OTHER") {
// FIXME-#9677: would be nice if we instead could set the property to "undefined"/null
// and *force* the AML officer to manually set it.
// Alternatively, we should probably default to "INVESTIGATION_PENDING". -CG
- newProps.AML_INVESTIGATION_STATE = "INVESTIGATION_COMPLETED_WITHOUT_SUSPICION";
+ newProps.INVESTIGATION_STATE = "INVESTIGATION_COMPLETED_WITHOUT_SUSPICION";
} else {
not_reached();
}
@@ -1761,15 +1765,15 @@ Events:
.. code:: javascript
- if (oldProps.AML_INVESTIGATION_STATE == "NONE" ||
- oldProps.AML_INVESTIGATION_STATE == "INVESTIGATION_PENDING" ||
- oldProps.AML_INVESTIGATION_STATE == null) {
- if (newProps.AML_INVESTIGATION_STATE == "REPORTED_SUSPICION_SIMPLE" ||
- newProps.AML_INVESTIGATION_STATE == "REPORTED_SUSPICION_SUBSTANTIATED" ||
- newProps.AML_INVESTIGATION_STATE == "INVESTIGATION_COMPLETED_WITHOUT_SUSPICION") {
+ if (oldProps.INVESTIGATION_STATE == "NONE" ||
+ oldProps.INVESTIGATION_STATE == "INVESTIGATION_PENDING" ||
+ oldProps.INVESTIGATION_STATE == null) {
+ if (newProps.INVESTIGATION_STATE == "REPORTED_SUSPICION_SIMPLE" ||
+ newProps.INVESTIGATION_STATE == "REPORTED_SUSPICION_SUBSTANTIATED" ||
+ newProps.INVESTIGATION_STATE == "INVESTIGATION_COMPLETED_WITHOUT_SUSPICION") {
emit(INCR_INVESTIGATION_CONCLUDED);
}
- if (newProps.AML_INVESTIGATION_STATE == "REPORTED_SUSPICION_SUBSTANTIATED") {
+ if (newProps.INVESTIGATION_STATE == "REPORTED_SUSPICION_SUBSTANTIATED") {
// FIXME-#9676: if possible, we should force the AML officer to tick
// an extra check-box "I submitted this case to MROS". No need to
// actually do anything here server-side, it's more an explicit
@@ -1777,7 +1781,7 @@ Events:
// emitted if the report was files.
emit(MROS_REPORTED_SUSPICION_SUBSTANTIATED);
}
- if (newProps.AML_INVESTIGATION_STATE == "REPORTED_SUSPICION_SIMPLE") {
+ if (newProps.INVESTIGATION_STATE == "REPORTED_SUSPICION_SIMPLE") {
// FIXME-#9676: if possible, we should force the AML officer to tick
// an extra check-box "I submitted this case to MROS". No need to
// actually do anything here server-side, it's more an explicit
@@ -1909,7 +1913,7 @@ Based on this, we have the following statistics:
* Of those PEPs, how many were with *foreign* PEPs? (self-declaration 4.3.)
- * Implementation: ``evtcount(INCR_FOREIGN_PEP, start=0, end=dec_last_20xx) - evtcount(DECR_FOREIGN_PEP, start=0, end=dec_last_20xx)``
+ * Implementation: ``evtcount(INCR_PEP_FOREIGN, start=0, end=dec_last_20xx) - evtcount(DECR_PEP_FOREIGN, start=0, end=dec_last_20xx)``
* Number of other additional (other than PEPs and foreign PEPs) high-risk business relationships in 20XX (self-declaration 4.4.)
@@ -2001,9 +2005,9 @@ Three properties are set:
indicates how confident we are that the rating is accurate, with 0
indicating no data available, and 1 indicating that all possible
fields could be evaluated
-* ``AML_INVESTIGATION_STATE`` is set to ``INVESTIGATION_PENDING``
+* ``INVESTIGATION_STATE`` is set to ``INVESTIGATION_PENDING``
if the rating and confidence are sufficiently high
-* ``AML_INVESTIGATION_TRIGGER`` is set to ``SANCTION_LIST_MATCH``
+* ``INVESTIGATION_TRIGGER`` is set to ``SANCTION_LIST_MATCH``
Finally, sanction list hits trigger one of two possible events: