ofbiz-framework issueshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues2019-10-17T08:26:07Zhttps://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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 Malin