Suppression de produits ou services

Bonjour à toutes et tous,

Sujet récurrent depuis l’origine de Dolibarr (ou au moins 15/20 ans), je souhaitais savoir s’il y avait une évolution dans cette limitation.

Je me retrouve régulièrement, ainsi que des amis qui sont dans la même activité, à ne pas pouvoir proposer des Dolibarr car le client importe un nouveau tarif tous les 1/3/6/12 mois.

La réponse ‹ standard › que je lis régulièrement est que tout produit/service utilisé dans un quelconque document Dolibarr ne peut être effacé et doit, au pire, être placé en hors vente.

Ce choix de fonctionnement est incompréhensible. Le produit/service devrait être juste importé dans la propale/commande/facture et ne plus avoir aucun lien avec la table produit/service.

Ainsi, un client qui rentre 5000 produits actualisés tous 1/3/6 mois ne vas pas voir sa table des produits/services enfler de façon démesurée et il pourra profiter de la maj des prix pour faire table rase des références supprimées, sans devoir ajouter un préfixe avec la date de l’importation (pis aller que certains clients utilisent).

En regardant (au hasard) llx_commandedet, j’ai pourtant bien l’impression que toute l’information produits/service est bien dupliquée et je ne comprends pas ce blocage.

Y a t-il une évolution de prévue à ce sujet ?

Bien cordialement,

Stéphane

PS

J’ai le même souci avec les utilisateurs qui sont ineffaçables. J’ai donc créé un utilitaire qui permet de fusionner un utilisateur vers un autre, dans le cas où je me fiche de la traçabilité pour cet utilisateur.

4 « J'aime »

Je comprend pas top le sens de cette demande…
Si le tarif d’un produit évolue, dolibarr prend en compte de l’évolution du prix en spécifiant les dates. Votre méthode de fonctionnement est incompréhensible.
D’un point de vue informatique, Supprimer des données dans une db c’est la meilleur occasion pour se retrouver avec des effets de bord de tous les cotés.
Les masqués en les désactivant pourquoi pas, jamais on supprime.

Bonjour,
Je suis du même avis que @JphenixB JphenixB
On ne supprime pas des données qui ont été utilisées. Au pire vous pouvez imaginer faire un dév pour « cacher » des produits déréférencés mais attention il faut pouvoir continuer à visualiser l’historique.
Et attention à votre fusion d’utilisateur, il faut une sécurité sur les factures et autres documents à conserver.

oui j’ai l’impression qu’il y a confusion entre la table llx_product et la llx_product_price qui contient l’évolution des prix des produits.

Bonjour à toutes et tous,

Merci de m’avoir répondu !

JBPhenix > Si le tarif d’un produit évolue, dolibarr prend en compte de l’évolution du prix en spécifiant les dates. Votre méthode de fonctionnement est incompréhensible.

C’est plus qu’un tarif qui évolue, c’est 250 produits qui disparaissent, 325 créés, etc. Ensuite (prenons dans cette réponse le cas d’une facture directe avec une ligne produit), il suffit que le produit soit recopié dans une ligne de la facture sans conserver de référence avec la table des produits. C’est, je le crains, conserver à vie des produits dans une table qui est juste incompréhensible.

JBPhenix > D’un point de vue informatique, Supprimer des données dans une db c’est la meilleur occasion pour se retrouver avec des effets de bord de tous les cotés.

Pas du tout, si l’application est conçue en ce sens. Une application de gestion vit. Ses données aussi. Certaines arrivent, d’autres sont modifiées et d’autres encore disparaissent. C’est d’autant plus vrai pour une application susceptible d’accompagner l’entreprise durant toute sa vie.

manunord > On ne supprime pas des données qui ont été utilisées.

À partir du moment où le produit a été inséré dans une ligne de facture, cette ligne devrait devenir indépendante de la table des produits/services, sinon on part effectivement dans une conservation ad vitam æternam.

manunord > Et attention à votre fusion d’utilisateur, il faut une sécurité sur les factures et autres documents à conserver.

Merci pour cette remarque. Pour la NFC-525 et l’inaltérabilité des documents, llx_blockedlog n’est pas contrôlée par la routine d’interdiction d’effacement des utilisateurs. En d’autres termes, l’utilisateur fusionné existe encore dans ces tables. Rien n’est touché. Son index est juste inexistant ou faux (index réaffecté). Et c’est sans importance dans ce contexte car le nom de l’utilisateur est inscrit en clair dans chaque ligne. La traçabilité est sauve (bien joué).

defrance > oui j’ai l’impression qu’il y a confusion entre la table llx_product et la llx_product_price qui contient l’évolution des prix des produits.

