# MANUEL D'UTILISATION

## Module Transfert inter-zones de stockage

**Application :** ERP GPHARMA
**Version du document :** 1.0
**Date :** 11 septembre 2026
**Destinataires :** Magasiniers, chefs de magasin, gestionnaires de stock, préparateurs

---

## 1. Présentation générale

### 1.1 Objectif du manuel

Ce manuel décrit l'utilisation du module **Transfert inter-zone de stockage**, qui permet de déplacer de la marchandise **d'une zone de stockage à une autre à l'intérieur d'un même site** : de la réserve vers le picking, du picking vers la quarantaine, d'un rack vers un autre, etc.

Il décrit le fonctionnement réel de l'application : les écrans, les champs, les boutons, les contrôles automatiques, les statuts, l'effet exact sur le stock, et **tous les traitements de l'ERP qui créent des transferts inter-zone** (chapitre 9).

### 1.2 Public cible

* magasiniers et chefs de magasin ;
* préparateurs de commandes ;
* gestionnaires de stock et responsables logistiques.

Aucune connaissance technique n'est requise.

### 1.3 Transfert inter-zone et transfert inter-site : ne pas confondre

| | **Transfert inter-zone** | **Transfert inter-site** |
| --- | --- | --- |
| Ce qui est déplacé | De la marchandise d'une **zone à une autre zone du même site** | De la marchandise d'un **site vers un autre site** |
| Menu | Stocks > **Transfert inter zone stockage** | Stocks > **Transferts inter-sites** |
| Effet sur le stock **total du site** | **Aucun** — seule la répartition par zone change | Le site de départ perd, le site d'arrivée gagne |
| Étapes | Saisie → Départ → Réception (2 validations) | Saisie → Validation → Collecte → Départ → Contrôle → Rangement → Réception |
| Qui intervient | Le **même site** pour le départ et la réception | Deux sites différents |
| Document | Fiche de transfert inter-zone / fiche de réception | Bordereau de transfert inter-site |

> **À retenir :** un transfert inter-zone ne fait jamais varier le stock global du site. Il ne fait que déplacer la marchandise d'un emplacement à un autre. C'est un mouvement **interne au magasin**.

### 1.4 Vue d'ensemble du workflow

```
   Création de la ligne de transfert
   (saisie manuelle, import de fichier ou suggestion automatique)
        |
        v
   EN SAISIE  ............................... aucun mouvement de stock
        |
        |  bouton « Valider départ »
        v
   EXPEDIE  ................................. - Qté retirée du lot et de la ZONE DE DEPART
        |                                     + Qté placée EN TRANSIT sur le lot d'arrivée
        |                                     = stock total du site inchangé
        |  bouton « Valider Réception »
        v
   RECEPTIONNE  ............................. - le transit est soldé
                                              + Qté ajoutée au lot et à la ZONE DE RECEPTION
                                              = stock total du site toujours inchangé
```

Les deux validations peuvent être faites par la même personne, dans la même journée, voire dans la même minute. Le passage par l'étape **EXPEDIE** sert à matérialiser le temps pendant lequel la marchandise est physiquement sortie d'une zone sans être encore rangée dans l'autre.

---

## 2. Prérequis et accès

### 2.1 Accéder au module

1. Dans le menu de gauche, cliquez sur **Stocks**.
2. Cliquez sur **Transfert inter zone stockage**.

Contrairement aux modules Achats, cet écran n'est **pas** réservé à la centrale : il est accessible depuis n'importe quel site. Le sélecteur **Site** en haut de l'écran positionne le site de travail, et les listes déroulantes du module se positionnent automatiquement dessus.

### 2.2 Droits nécessaires

| Action | Droit requis |
| --- | --- |
| Voir le menu Stocks | DS_AccesMenuStock |
| Accéder à l'écran Transfert inter zone stockage | DS_AccesTransfertInterZone |
| Valider un départ, valider une réception, supprimer des lignes | DS_TransfertInterne |
| Changer de site dans la barre supérieure | DG_AccesMultiSite |

### 2.3 Conditions nécessaires avant utilisation

* Le site doit disposer d'au moins **deux zones de stockage** (une zone de départ et une zone de réception).
* Les produits doivent posséder des **lots en stock** dans la zone de départ.
* Pour la suggestion automatique, des **paramètres de réapprovisionnement inter-zone** doivent avoir été saisis sur les fiches produits (voir le chapitre 7).
* Les **emplacements** des zones doivent être renseignés pour que les fiches de transfert indiquent où prendre et où ranger la marchandise.

### 2.4 La confirmation par mot de passe

La validation du départ, la validation de la réception et la suppression de lignes déclenchent une fenêtre de confirmation demandant **votre mot de passe**.

| Élément | Description |
| --- | --- |
| Titre | Rappel de l'opération (« Veuillez saisir votre mot de passe pour valider votre expédition ») |
| Sous-titre | Précision utile : « Seuls les transferts en saisie seront traités », « Seuls les transferts expédiés seront traités » |
| Mot de passe | Votre mot de passe de connexion |
| Oui je confirme / Annuler | Exécute ou abandonne l'opération |

Le système vérifie le mot de passe **et** l'habilitation (DS_TransfertInterne), puis trace l'opération dans le journal des événements, qu'elle réussisse ou non.

---

## 3. L'écran Transfert inter-zone

### 3.1 Présentation

L'écran présente la liste des lignes de transfert inter-zone de la période, avec ses filtres, ses actions de masse et ses impressions.

**Capture d'écran — Écran Transfert inter zone stockage**

### 3.2 Zone de filtres

| Champ | Description |
| --- | --- |
| Site | Site (agence) concerné. Positionné par défaut sur le site courant |
| Période de filtre | Période de recherche sur la date de création de la ligne |
| Mode | TOUS / MANUEL / AUTOMATIQUE / AUTO VENTE |
| Zone de départ | Filtre sur la zone d'expédition |
| Zone de réception | Filtre sur la zone de destination |
| Statut | TOUS / EN SAISIE / EXPEDIE / RECEPTIONNE |

### 3.3 Colonnes du tableau

| Colonne | Description |
| --- | --- |
| Case à cocher | Sélection de la ligne pour les actions de masse |
| Crée le | Date et heure de création |
| Statut | EN SAISIE / EXPEDIE / RECEPTIONNEE |
| Code CIP 1 | Code du produit |
| Désignation | Libellé du produit, précédé d'une **pastille de couleur** indiquant le mode : rose = MANUEL, verte = AUTOMATIQUE, orange = AUTO VENTE |
| Colisage | Colisage du lot |
| Qté à transférer | Quantité suggérée à l'origine (non modifiable) |
| **Qté Transférée** | **Saisissable tant que la ligne est EN SAISIE.** Quantité réellement transférée |
| Numéro de Lot | Lot prélevé |
| Zone de stockage départ | Zone d'où la marchandise sort |
| Emplacement départ | Emplacement précis où aller prendre la marchandise |
| Stock zone avant départ | Photo du stock de la zone de départ au moment de la création |
| Zone de stockage réception | Zone où la marchandise doit être rangée |
| Emplacement réception | Emplacement précis où ranger la marchandise |
| Stock zone avant réception | Photo du stock de la zone de réception au moment de la création |
| Péremption | Date de péremption du lot |
| Date Départ | Date et heure de validation du départ |
| Départ validé par | Opérateur ayant validé le départ |
| Date Réception | Date et heure de validation de la réception |
| Réception validée par | Opérateur ayant validé la réception |

### 3.4 Boutons et actions

**Bandeau supérieur**

| Bouton | Rôle |
| --- | --- |
| Ajouter un produit | Ouvre la fenêtre de saisie manuelle d'une ligne de transfert |
| Valider départ | Passe les lignes cochées au statut EXPEDIE (sortie de la zone de départ) |
| Valider Réception | Passe les lignes cochées au statut RECEPTIONNE (entrée en zone de réception) |
| Autres actions > Imprimer fiche transfert inter-zone | Édite la fiche de prélèvement (PDF) |
| Autres actions > Imprimer fiche réception | Édite la fiche de rangement (PDF) |
| Autres actions > Integrer CSV | Importe des lignes depuis un fichier |
| Autres actions > Lancer les transferts automatiquement | Ouvre l'assistant de suggestion automatique |

**Actions au bas du tableau**

