J’ai créé une facture fournisseur (via API Rest), mais je souhaite y ajouter le fichier pdf de ma banque qui est le document relatif à cette facture crée dans dolibarr.
Sur la capture j’ai entouré joindre le fichier, mais je souhaite pousser le fichier via API Rest
Celui-ci s’upload dans documents/fournisseur/monfichier.pdf
Cependant, il manque un lien entre la facture fournisseur de dolibarr et mon fichier pdf.
J’ai remarqué qu’en plaçant monfichier.pdf dans documents/fournisseur/facture/3/0/\(PROV503\)/
Je le voyais bien en GUI à l’endroit attendu.
Éventuellement, je pourrais donc indiquer ce chemin lors de l’upload mais cela me parait un peu fastidieux.
Mes questions:
Quelle est la bonne pratique pour uploader un fichier qui doit être joint à une facture Dolibarr ?
N’y a t-il pas une manière permettant à ce que dolibarr place le fichier dans le repertoire approprié, par exemple en indiquant que mon fichier doit être joint à la facture ayant pour id 1234 ?
J’ai réussi à trouver la/une solution mais je trouve que la manière dont fonctionne dolibarr n’est pas top.
Lorsque je crée une facture fournisseur dolibarr, le code retour est l’id de la facture fournisseur => un entier positif
par contre,
Lorsque je veux ajouter une pièce jointe, il m’est demandé la ref de la facture pour laquelle je souhaite ajouter le fichier joint => une chaine de caractere type (PROV518)
Alors que « normalement », il faudrait fournir l’id de la facture fournisseur correspondant au code retour de la création de facture.
Qu’en pensez-vous ?
Pour solutionner mon problème, j’ai donc cherché la valeur de ref pour la facture en utilisant l’URL /api/index.php/supplierinvoices/1234
1234 étant l’id de ma facture
j’ai eu un peu le meme soucis, coté facture client et je suis passée par l’upload coté ecm
attention il manquait des choses dans le core et j’ai du pousser un correctif :
ci-joint mon code pour l’envoie
# on récupère le contenu DU fichier file
filecontent = open(file, 'rb').read()
encoded_string = base64.b64encode(filecontent)
# récupération du nom du fichier en elevant le chemin
filename = os.path.basename(file)
# on transfert le fichier sur le serveur
url = urlBase + "documents/upload"
data = {
"filename": filename,
"modulepart": "invoice",
"ref": "(PROV" + str(invoiceID) + ")",
"subdir": "",
"filecontent": encoded_string,
"fileencoding": "base64",
"overwriteifexists": "0"
}
r = requests.post(url, headers=headers, json=data)
Enfin, en écrivant et consultant ton code je vois que la ref correspond à une concatenation de REF et de l’ID avec les parenthèses qui l’entourent.
Je vais optimiser mon code dans ce sens.
Et donc vis à vis de ma remarque c’est un peu plus simple mais de mon point de vue c’est l’ID qui devrait être la clé ou le pivot pour faire les opérations.
J’ai un deuxième problème.
Mon fichier pdf est bien uploadé mais il est illisible.
As-tu déjà rencontré ce problème ?
Salut, oui, c’est un problème d’encodage, il faut que tu précise ‹ fileencoding ›: ‹ base64 › dans ta requète si c’est un fichier binaire et que tu encode ton fichier en base64