Non hélas pas de confusion. Qu’il y ait une table d’évolution des prix est une fonctionnalité utile au moment de l’insertion du produit dans la facture. Qu’une liaison soit maintenue entre des lignes de factures (qui semblent recopier les données issues du produit - je n’ai pas vérifié colonne par colonne) et la table des produits est décision d’architecture qui est limitative.

Si EBP, SAGE ou tous les logiciels de gestion que j’ai pu coder fonctionnaient comme Dolibarr, on ne pourrait pas gérer des catalogues produits volumineux (20K, 50, 100K références) sans cesse refondus, ce qui est le cas dans la plupart des activités de vente… ou d’achats d’ailleurs. Le cas typique étant l’insertion d’énormes tableaux excel en provenance de différents fournisseurs avec des références qui changent sans arrêt. La vraie vie quoi. Et moi, ça m’embête car je rate des placements de Dolibarr à cause de ça… :slight_smile:

C’est d’autant plus rageant qu’avec la compta en partie double, son module de génération XML de prélèvements SEPA et toutes les goodies qu’il contient, Dolibarr n’a plus grand chose à envier aux bidules commerciaux désormais transformés en SAAS bien juteux.

Bon, on va réfléchir à faire autrement, et sans toucher au core de Dolibarr, ni chercher le plugin miracle qui n’existe pas, ni chercher à l’écrire car la prochaine version de core nécessitera de changer plein de trucs.

Bien cordialement à toutes et tous,

Stéphane

Si vous ne conserver pas les produits utilisés, comment vous faite pour avoir une tracabilité des ventes de produits, la saisonnalité, …
Pour avoir bossée avec des bases de données importantes de produits (domaine du pneumatiques…), mis à jour régulièrement (journalièrement pour etre précise), le produits reste, juste le prix qui change, accessoirement on ajoute une notion de version/lot mais cela s’arrete là

2 « J'aime »

Tout dépend du workflow.

En se limitant aux produits et aux factures, sans notion de compta.

Le cas qui, selon mon expérience, est général : une table de produits (un vrac corvéable à l’envi), qui sert à alimenter des lignes de factures.

Sans notion de compta, pour des stats sur les produits, tout est dans les factures. Si le prix change, cela se verra sur les lignes produits d’une même référence…

Dans le cas de votre exemple, vous avez dit l’essentiel : le produit reste.

C’est exactement l’inverse dans ma vie de soutier. À croire que les fournisseurs le font exprès :slight_smile: Un pote vend du Kapersky, des milliers de références semble t-il, qui changent tout le temps. Un client papetier a plusieurs catalogues de plusieurs dizaines de refs chaque. Et les références disparaissent, d’autres sont créées. Chaque mise à jour concerne des milliers de produits.

Si Dolibarr, en conservant toutes ses fonctionnalités produits, permettait par une variable cachée de supprimer un produit (et de supprimer toute référence aux produits dans les factures pour rester cohérent), ça serait parfait.

Mais nous ne sommes pas dans un monde parfait, même si Dolibarr a énormément évolué en 20 ans, tout en gardant sa simplicité d’emploi.

Pas grave, faut que je cherche comment claquer les produits sans effet de bord. Ça ne me semble pas gagné car chaque ligne de facture fait référence au produit correspondant (de mémoire) alors que les infos nécessaires à la facture sont dupliquées. Il faut que je vois ce que ça fait de mettre cette fk à 0 :wink:

Je comprends l’idée de pouvoir retourner sur le produit à partir d’une facture.

Je regrette que ce mode de fonctionnement, confort parfaitement légitime dans certains cas, mais totalement nuisible dans d’autres, soit celui de Dolibarr.

.

1 « J'aime »

typo : lire « de plusieurs dizaines de milliers de refs »

Il suffit de mettre un produit hors vente quand il faut retirer le produit de la vente et mettre son prix à jour le prix quand il y a besoin.
La suppression n’est pas utile et non justifier à mon sens.
Je suis pas dans la compta, mais en cas de contrôle de l’intégrité et de la cohérence des données pour moi c’est un red flag injustifiable et une source d’emer**** à n’en plus finir.

2 « J'aime »

je rejoint votre point de vue mais via un autre angle d’attaque et les « effets de bords des mises à jours » voir tous les fils au sujet des logs inaltérables …

perso je serais donc en faveur d’une copie des données dans les tables au lieu de liens vers les produits ce qui permettrait donc de les « supprimer / archiver / anonymiser / nettoyer »

