Import CSV données clients module Base

Bonjour,

L’import des données étant assez compliqué à réaliser, est ce que quelqu’un dispose d’un fichier XML déjà configuré pour le module base ? Je cherche à importer des données clients existantes pour la table Partner.

Voici ou j’en suis :

<?xml version="1.0" encoding="UTF-8"?>
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_7.1.xsd">


  <input file="TEST_3_donnes_clients.csv" separator=";" type="com.axelor.apps.base.db.Partner">
    <!-- <bind node="print-template" type="com.axelor.apps.base.db.Base"> -->
      <bind to="importId" column="ID Client"/>
      <!-- <bind to="partnerTypeSelect" column="Origine de Contact"  evaluate="value.equals('Particulier') ? 2 : (value.equals('Professionnel') ? 1 : null)"/> -->
      <bind to="name" column="Nom"/>
      <bind to="firstName" column="Prénom"/>
      <bind to="fixedPhone" column="Portable1"/>
      <bind to="emailAddress.address" column="Email"/>
      <bind to="isCustomer" eval="'true'"/>
      <bind to="simpleFullName" eval='"${firstName} ${name}"'/>
      <!-- <bind node="metaModel" to="metaModel" search="self.fullName = :fullName" create="false">
        <bind node="name" to="name"/>
        <bind node="fullName" to="fullName"/>
        <bind node="packageName" to="packageName"/>
      </bind>

Je ne comprends pas le fichier template du module Base « import-print-template-config.xml » qui ne map aucun de ces champs et qui pourtant on l’air nécessaires…

Est ce que quelqu’un pourrait m’expliquer précisément étape par étape comment importer mon fichier client ?

Bonjour , je ne comprend pas trop d ou veint votre fichier « import-print-template-config.xml » , le fichier inclus dans la solution pour l import des données de base de démo est base-config.xml , ou une section correspond a l import des données du fichiers de démo « base_partner.csv ».

Bonjour, oui j’ai fini par trouver ce fichier , mais il ne contient pas les champs que j’ai besoin de bind isCustomer , partnerTypeSelect, simpleFullName etc…

Cela se fait automatiquement si le nom de la colonne est le nom du champs en base de données.

Donc le process c’est de renommer les colonnes de mon CSV ? pas de bind à faire ?

Par exemple je veux importer des équipements dans le nouveau module intervention.
Exemple de mes données equipement.csv avec 1 seule colonne :

Libellé de l'article
A. O. SMITH - EQ 155 F
BALLON
BLOC HYDRAULIQUE
CABLE CIRCULATEUR
CABLE POMPE
CIRCUIT
DE DIETRICH - GS 152E
DEGAZEUR G 3/8
échangeur à plaques
ÉCHANGEUR À PLAQUES
electrode de masse
ELM LEBLANC - AGL 12.3 195L
ISOLANT

Le fichier de config pour le module intervention : " axelor-open-suite/axelor-intervention/src/main/resources/apps/demo-data/intervention-config.xml at 068ff8502338398793f51f28946a212d70fb628d · axelor/axelor-open-suite · GitHub "

Et la bonne ligne pour mon fichier :

  <input file="intervention_equipment.csv" separator=";"
    type="com.axelor.apps.intervention.db.Equipment">
    <bind to="commissioningDate" column="commissioningDate"
      eval="call:com.axelor.csv.script.ImportDateTime:importDate(commissioningDate)"/>
    <bind to="customerWarrantyOnPartEndDate" column="customerWarrantyOnPartEndDate"
      eval="call:com.axelor.csv.script.ImportDateTime:importDate(customerWarrantyOnPartEndDate)"/>
  </input>

Ce que je fais c’est que je créé un fichier de config XML séparé uniquement avec le XML qui m’intéresse, et je bind mes champs

<?xml version="1.0" encoding="UTF-8"?>
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_7.1.xsd">

  <input file="test-import-donnees-equipements-TG76.csv" separator=";"
    type="com.axelor.apps.intervention.db.Equipment">
    <bind to="commissioningDate" column="commissioningDate"
      eval="call:com.axelor.csv.script.ImportDateTime:importDate(commissioningDate)"/>
    <bind to="customerWarrantyOnPartEndDate" column="customerWarrantyOnPartEndDate"
      eval="call:com.axelor.csv.script.ImportDateTime:importDate(customerWarrantyOnPartEndDate)"/>
    <bind to="name" column="Libellé de l'article"/>
    <bind to="typeSelect" eval="'Équipement'"/>
    <bind to="partner" eval="304"/>
  </input>

</csv-inputs>

Ici j’ai mis typeSelect à équipement par défaut
et partner à l’ID partner 304 mais ça ne fonctionne pas

Pouvez vous aussi m’expliquer pour les bind des champs d’autres modèles ? pour le mail des Partner par exemple

J’ai mon csv avec les colonnes nommées comme le fichier d’exemple csv de base partner.

Ensuite j’ai pris le fichier base-config.xml complet, à la ligne 136 je met le nom de mon csv :

<input file="test-6-donnees-client-TG76.csv" separator=";" 
 type="com.axelor.apps.base.db.PartnerCategory" search="self.importId = :importId"/>.

Ensuite j’ajoute bien les deux fichiers :

Et voici le log

javax.validation.ConstraintViolationException: Validation failed for classes [com.axelor.apps.base.db.PartnerCategory] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='ne doit pas être nul', propertyPath=name, rootBeanClass=class com.axelor.apps.base.db.PartnerCategory, messageTemplate='{javax.validation.constraints.NotNull.message}'}
    ConstraintViolationImpl{interpolatedMessage='ne doit pas être nul', propertyPath=code, rootBeanClass=class com.axelor.apps.base.db.PartnerCategory, messageTemplate='{javax.validation.constraints.NotNull.message}'}
]
Total : 11 - Réussi : 0 - Non vide : 0
Anomalies générées :11

Le process n’est pas encore clair pour moi.