Clients

Définition des champs

Les champs obligatoires sont signalés par un crayon. Les définitions des champs se réfèrent à la syntaxe MySQL.

L'identification d'un client existant s'effectue via le numéro de client externe (external) ou le numéro de client interne (id). Si aucune correspondance n'est trouvée, un nouveau client est créé.

id
int(11)
Numéro de client XONIC interne.
Si spécifié et déjà existant → mise à jour. Vide ou 0 → nouveau client avec AUTO_INCREMENT.
external
varchar(255)
Numéro de client externe (par exemple, provenant d’un système ERP/gestion commerciale tel que SelectLine).
Prévalent sur « id » lors de la mise en correspondance des clients existants.
email_address
varchar(255)
Adresse e-mail du client.
gender
char(1)
Sexe / Titre
  • m: masculin (Monsieur)
  • f: féminin (Madame)
  • d: divers
prénom
varchar(255)
Prénom du client.
nom
varchar(255)
Nom de famille du client.
pseudonyme
varchar(255)
Nom d'utilisateur / nom d'affichage du client.
mot de passe
varchar(255)
Mot de passe (en clair).
Il est automatiquement enregistré sous forme cryptée lors de l'importation. Si aucun mot de passe n'est indiqué, le mot de passe existant est conservé (en cas de mise à jour) ou aucun n'est défini (pour un nouveau client).

Pour les nouveaux clients ayant activé l'option « XML_PORT_NEW_CUSTOMER_MAIL=true », un mot de passe est généré automatiquement et envoyé par e-mail de bienvenue.
telephone
varchar(255)
Numéro de téléphone.
fax
varchar(255)
Numéro de fax.
langue
varchar(2)
Langue du client sous forme de code ISO-2.
  • de: Allemand (par défaut)
  • en: anglais
