Configurateur

Bonjour,

Avez vous déjà utilisé le configurateur, auriez vous une doc ou un début de procédure svp?

Merci d’avance.

Bonjour,

Je suis aussi en train de me pencher sur les configurateurs et je dois dire que le manque de doc se fait cruellement sentir…

si ça peut servir, j’ai réussi à créer un nouveau produit avec les champs simples (name, code, description) remplis à partir de scripts et je veux bien partager mes découvertes.

par contre quand il s’agit de remplir un champ plus complexe comme productCategory, là je cales…
quelqu’un saurait-il faire ? quelle syntaxe est autorisée pour les scripts ?

merci d’avance

Bonjour,

Je suis intéressé par vos explications concernant les configurateurs.
Pourriez vous partager un modèle de scirpt que vous utilisez?

Merci d’avance

voici des exemples tout bêtes:

pour le champ “name” :
name=“Infogérance ” + infog_client
pour le champ achetable:
purchasable=false

pour le champ startDate:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“dd/MM/yyyy”);
startDate = LocalDate.parse(“01/12/2019”,formatter);

ce script de date passe la vérification mais à l’exécution du configurateur il y a un message étrange de conversion de type… pas encore résolue le problème

J’utilise Axelor ABS 5.1.11 et SDK 5.0.19

Bonjour,

Merci pour vos exemples.
Personnellement je fais des devis uniquement sur mesure.
J’ai donc crée un configurateur afin de créer le produit directement depuis un devis client (ajouter une ligne avec un configurateur).

Dans mon configurateur j’ai 4 attributs:
Nom
Code
Prix de vente
Description

Et dans les formules (avec les scripts):
Description (description=description_1)
saleSupplySelect (saleSupplySelect=3)
salePrice (salePrice=salePrice_1)
sellable (sellable=true)
procurementMethodSelect (procurementMethodSelect=“Produce”)
code (code=code_1)
name (Name=name_1)

Lorsque je test le configurateur je peux bien créer le produit.
Mais lorsque je le fais depuis un devis client j’ai un message d’erreur:
“La configuration des taxes est manquante pour le produit: produit test (société: XXX)”

Si vous avez des idées je suis preneur

oui j’ai le même problème. la différence entre le test et le devis semble être que la facturation est activée. Notamment l’onglet Taxe du devis qui nécessite des informations comptables pour etre renseigné.

pour éviter cela il faudrait renseigner le champ accountManagementList du produit créer.
mais je ne sais pas comment faire ça avec les scripts du configurateur.

une autre solution est de renseigner les informations comptables de la société, notamment les comptes clients et de taxes par défaut en créant un plan comptable et en paramétrant tout le module compatbilité.
Pour moi ça a suffit pour me débarasser de l’erreur mais ça demande une configuration un peu plus profonde.

Pour la configuration des info comptable, c’est bien dans “config applicative>sociétés>config des comptes comptables”?
Parce que la dedans il me semble que j’ai bien tout paramétré.

effectivement c’est pareil chez moi. ça marchait en test avant d’installer l’app comptabilité.
Cependant même si le configurateur plante le produit est créé tout de même.
on peut alors le modifier manuellement en ajoutant une configuration dans l’onglet comptabilité du produit. Ce n’est pas terrible je sais mais l’idéal serait de renseigner le champ accountManagementList à la création du produit depuis le configurateur.

je continue de tâtonner pour voir comment faire ça en script…
s’il y a du nouveau de votre coté je suis preneur.

Pour passer outre les limitations du configurateur, j’ai crée un produit avec le minimum d’information.
Puis je crée un devis avec ce produit, et c’est dans le libellé que je mets le nom qui va apparaître sur le devis, le prix etc…
Je ne vois pas ce qui bloque avec le configurateur.

Un léger avancement :
dans le configurateur pour demander les taxe, il faut creer un attribut, type manytoone, et dans option mettre widget : suggestbox, modèle cible “com.axelor.apps.account.db.TaxLine”.

Maintenant je n’arrive pas a faire rentrer cette valeur dans l’objet devis.

Voici la solution donnée par l’équipe d’Axelor:

Il faut d’abord créer une famille de produit qui contient toutes les configurations comptables nécessaires (config applicative --> referentiel–>etc.).

Ensuite dans le configurateur:
dans “champ produit” choisir “productFamily”, dans “formule” écrire : repo(ProductFamily).all().filter(“self.code = ‘EQPT’”).fetchOne() et remplacer EQPT par le code de la famille.

super.

voici le morceau de code qui me manquait ! merci pour le partage.
je pense qu’il manque encore les déclarations de début. Elles n’étaient pas dans la réponse d’axelor ?

pas beaucoup de succès en recopiant exactement la formule. la fonction repo ne semble pas connue:

2020-01-16 17:31:36.213 ERROR 59 — [nio-8080-exec-9] com.axelor.script.GroovyScriptHelper : Script error: productFamily=repo(ProductFamily).all().filter(“self.code = ‘INFOG’”).fetchOne()
groovy.lang.MissingMethodException: No signature of method: script1579195793180741056573.repo() is applicable for argument types: (java.lang.Class) values: [class com.axelor.apps.base.db.ProductFamily]

