ofbiz-framework issueshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues2020-05-25T16:09:11Zhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/136Eviter les erreurs dans les logs au premier chargement des web.xml2020-05-25T16:09:11ZPierre GaudinEviter les erreurs dans les logs au premier chargement des web.xmlla reprisePierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/1Résolution des URI ‘/collection/{id}’2018-10-28T15:44:26ZMathieu LirzinRésolution des URI ‘/collection/{id}’La méthode `RequestHandler::resolveURI` est responsable de la résolution entre le "path" de la requête HTTP et la `request-map` correspondante. Afin de pouvoir accéder à des ressources en suivant un style REST (.i.e sans appel de procéd...La méthode `RequestHandler::resolveURI` est responsable de la résolution entre le "path" de la requête HTTP et la `request-map` correspondante. Afin de pouvoir accéder à des ressources en suivant un style REST (.i.e sans appel de procédure distant explicite) il est important de pouvoir définir des templates d'URI de type `/collection/{id}`.
* [X] Regarder comment [Apache Camel REST DSL](https://camel.apache.org/rest-dsl.html) fait cette résolution
* [X] Regarder comment [Apache CXF](https://cxf.apache.org/docs/restful-services.html) fait la résolution pour son support de [JAX-RS](https://cxf.apache.org/docs/jax-rs.html).
Il apparait que Apache CXF fournit la classe [`org.apache.cxf.jaxrs.model.URITemplate`](https://cxf.apache.org/javadoc/latest/org/apache/cxf/jaxrs/model/URITemplate.html) qui correspond à notre besoin et est basé sur les API standards de la spécificiation JAX-RS.
* [x] Remplacer l'utilisation de [`org.apache.commons.collections4.MultiValuedMap`](https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/MultiValuedMap.html) par [`javax.ws.rs.core.MultivaluedMap`](https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/MultivaluedMap.html) qui est déjà utilisé par JAX-RS.
* [x] Associer des `URITemplate` aux `request-map` pour la résolution d'URI
* [x] En fonction du motif avec lequel s'est fait la correspondance avec le path effectif, ajouter les valeurs associées aux variables dans les paramètres de la requête HTTP.Prototypage RESTMathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/115Decryptage d'un champs dans une vue de vue2019-05-29T19:00:50ZNicolas MalinDecryptage d'un champs dans une vue de vueLors du decryptage d'un champs, si nous sommes sur une vue, ofbiz récupère le model de l'entité liée mais ne regarde pas si celle ci est aussi une vue et donc échoue en récupérant la clé de décryptage.
[0FBIZ-11078](https://issues.apache...Lors du decryptage d'un champs, si nous sommes sur une vue, ofbiz récupère le model de l'entité liée mais ne regarde pas si celle ci est aussi une vue et donc échoue en récupérant la clé de décryptage.
[0FBIZ-11078](https://issues.apache.org/jira/browse/OFBIZ-11078)Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/54Gestion globalisé de l'affichage de format des nombres (OFBIZ-7532)2019-08-23T14:36:55ZNicolas MalinGestion globalisé de l'affichage de format des nombres (OFBIZ-7532)Pouvoir lors d'affichage de nombre que ce soit en ftl, widget ou via UtilFormatOut, utiliser de manière homogène les mêmes type de formatage de nombre suivant le context.Pouvoir lors d'affichage de nombre que ce soit en ftl, widget ou via UtilFormatOut, utiliser de manière homogène les mêmes type de formatage de nombre suivant le context.Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/133Fix multi modal opening2020-05-25T16:09:11ZGil PortenseigneFix multi modal openingWhen opening a modal with a lookup, closing it and opening it again, this error happens :
To reproduce :
The issue is that when closing the modal the div inside html dom is not removed. Then opening a second time create another ident...When opening a modal with a lookup, closing it and opening it again, this error happens :
To reproduce :
The issue is that when closing the modal the div inside html dom is not removed. Then opening a second time create another identical div.
Since a lookup is based on an unique id, this id is no more unique...
Attached patch fix the issuela reprisehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/93Amélioration: Ajouter les communications de commandes2019-10-04T12:54:44ZNicolas MalinAmélioration: Ajouter les communications de commandesVoir sur le projet decath:
On ajoute une liste de communications liés a la commande sur la page de detail d'une commande (orderview) afin de suivre les demandes mails/telephone/etc liées a la commande
Le code se trouve sur PRO20200
htt...Voir sur le projet decath:
On ajoute une liste de communications liés a la commande sur la page de detail d'une commande (orderview) afin de suivre les demandes mails/telephone/etc liées a la commande
Le code se trouve sur PRO20200
https://labs.nereide.fr/10923/PRO20200
Add a discussion feature in order detail view for following communication about the order (mail, phone etc.)
![orderComm1](/uploads/532a36f5ecff4f162f1962bbc462b49a/orderComm1.png)
![orderComm2](/uploads/d279bdefbace9a9586804e1e5389f8fd/orderComm2.png)
![orderComm3](/uploads/0f5018133d083f3fd7eee167fa3f0cb7/orderComm3.png)la reprisehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/51Implements a proper way to reset password for a OFBiz user (OFBIZ-4361)2020-04-10T16:22:58ZGil PortenseigneImplements a proper way to reset password for a OFBiz user (OFBIZ-4361)Today, there was two proposal into OFBiz Jira : https://issues.apache.org/jira/browse/OFBIZ-4361, this task is to help review and complete these improvements
## **Idea using JWT :**
To remain simple with password update without adding...Today, there was two proposal into OFBiz Jira : https://issues.apache.org/jira/browse/OFBIZ-4361, this task is to help review and complete these improvements
## **Idea using JWT :**
To remain simple with password update without adding much code into the codebase, we would like to propose a new idea as a first simple step.
Improve the `service engine` to allow the usage of `JWT token` to **execute a given service as an authenticated user**.
The JWT token is generated by OFBiz with its secret and contains into the data payload the allowed `serviceName` and the `userLoginId`.
## Given the following usecase :
A user ask for a new password giving his userlogin id.
A mail is sent with a link containing the JWT toke with the `serviceName` **updatePassword** and the `userLoginId` into the data payload and a target to an OFBiz *no auth required* web page described below
The user access through the link to the webpage that present a form containing :
* the JWT in its hidden parameters
* a field asking the new password
* a submit button.
The validation of this form will call the **updatePassword** service.
Since the user is *not authenticated*, the `service engine` will look into parameters if token exists and will validate it. Else authentication is required...
If a serviceName exists in the data and equals to the called one, other data from the JWT payload are added to the IN attributes.
_____
That will simply allow a basic updatePassword process in trunk, that can be extended easily customizing url target and serviceName for adding verification and so on.
Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/129Modification de la condition dans SqlJdbcUtil, pour permettre de creer un vie...2020-05-25T16:09:11ZLeila MekikaModification de la condition dans SqlJdbcUtil, pour permettre de creer un view-link avec une entity-condition uniquementNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/53Gestion des EECAS dans le removeByAnd2019-05-24T15:21:16ZLeila MekikaGestion des EECAS dans le removeByAndActuellement, on ne contrôle pas les EECAS quand on appelle delegator.removeByAnd ou delegator.removeByCondition.
On pourrait ajouter un contrôle dans ces méthodes pour faire un remove individuel des résultats (via removeValue, qui chec...Actuellement, on ne contrôle pas les EECAS quand on appelle delegator.removeByAnd ou delegator.removeByCondition.
On pourrait ajouter un contrôle dans ces méthodes pour faire un remove individuel des résultats (via removeValue, qui checke les EECA) uniquement lorsqu'il existe au moins un EECA sur l'entité
Issue OFBiz [OFBIZ-11040](https://issues.apache.org/jira/browse/OFBIZ-11040)Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/32Extraction des vérification de certificats SSL dans le ‘RequestHandler’2019-03-02T10:33:28ZMathieu LirzinExtraction des vérification de certificats SSL dans le ‘RequestHandler’La méthode `doRequest` est massive et mérite d'être découpé. Ceci est un premier réusinage dans ce sens.
Ticket [OFBIZ-10450](https://issues.apache.org/jira/browse/OFBIZ-10450) ouvert.La méthode `doRequest` est massive et mérite d'être découpé. Ceci est un premier réusinage dans ce sens.
Ticket [OFBIZ-10450](https://issues.apache.org/jira/browse/OFBIZ-10450) ouvert.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/30‘EntityOperator#getId()’ n'est pas utilisé dans le framework.2019-03-02T10:33:21ZMathieu Lirzin‘EntityOperator#getId()’ n'est pas utilisé dans le framework.Voir description faîte sur le ticket [OFBIZ-10607](https://issues.apache.org/jira/browse/OFBIZ-10607).Voir description faîte sur le ticket [OFBIZ-10607](https://issues.apache.org/jira/browse/OFBIZ-10607).https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/36Utilisation de ‘String#equalsIgnoreCase’ dans ‘RequestHandler’2020-02-28T13:27:02ZMathieu LirzinUtilisation de ‘String#equalsIgnoreCase’ dans ‘RequestHandler’voir description faîte dans le ticket [OFBIZ-10451](https://issues.apache.org/jira/browse/OFBIZ-10451)voir description faîte dans le ticket [OFBIZ-10451](https://issues.apache.org/jira/browse/OFBIZ-10451)https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/40L'abstraction ‘StartupLoader’ est surfaîte2019-02-21T13:31:58ZMathieu LirzinL'abstraction ‘StartupLoader’ est surfaîteSur la mailing list de développement de OFBiz, Taher a fait part du fait que l'interface `StartupLoader` n'avait plus de sens dans la mesure où elle ne possède qu'une seule implémentation qui est `ContainerLoader`.Sur la mailing list de développement de OFBiz, Taher a fait part du fait que l'interface `StartupLoader` n'avait plus de sens dans la mesure où elle ne possède qu'une seule implémentation qui est `ContainerLoader`.Mathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/2Support des méthodes HTTP2019-10-17T08:26:07ZMathieu LirzinSupport des méthodes HTTPActuellement les requête HTTP POST et GET sont traités de la même manière et les autres méthodes HTTP (PUT, DELETE, ...) ne sont pas supportés. De plus il n'est pas possible d'associer un handler spécifique par méthode HTTP. Pour cela I...Actuellement les requête HTTP POST et GET sont traités de la même manière et les autres méthodes HTTP (PUT, DELETE, ...) ne sont pas supportés. De plus il n'est pas possible d'associer un handler spécifique par méthode HTTP. Pour cela Il devrait être possible de définir des `request-map` en utilisant la syntaxe suivante:
```xml
<request-map uri="examples" method="get">
<security https="true" auth="true"/>
<event type="java" path="ExamplesHandlers" invoke="getExamples"/>
<response name="success" type="view" value="..."/>
<response name="error" type="view" value="..."/>
</request-map>
<request-map uri="examples" method="post">
<security https="true" auth="true"/>
<event type="java" path="ExamplesHandlers" invoke="postExamples"/>
<response name="success" type="view" value="..."/>
<response name="error" type="view" value="..."/>
</request-map>
```Prototypage RESTMathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/31Remplacement des instantiations des objets ‘Callable’ par des lambdas2018-12-11T13:39:27ZMathieu LirzinRemplacement des instantiations des objets ‘Callable’ par des lambdasVoir description faite sur le ticket [OFBIZ-10488](https://issues.apache.org/jira/browse/OFBIZ-10488).Voir description faite sur le ticket [OFBIZ-10488](https://issues.apache.org/jira/browse/OFBIZ-10488).https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/39Réusinage et documentation de ‘EntityCondition’2022-12-30T15:55:16ZMathieu LirzinRéusinage et documentation de ‘EntityCondition’L'organisation de la hiérarchie de classe `EntityConditionBase` mériterait d'être repensée. Premièrement elle fait un usage abusif de l'héritage avec pour unique objectif de partager du code. Le diagramme suivant représente la hiérarchie...L'organisation de la hiérarchie de classe `EntityConditionBase` mériterait d'être repensée. Premièrement elle fait un usage abusif de l'héritage avec pour unique objectif de partager du code. Le diagramme suivant représente la hiérarchie de classes actuelle:
```mermaid
graph BT
EntityCondition-->EntityConditionBase
EntityOperator-->EntityConditionBase
EntityConditionValue-->EntityConditionBase
```
Il faut dans premier temps séparer `EntityCondition`, `EntityConditionValue`, et `EntityOperator` en trois hiérarchies différentes:
- [x] Vider la classe `EntityConditionBase`
- [x] Supprimer l'héritage
La deuxième étape consiste à refactoriser et documenter `EntityCondition`:
- [x] Transformer `EntityCondition` en interface
- [x] Remplacer la classe `EntityConditionFunction` par `EntityNotCondition`
- [x] Supprimer le code mort
- [x] Écrire la javadoc
On laisse de coté la refactorisation/documentation de `EntityOperator` et `EntityConditionValue` pour un autre ticketYolande et remontée de codeGil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/45Objectif 0 warnings!2018-12-11T13:39:21ZMathieu LirzinObjectif 0 warnings!Avoir une longue liste d'avertissements de compilation (warnings) n'est pas une bonne chose car cela empêche de voir clairement lorsque l'on en introduit un nouveau, et donc favorise l'ajout d'erreurs par les développeurs.
OFBiz possède...Avoir une longue liste d'avertissements de compilation (warnings) n'est pas une bonne chose car cela empêche de voir clairement lorsque l'on en introduit un nouveau, et donc favorise l'ajout d'erreurs par les développeurs.
OFBiz possède actuellement 198 warnings (selon Eclipse) qui peuvent (avec un peu d'huile de coude) être rapidement corrigés (Absence de typage générique, import inutiles, ...).
Pour connaître la listes de tous les avertissement la commande `./gradlew -PXlint build` permet compiler sans masquer les warnings.Redéfinition des besoins et remontée de codeMathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/46Connexion de la recherche globale sur un décorateur2019-07-16T13:51:41ZAntoine OuvrardConnexion de la recherche globale sur un décorateurLe but est de pouvoir utiliser la recherche globale sur le thème en fonction du contexte.
Le décorateur doit donc pouvoir positionner le lookup d'aide à la saisie dans le champ de recherche globale en fonction de l'écran dans lequel est ...Le but est de pouvoir utiliser la recherche globale sur le thème en fonction du contexte.
Le décorateur doit donc pouvoir positionner le lookup d'aide à la saisie dans le champ de recherche globale en fonction de l'écran dans lequel est positionné l'application.
De la même manière le formulaire de recherche sera différent en fonction du contexte.
Par exemple : Lorsque l'utilisateur est sur l'écran d'un produit (catalog/control/EditProduct) et qu'il saisie dans la recherche globale, le lookup d'aide à la recherche affichera les produits et la validation de sa recherche vers la liste de résultat (catalog/control/FindProduct).
Lorsque l'utilisateur est sur l'écran d'une catégorie (catalog/control/EditProdCatalog), la recherche globale recherchera dans les catégories.
Bonne Année 2019Antoine OuvrardAntoine Ouvrardhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/22Redirection automatique sur fiche 'objet' si la recherche retourne un seul ré...2019-07-16T13:51:09ZGil PortenseigneRedirection automatique sur fiche 'objet' si la recherche retourne un seul résultat (ex: recherche produit) (13)Nous avons détecté trois solutions possibles.
Traitement au niveau :
1. du décorator du FindScreenDecorator
**AVANTAGE**
Ciblage de la fonctionnalité sur le décorateur
Aucune modification du modèle
possibilité d'étendr...Nous avons détecté trois solutions possibles.
Traitement au niveau :
1. du décorator du FindScreenDecorator
**AVANTAGE**
Ciblage de la fonctionnalité sur le décorateur
Aucune modification du modèle
possibilité d'étendre la logique a tout les écrans
**INCONVENIENT**
Obligation de réalisr la recherche dans le screen ou dans l'event (la recherche doit etre réalisé en amont)
Récupération de la liste impossible car pas encore dans le contexte
Définition dynamique géré dans le décorator
2. des actions du form des résultats de la liste
**AVANTAGE**
traitement "en bout de chaine"
peut etre appliqué pour d'autre cas
**INCONVENIENT**
modification du moteur de modele de form
surcharge de la cible form par un screen complexe (peut etre en conflit avec les bonne pratiques de screen)
3. form qui rappel le controle via js
**AVANTAGE**
pas de modification du model
**INCONVENIENT**
traitement serveur inutile, pour regénérer d'autres pages
![IMG_20181120_161301](/uploads/b9aac1c874714b08bfdfe9b3d7cdf510/IMG_20181120_161301.jpg)Redéfinition des besoins et remontée de codeAntoine OuvrardAntoine Ouvrardhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/44[#22] Réaliser l'exemple 12020-04-10T16:22:58ZAntoine Ouvrard[#22] Réaliser l'exemple 1Modification du FindScreenDecorator de InvoiceModification du FindScreenDecorator de InvoiceRedéfinition des besoins et remontée de codeAntoine OuvrardAntoine Ouvrardhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/38Inliner la méthode ‘ControlServlet#getRequestHandler’2018-11-18T10:32:45ZMathieu LirzinInliner la méthode ‘ControlServlet#getRequestHandler’https://issues.apache.org/jira/browse/OFBIZ-10445https://issues.apache.org/jira/browse/OFBIZ-10445https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/35Surcharge de méthode inutile dans ‘RequestHandler’2020-02-28T13:27:02ZMathieu LirzinSurcharge de méthode inutile dans ‘RequestHandler’Voir description faîte dans le ticket [OFBIZ-10452](https://issues.apache.org/jira/browse/OFBIZ-10452)Voir description faîte dans le ticket [OFBIZ-10452](https://issues.apache.org/jira/browse/OFBIZ-10452)https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/43Simplification de la gestion des callbacks de service2018-11-18T10:32:01ZMathieu LirzinSimplification de la gestion des callbacks de servicehttps://issues.apache.org/jira/browse/OFBIZ-10649https://issues.apache.org/jira/browse/OFBIZ-10649https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/6Bandeau d'incarnation à rendre joli et internationalisé2018-10-17T07:35:27ZGil PortenseigneBandeau d'incarnation à rendre joli et internationaliséL'impersonalisation ajoute un bandeau dans les différents thème, qui n'est pas très Joli? L'idée est de trouver une solution pour chacun des thèmes, et par la même utiliser des labels plutot qu'un message en dur.
Le code à modifier :
...L'impersonalisation ajoute un bandeau dans les différents thème, qui n'est pas très Joli? L'idée est de trouver une solution pour chacun des thèmes, et par la même utiliser des labels plutot qu'un message en dur.
Le code à modifier :
https://labs.nereide.fr/10031/Communautaire/commit/acfda7ed43611286c2d4d17488ea3e62fa969ef3Julien NicolasJulien Nicolashttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/9Surcharge de la structure d'un menu par le thème : OFBIZ-106002018-10-17T08:51:24ZGil PortenseigneSurcharge de la structure d'un menu par le thème : OFBIZ-10600https://issues.apache.org/jira/browse/OFBIZ-10600https://issues.apache.org/jira/browse/OFBIZ-10600Améliorations UI et migration GroovyJulien NicolasJulien Nicolashttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/41extraction des migrations de createQuoteWorkEffort et deleteQuoteWorkEffort v...2020-05-25T16:09:11ZGil Portenseigneextraction des migrations de createQuoteWorkEffort et deleteQuoteWorkEffort vers entity-autoExtraction des migrations de createQuoteWorkEffort et deleteQuoteWorkEffort vers entity-autoExtraction des migrations de createQuoteWorkEffort et deleteQuoteWorkEffort vers entity-autoClôture des tâches anciennesNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/111Gestion des flux en communication2019-05-24T08:50:08ZNicolas MalinGestion des flux en communicationAntoine OuvrardAntoine Ouvrardhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/24Migration Groovy QuoteServices2018-12-27T14:45:24ZGil PortenseigneMigration Groovy QuoteServices#### Contexte
L'usage du minilang est déprécié ([OFBIZ-9350](https://issues.apache.org/jira/browse/OFBIZ-9350)) et doit être remplacé par Groovy. Les services manipulant les devis (*quotes*) sont toujours implémentés en minilang.
#### O...#### Contexte
L'usage du minilang est déprécié ([OFBIZ-9350](https://issues.apache.org/jira/browse/OFBIZ-9350)) et doit être remplacé par Groovy. Les services manipulant les devis (*quotes*) sont toujours implémentés en minilang.
#### Objectifs
1. [x] Migrer le service `checkUpdateQuoteStatus`
+ [x] Convertir le code
+ [x] Créer le test fonctionnel
2. [x] Migrer le service `getNextQuoteId`
+ [X] Convertir le code
+ [X] Relecture du code
+ [x] Migrer le test xml
3. [x] Migrer le service `quoteSequenceEnforced`
+ [X] Convertir le code
+ [X] Relecture du code
+ [x] Créer le test fonctionnel
4. [x] Migrer le service `createQuote`
+ [X] Convertir le code
+ [X] Relecture du code
+ [x] Migrer le test xml
5. [x] Migrer le service `updateQuote`
+ [X] Convertir le code
+ [X] Relecture du code
+ [x] Migrer le test xml
6. [x] Migrer le service `copyQuote`
+ [X] Convertir le code
+ [X] Relecture du code
+ [x] Créer le test fonctionnel
7. [x] Migrer le service `createQuoteItem`
+ [X] Convertir le code
+ [X] Relecture du code
+ [x] Tester fonctionnellement
8. [x] Migrer le service `updateQuoteItem`
+ [x] Convertir le code
+ [X] Relecture du code
+ [x] Créer le test fonctionnel
9. [x] Migrer le service `removeQuoteItem`
+ [X] Convertir le code
+ [X] Relecture du code
+ [x] Créer le test fonctionnel
10. [x] Migrer le service `copyQuoteItem`
+ [X] Convertir le code
+ [X] Relecture du code
+ [x] Tester fonctionnellement
11. [x] Migrer le service `createQuoteAndQuoteItemForRequest`
+ [X] Convertir le code
+ [X] Relecture du code
+ [x] Créer le test fonctionnel
12. [x] Migrer le service `createQuoteFromShoppingCart`
+ [X] Convertir le code
+ [x] Relecture du code
+ [x] Créer le test fonctionnel
13. [x] Migrer le service `createQuoteFromShoppingList`
+ [X] Convertir le code
+ [x] Relecture du code
+ [x] Créer le test fonctionnel
14. [x] Migrer le service `ensureWorkEffortAndCreateQuoteWorkEffort`
+ [X] Convertir le code
+ [x] Relecture du code
+ [x] Créer le test fonctionnel
15. [x] Migrer le service `autoUpdateQuotePrice`
+ [X] Convertir le code
+ [x] Relecture du code
+ [x] Créer le test fonctionnel
16. [x] Migrer le service `createQuoteFromCustRequest`
+ [X] Convertir le code
+ [x] Relecture du code
+ [x] Créer le test fonctionnel
17. [x] Migrer le service `autoCreateQuoteAdjustments`
+ [X] Convertir le code
+ [x] Relecture du code
+ [x] Créer le test fonctionnel
18. [x] Migrer le service `createQuoteNote`
+ [X] Convertir le code
+ [x] Relecture du code
+ [x] Créer le test fonctionnel
#### Participants
@oantoine @lmathieu @mleila @pgilYolande et remontée de codeNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/27Amélioration de la gestion des erreurs sur l'appel du run groovy DSL2022-06-24T15:57:11ZLeila MekikaAmélioration de la gestion des erreurs sur l'appel du run groovy DSLAmélioration de la gestion des erreurs sur l'appel du runService groovy DSL.
runService throw une ExecutionServiceException et le message d'erreur obtenu en retour est trop détaillé
https://pad.libre-entreprise.org/p/OFBizErreurGroovyAmélioration de la gestion des erreurs sur l'appel du runService groovy DSL.
runService throw une ExecutionServiceException et le message d'erreur obtenu en retour est trop détaillé
https://pad.libre-entreprise.org/p/OFBizErreurGroovyBonne Année 2019Gil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/144Mettre a jour le formulaire d'execution de service selon le type de champs (E...2024-03-22T09:15:15ZLeila MekikaMettre a jour le formulaire d'execution de service selon le type de champs (Ex: datetimepicker pour un timestamp)Lors de l’exécution d'un service depuis webtools les paramètres IN apparaissent comme des champs de saisie texte quelquesoit le type de données attendu.
La proposition est d'adapter l'affichage du formulaire en fonction du type de champ ...Lors de l’exécution d'un service depuis webtools les paramètres IN apparaissent comme des champs de saisie texte quelquesoit le type de données attendu.
La proposition est d'adapter l'affichage du formulaire en fonction du type de champ attendu (hors objet)Leila MekikaLeila Mekikahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/161Ajout du parametre auto-parameters-form sur on event update area2023-04-21T12:04:53ZLeila MekikaAjout du parametre auto-parameters-form sur on event update areaPermet de transferer les parametres saisis par l'utilisateur dans un unpdate areaPermet de transferer les parametres saisis par l'utilisateur dans un unpdate areaLeila MekikaLeila Mekikahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/150Ajout d'un element callback dans les liens2023-11-17T09:33:22ZNicolas MalinAjout d'un element callback dans les liensNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/63Amélioration du performFind pour supporter des DynamicEntityView2022-07-08T16:38:54ZNicolas MalinAmélioration du performFind pour supporter des DynamicEntityViewActuellement le performFind ne travail que sur des entity ou des viewEntity, seleument dans des cas complexe nous avons besoins de pouvoir créer dynamiquement la vue.Actuellement le performFind ne travail que sur des entity ou des viewEntity, seleument dans des cas complexe nous avons besoins de pouvoir créer dynamiquement la vue.Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/113Généraliser et remonter la gestion des flux2023-01-26T08:13:59ZGil PortenseigneGénéraliser et remonter la gestion des fluxL'outil de gestion des flux de Decathlon permet de visualiser et régénérer le traitement de commEvents pour l'envoi de données.
L'objectif est de faciliter la maintenance des échanges de données entre OFBiz et l'applicatif externe. Que ...L'outil de gestion des flux de Decathlon permet de visualiser et régénérer le traitement de commEvents pour l'envoi de données.
L'objectif est de faciliter la maintenance des échanges de données entre OFBiz et l'applicatif externe. Que ce soient les flux entrant ou sortant.
Deux possibilités :
* La gestion de envoi et réception de flux de manière asynchrone
* La reception d'un flux créé le commEvent avec le content associé, sans traitement ultérieur
* Le traitement d'un flux entrant se fait dans un second temps pour logger les erreurs et permettre l'analyse.
* La génération d'un flux sortant se fait classiquement
* L'envoi du flux sortant, peut etre précédé d'un service de contrôle validant la donnée envoyée.
* La gestion de flux synchrone :
* L'execution de l'envoi se fait de manière synchrone, un commEvent et content est créé pour logger l'envoi et permettre son réenvoi
* Le log de la reception se fait directement post traitement, à l'instar de l'envoi.
L'outil ne doit pas gérer l'ensemble des commEvent OFBiz. Il faut donc définir un discriminant pour les commEvent à suivre.
L'outil permet de gérer ce commEvent :
* Recherche un flux
* Replanification d'un flux sans modification
* Replanification avec modification (régénération de content)
Le flux généralisés, supportés sont :
- les mails à suivres avec PJ (génération de PJ sur un content)
- flux ftp
Avoir un service d'alimentation d'un mail à suivre/ftp à générer.
Avoir un job de traitement des commEvent simplifié. Pour planification de leur envoi (ou voir si les jobs standards font le taf)
**Tâches :**
- [x] Description globale de la tâche
- [ ] Definition des cas d'usages
- [ ] Définition de nouveaux types de commEvent
- [ ] Définition cas d'usage mail (idées de flux à suivre, autour d'une commande)
- [ ] Reprise des écrans
- [ ] Recherche de commEvent sous-type créés
- [ ] Liste des commEvent et content associés
- [ ] Services
- [ ] écriture de service de création de commEvent
- [ ] écriture de job de traitement de commEvent
- [ ] écriture de service de replanification de commEvent
Pad (brouillon collaboratif) du ticket:
https://pad.libre-entreprise.org/p/nereide_communautaire_113
**17 septembre 2019 : Le besoin exprimé par Pierre est plus simple que celui implémenté chez Decathlon :**
Logger les appels WS et leur retours de certains services dans des commEvents afin d'avoir des quantités chiffrés d'erreur, et de produire des analyses cas par cas.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
L'idée : de manière spécifique définir un service qui sera branché en écoute sur le serviceEngine (ou en seca sur les services à analyser) qui va :
* Vérifier (dans le cas `serviceEngine`) le fait que ce service est paramétré par `systemProperty` pour être loggé
* Créer un commEvent en enregistrant
* Dans un content les paramètres d'entrées de service sérialisés.
* Dans le status du commEvent : le code retour succès ou erreur
* Dans un autre content les données retournées préfixé du code retour exact, et éventuellement du header
* Dans le contactMechIdTo : une référence vers un contactMEch de type `webService` indiquant le endpoint contacté
* Dans le partyIdFrom l'acteur émetteur de l'appel
* Dans le partyIdTo l'acteur destinataire (identifié du header et du sens de l'appel in/OUT)
Cela fait on peut logger de manière paramétrable les services désirés.
Les données sauvegardées sur le commEvent permettent son rejeu, à coder de façon spécifique...
Reste a voir si c'est remontable/justifiable auprès de la communauté.la repriseGil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/158Le champ required n'est pas pris en compte dans un formulaire avec upload2022-07-01T12:53:19ZLeila MekikaLe champ required n'est pas pris en compte dans un formulaire avec uploadSouci remonté par Charles:
dans OFBiz, dans un Form de type "upload",
si en plus des champs nécessaires au chargement, on ajoute un champs supplémentaire obligatoire,
alors l'étoile "*" apparait bien mais cela ne fonctionne pas, j'arr...Souci remonté par Charles:
dans OFBiz, dans un Form de type "upload",
si en plus des champs nécessaires au chargement, on ajoute un champs supplémentaire obligatoire,
alors l'étoile "*" apparait bien mais cela ne fonctionne pas, j'arrive à submiter le formulaire sans remplir ce champs obligatoire
(en plus, le fond du champs reste clair au lieu d'etre en jaune)
illustration :
le Form
<form name="viewCreditNoteRequestAddDocument" type="upload" target="addCustRequestContent" default-table-style="basic-table" >
<field name="custRequestId"><hidden/></field>
<field name="uploadedFile" title="Fichier" tooltip="Taille des documents inférieurs à 5 Mo" required-field="true"><file/></field>
<field name="description" required-field="true"><text/></field>
<field name="upload" title="${uiLabelMap.CreditNoteRequestDownload}" position="2"><submit/></field>
</form>
et le rendu est le suivant :
![Capture_d_écran_de_2022-04-26_17-31-43](/uploads/77bd3eaed59769a6a86b2fc81c2af71c/Capture_d_écran_de_2022-04-26_17-31-43.png)Gil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/18Amelioration du date picker quand plus de 1 dp/form (screen ?) (3)2018-12-20T13:04:22ZGil PortenseigneAmelioration du date picker quand plus de 1 dp/form (screen ?) (3)@mleila @pgil @lmathieu @gludovic
Il y a 2 forms dans un screens
ces 2 forms ont tous les 2 un champs invoiceDate de type date-find
au rendu du screens, seul le champs du premier forms à l'image du datetimepicker
comme l'id généré (...@mleila @pgil @lmathieu @gludovic
Il y a 2 forms dans un screens
ces 2 forms ont tous les 2 un champs invoiceDate de type date-find
au rendu du screens, seul le champs du premier forms à l'image du datetimepicker
comme l'id généré (invoiceDate_fld0_value) des 2 champs est identique, le js confond les 2 champs
on a beau mettre un id au champs ou au form, ca merde, pareil avec form-name, id-name, ...
Yolande et remontée de codeLudovic GILBONLudovic GILBONhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/28Extraction du mécanisme de cache de la classe ‘ComponentConfig’2019-02-27T08:22:06ZMathieu LirzinExtraction du mécanisme de cache de la classe ‘ComponentConfig’Il y a une [cohésion](https://fr.wikipedia.org/wiki/Coh%C3%A9sion_(informatique)) faible entre le mécanisme de cache des méthodes `getAppBarWebInfos` et `getWebappInfo` et le reste des méthodes de la classe `ComponentConfig`. Pour amélio...Il y a une [cohésion](https://fr.wikipedia.org/wiki/Coh%C3%A9sion_(informatique)) faible entre le mécanisme de cache des méthodes `getAppBarWebInfos` et `getWebappInfo` et le reste des méthodes de la classe `ComponentConfig`. Pour améliorer cela il serait intéressant d'extraire ce mécanisme dans une autre classe.Mathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/29Les tests unitaires ne peuvent pas être écrit en groovy2020-02-28T13:27:01ZMathieu LirzinLes tests unitaires ne peuvent pas être écrit en groovyDepuis [OFBIZ-9996](https://issues.apache.org/jira/browse/OFBIZ-9996) il est possible d'écrire des tests d'intégrations (les tests dépendant du dispatcher et du délégateur). Il serait intéressant d'avoir également la possibilité d'écrir...Depuis [OFBIZ-9996](https://issues.apache.org/jira/browse/OFBIZ-9996) il est possible d'écrire des tests d'intégrations (les tests dépendant du dispatcher et du délégateur). Il serait intéressant d'avoir également la possibilité d'écrire des tests unitaires en Groovy.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/34Répétition de code pour lancer les événements2022-12-30T15:55:16ZMathieu LirzinRépétition de code pour lancer les événementsVoir description faîte dans le ticket [OFBIZ-10474](https://issues.apache.org/jira/browse/OFBIZ-10474).Voir description faîte dans le ticket [OFBIZ-10474](https://issues.apache.org/jira/browse/OFBIZ-10474).https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/37Réusinage de ‘ControlFilter’2019-01-02T16:02:14ZMathieu LirzinRéusinage de ‘ControlFilter’Réécriture de ‘ControlFilter’ et ajout de tests.
Ticket [OFBIZ-10449](https://issues.apache.org/jira/browse/OFBIZ-10449)Réécriture de ‘ControlFilter’ et ajout de tests.
Ticket [OFBIZ-10449](https://issues.apache.org/jira/browse/OFBIZ-10449)Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/23Récupération main menu avec id webapp (5)2023-12-01T10:08:14ZGil PortenseigneRécupération main menu avec id webapp (5)OFBIZ-10601OFBIZ-10601la repriseNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/160Correction de la validation de formulaire dans une modale2023-11-17T09:34:28ZLeila MekikaCorrection de la validation de formulaire dans une modaleLes champs obligatoires ne sont pas contrôlés dans un formulaire lorsque celui ci est a l'intérieur d'une modale.
Exemple:Les champs obligatoires ne sont pas contrôlés dans un formulaire lorsque celui ci est a l'intérieur d'une modale.
Exemple:Leila MekikaLeila Mekikahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/49OFBiz shell2019-12-07T14:16:59ZMathieu LirzinOFBiz shellAfin de rendre plus intéractif et facile l'écriture de tests d'intégration, il serait utile de tirer profit de la fonctionnalité de [shell](http://groovy-lang.org/groovysh.html) de Groovy pour permettre de faire rapidement des tests d'ap...Afin de rendre plus intéractif et facile l'écriture de tests d'intégration, il serait utile de tirer profit de la fonctionnalité de [shell](http://groovy-lang.org/groovysh.html) de Groovy pour permettre de faire rapidement des tests d'appels de service et de communication avec la base sans avoir à relancer `./gradlew 'ofbiz --test ...'` pour obtenir un résultat.Bonne Année 2019Mathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/159Blog : correction condition d'affichage des content dans un screen2023-04-21T12:11:06ZLeila MekikaBlog : correction condition d'affichage des content dans un screenla balise content n'affiche pas correctement les images. Une condition de type empeche le chargement sans que la raison ne soit clairela balise content n'affiche pas correctement les images. Une condition de type empeche le chargement sans que la raison ne soit claireLeila MekikaLeila Mekikahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/50Un délégateur et dispatcheur commun pour tous les tests.2019-02-06T22:19:50ZMathieu LirzinUn délégateur et dispatcheur commun pour tous les tests.Pour simplifier le lancement des tests, il serait utile de définir un délégateur et dispatcheur commun.
Discuté sur [ofbiz-dev](https://lists.apache.org/thread.html/638e88265971cfb47ee03b87c6705206d8369c8d1d94fe8c8decfb74@%3Cdev.ofbiz.a...Pour simplifier le lancement des tests, il serait utile de définir un délégateur et dispatcheur commun.
Discuté sur [ofbiz-dev](https://lists.apache.org/thread.html/638e88265971cfb47ee03b87c6705206d8369c8d1d94fe8c8decfb74@%3Cdev.ofbiz.apache.org%3E)
et [ofbiz-user](https://lists.apache.org/thread.html/e9516ac2d6c141d721bd77d593decd886fa4b2b835ba0b315bac21a3@%3Cuser.ofbiz.apache.org%3E).Mathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/52Prevent FTL stacktrace2019-03-29T14:09:14ZNicolas MalinPrevent FTL stacktraceNe pas afficher les stacktrace ftl lors d'un code en production, provient du projet Decathlon, voir le commit [cdbc3f991cb7d97d04a360536cbdae7d0fedf90a de Grégoire](https://labs.nereide.fr/10923/PRO20200/commit/cdbc3f991cb7d97d04a360536c...Ne pas afficher les stacktrace ftl lors d'un code en production, provient du projet Decathlon, voir le commit [cdbc3f991cb7d97d04a360536cbdae7d0fedf90a de Grégoire](https://labs.nereide.fr/10923/PRO20200/commit/cdbc3f991cb7d97d04a360536cbdae7d0fedf90a)
(OFBIZ-10817)Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/60Chargement des évenement before/after login du controler se font non ordonnée2019-07-12T13:55:50ZNicolas MalinChargement des évenement before/after login du controler se font non ordonnéeGil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/130Amélioration de createLogDirectoryIfMissing pour la création des journaux2020-03-17T00:40:15ZGhost UserAmélioration de createLogDirectoryIfMissing pour la création des journauxSi le dossier de journalisation n'existe pas ou qu'il ne possède pas les bons droit il faut passer en mode défault "runtime/logs"Si le dossier de journalisation n'existe pas ou qu'il ne possède pas les bons droit il faut passer en mode défault "runtime/logs"la reprisehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/74Correction: DynamicView et groupBy le count n'est pas bon avec un selectFields2019-05-17T15:54:11ZNicolas MalinCorrection: DynamicView et groupBy le count n'est pas bon avec un selectFields```
// ========= = DECATHLON specific = ==========
//Add selectFields to group by clause else count will be != from selectListIteratorByCondition with the same parameters
/*
modelViewEntity...```
// ========= = DECATHLON specific = ==========
//Add selectFields to group by clause else count will be != from selectListIteratorByCondition with the same parameters
/*
modelViewEntity.colNameString(modelViewEntity.getGroupBysCopy(), sqlBuffer, " GROUP BY ", ", ", "", false);
*/
modelViewEntity.colNameString(modelViewEntity.getGroupBysCopy(selectFields), sqlBuffer, " GROUP BY ", ", ", "", false);
// ========= = DECATHLON specific = ==========
```
[OFBiz issue : OFBIZ-11041](https://issues.apache.org/jira/browse/OFBIZ-11041)Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/94Amélioration: CompnayHeader, filtrer les élements en fonction de la date du d...2019-11-08T13:46:13ZNicolas MalinAmélioration: CompnayHeader, filtrer les élements en fonction de la date du documentNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/98Amelioration: Ajouter un moyen de filtrer les agreements en cours dans l'ecra...2022-05-18T09:41:51ZLeila MekikaAmelioration: Ajouter un moyen de filtrer les agreements en cours dans l'ecran standardLorsque les agreements sont mis à jour très régulièrement, et deviennent très nombreux, il serait pratique d'avoir un moyen de filtrer dans la recherche sur les agreements valides dans l’écran standard:
https://localhost:8443/accounting/...Lorsque les agreements sont mis à jour très régulièrement, et deviennent très nombreux, il serait pratique d'avoir un moyen de filtrer dans la recherche sur les agreements valides dans l’écran standard:
https://localhost:8443/accounting/control/FindAgreementLeila MekikaLeila Mekikahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/116Improve DevOps using environment variable configuration2020-05-25T16:09:09ZAntoine OuvrardImprove DevOps using environment variable configurationhttps://issues.apache.org/jira/browse/OFBIZ-9498?jql=project%20%3D%20OFBIZ%20AND%20text%20~%20environment
Ajout d'un mécanisme de récupération de variable d'environnement depuis ofbiz.
https://issues.apache.org/jira/browse/OFBIZ-9498https://issues.apache.org/jira/browse/OFBIZ-9498?jql=project%20%3D%20OFBIZ%20AND%20text%20~%20environment
Ajout d'un mécanisme de récupération de variable d'environnement depuis ofbiz.
https://issues.apache.org/jira/browse/OFBIZ-9498Antoine OuvrardAntoine Ouvrardhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/125Simplification du deploiement d'OFBiz2020-03-17T07:52:28ZMathieu LirzinSimplification du deploiement d'OFBiz## Problème
Actuellement le déploiement d'OFBiz doit se faire en livrant à la fois un Jar et un dossier contenant les sources XML/Groovy/Freemarker.
```mermaid
graph LR
A[ofbiz.jar] -->|classes| B(Production)
C[root directory] ...## Problème
Actuellement le déploiement d'OFBiz doit se faire en livrant à la fois un Jar et un dossier contenant les sources XML/Groovy/Freemarker.
```mermaid
graph LR
A[ofbiz.jar] -->|classes| B(Production)
C[root directory] -->|config/XML/FTL| B(Production)
```
Cette façon de procéder a 3 incovénients majeurs:
1. Ne s'intègre pas avec le mécanisme de gestion de dépendances de la plateforme Java basé sur la distribution de Jar.
2. Complexité de procédure de déploiement en production.
3. Charge mentale inutilement importante pour se représenter comment un fichier présent dans les sources est récupéré (système de fichier?, classpath?, un peu des deux?)
## Proposition
La solution envisagé consiste a donc distribuer l'ensemble des fichiers requis au lancement d'OFBiz dans `ofbiz.jar` et d'accéder aux fichiers en utiliser [le mécanisme de resource de l'API Java](https://docs.oracle.com/javase/8/docs/technotes/guides/lang/resources.html).
```mermaid
graph LR
A[ofbiz.jar] -->|classes/config/XML/FTL| B(Production)
```
## Tâches
Cette solution impose un travail important nécessitant de réaliser les étapes suivantes:
- [x] Rajouter dans le [build.gradle](build.gradle#L267) l'ensemble des fichiers
- [X] Schémas XML (`.xsd`)
- [x] Templates FreeMarker (`.ftl`)
- [x] Scripts Groovy (`.groovy`)
- [x] Scripts minilang (`.xml`)
- [x] fichiers de définition des composants/services/entités (`.xml`)
- [ ] Trouver une solution permettant de charger un composant OFBiz à partir d'un Jar
- [ ] Trouver une solution pour gérer les propriétés de configurations en permettant leur modification sans avoir à modifier les fichiers `.properties` du framework.
- [ ] Adapter la résolution de fichiers pour utiliser le classpath par défault
- [ ] Adapter la résolution des URL type `component://example/`
Il y a une issue ouverte sur Jira: [OFBIZ-11161](https://issues.apache.org/jira/browse/OFBIZ-11161)la repriseAntoine OuvrardAntoine Ouvrardhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/3Les représentations JSON ne sont pas générés par le moteur d'affichage2020-03-17T00:53:13ZMathieu LirzinLes représentations JSON ne sont pas générés par le moteur d'affichagePour avoir une sortie de service en format JSON, OFBiz fournit un gestionnaire d'événements `jsonResponseFromRequestAttributes` associé à l'URI `json` permettant de rediriger le résultat du premier service vers ce gestionnaire.
Il parai...Pour avoir une sortie de service en format JSON, OFBiz fournit un gestionnaire d'événements `jsonResponseFromRequestAttributes` associé à l'URI `json` permettant de rediriger le résultat du premier service vers ce gestionnaire.
Il parait plus approprié d'avoir un type de gestionnaire de vues dédié au rendu en format JSONla reprisehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/126Recherche de commande sans pays d'expedition en obligatoire2019-08-28T07:10:48ZNicolas MalinRecherche de commande sans pays d'expedition en obligatoireNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/127Clojure dans OFBiz2020-03-17T01:07:27ZMathieu LirzinClojure dans OFBiz![Clojure](https://clojure.org/images/clojure-logo-120b.png)
[Clojure](https://clojure.org/) est un langage de programmation fonctionnel dynamiquement typé dérivé de LISP qui m'est l'accent à la fois sur la *simplicité* en se basant sur...![Clojure](https://clojure.org/images/clojure-logo-120b.png)
[Clojure](https://clojure.org/) est un langage de programmation fonctionnel dynamiquement typé dérivé de LISP qui m'est l'accent à la fois sur la *simplicité* en se basant sur des *structures de données génériques immutables* et sur le paradigme de *programmation fonctionnelle*. C'est également un langage très intéractif ne nécessitant de redémarrer l'application que de manière très exceptionnelle. Ces caractéristiques en font un langage de programmation très approprié au contexte de développement agile de traitement de l'information qui est celui d'OFBiz.
On se propose donc d'implémenter les abstractions d'OFBiz suivantes:
- [X] un moteur de services
- [ ] un request handler
- [ ] un moteur d'écrans
Pour tirer parti de l'aspect intéractif de la programmation en Clojure, un élément essentiel est d'avoir accès à un REPL (Read Eval Print Loop) pour cela on utilise le plugin Gradle [Clojurephant](https://clojurephant.dev/clojurephant/).Mathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/141Enlever le chargement des élements ‘classpath’2020-05-25T16:09:11ZMathieu LirzinEnlever le chargement des élements ‘classpath’les fichiers `ofbiz-component.xml` contiennent des balises
```xml
<classpath type="dir" location="config"/>
```
qui sont ensuite ajoutés dynamiquement au classpath de la JVM [au démarrage d'OFBiz](https://labs.nereide.fr/10031/Communau...les fichiers `ofbiz-component.xml` contiennent des balises
```xml
<classpath type="dir" location="config"/>
```
qui sont ensuite ajoutés dynamiquement au classpath de la JVM [au démarrage d'OFBiz](https://labs.nereide.fr/10031/Communautaire/blob/trunk/framework/base/src/main/java/org/apache/ofbiz/base/container/ComponentContainer.java#L86-91). Vu que ces dossiers sont [déjà ajoutés statiquement au classpath par Gradle](https://labs.nereide.fr/10031/Communautaire/blob/trunk/build.gradle#L269) on a envie d'enlever la redondance.
Malheureusement comme souvent les choses ne sont pas aussi simple et la batterie de test du plugin ecommerce échouent après la suppression du code java d'ajout dynamique au classpath.
```shell
$ ./gradlew "ofbiz --test component=ecommerce --test suitename=ecommercetests"
# [...]
2019-11-26 17:19:56,956 |main |TestRunContainer |I| --> testSendOrderConfirmation(org.apache.ofbiz.ecommerce.OrderNotificationTests): assert ServiceUtil.isSuccess(serviceResult)
| |
false ['errorMessage':'Error rendering PDF attachment for email: org.apache.fop.apps.FOPException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 39; columnNumber: 37; Element type "fo:external-graphic" must be followed by either attribute specifications, ">" or "/>".\njavax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 39; columnNumber: 37; Element type "fo:external-graphic" must be followed by either attribute specifications, ">" or "/>".', 'responseMessage':'error']
2019-11-26 17:19:56,956 |main |TestRunContainer |I| Assertion failed:
assert ServiceUtil.isSuccess(serviceResult)
| |
false ['errorMessage':'Error rendering PDF attachment for email: org.apache.fop.apps.FOPException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 39; columnNumber: 37; Element type "fo:external-graphic" must be followed by either attribute specifications, ">" or "/>".\njavax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 39; columnNumber: 37; Element type "fo:external-graphic" must be followed by either attribute specifications, ">" or "/>".', 'responseMessage':'error']
at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:415)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:670)
at org.apache.ofbiz.ecommerce.OrderNotificationTests.testSendOrderConfirmation(OrderNotificationTests.groovy:37)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at org.apache.ofbiz.testtools.TestRunContainer.start(TestRunContainer.java:90)
at org.apache.ofbiz.base.container.ContainerLoader.startLoadedContainers(ContainerLoader.java:156)
at org.apache.ofbiz.base.container.ContainerLoader.load(ContainerLoader.java:78)
at org.apache.ofbiz.base.start.StartupControlPanel.loadContainers(StartupControlPanel.java:160)
at org.apache.ofbiz.base.start.StartupControlPanel.start(StartupControlPanel.java:71)
at org.apache.ofbiz.base.start.Start.main(Start.java:90)
```Mathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/142Erreur lors de l'impersonnalisation malgré le droit admin composant2020-05-25T16:09:11ZLeila MekikaErreur lors de l'impersonnalisation malgré le droit admin composantIl s'agit d'un cas rencontré sur le projet Decathlon.
La personne qu'on veut impersonnaliser a le droit PARTYMGR_PCM_CREATE et le service recherche donc un PARTYMGR_PCM_ADMIN
Comme le fullAdmin n'a "que" le droit PARTYMGR_ADMIN, il consi...Il s'agit d'un cas rencontré sur le projet Decathlon.
La personne qu'on veut impersonnaliser a le droit PARTYMGR_PCM_CREATE et le service recherche donc un PARTYMGR_PCM_ADMIN
Comme le fullAdmin n'a "que" le droit PARTYMGR_ADMIN, il considère que ca n'est pas bon et retourne une erreur.
Il faudrait modifier le service pour appliquer la regle
PARTYMGR_ADMIN couvre PARTYMGR_*, PARTYMGR_PCM_ADMIN couvre PARTYMGR_PCM_*Gil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/143Pouvoir mettre des templates de forms dans le thème2020-06-04T11:46:30ZNicolas MalinPouvoir mettre des templates de forms dans le thèmeNicolas MalinNicolas Malin