> ## Documentation Index
> Fetch the complete documentation index at: https://storekit.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Zonal (Aztec)

> Connectez le POS Zonal Aztec à storekit pour la synchronisation du menu, l'injection de commande avec validation du panier, la sync du plan de salle pour sur place et une fonctionnalité pay at table complète.

Zonal (Aztec) est l'une des intégrations POS les plus complètes disponibles sur storekit. Elle offre la synchronisation complète du menu, l'injection automatique de commande avec validation du panier, la synchronisation du plan de salle pour le sur place et la prise en charge des plats, tailles et modificateurs imbriqués.

## Prérequis

Avant de connecter Zonal, assurez-vous d'avoir :

* Zonal Aztec POS avec accès à l'API iOrder
* iOrder Brand Token de votre responsable de compte Zonal
* iOrder User Device Identifier
* Accès admin à votre tableau de bord storekit

<Note>
  Contactez votre responsable de compte Zonal pour demander les identifiants API iOrder. Vous aurez besoin du Brand Token et du User Device Identifier pour vous connecter.
</Note>

## Configuration de la connexion

### Étape 1 : Saisir les identifiants Zonal

1. Allez dans **Paramètres de la boutique > Intégrations** dans votre tableau de bord storekit
2. Trouvez **Zonal** et cliquez sur **Connecter**
3. Saisissez vos identifiants iOrder :
   * **Brand Token** — Votre token d'authentification de marque iOrder
   * **User Device Identifier** — Votre identifiant d'appareil unique
   * **Bundle Identifier** (optionnel) — ID de bundle personnalisé si fourni
4. Cliquez sur **Connecter**

storekit vérifie les identifiants avec l'endpoint `authCheck` de Zonal avant l'enregistrement.

### Étape 2 : Sélectionner votre établissement

Après authentification :

1. storekit récupère les établissements disponibles depuis votre compte Zonal
2. Sélectionnez l'établissement (site) qui correspond à cette boutique storekit
3. Le Site ID de l'établissement est enregistré pour tous les appels API futurs

### Étape 3 : Synchroniser votre menu

Une fois connecté, importez votre menu depuis Zonal :

1. Allez dans **Menu** dans votre tableau de bord
2. Cliquez sur **Synchroniser le menu**
3. storekit récupère les menus de toutes les zones de vente
4. Les catégories et produits sont importés avec la structure complète de modificateurs

## Synchronisation du menu

### Ce qui est synchronisé

