Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi

SUJET : update clients existants en mass

update clients existants en mass il y a 1 mois 3 semaines #110963

  • johannhouss
  • Portrait de johannhouss
  • Hors ligne
  • Fresh Boarder
  • Messages : 19
  • Karma: 0
Bonjour à tous,

Je vous expose mon problème, j'ai besoin de modifier via import le code client de client existant.
Il faut absolument que je mette le code client de mon ancien système (700 clients)

Par exemple CL0010 devient 100230, bien sûr je vais déjà dans le module client pour paramétrer la numérotation pour {000000}, je fais un export ID client et code client du système actuel et ensuite change le code client par le nouveau.
Il faudrait que le système prenne comme référence l'ID pour un update de code client, mais je procède de la sorte le système me retourne une erreur en me disant que le client existe déjà...
Il y a-t-il un moyen de rendre possible la mise à jour client via un import CSV ?

Sinon j'avais pensé faire cela via une requête SQL mais ne sais pas quelle requête utiliser.

Est-ce que quelqu'un pourrait me donner un coup de main pour solutionner mon problème.

Je suis un peu bloqué et faire ça à la main est relativement long.

Merci d'avance pour votre aide.

Bien cordialement,
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #110965

  • Arre
  • Portrait de Arre
  • Hors ligne
  • Modérateur
  • Envie de participer ? wiki -> adhérer à l'asso :)
  • Messages : 1536
  • Remerciements reçus 355
  • Karma: 41
Salut johannhouss,

par import, ça n'est pas possible: ça ne fait qu'ajouter des enregistrements, ça ne met pas à jour.

Via sql, il est bien sûr possible de mettre un champs à jour, mais j'ai du mal à anticiper l'impact que ça aurait...
la table llx_societe comporte un rowid,donc le code client n'est pas censé être une clef pour des jointures dans des traitements... mais ça j'en sais rien du tout.

SUR UNE BASE TEST, tu peux :
construire un fichier d'update à l'aide d'excel, c'est tout bête:

dans la première colonne tu met ton code client actuel
dans la 2eme colonne tu mets ton ancien code client (qui correspond bien sûr ....
et dans la 3eme colonne tu mets la formule : =concatener("UPDATE llx_societe set code_client=";A2;" where code_client=";A1)
où A1 et A2 font référence au code actuel et ancien code de la ligne où la ligne de la formule est tapée...
ça te donnera un truc du style UPDATE llx_societe set code_client=100230 where code_client=CL0010

tu copies/colles la formule sur toutes les lignes
tu copies la colonne et tu la colles dans un éditeur de texte
tu l'enregistre en toto.sql
tu vas dans phpmyadmin et tu exécutes ce fichier de requêtes.

je le répète : fais le sur une base test et fait de nombreux essais pour voir si ça n’entraîne pas de dysfonctionnement.

Je pense notamment aux factures que tu aurais déjà émises : le code client ne sera plus le même...
et il y a peut être d'autres effets néfaste.

Ca serait bien qu'un dev passe par là et confirme que ça soit faisable avant que tu ne casses tout ;)
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #110967

  • johannhouss
  • Portrait de johannhouss
  • Hors ligne
  • Fresh Boarder
  • Messages : 19
  • Karma: 0
Salut Arre,

Merci pour ta réponse, je pense qu'il ne devrait pas y avoir trop de problème, car si je le fait à la main sur une instance test ça se passe bien et pour les factures, Bl, commandes.. il suffi juste les re générer pour qu'elles prennent le bon code client.
Je test et te ferrai un retour.

Merci beaucoup
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #110968

  • Arre
  • Portrait de Arre
  • Hors ligne
  • Modérateur
  • Envie de participer ? wiki -> adhérer à l'asso :)
  • Messages : 1536
  • Remerciements reçus 355
  • Karma: 41
de rien

pour la formule, j'ai oublié les guillemets, en fait c'est :
=CONCATENER("UPDATE llx_societe set code_client='";A2;"' where code_client='";A1;"'")

soit prudent avec ce genre de manip, et même si ça marche en base test : fais une sauvegarde de la prod avant de te lancer :)
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #110970

Bonjour :)

j'ai bien le même avis concernant le choix entre les imports de Dolibarr ou les requêtes SQL

la bonne solution est de créer le script SQL qui vous fera les insertions des informations que vous souhaitez reprendre
j'ai fait cela il y deux ans afin de reprendre les données d'une gestion commerciale sous Sage avec près de 2000 tiers, 6000 produits et quelques milliers de factures sur les trois dernières années
il suffit de connaitre les structures des tables de Dolibarr et de quelques essais...

Bonne continuation
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #111011

  • johannhouss
  • Portrait de johannhouss
  • Hors ligne
  • Fresh Boarder
  • Messages : 19
  • Karma: 0
J'ai donc fais un test et j'ai une erreur sur l'import..
Pour la formule Arre je pense que ça dois être ça: =CONCATENER("UPDATE llx_societe set code_client='";B1;"' where code_client='";A1;"'") tu as mis A2 et A1.

Voici l'erreur:
prnt.sc/nsy5ut

Le tableur utilisé:
prnt.sc/nsxtxp