| Entrée | Rôle |
| --- | --- |
| supprimer lignes cochées | Supprime les lignes cochées (uniquement celles EN SAISIE) |
| Imprimer > Etiquette départ | Édite les étiquettes du côté départ |
| Imprimer > Etiquette réception | Édite les étiquettes du côté réception |
| Exporter | Export de la liste affichée |

---

## 4. Créer un transfert inter-zone

Trois méthodes coexistent, et produisent toutes des lignes au statut **EN SAISIE**.

### 4.1 Saisie manuelle, ligne par ligne

1. Cliquez sur **Ajouter un produit**. La fenêtre **Saisie de transfert Interzone** s'ouvre.

**Capture d'écran — Fenêtre « Saisie de transfert Interzone »**

| Champ | Obligatoire | Description |
| --- | --- | --- |
| Site | Oui | Site concerné. Pré-positionné sur le site courant |
| Zone départ | Oui | Zone d'où la marchandise sera prélevée |
| Zone réception | Oui | Zone où la marchandise sera rangée. **Doit être différente de la zone de départ** |
| Produit | Oui | Produit à déplacer |
| N° Lot | Oui | Lot à prélever. La liste ne propose que les lots **de la zone de départ dont le stock est supérieur à 0**, avec leur emplacement, leur péremption et leur stock |
| Cartonnage | Non | Cartonnage du lot sélectionné, affiché automatiquement |
| Emplacement départ | Non | Emplacement du lot dans la zone de départ, affiché automatiquement |
| Emplacement réception | Non | Emplacement proposé dans la zone de réception. Déterminé automatiquement à partir des lots déjà rangés dans cette zone ; modifiable |
| **Qté transférée** | **Oui** | Quantité à déplacer |

2. Cliquez sur **Ajouter**.

**Contrôles effectués à la saisie**

| Message | Cause |
| --- | --- |
| « Veuiller choisir un site d'expédition !! » | Site non renseigné |
| « Veuiller choisir une zone d'expédition !! » | Zone de départ non renseignée |
| « Veuiller choisir une zone de réception !! » | Zone de réception non renseignée |
| « Veuiller selectionner une zone de réception différente de la zone de départ !! » | Les deux zones sont identiques |
| « Veuiller choisir un lot !! » | Aucun lot sélectionné |
| « Veuiller saisir une quantité suppérier à 0 !! » | Quantité vide ou nulle |
| « La quantité à transférer ne doit pas être supérieure au stock du lot » | Quantité supérieure au stock du lot choisi |
| « La quantité saisie doit être un multiple du cartonnage !! » | L'une des deux zones est gérée par colisage et la quantité ne permet pas de constituer un carton entier |
| « Un lot n'a pas été trouvé !! » | Le lot sélectionné n'existe plus |
| « Emplacement de réception déjà utilisé pour un autre lot. » | L'emplacement de réception visé est déjà occupé par un autre lot du produit |

**La règle du cartonnage**

Dès que **la zone de départ ou la zone de réception** est gérée par colisage, la quantité transférée est automatiquement ramenée à un **multiple du cartonnage du lot**. Exemple : cartonnage 12, quantité saisie 30 → le système enregistre 24. Si la quantité saisie ne permet même pas un carton complet, l'ajout est refusé.

**Résultat**

Message : *« Ajout de la ligne éffectué avec succès !! »*. La ligne apparaît dans le tableau au statut **EN SAISIE**, en mode **MANUEL**. Aucun stock n'a encore bougé.

### 4.2 Importer un fichier

1. **Autres actions > Integrer CSV**. La fenêtre **Integration de fichier csv** s'ouvre.
2. Renseignez **Site**, **Zone expédition** et **Zone réception**.
3. Sélectionnez le fichier, puis cliquez sur **Intégrer**.

