ofbiz-framework issueshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues2019-10-21T13:13:23Zhttps://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/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/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/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/164Ajout du viewEntityCondition sur les dynamicView2023-12-21T10:03:41ZLeila MekikaAjout du viewEntityCondition sur les dynamicViewActuellement pour dkt, on a ajouté une methode DynamicViewEntity.addViewLink() qui prend en parametre le viewEntityCondition
Verifier que ce developpement est remonté dans OFBiz
Completer ce developpement pour permettre d'ajouter une con...Actuellement pour dkt, on a ajouté une methode DynamicViewEntity.addViewLink() qui prend en parametre le viewEntityCondition
Verifier que ce developpement est remonté dans OFBiz
Completer ce developpement pour permettre d'ajouter une condition complexe (cf [makeOrderCondition](https://labs.nereide.fr/10923/plugins/plugins/-/commit/29e97bd7b9cb1e726bcc51b0592b751030fc9df5#110ae7518829c8c8325006903fd21b5c006b0054_626_424))
avec possibiliter de combinaison AND/ORLeila MekikaLeila Mekikahttps://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/157Retour de generic value incomplet depuis le cache2023-11-17T09:39:16ZLeila MekikaRetour de generic value incomplet depuis le cacheLors de la récupération de gv via un from depuis le cache, il arrive qu'on se retrouve avec une generic value incomplete (comme si il y avait eu un select)
Exemples de cas:
https://labs.nereide.fr/10923/plugins/plugins/-/commit/8e16ee8a...Lors de la récupération de gv via un from depuis le cache, il arrive qu'on se retrouve avec une generic value incomplete (comme si il y avait eu un select)
Exemples de cas:
https://labs.nereide.fr/10923/plugins/plugins/-/commit/8e16ee8a2929c5c7073e6a3bae6d3b9fc897b15c
https://labs.nereide.fr/10923/plugins/plugins/-/commit/3d05a569a0689fd9669d8cf47a8fd6c42707e764
Objectif:
Identifier les mises en cache ayant causé le souci et eventuellement préparer une correction de l'EntityQueryLeila MekikaLeila Mekikahttps://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/153Déréférencement d'une valeur `null` dans `PackingSession`2020-07-15T07:33:10ZMathieu LirzinDéréférencement d'une valeur `null` dans `PackingSession`Il y a une erreur de logique dans le code qui amène à de manière inconditionnelle déréférencer `null`.Il y a une erreur de logique dans le code qui amène à de manière inconditionnelle déréférencer `null`.https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/152Fichier de données composant manquants2020-07-13T22:16:13ZMathieu LirzinFichier de données composant manquantsLes fichiers `ManufacturingHelpData_NL.xml`, `CommonScheduledServicesDemoData.xml` et `CommonScheduledServicesDemoData.xml` sont déclarés comme fichier de données de composants mais n'existent pas. On obtient le message d'erreur suivant ...Les fichiers `ManufacturingHelpData_NL.xml`, `CommonScheduledServicesDemoData.xml` et `CommonScheduledServicesDemoData.xml` sont déclarés comme fichier de données de composants mais n'existent pas. On obtient le message d'erreur suivant en faisant `java -jar ofbiz.jar --load-data`
```
2020-07-14 00:02:55,979 |main |EntityDataLoader |W| Could not get URL for Component ResourceHandler: org.apache.ofbiz.base.component.ComponentException: File Resource not found: /home/mthl/src/ofbiz/applications/manufacturing/data/ManufacturingHelpData_NL.xml
2020-07-14 00:02:55,979 |kJoinPool-1-worker-4 |ModelServiceReader |I| Loaded [5] Services from file:/home/mthl/src/ofbiz/applications/accounting/servicedef/services_securepay.xml
2020-07-14 00:02:55,979 |kJoinPool-1-worker-0 |ModelServiceReader |I| Loaded [13] Services from file:/home/mthl/src/ofbiz/applications/accounting/servicedef/services_perm.xml
2020-07-14 00:02:55,980 |main |EntityDataLoader |W| Could not get URL for Component ResourceHandler: org.apache.ofbiz.base.component.ComponentException: File Resource not found: /home/mthl/src/ofbiz/framework/security/data/SecurityTypeDemoData.xml
2020-07-14 00:02:55,980 |main |EntityDataLoader |W| Could not get URL for Component ResourceHandler: org.apache.ofbiz.base.component.ComponentException: File Resource not found: /home/mthl/src/ofbiz/framework/common/data/CommonScheduledServicesDemoData.xml
```https://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/151select(fieldName); select(fieldName);2020-07-11T22:43:56ZMathieu Lirzinselect(fieldName); select(fieldName);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/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/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/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/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/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.