ofbiz-framework issueshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues2020-05-25T16:09:12Zhttps://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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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>
```