API Rest error lors de la validation d'une commande fournisseurs et l'effacement d'une tache d'un projet

Bonjour,

Je rencontre plusieurs soucis avec l’API REST:

Pour la validation d’une commande fournisseur à l’aide de l’api rest POST /supplierorders{id}/validate, j’ai un message d’erreur 401 acces denied. En verifiant les logs, je me suis apercu de la ligne suivante:

sql=SELECT COUNT(dbt.rowid) as nb FROM llx_fournisseur as dbt WHERE dbt.rowid IN (14) AND dbt.entity IN (5)
DoliDBMysqli::query SQL Error message: DB_ERROR_NOSUCHTABLE Table ‹ doliresto.llx_fournisseur › doesn’t exist

En verifiant en base de données, la seule table existante est en fait llx_commande_fournisseur.

Meme phénomène avec DELETE /tasks/{id}:

sql=SELECT COUNT(dbt.rowid) as nb FROM llx_tasks as dbt WHERE dbt.rowid IN (84) AND dbt.entity IN (1)
DoliDBMysqli::query SQL Error message: DB_ERROR_NOSUCHTABLE Table ‹ doliresto.llx_tasks › doesn’t exist

La seule table existante en base est llx_projet_task.

Merci de clarifer et/ou si vous avez le meme phénomène.

On utlise la version 10.0.3.

Bonjour @limeconsulting,

J’ai déplacé le sujet dans la catégorie #developper-pour-dolibarr :slight_smile:

Pour moi, je pense que le log en question n’a pas de rapport avec l’appel d’API.

A mon avis, c’est plutôt un problème de droits (vérifier que l’utilisateur Dolibarr pour lequel le token API est utilisé pour accéder à l’API a bien les droits relatifs à la gestion des fournisseurs / commandes fournisseurs et de suppression des tâches :wink: )

Le log est bien en rapport avec l’api car elle apparait juste après la mapiluation dans l’explorer API.

De plus lorsque je créé la dite table en copiant les données de la table initiale, la commande API fontionne.

Alors qu’on niveau des droits l’utilisateur a bien les bons droits et pas de moditications entre les 2 tests.

Cordialement

C’est bien étrange :confused:

Je viens de faire le test pour être sûr, et lors de la validation d’une commande fournisseur depuis l’API, j’ai bien en retour :

{
  "success": {
    "code": 200,
    "message": "Order validated (Ref=PO1911-0002)"
  }
}

En revanche, j’ai bien une erreur 500 lors d’une tentative de suppression de tâche depuis l’API :wink:

oui justement pour les taches c’est du a l’api qui essaye d’effacer une tache dans une table llx_tasks qui n’existe pas.

Si vous activer les logs dolibarr et faite un tail -f dolibarr.log pendant l’opération vous verrer la ligne suivante::

sql=SELECT COUNT(dbt.rowid) as nb FROM llx_tasks as dbt WHERE dbt.rowid IN () AND dbt.entity IN (2)

car les taches sont rattachés aux projects et se trouvent en base dans le table suivante: llx_projet_task.

Y’a comme dirait l’autre un bug… :slight_smile:

Avez-vous essayer avec un compte simple utilisateur qui a les droits et non pas un admin et/ou superadmin?

Non, en effet, il s’agit d’un compte admin.

Ok, c’est bien le module Multicompany qui pose problème:

Une fois activé, il empeche de valider des commandes. Et bien sur si je le desactive, cela fonctionne

Pour la suppression de taches, j’ai la stackstrace suivante:


Fatal error: Uncaught Error: Class 'Project' not found in /home/www/dolibarr/htdocs/projet/class/task.class.php:545 Stack trace: #0 /home/www/dolibarr/htdocs/projet/class/api_tasks.class.php(480): Task->delete(Object(User)) #1 [internal function]: Tasks->delete(2) #2 /home/www/dolibarr/htdocs/includes/restler/framework/Luracast/Restler/Restler.php(1065): call_user_func_array(Array, Array) #3 /home/www/dolibarr/htdocs/includes/restler/framework/Luracast/Restler/Restler.php(304): Luracast\Restler\Restler->call() #4 /home/www/dolibarr-/htdocs/api/index.php(262): Luracast\Restler\Restler->handle() #5 {main} thrown in /home/www/dolibarr/htdocs/projet/class/task.class.php on line 545

Une vrai catastrophe ce module Multicompany: Une perte de temps et d’argent.