Projet

Général

Profil

Anomalie #755

Ventilation sur don impossible pour une transaction

Ajouté par July Schatten il y a presque 4 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Bas
Assigné à:
Catégorie:
Base de données
Version cible:
Début:
12/12/2013
Echéance:
% réalisé:

100%

Version utilisée:

Description

Bonjour,
Lors de l'ajout de contributions sur une transaction, seules celles ayant la propriété d'allonger la durée de cotisation permettent de générer un menu valide pour le type de contribution dans le formulaire final de saisie des détails.

Le champs type de contribution étant obligatoire et le menu vide, il est alors impossible de finaliser la saisie.
En guise de test, l'ajout de la propriété au don pécuniaire a permis d'obtenir la génération d'un menu valide.

Merci
--
July

Révisions associées

Révision fff4bb3e
Ajouté par Johan Cwiklinski il y a presque 4 ans

SQLite does not like boolean false; fixes #755

Historique

#1 Mis à jour par Johan Cwiklinski il y a presque 4 ans

  • Statut changé de Nouveau à Commentaire

Je ne parviens pas à reproduire ce problème. Que ce soit lors de la ventilation d'une transaction, ou la création directe d'une contribution, j'ai bien les différents types de contributions dans la liste.

Il faudrait voir les logs (Galette et serveur), je suppose que le problème est ailleurs.

#2 Mis à jour par July Schatten il y a presque 4 ans

Voici le message vu dans les logs :
2013-12-12 08:28:00 - 3 - Galette\Entity\Entitled::getList | SQLSTATE[HY000]: General error: 1 no such column: false

La base utilisée est SQLite.
Le navigateur utilisé est Firefox 26.

#3 Mis à jour par Johan Cwiklinski il y a presque 4 ans

  • Statut changé de Commentaire à Nouveau
  • Priorité changé de Normal à Bas

OK, c'est donc spécifique à SQLite... Que je ne teste pour ainsi dire pas (je passe déjà assez de temps à tester les deux autres).

Je verrai lorsque j'en aurai le temps si ce problème peut être corrigé facilement.

#4 Mis à jour par Johan Cwiklinski il y a presque 4 ans

Il faudra davantage d'informations, comme la requête exécutée. Le plus simple est de passer en mode DEV (cf. http://galette.eu/documentation/fr/development/debug.html?highlight=d%C3%A9veloppement#les-modes), de reproduire l'erreur et de consulter le log à nouveau.

#5 Mis à jour par July Schatten il y a presque 4 ans

Voici la log :

