Comparaison des versions
Légende
- Ces lignes ont été ajoutées. Ce mot a été ajouté.
- Ces lignes ont été supprimées. Ce mot a été supprimé.
- La mise en forme a été modifiée.
Remarque |
---|
Cette documentation n’a pas fait l’objet d’un actualisation récente, et nécessite donc une adaptation aux évolutions, mais reste utile en l'état |
1 Manipulation des listes
1.1 Définitions
1.1.1 Les listes
Une liste est une suite d’informations stockée en mémoire. Le nombre d’élément d’une liste n’est, en théorie, pas limité.
Deux types de liste peuvent être distingués :
Depuis chaque élément d’une liste, il est possible d’atteindre l’élément suivant : La liste est alors dite en chaînage simple.
Depuis chaque élément d’une liste, il est possible d’atteindre l’élément suivant ou l’élément précédent : La liste est alors dite en chaînage double.
Diva intègre un ensemble de fonctions permettant de gérer des listes à double chaînage. Diva autorise également une gestion de liste dont les éléments sont implicitement triés.
Une liste est identifiée par un ticket.
Le dernier élément lu dans la liste est appelé l'élément courant. Par défaut, les insertions se font par rapport à cet élément courant.
Image Removed
1.1.2 Accès aux éléments
Les fonctions de gestion des listes de Diva permettent de lire, d’insérer, de modifier, de supprimer les éléments d’une liste. Ces opérations s’effectuent comme illustrées ci-dessous :
Image Removed
1.1.3 Adresse et rang d’un élément
Chaque élément d’une liste est stockée en mémoire. L’accès direct à l’élément peut être effectué grâce à l’adresse en mémoire de celui-ci, ou bien grâce à son rang.
Info |
---|
Lorsqu’une liste est gérée en tri automatique (implicite), alors les rangs et les adresses d’un élément peuvent varier à l’insertion ou à la modification d’un élément. Il conviendra d’utiliser les fonctions de recherche par rapport aux critères de tri pour trouver un élément précis. |
Image Removed
1.2 Instructions DIVA
1.2.1 Déclarations
Les données gérant les listes sont de type L : ticket, adresse, rang.
1 idlist L ; ticket de liste
1.2.2 Instructions
Les principales instructions de gestion de liste sont classées dans les tableaux ci-dessous :
Manipulations globales
Rôle | Syntaxe | Description |
Création | Ticket = ListCreate | Créé une nouvelle liste |
Destruction | ListDestroy(ticket) | Supprime une liste. Les listes sont détruites automatiquement en fin de programme. |
Effacement | ListErase(ticket) | Efface tous les éléments de la liste. |
Comptage | Nbr = ListCount(ticket) | Retourne le nombre d’éléments dans la liste. |
Tri | ListMode(ticket, mode, adr) | Activation/Désactivation d’un tri automatique. Adr correspond à l’adresse de la fonction de tri. |
| ListSort(ticket, adr) | Tri d’une liste. |
Lecture et recherche dans la liste
Rôle | Syntaxe | Description |
Positionnements | ListBegin(ticket) | Se positionne en début de liste. Aucun élément n’est pointé. |
| ListEnd(ticket) | Se positionne en fin de liste. |
| ListGetAdressCurrent(ticket) | Retourne l’adresse de l’élément courant. |
| ListSetAdressCurrent(ticket, adr) | Positionne l’adresse de l’élément courant. |
| ListNumber(ticket) | Délivre le rang de l’élément courant. |
| ListIndex(ticket, elem, rang) | Positionne l’élément courant au rang spécifié. |
Lectures et recherches | ListCurrent(ticket, elem) | Délivre l’élément courant |
| ListFind(ticket,...) | Recherche un élément dans une liste non triée. |
| ListSearch(ticket,…) | Recherche approximative d’un élément dans une liste triée. |
| ListSeek(ticket, …) | Recherche dans une liste triée. |
| ListFirst(ticket, elem) | Lecture du premier élément d’une liste. |
| ListNext(ticket, elem) | Lecture de l’élément suivant |
| ListLast(ticket, elem) | Lecture du dernier élément d’une liste |
| ListPrevious(ticket, elem) | Lecture de l’élément précédent |
Modifications dans la liste
Rôle | Syntaxe | Description |
Création | ListAdd…(ticket, elem) | Ajout d’un élément en début/fin de liste ou avant/après l’élément courant |
| ListInsert(ticket, elem) | Ajout d’un élément. A utiliser lorsque le tri est automatique. |
Modification | ListModify(ticket, elem) | Modification de l’élément courant par le contenu de “elem”. |
Suppression | ListDelete(ticket, ...) | Permet de supprimer un ou n éléments dans la liste. |
Lecture d’un fichier avec insertion dans une liste. Tri de la liste puis lecture de la liste triée :
exemple1.hdsp
Bloc de code |
---|
public hfile gtfdd.hsd gtfent gtfent ; Fichier des entêtes
public record gtfdd.hsd ent ; Entête de pièce
1 tic L ; Ticket
1 adrtri 16 ; Adresse de la fonction de tri
1 dos >gtfdd.hsd dos ; Code dossier
1 clemin 256
1 clemax 256
;*
function long TriPieces(&a, &b)
; Fonction de tri de deux en-têtes
record gtfdd.hsd ent a
record gtfdd.hsd ent b
beginf
freturn(Sortcompare(a.salcod, b.salcod))
endf
main
tic = ListCreate
GetAdressFunction(" ", "TriPieces", adrtri)
ListMode(tic, 1, adrtri) ; Tri automatique
dos = 998 ; Dossier démo Papyrus
clemin = [ "G" dos "C2" ] ; Commandes actives
clemax = [ "G" dos "C2" $FF ]
gtfent.key = clemin
do while hread(gtfent, ent) = 0 and gtfent.key < clemax
ListInsert(tic, ent)
wend
ListBegin(tic)
do while ListNext(tic, ENT) not in (0, -1)
; ... Traitement d'une en-tête
wend |
1.3 L’objet tableau
1.3.1 Généralités
L’objet graphique tableau d’Harmony s’appuie sur une liste pour gérer les lignes du tableau. La manipulation de la liste d’un objet tableau s’effectue comme une liste normale, mais avec un jeu d’instruction spécifique.
XmeListAddEnd(ticket, elem) remplace ListAddEnd(ticket, elem).
1.3.2 Eléments complémentaires
En plus de la gestion de l’élément courant et du nombre d’éléments, une liste d’un objet tableau gère :
l’offset qui représente le rang du premier élément affiché dans le tableau à l’affichage,
le nombre d’éléments affichés à l’écran,
l’ascenseur vertical,
la gestion en consultation, saisie,... de l’objet tableau.
1.3.3 Manipulation d’un objet tableau
La liste d’un objet tableau est créée automatiquement par l’objet lui-même. Un tableau est identifié par les caractéristiques suivantes :
Le masque écran qui contient l’objet,
Le numéro de la page du masque,
Le nom du tableau (voir les caractéristiques d’un objet tableau).
La fonction XmeListGetId retourne le ticket qui permet la manipulation de l’objet tableau.
Info |
---|
Le ticket retourné est de type Long (L). |
1.4 Atelier
1.4.1 Mise en place du projet de surcharge
Créer une nouvelle arborescence dans le répertoire \har :
\har\expert \src
\prj
\obj
\fic
Dupliquer les fichiers de Divalto dans le sous-répertoire fic.
Créer un profil de surcharge dans le projet standard Divalto Achat-Vente.
Créer un utilisateur ayant tous les droits et accès à toutes les applications.
Dupliquer les fichiers menus et zooms.
1.4.2 Sous-projet « Liste article »
Créer un nouveau sous-projet : Liste article
Créer un masque écran (exlstart.hse) comprenant :
Un objet tableau (lstart),
Dans le tableau, afficher les colonnes de l’enregistrement article : ref, des, infos des compteurs de stock,
Une barre d’outil contenant les boutons Zoom généralisé, Abandon, un bouton tri par code, un bouton tri par stock.
Créer un programme (exlstart.hsp) :
Mettre en place le programme dans le menu Fichier de Divalto Achat-Vente.
Récupérer les données du menu (pingreceive de MZ).
Lire les articles du dossier courant et alimenter la liste de l’objet tableau.
Afficher la page et programmer une boucle de consultation de la liste (xmelistconsult).
Inhiber les actions de création, suppression, modification dans la liste.
Programmer le fonctionnement des boutons :
a) Zoom généralisé
b) Tri par code
c) Tri par stock
2 Les listes de la saisie de pièce
2.1 Généralités
Dans Divalto, lorsqu’un programme gère des listes comme une saisie de pièce ou encore un programme d’interrogation article ou tiers, il utilise une donnée de l’enregistrement XT pour stocker le ou les tickets des listes.
Dans Divalto Achat-Vente, XT est manipulé par la variable d’instance G3XT. L’enregistrement XT contient une donnée IDTABLEAU de type L qui est un tableau de 50 tickets. Chaque programme utilise librement ces tickets.
En saisie de pièce, plusieurs listes sont gérées. Les trois listes les plus importantes sont :
No
Contenu
1
Liste des lignes de la pièce
2
Liste de toutes les ventilations de la pièce
3
Liste des ventilations de la ligne courante
La colonne No donne l’indice du ticket dans le tableau G3XT.IDTABLEAU(indice).
2.2 Description des listes
2.2.1 Liste des lignes
Ticket : G3XT.IDTABLEAU(1)
Ce ticket manipule l’objet tableau des lignes de la pièce. Les instructions qui manipulent cette liste sont donc de type XmeList...
L’enregistrement manipulé par la liste est G1T1. Il intègre toutes les données d’une ligne :
MOUV
Informations de gestion de l’arbre (TREEINFO)
Données de travail pour la ligne (non sauvegardées dans la table MOUV).
2.2.2 Liste des ventilations des lignes
Ticket : G3XT.IDTABLEAU(2)
Ce ticket gère la liste de toutes les ventilations des lignes de la pièce. Les instructions manipulant cette liste sont de type List...
L’enregistrement manipulé par la liste est G1T2. Il intègre toutes les données d’une ventilation :
MVTL
Données de travail pour la ventilation (non sauvegardées dans la table MVTL).
La liste est triée par : numéro chrono de la ligne (ENRNOV) + numéro chrono de la ventilation (VTLNO2). Ces deux données seront détaillées plus loin.
2.2.3 Liste des ventilations de la ligne courante
Ticket : G3XT.IDTABLEAU(3)
Ce ticket manipule l’objet tableau des ventilations de la ligne courante de la pièce. Les instructions qui manipulent cette liste sont donc de type XmeList...
L’enregistrement manipulé par la liste est G1T2. Il intègre toutes les données d’une ventilation :
MVTL
Données de travail pour la ventilation (non sauvegardées dans la table MVTL).
Lorsqu’une ligne devient la ligne courante, la liste de l’objet tableau (no 3) est chargée à partir de la liste des ventilations des lignes (no 2).
Lorsque les modifications de la ligne sont validées, les ventilations de l’objet tableau (no 3) sont transférées dans la liste des ventilations de la ligne (no 2).
2.2.4 En-tête de pièce
Les données de l’en-tête et du pied de la pièce sont directement gérées par l’enregistrement ENT.
La table est complétée par un enregistrement de travail G1 qui contient les données nécessaires pendant la phase de saisie.
Numérotations en phase de saisie
En phase de saisie de pièce, les lignes et les ventilations des lignes sont numérotées par des chronos temporaires.
G1.ENRNOV contient le dernier numéro chrono affecté à une ligne. Chaque ligne contient sont chrono dans la donnée G1T1.ENRNOV.
Chaque ligne contient dans la donnée G1T1.VTLNO2 le dernier numéro chrono affecté aux ventilations de cette même ligne.
Chaque ventilation est liée à sa ligne par le numéro chrono de la ligne G1T2.ENRNOV. Elle contient dans la donnée G1T2.VTLNO2 son propre numéro de chrono.
La liste des ventilations de toutes les lignes de la pièce est triée sur les champs G1T2.ENRNOV et G1T2.VTLNO2. Ce tri permet un accès direct aux ventilations.
2.3 Fonctions de gestion de liste standard.
Pendant la saisie de pièce, le moteur standard balaye les listes à divers moments. Dans la plupart de ces traitements des points d’accès sont fournis en début, pendant et en fin de traitement.
2.3.1 Fonctions de récapitulation
Elles sont appelées lorsque l’utilisateur accède au pied de la pièce ou demande un récapitulatif. Elles sont décrites dans le module de gestion de pièces surchargeable gttmpce.dhop.
Piece_Recap_Init(mode,ticod,picod,chgttaux)
Cette procédure est appelée en début de récapitulatif. Elle permet l’initialisation des données de cumul.
Mode Permet de tester l’état de la pièce (création, modification)
Ticod Type de tiers
Picod Type de pièce
Chgttaux Permet de demander le chargement des taux de TVA (si true)
Piece_Recap_Cumul(&MOUV,EnregArt,ticod,picod)
Cette procédure est appelée pour chaque ligne de la pièce.
MOUV Contient les données de la ligne courante.
EnregArt Si true, la procédure standard utilise les données de ART (poids, volume...) sinon celles de G1T1.
Ticod Type de tiers.
Picod Type de pièce.
Piece_Recap_Fin(mode,ticod,picod)
Cette procédure est appelée à la fin de la boucle de lecture
Mode Permet de tester l’état de la pièce (création, modification)
Ticod Type de tiers
Picod Type de pièce
2.3.2 Atelier
En saisie de commande client, compter en pied de pièce les différents numéros de colis saisis dans les ventilations.
Principe :
Insérer dans une liste triée par numéro de colis, tous les numéros trouvés. Attention, les fonctions de récap travaillent sur les lignes, il faut donc dans la procédure de cumul lire les ventilations de la ligne en cours (G1T1). En fin de récapitulatif, affecter le nombre de colis à la donnée ENT.COLINB.
2.3.3 Procédures de mise à jour
Lorsque la pièce est enregistrée dans les fichiers, les listes des lignes et leurs ventilations sont lues.
Deux procédures sont appelées au moment de ce balayage :
G1T1_LecturePourMaj_Ap
Appelée lorsqu’une ligne est mise à jour dans GTFAM.
G1T2_LecturePourMaj_Ap
Appelée lorsque la ventilation est mise à jour dans GTFVTL.
2.3.4 Cumuls dans les Chapitres, les postes et les décompositions
Le principe de gestion des données dans les procédures de cumul dans les chapitres, postes et décompositions est le suivant :
Dans la procédure d’initialisation, G1T1 contient les informations du chapitre, poste ou composé.
Dans la procédure de cumul, G1T1 contient les informations des articles liés.
Dans la procédure de mise à jour, G1T1 contient à nouveau les informations du chapitre, poste ou composé.
Pour réaliser un cumul spécifique, il faut donc obligatoirement travailler avec des variables intermédiaires puisqu’en phase de cumul, un seul G1T1 est accessible.
Pour les chapitres et les postes, trois procédures sont disponibles :
Chapitre_Poste_Init
Chapitre_Poste_Cumul
Chapitre_Poste_Maj
Pour les décompositions, le principe est le même, trois procédures sont disponibles pour réaliser des cumuls complémentaires.
Composant_Init
Composant_Cumul
Composant_Maj
2.3.5 Modifications globales
Lorsque l’utilisateur utilise la fonction de modification globale qui permet de répercuter des données dans les lignes sélectionnées, le programme de saisie de pièce lit la liste des lignes et celle des ventilations des lignes.
G1T1_Modification_Globale
Cette procédure permet de modifier les informations des lignes.
G1T2_Modification_Globale
Cette procédure permet de répercuter les informations dans les ventilations des lignes sélectionnées.
2.3.6 Cumuls des ventilations vers la ligne
Lorsque l’utilisateur valide une ligne, les ventilations de la ligne sont relues (pour la mise à jour de la liste G3XT.IDTABLEAU(2)). Dans cette phase du programme de saisie de pièce, il est possible d’intervenir pour réaliser des cumuls d’informations des ventilations vers la ligne.
Ventilation_PourMaj_Ligne_Init
Cette procédure permet l’initialisation de données dans G1T1.
Ventilation_PourMaj_Ligne_Cumul
Cette procédure permet de réaliser des cumuls de G1T2 vers G1T1.
2.3.7 Fonctions de contrôle
Lorsque l’utilisateur souhaite valider la création ou la modification d’une pièce, un contrôle préalable est réalisé à tous les niveaux de la pièce :
L’en-tête,
Les lignes
Les ventilations des lignes.
A chaque niveau, il est possible de bloquer la validation ou non selon certains critères.
En effet, les fonctions d’ouvertures doivent retourner soit O pour autoriser la validation, soit N pour l’interdire.
Ent_Controle_Fin
Permet d’interdire la validation de la pièce lors du contrôle des données de l’en-tête.
G1T1_Controle_Fin_Sortie
Est une fonction appelée pour contrôler une ligne dont le sens est la sortie (2).
G1T1_Controle_Fin_Entree
Est une fonction appelée pour contrôler une ligne dont le sens est l’entrée (1).
G1T2_Controle_Fin_Sortie
Est une fonction appelée pour contrôler une ventilation dont le sens est la sortie (2).
G1T2_Controle_Fin_Entree
Est une fonction appelée pour contrôler une ventilation dont le sens est l’entrée (1).
2.3.8 Atelier
Réaliser une surcharge qui met à jour le pied de pièce en temps réel, après la validation d’une ligne.
2.4 Création de lignes et ventilations de lignes
2.4.1 Pendant la saisie d’une ligne
Pendant la phase de saisie des lignes, il est possible d’insérer des ventilations automatiquement par un traitement spécifique.
Par exemple, dans la fonction G1T1_Ligne_Validation_Av il est possible de modifier le tableau des ventilations de la ligne courante. L’identifiant de cette liste est G3XT.IDTABLEAU(3).
Lorsque l’on travaille avec cette liste, il faut respecter les éléments suivants :
Partir d’un G1T2 déjà présent dans la liste pour obtenir les valeurs par défaut de la plupart des champs (grref, depo,...).
Il est inutile de s’occuper du numéro chrono vtlno2, enrnov..., ces données sont attribuées au moment du transfert de la liste dans la liste de toutes les ventilations.
Il faut réinitialiser certaines données : CLE, VTLNO, VTLNA, ENRNO qui ne sont renseignées que lorsque la ventilation a été créée par le chargement d’une pièce en mémoire.
Il faut veiller à aligner QTE et REFQTE. Utiliser les fonctions de conversion pour calculer l’une par rapport à l’autre.
Il faut recalculer les quantités de la ligne, et recalculer le montant de la ligne (calculer_ht) et le prix unitaire statistique (calculer_pustat).
2.4.2 Pendant la saisie de pièce, hors saisie de ligne
Lorsque le programme de saisie de pièce n’est pas en phase de saisie de ligne, il est possible d’insérer des lignes automatiquement, ainsi que des ventilations.
Les listes manipulées sont la liste des lignes (1) et celle de toutes les ventilations (2).
Insertion de ligne
Lorsque l’on insère un G1T1 dans la liste, il faut gérer les chronos techniques.
S’attribuer un nouveau numéro par G1.ENRNOV ++ et affecter ce numéro à G1T1.ENRNOV
Mettre à zéro le chrono des ventilations de la ligne (G1T1.VTLNO2 = 0). Celui-ci sera incrémenté pour chaque ventilation à insérer.
Mettre à zéro les informations à ne pas reprendre de la ligne (G1T1) qui a servi de modèle :
CLE, ENRNO, informations des notes, des textes...
Les quantités et coût totaux devraient aussi être initialisés à 0, ils seront recalculés par la somme des quantités des ventilations.
Calculer les prix, les remises, les montants et les coûts de la ligne :
Recherche_famille_tarif_vente_G1T1...
Recherche_re....
Calculer_HT
Calculer_PUSTAT
Cout_Saisie_Sortie_G1T1 (Cout_Saisie_Entree_G1T1)
Le coût de revient et le cmp qui sert de base pour les ventilations est stocké dans G1T1.CR et G1T1.CMP. Ces deux champs ne sont pas stockés dans MOUV.
Insérer la liste par une instruction XmeListAddAfter (ou insert).
Insertion des ventilations de la nouvelle ligne
Générer les ventilations une à une pour chaque ligne à insérer. La ventilation est liée à sa ligne en reprenant G1T1.ENRNOV :
G1T2.ENRNOV = G1T1.ENRNOV
G1T1.VTLNO2 ++
G1T2.VTLNO2 = G1T1.VTLNO2
Initialiser ou réinitialiser les données de la ventilation modèle :
Cle, vtlno, enrno
Calculer QTE depuis refqte ou inversement.
Affecter le CR unitaire par :
G1T2.CR = G1T1.CR, idem pour le CMP
Incrémenter les quantités dans les lignes ainsi que les totaux CR et CMP :
G1T1.CDQTE += G1T2.QTE
G1T1.REFQTE += G1T2.REFQTE
G1T1.CRTOTMT += G1T2.REFQTE * G1T2.CR
G1T1.CMPTOTMT += G1T2.REFQTE * G1T2.CMP
Insérer la ventilation dans la liste par une instruction ListInsert (obligatoirement).
Lorsque les réservations sont gérées, il faut générer celles-ci (voir plus bas) et remodifier la ventilation (ListModify).
Calculer ou recalculer les tarifs, montants de la ligne, puis modifier la ligne (XmeListModify) dans sa liste.
2.4.3 Atelier
Dans la fiche de référencement client, une quantité multiple et une cadence en jours sont ajoutées.
Lorsque l’utilisateur saisit une commande, il faut générer une cadence automatiquement selon la quantité donnée dans la ligne.
Exemple :
Article cadencé sur 20 jours, avec une quantité multiple de 100.
En saisie de commande client, pour une quantité de 450, il faut générer 5 ventilations automatiquement :
Délai Qté
J 100
J+20 100
J+40 100
J+60 100
J+80 50
3 La gestion du stock
3.1 Principe
Le stock de Divalto est géré par les ventilations d’entrée en stock.
Lorsqu’une pièce correspond à une entrée, les données relatives au stock sont gérées :
STDT, la date du stock
Cette date correspond à la date du bl (bldt) en FIFO, à 99999999 – la date de bl en LIFO et est saisie par l’utilisateur en FEFO.
La date du stock est toujours incluse dans les champs des index sur le stock.
STQTE, la quantité du stock
Cette quantité correspond initialement à REFQTE (qté livrée en unité de référence).
Lorsque des sorties vont déstocker une ventilation, sa quantité STQTE va petit à petit être décrémentée. Lorsqu’elle devient nulle, la ventilation ne fait plus partie du stock.
CEA, indicateur de ventilation en stock ou pas.
Tant que STQTE n’est pas nulle, CEA contient 1. Les index sur le stock ont comme condition de validité CEA = « 1 ».
L’indicateur passe à espace lorsque STQTE devient nulle.
Le stock d’un article s’obtient en programmant une boucle de lecture du fichier des ventilations en exploitant les index sur le stock (clés O,P ou Q de GTFVTL). Dans cette boucle, STQTE doit être cumulé.
VTLNO, numéro d’identification d’une ventilation
Une ventilation est identifiée de manière unique dans la base par son numéro VTLNO.
VTLNA, numéro de ventilation associée
Lorsqu’une ventilation correspond à un flux de sortie BL, alors la donnée VTLNA contient le numéro de ventilation de l’entrée vers laquelle elle pointe.
3.2 Le module GTPMSTOC.dhop
Ce module centralise les différentes fonctions de gestion du stock. Ces fonctions utilisent des TDF déclarées en extern de même que des enregistrements externes. Ceci signifie que l’appel à ces fonctions entraîne la modification des positions courantes dans les fichiers gtfvtl et gtfres.
Le contenu des enregistrements MVTL et MRES est lui aussi modifié.
Info |
---|
Il faudra faire attention à sauvegarder ces données selon les cas. |
Stock_Calculer_Quantite_EnStock(ref,sref1,sref2,depo,serie,nst,lieu,ToutStatus)
Cette fonction retourne la quantité en stock d’un article. Elle ne tient pas compte des entrées forcées, ni des réservations.
Les paramètres sont :
Ref Référence
Sref1 Sous-référence 1
Sref2 Sous-référence 2
Depo Code dépôt
Serie Numéro de série ou de lot
Nst Nature de stock
Lieu Code emplacement
ToutStatus par défaut vaut false.
Si true, alors toutes les ventilations du stock sont cumulées.
Si false, seules les ventilations ayant un Status à 2 sont cumulées (contrôle qualité).
La fonction retourne la quantité en stock en unité de référence.
Stock_Calculer_Quantite_PourDestockage(ref,sref1,sref2,depo,nst,mode)
Cette fonction calcule la quantité qui peut être déstockée pour un article (au plus). Cette fonction déduit les réservations du stock.
La gestion des réservations doit être active pour que cette fonction puisse être exploitée. Dans le cas contraire, la fonction retourne « High-Value ».
Le paramètre mode permet de spécifier le type de réservation à prendre en compte :
0 (défaut), affectés sur stock et non affectés
1, tous
2, non affectés uniquement
3, affectés sur stock uniquement
Stock_Entree_Forcee_Regulariser(ref,sref1,sref2,depo,serie,nst,lieu,ReserverStock,MaxiBldt)
La procédure Stock_Entree_Forcee_Regulariser permet d’appeler la fonction de régularisation pour un article, nature, no de série, dépôt, emplacement précis.
ReserverStock permet de spécifier s’il faut demander la réservation du stock de l’article (hshare) (si true) ou non (si false, défaut)
MaxiBlDt permet de spécifier une date limite de régularisation. Si elle n’est pas passée en paramètre, la date limite utilisée est G1T2.BLDT.
3.2.1 Atelier
Dans le programme de liste des articles, calculer la quantité en stock et l’ajouter dans les colonnes du tableau.
3.3 Le module GTPMSTOCSQL.DHOP
Ce module centralise les différentes fonctions de gestion du stock dans leur version SQLisés.
Pour la documentation, il faut utiliser XWIN et le information du survol
Exemple après déclaration du module GTPMSTOCSQL.dhop
Image Removed
Liste des fonctions et procédures
Prototypes de fonctions et procédures |
---|
public function char Get_MRES_Mode_Auto() |
Public Function int Article_Reservation_Quantite(depo,ref,artind,sref1,sref2,nst,tiersstock,mode,filtresref,MultiDepo) |
public function int Set_MRES_Mode_Auto(CE6) |
Public Function int Stock_Quantite(ref,artind,sref1,sref2,depo,serie,nst,tiersStock,lieu,ToutStatus,ToutTiersStock,MultiDepo,CumulerSref) |
Public Function int Stock_Reservation_Affecte_Creation (Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersSTock, Qte, ReservationType, &TicketResS, TicketResE ,ResaAffaire) |
Public Function int Stock_Reservation_Affectee_Qte_BP_Annulation (BpDetNo , QteAAnnuler) |
Public Function int Stock_Reservation_Entree_A_Affecter_Controle (VtlNo,&QteARes,&TicketResE, Depo, Ref,ArtInd, Sref1, Sref2, Nst, Serie, Lieu,ReservationType) |
Public Function Int Stock_Reservation_Existence_Verification(ticketRes, sens, ce2) |
Public function int Stock_Reservation_NonAffecte_Actualisation (&Mvtl_Sortie,&QteDispo) |
Public Function int Stock_Reservation_NonAffecte_Creation (Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersSTock, Qte, TicketResS ,ResaAffaire) |
Public function int Stock_Reservation_NonAffecte_Generation (&Mvtl_Sortie,&QteDispo) |
Public Function int Stock_Reservation_NonAffectee_Qte_Annulation (ticketres , qte) |
Public Function int Stock_Reservation_Qte_Annulation (ticketresS , QteAAnnuler) |
Public Function int Stock_Reservation_Quantite(ticketres, sens, mode) |
Public Function int Stock_Reservation_Quantite_Disponible(Depo, Ref,ArtInd, Sref1 ,Sref2, Nst, TiersStock, MultiDepo, CumulerSref) |
Public Function int Stock_Reservation_Sortie_Annulation (ticketresS) |
Public function int Stock_Ventilation_Donnee_Stock_Controle (&Mvtl_Sortie,Mvtl_Controle,HandleError) |
Public procedure Stock_Donnee_Stock_Controle_Init (G1T1_Sortie,T017_Ori,T017_Dst,&Mvtl_Controle) |
Public procedure Stock_Reservation_Affaire_Actualisation_Selection (&CbesoinGpa,&Valeur_Condition,ResDebDt,ResFinDt,HorizonArticleFl) |
Public procedure Stock_Reservation_Affaire_Affectation_Creer (&GPACBESOIN,mode,ReserverStock,QteAAffecter,Lieu) |
Public procedure Stock_Reservation_Affaire_Affectation_Transformer (&GPACBESOIN,mode,ReserverStock,QteAAffecter,Lieu) |
Public procedure Stock_Reservation_Affectation_Creer (&MVTL,mode,ReserverStock,QteAAffecter,Lieu) |
Public procedure Stock_Reservation_Affectation_Transformer (&MVTL,mode,ReserverStock,QteAAffecter,Lieu) |
Public Procedure Stock_Reservation_Affecte_Traiter (&Mvtl,Vtlno,refqte, reservationtype,ReserverStock) |
Public Procedure Stock_Reservation_Affecte_Traiter_Affaire (&GpaCBesoin,Vtlno,refqte, reservationtype,ReserverStock) |
Public Procedure Stock_Reservation_BP_Affaire_Transferer (&MVTL_Sortie,TicketResS,ReserverStock) |
public procedure Stock_Reservation_Debut |
public procedure Stock_Reservation_Fin |
Public procedure Stock_Reservation_NonAffecte_Creer (Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersSTock,TicketResS ,Qte, ResaAffaire) |
Public Procedure Stock_Reservation_NonAffecte_Traiter (&Mvtl, ReserverStock) |
Public Procedure Stock_Reservation_NonAffecte_Traiter_Affaire (&GpaCBesoin, ReserverStock) |
4 La gestion des réservations
4.1
La gestion du stock
Principe
Le stock de Divalto est géré par les ventilations d’entrée en stock.
Lorsqu’une pièce correspond à une entrée, les données relatives au stock sont gérées :
STDT, la date du stock
Cette date correspond à la date du bl (bldt) en FIFO, à 99999999 – la date de bl en LIFO et est saisie par l’utilisateur en FEFO.
La date du stock est toujours incluse dans les champs des index sur le stock.
STQTE, la quantité du stock
Cette quantité correspond initialement à REFQTE (qté livrée en unité de référence).
Lorsque des sorties vont déstocker une ventilation, sa quantité STQTE va petit à petit être décrémentée. Lorsqu’elle devient nulle, la ventilation ne fait plus partie du stock.
CEA, indicateur de ventilation en stock ou pas.
Tant que STQTE n’est pas nulle, CEA contient 1. Les index sur le stock ont comme condition de validité CEA = « 1 ».
L’indicateur passe à espace lorsque STQTE devient nulle.
Le stock d’un article s’obtient en programmant une boucle de lecture du fichier des ventilations en exploitant les index sur le stock (clés O,P ou Q de GTFVTL). Dans cette boucle, STQTE doit être cumulé.
VTLNO, numéro d’identification d’une ventilation
Une ventilation est identifiée de manière unique dans la base par son numéro VTLNO.
VTLNA, numéro de ventilation associée
Lorsqu’une ventilation correspond à un flux de sortie BL, alors la donnée VTLNA contient le numéro de ventilation de l’entrée vers laquelle elle pointe.
Le module GTPMSTOC.dhop
Ce module centralise les différentes fonctions de gestion du stock. Ces fonctions utilisent des TDF déclarées en extern de même que des enregistrements externes. Ceci signifie que l’appel à ces fonctions entraîne la modification des positions courantes dans les fichiers gtfvtl et gtfres.
Le contenu des enregistrements MVTL et MRES est lui aussi modifié.
Info |
---|
Il faudra faire attention à sauvegarder ces données selon les cas. |
Stock_Calculer_Quantite_EnStock(ref,sref1,sref2,depo,serie,nst,lieu,ToutStatus)
Cette fonction retourne la quantité en stock d’un article. Elle ne tient pas compte des entrées forcées, ni des réservations.
Les paramètres sont :
Ref Référence
Sref1 Sous-référence 1
Sref2 Sous-référence 2
Depo Code dépôt
Serie Numéro de série ou de lot
Nst Nature de stock
Lieu Code emplacement
ToutStatus par défaut vaut false.
Si true, alors toutes les ventilations du stock sont cumulées.
Si false, seules les ventilations ayant un Status à 2 sont cumulées (contrôle qualité).
La fonction retourne la quantité en stock en unité de référence.
Stock_Calculer_Quantite_PourDestockage(ref,sref1,sref2,depo,nst,mode)
Cette fonction calcule la quantité qui peut être déstockée pour un article (au plus). Cette fonction déduit les réservations du stock.
La gestion des réservations doit être active pour que cette fonction puisse être exploitée. Dans le cas contraire, la fonction retourne « High-Value ».
Le paramètre mode permet de spécifier le type de réservation à prendre en compte :
0 (défaut), affectés sur stock et non affectés
1, tous
2, non affectés uniquement
3, affectés sur stock uniquement
Stock_Entree_Forcee_Regulariser(ref,sref1,sref2,depo,serie,nst,lieu,ReserverStock,MaxiBldt)
La procédure Stock_Entree_Forcee_Regulariser permet d’appeler la fonction de régularisation pour un article, nature, no de série, dépôt, emplacement précis.
ReserverStock permet de spécifier s’il faut demander la réservation du stock de l’article (hshare) (si true) ou non (si false, défaut)
MaxiBlDt permet de spécifier une date limite de régularisation. Si elle n’est pas passée en paramètre, la date limite utilisée est G1T2.BLDT.
Info |
---|
Consultez le chapitre suivant concernant GTPMSTOCSQL |
Le module GTPMSTOCSQL.DHOP ou les fonctions SQL du GTPMSTOC.DHOP
Ce module centralise les différentes fonctions de gestion du stock dans leur version SQLisés.
Pour la documentation, il faut utiliser XWIN et le information du survol
Exemple après déclaration du module GTPMSTOCSQL.dhop
Image Added
Liste des fonctions et procédures du GTPMSTOCSQL (stock et réservations)
Prototypes de fonctions et procédures GTPMSTOCSQL |
---|
public function char Get_MRES_Mode_Auto() |
Public Function int Article_Reservation_Quantite(depo,ref,artind,sref1,sref2,nst,tiersstock,mode,filtresref,MultiDepo) |
public function int Set_MRES_Mode_Auto(CE6) |
Public Function int Stock_Quantite(ref,artind,sref1,sref2,depo,serie,nst,tiersStock,lieu,ToutStatus,ToutTiersStock,MultiDepo,CumulerSref) |
Public Function int Stock_Reservation_Affecte_Creation (Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersSTock, Qte, ReservationType, &TicketResS, TicketResE ,ResaAffaire) |
Public Function int Stock_Reservation_Affectee_Qte_BP_Annulation (BpDetNo , QteAAnnuler) |
Public Function int Stock_Reservation_Entree_A_Affecter_Controle (VtlNo,&QteARes,&TicketResE, Depo, Ref,ArtInd, Sref1, Sref2, Nst, Serie, Lieu,ReservationType) |
Public Function Int Stock_Reservation_Existence_Verification(ticketRes, sens, ce2) |
Public function int Stock_Reservation_NonAffecte_Actualisation (&Mvtl_Sortie,&QteDispo) |
Public Function int Stock_Reservation_NonAffecte_Creation (Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersSTock, Qte, TicketResS ,ResaAffaire) |
Public function int Stock_Reservation_NonAffecte_Generation (&Mvtl_Sortie,&QteDispo) |
Public Function int Stock_Reservation_NonAffectee_Qte_Annulation (ticketres , qte) |
Public Function int Stock_Reservation_Qte_Annulation (ticketresS , QteAAnnuler) |
Public Function int Stock_Reservation_Quantite(ticketres, sens, mode) |
Public Function int Stock_Reservation_Quantite_Disponible(Depo, Ref,ArtInd, Sref1 ,Sref2, Nst, TiersStock, MultiDepo, CumulerSref) |
Public Function int Stock_Reservation_Sortie_Annulation (ticketresS) |
Public function int Stock_Ventilation_Donnee_Stock_Controle (&Mvtl_Sortie,Mvtl_Controle,HandleError) |
Public procedure Stock_Donnee_Stock_Controle_Init (G1T1_Sortie,T017_Ori,T017_Dst,&Mvtl_Controle) |
Public procedure Stock_Reservation_Affaire_Actualisation_Selection (&CbesoinGpa,&Valeur_Condition,ResDebDt,ResFinDt,HorizonArticleFl) |
Public procedure Stock_Reservation_Affaire_Affectation_Creer (&GPACBESOIN,mode,ReserverStock,QteAAffecter,Lieu) |
Public procedure Stock_Reservation_Affaire_Affectation_Transformer (&GPACBESOIN,mode,ReserverStock,QteAAffecter,Lieu) |
Public procedure Stock_Reservation_Affectation_Creer (&MVTL,mode,ReserverStock,QteAAffecter,Lieu) |
Public procedure Stock_Reservation_Affectation_Transformer (&MVTL,mode,ReserverStock,QteAAffecter,Lieu) |
Public Procedure Stock_Reservation_Affecte_Traiter (&Mvtl,Vtlno,refqte, reservationtype,ReserverStock) |
Public Procedure Stock_Reservation_Affecte_Traiter_Affaire (&GpaCBesoin,Vtlno,refqte, reservationtype,ReserverStock) |
Public Procedure Stock_Reservation_BP_Affaire_Transferer (&MVTL_Sortie,TicketResS,ReserverStock) |
public procedure Stock_Reservation_Debut |
public procedure Stock_Reservation_Fin |
Public procedure Stock_Reservation_NonAffecte_Creer (Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersSTock,TicketResS ,Qte, ResaAffaire) |
Public Procedure Stock_Reservation_NonAffecte_Traiter (&Mvtl, ReserverStock) |
Public Procedure Stock_Reservation_NonAffecte_Traiter_Affaire (&GpaCBesoin, ReserverStock) |
Liste des fonctions et procédures du GTPMSTOC (Stock et réservations)
Prototypes de fonctions et procédures GTPMSTOC |
---|
Public function int Stock_Maj_MVTL_Rejeter(VtlNo, RcoNo, PiDt) |
Public function int Stock_Maj_MVTL_Status(VtlNo, RcoNo) |
Public Function int Controler_NiStock_NiReservation(ref,artind) |
Public Function int Depot_GereReservation(Depo) |
Public function int Stock_Affaire_Calculer_QuantiteDestockee(ElemNo, AfrIndice, BesoinNo) |
Public Function int Stock_Annuler_Qte_Reservation(ticketres , qte, maj_mvtl) |
Public Function int Stock_Annuler_Qte_Reservation_Affecte(ticketres , qte, bpdetno) |
Public Function int Stock_Calculer_Quantite_EF_SQL(ref,artind,sref1,sref2,depo,nst) |
Public Function int Stock_Calculer_Quantite_EnStock(ref,artind,sref1,sref2,depo,serie,nst,tiersStock,lieu,ToutStatus) |
Public Function int Stock_Calculer_Quantite_EnStock_SQL(ref,artind,sref1,sref2,depo,serie,nst,tiersStock,lieu,ToutStatus,ToutTiersStock,MultiDepo,CummulerSref) |
Public Function int Stock_Calculer_Quantite_PourDestockage(ref,artind,sref1,sref2,depo,nst,tiersStock,mode, TransfertEmplacement) |
Public Function int Stock_Controler_Disponible(err, proposerSubst) |
Public Function int Stock_Controler_Donnee_Stock(err,SerieAutoFl) |
Public Function int Stock_Controler_Peremption(REF, ARTIND, SREF1, SREF2, DEPO, SERIE,NST,TIERSSTOCK, LIEU, Date) |
Public Function int Stock_Controler_Reserver_Cde |
Public Function int Stock_Controler_Secable_Stock(err,ticod,picod,mode) |
Public Function int Stock_Controler_Serie_Et_Stock(err,ticod,picod,mode) |
Public function int Stock_Deplacer_Stock_Commande(ticod, PicodDst, FullCdNo, LstMouv, DepoDest) |
Public Function int Stock_Deplacer_Vers_Zone_Affaire(BpNo, ticod, Affaire, AfrIndice, ElemNo, &transfert_FullPino, ModeMuet, affMsg) |
Public Function int Stock_Deplacer_Vers_Zone_Production(bpNo, ticod, &transfert_FullPino, ModeMuet, affMsg) |
Public Function int Stock_Deplacer_Vers_Zone_Transit(bpNo, ticod, &transfert_FullPino, ModeMuet, affMsg) |
Public Function int Stock_Disponible_A_Date(&QteDispoRepDt,&QteDispoAccDt,&QteDispoDemDt,DELREPDT,DELACCDT,DELDEMDT,MultiDepo)) |
Public Function int Stock_Disponible_A_Date2(&QteDispo,&QteReserve,Delai,MultiDepo,CummulerSref) |
Public Function int Stock_Entree_Forcee_Creation(vtlno,W1MVTL,qte,AvecBlDt) |
Public Function int Stock_Generer_ENT_Associe(picod) |
Public Function int Stock_Mvtl_Non_Destockable |
public function int Stock_reservation_Affaire_AjouterSortie(ticketresori, &ticketresnew, &qte, ticketrese, fullref, sref1, sref2) |
public function int Stock_Reservation_Affectee_Reactivation(VtlNa, BlAsVtlNo) |
Public function int Stock_Reservation_AjouterEntree(ticketres1, &ticketres2, &qte, ref,artind, sref1,sref2, ReserverStock) |
Public Function int Stock_Reservation_Annuler(ticketres,sens,ReserverStock,ReserverArt,ref,artind,sref1,sref2,nst) |
Public Function int Stock_Reservation_Annuler_Sql(ticketRes, sens, reserverStock, reserverArt, ref, artInd, sref1, sref2, nst) |
Public Function int Stock_Reservation_Calculer_Disponible (Depo, Ref,ArtInd, Sref1 ,Sref2, Nst, TiersStock) |
Public Function int Stock_Reservation_Calculer_Disponible_EnCdeFou_SQL(ref,sref1,sref2,nst,depo,deldt,AvecReserver,etat,MultiDepo,CummulerSref) |
Public Function int Stock_Reservation_Calculer_Disponible_LieuSerie_Sql(Depo, Ref,ArtInd, Sref1 ,Sref2, Nst, TiersStock, Lieu, Serie, MultiDepo, CummulerSref) |
Public Function int Stock_Reservation_Calculer_Disponible_Sql(Depo, Ref,ArtInd, Sref1 ,Sref2, Nst, TiersStock, MultiDepo, CummulerSref) |
Public Function int Stock_Reservation_Calculer_Existant(ticketres, sens, mode, BpDetNo, TicketMResS) |
Public Function int Stock_Reservation_Calculer_Existant_Sql(ticketres, sens, &SumRes, BpDetNo, TicketMResS) |
Public Function int Stock_Reservation_Calculer_Quantite_EnCde(ref,artind,sref1,sref2,nst,depo,deldt,AvecReserver,enrno,etat) |
Public Function int Stock_Reservation_Calculer_Quantite_EnCde_SQL(ref,artind,sref1,sref2,nst,depo,deldt,AvecReserver,enrno,etat,MultiDepo,CummulerSref) |
Public Function int Stock_Reservation_Calculer_Quantite_Reserve(depo, ref,artind,sref1,sref2,nst,tiersstock,mode) |
Public Function int Stock_Reservation_Calculer_Quantite_Reserve_LieuSerie_SQL(depo,ref,artind,sref1,sref2,nst,tiersstock,mode,filtresref,TransfertEmplacement,MultiDepo,Lieu,Serie) |
Public Function int Stock_Reservation_Calculer_Quantite_Reserve_SQL(depo,ref,artind,sref1,sref2,nst,tiersstock,mode,filtresref,TransfertEmplacement,MultiDepo,lieu,serie) |
Public Function int Stock_Reservation_Calculer_Quantite_ReserveSeca_SQL(depo, ref,artind,sref1,sref2,nst,tiersstock,manutcod,serie,mode,filtresref, TransfertEmplacement) |
Public Function int Stock_Reservation_ControlerEtMaj_Entree_AAffecter(&QteARes,&TicketResE, Depo, Ref,ArtInd, Sref1, Sref2, Nst, Serie, Lieu, Vtlno, ReservationType) |
Public Function int Stock_Reservation_Creer_Affecte(Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersSTock, Qte, TicketresE, ReservationType, TicketResS, bpdetno) |
Public Function int Stock_Reservation_Creer_Affecte_Affaire(Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersSTock, Qte, ReservationType, &TicketResS, TicketResE ) |
Public Function int Stock_Reservation_Creer_NonAffecte(Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersStock,Qte, Ticketres,ResAfr) |
Public Function Int Stock_Reservation_Creer_NonAffecte_Sql(depo, ref, artInd, sref1, sref2, nst, tiersStock, qte, ticketRes, resAfr) |
Public Function Int Stock_Reservation_Desaffecter(TicketResE, TicketResS, ReserverStock, ReserverArt, LibererAff, Ref,ArtInd, Sref1, Sref2, nst) |
public function int Stock_Reservation_Eclater(TicketRes, Qte, Sens, &TicketResE, &ResQte, &Ce2, TicketResEntreeADestocker, BpDetNo, TicketMResS) |
Public Function int Stock_Reservation_Existence_Affaire (TicketResS) |
Public Function int Stock_Reservation_Forcer_NonAffecte(&MVTL , qte,ReserverStock,ReserverArt) |
public function int Stock_Reservation_Fusionner(TicketRes1, TicketRes2, Sens, ReserverStock, Ref, ArtInd, SRef1, SRef2) |
public function int Stock_Reservation_Fusionner_Sql(TicketRes1, TicketRes2, Sens, ReserverStock, Ref, ArtInd, SRef1, SRef2, Ce5) |
public function int Stock_Reservation_ModifierCodeOperation(enrno, OP, tiersstock, ReserverStock, ReserverArt) |
Public function int Stock_Reservation_NonAffecte_CBesoin_Ajout (&CBesoin,ResQte,ReserverStock,ReserverArt) |
Public function int Stock_Reservation_Partager(ticketres1, &qte1, &ticketres2, &qte2, ref,artind,sref1,sref2, ReserverStock) |
public function int Stock_reservation_selectionner_Entree(TicketResS, &TicketResE,Lieu, Serie) |
Public Function int Stock_Reservation_Verifier_Existence(ticketres,sens) |
Public Function Int Stock_Reservation_Verifier_Existence_Sql(ticketRes, sens, ce2) |
Public Procedure Stoc_Maj_Sart(ref,artind,sref1,sref2,saip,pustat,cr,cmp,etb,depo,pidt) |
public procedure Stock_Actualiser_Wms |
public procedure Stock_Affaire_GenererReservationAffectee_Commande(Depo, Ref, ArtInd, Sref1 ,Sref2, Nst, TiersSTock, Qte, &TicketResS, &TicketResE) |
public procedure Stock_Affaire_GenererReservationAffectee_Stock(Depo, Ref,ArtInd, Sref1 ,Sref2, Nst, TiersSTock, Qte, &TicketResS, &TicketResE) |
public procedure stock_Arreter_ActualisationAuto_Res_GPACBesoin |
public procedure stock_Arreter_Appel_sequence_reservation_Affaire |
public procedure stock_Autoriser_ActualisationAuto_Res_GPACBesoin |
public procedure stock_Autoriser_Appel_sequence_reservation_Affaire |
Public Procedure Stock_Calculer_Quantite_PourDestockage_SQL(ref,artind,sref1,sref2,depo,nst,tiersStock,mode, &QteEnStock, &QteReserve) |
Public Procedure Stock_Charger_ENT_BLAssocie |
Public Procedure Stock_Charger_MOUV_BLAssocie(PositionnerEnt, NouveauMouv ) |
public procedure Stock_ContreMarque_AugmenterReservationAffectee(&MVTL) |
public procedure Stock_ContreMarque_GenererReservationAffectee(EnrNo_sortie, &TicketResE, Depo) |
public procedure Stock_Eclater_Ventilation_Par_Reservation(Liste) |
Public Procedure Stock_Entree_Forcee_Regulariser(ref,artind,sref1,sref2,depo,serie,nst,tiersstock,lieu,ReserverStock,MaxiBldt) |
Public Procedure Stock_Generer_MOUV_Associe |
Public Procedure Stock_Generer_Vtl_Associe(reliquat,TicketResE,ResQte) |
Public procedure Stock_Init_ListesStock |
Public Procedure Stock_Maj_ENT_BLAssocie |
Public Procedure Stock_Maj_MOUV_BLAssocie(perime) |
public Procedure Stock_MAJ_MVtl_Associe_EF(newVtl) |
Public Procedure Stock_Maj_Stock_En_Saisie(&vtllilg,picod,maj,ForcerEF,ReserverStock) |
Public Procedure Stock_Maj_Stock_WMS |
public Procedure Stock_MAJ_Vtl_Associe(TicketRes,ResQte) |
Public procedure Stock_MAJ_Vtl_Associe_Reliquat_Commande(TicketRes,ResQte) |
Public procedure Stock_MAJ_Vtl_Associe_Validation |
Public Procedure Stock_Perimer_ENT_CdAssociee |
public procedure Stock_PieceAssocie_Reactivation_Entete |
public procedure Stock_PieceAssocie_Reactivation_Mouvement |
public procedure Stock_PieceAssocie_Reactivation_Ventilation |
Public Procedure Stock_Reservation_Activer(Ticod, Picod, FullPino) |
Public procedure Stock_Reservation_Actualisation_Affaire_Selection (&CbesoinGpa,&Valeur_Condition) |
public Procedure Stock_Reservation_Affaire_Actualisation(ref,artind,sref1,sref2,depo,serie,nst,tiersstock,ReserverStock) |
Public procedure Stock_Reservation_Affecter_Reservation (&MVTL,mode,ReserverStock,AvecCreationListe,AvecLectureArt,bpdetno,QteAAffecter, UtiliserListeExistantes,TraiterResaExistante) |
Public procedure Stock_Reservation_Affecter_Reservation_Affaire (&GPACBESOIN,mode,ReserverStock,AvecCreationListe,AvecLectureArt,bpdetno,QteAAffecter, UtiliserListeExistantes, AnnulerResaExistante,TraiterResaExistante) |
Public Procedure Stock_Reservation_CouvBesoin_Actualisation_Affaire(ResDebDT,ResFinDt,HorizonArticleFl) |
Public Procedure Stock_Reservation_Maj_Affecte(&MVTL,ReserverStock,ReserverArt) |
Public Procedure Stock_Reservation_Reaffecter_BP (&BPDET_Old, Grref, depo, lieu, nst, tiersStock, serie, Bpqte, bpdetno) |
public procedure Stock_Reservation_recreerAffectationContremarque(MVTL, ReserverArt) |
Public Procedure Stock_Reservation_Traiter_Affecte (&MVTL,ReservationType,Vtlno,ReserverStock,ReserverArt,refqte,refqteold, bpdetno, RetourPingReserve) |
Public Procedure Stock_Reservation_Traiter_Affecte_Affaire (&GpaCBesoin,Vtlno,ReserverStock,ReserverArt,refqte, reservationtype) |
Public Procedure Stock_Reservation_Traiter_Affecte_BP(&BPDET, VtlNo, Qte, ReserverStock, ReserverArt) |
Public Procedure Stock_Reservation_Traiter_NonAffecte (&MVTL,ReserverStock,ReserverArt,refqteold,resqtenew) |
Public Procedure Stock_Reservation_Traiter_NonAffecte_CBesoin (&CBesoin,&StResQte, ReserverStock,ReserverArt,ResQteNew) |
Public Procedure Stock_Reservation_Traiter_NonAffecte_Sql(&MVTL, reserverStock, reserverArt, refQteOld, resQteNew) |
Public Procedure Stock_Reservation_Transferer_LigneBP_SurNouveauTicket(&MVTL,BPDetNo ,ReserverStock) |
Public Procedure Stock_Reservation_Transferer_Of_Affaire (&MVTL,ElemNo,AfrIndice,ReserverStock,ReserverArt) |
public procedure Stock_Reservation_Transferer_sortie(TicketResOld, ticketResNew) |
Public Procedure Stock_Sortie(QteInitiale,ForcerEF, TransfertEmplacement) |
Public Procedure Stock_Sortie_EF_Regulariser(&WEFMVTL,&QteEnStock,MaxiBldt) |
Public Procedure Stock_Supprimer_ENT_Associe |
Public Procedure Stock_Supprimer_Etape_courante_MOUV_Associe |
Public Procedure Stock_Supprimer_MOUV_Associe |
Public Procedure Stock_Supprimer_Stock_En_Batch |
Public Procedure Stock_Supprimer_Stock_En_Saisie |
Public Procedure Stock_Supprimer_Vtl_Associee |
Public Procedure Stock_Suprimer_Stock_WMS(Entree, MVTL_Loc) |
public procedure SumMvtlSec_Selection (ref,artind,sref1,sref2,depo,manutcod,serie,nst,tiersStock,lieu,stqte,ToutStatus,ToutTiersStock) |
La gestion des réservations
Principe
Lorsque la gestion des réservations est activée, alors les programmes de saisie (et l’intégrateur) génère des enregistrements MRES dans le fichier GTFRES.
Une réservation est liée à sa ventilation par le numéro de ticket (ticketres) stocké dans la ventilation.
La réservation n’est générée que si l’indicateur STRES est à Oui lorsque l’utilisateur valide la ligne en saisie.
Dans MRES, le numéro de ticket est enregistré dans la donnée ticketress (numéro de ticket de sortie).
Le code enregistrement CE2 spécifie le type réservation :
1 affectée sur stock
2 non affectée
3 affectée sur commande
4.2
Réservations non affectées
Lorsque la réservation est non affectée, alors seules les ventilations de commande en sortie pointe sur des MRES.
Ceci signifie que pour calculer le stock net d’un article, il faut :
Calculer le stock sur GTFVTL,
Déduire les éventuelles entrées forcées
Déduire les réservations sur l’article.
Cette dernière déduction est à faire en lisant GTFRES.
4.3
Réservations affectées
Lorsque l’utilisateur affecte sa réservation, alors l’enregistrement MRES est lié par la donnée ticketress à la ventilation de sortie (commande client) et par la donnée ticketrese à la ventilation d’entrée.
Dans ces deux ventilations, c’est la même donnée ticketres qui contient le numéro.
Plusieurs enregistrements MRES peuvent avoir un même ticket sortie ou un même ticket entrée.
Ticket de sortie multiple
Cette situation se rencontre lorsqu’une seule ventilation de sortie pointe sur plusieurs entrées différentes.
Ticket d’entrée multiple
Une même entrée en stock peut être affectée par plusieurs ventilations de sortie différentes.
Calcul de la quantité réservée
Pour calculer la quantité réservée, il faut donc programmer une boucle qui cumule la quantité réservée RESQTE des MRES pour un même numéro de ticket.
La quantité RESQTE des ventilations n’est pas toujours synchronisée avec les réservations. Elle n’est qu’indicative et n’est jamais exploitée dans Divalto.
Les programmes d’actualisation des réservations ne maintiennent pas la donnée quantité réservée dans les ventilations lorsque la pièce est réservée.
4.4
Fonctions de gestion des réservations GTPMSTOC.dhop
Le module GTPMSTOC.dhop contient des fonctions et des procédures qui permettent la gestion des réservations par programme spécifique. Les fonctions utilisent les TDF et les enregistrements des réservations et des ventilations.
Il faut veiller à sauvegarder les clés courantes et le contenu des enregistrements (en particulier MVTL) avant l’appel aux fonctions et restaurer ces paramètres après.
4.4.1
Calculer la quantité en commande
Stock_Reservation_Calculer_Quantite_EnCde(ref,sref1,sref2,nst,depo,deldt,AvecReserver,enrno,etat)
Cette fonction retourne la quantité en portefeuille de commande pour un article, une nature de stock et un dépôt donnés.
Le délai permet de calculer la quantité pour une date précise.
Ref Référence
Sref1 Sous-référence 1
Sref2 Sous-référence 2
Nst Nature de stock
Depo Code dépôt
Deldt Délai (date)
AvecReserver Si true on tient compte des quantités réservées, à false on ignore ces quantités
Enrno Si renseigné, permet d’ignorer les ventilations ayant ce numéro ENRNO (numéro de rattachement au MOUV).
Etat Si renseigné, permet de filtrer sur l’état (CE4 de MVTL). 0 par défaut signifie tout état confondu.
4.4.2
Calculer les réservations d’un article
Stock_Reservation_Calculer_Quantite_Reserve(depo, ref,sref1,sref2,nst,mode)
Cette fonction retourne la quantité réservée pour un article. Elle lit directement GTFRES et des enregistrements MRES.
Depo Code dépôt
Ref Référence
Sref1 Sous-référence 1
Sref2 Sous-référence 2
Nst Nature de stock
Mode 0 = Non affectés et affectés sur stock
1 = Tous
2 = Non affectés uniquement
3 = Affectés sur stock uniquement
4.4.3
Calculer les réservations pour un ticket
Stock_Reservation_Calculer_Existant(ticketres,sens,mode)
Cette fonction retourne la quantité réservée pour un ticket.
Si le ticket passé et le sens correspondent à une ventilation de sortie, la fonction retourne les réservations de cette sortie.
Si le ticket passé et le sens correspondent à une ventilation en entrée, alors la fonction retourne la quantité affectée sur ce stock ou commande en entrée.
Ticketres Numéro de ticket
Sens Sens de la ventilation (1=Entrée, 2=Sortie)
Mode Utilisé si le sens est une sortie (2)
0 = toutes les réservations
1 = Réservations affectées sur stock
2 = Réservations affectées sur stock et non affectées
4.4.4
Réduire une quantité réservée affectée
Stock_Annuler_Qte_Reservation_Affecte(ticketres , qte)
Cette fonction diminue la quantité réservée par rapport au ticket passé. Elle retourne la quantité pour la mise à jour du compteur article.
Ticketres Numéro de ticket
Qte Quantité à libérer
4.4.5
Réduire une quantité réservée
Stock_Annuler_Qte_Reservation (ticketres , qte)
Cette fonction diminue la quantité réservée par rapport au ticket passé. Elle retourne la quantité pour la mise à jour du compteur article.
Elle commence par libérer les éventuelles réservations non affectées puis les affectées.
La libération entraîne une régularisation automatique des entrées forcées.
Ticketres Numéro de ticket
Qte Quantité à libérer
4.4.6
Annuler une réservation
Stock_Reservation_Annuler(ticketres,sens,ReserverStock,ReserverArt,ref,sref1,sref2,nst)
Cette fonction annule les réservations pour un ticket donné et un sens.
Pour un sens sortie, la fonction annule les réservations.
Pour un sens entrée, la fonction annule l’affectation. Ceci signifie qu’une affectation sur stock devient une réservation non affectée.
Ticketres Ticket en entrée ou en sortie
Sens 1=Entrée, 2=Sortie
ReserverStock Si true, l’entité stock est réservée
ReserverArt 0 = Pas de réservation, 1=Réservation article, 2=Shift, 9 = pas de mise à jour des compteurs
Ref, sref1, sref2 et nst doivent être données en cas de réservation (stock, art) et mise à jour de compteur article.
4.4.7
Calcul du disponible
Stock_Reservation_Calculer_Disponible (Depo, Ref, Sref1 ,Sref2, Nst)
Cette fonction retourne la quantité disponible pour un article. Le traitement est une lecture du stock puis une déduction de la quantité réservée (Stock_Reservation_Calculer_Quantite_Reserve).
Depo Code dépôt
Ref Référence
Sref1 Sous-référence 1
Sref2 Sous-référence 2
Nst Nature de stock
4.4.8
Générer une réservation non affectée
Stock_Reservation_Traiter_NonAffecte (&MVTL,ReserverStock,ReserverArt,refqteold)
Cette procédure génère une réservation non affectée attachée à MVTL passé en paramètre. La génération ne se fait que si MVTL.STRES vaut 2 (Oui).
MVTL Ventilation qui demande une création de réservation
ReserverStock Si true, l’entité stock est réservée
ReserverArt 0 = Pas de réservation, 1=Réservation article, 2=Shift, 9 = pas de mise à jour des compteurs
Refqteold Quantité déjà déstockée (pour ne pas réserver cette part).
MVTL est modifiée par la procédure. En retour, le numéro de ticket et la quantité réservée sont mis à jour dans l’enregistrement. Il faudra donc penser à réécrire l’enregistrement ou à modifier l’élément dans une liste.
Refqteold permet de limiter la quantité réservée. Elle doit contenir la part à ne pas réserver.
Cette fonction assure également la suppression des réservations si MVTL.STRES est à non (1).
4.4.9
Générer une réservation affectée
Stock_Reservation_Traiter_Affecte (&MVTL,ReservationType,Vtlno,ReserverStock,ReserverArt,refqte,refqteold)
Cette procédure permet de générer une réservation affectée entre la ventilation MVTL passée en paramètre et la ventilation d’entrée pointée par le numéro de ventilation vtlno.
La procédure est capable de générer des affectations sur stock (type = 1) et sur commande (type = 3).
MVTL Ventilation qui demande une création de réservation
ReservationType 1=sur stock, 3=Sur commande
Vtlno Numéro de ventilation de l’entrée à affecter
ReserverStock Si true, l’entité stock est réservée
ReserverArt 0 = Pas de réservation, 1=Réservation article, 2=Shift, 9 = pas de mise à jour des compteurs
Refqte Quantité à réserver. Si nul, REFQTE de MVTL est pris en compte
Refqteold Quantité déjà déstockée (pour ne pas réserver cette part).
4.4.10
Atelier
En saisie de commande client, pour un article géré en numéro de lot/série, générer une réservation affectée automatiquement à la validation d’une ligne (G1T1_Ligne_Validation_Ap).
Pour chaque ventilation de la ligne, cette génération ne se fait que si STRES est à 2 et qu’une réservation (non affectée) a pu être effectuée.
L’attribution du numéro doit se faire automatiquement selon la méthode de déstockage (FIFO).
Ces affectations sont réalisées après la validation de la ligne.
4.4 Fonctions
Fonctions de gestion des réservations GTPMSTOCSQL.dhop
Voir le chapitre https://divalto.atlassian.net/wiki/spaces/PAI/pages/edit-v2/11443044392#3.3--Le-module-GTPMSTOCSQL.DHOP puisque, comme précédemment le GTPMSTOC comporte la gestion de stock et réservation, le GTPMSTOCSQL utilise le même principe
5Le calcul des besoins
Le Calcul des besoins se déroule en deux phases :
La sélection et la génération d’un fichier de proposition (gtfcbn) qui contient des en-têtes et des lignes de détail.
BNProp pour les propositions, BNOri pour les origines des besoins et BNCal pour les besoins calculés.
Enfin, un enreg BNPar gère les paramètres de lancement d’un CBN.
Les enregs bnori et bncal sont liés à la proposition par des chronos :
CBnNo + BnCalNo pour retrouver les éléments BNCal d’une proposition.
CBnNo + BnOriNo pour retrouver les éléments BnOri d’une proposition.
Les propositions sont ensuite traitées par la validation des propositions (GTPP765.dhop)
Lorsque le CBN doit générer les OF, ceux-ci sont directement écrits dans un fichier de type GTFPLAN et intégrés par l’intégrateur (GGPP100.dhop).
Les propositions d’achat sont écrites dans un fichier GTFI.
Sommaire | ||
---|---|---|
|