**Format du fichier** (une ligne d'en-tête est reconnue et ignorée) :

| Colonne 1 | Colonne 2 | Colonne 3 | Colonne 4 |
| --- | --- | --- | --- |
| Code CIP | Désignation | Qté à transférer | Numéro Lot |

**Ce que fait le système, ligne par ligne**

1. Il identifie le produit par son code ou sa désignation.
2. Il recherche les lots expédiables de la zone de départ : en stock, non suspendus, non périmés. Si un numéro de lot est indiqué, la recherche s'y limite.
3. Il sert la quantité demandée en puisant sur ces lots, **du plus proche de la péremption au plus lointain**, sans jamais promettre un stock déjà engagé par un autre transfert en attente.
4. Si l'une des deux zones est gérée par colisage, la quantité de chaque lot est arrondie au **multiple supérieur** du cartonnage si le stock le permet, au **multiple inférieur** sinon, et la ligne est refusée si même un carton ne passe pas.
5. Il crée **une ligne de transfert par lot servi**.

**Compte rendu**

Le fichier vous est renvoyé complété d'une **cinquième colonne** indiquant, pour chaque ligne, le résultat :

| Annotation | Signification |
| --- | --- |
| Intégrée : 100 / 100 sur 2 lot(s) | Demande entièrement servie, répartie sur deux lots |
| Intégrée : 30 / 100 sur 1 lot(s) — reliquat non servi : 70 | Demande partiellement servie |
| Intégrée : 120 / 100 sur 1 lot(s) — arrondi au cartonnage supérieur | Quantité arrondie au carton supérieur |
| Quantité invalide | Quantité vide, nulle ou négative |
| Aucun transfert possible | Aucun lot disponible |
| Aucun transfert : lot X : cartonnage de N non respectable sur M disponible(s) | Le cartonnage empêche de servir la ligne |

Le bilan global s'affiche à l'écran : *« X / Y ligne(s) intégrée(s), Z ligne(s) de transfert créée(s), N rejetée(s) — voir le fichier de compte rendu »*.

> Le fichier à intégrer doit avoir été déposé au préalable ; seul le dossier de dépôt de l'application est consulté. Un fichier introuvable produit le message *« Fichier à intégrer introuvable ou non autorisé !! »*.

### 4.3 Lancer la suggestion automatique

1. **Autres actions > Lancer les transferts automatiquement**. La fenêtre **Suggestion de Transfert inter zone** s'ouvre.
2. Renseignez **Site**, **Zone départ** et **Zone réception**.
3. Cliquez sur **Suggérer**.

Le champ **Zone réception** propose une valeur particulière, **AUTOMATIQUE**, qui laisse le système choisir lui-même la zone de destination. Le comportement n'est pas le même selon votre choix.

#### 4.3.1 Avec une zone de réception explicite

Le système travaille à partir des **paramètres de réapprovisionnement inter-zone** saisis sur les fiches produits pour ce couple précis de zones (chapitre 7). Pour chaque produit paramétré :

| Étape | Règle appliquée |
| --- | --- |
| 1 | Si un transfert non réceptionné existe déjà sur ce couple de zones pour ce produit, le produit est ignoré |
| 2 | Le système calcule le niveau de la zone de réception = **stock actuel + ce qui est déjà en route** (transferts en saisie et expédiés) |
| 3 | Si ce niveau dépasse le **seuil d'alerte** paramétré, il n'y a rien à faire |
| 4 | Sinon il faut amener la **quantité de réapprovisionnement** paramétrée, **diminuée de ce qui est déjà en route** |
| 5 | La quantité est prélevée sur les lots de la zone de départ, **du plus proche de la péremption au plus lointain**, en déduisant ce que d'autres transferts (inter-zone **et** inter-site) ont déjà promis sur chaque lot |
| 6 | Si l'une des deux zones est gérée par colisage, la quantité respecte le cartonnage |
| 7 | Une ligne de transfert est créée par lot servi |

#### 4.3.2 Avec la zone de réception « AUTOMATIQUE »

Le système réapprovisionne les **zones de détail** (les zones qui ne sont **pas** gérées par colisage) à partir de la zone de réserve choisie. Pour chaque produit ayant des lots actifs dans la zone de départ :

| Étape | Règle appliquée |
| --- | --- |
| 1 | Le produit doit posséder un paramètre de réapprovisionnement pour cette zone de départ **sans zone de destination précisée**. Sinon il est ignoré |
| 2 | Le système additionne le stock du produit dans les zones de détail, **plus ce qui est déjà en route** vers elles |
| 3 | Si ce total dépasse le **seuil d'alerte** du paramètre, il n'y a rien à faire |
| 4 | La destination retenue est la **zone de détail qui porte déjà un emplacement sur un lot du produit** — c'est là que les préparateurs vont le chercher. À égalité, celle qui en détient le plus. À défaut, l'emplacement configuré sur la fiche produit |
| 5 | La quantité vaut la **quantité paramétrée diminuée de ce qui est déjà en route**, servie en **cartons entiers uniquement** : la zone de départ est une réserve, on n'y casse pas un carton |
| 6 | Les lots sont pris **du plus proche de la péremption au plus lointain** |

**Contrôles communs aux deux modes**

| Message | Cause |
| --- | --- |
| « Site, zone d'expédition et zone de réception sont obligatoires !! » | Un champ manque |
| « La zone de réception doit être différente de la zone d'expédition !! » | Zones identiques |
| « Aucun produit n'est paramétré pour un transfert entre ces deux zones !! » | Aucun paramètre de réapprovisionnement pour ce couple de zones |
| « Aucune zone de détail (hors gestion par colisage) sur ce site !! » | Mode AUTOMATIQUE sans zone de détail configurée |
| « Aucun lot actif dans la zone d'expédition !! » | La zone de départ est vide |

**Compte rendu**

Le message final indique ce qui a été créé et, surtout, **pourquoi les autres produits ont été écartés** :

> *« 14 ligne(s) de transfert créée(s) pour 9 produit(s) — 2 produit(s) servi(s) partiellement — 118 stock suffisant, 6 transfert déjà en attente, 3 aucun lot en zone de départ, 1 cartonnage non respectable »*

Les motifs possibles sont : *stock suffisant*, *transfert déjà en attente*, *aucun lot en zone de départ*, *stock insuffisant*, *cartonnage non respectable*, *quantité paramétrée à zéro*, *déjà couvert par un transfert en cours*, *paramètre en double*, *sans destination*, *cartonnage absent*.

> **Relancer la suggestion ne crée pas de doublons.** Le traitement tient compte de ce qu'il a déjà proposé : un produit dont un transfert est encore en attente est écarté, et la quantité demandée est toujours diminuée de ce qui est déjà en route.

### 4.4 Modifier la quantité d'une ligne

1. Cliquez dans la colonne **Qté Transférée** de la ligne.
2. Saisissez la nouvelle quantité, puis quittez la cellule.

**Contrôles**

| Message | Cause |
| --- | --- |
| « Le stock du lot choisi est inférieur à la quantité à transférée ! le stock du lot est : N » | Quantité supérieure au stock disponible du lot |
| « Transfert non trouvé ! » | La ligne n'existe plus |
| « Lot non trouvé ! » | Le lot de départ n'existe plus |

Message de succès : *« Quantité modifiée avec succès »*.

> La cellule n'est modifiable que tant que la ligne est **EN SAISIE**. Dès le départ validé, elle est grisée.

### 4.5 Supprimer des lignes

1. Cochez les lignes à supprimer.
2. Cliquez sur **supprimer lignes cochées**, puis confirmez avec votre mot de passe.

> **Seules les lignes EN SAISIE sont supprimées.** Les lignes déjà expédiées ou réceptionnées sont ignorées silencieusement : le message de succès s'affiche mais elles restent dans la liste. Vérifiez le résultat après l'opération.

Message : *« Ligne(s) supprimée(s) avec succès »*.

---

## 5. Exécuter le transfert

### 5.1 Valider le départ (sortie de la zone de départ)

C'est l'opération qui **sort physiquement la marchandise de la zone de départ**.

**Procédure**

1. Imprimez au besoin la **fiche de transfert inter-zone** (chapitre 6) et faites prélever la marchandise.
2. Dans le tableau, cochez les lignes réellement prélevées.
3. Cliquez sur **Valider départ**.
4. Saisissez votre mot de passe et confirmez.

**Contrôles effectués**

| Contrôle | Message |
| --- | --- |
| Au moins une ligne doit être cochée | « Veuillez cocher une/plusieurs ligne(s) !! » |
| La quantité doit être strictement positive | « Impossible de transférer une quantitée égale à : 0 » |
| Le lot de départ doit exister | « Lot de départ non identifié » |
| Le stock du lot doit couvrir la quantité | « La quantité à transférer sur le lot XXXX est supérieur au stock du lot. » |
| Le stock ne peut pas devenir négatif | « Stock negatif interdit : … » (contrôle de sécurité de la base) |

> **Seules les lignes EN SAISIE sont traitées**, comme l'annonce la fenêtre de confirmation.
> Les lignes déjà expédiées ou réceptionnées présentes dans votre sélection sont ignorées :
> cocher par mégarde une ligne déjà réceptionnée est sans effet sur elle.

**Traitements automatiques**

* Si le lot n'existe pas encore dans la zone de réception, **le système le crée** : même numéro de lot, même date de péremption, même traçabilité, même colisage, à l'emplacement de réception porté par la ligne, avec un stock initial à zéro.
* La ligne passe au statut **EXPEDIE**, avec la date, l'heure et le nom de l'opérateur.

**Résultat :** *« La validation du départ a été éffectuée avec succès !! »*.

### 5.2 Valider la réception (entrée en zone de réception)

C'est l'opération qui **range la marchandise dans la zone de destination**.

**Procédure**

1. Imprimez au besoin la **fiche de réception** (chapitre 6) et faites ranger la marchandise.
2. Cochez les lignes rangées.
3. Cliquez sur **Valider Réception**.
4. Saisissez votre mot de passe et confirmez.

> **Seules les lignes EXPEDIE sont traitées.** Une ligne encore EN SAISIE ne peut pas être réceptionnée : il faut d'abord valider son départ.

**Traitements automatiques**

* La ligne passe au statut **RECEPTIONNE**, avec la date, l'heure et le nom de l'opérateur.
* **L'indisponibilité suit le lot** : le lot d'arrivée est automatiquement **suspendu** si le lot de départ était déjà suspendu, **ou** si la zone de réception est une **zone de quarantaine**.
* En revanche, le système ne lève **jamais** automatiquement une suspension : déplacer un lot indisponible vers une zone normale le laisse indisponible. Le déblocage reste une action explicite, depuis l'écran **Stocks > Blocage de lot**.

**Résultat :** *« Produit(s) réceptionné(s) avec succès »*.

### 5.3 Impact exact sur le stock

Le tableau ci-dessous décrit l'effet réel de chaque étape, vérifié sur la base de données.

| Étape | Lot de départ | Zone de départ | Lot d'arrivée | Zone de réception | **Stock total du site** |
| --- | --- | --- | --- | --- | --- |
| Création (EN SAISIE) | inchangé | inchangé | inchangé | inchangé | **inchangé** |
| **Valider départ** (EXPEDIE) | **− Qté** | **− Qté** | + Qté **en transit** | inchangé | **inchangé** |
| **Valider réception** (RECEPTIONNE) | inchangé | inchangé | transit soldé, **+ Qté en stock** | **+ Qté** | **inchangé** |
| Suppression d'une ligne EN SAISIE | inchangé | inchangé | inchangé | inchangé | **inchangé** |

**Exemple concret** — lot de 338 unités en zone RESERVE, transfert de 10 vers la zone PICKING :

| | Lot départ | Zone RESERVE | Transit lot arrivée | Lot arrivée | Zone PICKING | Stock site |
| --- | --- | --- | --- | --- | --- | --- |
| Au départ | 338 | 338 | 0 | 0 | 0 | 338 |
| EN SAISIE | 338 | 338 | 0 | 0 | 0 | 338 |
| EXPEDIE | 328 | 328 | **10** | 0 | 0 | **338** |
| RECEPTIONNE | 328 | 328 | 0 | **10** | **10** | **338** |

**Trois conséquences pratiques**

1. **Le stock du site ne bouge jamais.** Un transfert inter-zone n'est ni une entrée ni une sortie : c'est un déplacement. Aucun état de valorisation ni aucun mouvement comptable n'en découle.
2. **Entre le départ et la réception, la marchandise n'est disponible nulle part** : elle a quitté la zone de départ et n'est pas encore entrée dans la zone de réception. Elle figure en **transit** sur le lot d'arrivée. Ne laissez donc pas traîner un transfert au statut EXPEDIE : il rend la marchandise invisible aux préparateurs.
3. **Le stock ne peut jamais devenir négatif.** La base de données refuse toute opération qui mettrait un lot en négatif, avec un message nommant le produit, le lot et le magasin concernés. Le transfert entier est alors annulé.

---

## 6. Impressions et exports

| Document | Où | Contenu |
| --- | --- | --- |
| **Fiche de transfert inter-zone** | Autres actions > Imprimer fiche transfert inter-zone | Fiche de prélèvement. Colonnes : Produit, Qté, Cartonnage, Nb. colis, Numéro Lot, Péremption, Emplacement départ, Emplacement arrivée, Zone. Triée par zone d'expédition, puis par rack et emplacement de départ : c'est l'ordre de parcours du magasinier |
| **Fiche de réception** | Autres actions > Imprimer fiche réception | Fiche de rangement. Colonnes : Produit, Qté transférée, Numéro Lot, Date péremption, Emplacement départ, Emplacement arrivée, Zone départ |
| **Étiquette départ** | Bas du tableau > Imprimer > Etiquette départ | Étiquettes des lignes cochées, côté départ |
| **Étiquette réception** | Bas du tableau > Imprimer > Etiquette réception | Étiquettes des lignes cochées, côté réception |
| **Export** | Bas du tableau > Exporter | Export de la liste affichée |

> Les deux fiches ne portent que sur les **lignes cochées**. Cochez d'abord, imprimez ensuite.

---

## 7. Paramétrer le réapprovisionnement inter-zone

La suggestion automatique (§ 4.3) et la tâche planifiée (§ 9.5) ne travaillent que sur les produits **paramétrés**. Ce paramétrage se fait produit par produit, depuis la fiche produit.

**Procédure**

1. Ouvrez la **fiche produit**.
2. Ouvrez la section **Paramètre seuil transfert inter zone**.
3. Cliquez pour ajouter une ligne, ou sur le crayon pour modifier une ligne existante.

**Capture d'écran — Paramètre seuil transfert inter zone (fiche produit)**

| Champ | Description |
| --- | --- |
| Zone de départ | Zone de réserve depuis laquelle la marchandise sera prélevée |
| Zone de réception | Zone à réapprovisionner. **Laissée vide**, le paramètre sert au mode « zone de réception AUTOMATIQUE » : le système choisira lui-même la zone de détail |
| Seuil d'alerte | Niveau en dessous duquel la zone doit être réapprovisionnée. Tant que le stock de la zone de réception (augmenté de ce qui est déjà en route) reste **au-dessus** de ce seuil, aucun transfert n'est proposé |
| Qte réappro | Quantité que la zone doit **recevoir au total**. Le système en déduit ce qui est déjà en route et ne demande que le complément |

**Contrôles**

| Message | Cause |
| --- | --- |
| « L'opération ne peut être éffectuée, car il existe déjà une ligne de réappro avec ces deux zones ! » | Un paramètre existe déjà pour ce couple de zones sur ce produit |

**Suppression**

La corbeille rend le paramètre inactif : il est marqué supprimé avec la date et l'auteur, sans être effacé.

> **Attention à la lecture de « Qte réappro ».** C'est une quantité **cible en zone de réception**, pas une quantité à expédier. Paramétrer 100 avec un seuil de 20 signifie : « quand la zone descend à 20 ou moins, fais en sorte qu'elle reçoive de quoi atteindre 100 », et non « envoie 100 de plus à chaque fois ».

---

## 8. Statuts et modes

### 8.1 Statuts

| Statut | Signification | Ce qui a bougé | Actions autorisées |
| --- | --- | --- | --- |
| **EN SAISIE** | La ligne est créée, rien n'est parti | Rien | Modifier la quantité, supprimer, imprimer la fiche, valider le départ |
| **EXPEDIE** | La marchandise est sortie de la zone de départ | Sortie zone de départ + mise en transit | Imprimer la fiche de réception, valider la réception |
| **RECEPTIONNE** | La marchandise est rangée dans la zone de réception | Entrée en zone de réception | Consulter, imprimer, exporter |

### 8.2 Modes

| Mode | Pastille | Origine de la ligne |
| --- | --- | --- |
| **MANUEL** | rose | Saisie manuelle ou import de fichier |
| **AUTOMATIQUE** | verte | Suggestion automatique, lancée à la main ou par la tâche planifiée |
| **AUTO VENTE** | orange | Mode historique. **Aucun traitement actif ne le produit aujourd'hui** ; il ne subsiste que sur des données reprises de l'ancienne application |

---

## 9. Les traitements qui génèrent un transfert inter-zone

Neuf traitements de l'ERP écrivent dans les transferts inter-zone. Les quatre premiers sont des actions d'utilisateur, le cinquième est automatique et planifié, les autres sont marginaux ou inactifs.

### 9.1 Saisie manuelle — écran Transfert inter zone stockage

| | |
| --- | --- |
| **Déclencheur** | Bouton **Ajouter un produit**, puis **Ajouter** |
| **Qui** | Magasinier, chef de magasin |
| **Lignes créées** | Une seule, sur le lot choisi |
| **Mode / Statut** | MANUEL / EN SAISIE |
| **Quantité** | Celle saisie, éventuellement ramenée au multiple du cartonnage |
| **Voir** | § 4.1 |

### 9.2 Import de fichier — écran Transfert inter zone stockage

| | |
| --- | --- |
| **Déclencheur** | Autres actions > **Integrer CSV** |
| **Qui** | Magasinier, chef de magasin |
| **Lignes créées** | Une par lot servi ; une ligne du fichier peut donc en produire plusieurs |
| **Mode / Statut** | MANUEL / EN SAISIE |
| **Quantité** | La quantité demandée, répartie sur les lots du plus proche périmé au plus lointain, dans la limite du stock non déjà engagé et du cartonnage |
| **Voir** | § 4.2 |

### 9.3 Suggestion automatique vers une zone choisie

| | |
| --- | --- |
| **Déclencheur** | Autres actions > **Lancer les transferts automatiquement**, avec une zone de réception explicite |
| **Qui** | Chef de magasin, gestionnaire de stock |
| **Base de travail** | Les paramètres de réapprovisionnement du couple (zone de départ, zone de réception) |
| **Condition** | Stock de la zone de réception + en-route **≤** seuil d'alerte |
| **Lignes créées** | Une par lot servi |
| **Mode / Statut** | AUTOMATIQUE / EN SAISIE |
| **Voir** | § 4.3.1 |

### 9.4 Suggestion automatique vers la zone de détail (« AUTOMATIQUE »)

| | |
| --- | --- |
| **Déclencheur** | Autres actions > **Lancer les transferts automatiquement**, zone de réception = **AUTOMATIQUE** |
| **Qui** | Chef de magasin, gestionnaire de stock |
| **Base de travail** | Les paramètres de réapprovisionnement de la zone de départ **sans zone de destination** |
| **Condition** | Stock des zones de détail + en-route **≤** seuil d'alerte |
| **Destination** | La zone de détail qui porte déjà un emplacement du produit |
| **Quantité** | Cartons entiers uniquement |
| **Mode / Statut** | AUTOMATIQUE / EN SAISIE |
| **Voir** | § 4.3.2 |

### 9.5 Tâche planifiée « suggestion de transfert inter-zone classique »

| | |
| --- | --- |
| **Déclencheur** | Tâche planifiée `app:suggestion-transfert-inter-zone-classique`, **toutes les quatre heures** |
| **Qui** | Le système, sans intervention humaine |
| **Portée** | Toutes les agences, et pour chacune **toutes les zones gérées par colisage** prises comme zone de départ |
| **Traitement appelé** | Exactement celui du § 9.4 (zone de réception AUTOMATIQUE) |
| **Mode / Statut** | AUTOMATIQUE / EN SAISIE |
| **Trace** | Journal applicatif : « DEBUT / FIN DU TRAITEMENT DE TRANSFERT AUTO AGENCE => … ZONESTOCKAGE => … » |

> **C'est le principal générateur automatique en fonctionnement.** Les lignes qu'il crée apparaissent d'elles-mêmes dans l'écran, au statut EN SAISIE et avec la pastille verte. Elles attendent qu'un magasinier valide leur départ : **prenez l'habitude de consulter l'écran en début de poste**.

### 9.6 Tâche planifiée « transfert inter-zone à heure fixe » — inactive

| | |
| --- | --- |
| **Déclencheur** | Tâche planifiée `app:transfert-inter-zone-auto-heure-fixe`, aux heures définies par agence (paramètres *Heure transfert inter-zone auto 1, 2 et 3*) |
| **État réel** | **Le traitement est entièrement neutralisé : il ne crée aucun transfert.** La planification subsiste mais l'exécution ne fait rien |
| **Conséquence** | Renseigner les trois heures de transfert automatique dans les paramètres de l'agence **n'a aucun effet**. Le seul générateur automatique en service est celui du § 9.5 |

### 9.7 Génération des transferts en instance de rupture — défaillante

| | |
| --- | --- |
| **Déclencheur** | Écran **Stocks > Listing transferts inter-sites**, bouton **Générer les transferts en instances de ruptures** |
| **Intention** | En complément du transfert inter-site, réapprovisionner la zone de détail depuis les zones gérées par colisage du site de départ, par un transfert inter-zone |
| **État réel** | **Le code de cette partie est obsolète** : il écrit dans des colonnes qui n'existent plus. La base rejette l'écriture et le traitement s'interrompt en erreur |
| **Conséquence** | Voir la section « Anomalies » en fin de document |

### 9.8 Reprise de l'historique des transferts internes (administration système)

| | |
| --- | --- |
| **Déclencheur** | Outil d'administration système, exécuté une fois lors de la migration |
| **Objet** | Recopier l'historique de l'ancienne table des transferts internes vers les transferts inter-zone, en conservant dates, opérateurs, quantités et statuts d'origine |
| **Mode / Statut** | Ceux du document d'origine — c'est la seule source de lignes en mode **AUTO VENTE** |
| **Remarque** | N'a pas vocation à être relancé en exploitation courante |

### 9.9 Changement de zone de rangement d'un produit (administration système)

| | |
| --- | --- |
| **Déclencheur** | Outil d'administration système de réaffectation de zone d'un produit |
| **Objet** | Déplacer un produit d'une zone vers une autre. L'outil crée le lot dans la zone de destination puis un transfert inter-zone **d'une unité**, qu'il enchaîne immédiatement au statut EXPEDIE puis RECEPTIONNE |
| **Mode / Statut** | MANUEL / RECEPTIONNE (le transfert naît déjà soldé) |
| **Remarque** | Explique la présence, dans l'historique, de transferts d'une unité créés et réceptionnés à la même seconde |

### 9.10 Pour mémoire : la fusion de produits ne crée pas de transfert

La fusion de deux fiches produits **ne génère aucun transfert inter-zone** ; elle se contente de **réaffecter au produit conservé** les transferts inter-zone existants de la fiche supprimée. L'historique reste donc consultable sous le produit conservé.

### 9.11 Tableau de synthèse

| N° | Traitement | Déclenchement | Mode | Statut à la création | Actif |
| --- | --- | --- | --- | --- | --- |
| 9.1 | Saisie manuelle | Utilisateur | MANUEL | EN SAISIE | Oui |
| 9.2 | Import de fichier | Utilisateur | MANUEL | EN SAISIE | Oui |
| 9.3 | Suggestion vers zone choisie | Utilisateur | AUTOMATIQUE | EN SAISIE | Oui |
| 9.4 | Suggestion vers zone de détail | Utilisateur | AUTOMATIQUE | EN SAISIE | Oui |
| 9.5 | Tâche planifiée, toutes les 4 h | Système | AUTOMATIQUE | EN SAISIE | **Oui** |
| 9.6 | Tâche planifiée à heure fixe | Système | — | — | **Non (neutralisée)** |
| 9.7 | Transferts en instance de rupture | Utilisateur | — | — | **Non (en erreur)** |
| 9.8 | Reprise de l'historique | Administration | variable | variable | Ponctuel |
| 9.9 | Changement de zone d'un produit | Administration | MANUEL | RECEPTIONNE | Ponctuel |

---

## 10. Workflows fonctionnels

### 10.1 Workflow général

```
   [Création]
   Saisie manuelle  |  Import de fichier  |  Suggestion automatique  |  Tâche planifiée (4 h)
        |                    |                        |                        |
        +--------------------+------------------------+------------------------+
                                        |
                                        v
                                   EN SAISIE
                                        |   modification de quantité possible
                                        |   suppression possible
                                        |
                                        |  « Valider départ » + mot de passe
                                        v
                                    EXPEDIE  ------ marchandise physiquement prélevée
                                        |           (sortie zone départ, mise en transit)
                                        |
                                        |  « Valider Réception » + mot de passe
                                        v
                                  RECEPTIONNE ----- marchandise rangée
                                                    (entrée zone réception, transit soldé)
                                                    + suspension héritée si quarantaine
```

### 10.2 Réapprovisionnement quotidien d'une zone de picking

```
   Paramétrage (une fois, sur la fiche produit)
     Zone départ = RESERVE, Zone réception = vide, Seuil = 20, Qte réappro = 100
        |
        v
   Toutes les 4 heures, le système compare le stock du picking au seuil
        |
        |  stock picking + en-route <= 20 ?
        v
   Lignes AUTOMATIQUE créées EN SAISIE, en cartons entiers
        |
        v
   Le magasinier consulte l'écran, imprime la fiche de transfert inter-zone
        |
        v
   Prélèvement en réserve -> « Valider départ »
        |
        v
   Rangement en picking  -> « Valider Réception »
```

### 10.3 Mise en quarantaine d'un lot

```
   Lot suspect en zone RESERVE
        |
        v
   Saisie manuelle : zone départ = RESERVE, zone réception = QUARANTAINE
        |
        v
   Valider départ, puis Valider Réception
        |
        v
   Le lot arrive en zone QUARANTAINE et est AUTOMATIQUEMENT SUSPENDU
   (la zone de réception est une zone de quarantaine)
        |
        v
   Le déblocage éventuel se fait ensuite, explicitement,
   depuis Stocks > Blocage de lot
```

---

## 11. Règles de gestion

**RG-Z01 — Deux zones différentes**
*Condition :* création d'un transfert, quel que soit le mode.
*Comportement :* la zone de réception doit être différente de la zone d'expédition, sinon l'opération est refusée.

**RG-Z02 — Quantité strictement positive**
*Condition :* création ou validation du départ.
*Comportement :* une quantité nulle ou négative est refusée (« Veuiller saisir une quantité suppérier à 0 !! », « Impossible de transférer une quantitée égale à : 0 »).

**RG-Z03 — Quantité limitée au stock du lot**
*Condition :* saisie, modification de quantité, validation du départ.
*Comportement :* la quantité ne peut pas dépasser le stock du lot de départ. Contrôle refait à la validation du départ : « La quantité à transférer sur le lot XXXX est supérieur au stock du lot. »

**RG-Z04 — Stock négatif interdit**
*Condition :* tout mouvement de stock.
*Comportement :* la base de données refuse toute opération rendant un lot négatif et annule le transfert entier, en nommant le produit, le lot et le magasin.

**RG-Z05 — Règle du cartonnage**
*Condition :* la zone de départ **ou** la zone de réception est gérée par colisage.
*Comportement :* la quantité transférée est ramenée à un multiple du cartonnage du lot. En saisie manuelle, une quantité inférieure à un carton est refusée. À l'import et en suggestion, le système arrondit au multiple supérieur si le stock le permet, au multiple inférieur sinon, et renonce si même un carton ne passe pas.

**RG-Z06 — Lots éligibles au départ**
*Condition :* import de fichier et suggestion automatique.
*Comportement :* seuls sont retenus les lots de la zone de départ qui sont en stock, **non suspendus** et **non périmés** (date de péremption postérieure à la date du jour).

**RG-Z07 — Premier périmé, premier sorti**
*Comportement :* les lots sont consommés par date de péremption croissante, puis par ancienneté.

**RG-Z08 — Stock déjà engagé**
*Condition :* import de fichier et suggestion automatique.
*Comportement :* la quantité disponible d'un lot est diminuée de ce que les transferts **inter-zone en saisie** et les transferts **inter-site validés non collectés** ont déjà promis sur ce lot. Un même stock ne peut donc pas être promis deux fois.

**RG-Z09 — Prise en compte de ce qui est déjà en route**
*Condition :* suggestion automatique.
*Comportement :* le niveau de la zone de réception est calculé stock réel **+ quantités des transferts en saisie et expédiés** vers cette zone. La quantité demandée est ensuite diminuée d'autant. Relancer la suggestion ne crée donc pas de doublon.

**RG-Z10 — Un seul transfert en attente par produit et par couple de zones**
*Condition :* suggestion automatique vers une zone choisie.
*Comportement :* si un transfert non réceptionné existe déjà pour ce produit sur ce couple de zones, aucun nouveau transfert n'est proposé.

**RG-Z11 — Seuil d'alerte**
*Condition :* suggestion automatique.
*Comportement :* aucun transfert n'est proposé tant que le niveau de la zone de réception dépasse le seuil d'alerte paramétré.

**RG-Z12 — Cartons entiers en mode zone de détail**
*Condition :* suggestion automatique avec zone de réception AUTOMATIQUE.
*Comportement :* la quantité est un nombre entier de cartons. Un produit sans cartonnage renseigné est écarté (motif « cartonnage absent »).

**RG-Z13 — Création automatique du lot d'arrivée**
*Condition :* validation du départ, lorsque le lot n'existe pas encore dans la zone de réception.
*Comportement :* le système crée la fiche lot dans la zone de destination avec le même numéro de lot, la même péremption, la même traçabilité et le même colisage, à l'emplacement de réception porté par la ligne, avec un stock initial nul.

**RG-Z14 — Effet du départ sur le stock**
*Comportement :* la quantité est retirée du lot et de la zone de départ, et placée en transit sur le lot d'arrivée. **Le stock total du site reste inchangé.**

**RG-Z15 — Effet de la réception sur le stock**
*Comportement :* le transit est soldé et la quantité est ajoutée au lot et à la zone de réception. **Le stock total du site reste inchangé.**

**RG-Z16 — L'indisponibilité suit le lot**
*Condition :* validation de la réception.
*Comportement :* le lot d'arrivée est suspendu si le lot de départ l'était, ou si la zone de réception est une zone de quarantaine. Une suspension n'est **jamais** levée automatiquement.

**RG-Z17 — Emplacement de réception unique par lot**
*Condition :* saisie manuelle.
*Comportement :* l'ajout est refusé si l'emplacement de réception visé est déjà occupé par un autre lot du produit (« Emplacement de réception déjà utilisé pour un autre lot. »).

**RG-Z18 — Modification réservée au statut EN SAISIE**
*Comportement :* la quantité n'est modifiable, et la ligne n'est supprimable, que tant que le transfert est EN SAISIE.

**RG-Z19 — Filtrage des lignes traitées par le statut**
*Comportement :* la suppression et la validation du départ ne traitent que les lignes **EN SAISIE** ; la validation de la réception ne traite que les lignes **EXPEDIE**. Les autres lignes cochées sont ignorées, sans message d'erreur et sans effet sur elles.

**RG-Z20 — Traçabilité des validations**
*Comportement :* chaque validation exige le mot de passe et le droit DS_TransfertInterne, enregistre la date, l'heure et l'opérateur sur la ligne, et inscrit l'opération au journal des événements.

**RG-Z21 — Paramètre de réapprovisionnement unique par couple de zones**
*Condition :* création d'un paramètre sur la fiche produit.
*Comportement :* un seul paramètre actif par produit et par couple (zone de départ, zone de destination).

**RG-Z22 — La quantité paramétrée est une cible**
*Comportement :* « Qte réappro » désigne la quantité que la zone de réception doit **détenir au total**, et non la quantité à envoyer à chaque fois. Le système ne demande que le complément.

---

## 12. Messages et erreurs courantes

| Message / situation | Cause | Action recommandée |
| --- | --- | --- |
| « Veuiller choisir un site d'expédition !! » | Site non renseigné | Sélectionner le site |
| « Veuiller choisir une zone d'expédition !! » | Zone de départ non renseignée | Sélectionner la zone de départ |
| « Veuiller choisir une zone de réception !! » | Zone de réception non renseignée | Sélectionner la zone de réception |
| « Veuiller selectionner une zone de réception différente de la zone de départ !! » | Les deux zones sont identiques | Choisir une autre zone |
| « La zone de départ ne peut être pareille à la zone de réception ! » | Idem, depuis l'assistant de suggestion | Choisir une autre zone |
| « Veuiller choisir un lot !! » | Aucun lot sélectionné | Choisir un lot dans la liste |
| « Veuiller saisir une quantité suppérier à 0 !! » | Quantité vide ou nulle | Saisir une quantité positive |
| « La quantité à transférer ne doit pas être supérieure au stock du lot » | Quantité supérieure au stock | Réduire la quantité ou choisir un autre lot |
| « La quantité saisie doit être un multiple du cartonnage !! » | Zone gérée par colisage | Saisir un multiple du cartonnage |
| « Un lot n'a pas été trouvé !! » | Le lot n'existe plus | Actualiser l'écran et recommencer |
| « Emplacement de réception déjà utilisé pour un autre lot. » | L'emplacement visé est occupé | Choisir un autre emplacement de réception |
| « la stock est indisponible et/ou la quantité aà transférer est inférieur au stock !! » | Le lot n'a pas de stock disponible | Vérifier le stock du lot |
| « Ajout de la ligne éffectué avec succès !! » | Ligne créée | Poursuivre la saisie |
| « Site, zone d'expédition et zone de réception sont obligatoires !! » | Champ manquant à l'import ou en suggestion | Compléter les trois champs |
| « La zone de réception doit être différente de la zone d'expédition !! » | Zones identiques | Choisir une autre zone |
| « Fichier à intégrer introuvable ou non autorisé !! » | Fichier absent du dossier de dépôt | Redéposer le fichier |
| « Quantité invalide » (colonne 5 du fichier) | Quantité vide, nulle ou négative | Corriger le fichier |
| « Aucun transfert possible » (colonne 5) | Aucun lot disponible dans la zone de départ | Vérifier le stock de la zone |
| « Aucun transfert : lot X : cartonnage de N non respectable » | Le cartonnage empêche de servir | Ajuster la demande ou transférer manuellement |
| « Intégrée : 30 / 100 … reliquat non servi : 70 » | Stock insuffisant pour servir toute la demande | Compléter plus tard ou depuis une autre zone |
| « Intégrée : 120 / 100 … arrondi au cartonnage supérieur » | Arrondi au carton supérieur | Comportement normal ; vérifier que le surplus est acceptable |
| « Aucun produit n'est paramétré pour un transfert entre ces deux zones !! » | Aucun paramètre de réapprovisionnement | Paramétrer les produits sur leur fiche |
| « Aucune zone de détail (hors gestion par colisage) sur ce site !! » | Aucune zone de détail configurée | Faire configurer les zones |
| « Aucun lot actif dans la zone d'expédition !! » | Zone de départ vide | Choisir une autre zone de départ |
| « Aucun transfert à proposer (… stock suffisant, … transfert déjà en attente) » | Aucun produit sous le seuil | Comportement normal |
| « X ligne(s) de transfert créée(s) pour Y produit(s) » | Suggestion réussie | Traiter les lignes créées |
| « Veuillez cocher une/plusieurs ligne(s) !! » | Aucune ligne sélectionnée | Cocher les lignes |
| « Impossible de transférer une quantitée égale à : 0 » | Ligne à quantité nulle dans la sélection | Corriger ou supprimer la ligne |
| « Lot de départ non identifié » | Le lot de la ligne n'existe plus | Supprimer la ligne et la ressaisir |
| « La quantité à transférer sur le lot XXXX est supérieur au stock du lot. » | Le stock a baissé depuis la création | Réduire la quantité puis revalider |
| « Stock negatif interdit : … lot …, magasin … » | Le mouvement rendrait le stock négatif | Vérifier le stock réel du lot |
| « La validation du départ a été éffectuée avec succès !! » | Départ validé | Faire ranger, puis valider la réception |
| « Produit(s) réceptionné(s) avec succès » | Réception validée | Opération terminée |
| « Quantité modifiée avec succès » | Quantité mise à jour | Aucune action |
| « Le stock du lot choisi est inférieur à la quantité à transférée ! » | Quantité trop élevée | Réduire la quantité |
| « Transfert non trouvé ! » / « Lot non trouvé ! » | La ligne ou le lot n'existe plus | Actualiser l'écran |
| « Ligne(s) supprimée(s) avec succès » | Suppression effectuée | Vérifier que les lignes visées ont bien disparu |
| « L'opération ne peut être éffectuée, car il existe déjà une ligne de réappro avec ces deux zones ! » | Paramètre en double sur la fiche produit | Modifier le paramètre existant |

---

## 13. FAQ utilisateur

**Le transfert inter-zone modifie-t-il le stock de mon site ?**
Non, jamais. Il ne change que la répartition entre les zones. Le stock total du site reste identique, avant, pendant et après.

**Quelle différence avec le transfert inter-site ?**
Le transfert inter-zone déplace la marchandise **à l'intérieur d'un site** (réserve → picking par exemple). Le transfert inter-site la déplace **d'un site à un autre**. Voir le tableau du § 1.3.

**Pourquoi dois-je valider deux fois ?**
La première validation (départ) constate que la marchandise a été **prélevée** dans la zone de départ. La seconde (réception) constate qu'elle a été **rangée** dans la zone d'arrivée. Entre les deux, elle est en transit.

**Un produit a disparu du picking alors que le transfert est fait. Pourquoi ?**
Vérifiez le statut. S'il est resté **EXPEDIE**, la marchandise est sortie de la réserve mais n'est pas encore entrée en picking : elle est en transit et invisible. Validez la réception.

**Puis-je annuler un transfert ?**
Tant qu'il est **EN SAISIE**, oui : cochez-le et utilisez « supprimer lignes cochées ». Une fois expédié ou réceptionné, il n'existe pas de bouton d'annulation dans cet écran ; il faut créer un transfert en sens inverse.

**J'ai coché des lignes et cliqué sur « supprimer », mais certaines sont toujours là.**
Seules les lignes EN SAISIE sont supprimées. Les lignes expédiées ou réceptionnées sont ignorées, sans message particulier.

**J'ai coché plusieurs lignes et validé la réception, mais toutes n'ont pas changé de statut.**
La validation de la réception ne traite que les lignes déjà EXPEDIE. Une ligne encore EN SAISIE doit d'abord voir son départ validé.

**J'ai coché plusieurs lignes et validé le départ, mais toutes n'ont pas changé de statut.**
La validation du départ ne traite que les lignes EN SAISIE. Les lignes déjà expédiées ou réceptionnées de votre sélection sont laissées telles quelles.

**Pourquoi le système transfère-t-il 24 alors que j'ai saisi 30 ?**
Parce que l'une des deux zones est gérée par colisage : la quantité est ramenée à un multiple du cartonnage du lot (ici 12).

**Pourquoi une seule ligne de mon fichier a-t-elle produit trois lignes de transfert ?**
Parce que la quantité demandée a été répartie sur trois lots, du plus proche de la péremption au plus lointain.

**D'où viennent les lignes vertes que je n'ai pas saisies ?**
Elles ont été créées par la suggestion automatique, qui tourne **toutes les quatre heures**. Elles attendent que vous validiez leur départ. Consultez l'écran en début de poste.

**J'ai relancé la suggestion automatique deux fois : vais-je avoir deux fois la quantité ?**
Non. Le traitement tient compte de ce qui est déjà en route et écarte les produits ayant déjà un transfert en attente.

**La suggestion ne propose rien alors que ma zone de picking est vide.**
Trois causes possibles : le produit n'est pas paramétré pour ce couple de zones (chapitre 7), il n'y a pas de lot valide dans la zone de départ, ou le cartonnage empêche de constituer un carton. Le message de fin de traitement précise le motif et le nombre de produits concernés.

**J'ai renseigné les heures de transfert automatique dans les paramètres de l'agence, mais rien ne se passe.**
C'est normal : ce traitement à heure fixe est aujourd'hui neutralisé. Le seul générateur automatique en service est la suggestion qui tourne toutes les quatre heures.

**Mon lot est arrivé en quarantaine et il est bloqué. Est-ce voulu ?**
Oui. Tout lot rangé dans une zone de quarantaine est automatiquement suspendu. Le déblocage se fait explicitement depuis **Stocks > Blocage de lot**.

**J'ai déplacé un lot bloqué vers une zone normale, il est toujours bloqué.**
C'est voulu : le système ne lève jamais une suspension automatiquement. Déblocage explicite obligatoire.

**Que signifie « AUTO VENTE » dans le filtre Mode ?**
C'est un mode historique, présent uniquement sur des données reprises de l'ancienne application. Aucun traitement actuel n'en produit.

**Que veut dire « Qte réappro = 100 » dans le paramétrage ?**
Que la zone doit **détenir 100** une fois réapprovisionnée, pas qu'on lui envoie 100 à chaque passage. Le système déduit ce qui est déjà en route.

---

## 14. Bonnes pratiques

1. **Consultez l'écran en début de poste**, filtre Statut = EN SAISIE : c'est là que s'accumulent les propositions de la suggestion automatique.
2. **Ne laissez pas de transfert au statut EXPEDIE.** Entre le départ et la réception, la marchandise n'est disponible dans aucune zone. Validez la réception dès le rangement effectué.
3. **Imprimez la fiche de transfert avant le prélèvement** : elle est triée dans l'ordre de parcours du magasin (zone, rack, emplacement) et fait gagner du temps.
4. **Validez le départ après le prélèvement réel, pas avant** : si la quantité prélevée diffère, corrigez d'abord la colonne « Qté Transférée », qui n'est plus modifiable ensuite.
5. **Laissez le système choisir les lots.** L'ordre « premier périmé, premier sorti » limite les pertes ; ne forcez un lot particulier que pour une raison précise.
6. **Paramétrez les seuils de réapprovisionnement** des produits à forte rotation : c'est ce qui alimente la suggestion automatique et évite les ruptures en picking.
7. **Relisez le message de fin de suggestion.** Le détail des motifs (« stock suffisant », « aucun lot en zone de départ », « cartonnage absent »…) est le meilleur outil de diagnostic du paramétrage.
8. **Traitez les rejets de l'import de fichier** : le classeur retourné indique ligne par ligne ce qui n'est pas passé et pourquoi.
9. **Utilisez la quarantaine pour ce qu'elle est** : un transfert vers une zone de quarantaine bloque automatiquement le lot. C'est la manière propre d'isoler un produit suspect.
10. **Vérifiez le résultat après une suppression de masse** : les lignes déjà expédiées ne sont pas supprimées, sans avertissement.
11. **Évitez les doublons de paramétrage** : un même produit avec deux paramètres pour le même couple de zones fausse le réapprovisionnement, et le traitement le signale (« paramètre en double »).

---

## Annexe A — Emplacements des captures d'écran

| N° | Emplacement | Écran à capturer |
| --- | --- | --- |
| 1 | § 3.1 | Écran **Stocks > Transfert inter zone stockage** — filtres et tableau |
| 2 | § 4.1 | Fenêtre **Saisie de transfert Interzone** |
| 3 | § 4.2 | Fenêtre **Integration de fichier csv** |
| 4 | § 4.3 | Fenêtre **Suggestion de Transfert inter zone** |
| 5 | § 5.1 | Fenêtre de confirmation par mot de passe de la validation du départ |
| 6 | § 6 | Fiche de transfert inter-zone (PDF) |
| 7 | § 6 | Fiche de réception (PDF) |
| 8 | § 7 | Section **Paramètre seuil transfert inter zone** de la fiche produit |

> Aucune capture n'est insérée dans ce document : l'environnement de rédaction ne permettait pas de se connecter à l'application. Les emplacements sont à compléter par l'équipe projet.

---

# ANOMALIES / POINTS À VÉRIFIER

> **Section destinée à l'équipe projet, hors manuel utilisateur.**

**État au 11 septembre 2026 :** l'anomalie **AZ-004** a été corrigée ; elle est conservée
ci-dessous, marquée « CORRIGÉ », avec le détail du correctif. Les huit autres restent ouvertes.

### AZ-001 — Le transfert automatique à heure fixe ne fait rien

* **Fonctionnalité :** tâche planifiée `app:transfert-inter-zone-auto-heure-fixe`, programmée aux heures définies par agence.
* **Comportement observé :** le corps de la commande est **intégralement commenté**. La tâche est inscrite au planificateur pour chaque heure renseignée, s'exécute, et ne produit rien.
* **Comportement attendu :** soit rétablir le traitement, soit retirer la planification et les trois paramètres d'heure, qui laissent croire à un automatisme inexistant.
* **Fichier :** `app/Console/Commands/transfertInterZoneAutoHeureFixe.php`, `app/Console/Kernel.php` (`sheduleTransfertInterZone`).
* **Gravité :** Moyen.

### AZ-002 — La génération des transferts en instance de rupture échoue sur sa partie inter-zone

* **Fonctionnalité :** bouton **Générer les transferts en instances de ruptures** (listing des transferts inter-sites).
* **Comportement observé :** le réassort inter-zone de cette procédure écrit dans des colonnes qui **n'existent plus** sur la table des transferts inter-zone (`ModeDemandeTransfert`, `QteATransferer`, `RetourEnReserve`, `IDSTOCKAGENCE_LOTS`) — vestiges de l'ancienne table des transferts internes. La base rejette l'écriture (« la colonne "ModeDemandeTransfert" … n'existe pas ») et l'ensemble du traitement s'interrompt. Ni la zone d'expédition, ni la zone de réception, ni le statut ne sont d'ailleurs renseignés.
* **Vérification :** insertion reproduite en transaction annulée — erreur SQLSTATE 42703 confirmée.
* **Comportement attendu :** aligner ce bloc sur le modèle actuel, ou le retirer si le réassort inter-zone n'a plus lieu d'être déclenché depuis cet écran.
* **Fichier :** `app/Http/Controllers/stocks/listingTransfertSiteController.php`, méthode `genererTransfertEnInstanceRupture()`, vers la ligne 1074.
* **Gravité :** Élevé.