2013-12-20 22:45:01 - 7 - [Db] Database connection was successfull! 
2013-12-20 22:45:02 - 7 - [Galette\Core\History|Pagination] Setting property `ordered`
2013-12-20 22:45:07 - 7 - [Db] Database connection was successfull!
2013-12-20 22:45:07 - 7 - [Galette\Core\History|Pagination] Setting property `ordered`
2013-12-20 22:45:07 - 7 - [MembersList] Getting property `email_filter`
2013-12-20 22:45:07 - 7 - [MembersList] Getting property `email_filter`
2013-12-20 22:45:07 - 7 - [MembersList] Getting property `filter_str`
2013-12-20 22:45:07 - 7 - [MembersList] Getting property `membership_filter`
2013-12-20 22:45:07 - 7 - [MembersList] Getting property `account_status_filter`
2013-12-20 22:45:07 - 7 - [MembersList] Getting property `group_filter`
2013-12-20 22:45:07 - 7 - [MembersList] Getting property `orderby`
2013-12-20 22:45:07 - 7 - [Galette\Filters\MembersList|Pagination] Getting property `orderby`
2013-12-20 22:45:07 - 7 - [MembersList] Setting property `query`
2013-12-20 22:45:07 - 7 - [MembersList] Getting property `query`
2013-12-20 22:45:07 - 7 - The following query will be executed:
SELECT DISTINCT "a"."id_adh", "a"."nom_adh", "a"."prenom_adh", "p".* FROM "galette_adherents" AS "a"
INNER JOIN "galette_statuts" AS "p" ON a.id_statut=p.id_statut ORDER BY "nom_adh" ASC, "prenom_adh" ASC
2013-12-20 22:45:07 - 7 - [Db] Database connection was successfull!
2013-12-20 22:45:07 - 7 - [Galette\Core\History|Pagination] Setting property `ordered`
2013-12-20 22:45:12 - 7 - [Db] Database connection was successfull!
2013-12-20 22:45:12 - 7 - [Galette\Core\History|Pagination] Setting property `ordered`
2013-12-20 22:45:12 - 7 - Query was: SELECT DISTINCT "galette_types_cotisation"."id_type_cotis", "galette_types_cotisation"."libelle_type_cotis" FROM "galette_types_cotisation" WHERE (cotis_extension = false) ORDER BY "id_type_cotis" ASC
2013-12-20 22:45:12 - 7 - [MembersList] Getting property `email_filter`
2013-12-20 22:45:12 - 7 - [MembersList] Getting property `email_filter`
2013-12-20 22:45:12 - 7 - [MembersList] Getting property `filter_str`
2013-12-20 22:45:12 - 7 - [MembersList] Getting property `membership_filter`
2013-12-20 22:45:12 - 7 - [MembersList] Getting property `account_status_filter`
2013-12-20 22:45:12 - 7 - [MembersList] Getting property `group_filter`
2013-12-20 22:45:12 - 7 - [MembersList] Getting property `orderby`
2013-12-20 22:45:12 - 7 - [Galette\Filters\MembersList|Pagination] Getting property `orderby`
2013-12-20 22:45:12 - 7 - [MembersList] Setting property `query`
2013-12-20 22:45:12 - 7 - [MembersList] Getting property `query`
2013-12-20 22:45:12 - 7 - The following query will be executed:
SELECT DISTINCT "a"."id_adh", "a"."nom_adh", "a"."prenom_adh", "p".* FROM "galette_adherents" AS "a"
INNER JOIN "galette_statuts" AS "p" ON a.id_statut=p.id_statut ORDER BY "nom_adh" ASC, "prenom_adh" ASC
2013-12-20 22:45:13 - 7 - [Db] Database connection was successfull!
2013-12-20 22:45:13 - 7 - [Galette\Core\History|Pagination] Setting property `ordered`

#6 Mis à jour par Johan Cwiklinski il y a presque 4 ans

  • Version cible mis à 0.7.8
  • Assigné à mis à Johan Cwiklinski
  • Catégorie changé de IHM à Base de données
  • Statut changé de Nouveau à In Progress

Je n'ai pas trouvé de solution réellement propre ; voici un correctif qui fonctionne :

diff --git a/galette/lib/Galette/Entity/Entitled.php b/galette/lib/Galette/Entity/Entitled.php
index 7443659..d222149 100644
--- a/galette/lib/Galette/Entity/Entitled.php
+++ b/galette/lib/Galette/Entity/Entitled.php
@@ -235,7 +235,11 @@ abstract class Entitled
                 if ( $extent === true ) {
                     $select->where($this->_fthird . ' = ?', $extent);
                 }
-                    $select->where($this->_fthird . ' = false');
+                    if ( TYPE_DB === 'sqlite' ) {
+                        $select->where($this->_fthird . ' = 0');
+                    }
+                        $select->where($this->_fthird . ' = false');
+                    }
                 }
             }

Je crains que ce problème ne se pose également à d'autres endroits, ce n'est pas le seul endroit dans le code où l'on interroge une valeur "false".

#7 Mis à jour par Johan Cwiklinski il y a plus de 3 ans

  • Statut changé de In Progress à Résolu
  • % réalisé changé de 0 à 100

#8 Mis à jour par Johan Cwiklinski il y a plus de 3 ans

  • Statut changé de Résolu à Fermé

Formats disponibles : Atom PDF