MyList

Hello Defrance !

Bon je suis passé à la caisse pour MyList (DarkJeff me l’a installé), mais il va falloir m’expliquer :
Je prends le code de ta liste product
Je créé ma liste
Je colle ce code dedans pour avoir la « même » et BAM une erreur SQL
elle est compréhensible (mais je crois qu’elle est tronquée ou incomplète…)
check the manual that corresponds to your MySQL server version for the right syntax to use near ‹ FROM llx_product as p LEFT JOIN llx_product_extrafields as extra ON p.rowid = ex › at line 1

mais elle n’est normalement pas justifiée, vu que j’ai pris le code de ta liste « product » se trouvant déjà dans le module :s

As-tu déjà eu ce cas de figure ?

Hello et merci pour ton achat

oui, il ta faut AUSSI créer au moins un champs pour faire fonctionner une liste
mylist génère le début de la requete SQL (select puis les champs) à partir des champs définis. Si il n’y en a pas ben elle ne marche pas :
Je vais profiter de cette remarque pour mettre un beau message d’erreur expliquant pourquoi cela ne fonctionne pas…

PS : il y a une documentation sur le module (et mes autres modules) disponible à cette adresse : http://www.patas-monkey.com/index.php/fr/repository/Documentations/
Un RTFM ne fait jamais de mal :wink:

La doc… euuuh, bah bien sûr ! Désolé j’ai pêché par vanité de croire que je saurai gérer le module sans la lire :wink:

Je suis un vrai trou d’b… j’ai pas vu les champs en dessous…
au jeu des 7 erreurs sur 2 images, j’aurai perdu !
Bon alors je m’y remets ? !

je veux afficher les produits par fournisseur une peu comme sur dolibarr\htdocs\fourn\product\liste.php

mais AVEC le stock (LEFT JOIN llx_product_stock, etc…) :

$sql = « SELECT p.rowid, p.label, p.ref, p.fk_product_type, »;
$sql.= " ppf.fk_soc, ppf.ref_fourn, ppf.price as price, ppf.quantity as qty, ppf.unitprice,";
$sql.= " s.rowid as socid, s.nom";
$sql.= " FROM ".MAIN_DB_PREFIX.« product as p »;
if ($catid) $sql.= " LEFT JOIN « .MAIN_DB_PREFIX.« categorie_product as cp ON cp.fk_product = p.rowid »;
$sql.= " LEFT JOIN « .MAIN_DB_PREFIX.« product_fournisseur_price as ppf ON p.rowid = ppf.fk_product »;
$sql.= " LEFT JOIN « .MAIN_DB_PREFIX.« societe as s ON ppf.fk_soc = s.rowid »;
$sql.= " WHERE p.entity IN ( ».getEntity(‹ product ›, 1). ») »;

d’aileurs, les fichiers dolibarr disposent des requêtes mais formatées pour le PHP, pas moyen de les récupérer formatées pour MyList ?

ROOOHHH Pis à peine dit, à peine réussi :happy: Merci ! et bravo pour l’extension
Promis je lirais la notice la prochaine fois que je bloque

Meme plus le temps de repondre que le soucis est regle
Si tous pouvais se regler comme ca

Est-il possible de traduire des requetes comme celles là pour le module MyList ?

SELECT llx_societe.nom, llx_commande.ref, llx_commande.fk_statut, llx_product.ref, llx_product.label, llx_commandedet.qty, llx_product_stock.reel, llx_expeditiondet.qty, llx_product_stock.reel - llx_commandedet.qty, llx_commandedet.qty - llx_expeditiondet.qty FROM { OJ BASEDEDONNE.llx_expedition AS llx_expedition LEFT OUTER JOIN BASEDEDONNE.llx_commandedet AS llx_commandedet LEFT OUTER JOIN BASEDEDONNE.llx_expeditiondet AS llx_expeditiondet ON llx_commandedet.rowid = llx_expeditiondet.fk_origin_line ON llx_expedition.rowid = llx_expeditiondet.fk_expedition }, { OJ BASEDEDONNE.llx_product AS llx_product LEFT OUTER JOIN BASEDEDONNE.llx_product_stock AS llx_product_stock ON llx_product.rowid = llx_product_stock.fk_product }, BASEDEDONNE.llx_commande AS llx_commande, BASEDEDONNE.llx_societe AS llx_societe WHERE llx_commandedet.fk_commande = llx_commande.rowid AND llx_product.rowid = llx_commandedet.fk_product AND llx_commande.fk_soc = llx_societe.rowid AND ( llx_commande.fk_statut = 0 OR llx_commande.fk_statut = 1 OR llx_commande.fk_statut = 2 )

