diff --git a/lib/GaletteHelloasso/HelloassoHistory.php b/lib/GaletteHelloasso/HelloassoHistory.php index a2b3e6d..0c701c6 100644 --- a/lib/GaletteHelloasso/HelloassoHistory.php +++ b/lib/GaletteHelloasso/HelloassoHistory.php @@ -68,10 +68,14 @@ public function add(array|string $action, string $argument = '', string $query = $values = [ 'history_date' => date('Y-m-d H:i:s'), 'checkout_id' => $request['data']['id'], - 'amount' => $request['data']['amount'] / 100, + 'payer_name' => mb_strtoupper($request['data']['payer']['lastName'], 'UTF-8') . ' ' . $request['data']['payer']['firstName'], + 'member_id' => $request['metadata']['member_id'] ?? 0, 'comments' => $request['metadata']['item_name'], - 'request' => Galette::jsonEncode($request), - 'state' => self::STATE_NONE + 'amount' => $request['data']['amount'] / 100, + 'method' => $request['data']['paymentMeans'], + 'state' => self::STATE_NONE, + 'receipt_url' => $request['data']['paymentReceiptUrl'], + 'request' => Galette::jsonEncode($request) ]; $insert = $this->zdb->insert($this->getTableName()); @@ -134,9 +138,7 @@ public function getHelloassoHistory(): array $oa = Galette::jsonDecode($o['request']); } - $member_id = $oa['metadata']['member_id'] ?? 0; - - $o['member_fullname'] = $this->getMemberFullName($member_id); + $o['member_fullname'] = $this->getMemberFullName($o['member_id']); $o['raw_request'] = print_r($oa, true); $o['request'] = $oa; @@ -169,7 +171,7 @@ protected function getMemberFullName(int $id): string $row = $result->current(); if ($row) { - $fullname = mb_strtoupper($row['nom_adh']) . ' ' . $row['prenom_adh']; + $fullname = mb_strtoupper($row['nom_adh'], 'UTF-8') . ' ' . $row['prenom_adh']; } return $fullname; diff --git a/scripts/mysql.sql b/scripts/mysql.sql index 1c0f57a..c2a564f 100644 --- a/scripts/mysql.sql +++ b/scripts/mysql.sql @@ -8,11 +8,15 @@ DROP TABLE IF EXISTS galette_helloasso_history; CREATE TABLE galette_helloasso_history ( id_helloasso int(11) NOT NULL auto_increment, history_date datetime NOT NULL, - checkout_id varchar(255) COLLATE utf8_unicode_ci, + checkout_id varchar(255), amount double NOT NULL, - comments varchar(255) COLLATE utf8_unicode_ci, - request text COLLATE utf8_unicode_ci, + comments varchar(255), + request text, state tinyint(4) NOT NULL DEFAULT 0, + payer_name varchar(255) NOT NULL, + member_id int(10) NOT NULL, + method varchar(10) NOT NULL, + receipt_url varchar(255) NOT NULL, PRIMARY KEY (`id_helloasso`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; diff --git a/scripts/pgsql.sql b/scripts/pgsql.sql index 458ca2f..64999a9 100644 --- a/scripts/pgsql.sql +++ b/scripts/pgsql.sql @@ -6,11 +6,11 @@ DROP SEQUENCE IF EXISTS galette_helloasso_history_id_seq; CREATE SEQUENCE galette_helloasso_history_id_seq - START 1 - INCREMENT 1 - MAXVALUE 2147483647 - MINVALUE 1 - CACHE 1; + START 1 + INCREMENT 1 + MAXVALUE 2147483647 + MINVALUE 1 + CACHE 1; DROP TABLE IF EXISTS galette_helloasso_history; CREATE TABLE galette_helloasso_history ( @@ -21,6 +21,10 @@ CREATE TABLE galette_helloasso_history ( comments character varying(255), request text, state smallint DEFAULT 0 NOT NULL, + payer_name character varying(255) NOT NULL, + member_id integer NOT NULL, + method character varying(10) NOT NULL, + receipt_url character varying(255) NOT NULL, PRIMARY KEY (id_helloasso) ); @@ -29,18 +33,18 @@ CREATE TABLE galette_helloasso_history ( -- DROP SEQUENCE IF EXISTS galette_helloasso_preferences_id_seq; CREATE SEQUENCE galette_helloasso_preferences_id_seq - START 1 - INCREMENT 1 - MAXVALUE 2147483647 - MINVALUE 1 - CACHE 1; + START 1 + INCREMENT 1 + MAXVALUE 2147483647 + MINVALUE 1 + CACHE 1; DROP TABLE IF EXISTS galette_helloasso_preferences; CREATE TABLE galette_helloasso_preferences ( id_pref integer DEFAULT nextval('galette_helloasso_preferences_id_seq'::text) NOT NULL, nom_pref character varying(100) NOT NULL default '', val_pref character varying(200) NOT NULL default '', - PRIMARY KEY (id_pref) + PRIMARY KEY (id_pref) ); CREATE UNIQUE INDEX galette_helloasso_preferences_unique_idx ON galette_helloasso_preferences (nom_pref); @@ -57,11 +61,11 @@ INSERT INTO galette_helloasso_preferences (nom_pref, val_pref) VALUES ('helloass -- DROP SEQUENCE IF EXISTS galette_helloasso_tokens_id_seq; CREATE SEQUENCE galette_helloasso_tokens_id_seq - START 1 - INCREMENT 1 - MAXVALUE 2147483647 - MINVALUE 1 - CACHE 1; + START 1 + INCREMENT 1 + MAXVALUE 2147483647 + MINVALUE 1 + CACHE 1; DROP TABLE IF EXISTS galette_helloasso_tokens; CREATE TABLE galette_helloasso_tokens ( diff --git a/scripts/upgrade-to-1.1.0-mysql.sql b/scripts/upgrade-to-1.1.0-mysql.sql index 3936250..3c07e59 100644 --- a/scripts/upgrade-to-1.1.0-mysql.sql +++ b/scripts/upgrade-to-1.1.0-mysql.sql @@ -4,5 +4,33 @@ -- SPDX-License-Identifier: GPL-3.0-or-later -- -UPDATE galette_helloasso_history SET state = 3 WHERE state = 0; INSERT INTO galette_helloasso_preferences (nom_pref, val_pref) VALUES ('helloasso_sepa_option', ''); + +ALTER TABLE galette_helloasso_history + MODIFY checkout_id varchar(255) COLLATE utf8mb4_unicode_520_ci, + MODIFY comments varchar(255) COLLATE utf8mb4_unicode_520_ci, + MODIFY request text COLLATE utf8mb4_unicode_520_ci; + +ALTER TABLE galette_helloasso_history + ADD COLUMN payer_name VARCHAR(255) NOT NULL, + ADD COLUMN member_id INT(10) NOT NULL, + ADD COLUMN method VARCHAR(10) NOT NULL, + ADD COLUMN receipt_url VARCHAR(255) NOT NULL; + +UPDATE galette_helloasso_history +SET + state = CASE + WHEN state = 0 THEN 3 + ELSE state + END, + payer_name = CONCAT( + UPPER(JSON_UNQUOTE(JSON_EXTRACT(request, '$.data.payer.lastName'))), + ' ', + JSON_UNQUOTE(JSON_EXTRACT(request, '$.data.payer.firstName')) + ), + member_id = COALESCE( + CAST(JSON_UNQUOTE(JSON_EXTRACT(request, '$.metadata.member_id')) AS UNSIGNED), + 0 + ), + method = JSON_UNQUOTE(JSON_EXTRACT(request, '$.data.paymentMeans')), + receipt_url = JSON_UNQUOTE(JSON_EXTRACT(request, '$.data.paymentReceiptUrl')); diff --git a/scripts/upgrade-to-1.1.0-pgsql.sql b/scripts/upgrade-to-1.1.0-pgsql.sql index 3936250..5d61abc 100644 --- a/scripts/upgrade-to-1.1.0-pgsql.sql +++ b/scripts/upgrade-to-1.1.0-pgsql.sql @@ -4,5 +4,28 @@ -- SPDX-License-Identifier: GPL-3.0-or-later -- -UPDATE galette_helloasso_history SET state = 3 WHERE state = 0; INSERT INTO galette_helloasso_preferences (nom_pref, val_pref) VALUES ('helloasso_sepa_option', ''); + +ALTER TABLE galette_helloasso_history + ADD COLUMN payer_name character varying(255) NOT NULL, + ADD COLUMN member_id integer NOT NULL, + ADD COLUMN method character varying(10) NOT NULL, + ADD COLUMN receipt_url character varying(255) NOT NULL; + +UPDATE galette_helloasso_history +SET + state = CASE + WHEN state = 0 THEN 3 + ELSE state + END, + payer_name = CONCAT( + UPPER((request->'data'->'payer'->>'lastName')), + ' ', + (request->'data'->'payer'->>'firstName') + ), + member_id = COALESCE( + (request->'metadata'->>'member_id')::int, + 0 + ), + method = request->'data'->>'paymentMeans', + receipt_url = request->'data'->>'paymentReceiptUrl'; diff --git a/templates/default/helloasso_history.html.twig b/templates/default/helloasso_history.html.twig index 3ff6762..2eed5ea 100644 --- a/templates/default/helloasso_history.html.twig +++ b/templates/default/helloasso_history.html.twig @@ -87,45 +87,25 @@ {{ log.checkout_id }}