Pour être tout à fait exact, dans mon cas la ligne n’est pas crée, mais le produit oui. Donc ensuite je dois ajouter le produit dans le devis. Il doit surement être possible de créer le produit et la ligne de devis en même temps mais je n’ai pas encore la réponse.

Dans mon cas, dans “familles comptables de produits”, j’ai un nom famille “produit fini”, code “PRODF”.
Celui-ci est paramétré de cette manière:
société
“Ma Société”

catégorie d’immo
vide

compte comptable a l’achat
“602000 - Achats stockés - Autres approvisionnements”

TVA à l’achat
“TVA Déd. (A) taux normal”

compte compt à l’achat d’immo
vide

compte comptable à la vente
“701000 - Ventes de produits finis”

TVA à la vente
“TVA Coll. (V) taux normal”

modèle de répartition…
vide

Mon modèle de configurateur, partie “liste des formules” est paramétré de cette manière:

champs produit “productFamily”
formule: “repo(ProductFamily).all().filter(“self.code = ‘PRODF’”).fetchOne()”

merci pour ces précisions. ça ne semble pas marcher chez moi.
J’ai paramétré comme cela mais la vérification du script échoue et le champ famille n’est pas renseigné dans le produit. quel version d’Axelor avez-vous ? je suis sur ABS 5.1.11 et SDK 5.0.19

une fois la famille ajoutée je pourrai tester l’ajout de la ligne produit dans le devis

Bonjour,

La syntaxe n’est pas exacte en raison de la mise en forme automatique du texte par l’éditeur html du forum. Il faudrait remplacer “repo” par __repo__.

Cordialement

ah oui, tout simplement.
merci de cette clarification!!

ça marche super maintenant

Maintenant que la création du produit fonctionne aussi je confirme que pour moi non plus la fonction “ajout d’une nouvelle ligne avec un configurateur” crée le produit mais ne l’insère pas automatiquement dans le devis.
C’est étonnant mais assez peu gênant au final.

merci pour cette collaboration qui m’a permis d’avancer!

J’ai réussi a jouter la création d’une nomenclature et d’une gamme avec la création du produit par le configurateur.
Mais je ne vois pas comment on ajoute des composants dans la nomenclature, ni des phases dans la gamme.
Est ce qu’il faut mettre les composants dans la partie conditions de la nomenclautre?

J’ai bien avancé sur le sujet des configurateurs, notamment grâce à un technicien de axelor.
Je vous fais part de mes avancés.

Pour ajouter des composants dans la nomenclature, il faut savoir que le nombre de composants est fixé. Il n’est pas (encore) possible de créer un nomenclature avec un nombre variable de composant.

Dans mon cas, nous utilisons toujours de la matière première, j’ai donc crée une nomenclature avec un seul composant.

Pour le sélectionner il faut créer un attribut, avec par ex comme nom “mat_premiere”, mettre comme type “ManyToOne”, modèle cible, “com.axelor.apps.base.db.Product”. Cela va créer une liste avec tous les produits.

On peut affiner cette liste en mettant un filtre, pour cela, dans domaine, " self.productFamily.code=‘code_famille’ " où code famille est votre code de famille produit.

Ensuite, en bas de la partie nomenclature, il y a “configurateurs de nomenclature”, il faut en ajouter un (bouton +). Puis dans libellé, definir avec un script : “mat_premiere.name”, produit definir avec un script, etc. Par exemple pour les unités on peut mettre “mat_premiere.unit”.

Pour la partie gamme, il n’est ici aussi, pas (encore) possible de créer des gammes avec un nombre de phases variables.

Dans mon cas j’ai donc créer un configurateur de gamme avec le maximum de phases possible. C’est à dire que c’est la production qu’un produit le plus complexe va suivre, un produit moins complexe aura des étapes en moins.

Dans le configurateur (produit) il faut créer des attributs de temps que l’on va transmettre au configurateur de gamme.

Pour cela il faut mettre comme attribut, nom par exemple “temps_phase1”, type “nombre entier”, widget “duration”.

Dans la partie nomenclature, il y a un espace “gamme”, cocher “définir avec un configurateur”, et choisir le configurateur de gamme précédemment crée.

Dans le configurateur de gamme, dans la phase1, partie parametrages capacité, durée / cycle (hh:mm), cocher définir avec un script : “temps_phase1”.

Voila ce que j’ai appris, j’espère que ça vous servira. A noter que les attribut type “séparateur” permettent de créer des…séparateurs et donc d’organiser plus clairement votre configurateur.

1 J'aime

Bonjour,
Par hasard, je recherche à filtrer mes produits selon le code famille et selon un attribut défini avant, j’ai la syntaxe suivante mais j’ai une erreur, des idées?
Domaine
self.productCategory.code = ‹ IWONA › and self.name like %type_3%

type_3 étant un attribut défini précédemment