### AZ-003 — Le filtre « Mode » ne permet pas d'isoler les lignes AUTO VENTE

* **Fonctionnalité :** filtre **Mode** de l'écran.
* **Comportement observé :** les options *AUTOMATIQUE* et *AUTO VENTE* portent toutes deux la valeur 2. Choisir « AUTO VENTE » filtre en réalité sur le mode AUTOMATIQUE ; le mode 3 est donc impossible à isoler.
* **Comportement attendu :** valeur 3 pour l'option AUTO VENTE — ou suppression de l'option, ce mode n'étant plus produit par aucun traitement actif.
* **Fichier :** `resources/views/pages/stocks/transfertInterZone.blade.php`, lignes 185 à 188.
* **Gravité :** Faible.

### AZ-004 — [CORRIGÉ] — La validation du départ ne filtre pas sur le statut et annule les réceptions

* **Fonctionnalité :** bouton **Valider départ**.
* **Comportement observé :** les contrôles préalables (quantité, lot, stock) ne portent que sur les lignes au statut 1, mais **la mise à jour finale s'applique à toutes les lignes transmises**, sans condition de statut. Une ligne déjà RECEPTIONNE cochée par erreur est ramenée au statut EXPEDIE : le déclencheur de stock réverse alors l'entrée en zone de réception et remet la quantité en transit. La marchandise disparaît de la zone de destination, et l'application affiche « La validation du départ a été éffectuée avec succès !! ». La fenêtre de confirmation annonce pourtant « Seuls les transferts en saisie seront traités ».
* **Vérification :** reproduit en transaction annulée sur un transfert au statut 3 — statut ramené à 2, stock du lot d'arrivée passé de 10 à 0, transit remonté à 10.
* **Comportement attendu :** ajouter la condition de statut à la mise à jour finale, comme le fait déjà `setValidateReception()`.
* **Fichier :** `app/Http/Controllers/stocks/transfertInterZoneController.php`, méthode `setValidateDepart()`.
* **Gravité :** Élevé.
* **Statut :** ✔ **Corrigé le 11/09/2026.**
* **Correctif appliqué :** la condition `->where("StatutTransfert", 1)` a été ajoutée à la mise à jour finale de `setValidateDepart()`. Vérifié en transaction annulée sur une sélection mêlant une ligne EN SAISIE et une ligne RECEPTIONNE : la première passe à EXPEDIE avec sortie de stock et mise en transit, la seconde conserve son statut, son stock, son transit à zéro et ses informations de réception.

