Bug ? - Edition des notes d'une facture

Bonjour,

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 …

Salut xmillies,

tu es en quell version de dolibarr ?
depuis quel écran accèdes tu à cette modification de note ?

je ne reproduis pas le problème en 10.0.2+

Salut Arre,

Oubli de ma part… la version de Dolibarr est la 10.0.3.
J’avais déjà le problème depuis un moment au moins depuis le v8.

Hier, j’ai décidé d’investiguer.
Mais je ne connais pas encore suffisement le produit pour choisir quel élement corriger.

Depuis l’écran Facture, Fiche, Notes clic sur crayon.

abc.png

Salut xmillies,

étrange,

aucun bug reporté en V10, ni V9, ni V8 à ce niveau.

As tu des modules externes (achetés sur le dolistore) ?
As tu des modifications spécifiques réalisées par un développeur ?

Aucune modification ou achat
La vérification des checksums est 100% bonne…

Petite question avez vous lors de l’édition d’une note d’une facture la même url ?

compta/facture/note.php?action=editnote_public&id=148

Notamment le « edit » ?

Et lors de la validation de l’édition, dans les données POST (F12) avez vous une action avec : set ou edit ?

Vous pouvez faire vos tests ici : https://demo.dolibarr.org/public/demo/index.php

1 « J'aime »

Merci @ksar

Sur ton instance cela fonctionne.

Et je n’ai pas de différence dans les tracces :

https://demo.dolibarr.org/compta/facture/note.php?action=editnote_public&id=244
action: setnote_public
token: d1efb5d5306728eed87ae4eb7f078dd7
id: 244
note_public: ma note publique
modify: Modifier

https://xxxxxxxxxx/doli/compta/facture/note.php?action=editnote_public&id=144
action: setnote_public
token: 584cf544e227ef2816432dc0e50dc0cd6d17866d
id: 144
note_public: ma note publique
modify: Modifier

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]:unhappy: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;

J’ai le même problème sur les notes des tiers par exmple