updateline modifie produit pour Ajaxer Dolibarr

Bonjour,
Puisque il n’y a aucun signal jusqu’à ce jour que la version 7 ni 8beta adoptera Ajax dans la création des factures/commandes/propal… je me suis penché rapidement sur un module qui modernisera un peu ces cycles de création hyper lourds et couteux en temps et en ressources!
J’ai presque tt mis en place juste au moment de vouloir mettre à jour une ligne de portal déjà existante je découvre que la fonction updateline ne permet pas de mettre à jour les produits!!! Why?
@equipeDev : Est-t-il possible de mettre à jour les classes en ajoutant un param pour spécifier le fk_product sinon avez vous d’autres options??

QuickDraft.png

Beau travail de recherche,

Personnellement, je ne serais pas mécontent de voir les paramètres des fonctions mergés en listes / objets / format json,
Ca permettrait de scaler plus facilement, au passage (updateLine, insertLine, calcul_price_total)

Pareil pour les return, avec la possibilité de retourner des objets, on pourrait s’appuyer sur les fonctionnalités
de destructuring; un + au niveau de clareté du code.

Sinon dans la future classe ‹ Objectline › générique, Eldy mentionne la volonté d’utiliser les Traits (Interfaces ?) en projets à venir…
https://doxygen.dolibarr.org/d5/d18/commonobjectline_8class_8php_source.html

J’ai le sentiment que l’emplacement du code générique est voué à se retrouver quelque part par ici.

les Traits sont != aux Interfaces
Mais espérant le!
Pour faire fonctionner le truc sans toucher aux classes, je suis obligé de faire un deleteline de toutes les lignes de l’objet puis re-addline toutes les lignes comme si c’est un nouveau objet, je ne sais pas s’il y aurait un impact/conflit sur d’autres fonctionnalités …
Merci de me confirmer que ce n’est pas la mauvaise méthode!

tiens ça me fait penser au module CustomLine des Patas : https://www.dolistore.com/fr/interface-utilisateurs/438-CustomLine----dition-rapide-et-import-des-lignes-des-documents-commerciaux.html

J’ai aussi commencé à réfléchir à un module mais directement greffé aux écrans standards; faudrait que je le ressorte de la pile un jour !

Sinon, pour info, il y a déjà un module qui s’appelle updatelines (mais qui ne fait pas du tout la même chose) : https://www.dolistore.com/fr/modules/301-Actualisation-des-prix-sur-les-lignes.html

Bon courage tout de même pour la suite de vos travaux de R&D !

Merci altatof
je ne sais pas si les deux modules CustomLine ou updatelines permettent d’ajouter/supprimer des lignes de produits dynamiquement comme si vous êtes sur access ou excel sans réactualiser la page à chaque fois!

J’ai un problème avec la fonction core de dolibarr :

qui ne permet pas de modifier le produit (fk_product), je sais que vous maitrisez très bien les classes dolibarr, avez-vous une piste?
il doit avoir une raison pour ne pas l’avoir ajouté et j’aimerais comprendre la raison!

la raison est qu’une ligne produit correspond à un produit; si vous voulez changer ce fonctionnement, le + simple est que vous écriviez votre propre fonction de mise à jour d’une ligne ou que vous soumettiez une pull request sur github pour en modifier le fonctionnement :wink:

c’est une ligne facture/commande :happy:
ci-joint le fichier modifié pour propal…

Pièces jointes :

On pourrait envisager de passer les objets Societe et Product à la fonction updateline,

Cela permettrait la mise à jour du PU de la ligne, ainsi que les taxes, et remises appliquables, ou tout autre coeff
dont dépendrait une catégorie de client par exemple.

Ou encore isoler cette partie Taxes dans une table/process indépendant, et dégager un peu de code obsolete / WET,
la partie npr, etc.

effectivement fng, ça sera encore plus propre en faisant passer les objets Societe et Product *: les fonctions des classes évolueront très facilement sans impacter les views et les childs

ps1: mes commits ne passent pas! visiblement je ne sais pas coder huhuhu :smiley:
ps2: * je préfère quelqu’un qui maitrise déjà les classes pour faire ces majeurs changements pour mieux contrôler la propagation des fonctionnalités et éviter les bugs/oublies