diff options
author | Christian Grothoff <christian@grothoff.org> | 2024-04-25 11:29:49 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2024-07-29 12:18:38 +0200 |
commit | 22ee139c44476a44c472335b06f63cf6b3ef8820 (patch) | |
tree | be6a1db495650f4cd3a2d2ed69e16c5dc1b62393 /src/exchangedb | |
parent | 3ed1b466cec48dae7f56be7286beca80b2ebe3c8 (diff) |
-fix build issues with new API
Diffstat (limited to 'src/exchangedb')
-rw-r--r-- | src/exchangedb/Makefile.am | 13 | ||||
-rw-r--r-- | src/exchangedb/exchange_do_insert_aml_decision.sql | 101 | ||||
-rw-r--r-- | src/exchangedb/pg_insert_aml_decision.c | 29 | ||||
-rw-r--r-- | src/exchangedb/pg_insert_aml_decision.h | 8 | ||||
-rw-r--r-- | src/exchangedb/pg_insert_records_by_table.c | 2 | ||||
-rw-r--r-- | src/exchangedb/pg_lookup_transfer_by_deposit.c | 51 | ||||
-rw-r--r-- | src/exchangedb/pg_lookup_transfer_by_deposit.h | 4 | ||||
-rw-r--r-- | src/exchangedb/plugin_exchangedb_postgres.c | 36 |
8 files changed, 88 insertions, 156 deletions
diff --git a/src/exchangedb/Makefile.am b/src/exchangedb/Makefile.am index 0618b9a3c..f23895f4b 100644 --- a/src/exchangedb/Makefile.am +++ b/src/exchangedb/Makefile.am @@ -108,7 +108,6 @@ libtaler_plugin_exchangedb_postgres_la_SOURCES = \ pg_select_satisfied_kyc_processes.h pg_select_satisfied_kyc_processes.c \ pg_get_pending_kyc_requirement_process.h pg_get_pending_kyc_requirement_process.c \ pg_kyc_provider_account_lookup.h pg_kyc_provider_account_lookup.c \ - pg_lookup_kyc_requirement_by_row.h pg_lookup_kyc_requirement_by_row.c \ pg_insert_kyc_requirement_for_account.h pg_insert_kyc_requirement_for_account.c \ pg_lookup_kyc_process_by_account.h pg_lookup_kyc_process_by_account.c \ pg_update_kyc_process_by_row.h pg_update_kyc_process_by_row.c \ @@ -120,7 +119,6 @@ libtaler_plugin_exchangedb_postgres_la_SOURCES = \ pg_get_drain_profit.h pg_get_drain_profit.c \ pg_get_purse_deposit.h pg_get_purse_deposit.c \ pg_insert_contract.h pg_insert_contract.c \ - pg_select_aml_threshold.h pg_select_aml_threshold.c \ pg_select_contract.h pg_select_contract.c \ pg_select_purse_merge.h pg_select_purse_merge.c \ pg_select_contract_by_purse.h pg_select_contract_by_purse.c \ @@ -170,8 +168,6 @@ libtaler_plugin_exchangedb_postgres_la_SOURCES = \ pg_test_aml_officer.h pg_test_aml_officer.c \ pg_lookup_aml_officer.h pg_lookup_aml_officer.c \ pg_trigger_aml_process.h pg_trigger_aml_process.c \ - pg_select_aml_process.h pg_select_aml_process.c \ - pg_select_aml_history.h pg_select_aml_history.c \ pg_insert_aml_decision.h pg_insert_aml_decision.c \ pg_select_aggregation_transient.h pg_select_aggregation_transient.c \ pg_find_aggregation_transient.h pg_find_aggregation_transient.c \ @@ -214,7 +210,6 @@ libtaler_plugin_exchangedb_postgres_la_SOURCES = \ pg_insert_denomination_revocation.h pg_insert_denomination_revocation.c \ pg_get_denomination_revocation.h pg_get_denomination_revocation.c \ pg_select_batch_deposits_missing_wire.h pg_select_batch_deposits_missing_wire.c \ - pg_select_justification_for_missing_wire.h pg_select_justification_for_missing_wire.c \ pg_select_aggregations_above_serial.h pg_select_aggregations_above_serial.c \ pg_lookup_auditor_timestamp.h pg_lookup_auditor_timestamp.c \ pg_lookup_auditor_status.h pg_lookup_auditor_status.c \ @@ -285,6 +280,14 @@ libtaler_plugin_exchangedb_postgres_la_SOURCES = \ pg_select_account_merges_above_serial_id.h pg_select_account_merges_above_serial_id.c \ pg_select_all_purse_decisions_above_serial_id.h pg_select_all_purse_decisions_above_serial_id.c \ pg_select_reserve_open_above_serial_id.c pg_select_reserve_open_above_serial_id.h + +# pg_lookup_kyc_requirement_by_row.h pg_lookup_kyc_requirement_by_row.c +# pg_select_justification_for_missing_wire.h pg_select_justification_for_missing_wire.c +# pg_select_aml_process.h pg_select_aml_process.c +# pg_select_aml_history.h pg_select_aml_history.c +# pg_select_aml_threshold.h pg_select_aml_threshold.c + + libtaler_plugin_exchangedb_postgres_la_LDFLAGS = \ $(TALER_PLUGIN_LDFLAGS) libtaler_plugin_exchangedb_postgres_la_LIBADD = \ diff --git a/src/exchangedb/exchange_do_insert_aml_decision.sql b/src/exchangedb/exchange_do_insert_aml_decision.sql index c8ed7e928..b5d79d410 100644 --- a/src/exchangedb/exchange_do_insert_aml_decision.sql +++ b/src/exchangedb/exchange_do_insert_aml_decision.sql @@ -1,6 +1,6 @@ -- -- This file is part of TALER --- Copyright (C) 2023 Taler Systems SA +-- Copyright (C) 2023, 2024 Taler Systems SA -- -- TALER is free software; you can redistribute it and/or modify it under the -- terms of the GNU General Public License as published by the Free Software @@ -14,21 +14,24 @@ -- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> -- +DROP FUNCTION IF EXISTS exchange_do_insert_aml_decision; CREATE OR REPLACE FUNCTION exchange_do_insert_aml_decision( IN in_h_payto BYTEA, - IN in_new_threshold taler_amount, - IN in_new_status INT4, IN in_decision_time INT8, + IN in_expiration_time INT8, + IN in_properties TEXT, + IN in_new_rules TEXT, + IN in_to_investigate BOOLEAN, IN in_justification TEXT, IN in_decider_pub BYTEA, IN in_decider_sig BYTEA, IN in_notify_s TEXT, - IN in_kyc_requirements TEXT, - IN in_requirement_row INT8, OUT out_invalid_officer BOOLEAN, OUT out_last_date INT8) LANGUAGE plpgsql AS $$ +DECLARE + my_outcome_serial_id INT8; BEGIN -- Check officer is eligible to make decisions. PERFORM @@ -47,9 +50,11 @@ out_invalid_officer=FALSE; -- Check no more recent decision exists. SELECT decision_time INTO out_last_date - FROM aml_history + FROM legitimization_outcomes WHERE h_payto=in_h_payto + AND is_active ORDER BY decision_time DESC; + IF FOUND THEN IF out_last_date >= in_decision_time @@ -57,71 +62,63 @@ THEN -- Refuse to insert older decision. RETURN; END IF; - UPDATE aml_status - SET threshold=in_new_threshold - ,status=in_new_status - ,kyc_requirement=in_requirement_row - WHERE h_payto=in_h_payto; - ASSERT FOUND, 'cannot have AML decision history but no AML status'; + UPDATE legitimization_outcomes + SET is_active=FALSE + WHERE h_payto=in_h_payto + AND is_active; ELSE out_last_date = 0; - INSERT INTO aml_status - (h_payto - ,threshold - ,status - ,kyc_requirement) - VALUES - (in_h_payto - ,in_new_threshold - ,in_new_status - ,in_requirement_row) - ON CONFLICT (h_payto) DO - UPDATE SET - threshold=in_new_threshold - ,status=in_new_status; END IF; +INSERT INTO legitimization_outcomes + (h_payto + ,decision_time + ,expiration_time + ,jproperties + ,to_investigate + ,jnew_rules + ) + VALUES + (in_h_payto + ,in_decision_time + ,in_expiration_time + ,in_properties, + ,in_to_investigate + ,in_new_rules + ) + RETURNING + outcome_serial_id + INTO + my_outcome_serial_id; + INSERT INTO aml_history (h_payto - ,new_threshold - ,new_status - ,decision_time + ,outcome_serial_id ,justification - ,kyc_requirements - ,kyc_req_row ,decider_pub ,decider_sig ) VALUES (in_h_payto - ,in_new_threshold - ,in_new_status - ,in_decision_time + ,my_outcome_serial_id ,in_justification - ,in_kyc_requirements - ,in_requirement_row ,in_decider_pub - ,in_decider_sig); - + ,in_decider_sig + ); -- wake up taler-exchange-aggregator -IF 0 = in_new_status -THEN - INSERT INTO kyc_alerts - (h_payto - ,trigger_type) - VALUES - (in_h_payto,1); - - EXECUTE FORMAT ( - 'NOTIFY %s' - ,in_notify_s); - -END IF; +INSERT INTO kyc_alerts + (h_payto + ,trigger_type) + VALUES + (in_h_payto,1); + EXECUTE FORMAT ( + 'NOTIFY %s' + ,in_notify_s); END $$; -COMMENT ON FUNCTION exchange_do_insert_aml_decision(BYTEA, taler_amount, INT4, INT8, TEXT, BYTEA, BYTEA, TEXT, TEXT, INT8) +COMMENT ON FUNCTION exchange_do_insert_aml_decision(BYTEA, INT8, INT8, TEXT, TEXT, BOOLEAN, TEXT, BYTEA, BYTEA, TEXT) IS 'Checks whether the AML officer is eligible to make AML decisions and if so inserts the decision into the table'; diff --git a/src/exchangedb/pg_insert_aml_decision.c b/src/exchangedb/pg_insert_aml_decision.c index 39419be59..b0edceefa 100644 --- a/src/exchangedb/pg_insert_aml_decision.c +++ b/src/exchangedb/pg_insert_aml_decision.c @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2022, 2023 Taler Systems SA + Copyright (C) 2022, 2023, 2024 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -31,42 +31,37 @@ enum GNUNET_DB_QueryStatus TEH_PG_insert_aml_decision ( void *cls, const struct TALER_PaytoHashP *h_payto, - const struct TALER_Amount *new_threshold, - enum TALER_AmlDecisionState new_status, struct GNUNET_TIME_Timestamp decision_time, + struct GNUNET_TIME_Timestamp expiration_time, + const json_t *properties, + const json_t *new_rules, + bool to_investigate, const char *justification, - const json_t *kyc_requirements, - uint64_t requirements_row, const struct TALER_AmlOfficerPublicKeyP *decider_pub, const struct TALER_AmlOfficerSignatureP *decider_sig, bool *invalid_officer, struct GNUNET_TIME_Timestamp *last_date) { struct PostgresClosure *pg = cls; - uint32_t ns = (uint32_t) new_status; struct TALER_KycCompletedEventP rep = { .header.size = htons (sizeof (rep)), .header.type = htons (TALER_DBEVENT_EXCHANGE_KYC_COMPLETED), .h_payto = *h_payto }; char *notify_s = GNUNET_PQ_get_event_notify_channel (&rep.header); - char *kyc_s = (NULL != kyc_requirements) - ? json_dumps (kyc_requirements, JSON_COMPACT) - : NULL; struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_auto_from_type (h_payto), - TALER_PQ_query_param_amount (pg->conn, - new_threshold), - GNUNET_PQ_query_param_uint32 (&ns), GNUNET_PQ_query_param_timestamp (&decision_time), + GNUNET_PQ_query_param_timestamp (&expiration_time), + NULL != properties + ? TALER_PQ_query_param_json (properties) + : GNUNET_PQ_query_param_null (), + TALER_PQ_query_param_json (new_rules), + GNUNET_PQ_query_param_bool (to_investigate), GNUNET_PQ_query_param_string (justification), GNUNET_PQ_query_param_auto_from_type (decider_pub), GNUNET_PQ_query_param_auto_from_type (decider_sig), GNUNET_PQ_query_param_string (notify_s), - NULL != kyc_requirements - ? GNUNET_PQ_query_param_string (kyc_s) - : GNUNET_PQ_query_param_null (), - GNUNET_PQ_query_param_uint64 (&requirements_row), GNUNET_PQ_query_param_end }; struct GNUNET_PQ_ResultSpec rs[] = { @@ -91,7 +86,5 @@ TEH_PG_insert_aml_decision ( rs); GNUNET_free (notify_s); GNUNET_PQ_event_do_poll (pg->conn); - if (NULL != kyc_s) - free (kyc_s); return qs; } diff --git a/src/exchangedb/pg_insert_aml_decision.h b/src/exchangedb/pg_insert_aml_decision.h index 073a2f50a..58ff743af 100644 --- a/src/exchangedb/pg_insert_aml_decision.h +++ b/src/exchangedb/pg_insert_aml_decision.h @@ -49,12 +49,12 @@ enum GNUNET_DB_QueryStatus TEH_PG_insert_aml_decision ( void *cls, const struct TALER_PaytoHashP *h_payto, - const struct TALER_Amount *new_threshold, - enum TALER_AmlDecisionState new_status, struct GNUNET_TIME_Timestamp decision_time, + struct GNUNET_TIME_Timestamp expiration_time, + const json_t *properties, + const json_t *new_rules, + bool to_investigate, const char *justification, - const json_t *kyc_requirements, - uint64_t requirements_row, const struct TALER_AmlOfficerPublicKeyP *decider_pub, const struct TALER_AmlOfficerSignatureP *decider_sig, bool *invalid_officer, diff --git a/src/exchangedb/pg_insert_records_by_table.c b/src/exchangedb/pg_insert_records_by_table.c index 6ecec5bcf..609cf4301 100644 --- a/src/exchangedb/pg_insert_records_by_table.c +++ b/src/exchangedb/pg_insert_records_by_table.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet - Copyright (C) 2020-2023 Taler Systems SA + Copyright (C) 2020-2024 Taler Systems SA GNUnet is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published diff --git a/src/exchangedb/pg_lookup_transfer_by_deposit.c b/src/exchangedb/pg_lookup_transfer_by_deposit.c index 192556130..523bfc09a 100644 --- a/src/exchangedb/pg_lookup_transfer_by_deposit.c +++ b/src/exchangedb/pg_lookup_transfer_by_deposit.c @@ -37,9 +37,7 @@ TEH_PG_lookup_transfer_by_deposit ( struct TALER_WireTransferIdentifierRawP *wtid, struct GNUNET_TIME_Timestamp *exec_time, struct TALER_Amount *amount_with_fee, - struct TALER_Amount *deposit_fee, - struct TALER_EXCHANGEDB_KycStatus *kyc, - enum TALER_AmlDecisionState *aml_decision) + struct TALER_Amount *deposit_fee) { struct PostgresClosure *pg = cls; enum GNUNET_DB_QueryStatus qs; @@ -67,9 +65,6 @@ TEH_PG_lookup_transfer_by_deposit ( GNUNET_PQ_result_spec_end }; - memset (kyc, - 0, - sizeof (*kyc)); /* check if the aggregation record exists and get it */ PREPARE (pg, "lookup_deposit_wtid", @@ -114,8 +109,6 @@ TEH_PG_lookup_transfer_by_deposit ( h_wire)) { *pending = false; - kyc->ok = true; - *aml_decision = TALER_AML_NORMAL; GNUNET_PQ_cleanup_result (rs); return qs; } @@ -135,29 +128,11 @@ TEH_PG_lookup_transfer_by_deposit ( /* Check if transaction exists in deposits, so that we just do not have a WTID yet. In that case, return without wtid (by setting 'pending' true). */ - uint32_t status32 = TALER_AML_NORMAL; - uint64_t aml_kyc_row = 0; struct GNUNET_PQ_ResultSpec rs2[] = { GNUNET_PQ_result_spec_auto_from_type ("wire_salt", &wire_salt), GNUNET_PQ_result_spec_string ("payto_uri", &payto_uri), - /* See Postgresql bug #18380 */ -#define BUG 1 -#if BUG - GNUNET_PQ_result_spec_allow_null ( - GNUNET_PQ_result_spec_uint64 ("legitimization_requirement_serial_id", - &kyc->requirement_row), - NULL), -#endif - GNUNET_PQ_result_spec_allow_null ( - GNUNET_PQ_result_spec_uint64 ("kyc_requirement", - &aml_kyc_row), - NULL), - GNUNET_PQ_result_spec_allow_null ( - GNUNET_PQ_result_spec_uint32 ("status", - &status32), - NULL), TALER_PQ_RESULT_SPEC_AMOUNT ("amount_with_fee", amount_with_fee), TALER_PQ_RESULT_SPEC_AMOUNT ("fee_deposit", @@ -175,11 +150,6 @@ TEH_PG_lookup_transfer_by_deposit ( ",cdep.amount_with_fee" ",denom.fee_deposit" ",bdep.wire_deadline" -#if BUG - ",agt.legitimization_requirement_serial_id" -#endif - ",aml.status" - ",aml.kyc_requirement" " FROM coin_deposits cdep" " JOIN batch_deposits bdep" " USING (batch_deposit_serial_id)" @@ -189,13 +159,6 @@ TEH_PG_lookup_transfer_by_deposit ( " ON (kc.coin_pub = cdep.coin_pub)" " JOIN denominations denom" " USING (denominations_serial)" -#if BUG - " LEFT JOIN aggregation_transient agt " - " ON ( (bdep.wire_target_h_payto = agt.wire_target_h_payto) AND" - " (bdep.merchant_pub = agt.merchant_pub) )" -#endif - " LEFT JOIN aml_status aml" - " ON (wt.wire_target_h_payto = aml.h_payto)" " WHERE cdep.coin_pub=$1" " AND bdep.merchant_pub=$3" " AND bdep.h_contract_terms=$2" @@ -210,17 +173,6 @@ TEH_PG_lookup_transfer_by_deposit ( { struct TALER_MerchantWireHashP wh; - *aml_decision = (enum TALER_AmlDecisionState) status32; - if (0 == kyc->requirement_row) - kyc->ok = true; /* technically: unknown */ - if ( (kyc->ok) && - (TALER_AML_FROZEN == *aml_decision) && - (0 != aml_kyc_row) ) - { - /* KYC required via AML */ - kyc->ok = false; - kyc->requirement_row = aml_kyc_row; - } TALER_merchant_wire_signature_hash (payto_uri, &wire_salt, &wh); @@ -233,7 +185,6 @@ TEH_PG_lookup_transfer_by_deposit ( } GNUNET_PQ_cleanup_result (rs2); } - *aml_decision = TALER_AML_NORMAL; return qs; } } diff --git a/src/exchangedb/pg_lookup_transfer_by_deposit.h b/src/exchangedb/pg_lookup_transfer_by_deposit.h index 83782d5a0..5ade1ed77 100644 --- a/src/exchangedb/pg_lookup_transfer_by_deposit.h +++ b/src/exchangedb/pg_lookup_transfer_by_deposit.h @@ -56,8 +56,6 @@ TEH_PG_lookup_transfer_by_deposit ( struct TALER_WireTransferIdentifierRawP *wtid, struct GNUNET_TIME_Timestamp *exec_time, struct TALER_Amount *amount_with_fee, - struct TALER_Amount *deposit_fee, - struct TALER_EXCHANGEDB_KycStatus *kyc, - enum TALER_AmlDecisionState *aml_decision); + struct TALER_Amount *deposit_fee); #endif diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index 108b55219..d92082dee 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -52,7 +52,6 @@ #include "pg_lookup_records_by_table.h" #include "pg_lookup_serial_by_table.h" #include "pg_select_account_merges_above_serial_id.h" -#include "pg_select_aml_threshold.h" #include "pg_select_all_purse_decisions_above_serial_id.h" #include "pg_select_purse.h" #include "pg_select_purse_deposits_above_serial_id.h" @@ -69,7 +68,6 @@ #include "pg_select_satisfied_kyc_processes.h" #include "pg_select_aggregation_amounts_for_kyc_check.h" #include "pg_kyc_provider_account_lookup.h" -#include "pg_lookup_kyc_requirement_by_row.h" #include "pg_insert_kyc_requirement_for_account.h" #include "pg_lookup_kyc_process_by_account.h" #include "pg_update_kyc_process_by_row.h" @@ -179,7 +177,6 @@ #include "pg_insert_denomination_revocation.h" #include "pg_get_denomination_revocation.h" #include "pg_select_batch_deposits_missing_wire.h" -#include "pg_select_justification_for_missing_wire.h" #include "pg_select_aggregations_above_serial.h" #include "pg_lookup_auditor_timestamp.h" #include "pg_lookup_auditor_status.h" @@ -216,8 +213,11 @@ #include "pg_test_aml_officer.h" #include "pg_lookup_aml_officer.h" #include "pg_trigger_aml_process.h" -#include "pg_select_aml_process.h" -#include "pg_select_aml_history.h" +// #include "pg_select_justification_for_missing_wire.h" +// #include "pg_lookup_kyc_requirement_by_row.h" +// #include "pg_select_aml_history.h" +// #include "pg_select_aml_process.h" +// #include "pg_select_aml_threshold.h" #include "pg_insert_aml_decision.h" #include "pg_batch_ensure_coin_known.h" @@ -236,14 +236,14 @@ * @param conn SQL connection that was used */ #define BREAK_DB_ERR(result,conn) do { \ - GNUNET_break (0); \ - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, \ - "Database failure: %s/%s/%s/%s/%s", \ - PQresultErrorField (result, PG_DIAG_MESSAGE_PRIMARY), \ - PQresultErrorField (result, PG_DIAG_MESSAGE_DETAIL), \ - PQresultErrorMessage (result), \ - PQresStatus (PQresultStatus (result)), \ - PQerrorMessage (conn)); \ + GNUNET_break (0); \ + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, \ + "Database failure: %s/%s/%s/%s/%s", \ + PQresultErrorField (result, PG_DIAG_MESSAGE_PRIMARY), \ + PQresultErrorField (result, PG_DIAG_MESSAGE_DETAIL), \ + PQresultErrorMessage (result), \ + PQresStatus (PQresultStatus (result)), \ + PQerrorMessage (conn)); \ } while (0) @@ -464,8 +464,6 @@ libtaler_plugin_exchangedb_postgres_init (void *cls) = &TEH_PG_select_account_merges_above_serial_id; plugin->select_all_purse_decisions_above_serial_id = &TEH_PG_select_all_purse_decisions_above_serial_id; - plugin->select_aml_threshold - = &TEH_PG_select_aml_threshold; plugin->select_purse = &TEH_PG_select_purse; plugin->select_purse_deposits_above_serial_id @@ -494,8 +492,6 @@ libtaler_plugin_exchangedb_postgres_init (void *cls) = &TEH_PG_select_satisfied_kyc_processes; plugin->kyc_provider_account_lookup = &TEH_PG_kyc_provider_account_lookup; - plugin->lookup_kyc_requirement_by_row - = &TEH_PG_lookup_kyc_requirement_by_row; plugin->insert_kyc_requirement_for_account = &TEH_PG_insert_kyc_requirement_for_account; plugin->lookup_kyc_process_by_account @@ -710,8 +706,6 @@ libtaler_plugin_exchangedb_postgres_init (void *cls) = &TEH_PG_get_denomination_revocation; plugin->select_batch_deposits_missing_wire = &TEH_PG_select_batch_deposits_missing_wire; - plugin->select_justification_for_missing_wire - = &TEH_PG_select_justification_for_missing_wire; plugin->select_aggregations_above_serial = &TEH_PG_select_aggregations_above_serial; plugin->lookup_auditor_timestamp @@ -782,10 +776,6 @@ libtaler_plugin_exchangedb_postgres_init (void *cls) = &TEH_PG_lookup_aml_officer; plugin->trigger_aml_process = &TEH_PG_trigger_aml_process; - plugin->select_aml_process - = &TEH_PG_select_aml_process; - plugin->select_aml_history - = &TEH_PG_select_aml_history; plugin->insert_aml_decision = &TEH_PG_insert_aml_decision; |