| |
Version ACE : 1.3 |
|
Package
: Standard
gnc_up_recherche_produit
|
Fonctionnalité : Préparation |
|
Schémas d’entrée et de sortie :
|
voir en fin de document.
|
Cette API permet de rechercher le mouvement ou l’objet correspondant au
code produit dans l’UP.
API
imbriquées : aucune.
Contraintes et limites de fonctionnement (hors
périmètre)
Paramétrage (PPE)
Processus, contrôles et règles de gestion
| ETAPE |
DESCRIPTION DU PROCESSUS |
| Algorithme |
Retrouver le code produit à partir du scanpro :
- Lire la table PRO avec le code
produit (16 car)
- Si n’existe pas et longueur du champ <= 13 :
- Lire la table PRO avec le GENCOD
- Sinon (ou si n’existe pas).
- Lire PRL avec dun14 (14
car)
- Si paramètre MULEAN
positionné avec A1 = ‘O’ et prl.codva1 = ‘MG’
- sinon si même dépôt, prendre le code produit
Si pas de code produit correspondant : erreur (message ‘L_PROINC’,
paramètre champ scanpro)
- Si quantité = 0
- T0 : rechercher le mvt ou l’objet correspondant au code produit
dans l’UP :>
- Rechercher un enregistrement dans la table LOBJSTK ou LMVTSTK :
- critères sur LOBJSTK
- typtie
- sigtie
- idobjpere = idobjcol
- codpro
- idol > 0
- statut = ‘0’
- critères sur LMVTSTK :
- typtie
- sigtie
- codpro
- idobjcol = idobjcol
- typmvt = ‘S’
- sensmvt = ‘S’
- statut = ‘3’
- Si aucun enregistrement trouvé (ou tout a déjà été contrôlé)
:
- Message (‘Le produit n’appartient pas à l’UP’)
- Retourner le code produit et qteunt = 0
- Si lmvtstk.qteunt > 1 : retourner la quantité, et le code
produit
- Si lmvtstk.qteunt = 1 : gnc_up_controle_produit_maj pour le
mouvement
- Si lobjstk.qteunt >= 1 : lire lupctl, statut scanné.
- Si n’existe pas :
- Si lobjstk.qteunt = 1 : gnc_up_controle_produit_maj pour
l’objet
- Si existe :
- Si lobjstk.qteunt – lupctl.qteunt = 1 :
gnc_up_controle_produit_maj pour l’objet et quantité
1
- Si lobjstk.qteunt – lupctl.qteunt > 1 : retourner la
différence, et le code produit
- Sinon reprendre le traitement en T0
- Sinon : reprendre le traitement en T0
- Si quantité > 0
-
- T1 : rechercher le mouvement ou l’objet correspondant au code
produit dans l’UP :
- Rechercher un enregistrement dans la table LOBJSTK ou LMVTSTK
:
- critères sur LOBJSTK
- typtie
- sigtie
- idobjpere = idobjcol
- codpro
- idol > 0
- statut = ‘0’
- critères sur LMVTSTK :
- typtie
- sigtie
- codpro
- idobjcol = idobjcol
- typmvt = ‘S’
- sensmvt = ‘S’
- statut = ‘3’
- si aucun enregistrement trouvé :
- insertion ou ajout dans la table LUPCTL : idmvt = 0, idobj = ‘ ‘, statut = ‘3’
(erreur préparation).
- Si le produit n’existe pas encore dans la table,
incrémenter le n° d’ordre
- Sinon ajouter la quantité passée en paramètre à la
quantité de LUPCTL
- Sinon
- si mvt en statut ‘3’ :
- gnc_up_controle_produit_maj avec lmvtstk.qteunt si
p_qteunt >= lmvtstk.qteunt, p_qteunt sinon
- si p_qteunt – qté traitée > 0, reprendre le traitement
en T1
- sinon (objet) :
- lire LUPCTL pour l’objet, statut scanné, en cours (si
n’existe pas lupctl.qteunt = 0) :
- si p_qteunt + lupctl.qteunt <= lobjstk.qteunt
- gnc_up_controle_produit_maj avec p_qteunt
- fin traitement
- sinon si lupctl.qteunt = lobjstk.qteunt
- sinon :
- gnc_up_controle_produit_maj avec (lobjstk.qteunt -
lupctl.qteunt)
- enlever la quantité traitée à la quantité passée en
paramètre
- reprendre le traitement T1
|