je crois me souvenir d’un ticket sur le github Update product label on propal/invoice/aso · Issue #23611 · Dolibarr/dolibarr · GitHub où la réponse m’a laissé un peu surpris pour rester très soft « The idea was that: if we update a label of a product (typo error for example), it is propagated everywhere with no need to change all documents. »

et donc en bref si on fait un devis avec un intitulé article, devis validé, signé par le client, un collègue modifie l’intitulé de l’article dans la base article hop ça le modifie aussi sur le devis, résultat le client a signé/commandé un truc dont l’intitulé est potentiellement différent … pour moi c’est un « big fail » mais bon…

il y a aussi les notions de données à anonymiser, pour un centre de formation qui indique dans ses services « cours de math par M. XXXX » on pourrait avoir « envie » de « supprimer » ledit service un jour pour des raisons différentes des « gros volumes » qui sont illustrés dans ce fil

2 « J'aime »

Oui erics, il y a mille motivations qui inciteraient à isoler la table des produits des documents créés. Les logiciels commerciaux le permettent car ils font le distinguo en données mortes et données vivantes. Une notion qui semble avoir échappé à Dolibarr. La notion d’historique souvent évoquée dans cette thread n’a rien à voir, ne justifie pas l’architecture de Dolibarr mais en est une conséquence.

1 « J'aime »

Ce n’est pas la première fois que l’on discute de cela sur le forum (et ailleurs) sans évolutions sur le sujet.
pour moi c’est une faille fonctionnelle et prétendre que c’est dans le cas d’erreur de typo… que dire…

1 « J'aime »

Bonjour à tous !

Effectivement, on est loin du simple problème de typo. D’ailleurs, faute ou pas, si un client me demande un double d’un document comptable/fiscal, il doit être absolument identique.
Effectivement, ce n’est pas d’hier qu’on en parle¹. Le besoin est là, assurément.
De plus, modifier une dénomination d’article ou service et que cela puisse potentiellement modifier des documents légaux sur 15 ans d’activité est un non-sens : cela fait de Dolibarr dans certaines situations un château de cartes.

¹ Par ex : Remplacer le cataloque produit - #13 par 18informatique

2 « J'aime »

Bonjour,

Sujet intéressant et epineux en effet.

Lors que l’on crée un document légal, il se doit de ne plus etre modifiable s’il est validé.

Cela est vrai pour par exemple les adresses clients, de livraison et …

Si l’on change une adresse, dans la plupart des soft, ce sont rous les documents deja créés qui sont affectés. C’est une erreur.

De même, dans l’exemple du devis accepté, ou d’une facture émise, si l’on change la désignation du produit/service, ou sa description, hop,les documents sont affectés.

C’est aussi une erreur.

Peut être que les éléments utilisés pour tel ou tel document ne devrait pas etre indexés sur la fiche produit mais etre copier en dur dans la fiche document.

En cas de régénération, ce qui peut etre problématique legalement dans certain cas (emission d’un duplicata différent de l’original), prévoir si les objets référencés sont toujours présents ou non pour l’autoriser (la régénération)

Ainsi, la suppression de reference serait rendu possible avec les avertissements adéquat.

Cela reviendrai à créer une ligne de facture, devis personnalisé avec des données pré-existantes (en terme d.enregistrzment en DB)

Voilou
Sylvain

PS : je vais avoir 10k produits a référencer qui pour beaucoup vont « évoluer » et devront etre considérés comme nouveaux produits (hors tarifs bien sûr). En 5 ans, il faudra alors changer de serveur, ce qui n’ai pas Franchement l’idéal…

2 « J'aime »

Vous m’auriez suivi dans le fork de dolibarr avec une base nosql toute cette discussion n’aurait pas existé… :wink:
c’est la faille des bases de données relationnelles quand elles sont mal conçue !!! :wink:

2 « J'aime »

il faut revoir le schéma de beaucoup de tables afin de pouvoir garder un historique des modifications…

je ne jette pas la pierre à Laurent, mais son discours, « simple », ne tient plus la route… il faut un mode de fonctionnement complexe qui prend en compte tout un tas de paramètres

Bonjour à tous,

N’hésitez pas à ouvrir une issue sur le github Dolibarr pour faire état de cette problématique et en discuter avant d’en trouver la solution et d’en proposer la correction éventuelle (qui va être longue sur ce sujet).

Comme celle-ci par exemple ?-) je me garderais bien de souligner que nous avons a eu en quelques heures plus d’échanges construits et pertinents sur le forum que sur les tickets github hein :wink:

Oui certe mais c’est aussi important de l’ouvrir sur github :wink: Comme ça on peut s’y référer pour la suite et les potentiels correctifs qui en ressortiront.

1 « J'aime »