# Gestion de l'intersociétés

> [!IMPORTANT]
> Cette application est en cours de développement et est susceptible de subir des modifications.
> La documentation est donc sujette à modification sans préavis.

## Vue d'ensemble

### Tables multidirectionnelles

#### Principe de fonctionnement (page paramètres)

Dans les _Paramètres intersoiétés CAP Collecte_ on trouve la liste des tables qui sont gérées en intersociétés.

![Liste des tables partagées](images/intercompany-1.png)

En ouvrant l'action _Fournisseurs_ on retrouve la liste partagée entre toutes les sociétés qui contient tous les enregistrements foruniseurs présents sur toutes les sociétés. Cette liste est mise à jour automatiquement lors de la création d'un enregistrement ou de sa modification.

![Fournisseurs partagés](images/intercompany-2.png)

Sur la page précédente, en utilisant l'action _Intersociétés_ on peut choisir de synchroniser un enregistrement sur une nouvelle société. Par contre il n'est pas possible de décocher la case _Synchroniser_.

![Choix des sociétés](images/intercompany-3.png)

Les tables principales peuvent avoir des tables enfants qui leur sont liées. Ces tables enfant partagent la même coche _Synchroniser_ que leur parent.

![Enfants liés](images/intercompany-4.png)


#### Exemple sur une page standard

Sur les liste et fiches disponibles en intersociétés une action est présente pour choisir les soicétés sur lesquelles synchroniser un enregistrement.

![Liste article](images/intercompany-5.png)

![fiche article](images/intercompany-6.png)

#### Cas particulier des client/contacts/fournisseurs

Le standard créé automatiquement un contact lors de la création d'un client, ce fonctionnement est conservé lors de la première création d'un client. Cependant lorsque ce client est syncronisé sur une autre société c'est le contact qui a été créé sur la première société qui est synchronisé automatiquement en même temps que le client.

Il n'est pas possible de synchroniser un client seul sur différentes sociétés, ils peuvent uniquement être synchronisés via leur parents, la table client ou la table fournisseur.

### Tables monodirectionnelles

<!-- Voir avec Tobias -->

### Détection des doublons

Lors de la création d'un enregistrement il est possible que celui-ci existe déjà sur une société différente. Il est par exemple possible d'utiliser des _Clients partagés_ avant la création d'un client pour le rechercher dans toutes les soicétés et pas uniquement dans la société actuelle.

Sinon lors de la création d'un nouvel enregistrement puis lors de ses modifications certains champs sont comparés pour vérifier si enregistrement similaire existe déjà. (voir configuration pour le choix des champs à vérifier)

![Alerte doublons](images/intercompany-7.png)

Une autre vérification est faite lorsqu'on essaye de syncrhoniser un enregistrement sur une nouvelle société. La même alerte est affichée suivi d'une confirmation pour poursuivre ou non la synchronisation.

![Alerte doublons](images/intercompany-8.png)

![Confirmation synchronisation](images/intercompany-9.png)

### Autorisation de suppression des enregistrements

La suppression d'un enregistrement peut être réalisé de deux façons :
- En supprimant un enregistrement avec le bouton standard.
- En utilisant l'action _Supprimer enregistrement lié_ sur la liste des entités partagées, pour pouvoir supprimer un enregistrement sur plusieurs sociétés.
  ![Suppression des enregistrements](images/intercompany-21.png)

Certaines actions ne permettent pas de supprimer des enregistrements partagés :
- Décocher _Synchroniser_ sur la liste des entités partagées, cette action est interdite
- Supprimer un enregistrement d'une table partagée, la suppression est interdite tant qu'il existe des enregistrements liés sur la table standard.
- Supprimer un enregistrement "Entités partagées", la suppression est interdite tant qu'il existe des enregistrements liés sur la table standard.

Une alerte est émise lors d'une tentative de suppression du dernier enregistrement à travers toutes les sociétés. Si la suppression est validée l'enregistrement est définitivement perdu, il ne pourra pas être recréé depuis la table partagée.

### Visualisation des données intersociété

Sur la fiche client une action est disponible pour afficher le chiffre d'affaire réalisé par ce client sur chaque société.
![CA client](images/intercompany-12.png)

Sur la fiche article une action est disponible pour afficher le stock disponible pour cet article sur chaque société.
![Stock article](images/intercompany-13.png)

Sur la factbox de la liste des clients une pile est disponible pour afficher la liste de toutes les commandes de ce client à travers toutes les sociétés.
![Commandes intersociété](images/intercompany-22.png)

## Configuration de l'intersociétés

### Configuration des données par défaut

1. Recherchez la page **Paramètres intersociétés CAP Collecte**.
2. Dans cette page, vous pouvez lancer les différentes actions d'initialisations

   ![Initialisation](images/intercompany-14.png)

   * **Sourches de numérotation** créé des souches de numéros par défaut pour les tables intersociétés et les saisit dans le groupe _Numérotation_
   * **Paramétrer les données à synchroniser** initialise le paramétrage de l'extension _CAP Business - Intercompany Synchronization_ qui permet d'indiquer quelle société doit être synchronisée vers une autre société. Elle peut être relancée si une nouvelle société est créée ou si une nouvelle table est ajoutée.
   * **Files attentes** créé les files d'attentes qui vont lancer le traitement de synchronisation. Elles sont créées sur toutes les sociétés.
   * **Paramétrer l'évitement des doublons** créé les enregistrement nécessaires à la vérification des doublons lorsqu'on enregistrement est créé ou modifié sur une table intersociétés.

