Ce point d'entrée situé dans le traitement TRTACHMGT1 prise en compte des besoins à partir des plans de travail (planning global, plan de travail et regroupement), génère une action "PECBESOINS".
Le but de cette action est de donner la possibilité de convertir en unité physique la quantité du besoin pris en compte.
Ceci se fait en fonction du titre par défaut de l’article mais seulement pour les besoins non issus d’un document achat.
Il n’y a pas de transaction en cours.
Il y a un fichier trace ouvert.
L'appel se fait pour chaque ligne de besoin pris en compte dans les plans de travail.
Les variables suivantes sont chargées lors de l'appel de l'action "PECBESOINS".
TRAIT
Type de traitement des besoins pris en compte :
- 4 = Pour création de demandes d’achat
- 5 = Pour création de commandes classiques
- 6 = Pour création de demandes de livraison (commandes ouvertes)
ABREV
Abréviation du masque écran utilisé ("PMG")
Le masque écran [M:PMG] est utilisable, la variable I indique la ligne du tableau en cours de traitement
[M:PMG]WIPTYP(I)/<--SPAN ">
Type d’ordre :
- 2 = « PO » Commande fournisseur
- 4 = « SC » Service sous-traitance
- 7 = « TR » Transfert réapprovisionnement
[M:PMG]WIPSTA(I)
Statut de l’ordre :
- 1 = « F » Ferme
- 2 = « P » Plannifié
- 7 = « S » Suggéré
Les variables et classes précédentes ne doivent pas être modifiées.
La variable suivante doit être modifiée pour influencer le traitement de la prise en compte des besoins.
RMNQTY
Quantité du besoin pris en compte exprimée en :
- unité de stock physique si le besoin est issu d’un document d’achat (« POP », « POF », « TRP », « TRF »
- ou en unité de stock active si le besoin n’est pas issu d’un document d’achat (« POS », « TRS », « SCF » … etc …)
-
Exemple d’un traitement spécifique activé par le point d’entrée PECBESOINS :
$ACTION
Case ACTION
When "PECBESOINS" : Gosub PECBESOINS
When "ORDLEC" : Gosub ORDLEC
When "ORDMAJ" : Gosub ORDMAJ
Endcase
Return
#----- Conversion de la quantité du besoin pris en compte en unité physique -----#
$PECBESOINS
If find(TRAIT,4,5,6) & ABREV="PMG" & (!find([M:PMG]WIPTYP(I),2,7) | [M:PMG]WIPSTA(I)=3)
If [F:ITM]ITMREF<>[M:PMG]ITMREF(I)
Read [ITM] ITM0=[M:PMG]ITMREF(I) : If fstat Raz [F:ITM] : Endif
Endif
If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0
[L]RMNQTY=[L]RMNQTY*100/[F:ITM]DEFPOT
Call QTEARR ([L]RMNQTY,[F:ITM]STU) From TRTDIV
Endif
Endif
Return
#----- Conversion des quantités en unité physique après lecture [F:ORD] -----#
$ORDLEC
If [F:ITM]ITMREF<>[F:ORD]ITMREF
Read [ITM] ITM0=[F:ORD]ITMREF : If fstat Raz [F:ITM] : Endif
Endif
If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0
[F:ORD]EXTQTY=[F:ORD]EXTQTY*100/[F:ITM]DEFPOT
Call QTEARR ([F:ORD]EXTQTY,[F:ITM]STU) From TRTDIV
[F:ORD]CPLQTY=[F:ORD]CPLQTY*100/[F:ITM]DEFPOT
Call QTEARR ([F:ORD]CPLQTY,[F:ITM]STU) From TRTDIV
[F:ORD]RMNEXTQTY=[F:ORD]RMNEXTQTY*100/[F:ITM]DEFPOT
Call QTEARR ([F:ORD]RMNEXTQTY,[F:ITM]STU) From TRTDIV
Endif
Return
#----- Conversion des quantités en unité active si besoins issus des achats -----#
$ORDMAJ
If find([F:ORD]WIPTYP,2,7) & left$([M:ORDK]ABBFIL,1)="P"
If [F:ITM]ITMREF<>[F:ORD]ITMREF
Read [ITM] ITM0=[F:ORD]ITMREF : If fstat Raz [F:ITM] : Endif
Endif
If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0
[F:ORD]EXTQTY=[F:ORD]EXTQTY*[F:ITM]DEFPOT/100
Call QTEARR ([F:ORD]EXTQTY,[F:ITM]STU) From TRTDIV
[F:ORD]CPLQTY=[F:ORD]CPLQTY*[F:ITM]DEFPOT/100
Call QTEARR ([F:ORD]CPLQTY,[F:ITM]STU) From TRTDIV
[F:ORD]RMNEXTQTY=[F:ORD]RMNEXTQTY*[F:ITM]DEFPOT/100
Call QTEARR ([F:ORD]RMNEXTQTY,[F:ITM]STU) From TRTDIV
Endif
Return
Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte.
Table | Contenu significatif | Intitulé Table |
ORDERS | Non | Encours |
ITMMASTER | Non | Articles |
ITMBPS | Non | Articles – Fournisseurs |
PREQUIS | Si TRAIT = 4 | Demandes d’achat entêtes |
PREQUISD | Si TRAIT = 4 | Demandes d’achat lignes |
PORDER | Si TRAIT = 5 ou 6 | Commandes d’achat entêtes |
PORDERC | Si TRAIT = 6 | Lignes articles contrats |
PORDERP | Si TRAIT = 5 ou 6 | Lignes commandes d’achat prix |
PORDERQ | Si TRAIT = 5 ou 6 | Lignes commandes d’achat quantité |
Ce point d’entrée doit être utilisé obligatoirement avec deux autres points d’entrée ORDMAJ et ORDLEC afin de traiter convenablement le problème des articles titrés (quantités en unités actives pour les encours et en unités physiques pour les documents achats).
Ce point d'entrée situé dans le traitement TRTACHMGT1 prise en compte des besoins à partir des plans de travail (planning global, plan de travail et regroupement), génère une action "ORDLEC".
Le but de cette action est de donner la possibilité de convertir en unité physique les quantités de l’encours qui vient d’être lu.
Ceci se fait en fonction du titre par défaut de l’article, les quantités de l’encours étant toujours exprimées en unité active.
L'appel se fait après la lecture d’un enregistrement de la table ORDERS dans les traitements du module achats.
La classe [F :ORD] est chargée lors de l'appel de l'action "ORDLEC".
Les quantités suivantes doivent être converties en unité physique si l’article est « titré » :
[F :ORD]EXTQTY
Quantité prévue
[F :ORD]CPLQTY
Quantité réalisée
[F :ORD]RMNEXTQTY
Quantité restante
Exemple d’un traitement spécifique activé par le point d’entrée ORDLEC :
$ACTION/<--SPAN ">
Case ACTION
When "PECBESOINS" : Gosub PECBESOINS
When "ORDLEC" : Gosub ORDLEC
When "ORDMAJ" : Gosub ORDMAJ
Endcase
Return
#----- Conversion de la quantité du besoin pris en compte en unité physique -----#
$PECBESOINS
If find(TRAIT,4,5,6) & ABREV="PMG" & (!find([M:PMG]WIPTYP(I),2,7) | [M:PMG]WIPSTA(I)=3)
If [F:ITM]ITMREF<>[M:PMG]ITMREF(I)
Read [ITM] ITM0=[M:PMG]ITMREF(I) : If fstat Raz [F:ITM] : Endif
Endif
If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0
[L]RMNQTY=[L]RMNQTY*100/[F:ITM]DEFPOT
Call QTEARR ([L]RMNQTY,[F:ITM]STU) From TRTDIV
Endif
Endif
Return
#----- Conversion des quantités en unité physique après lecture [F:ORD] -----#
$ORDLEC
If [F:ITM]ITMREF<>[F:ORD]ITMREF
Read [ITM] ITM0=[F:ORD]ITMREF : If fstat Raz [F:ITM] : Endif
Endif
If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0
[F:ORD]EXTQTY=[F:ORD]EXTQTY*100/[F:ITM]DEFPOT
Call QTEARR ([F:ORD]EXTQTY,[F:ITM]STU) From TRTDIV
[F:ORD]CPLQTY=[F:ORD]CPLQTY*100/[F:ITM]DEFPOT
Call QTEARR ([F:ORD]CPLQTY,[F:ITM]STU) From TRTDIV
[F:ORD]RMNEXTQTY=[F:ORD]RMNEXTQTY*100/[F:ITM]DEFPOT
Call QTEARR ([F:ORD]RMNEXTQTY,[F:ITM]STU) From TRTDIV
Endif
Return
#----- Conversion des quantités en unité active si besoins issus des achats -----#
$ORDMAJ
If find([F:ORD]WIPTYP,2,7) & left$([M:ORDK]ABBFIL,1)="P"
If [F:ITM]ITMREF<>[F:ORD]ITMREF
Read [ITM] ITM0=[F:ORD]ITMREF : If fstat Raz [F:ITM] : Endif
Endif
If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0
[F:ORD]EXTQTY=[F:ORD]EXTQTY*[F:ITM]DEFPOT/100
Call QTEARR ([F:ORD]EXTQTY,[F:ITM]STU) From TRTDIV
[F:ORD]CPLQTY=[F:ORD]CPLQTY*[F:ITM]DEFPOT/100
Call QTEARR ([F:ORD]CPLQTY,[F:ITM]STU) From TRTDIV
[F:ORD]RMNEXTQTY=[F:ORD]RMNEXTQTY*[F:ITM]DEFPOT/100
Call QTEARR ([F:ORD]RMNEXTQTY,[F:ITM]STU) From TRTDIV
Endif
Return
Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte.
Table | Contenu significatif | Intitulé Table |
ORDERS | Oui | Encours |
ITMMASTER | Non | Articles |
Ce point d’entrée doit être utilisé obligatoirement avec deux autres points d’entrée PECBESOINS et ORDMAJ afin de traiter convenablement le problème des articles titrés (quantités en unités actives pour les encours et en unités physiques pour les documents achats).