procédure pour Importer vos clients en automatique

Bonjour,
Je suis intéressé par ton script.
Merci d’avance.
A bientôt de te lire
Nicolas:-)

Bonjour,

Je n’ai pas encore pu me pencher sur l’import automatique :blush: Je suis désolé .

Cordialement .

ça y est j’ai réalisé mon premier import de masse en commençant par les produits .
je suis passé par phpmyadmin .

j’ai selectionné la table llx_product , j’ai réalisé un export sql ( ce qui donne le fichier import.sql ) pour récuper la structure de la table ce qui donne le fichier suivant

  -- phpMyAdmin SQL Dump
-- version 2.11.9.2
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Ven 10 Avril 2009 à 14:58
-- Version du serveur: 5.0.51
-- Version de PHP: 5.2.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `dolibarr`
--

-- --------------------------------------------------------

--
-- Structure de la table `llx_product`
--

CREATE TABLE IF NOT EXISTS `llx_product` (
  `rowid` int(11) NOT NULL auto_increment,
  `datec` datetime default NULL,
  `tms` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `ref` varchar(32) collate utf8_unicode_ci NOT NULL,
  `label` varchar(255) collate utf8_unicode_ci NOT NULL,
  `description` text collate utf8_unicode_ci,
  `note` text collate utf8_unicode_ci,
  `price` double(24,8) default '0.00000000',
  `price_ttc` double(24,8) default '0.00000000',
  `price_min` double(24,8) default '0.00000000',
  `price_min_ttc` double(24,8) default '0.00000000',
  `price_base_type` varchar(3) collate utf8_unicode_ci default 'HT',
  `tva_tx` double(6,3) default NULL,
  `fk_user_author` int(11) default NULL,
  `envente` tinyint(4) default '1',
  `fk_product_type` int(11) default '0',
  `duration` varchar(6) collate utf8_unicode_ci default NULL,
  `stock_propale` int(11) default '0',
  `stock_commande` int(11) default '0',
  `seuil_stock_alerte` int(11) default '0',
  `stock_loc` varchar(10) collate utf8_unicode_ci default NULL,
  `barcode` varchar(255) collate utf8_unicode_ci default NULL,
  `fk_barcode_type` int(11) default '0',
  `partnumber` varchar(32) collate utf8_unicode_ci default NULL,
  `weight` float default NULL,
  `weight_units` tinyint(4) default NULL,
  `volume` float default NULL,
  `volume_units` tinyint(4) default NULL,
  `canvas` varchar(15) collate utf8_unicode_ci default '',
  `finished` tinyint(4) default NULL,
  `import_key` varchar(14) collate utf8_unicode_ci default NULL,
  PRIMARY KEY  (`rowid`),
  UNIQUE KEY `uk_product_ref` (`ref`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=560 ;

--
-- Contenu de la table `llx_product`
--

INSERT INTO `llx_product` (`rowid`, `datec`, `tms`, `ref`, `label`, `description`, `note`, `price`, `price_ttc`, `price_min`, `price_min_ttc`, `price_base_type`, `tva_tx`, `fk_user_author`, `envente`, `fk_product_type`, `duration`, `stock_propale`, `stock_commande`, `seuil_stock_alerte`, `stock_loc`, `barcode`, `fk_barcode_type`, `partnumber`, `weight`, `weight_units`, `volume`, `volume_units`, `canvas`, `finished`, `import_key`) VALUES

ensuite j’ai selectionné uniquement les champs qui m’intéresse ce qui donne



-- phpMyAdmin SQL Dump
-- version 2.11.9.2
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Ven 10 Avril 2009 à 10:33
-- Version du serveur: 5.0.51
-- Version de PHP: 5.2.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `dolibarr`
--

-- --------------------------------------------------------

--
-- Structure de la table `llx_product`
--

CREATE TABLE IF NOT EXISTS `llx_product` (
  `rowid` int(11) NOT NULL auto_increment,
  `datec` datetime default NULL,
  `tms` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `ref` varchar(32) collate utf8_unicode_ci NOT NULL,
  `label` varchar(255) collate utf8_unicode_ci NOT NULL,
  `description` text collate utf8_unicode_ci,
  `note` text collate utf8_unicode_ci,
  `price` double(24,8) default '0.00000000',
  `price_ttc` double(24,8) default '0.00000000',
  `price_min` double(24,8) default '0.00000000',
  `price_min_ttc` double(24,8) default '0.00000000',
  `price_base_type` varchar(3) collate utf8_unicode_ci default 'HT',
  `tva_tx` double(6,3) default NULL,
  `fk_user_author` int(11) default NULL,
  `envente` tinyint(4) default '1',
  `fk_product_type` int(11) default '0',
  `duration` varchar(6) collate utf8_unicode_ci default NULL,
  `stock_propale` int(11) default '0',
  `stock_commande` int(11) default '0',
  `seuil_stock_alerte` int(11) default '0',
  `stock_loc` varchar(10) collate utf8_unicode_ci default NULL,
  `barcode` varchar(255) collate utf8_unicode_ci default NULL,
  `fk_barcode_type` int(11) default '0',
  `partnumber` varchar(32) collate utf8_unicode_ci default NULL,
  `weight` float default NULL,
  `weight_units` tinyint(4) default NULL,
  `volume` float default NULL,
  `volume_units` tinyint(4) default NULL,
  `canvas` varchar(15) collate utf8_unicode_ci default '',
  `finished` tinyint(4) default NULL,
  `import_key` varchar(14) collate utf8_unicode_ci default NULL,
  PRIMARY KEY  (`rowid`),
  UNIQUE KEY `uk_product_ref` (`ref`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

--
-- Contenu de la table `llx_product`
--

INSERT INTO `llx_product` (`ref`, `label`, `description`, `note`, `price_ttc`, `price_base_type`, `tva_tx`,  `weight`) VALUES

J’ai ensuite récupéré à l’aide d’un script ma base de donnée produits pour pouvoir alimenter import.sql

    #!/bin/bash
awk  ' BEGIN {  FS=";"
                print debut  } 
       { gsub(",",".",$11) 
         gsub(",",".",$12)
         for(i=1;i<=NF;i++){
            if( $i != $11 && $i != $12  ){
             if(index($i,"\"") == 0){a=$i;gsub(a,"\""a"\"",$i) }
          }
                          }
           chaine=$1 
           for(i=2;i<=NF;i++){
               chaine=chaine";"$i 
             }           
           printf(chaine"\n") >> "ajout.txt"   
                     }  
    
    
     END {  print fini     }' finalg_c.csv



awk  ' BEGIN {  FS=";"
                print debut  } 
       { if( NR !=1 ){
           chaine="("
           chaine=chaine$6","$3","$9","$7","$11",""\"TTC\""",""19.600"","$12
           chaine=chaine"),"
           printf(chaine"\n") >> "ajout2.txt"   
                     }  
    }
    
     END {  print fini     }' ajout.txt
 
    cat ajout2.txt >> import.sql
   

    
    wc -l finalg_c.csv
    wc -l ajout.txt  
    wc -l ajout2.txt
      

exit 0  #sort du programme une fois fini

remplacé la virgule de la dernière ligne par un point virgule ce qui donne .

  -- phpMyAdmin SQL Dump
-- version 2.11.9.2
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Ven 10 Avril 2009 à 10:33
-- Version du serveur: 5.0.51
-- Version de PHP: 5.2.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `dolibarr`
--

-- --------------------------------------------------------

--
-- Structure de la table `llx_product`
--

CREATE TABLE IF NOT EXISTS `llx_product` (
  `rowid` int(11) NOT NULL auto_increment,
  `datec` datetime default NULL,
  `tms` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `ref` varchar(32) collate utf8_unicode_ci NOT NULL,
  `label` varchar(255) collate utf8_unicode_ci NOT NULL,
  `description` text collate utf8_unicode_ci,
  `note` text collate utf8_unicode_ci,
  `price` double(24,8) default '0.00000000',
  `price_ttc` double(24,8) default '0.00000000',
  `price_min` double(24,8) default '0.00000000',
  `price_min_ttc` double(24,8) default '0.00000000',
  `price_base_type` varchar(3) collate utf8_unicode_ci default 'HT',
  `tva_tx` double(6,3) default NULL,
  `fk_user_author` int(11) default NULL,
  `envente` tinyint(4) default '1',
  `fk_product_type` int(11) default '0',
  `duration` varchar(6) collate utf8_unicode_ci default NULL,
  `stock_propale` int(11) default '0',
  `stock_commande` int(11) default '0',
  `seuil_stock_alerte` int(11) default '0',
  `stock_loc` varchar(10) collate utf8_unicode_ci default NULL,
  `barcode` varchar(255) collate utf8_unicode_ci default NULL,
  `fk_barcode_type` int(11) default '0',
  `partnumber` varchar(32) collate utf8_unicode_ci default NULL,
  `weight` float default NULL,
  `weight_units` tinyint(4) default NULL,
  `volume` float default NULL,
  `volume_units` tinyint(4) default NULL,
  `canvas` varchar(15) collate utf8_unicode_ci default '',
  `finished` tinyint(4) default NULL,
  `import_key` varchar(14) collate utf8_unicode_ci default NULL,
  PRIMARY KEY  (`rowid`),
  UNIQUE KEY `uk_product_ref` (`ref`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

--
-- Contenu de la table `llx_product`
--

INSERT INTO `llx_product` (`ref`, `label`, `description`, `note`, `price_ttc`, `price_base_type`, `tva_tx`,  `weight`) VALUES

("086DC","","piece lambda  ","",200,"TTC",19.600,10),
("ERH319",""," autre piece  ","",175,"TTC",19.600,2),
etc
("WG478L","","dernière piece ","",200,"TTC",19.600,20);

enfin réaliser un import sql avec phpmyadmin et voilà import réussit :woohoo:

Ceci fait j’ai remarqué qu’on peut ajouter des photos en passant par l’interface Dolibarr . Je souhaiterais savoir si il est possible de faire un import de photos ?
Si possible , dans quelle répertoire dois-je mettre les photos et quelle table dois-je alimenter .

Merci … et grand merci à Dolibarr :woohoo:

pour les photos c’est dans : /documents/produits
par exemple /documents/produits/9/8/55089/photos/nomphoto.jpg

55089 représente l’id du produit
le 9 le dernier chiffre de l’id
le 8 l’avant dernier chiffre de l’id

Aucune table à alimenter.

Bonjour,

j’ai suivi le tuto Importer des clients en automatique - Dolibarr ERP CRM Wiki

mais en l’exécutant j’ai

Comment faire ?

up ? :happy:

Généralement, ce type d’erreur provient d’un « ; » manquant en fin d’instruction.
Trouve la ligne 31 de ton script et regarde ce qu’il en est pour elle et celle qui la précède.

Eh bien je pense qu’il y a une erreur dans le tuto car j’ai copié collé le code :

La ligne 31 est en gras :wink:

à++

re -up :happy:

Bonjour,

je pense qu’il y a une petite erreur

à la ligne 31 il faut mettre :

$sql="CREATE TABLE if not exists societe_tmp

et à la ligne 50 :

[code]
)";[/code

OK je vais voir, merci.

nticip écrit:

je suis également intéresse :woohoo:
merci

Bonjour, novice en la matière… Comment, je peux importer un fichier excel de façon simple ??? sans script ???
Merci de votre aide. Si possible rapide.

Il n’y a rien de très automatique pour l’instant. De plus le format excel est un format « propriétaire ».

J’y travaille mais il y a encore du boulot pour que ce soit entièrement automatique.

Bonjour

j’ai ma liste de clients et fournisseurs sous Filemaker, y-a-t-il une solution pour importer tou ça sous Dolibarr?
Merci

si tu peux faire un export au format csv ou excel oui

Bonjour, concernant l’import des tiers j’ai préférer opter pour l’utilisation du module d’import fournis (séparateur ,) lors de l’installation de Dolibarr.

J’ai pour l’occasion réaliser une fichier d’aide simple donnant de précieux renseignement sur les caractéristiques des champs.
On notera que le dernier est obligatoirement non null (alors que ce n’est pas précisé), sans quoi nos clients n’apparaissent pas dans la liste des clients.

Je pensez mettre à jour le wiki mais je ne m’en sort pas dans la mise en page :blush: , aussi je vous le donne ici, qui me semble être un bon endroit pour. Si quelqu’un souhaite le placer sur le wiki qu’il le face :wink: , c’est le premier endroit ou les utilisateur bloquer irons chercher.


Il est à noter, lors de la création du fichier CVS, l’importance des champs obligatoires.
Voici un descriptif détaillé des champs :

Le séparateur est la virgule et il vaut mieux encadrer les champs par des "
Exemple : « Sofie Durant »,« SD »,« 1 »,« 0 »,…

Descriptif du champs (note) « exemple »


- Nom ou raison sociale : « Sofie Durant »
- Préfixe (5 caractères max, ne doit pas contenir de doublon !) : « SD »
- Est un client (voir note) : « 0 »
- Est un fournisseur : « 0 » ou « 1 » (0 pour non 1 pour oui)
- Date de Creation (AAAA-MM-JJ) : « 2010-04-16 »
- Code client : « CU01-0001 »
- Code fournisseur : « SU01-0001 »
- Addresse
- Code postal
- Ville
- Numéro de téléphone (15 caractère max)
- Numero de fax (15 caractère max)
- Site web
- Adresse email
- N° siret
- N° Siren
- Code APE
- RCS/RM : « Perpignan »
- N° TVA Intra
- Capital
- Remarque
- Type (voir note)
- Effectif (voir note)
- Forme juridique (voir fichier joint nommé « forme_juridique.xls »)
- Niveau du prospect (voir note) => A VALIDER car non testé (dansle doute laisser vide)
- Status du prospect (OBLIGATOIRE ! Le laissé vide bloque l’affichage du tier dans la liste globale) (voir note)

NOTES


- Client
0 : est ni client ni prospect
1 : est client
2 : est prospect
3 : est client et prospect

- Type
0 : Inconnue
2 : Grand groupe
3 : PME/PMI
4 : TPE
5 : Administration
6 : Grossite
7 : Revendeur
8 : Particulier
100 : Autres

- Effectif
0 : Pas d’effectif
1 : entre 1 et 5 salariés
2 : entre 6 et 10 salariés
3 : entre 11 et 50 salariés
4 : entre 51 et 100 salariés
5 : entre 100 et 500 salariés
6 : plus de 500 salariés

- Niveau du prospect
PL_HIGH : Haut
PL_LOW : Faible
PL_MEDIUM : Moyen
PL_NONE : Aucun

- Status du prospect
-1 : Ne pas contacter
0 : Jamais contacté
1 : A contacter
2 : Contact en cours
3 : Contactée

Bonjour,

Le problème d’importation de contacts me semble être un sacré casse-tête.
Je voulais voir comment importer des contacts google vers dolibarr.
Si vous essayez depuis google d’exporter en csv, que ce soit en mode google ou outlook et d’analyser le fichier vous vous rendez vite compte que le champ adresse pouvant comporter des retours à la ligne met un beau bordel dans le fichier et le rend à peu près inutilisable.
Peut-être possible de reconstituer la ligne complète si elle ne comporte pas le bon nombre de séparateurs… Mouais.

Si vous tenter un export vcard, il arrive que des retours à la ligne coupe encore le champ adresse alors qu’il devrait contenir des « \n ». D’où viennent ils? mystère peut-être une limitation quelque part dans la longueur de la ligne mais bon, on pourrait encore s’en sortir puisque les champs sont clairement identifiés et ne comptent pas sur des séparateurs. Les lignes multiples étant prévues par la recommandation.

Par contre des informations ne sont pas clairement définies. La RFC 2426 ne parle pas de champ ZIPCODE ni de CITY, ni de COUNTRY d’ailleurs. Alors ok, il semblerait qu’on puisse assez bien le deviner. Si on regarde quelques exemples:

ADR;TYPE=HOME:;11 Avenue De La Gare\nAlixan 26300\nFrance;;;;;

ou bien

ADR;TYPE=WORK:;Avenue Du Coutelon\nPuyvert 84160;;;;;

Donc à mon avis, la solution la plus fiable semble être le format vcard. Et encore, quand on regarde la RFC2426 comparés aux « ;;;;; » en fin de ligne des exemples cités (provenant de google mail donc), on se dit que chacun fait ce qu’il veut en qu’il sera impossible de faire un script d’importation standard supposé pourtant traité un format standard. C’est lourd, l’exemple de la RFC indique:

    ADR;TYPE=dom,home,postal,parcel:;;123 Main
      Street;Any Town;CA;91921-1234

On se dit donc que les « ; » sont supposés indiquer les champs, sauf que Google s’en fout, si on crée une adresse, on otient:

ADR;TYPE=HOME:;Zone d’adresse\ncomportant des retours à la ligne\n010000 Ad
resse personnelle;;;;;

Remarquez le fameux retour à la ligne bref c’est du « démerdez vous ».

Ah ouais, en plus, une adresse peut être définie aussi par le champ label. Fallait bien compliquer un peu.

LABEL;TYPE=dom,home,postal,parcel:Mr.John Q. Public, Esq.\n
Mail Drop: TNE QB\n123 Main Street\nAny Town, CA 91921-1234
\nU.S.A.

Enfin je dis ça …

Cordialement,
Alain.

Bonjour,µ

Je tente d’utiliser l’assistant d’importation.
Le soucis que je rencontre est le suivant :
- Soit je pars d’un fichier Excel que j’exporte en CSV, avec pour séparateur le « ; »,
- Soit j’utilise directement un fichier CSV du logiciel AnuCapt. La encore le séparateur est le « ; ».

Seulement voilà, Dolibarr traite les fichiers CSV ayant pour séparateur le « , ».

Ce n’est pas insurmontable puisqu’il suffit d’utiliser la fonction « recherche / Remplace » de n’importe quel éditeur de texte. Cependant, ce genre de manipulation de ce type peut poser soucis à un utilisateur standard.

Du coup, je me demande si dans l’assistant d’import, il ne serait pas possible d’avoir le choix entre un fichier CSV avec « ; » comme séparateur, et un fichier CSV avec « , » comme séparateur.

Si, c’est possible, c’est juste que la fonctionnalité n’a pas été documenté (étrange, vu que c’est tout de même un paramètre important).

Il suffit d’aller dans les paramètres de Dolibarr, menu Divers, et de rajouter le paramètre suivant:

IMPORT_CSV_SEPARATOR_TO_USE=;

Voir:

1 « J'aime »