Rechargement de l'objet Facture à partir d'un champs caclulés sur Attributs supplémentaires de facture (lignes)

Bonjour,

J’essaye de recharger les élements d’une facture et encore mieux de récupérer un attribut supplémentaire du tiers d’une facture à partir du champs calculé d’un attribut supplémentaire de facture (lignes).

Je m’explique :
Dans la configuration du module Factures, j’ajoute dans un attribut supplémentaire (lignes) le champ calculé suivant :
var_dump($objectoffield)

Résultat, il me ressort parfaitement toutes les infos de l’objet et notamment ceux ci :

[« fk_facture »]=>
string(3) « 315 »
[« fk_product »]=>
string(2) « 20 »

315 correspond bien à l’id de ma facture et 20 l’id du produit par rapport à cette ligne.

Je remplace le champ calculé par celui ci :

(($reloadedobj = new Product($db)) && ($reloadedobj->fetch($objectoffield->fk_product))) ? var_dump($reloadedobj) : ‹ Produit pas trouvé ›

Aucun problème, j’ai bien mon objet Produit par rapport à une ligne de facture qui m’est retourné.

Je remplace le champ calculé par celui ci :

(($reloadedobj = new Facture($db)) && ($reloadedobj->fetch($objectoffield->fk_facture))) ? var_dump($reloadedobj) : ‹ Facture pas trouvée ›

J’ai un traitement de quelques secondes pour m’afficher une erreur 500 à la fin.

Sauriez-vous pourquoi l’objet Facture n’est pas récupérer comme celui de Product ?

hello, peux-etre que la classe Facture n’est pas chargé par un include (alors que la Product l’est)

D’après ce que j’arrive à comprendre du code, j’ai l’impression qu’elle est chargée de la même manière.

il faut sans doute investiguer plus précisement ce qu’il y a derrière l’erreur 500…

En effet, j’y avais pas pensé.
J’ai 2 erreurs 500 :

2024-04-18 02:04:38 Error xxx.xxx.xxx.xxx POST /compta/facture/card.php?id=316 HTTP/1.0
2024-04-18 02:04:42 Error xxx.xxx.xxx.xxx AH01071: Got error ‹ PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16384 bytes) in /var/www/vhosts/website.com/www/core/db/mysqli.class.php on line 330 ›, referer: https://website.com/compta/facture/card.php?facid=316

Hmmm, ca m’a plus avancé que ça. La ligne 330 dans mysqli.class.php m’indique pas grand chose de plus. Ca à l’air de bouffer la mémoire ce code.

Sinon, est-il possible d’exécuter une requête sql dans un champ calculé ?

Bonjour,

Vous pouvez toujours tenter d’augmenter la mémoire PHP de 128M à 256M

memory_limit = 256M
1 « J'aime »

Bonjour,

J’ai réussi à avoir ce que je souhaitais en utilisant la fonction fetchNoCompute :

(($reloadedobj = new Facture($db)) && ($reloadedobj->fetchNoCompute($objectoffield->fk_facture)) && ($secondloadedobj = new Societe($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->socid) > 0)> 0 ? ($secondloadedobj->array_options[‹ options_showppn ›] == 1 ? ( (($reloadedobj = new Product($db)) && ($reloadedobj->fetch($objectoffield->fk_product))) ? ($reloadedobj->array_options[‹ options_xxxxxx ›] ==1 ? ( ‹ blabla ›: ‹ notblabla › ) : ‹ Erreur › ) : ‹  › ) : ‹ Erreur ›)

1 « J'aime »