| Donnée                        | Synchronisée                                   |
| ----------------------------- | ---------------------------------------------- |
| Catégories                    | Oui (à partir des groupes d'affichage)         |
| Produits                      | Oui                                            |
| Prix                          | Oui (y compris les prix par portion)           |
| Descriptions                  | Oui (à partir des enregistrements d'affichage) |
| Images                        | Oui (téléchargées vers le CDN)                 |
| Modificateurs (Choice Groups) | Oui                                            |
| Modificateurs imbriqués       | Oui                                            |
| Variantes de taille/portion   | Oui (en tant que groupe de modificateurs)      |
| Plats                         | Oui (optionnel, en tant que modificateur)      |
| Instructions de production    | Oui                                            |
| Allergènes                    | Indicateur d'alcool uniquement                 |
| Calories                      | Oui                                            |
| Disponibilité                 | Oui (statut hors stock)                        |

### Types de synchronisation

**Synchronisation complète :**
Importe la structure complète du menu incluant catégories, produits, modificateurs et images. À utiliser après des modifications significatives du menu.

**Synchronisation allégée :**
Met à jour uniquement les prix et la disponibilité sans réimporter la structure complète. Beaucoup plus rapide — idéale pour les changements de prix fréquents ou les mises à jour de stock.

### Options de synchronisation

| Paramètre                        | Description                                                                                   |
| -------------------------------- | --------------------------------------------------------------------------------------------- |
| **Enable Coursing**              | Importer les options de plat en tant que groupe de modificateurs sur les produits applicables |
| **Enable Category Merge**        | Combiner les catégories portant le même nom provenant de différentes zones de vente           |
| **Subscreens as Categories**     | Traiter les sous-écrans Zonal comme des catégories distinctes de haut niveau                  |
| **Import Choices With No Price** | Inclure les options de modificateurs sans supplément de prix                                  |

<Note>
  Les instructions de production (articles avec `divisionId` de 0 ou indicateur `isInstruction`) sont automatiquement importées en tant que modificateurs gratuits, même s'ils n'ont pas de supplément de prix. Cela permet aux clients d'ajouter des instructions de préparation spéciales comme « Sans glaçons » ou « Extra chaud » à leurs commandes.
</Note>

### Restrictions par zone de vente

Les menus Zonal sont organisés par zones de vente. Pendant la synchronisation, storekit :

1. Récupère les menus de toutes les zones de vente
2. Fusionne les menus identiques entre les zones
3. Crée des restrictions de zone au niveau de la catégorie

Cela signifie que les produits peuvent être disponibles dans certaines zones mais pas dans d'autres (par ex. menus différents pour bar vs restaurant).

### Portions (tailles)

Lorsqu'un produit a plusieurs portions dans Zonal, storekit crée un groupe de modificateurs « Taille » :

* Le prix de base du produit est fixé à 0 £
* Chaque portion devient un modificateur avec son prix
* Les clients doivent sélectionner une taille pour ajouter l'article

## Injection de commande

Lorsqu'un client passe une commande, storekit l'envoie à Zonal via la méthode `placePaidOrder`.

### Flux de commande

1. **Validation du panier** — storekit appelle `checkBasket` pour valider les articles
2. **Paiement traité** — Le client paie via storekit
3. **Commande envoyée** — Commande envoyée à Zonal avec l'ID de panier
4. **Confirmation** — Zonal renvoie un ID de reçu, la commande est marquée acceptée

### Types de service

| Traitement | Service ID Zonal | Notes                                               |
| ---------- | ---------------- | --------------------------------------------------- |
| Sur place  | 1                | Inclut le numéro de table                           |
| Retrait    | 2                | Inclut le créneau horaire et le code de retrait     |
| Livraison  | 5                | Inclut l'adresse de livraison et le créneau horaire |

### Envoi des précommandes

Pour les précommandes, storekit calcule l'heure d'envoi optimale :

* **Commandes du jour** : Envoyées immédiatement
* **Commandes futures** : Envoyées à 6h le jour de la commande

Cela empêche les commandes d'encombrer votre file d'attente POS des jours à l'avance.

### Ce que reçoit Zonal

Chaque commande inclut :

* Nom, email, téléphone du client
* Tous les articles avec IDs d'ingrédients, IDs d'enregistrement d'affichage et type de portion
* Modificateurs en tant que lignes de choix avec structure imbriquée
* Attributions de plats (si configurées)
* Modificateurs de retrait (pour les articles par défaut retirés)
* Lignes de remise (pourcentage ou montant fixe)
* Montant du pourboire
* Adresse de livraison (pour les commandes de livraison)
* Créneau horaire (pour retrait/livraison)
* Code de retrait (8 caractères)
* Notes de commande personnalisées (via produit de note de commande)

### Notes de commande

Zonal n'accepte les notes clients qu'en tant que ligne d'article, donc un **Order Note Product ID** doit être configuré avant que les notes puissent apparaître sur les tickets Zonal. Allez dans **Boutiques** → \[votre boutique] → **Paramètres** → **Intégrations** → **Zonal** et définissez **Order Note Product ID** sur l'ID de produit Zonal que votre responsable de compte Zonal fournit pour les notes de commande. storekit ajoute alors une ligne d'article utilisant ce produit avec la note formatée attachée.

<Warning>
  Sans **Order Note Product ID** défini, storekit n'envoie aucune ligne de note — la note du client est enregistrée sur la commande storekit mais n'atteint jamais Zonal ni les tickets cuisine/bar qu'il imprime. C'est la cause habituelle du problème « les notes sont activées mais la cuisine ne les reçoit pas » sur les sites Zonal.
</Warning>

Les notes sont mises en majuscules et débarrassées des caractères que Zonal ne peut pas afficher, et sont tronquées à 840 caractères. Utilisez **Order Note Template** pour contrôler comment la note est composée.

Deux paramètres storekit doivent également autoriser la note :

* **Boutiques** → \[votre boutique] → **Paramètres** → **Opérations** → **Notes de commande** doit être **Optionnel** ou **Obligatoire** (pas **Masqué**), sinon les clients n'ont jamais de champ de note
* Si vous utilisez le regroupement de commandes, **Include order notes** doit être activé, sinon les notes sont retirées de la commande fusionnée avant qu'elle ne soit envoyée à Zonal — voir [Notes clients sur les tickets regroupés](/docs/fr/guides/orders/advanced/order-batching#customer-notes-on-batched-tickets)

Le produit utilisé pour les notes de commande est exclu de la synchronisation du menu, il n'apparaît donc jamais sur votre menu storekit.

## Validation du panier et remises

L'intégration Zonal valide les commandes au checkout à l'aide de l'API `checkBasket`.

### Fonctionnement

1. Le client passe au checkout
2. storekit envoie le panier à Zonal avec tous les articles et modificateurs
3. Zonal valide la disponibilité et calcule les éventuelles remises
4. Le montant de la remise est renvoyé et appliqué au total de la commande
5. L'ID de panier est stocké et utilisé lors du placement de la commande

### Configuration des remises

| Paramètre                  | Description                                        |
| -------------------------- | -------------------------------------------------- |
| **Discount Percentage ID** | ID de remise Zonal pour les remises en pourcentage |
| **Discount Currency ID**   | ID de remise Zonal pour les remises à montant fixe |

<Info>
  La validation du panier détecte les articles indisponibles avant le paiement. Si un article est en rupture de stock, le client est notifié immédiatement.
</Info>

### Mise en pause automatique en cas d'erreur

Si `checkBasket` renvoie une erreur de rupture de stock (code -216), storekit :

1. Identifie l'article indisponible
2. Le met en pause pendant 6 heures
3. Vide le cache du menu
4. Renvoie les informations de l'article au client

## Synchronisation du plan de salle

Synchronisez la disposition de vos tables depuis Zonal pour la commande sur place :

1. Allez dans **Boutiques** → \[votre boutique] → **Paramètres** → **Intégrations** → **Zonal**
2. Cliquez sur **Sync tables**
3. Les zones (zones de vente) et tables sont importées

### Ce qui est synchronisé

* Zones de vente en tant que zones d'établissement
* Groupes de tables au sein des zones
* Tables individuelles avec numéros et noms
* Capacité des tables

Les modifications dans Zonal se synchronisent automatiquement — les nouvelles tables sont ajoutées, les tables supprimées sont archivées.

## Paramètres d'intégration

| Paramètre                        | Description                                                      |
| -------------------------------- | ---------------------------------------------------------------- |
| **Payment Method ID**            | Mode de paiement Zonal pour les commandes en ligne               |
| **Order Note Product ID**        | ID de produit utilisé pour les notes de commande sur les tickets |
| **Order Note Template**          | Modèle personnalisé pour formater les notes de commande          |
| **Discount Percentage ID**       | ID de remise pour les remises en pourcentage                     |
| **Discount Currency ID**         | ID de remise pour les remises à montant fixe                     |
| **Enable Coursing**              | Autoriser la sélection de plat sur les produits applicables      |
| **Enable Category Merge**        | Fusionner les catégories portant le même nom                     |
| **Import Choices With No Price** | Inclure les modificateurs sans supplément de prix                |

### IDs de zone de vente pour retrait et livraison

Par défaut, storekit utilise l'ID de zone de vente `1` pour les commandes de retrait et de livraison. Si votre configuration Zonal nécessite une zone de vente spécifique pour ces méthodes de traitement, configurez-les à l'aide des paramètres d'ID de zone de vente pour le traitement :

| Paramètre                                | Description                                                             |
| ---------------------------------------- | ----------------------------------------------------------------------- |
| **Fulfillment Sales Area ID – Pickup**   | ID de zone de vente Zonal à utiliser pour les commandes click & collect |
| **Fulfillment Sales Area ID – Delivery** | ID de zone de vente Zonal à utiliser pour les commandes de livraison    |

<Note>
  Les commandes sur place utilisent toujours l'ID de zone de vente de la zone d'établissement de la table (synchronisée via le plan de salle). Les paramètres d'ID de zone de vente pour le traitement ne s'appliquent qu'aux commandes de retrait et de livraison qui n'ont pas de table assignée.
</Note>

## Tester votre intégration

### Liste de vérification avant lancement

1. **Synchronisation du menu**
   * [ ] Catégories importées de toutes les zones de vente
   * [ ] Les produits ont les bons prix (y compris les variantes de portion)
   * [ ] Les modificateurs apparaissent correctement
   * [ ] Les modificateurs imbriqués fonctionnent
   * [ ] Les images s'affichent

2. **Flux de commande**
   * [ ] Le panier est validé avec succès
   * [ ] La commande apparaît dans le POS Zonal
   * [ ] Les articles, modificateurs et plats sont corrects
   * [ ] Le code de retrait/créneau horaire apparaît

3. **Remises** (si configurées)
   * [ ] Appliquez un code de remise
   * [ ] Vérifiez que le montant correspond au calcul Zonal

4. **Plan de salle** (si utilisation sur place)
   * [ ] Tables synchronisées correctement
   * [ ] Les commandes sont routées vers les bonnes tables

## Dépannage

### Échec de connexion

* Vérifiez que le Brand Token et le User Device Identifier sont corrects
* Vérifiez que les identifiants n'ont pas expiré
* Contactez le support Zonal pour confirmer l'accès à l'API iOrder

### Le menu ne se synchronise pas

* Assurez-vous que les menus sont publiés dans Zonal
* Vérifiez que les produits sont assignés à des groupes d'affichage
* Vérifiez que les zones de vente sont configurées
* Consultez les erreurs de synchronisation dans le tableau de bord

### Commandes échouées

* **« Missing basket ID »** : La validation du panier peut avoir échoué — vérifiez la disponibilité des articles
* **Erreur -238** : Panier expiré — storekit réessaiera avec un nouveau panier
* **Erreur -216** : Article en rupture de stock — l'article est automatiquement mis en pause

### Les modificateurs n'apparaissent pas

* Vérifiez que les groupes de choix sont configurés sur les produits
* Vérifiez que les modificateurs ont des suppléments de prix (ou activez « Import Choices With No Price »)
* Resynchronisez le menu après les modifications Zonal

### Les notes de commande n'apparaissent pas

* Vérifiez que **Order Note Product ID** est défini dans les paramètres d'intégration Zonal — sans lui, aucune ligne de note n'est envoyée
* Vérifiez que **Notes de commande** sous **Opérations** est **Optionnel** ou **Obligatoire**, pas **Masqué**
* Si le regroupement de commandes est activé, vérifiez que **Include order notes** est activé
* Confirmez que l'ID de produit de note est valide dans Zonal — Zonal rejette la ligne de commande si le produit n'existe pas

### Prix erronés

* Vérifiez la configuration des portions dans Zonal
* Vérifiez que la bonne portion est définie par défaut
* Pour les produits multi-portions, vérifiez les prix de modificateurs de taille

Pour toute assistance supplémentaire, [contactez le support](/docs/fr/getting-started/contact-support).

## Fonctionnalités prises en charge

<AccordionGroup>
  <Accordion title="Synchronisation du menu">
    | Fonctionnalité                          | Prise en charge |
    | --------------------------------------- | :-------------: |
    | Sync menu automatique                   |        ✓        |
    | Sync allégée (prix uniquement)          |        ✓        |
    | Images produits                         |        ✓        |
    | Allergènes                              |        ✗        |
    | Calories                                |        ✓        |
    | Modificateurs imbriqués                 |        ✓        |
    | Sous-catégories                         |        ✗        |
    | Horaires de disponibilité par catégorie |        ✗        |
    | Portions / tailles                      |        ✓        |
    | Plats                                   |        ✓        |
    | Restrictions de zone de vente           |        ✓        |
    | Statut du stock                         |        ✓        |
  </Accordion>

  <Accordion title="Commandes">
    | Fonctionnalité                          | Prise en charge |
    | --------------------------------------- | :-------------: |
    | Injection de commande                   |        ✓        |
    | Précommandes                            |        ✓        |
    | Mise en tampon des commandes            |        ✗        |
    | Validation du panier                    |        ✓        |
    | Mise en pause auto des articles épuisés |        ✓        |
    | Remises                                 |        ✓        |
    | Pourboires                              |        ✗        |
    | Frais de service                        |        ✗        |
    | Notes de commande personnalisées        |        ✓        |
    | Détails de livraison                    |        ✓        |
  </Accordion>

  <Accordion title="Pay at Table">
    | Fonctionnalité                        | Prise en charge |
    | ------------------------------------- | :-------------: |
    | Sync addition en direct               |        ✗        |
    | Application de paiements à l'addition |        ✗        |
    | Paiements partagés                    |        ✗        |
    | Suivi des paiements terminal POS      |        ✗        |
    | Ajout à une addition existante        |        ✗        |
  </Accordion>

  <Accordion title="Configuration de l'établissement">
    | Fonctionnalité                      | Prise en charge |
    | ----------------------------------- | :-------------: |
    | Sync plan de salle                  |        ✓        |
    | Mises à jour de stock en temps réel |        ✗        |
    | Prise en charge multi-sites         |        ✓        |
  </Accordion>
</AccordionGroup>


## Related topics

- [Affectation aux services](/docs/fr/guides/menu/course-assignments.md)
- [Modificateurs gratuits](/docs/fr/guides/menu/free-modifiers.md)
- [Modificateurs de suppression](/docs/fr/guides/menu/removal-modifiers.md)
- [Vue d'ensemble des intégrations](/docs/fr/guides/integrations/overview.md)
- [Modificateurs imbriqués et prise en charge POS](/docs/fr/guides/menu/nested-modifiers.md)
