myBroadcast : création et transfert de fichier csv

Nous venons de diffuser un nouveau module permettant de créer un fichier csv à partir d’une simple requete SQL et de la transmettre ensuite par FTP et/ou mail.
Une fois le paramétrage de génération et d’envoie réalisé,

configuration1.png

un bouton apparaît sur l’élément (facture, commande, expédition…) permettant d’envoyer le fichier.

prsentation.png

Bon j’avoue que c’est une commande de développement d’un de mes intégrateurs et je ne sais pas trop à qui / quoi cela peut servir mais cela semblait intéresser pas mal de personnes à chaque fois que j’en parlais…
Disponible sur le dolistore pour 12€ HT: https://www.dolistore.com/fr/outils-systemes/913-myBroadcast---G--n--ration-et-envoie-de-fichier-logistique.html

Pour ceux qui suivent nos créations, ce sera le dernier « petit » module de l’année, car j’ai deux gros modules orienté RH qui sont en cours de développement et vont bien me monopoliser le reste de l’année avec les maintenances et évolutions de notre trentaine de modules.
A titre d’info il est probable que certains soit bientôt libéré dans le core, afin de garder un volume de module « supportable » en terme de maintenance.

1 « J'aime »

Top !

Est-ce qu’il est possible de placer une requête comma celle ci ?

SELECT DISTINCT s.code_client as s_code_client, s.nom as s_nom, s.default_lang as s_default_lang, s.address as s_address, s.zip as s_zip, s.town as s_town, c.code as c_code, s.phone as s_phone, s.tva_intra as s_tva_intra FROM llx_societe as s LEFT JOIN llx_c_country as c on s.fk_pays = c.rowid LEFT JOIN llx_facture as f ON f.fk_soc = s.rowid LEFT JOIN llx_projet as pj ON f.fk_projet = pj.rowid LEFT JOIN llx_user as uc ON f.fk_user_author = uc.rowid LEFT JOIN llx_user as uv ON f.fk_user_valid = uv.rowid LEFT JOIN llx_facture_extrafields as extra ON f.rowid = extra.fk_object LEFT JOIN llx_facturedet as fd ON fd.fk_facture = f.rowid LEFT JOIN llx_facturedet_extrafields as extra2 on fd.rowid = extra2.fk_object LEFT JOIN llx_product as p on (fd.fk_product = p.rowid) LEFT JOIN llx_product_extrafields as extra3 on p.rowid = extra3.fk_object LEFT JOIN llx_societe_commerciaux as sc ON sc.fk_soc = s.rowid LEFT JOIN llx_user as u ON sc.fk_user = u.rowid WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture AND f.entity IN (1)

?

Oui,
Ajoute juste " AND f.rowid=#ROWID# " afin de limiter le fichier à ta seule facture
Sinon je travail déjà sur une évolution pour interfacer ce nouveau module à myList et myDoliboard …

1 « J'aime »

Effectivement lorsque je colle la requête comme cela, cela ne va pas.
j’ai le retour :

Access refused by SQL/Script injection protection in main.inc.php (type=0 key=sqlquery value=SELECT DISTINCT s.code_client as s_code_client, s.nom as s_nom, s.default_lang as s_default_lang, s.address as s_address, s.zip as s_zip, s.town as s_town, c.code as c_code, s.phone as s_phone, s.tva_intra as s_tva_intra FROM llx_societe as s LEFT JOIN llx_c_country as c on s.fk_pays = c.rowid LEFT JOIN llx_facture as f ON f.fk_soc = s.rowid LEFT JOIN llx_projet as pj ON f.fk_projet = pj.rowid LEFT JOIN llx_user as uc ON f.fk_user_author = uc.rowid LEFT JOIN llx_user as uv ON f.fk_user_valid = uv.rowid LEFT JOIN llx_facture_extrafields as extra ON f.rowid = extra.fk_object LEFT JOIN llx_facturedet as fd ON fd.fk_facture = f.rowid LEFT JOIN llx_facturedet_extrafields as extra2 on fd.rowid = extra2.fk_object LEFT JOIN llx_product as p on (fd.fk_product = p.rowid) LEFT JOIN llx_product_extrafields as extra3 on p.rowid = extra3.fk_object LEFT JOIN llx_societe_commerciaux as sc ON sc.fk_soc = s.rowid LEFT JOIN llx_user as u ON sc.fk_user = u.rowid WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture AND f.entity IN (1) page=/erp/mybroadcast/admin/setup.php)

vous pourrez me faire un copier coller de l’ensemble avec le : AND f.rowid=#ROWID# ?

C’est ma requête qui n’est pas bonne… j’ai testé avec une autre et la publication ftp se fait bien ! mais je ne récupère que les titres de colonne dans l’exemple : #SEL# * from llx_propaldet where fk_propal = #ROWID#

Cela dit, je préconiserais de ne savoir utiliser le bouton « envoyer fichier logistique » qu’une seule fois (qu’il devient inactif pour éviter double message logistique" avec une inscription dans les événements (qui et quand à cliqué sur le bouton) . dans l’idée d’améliorer ce bon travail.

Bravo

Bonjour Johan, le blocage du bouton d’envoie est me semble pas pertinent, en particulier si les informations changent après le premier envoie #lavraivie
Pour ce qui est d’inscrire un événement d’envoie c’est à l’étude (comme beaucoup de chose sur ce module …)

Bjr,
Oui c’est vrai qu’il serait possible de devoir envoyer de nouveau le message dans certain cas.

Dans mon cas, j’aimerai que lorsqu’on clique sur ce bouton que cela envois un listing de plusieurs commande lancée pour préparation commande au centre logistique.
Donc ma requête est faite avec le module export commande ou je reprends exactement ce que j’ai besoin. (donc l’exporte le csv et le publie sur un ftp à la mano)

Donc votre module me ferait gagner bcp de temps.
Ma question est:

si je fait un copier coller de la requête de l’export actuel, pourquoi cela ne fonctionne pas ? dans ma requête il y a plusieurs commandes clients.

La requête doit être faite différemment ? (exemple le requête du debut de post
;o)

broadcast fonctionne par élément unique, pour le moment, mais propable que les hook sur les listes permettent de changer cela dans un avenir proche.
En attendant, je viens de poser une version 1.0.1 qui ajoute la création d’un événement
pour le moment je ne bloque pas un nouvel envoie logistique si il y a un événement de créer mais cela peu etre une piste, un nouveau paramétrage pour a suite.

1 « J'aime »

Bonjour,

Merci pour ton retour,

Dans mon cas, l’idée serait de construire le .csv sur base d’une requête et que, chaque fois que l’on clic si le bouton, donc publier sur ftp via le module --> l’entièreté des commandes clients validées et lignes de commandes relatives, tout client confondu (la liste des préparations commande du jour) en un seul fichier ! (actuellement je le fais par l’outils export.)

est ce que je dois conclure d’attendre un peu que le module évolue pour mon besoin ?

Oui il est rare que mes modules n’évoluent pas, se bonifie avec le temps
Dans le cas concret cela passera par une liaison avec myList

1 « J'aime »