### AZ-004b — Comptes rendus non chiffrés

* **Fonctionnalité :** boutons **supprimer lignes cochées** et **Valider Réception**.
* **Comportement observé :** ces actions filtrent sur le statut attendu puis renvoient un message de succès global, sans indiquer combien de lignes ont réellement été traitées. Un utilisateur qui coche dix lignes dont trois seulement sont éligibles reçoit « Ligne(s) supprimée(s) avec succès » et croit l'opération complète.
* **Comportement attendu :** un compte rendu du type « 3 / 10 ligne(s) traitée(s) », comme le font déjà les modules de transfert inter-site.
* **Fichier :** `app/Http/Controllers/stocks/transfertInterZoneController.php`, méthodes `delete()` et `setValidateReception()`.
* **Gravité :** Moyen.

### AZ-005 — Sortie anticipée sans annulation de transaction dans la saisie manuelle

* **Fonctionnalité :** ajout manuel d'une ligne.
* **Comportement observé :** lorsque la quantité n'est pas un multiple du cartonnage, la méthode retourne le message d'erreur **après avoir ouvert une transaction**, sans appeler d'annulation explicite. La transaction n'est refermée qu'en fin de requête.
* **Comportement attendu :** annuler la transaction avant de retourner l'erreur, comme le font les autres branches de la même méthode.
* **Fichier :** `app/Http/Controllers/stocks/transfertInterZoneController.php`, méthode `setTransfertInterZone()`.
* **Gravité :** Faible.

