Un import qui s'est bien passé, mais

Bonjour,
Je procède à la mise en place de Dolibarr sur serveur Linux en remplacement d’un logiciel propriétaire sur PC. Toute l’installation et l’accès sont opérationnels, tout va bien de ce côté là.
J’en suis à la restitution des données depuis le logiciel existant et je travaille avec les outils d’importation de Dolibarr.
J’ai importé les produits, les catégories de ceux-ci, les stocks et les tiers fournisseurs. A part quelques aller-retour pour ajuster les fichiers CSV ça s’est bien passé, les produits avec leur stock et les fournisseurs sont visibles et corrects.
Puis j’ai voulu lier les fournisseurs aux produits par la fonction d’import utilisant le fichier :
Exemple_de_fichier_import_produit_supplierprices.csv
Celui-ci m’a donné du fil à retordre pour sa mise au point mais j’ai finalement pu importer ses plus de 10000 lignes sans erreurs.
Par contre quand je retourne dans Dolibarr et que j’affiche chacun des fournisseurs, je m’aperçois qu’aucun produit ne lui semble lié car quand je souhaite les lister, rien ne s’affiche.
Donc je m’interroge sur ce que j’ai bien pu faire comme erreur dans cette importation dont les colonnes sont :
Produit ou Service* (sp.fk_product)
Fournisseur* (sp.fk_soc)
Réf. produit fournisseur* (sp.ref_fourn)
Qté achat minimum* (sp.quantity)
Taux TVA (sp.tva_tx)
Code Taux TVA (sp.default_vat_code)
DeliveryDelay (sp.delivery_time_days)
SupplierReputation (sp.supplier_reputation)
Prix quantité min. HT* (sp.price)
Prix unitaire HT* (sp.unitprice)
Remise par défaut quantité min. (sp.remise_percent)

Si quelqu’un avait une piste, ce serait sympa…

Précision concernant le contenu du fichier importé :
"Produit ou Service* (sp.fk_product)";"Fournisseur* (sp.fk_soc)";"Réf. produit fournisseur* (sp.ref_fourn)";"Qté achat minimum* (sp.quantity)";"Taux TVA (sp.tva_tx)";"Code Taux TVA (sp.default_vat_code)";"DeliveryDelay (sp.delivery_time_days)";"SupplierReputation (sp.supplier_reputation)";"Prix quantité min. HT* (sp.price)";"Prix unitaire HT* (sp.unitprice)";"Remise par défaut quantité min. (sp.remise_percent)"
"ref:BOSPM11BLA001";"id:BOUTSUR FF";11328511017;1;20;"TX_NORMAL";;"FAVORITE";"0.26";"0.26";0

Sans ref: et id: devant les données champs produit et fournisseur j’avais des erreurs à l’importation.
Je me demande si ce n’est pas l’un ou l’autre qui pose problème…
Bien sûr, aussi bien le produit que le fournisseur pré-existent dans la base.

Ce qui m’inquiète, c’est que cet import parfaitement accepté et exécuté semble n’avoir eu aucune conséquence sur ce qu’affiche ensuite Dolibarr concernant les produits et fournisseurs. Je me demande bien (avant d’avoir fouillé via phpmyadmin) ce qu’il a bien pu faire de mes 10000 lignes importées…

Fruit de mon enquête dans la base de données :
J’ai fait une recherche sur la clé d’importation : 20201121161158
Il en résulte que seule la table : db_product_fournisseur_price semble avoir été alimentée via cette importation.
Un certain nombre de colonnes ont été correctement remplies avec mes informations dont ref_fourn, la référence produit chez le fournisseur.
Par contre je ne sais pas quelle colonne doit faire le lien avec le fournisseur lui même qui ne semble cité nulle part dans cette table. Serait-ce fk_soc qui dans mon cas est à la valeur 0 pour tous les produits ? (il y a aussi desc_fourn resté à null).
La liaison avec la référence produit est sans doute réalisée via la colonne fk_product qui semble correcte.

Que faire pour réparer cette situation ? Remplacer id: par ref: dans la colonne fournisseur ?

Si je fais un essais avec ref: pour les valeurs de la colonne fournisseur, à la place de id:
A la simulation j’ai l’erreur (sur toutes les lignes mais bien sûr TOTO varie) :
Ligne 44

Champ 2: ‹ TOTO › n’est pas une référence existante comme Tiers

Peut-être que sur cet import, l’astuce ref: ne fonctionne pas.

Un identifiant est numérique ce qui n’est pas le cas ans votre ligne d’import

Merci,
C’est exactement ça, ref: ne fonctionne pas dans ce cas, il me faut donc maintenir id: mais en le renseignant avec la valeur correspondant au code fournisseur de la colonne rowid de la table db_societe ce qui n’est pas très pratique mais faisable.
Pour valider l’hypothèse j’ai fait un essais de modification à la main sous phpmyadmin d’une valeur de fk_soc de la table db_product_fournisseur_price et ça marche, le produit apparait chez le fournisseur.
Quand j’aurai le temps je décrirai sur github ce défaut de la fonction d’import que je considère comme un bug (au moins de documentation…).

Bug #15490 rédigé et aussitôt pris en charge.
Résolu au titre du PR #15489

1 « J'aime »