### Configuration des tables multidirectionnelles

Cette configuration peut rapidement devenir complexe à réaliser manuellement si on multiple le nombre de sociétés, les actions _Paramétrer les données à synchroniser_ et _Files attentes_ permettent de tout paramétrer automatiquement et peuvent être relancées en cas de création d'une nouvelle société.

En cas de besoin voici les actions réalisées par ces deux actions :

* **Paramétrer les données à synchroniser** remplit cette page avec toutes les combinaisons possibles entre sociétés pour chaque table
  ![Init. mappage tables](images/intercompany-18.png)
  ![Init. mappage tables](images/intercompany-19.png)

* **Files attentes** créé la file d'attente des travaux ci-dessous sur chaque société.
  ![File d'attente](images/intercompany-20.png)

### Configuration des tables monodirectionnelles

<!-- Voir avec Tobias -->

### Configuration de la vérification des doublons

![Vérification des doublons](images/intercompany-15.png)

Après avoir lancé l'action _Initialiser la vérification des doublons_ vous aurez accès à la liste des tables qui peuvent être utilisées pour la vérification des doublons. Il n'est pas possible d'ajouter une table supplémentaire sur cette page, par contre il est possible des les activer et désactiver.

![Liste des tables](images/intercompany-16.png)

En cliquant sur une valeur de la colonne _Champs sélectionnés_ vous avez accès aux champs qui seront vérifiés. Cette fois il est possible d'ajouter et supprimer des enregistrement, ou de simplement les activer et désactiver.

![Liste des champs](images/intercompany-17.png)


## Gestion des erreurs

Sur la page **Gestion des erreurs intersociété** se trouve toutes les informations concernant les erreur ayant eu lieu lors de la synchornisation des données entre les différantes sociétés.

Sur cette page se trouve trois catégories :
- Piles d'erreur
- Liste des erreurs
- Liste des tâches

### Piles d'erreur

Les deux piles visibles sur cette première partie donnent une vision globale des erreurs présentes lors de la synchronisation.
La pile de gauche recense les écritures non encore synchronisées et celle de droite représente celles en erreur.

![Gestion des erreurs](images/intercompany-25.png)

En ouvrant ces deux piles il est possible de relancer la synchronisation de ces écritures. Cette resynchronisation permettra de résoudre certaines écritures en erreur et sera effectuée lors du prochain lancement de la file d'attente sur la société en question.

![Gestion des erreurs](images/intercompany-26.png)


### Liste des erreurs

Cette liste énumère toutes les tables qui sont gérées en intersociété. Pour chacune d'entre elles est affiché son nombre d'erreurs et ses nombres d'enregistrements  manquants (sur la table partagée ou sur la table société).

Il est possible d'afficher la liste des erreurs et des entregistrements manquants de la table grâce aux actions présentes en haut de la liste.

![Gestion des erreurs](images/intercompany-27.png)

En ce qui concerne les enregistrements manquants, il en existe de deux types et chacun d'eux possède des actions spécifiques permettant de les résoudre lors de leur visualisation après avoir effectué l'action **Afficher les enregistrements manquants**.

![Gestion des erreurs](images/intercompany-28.png)

#### Manquants sur la table partagée

En d'autres termes, certains enregistrements se trouvent sur la table intersociété et sont cochés comme **synchroniser** mais ne sont pas présents dans la table associée dans la société en question.

Pour tenter de résoudre ces erreurs deux options sont disponibles :
- Le nettoyage via l'action **Supprimer les entités partagés orphelines** qui permet de supprimer les entités partagées qui peuvent se retrouver en double ou dont l'enregistrement n'existe plus.
- La synchronisation via l'action **Créer tables partagées manquantes** qui va immédiatement ajouter les enregistrements dans la table partagée.

#### Manquants sur la table société

En d'autres termes, certains enregistrements se trouvent sur la table société mais soit n'existent pas dans la table partagée ou existent mais ne sont pas sychronisés.

Pour tenter de résoudre ces erreurs deux options sont disponibles :
- Le nettoyage via l'action **Mettre à jour le champ sychroniser des entités partagés** qui permet de cocher **synchroniser** si l'enregistrement se trouve dans la table société mais n'est pas coché.
- La synchronisation via l'action **Créer enregistrements manquants société** qui va créer des écritures à synchroniser et qui seront lancées lors de la prochaine exécution file d'attente des tâches.

### Liste des tâches

Cette liste recense les files d'attentes qui gèrent la synchronisation pour chacune des sociétés. Vous pourrez les consulter, les relancer et les arrêter directement ici sans avoir à changer de société.

Il est également possible d'arrêter et relancer les files d'attente de synchronisation sur toutes les sociétés en même temps avec les actions qui se trouvent dans l'onglet _Toutes les files d'attentes_.

![Gestion des erreurs](images/intercompany-29.png)