### AZ-006 — Le lot d'arrivée n'est jamais renvoyé à la saisie manuelle

* **Fonctionnalité :** détermination de l'emplacement de réception à la saisie.
* **Comportement observé :** la routine qui cherche le lot et l'emplacement de la zone de réception renvoie systématiquement un identifiant de lot à zéro (la valeur est réaffectée à 0 juste après avoir été lue). Seul l'emplacement remonte. La conséquence est sans gravité — la validation du départ crée le lot manquant — mais le code laisse penser qu'une information est transmise alors qu'elle ne l'est pas.
* **Fichier :** `app/Http/Controllers/stocks/transfertInterZoneController.php`, méthode `getIDSTOCKAGENCE_LOTS_RECEPTION()`.
* **Gravité :** Faible.

### AZ-007 — Le module n'est pas restreint au site courant

* **Fonctionnalité :** listes déroulantes **Site** de l'écran et de ses trois assistants.
* **Comportement observé :** toutes les agences sont proposées, la liste étant simplement pré-positionnée sur le site courant. Un opérateur peut donc créer, expédier et réceptionner un transfert inter-zone **sur un autre site que le sien**, ce qu'aucun contrôle serveur n'empêche — contrairement au transfert inter-site, qui vérifie l'agence à chaque étape.
* **Comportement attendu :** à arbitrer avec la maîtrise d'ouvrage. Si le multi-site est voulu, il devrait être conditionné au droit DG_AccesMultiSite ; sinon, un contrôle serveur sur l'agence de session s'impose.
* **Fichier :** `resources/views/pages/stocks/transfertInterZone.blade.php` (`chargerSelectlisteAgence`), `app/Http/Controllers/stocks/transfertInterZoneController.php`.
* **Gravité :** Moyen.

