Modifier statut adhérent sur la fiche

Bonjour,

Je souhaiterais effectuer une modification au niveau du module adhérent en prenant en compte la chose suivante :

J’ai ajouté un extrafield « Adhésion Partielle » qui est une case à cocher et j’aimerais qu’il me change le statut de la fonction LibStatut pour que dès que celle ci est cochée, cela affiche le nouveau statut que j’ai créé dans adherent.class.php.

Le problème est que je n’arrive pas à identifier dans le fichier card.php à quel endroit il y a l’affichage du statut de l’adhérent lors de la consultation de la fiche de celui-ci.

Je rajoute des captures d’écran pour illustrer mes propos :

Dès que je clique sur adhérent partiel, j’aimerais que le statut se change comme défini dans la fonction LibStatut.

J’aurais donc besoin de votre aide s’il vous plait.

Cordialement

Voici ce que j’ai écrit :

//Modification partiellement à jour
     $object->fetch_optionals();
     $adhesionpartielle = $object->array_options['options_adhesionpartielle'];
     if ($adhesionpartielle = 1) {
              print "adhérent partiel";
              $object->statut=10;} ;
      if ($adhesionpartielle = NULL) {
               print "NULL";};

Mais lorsque la case est cochée ou décochée, cela ne semble rien changer :confused:

//Modification partiellement à jour
$object->fetch_optionals();
$adhesionpartielle = $object->array_options['options_adhesionpartielle'];
if ($adhesionpartielle == 1) {
         print "adhésion partielle";
         $object->statut==10;} ;
if ($adhesionpartielle == NULL) {
         print "NULL";};

Il reconnait désormais si la case est cochée ou non, mais impossible de mettre à jour le champ « statut ».

Bonjour :happy:
== est pour une comparaison
= pour une affectation de donnée

Effectivement, j’ai corrigé ma ligne $object->statut=10;

Néanmoins je ne parviens pas à faire un update du champ :

$object->statut=10;
$object->update($statut);

Pas évident le PHP :tongue:

Bonjour :happy:
Regarde dans le fichier adherent.class.php
la fonction update();
le premier paramètre est $user;

tente un truc du genre

$object->statut=10;
$object->update($user);

Bonjour,

Merci beaucoup pour ta réponse qui me permet de faire des updates ! :happy:
Je dois juste voir maintenant de quelle façon je peux modifier le statut de l’adhérent (en partiel) en fonction de cette case cochée :wink:

J’ai un dernier petit problème concernant le diagramme de répartition des adhérents selon leurs statuts.

J’ai modifié le code pour faire apparaître le nouveau type « adhérent partiellement à jour », mais rien ne s’affiche…
Le diagramme reste inchangé. Voici le bout de code :

$Adherents=array();
$AdherentsAValider=array();
$MemberUpToDate=array();
$MemberPartialUpToDate=array(); //MODIFICATION
/*
 * Statistics
 */

if ($conf->use_javascript_ajax)
{
    print '<table class="noborder nohover" width="100%">';
    print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").'</th></tr>';
    print '<tr '.$bc[0].'><td align="center" colspan="2">';

    $SommeA=0;
    $SommeB=0;
    $SommeC=0;
    $SommeD=0;
    $SommeE=0; //MODIFICATION
    $dataval=array();
    $datalabels=array();
    $i=0;
    foreach ($AdherentType as $key => $adhtype)
    {
        $datalabels[]=array($i,$adhtype->getNomUrl(0,dol_size(16)));
        $dataval['draft'][]=array($i,isset($MemberToValidate[$key])?$MemberToValidate[$key]:0);
        $dataval['notuptodate'][]=array($i,isset($MembersValidated[$key])?$MembersValidated[$key]-(isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0):0);
        $dataval['uptodate'][]=array($i,isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0);
        $dataval['partialuptodate'][]=array($i,isset($MemberPartialUpToDate[$key])?$MemberPartialUpToDate[$key]:0); //MODIFICATION
        $dataval['resiliated'][]=array($i,isset($MembersResiliated[$key])?$MembersResiliated[$key]:0);
        $SommeA+=isset($MemberToValidate[$key])?$MemberToValidate[$key]:0;
        $SommeB+=isset($MembersValidated[$key])?$MembersValidated[$key]-(isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0):0;
        $SommeC+=isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0;
        $SommeD+=isset($MembersResiliated[$key])?$MembersResiliated[$key]:0;
        $SommeE+=isset($MemberPartialUpToDate[$key])?$MemberPartialUpToDate[$key]:0; //MODIFICATION
        $i++;
    }

    $dataseries=array();
    $dataseries[]=array('label'=>$langs->trans("MenuMembersNotUpToDate"),'data'=>round($SommeB));
    $dataseries[]=array('label'=>$langs->trans("MenuMembersUpToDate"),'data'=>round($SommeC));
    $dataseries[]=array('label'=>"Adhérents partiellement à jour",'data'=>round($SommeE)); //MODIFICATION
    $dataseries[]=array('label'=>$langs->trans("MembersStatusResiliated"),'data'=>round($SommeD));
    $dataseries[]=array('label'=>$langs->trans("MembersStatusToValid"),'data'=>round($SommeA));
    $data=array('series'=>$dataseries);
    dol_print_graph('stats',300,180,$data,1,'pie',1);
    print '</td></tr>';
    print '<tr class="liste_total"><td>'.$langs->trans("Total").'</td><td align="right">';
    print $SommeA+$SommeB+$SommeC+$SommeD+$SommeE; //MODIFICATION
    print '</td></tr>';
    print '</table>';
}

Sachant que j’ai défini un peu avant :

if ($objp->statut == -1) { $MemberToValidate[$objp->rowid]=$objp->somme; }
if ($objp->statut == 1)  { $MembersValidated[$objp->rowid]=$objp->somme; }
if ($objp->statut == 10)  { $MemberUpToDate[$objp->rowid]=$objp->somme; } //MODIFICATION
if ($objp->statut == 0)  { $MembersResiliated[$objp->rowid]=$objp->somme; }

Quelqu’un aurait-il une idée ?