Plantons le décor :
Vous avez besoin de rentrer des catégories rapidement dans le logiciel TinyERP (TinyERP). Pour ce faire, vous avez plusieurs possibilités :
- Lancer le client TinyERP et entrer les catégories à la main à l'aide du logiciel
- Ecrire un fichier XML contenant la description des catégories que vous appelerez lors du lancement du serveur TinyERP
Chez Azolia, on trouvait ça un peu limité car ces 2 métodes on leurs inconvénients :
- Créer les catégories à la main dans Tiny... c'est fastidieux
- Créer un fichier XML contenant les catégories est ... encore plus long et fastidieux
C'est pourquoi nous souhaitons vous faire part d'une petite découverte sympathique. Vous connaissez peut-être le logiciel Freemind.
Freemind est un logiciel très intuitif permettant de rapidement créer des cartes mentales (schémas, diagrammes) sous la forme de représentation arborescente.
Une fonctionnalités intéressante de Freemind réside dans le fait qu'il stocke l'information sous la forme d'un fichier XML. De plus, il permet directement l'export de ses données via la transformation de son fichier de données XML par une feuiller de stle XSL.
Lorsqu'on a beaucoup de catégories (la capture d'écran présentée ici contient un cas bien réel avec plus de 500 catégories), Freemind peut s'avérer être un outils puissant pour organiser ces catégories.

Qu'à cela ne tienne ! Nous avons donc créé une simple feuille de style permettant de transformer le fichier XML de Freemind vers un fichier propre à TinyERP (transformation de XML vers XML via XSL).
Nous mettons aujourd'hui en ligne cette feuille de style car elle permet de gagner du temps lors de la création d'une arborescence de catégories de produits pour tinyERP. De plus, en la modifiant un peu, on pourrait facilement l'adapter pour entrer d'autres informations que les catégories comme par exemple les partenaires ou autres... La nouvelle version de Freemind (0.90) permettra d'ajouter des attributs aux noeuds, on pourra donc bien s'amuser avec cette version. A suivre donc.
Pour utiliser cette feuille de style voici quelques directives :
- Appelez le noeud racine "categories" dans freemind
- Exportez votre dessin freemind en choisissant la feuille de style xsl
Une fois le fichier XML créé en sortie par Freemind, il ne vous reste plus qu'a le charger lors du démarrage du serveur TinyERP. Pour ce faire, reportez vous à la doc tinyERP et la création de module (si vous êtes arrivé ici, vous devez probablement savoir faire ce genre de manipulation).
Voici la feuille de style :
<?xml version="1.0" encoding="utf-8"?> <!-- Copyright (c) 2008 Azolia Services. (http://www.azolia.fr) All Rights Reserved. WARNING: This program as such is intended to be used by professional programmers who take the whole responsability of assessing all potential consequences resulting from its eventual inadequacies and bugs End users who are looking for a ready-to-use solution with commercial garantees and support are strongly adviced to contract a Free Software Service Company This program is Free Software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <terp><data> <xsl:call-template name="print_node"> <xsl:with-param name="current_node" select="."/> </xsl:call-template> </data></terp> </xsl:template> <xsl:template name="print_node"> <xsl:param name="current_node"/> <xsl:variable name="parent"> <xsl:if test="not(../@ID)">null</xsl:if> <xsl:if test="../@ID"><xsl:value-of select="../@ID"/></xsl:if> </xsl:variable> <xsl:if test="../@TEXT = 'categories'"> <record model="product.category" id="{@ID}"> <field name="parent_id" ref="null"/> <field name="name"><xsl:value-of select="@TEXT"/></field> </record> </xsl:if> <xsl:if test="../@TEXT != 'categories'"> <record model="product.category" id="{@ID}"> <field name="parent_id" ref="{$parent}"/> <field name="name"><xsl:value-of select="@TEXT"/></field> </record> </xsl:if> <xsl:for-each select="$current_node/*"> <xsl:call-template name="print_node"> <xsl:with-param name="current_node" select="."/> </xsl:call-template> </xsl:for-each> </xsl:template> </xsl:stylesheet>