### AZ-008 — Titres des documents imprimés hétérogènes

* **Fonctionnalité :** fiches PDF.
* **Comportement observé :** la fiche de prélèvement est titrée « TRANSFERT INTER-ZONE » tandis que la fiche de réception porte encore « TRANSFERT INTERNE AGENCE », dénomination de l'ancienne application.
* **Comportement attendu :** un intitulé unique, aligné sur le nom du module.
* **Fichier :** `resources/views/pages/pdf/transfert_inter_zone_recept.blade.php`, `resources/views/pages/pdf/transfert_inter_zone.blade.php`.
* **Gravité :** Faible.

---

## Annexe B — Points non déterminables à partir du code seul

1. **Contenu détaillé des étiquettes** (départ et réception) : le module d'impression d'étiquettes est mutualisé avec d'autres écrans et n'a pas été détaillé ici.
2. **Format exact du fichier d'export** proposé au bas du tableau : l'export est générique, ses colonnes suivent celles affichées à l'écran.
3. **Politique d'usage de la zone de quarantaine** : le code décrit le mécanisme (suspension automatique à la réception, déblocage explicite) mais pas la procédure métier qui doit l'encadrer.
4. **Valeurs de référence des seuils et quantités de réapprovisionnement** : elles relèvent du paramétrage de chaque site et ne sont pas fixées dans l'application.
5. **Articulation avec le mode douchette** : des indicateurs de saisie sur lecteur code-barres existent en base pour d'autres modules ; aucun écran douchette n'est exposé pour le transfert inter-zone dans l'application web analysée.
