Création expédition => Permission denied

Bonjour à tous,

Je suis tout nouveau ici et dans Dolibarr en général, et je dois dire un énorme merci à tout le monde pour ce super outil !!

Je suis développeur, donc c’est tout naturellement que je me suis mis à créer de nouveaux modules. La documentation existe mais je manque cruellement d’exemples !
Il faut tatonner avec les différentes méthodes des classes pour arriver à faire ce que l’on souhaite.

Pour problème actuel : lorsque je valide une expédition après l’avoir créée, j’ai une erreur « Expedition::valid Permission denied » dans mon fichier de log

Voici mon code :
$expedition = new Expedition($db);
$expedition->socid = $commande->socid;
$expedition->tracking_number = $trackNum;
$expedition->linked_objects = array($commande->rowid);
$expedition->addline(2, 3456, 1);
$expedition->addline(2, 3457, 1);
$expedition->create($user);
$expedition->valid($user);

Merci d’avance pour votre aide
Benjamin

Je suppose que vous avez vérifié que vous disposez bien des permissions nécessaires à la validation de l’expédition ? :grin:

Bonjour Aurélien,

Merci pour votre réponse.
Oui bien-sûr. J’utilise l’utilisateur #1 qui est le super admin, et avec qui j’arrive à valider les expéditions en direct sur Dolibarr.

D’après ce que je vois dans le code, votre message d’erreur doit provenir d’ici :

if (!((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->expedition->creer))
 || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->expedition->shipping_advance->validate)))) {

  $this->error = 'Permission denied';
  dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR);
  return -1;
}

Il faudrait peut être vérifier dans l’objet $user que $user->rights->expedition->creer et (si vous l’avez activé) $user->rights->expedition->shipping_advance->validate valent bien 1.

Merci beaucoup Aurélien !

Ce n’était pas vraiment mon problème mais ça m’a aidé à trouver !
En fait, je ne chargeais pas les droits dans l’objet User avec la méthode getrights avant de l’utiliser dans la validation de l’expédition

Voici mon code fonctionnel si ça peut aider certains :

$user = new User($db);
$user->fetch(1);
$user->getrights();
$expedition = new Expedition($db);
$expedition->socid = $commande->socid;
$expedition->tracking_number = $trackNum;
$expedition->linked_objects = array($commande->rowid);
$expedition->addline(2, 3456, 1);
$expedition->addline(2, 3457, 1);
$expedition->create($user);
$expedition->valid($user);

Impec :grin: