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.
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 :
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. |
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.hop.
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.HOP
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.
4 La gestion des réservations
4.1
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 |