ofbiz-framework issueshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues2023-01-26T08:14:14Zhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/163Amélioration : permettre de renvoyer une liste de Check2023-01-26T08:14:14ZCharles STELTZLENAmélioration : permettre de renvoyer une liste de Checkhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/156Ajout des communication associées aux factures2021-03-19T08:39:30ZPierre GaudinAjout des communication associées aux factureshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/155Ajout d'une macro timeline2023-05-09T16:45:07ZPierre GaudinAjout d'une macro timelinePierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/154Erreur sur le passage a completed des commandes2020-07-28T09:20:49ZPierre GaudinErreur sur le passage a completed des commandesPierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/146ajoute un nouveau type de condition de règle de prix basé sur le product role2020-03-11T10:52:04ZPierre Gaudinajoute un nouveau type de condition de règle de prix basé sur le product rolePierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/145ajout d'un opérateur dans ProductPriceRule permettant d'indiquer si toutes le...2020-03-11T10:30:23ZPierre Gaudinajout d'un opérateur dans ProductPriceRule permettant d'indiquer si toutes les règles de prix doivent etre vrai ou si au moins une suffit pour appliquer l'actionPierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/131Remonté le chargement des entités contenues dans des contents2020-05-25T16:09:11ZPierre GaudinRemonté le chargement des entités contenues dans des contentsPierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/11Infinite Scroll (5)2018-12-18T14:41:10ZGil PortenseigneInfinite Scroll (5)Amélioration de la pagination pour mettre en place un infinite scroll ajax
@dmarine et @njulien Amélioration de la pagination pour mettre en place un infinite scroll ajax
@dmarine et @njulien Clôture des tâches anciennesMarine DesmarchelierMarine Desmarchelierhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/48Intégration du thème Yolande2019-11-15T16:46:37ZMathieu LirzinIntégration du thème Yolande# Yolande
Yolande - Le projet qui thème bien !
La branche du projet continent le merge des sous branches
Sous branches :
- Le thème https://labs.nereide.fr/10031/Communautaire/issues/112
- Le composant de gestion catalogue https://labs...# Yolande
Yolande - Le projet qui thème bien !
La branche du projet continent le merge des sous branches
Sous branches :
- Le thème https://labs.nereide.fr/10031/Communautaire/issues/112
- Le composant de gestion catalogue https://labs.nereide.fr/10031/Communautaire/issues/137
- Insérer des écrans raccourcie https://labs.nereide.fr/10031/Communautaire/issues/23
## Présentation du projet
Création d'une application OFBiz simplifiée et d'un thème moderne utilisant les nouvelles pratique du theme common-theme.
Les buts de ce projet sont multiple :
- Créer un nouveau thème
- Créer une application simplifiée
- Mettre en place des bonnes pratiques de développement au sein de Néréide
- Proposer le nouveau thème, l'application simplifiée et les nouvelles pratique de développement d'interface à la
communauté
## Installation de l'environnement
Le projet est simplement la branche yolande-simple du projet communautaire
## Méthodologie
Il n'y a pas de méthodologie définie pour le moment, pas de ressources affectées à ce projet de manière régulière et
permanente.
## Feuille de route
<p>
Les étapes suivantes sont des propositions qui peuvent être amenées à changer. En effet, si la première étape
nous appartient, l'échange avec la communauté risque de remettre en cause les suivantes.
</p>
<p>
L'agilité étant la fibre, l'adn des projets de Néréide, il est préférable de trouver les bons chemins aussi sinueux
soient-ils faut plus viser la destination se situant à l'horizon
et suivre
</p>
#### Étape 1 - Produit minimum viable
Cette première étape doit permettre de mettre en place une structure pour la création de nouveaux écrans permettant
d'embrasser de nouvelles pratiques.
Elle permettra également d'avoir de la matière à présenter à la communauté.
Dans ce but, il n'est pas nécessaire d'aller trop loin dans les fonctionnalités car il sera intéressant d'avoir les
retours des acteurs majeurs de la communauté.
1. Modifier le global-decorator du common-theme afin de le rendre vraiment générique
2. Mise en place de la structure d'un écran de type fiche utilisant les "decorator-section" et la maquette réalisée
par Marine
3. Modifier le code des maquettes pour l'intégrer dans OFBiz (rendre le contenu dynamique)
4. Mettre en place le premier exemple de recherche contextualisée
5. Afficher l'écran fiche de l'application simplifiée dans un ancien thème et s'assurer que l'affichage et
le fonctionnement sont correct
6. Vérifier que l'ensemble des items présents à l'écran sont fonctionnel (cloche, profil, changement de thème
, de langue, etc.)
7. Présenter le travail à la communauté pour la prochaine ApacheCon !
#### Étape 2 - Ajout de nouveaux gabaris d'écran
Après les échanges avec la communauté, il peut être intéressant de mettre en place de nouveaux gabaris (Recherche,
contact, arbre de dépendance, etc.)
#### Étape 3 - Ajout de dynamisme dans les écrans
Il existe des composants web primordiaux dans l'ERP qui mériteraient d'avoir plus d'outils. La table est un de ces
composants. Outre les différents type exports qui pourraient être définis par défaut, il peut être intéressant de
penser de nouvelles méthode de les remplirs. L'ajout d'un screen dans une cellule déjà réalisé par Nicolas est un bon
départ mais demande à être approfondis pour devenir un bon outils de productivité dans les tables.
#### Étape 4 - Ajout de la personnalisation du thème
<p>Pour que les utilisateurs puissent s'approprier l'ERP, il peut être intéressant d'ajouter des fonctionnalités qui
amélioreraient l'ergonomie des écrans en se basant sur les habitudes de l'utilisateur.
L'exemple des 4 premier onglets qui se positionnent en fonction du nombre de fois où ils sont ouverts est un bon
exemple.
</p>
<p>La gestion des icones d'application, des couleurs du thème, la personnalisation des zones d'entête de fiche (ajout
de bouton d'action, de dernier dossier, plus gros client, ect.), etc. peuvent-être autant de pistes à explorer pour que
le thème devienne incontournable et riche en fonctionnalités moderne.
</p>
<p>
La plus grande problématique peut se situer dans la récupération des informations de personnalisation. Plusieurs
pistes peuvent être explorées pour éviter d'avoir à soliciter la base de données principale.
<br>
La première pouvant être d'avoir une base de données dédiées pour ces personnalisations. Soit sur le même
serveur que la base de données principale, soit en utilisant des fonctionnalités du navigateur et donc en stockant
sur le poste client les préférences de l'interface.
</p>
<p>
Un autre point important à ne pas perdre de vue, c'est qu'un thème n'est pas obligé de surcharger le common-theme pour
fonctionner. Il doit être possible de réaliser un thème blanc qui reprend le common-theme.
</p>
## Structure d'écran
La gestion de la structure des écrans se divise en plusieurs sections principales :
1. Décorateur global du common-theme
2. Décorateur du thème en cours
3. Décorateur des gabaris (recherche, fiche, liste, contact, arborescence, étapes, etc.)
4. Décorateur global de la web application
5. Décorateur de la section
#### 1. Décorateur global du common-theme
<p>
Une des premières étapes du projet Yolande est de revoir ce décorateur.
<br>
Actuellement le "global-decorator" (GD) du common-theme contient trop d'élément structurant devant probablement être
relaigué à un sous décorateur pouvant être surchargé par le thème.
<br>
Il faut bien définir l'utilité du GD devrait être de définir les variables courantes du thème et d'inclure les resources
définies dans le theme.xml.
</p>
<p>
La proposition est de nettoyer le GD des éléments de structuration et de surcharger les vieux thèmes afin qu'ils
puissent continuer d'être utilisable. Le but étant de moderniser le GD sans poluer les nouveaux thèmes avec des
surcharges inutiles.
<br>
Par exemple, il serait intéressant de se dire que le GD n'incluse pas jquery par défaut et que jquery soit un ajout
fait par le thème si besoin. Le but étant d'être suffisamment souple pour s'adapter aux futures technologie et goût
des webdesigners jqueryphobes et/ou bootstrapophobe.
</p>
#### 2. Décorateur du thème en cours
<p>
le décorateur du thème en cours doit mettre en place les éléments de structuration qui seront globaux au thème,
comme la disposition du menu d'application, du sous menu, des éléments d'intéraction globales (choix du thème, de la
langue, des alertes, messages internes, etc.)
<br>
Ajouter les resources spécifiques et nécessaires au thème (ex : bootstrap, jquery, etc.), définir les variables
du thème.
</p>
#### 3. Décorateur des gabaris
<p>
Un point important est la possibilité de surcharger les gabaris (Recherche, fiche, etc.) qui seront disponibles
à l'ensemble des web applications.
<br>
Que ce soit au niveau structurel ou en allant plus loin en ajoutant des informations supplémentaires.
</p>
#### 4. Décorateur global de la web application
<p>
À ce niveau, il est probable qu'il n'y ai plus que des détails à mettre en forme. Des variables nécessaires pour
le fonctionnement des informations (ex : productId pour naviguer dans l'ensemble des écrans de produits)
</p>
#### 5. Décorateur de section
<p>
Le décorateur de section est une notion très importante. Il permet de définir des portions d'écrans qui pourront
être mises en forme dans les décorateurs supérieurs. Que ce soit au niveau du décorateur de thème ou au niveau du GD.
<br>
</p>
## Liste des gabaris à mettre en place
<p>
Les gabaris permettent de mettre en forme des types de pages en fonction des portions d'écrans défini par les
décorateurs de section.
</p>
- Recherche
- Fiche (en cours)
- Liste
- Contact
- Arborescence
- Étapes
la repriseMarine DesmarchelierMarine Desmarchelierhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/25Support des expansions imbriquées pour les instance de ‘FlexibleStringExpander’2019-12-07T13:05:36ZMathieu LirzinSupport des expansions imbriquées pour les instance de ‘FlexibleStringExpander’#### Contexte
La classe `FlexibleStringExpander` implemente l'expansion des valeurs `${foo}` dans des chaînes de caractères xml.
#### Description du problème
Le problème est qu'il n'est pas possible de faire des imbrications du type `${...#### Contexte
La classe `FlexibleStringExpander` implemente l'expansion des valeurs `${foo}` dans des chaînes de caractères xml.
#### Description du problème
Le problème est qu'il n'est pas possible de faire des imbrications du type `${foo-${bar}}`. En effet le processus d'expansion cherche une variable nommée `foo-${bar` dans l'environnement d'appel.
#### Étapes de résolution
1. [x] Séparation de la classe `FlexibleStringExpander` en 3 classes plus facilement testables:
+ `FlexibleString`: interface décrivant les services rendus par une *flexible string*.
+ `FlexibleStringStore`: Classe permettant de stocker des *flexible string* et implémentant le mécanisme de cache.
+ `FlexibleStringParser`: Classe fournissant le service de convertir une chaine de caractères en objet `FlexibleString`.
2. [ ] Écriture de tests unitaires permettant d'identifiés le problème
3. [ ] Implémentation du support des expansions imbriquéeshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/4Reusinage de ‘RequestHandler::doRequest’2018-07-13T10:21:07ZMathieu LirzinReusinage de ‘RequestHandler::doRequest’La méthode `RequestHandler::doRequest` est excessivement longue, non testé, et a de multiple responsabilités:
- Association de la `request-map` au handler
- Benchmarking
- Suivi des utilisateur
- Gestion de HTTPS
- Gestion des redirectio...La méthode `RequestHandler::doRequest` est excessivement longue, non testé, et a de multiple responsabilités:
- Association de la `request-map` au handler
- Benchmarking
- Suivi des utilisateur
- Gestion de HTTPS
- Gestion des redirection vers d'autres routes
Ce qui la rend particulièrement difficile à lire est que c'est un gruyère de tests à null et de traitements d'erreurs, avec des variables mutées déclarées 200 lignes plus haut.
Il faudrait réusiner cette méthode en améliorant le traitement d'erreur et en déléguant les responsabilités à d'autres méthodes.
- [ ] Tester unitairement cette méthode
- [ ] Extraire le suivi des utilisateurs
- [ ] Extraire la mesure de temps
- [X] Extraire la résolution de la `request-map` ([OFBIZ-10438](https://issues.apache.org/jira/browse/OFBIZ-10438))
- [X] Extraire la vérification des certificats SSL ([OFBIZ-10450](https://issues.apache.org/jira/browse/OFBIZ-10450))
- [ ] Utiliser [`Optional`](https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html) quand cela est possible.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/5Renvoie de vues à partir d'URI composés2019-03-29T15:38:19ZMathieu LirzinRenvoie de vues à partir d'URI composésDans l'idée d'améliorer le support d'[API de type REST](https://issues.apache.org/jira/browse/OFBIZ-4274), on veut gérer les routes HTTP dont le *path* est composé de plusieurs segments. On veut pouvoir définir des `request-map` comme d...Dans l'idée d'améliorer le support d'[API de type REST](https://issues.apache.org/jira/browse/OFBIZ-4274), on veut gérer les routes HTTP dont le *path* est composé de plusieurs segments. On veut pouvoir définir des `request-map` comme dans l'exemple suivant :
```xml
<request-map uri="foo">…</request-map>
<request-map uri="foo/bar">…</request-map>
<request-map uri="foo/bar/baz">…</request-map>
```
Le problème de cette fonctionnalité est qu'il existe déjà une sémantique associée au *path* à segments multiples. Voici les usages actuels de cette fonctionnalité:
* Le mécanisme de **vue dynamique passée dans l'URI** est une fonctionnalité permettant de dynamiquement redéfinir la vue qui doit être affichée après avoir exécuter le gestionnaire de requête associé à une URI particulière. Ainsi le *path* `/earth/moon` sera associé avec la `request-map` avec l'attribut `uri="earth"` et la vue dont le nom est "moon" sera rendue.
* Les **paramètres de requête dans le *path*** est une fonctionnalité permettant de passer des paramètres de requête en utilisant une syntaxe alternative. De base une URI est définit au moyen de la syntaxe `/earth/moon?foo=1&bar=2` quit définit un *path* `/earth/moon` et deux paramètres `foo` et `bar` qui sont respectivement associés aux valeurs 1 et 2. Avec la syntaxe alternative la même URI peut être écrite `/earth/moon/~foo=1/~bar=2` mais aura la même interprétation au niveau d'OFBiz.
Il faut donc adapter et/ou supprimer ces fonctionnalités pour pouvoir définir des `request-map` à segments multiples. Dans le cas des vues dynamiques en utilisant les [templates d'URI](https://tools.ietf.org/html/rfc6570) on pourrait définir des routes:
```xml
<request-map uri="earth">
<response name="success" type="view" value="mars"/>
</request-map>
<request-map uri="earth/{viewName}">
<response name="success" type="view" from-variable="viewName"/>
</request-map>
```
pour la syntaxe alternative de paramètre on peut simplement supprimer tous les usages de cette syntaxe et en les remplaçant par la syntaxe canonique.Artemiy RozovykArtemiy Rozovykhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/8Add some J/Gunit test for impersonation permission controls2020-02-21T13:53:39ZGil PortenseigneAdd some J/Gunit test for impersonation permission controlsGil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/7Add some j/gunit test for EntityUtil refacto2018-10-16T08:04:19ZGil PortenseigneAdd some j/gunit test for EntityUtil refactoAdd some j/gunit test for EntityUtil refacto : refactoEntityUtilAdd some j/gunit test for EntityUtil refacto : refactoEntityUtilGil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/10Export de liste (cvs, tableur, pdf) (8)2018-10-16T08:23:02ZGil PortenseigneExport de liste (cvs, tableur, pdf) (8)Ajouter un paramétrage dans les forms de type list/grid, pour la génération d'un lien d'export du résultat de la liste.Ajouter un paramétrage dans les forms de type list/grid, pour la génération d'un lien d'export du résultat de la liste.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/12Filtre sur les header de liste (20)2018-10-16T08:27:01ZGil PortenseigneFiltre sur les header de liste (20)Donner la possibilité d'ajouter des filtres sur header de listes pour peaufiner une rechercheDonner la possibilité d'ajouter des filtres sur header de listes pour peaufiner une recherchehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/13Personnalisation des colonnes (masquage, tri) (13)2018-10-16T08:28:05ZGil PortenseignePersonnalisation des colonnes (masquage, tri) (13)Définir la possibilité de paramétrage d'affichage des colonnes d'une liste/grid en UserPropertyDéfinir la possibilité de paramétrage d'affichage des colonnes d'une liste/grid en UserPropertyhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/14Listes Multi avec multi actions (5)2018-10-16T09:02:44ZGil PortenseigneListes Multi avec multi actions (5)A redéfinir ...A redéfinir ...https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/15Listes Multi avec modification a la ligne + validation groupée (?)2020-02-28T13:27:02ZGil PortenseigneListes Multi avec modification a la ligne + validation groupée (?)Modification de plusieurs items dans une liste, et validation du formulaire pour Maj tous les items modifiésModification de plusieurs items dans une liste, et validation du formulaire pour Maj tous les items modifiéshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/55Revoir le systeme d'audit des entitées2020-04-01T11:28:04ZNicolas MalinRevoir le systeme d'audit des entitéesActuellement pour audité une entité il y a une configuration directement sur le champs de l'entité :
```xml
<field name="changeByUserLoginId" type="id-vlong" enable-audit-log="true"></field>
```
Il faut revoir la manière de faire c...Actuellement pour audité une entité il y a une configuration directement sur le champs de l'entité :
```xml
<field name="changeByUserLoginId" type="id-vlong" enable-audit-log="true"></field>
```
Il faut revoir la manière de faire car cela impose lorsque l'on souhaite activer ou désactivé une entitée de changer les fichier de model de donnée. Ce qui n'et pas correcte au vu de la diminution de spécific sur les sites clientsla reprisePierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/16Nb d'enregistrements de la recherche sur un tableau (1)2019-05-17T14:28:42ZGil PortenseigneNb d'enregistrements de la recherche sur un tableau (1)Ludovic GILBONLudovic GILBONhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/17Nb d'enregistrements de la recherche sur un tableau par statut (8)2020-02-28T13:27:02ZGil PortenseigneNb d'enregistrements de la recherche sur un tableau par statut (8)https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/19Mise en forme du retour liste des lookups (formatage) (X)2018-10-16T09:04:15ZGil PortenseigneMise en forme du retour liste des lookups (formatage) (X)https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/20Lookup avec selection multiples2018-10-16T09:04:30ZGil PortenseigneLookup avec selection multipleshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/21Simplification du fonctionnement/paramétrage des lookup (X)2018-10-16T09:05:03ZGil PortenseigneSimplification du fonctionnement/paramétrage des lookup (X)A peaufiner, car trop largeA peaufiner, car trop largehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/26Migration groovy OrderServices.xml2018-10-16T21:16:03ZGil PortenseigneMigration groovy OrderServices.xml1. [x] Migrer le service `getNextOrderId`
+ [x] Convertir le code
+ [x] Tester fonctionnellement
2. [x] Migrer le service `getOrderedSummaryInformation`
+ [x] Convertir le code
+ [x] Tester fonctionnellement
3. [ ] Migrer...1. [x] Migrer le service `getNextOrderId`
+ [x] Convertir le code
+ [x] Tester fonctionnellement
2. [x] Migrer le service `getOrderedSummaryInformation`
+ [x] Convertir le code
+ [x] Tester fonctionnellement
3. [ ] Migrer le service `createRequirementAndCommitment`
+ [x] Convertir le code
+ [ ] Tester fonctionnellement
4. [ ] Migrer le service `getProductFacilityAndQuantities`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
5. [ ] Migrer le service `getProductRequirementMethod`
+ [x] Convertir le code
+ [ ] Tester fonctionnellement
6. [ ] Migrer le service `checkCreateOrderRequirement`
+ [x] Convertir le code
+ [ ] Tester fonctionnellement
7. [ ] Migrer le service `checkCreateStockRequirementQoh`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
8. [ ] Migrer le service `checkCreateStockRequirementAtp`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
9. [ ] Migrer le service `createRequirementFromItemATP`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
10. [ ] Migrer le service `checkCreateProductRequirementForFacility`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
11. [ ] Migrer le service `orderSequence_enforced`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
12. [ ] Migrer le service `createOrderHeader`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
13. [ ] Migrer le service `updateOrderHeader`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
14. [ ] Migrer le service `recreateOrderAdjustments`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
15. [ ] Migrer le service `updateOrderContactMech`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
16. [ ] Migrer le service `updateOrderItemShipGroup`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
17. [ ] Migrer le service `getOrderItemShipGroupEstimatedShipDate`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
18. [ ] Migrer le service `updateOrderNote`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
19. [ ] Migrer le service `addPaymentMethodToOrder`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
20. [ ] Migrer le service `getOrderStatus`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
21. [ ] Migrer le service `checkOrderIsOnBackOrder`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
22. [ ] Migrer le service `createOrderItemChange`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
23. [ ] Migrer le service `createUpdateShippingAddress`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
24. [ ] Migrer le service `createUpdateBillingAddress`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
25. [ ] Migrer le service `createUpdateCreditCard`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
26. [ ] Migrer le service `setUnitPriceAsLastPrice`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
27. [ ] Migrer le service `cancelAllBackOrders`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
28. [ ] Migrer le service `productAvailabalityByFacility`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
29. [ ] Migrer le service `createOrderPaymentApplication`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
30. [ ] Migrer le service `MoveItemBetweenShipGroups`
+ [ ] Convertir le code
+ [ ] Tester fonctionnellement
Gil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/121Améliorer l'ergonomie opérationnelle de l'écran de recherche des jobs (true s...2020-05-25T16:09:12ZLudovic GILBONAméliorer l'ergonomie opérationnelle de l'écran de recherche des jobs (true story)https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/33‘String#toLowercase()’ and ‘String#toUppercase()’ devrait être utiliser si po...2019-02-21T13:38:50ZMathieu Lirzin‘String#toLowercase()’ and ‘String#toUppercase()’ devrait être utiliser si possibleVoir description du ticket [OFBIZ-10632](https://issues.apache.org/jira/browse/OFBIZ-10632) pour plus de détails.Voir description du ticket [OFBIZ-10632](https://issues.apache.org/jira/browse/OFBIZ-10632) pour plus de détails.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/42Formulaires de saisie 'Expression'2020-03-06T13:19:53ZLeila MekikaFormulaires de saisie 'Expression'Création d'un premier formulaire pour saisir un commentaire de manière anonyme.
Un second formulaire devra permettre de publier et afficher le(s) commentaire(s)
A priori, on peut utiliser les CommunicationEvent avec un type specifiqueCréation d'un premier formulaire pour saisir un commentaire de manière anonyme.
Un second formulaire devra permettre de publier et afficher le(s) commentaire(s)
A priori, on peut utiliser les CommunicationEvent avec un type specifiquehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/47Calcul des disponibilités de calendrier2019-05-17T12:20:13ZMathieu LirzinCalcul des disponibilités de calendrierAfin de pouvoir gérer la planification de commandes, il serait utile de définir des service associés à l'entité `techDataCalendar` pour définir des calendriers de disponibilités et calculer les prochaines dates disponibles.
- [X] Implém...Afin de pouvoir gérer la planification de commandes, il serait utile de définir des service associés à l'entité `techDataCalendar` pour définir des calendriers de disponibilités et calculer les prochaines dates disponibles.
- [X] Implémenter un prototype permettant de gérer les jours et semaines d'exceptions
- [ ] Adapter aux besoins spécifiques liés à la planification de commandesBonne Année 2019Charles STELTZLENCharles STELTZLENhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/112Creation d'un theme vierge standard2020-05-25T16:09:11ZLeila MekikaCreation d'un theme vierge standardla repriseMarine DesmarchelierMarine Desmarchelierhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/114Proposer une gestion de notes associées au shipment2024-03-22T09:15:42ZPierre GaudinProposer une gestion de notes associées au shipmentDe manière identique a ce qui est fait sur ordr, quote, workeffort .... ajouter une gestion de note associé à l'objet Shipment via une table ShipmentNote.
Il faudrait faire les modifications suivantes :
modification du modèle de données...De manière identique a ce qui est fait sur ordr, quote, workeffort .... ajouter une gestion de note associé à l'objet Shipment via une table ShipmentNote.
Il faudrait faire les modifications suivantes :
modification du modèle de données
développement des services
développement de l'écran de gestion + requestmap et viewla reprisePierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/56Reflexion sur les EntityLabels2019-04-11T13:54:23ZNicolas MalinReflexion sur les EntityLabelsLorsque l'on doit rajouter les descriptions labellisé sur des données (comme Enumeration ou StatusItem), il n'est pas possible de les rajouter dans les plugins.
```xml
<entity entity-name="ShipmentMethodType" default-resource-name="Pro...Lorsque l'on doit rajouter les descriptions labellisé sur des données (comme Enumeration ou StatusItem), il n'est pas possible de les rajouter dans les plugins.
```xml
<entity entity-name="ShipmentMethodType" default-resource-name="ProductEntityLabels"
```
```xml
<!-- DECATHLON specific -->
<property key="Uom.abbreviation.TF_day">
<value xml:lang="en">d</value>
<value xml:lang="fr">j</value>
</property>
<property key="Uom.abbreviation.TF_hr">
<value xml:lang="en">h</value>
<value xml:lang="fr">h</value>
</property>
<property key="Uom.abbreviation.TF_min">
<value xml:lang="en">min</value>
<value xml:lang="fr">min</value>
</property>
<!-- DECATHLON specific -->
```
Il faut dans un premier temps à réflechir comment surcharger la definition des entity labels pour ne plus à avoir à surcharger le standard et savoir comment pour alimenter les traductions dans le même esprithttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/57Amélioration HttpClient2019-04-11T13:46:46ZNicolas MalinAmélioration HttpClientAjout de la possibilité d'appeler getStream et postStream on utilisant l'overrideTrust) (voir HttpClient.java de Pro20200/ofbiz-framework)Ajout de la possibilité d'appeler getStream et postStream on utilisant l'overrideTrust) (voir HttpClient.java de Pro20200/ofbiz-framework)https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/58Escape Entity character dans StringUtil2019-04-11T13:49:24ZNicolas MalinEscape Entity character dans StringUtil```
public static String escapeEntityCharacters(String src) {
StringBuffer result = new StringBuffer();
if(src != null && src.length() != 0) {
int index = -1;
char c = (char)0;
Stri...```
public static String escapeEntityCharacters(String src) {
StringBuffer result = new StringBuffer();
if(src != null && src.length() != 0) {
int index = -1;
char c = (char)0;
String chars = "àâäéèêëîïôöùûüç'’_\"&";
String entitys = "à|â|ä|é|è|ê|ë|î|ï|" +
"ô|ö|ù|û|ü|ç|'|’|_|"|&";
String[] replace = entitys.split("\\|");
for(int i=0; i < src.length(); i++) {
c = src.charAt(i);
if((index = chars.indexOf(c)) != -1) {
result.append(replace[index]);
}else{
result.append(c);
}
}
}
return result.toString();
}
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/59Ajout de isHexInteger dans UtilValidate2019-04-11T13:51:33ZNicolas MalinAjout de isHexInteger dans UtilValidate```java
/* DECATHLON Specific*/
public static boolean isHexInteger(String s) {
if (isEmpty(s)) return defaultEmptyOK;
// Search through string's characters one by one
// until we find a non-numeric charac...```java
/* DECATHLON Specific*/
public static boolean isHexInteger(String s) {
if (isEmpty(s)) return defaultEmptyOK;
// Search through string's characters one by one
// until we find a non-numeric character.
// When we do, return false; if we don't, return true.
for (int i = 0; i < s.length(); i++) {
// Check that current character is number.
char c = s.charAt(i);
if (!isHexDigit(c)) return false;
}
// All characters are numbers.
return true;
}
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/61Affichage des retour de l'autocomplete2019-04-11T14:47:18ZNicolas MalinAffichage des retour de l'autocompletePouvoir définir un template d'affichage pour les retour de l'auto complete qui ne support actuelleent que {[pk] description}
En supplément: lors de l'itération des champs, bien prendre l'ensemble des searchField et pas que le premierPouvoir définir un template d'affichage pour les retour de l'auto complete qui ne support actuelleent que {[pk] description}
En supplément: lors de l'itération des champs, bien prendre l'ensemble des searchField et pas que le premierhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/62Reflexion comment enlever les identification d'entité d'application de sendMa...2019-04-11T14:54:30ZNicolas MalinReflexion comment enlever les identification d'entité d'application de sendMailInterfaceActuellement l'interface ajoute orderId, returnId, custRequestId, ect qui ne semble pas une bonne façon de faire pour pouvoir géré chaque entité qui pourrait être associé à un commEvent par email.
Reflexion général de comment faire autr...Actuellement l'interface ajoute orderId, returnId, custRequestId, ect qui ne semble pas une bonne façon de faire pour pouvoir géré chaque entité qui pourrait être associé à un commEvent par email.
Reflexion général de comment faire autrementhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/64Ajout de jsonUploadResponseFromRequestAttributes dans le standard2020-05-25T16:09:11ZNicolas MalinAjout de jsonUploadResponseFromRequestAttributes dans le standardSur CommonEvents.java
```
// ========= = DECATHLON specific = ==========
public static String jsonUploadResponseFromRequestAttributes(HttpServletRequest request, HttpServletResponse response) throws IOException {
// pull...Sur CommonEvents.java
```
// ========= = DECATHLON specific = ==========
public static String jsonUploadResponseFromRequestAttributes(HttpServletRequest request, HttpServletResponse response) throws IOException {
// pull out the service response from the request attribute
Map<String, Object> attrMap = UtilHttp.getJSONAttributeMap(request);
for (String ignoreAttr : ignoreAttrs) {
if (attrMap.containsKey(ignoreAttr)) {
attrMap.remove(ignoreAttr);
}
}
// create a JSON Object for return
JSON json = JSON.from(attrMap);
writeJSONtoResponse(json, request, response, "text/html"); //text-html since jquery.upload don't work wit contentType application/x-json : http://lagoscript.org/jquery/upload/documentation
return "success";
}
}
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/65Reflexion perfomFind Group condition2019-04-11T15:11:21ZNicolas MalinReflexion perfomFind Group conditionCe qui a était commité ne permet pas de faire fonctionner correctement les cas eu sur dktCe qui a était commité ne permet pas de faire fonctionner correctement les cas eu sur dkthttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/66Amélioration performFind, ajout du notEmpty2019-04-11T15:11:48ZNicolas MalinAmélioration performFind, ajout du notEmptyhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/67Amélioration performFind, create SingleCondition, gestion du In avec des string2019-04-11T15:14:19ZNicolas MalinAmélioration performFind, create SingleCondition, gestion du In avec des string```
// ========= = DECATHLON specific = ==========
if ((fieldOp == EntityOperator.IN || fieldOp == EntityOperator.NOT_IN ) && fieldValue instanceof String) {
fieldObject = UtilMisc.toList(fieldValue);
...```
// ========= = DECATHLON specific = ==========
if ((fieldOp == EntityOperator.IN || fieldOp == EntityOperator.NOT_IN ) && fieldValue instanceof String) {
fieldObject = UtilMisc.toList(fieldValue);
}
// ========= = DECATHLON specific = ==========
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/68Amélioration EmailServices.java : envoi avec plusieurs contents associé au mail2019-04-11T15:20:09ZNicolas MalinAmélioration EmailServices.java : envoi avec plusieurs contents associé au mailLors d'un envoie email, on ne peux actuellement qu'envoyer un document attaché, amélioration proposée :
```
// check if attachment screen location passed in
// ========= = DECATHLON specific = ==========
/*
...Lors d'un envoie email, on ne peux actuellement qu'envoyer un document attaché, amélioration proposée :
```
// check if attachment screen location passed in
// ========= = DECATHLON specific = ==========
/*
if (UtilValidate.isNotEmpty(xslfoAttachScreenLocationList)) {
List<Map<String, ? extends Object>> bodyParts = new LinkedList<Map<String, ? extends Object>>();
*/
List<Map<String, ? extends Object>> bodyParts = new LinkedList<Map<String, ? extends Object>>();
List<Map<String, ? extends Object>> contents = UtilGenerics.checkList(bodyParameters.get("contents"));
if (UtilValidate.isNotEmpty(contents)) {
bodyParts.addAll(contents);
isMultiPart = true;
serviceContext.put("bodyParts", bodyParts);
}
if (UtilValidate.isNotEmpty(xslfoAttachScreenLocationList) || ! bodyParts.isEmpty()) {
// ========= = DECATHLON specific = ==========
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/69Amélioration EmailServices.java : forcer l'adresse de from pour tous les emai...2019-07-12T13:22:28ZNicolas MalinAmélioration EmailServices.java : forcer l'adresse de from pour tous les emails sortantAfin de forcer tous les email sortant sur l'adresse configurér dans les properties
```
// ========= = DECATHLON specific = ==========
if ("true".equalsIgnoreCase(EntityUtilProperties.getPropertyValue("general", "forceFro...Afin de forcer tous les email sortant sur l'adresse configurér dans les properties
```
// ========= = DECATHLON specific = ==========
if ("true".equalsIgnoreCase(EntityUtilProperties.getPropertyValue("general", "forceFromEmailAddressToDefault", "false", delegator))) {
sendFrom = EntityUtilProperties.getPropertyValue("general", "defaultFromEmailAddress", delegator);
}
// ========= = DECATHLON specific = ==========
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/70Correction LoginServices, la création des utilisateurs externe par createUser...2019-04-11T15:35:35ZNicolas MalinCorrection LoginServices, la création des utilisateurs externe par createUserLogin ne marche pasDu à la nom présente de hasLoggedOut à Y
```
GenericValue userLoginToCreate = delegator.makeValue("UserLogin", UtilMisc.toMap("userLoginId", userLoginId));
checkNewPassword(userLoginToCreate, null, currentPassword, curre...Du à la nom présente de hasLoggedOut à Y
```
GenericValue userLoginToCreate = delegator.makeValue("UserLogin", UtilMisc.toMap("userLoginId", userLoginId));
checkNewPassword(userLoginToCreate, null, currentPassword, currentPasswordVerify, passwordHint, errorMessageList, true, locale);
userLoginToCreate.set("externalAuthId", externalAuthId);
userLoginToCreate.set("passwordHint", passwordHint);
userLoginToCreate.set("enabled", enabled);
userLoginToCreate.set("hasLoggedOut", "Y");// ========= = DECATHLON specific = ==========
userLoginToCreate.set("requirePasswordChange", requirePasswordChange);
userLoginToCreate.set("currentPassword", useEncryption ? HashCrypt.cryptUTF8(getHashType(), null, currentPassword) : currentPassword);
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/71Correction LoginService: donner le format du pattern lors d'un nv mdp s'il ne...2019-04-11T15:38:03ZNicolas MalinCorrection LoginService: donner le format du pattern lors d'un nv mdp s'il ne le respecte pas```
Map<String, String> messageMap = UtilMisc.toMap("minPasswordLength", Integer.toString(minPasswordLength));
String passwordPatternMessage = EntityUtilProperties.getPropertyValue("security",
...```
Map<String, String> messageMap = UtilMisc.toMap("minPasswordLength", Integer.toString(minPasswordLength));
String passwordPatternMessage = EntityUtilProperties.getPropertyValue("security",
"security.login.password.pattern.description", "loginservices.password_must_be_least_characters_long", delegator);
errMsg = UtilProperties.getMessage(resource, passwordPatternMessage, messageMap, locale);
// ========= = DECATHLON specific = ==========
messageMap = UtilMisc.toMap("passwordPatternMessage", errMsg);
errMsg = UtilProperties.getMessage(resource,"loginservices.password.pattern.errmsg", messageMap, locale);
// ========= = DECATHLON specific = ==========
errorMessageList.add(errMsg);
}
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/72Amélioration dataField2019-04-11T15:42:12ZNicolas MalinAmélioration dataFieldAjout de fonction :
```
// ========= = DECATHLON specific = ==========
public Map<String, Object> getFields() {
return fields;
}
public Map<String, Object> getTrimedFields() {
for (Map.Entry<String, Obj...Ajout de fonction :
```
// ========= = DECATHLON specific = ==========
public Map<String, Object> getFields() {
return fields;
}
public Map<String, Object> getTrimedFields() {
for (Map.Entry<String, Object> field : fields.entrySet()) {
Object value = field.getValue();
if(value != null && value instanceof String){
field.setValue(((String)value).trim());
}
}
return fields;
}
// ========= = DECATHLON specific = ==========```
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/73Reflexion: Comment définir des "aggregate-function" multibase2019-04-12T08:33:19ZNicolas MalinReflexion: Comment définir des "aggregate-function" multibaseles fonctions d'agregation comme
```
<xs:simpleType name="aggregate-function">
<xs:restriction base="xs:token">
...
<xs:enumeration value="concat"/>
<xs:enumeration value="replace"/>
<xs...les fonctions d'agregation comme
```
<xs:simpleType name="aggregate-function">
<xs:restriction base="xs:token">
...
<xs:enumeration value="concat"/>
<xs:enumeration value="replace"/>
<xs:enumeration value="substring"/>
</xs:restriction>
</xs:simpleType>
```
Sont souvent dépendantes de la base de donnée, comment faire pourvoir les exploiters dans le framework de manière générique, voir comment en ajouter d'autre depuis les pluginshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/75Amélioration: Ajout de makeEntityCondition sur les vue dynamique2021-04-14T06:23:34ZNicolas MalinAmélioration: Ajout de makeEntityCondition sur les vue dynamique```
// ========= = DECATHLON specific = ==========
public ViewEntityCondition makeViewEntityCondition(Delegator delegator, String entityAlias, String fieldName, String operator, String value) {
return makeViewEntityConditi...```
// ========= = DECATHLON specific = ==========
public ViewEntityCondition makeViewEntityCondition(Delegator delegator, String entityAlias, String fieldName, String operator, String value) {
return makeViewEntityCondition(delegator, entityAlias, fieldName, operator, value, "");
}
public ViewEntityCondition makeViewEntityCondition(Delegator delegator, String entityAlias, String fieldName, String operator, String value, String relEntityAlias) {
return makeViewEntityCondition(delegator, entityAlias, fieldName, operator, value, relEntityAlias, "");
}
public ViewEntityCondition makeViewEntityCondition(Delegator delegator, String entityAlias, String fieldName, String operator, String value, String relEntityAlias, String relFieldName) {
HashMap<String, Object> myElement = new HashMap<String, Object>() ;
HashMap<String, Object> whereConditionExpr = new HashMap<String, Object>() ;
if (UtilValidate.isNotEmpty(entityAlias)) {
whereConditionExpr.put("entity-alias",entityAlias) ;
}
if (UtilValidate.isNotEmpty(fieldName)) {
whereConditionExpr.put("field-name",fieldName) ;
}
if (UtilValidate.isNotEmpty(operator)) {
whereConditionExpr.put("operator",operator) ;
}
if (UtilValidate.isNotEmpty(value)) {
whereConditionExpr.put("value",value) ;
}
if (UtilValidate.isNotEmpty(relEntityAlias)) {
whereConditionExpr.put("rel-entity-alias",relEntityAlias) ;
}
if (UtilValidate.isNotEmpty(relFieldName)) {
whereConditionExpr.put("rel-field-name",relFieldName) ;
}
myElement.put("whereConditionExpr",whereConditionExpr) ;
return new ViewEntityCondition(this.makeModelViewEntity(delegator), null, myElement) ;
}
// ========= = DECATHLON specific = ==========
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/76Réflexion: Comment surcharger des définitions de moteur de service depuis plu...2019-04-12T08:54:17ZNicolas MalinRéflexion: Comment surcharger des définitions de moteur de service depuis pluginsSi nous voulons ajouter un nouveau moteur (api) depuis un plugins il est nécessaire d'aller modifier serviceengine.xml
Il faudrait réfléchir comment modifier cela pour pouvoir ajouter de nouveau moteur depuis les pluginsSi nous voulons ajouter un nouveau moteur (api) depuis un plugins il est nécessaire d'aller modifier serviceengine.xml
Il faudrait réfléchir comment modifier cela pour pouvoir ajouter de nouveau moteur depuis les pluginshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/77Amélioration: EntitySaxReader2019-04-12T08:55:36ZNicolas MalinAmélioration: EntitySaxReaderAjout d'une balise <sql> permettant des appels sql lors du chargement de dataAjout d'une balise <sql> permettant des appels sql lors du chargement de datahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/78Reflexion: Appel rest et contentType2019-04-12T09:04:49ZNicolas MalinReflexion: Appel rest et contentTypeSTORE-2036 : ajout d'un parametrage de service rest pour la définition d'un contentType (application/json pour le besoin compteurmère), il ne devrait pas avoir d'impactSTORE-2036 : ajout d'un parametrage de service rest pour la définition d'un contentType (application/json pour le besoin compteurmère), il ne devrait pas avoir d'impacthttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/79Reflexion: Comment piloter/plannifier l'execution de service avec plusieur pool2019-04-12T09:06:05ZNicolas MalinReflexion: Comment piloter/plannifier l'execution de service avec plusieur poolActuellement dans DTK nous avons un sendToPool directement sur la def de service qui ne semble pas très efficace en terme de facilité de paramétrageActuellement dans DTK nous avons un sendToPool directement sur la def de service qui ne semble pas très efficace en terme de facilité de paramétragehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/80Amélioratio,: ModelServiceReader ajout des request/response en entrée de service2019-04-12T09:09:08ZNicolas MalinAmélioratio,: ModelServiceReader ajout des request/response en entrée de servicePour permettre la génération d'écran comme pour l'envoi d'email automatiquePour permettre la génération d'écran comme pour l'envoi d'email automatiquehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/81Amélioration: RequestHandler garder le nom du fichier lors d'erreur2021-11-10T09:13:01ZNicolas MalinAmélioration: RequestHandler garder le nom du fichier lors d'erreurLors d'un retour erreur avec d'un fichier on perd le nom du fichier à transférer
```
/* DECATHLON specific */
//TODO : suggest to DEV -> manage return error request (no need to retrieve the file name)
if (contentT...Lors d'un retour erreur avec d'un fichier on perd le nom du fichier à transférer
```
/* DECATHLON specific */
//TODO : suggest to DEV -> manage return error request (no need to retrieve the file name)
if (contentType.contains("application") || contentType.contains("text")) {
String fileName = req.getParameter("responseFileName");
if (UtilValidate.isEmpty(fileName)) fileName = (String) req.getAttribute("responseFileName");
if (UtilValidate.isNotEmpty(fileName)) {
resp.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
}
}
/* DECATHLON specific */
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/82Amélioration: Ajout d'un util jst pour savoir si une requette ajax est en err...2019-04-12T09:24:46ZNicolas MalinAmélioration: Ajout d'un util jst pour savoir si une requette ajax est en erreur ou pasSur Dkt nous avons ça
```
$.ajax({
type: "POST",
url: "removeItemList",
async: false,
data: ajaxParam.data,
success: function (data: AjaxData) {
makeFloatingMe...Sur Dkt nous avons ça
```
$.ajax({
type: "POST",
url: "removeItemList",
async: false,
data: ajaxParam.data,
success: function (data: AjaxData) {
makeFloatingMessage(data);
if (data.responseMessage === "success") {
```
Qui implique une modification du ServiceEvenetHandler, il faudrait plutot passer par un Util qui indique si la requete est un succès ou pashttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/83Amélioration: Lors de l'affichage des sociétés, filter par celle où on est em...2019-04-12T09:30:03ZNicolas MalinAmélioration: Lors de l'affichage des sociétés, filter par celle où on est employéChangeOrgPartyId.groovy
```
// ========= = DECATHLON specific = ==========
/*
partyAcctgPrefAndGroupList.add(["key":group.partyId,"value":group.groupName])
*/
if (userLogin) {
//check userLogin employment
em...ChangeOrgPartyId.groovy
```
// ========= = DECATHLON specific = ==========
/*
partyAcctgPrefAndGroupList.add(["key":group.partyId,"value":group.groupName])
*/
if (userLogin) {
//check userLogin employment
employeeAssoc = delegator.findList("Employment", EntityCondition.makeCondition(["roleTypeIdTo": "EMPLOYEE", "roleTypeIdFrom": "INTERNAL_ORGANIZATIO", "partyIdTo" : userLogin.partyId,"partyIdFrom": group.partyId]), null, null, null, false);
if (employeeAssoc) {
partyAcctgPrefAndGroupList.add(["key":group.partyId,"value":group.groupName]);
}
}
// ========= = DECATHLON specific = ==========
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/85Amélioration: PriceService, récupération du prix d'un article sur les lignes ...2019-09-04T09:24:52ZNicolas MalinAmélioration: PriceService, récupération du prix d'un article sur les lignes produit de l'accord```
if (UtilValidate.isNotEmpty(agreementId)) {
try {
GenericValue agreementPriceValue = EntityQuery.use(delegator).from("AgreementItemAndProductAppl").where("agreementId", agreementId, "productId", pro...```
if (UtilValidate.isNotEmpty(agreementId)) {
try {
GenericValue agreementPriceValue = EntityQuery.use(delegator).from("AgreementItemAndProductAppl").where("agreementId", agreementId, "productId", productId, "currencyUomId", currencyDefaultUomId).queryFirst();
//======= Decathlon Specific ======
if (null != agreementPriceValue && !currencyDefaultUomId.equals(currencyUomIdTo)) {
agreementPriceValue = EntityQuery.use(delegator).from("AgreementItemAndProductAppl")
.where("agreementId", agreementId, "productId", productId, "currencyUomId", currencyUomIdTo).queryFirst();
}
//======= Decathlon Specific ======
if (agreementPriceValue != null && agreementPriceValue.get("price") != null) {
defaultPriceValue = agreementPriceValue;
}
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/86Amélioration: Ajout de sequenceNum sur ProductPriceRule2019-04-12T12:35:28ZNicolas MalinAmélioration: Ajout de sequenceNum sur ProductPriceRuleAfin de permettre un ordre sur l'enchainement des règles à appliquerAfin de permettre un ordre sur l'enchainement des règles à appliquerhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/87Amélioration: calcShipmentCostEstimate rajouter priceUomId et partyId dans le...2019-04-12T12:43:37ZNicolas MalinAmélioration: calcShipmentCostEstimate rajouter priceUomId et partyId dans les fitres du service```
// Now check the tests.
if ((!useWeight || weightValid) && (!useQty || qtyValid) && (!usePrice || priceValid)) {
if (Debug.infoOn())
...```
// Now check the tests.
if ((!useWeight || weightValid) && (!useQty || qtyValid) && (!usePrice || priceValid)) {
if (Debug.infoOn())
Debug.logInfo(" # ADD : " + thisEstimate.getPkShortValueString()
+ " with w" + useWeight + " " + weightValid + " q" + useQty + " "
+ qtyValid + " p" + usePrice + " " + priceValid, module);
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/88Amélioration: Encodage des productId dans les appel content sur EditProductCo...2020-05-25T16:09:11ZNicolas MalinAmélioration: Encodage des productId dans les appel content sur EditProductContent.ftl```
<h3>${uiLabelMap.ProductUploadImage}</h3>
<#assign urlEncodedProductId = "UploadProductImage?"
+ Static["org.apache.ofbiz.base.util.UtilHttp"].urlEncodeArgs({"productId",productId}, false)!
+ "&amp;upload_fil...```
<h3>${uiLabelMap.ProductUploadImage}</h3>
<#assign urlEncodedProductId = "UploadProductImage?"
+ Static["org.apache.ofbiz.base.util.UtilHttp"].urlEncodeArgs({"productId",productId}, false)!
+ "&upload_file_type=">
<form method="post" enctype="multipart/form-data" action="<@ofbizUrl>${urlEncodedProductId}original</@ofbizUrl>" name="imageUploadForm">
<table cellspacing="0" class="basic-table">
<tr>
<td width="20%" align="right" valign="top">
<input type="file" size="50" name="fname"/>
</td>
<td> </td>
<td width="80%" colspan="4" valign="top">
<label><input type="radio" name="upload_file_type_bogus" value="small" onclick='setUploadUrl("<@ofbizUrl>${urlEncodedProductId}small</@ofbizUrl>");'/>${uiLabelMap.CommonSmall}</label>
<label><input type="radio" name="upload_file_type_bogus" value="medium" onclick='setUploadUrl("<@ofbizUrl>${urlEncodedProductId}medium</@ofbizUrl>");'/>${uiLabelMap.CommonMedium}</label>
<label><input type="radio" name="upload_file_type_bogus" value="large"onclick='setUploadUrl("<@ofbizUrl>${urlEncodedProductId}large</@ofbizUrl>");'/>${uiLabelMap.CommonLarge}</label>
<label><input type="radio" name="upload_file_type_bogus" value="detail" onclick='setUploadUrl("<@ofbizUrl>${urlEncodedProductId}detail</@ofbizUrl>");'/>${uiLabelMap.CommonDetail}</label>
<label><input type="radio" name="upload_file_type_bogus" value="original" checked="checked" onclick='setUploadUrl("<@ofbizUrl>${urlEncodedProductId}original</@ofbizUrl>");'/>${uiLabelMap.ProductOriginal}</label>
<input type="submit" class="smallSubmit" value="${uiLabelMap.ProductUploadImage}"/>
</td>
</tr>
</table>
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/89Reflexion: Comment améliorer le réenvoie de communication Event2019-04-12T13:24:36ZNicolas MalinReflexion: Comment améliorer le réenvoie de communication EventComme fait chez DKT pour renvoyer des flux ftp cf CommunicationEventServices.xml dans
https://labs.nereide.fr/10923/framework/ofbiz-framework/blob/develop/applications/party/minilang/communication/CommunicationEventServices.xmlComme fait chez DKT pour renvoyer des flux ftp cf CommunicationEventServices.xml dans
https://labs.nereide.fr/10923/framework/ofbiz-framework/blob/develop/applications/party/minilang/communication/CommunicationEventServices.xmlhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/91Amélioration: PartyContentWrapper filtrage à date2019-04-12T13:39:14ZNicolas MalinAmélioration: PartyContentWrapper filtrage à dateMettre une date pour le filtrage des contenus de l'acteur plutot que now()Mettre une date pour le filtrage des contenus de l'acteur plutot que now()https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/92Amélioration: Mettre un cache sur l'appel PartyHelper.getPartyName()2019-04-12T13:40:12ZNicolas MalinAmélioration: Mettre un cache sur l'appel PartyHelper.getPartyName()https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/95Amélioration: getNextOrderId si customMethod pas de renvoie de prefix product...2019-04-12T14:12:29ZNicolas MalinAmélioration: getNextOrderId si customMethod pas de renvoie de prefix productStorehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/96Amélioration: Ajouter les crud pour CustRequestWorkEffort2019-08-26T07:40:52ZNicolas MalinAmélioration: Ajouter les crud pour CustRequestWorkEffortS'inspirer de QuoteWorkEffortS'inspirer de QuoteWorkEfforthttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/97Amélioration: createCustRequestFromCommEvent propagation des roles2019-04-12T14:48:33ZNicolas MalinAmélioration: createCustRequestFromCommEvent propagation des rolesPropager les roles de la commEvent sur la custRequestPropager les roles de la commEvent sur la custRequesthttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/99Amélioration: Gérer les Attributes du cart dans la shopping List pour la svg2019-04-12T15:33:53ZNicolas MalinAmélioration: Gérer les Attributes du cart dans la shopping List pour la svgvoir dkt car c'est un poil balaise ce truc :)voir dkt car c'est un poil balaise ce truc :)https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/100Correction: Réecrire createShoppingListItem qui n'est pas un CRUD logique2019-04-12T15:38:59ZNicolas MalinCorrection: Réecrire createShoppingListItem qui n'est pas un CRUD logiquehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/101Amélioration: Mise à jour de commande ne pas ignorer les erreurs de maj de st...2019-04-12T15:46:42ZNicolas MalinAmélioration: Mise à jour de commande ne pas ignorer les erreurs de maj de status```
<action service="checkOrderItemStatus" mode="sync" ignore-error="false"/>
``````
<action service="checkOrderItemStatus" mode="sync" ignore-error="false"/>
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/102Amélioration: Annulation commande, affichage du changeReason2020-05-25T16:09:09ZNicolas MalinAmélioration: Annulation commande, affichage du changeReasonSur le détail de commande pur comprendre ce qui est à l'origineSur le détail de commande pur comprendre ce qui est à l'originehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/103Reflexion: Annulation de commande2020-05-25T16:09:11ZNicolas MalinReflexion: Annulation de commandeVoir en général la relation d'annulation entre les commandes de vente et d'achatVoir en général la relation d'annulation entre les commandes de vente et d'achathttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/104Amélioration: updateOrderItems possibilité de mettre à jour les itemShipBefor...2019-04-12T16:14:47ZNicolas MalinAmélioration: updateOrderItems possibilité de mettre à jour les itemShipBeforeDateMap```
<service name="updateOrderItems" engine="java" auth="true"
location="org.apache.ofbiz.order.order.OrderServices" invoke="updateApprovedOrderItems" transaction-timeout="7200">
<description>Update the quantities/...```
<service name="updateOrderItems" engine="java" auth="true"
location="org.apache.ofbiz.order.order.OrderServices" invoke="updateApprovedOrderItems" transaction-timeout="7200">
<description>Update the quantities/prices for an existing order</description>
...
<attribute name="itemReserveAfterDateMap" type="Map" mode="IN" string-map-prefix="iradm_" optional="true"/>
<attribute name="itemShipBeforeDateMap" type="Map" mode="IN" string-map-prefix="isbdm_" optional="true"/><!-- DECATHLON specific -->
<attribute name="shoppingCart" type="org.apache.ofbiz.order.shoppingcart.ShoppingCart" mode="OUT" optional="false"/>
</service>
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/105Amélioration: Dropship OrderServices.java donnée manquante à la création du s...2020-05-25T16:09:09ZNicolas MalinAmélioration: Dropship OrderServices.java donnée manquante à la création du shigroup d'achatOrderServices.java:5292
```
cartShipInfo.setShipGroupSeqId(UtilFormatOut.formatPaddedNumber(1, 5));// Initialise le shipGroupSeqId (sinon OrderItemAssoc avec NA)
```OrderServices.java:5292
```
cartShipInfo.setShipGroupSeqId(UtilFormatOut.formatPaddedNumber(1, 5));// Initialise le shipGroupSeqId (sinon OrderItemAssoc avec NA)
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/106Amélioration: ShoppingCart possibilité de mettre plusieurs contactMect avec l...2019-04-15T15:40:36ZNicolas MalinAmélioration: ShoppingCart possibilité de mettre plusieurs contactMect avec le même purposeActuellement le shopping prend en map les purposes ce qui ne permet pas de pouvoir stocker plusieur order_email par example alors que le modèle le permetActuellement le shopping prend en map les purposes ce qui ne permet pas de pouvoir stocker plusieur order_email par example alors que le modèle le permethttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/107Amélioration: ShoppingCart retourner tous les attributes2019-04-15T15:41:45ZNicolas MalinAmélioration: ShoppingCart retourner tous les attributes```
public Map<String, Object> getAttributes() {
return attributes;
}
``````
public Map<String, Object> getAttributes() {
return attributes;
}
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/108Amélioration: ShoppingCart NPE sur addAdditionalPartyRole2019-04-15T15:59:51ZNicolas MalinAmélioration: ShoppingCart NPE sur addAdditionalPartyRole```
3535
public void addAdditionalPartyRole(String partyId, String roleTypeId) {
if (partyId == null || roleTypeId == null) {
return;
}
``````
3535
public void addAdditionalPartyRole(String partyId, String roleTypeId) {
if (partyId == null || roleTypeId == null) {
return;
}
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/109Amélioration: ShoppingCart addOrderTerm appel addOrderTerm ^^2020-05-25T16:09:11ZNicolas MalinAmélioration: ShoppingCart addOrderTerm appel addOrderTerm ^^```
/** Add an orderTerm to the order */
public int addOrderTerm(String termTypeId, BigDecimal termValue, Long termDays, String textValue) {
return addOrderTerm(termTypeId, null, termValue, termDays, textValue, null);
...```
/** Add an orderTerm to the order */
public int addOrderTerm(String termTypeId, BigDecimal termValue, Long termDays, String textValue) {
return addOrderTerm(termTypeId, null, termValue, termDays, textValue, null);
}
public int addOrderTerm(String termTypeId, String orderItemSeqId,BigDecimal termValue, Long termDays, String textValue, String description) {
GenericValue orderTerm = this.getDelegator().makeValue("OrderTerm");
orderTerm.put("termTypeId", termTypeId);
if (UtilValidate.isEmpty(orderItemSeqId)) {
orderItemSeqId = "_NA_";
}
orderTerm.put("orderItemSeqId", orderItemSeqId);
orderTerm.put("termValue", termValue);
orderTerm.put("termDays", termDays);
orderTerm.put("textValue", textValue);
orderTerm.put("description", description);
return addOrderTerm(orderTerm);
}
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/110Reflexions sur la surcharge du panier ShoppingCart/ShoppingCartItem2020-05-25T16:09:11ZLeila MekikaReflexions sur la surcharge du panier ShoppingCart/ShoppingCartItemOn ne peut pas actuellement modifier le ShoppingCart sans toucher au standard.
Il faudrait trouver un moyen de surcharger la classe dans un java spécifique quand un projet nécessite de toucher a la structure avec des modifications trop s...On ne peut pas actuellement modifier le ShoppingCart sans toucher au standard.
Il faudrait trouver un moyen de surcharger la classe dans un java spécifique quand un projet nécessite de toucher a la structure avec des modifications trop spécifiques pour être remontées.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/84Amélioration: Ajout de ShipmentAttribute2019-09-13T12:31:07ZNicolas MalinAmélioration: Ajout de ShipmentAttribute```
<service name="createShipmentAttribute" default-entity-name="ShipmentAttribute" engine="entity-auto" invoke="create" auth="true">
<description>Create an ShipmentAttribute</description>
<permission-service service-...```
<service name="createShipmentAttribute" default-entity-name="ShipmentAttribute" engine="entity-auto" invoke="create" auth="true">
<description>Create an ShipmentAttribute</description>
<permission-service service-name="acctgAgreementPermissionCheck" main-action="CREATE"/>
<auto-attributes include="pk" mode="IN" optional="false"/>
<auto-attributes include="nonpk" mode="IN" optional="true"/>
</service>
<service name="updateShipmentAttribute" default-entity-name="ShipmentAttribute" engine="entity-auto" invoke="update" auth="true">
<description>Update an ShipmentAttribute</description>
<permission-service service-name="acctgAgreementPermissionCheck" main-action="UPDATE"/>
<auto-attributes include="pk" mode="IN" optional="false"/>
<auto-attributes include="nonpk" mode="IN" optional="true"/>
</service>
<service name="deleteShipmentAttribute" default-entity-name="ShipmentAttribute" engine="entity-auto" invoke="delete" auth="true">
<description>Delete an ShipmentAttribute</description>
<permission-service service-name="acctgAgreementPermissionCheck" main-action="UPDATE"/>
<auto-attributes include="pk" mode="IN" optional="false"/>
</service>
```la reprisePierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/90Amélioration: sendCommEventAsEmail on verifie que les emails à ajouter ne son...2019-05-30T20:25:08ZNicolas MalinAmélioration: sendCommEventAsEmail on verifie que les emails à ajouter ne sont pas déjà présentPour éviter les doublons d'envoi si plusieurs acteur ont était ajouter à la commEvent
```
CommunicationEventServices:168
for (GenericValue commRole : commRoles) { // 'from' and 'to' already defined on communication e...Pour éviter les doublons d'envoi si plusieurs acteur ont était ajouter à la commEvent
```
CommunicationEventServices:168
for (GenericValue commRole : commRoles) { // 'from' and 'to' already defined on communication event
List<String> availableRoleTypeIds = UtilMisc.toList("ADDRESSEE", "CC", "BCC");
GenericValue contactMech = commRole.getRelatedOne("ContactMech", false);
if (UtilValidate.isNotEmpty(contactMech)) {
String infoString = contactMech.getString("infoString");
String roleTypeId = commRole.getString("roleTypeId");
if (UtilValidate.isNotEmpty(infoString)) {
if (!emailAlreadyLoad.contains(infoString)
&& availableRoleTypeIds.contains(roleTypeId)) {
emailAlreadyLoad.add(infoString);
} else continue;
if ("ADDRESSEE".equals(roleTypeId)) {
sendTo = "," + infoString;
} else if ("CC".equals(roleTypeId)) {
if (sendCc != null) {
sendCc += "," + infoString;
} else {
sendCc = infoString;
}
} else if ("BCC".equals(roleTypeId)) {
if (sendBcc != null) {
sendBcc += "," + infoString;
} else {
sendBcc = infoString;
}
}
}
}
}
}
```Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/117Créer un entityauto pour le service create WorkOrderItemFulfillment2019-08-29T12:40:24ZLudovic GILBONCréer un entityauto pour le service create WorkOrderItemFulfillmentsuite au STORE-2331suite au STORE-2331Ludovic GILBONLudovic GILBONhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/118Même en utilisant un POST ou un PUT HTTPClient utilise la methode GET2020-05-25T16:09:09ZPierre GaudinMême en utilisant un POST ou un PUT HTTPClient utilise la methode GETLors de l'appel d'un WS avec la méthode PUT ou POST, la trame est envoyée via HTTPClient contient la méthode GET.
Pour :
- créer un mockup en écoute (via postman ou soapuId)
- appeler l'url du mockup via la méthode java sendHttpReq...Lors de l'appel d'un WS avec la méthode PUT ou POST, la trame est envoyée via HTTPClient contient la méthode GET.
Pour :
- créer un mockup en écoute (via postman ou soapuId)
- appeler l'url du mockup via la méthode java sendHttpRequestStream avec la méthode PUT ou POST
- la méthode est systématiquement GETPierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/119Ajout de la gestion de la méthod PUT via HTTPClient2020-05-25T16:09:09ZPierre GaudinAjout de la gestion de la méthod PUT via HTTPClientActuellement HTTP client ne sait gérer que les méthodes GET et POST.
L'objectif est de pouvoir gérer également la méthode PUT
Pour tester :
créer un mockup via SOAPUi ou Postman
appeler le endpoint du mockup via la méthode putStream()...Actuellement HTTP client ne sait gérer que les méthodes GET et POST.
L'objectif est de pouvoir gérer également la méthode PUT
Pour tester :
créer un mockup via SOAPUi ou Postman
appeler le endpoint du mockup via la méthode putStream() de HTTClientPierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/120supprimer les paramètres du body dans la response d'un appel d'API via POST2020-05-25T16:09:11ZPierre Gaudinsupprimer les paramètres du body dans la response d'un appel d'API via POSTLe support des méthodes POST et PUT ont été ajoutés au requestHandler. Ils sont utilisés notamment lors de la création d'API.
Dans le cas de la mise en place d'une API sur OFBiz permettant d'exposer des services appelé via REST, lorsque...Le support des méthodes POST et PUT ont été ajoutés au requestHandler. Ils sont utilisés notamment lors de la création d'API.
Dans le cas de la mise en place d'une API sur OFBiz permettant d'exposer des services appelé via REST, lorsque l'appelant utilise les méthodes POST ou PUT avec un body, l'intégralité du body se retrouve dans la réponse retournée à l'appelant. Il n'est pas possible actuellement de supprimer les paramètres contenu dans le body pour qu'ils ne soient pas retournés à l'appelant.
Pour bien comprendre voici un exemple de trame récue par OFBiz :
```json
{
"order":{
"externalOrderId":"1242",
"applicationId":"BO_DJB",
"businessUnit":"01FR01RET01",
"currencyUom":"EUR",
"customerSIRET":"_NA_",
"customerSegment":"BtoB",
"orderDate":"2019-05-23 11:41:05",
"orderItems":[
{
"productId":"10000",
"quantity":"1",
"unitPrice":10.32,
"externalSeqId":"1",
"itemTaxAmount":1.03,
"itemTaxId":"TVA3",
"itemAdjustmentAmount":0.10
}
]
}
}
```
Voici la réponse d'OFBiz :
```json
{
"order": {
"externalOrderId": "1242",
"applicationId": "BO_DJB",
"businessUnit": "01FR01RET01",
"currencyUom": "EUR",
"customerSIRET": "_NA_",
"customerSegment": "BtoB",
"orderDate": "2019-05-23 11:41:05",
"orderItems": [
{
"productId": "10000",
"quantity": "1",
"unitPrice": 10.32,
"externalSeqId": "1",
"itemTaxAmount": 1.03,
"itemTaxId": "TVA3",
"itemAdjustmentAmount": 0.1
}
]
}
}
```
Il faudrait pouvoir indiquer que si oui ou non on souhaite le paramètre order
Une solution aurait pu etre de mettre en place un nouveau type de response : request-noparam afin de supprimer tous les paramètres et de pouvoir ajouter manuellement ceux que l'on souhaite retourner.
```xml
<response name="success" type="request-noparam" value="json">
<redirect-parameter name=""/>
</response>
```
J'ai essayé cette solution mais sans succès....https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/122Migration et documentation service createCommunicationEvent minilang.2019-07-29T12:33:38ZGil PortenseigneMigration et documentation service createCommunicationEvent minilang.Migration et documentation service createCommunicationEvent minilang. Qui fait beaucoup plus de chose que son nom l'indique.Migration et documentation service createCommunicationEvent minilang. Qui fait beaucoup plus de chose que son nom l'indique.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/123Développement des test de la fonction formatNumber2019-08-23T14:37:56ZAntoine OuvrardDéveloppement des test de la fonction formatNumberDéveloppement des test du dev de la tache https://labs.nereide.fr/10031/Communautaire/issues/54Développement des test du dev de la tache https://labs.nereide.fr/10031/Communautaire/issues/54Antoine OuvrardAntoine Ouvrardhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/124Ajouter un contrôle sur le getOne() dans l'`EntityQuery` concernant les clés ...2020-01-24T16:59:27ZGhost UserAjouter un contrôle sur le getOne() dans l'`EntityQuery` concernant les clés primairesIl est possible de ne pas préciser les clés primaires dans le getOne ce qui entraine un comportement non attendu , l'`EntityQuery` renvoie un résultat null au lieu de lever une exception ou tout autre moyen de détecter que l'on a pas pas...Il est possible de ne pas préciser les clés primaires dans le getOne ce qui entraine un comportement non attendu , l'`EntityQuery` renvoie un résultat null au lieu de lever une exception ou tout autre moyen de détecter que l'on a pas passé l'ensemble des clés.Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/140rendre possible l'ajout de variable dans les noms des fichiers générés via sc...2020-05-25T16:09:11ZPierre Gaudinrendre possible l'ajout de variable dans les noms des fichiers générés via screenfop
Lorsque l'on veut générer un pdf en utilisant le request handler screenfop, le nom du fichier qui est associé au téléchargement dans le navigateur, correspond à la valeur de l'attibut uri du requestMap appelant le handler screenfop.
Pa...
Lorsque l'on veut générer un pdf en utilisant le request handler screenfop, le nom du fichier qui est associé au téléchargement dans le navigateur, correspond à la valeur de l'attibut uri du requestMap appelant le handler screenfop.
Par exemple si j'ai le le requestMap suivant :
```xml
<request-map uri="bdcFournisseur.pdf">
<security https="true" auth="true" />
<response name="success" type="view" value="printOrderPDF" />
</request-map>
<view-map name="printOrderPDF" type="screenfop"
page="component://purchase/widget/purchaseScreens.xml#printOrderPDF"
content-type="application/pdf" encoding="none" />
```
le nom du fichier téléchargé par le navigateur sera "bdcFournisseur.pdf"
![image](/uploads/4aa79e674278ca5a6725c166743ab818/image.png)
L'objectif serait de pouvoir préciser à un niveau un nom de fichier indépendant de celui de l'uri et de pouvoir le variabiliser (par exemple ajouter le numéro de commande)Pierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/128Implémenter des services plus facilement2019-10-21T13:13:23ZMathieu LirzinImplémenter des services plus facilement## Problème
L'API Java pour implémenter des services OFBiz à l'avantage d'être relativement simple dans la mesure où l'ensemble du contexte est accessible de manière locale via ses paramètres.
```java
Map<String, Object> doSync(Map<Str...## Problème
L'API Java pour implémenter des services OFBiz à l'avantage d'être relativement simple dans la mesure où l'ensemble du contexte est accessible de manière locale via ses paramètres.
```java
Map<String, Object> doSync(Map<String, Object> context, Map<String, Object> params);
```
Malheureusement cette simplicité a aussi pour effet d'imposer de manipuler le contexte pour accéder au délégateur et dispatcheur. Cette "difficulté" a amené la communauté OFBiz a déveloper des moteurs de services basés sur des langages spécifiques au domaine (DSL) pour faciliter le travail pour des non-dévéloppeur. D'abord Minilang puis maintenant un DSL embarqué dans Groovy.
Le problème de ces solutions est qu'elles sont inutilement compliqués ce qui les rendent peut flexible et réutilisable.
## Proposition
On faire en sorte que le dispatcheur, le délégateur et les autres fonctionalités principales d'OFBiz soient directement accessibles sans avoir à les extraire du contexte, de sorte de voir uniquement une implémentation comme une fonction de Map → Map
```java
Map<String, Object> wrappedDoSync(Map<String, Object> params);
```
Pour cela on veut créer un adapteur permettant de passer de la première signature de méthode à la deuxième.Gil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/132Utilisation de l'API ‘java.nio.file’2020-05-25T16:09:12ZMathieu LirzinUtilisation de l'API ‘java.nio.file’Depuis Java 1.7, le paquet [`java.nio.file`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/package-summary.html) fournit une interface de programmation (API) plus moderne pour manipuler le système de fichier que l'API du paquet...Depuis Java 1.7, le paquet [`java.nio.file`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/package-summary.html) fournit une interface de programmation (API) plus moderne pour manipuler le système de fichier que l'API du paquet [`java.io`](https://docs.oracle.com/javase/8/docs/api/java/io/package-summary.html). Par exemple l'existence d'une classe `Path` permet de manipuler des noms de fichiers et de dossiers de manière plus sûre et robuste qu'avec de simple chaînes de caractères.
Actuellement OFBiz utilise exclusivement `java.io` mais cela améliorerait la sûreté, la maintenabilité et la lisibilité de migrer vers la nouvelle API `java.io.file`.
Documentation permettant de comprendre comment migrer vers la nouvelle API:
- https://docs.oracle.com/javase/tutorial/essential/io/fileio.html
- https://docs.oracle.com/javase/tutorial/essential/io/legacy.html#mapping
- https://www.jmdoudoux.fr/java/dej/chap-nio2.htm
Jira associé: [OFBIZ-11192](https://issues.apache.org/jira/browse/OFBIZ-11192)la reprisehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/134Comment instancier un `delegator` dans un script groovy2019-09-18T08:45:21ZSamuel TrégouëtComment instancier un `delegator` dans un script groovyJ'aimerais pouvoir écrire un script groovy pour faire des requêtes en base sans démarrer OFBiz, quelquechose du genre
```groovy
def d = getDelegator('default')
println(EntityQuery.use(d).from('Party').queryList())
```
Pour pouvoir fai...J'aimerais pouvoir écrire un script groovy pour faire des requêtes en base sans démarrer OFBiz, quelquechose du genre
```groovy
def d = getDelegator('default')
println(EntityQuery.use(d).from('Party').queryList())
```
Pour pouvoir faire ça j'ai dû écrire ces quelques lignes au préalable:
```groovy
StartupCommand command = new StartupCommand.Builder("start").build()
Config config = new Config([command])
Start s = Start.getInstance()
s.setConfig(config)
Container containerObj = new ComponentContainer()
containerObj.init([command], "component-container", config.containerConfig)
containerObj = new ServiceContainer()
containerObj.init([command], "service-container", config.containerConfig)
```
Le problème c'est que la méthode `Start.setConfig` n'existe pas actuellement, faut-il l'écrire et la poussée dans la communauté ? ou une autre possibilité serait mieux ?la reprisehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/135Mieux gérer les configurations2020-05-25T16:09:11ZGhost UserMieux gérer les configurationsA fin de mieux gérer nos déploiements et gérer les configurations de nos clients nous pensons à "améliorer" le système de chargement des configurations afin de pouvoir gérer plusieurs cas de figures (configuration interne dans le .jar, e...A fin de mieux gérer nos déploiements et gérer les configurations de nos clients nous pensons à "améliorer" le système de chargement des configurations afin de pouvoir gérer plusieurs cas de figures (configuration interne dans le .jar, externe sous forme de fichiers, interne/externe sous forme de variable d'environnement).
Il faudrait donc créer un système utilisant le système de propriété du jdk.
La configuration serait donc chargées comme ceci :
* fichier properties du jar
* variable d'env du jar
* fichier properties externe ou properties passé en paramètre
* variable d'environnement externe
Si une propriété est déjà présente elle est écrasée par la valeur de l'itération supérieure.
Cette tâche est liée à la tâche https://labs.nereide.fr/10031/Communautaire/issues/125https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/137Composant de gestion simple de catalog Finish Good2020-05-25T16:09:11ZNicolas MalinComposant de gestion simple de catalog Finish GoodL'idée est à partir du thème améliorer de Yolande de pouvoir réaliser de nouvelles interface de gestion produit dans le backoffice.
Il faut dans un premier temps définir en grande ligne qu'est ce que peut faire ce composant
comment il s...L'idée est à partir du thème améliorer de Yolande de pouvoir réaliser de nouvelles interface de gestion produit dans le backoffice.
Il faut dans un premier temps définir en grande ligne qu'est ce que peut faire ce composant
comment il se structureNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/138Test de déploiement dans environnements génériques2019-10-10T13:24:11ZAntoine OuvrardTest de déploiement dans environnements génériquesAntoine OuvrardAntoine Ouvrardhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/139Permettre d'avoir une page d'erreur 500 en JSON2019-11-15T10:47:52ZMathieu LirzinPermettre d'avoir une page d'erreur 500 en JSONDans la logique de rendre OFBiz accessible via une API Web JSON, il est important que la gestion d'erreur prenne en compte la négociation de contenu pour effectuer un rendu de l'erreur dans un format adapté au client.
Par exemple lorsqu...Dans la logique de rendre OFBiz accessible via une API Web JSON, il est important que la gestion d'erreur prenne en compte la négociation de contenu pour effectuer un rendu de l'erreur dans un format adapté au client.
Par exemple lorsqu'une exception est lancé à partir du view handler JSON on se retrouve avec un payload HTML et un content type `application/json`. On voudrait avoir une message d'erreur adapté au format attendu par le client c'est à dire au format JSON dans le cas présent.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/147Probleme de format de date sur auto-service-permission2020-03-24T15:00:10ZLeila MekikaProbleme de format de date sur auto-service-permissionCas rencontré sur un projet (cf [commit du STORE-2925](https://labs.nereide.fr/10923/plugins/plugins/-/commit/5125b79fe4c7531917e40d9fb9bd46935373455b) ), un timestamp de type date vide renvoie une valeur incorrecte au service:
"null 00:...Cas rencontré sur un projet (cf [commit du STORE-2925](https://labs.nereide.fr/10923/plugins/plugins/-/commit/5125b79fe4c7531917e40d9fb9bd46935373455b) ), un timestamp de type date vide renvoie une valeur incorrecte au service:
"null 00:00:00.000"https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/148Certaines relations de type ‘one-nofk’ et ‘many’ possèdent un nom de clé étra...2020-07-11T22:33:56ZMathieu LirzinCertaines relations de type ‘one-nofk’ et ‘many’ possèdent un nom de clé étrangèreJ'ai observé des choses douteuses dans certaines relations des éléments `<entity>` en effet il existe trois types de relations **one**, **many** et **one-nofk**. Les relations de type **one** sont utilisées pour créer des contraintes de ...J'ai observé des choses douteuses dans certaines relations des éléments `<entity>` en effet il existe trois types de relations **one**, **many** et **one-nofk**. Les relations de type **one** sont utilisées pour créer des contraintes de clés étrangères en base de données, et les relations de types **many** et **one-nofk** sont des annotations du modèle.
L'attibut `fk-name` permet de définir le nom effectif de la contrainte comme montré dans l'exemple
```xml
<relation type="one" fk-name="ADDNDM_AGRMNT_ITM" rel-entity-name="AgreementItem">
<key-map field-name="agreementId"/>
<key-map field-name="agreementItemSeqId"/>
</relation>
```
Vu que seul les relations de type **one** définissent une clé étrangère il semble que l'attribut `fk-name` ne devrait être présent que sur les relations de ce type. Dans le `framework` et `applications` j'ai noté la présentce d'attribut `fk-name` sur des relations d'un type **many** ou **one-nofk**. Voici la liste des noms des clés étrangères concernées:
- "SHP_RCPT_SHIPMT"
- "SHP_RCPT_SHIPIT"
- "UP_USER_LOGIN"
- "CSCR_TYPE_CHILD"
- "PARTY_RSME_CNT"
- "PERF_REV_PSTN"
- "PERF_REV_MPTRL"
- "PERF_RVITM_PRTTP"
- "PERF_RVITM_PRITTP"
- "EMPLMNT_AGR"
- "EMPLMNT_TNRN"
- "EMPLMNT_TNTP"
- "EMPLMNT_APP_POS"
- "EMPLMNT_APP_RBPTY"
- "EMPLMNT_APP_EAST"
- "EMPLMNT_APP_STTS"
- "EMPLMNT_APP_APTY"
- "PTY_BNFT_PRDTYP"
- "PAY_HIST_SSTP"
- "PRL_PREF_PMTP"
- "PRL_PREF_PDTP"
- "PRL_PREF_DNTP"
- "UNMPL_CLM_EMPLMNT"
- "UNMPL_CLM_STTS"
- "EMPL_POS_BGTITM"
- "EMPL_POS_EPSTP"
- "EMPL_PTPRT_SSTP"
- "EMPL_PTPRT_RTTYP"
- "INVCE_ITM_CINVIT"
- "ORDER_ADJ_OA"
- "ORDER_ADJBLNG_INV"
- "ORDER_ITEM_SLI"
- "ORDER_ITBLNG_INV"
- "CUST_PTY_RELAT"
- "RTN_ITEM_OISGIR"
- "RITBL_INVOICE"
- "SHLIST_PSSM"
- "ALC_PLN_HDR_PRO"
- "ALC_PLN_ITM_PRO"
- "ORIG_USER_LH_USER"
- "FACILITY_TEC_CAL"
- "SRVYQST_ENUM"
Pour éviter de donner la fausse impression qu'il y a effectivement une clé étrangère en base de données, je dirai que ce serait une bonne chose de les supprimer. Idéalement il faudrait adapter le schéma XML mais c'est un peu plus de travail.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/149Screen stack2020-06-04T07:48:53ZNicolas MalinScreen stackMettre en place une résolution de l'écran en cours de rendu pour pouvoir y determiner des informations pour les sous élement comme la zone de rafraichissement.Mettre en place une résolution de l'écran en cours de rendu pour pouvoir y determiner des informations pour les sous élement comme la zone de rafraichissement.Nicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/151select(fieldName); select(fieldName);2020-07-11T22:43:56ZMathieu Lirzinselect(fieldName); select(fieldName);