Final sql import:
prntscr.com/nsy80h

Désolé je ne suis pas un pro niveau SQL merci encore pour ton aide.

pcbleu, moi aussi c'est pour des code client qui viennent de Sage.
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #111012

  • philazerty
  • Portrait de philazerty
  • Hors ligne
  • Gold Boarder
  • Intégrateur Mon-Dolibarr.fr Hébergement Infogéré
  • Messages : 5749
  • Remerciements reçus 859
  • Karma: 112
Bonjour
En 3 étapes :
- création d'une table temporaire avec id et newref
- injection du csv dans la table
- update avec un innerjoin par exemple sur le rowid
Pas facile à vous mettre un exemple avec un téléphone.
Sinon une tite recherche chez Qwant vous donnera certainement une réponse.
@+
Dernière édition: il y a 1 mois 3 semaines par philazerty.
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #111013

  • johannhouss
  • Portrait de johannhouss
  • Hors ligne
  • Fresh Boarder
  • Messages : 19
  • Karma: 0
Bonjour,
merci pour votre retour, si vous pouvez me mettre un exemple quand vous serez devant un ordi ce serai vraiment cool.
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #111017

  • Arre
  • Portrait de Arre
  • Hors ligne
  • Modérateur
  • Envie de participer ? wiki -> adhérer à l'asso :)
  • Messages : 1536
  • Remerciements reçus 355
  • Karma: 41
@johannhouss oups, j'ai oublié le point virgule en fin de ligne :blush:

et tu as raison pour la référence au cellules, j'ai fais ça de tête sans regarder excel....

la bonne formule est :
=CONCATENER("UPDATE llx_societe set code_client='";B1;"' where code_client='";A1;"';")

(je viens de tester à l'instant sur 100 enregistrements)

@phil : c'est quoi l'intérêt de passer par une table temporaire ?
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #111018

  • johannhouss
  • Portrait de johannhouss
  • Hors ligne
  • Fresh Boarder
  • Messages : 19
  • Karma: 0
@Arre,
je viens de faire un test rapide et ça à l'air de fonctionner, je vais tester ça en profondeur et te fais un retour.

Franchement merci, t'es au top
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #111026

  • philazerty
  • Portrait de philazerty
  • Hors ligne
  • Gold Boarder
  • Intégrateur Mon-Dolibarr.fr Hébergement Infogéré
  • Messages : 5749
  • Remerciements reçus 859
  • Karma: 112
Dans le concaténer préférez un chère sur le rowid, vous êtes ainsi sûr de ne pas avoir un doublon à la con. Genre un nouveau numéro qui correspond à l'ancien d'un autre ou un déjà modifié.

@arre : je n'avais pas pensé à générer le code SQL depuis le tableur :blush:
l'intérêt de ma solution c'est de pouvoir travailler sans toucher le csv et être capable de traîter des gros volumes, et enfin d'automatiser la procédure pour des maj de nuit de csv téléchargés de tarifs de retours de logisticiens etc...
@+
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #111028

  • Arre
  • Portrait de Arre
  • Hors ligne
  • Modérateur
  • Envie de participer ? wiki -> adhérer à l'asso :)
  • Messages : 1536
  • Remerciements reçus 355
  • Karma: 41
@phil
le tableur avec le concaténer et la recherche verticale ... c'est la vie :)

Après la solution de passer par une table d'import est automatisable c'est sûr, mais pour du "one shoot" c'est trop long à mettre en place.

@johannhouss
comme phil le souligne : il faudra veiller au prochain numéro attribué aux prochains tiers

et tant que j'y pense : regarde aussi ta génération de compte comptable: si tu étais sous un modèle aquarium (concaténation d'un 411+code client par exemple) : ça va te faire un truc bizarre pour les clients mis à jour...
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #111085

  • johannhouss
  • Portrait de johannhouss
  • Hors ligne
  • Fresh Boarder
  • Messages : 19
  • Karma: 0
Bonjour Arre,

Tout fonctionne parfaitement, mais comme indiqué j'ai un problème sur les numéro attribué aux nouveaux tiers.
Les nouveaux code client importer qui viennent de Sage son comme cela: 01005704.
Dans le module tiers la configuration est {00000000} donc quand nous faisons la création d'un nouveau tiers celui ci va prendre le numéro 00000001, comment faire pour réussir à reprendre la même configuration que les codes importés.

Merci d'avance
L'administrateur a désactivé l'accès en écriture pour le public.

update clients existants en mass il y a 1 mois 3 semaines #111086

  • Arre
  • Portrait de Arre
  • Hors ligne
  • Modérateur
  • Envie de participer ? wiki -> adhérer à l'asso :)
  • Messages : 1536
  • Remerciements reçus 355
  • Karma: 41
Salut johannhouss,

content pour toi :)

à droite de la case dans la quelle tu paramètres ton modèle de numérotation dans le module tiers, il y a un petit points d'interrogation qui donne la syntaxe.

Regarde les exemples donnés.
Pour commencer à 01005704 ça doit être un truc du style {00000000+1005704}
L'administrateur a désactivé l'accès en écriture pour le public.