Problème sur la modif des actions

Bonjour,

Les actions créées sur un prospect disparaissent lorsque je tente de les modifier. J’ai trouvé une info sur le forum de modifier dans /htdocs/comm/action/fiche.php la ligne 328 $_POST(socid) en $_POST(soc_id) rien n’y fait, j’ai réinstallé la version 2.5.0 le problème persiste
Que faire pour corriger ce problème?

J’ai joint des captures d’écran du processus. Merci pour votre expertise

(Je repose ma question dans cette rubrique car il semble que cela soit un dysfonctionnement sur ma version et non un bug (cf post 12241))

le fichier

bug_update_action.pdf (69 KB)

Je ne comprends pas. Quelle est la nature de la modif de l’action. Passage à l’état terminée ?
As-tu le pb sur la demo
demo.dolibarr.org

En fait quelque soit la modif que j’effectue, l’action perd l’ID de la société auquel elle est ratachée.

On le constate dans la table lx_actioncomm dans le champs « fk_soc ». Les changements on bien été pris en compte mais le champs « fk_soc » devient « NULL » En remettent manuellement le bon ID c’est OK

Il n’y a pas ce problème sur la version de démo

J’espère avoir été plus précis, merci pour ton aide

J’ai rajouté quelques précisions sur les printscreen (voir fichier joint).

Ce problème apparu en 2.4 récemment, persiste en 2.5, est-ce que je peux m’attendre à le voir persister dans une prochaine mise à jour ?
Que dois-je faire ?:ohmy:
Cela tiens de la sorcellerie informatique:confused:

P.S. toute ma TPE tient dans ce système…:woohoo:

Merci pour votre réponse :kiss:

bug_update_action-8942d3e0114ae64540a56dd8b81b62b6.pdf (84.2 KB)

Je viens de détecter le même pb en 2.6.1 que je dois régler rapidement. Dès correction au niveau de mon code je te fais signe…

Romain

Cela vient d’une erreur entre ‹ socid › (le nom du champ avec le libellé de la société liée) et ‹ socid_id › (le nom du champ hidden qui contient l’id de la société liée) :

Dans le fichier htdocs/comm/fiche.php :

/*
* Action mise a jour de l’action
*
*/
if ($_POST[« action »] == ‹ update ›)
{
if (! $_POST[« cancel »])
{

(ligne 356 environ)

//$actioncomm->societe->id = $_POST[« socid »]; // K.O

$actioncomm->societe->id = $_POST[« socid_id »]; // O.K

Romain

J’ai trouvé également un autre bug :

Dans la liste des actions (Agenda), dans le cas où le titre de l’action est vide
et où il n’existe pas de traduction du type de l’action (ce qui est a priori souvent le cas car si la configuration ‹ Dictionnaire › permet de rajouter des nouveaux types d’action il n’y a pas d’interface d’ajout de traduction…)…

   Eh bien dans 

La pièce jointe listactions.zip est absente ou indisponible
La pièce jointe listactions.zip est absente ou indisponible ce cas au lieu d’afficher dans la première colonne ‹ Action ›,
le type de l’action, il est affiché ‹ Action › ou ‹ ActionAC_SIM… ›.

La correction se passe sur 2 fichiers : htdocs/comm/action/listactions.php et htdocs/actioncomm.class.php

En ce qui concerne listactions.php :

// Dans la même colonne, si un titre de l’action existe on l’affiche
// sinon on affiche le type de l’action
print ‹ <td> ›;
$actionstatic->id = $obj->id;
$actionstatic->code = $obj->acode;

	// LVM
	//$actionstatic-\>libelle = $obj-\>label;
	$actionstatic-\>titre = $obj-\>label; // Pas de traduction
	$actionstatic-\>type_libelle = $obj-\>libelle; // Traduction possible
	// Fin LVM
	
	print $actionstatic-\>getNomUrl(1,12);
    print '</td\>';

En ce qui concerne actioncomm.class.php :

  •  \remarks	Utilise $this-\>id, $this-\>code, $this-\>type_libelle et... $this-\>titre !! 
    

    * LVM : pour l’action ‹ statique › !!! afin d’éviter le fetch !!!
    */
    function getNomUrl($withpicto=0, $maxlength, $class=‹  ›, $option=‹  ›)
    {
    global $langs;

     $result='';
     if ($option=='birthday') 
     	$lien = '<a '.($class?'class="'.$class.'" ':'').'href="'.DOL_URL_ROOT.'/contact/perso.php?id='.$this-\>id.'"\>';
     else 
     	$lien = '<a '.($class?'class="'.$class.'" ':'').'href="'.DOL_URL_ROOT.'/comm/action/fiche.php?id='.$this-\>id.'"\>';
     
     $lienfin='</a\>';
    
     //if ($langs-\>trans("Action".$this-\>type_code) != "Action".$this-\>type_code || ! $this-\>libelle)
     if ($langs-\>trans("Action".$this-\>type_code) != "Action".$this-\>type_code || !$this-\>titre)
     {
     	// Si l'appel à la fonction présente est faite si un fetch a été fait...
     	// Non pas encore sûr...
     	if (!$this-\>type_code)
     	{
     		// Pas de fetch donc on utilise le 'code' extérieur
     		$this-\>type_code = $this-\>code;
     	}
     	
     	// LVM
     	// Les 2 lignes de code qui suivent suppose que l'on dispose toujours
     	// d'une traduction ce qui peut être faux... et en plus on n'utilise pas $libelle de la première ligne...
     	// Et dans le cas de non traduction il faut disposer du type de l'action 
     	//$libelle = $langs-\>trans("Action".$this-\>type_code);
     	//$libelleshort = $langs-\>trans("Action".$this-\>type_code,'','','','',$maxlength);
     	$libelle = $langs-\>trans("Action".$this-\>type_code);
     	$libelle = ($libelle != "Action".$this-\>type_code ? $libelle : $this-\>type_libelle);
     	
     	$libelleshort = dol_trunc($libelle, $maxlength);	
     }
     else 
     {
     	// vient de l'action 'statique'... donc pas de fetch... l'info vient de l'extérieur...
     	//$libelle = $this-\>libelle;
     	//$libelleshort = dol_trunc($this-\>libelle, $maxlength);
     	
     	$libelle = $this-\>titre;
     	$libelleshort = dol_trunc($libelle, $maxlength);
     }
     
     if ($withpicto) $result.=($lien.img_object($langs-\>trans("ShowAction").': '.$libelle,'task').$lienfin);
     if ($withpicto==1) $result.=' '; 
     $result.=$lien.$libelleshort.$lienfin;
     return $result;
    

    }


NB : je n’arrive pas à joindre les fichiers…

Romain