# Automatismes déduits

### Définition <a href="#toc138770325" id="toc138770325"></a>

En plus des automatismes prévus par l'utilisateur, SIMAX est capable de déduire des actions ou des opérations à partir des automatismes existants. Ceci permet de ne créer qu'un minimum d'automatismes et de laisser à SIMAX le soin d'envisager tous les cas de figure.

Les automatismes déduits se déclenchent quand aucun automatisme n'est prévu pour l'action dans le paramétrage ou qu'aucunes des conditions des automatismes prévus ne sont respectées.

***Exemple 1 :***

*Lorsque vous créez une commande, vous choisissez un article A et lui attribuez une quantité (une commande de 3 roues par exemple). Cette commande a une influence sur les stocks. Il sera diminué de 3 unités grâce à un automatisme qui crée un mouvement de stock à la création d'une commande.*

{% columns %}
{% column %}
**COMMANDE**

Article = roue

Quantité = 3

{% endcolumn %}

{% column valign="middle" %}
Influence sur stock

\=>
{% endcolumn %}

{% column %}
**STOCK** **ROUE**

Quantité actuelle

\- 3
{% endcolumn %}
{% endcolumns %}

*Si plus tard vous modifiez cette commande et que vous changez l'article A pour l'article B (ce n'est plus une commande de 3 roues mais de 3 selles); Il y aura un double impact sur les stocks. Le stock de l'article A sera augmenté de 3 unités (pour annuler la diminution précédente) et le stock de l'article B sera diminué de 3 unités.*

{% columns %}
{% column %}
**COMMANDE**

Article = roue

Quantité = 3
{% endcolumn %}

{% column %}
Modification de la commande =>
{% endcolumn %}

{% column %}
**COMMANDE**

Article = selle

Quantité = 3

{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column valign="middle" %}
Influence

\=> sur stocks
{% endcolumn %}

{% column %}
**STOCK ROUE**

Quantité actuelle

\+ 3

**STOCK SELLE**

Quantité actuelle

\- 3
{% endcolumn %}
{% endcolumns %}

*Pourtant vous n'avez pas créé d'automatisme qui modifie les stocks à la suite d'une modification de commande.* SIMAX a réalisé lui-même un automatisme de modification, c'est un **automatisme déduit**.

SIMAX s'est servi de l'automatisme de création pour créer un automatisme déduit de modification. Il y a une auto-modification.

*Le champ article dans le formulaire commande a une influence sur d'autres formulaires (formulaire stock par exemple).* On dit que c'est une **colonne pivot**. Ici la colonne pivot **a changé** : de l'article A à l'article B.

***Exemple 2***

*Lorsque vous créez une commande, vous choisissez un article A et lui attribuez une quantité (une commande de 3 roues par exemple). Cette commande a une influence sur les stocks. Il sera diminué de 3 unités grâce à un automatisme qui crée un mouvement de stock à la création d'une commande.*

{% columns %}
{% column %}
**COMMANDE**

Article = roue

Quantité = 3
{% endcolumn %}

{% column valign="middle" %}
Influence sur stock

\=>
{% endcolumn %}

{% column %}
**STOCK ROUE**

Quantité actuelle

\- 3
{% endcolumn %}
{% endcolumns %}

Si plus tard vous modifiez cette commande en changeant la quantité (ce n'est plus 3 roues mais 2 roues) ; Il y aura un impact sur les stocks. Le stock de l'article A sera diminué ou augmenté de la variation entre la quantité de départ et la nouvelle quantité (3-2 = 1). Le stock de l'article A sera augmenté de 1 unité grâce à l'automatisme déduit.

{% columns %}
{% column %}
**COMMANDE**

Article = roue

Quantité = 3
{% endcolumn %}

{% column valign="middle" %}
Modification de la commande&#x20;

⇒&#x20;
{% endcolumn %}

{% column %}
**COMMANDE**

Article = roue

Quantité = 2
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column valign="middle" %}
Influence sur stock =>
{% endcolumn %}

{% column %}
**STOCK ROUE**

Quantité actuelle

\+ 1
{% endcolumn %}
{% endcolumns %}

*Pourtant vous n'avez pas créé d'automatisme qui modifie les stocks à la suite d'une modification de commande.* SIMAX a réalisé lui-même un automatisme de modification, c'est un **automatisme déduit**.

SIMAX s'est servi de l'automatisme de création pour créer un automatisme déduit de modification. Il y a une auto-modification.

*Le champ article dans le formulaire commande a une influence sur d'autres formulaires (formulaire stock par exemple).* Ici la colonne pivot **n'a pas changé** : on garde toujours l'article A, c'est la quantité qui a changé.

{% hint style="info" %}
*<mark style="color:$warning;">**IMPORTANT**</mark>: pour que l'automatisme déduit s'effectue (changer A en B dans les stocks si la commande a changé l'article A en B), il faut qu'il y ait un lien entre les formulaires « Stock » et « Commande ». En effet, SIMAX devra être capable de retrouver le stock.*
{% endhint %}

*Exemple: il faut qu'il y ait un champ dans le formulaire « **Stock** » qui pointe vers le formulaire «  **Commande** » (ou inversement) ; un champ « **Commande** » ou «  **Origine** » dans le formulaire « **Stock** » par exemple.*

### <mark style="color:blue;">Les règles de l'auto-modification</mark> <a href="#toc330546891" id="toc330546891"></a>

SIMAX effectue les automatismes créés auparavant par l'utilisateur au moment où l'action déclenchante est lancée (automatisme de création, de modification, de suppression etc.).

Pour les automatismes déduits, **s'il n'y a pas d'automatismes de modification** par exemple, SIMAX utilise des automatismes de création pour exécuter les mêmes actions.

Pour chaque automatisme, nous allons nous intéresser à l'état des conditions:

![](https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2FLp3ctJvJR3grknILqzHt%2F0.png?alt=media)

![](https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2FOANdZBwDJd8vTohhy09r%2F1.png?alt=media)

Voici les règles qu'applique SIMAX suite à une modification de donnée. Les règles dépendent de l'état des conditions de l'automatisme et du fait qu'il y ait ou non une colonne pivot.

<figure><img src="https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2FMZn1pGn50ULdiHucWPvs%2Ff.PNG?alt=media&#x26;token=5038a0fd-32d9-4c76-98b9-8e77b06b6906" alt=""><figcaption></figcaption></figure>

Explication:

#### <mark style="color:blue;">Conditions non remplies => conditions remplies</mark> <a href="#toc330546892" id="toc330546892"></a>

Si on modifie l'article A, on décide qu'il est géré en stock, on coche la case « Géré en stock ? » ; dans ce cas, l'automatisme sera effectué normalement car la condition sera remplie (géré en stock sera égal à vrai), qu'il y ait une colonne pivot ou non.

#### <mark style="color:blue;">Conditions non remplies => conditions non remplies</mark> <a href="#toc330546893" id="toc330546893"></a>

Si on modifie l'article B qui n'est pas géré en stock, on décide de modifier son prix (ou tout autre champ différent de la case à cocher « gérer en stock? »), les conditions n'étant pas remplies avant la modification et n'étant pas remplies après la modification, il ne se passe rien. L'automatisme ne sera pas lancé puisque les conditions ne sont pas respectées (« géré en stock? » = faux), qu'il y ait une colonne pivot ou non.

#### <mark style="color:blue;">Conditions remplies => conditions remplies</mark> <a href="#toc330546894" id="toc330546894"></a>

Si on modifie un article qui est géré en stock; en modifiant un champ autre que la case à cocher « **géré en stock?** »; la condition avant la modification était respectée et la condition après la modification est toujours respectée (géré en stock = vrai). Le traitement de l'automatisme va être différent s'il y a une colonne pivot ou non et si la colonne pivot a changé ou non (dans le cas où il y en a une).

* Si la valeur de la **colonne pivot a changé** (voir exemple du chapitre *Définition d'automatisme déduit*) alors :

\- lancement de l'opération inverse sur l'enregistrement dans son état précédent (exemple: + 3 pour l'article A)

\- lancement de l'opération sur l'enregistrement (exemple: - 3 pour l'article B)

* si la valeur de la **colonne pivot n'a pas changé** (voir note de l'exemple du chapitre *Définition d'automatisme déduit)* alors :

\- l'augmentation/diminution devient l'augmentation/diminution variation (exemple: augmentation de 3-2=1 pour l'article A) ;

\- pour les autres opérations, pas de changement,

\- lancement de l'opération de variation.

* S'il n'y a **pas de colonne pivot**, lancement de l'opération sur colonne.

#### <mark style="color:blue;">Conditions remplies => Conditions non remplies</mark> <a href="#toc330546895" id="toc330546895"></a>

Si on modifie un article qui est géré en stock : on décide qu'il n'est plus géré en stock ; la condition n'est plus respectée après la modification (géré en stock = faux). Le traitement de l'automatisme va être différent dans les 6 cas suivants:

* Si la valeur de la **colonne pivot a changé** (voir exemple du chapitre *Définition d'automatisme déduit)* alors:

\- lancement de l'opération inverse sur l'enregistrement dans son état précédent (exemple: + 3 pour l'article A)

\- lancement de l'opération sur l'enregistrement (exemple: - 3 pour l'article B)

* Si la valeur de la **colonne pivot n'a pas changé** (voir note de l'exemple du chapitre *Définition d'automatisme déduit)* alors :

\- l'augmentation/diminution devient l'augmentation/diminution variation (exemple: augmentation de 3-2=1 pour l'article A) ;

\- pour les autres opérations, pas de changement,

\- lancement de l'opération de variation.

* S'il n'y a **pas de colonne pivot**, alors rien
* Si la colonne ne participe pas aux conditions de l'automatisme, alors on va inverser l'automatisme (opération inverse : augmentation => diminution, diminution => augmentation, affectation vrai/faux => affectation faux/vrai).
* Si c'est un lancement automatique d'action du type création et qu'on arrive à repérer l'enregistrement de manière unique, alors on lance l'action de suppression sur cet enregistrement.
* S'il n'y a pas de colonne pivot, il y aura le même comportement qu'avec une colonne pivot.

### <mark style="color:blue;">Auto-modification induit</mark> <a href="#toc138770331" id="toc138770331"></a>

Si on a trouvé des automatismes à lancer pour l'action de modification (modifier article), regarder si d'autres automatismes utilisent des colonnes de l'enregistrement (article) dans leurs conditions car dans ce cas, l'état de leur condition a peut être changé.

**Pour** chaque colonne (champs) de l'enregistrement (de l'article X)

**Si** la colonne (le champ) a changé de valeur

Rechercher tous les automatismes qui utilisent cette colonne (ce champ) dans leurs conditions. Pour chacun de ces automatismes:

**Si** l'automatisme porte sur le même formulaire (article) que l'enregistrement ou **si** l'automatisme porte sur une action de type autre que création (créer à partir de ou modification)

**Alors** ne rien faire

**Sinon** évaluer les conditions et lancer l'automatisme (si sur formulaire commande par exemple)

### <mark style="color:blue;">Auto-suppression</mark> <a href="#toc330546897" id="toc330546897"></a>

Si on supprime un élément qui à sa création a créé d'autres éléments par automatisme, SIMAX va tenter de supprimer ces éléments s'il existe un lien permettant de les retrouver. (comme pour l'auto-modification).

Rechercher tous les automatismes liés à l'action de création

**Pour** chacun des automatismes

**Si** les conditions sont remplies

**Alors** inverser l'automatisme (cf. explication dans le tableau « Auto-modification)

L'utilisateur sera prévenu de la suppression.

### <mark style="color:blue;">Compte rendu d'automatismes déduits</mark> <a href="#toc330546898" id="toc330546898"></a>

Le rapport retrace même les actions effectuées suite aux automatismes déduits. Ceci vous permet de comprendre ce que SIMAX a effectué comme action sans que vous le sachiez.

<figure><img src="https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2FSCPZKOZiwKJiu4mL0GOb%2F6.png?alt=media&#x26;token=463b7205-dfb6-4bc6-9b4f-9a6d3df31420" alt=""><figcaption></figcaption></figure>


---

# 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://doc.simax.fr/automatiser/automatismes-deduits.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.
