Erreur importation catalogue fournisseur ref existante

Bonjour,

version : 14.0.5
module « import » (/Outils / Nouvel import)

erreur :

« Duplicate entry ‹ […] › for key ‹ uk_product_ref › » sur l’ensemble des lignes.
Cela fait sens si l’import ne fait pas de mise à jour de la ligne dans la table.

J’ai un catalogue fournisseur d’env. 5k lignes en csv à importer entre 2 et 4x /an.
Il n’y a parfois que quelques prix qui changent, ou, une ref apparaît, une autre disparaît (la vie normale d’un catalogue quoi)

L’outil d’import ne semble pas faire d’update dans la table. Comment contourner ? Le cas d’usage est-il prévu ?

  • Si je modifie la routine d’import pour écraser les lignes existantes, cela peut-il poser problème avec les documents déjà créés (facture, devis, etc.) ?
  • Vous faites comment vous dans ce cas là ?
  • Le fonctionnement est-il différent dans la version 15 ?

Merci.
bm

Bonjour @18informatique ,

à l’étape 5, tu indiques bien la clef ?
image

Pour info :
l’outils d’import sait faire des INSERT et des UPDATE, par contre, il ne supprimera pas d’enreg.

Bonjour @Arre ,
Ha non ! En même temps, je ne sais qu’en faire…
Pour la suppression, s’il y a peu d’enregistrement à supprimer ça peut se faire à la main.
Par contre si le fournisseur change la moitié de son catalogue, quelle serait la meilleure méthode ?

Merci pour ta rapidité :slight_smile:

Justement : si tu indiques une clé : ça mets à jour en fonction de ce champ (typiquement la ref de l’article :wink:

je ne comprends pas : que l’import fasse 10 ou 3000 lignes : ça change quoi ?

En cas de suppression tu veux dire ?
J’aurais tendance à dire: tant pis pour les prix déjà importés (au moins ils servent d’historique et de point de comparaison pour la recherche d’autres fournisseurs)

Si vraiment tu veux nettoyer la base : je pense que tu peux DELETE des enreg de la table des prix fournisseur sans trop de problème car la table n’est requêtée qu’au moment de la création de ligne dans une pièce, après, les prix ne servent plus. Mais je dis ça comme ça, à l’intuition : il faudrait vérifier pour de bon sur une base test et décortiquer le code pour être sûr.

ok pour la clé. Nommage libre ? Dans le cas présent, toujours la même ou justement non ?

@Arre :
En cas de suppression tu veux dire ?

Exactement.

Pour le nettoyage de la base, si je re-génère un pdf, c’est l’ancien ou le nouveau prix qui sera pris en compte ?
Normalement, un document ne devrait plus pouvoir être modifié (?).

non pas nommage libre, normalement c’est pas une liste déroulante ce champ ?

Nettoyage : je ne parlais que de la table des prix fournisseurs hein !
Le prix stocké dans cette table donne le prix unitaire de la ligne, une fois la ligne validée, il ne bouge plus (même si tu change le prix, le supprime, ou ce que tu veux)

Pour les PDF : ils sont générés chaque fois que tu « valides » (ou que tu clique sur « générer »)
Il sont basés sur la pièces (propal, cde,facture…) donc pareil : tu peux faire ce que tu veux à la table des prix fournisseurs, ça ne changera rien.

C’est la différence entre des données « héritées » (comprendre « recopiées dans l’objet courant »)
et liées (comprendre « pas stockée dans l’objet courant » → on va les chercher là où ils sont stockés à chaque fois, le nom de ton entreprise par exemple)

Pour la « non modification du PDF » : je suis d’accord, il ne devrait plus pouvoir être re-généré une fois que la facture est en compta, ou la commande envoyée, etc… mais on peut avoir plusieurs modèles pour un même document, qui servent à d’autres choses et qui eux doivent pouvoir être généré quelque soit le statu de la pièce : d’où l’absence de ce blocages pour l’instant je pense. (c’est pour ça que j’aime bien modifier les modèles pour ajouter la date-heure dans le nom du fichier : ça historise les générations tout seul :slight_smile: )

bref : pose toi tranquillement dans une base test, et fais des essais avant de flinguer ta prod ^^

ok, merci.
C’est de toutes façons une instance spéciale « outrages » ;).
Je vais faire quelques tests avec ce que tu m’as dit.
Pour être sûr : remplacer intégralement un catalogue se fait que avec « tout supprimer » + « import ». J’ai bon ?

1 « J'aime »

Pas forcément tout supprimer : tu peux dégager uniquement le tarif d’un seul fournisseur, ou d’une famille article ou… ce que tu veux… (ça n’a d’intérêt que si tu ne veux pas garder le prix en mémoire d’un article qui ne se fait plus … perso : je ne vois pas l’utilité)

L’idéal à mes yeux c’est :

  • update de tous les prix concernés de la table en mettant à jour la ref du fournisseur et la qte min=10000000000000000000 (histoire qu’elle ne soit jamais pise en compte lors de réappro).
    Du style « refpouettepouette_old20220227 » pour dire que c’était le prix avant le 27/02/2022.
  • insert du nouveau prix avec la bonne ref fournisseur et la bonne qte min. (il y a unicité d’un enreg sur IdRefinterne & Fournisseur & ReffFournisseur & QteMin & TVA & PrixQteMin, (donc ça ne mettra pas à jour tes « refpouettepouette_old20220227 », ça les conservera à titre posthume :slight_smile: )

Ainsi tu historises tes prix fournisseurs et tu as de quoi discuter avec le fournisseur ou le client (négocier, recherche d’autres fournisseurs, expliquer une hausse de prix, etc…)

Après… tu fais comme bon te semble :slight_smile:

1 « J'aime »

Merci³ !
Je fais mes tests, et je reviens. Laisse moi quelques jours :wink:

1 « J'aime »

Attention, il y a des effets de bord à cette méthode,
@Katawan a fait des tests ici :

Salut !

C’est effectivement ce qui manquait. Les « update » se font comme attendu une fois qu’on sélectionne la clé « ref ».

Merci :slight_smile: