# Mappage des champs Cegid Retail Y2

### Synchronisation des données client et fidélité

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

Mappage 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 présents dans le BackOffice de Wallet Crew. Il en va de même pour les consentements et autres textes légaux.

### Personnalisation du mappage

Il est possible de personnaliser le mappage avec un script javascript personnalisé. Le script nécessite 2 méthodes : MapFromY2 et MapToY2. Vous trouverez ci-dessous le script minimal pour utiliser le mappage 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 invoqué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 du 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 invoquée chaque fois qu'un client est récupéré et affiché dans le Wallet Crew :
 * lors de l'édition 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 le 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 ainsi : ![cegid\_retail\_y2\_fields\_mapping\_1.png](/files/4f5f5b159a903d3a3b740e0db416a348c316b7a5)

#### 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 en utilisant `UserDefinedTexts` propriété.

Le mappage peut se faire ainsi :

```javascript
// la valeur Id correcte 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 mappage de champs

  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 mappage de champs

  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 une 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 en utilisant `UserDefinedData` propriété.

Attention : les WebServices Cegid ont un décalage de 1 entre le nom dans la base de données et le nom dans le service web.

Le mappage peut se faire ainsi :

```javascript
// Y2 a un décalage de 1. UserDefinedTable0Value correspond à 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 mappage de champs

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

const mapFromY2 = function (data, account) {
  // autre mappage de champs

  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/docs/fr/connecter/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.
