Projet

Général

Profil

Actions

Anomalie #1410

fermé

Ajout d'une adhésion : Une erreur est survenue lors de la récupération des dates

Ajouté par Manuel Her il y a environ 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
Core
Version cible:
Début:
09/03/2020
Echéance:
% réalisé:

100%

Temps estimé:
Version utilisée:

Description

Bonjour,

J'ai ajouté :
un nouveau type de contribution Don 'Abandon de frais' (en France au lieu de rembourser les notes de frais, on peut les déduire des impôts)
puis une contribution 'Adhésion membre bienfaiteur'

lorsque j'ajoute une nouvelle adhésion, au moment où je sélectionne 'Adhésion membre bienfaiteur',
une boite de dialogue js/alert m'indique : Une erreur est survenue lors de la récupération des dates

Il y a un problème d'indexation dans $this->post(
'/contribution/dates',..

à la ligne : 'type' => array_keys($contributions_types)[$post['fee_id']],
les id ne se suivent pas (il y a des 'trous' dans la liste retournée par array_keys($contributions_types) issue de $contributions_types = $ct->getList(true);
ce qui déclenche un débordement de tableau

j'ai corrigé par :
'type' => (int)[$post['fee_id']],

ça me parait trop simple, y a t il un loup?

je suppose que si j'avais d'abord ajouté le nouveau type d'adhésion et après de don, je n'aurais pas vu ce bug, les ids se suivant dans la table mysql.

Merci
Manuel

Mis à jour par Johan Cwiklinski il y a environ 4 ans

  • Statut changé de Nouveau à Commentaire

Salut,

Je ne suis pas certain d'avoir tout suivi :D Essaie de fournir un patch à l'avenir sur des changements ;)

Ceci étant dit, $ct->getList(true); va retourner un tableau ayant pour index l'identifiant en base des résultats qui correspondent, et pas de tous les résultats. Il est donc tout à fait normal que les id ne se suivent pas.

Mais si ta nouvelle contribution est bien un don (ie. ne donne pas accès à une extension de l'adhésion), le calcul des date ne devrait juste pas se faire ; non ?

Mis à jour par Manuel Her il y a environ 4 ans

Slt,

Ce n'est pas évident à expliquer :)

un dump de $ct->getList(true); me retourne bien que des types d'adhésions :

array ( 1 => 'cotisation annuelle', 2 => 'cotisation annuelle réduite', 3 => 'cotisation personne morale', 7 => 'cotisation annuelle (dûe)', 8 => 'Adhésion XXXX', 9 => 'Adhésion YYYY', 10 => 'Adhésion annuelle, membre bienfaiteur',)

un dump de array_keys($contributions_types) me retourne :
array ( 0 => 1, 1 => 2, 2 => 3, 3 => 7, 4 => 8, 5 => 9, 6 => 10 ,)

dans le formulaire, si je sélectionne 'Adhésion annuelle, membre bienfaiteur' (le dernier);
$post['fee_id'] contient 10 soit l'index dans la table. il est en dehors du tableau lors de l’exécution de : 'type' => array_keys($contributions_types)[$post['fee_id']] :)

si j'ai bien compris, cet index est le type de la contribution, donc dans ce cas ligne 257,
je ferais simplement : 'type' => (int)$post['fee_id'],

Manuel

Mis à jour par Johan Cwiklinski il y a environ 4 ans

  • Catégorie mis à Core
  • Statut changé de Commentaire à In Progress
  • Assigné à mis à Johan Cwiklinski
  • Version cible mis à 0.9.4

Ha ok, je vois oui. Je vais vérifier ça plus globalement, il me semle avoir vu quelque chose de similaire ailleurs dans le code.

Mis à jour par Johan Cwiklinski il y a environ 4 ans

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

Mis à jour par Johan Cwiklinski il y a environ 4 ans

  • Statut changé de Résolu à Fermé
Actions

Formats disponibles : Atom PDF