Est automatiquement converti en « language_id » en interne.
group_id
int(11)
ID du groupe de clients.
Les groupes de clients peuvent être définis/mis à jour dans le bloc « <groups> » du fichier XML.
default_address
int(11)
Adresse de livraison par défaut (ID du carnet d'adresses).
Si elle n'est pas spécifiée, elle est automatiquement définie sur la première adresse importée.
billing_address
int(11)
Adresse de facturation (ID du carnet d'adresses).
Si ce champ n'est pas renseigné, la valeur par défaut correspond à la première adresse importée.
newsletter
tinyint(1)
Abonnement à la newsletter
  • 1: Abonné (création/mise à jour de l'entrée d'abonné à la newsletter). À partir de la version 4.9.168 de la boutique, uniquement si l'adresse ne fait l'objet d'aucun blocage de newsletter ni d'opposition à la publicité, et uniquement pour les comptes actifs et non bloqués ; un abonnement confirmé conserve sa confirmation et son lien de désabonnement.
  • 0: Désabonnement. À partir de la version 4.9.168 de la boutique, l'importation supprime l'abonnement dans la boutique et chez le fournisseur de la newsletter, et enregistre une opposition à la publicité : les importations ultérieures rejettent l'adresse ; une nouvelle inscription n'est possible que via l'e-mail de confirmation. Jusqu'à la version 4.9.167, l'abonnement était uniquement supprimé dans la boutique.
  • ⚠️ Les e-mails publicitaires issus du marketing et des automatisations (xoMarketing) ne tiennent pas encore compte de l’opposition à la publicité dans la version 4.9 de la boutique ; cette fonctionnalité sera disponible à partir de la version 4.10.
  • ⚠️ Si un système de gestion des stocks envoie un e-mail « 0 » même pour les abonnements « inconnus », il désabonne ainsi tout abonné de la boutique. Dans ce cas, n’envoyez l’e-mail « newsletter » qu’aux abonnements connus ou omettez-le.
customers_nl_lock
tinyint(1)
Blocage des newsletters, uniquement avec votre propre XSL (le XSL standard ne fournit pas ce champ).
  • 1: Activer le blocage. À partir de la version 4.9.171 de la boutique, l'importation, après le fichier, supprime tous les abonnements du compte, dans la boutique et chez le fournisseur de newsletter ; elle comptabilise les réponses dans newsletter.locked_removed et les échecs chez le fournisseur dans unsubscribe_failed. Jusqu'à la version 4.9.170, l'importation ne faisait qu'appliquer le blocage, l'abonnement restait actif dans la boutique.
  • ⚠️ Les e-mails publicitaires issus du marketing et des automatisations (xoMarketing) ne contournent pas encore le blocage dans Shop 4.9 ; cette fonctionnalité sera disponible avec Shop 4.10.
  • 0: cela ne fait que lever le blocage et ne réinscrit personne.

Adresses

Plusieurs adresses peuvent être importées par client. Chaque adresse est spécifiée sous la forme d’un nœud <address> distinct au sein du bloc <addresses>. La première adresse est automatiquement définie comme adresse de livraison et de facturation par défaut.

genre
char(1)
Titre associé à l'adresse (m, f, d).
firstname
varchar(255)
Prénom.
lastname
varchar(255)
Nom de famille.
entreprise
varchar(255)
Nom de l'entreprise.
Est également transféré dans le champ « customers_company » de la fiche client.
tax_id
varchar(255)
Numéro d'identification TVA (par exemple : DE123456789).
street_address
varchar(255)
Rue et numéro.
postcode
varchar(10)
Code postal.
ville
varchar(255)
Ville / Localité.
suburb
varchar(255)
Quartier / Quartier de la ville.
country_code
char(2)
Code pays ISO 3166-1 Alpha-2 (par exemple : DE, AT, CH).
Recommandé plutôt que le champ country.
country
varchar(255)
Nom du pays (alternative à country_code).
Est converti en interne en « country_id ». Si ni « country_code » ni « country » n’est spécifié, c’est le pays par défaut configuré dans la boutique qui s’applique.
state
varchar(255)
État fédéral / région / canton.
supplément1
varchar(255)
Complément d'adresse 1 (champ libre, par exemple étage, bâtiment).
complément2
varchar(255)
Complément d'adresse 2.
complément3
varchar(255)
Complément d'adresse 3.

Groupes de clients

Les groupes de clients peuvent être définis dans le bloc optionnel « <groups> » situé avant les données client. Les groupes existants sont mis à jour à l'aide de leur ID, tandis que les nouveaux groupes sont créés automatiquement.

id
int(11)
ID du groupe. Laisser vide pour une attribution automatique.
name
varchar(255)
Nom du groupe de clients.

Champs supplémentaires

Le bloc « <extra_fields> » permet de transmettre des champs supplémentaires sous forme de paires nom-valeur. Les champs suivants font l'objet d'un traitement spécifique :

blocage du document
booléen
Bloquer le compte client.
  • true: Le client est bloqué (customers_lock = 1)
  • false: le client est actif (customers_lock = 0)
Responsable régional
varchar(255)
Affectation aux responsables de zone.
Plusieurs responsables de zone séparés par des points-virgules. Préfixe S pour l'indicateur de super-utilisateur.
Exemple : EXT-001;SEXT-002;EXT-003
Le numéro client externe du responsable de zone est converti en identifiant interne.
numéro d'approbateur
varchar(255)
Numéro de client externe de l'approbateur.
Il est converti en identifiant client interne et enregistré en tant que relation d'approbateur.
castrolnr
varchar(255)
Numéro de client Castrol (spécifique au secteur).

Remises (discounts)

À partir de la version 4.8.6 de la boutique, un nœud facultatif « <discounts> » peut être transmis au sein de l’élément « <customer> ». Chaque entrée « <discount> » correspond à une ligne de remise dans le champ « Remises » de la gestion des clients (x % sur la catégorie N).

Si la boutique comporte plusieurs comptes clients portant le même numéro de client externe (par exemple, plusieurs interlocuteurs d’une même entreprise), les remises transmises sont automatiquement appliquées, à partir de la version 4.8.8 de la boutique, à tous les comptes associés à ce numéro. Les autres données client (nom, e-mail, adresses) ne sont pas concernées par cette modification.

category_id
int(11)
ID de la catégorie à laquelle s'applique la remise.
0 = Niveau principal – associé à subcategories = 1, la remise s'applique à l'ensemble de la gamme.
value
décimal
Remise en pourcentage (champ obligatoire).
La virgule décimale est autorisée (par ex. 8,5). Les valeurs supérieures à 100 sont limitées à 100, les valeurs inférieures ou égales à 0 sont ignorées.
sous-catégories
tinyint(1)
La remise s'applique également aux sous-catégories.
0 / 1, par défaut : 1.
qpb
tinyint(1)
Remise également applicable aux prix dégressifs.
0 / 1, par défaut : 0.
option
tinyint(1)
Remise également applicable aux suppléments liés aux caractéristiques.
0 / 1, par défaut : 0.
special
tinyint(1)
Remise également applicable aux offres spéciales (prix promotionnels issus de la gestion des offres spéciales).
Ne s'applique pas aux prix personnalisés par client – voir la remarque sous le tableau.
0 / 1, par défaut : 0.

Pour le nœud « <discounts> » , la sémantique « Remplacer si présent » s’applique :

  • Nœud contenant des entrées : l'ensemble des remises du client est remplacé.
  • Nœud vide (<discounts></discounts>): toutes les remises du client sont supprimées.
  • Nœud absent : les remises restent inchangées – les liaisons existantes n’ont aucune incidence.

Le drapeau d'activation interne du client est automatiquement mis à jour – les remises s'appliquent immédiatement dans la boutique.

Interaction avec les prix personnalisés : par défaut, une remise de catégorie s’applique en plus d’un prix personnalisé (la remise s’applique alors au prix client). À partir de la version 4.8.8 de la boutique, il est possible de désactiver cette fonctionnalité via le paramètre « Remises par catégorie sur les prix personnalisés » dans la configuration de la boutique – le prix personnalisé est alors le prix final et n’est pas concerné par la remise.

Exemple dans l’élément « <customer> » :

<discounts>
  <discount>
    <category_id>0</category_id>
    <value>8,5</value>
  </discount>
  <discount>
    <category_id>22</category_id>
    <subcategories>0</subcategories>
    <value>15</value>
    <special>1</special>
  </discount>
</discounts>

Exemple XML

Le fichier XML doit respecter la convention de nommage suivante :
Customers(.)*.xml

Emplacement de stockage : /xoport/xml/import/

Lancer l'importation : /xpanel/xoport/import_customers.php (alias à partir de la version 4.8.6 de la boutique : update_customers.php).

Le fichier est intégré dans une structure de type <customer_data><customers> — chaque client correspond à un élément <customer>(voir exemple). À partir de la version 4.8.6 de la boutique, <customers> est également accepté directement comme élément racine. Seuls les champs contenus dans le fichier sont enregistrés — les champs de données de base manquants ne sont pas modifiés (importation delta, par exemple uniquement <external> + <discounts>) ; un champ transmis vide efface la valeur correspondante dans la boutique. À partir de la version 4.8.6, la réponse JSON signale également customers.imported / customers.skipped_unknown — imported: 0 indique un élément racine incorrect ou des numéros de client inconnus.
<?xml version="1.0" encoding="UTF-8"?>
<customer_data>

  <!-- Kundengruppen (optional) -->
  <groups>
    <group>
      <id>1</id>
      <name>Standardkunde</name>
    </group>
    <group>
      <id>2</id>
      <name>Premium</name>
    </group>
  </groups>

  <!-- Kundendaten -->
  <customers>
    <customer>
      <id></id>
      <external>ERP-12345</external>
      <group_id>1</group_id>
      <language>de</language>
      <gender>m</gender>
      <firstname>Max</firstname>
      <lastname>Mustermann</lastname>
      <email_address>max@example.com</email_address>
      <telephone>+49 371 123456</telephone>
      <newsletter>1</newsletter>
      <addresses>
        <address>
          <gender>m</gender>
          <firstname>Max</firstname>
          <lastname>Mustermann</lastname>
          <company>Meine GmbH</company>
          <tax_id>DE123456789</tax_id>
          <street_address>Hauptstraße 1</street_address>
          <postcode>09247</postcode>
          <city>Chemnitz</city>
          <country_code>DE</country_code>
          <state>Sachsen</state>
        </address>
      </addresses>
      <extra_fields>
        <extra_field>
          <name>belegsperre</name>
          <value>false</value>
        </extra_field>
      </extra_fields>
      <discounts>
        <discount>
          <category_id>0</category_id>
          <value>8,5</value>
        </discount>
      </discounts>
    </customer>
  </customers>

</customer_data>

Télécharger la définition XSL

Last updated: 18 octobre 2026

Importez les données clients (adresses, groupes de clients et abonnements à la newsletter) dans votre boutique XONIC via une interface XML. Prise en charge des numéros de client externes pour l'intégration ERP/gestion commerciale.