Erreur PHP avec modèle ODT lors de validation de propale

Bonsoir tout le monde,

nouvel utilisateur de Dolibarr, globalement content de l’outil pour le peu que je l’ai utilisé, j’ai tout de même un petit souci.

J’ai voulu me créer un modèle ODT, pour les propositions commerciales pour commencer. J’ai créé une proposition commerciale, puis j’ai généré un document avec mon modèle ODT. Jusque là aucun souci. A la validation de la proposition, j’ai le message d’erreur suivant :
Fatal error: Uncaught Error: Call to a member function getNomUrl() on null in C:\wamp\www\Dolibarr\comm\propal\card.php on line 1980 .

J’ai testé avec le modèle ODT de base fourni, me disant que c’est mon modèle qui pose souci. Même message d’erreur. Et l’ensemble des données du client ne sont pas présentes.

J’ai ensuite fait le test suivant :

  • création d’un doc ODT (du modèle Dolibarr) avant validation. En regardant le document, on retrouve bien l’ensemble des données, client comme entreprise.
  • j’ai validé ma proposition commerciale. Je me retrouve avec le mesage d’erreur cité.
  • je rouvre le même doc ODT, et là les données du client ont a nouveau disparu.
    Ce message d’erreur n’est présent que lorsque j’utilise un modèle ODT. Il n’y a aucun problème avec les modèles pdf.

J’ai fait des recherches sur le net pour essayer de trouver des réponses, j’ai regardé dans le code pour essayer de voir là où ça pouvait coincer, j’ai créé un contact à mon client (me disant que ça pouvait être ça), mais rien n’a solutionné la chose.

Si vous aviez des solutions que je puisse tester, sinon il ne me restera plus qu’à partir sur un modèle PDF, m’obligeant à gérer les modifs de modèle en PHP.

Ma config : Dolibarr v.12.0.3 installé en local sur un Wamp, PHP 7.3.12, MySQL 5.7.28.

Merci

Bonjour,
Aurais-tu tenté d’utiliser un système de hook ?
Cette erreur est assez incompréhensible. La fonction tente d’obtenir une information sur le client de la proposition $object->thirdparty et dit qu’il n’existe pas.
Je dirais que c’est un bogue, donc direction github.
Je vois qu’il existe une fonction $object->fetch_thirdparty(); de temps en temps exécutée avant la génération du document. Je me demande si dans ce cas particulier, elle manquerait parce que le document à générer n’est pas un PDF.

Et je ne confirme pas sur ma version de test v11.0.0

Bonjour,

Merci pour ta réponse. Je n’ai fais que reprendre les fonctions données dans la doc pour mon modèle ODT, et même celui fourni avec l’application pose problème. Je n’ai pas fait de système de hook.

Je vais regarder pour passer ça sur le github, oui.

Je voulais downgrader pour faire les essais et rester dessus si ça fonctionnait, mais maintenant qu’une bonne partie de mon Dolibarr est configuré ça ne me tente pas trop.

Bonjour à tous

Problème similaire chez moi

Tests sur une nouvelle install sous Windows 10
Install manuelle de MariaDB 10.5.8, PHP 7.4.13, Apache 2.4.46, Dolibarr v.12.0.3

Je valide ma propale, les menus haut et gauche s’affichent, les onglets [Proposition commerciale] [Contacts] [Notes], etc … aussi
Par contre la partie centrale de la page est blanche
Si je reclique sur [Proposition commerciale], la partie centrale se réaffiche correctement avec toutes les valeurs, les fichiers ODT et PDF ont été renommés correctement et contiennent les bonnes informations

Le problème ne se pose pas si j’utilise un modèle PDF
Il y a donc un problème lors de la validation de la propal en utilisant un modèle ODT

Page blanche = Logs erreur Apache

Application Error
[Sat Dec 05 18:03:55.340750 2020] [php7:error] [pid 12908:tid 1036] [client 192.168.1.51:59950] PHP Fatal error:  Uncaught Error: Call to a member function getNomUrl() on null in C:\\Apache24\\htdocs\\doliv12\\comm\\propal\\card.php:1980\nStack trace:\n#0 {main}\n  thrown in C:\\Apache24\\htdocs\\doliv12\\comm\\propal\\card.php on line 1980, referer: http://192.168.1.254:8090/doliv12/comm/propal/card.php?id=1&action=validate

Pour info, aucune erreur ou warning dans les logs Dolibarr

La ligne 1980 en question :
$morehtmlref .= '<br>'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1, 'customer');

Rien trouvé à priori sur Github mais j’ai peut-être mal cherché, je ne suis pas un pro de cet outil :frowning:

Si quelqu’un à une idée
Cordialement
Eric

Bonjour,
J’ai ouvert le ticket :

Bonjour

J’ai trouvé ce commit https://github.com/Dolibarr/dolibarr/commit/85c5f423b119ee58a99e01480266461a8c4c0b63

Fred

Bonjour,
Même type de défaut de « recharge » indiquant la ligne 1980, quand on veut « supprimer » un produit du devis, en utilisant le bouton ajouté du module « dolitools » (sur une installation 12.0.2 Doliwamp - mais cette erreur n’était pas déclenchée sur la version 11.0.4 ). Le retour à la fiche devis et la suppression ne sont pas affectés. … poke @altatof

@Christo Bonjour, dolitools a été corrigé récemment pour ce souci. Merci de télécharger la dernière version sur Dolistore ou de nous contacter si vous avez acquis le module sur altairis.fr

1 « J'aime »