L’édition d’une note d’une facture ne fonctionne pas.
En effet l’url est compta/facture/note.php?action=editnote_public&id=147
ce qui donne une variable GET: action = editnote_public
alors que dans le formulaire c’est la variable POST qui est générée : action =setnote_public
C’est la variable GET qui prévaut sur la variable POST …
Et finalement dans le fichier ./core/actions_setnotes.inc.php, le test est fait sur la valeur setnote_public :
if ($action == ‹ setnote_public › && ! empty($permissionnote) && ! GETPOST(‹ cancel ›, ‹ alpha ›))
ainsi cela ne peut fonctionner.
Il y a donc une correction à faire. Mais je ne sais pas si c’est l’action de l’url qu’il faut corriger ou pas …
En suivant le traitement, tout semble se jouer à la ligne 42 du fichier note.php :
Fichier compta/facture/note.php
L42 : $action=GETPOST(‹ action ›, ‹ alpha ›);
Après la ligne 42, j’ai : $_POST[« action »]=> string(14) "setnote_public" $_GET[« action »]=> string(15) "editnote_public"
et **$action => string(15) « editnote_public »**
« Le GET l’emporte sur le POST ».
En effect dans les functions de la lib(GETPOST), on a (avec la valeur par défaut de $method qui est 0) :
if (empty($method)) $out = isset($_GET[$paramname])?$_GET[$paramname]isset($_POST[$paramname])?$_POST[$paramname]:’’);
Donc sur l’instance de @ksar, on a GET = editnote_public, POST = setnote_public.
Que vaut $action après la ligne 42 du fichier htdocs/compta/facture/note.php ?
On peut ajouter la ligne suivante en ligne 43 le temps du test.
echo $action;