# mapping des champs Cegid Retail Y2

### Synchronisation des données clients et de fidélité

Création et mise à jour du compte client et des Cartes de fidélité dans Y2 via les formulaires d'inscription.

Correspondance des champs : voici la liste des champs disponibles par défaut dans le connecteur :

```
Champs Wallet Crew     champs Y2(WebService)
--------------------------------------------------------------------------
email                  EmailData.Email
consents_email         EmailData.EmailingAccepted
phoneNumber            PhoneData.CellularPhoneNumber
isProspect             IsProspect
firstName              FirstName
lastName               LastName
sex                    Sex
title                  TitleId
advisor                SalesPersonId
storeId                UsualStoreId
birthDate              BirthDateData
address                AddressData.AddressLine1
streetNumber           AddressData.AddressLine2
postcode / zipCode     AddressData.ZipCode
city                   AddressData.City
country                AddressData.CountryId
nationality            NationalityId
consents_email         OptinEmail(true = BrandOnly, false = DoNotUse)
consents_post          OptinPostal(true = BrandOnly, false = DoNotUse)
consents_sms           OptinMobile(true = BrandOnly, false = DoNotUse)
consents_emailReceipt  EmailData.SendReceiptByMail
```

Si vous souhaitez des champs supplémentaires, contactez votre administrateur Wallet Crew. Les libellés et les valeurs des champs à choix multiple doivent être renseignés et se trouvent dans le BackOffice Wallet Crew. Il en va de même pour les consentements et les autres textes juridiques.

### Personnalisation du mapping

Il est possible de personnaliser le mapping avec un script JavaScript personnalisé. Le script requiert 2 méthodes : MapFromY2 et MapToY2. Vous trouverez ci-dessous le script minimal pour utiliser le mapping personnalisé

```js
// fichier server/scripts/y2.mapping.js

/**
 * Méthode utilisée pour convertir les informations du modèle de données Wallet Crew vers le modèle de données Y2.
 * Cette méthode sera appelée chaque fois qu'un client est créé ou mis à jour dans Y2
 *
 * Cette méthode doit être implémentée si vous souhaitez envoyer des données spécifiques à Y2
 *
 * @param account dictionnaire de données provenant de Wallet Crew
 * @param data modèle de données client Y2 tel que défini dans CustomerWcfService
 */
const mapToY2 = function (account, data) {};

/**
 * Méthode utilisée pour convertir les informations de Y2 vers neostore.
 * Cette méthode sera appelée chaque fois qu'un client est récupéré et affiché dans Wallet Crew :
 * lors de la modification d'un client existant via un formulaire d'inscription ou lors de l'affichage d'informations sur une Carte
 *
 * @param data modèle de données client Y2 tel que défini dans CustomerWcfService
 * @param account dictionnaire de données à définir dans Wallet Crew
 */
const mapFromY2 = function (data, account) {};

export default function (context) {
  context.register("extensions.cegid.y2.mapper", {
    MapToY2: mapToY2,
    MapFromY2: mapFromY2,
  });
}
```

Le modèle de données Y2 est défini comme suit : ![cegid\_retail\_y2\_fields\_mapping\_1.png](/files/505f312c643bd520002653d613e7cc46df7cd2c3)

#### Recettes

**Textes libres Y2 - YTC\_TEXTELIBRE**

Dans Cegid, il est possible de définir jusqu'à 3 textes libres, ils sont stockés dans les colonnes `YTC_TEXTELIBRE1`, `YTC_TEXTELIBRE2`, `YTC_TEXTELIBRE3`. Les valeurs sont accessibles via `UserDefinedTexts` propriété.

La correspondance peut être faite comme suit :

```javascript
// la bonne valeur d'Id doit être remplacée - 2 fois dans mapToY2 et 1 fois dans mapFromY2
// Id : 0 => YTC_TEXTELIBRE1
// Id : 1 => YTC_TEXTELIBRE2
// Id : 2 => YTC_TEXTELIBRE3

const mapToY2 = function (account, data) {
  // autre correspondance de champ

  const comment = account["comment"];
  if (comment) {
    data.UserDefinedTexts = [
      ...(data.UserDefinedTexts || []).filter((udt) => udt?.Id != 0),
      { Id: 0, Value: comment },
    ];
  }
};

const mapFromY2 = function (data, account) {
  // autre correspondance de champ

  account["comment"] = (data.UserDefinedTexts || []).find(
    (udt) => udt?.Id == 0,
  )?.Value;
};
```

**Table libre Y2 - YTC\_TABLELIBRETIERS**

Dans Cegid, il est possible de définir jusqu'à 10 valeurs dans la table libre (Table libre en français), elles sont stockées dans les colonnes `YTC_TABLELIBRETIERS1`, `YTC_TABLELIBRETIERS2`, `YTC_TABLELIBRETIERS3`, `YTC_TABLELIBRETIERS4`, `YTC_TABLELIBRETIERS5`, `YTC_TABLELIBRETIERS6`, `YTC_TABLELIBRETIERS7`, `YTC_TABLELIBRETIERS8`, `YTC_TABLELIBRETIERS9`, `YTC_TABLELIBRETIERSA`. Les valeurs sont accessibles via `UserDefinedData` propriété.

Attention aux WebServices Cegid : il y a un décalage de 1 entre le nom dans la base de données et le nom dans le service web.

La correspondance peut être faite comme suit :

```javascript
// Y2 a un décalage de 1. UserDefinedTable0Value est YTC_TABLELIBRETIERS1, etc.
/*
 * UserDefinedTable0Value => YTC_TABLELIBRETIERS1
 * UserDefinedTable1Value => YTC_TABLELIBRETIERS2
 * UserDefinedTable2Value => YTC_TABLELIBRETIERS3
 * UserDefinedTable3Value => YTC_TABLELIBRETIERS4
 * UserDefinedTable4Value => YTC_TABLELIBRETIERS5
 * UserDefinedTable5Value => YTC_TABLELIBRETIERS6
 * UserDefinedTable6Value => YTC_TABLELIBRETIERS7
 * UserDefinedTable7Value => YTC_TABLELIBRETIERS8
 * UserDefinedTable8Value => YTC_TABLELIBRETIERS9
 * UserDefinedTable9Value => YTC_TABLELIBRETIERSA
 */

const mapToY2 = function (account, data) {
  // autre correspondance de champ

  const preference = account["preference"];
  if (preference) {
    data.UserDefinedData = {
      ...(data.UserDefinedData || {}),
      UserDefinedTable1Value: preference,
    };
  }
};

const mapFromY2 = function (data, account) {
  // autre correspondance de champ

  account["preference"] = data.UserDefinedData?.UserDefinedTable1Value;
};
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.thewalletcrew.io/connectors/fr/pos/cegid/cegid-retail-y2-fields-mapping.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
