From 3de237286a1b86fc48c417c9de5894112628f7e3 Mon Sep 17 00:00:00 2001 From: vgreb Date: Thu, 3 Sep 2026 00:35:31 +0200 Subject: [PATCH] =?UTF-8?q?Tr=C3=A9sorerie=20:=20pr=C3=A9requis=20base=20d?= =?UTF-8?q?e=20donn=C3=A9es=20=C3=A0=20la=20migration=20Doctrine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prérequis de schéma et de fixtures à la migration de la comptabilité vers Doctrine. Aucune modification de code applicatif. Là où Ting écrivait des identifiants bruts sans vérifier leur existence, Doctrine résout une association vers une entité ou vers `null`. Deux incohérences que Ting masquait deviennent donc bloquantes. **`compta.idmode_regl`** était `NOT NULL`, avec `0` comme sentinelle « pas de règlement » — une valeur qui ne correspond à aucune ligne de `compta_reglement` (ids 1 à 9). La colonne passe nullable et les `0` deviennent `NULL`, ce que la sentinelle signifiait déjà. **Le seed des comptes** ne créait que les ids 1 à 4, alors que les importeurs Crédit Mutuel référencent `ComptaCompte::COURANT_CMUT` (5) et `LIVRET_CMUT` (6) depuis longtemps. À l'import, Ting écrivait un `idcompte` pointant dans le vide ; Doctrine y verrait `null`, en violation de `compta.idcompte NOT NULL`. Les deux comptes sont ajoutés aux fixtures. --- ...make_transaction_payment_type_nullable.php | 34 +++++++++++++++++++ db/seeds/ComptaCompte.php | 8 +++++ 2 files changed, 42 insertions(+) create mode 100644 db/migrations/20260816000000_make_transaction_payment_type_nullable.php diff --git a/db/migrations/20260816000000_make_transaction_payment_type_nullable.php b/db/migrations/20260816000000_make_transaction_payment_type_nullable.php new file mode 100644 index 000000000..8cfccc2eb --- /dev/null +++ b/db/migrations/20260816000000_make_transaction_payment_type_nullable.php @@ -0,0 +1,34 @@ +table('compta') + ->changeColumn('idmode_regl', 'integer', [ + 'limit' => 5, + 'null' => true, + 'default' => null, + ]) + ->update(); + + $this->execute('UPDATE compta SET idmode_regl = NULL WHERE idmode_regl = 0'); + } + + public function down(): void + { + $this->execute('UPDATE compta SET idmode_regl = 0 WHERE idmode_regl IS NULL'); + + $this->table('compta') + ->changeColumn('idmode_regl', 'integer', [ + 'limit' => 5, + 'null' => false, + 'default' => 0, + ]) + ->update(); + } +} diff --git a/db/seeds/ComptaCompte.php b/db/seeds/ComptaCompte.php index d515d6e77..05b5e4874 100644 --- a/db/seeds/ComptaCompte.php +++ b/db/seeds/ComptaCompte.php @@ -27,6 +27,14 @@ public function run(): void 'nom_compte' => 'Paypal', 'archived_at' => new DateTime('last year')->format('Y-m-d H:i:s'), ], + [ + 'id' => 5, + 'nom_compte' => 'Compte courant CMUT', + ], + [ + 'id' => 6, + 'nom_compte' => 'Livret CMUT', + ], ]; $table = $this->table('compta_compte');