[RESOLU] ventilation client Comptabilité Expert

Bonjour

Fred

bonsoir,

voici la requête :

SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype, l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod , aa.rowid as aarowid , l.product_type as type_l, l.tva_tx as tva_tx_line FROM llx_facture as f INNER JOIN llx_facturedet as l ON f.rowid = l.fk_facture LEFT JOIN llx_product as p ON p.rowid = l.fk_product LEFT JOIN llx_accountingaccount as aa ON p.accountancy_code_sell = aa.account_number LEFT JOIN llx_accounting_system as accsys ON accsys.pcg_version = aa.fk_pcg_version WHERE f.fk_statut > 0 AND fk_code_ventilation <= 0 AND (accsys.rowid=‹ 2 › OR p.accountancy_code_sell IS NULL OR p.accountancy_code_sell =’’) ORDER BY f.datef DESC,f.facnumber DESC,l.rowid DESC LIMIT 26

Ce qui est étonnant, si c’est une question de limite de temps, j’aurais le même problème sur les autre Dolibarr installés sur le même hébergeur. Et il y a d’autres pages qui demandent un temps d’exécution importants aussi, et là tout se passe bien …

Mais bon, je suis loin d’être un spécialiste, je te laisse regarder.

Merci

Bruno

Bonjour
Peux-tu exécuter cette requête dans phpmyadmin en ajoutant devant EXPLAIN ce qui donne:

EXPLAIN SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype, l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod , aa.rowid as aarowid , l.product_type as type_l, l.tva_tx as tva_tx_line FROM llx_facture as f INNER JOIN llx_facturedet as l ON f.rowid = l.fk_facture LEFT JOIN llx_product as p ON p.rowid = l.fk_product LEFT JOIN llx_accountingaccount as aa ON p.accountancy_code_sell = aa.account_number LEFT JOIN llx_accounting_system as accsys ON accsys.pcg_version = aa.fk_pcg_version WHERE f.fk_statut > 0 AND fk_code_ventilation <= 0 AND (accsys.rowid=‹ 2 › OR p.accountancy_code_sell IS NULL OR p.accountancy_code_sell =’’) ORDER BY f.datef DESC,f.facnumber DESC,l.rowid DESC LIMIT 26

et nous donner le résultat (pour faire des captures d’écran lisibles, il y a par exemple greenshoot)
tu dois avoir quelquechose comme ça, sur cet exemple on voie que la table aa n’a pas d’index pour la colonne qui nous interresse

2015-11-1218_25_36-192.168.1.5_localhost_dolitest_llx_accounting_account_phpMyAdmin3.3.10.png

après avoir ajouté l’index

2015-11-1218_30_33-192.168.1.5_localhost_dolitest_llx_accounting_account_phpMyAdmin3.3.10.png

S’il te manque des index, ça marche toujours, mais c’est llllleeeeeennnntttt.
pour les exemples que je donne, ce sont les tables renommées de la version 3.9 (develop), c’est pour cela que tu as vu des différences de noms

Fred

effectivement, il n’y a pas d’index

Capture.png

Bien vu …

Bonjour
Peux-tu essayer la requête sans le EXPLAIN dans phpmyadmin?

Fred

bonjour Fred,

voilà le résultat :

« MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0003 secondes.) »

La table contient pourtant bien 4784 enregistrements…

Bruno

Bonjour
Peux-tu essayer:
SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype, l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod , aa.rowid as aarowid , l.product_type as type_l, l.tva_tx as tva_tx_line FROM llx_facture as f INNER JOIN llx_facturedet as l ON f.rowid = l.fk_facture LEFT JOIN llx_product as p ON p.rowid = l.fk_product LEFT JOIN llx_accountingaccount as aa ON p.accountancy_code_sell = aa.account_number WHERE f.fk_statut > 0 AND fk_code_ventilation <= 0 AND (p.accountancy_code_sell IS NULL OR p.accountancy_code_sell =’’) ORDER BY f.datef DESC,f.facnumber DESC,l.rowid DESC LIMIT 26

Fred

Idem :
MySQL a retourné un résultat vide (aucune ligne)

Bonsoir,

toujours bloqué sur cette ventilation.

C’est étonnant, car c’est un Dolibarr « propre » (je dis ça car sur certaines install de Dolibarr, on a pu faire des « bidouilles »), c’est à dire aucun module bizarre, aucun changements des fichiers ou de la base, à part les dernières mises à jour.

@Fred, les retours dernières instructions SQL ne te disent rien je suppose ?

Merci

Bonjour
Essayes ceci:

SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype
, l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line
, p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod
FROM llx_facture as f 
INNER JOIN llx_facturedet as l ON f.rowid = l.fk_facture 
LEFT JOIN llx_product as p ON p.rowid = l.fk_product 
WHERE f.fk_statut > 0 AND fk_code_ventilation <= 0 AND (p.accountancy_code_sell IS NULL OR p.accountancy_code_sell ='') 
ORDER BY f.datef DESC,f.facnumber DESC,l.rowid DESC LIMIT 26

Fred

Bonjour Fred, et merci de te pencher sur mon problème.

La dernière instruction renvoie toujours :
MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0088 secondes.)

Il doit y avoir un truc tout con, mais j’ai beau fouiller, j’avoue que ça ne me saute pas aux yeux ! :frowning:

Bonjour
Essayes ceci:

SELECT f.facnumber, f.rowid as facid, f.datef, f.type as ftype
, l.fk_product, l.description, l.total_ht, l.rowid, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line
, p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.accountancy_code_sell as code_sell, p.tva_tx as tva_tx_prod
FROM llx_facture as f 
INNER JOIN llx_facturedet as l ON f.rowid = l.fk_facture 
LEFT JOIN llx_product as p ON p.rowid = l.fk_product 
WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0 AND (p.accountancy_code_sell IS NULL OR p.accountancy_code_sell ='') 
ORDER BY f.datef DESC,f.facnumber DESC,l.rowid DESC LIMIT 26

c’est le jeu des 7 différences

Fred

Je ne vois même pas la différence entre toutes les requêtes que tu proposes Frederic. Il y a temps d’erreur que ça ?

Bonjour
Non je ne voie pas tant d’erreurs, j’essaye de réduire la requête pour trouver pourquoi ça ne passe pas chez bsizorn.
Dans le WHERE je viens de remarquer qu’il y avait fk_code_ventilation j’essaie avec l.fk_code_ventilation

Fred

Bonjour Fred.

Tu sèche sur mon problème ?

Y aurait-il une solution plus radicale pour mettre tout ça en place ?
refaire une installation complète en injectant la bdd précédemment sauvegardée mais sans la table llx_accountingaccount par exemple ?

A savoir que la « ComptabilitéExpert » n’a jamais été utilisée sur cette installation…

Merci

Bonjour
As tu essayé la dernière requête?

Fred

@Fred

Si tu veux, j’ai récupéré un dump d’une base d’un autre utilisateur ayant le même problème.

Je continue de chercher mais a deux c’est mieux. :wink:

Merci

pardon Fred, je pensais t’avoir répondu.

Dans le doute je viens de la refaire, et toujours :
MySQL a retourné un résultat vide (aucune ligne)

Bruno

Bonjour
Si ça ne pose pas de problème à cet utilisateur, tu connais mon mail. Par contre c’est lundi… je fais face aux commandes du we…

2015-11-2311_47_24-Dolibarr-Commandes.png

Fred

Merci Fred, je t’envoi ça ce midi. Tu as le temps.

Je continue mes recherches ce soir. Je viens de finir plusieurs PR en attente.