je dirais oui,
je te conseille par contre d’utiliser des alias pour le nom de tes tables (ajoute ‹ as cd › sinon ce n’est pas très lisible
dans ton cas il faut écrire
FROM { OJ BASEDEDONNE.llx_expedition AS e LEFT OUTER JOIN BASEDEDONNE.llx_commandedet AS cd LEFT OUTER JOIN BASEDEDONNE.llx_expeditiondet AS ed ON cd.rowid = cd.fk_origin_line ON e.rowid = ed.fk_expedition }, { OJ BASEDEDONNE.llx_product AS p LEFT OUTER JOIN BASEDEDONNE.llx_product_stock AS ps ON p.rowid = ps.fk_product }, BASEDEDONNE.llx_commande AS c, BASEDEDONNE.llx_societe AS s WHERE cd.fk_commande = c.rowid AND p.rowid = cd.fk_product AND c.fk_soc = s.rowid AND ( c.fk_statut = 0 OR c.fk_statut = 1 OR c.fk_statut = 2 )
et définir les champs

PS : pour les champs calculés du type llx_product_stock.reel - llx_commandedet.qty il faut paramétrer un alias dans myList sinon ca va coincer

PS2 : normalement il n’est pas nécessaire d’utiliser les ` non plus

Hum, bon, pas si évident de passer de OpenOffice Base à du SQL pur !
… vu que je ne sais pas faire du SQL pur…
et que je ne comprends pas la moitié de la requête que j’ai copiée avant,
et pensant que celle que tu as corrigé marcherait comme par magie (mais ne marche pas…)
je vais retourner aux choses plus basiques, sinon tu vas devoir me corriger de la requête à volonté !

FROM llx_societe as s, llx_commande as c WHERE c.fk_soc = s.rowid

Whaou, copyright attention !

J’ai ajouté 2 champs, on se doute :
s.nom pour le nom du client
c.ref pour sa réf de commande

Si j’essaie de filtrer le champs « Text » sur le nom du client en tapant ABC par exemple et n’afficher que les client ayant ABC dans leur nom, ça ne fonctionne pas.
Pourtant le tri A><Z fonctionne.

PS : je n’utilise pas (pour l’instnat MAIN_JQUERY_USE balablabal)

PS : Je suis prêt à faire une explication du type,
« comment écrire une requête pour les nullos »
depuis et avec screenshots de phpmyadmin et de Mylist
pour aider tous ceux dans mon cas :
-J’ai un module, je connais les tables de Dolibarr, j’ai des connaissance en BDD… mais je sais rien en faire sans connaître un peu SQL et comment MyList l’ingère ou le digère :wink:

Pareil, j’ai acheté le module Vendredi, je suis en train de lire la doc !!

Malheureusement la doc ne t’apprendra pas grand chose sur la formulation du SQL…
Par exemple pour LEFT JOIN sur My List et LEFT OUTER JOIN sur OOoBase, etc…

Dur, dur…un pti cours de SQL s’impose ?!

Je suis en train de préparer avec un collègue une formation sur 2 jours autour de mylist et mydoliboard
- la première journée fait la part belle à l’architecture de dolibarr et SQL
- la seconde aux subtilités des deux modules

Normalement il sera possible de suivre uniquement l’un des deux jours…

Pour le SQL c pas un problème même si les syntaxe diffère un peu de mon SqlPlus Oracle…

Mais sur l’architecture de Doli j’essaye de me soigner…

par contre y a des trucs trop bizarre, liste que de 25 elements, les statuts qui ne s’affiche pas sur mon doli mais juste les valeurs…

et là j’avoue pédaler dans la semoule :unhappy:

Dans la doc j’explique comment rapidement retrouver ses petits dans ce joyeux basard
pour les deux anomalies, j’ai prévu de vérifier cela ce soir.

c super comme module en tout cas…mais en modifiant manipulant j’arrive a faire des trucs louches…

heureusement j’avais sauvegardé ma table mylist :happy:

Je me suis d’ailleurs demandé lors de sa réalisation si je n’ouvrais pas une boite de pandore en mettant à disposition un tel module
au final, que son utilisation soit relativement n’est pas une si mauvaise chose que cela…

Et attendez de voir le prochain module…

Un petit retour suite à quelques tests :
par défaut à l’ouverture de la liste, je n’affiche jamais la totalité des enregistrements de la liste (pour éviter de faire exploser le serveur). Le nombre d’enregistrement présenté par défaut était de 25 (correspondant à la limite dans dolibarr des listes), je viens de le passer à 100 (soit 4 pages)
pour accéder à la totalité des lignes, il suffit de saisir un filtre (secret trick : un % dans une zone de texte permet d’afficher la totalité des enregistrements)
Pour l’erreur au niveau du statut, il s’agit d’un bug qui est maintenant corrigé.

Le correctif est déjà en ligne sur le dolistore

PS : pour les amateurs de requête SQL, il y a une astuce pour afficher la requête SQL utilisé par myList : il faut ajouter à la fin de l’url « &sqltest=1 »

c exactement ce que je faisait hier, un petit coup de % dans le premier champs, cool j’etais sur la bonne voie.

merci pour le correctif.

pour info, il y a une petit aide-tooltip à coté des champs de saisie pour préciser les modes de filtrage des champs

Juste une petite question, j’ai crée un extrafields sur mes tiers avec une liste de selection comprenant l’association id,libellé.

Est-il possible de filtrer sur ce champs dans une de mes listes ??

Merci de votre aide.

Oui c’est techniquement possible mais sur le libellé de la liste, le filtrage n’affichera pas une liste déroulante
il faut faire deux jointure et ajouter le champs libellé